@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
|
@@ -0,0 +1,614 @@
|
|
|
1
|
+
import { r as markEagerControlPrimitive } from "./control-DhFRTIoE.js";
|
|
2
|
+
import { b as isDevelopmentEnvironment, n as enqueueRuntimeTask, o as getRuntimeRenderer, v as logger, x as isProductionEnvironment } from "./access-Bg4RJNC8.js";
|
|
3
|
+
import { r as tryRuntimeFastLaneSync, s as finalizeReadableSubscriptions } from "./fastlane-Dw8SOBr9.js";
|
|
4
|
+
import { r as STATIC_CHILDREN, t as ELEMENT_TYPE } from "./jsx-CUpRxrLH.js";
|
|
5
|
+
import { C as restoreRenderScopedComponent, S as restoreInlineRenderTracking, _ as getSignalForInstance, b as restoreDomCommitScope, c as enterDomCommitScope, f as getCurrentComponentInstance, l as enterRenderScopedComponent, m as getCurrentPortalScope, n as captureInlineComponentScope, o as clearRenderTracking, p as getCurrentInstance, r as captureInlineRenderTracking, s as enterComponentExecutionScope, t as beginRenderTracking, u as exitComponentExecutionScope, v as resetRenderState, x as restoreInlineComponentScope } from "./component-scope-CC3cojX9.js";
|
|
6
|
+
import { a as captureInlineRenderSnapshot$1, c as finalizeInlineReadSubscriptions, i as beginLifecycleCommitBatch, l as flushLifecycleCommitBatch, m as isPromiseLike, n as commitRenderedComponent$1, o as discardLifecycleCommitBatch, p as discardCommitOperations, r as registerCommitOperationForInstance, t as commitLifecycleForInstance } from "./component-lifecycle-C7lnU9Bt.js";
|
|
7
|
+
//#region src/runtime/context.ts
|
|
8
|
+
const ROOT_EXECUTION_FRAME = {
|
|
9
|
+
parent: null,
|
|
10
|
+
values: null
|
|
11
|
+
};
|
|
12
|
+
const executionFramesByParent = /* @__PURE__ */ new WeakMap();
|
|
13
|
+
/** @internal Reuse immutable empty wrappers for the same provider snapshot. */
|
|
14
|
+
function getExecutionContextFrame(parent) {
|
|
15
|
+
if (!parent) return ROOT_EXECUTION_FRAME;
|
|
16
|
+
let frame = executionFramesByParent.get(parent);
|
|
17
|
+
if (!frame) {
|
|
18
|
+
frame = {
|
|
19
|
+
parent,
|
|
20
|
+
values: null
|
|
21
|
+
};
|
|
22
|
+
executionFramesByParent.set(parent, frame);
|
|
23
|
+
}
|
|
24
|
+
return frame;
|
|
25
|
+
}
|
|
26
|
+
const CONTEXT_FRAME_SYMBOL = Symbol("__tempoContextFrame__");
|
|
27
|
+
const vnodeContextFrames = /* @__PURE__ */ new WeakMap();
|
|
28
|
+
function getVNodeContextFrame(node) {
|
|
29
|
+
if (typeof node !== "object" || node === null) return;
|
|
30
|
+
const objectNode = node;
|
|
31
|
+
return vnodeContextFrames.get(node) ?? objectNode[CONTEXT_FRAME_SYMBOL];
|
|
32
|
+
}
|
|
33
|
+
function markVNodeWithContextFrame(node, frame, overwrite = false) {
|
|
34
|
+
if (typeof node !== "object" || node === null) return;
|
|
35
|
+
if (!overwrite && getVNodeContextFrame(node)) return;
|
|
36
|
+
const objectNode = node;
|
|
37
|
+
if (Object.prototype.hasOwnProperty.call(node, CONTEXT_FRAME_SYMBOL)) try {
|
|
38
|
+
objectNode[CONTEXT_FRAME_SYMBOL] = frame;
|
|
39
|
+
return;
|
|
40
|
+
} catch {}
|
|
41
|
+
if (Object.isExtensible(node)) try {
|
|
42
|
+
Object.defineProperty(node, CONTEXT_FRAME_SYMBOL, {
|
|
43
|
+
value: frame,
|
|
44
|
+
writable: true,
|
|
45
|
+
enumerable: true,
|
|
46
|
+
configurable: true
|
|
47
|
+
});
|
|
48
|
+
return;
|
|
49
|
+
} catch {}
|
|
50
|
+
vnodeContextFrames.set(node, frame);
|
|
51
|
+
}
|
|
52
|
+
function isVNodeLike(value) {
|
|
53
|
+
if (typeof value !== "object" || value === null || Array.isArray(value)) return false;
|
|
54
|
+
const objectValue = value;
|
|
55
|
+
if (objectValue.$$typeof === ELEMENT_TYPE) return true;
|
|
56
|
+
return "type" in objectValue && ("props" in objectValue || "children" in objectValue);
|
|
57
|
+
}
|
|
58
|
+
function markContextPropValue(value, frame, overwrite) {
|
|
59
|
+
if (Array.isArray(value)) {
|
|
60
|
+
for (const item of value) markContextPropValue(item, frame, overwrite);
|
|
61
|
+
return;
|
|
62
|
+
}
|
|
63
|
+
if (isVNodeLike(value)) markVNodeTreeWithContextFrame(value, frame, overwrite);
|
|
64
|
+
}
|
|
65
|
+
function markVNodeTreeWithContextFrame(node, frame, overwrite = false) {
|
|
66
|
+
if (!frame) return node;
|
|
67
|
+
if (Array.isArray(node)) {
|
|
68
|
+
for (const child of node) markVNodeTreeWithContextFrame(child, frame, overwrite);
|
|
69
|
+
return node;
|
|
70
|
+
}
|
|
71
|
+
if (typeof node !== "object" || node === null) return node;
|
|
72
|
+
markVNodeWithContextFrame(node, frame, overwrite);
|
|
73
|
+
const objectNode = node;
|
|
74
|
+
const props = typeof objectNode.props === "object" && objectNode.props !== null ? objectNode.props : null;
|
|
75
|
+
const children = props?.children ?? objectNode.children;
|
|
76
|
+
if (Array.isArray(children)) for (const child of children) markVNodeTreeWithContextFrame(child, frame, overwrite);
|
|
77
|
+
else if (children) markVNodeTreeWithContextFrame(children, frame, overwrite);
|
|
78
|
+
if (props) {
|
|
79
|
+
for (const key in props) if (key !== "children") markContextPropValue(props[key], frame, overwrite);
|
|
80
|
+
}
|
|
81
|
+
return node;
|
|
82
|
+
}
|
|
83
|
+
let currentContextFrame = null;
|
|
84
|
+
let currentAsyncResourceFrame = null;
|
|
85
|
+
/**
|
|
86
|
+
* Execute a function within a specific context frame.
|
|
87
|
+
*
|
|
88
|
+
* CORE PRIMITIVE for context restoration:
|
|
89
|
+
* - Saves the current context
|
|
90
|
+
* - Sets the provided frame as current
|
|
91
|
+
* - Executes the function
|
|
92
|
+
* - Restores the previous context in finally
|
|
93
|
+
*
|
|
94
|
+
* This ensures no context frame remains globally active across await.
|
|
95
|
+
*/
|
|
96
|
+
function withContext(frame, fn) {
|
|
97
|
+
const oldFrame = currentContextFrame;
|
|
98
|
+
currentContextFrame = frame;
|
|
99
|
+
try {
|
|
100
|
+
return fn();
|
|
101
|
+
} finally {
|
|
102
|
+
currentContextFrame = oldFrame;
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
/** @internal Invoke a two-argument function without allocating a wrapper. */
|
|
106
|
+
function callWithContext(frame, fn, args, context) {
|
|
107
|
+
const oldFrame = currentContextFrame;
|
|
108
|
+
currentContextFrame = frame;
|
|
109
|
+
try {
|
|
110
|
+
return fn(args, context);
|
|
111
|
+
} finally {
|
|
112
|
+
currentContextFrame = oldFrame;
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Execute an async resource step within its frozen context snapshot.
|
|
117
|
+
*
|
|
118
|
+
* CRITICAL: This wrapper is applied only to synchronous execution steps of
|
|
119
|
+
* an async resource (the initial call). We intentionally DO NOT restore
|
|
120
|
+
* the resource frame for post-await continuations — continuations must not
|
|
121
|
+
* observe or rely on a live resource frame. This keeps semantics simple and
|
|
122
|
+
* deterministic: async resources see only their creation-time snapshot.
|
|
123
|
+
*/
|
|
124
|
+
function withAsyncResourceContext(frame, fn) {
|
|
125
|
+
const oldFrame = currentAsyncResourceFrame;
|
|
126
|
+
currentAsyncResourceFrame = frame;
|
|
127
|
+
try {
|
|
128
|
+
return fn();
|
|
129
|
+
} finally {
|
|
130
|
+
currentAsyncResourceFrame = oldFrame;
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
function defineScope(defaultValue) {
|
|
134
|
+
const key = Symbol("AskrContext");
|
|
135
|
+
const scope = markEagerControlPrimitive((props) => ({
|
|
136
|
+
$$typeof: ELEMENT_TYPE,
|
|
137
|
+
type: ContextScopeComponent,
|
|
138
|
+
props: {
|
|
139
|
+
key,
|
|
140
|
+
value: props.value,
|
|
141
|
+
children: props.children
|
|
142
|
+
},
|
|
143
|
+
key: null
|
|
144
|
+
}));
|
|
145
|
+
return Object.assign(scope, {
|
|
146
|
+
key,
|
|
147
|
+
defaultValue
|
|
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 readScope(context) {
|
|
162
|
+
const frame = currentContextFrame || currentAsyncResourceFrame;
|
|
163
|
+
if (!frame) throw new Error("readScope() 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 a scope component to provide a shadowed value to its 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
|
+
//#region src/runtime/component-commit.ts
|
|
237
|
+
function runScheduledComponent(instance, host) {
|
|
238
|
+
const ownershipGeneration = instance._ownershipGeneration;
|
|
239
|
+
const evaluationGeneration = instance.evaluationGeneration;
|
|
240
|
+
instance.notifyUpdate = instance._enqueueRun;
|
|
241
|
+
beginRenderTracking(instance);
|
|
242
|
+
let result;
|
|
243
|
+
try {
|
|
244
|
+
result = host.execute(instance);
|
|
245
|
+
} catch (err) {
|
|
246
|
+
discardCommitOperations(instance);
|
|
247
|
+
throw err;
|
|
248
|
+
}
|
|
249
|
+
if (isPromiseLike(result)) throw new Error("Async components are not supported. Components must be synchronous.");
|
|
250
|
+
try {
|
|
251
|
+
if (tryRuntimeFastLaneSync(instance, result)) {
|
|
252
|
+
host.warnUnusedStateReads(instance);
|
|
253
|
+
return;
|
|
254
|
+
}
|
|
255
|
+
} catch (err) {
|
|
256
|
+
if (isDevelopmentEnvironment()) throw err;
|
|
257
|
+
}
|
|
258
|
+
enqueueRuntimeTask(() => {
|
|
259
|
+
if (instance._ownershipGeneration !== ownershipGeneration || instance.evaluationGeneration !== evaluationGeneration) return;
|
|
260
|
+
if (!instance.target && instance._placeholder) {
|
|
261
|
+
commitPlaceholderReplacement(instance, result, host);
|
|
262
|
+
return;
|
|
263
|
+
}
|
|
264
|
+
if (instance.target) commitToTarget(instance, result, host);
|
|
265
|
+
});
|
|
266
|
+
}
|
|
267
|
+
function commitPlaceholderReplacement(instance, result, host) {
|
|
268
|
+
if (result === null || result === void 0) {
|
|
269
|
+
host.finalizeReadSubscriptions(instance);
|
|
270
|
+
host.warnUnusedStateReads(instance);
|
|
271
|
+
host.commitRenderedComponent(instance);
|
|
272
|
+
return;
|
|
273
|
+
}
|
|
274
|
+
const placeholder = instance._placeholder;
|
|
275
|
+
const parent = placeholder.parentNode;
|
|
276
|
+
if (!parent) {
|
|
277
|
+
logger.warn("[Askr] placeholder no longer in DOM, cannot render component");
|
|
278
|
+
return;
|
|
279
|
+
}
|
|
280
|
+
const renderer = getRuntimeRenderer();
|
|
281
|
+
const hostElement = document.createElement("div");
|
|
282
|
+
const executionFrame = getExecutionContextFrame(instance.ownerFrame);
|
|
283
|
+
const oldInstance = enterDomCommitScope(instance);
|
|
284
|
+
const lifecycleBatch = beginLifecycleCommitBatch();
|
|
285
|
+
try {
|
|
286
|
+
try {
|
|
287
|
+
withContext(executionFrame, () => {
|
|
288
|
+
renderer.evaluate(result, hostElement);
|
|
289
|
+
});
|
|
290
|
+
const onlyChild = hostElement.childNodes.length === 1 ? hostElement.firstChild : null;
|
|
291
|
+
const replacement = onlyChild instanceof Element ? onlyChild : hostElement;
|
|
292
|
+
if (replacement === hostElement) hostElement.__ASKR_WRAPPER_HOST = true;
|
|
293
|
+
parent.replaceChild(replacement, placeholder);
|
|
294
|
+
instance.target = replacement;
|
|
295
|
+
const instanceHost = replacement;
|
|
296
|
+
const instances = instanceHost.__ASKR_INSTANCES ?? [];
|
|
297
|
+
if (!instances.includes(instance)) instances.push(instance);
|
|
298
|
+
instanceHost.__ASKR_INSTANCES = instances;
|
|
299
|
+
instanceHost.__ASKR_INSTANCE = instances[0] ?? instance;
|
|
300
|
+
} catch (err) {
|
|
301
|
+
discardLifecycleCommitBatch(lifecycleBatch);
|
|
302
|
+
throw err;
|
|
303
|
+
}
|
|
304
|
+
instance._placeholder = void 0;
|
|
305
|
+
host.finalizeReadSubscriptions(instance);
|
|
306
|
+
host.warnUnusedStateReads(instance);
|
|
307
|
+
host.commitRenderedComponent(instance);
|
|
308
|
+
flushLifecycleCommitBatch(lifecycleBatch);
|
|
309
|
+
} finally {
|
|
310
|
+
restoreDomCommitScope(oldInstance);
|
|
311
|
+
}
|
|
312
|
+
}
|
|
313
|
+
function commitToTarget(instance, result, host) {
|
|
314
|
+
const renderer = getRuntimeRenderer();
|
|
315
|
+
const target = instance.target;
|
|
316
|
+
let oldChildren = [];
|
|
317
|
+
let restoredOldChildren = false;
|
|
318
|
+
try {
|
|
319
|
+
const wasFirstMount = !instance.mounted;
|
|
320
|
+
const oldInstance = enterDomCommitScope(instance);
|
|
321
|
+
const executionFrame = getExecutionContextFrame(instance.ownerFrame);
|
|
322
|
+
oldChildren = Array.from(target.childNodes);
|
|
323
|
+
const lifecycleBatch = beginLifecycleCommitBatch();
|
|
324
|
+
try {
|
|
325
|
+
try {
|
|
326
|
+
withContext(executionFrame, () => {
|
|
327
|
+
renderer.evaluate(result, target, void 0, instance);
|
|
328
|
+
});
|
|
329
|
+
} catch (err) {
|
|
330
|
+
discardLifecycleCommitBatch(lifecycleBatch);
|
|
331
|
+
throw err;
|
|
332
|
+
}
|
|
333
|
+
} catch (err) {
|
|
334
|
+
cleanupFailedCommitChildren(renderer, target, oldChildren);
|
|
335
|
+
try {
|
|
336
|
+
(/* @__PURE__ */ new Error()).stack;
|
|
337
|
+
} catch (devErr) {}
|
|
338
|
+
target.replaceChildren(...oldChildren);
|
|
339
|
+
restoredOldChildren = true;
|
|
340
|
+
throw err;
|
|
341
|
+
} finally {
|
|
342
|
+
restoreDomCommitScope(oldInstance);
|
|
343
|
+
}
|
|
344
|
+
host.finalizeReadSubscriptions(instance);
|
|
345
|
+
host.warnUnusedStateReads(instance);
|
|
346
|
+
instance.mounted = true;
|
|
347
|
+
commitLifecycleForInstance(instance, wasFirstMount);
|
|
348
|
+
flushLifecycleCommitBatch(lifecycleBatch);
|
|
349
|
+
} catch (renderError) {
|
|
350
|
+
discardCommitOperations(instance);
|
|
351
|
+
cleanupRollbackChildren(renderer, target, oldChildren, restoredOldChildren);
|
|
352
|
+
const rollbackErrors = [];
|
|
353
|
+
try {
|
|
354
|
+
(/* @__PURE__ */ new Error()).stack;
|
|
355
|
+
target.replaceChildren(...oldChildren);
|
|
356
|
+
} catch (rollbackError) {
|
|
357
|
+
rollbackErrors.push(rollbackError);
|
|
358
|
+
}
|
|
359
|
+
if (rollbackErrors.length > 0) logger.error("[Askr] component rollback failed after render error:", new AggregateError(rollbackErrors, "Component rollback failed"));
|
|
360
|
+
throw renderError;
|
|
361
|
+
}
|
|
362
|
+
}
|
|
363
|
+
function cleanupFailedCommitChildren(renderer, target, oldChildren) {
|
|
364
|
+
try {
|
|
365
|
+
const newChildren = Array.from(target.childNodes);
|
|
366
|
+
const preservedChildren = new Set(oldChildren);
|
|
367
|
+
for (const node of newChildren) {
|
|
368
|
+
if (preservedChildren.has(node)) continue;
|
|
369
|
+
try {
|
|
370
|
+
renderer.cleanupInstancesUnder(node);
|
|
371
|
+
} catch (err) {
|
|
372
|
+
logger.warn("[Askr] error cleaning up failed commit children:", err);
|
|
373
|
+
}
|
|
374
|
+
}
|
|
375
|
+
} catch (err) {}
|
|
376
|
+
}
|
|
377
|
+
function cleanupRollbackChildren(renderer, target, oldChildren, restoredOldChildren) {
|
|
378
|
+
try {
|
|
379
|
+
const currentChildren = Array.from(target.childNodes);
|
|
380
|
+
const preservedChildren = restoredOldChildren ? new Set(oldChildren) : null;
|
|
381
|
+
for (const node of currentChildren) {
|
|
382
|
+
if (preservedChildren?.has(node)) continue;
|
|
383
|
+
try {
|
|
384
|
+
renderer.cleanupInstancesUnder(node);
|
|
385
|
+
} catch (err) {
|
|
386
|
+
logger.warn("[Askr] error cleaning up partial children during rollback:", err);
|
|
387
|
+
}
|
|
388
|
+
}
|
|
389
|
+
} catch (err) {}
|
|
390
|
+
}
|
|
391
|
+
//#endregion
|
|
392
|
+
//#region src/runtime/component-internal.ts
|
|
393
|
+
const PRODUCTION_BUILD_ENABLED = isProductionEnvironment();
|
|
394
|
+
function ensurePendingRunTask(instance) {
|
|
395
|
+
const existing = instance._pendingRunTask;
|
|
396
|
+
if (existing) return existing;
|
|
397
|
+
const task = () => {
|
|
398
|
+
instance.hasPendingUpdate = false;
|
|
399
|
+
if (instance.notifyUpdate === null) return;
|
|
400
|
+
runScheduledComponent(instance, {
|
|
401
|
+
execute: executeComponentSync,
|
|
402
|
+
finalizeReadSubscriptions,
|
|
403
|
+
warnUnusedStateReads,
|
|
404
|
+
commitRenderedComponent
|
|
405
|
+
});
|
|
406
|
+
};
|
|
407
|
+
instance._pendingRunTask = task;
|
|
408
|
+
if (!instance._pendingFlushTask) instance._pendingFlushTask = task;
|
|
409
|
+
return task;
|
|
410
|
+
}
|
|
411
|
+
function enqueueComponentRun() {
|
|
412
|
+
if (this.hasPendingUpdate) return;
|
|
413
|
+
this.hasPendingUpdate = true;
|
|
414
|
+
enqueueRuntimeTask(ensurePendingRunTask(this));
|
|
415
|
+
}
|
|
416
|
+
var ComponentExecutionContext = class {
|
|
417
|
+
constructor(instance) {
|
|
418
|
+
this.instance = instance;
|
|
419
|
+
}
|
|
420
|
+
get signal() {
|
|
421
|
+
return getSignalForInstance(this.instance);
|
|
422
|
+
}
|
|
423
|
+
};
|
|
424
|
+
function createComponentInstance(id, fn, props, target) {
|
|
425
|
+
const parentInstance = getCurrentInstance();
|
|
426
|
+
const instance = {
|
|
427
|
+
id,
|
|
428
|
+
fn,
|
|
429
|
+
props,
|
|
430
|
+
target,
|
|
431
|
+
parentInstance,
|
|
432
|
+
portalScope: parentInstance?.portalScope ?? getCurrentPortalScope() ?? null,
|
|
433
|
+
mounted: false,
|
|
434
|
+
abortController: null,
|
|
435
|
+
stateValues: void 0,
|
|
436
|
+
evaluationGeneration: 0,
|
|
437
|
+
notifyUpdate: null,
|
|
438
|
+
_pendingFlushTask: void 0,
|
|
439
|
+
_pendingRunTask: void 0,
|
|
440
|
+
_enqueueRun: void 0,
|
|
441
|
+
stateIndexCheck: -1,
|
|
442
|
+
expectedStateIndices: void 0,
|
|
443
|
+
firstRenderComplete: false,
|
|
444
|
+
mountOperations: void 0,
|
|
445
|
+
commitOperations: void 0,
|
|
446
|
+
lifecycleSlots: void 0,
|
|
447
|
+
lifecycleGeneration: 0,
|
|
448
|
+
hasPendingUpdate: false,
|
|
449
|
+
ownerFrame: null,
|
|
450
|
+
ssr: false,
|
|
451
|
+
cleanupStrict: false,
|
|
452
|
+
_ownershipGeneration: {},
|
|
453
|
+
isRoot: false,
|
|
454
|
+
_currentRenderToken: void 0,
|
|
455
|
+
lastRenderToken: 0,
|
|
456
|
+
_pendingReadSources: void 0,
|
|
457
|
+
_pendingReadSourceVersions: void 0,
|
|
458
|
+
_lastReadSources: void 0,
|
|
459
|
+
devWarningsEmitted: void 0
|
|
460
|
+
};
|
|
461
|
+
instance._enqueueRun = enqueueComponentRun;
|
|
462
|
+
return instance;
|
|
463
|
+
}
|
|
464
|
+
/**
|
|
465
|
+
* Register a mount operation that will run after the component is mounted
|
|
466
|
+
* Used by operations (task, on, timer, etc) to execute after render completes
|
|
467
|
+
*/
|
|
468
|
+
function captureInlineRenderSnapshot(instance) {
|
|
469
|
+
captureInlineRenderSnapshot$1(instance);
|
|
470
|
+
}
|
|
471
|
+
function registerCommitOperation(operation) {
|
|
472
|
+
registerCommitOperationForInstance(getCurrentComponentInstance(), operation);
|
|
473
|
+
}
|
|
474
|
+
function commitRenderedComponent(instance) {
|
|
475
|
+
commitRenderedComponent$1(instance);
|
|
476
|
+
}
|
|
477
|
+
function mountInstanceInline(instance, target) {
|
|
478
|
+
instance.target = target;
|
|
479
|
+
try {
|
|
480
|
+
if (target instanceof Element) {
|
|
481
|
+
const host = target;
|
|
482
|
+
const instances = host.__ASKR_INSTANCES;
|
|
483
|
+
if (!instances) {
|
|
484
|
+
host.__ASKR_INSTANCES = [instance];
|
|
485
|
+
host.__ASKR_INSTANCE = instance;
|
|
486
|
+
} else if (instances[instances.length - 1] !== instance) {
|
|
487
|
+
const nextInstances = instances.indexOf(instance) === -1 ? instances.slice() : instances.filter((entry) => entry !== instance);
|
|
488
|
+
nextInstances.push(instance);
|
|
489
|
+
host.__ASKR_INSTANCES = nextInstances;
|
|
490
|
+
host.__ASKR_INSTANCE = nextInstances[0] ?? instance;
|
|
491
|
+
}
|
|
492
|
+
}
|
|
493
|
+
} catch (err) {}
|
|
494
|
+
instance.notifyUpdate = instance._enqueueRun;
|
|
495
|
+
const wasFirstMount = !instance.mounted;
|
|
496
|
+
instance.mounted = true;
|
|
497
|
+
commitLifecycleForInstance(instance, wasFirstMount);
|
|
498
|
+
}
|
|
499
|
+
/**
|
|
500
|
+
* Run a component synchronously: execute function, handle result
|
|
501
|
+
* This is the internal workhorse that manages async continuations and generation tracking.
|
|
502
|
+
* Must always be called through the scheduler.
|
|
503
|
+
*
|
|
504
|
+
* ACTOR INVARIANT: This function is enqueued as a task, never called directly.
|
|
505
|
+
*/
|
|
506
|
+
function renderScopedComponent(instance, startStateIndex, render) {
|
|
507
|
+
instance.notifyUpdate = instance._enqueueRun;
|
|
508
|
+
resetRenderState(instance);
|
|
509
|
+
beginRenderTracking(instance);
|
|
510
|
+
const savedScope = enterRenderScopedComponent(instance, startStateIndex);
|
|
511
|
+
let didComplete = false;
|
|
512
|
+
try {
|
|
513
|
+
const result = withContext(getExecutionContextFrame(instance.ownerFrame), render);
|
|
514
|
+
didComplete = true;
|
|
515
|
+
return result;
|
|
516
|
+
} finally {
|
|
517
|
+
if (!didComplete) clearRenderTracking(instance);
|
|
518
|
+
restoreRenderScopedComponent(savedScope);
|
|
519
|
+
}
|
|
520
|
+
}
|
|
521
|
+
/**
|
|
522
|
+
* Execute a component's render function synchronously.
|
|
523
|
+
* Returns either a vnode/promise immediately (does NOT render).
|
|
524
|
+
* Rendering happens separately through the scheduled commit helper.
|
|
525
|
+
*/
|
|
526
|
+
function renderComponentInline(instance) {
|
|
527
|
+
instance.notifyUpdate = instance._enqueueRun;
|
|
528
|
+
const trackingSnapshot = captureInlineRenderTracking(instance);
|
|
529
|
+
const scopeSnapshot = captureInlineComponentScope();
|
|
530
|
+
const hadToken = trackingSnapshot.currentRenderToken !== void 0;
|
|
531
|
+
if (!hadToken) beginRenderTracking(instance);
|
|
532
|
+
try {
|
|
533
|
+
const result = executeComponentSync(instance);
|
|
534
|
+
if (!hadToken) finalizeInlineReadSubscriptions(instance, instance._currentRenderToken, instance._pendingReadSources, instance._pendingReadSourceVersions);
|
|
535
|
+
commitRenderedComponent(instance);
|
|
536
|
+
return result;
|
|
537
|
+
} finally {
|
|
538
|
+
restoreInlineRenderTracking(instance, trackingSnapshot);
|
|
539
|
+
restoreInlineComponentScope(scopeSnapshot);
|
|
540
|
+
}
|
|
541
|
+
}
|
|
542
|
+
function warnUnusedStateReads(instance) {
|
|
543
|
+
const stateValues = instance.stateValues;
|
|
544
|
+
if (!stateValues) return;
|
|
545
|
+
for (let i = 0; i < stateValues.length; i++) {
|
|
546
|
+
const state = stateValues[i];
|
|
547
|
+
const hasCommittedUsage = (state?._readers?.size ?? 0) > 0 || (state?._derivedSubscribers?.size ?? 0) > 0;
|
|
548
|
+
if (state && !state._hasBeenRead && !state._hasEverBeenRead && !hasCommittedUsage) try {
|
|
549
|
+
const name = instance.fn?.name || "<anonymous>";
|
|
550
|
+
warnInstanceOnce(instance, `unused-state:${i}`, `[askr] Unused state variable detected in ${name} at index ${i}. State should be read during render or removed.`);
|
|
551
|
+
} catch {
|
|
552
|
+
warnInstanceOnce(instance, `unused-state:${i}`, `[askr] Unused state variable detected. State should be read during render or removed.`);
|
|
553
|
+
}
|
|
554
|
+
}
|
|
555
|
+
}
|
|
556
|
+
function executeComponentSync(instance) {
|
|
557
|
+
resetRenderState(instance);
|
|
558
|
+
const savedPortalScope = enterComponentExecutionScope(instance);
|
|
559
|
+
let didComplete = false;
|
|
560
|
+
try {
|
|
561
|
+
const trackRenderTime = !PRODUCTION_BUILD_ENABLED && isDevelopmentEnvironment();
|
|
562
|
+
const renderStartTime = trackRenderTime ? Date.now() : 0;
|
|
563
|
+
const context = new ComponentExecutionContext(instance);
|
|
564
|
+
const result = callWithContext(getExecutionContextFrame(instance.ownerFrame), instance.fn, instance.props, context);
|
|
565
|
+
if (trackRenderTime) {
|
|
566
|
+
const renderTime = Date.now() - renderStartTime;
|
|
567
|
+
if (renderTime > 5) warnInstanceOnce(instance, "slow-render", `[askr] Slow render detected: ${renderTime}ms. Consider optimizing component performance.`);
|
|
568
|
+
}
|
|
569
|
+
if (!instance.firstRenderComplete) instance.firstRenderComplete = true;
|
|
570
|
+
didComplete = true;
|
|
571
|
+
return result;
|
|
572
|
+
} finally {
|
|
573
|
+
if (!didComplete) discardCommitOperations(instance);
|
|
574
|
+
exitComponentExecutionScope(savedPortalScope);
|
|
575
|
+
}
|
|
576
|
+
}
|
|
577
|
+
/**
|
|
578
|
+
* Public entry point: Execute component with full lifecycle (execute + render)
|
|
579
|
+
* Handles both initial mount and re-execution. Always enqueues through scheduler.
|
|
580
|
+
* Single entry point to avoid lifecycle divergence.
|
|
581
|
+
*/
|
|
582
|
+
function executeComponent(instance) {
|
|
583
|
+
instance.abortController = null;
|
|
584
|
+
instance.notifyUpdate = instance._enqueueRun;
|
|
585
|
+
enqueueRuntimeTask(ensurePendingRunTask(instance));
|
|
586
|
+
}
|
|
587
|
+
/**
|
|
588
|
+
* Finalize read subscriptions for an instance after a successful commit.
|
|
589
|
+
* - Update per-state readers map to point to this instance's last committed token
|
|
590
|
+
* - Remove this instance from states it no longer reads
|
|
591
|
+
* This is deterministic and runs synchronously with commit to ensure
|
|
592
|
+
* subscribers are only notified when they actually read a state in their
|
|
593
|
+
* last committed render.
|
|
594
|
+
*/
|
|
595
|
+
function finalizeReadSubscriptions(instance) {
|
|
596
|
+
finalizeReadableSubscriptions(instance);
|
|
597
|
+
}
|
|
598
|
+
/**
|
|
599
|
+
* Mount a component instance.
|
|
600
|
+
* This is just an alias to executeComponent() to maintain API compatibility.
|
|
601
|
+
* All lifecycle logic is unified in executeComponent().
|
|
602
|
+
*/
|
|
603
|
+
function mountComponent(instance) {
|
|
604
|
+
executeComponent(instance);
|
|
605
|
+
}
|
|
606
|
+
function warnInstanceOnce(instance, key, message) {
|
|
607
|
+
if (isProductionEnvironment()) return;
|
|
608
|
+
const warnings = instance.devWarningsEmitted ??= /* @__PURE__ */ new Set();
|
|
609
|
+
if (warnings.has(key)) return;
|
|
610
|
+
warnings.add(key);
|
|
611
|
+
logger.warn(message);
|
|
612
|
+
}
|
|
613
|
+
//#endregion
|
|
614
|
+
export { withContext as _, registerCommitOperation as a, warnUnusedStateReads as c, getCurrentContextFrame as d, getExecutionContextFrame as f, withAsyncResourceContext as g, readScope as h, mountInstanceInline as i, callWithContext as l, markVNodeTreeWithContextFrame as m, createComponentInstance as n, renderComponentInline as o, getVNodeContextFrame as p, mountComponent as r, renderScopedComponent as s, captureInlineRenderSnapshot as t, defineScope as u };
|