+70
-48
@@ -38,5 +38,7 @@ 'use strict'; | ||
| const owner = signals.getOwner(); | ||
| owner._props = props; | ||
| owner._name = Comp.name; | ||
| owner._component = Comp; | ||
| owner._component = { | ||
| fn: Comp, | ||
| props, | ||
| name: Comp.name | ||
| }; | ||
| Object.assign(Comp, { | ||
@@ -50,8 +52,2 @@ [$DEVCOMP]: true | ||
| } | ||
| function registerGraph(value) { | ||
| const owner = signals.getOwner(); | ||
| if (!owner) return; | ||
| if (owner.sourceMap) owner.sourceMap.push(value);else owner.sourceMap = [value]; | ||
| value.graph = owner; | ||
| } | ||
@@ -680,2 +676,34 @@ const NoHydrateContext = { | ||
| } | ||
| function initBoundaryResume(o, id) { | ||
| _pendingBoundaries++; | ||
| signals.onCleanup(() => { | ||
| if (!signals.isDisposed(o)) return; | ||
| sharedConfig.cleanupFragment?.(id); | ||
| }); | ||
| const set = createBoundaryTrigger(); | ||
| return [set, () => resumeBoundaryHydration(o, id, set)]; | ||
| } | ||
| function waitAndResume(p, resume, assetPromise) { | ||
| const waitFor = assetPromise ? Promise.all([p, assetPromise]) : p; | ||
| waitFor.then(() => { | ||
| if (p && typeof p === "object") p.s = 1; | ||
| resume(); | ||
| }, err => { | ||
| if (p && typeof p === "object") { | ||
| p.s = 2; | ||
| p.v = err; | ||
| } | ||
| resume(); | ||
| }); | ||
| } | ||
| function scheduleResumeAfterAssets(id, resume, assetPromise) { | ||
| sharedConfig.gather?.(id); | ||
| const doResume = () => queueMicrotask(resume); | ||
| if (assetPromise) { | ||
| assetPromise.then(doResume); | ||
| return true; | ||
| } | ||
| doResume(); | ||
| return false; | ||
| } | ||
| function createLoadingBoundary(fn, fallback, options) { | ||
@@ -700,37 +728,10 @@ if (!sharedConfig.hydrating) return signals.createLoadingBoundary(fn, fallback, options); | ||
| settledSerializationResumeQueued = true; | ||
| _pendingBoundaries++; | ||
| signals.onCleanup(() => { | ||
| if (!signals.isDisposed(o)) return; | ||
| sharedConfig.cleanupFragment?.(id); | ||
| }); | ||
| const set = createBoundaryTrigger(); | ||
| const scheduleResume = () => queueMicrotask(() => resumeBoundaryHydration(o, id, set)); | ||
| if (assetPromise) { | ||
| assetPromise.then(scheduleResume); | ||
| return undefined; | ||
| } | ||
| scheduleResume(); | ||
| const [, resume] = initBoundaryResume(o, id); | ||
| if (scheduleResumeAfterAssets(id, resume, assetPromise)) return undefined; | ||
| return fallback(); | ||
| } | ||
| if (p) { | ||
| _pendingBoundaries++; | ||
| signals.onCleanup(() => { | ||
| if (!signals.isDisposed(o)) return; | ||
| sharedConfig.cleanupFragment?.(id); | ||
| }); | ||
| const set = createBoundaryTrigger(); | ||
| const [set, resume] = initBoundaryResume(o, id); | ||
| if (p !== "$$f") { | ||
| const waitFor = assetPromise ? Promise.all([p, assetPromise]) : p; | ||
| waitFor.then(() => { | ||
| if (p && typeof p === "object") { | ||
| p.s = 1; | ||
| } | ||
| resumeBoundaryHydration(o, id, set); | ||
| }, err => { | ||
| if (p && typeof p === "object") { | ||
| p.s = 2; | ||
| p.v = err; | ||
| } | ||
| resumeBoundaryHydration(o, id, set); | ||
| }); | ||
| waitAndResume(p, resume, assetPromise); | ||
| } else { | ||
@@ -747,6 +748,16 @@ const afterAssets = () => { | ||
| } | ||
| if (sharedConfig.hydrating && sharedConfig.has(id + "_fr") && !settledSerializationResumeQueued) { | ||
| settledSerializationResumeQueued = true; | ||
| const fr = sharedConfig.load(id + "_fr"); | ||
| const [, resume] = initBoundaryResume(o, id); | ||
| if (fr && typeof fr === "object" && (fr.s === 1 || fr.s === 2)) { | ||
| if (scheduleResumeAfterAssets(id, resume, assetPromise)) return undefined; | ||
| return fallback(); | ||
| } | ||
| waitAndResume(fr, resume, assetPromise); | ||
| return fallback(); | ||
| } | ||
| if (assetPromise && !sharedConfig.has(id)) { | ||
| _pendingBoundaries++; | ||
| const set = createBoundaryTrigger(); | ||
| assetPromise.then(() => resumeBoundaryHydration(o, id, set)); | ||
| const [, resume] = initBoundaryResume(o, id); | ||
| assetPromise.then(resume); | ||
| return undefined; | ||
@@ -900,10 +911,12 @@ } | ||
| } | ||
| function Reveal(props) { | ||
| return signals.createRevealOrder(() => props.children, { | ||
| together: () => !!props.together, | ||
| collapsed: () => !!props.collapsed | ||
| }); | ||
| } | ||
| function ssrHandleError() {} | ||
| function ssrRunInScope() {} | ||
| const DevHooks = {}; | ||
| const DEV = { | ||
| hooks: DevHooks, | ||
| registerGraph | ||
| } ; | ||
| const DEV = signals.DEV ; | ||
| if (globalThis) { | ||
@@ -941,2 +954,6 @@ if (!globalThis.Solid$$) globalThis.Solid$$ = true;else console.warn("You appear to have multiple instances of Solid. This can lead to unexpected behavior."); | ||
| }); | ||
| Object.defineProperty(exports, "createRevealOrder", { | ||
| enumerable: true, | ||
| get: function () { return signals.createRevealOrder; } | ||
| }); | ||
| Object.defineProperty(exports, "createRoot", { | ||
@@ -982,2 +999,6 @@ enumerable: true, | ||
| }); | ||
| Object.defineProperty(exports, "isDisposed", { | ||
| enumerable: true, | ||
| get: function () { return signals.isDisposed; } | ||
| }); | ||
| Object.defineProperty(exports, "isEqual", { | ||
@@ -1065,2 +1086,3 @@ enumerable: true, | ||
| exports.Repeat = Repeat; | ||
| exports.Reveal = Reveal; | ||
| exports.Show = Show; | ||
@@ -1067,0 +1089,0 @@ exports.Switch = Switch; |
+64
-51
@@ -1,3 +0,3 @@ | ||
| import { getContext, createMemo as createMemo$1, flatten, getOwner, createRoot, setContext, untrack, createOwner, runWithOwner, createEffect as createEffect$1, createErrorBoundary as createErrorBoundary$1, createLoadingBoundary as createLoadingBoundary$1, onCleanup, isDisposed, createOptimistic as createOptimistic$1, createOptimisticStore as createOptimisticStore$1, createProjection as createProjection$1, createRenderEffect as createRenderEffect$1, createSignal as createSignal$1, createStore as createStore$1, setSnapshotCapture, releaseSnapshotScope, getNextChildId, markSnapshotScope, flush, peekNextChildId, clearSnapshots, mapArray, repeat } from '@solidjs/signals'; | ||
| export { $PROXY, $REFRESH, $TRACK, NotReadyError, action, createOwner, createReaction, createRoot, createTrackedEffect, deep, enableExternalSource, enforceLoadingBoundary, flatten, flush, getNextChildId, getObserver, getOwner, isEqual, isPending, isRefreshing, isWrappable, latest, mapArray, merge, omit, onCleanup, onSettled, reconcile, refresh, repeat, resolve, runWithOwner, snapshot, storePath, untrack } from '@solidjs/signals'; | ||
| import { getContext, createMemo as createMemo$1, flatten, createRoot, setContext, getOwner, untrack, createOwner, runWithOwner, createEffect as createEffect$1, createErrorBoundary as createErrorBoundary$1, createLoadingBoundary as createLoadingBoundary$1, createOptimistic as createOptimistic$1, createOptimisticStore as createOptimisticStore$1, createProjection as createProjection$1, createRenderEffect as createRenderEffect$1, createSignal as createSignal$1, createStore as createStore$1, setSnapshotCapture, releaseSnapshotScope, getNextChildId, onCleanup, isDisposed, peekNextChildId, clearSnapshots, flush, markSnapshotScope, mapArray, repeat, createRevealOrder, DEV as DEV$1 } from '@solidjs/signals'; | ||
| export { $PROXY, $REFRESH, $TRACK, NotReadyError, action, createOwner, createReaction, createRevealOrder, createRoot, createTrackedEffect, deep, enableExternalSource, enforceLoadingBoundary, flatten, flush, getNextChildId, getObserver, getOwner, isDisposed, isEqual, isPending, isRefreshing, isWrappable, latest, mapArray, merge, omit, onCleanup, onSettled, reconcile, refresh, repeat, resolve, runWithOwner, snapshot, storePath, untrack } from '@solidjs/signals'; | ||
@@ -37,5 +37,7 @@ const $DEVCOMP = Symbol("COMPONENT_DEV" ); | ||
| const owner = getOwner(); | ||
| owner._props = props; | ||
| owner._name = Comp.name; | ||
| owner._component = Comp; | ||
| owner._component = { | ||
| fn: Comp, | ||
| props, | ||
| name: Comp.name | ||
| }; | ||
| Object.assign(Comp, { | ||
@@ -49,8 +51,2 @@ [$DEVCOMP]: true | ||
| } | ||
| function registerGraph(value) { | ||
| const owner = getOwner(); | ||
| if (!owner) return; | ||
| if (owner.sourceMap) owner.sourceMap.push(value);else owner.sourceMap = [value]; | ||
| value.graph = owner; | ||
| } | ||
@@ -679,2 +675,34 @@ const NoHydrateContext = { | ||
| } | ||
| function initBoundaryResume(o, id) { | ||
| _pendingBoundaries++; | ||
| onCleanup(() => { | ||
| if (!isDisposed(o)) return; | ||
| sharedConfig.cleanupFragment?.(id); | ||
| }); | ||
| const set = createBoundaryTrigger(); | ||
| return [set, () => resumeBoundaryHydration(o, id, set)]; | ||
| } | ||
| function waitAndResume(p, resume, assetPromise) { | ||
| const waitFor = assetPromise ? Promise.all([p, assetPromise]) : p; | ||
| waitFor.then(() => { | ||
| if (p && typeof p === "object") p.s = 1; | ||
| resume(); | ||
| }, err => { | ||
| if (p && typeof p === "object") { | ||
| p.s = 2; | ||
| p.v = err; | ||
| } | ||
| resume(); | ||
| }); | ||
| } | ||
| function scheduleResumeAfterAssets(id, resume, assetPromise) { | ||
| sharedConfig.gather?.(id); | ||
| const doResume = () => queueMicrotask(resume); | ||
| if (assetPromise) { | ||
| assetPromise.then(doResume); | ||
| return true; | ||
| } | ||
| doResume(); | ||
| return false; | ||
| } | ||
| function createLoadingBoundary(fn, fallback, options) { | ||
@@ -699,37 +727,10 @@ if (!sharedConfig.hydrating) return createLoadingBoundary$1(fn, fallback, options); | ||
| settledSerializationResumeQueued = true; | ||
| _pendingBoundaries++; | ||
| onCleanup(() => { | ||
| if (!isDisposed(o)) return; | ||
| sharedConfig.cleanupFragment?.(id); | ||
| }); | ||
| const set = createBoundaryTrigger(); | ||
| const scheduleResume = () => queueMicrotask(() => resumeBoundaryHydration(o, id, set)); | ||
| if (assetPromise) { | ||
| assetPromise.then(scheduleResume); | ||
| return undefined; | ||
| } | ||
| scheduleResume(); | ||
| const [, resume] = initBoundaryResume(o, id); | ||
| if (scheduleResumeAfterAssets(id, resume, assetPromise)) return undefined; | ||
| return fallback(); | ||
| } | ||
| if (p) { | ||
| _pendingBoundaries++; | ||
| onCleanup(() => { | ||
| if (!isDisposed(o)) return; | ||
| sharedConfig.cleanupFragment?.(id); | ||
| }); | ||
| const set = createBoundaryTrigger(); | ||
| const [set, resume] = initBoundaryResume(o, id); | ||
| if (p !== "$$f") { | ||
| const waitFor = assetPromise ? Promise.all([p, assetPromise]) : p; | ||
| waitFor.then(() => { | ||
| if (p && typeof p === "object") { | ||
| p.s = 1; | ||
| } | ||
| resumeBoundaryHydration(o, id, set); | ||
| }, err => { | ||
| if (p && typeof p === "object") { | ||
| p.s = 2; | ||
| p.v = err; | ||
| } | ||
| resumeBoundaryHydration(o, id, set); | ||
| }); | ||
| waitAndResume(p, resume, assetPromise); | ||
| } else { | ||
@@ -746,6 +747,16 @@ const afterAssets = () => { | ||
| } | ||
| if (sharedConfig.hydrating && sharedConfig.has(id + "_fr") && !settledSerializationResumeQueued) { | ||
| settledSerializationResumeQueued = true; | ||
| const fr = sharedConfig.load(id + "_fr"); | ||
| const [, resume] = initBoundaryResume(o, id); | ||
| if (fr && typeof fr === "object" && (fr.s === 1 || fr.s === 2)) { | ||
| if (scheduleResumeAfterAssets(id, resume, assetPromise)) return undefined; | ||
| return fallback(); | ||
| } | ||
| waitAndResume(fr, resume, assetPromise); | ||
| return fallback(); | ||
| } | ||
| if (assetPromise && !sharedConfig.has(id)) { | ||
| _pendingBoundaries++; | ||
| const set = createBoundaryTrigger(); | ||
| assetPromise.then(() => resumeBoundaryHydration(o, id, set)); | ||
| const [, resume] = initBoundaryResume(o, id); | ||
| assetPromise.then(resume); | ||
| return undefined; | ||
@@ -899,10 +910,12 @@ } | ||
| } | ||
| function Reveal(props) { | ||
| return createRevealOrder(() => props.children, { | ||
| together: () => !!props.together, | ||
| collapsed: () => !!props.collapsed | ||
| }); | ||
| } | ||
| function ssrHandleError() {} | ||
| function ssrRunInScope() {} | ||
| const DevHooks = {}; | ||
| const DEV = { | ||
| hooks: DevHooks, | ||
| registerGraph | ||
| } ; | ||
| const DEV = DEV$1 ; | ||
| if (globalThis) { | ||
@@ -912,2 +925,2 @@ if (!globalThis.Solid$$) globalThis.Solid$$ = true;else console.warn("You appear to have multiple instances of Solid. This can lead to unexpected behavior."); | ||
| export { $DEVCOMP, DEV, Errored, For, Hydration, Loading, Match, NoHydrateContext, NoHydration, Repeat, Show, Switch, children, createComponent, createContext, createEffect, createErrorBoundary, createLoadingBoundary, createMemo, createOptimistic, createOptimisticStore, createProjection, createRenderEffect, createSignal, createStore, createUniqueId, enableHydration, lazy, sharedConfig, ssrHandleError, ssrRunInScope, useContext }; | ||
| export { $DEVCOMP, DEV, Errored, For, Hydration, Loading, Match, NoHydrateContext, NoHydration, Repeat, Reveal, Show, Switch, children, createComponent, createContext, createEffect, createErrorBoundary, createLoadingBoundary, createMemo, createOptimistic, createOptimisticStore, createProjection, createRenderEffect, createSignal, createStore, createUniqueId, enableHydration, lazy, sharedConfig, ssrHandleError, ssrRunInScope, useContext }; |
+124
-3
@@ -420,3 +420,3 @@ 'use strict'; | ||
| promise.v = state; | ||
| return; | ||
| return state; | ||
| } | ||
@@ -428,2 +428,3 @@ if (v !== undefined && v !== state) { | ||
| markReady(); | ||
| return state; | ||
| }, () => {}); | ||
@@ -573,2 +574,6 @@ if (ctx?.async && !signals.getContext(NoHydrateContext) && owner.id) ctx.serialize(owner.id, promise, options?.deferStream); | ||
| } | ||
| function createRevealOrder(fn, _options) { | ||
| const o = signals.createOwner(); | ||
| return signals.runWithOwner(o, fn); | ||
| } | ||
| function untrack(fn) { | ||
@@ -698,2 +703,6 @@ return fn(); | ||
| const RevealGroupContext = { | ||
| id: Symbol("RevealGroupContext"), | ||
| defaultValue: null | ||
| }; | ||
| function ssrHandleError(err) { | ||
@@ -724,2 +733,3 @@ if (err instanceof signals.NotReadyError) { | ||
| const parentHandler = parent && signals.runWithOwner(parent, () => signals.getContext(ErrorContext)); | ||
| const revealGroup = parent && signals.runWithOwner(parent, () => signals.getContext(RevealGroupContext)); | ||
| const o = signals.createOwner(); | ||
@@ -787,8 +797,21 @@ const id = o.id; | ||
| } | ||
| const collapseFallback = revealGroup ? revealGroup.register(id) : false; | ||
| if (collapseFallback && !ctx.async) { | ||
| commitBoundaryState(); | ||
| ctx.serialize(id, "$$f"); | ||
| return () => undefined; | ||
| } | ||
| const fallbackOwner = signals.createOwner({ | ||
| id | ||
| }); | ||
| const fallbackResult = signals.runWithOwner(fallbackOwner, () => ctx.async ? ctx.ssr([`<template id="pl-${id}"></template>`, `<!--pl-${id}-->`], ctx.escape(fallback())) : fallback()); | ||
| const fallbackResult = signals.runWithOwner(fallbackOwner, () => { | ||
| if (!ctx.async) return fallback(); | ||
| const tpl = collapseFallback ? [`<template id="pl-${id}">`, `</template><!--pl-${id}-->`] : [`<template id="pl-${id}"></template>`, `<!--pl-${id}-->`]; | ||
| return ctx.ssr(tpl, ctx.escape(fallback())); | ||
| }); | ||
| if (ctx.async) { | ||
| done = ctx.registerFragment(id); | ||
| const regOpts = revealGroup ? { | ||
| revealGroup: revealGroup.id | ||
| } : undefined; | ||
| done = ctx.registerFragment(id, regOpts); | ||
| (async () => { | ||
@@ -803,2 +826,3 @@ try { | ||
| done(ret.t[0]); | ||
| if (revealGroup) revealGroup.onResolved(id); | ||
| } catch (err) { | ||
@@ -895,2 +919,93 @@ finalizeError(err); | ||
| } | ||
| function Reveal(props) { | ||
| const o = signals.createOwner(); | ||
| const id = o.id; | ||
| const together = !!props.together; | ||
| const collapsed = !!props.collapsed; | ||
| if (!sharedConfig.context?.async) { | ||
| const parent = signals.getOwner(); | ||
| const parentGroup = parent ? signals.runWithOwner(parent, () => signals.getContext(RevealGroupContext)) : null; | ||
| let collapsedByParent = false; | ||
| if (parentGroup) { | ||
| collapsedByParent = parentGroup.register(id); | ||
| if (collapsed || together) console.warn("Nested <Reveal> with collapsed/together won't coordinate correctly with renderToString. Use renderToStream for full support."); | ||
| } | ||
| let count = 0; | ||
| return signals.runWithOwner(o, () => { | ||
| signals.setContext(RevealGroupContext, { | ||
| id, | ||
| register(_key) { | ||
| count++; | ||
| if (collapsedByParent) return true; | ||
| return !together && collapsed && count > 1; | ||
| }, | ||
| onResolved() {} | ||
| }); | ||
| return props.children; | ||
| }); | ||
| } | ||
| const ctx = sharedConfig.context; | ||
| const keys = []; | ||
| const resolved = new Set(); | ||
| const composites = new Map(); | ||
| let frontier = 0; | ||
| const parent = signals.getOwner(); | ||
| const parentGroup = parent ? signals.runWithOwner(parent, () => signals.getContext(RevealGroupContext)) : null; | ||
| let collapsedByParent = false; | ||
| if (parentGroup) { | ||
| collapsedByParent = parentGroup.register(id, { | ||
| onActivate: () => { | ||
| collapsedByParent = false; | ||
| advanceFrontier(); | ||
| } | ||
| }); | ||
| } | ||
| function notifyParentIfDone() { | ||
| if (parentGroup && resolved.size === keys.length) { | ||
| parentGroup.onResolved(id); | ||
| } | ||
| } | ||
| function advanceFrontier() { | ||
| while (frontier < keys.length && resolved.has(keys[frontier])) { | ||
| if (!composites.has(keys[frontier])) ctx.revealFragments?.([keys[frontier]]); | ||
| frontier++; | ||
| } | ||
| if (frontier < keys.length) { | ||
| const activate = composites.get(keys[frontier]); | ||
| if (activate) activate();else if (!together && collapsed) ctx.revealFallbacks?.(keys.slice(frontier)); | ||
| } | ||
| notifyParentIfDone(); | ||
| } | ||
| return signals.runWithOwner(o, () => { | ||
| signals.setContext(RevealGroupContext, { | ||
| id, | ||
| register(key, options) { | ||
| keys.push(key); | ||
| if (options?.onActivate) composites.set(key, options.onActivate); | ||
| if (collapsedByParent) return true; | ||
| return !together && collapsed && keys.length > 1; | ||
| }, | ||
| onResolved(key) { | ||
| resolved.add(key); | ||
| if (collapsedByParent) { | ||
| notifyParentIfDone(); | ||
| return; | ||
| } | ||
| if (together) { | ||
| if (resolved.size === keys.length) { | ||
| ctx.revealFragments?.(id); | ||
| notifyParentIfDone(); | ||
| } | ||
| } else { | ||
| advanceFrontier(); | ||
| } | ||
| } | ||
| }); | ||
| const result = props.children; | ||
| if (parentGroup && keys.length === 0) { | ||
| parentGroup.onResolved(id); | ||
| } | ||
| return result; | ||
| }); | ||
| } | ||
@@ -943,2 +1058,6 @@ const DEV = undefined; | ||
| }); | ||
| Object.defineProperty(exports, "isDisposed", { | ||
| enumerable: true, | ||
| get: function () { return signals.isDisposed; } | ||
| }); | ||
| Object.defineProperty(exports, "isEqual", { | ||
@@ -986,2 +1105,3 @@ enumerable: true, | ||
| exports.Repeat = Repeat; | ||
| exports.Reveal = Reveal; | ||
| exports.Show = Show; | ||
@@ -1003,2 +1123,3 @@ exports.Switch = Switch; | ||
| exports.createRenderEffect = createRenderEffect; | ||
| exports.createRevealOrder = createRevealOrder; | ||
| exports.createSignal = createSignal; | ||
@@ -1005,0 +1126,0 @@ exports.createStore = createStore; |
+120
-5
| import { getOwner, getContext, getNextChildId, createOwner, NotReadyError, runWithOwner, onCleanup, isWrappable, setContext, flatten, createRoot } from '@solidjs/signals'; | ||
| export { $PROXY, $REFRESH, $TRACK, NotReadyError, createOwner, createRoot, enableExternalSource, enforceLoadingBoundary, flatten, getNextChildId, getOwner, isEqual, isWrappable, merge, omit, onCleanup, runWithOwner, snapshot, storePath } from '@solidjs/signals'; | ||
| export { $PROXY, $REFRESH, $TRACK, NotReadyError, createOwner, createRoot, enableExternalSource, enforceLoadingBoundary, flatten, getNextChildId, getOwner, isDisposed, isEqual, isWrappable, merge, omit, onCleanup, runWithOwner, snapshot, storePath } from '@solidjs/signals'; | ||
@@ -419,3 +419,3 @@ const NoHydrateContext = { | ||
| promise.v = state; | ||
| return; | ||
| return state; | ||
| } | ||
@@ -427,2 +427,3 @@ if (v !== undefined && v !== state) { | ||
| markReady(); | ||
| return state; | ||
| }, () => {}); | ||
@@ -572,2 +573,6 @@ if (ctx?.async && !getContext(NoHydrateContext) && owner.id) ctx.serialize(owner.id, promise, options?.deferStream); | ||
| } | ||
| function createRevealOrder(fn, _options) { | ||
| const o = createOwner(); | ||
| return runWithOwner(o, fn); | ||
| } | ||
| function untrack(fn) { | ||
@@ -697,2 +702,6 @@ return fn(); | ||
| const RevealGroupContext = { | ||
| id: Symbol("RevealGroupContext"), | ||
| defaultValue: null | ||
| }; | ||
| function ssrHandleError(err) { | ||
@@ -723,2 +732,3 @@ if (err instanceof NotReadyError) { | ||
| const parentHandler = parent && runWithOwner(parent, () => getContext(ErrorContext)); | ||
| const revealGroup = parent && runWithOwner(parent, () => getContext(RevealGroupContext)); | ||
| const o = createOwner(); | ||
@@ -786,8 +796,21 @@ const id = o.id; | ||
| } | ||
| const collapseFallback = revealGroup ? revealGroup.register(id) : false; | ||
| if (collapseFallback && !ctx.async) { | ||
| commitBoundaryState(); | ||
| ctx.serialize(id, "$$f"); | ||
| return () => undefined; | ||
| } | ||
| const fallbackOwner = createOwner({ | ||
| id | ||
| }); | ||
| const fallbackResult = runWithOwner(fallbackOwner, () => ctx.async ? ctx.ssr([`<template id="pl-${id}"></template>`, `<!--pl-${id}-->`], ctx.escape(fallback())) : fallback()); | ||
| const fallbackResult = runWithOwner(fallbackOwner, () => { | ||
| if (!ctx.async) return fallback(); | ||
| const tpl = collapseFallback ? [`<template id="pl-${id}">`, `</template><!--pl-${id}-->`] : [`<template id="pl-${id}"></template>`, `<!--pl-${id}-->`]; | ||
| return ctx.ssr(tpl, ctx.escape(fallback())); | ||
| }); | ||
| if (ctx.async) { | ||
| done = ctx.registerFragment(id); | ||
| const regOpts = revealGroup ? { | ||
| revealGroup: revealGroup.id | ||
| } : undefined; | ||
| done = ctx.registerFragment(id, regOpts); | ||
| (async () => { | ||
@@ -802,2 +825,3 @@ try { | ||
| done(ret.t[0]); | ||
| if (revealGroup) revealGroup.onResolved(id); | ||
| } catch (err) { | ||
@@ -894,5 +918,96 @@ finalizeError(err); | ||
| } | ||
| function Reveal(props) { | ||
| const o = createOwner(); | ||
| const id = o.id; | ||
| const together = !!props.together; | ||
| const collapsed = !!props.collapsed; | ||
| if (!sharedConfig.context?.async) { | ||
| const parent = getOwner(); | ||
| const parentGroup = parent ? runWithOwner(parent, () => getContext(RevealGroupContext)) : null; | ||
| let collapsedByParent = false; | ||
| if (parentGroup) { | ||
| collapsedByParent = parentGroup.register(id); | ||
| if (collapsed || together) console.warn("Nested <Reveal> with collapsed/together won't coordinate correctly with renderToString. Use renderToStream for full support."); | ||
| } | ||
| let count = 0; | ||
| return runWithOwner(o, () => { | ||
| setContext(RevealGroupContext, { | ||
| id, | ||
| register(_key) { | ||
| count++; | ||
| if (collapsedByParent) return true; | ||
| return !together && collapsed && count > 1; | ||
| }, | ||
| onResolved() {} | ||
| }); | ||
| return props.children; | ||
| }); | ||
| } | ||
| const ctx = sharedConfig.context; | ||
| const keys = []; | ||
| const resolved = new Set(); | ||
| const composites = new Map(); | ||
| let frontier = 0; | ||
| const parent = getOwner(); | ||
| const parentGroup = parent ? runWithOwner(parent, () => getContext(RevealGroupContext)) : null; | ||
| let collapsedByParent = false; | ||
| if (parentGroup) { | ||
| collapsedByParent = parentGroup.register(id, { | ||
| onActivate: () => { | ||
| collapsedByParent = false; | ||
| advanceFrontier(); | ||
| } | ||
| }); | ||
| } | ||
| function notifyParentIfDone() { | ||
| if (parentGroup && resolved.size === keys.length) { | ||
| parentGroup.onResolved(id); | ||
| } | ||
| } | ||
| function advanceFrontier() { | ||
| while (frontier < keys.length && resolved.has(keys[frontier])) { | ||
| if (!composites.has(keys[frontier])) ctx.revealFragments?.([keys[frontier]]); | ||
| frontier++; | ||
| } | ||
| if (frontier < keys.length) { | ||
| const activate = composites.get(keys[frontier]); | ||
| if (activate) activate();else if (!together && collapsed) ctx.revealFallbacks?.(keys.slice(frontier)); | ||
| } | ||
| notifyParentIfDone(); | ||
| } | ||
| return runWithOwner(o, () => { | ||
| setContext(RevealGroupContext, { | ||
| id, | ||
| register(key, options) { | ||
| keys.push(key); | ||
| if (options?.onActivate) composites.set(key, options.onActivate); | ||
| if (collapsedByParent) return true; | ||
| return !together && collapsed && keys.length > 1; | ||
| }, | ||
| onResolved(key) { | ||
| resolved.add(key); | ||
| if (collapsedByParent) { | ||
| notifyParentIfDone(); | ||
| return; | ||
| } | ||
| if (together) { | ||
| if (resolved.size === keys.length) { | ||
| ctx.revealFragments?.(id); | ||
| notifyParentIfDone(); | ||
| } | ||
| } else { | ||
| advanceFrontier(); | ||
| } | ||
| } | ||
| }); | ||
| const result = props.children; | ||
| if (parentGroup && keys.length === 0) { | ||
| parentGroup.onResolved(id); | ||
| } | ||
| return result; | ||
| }); | ||
| } | ||
| const DEV = undefined; | ||
| export { $DEVCOMP, DEV, Errored, For, Hydration, Loading, Match, NoHydrateContext, NoHydration, Repeat, Show, Switch, action, children, createComponent, createContext, createDeepProxy, createEffect, createErrorBoundary, createLoadingBoundary, createMemo, createOptimistic, createOptimisticStore, createProjection, createReaction, createRenderEffect, createSignal, createStore, createTrackedEffect, createUniqueId, deep, enableHydration, flush, getObserver, isPending, isRefreshing, latest, lazy, mapArray, onSettled, reconcile, refresh, repeat, resolve, sharedConfig, ssrHandleError, ssrRunInScope, untrack, useContext }; | ||
| export { $DEVCOMP, DEV, Errored, For, Hydration, Loading, Match, NoHydrateContext, NoHydration, Repeat, Reveal, Show, Switch, action, children, createComponent, createContext, createDeepProxy, createEffect, createErrorBoundary, createLoadingBoundary, createMemo, createOptimistic, createOptimisticStore, createProjection, createReaction, createRenderEffect, createRevealOrder, createSignal, createStore, createTrackedEffect, createUniqueId, deep, enableHydration, flush, getObserver, isPending, isRefreshing, latest, lazy, mapArray, onSettled, reconcile, refresh, repeat, resolve, sharedConfig, ssrHandleError, ssrRunInScope, untrack, useContext }; |
+64
-34
@@ -657,2 +657,34 @@ 'use strict'; | ||
| } | ||
| function initBoundaryResume(o, id) { | ||
| _pendingBoundaries++; | ||
| signals.onCleanup(() => { | ||
| if (!signals.isDisposed(o)) return; | ||
| sharedConfig.cleanupFragment?.(id); | ||
| }); | ||
| const set = createBoundaryTrigger(); | ||
| return [set, () => resumeBoundaryHydration(o, id, set)]; | ||
| } | ||
| function waitAndResume(p, resume, assetPromise) { | ||
| const waitFor = assetPromise ? Promise.all([p, assetPromise]) : p; | ||
| waitFor.then(() => { | ||
| if (p && typeof p === "object") p.s = 1; | ||
| resume(); | ||
| }, err => { | ||
| if (p && typeof p === "object") { | ||
| p.s = 2; | ||
| p.v = err; | ||
| } | ||
| resume(); | ||
| }); | ||
| } | ||
| function scheduleResumeAfterAssets(id, resume, assetPromise) { | ||
| sharedConfig.gather?.(id); | ||
| const doResume = () => queueMicrotask(resume); | ||
| if (assetPromise) { | ||
| assetPromise.then(doResume); | ||
| return true; | ||
| } | ||
| doResume(); | ||
| return false; | ||
| } | ||
| function createLoadingBoundary(fn, fallback, options) { | ||
@@ -677,37 +709,10 @@ if (!sharedConfig.hydrating) return signals.createLoadingBoundary(fn, fallback, options); | ||
| settledSerializationResumeQueued = true; | ||
| _pendingBoundaries++; | ||
| signals.onCleanup(() => { | ||
| if (!signals.isDisposed(o)) return; | ||
| sharedConfig.cleanupFragment?.(id); | ||
| }); | ||
| const set = createBoundaryTrigger(); | ||
| const scheduleResume = () => queueMicrotask(() => resumeBoundaryHydration(o, id, set)); | ||
| if (assetPromise) { | ||
| assetPromise.then(scheduleResume); | ||
| return undefined; | ||
| } | ||
| scheduleResume(); | ||
| const [, resume] = initBoundaryResume(o, id); | ||
| if (scheduleResumeAfterAssets(id, resume, assetPromise)) return undefined; | ||
| return fallback(); | ||
| } | ||
| if (p) { | ||
| _pendingBoundaries++; | ||
| signals.onCleanup(() => { | ||
| if (!signals.isDisposed(o)) return; | ||
| sharedConfig.cleanupFragment?.(id); | ||
| }); | ||
| const set = createBoundaryTrigger(); | ||
| const [set, resume] = initBoundaryResume(o, id); | ||
| if (p !== "$$f") { | ||
| const waitFor = assetPromise ? Promise.all([p, assetPromise]) : p; | ||
| waitFor.then(() => { | ||
| if (p && typeof p === "object") { | ||
| p.s = 1; | ||
| } | ||
| resumeBoundaryHydration(o, id, set); | ||
| }, err => { | ||
| if (p && typeof p === "object") { | ||
| p.s = 2; | ||
| p.v = err; | ||
| } | ||
| resumeBoundaryHydration(o, id, set); | ||
| }); | ||
| waitAndResume(p, resume, assetPromise); | ||
| } else { | ||
@@ -724,6 +729,16 @@ const afterAssets = () => { | ||
| } | ||
| if (sharedConfig.hydrating && sharedConfig.has(id + "_fr") && !settledSerializationResumeQueued) { | ||
| settledSerializationResumeQueued = true; | ||
| const fr = sharedConfig.load(id + "_fr"); | ||
| const [, resume] = initBoundaryResume(o, id); | ||
| if (fr && typeof fr === "object" && (fr.s === 1 || fr.s === 2)) { | ||
| if (scheduleResumeAfterAssets(id, resume, assetPromise)) return undefined; | ||
| return fallback(); | ||
| } | ||
| waitAndResume(fr, resume, assetPromise); | ||
| return fallback(); | ||
| } | ||
| if (assetPromise && !sharedConfig.has(id)) { | ||
| _pendingBoundaries++; | ||
| const set = createBoundaryTrigger(); | ||
| assetPromise.then(() => resumeBoundaryHydration(o, id, set)); | ||
| const [, resume] = initBoundaryResume(o, id); | ||
| assetPromise.then(resume); | ||
| return undefined; | ||
@@ -861,2 +876,8 @@ } | ||
| } | ||
| function Reveal(props) { | ||
| return signals.createRevealOrder(() => props.children, { | ||
| together: () => !!props.together, | ||
| collapsed: () => !!props.collapsed | ||
| }); | ||
| } | ||
@@ -895,2 +916,6 @@ function ssrHandleError() {} | ||
| }); | ||
| Object.defineProperty(exports, "createRevealOrder", { | ||
| enumerable: true, | ||
| get: function () { return signals.createRevealOrder; } | ||
| }); | ||
| Object.defineProperty(exports, "createRoot", { | ||
@@ -936,2 +961,6 @@ enumerable: true, | ||
| }); | ||
| Object.defineProperty(exports, "isDisposed", { | ||
| enumerable: true, | ||
| get: function () { return signals.isDisposed; } | ||
| }); | ||
| Object.defineProperty(exports, "isEqual", { | ||
@@ -1019,2 +1048,3 @@ enumerable: true, | ||
| exports.Repeat = Repeat; | ||
| exports.Reveal = Reveal; | ||
| exports.Show = Show; | ||
@@ -1021,0 +1051,0 @@ exports.Switch = Switch; |
+58
-37
@@ -1,3 +0,3 @@ | ||
| import { getContext, createMemo as createMemo$1, flatten, createRoot, setContext, createOwner, runWithOwner, createEffect as createEffect$1, createErrorBoundary as createErrorBoundary$1, createLoadingBoundary as createLoadingBoundary$1, getOwner, onCleanup, isDisposed, createOptimistic as createOptimistic$1, createOptimisticStore as createOptimisticStore$1, createProjection as createProjection$1, createRenderEffect as createRenderEffect$1, createSignal as createSignal$1, createStore as createStore$1, setSnapshotCapture, releaseSnapshotScope, getNextChildId, markSnapshotScope, flush, peekNextChildId, clearSnapshots, untrack, mapArray, repeat } from '@solidjs/signals'; | ||
| export { $PROXY, $REFRESH, $TRACK, NotReadyError, action, createOwner, createReaction, createRoot, createTrackedEffect, deep, enableExternalSource, enforceLoadingBoundary, flatten, flush, getNextChildId, getObserver, getOwner, isEqual, isPending, isRefreshing, isWrappable, latest, mapArray, merge, omit, onCleanup, onSettled, reconcile, refresh, repeat, resolve, runWithOwner, snapshot, storePath, untrack } from '@solidjs/signals'; | ||
| import { getContext, createMemo as createMemo$1, flatten, createRoot, setContext, createOwner, runWithOwner, createEffect as createEffect$1, createErrorBoundary as createErrorBoundary$1, createLoadingBoundary as createLoadingBoundary$1, getOwner, createOptimistic as createOptimistic$1, createOptimisticStore as createOptimisticStore$1, createProjection as createProjection$1, createRenderEffect as createRenderEffect$1, createSignal as createSignal$1, createStore as createStore$1, setSnapshotCapture, releaseSnapshotScope, getNextChildId, onCleanup, isDisposed, peekNextChildId, clearSnapshots, flush, markSnapshotScope, untrack, mapArray, repeat, createRevealOrder } from '@solidjs/signals'; | ||
| export { $PROXY, $REFRESH, $TRACK, NotReadyError, action, createOwner, createReaction, createRevealOrder, createRoot, createTrackedEffect, deep, enableExternalSource, enforceLoadingBoundary, flatten, flush, getNextChildId, getObserver, getOwner, isDisposed, isEqual, isPending, isRefreshing, isWrappable, latest, mapArray, merge, omit, onCleanup, onSettled, reconcile, refresh, repeat, resolve, runWithOwner, snapshot, storePath, untrack } from '@solidjs/signals'; | ||
@@ -656,2 +656,34 @@ const IS_DEV = false; | ||
| } | ||
| function initBoundaryResume(o, id) { | ||
| _pendingBoundaries++; | ||
| onCleanup(() => { | ||
| if (!isDisposed(o)) return; | ||
| sharedConfig.cleanupFragment?.(id); | ||
| }); | ||
| const set = createBoundaryTrigger(); | ||
| return [set, () => resumeBoundaryHydration(o, id, set)]; | ||
| } | ||
| function waitAndResume(p, resume, assetPromise) { | ||
| const waitFor = assetPromise ? Promise.all([p, assetPromise]) : p; | ||
| waitFor.then(() => { | ||
| if (p && typeof p === "object") p.s = 1; | ||
| resume(); | ||
| }, err => { | ||
| if (p && typeof p === "object") { | ||
| p.s = 2; | ||
| p.v = err; | ||
| } | ||
| resume(); | ||
| }); | ||
| } | ||
| function scheduleResumeAfterAssets(id, resume, assetPromise) { | ||
| sharedConfig.gather?.(id); | ||
| const doResume = () => queueMicrotask(resume); | ||
| if (assetPromise) { | ||
| assetPromise.then(doResume); | ||
| return true; | ||
| } | ||
| doResume(); | ||
| return false; | ||
| } | ||
| function createLoadingBoundary(fn, fallback, options) { | ||
@@ -676,37 +708,10 @@ if (!sharedConfig.hydrating) return createLoadingBoundary$1(fn, fallback, options); | ||
| settledSerializationResumeQueued = true; | ||
| _pendingBoundaries++; | ||
| onCleanup(() => { | ||
| if (!isDisposed(o)) return; | ||
| sharedConfig.cleanupFragment?.(id); | ||
| }); | ||
| const set = createBoundaryTrigger(); | ||
| const scheduleResume = () => queueMicrotask(() => resumeBoundaryHydration(o, id, set)); | ||
| if (assetPromise) { | ||
| assetPromise.then(scheduleResume); | ||
| return undefined; | ||
| } | ||
| scheduleResume(); | ||
| const [, resume] = initBoundaryResume(o, id); | ||
| if (scheduleResumeAfterAssets(id, resume, assetPromise)) return undefined; | ||
| return fallback(); | ||
| } | ||
| if (p) { | ||
| _pendingBoundaries++; | ||
| onCleanup(() => { | ||
| if (!isDisposed(o)) return; | ||
| sharedConfig.cleanupFragment?.(id); | ||
| }); | ||
| const set = createBoundaryTrigger(); | ||
| const [set, resume] = initBoundaryResume(o, id); | ||
| if (p !== "$$f") { | ||
| const waitFor = assetPromise ? Promise.all([p, assetPromise]) : p; | ||
| waitFor.then(() => { | ||
| if (p && typeof p === "object") { | ||
| p.s = 1; | ||
| } | ||
| resumeBoundaryHydration(o, id, set); | ||
| }, err => { | ||
| if (p && typeof p === "object") { | ||
| p.s = 2; | ||
| p.v = err; | ||
| } | ||
| resumeBoundaryHydration(o, id, set); | ||
| }); | ||
| waitAndResume(p, resume, assetPromise); | ||
| } else { | ||
@@ -723,6 +728,16 @@ const afterAssets = () => { | ||
| } | ||
| if (sharedConfig.hydrating && sharedConfig.has(id + "_fr") && !settledSerializationResumeQueued) { | ||
| settledSerializationResumeQueued = true; | ||
| const fr = sharedConfig.load(id + "_fr"); | ||
| const [, resume] = initBoundaryResume(o, id); | ||
| if (fr && typeof fr === "object" && (fr.s === 1 || fr.s === 2)) { | ||
| if (scheduleResumeAfterAssets(id, resume, assetPromise)) return undefined; | ||
| return fallback(); | ||
| } | ||
| waitAndResume(fr, resume, assetPromise); | ||
| return fallback(); | ||
| } | ||
| if (assetPromise && !sharedConfig.has(id)) { | ||
| _pendingBoundaries++; | ||
| const set = createBoundaryTrigger(); | ||
| assetPromise.then(() => resumeBoundaryHydration(o, id, set)); | ||
| const [, resume] = initBoundaryResume(o, id); | ||
| assetPromise.then(resume); | ||
| return undefined; | ||
@@ -860,2 +875,8 @@ } | ||
| } | ||
| function Reveal(props) { | ||
| return createRevealOrder(() => props.children, { | ||
| together: () => !!props.together, | ||
| collapsed: () => !!props.collapsed | ||
| }); | ||
| } | ||
@@ -866,2 +887,2 @@ function ssrHandleError() {} | ||
| export { $DEVCOMP, DEV, Errored, For, Hydration, Loading, Match, NoHydrateContext, NoHydration, Repeat, Show, Switch, children, createComponent, createContext, createEffect, createErrorBoundary, createLoadingBoundary, createMemo, createOptimistic, createOptimisticStore, createProjection, createRenderEffect, createSignal, createStore, createUniqueId, enableHydration, lazy, sharedConfig, ssrHandleError, ssrRunInScope, useContext }; | ||
| export { $DEVCOMP, DEV, Errored, For, Hydration, Loading, Match, NoHydrateContext, NoHydration, Repeat, Reveal, Show, Switch, children, createComponent, createContext, createEffect, createErrorBoundary, createLoadingBoundary, createMemo, createOptimistic, createOptimisticStore, createProjection, createRenderEffect, createSignal, createStore, createUniqueId, enableHydration, lazy, sharedConfig, ssrHandleError, ssrRunInScope, useContext }; |
+2
-2
| { | ||
| "name": "solid-js", | ||
| "description": "A declarative JavaScript library for building user interfaces.", | ||
| "version": "2.0.0-beta.5", | ||
| "version": "2.0.0-beta.6", | ||
| "author": "Ryan Carniato", | ||
@@ -82,3 +82,3 @@ "license": "MIT", | ||
| "dependencies": { | ||
| "@solidjs/signals": "^0.13.9", | ||
| "@solidjs/signals": "^0.13.11", | ||
| "csstype": "^3.1.0", | ||
@@ -85,0 +85,0 @@ "seroval": "~1.5.0", |
@@ -1,2 +0,2 @@ | ||
| import type { Accessor, Owner, EffectOptions } from "@solidjs/signals"; | ||
| import type { Accessor, EffectOptions } from "@solidjs/signals"; | ||
| import type { JSX } from "../jsx.js"; | ||
@@ -59,8 +59,1 @@ import { FlowComponent } from "./component.js"; | ||
| export declare function devComponent<P, V>(Comp: (props: P) => V, props: P): V; | ||
| interface SourceMapValue { | ||
| value: unknown; | ||
| name?: string; | ||
| graph?: Owner; | ||
| } | ||
| export declare function registerGraph(value: SourceMapValue): void; | ||
| export {}; |
@@ -120,2 +120,24 @@ import type { Accessor } from "@solidjs/signals"; | ||
| }): JSX.Element; | ||
| /** | ||
| * Coordinates the reveal timing of sibling `<Loading>` boundaries. | ||
| * | ||
| * - **Sequential** (default): boundaries reveal in DOM order as each resolves. | ||
| * - **Together** (`together`): all boundaries wait until the group is ready, then reveal at once. | ||
| * - **Collapsed** (`collapsed`, sequential only): only the frontier boundary shows its fallback; | ||
| * later boundaries produce nothing until their turn. | ||
| * | ||
| * ```typescript | ||
| * <Reveal> | ||
| * <Loading fallback={<Skeleton />}><ProfileHeader /></Loading> | ||
| * <Loading fallback={<Skeleton />}><Posts /></Loading> | ||
| * </Reveal> | ||
| * ``` | ||
| * | ||
| * @description https://docs.solidjs.com/reference/components/reveal | ||
| */ | ||
| export declare function Reveal(props: { | ||
| together?: boolean; | ||
| collapsed?: boolean; | ||
| children: JSX.Element; | ||
| }): JSX.Element; | ||
| export {}; |
+3
-6
@@ -1,2 +0,2 @@ | ||
| export { $PROXY, $REFRESH, $TRACK, action, createOwner, createReaction, createRoot, createTrackedEffect, deep, flatten, flush, getNextChildId, getObserver, getOwner, isEqual, isRefreshing, isPending, isWrappable, mapArray, merge, omit, onCleanup, onSettled, latest, reconcile, refresh, repeat, resolve, NotReadyError, runWithOwner, enableExternalSource, enforceLoadingBoundary, snapshot, storePath, untrack } from "@solidjs/signals"; | ||
| export { $PROXY, $REFRESH, $TRACK, action, createOwner, createReaction, createRevealOrder, createRoot, createTrackedEffect, deep, flatten, flush, getNextChildId, getObserver, getOwner, isDisposed, isEqual, isRefreshing, isPending, isWrappable, mapArray, merge, omit, onCleanup, onSettled, latest, reconcile, refresh, repeat, resolve, NotReadyError, runWithOwner, enableExternalSource, enforceLoadingBoundary, snapshot, storePath, untrack } from "@solidjs/signals"; | ||
| export type { Accessor, ComputeFunction, EffectFunction, EffectOptions, ExternalSource, ExternalSourceConfig, ExternalSourceFactory, Merge, NoInfer, NotWrappable, Omit, Owner, Signal, SignalOptions, Setter, Store, SolidStore, StoreNode, StoreSetter, StorePathRange, ArrayFilterFn, CustomPartial, Part, PathSetter } from "@solidjs/signals"; | ||
@@ -13,9 +13,6 @@ export { $DEVCOMP, children, createContext, useContext } from "./client/core.js"; | ||
| export type { JSXElement, JSX }; | ||
| import { registerGraph } from "./client/core.js"; | ||
| export declare const DEV: { | ||
| readonly hooks: {}; | ||
| readonly registerGraph: typeof registerGraph; | ||
| } | undefined; | ||
| import { type Dev } from "@solidjs/signals"; | ||
| export declare const DEV: Dev | undefined; | ||
| declare global { | ||
| var Solid$$: boolean; | ||
| } |
@@ -73,2 +73,11 @@ import type { Accessor } from "./signals.js"; | ||
| }): JSX.Element; | ||
| /** | ||
| * Coordinates the reveal timing of sibling `<Loading>` boundaries during SSR. | ||
| * @description https://docs.solidjs.com/reference/components/reveal | ||
| */ | ||
| export declare function Reveal(props: { | ||
| together?: boolean; | ||
| collapsed?: boolean; | ||
| children: JSX.Element; | ||
| }): JSX.Element; | ||
| export {}; |
@@ -0,4 +1,13 @@ | ||
| import type { Context } from "./signals.js"; | ||
| import type { JSX } from "../jsx.js"; | ||
| export { sharedConfig, NoHydrateContext } from "./shared.js"; | ||
| export type { HydrationContext, SSRTemplateObject } from "./shared.js"; | ||
| export type ServerRevealGroup = { | ||
| id: string; | ||
| register(key: string, options?: { | ||
| onActivate?: () => void; | ||
| }): boolean; | ||
| onResolved(key: string): void; | ||
| }; | ||
| export declare const RevealGroupContext: Context<ServerRevealGroup | null>; | ||
| /** | ||
@@ -5,0 +14,0 @@ * Handles errors during SSR rendering. |
@@ -1,2 +0,2 @@ | ||
| export { $PROXY, $REFRESH, $TRACK, action, createEffect, createMemo, createOptimistic, createOptimisticStore, createErrorBoundary, createOwner, createProjection, createReaction, createRenderEffect, createRoot, createSignal, createStore, createTrackedEffect, deep, flatten, flush, getNextChildId, getObserver, getOwner, isEqual, isRefreshing, isPending, isWrappable, mapArray, merge, omit, onCleanup, onSettled, latest, reconcile, refresh, repeat, resolve, NotReadyError, runWithOwner, snapshot, storePath, createDeepProxy, enableExternalSource, enforceLoadingBoundary, untrack } from "./signals.js"; | ||
| export { $PROXY, $REFRESH, $TRACK, action, createEffect, createMemo, createOptimistic, createOptimisticStore, createErrorBoundary, createOwner, createProjection, createReaction, createRenderEffect, createRevealOrder, createRoot, createSignal, createStore, createTrackedEffect, deep, flatten, flush, getNextChildId, getObserver, getOwner, isDisposed, isEqual, isRefreshing, isPending, isWrappable, mapArray, merge, omit, onCleanup, onSettled, latest, reconcile, refresh, repeat, resolve, NotReadyError, runWithOwner, snapshot, storePath, createDeepProxy, enableExternalSource, enforceLoadingBoundary, untrack } from "./signals.js"; | ||
| export type { Accessor, ComputeFunction, EffectFunction, EffectOptions, ExternalSource, ExternalSourceConfig, ExternalSourceFactory, Merge, NoInfer, NotWrappable, Omit, Owner, Signal, SignalOptions, Setter, Store, SolidStore, StoreNode, StoreSetter, StorePathRange, ArrayFilterFn, CustomPartial, Part, PathSetter, PatchOp } from "./signals.js"; | ||
@@ -3,0 +3,0 @@ export { $DEVCOMP, children, createContext, useContext, ssrRunInScope } from "./core.js"; |
@@ -22,3 +22,7 @@ import type { Context } from "@solidjs/signals"; | ||
| block: (p: Promise<any>) => void; | ||
| registerFragment: (v: string) => (v?: string, err?: any) => boolean; | ||
| registerFragment: (v: string, options?: { | ||
| revealGroup?: string; | ||
| }) => (v?: string, err?: any) => boolean; | ||
| revealFragments?: (groupOrKeys: string | string[]) => void; | ||
| revealFallbacks?: (groupOrKeys: string | string[]) => void; | ||
| /** Register a client-side asset URL discovered during SSR (e.g. from lazy()). */ | ||
@@ -25,0 +29,0 @@ registerAsset?: (type: "module" | "style", url: string) => void; |
@@ -1,2 +0,2 @@ | ||
| export { createRoot, createOwner, runWithOwner, getOwner, onCleanup, getNextChildId, createContext, setContext, getContext, NotReadyError, NoOwnerError, ContextNotFoundError, isEqual, isWrappable, SUPPORTS_PROXY, enableExternalSource, enforceLoadingBoundary } from "@solidjs/signals"; | ||
| export { createRoot, createOwner, runWithOwner, getOwner, isDisposed, onCleanup, getNextChildId, createContext, setContext, getContext, NotReadyError, NoOwnerError, ContextNotFoundError, isEqual, isWrappable, SUPPORTS_PROXY, enableExternalSource, enforceLoadingBoundary } from "@solidjs/signals"; | ||
| export { flatten } from "@solidjs/signals"; | ||
@@ -56,2 +56,6 @@ export { snapshot, merge, omit, storePath, $PROXY, $REFRESH, $TRACK } from "@solidjs/signals"; | ||
| }): () => unknown; | ||
| export declare function createRevealOrder<T>(fn: () => T, _options?: { | ||
| together?: () => boolean; | ||
| collapsed?: () => boolean; | ||
| }): T; | ||
| export declare function untrack<T>(fn: () => T): T; | ||
@@ -58,0 +62,0 @@ export declare function flush(): void; |
Sorry, the diff of this file is too big to display
Network access
Supply chain riskThis module accesses the network.
Found 1 instance in 1 package
Long strings
Supply chain riskContains long string literals, which may be a sign of obfuscated or packed code.
Found 1 instance in 1 package
URL strings
Supply chain riskPackage contains fragments of external URLs or IP addresses, which the package may be accessing at runtime.
Found 1 instance in 1 package
Network access
Supply chain riskThis module accesses the network.
Found 1 instance in 1 package
Long strings
Supply chain riskContains long string literals, which may be a sign of obfuscated or packed code.
Found 1 instance in 1 package
URL strings
Supply chain riskPackage contains fragments of external URLs or IP addresses, which the package may be accessing at runtime.
Found 1 instance in 1 package
414890
3.33%10923
3.51%24
50%Updated