Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Following #10939, we can simplify the hydration algorithm quite a bit. I need to add some comments to the code, but the basic idea is 'just in time hydration' — we call
child(...)
orsibling(...)
or whatever to get the anchor node for the (if/each/await/etc) block that we're about to create, and if the child/sibling is a<!--[-->
hydration opening marker, we populatehydrate_nodes
and return the corresponding closing marker. We therefore never need to cache stuff on$$fragment
, andanchor
is always truthy. We also don't need to callhydrate_block_anchor
inside blocks.Follow-ups:
$.open(...)
and$.open_frag(...)
, we don't need them — we can just call the template function directly (and rename$.close(...)
to something like$.append(...)
, since there's no longer any symmetry)ssr:if:true
andssr:each_else
. just put that information in the closing hydration markerNode
orTemplateNode
, it would be nice if that was unnecessaryBefore submitting the PR, please make sure you do the following
feat:
,fix:
,chore:
, ordocs:
.Tests and linting
pnpm test
and lint the project withpnpm lint