@askrjs/askr 0.0.52 → 0.0.54
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/README.md +5 -1
- package/dist/{runtime/scheduler.js → access-Bg4RJNC8.js} +182 -9
- package/dist/actions/index.d.ts +2 -0
- package/dist/actions/index.js +103 -0
- package/dist/{common/attr-names.js → attr-names-CjhzmHOn.js} +1 -1
- package/dist/benchmark.d.ts +6 -2
- package/dist/benchmark.js +63 -11
- package/dist/boot/index.d.ts +61 -2
- package/dist/boot/index.js +1 -203
- package/dist/boot-2ZR3MtO0.js +647 -0
- package/dist/cleanup-DScKZG2i.js +487 -0
- package/dist/component-internal-D9PLuFUc.js +614 -0
- package/dist/component-lifecycle-C7lnU9Bt.js +359 -0
- package/dist/{runtime/component-scope.js → component-scope-CC3cojX9.js} +8 -1
- package/dist/component-scope-CvPba6O6.d.ts +12 -0
- package/dist/components/index.d.ts +17 -2
- package/dist/components/index.js +39 -1
- package/dist/compose-ref-Cc_YkUpM.js +92 -0
- package/dist/{foundations/utilities/compose-ref.d.ts → compose-ref-Cizq72-x.d.ts} +1 -1
- package/dist/control/index.d.ts +1 -3
- package/dist/control/index.js +1 -3
- package/dist/control-BI4RMD2z.d.ts +437 -0
- package/dist/control-Bf4Wkdvv.d.ts +9 -0
- package/dist/{common/control.js → control-DhFRTIoE.js} +1 -1
- package/dist/control-mXROCjL3.js +165 -0
- package/dist/data/index.d.ts +2 -6
- package/dist/data/index.js +4 -5
- package/dist/data-B9dauyDn.js +559 -0
- package/dist/{data/data-runtime.js → data-runtime-SJ1BSUvk.js} +32 -31
- package/dist/deferred-DklLG4qM.js +386 -0
- package/dist/{runtime/effect.js → effect-BwnIvLah.js} +4 -4
- package/dist/fastlane-Dw8SOBr9.js +343 -0
- package/dist/for-internal-CSz8Unkq.js +1563 -0
- package/dist/foundations/icon/index.d.ts +68 -2
- package/dist/foundations/icon/index.js +85 -1
- package/dist/foundations/index.d.ts +2 -5
- package/dist/foundations/index.js +2 -5
- package/dist/foundations/interactions/index.d.ts +264 -6
- package/dist/foundations/interactions/index.js +1 -6
- package/dist/foundations/state/index.d.ts +32 -1
- package/dist/foundations/state/index.js +78 -1
- package/dist/foundations/structures/index.d.ts +2 -7
- package/dist/foundations/structures/index.js +2 -7
- package/dist/foundations/utilities/index.d.ts +2 -6
- package/dist/foundations/utilities/index.js +2 -5
- package/dist/fx/index.d.ts +190 -3
- package/dist/fx/index.js +454 -4
- package/dist/index-B1LNotpU.d.ts +239 -0
- package/dist/index-Bki2rqcr.d.ts +233 -0
- package/dist/index-BnU0NPwM.d.ts +101 -0
- package/dist/index-C8iW3xCt.d.ts +44 -0
- package/dist/index-DwxdIA-t.d.ts +48 -0
- package/dist/{runtime/runtime.d.ts → index-Zb31mCiU.d.ts} +31 -8
- package/dist/index.d.ts +8 -13
- package/dist/index.js +150 -15
- package/dist/interactions-w7gQN4ha.js +280 -0
- package/dist/{data/invalidation-listeners.js → invalidation-listeners-Des3AHYs.js} +1 -1
- package/dist/{common/props.d.ts → jsx-CP0gmYwJ.d.ts} +17 -5
- package/dist/{common/jsx.js → jsx-CUpRxrLH.js} +1 -1
- package/dist/jsx-dev-runtime.d.ts +2 -4
- package/dist/jsx-dev-runtime.js +7 -5
- package/dist/jsx-runtime-92bV2hSa.d.ts +34 -0
- package/dist/jsx-runtime-BVVgDSdq.d.ts +1 -0
- package/dist/jsx-runtime.d.ts +2 -35
- package/dist/jsx-runtime.js +11 -5
- package/dist/{runtime/lifecycle-operations.js → lifecycle-operations-CdRjdsHo.js} +4 -5
- package/dist/navigate-BVDCzOuB.d.ts +34 -0
- package/dist/navigate-D17eVQyI.js +1449 -0
- package/dist/{runtime/portal.js → portal-C47xkwXj.js} +71 -41
- package/dist/query-registry-CQIT4mXr.js +73 -0
- package/dist/{common/render-context.js → render-context-Clw3rFiO.js} +14 -6
- package/dist/renderer-DrLRAD5y.js +6266 -0
- package/dist/{runtime/resource-operation.js → resource-operation-BNY29MVH.js} +118 -15
- package/dist/resources/index.d.ts +42 -3
- package/dist/resources/index.js +3 -4
- package/dist/{common/route-activity.js → route-activity-CNJfpwx-.js} +1 -1
- package/dist/route-matching-vJpvLVbX.js +515 -0
- package/dist/router/index.d.ts +166 -14
- package/dist/router/index.js +150 -12
- package/dist/{common/router.d.ts → router-DCfwLBr-.d.ts} +72 -28
- package/dist/{common/router-internal.js → router-internal-BC0w1_xk.js} +1 -1
- package/dist/{runtime/scheduler.d.ts → scheduler-CmLO4Dfm.d.ts} +1 -3
- package/dist/{runtime/selector.js → selector-DafVYzV4.js} +34 -11
- package/dist/{runtime/snapshot-source.js → snapshot-source-BB42xgwb.js} +1 -1
- package/dist/ssg/index.d.ts +252 -4
- package/dist/ssg/index.js +857 -1
- package/dist/ssr/index.d.ts +225 -8
- package/dist/ssr/index.js +3 -6
- package/dist/{common/ssr.js → ssr-CbQO5xd3.js} +1 -1
- package/dist/ssr-DEARZxJ5.js +1413 -0
- package/dist/{runtime/state.js → state-DPl8lffD.js} +3 -5
- package/dist/structures-DUB3HchX.js +221 -0
- package/dist/testing/index.d.ts +3 -2
- package/dist/testing/index.js +2 -5
- package/dist/{jsx/types.d.ts → types-DnQVG4ZY.d.ts} +2 -5
- package/dist/{foundations/utilities/use-id.js → utilities-C_CGX4Dz.js} +1 -1
- package/dist/{ssr/verify-hydration.js → verify-hydration-BWwu-mWu.js} +2 -2
- package/dist/{common/vnode.js → vnode-CGMJYPMB.js} +2 -2
- package/package.json +12 -7
- package/dist/bench/components/benchmark-row.d.ts +0 -20
- package/dist/bench/components/benchmark-row.js +0 -40
- package/dist/bench/components/benchmark-table.js +0 -23
- package/dist/bin/askr-ssg.d.ts +0 -27
- package/dist/bin/askr-ssg.js +0 -186
- package/dist/boot/hydration.js +0 -139
- package/dist/boot/root-lifecycle.d.ts +0 -18
- package/dist/boot/root-lifecycle.js +0 -209
- package/dist/boot/route-startup.js +0 -54
- package/dist/boot/types.d.ts +0 -61
- package/dist/common/component.d.ts +0 -18
- package/dist/common/control.d.ts +0 -12
- package/dist/common/dom-range.d.ts +0 -13
- package/dist/common/env.js +0 -41
- package/dist/common/error-boundary.d.ts +0 -15
- package/dist/common/invariant.js +0 -15
- package/dist/common/jsx.d.ts +0 -22
- package/dist/common/logger.js +0 -34
- package/dist/common/promise.js +0 -6
- package/dist/common/ssr-errors.d.ts +0 -10
- package/dist/common/ssr-errors.js +0 -14
- package/dist/common/ssr.d.ts +0 -41
- package/dist/common/vnode.d.ts +0 -21
- package/dist/components/error-boundary.d.ts +0 -14
- package/dist/components/error-boundary.js +0 -41
- package/dist/components/link.d.ts +0 -68
- package/dist/components/link.js +0 -74
- package/dist/control/case.d.ts +0 -18
- package/dist/control/case.js +0 -68
- package/dist/control/for.d.ts +0 -23
- package/dist/control/for.js +0 -61
- package/dist/control/shared.d.ts +0 -8
- package/dist/control/shared.js +0 -18
- package/dist/control/show.d.ts +0 -14
- package/dist/control/show.js +0 -32
- package/dist/data/data-runtime.d.ts +0 -27
- package/dist/data/invalidation.d.ts +0 -8
- package/dist/data/invalidation.js +0 -25
- package/dist/data/mutation-cell.d.ts +0 -27
- package/dist/data/mutation-cell.js +0 -133
- package/dist/data/query-cell.d.ts +0 -47
- package/dist/data/query-cell.js +0 -324
- package/dist/data/query-key.js +0 -40
- package/dist/data/shared.js +0 -20
- package/dist/data/testing.js +0 -2
- package/dist/data/types.d.ts +0 -160
- package/dist/foundations/icon/icon.d.ts +0 -52
- package/dist/foundations/icon/icon.js +0 -86
- package/dist/foundations/icon/icon.types.d.ts +0 -21
- package/dist/foundations/interactions/dismissable.d.ts +0 -71
- package/dist/foundations/interactions/dismissable.js +0 -24
- package/dist/foundations/interactions/focusable.d.ts +0 -21
- package/dist/foundations/interactions/focusable.js +0 -16
- package/dist/foundations/interactions/hoverable.d.ts +0 -25
- package/dist/foundations/interactions/hoverable.js +0 -13
- package/dist/foundations/interactions/interaction-policy.d.ts +0 -49
- package/dist/foundations/interactions/interaction-policy.js +0 -120
- package/dist/foundations/interactions/pressable.d.ts +0 -60
- package/dist/foundations/interactions/pressable.js +0 -49
- package/dist/foundations/interactions/roving-focus.d.ts +0 -51
- package/dist/foundations/interactions/roving-focus.js +0 -69
- package/dist/foundations/state/controllable.d.ts +0 -32
- package/dist/foundations/state/controllable.js +0 -80
- package/dist/foundations/structures/collection.d.ts +0 -51
- package/dist/foundations/structures/collection.js +0 -49
- package/dist/foundations/structures/layer.d.ts +0 -80
- package/dist/foundations/structures/layer.js +0 -79
- package/dist/foundations/structures/layout.d.ts +0 -32
- package/dist/foundations/structures/layout.js +0 -11
- package/dist/foundations/structures/portal.d.ts +0 -2
- package/dist/foundations/structures/portal.js +0 -3
- package/dist/foundations/structures/presence.d.ts +0 -36
- package/dist/foundations/structures/presence.js +0 -37
- package/dist/foundations/structures/slot.d.ts +0 -34
- package/dist/foundations/structures/slot.js +0 -39
- package/dist/foundations/utilities/aria.d.ts +0 -15
- package/dist/foundations/utilities/aria.js +0 -15
- package/dist/foundations/utilities/compose-handlers.d.ts +0 -36
- package/dist/foundations/utilities/compose-handlers.js +0 -18
- package/dist/foundations/utilities/compose-ref.js +0 -16
- package/dist/foundations/utilities/event-types.d.ts +0 -19
- package/dist/foundations/utilities/merge-props.d.ts +0 -4
- package/dist/foundations/utilities/merge-props.js +0 -47
- package/dist/foundations/utilities/use-id.d.ts +0 -31
- package/dist/fx/fx.d.ts +0 -32
- package/dist/fx/fx.js +0 -211
- package/dist/fx/noop.js +0 -7
- package/dist/fx/timing.d.ts +0 -158
- package/dist/fx/timing.js +0 -241
- package/dist/jsx/index.d.ts +0 -2
- package/dist/jsx/index.js +0 -4
- package/dist/jsx/types.js +0 -2
- package/dist/jsx/utils.d.ts +0 -4
- package/dist/jsx/utils.js +0 -17
- package/dist/jsx-runtime2.d.ts +0 -3
- package/dist/jsx-runtime2.js +0 -4
- package/dist/renderer/attributes.js +0 -254
- package/dist/renderer/boundaries.js +0 -142
- package/dist/renderer/boundary-materialization.js +0 -72
- package/dist/renderer/boundary-range-adoption.js +0 -76
- package/dist/renderer/boundary-range-sync.js +0 -101
- package/dist/renderer/boundary-state.js +0 -50
- package/dist/renderer/child-shape.js +0 -83
- package/dist/renderer/children-fastpath.js +0 -149
- package/dist/renderer/children.js +0 -158
- package/dist/renderer/cleanup.js +0 -267
- package/dist/renderer/component-host-cleanup.js +0 -143
- package/dist/renderer/component-host-instances.js +0 -116
- package/dist/renderer/component-host-replacement.js +0 -105
- package/dist/renderer/component-host-results.js +0 -138
- package/dist/renderer/component-host.js +0 -172
- package/dist/renderer/dom-host.js +0 -11
- package/dist/renderer/dom-internal.js +0 -243
- package/dist/renderer/dom-range.js +0 -161
- package/dist/renderer/dom.js +0 -11
- package/dist/renderer/element-children.js +0 -359
- package/dist/renderer/env.js +0 -2
- package/dist/renderer/error-boundary-dom.js +0 -86
- package/dist/renderer/evaluate-dom-range.js +0 -84
- package/dist/renderer/evaluate-reconcile.js +0 -257
- package/dist/renderer/evaluate.js +0 -95
- package/dist/renderer/fastpath.js +0 -142
- package/dist/renderer/for-commit-dom-map.js +0 -71
- package/dist/renderer/for-commit-removal.js +0 -27
- package/dist/renderer/for-commit-reorder.js +0 -87
- package/dist/renderer/for-commit.js +0 -442
- package/dist/renderer/hydration-boundaries.js +0 -60
- package/dist/renderer/hydration-listener-transaction.js +0 -49
- package/dist/renderer/index.js +0 -39
- package/dist/renderer/intrinsic-blueprint-analysis.js +0 -202
- package/dist/renderer/intrinsic-blueprint-bindings.js +0 -152
- package/dist/renderer/intrinsic-blueprint-materialization.js +0 -100
- package/dist/renderer/intrinsic-blueprint.js +0 -30
- package/dist/renderer/intrinsic-hydration-adoption.js +0 -66
- package/dist/renderer/keyed-children.js +0 -26
- package/dist/renderer/keyed.js +0 -167
- package/dist/renderer/namespaces.js +0 -21
- package/dist/renderer/prop-bindings.js +0 -315
- package/dist/renderer/reactive-child-dom.js +0 -139
- package/dist/renderer/reactive-child-sources.js +0 -182
- package/dist/renderer/reactive-children.js +0 -303
- package/dist/renderer/reconcile-commit.js +0 -36
- package/dist/renderer/reconcile-fastpaths.js +0 -100
- package/dist/renderer/reconcile-resolution.js +0 -163
- package/dist/renderer/reconcile.js +0 -37
- package/dist/renderer/retained-element-rollback.js +0 -288
- package/dist/renderer/stable-patch.js +0 -80
- package/dist/renderer/static-reuse.js +0 -94
- package/dist/renderer/types.js +0 -2
- package/dist/renderer/utils.js +0 -265
- package/dist/router/access.js +0 -34
- package/dist/router/activity.d.ts +0 -9
- package/dist/router/activity.js +0 -85
- package/dist/router/authoring.d.ts +0 -21
- package/dist/router/authoring.js +0 -196
- package/dist/router/internal-types.d.ts +0 -30
- package/dist/router/lazy.d.ts +0 -18
- package/dist/router/lazy.js +0 -50
- package/dist/router/manifest.d.ts +0 -9
- package/dist/router/manifest.js +0 -47
- package/dist/router/match.js +0 -120
- package/dist/router/navigate.d.ts +0 -10
- package/dist/router/navigate.js +0 -73
- package/dist/router/navigation-registry.d.ts +0 -31
- package/dist/router/navigation-registry.js +0 -103
- package/dist/router/navigation-scroll.d.ts +0 -13
- package/dist/router/navigation-scroll.js +0 -91
- package/dist/router/navigation-targets.d.ts +0 -30
- package/dist/router/navigation-targets.js +0 -634
- package/dist/router/policy.d.ts +0 -27
- package/dist/router/policy.js +0 -130
- package/dist/router/rendering.d.ts +0 -9
- package/dist/router/rendering.js +0 -47
- package/dist/router/resolution.d.ts +0 -3
- package/dist/router/resolution.js +0 -84
- package/dist/router/route-context.js +0 -77
- package/dist/router/route-matching.d.ts +0 -19
- package/dist/router/route-matching.js +0 -173
- package/dist/router/route-query.d.ts +0 -16
- package/dist/router/route-query.js +0 -45
- package/dist/router/route.d.ts +0 -8
- package/dist/router/route.js +0 -10
- package/dist/router/store.d.ts +0 -49
- package/dist/router/store.js +0 -169
- package/dist/router/testing.js +0 -4
- package/dist/runtime/access.d.ts +0 -19
- package/dist/runtime/access.js +0 -43
- package/dist/runtime/child-scope.d.ts +0 -41
- package/dist/runtime/child-scope.js +0 -134
- package/dist/runtime/component-cleanup.d.ts +0 -15
- package/dist/runtime/component-cleanup.js +0 -68
- package/dist/runtime/component-commit.js +0 -167
- package/dist/runtime/component-facade.d.ts +0 -5
- package/dist/runtime/component-facade.js +0 -6
- package/dist/runtime/component-internal.d.ts +0 -105
- package/dist/runtime/component-internal.js +0 -237
- package/dist/runtime/component-lifecycle.d.ts +0 -10
- package/dist/runtime/component-lifecycle.js +0 -33
- package/dist/runtime/component-scope.d.ts +0 -54
- package/dist/runtime/component.d.ts +0 -5
- package/dist/runtime/component.js +0 -6
- package/dist/runtime/context.d.ts +0 -72
- package/dist/runtime/context.js +0 -236
- package/dist/runtime/control.d.ts +0 -62
- package/dist/runtime/control.js +0 -239
- package/dist/runtime/derive.d.ts +0 -16
- package/dist/runtime/derive.js +0 -140
- package/dist/runtime/dev-namespace.d.ts +0 -30
- package/dist/runtime/dev-namespace.js +0 -64
- package/dist/runtime/effect.d.ts +0 -35
- package/dist/runtime/error-boundary.d.ts +0 -4
- package/dist/runtime/error-boundary.js +0 -29
- package/dist/runtime/events.d.ts +0 -58
- package/dist/runtime/events.js +0 -201
- package/dist/runtime/execution-model.d.ts +0 -6
- package/dist/runtime/execution-model.js +0 -13
- package/dist/runtime/fastlane.d.ts +0 -33
- package/dist/runtime/fastlane.js +0 -173
- package/dist/runtime/for-bench.d.ts +0 -40
- package/dist/runtime/for-bench.js +0 -13
- package/dist/runtime/for-internal.d.ts +0 -106
- package/dist/runtime/for-internal.js +0 -285
- package/dist/runtime/for-reconcile.d.ts +0 -7
- package/dist/runtime/for-reconcile.js +0 -442
- package/dist/runtime/for-scopes.d.ts +0 -26
- package/dist/runtime/for-scopes.js +0 -280
- package/dist/runtime/for-signals.d.ts +0 -39
- package/dist/runtime/for-signals.js +0 -213
- package/dist/runtime/for-types.d.ts +0 -8
- package/dist/runtime/for.d.ts +0 -4
- package/dist/runtime/for.js +0 -5
- package/dist/runtime/index.d.ts +0 -24
- package/dist/runtime/index.js +0 -33
- package/dist/runtime/lifecycle-batch.d.ts +0 -59
- package/dist/runtime/lifecycle-batch.js +0 -178
- package/dist/runtime/lifecycle-operation-settlement.d.ts +0 -5
- package/dist/runtime/lifecycle-operation-settlement.js +0 -51
- package/dist/runtime/lifecycle-operations.d.ts +0 -30
- package/dist/runtime/operations.d.ts +0 -3
- package/dist/runtime/operations.js +0 -3
- package/dist/runtime/perf-metrics.d.ts +0 -27
- package/dist/runtime/perf-metrics.js +0 -6
- package/dist/runtime/portal.d.ts +0 -21
- package/dist/runtime/readable.d.ts +0 -34
- package/dist/runtime/readable.js +0 -183
- package/dist/runtime/resource-cell.js +0 -112
- package/dist/runtime/resource-operation.d.ts +0 -12
- package/dist/runtime/runtime.js +0 -57
- package/dist/runtime/selector-store.js +0 -22
- package/dist/runtime/selector.d.ts +0 -10
- package/dist/runtime/snapshot-source.d.ts +0 -9
- package/dist/runtime/state.d.ts +0 -54
- package/dist/ssg/batch-render.js +0 -101
- package/dist/ssg/create-static-gen.d.ts +0 -66
- package/dist/ssg/create-static-gen.js +0 -250
- package/dist/ssg/generate-metadata.js +0 -92
- package/dist/ssg/generation-plan.js +0 -68
- package/dist/ssg/incremental-manifest.js +0 -54
- package/dist/ssg/resolve-ssg-data.js +0 -103
- package/dist/ssg/route-utils.js +0 -22
- package/dist/ssg/static-routes.js +0 -100
- package/dist/ssg/types.d.ts +0 -188
- package/dist/ssg/write-static-files.js +0 -77
- package/dist/ssr/attrs.js +0 -92
- package/dist/ssr/boundaries.js +0 -124
- package/dist/ssr/component-runtime.js +0 -85
- package/dist/ssr/context.d.ts +0 -49
- package/dist/ssr/context.js +0 -89
- package/dist/ssr/errors.d.ts +0 -9
- package/dist/ssr/errors.js +0 -12
- package/dist/ssr/escape.js +0 -191
- package/dist/ssr/hydration-data.js +0 -8
- package/dist/ssr/hydration-verify.d.ts +0 -11
- package/dist/ssr/hydration-verify.js +0 -171
- package/dist/ssr/index-internal.d.ts +0 -14
- package/dist/ssr/index-internal.js +0 -17
- package/dist/ssr/render-keys.js +0 -14
- package/dist/ssr/render-resolved.d.ts +0 -19
- package/dist/ssr/render-resolved.js +0 -33
- package/dist/ssr/render-sync.d.ts +0 -20
- package/dist/ssr/render-sync.js +0 -283
- package/dist/ssr/route-policy-resolution.js +0 -76
- package/dist/ssr/route-render.d.ts +0 -76
- package/dist/ssr/route-render.js +0 -118
- package/dist/ssr/sink.d.ts +0 -25
- package/dist/ssr/sink.js +0 -84
- package/dist/ssr/types.d.ts +0 -22
|
@@ -1,72 +0,0 @@
|
|
|
1
|
-
import { JSXElement } from "../common/jsx.js";
|
|
2
|
-
import { RenderableChild } from "../common/vnode.js";
|
|
3
|
-
|
|
4
|
-
//#region src/runtime/context.d.ts
|
|
5
|
-
type ContextKey = symbol;
|
|
6
|
-
type Renderable = RenderableChild;
|
|
7
|
-
type ContextScopeChildren = Renderable | (() => Renderable);
|
|
8
|
-
interface Context<T> {
|
|
9
|
-
readonly key: ContextKey;
|
|
10
|
-
readonly defaultValue: T;
|
|
11
|
-
readonly Scope: (props: {
|
|
12
|
-
value: T;
|
|
13
|
-
children?: ContextScopeChildren;
|
|
14
|
-
}) => JSXElement;
|
|
15
|
-
}
|
|
16
|
-
interface ContextFrame {
|
|
17
|
-
parent: ContextFrame | null;
|
|
18
|
-
values: Map<ContextKey, unknown> | null;
|
|
19
|
-
}
|
|
20
|
-
/** @internal Reuse immutable empty wrappers for the same provider snapshot. */
|
|
21
|
-
declare function getExecutionContextFrame(parent: ContextFrame | null): ContextFrame;
|
|
22
|
-
declare const CONTEXT_FRAME_SYMBOL: unique symbol;
|
|
23
|
-
declare function getVNodeContextFrame(node: unknown): ContextFrame | undefined;
|
|
24
|
-
declare function markVNodeWithContextFrame(node: unknown, frame: ContextFrame, overwrite?: boolean): void;
|
|
25
|
-
declare function markVNodeTreeWithContextFrame(node: unknown, frame: ContextFrame | null, overwrite?: boolean): unknown;
|
|
26
|
-
/**
|
|
27
|
-
* Execute a function within a specific context frame.
|
|
28
|
-
*
|
|
29
|
-
* CORE PRIMITIVE for context restoration:
|
|
30
|
-
* - Saves the current context
|
|
31
|
-
* - Sets the provided frame as current
|
|
32
|
-
* - Executes the function
|
|
33
|
-
* - Restores the previous context in finally
|
|
34
|
-
*
|
|
35
|
-
* This ensures no context frame remains globally active across await.
|
|
36
|
-
*/
|
|
37
|
-
declare function withContext<T>(frame: ContextFrame | null, fn: () => T): T;
|
|
38
|
-
/** @internal Invoke a two-argument function without allocating a wrapper. */
|
|
39
|
-
declare function callWithContext<TArgs, TContext, TResult>(frame: ContextFrame | null, fn: (args: TArgs, context: TContext) => TResult, args: TArgs, context: TContext): TResult;
|
|
40
|
-
/**
|
|
41
|
-
* Execute an async resource step within its frozen context snapshot.
|
|
42
|
-
*
|
|
43
|
-
* CRITICAL: This wrapper is applied only to synchronous execution steps of
|
|
44
|
-
* an async resource (the initial call). We intentionally DO NOT restore
|
|
45
|
-
* the resource frame for post-await continuations — continuations must not
|
|
46
|
-
* observe or rely on a live resource frame. This keeps semantics simple and
|
|
47
|
-
* deterministic: async resources see only their creation-time snapshot.
|
|
48
|
-
*/
|
|
49
|
-
declare function withAsyncResourceContext<T>(frame: ContextFrame | null, fn: () => T): T;
|
|
50
|
-
declare function defineContext<T>(defaultValue: T): Context<T>;
|
|
51
|
-
declare function readContext<T>(context: Context<T>): T;
|
|
52
|
-
/**
|
|
53
|
-
* Push a new context frame (for render entry)
|
|
54
|
-
* Called by component runtime when render starts
|
|
55
|
-
*/
|
|
56
|
-
declare function pushContextFrame(): ContextFrame;
|
|
57
|
-
/**
|
|
58
|
-
* Pop context frame (for render exit)
|
|
59
|
-
* Called by component runtime when render ends
|
|
60
|
-
*/
|
|
61
|
-
declare function popContextFrame(): void;
|
|
62
|
-
/**
|
|
63
|
-
* Get the current context frame for inspection (used by tests/diagnostics only)
|
|
64
|
-
*/
|
|
65
|
-
declare function getCurrentContextFrame(): ContextFrame | null;
|
|
66
|
-
/**
|
|
67
|
-
* Get the top of the context snapshot stack (used by runtime when deciding
|
|
68
|
-
* how to link snapshots for async continuations). Returns null if stack empty.
|
|
69
|
-
*/
|
|
70
|
-
declare function getTopContextSnapshot(): ContextFrame | null;
|
|
71
|
-
//#endregion
|
|
72
|
-
export { Context, ContextFrame, ContextKey, defineContext, readContext };
|
package/dist/runtime/context.js
DELETED
|
@@ -1,236 +0,0 @@
|
|
|
1
|
-
import { ELEMENT_TYPE, STATIC_CHILDREN } from "../common/jsx.js";
|
|
2
|
-
import { getCurrentComponentInstance } from "./component-scope.js";
|
|
3
|
-
import "./component.js";
|
|
4
|
-
//#region src/runtime/context.ts
|
|
5
|
-
const ROOT_EXECUTION_FRAME = {
|
|
6
|
-
parent: null,
|
|
7
|
-
values: null
|
|
8
|
-
};
|
|
9
|
-
const executionFramesByParent = /* @__PURE__ */ new WeakMap();
|
|
10
|
-
/** @internal Reuse immutable empty wrappers for the same provider snapshot. */
|
|
11
|
-
function getExecutionContextFrame(parent) {
|
|
12
|
-
if (!parent) return ROOT_EXECUTION_FRAME;
|
|
13
|
-
let frame = executionFramesByParent.get(parent);
|
|
14
|
-
if (!frame) {
|
|
15
|
-
frame = {
|
|
16
|
-
parent,
|
|
17
|
-
values: null
|
|
18
|
-
};
|
|
19
|
-
executionFramesByParent.set(parent, frame);
|
|
20
|
-
}
|
|
21
|
-
return frame;
|
|
22
|
-
}
|
|
23
|
-
const CONTEXT_FRAME_SYMBOL = Symbol("__tempoContextFrame__");
|
|
24
|
-
const vnodeContextFrames = /* @__PURE__ */ new WeakMap();
|
|
25
|
-
function getVNodeContextFrame(node) {
|
|
26
|
-
if (typeof node !== "object" || node === null) return;
|
|
27
|
-
const objectNode = node;
|
|
28
|
-
return vnodeContextFrames.get(node) ?? objectNode[CONTEXT_FRAME_SYMBOL];
|
|
29
|
-
}
|
|
30
|
-
function markVNodeWithContextFrame(node, frame, overwrite = false) {
|
|
31
|
-
if (typeof node !== "object" || node === null) return;
|
|
32
|
-
if (!overwrite && getVNodeContextFrame(node)) return;
|
|
33
|
-
const objectNode = node;
|
|
34
|
-
if (Object.prototype.hasOwnProperty.call(node, CONTEXT_FRAME_SYMBOL)) try {
|
|
35
|
-
objectNode[CONTEXT_FRAME_SYMBOL] = frame;
|
|
36
|
-
return;
|
|
37
|
-
} catch {}
|
|
38
|
-
if (Object.isExtensible(node)) try {
|
|
39
|
-
Object.defineProperty(node, CONTEXT_FRAME_SYMBOL, {
|
|
40
|
-
value: frame,
|
|
41
|
-
writable: true,
|
|
42
|
-
enumerable: true,
|
|
43
|
-
configurable: true
|
|
44
|
-
});
|
|
45
|
-
return;
|
|
46
|
-
} catch {}
|
|
47
|
-
vnodeContextFrames.set(node, frame);
|
|
48
|
-
}
|
|
49
|
-
function isVNodeLike(value) {
|
|
50
|
-
if (typeof value !== "object" || value === null || Array.isArray(value)) return false;
|
|
51
|
-
const objectValue = value;
|
|
52
|
-
if (objectValue.$$typeof === ELEMENT_TYPE) return true;
|
|
53
|
-
return "type" in objectValue && ("props" in objectValue || "children" in objectValue);
|
|
54
|
-
}
|
|
55
|
-
function markContextPropValue(value, frame, overwrite) {
|
|
56
|
-
if (Array.isArray(value)) {
|
|
57
|
-
for (const item of value) markContextPropValue(item, frame, overwrite);
|
|
58
|
-
return;
|
|
59
|
-
}
|
|
60
|
-
if (isVNodeLike(value)) markVNodeTreeWithContextFrame(value, frame, overwrite);
|
|
61
|
-
}
|
|
62
|
-
function markVNodeTreeWithContextFrame(node, frame, overwrite = false) {
|
|
63
|
-
if (!frame) return node;
|
|
64
|
-
if (Array.isArray(node)) {
|
|
65
|
-
for (const child of node) markVNodeTreeWithContextFrame(child, frame, overwrite);
|
|
66
|
-
return node;
|
|
67
|
-
}
|
|
68
|
-
if (typeof node !== "object" || node === null) return node;
|
|
69
|
-
markVNodeWithContextFrame(node, frame, overwrite);
|
|
70
|
-
const objectNode = node;
|
|
71
|
-
const props = typeof objectNode.props === "object" && objectNode.props !== null ? objectNode.props : null;
|
|
72
|
-
const children = props?.children ?? objectNode.children;
|
|
73
|
-
if (Array.isArray(children)) for (const child of children) markVNodeTreeWithContextFrame(child, frame, overwrite);
|
|
74
|
-
else if (children) markVNodeTreeWithContextFrame(children, frame, overwrite);
|
|
75
|
-
if (props) {
|
|
76
|
-
for (const key in props) if (key !== "children") markContextPropValue(props[key], frame, overwrite);
|
|
77
|
-
}
|
|
78
|
-
return node;
|
|
79
|
-
}
|
|
80
|
-
let currentContextFrame = null;
|
|
81
|
-
let currentAsyncResourceFrame = null;
|
|
82
|
-
/**
|
|
83
|
-
* Execute a function within a specific context frame.
|
|
84
|
-
*
|
|
85
|
-
* CORE PRIMITIVE for context restoration:
|
|
86
|
-
* - Saves the current context
|
|
87
|
-
* - Sets the provided frame as current
|
|
88
|
-
* - Executes the function
|
|
89
|
-
* - Restores the previous context in finally
|
|
90
|
-
*
|
|
91
|
-
* This ensures no context frame remains globally active across await.
|
|
92
|
-
*/
|
|
93
|
-
function withContext(frame, fn) {
|
|
94
|
-
const oldFrame = currentContextFrame;
|
|
95
|
-
currentContextFrame = frame;
|
|
96
|
-
try {
|
|
97
|
-
return fn();
|
|
98
|
-
} finally {
|
|
99
|
-
currentContextFrame = oldFrame;
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
/** @internal Invoke a two-argument function without allocating a wrapper. */
|
|
103
|
-
function callWithContext(frame, fn, args, context) {
|
|
104
|
-
const oldFrame = currentContextFrame;
|
|
105
|
-
currentContextFrame = frame;
|
|
106
|
-
try {
|
|
107
|
-
return fn(args, context);
|
|
108
|
-
} finally {
|
|
109
|
-
currentContextFrame = oldFrame;
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
/**
|
|
113
|
-
* Execute an async resource step within its frozen context snapshot.
|
|
114
|
-
*
|
|
115
|
-
* CRITICAL: This wrapper is applied only to synchronous execution steps of
|
|
116
|
-
* an async resource (the initial call). We intentionally DO NOT restore
|
|
117
|
-
* the resource frame for post-await continuations — continuations must not
|
|
118
|
-
* observe or rely on a live resource frame. This keeps semantics simple and
|
|
119
|
-
* deterministic: async resources see only their creation-time snapshot.
|
|
120
|
-
*/
|
|
121
|
-
function withAsyncResourceContext(frame, fn) {
|
|
122
|
-
const oldFrame = currentAsyncResourceFrame;
|
|
123
|
-
currentAsyncResourceFrame = frame;
|
|
124
|
-
try {
|
|
125
|
-
return fn();
|
|
126
|
-
} finally {
|
|
127
|
-
currentAsyncResourceFrame = oldFrame;
|
|
128
|
-
}
|
|
129
|
-
}
|
|
130
|
-
function defineContext(defaultValue) {
|
|
131
|
-
const key = Symbol("AskrContext");
|
|
132
|
-
return {
|
|
133
|
-
key,
|
|
134
|
-
defaultValue,
|
|
135
|
-
Scope: (props) => {
|
|
136
|
-
const value = props.value;
|
|
137
|
-
return {
|
|
138
|
-
$$typeof: ELEMENT_TYPE,
|
|
139
|
-
type: ContextScopeComponent,
|
|
140
|
-
props: {
|
|
141
|
-
key,
|
|
142
|
-
value,
|
|
143
|
-
children: props.children
|
|
144
|
-
},
|
|
145
|
-
key: null
|
|
146
|
-
};
|
|
147
|
-
}
|
|
148
|
-
};
|
|
149
|
-
}
|
|
150
|
-
function preserveStaticChildrenMarker(source, target) {
|
|
151
|
-
if (source[STATIC_CHILDREN] === true) Object.defineProperty(target, STATIC_CHILDREN, {
|
|
152
|
-
value: true,
|
|
153
|
-
enumerable: false,
|
|
154
|
-
configurable: true
|
|
155
|
-
});
|
|
156
|
-
return target;
|
|
157
|
-
}
|
|
158
|
-
function isPresentRenderable(value) {
|
|
159
|
-
return value !== null && value !== void 0 && value !== false;
|
|
160
|
-
}
|
|
161
|
-
function readContext(context) {
|
|
162
|
-
const frame = currentContextFrame || currentAsyncResourceFrame;
|
|
163
|
-
if (!frame) throw new Error("readContext() can only be called during component render or async resource execution. Ensure you are calling this from inside your component or resource function.");
|
|
164
|
-
let current = frame;
|
|
165
|
-
while (current) {
|
|
166
|
-
const values = current.values;
|
|
167
|
-
if (values && values.has(context.key)) return values.get(context.key);
|
|
168
|
-
current = current.parent;
|
|
169
|
-
}
|
|
170
|
-
return context.defaultValue;
|
|
171
|
-
}
|
|
172
|
-
/**
|
|
173
|
-
* Internal component that manages context frame
|
|
174
|
-
* Used by Context.Scope to provide shadowed value to children
|
|
175
|
-
*/
|
|
176
|
-
function ContextScopeComponent(props) {
|
|
177
|
-
const key = props["key"];
|
|
178
|
-
const value = props["value"];
|
|
179
|
-
const children = props["children"];
|
|
180
|
-
const instance = getCurrentComponentInstance();
|
|
181
|
-
const newFrame = {
|
|
182
|
-
parent: (() => {
|
|
183
|
-
if (currentContextFrame) return currentContextFrame;
|
|
184
|
-
if (instance && instance.ownerFrame) return instance.ownerFrame;
|
|
185
|
-
return null;
|
|
186
|
-
})(),
|
|
187
|
-
values: /* @__PURE__ */ new Map([[key, value]])
|
|
188
|
-
};
|
|
189
|
-
function createFunctionChildInvoker(fn, frame, owner) {
|
|
190
|
-
return {
|
|
191
|
-
type: ContextFunctionChildInvoker,
|
|
192
|
-
props: {
|
|
193
|
-
fn,
|
|
194
|
-
__frame: frame,
|
|
195
|
-
__owner: owner
|
|
196
|
-
}
|
|
197
|
-
};
|
|
198
|
-
}
|
|
199
|
-
if (Array.isArray(children)) return preserveStaticChildrenMarker(children, children.map((child) => {
|
|
200
|
-
if (typeof child === "function") return createFunctionChildInvoker(child, newFrame, getCurrentComponentInstance());
|
|
201
|
-
return markWithFrame(child, newFrame);
|
|
202
|
-
}));
|
|
203
|
-
else if (typeof children === "function") return createFunctionChildInvoker(children, newFrame, getCurrentComponentInstance());
|
|
204
|
-
else if (isPresentRenderable(children)) return markWithFrame(children, newFrame);
|
|
205
|
-
return null;
|
|
206
|
-
}
|
|
207
|
-
/**
|
|
208
|
-
* Internal: Mark a vnode with a context frame
|
|
209
|
-
* The renderer will restore this frame before executing component functions
|
|
210
|
-
*/
|
|
211
|
-
function markWithFrame(node, frame) {
|
|
212
|
-
return markVNodeTreeWithContextFrame(node, frame, true);
|
|
213
|
-
}
|
|
214
|
-
/**
|
|
215
|
-
* Internal helper component: executes a function-child lazily inside the
|
|
216
|
-
* provided frame and marks the returned subtree with that frame so later
|
|
217
|
-
* component executions will restore the correct context frame.
|
|
218
|
-
*
|
|
219
|
-
* SNAPSHOT SEMANTIC: The frame passed here is the snapshot captured at render
|
|
220
|
-
* time. Any resources created during this execution will observe this frozen
|
|
221
|
-
* snapshot, ensuring deterministic behavior.
|
|
222
|
-
*/
|
|
223
|
-
function ContextFunctionChildInvoker(props) {
|
|
224
|
-
const { fn, __frame } = props;
|
|
225
|
-
const res = withContext(__frame, () => fn());
|
|
226
|
-
if (isPresentRenderable(res)) return markWithFrame(res, __frame);
|
|
227
|
-
return null;
|
|
228
|
-
}
|
|
229
|
-
/**
|
|
230
|
-
* Get the current context frame for inspection (used by tests/diagnostics only)
|
|
231
|
-
*/
|
|
232
|
-
function getCurrentContextFrame() {
|
|
233
|
-
return currentContextFrame;
|
|
234
|
-
}
|
|
235
|
-
//#endregion
|
|
236
|
-
export { CONTEXT_FRAME_SYMBOL, callWithContext, defineContext, getCurrentContextFrame, getExecutionContextFrame, getVNodeContextFrame, markVNodeTreeWithContextFrame, markVNodeWithContextFrame, readContext, withAsyncResourceContext, withContext };
|
|
@@ -1,62 +0,0 @@
|
|
|
1
|
-
import { ComponentInstance } from "./component-internal.js";
|
|
2
|
-
import { DOMRange } from "../common/dom-range.js";
|
|
3
|
-
import { ChildScope, ChildScopeTransactionSnapshot } from "./child-scope.js";
|
|
4
|
-
import { ForState } from "./for-internal.js";
|
|
5
|
-
import { VNode } from "../common/vnode.js";
|
|
6
|
-
|
|
7
|
-
//#region src/runtime/control.d.ts
|
|
8
|
-
interface MatchBranch {
|
|
9
|
-
key: string | number;
|
|
10
|
-
render: () => VNode;
|
|
11
|
-
when: unknown;
|
|
12
|
-
}
|
|
13
|
-
interface BranchControlStateBase {
|
|
14
|
-
activeKey: string | number | null;
|
|
15
|
-
activeScope: ChildScope | null;
|
|
16
|
-
activeVNodes: VNode[];
|
|
17
|
-
lastRemovedNodes: Node[];
|
|
18
|
-
lastRemovedRanges: DOMRange[];
|
|
19
|
-
parentInstance: ComponentInstance | null;
|
|
20
|
-
_enqueueBoundaryCommit?: (() => void) | null;
|
|
21
|
-
_hasPendingBoundaryCommit?: boolean;
|
|
22
|
-
_transaction?: ControlTransaction | null;
|
|
23
|
-
}
|
|
24
|
-
interface ShowState extends BranchControlStateBase {
|
|
25
|
-
kind: 'show';
|
|
26
|
-
fallbackScope: ChildScope | null;
|
|
27
|
-
renderFallback: (() => VNode) | null;
|
|
28
|
-
renderTruthy: ((value: unknown) => VNode) | (() => VNode);
|
|
29
|
-
selectedValue: unknown;
|
|
30
|
-
truthyScope: ChildScope | null;
|
|
31
|
-
}
|
|
32
|
-
interface CaseState extends BranchControlStateBase {
|
|
33
|
-
kind: 'case';
|
|
34
|
-
fallback: (() => VNode) | null;
|
|
35
|
-
matches: MatchBranch[];
|
|
36
|
-
}
|
|
37
|
-
type ControlBoundaryState = ForState<unknown> | ShowState | CaseState;
|
|
38
|
-
type BranchStateSnapshot = {
|
|
39
|
-
activeKey: string | number | null;
|
|
40
|
-
activeScope: ChildScope | null;
|
|
41
|
-
activeVNodes: VNode[];
|
|
42
|
-
lastRemovedNodes: Node[];
|
|
43
|
-
lastRemovedRanges: DOMRange[];
|
|
44
|
-
scopeSnapshots: Map<ChildScope, ChildScopeTransactionSnapshot>;
|
|
45
|
-
fallbackScope?: ChildScope | null;
|
|
46
|
-
truthyScope?: ChildScope | null;
|
|
47
|
-
};
|
|
48
|
-
interface ControlTransaction {
|
|
49
|
-
state: ShowState | CaseState;
|
|
50
|
-
snapshot: BranchStateSnapshot;
|
|
51
|
-
removedScopes: ChildScope[];
|
|
52
|
-
shouldClearDomUpdateState: boolean;
|
|
53
|
-
registered: boolean;
|
|
54
|
-
}
|
|
55
|
-
declare function createShowState(value: unknown, renderTruthy: ShowState['renderTruthy'], renderFallback: ShowState['renderFallback']): ShowState;
|
|
56
|
-
declare function evaluateShowState(state: ShowState): VNode[];
|
|
57
|
-
declare function clearShowDomUpdateState(state: ShowState): void;
|
|
58
|
-
declare function createCaseState(matches: MatchBranch[], fallback: (() => VNode) | null): CaseState;
|
|
59
|
-
declare function evaluateCaseState(state: CaseState): VNode[];
|
|
60
|
-
declare function clearCaseDomUpdateState(state: CaseState): void;
|
|
61
|
-
//#endregion
|
|
62
|
-
export { CaseState, ControlBoundaryState, ControlTransaction, MatchBranch, ShowState };
|
package/dist/runtime/control.js
DELETED
|
@@ -1,239 +0,0 @@
|
|
|
1
|
-
import { getCurrentInstance } from "./component-scope.js";
|
|
2
|
-
import { registerLifecycleTransaction } from "./lifecycle-batch.js";
|
|
3
|
-
import "./component-lifecycle.js";
|
|
4
|
-
import "./component.js";
|
|
5
|
-
import { captureChildScopeTransactionSnapshot, createChildScope, disposeChildScope, restoreChildScopeTransactionSnapshot } from "./child-scope.js";
|
|
6
|
-
//#region src/runtime/control.ts
|
|
7
|
-
const SHOW_TRUTHY_KEY = "__show-truthy__";
|
|
8
|
-
const SHOW_FALLBACK_KEY = "__show-fallback__";
|
|
9
|
-
const CASE_FALLBACK_KEY = "__case-fallback__";
|
|
10
|
-
function getBranchScopes(state) {
|
|
11
|
-
const scopes = [];
|
|
12
|
-
if (state.activeScope) scopes.push(state.activeScope);
|
|
13
|
-
if (state instanceof Object && "fallbackScope" in state) {
|
|
14
|
-
if (state.fallbackScope) scopes.push(state.fallbackScope);
|
|
15
|
-
}
|
|
16
|
-
if (state instanceof Object && "truthyScope" in state) {
|
|
17
|
-
if (state.truthyScope) scopes.push(state.truthyScope);
|
|
18
|
-
}
|
|
19
|
-
return scopes;
|
|
20
|
-
}
|
|
21
|
-
function beginControlTransaction(state) {
|
|
22
|
-
if (state._transaction) return state._transaction;
|
|
23
|
-
const scopeSnapshots = /* @__PURE__ */ new Map();
|
|
24
|
-
for (const scope of getBranchScopes(state)) scopeSnapshots.set(scope, captureChildScopeTransactionSnapshot(scope));
|
|
25
|
-
const transaction = {
|
|
26
|
-
state,
|
|
27
|
-
snapshot: {
|
|
28
|
-
activeKey: state.activeKey,
|
|
29
|
-
activeScope: state.activeScope,
|
|
30
|
-
activeVNodes: state.activeVNodes.slice(),
|
|
31
|
-
lastRemovedNodes: state.lastRemovedNodes.slice(),
|
|
32
|
-
lastRemovedRanges: state.lastRemovedRanges.slice(),
|
|
33
|
-
scopeSnapshots,
|
|
34
|
-
fallbackScope: "fallbackScope" in state ? state.fallbackScope : void 0,
|
|
35
|
-
truthyScope: "truthyScope" in state ? state.truthyScope : void 0
|
|
36
|
-
},
|
|
37
|
-
removedScopes: [],
|
|
38
|
-
shouldClearDomUpdateState: false,
|
|
39
|
-
registered: false
|
|
40
|
-
};
|
|
41
|
-
state._transaction = transaction;
|
|
42
|
-
transaction.registered = registerLifecycleTransaction(transaction, () => commitControlTransaction(state, transaction), () => rollbackControlTransaction(state, transaction));
|
|
43
|
-
return transaction;
|
|
44
|
-
}
|
|
45
|
-
function stageBranchRemoval(state, scope) {
|
|
46
|
-
if (!scope) return;
|
|
47
|
-
const transaction = state._transaction;
|
|
48
|
-
if (transaction && !transaction.removedScopes.includes(scope)) transaction.removedScopes.push(scope);
|
|
49
|
-
else if (!transaction) disposeChildScope(scope);
|
|
50
|
-
const removedDom = scope.dom;
|
|
51
|
-
if (removedDom) state.lastRemovedNodes.push(removedDom);
|
|
52
|
-
if (scope.range) state.lastRemovedRanges.push(scope.range);
|
|
53
|
-
}
|
|
54
|
-
function commitControlTransaction(state, transaction) {
|
|
55
|
-
if (state._transaction !== transaction) return;
|
|
56
|
-
const errors = [];
|
|
57
|
-
for (const scope of transaction.removedScopes) try {
|
|
58
|
-
disposeChildScope(scope);
|
|
59
|
-
} catch (error) {
|
|
60
|
-
errors.push(error);
|
|
61
|
-
}
|
|
62
|
-
if (transaction.shouldClearDomUpdateState) {
|
|
63
|
-
if ("truthyScope" in state && state.truthyScope) state.truthyScope.needsDomUpdate = false;
|
|
64
|
-
if ("fallbackScope" in state && state.fallbackScope) state.fallbackScope.needsDomUpdate = false;
|
|
65
|
-
if (state.activeScope) state.activeScope.needsDomUpdate = false;
|
|
66
|
-
state.lastRemovedNodes = [];
|
|
67
|
-
state.lastRemovedRanges = [];
|
|
68
|
-
}
|
|
69
|
-
state._transaction = null;
|
|
70
|
-
if (errors.length > 0) throw new AggregateError(errors, "Control branch cleanup failed");
|
|
71
|
-
}
|
|
72
|
-
function rollbackControlTransaction(state, transaction) {
|
|
73
|
-
if (state._transaction !== transaction) return;
|
|
74
|
-
const committedScopes = new Set(transaction.snapshot.scopeSnapshots.keys());
|
|
75
|
-
const currentScopes = getBranchScopes(state);
|
|
76
|
-
const errors = [];
|
|
77
|
-
for (const scope of currentScopes) {
|
|
78
|
-
if (committedScopes.has(scope)) continue;
|
|
79
|
-
try {
|
|
80
|
-
disposeChildScope(scope);
|
|
81
|
-
} catch (error) {
|
|
82
|
-
errors.push(error);
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
state.activeKey = transaction.snapshot.activeKey;
|
|
86
|
-
state.activeScope = transaction.snapshot.activeScope;
|
|
87
|
-
state.activeVNodes = transaction.snapshot.activeVNodes;
|
|
88
|
-
state.lastRemovedNodes = transaction.snapshot.lastRemovedNodes;
|
|
89
|
-
state.lastRemovedRanges = transaction.snapshot.lastRemovedRanges;
|
|
90
|
-
if ("truthyScope" in state) state.truthyScope = transaction.snapshot.truthyScope ?? null;
|
|
91
|
-
if ("fallbackScope" in state) state.fallbackScope = transaction.snapshot.fallbackScope ?? null;
|
|
92
|
-
for (const [scope, snapshot] of transaction.snapshot.scopeSnapshots) restoreChildScopeTransactionSnapshot(scope, snapshot);
|
|
93
|
-
state._transaction = null;
|
|
94
|
-
if (errors.length > 0) throw new AggregateError(errors, "Control branch rollback cleanup failed");
|
|
95
|
-
}
|
|
96
|
-
function finishImmediateControlTransaction(state, transaction) {
|
|
97
|
-
if (state._transaction === transaction && !transaction.registered) commitControlTransaction(state, transaction);
|
|
98
|
-
}
|
|
99
|
-
function createBranchScope(state, key) {
|
|
100
|
-
return createChildScope(state.parentInstance, key, () => {
|
|
101
|
-
if (state._enqueueBoundaryCommit) {
|
|
102
|
-
state._enqueueBoundaryCommit();
|
|
103
|
-
return;
|
|
104
|
-
}
|
|
105
|
-
state.parentInstance?._enqueueRun?.();
|
|
106
|
-
});
|
|
107
|
-
}
|
|
108
|
-
function createShowState(value, renderTruthy, renderFallback) {
|
|
109
|
-
return {
|
|
110
|
-
kind: "show",
|
|
111
|
-
activeKey: null,
|
|
112
|
-
activeScope: null,
|
|
113
|
-
activeVNodes: [],
|
|
114
|
-
fallbackScope: null,
|
|
115
|
-
lastRemovedNodes: [],
|
|
116
|
-
lastRemovedRanges: [],
|
|
117
|
-
parentInstance: getCurrentInstance(),
|
|
118
|
-
_enqueueBoundaryCommit: null,
|
|
119
|
-
_hasPendingBoundaryCommit: false,
|
|
120
|
-
_transaction: null,
|
|
121
|
-
renderFallback,
|
|
122
|
-
renderTruthy,
|
|
123
|
-
selectedValue: value,
|
|
124
|
-
truthyScope: null
|
|
125
|
-
};
|
|
126
|
-
}
|
|
127
|
-
function evaluateShowState(state) {
|
|
128
|
-
const transaction = beginControlTransaction(state);
|
|
129
|
-
state.lastRemovedNodes = [];
|
|
130
|
-
state.lastRemovedRanges = [];
|
|
131
|
-
try {
|
|
132
|
-
if (state.selectedValue) {
|
|
133
|
-
if (state.fallbackScope) {
|
|
134
|
-
stageBranchRemoval(state, state.fallbackScope);
|
|
135
|
-
state.fallbackScope = null;
|
|
136
|
-
}
|
|
137
|
-
const truthyScope = state.truthyScope ?? createBranchScope(state, SHOW_TRUTHY_KEY);
|
|
138
|
-
state.truthyScope = truthyScope;
|
|
139
|
-
state.activeScope = truthyScope;
|
|
140
|
-
state.activeKey = SHOW_TRUTHY_KEY;
|
|
141
|
-
const vnode = truthyScope.render(() => state.renderTruthy(state.selectedValue));
|
|
142
|
-
state.activeVNodes = vnode == null || vnode === false ? [] : [vnode];
|
|
143
|
-
} else {
|
|
144
|
-
if (state.truthyScope) {
|
|
145
|
-
stageBranchRemoval(state, state.truthyScope);
|
|
146
|
-
state.truthyScope = null;
|
|
147
|
-
}
|
|
148
|
-
if (!state.renderFallback) {
|
|
149
|
-
if (state.fallbackScope) {
|
|
150
|
-
stageBranchRemoval(state, state.fallbackScope);
|
|
151
|
-
state.fallbackScope = null;
|
|
152
|
-
}
|
|
153
|
-
state.activeKey = null;
|
|
154
|
-
state.activeScope = null;
|
|
155
|
-
state.activeVNodes = [];
|
|
156
|
-
} else {
|
|
157
|
-
const fallbackScope = state.fallbackScope ?? createBranchScope(state, SHOW_FALLBACK_KEY);
|
|
158
|
-
state.fallbackScope = fallbackScope;
|
|
159
|
-
state.activeScope = fallbackScope;
|
|
160
|
-
state.activeKey = SHOW_FALLBACK_KEY;
|
|
161
|
-
const vnode = fallbackScope.render(state.renderFallback);
|
|
162
|
-
state.activeVNodes = vnode == null || vnode === false ? [] : [vnode];
|
|
163
|
-
}
|
|
164
|
-
}
|
|
165
|
-
finishImmediateControlTransaction(state, transaction);
|
|
166
|
-
return state.activeVNodes;
|
|
167
|
-
} catch (error) {
|
|
168
|
-
rollbackControlTransaction(state, transaction);
|
|
169
|
-
throw error;
|
|
170
|
-
}
|
|
171
|
-
}
|
|
172
|
-
function clearShowDomUpdateState(state) {
|
|
173
|
-
if (state.truthyScope) state.truthyScope.needsDomUpdate = false;
|
|
174
|
-
if (state.fallbackScope) state.fallbackScope.needsDomUpdate = false;
|
|
175
|
-
if (state._transaction) {
|
|
176
|
-
state._transaction.shouldClearDomUpdateState = true;
|
|
177
|
-
return;
|
|
178
|
-
}
|
|
179
|
-
state.lastRemovedNodes = [];
|
|
180
|
-
state.lastRemovedRanges = [];
|
|
181
|
-
}
|
|
182
|
-
function createCaseState(matches, fallback) {
|
|
183
|
-
return {
|
|
184
|
-
kind: "case",
|
|
185
|
-
activeKey: null,
|
|
186
|
-
activeScope: null,
|
|
187
|
-
activeVNodes: [],
|
|
188
|
-
fallback,
|
|
189
|
-
lastRemovedNodes: [],
|
|
190
|
-
lastRemovedRanges: [],
|
|
191
|
-
matches,
|
|
192
|
-
parentInstance: getCurrentInstance(),
|
|
193
|
-
_enqueueBoundaryCommit: null,
|
|
194
|
-
_hasPendingBoundaryCommit: false,
|
|
195
|
-
_transaction: null
|
|
196
|
-
};
|
|
197
|
-
}
|
|
198
|
-
function evaluateCaseState(state) {
|
|
199
|
-
const transaction = beginControlTransaction(state);
|
|
200
|
-
state.lastRemovedNodes = [];
|
|
201
|
-
state.lastRemovedRanges = [];
|
|
202
|
-
try {
|
|
203
|
-
const selectedMatch = state.matches.find((candidate) => Boolean(candidate.when)) ?? null;
|
|
204
|
-
const nextKey = selectedMatch?.key ?? (state.fallback ? CASE_FALLBACK_KEY : null);
|
|
205
|
-
if (nextKey === null) {
|
|
206
|
-
if (state.activeScope) stageBranchRemoval(state, state.activeScope);
|
|
207
|
-
state.activeKey = null;
|
|
208
|
-
state.activeScope = null;
|
|
209
|
-
state.activeVNodes = [];
|
|
210
|
-
} else {
|
|
211
|
-
if (state.activeScope && state.activeKey !== nextKey) {
|
|
212
|
-
stageBranchRemoval(state, state.activeScope);
|
|
213
|
-
state.activeScope = null;
|
|
214
|
-
}
|
|
215
|
-
const activeScope = state.activeScope ?? createBranchScope(state, nextKey);
|
|
216
|
-
state.activeKey = nextKey;
|
|
217
|
-
state.activeScope = activeScope;
|
|
218
|
-
const renderBranch = selectedMatch?.render ?? state.fallback;
|
|
219
|
-
const vnode = renderBranch ? activeScope.render(renderBranch) : null;
|
|
220
|
-
state.activeVNodes = vnode == null || vnode === false ? [] : [vnode];
|
|
221
|
-
}
|
|
222
|
-
finishImmediateControlTransaction(state, transaction);
|
|
223
|
-
return state.activeVNodes;
|
|
224
|
-
} catch (error) {
|
|
225
|
-
rollbackControlTransaction(state, transaction);
|
|
226
|
-
throw error;
|
|
227
|
-
}
|
|
228
|
-
}
|
|
229
|
-
function clearCaseDomUpdateState(state) {
|
|
230
|
-
if (state.activeScope) state.activeScope.needsDomUpdate = false;
|
|
231
|
-
if (state._transaction) {
|
|
232
|
-
state._transaction.shouldClearDomUpdateState = true;
|
|
233
|
-
return;
|
|
234
|
-
}
|
|
235
|
-
state.lastRemovedNodes = [];
|
|
236
|
-
state.lastRemovedRanges = [];
|
|
237
|
-
}
|
|
238
|
-
//#endregion
|
|
239
|
-
export { clearCaseDomUpdateState, clearShowDomUpdateState, createCaseState, createShowState, evaluateCaseState, evaluateShowState };
|
package/dist/runtime/derive.d.ts
DELETED
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import { ReadableSource } from "./readable.js";
|
|
2
|
-
import { SnapshotSourceBrand } from "./snapshot-source.js";
|
|
3
|
-
|
|
4
|
-
//#region src/runtime/derive.d.ts
|
|
5
|
-
interface Derived<T> extends ReadableSource<T> {
|
|
6
|
-
(): T;
|
|
7
|
-
}
|
|
8
|
-
type SnapshotSource<T> = {
|
|
9
|
-
value: T | null;
|
|
10
|
-
pending?: boolean;
|
|
11
|
-
error?: Error | null;
|
|
12
|
-
} & SnapshotSourceBrand;
|
|
13
|
-
declare function derive<TOut>(fn: () => TOut): Derived<TOut>;
|
|
14
|
-
declare function derive<TIn, TOut>(source: SnapshotSource<TIn> | TIn | (() => TIn), map: (value: TIn) => TOut): Derived<TOut | null>;
|
|
15
|
-
//#endregion
|
|
16
|
-
export { Derived, derive };
|