octane 0.14.1 → 0.14.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/runtime/actions.cjs +57 -4
- package/dist/cjs/runtime/commit.cjs +1 -0
- package/dist/cjs/runtime/component-slots.cjs +6 -4
- package/dist/cjs/runtime/context.cjs +12 -5
- package/dist/cjs/runtime/portals.cjs +6 -1
- package/dist/cjs/runtime/render.cjs +32 -3
- package/dist/cjs/runtime/suspense.cjs +28 -4
- package/dist/cjs/signals/graph.cjs +3 -0
- package/dist/cjs/version.cjs +1 -1
- package/dist/compiler/compile.js +173 -52
- package/dist/compiler/dom-binding-program.js +16 -7
- package/dist/node/runtime/actions.js +57 -4
- package/dist/node/runtime/commit.js +1 -0
- package/dist/node/runtime/component-slots.js +6 -4
- package/dist/node/runtime/context.js +12 -5
- package/dist/node/runtime/portals.js +6 -1
- package/dist/node/runtime/render.js +32 -3
- package/dist/node/runtime/suspense.js +28 -4
- package/dist/node/signals/graph.js +2 -0
- package/dist/node/signals/hydration-query-input.js +119 -0
- package/dist/node/version.js +1 -1
- package/dist/runtime/actions.js +57 -4
- package/dist/runtime/block.d.ts +2 -2
- package/dist/runtime/commit.js +1 -0
- package/dist/runtime/component-slots.js +6 -4
- package/dist/runtime/context.d.ts +5 -0
- package/dist/runtime/context.js +12 -5
- package/dist/runtime/portals.js +6 -1
- package/dist/runtime/render.d.ts +2 -2
- package/dist/runtime/render.js +32 -3
- package/dist/runtime/suspense.d.ts +10 -1
- package/dist/runtime/suspense.js +28 -4
- package/dist/runtime/types.d.ts +3 -3
- package/dist/signals/graph.d.ts +1 -0
- package/dist/signals/graph.js +2 -0
- package/dist/signals/hydration-query-input.d.ts +4 -0
- package/dist/signals/hydration-query-input.js +119 -0
- package/dist/version.js +1 -1
- package/package.json +6 -1
|
@@ -290,12 +290,65 @@ function useActionState(action, initialState, permalinkOrSlot, slot) {
|
|
|
290
290
|
s.action = action;
|
|
291
291
|
return [s.state, s.dispatch, s.isPending];
|
|
292
292
|
}
|
|
293
|
-
function
|
|
293
|
+
function findPortalAncestor(block) {
|
|
294
|
+
while (block !== null && block.kind !== "portal") block = block.parentBlock;
|
|
295
|
+
return block;
|
|
296
|
+
}
|
|
297
|
+
function findAncestorFormInBlocks(block) {
|
|
298
|
+
while (block !== null) {
|
|
299
|
+
const root = block.startMarker;
|
|
300
|
+
if (root?.nodeName === "FORM") return root;
|
|
301
|
+
let n = block.parentNode;
|
|
302
|
+
let portal = findPortalAncestor(block);
|
|
303
|
+
while (n !== null) {
|
|
304
|
+
if (portal !== null && n === portal.parentNode) {
|
|
305
|
+
const host = portal.startMarker?.$$portalParent;
|
|
306
|
+
n = host ?? n.parentNode;
|
|
307
|
+
portal = findPortalAncestor(portal.parentBlock);
|
|
308
|
+
continue;
|
|
309
|
+
}
|
|
310
|
+
if (n.nodeName === "FORM") return n;
|
|
311
|
+
const parent = n.parentNode;
|
|
312
|
+
n = parent ?? (n.nodeType === 11 ? n.$$next?.parent ?? null : null);
|
|
313
|
+
}
|
|
314
|
+
block = block.parentBlock;
|
|
315
|
+
}
|
|
316
|
+
return null;
|
|
317
|
+
}
|
|
318
|
+
function findAncestorFormInDetachedHost(node, block) {
|
|
319
|
+
let portal = findPortalAncestor(block);
|
|
320
|
+
let n = node;
|
|
321
|
+
while (n !== null) {
|
|
322
|
+
if (portal !== null && n === portal.parentNode) {
|
|
323
|
+
const host = portal.startMarker?.$$portalParent;
|
|
324
|
+
n = host ?? n.parentNode;
|
|
325
|
+
portal = findPortalAncestor(portal.parentBlock);
|
|
326
|
+
continue;
|
|
327
|
+
}
|
|
328
|
+
if (n.nodeName === "FORM") return n;
|
|
329
|
+
n = n.parentNode;
|
|
330
|
+
}
|
|
331
|
+
return null;
|
|
332
|
+
}
|
|
333
|
+
function findAncestorForm(block, portal) {
|
|
294
334
|
const start = block.startMarker;
|
|
295
335
|
let n = start ? start.parentNode : block.parentNode ?? null;
|
|
296
336
|
while (n) {
|
|
337
|
+
if (portal !== null && n === portal.parentNode) {
|
|
338
|
+
const host = portal.startMarker?.$$portalParent;
|
|
339
|
+
if (host !== void 0 && !host.isConnected) {
|
|
340
|
+
const localForm = findAncestorFormInDetachedHost(host, portal.parentBlock);
|
|
341
|
+
if (localForm !== null) return localForm;
|
|
342
|
+
const form = findAncestorFormInBlocks(portal.parentBlock);
|
|
343
|
+
if (form !== null) return form;
|
|
344
|
+
}
|
|
345
|
+
n = host ?? n.parentNode;
|
|
346
|
+
portal = findPortalAncestor(portal.parentBlock);
|
|
347
|
+
continue;
|
|
348
|
+
}
|
|
297
349
|
if (n.nodeName === "FORM") return n;
|
|
298
|
-
|
|
350
|
+
const parent = n.parentNode;
|
|
351
|
+
n = parent ?? (n.nodeType === 11 ? n.$$next?.parent ?? null : null);
|
|
299
352
|
}
|
|
300
353
|
return null;
|
|
301
354
|
}
|
|
@@ -306,7 +359,7 @@ function useFormStatus(slot) {
|
|
|
306
359
|
const block = import_render.CURRENT_BLOCK;
|
|
307
360
|
let s = scope.hooks?.get(slot);
|
|
308
361
|
if (s === void 0) {
|
|
309
|
-
s = { form: null, listener: null };
|
|
362
|
+
s = { form: null, listener: null, portal: findPortalAncestor(scope.block) };
|
|
310
363
|
const slotRef = s;
|
|
311
364
|
(0, import_hooks.ensureHooks)(scope).set(slot, slotRef);
|
|
312
365
|
(0, import_hooks.registerHookCleanup)(scope, () => {
|
|
@@ -314,7 +367,7 @@ function useFormStatus(slot) {
|
|
|
314
367
|
FORM_STATUS_LISTENERS.get(slotRef.form)?.delete(slotRef.listener);
|
|
315
368
|
});
|
|
316
369
|
}
|
|
317
|
-
const form = findAncestorForm(scope.block);
|
|
370
|
+
const form = findAncestorForm(scope.block, s.portal);
|
|
318
371
|
if (form !== s.form) {
|
|
319
372
|
if (s.form && s.listener) FORM_STATUS_LISTENERS.get(s.form)?.delete(s.listener);
|
|
320
373
|
s.form = form;
|
|
@@ -284,6 +284,7 @@ function rehomeSlot(member, frag, parent) {
|
|
|
284
284
|
}
|
|
285
285
|
if (member.host !== frag) return;
|
|
286
286
|
member.host = parent;
|
|
287
|
+
if (member.start.$$portalParent === frag) member.start.$$portalParent = parent;
|
|
287
288
|
for (let n = (0, import_templates.getNextSibling)(member.start); n !== null && n !== member.end; n = (0, import_templates.getNextSibling)(n))
|
|
288
289
|
if (n.$$portalParent === frag) n.$$portalParent = parent;
|
|
289
290
|
}
|
|
@@ -1037,7 +1037,8 @@ function ctxDepsChanged(block) {
|
|
|
1037
1037
|
function ctxDirectChanged(block) {
|
|
1038
1038
|
const direct = block.$$ctxDirect;
|
|
1039
1039
|
if (direct === null) return false;
|
|
1040
|
-
for (
|
|
1040
|
+
for (let entry = direct; entry !== null; entry = entry.next) {
|
|
1041
|
+
const { context: ctx, read } = entry;
|
|
1041
1042
|
const version = typeof read === "number" ? read : read.version;
|
|
1042
1043
|
if (ctx.$$version === version) continue;
|
|
1043
1044
|
if (typeof read === "number" || ctx.$$providerVersion !== ctx.$$version || !Object.is(read.owner.$$ctxValues?.get(ctx), read.value))
|
|
@@ -1093,7 +1094,7 @@ function restampCtxDeps(block) {
|
|
|
1093
1094
|
const reads = block.$$ctxReads;
|
|
1094
1095
|
const direct = block.$$ctxDirect;
|
|
1095
1096
|
const hasReads = reads !== null && reads.size > 0;
|
|
1096
|
-
const hasDirect = direct !== null
|
|
1097
|
+
const hasDirect = direct !== null;
|
|
1097
1098
|
if (!hasReads && !hasDirect) return;
|
|
1098
1099
|
for (let b = block.parentBlock; b !== null; b = b.parentBlock) {
|
|
1099
1100
|
if (b.body?.__memo !== true && b.$$implicitBail !== true) continue;
|
|
@@ -1111,7 +1112,8 @@ function restampCtxDeps(block) {
|
|
|
1111
1112
|
}
|
|
1112
1113
|
}
|
|
1113
1114
|
if (hasDirect) {
|
|
1114
|
-
for (
|
|
1115
|
+
for (let entry = direct; entry !== null; entry = entry.next) {
|
|
1116
|
+
const { context: ctx, read } = entry;
|
|
1115
1117
|
const v = typeof read === "number" ? read : read.version;
|
|
1116
1118
|
const cur = m.get(ctx);
|
|
1117
1119
|
if (cur !== v) {
|
|
@@ -1132,7 +1134,7 @@ function restampCachedContextScope(scope) {
|
|
|
1132
1134
|
restampCtxDeps(block);
|
|
1133
1135
|
return;
|
|
1134
1136
|
}
|
|
1135
|
-
if (block.$$ctxDirect !== null
|
|
1137
|
+
if (block.$$ctxDirect !== null) {
|
|
1136
1138
|
restampCtxDeps(block);
|
|
1137
1139
|
}
|
|
1138
1140
|
}
|
|
@@ -372,12 +372,18 @@ function promoteMemoAncestry(scope) {
|
|
|
372
372
|
block.memoInChain = true;
|
|
373
373
|
(0, import_activity.forEachSubtreeChild)(scope, promoteMemoAncestry);
|
|
374
374
|
}
|
|
375
|
+
function findDirectContextRead(direct, context) {
|
|
376
|
+
while (direct !== null && direct.context !== context) direct = direct.next;
|
|
377
|
+
return direct;
|
|
378
|
+
}
|
|
375
379
|
function recordContextDependency(block, context) {
|
|
376
380
|
if (block === null || !block.memoInChain) return;
|
|
377
381
|
SKIPPED_ROW_REFRESH = import_lists.refreshSkippedRows;
|
|
378
|
-
const direct = block.$$ctxDirect
|
|
379
|
-
const previous = direct
|
|
380
|
-
direct
|
|
382
|
+
const direct = findDirectContextRead(block.$$ctxDirect, context);
|
|
383
|
+
const previous = direct?.read;
|
|
384
|
+
if (direct === null) {
|
|
385
|
+
block.$$ctxDirect = { context, read: context.$$version, next: block.$$ctxDirect };
|
|
386
|
+
} else direct.read = context.$$version;
|
|
381
387
|
for (let current = block; current !== null; current = current.parentBlock) {
|
|
382
388
|
if (current.body?.__memo === true || current.$$implicitBail === true) {
|
|
383
389
|
(current.$$ctxReads ??= /* @__PURE__ */ new Map()).set(context, context.$$version);
|
|
@@ -391,12 +397,13 @@ function recordLocalContextValue(reader, block, context, value, previous) {
|
|
|
391
397
|
const cache = reader.$$ctxCache;
|
|
392
398
|
const owner = cache === context ? reader.$$ctxCacheOwner : cache !== null && reader.$$ctxCacheOwner === null ? cache.get(context) : void 0;
|
|
393
399
|
if (owner === null || owner === void 0 || owner === DEFAULT_CTX) return;
|
|
400
|
+
const direct = findDirectContextRead(block.$$ctxDirect, context);
|
|
394
401
|
if (previous !== void 0) {
|
|
395
402
|
if (previous.owner !== owner || !Object.is(previous.value, value)) return;
|
|
396
403
|
previous.version = context.$$version;
|
|
397
|
-
|
|
404
|
+
direct.read = previous;
|
|
398
405
|
} else {
|
|
399
|
-
|
|
406
|
+
direct.read = { version: context.$$version, owner, value };
|
|
400
407
|
}
|
|
401
408
|
}
|
|
402
409
|
let SCOPED_READ_TRACKING = false;
|
|
@@ -280,6 +280,7 @@ function renderPortalState(prev, parentBlock, target, rawBody, rawProps, host, e
|
|
|
280
280
|
const start = document.createComment("portal");
|
|
281
281
|
const end = document.createComment("/portal");
|
|
282
282
|
start.$$portalEnd = end;
|
|
283
|
+
start.$$portalParent = host;
|
|
283
284
|
const transaction = import_render.ROOT_RENDER_TRANSACTION;
|
|
284
285
|
const into = transaction !== null && !transaction.aborted && !import_engine.ROOT_RENDER_ROLLBACK ? (0, import_commit.queueFrontier)(parentBlock, target, null) : target;
|
|
285
286
|
into.appendChild(start);
|
|
@@ -323,7 +324,11 @@ function renderPortalState(prev, parentBlock, target, rawBody, rawProps, host, e
|
|
|
323
324
|
}
|
|
324
325
|
(0, import_signal_owners.renderBlock)(block);
|
|
325
326
|
} else {
|
|
326
|
-
if (state.host !== host)
|
|
327
|
+
if (state.host !== host) {
|
|
328
|
+
(0, import_engine.journalRootProperty)(state, "host", state.host);
|
|
329
|
+
(0, import_engine.journalRootProperty)(state.start, "$$portalParent", state.start.$$portalParent);
|
|
330
|
+
state.start.$$portalParent = host;
|
|
331
|
+
}
|
|
327
332
|
state.host = host;
|
|
328
333
|
if (state.block.body !== norm.body)
|
|
329
334
|
(0, import_engine.journalRootProperty)(state.block, "body", state.block.body);
|
|
@@ -427,7 +427,7 @@ function renderBlockInner(block) {
|
|
|
427
427
|
if (state?.__kind === "hydrateBlockSlot" && state.parentBlock === block && !state.independent && !state.hydrated) {
|
|
428
428
|
state.contextChanged = block.$$ctxDepsEpoch !== import_context_epoch.EPOCH_CELL.value && (0, import_component_slots.ctxDirectChanged)(block);
|
|
429
429
|
}
|
|
430
|
-
block.$$ctxDirect
|
|
430
|
+
block.$$ctxDirect = null;
|
|
431
431
|
}
|
|
432
432
|
block.$$ctxDepsEpoch = import_context_epoch.EPOCH_CELL.value;
|
|
433
433
|
block.currentRenderMode = keepsTransition !== null ? "urgent" : block.pendingMode ?? prevBlock?.currentRenderMode ?? "urgent";
|
|
@@ -1104,7 +1104,24 @@ function renderVisibleTry(state, source) {
|
|
|
1104
1104
|
disarmTransitionJournal(journalCheckpoint);
|
|
1105
1105
|
}
|
|
1106
1106
|
}
|
|
1107
|
-
function
|
|
1107
|
+
function acceptInitialHydrationQuery(state, initial, query) {
|
|
1108
|
+
if (query.refined || initial.query !== query || state.pendingThenable !== query.waiting || import_suspense.initialSuspenseHydrations?.get(state) !== initial)
|
|
1109
|
+
return;
|
|
1110
|
+
(0, import_engine.journalRootProperty)(query, "refined", void 0);
|
|
1111
|
+
query.refined = true;
|
|
1112
|
+
}
|
|
1113
|
+
function renderInitialSuspenseHydration(state, initial, updated = false, queryCapture, refineQuery) {
|
|
1114
|
+
if (refineQuery !== void 0) {
|
|
1115
|
+
if (!refineQuery.refined) {
|
|
1116
|
+
if (WIP_CAPTURE === null) acceptInitialHydrationQuery(state, initial, refineQuery);
|
|
1117
|
+
else
|
|
1118
|
+
(WIP_CAPTURE.renderCleanups ??= []).push((discarded) => {
|
|
1119
|
+
if (!discarded) acceptInitialHydrationQuery(state, initial, refineQuery);
|
|
1120
|
+
});
|
|
1121
|
+
}
|
|
1122
|
+
if (import_hydration.HYDRATION_PASS !== null) import_hydration.HYDRATION_PASS.node = (0, import_templates.getNextSibling)(state.end);
|
|
1123
|
+
return;
|
|
1124
|
+
}
|
|
1108
1125
|
if (state.pendingThenable !== null && ROOT_RENDER_TRANSACTION?.rootRequest === true)
|
|
1109
1126
|
(0, import_commit.journalObjectOnce)(state);
|
|
1110
1127
|
state.pendingThenable = null;
|
|
@@ -1118,11 +1135,14 @@ function renderInitialSuspenseHydration(state, initial, updated = false) {
|
|
|
1118
1135
|
return;
|
|
1119
1136
|
}
|
|
1120
1137
|
if (initial.waits !== void 0) {
|
|
1138
|
+
queryCapture ??= initial.queryCapture;
|
|
1139
|
+
if (queryCapture !== void 0) initial.queryCapture = queryCapture;
|
|
1121
1140
|
const taken = (0, import_suspense.waitForStreamedArm)(state, initial);
|
|
1122
1141
|
if (taken === null) return;
|
|
1123
1142
|
initial = taken;
|
|
1124
1143
|
}
|
|
1125
1144
|
state.idState.next = initial.idStart;
|
|
1145
|
+
const firstAttempt = state.branch === -1;
|
|
1126
1146
|
const block = import_suspense.TRY_OPS.createBody(state, initial.start, initial.end);
|
|
1127
1147
|
state.block = block;
|
|
1128
1148
|
import_suspense.TRY_OPS.setBranch(state, 1);
|
|
@@ -1145,6 +1165,7 @@ function renderInitialSuspenseHydration(state, initial, updated = false) {
|
|
|
1145
1165
|
const previousNative = (0, import_read_protocol.setNativeAdoptionResolver)(null);
|
|
1146
1166
|
const diagnostics = (0, import_hydration.holdDiagnostics)();
|
|
1147
1167
|
let suspended = null;
|
|
1168
|
+
let finishQuery = void 0;
|
|
1148
1169
|
let failed = false;
|
|
1149
1170
|
let failure;
|
|
1150
1171
|
try {
|
|
@@ -1152,6 +1173,7 @@ function renderInitialSuspenseHydration(state, initial, updated = false) {
|
|
|
1152
1173
|
hydration.nativeAdoption = (0, import_engine.ownNativeAdoption)(block, initial.nativeRaw);
|
|
1153
1174
|
(0, import_read_protocol.setNativeAdoptionResolver)(hydration.nativeAdoption.resolve);
|
|
1154
1175
|
}
|
|
1176
|
+
finishQuery = firstAttempt && state.env !== void 0 ? queryCapture?.(state.env) : void 0;
|
|
1155
1177
|
(0, import_signal_owners.renderBlock)(block);
|
|
1156
1178
|
if (hydration.deferred !== null) (0, import_hydration.claimDeferred)(hydration);
|
|
1157
1179
|
(0, import_engine.drainHydrationRenderPhaseUpdates)(block, true);
|
|
@@ -1161,7 +1183,13 @@ function renderInitialSuspenseHydration(state, initial, updated = false) {
|
|
|
1161
1183
|
} catch (error) {
|
|
1162
1184
|
failed = true;
|
|
1163
1185
|
failure = (0, import_hydration.hydrationFailure)(hydration, error);
|
|
1164
|
-
|
|
1186
|
+
const finish = finishQuery;
|
|
1187
|
+
finishQuery = void 0;
|
|
1188
|
+
if ((0, import_use.isSuspenseException)(error)) {
|
|
1189
|
+
suspended = error.thenable;
|
|
1190
|
+
const retains = finish?.(suspended);
|
|
1191
|
+
if (retains !== void 0) initial.query = { waiting: suspended, retains };
|
|
1192
|
+
} else finish?.();
|
|
1165
1193
|
if (typeof __OCTANE_PROFILE_ENABLED__ !== "undefined" && __OCTANE_PROFILE_ENABLED__)
|
|
1166
1194
|
(0, import_profiling.__profileCount)(import_profiling.ProfileCounter.ROLLBACK_HYDRATION);
|
|
1167
1195
|
if (transaction !== null) (0, import_commit.dropRootOps)(transaction, opsMark, retiredMark);
|
|
@@ -1185,6 +1213,7 @@ function renderInitialSuspenseHydration(state, initial, updated = false) {
|
|
|
1185
1213
|
state.tryBlock = null;
|
|
1186
1214
|
(0, import_component_slots.discardOffscreenCapture)(capture);
|
|
1187
1215
|
} finally {
|
|
1216
|
+
finishQuery?.();
|
|
1188
1217
|
(0, import_hydration.releaseDiagnostics)(diagnostics, failed && !(failure instanceof import_hydration.HydrationMismatch));
|
|
1189
1218
|
if (failure instanceof import_hydration.HydrationMismatch || failure === import_hydration_input_control.INITIAL_ADOPTION_INPUT_CHANGED || suspended !== null)
|
|
1190
1219
|
(0, import_hydration.discardSeeds)(hydration);
|
|
@@ -914,6 +914,7 @@ function tryBlock(parentScope, slotKey, domParent, tryBody, catchBody, pendingBo
|
|
|
914
914
|
let supersedesInputs = false;
|
|
915
915
|
let initial = state === void 0 || !import_hydration_flag.hydrationStarted ? void 0 : initialSuspenseHydrations?.get(state);
|
|
916
916
|
let updated = false;
|
|
917
|
+
let refineQuery;
|
|
917
918
|
if (state === void 0) {
|
|
918
919
|
let start;
|
|
919
920
|
let end;
|
|
@@ -983,9 +984,23 @@ function tryBlock(parentScope, slotKey, domParent, tryBody, catchBody, pendingBo
|
|
|
983
984
|
if (domParent.nodeType === 11) (0, import_commit.noteFrontierMember)(domParent, newState);
|
|
984
985
|
state = newState;
|
|
985
986
|
} else {
|
|
986
|
-
const unchangedCapture = initial !== void 0 && (preserveHydrationCapture === 2 || preserveHydrationCapture === 1 && initial.waits !== void 0) && hydrationInputsEqual !== void 0 && state.tryBody === tryBody && state.env !== env && !(0, import_hooks.depsChanged)(state.env, env);
|
|
987
|
+
const unchangedCapture = initial !== void 0 && (preserveHydrationCapture === 2 || typeof preserveHydrationCapture === "function" || preserveHydrationCapture === 1 && initial.waits !== void 0) && hydrationInputsEqual !== void 0 && state.tryBody === tryBody && state.env !== env && !(0, import_hooks.depsChanged)(state.env, env);
|
|
987
988
|
const retains = state.branch === 2 || state.retrySignalOwners !== void 0;
|
|
988
|
-
|
|
989
|
+
let changed = false;
|
|
990
|
+
if (retains || initial !== void 0) {
|
|
991
|
+
changed = state.tryBody !== tryBody;
|
|
992
|
+
if (!changed && state.env !== env) {
|
|
993
|
+
if (initial !== void 0 && hydrationInputsEqual && state.env && env) {
|
|
994
|
+
const equal = unchangedCapture && preserveHydrationCapture === 1 ? true : hydrationInputsEqual(state.env, env);
|
|
995
|
+
if (equal === 2) {
|
|
996
|
+
const query = initial.query;
|
|
997
|
+
if (query !== void 0 && state.pendingThenable === query.waiting && query.retains())
|
|
998
|
+
refineQuery = query;
|
|
999
|
+
else changed = true;
|
|
1000
|
+
} else changed = !equal;
|
|
1001
|
+
} else changed = (0, import_hooks.depsChanged)(state.env, env);
|
|
1002
|
+
}
|
|
1003
|
+
}
|
|
989
1004
|
if (unchangedCapture && !changed) env = state.env;
|
|
990
1005
|
supersedesInputs = retains && changed;
|
|
991
1006
|
updated = initial !== void 0 && changed;
|
|
@@ -1009,7 +1024,13 @@ function tryBlock(parentScope, slotKey, domParent, tryBody, catchBody, pendingBo
|
|
|
1009
1024
|
if (initial !== void 0) registerInitialSuspenseHydration(s, initial);
|
|
1010
1025
|
}
|
|
1011
1026
|
if (initial !== void 0) {
|
|
1012
|
-
(0, import_hydration.initialSuspenseHydrationRenderer)(
|
|
1027
|
+
(0, import_hydration.initialSuspenseHydrationRenderer)(
|
|
1028
|
+
s,
|
|
1029
|
+
initial,
|
|
1030
|
+
updated,
|
|
1031
|
+
typeof preserveHydrationCapture === "function" ? preserveHydrationCapture : void 0,
|
|
1032
|
+
refineQuery
|
|
1033
|
+
);
|
|
1013
1034
|
} else if (s.passthrough) {
|
|
1014
1035
|
renderPassthroughTry(s);
|
|
1015
1036
|
return s.reset;
|
|
@@ -1318,7 +1339,10 @@ function clientRenderDehydratedTry(state, outer) {
|
|
|
1318
1339
|
function retryInitialSuspenseHydration(state, initial) {
|
|
1319
1340
|
const hiddenActivity = TRY_OPS.hiddenActivity(state.parentBlock);
|
|
1320
1341
|
try {
|
|
1321
|
-
|
|
1342
|
+
const query = initial.query;
|
|
1343
|
+
const updated = query?.refined === true && state.pendingThenable === query.waiting && !query.retains();
|
|
1344
|
+
if (updated) (0, import_signal_owners.supersedeSignalRetryOwners)(state);
|
|
1345
|
+
(0, import_render.renderInitialSuspenseHydration)(state, initial, updated);
|
|
1322
1346
|
} catch (error) {
|
|
1323
1347
|
TRY_OPS.resumeError(state.parentBlock, error);
|
|
1324
1348
|
} finally {
|
|
@@ -42,6 +42,7 @@ __export(graph_exports, {
|
|
|
42
42
|
isThenable: () => isThenable,
|
|
43
43
|
linkReads: () => linkReads,
|
|
44
44
|
originalScopedNodeGet: () => originalScopedNodeGet,
|
|
45
|
+
originalScopedNodeStateGetter: () => originalScopedNodeStateGetter,
|
|
45
46
|
pendingState: () => pendingState,
|
|
46
47
|
presentDuringFlush: () => presentDuringFlush,
|
|
47
48
|
promoteDeclarationView: () => promoteDeclarationView,
|
|
@@ -715,6 +716,7 @@ class ScopedNode {
|
|
|
715
716
|
}
|
|
716
717
|
const hasScopedNodeBrand = /* @__PURE__ */ (() => ScopedNode.hasNativeBrand)();
|
|
717
718
|
const originalScopedNodeGet = /* @__PURE__ */ (() => ScopedNode.prototype.get)();
|
|
719
|
+
const originalScopedNodeStateGetter = /* @__PURE__ */ (() => Object.getOwnPropertyDescriptor(ScopedNode.prototype, "state").get)();
|
|
718
720
|
function inspectNativeNode(node, read) {
|
|
719
721
|
const dependencies = [];
|
|
720
722
|
for (let link = node.deps; link; link = link.nextDep) {
|
|
@@ -1402,6 +1404,7 @@ function retireGraph(owner, nodes) {
|
|
|
1402
1404
|
isThenable,
|
|
1403
1405
|
linkReads,
|
|
1404
1406
|
originalScopedNodeGet,
|
|
1407
|
+
originalScopedNodeStateGetter,
|
|
1405
1408
|
pendingState,
|
|
1406
1409
|
presentDuringFlush,
|
|
1407
1410
|
promoteDeclarationView,
|
package/dist/cjs/version.cjs
CHANGED
|
@@ -21,7 +21,7 @@ __export(version_exports, {
|
|
|
21
21
|
version: () => version
|
|
22
22
|
});
|
|
23
23
|
module.exports = __toCommonJS(version_exports);
|
|
24
|
-
const version = "0.14.
|
|
24
|
+
const version = "0.14.2";
|
|
25
25
|
// Annotate the CommonJS export names for ESM import in node:
|
|
26
26
|
0 && (module.exports = {
|
|
27
27
|
version
|