Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
4 changes: 2 additions & 2 deletions .sizes.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,8 @@
{
"name": "*",
"total": {
"min": 28306,
"brotli": 10486
"min": 28323,
"brotli": 10466
}
},
{
Expand Down
28 changes: 14 additions & 14 deletions .sizes/dom.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// size: 28306 (min) 10486 (brotli)
// size: 28323 (min) 10466 (brotli)
//#region packages/runtime-tags/dist/dom.mjs
let unsafeStyleAttrReg = /[\\;]/g,
replaceUnsafeStyleAttr = (c) => (c === ";" ? "\\3B " : "\\\\"),
Expand Down Expand Up @@ -97,11 +97,8 @@ let unsafeStyleAttrReg = /[\\;]/g,
registeredValues = {},
patchers = {},
onPatchRecord,
failPatch = () => {
throw 0;
},
patchScope = (partial, live) => {
for (let key in partial) (patchers[key[0]] || failPatch())(live, key, partial[key]);
for (let key in partial) patchers[key[0]](live, key, partial[key]);
},
curRenders,
embedRenders,
Expand Down Expand Up @@ -979,7 +976,7 @@ function walk(startNode, walkCodes, branch) {
}
function beginPatch(renderId) {
let render = (patchRender = curRenders[renderId]);
return ((patching = 1), patchId++, render);
return (render.w(), (patching = 1), patchId++, render);
}
function abortPatch() {
patchRender = patching = 0;
Expand Down Expand Up @@ -2268,14 +2265,14 @@ let empty = [],
insertLoaded(renderer, branch, branch.S, awaitCounter),
));
},
loadFailed(branch, awaitCounter),
loadFailed(branch, awaitCounter, "_" + id),
));
},
_load_signal(() => (pending ||= load()).then((r) => ({ _: r.d }))),
);
return lazyTemplate;
}),
_load_setup = /*@__PURE__*/ withLazy((nodeAccessor, childScopeAccessor, load) => {
_load_setup = /*@__PURE__*/ withLazy((nodeAccessor, childScopeAccessor, load, readyId) => {
((nodeAccessor = decodeAccessor(nodeAccessor)),
(childScopeAccessor = decodeAccessor(childScopeAccessor)));
let pending, renderer;
Expand All @@ -2289,10 +2286,10 @@ let empty = [],
(mod) => {
((renderer = _content("", ...mod._)()),
queueAsyncRender(child, (child) =>
insertLoaded(renderer, child, owner[nodeAccessor], awaitCounter),
insertLoaded(renderer, child, owner[nodeAccessor], awaitCounter, readyId),
));
},
loadFailed(child, awaitCounter),
loadFailed(child, awaitCounter, readyId),
));
}
};
Expand Down Expand Up @@ -2386,11 +2383,14 @@ function mount(input = {}, reference, position) {
}
);
}
function insertLoaded(renderer, branch, marker, awaitCounter) {
function insertLoaded(renderer, branch, marker, awaitCounter, readyId) {
let parent = marker.parentNode,
values = branch.X,
insert = () => {
(insertBranchBefore(branch, parent, marker), marker.remove(), awaitCounter?.c());
(insertBranchBefore(branch, parent, marker),
marker.remove(),
awaitCounter?.c(),
readyId && queueEffect(branch, () => ready(readyId)));
},
remaining;
if (
Expand All @@ -2399,7 +2399,7 @@ function insertLoaded(renderer, branch, marker, awaitCounter) {
(branch.X = 0),
(remaining = values?.size))
) {
let fail = loadFailed(branch, awaitCounter);
let fail = loadFailed(branch, awaitCounter, readyId);
for (let [promise, entry] of values)
promise.then(
(signal) => {
Expand All @@ -2416,7 +2416,7 @@ function insertLoaded(renderer, branch, marker, awaitCounter) {
);
} else (setupBranch(renderer, branch), insert());
}
function loadFailed(scope, awaitCounter) {
function loadFailed(scope, awaitCounter, readyId) {
return (error) => {
(awaitCounter && (awaitCounter.m ? (awaitCounter.i = 0) : awaitCounter.c()),
queueAsyncRender(scope, renderCatch, error));
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
---
type: cleanup
impact: med
effort: med
site: packages/runtime-tags/src/translator/visitors/program/index.ts › isLoadEntry
---

Lazy load failure reporting (`readyFailed` in `src/dom/resume.ts`, the load
entry's rejection arm, and the loader-script `onerror` wiring in
`src/html/assets.ts` › `writeTriggerScript`) is gated on `isPersisted()`
because persisted patches need it to settle. The gap it closes is general:
on ANY page a failed lazy chunk currently leaves inert SSR content silently
(no `@catch`, no signal). Backporting the protocol to main — un-gating the
rejection arm and onerror wiring, and driving the ready-channel branches'
`@catch`/await-counter machinery from `readyFailed` — would give lazy SSR a
real failure story and dissolve the persisted-only gates here.

Check: non-persisted fixture with `load: "on-click body"` +
`reject_load: ["load.mjs"]` — the child stays inert with no catch UI and no
console signal.

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
---
type: feature
impact: med
effort: high
site: packages/runtime-tags/src/dom/patch-boundary.feat.ts › PatchKey.Pending
---

# Pair patches into still-streaming boundaries

A patch arriving while a boundary's initial stream is still pending rejects
into navigation (safe: the construct's marker anchor has not streamed —
pinned by `persisted-await-patch-while-pending`). Supporting it needs the
frame to defer against the initial render's own reorder machinery (apply
once the anchor lands, or supersede the pending chunk outright) rather
than pairing against a node that does not exist yet.

Check: `persisted-await-patch-while-pending` drops `expect_rejection` and
shows the second update applying once mid-stream pairing lands.
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@
"brotli": 90
},
"template.marko.page.mjs": {
"min": 1470,
"brotli": 802
"min": 1524,
"brotli": 831
},
"child.mjs": {
"min": 162,
Expand All @@ -17,8 +17,8 @@
"brotli": 80
},
"shared": {
"min": 7449,
"brotli": 3339
"min": 7456,
"brotli": 3337
}
},
"html": {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@
"brotli": 69
},
"template.marko.page.mjs": {
"min": 1474,
"brotli": 799
"min": 1528,
"brotli": 814
},
"child.mjs": {
"min": 297,
Expand All @@ -17,8 +17,8 @@
"brotli": 81
},
"shared": {
"min": 7471,
"brotli": 3342
"min": 7478,
"brotli": 3340
}
},
"html": {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,16 +5,16 @@
"brotli": 69
},
"template.marko.page.mjs": {
"min": 1524,
"brotli": 820
"min": 1556,
"brotli": 848
},
"child.mjs": {
"min": 212,
"brotli": 143
},
"shared": {
"min": 11182,
"brotli": 4825
"min": 11189,
"brotli": 4818
}
},
"html": {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,16 +5,16 @@
"brotli": 69
},
"template.marko.page.mjs": {
"min": 1464,
"brotli": 800
"min": 1513,
"brotli": 824
},
"child.mjs": {
"min": 223,
"brotli": 161
},
"shared": {
"min": 11058,
"brotli": 4761
"min": 11065,
"brotli": 4760
}
},
"html": {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,16 +5,16 @@
"brotli": 69
},
"template.marko.page.mjs": {
"min": 1405,
"brotli": 764
"min": 1446,
"brotli": 783
},
"child.mjs": {
"min": 212,
"brotli": 143
},
"shared": {
"min": 10831,
"brotli": 4684
"min": 10838,
"brotli": 4685
}
},
"html": {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@
"brotli": 69
},
"template.marko.page.mjs": {
"min": 1641,
"brotli": 874
"min": 1695,
"brotli": 890
},
"child.mjs": {
"min": 177,
Expand All @@ -17,8 +17,8 @@
"brotli": 75
},
"shared": {
"min": 7413,
"brotli": 3289
"min": 7420,
"brotli": 3287
}
},
"html": {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@
"brotli": 69
},
"template.marko.page.mjs": {
"min": 1578,
"brotli": 864
"min": 1632,
"brotli": 872
},
"child.mjs": {
"min": 177,
Expand All @@ -17,8 +17,8 @@
"brotli": 75
},
"shared": {
"min": 7413,
"brotli": 3289
"min": 7420,
"brotli": 3287
}
},
"html": {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@
"brotli": 90
},
"template.marko.page.mjs": {
"min": 1575,
"brotli": 867
"min": 1629,
"brotli": 883
},
"child.mjs": {
"min": 124,
Expand All @@ -17,8 +17,8 @@
"brotli": 69
},
"shared": {
"min": 7842,
"brotli": 3466
"min": 7849,
"brotli": 3469
}
},
"html": {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@
"brotli": 69
},
"template.marko.page.mjs": {
"min": 1575,
"brotli": 867
"min": 1629,
"brotli": 883
},
"child.mjs": {
"min": 145,
Expand All @@ -17,8 +17,8 @@
"brotli": 75
},
"shared": {
"min": 7853,
"brotli": 3467
"min": 7860,
"brotli": 3470
}
},
"html": {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,16 +5,16 @@
"brotli": 69
},
"template.marko.page.mjs": {
"min": 1475,
"brotli": 792
"min": 1516,
"brotli": 806
},
"child.mjs": {
"min": 190,
"brotli": 132
},
"shared": {
"min": 10889,
"brotli": 4736
"min": 10896,
"brotli": 4737
}
},
"html": {
Expand Down
Loading