@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,167 +0,0 @@
|
|
|
1
|
-
import { isDevelopmentEnvironment } from "../common/env.js";
|
|
2
|
-
import { logger } from "../common/logger.js";
|
|
3
|
-
import { enqueueRuntimeTask, getRuntimeRenderer } from "./access.js";
|
|
4
|
-
import { getExecutionContextFrame, withContext } from "./context.js";
|
|
5
|
-
import { incDevCounter, setDevValue } from "./dev-namespace.js";
|
|
6
|
-
import { beginRenderTracking, enterDomCommitScope, restoreDomCommitScope } from "./component-scope.js";
|
|
7
|
-
import { isPromiseLike } from "../common/promise.js";
|
|
8
|
-
import { tryRuntimeFastLaneSync } from "./fastlane.js";
|
|
9
|
-
import { discardCommitOperations } from "./lifecycle-operation-settlement.js";
|
|
10
|
-
import { beginLifecycleCommitBatch, discardLifecycleCommitBatch, flushLifecycleCommitBatch } from "./lifecycle-batch.js";
|
|
11
|
-
import { commitLifecycleForInstance } from "./component-lifecycle.js";
|
|
12
|
-
//#region src/runtime/component-commit.ts
|
|
13
|
-
function runScheduledComponent(instance, host) {
|
|
14
|
-
instance.notifyUpdate = instance._enqueueRun;
|
|
15
|
-
beginRenderTracking(instance);
|
|
16
|
-
let result;
|
|
17
|
-
try {
|
|
18
|
-
result = host.execute(instance);
|
|
19
|
-
} catch (err) {
|
|
20
|
-
discardCommitOperations(instance);
|
|
21
|
-
throw err;
|
|
22
|
-
}
|
|
23
|
-
if (isPromiseLike(result)) throw new Error("Async components are not supported. Components must be synchronous.");
|
|
24
|
-
try {
|
|
25
|
-
if (tryRuntimeFastLaneSync(instance, result)) {
|
|
26
|
-
host.warnUnusedStateReads(instance);
|
|
27
|
-
return;
|
|
28
|
-
}
|
|
29
|
-
} catch (err) {
|
|
30
|
-
if (isDevelopmentEnvironment()) throw err;
|
|
31
|
-
}
|
|
32
|
-
enqueueRuntimeTask(() => {
|
|
33
|
-
if (!instance.target && instance._placeholder) {
|
|
34
|
-
commitPlaceholderReplacement(instance, result, host);
|
|
35
|
-
return;
|
|
36
|
-
}
|
|
37
|
-
if (instance.target) commitToTarget(instance, result, host);
|
|
38
|
-
});
|
|
39
|
-
}
|
|
40
|
-
function commitPlaceholderReplacement(instance, result, host) {
|
|
41
|
-
if (result === null || result === void 0) {
|
|
42
|
-
host.finalizeReadSubscriptions(instance);
|
|
43
|
-
host.warnUnusedStateReads(instance);
|
|
44
|
-
host.commitRenderedComponent(instance);
|
|
45
|
-
return;
|
|
46
|
-
}
|
|
47
|
-
const placeholder = instance._placeholder;
|
|
48
|
-
const parent = placeholder.parentNode;
|
|
49
|
-
if (!parent) {
|
|
50
|
-
logger.warn("[Askr] placeholder no longer in DOM, cannot render component");
|
|
51
|
-
return;
|
|
52
|
-
}
|
|
53
|
-
const renderer = getRuntimeRenderer();
|
|
54
|
-
const hostElement = document.createElement("div");
|
|
55
|
-
const executionFrame = getExecutionContextFrame(instance.ownerFrame);
|
|
56
|
-
const oldInstance = enterDomCommitScope(instance);
|
|
57
|
-
const lifecycleBatch = beginLifecycleCommitBatch();
|
|
58
|
-
try {
|
|
59
|
-
try {
|
|
60
|
-
withContext(executionFrame, () => {
|
|
61
|
-
renderer.evaluate(result, hostElement);
|
|
62
|
-
});
|
|
63
|
-
const onlyChild = hostElement.childNodes.length === 1 ? hostElement.firstChild : null;
|
|
64
|
-
const replacement = onlyChild instanceof Element ? onlyChild : hostElement;
|
|
65
|
-
if (replacement === hostElement) hostElement.__ASKR_WRAPPER_HOST = true;
|
|
66
|
-
parent.replaceChild(replacement, placeholder);
|
|
67
|
-
instance.target = replacement;
|
|
68
|
-
const instanceHost = replacement;
|
|
69
|
-
const instances = instanceHost.__ASKR_INSTANCES ?? [];
|
|
70
|
-
if (!instances.includes(instance)) instances.push(instance);
|
|
71
|
-
instanceHost.__ASKR_INSTANCES = instances;
|
|
72
|
-
instanceHost.__ASKR_INSTANCE = instances[0] ?? instance;
|
|
73
|
-
} catch (err) {
|
|
74
|
-
discardLifecycleCommitBatch(lifecycleBatch);
|
|
75
|
-
throw err;
|
|
76
|
-
}
|
|
77
|
-
instance._placeholder = void 0;
|
|
78
|
-
host.finalizeReadSubscriptions(instance);
|
|
79
|
-
host.warnUnusedStateReads(instance);
|
|
80
|
-
host.commitRenderedComponent(instance);
|
|
81
|
-
flushLifecycleCommitBatch(lifecycleBatch);
|
|
82
|
-
} finally {
|
|
83
|
-
restoreDomCommitScope(oldInstance);
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
function commitToTarget(instance, result, host) {
|
|
87
|
-
const renderer = getRuntimeRenderer();
|
|
88
|
-
const target = instance.target;
|
|
89
|
-
let oldChildren = [];
|
|
90
|
-
let restoredOldChildren = false;
|
|
91
|
-
try {
|
|
92
|
-
const wasFirstMount = !instance.mounted;
|
|
93
|
-
const oldInstance = enterDomCommitScope(instance);
|
|
94
|
-
const executionFrame = getExecutionContextFrame(instance.ownerFrame);
|
|
95
|
-
oldChildren = Array.from(target.childNodes);
|
|
96
|
-
const lifecycleBatch = beginLifecycleCommitBatch();
|
|
97
|
-
try {
|
|
98
|
-
try {
|
|
99
|
-
withContext(executionFrame, () => {
|
|
100
|
-
renderer.evaluate(result, target, void 0, instance);
|
|
101
|
-
});
|
|
102
|
-
} catch (err) {
|
|
103
|
-
discardLifecycleCommitBatch(lifecycleBatch);
|
|
104
|
-
throw err;
|
|
105
|
-
}
|
|
106
|
-
} catch (err) {
|
|
107
|
-
cleanupFailedCommitChildren(renderer, target, oldChildren);
|
|
108
|
-
try {
|
|
109
|
-
incDevCounter("__DOM_REPLACE_COUNT");
|
|
110
|
-
setDevValue("__LAST_DOM_REPLACE_STACK_COMPONENT_RESTORE", (/* @__PURE__ */ new Error()).stack);
|
|
111
|
-
} catch (devErr) {}
|
|
112
|
-
target.replaceChildren(...oldChildren);
|
|
113
|
-
restoredOldChildren = true;
|
|
114
|
-
throw err;
|
|
115
|
-
} finally {
|
|
116
|
-
restoreDomCommitScope(oldInstance);
|
|
117
|
-
}
|
|
118
|
-
host.finalizeReadSubscriptions(instance);
|
|
119
|
-
host.warnUnusedStateReads(instance);
|
|
120
|
-
instance.mounted = true;
|
|
121
|
-
commitLifecycleForInstance(instance, wasFirstMount);
|
|
122
|
-
flushLifecycleCommitBatch(lifecycleBatch);
|
|
123
|
-
} catch (renderError) {
|
|
124
|
-
discardCommitOperations(instance);
|
|
125
|
-
cleanupRollbackChildren(renderer, target, oldChildren, restoredOldChildren);
|
|
126
|
-
const rollbackErrors = [];
|
|
127
|
-
try {
|
|
128
|
-
incDevCounter("__DOM_REPLACE_COUNT");
|
|
129
|
-
setDevValue("__LAST_DOM_REPLACE_STACK_COMPONENT_ROLLBACK", (/* @__PURE__ */ new Error()).stack);
|
|
130
|
-
target.replaceChildren(...oldChildren);
|
|
131
|
-
} catch (rollbackError) {
|
|
132
|
-
rollbackErrors.push(rollbackError);
|
|
133
|
-
}
|
|
134
|
-
if (rollbackErrors.length > 0) logger.error("[Askr] component rollback failed after render error:", new AggregateError(rollbackErrors, "Component rollback failed"));
|
|
135
|
-
throw renderError;
|
|
136
|
-
}
|
|
137
|
-
}
|
|
138
|
-
function cleanupFailedCommitChildren(renderer, target, oldChildren) {
|
|
139
|
-
try {
|
|
140
|
-
const newChildren = Array.from(target.childNodes);
|
|
141
|
-
const preservedChildren = new Set(oldChildren);
|
|
142
|
-
for (const node of newChildren) {
|
|
143
|
-
if (preservedChildren.has(node)) continue;
|
|
144
|
-
try {
|
|
145
|
-
renderer.cleanupInstancesUnder(node);
|
|
146
|
-
} catch (err) {
|
|
147
|
-
logger.warn("[Askr] error cleaning up failed commit children:", err);
|
|
148
|
-
}
|
|
149
|
-
}
|
|
150
|
-
} catch (err) {}
|
|
151
|
-
}
|
|
152
|
-
function cleanupRollbackChildren(renderer, target, oldChildren, restoredOldChildren) {
|
|
153
|
-
try {
|
|
154
|
-
const currentChildren = Array.from(target.childNodes);
|
|
155
|
-
const preservedChildren = restoredOldChildren ? new Set(oldChildren) : null;
|
|
156
|
-
for (const node of currentChildren) {
|
|
157
|
-
if (preservedChildren?.has(node)) continue;
|
|
158
|
-
try {
|
|
159
|
-
renderer.cleanupInstancesUnder(node);
|
|
160
|
-
} catch (err) {
|
|
161
|
-
logger.warn("[Askr] error cleaning up partial children during rollback:", err);
|
|
162
|
-
}
|
|
163
|
-
}
|
|
164
|
-
} catch (err) {}
|
|
165
|
-
}
|
|
166
|
-
//#endregion
|
|
167
|
-
export { runScheduledComponent };
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
import { cleanupComponent, registerOwnedChildScope, unregisterOwnedChildScope } from "./component-cleanup.js";
|
|
2
|
-
import { ComponentInstance } from "./component-internal.js";
|
|
3
|
-
import { getSignal } from "./component-scope.js";
|
|
4
|
-
import { ComponentFunction } from "../common/component.js";
|
|
5
|
-
export { type ComponentFunction, type ComponentInstance, getSignal };
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import { claimHookIndex, enterDomCommitScope, getCurrentComponentInstance, getCurrentInstance, getCurrentPortalScope, getCurrentStateIndex, getSignal, restoreDomCommitScope, setCurrentComponentInstance } from "./component-scope.js";
|
|
2
|
-
import { cleanupComponent, registerOwnedChildScope, unregisterOwnedChildScope } from "./component-cleanup.js";
|
|
3
|
-
import { getCurrentLifecycleCommitBatch, registerLifecycleRollback, registerLifecycleTransaction } from "./lifecycle-batch.js";
|
|
4
|
-
import "./component-lifecycle.js";
|
|
5
|
-
import { captureInlineRenderSnapshot, createComponentInstance, mountComponent, mountInstanceInline, registerCommitOperation, renderComponentInline, renderScopedComponent, warnUnusedStateReads } from "./component-internal.js";
|
|
6
|
-
export { captureInlineRenderSnapshot, claimHookIndex, cleanupComponent, createComponentInstance, enterDomCommitScope, getCurrentComponentInstance, getCurrentInstance, getCurrentLifecycleCommitBatch, getCurrentPortalScope, getCurrentStateIndex, getSignal, mountComponent, mountInstanceInline, registerCommitOperation, registerLifecycleRollback, registerLifecycleTransaction, registerOwnedChildScope, renderComponentInline, renderScopedComponent, restoreDomCommitScope, setCurrentComponentInstance, unregisterOwnedChildScope, warnUnusedStateReads };
|
|
@@ -1,105 +0,0 @@
|
|
|
1
|
-
import { Props } from "../common/props.js";
|
|
2
|
-
import { State } from "./state.js";
|
|
3
|
-
import { ContextFrame } from "./context.js";
|
|
4
|
-
import { OwnedChildScope, cleanupComponent, registerOwnedChildScope, unregisterOwnedChildScope } from "./component-cleanup.js";
|
|
5
|
-
import { LifecycleOperation } from "./lifecycle-batch.js";
|
|
6
|
-
import { ReadableSource } from "./readable.js";
|
|
7
|
-
import { ComponentFunction } from "../common/component.js";
|
|
8
|
-
|
|
9
|
-
//#region src/runtime/component-internal.d.ts
|
|
10
|
-
interface ComponentInstance {
|
|
11
|
-
id: string;
|
|
12
|
-
fn: ComponentFunction;
|
|
13
|
-
props: Props;
|
|
14
|
-
target: Element | null;
|
|
15
|
-
parentInstance: ComponentInstance | null;
|
|
16
|
-
portalScope: object | null;
|
|
17
|
-
mounted: boolean;
|
|
18
|
-
abortController: AbortController | null;
|
|
19
|
-
ssr?: boolean;
|
|
20
|
-
cleanupStrict?: boolean;
|
|
21
|
-
stateValues?: State<unknown>[];
|
|
22
|
-
evaluationGeneration: number;
|
|
23
|
-
notifyUpdate: (() => void) | null;
|
|
24
|
-
_pendingFlushTask?: () => void;
|
|
25
|
-
_pendingRunTask?: () => void;
|
|
26
|
-
_enqueueRun?: () => void;
|
|
27
|
-
stateIndexCheck: number;
|
|
28
|
-
expectedStateIndices?: number[];
|
|
29
|
-
firstRenderComplete: boolean;
|
|
30
|
-
mountOperations: Array<() => void | (() => void) | PromiseLike<void | (() => void)>>;
|
|
31
|
-
commitOperations: Array<() => void | (() => void) | PromiseLike<void | (() => void)>>;
|
|
32
|
-
cleanupFns: Array<() => void>;
|
|
33
|
-
lifecycleSlots?: unknown[];
|
|
34
|
-
lifecycleGeneration: number;
|
|
35
|
-
hasPendingUpdate: boolean;
|
|
36
|
-
ownerFrame: ContextFrame | null;
|
|
37
|
-
isRoot?: boolean;
|
|
38
|
-
_rootComponentFn?: ComponentFunction;
|
|
39
|
-
_vnodeOwner?: object;
|
|
40
|
-
_vnodeParent?: ComponentInstance | null;
|
|
41
|
-
_vnodeKey?: string | number;
|
|
42
|
-
_vnodePosition?: number;
|
|
43
|
-
_wrapperDepth?: number;
|
|
44
|
-
_currentRenderToken?: number;
|
|
45
|
-
lastRenderToken?: number;
|
|
46
|
-
_pendingReadSources?: Set<ReadableSource<unknown>>;
|
|
47
|
-
_pendingReadSourceVersions?: Map<ReadableSource<unknown>, number>;
|
|
48
|
-
_lastReadSources?: Set<ReadableSource<unknown>>;
|
|
49
|
-
devWarningsEmitted?: Set<string>;
|
|
50
|
-
_placeholder?: Comment;
|
|
51
|
-
_ownedChildScopes?: Set<OwnedChildScope>;
|
|
52
|
-
errorBoundaryState?: {
|
|
53
|
-
error: unknown | null;
|
|
54
|
-
resetKey: unknown;
|
|
55
|
-
notified: boolean;
|
|
56
|
-
};
|
|
57
|
-
}
|
|
58
|
-
declare function createComponentInstance(id: string, fn: ComponentFunction, props: Props, target: Element | null): ComponentInstance;
|
|
59
|
-
/**
|
|
60
|
-
* Register a mount operation that will run after the component is mounted
|
|
61
|
-
* Used by operations (task, on, timer, etc) to execute after render completes
|
|
62
|
-
*/
|
|
63
|
-
declare function captureInlineRenderSnapshot(instance: ComponentInstance): void;
|
|
64
|
-
declare function registerMountOperation(operation: LifecycleOperation): void;
|
|
65
|
-
declare function registerCommitOperation(operation: LifecycleOperation): void;
|
|
66
|
-
declare function commitRenderedComponent(instance: ComponentInstance): void;
|
|
67
|
-
declare function mountInstanceInline(instance: ComponentInstance, target: Element | null): void;
|
|
68
|
-
/**
|
|
69
|
-
* Run a component synchronously: execute function, handle result
|
|
70
|
-
* This is the internal workhorse that manages async continuations and generation tracking.
|
|
71
|
-
* Must always be called through the scheduler.
|
|
72
|
-
*
|
|
73
|
-
* ACTOR INVARIANT: This function is enqueued as a task, never called directly.
|
|
74
|
-
*/
|
|
75
|
-
declare function renderScopedComponent<T>(instance: ComponentInstance, startStateIndex: number, render: () => T): T;
|
|
76
|
-
/**
|
|
77
|
-
* Execute a component's render function synchronously.
|
|
78
|
-
* Returns either a vnode/promise immediately (does NOT render).
|
|
79
|
-
* Rendering happens separately through the scheduled commit helper.
|
|
80
|
-
*/
|
|
81
|
-
declare function renderComponentInline(instance: ComponentInstance): unknown | Promise<unknown>;
|
|
82
|
-
declare function warnUnusedStateReads(instance: ComponentInstance): void;
|
|
83
|
-
/**
|
|
84
|
-
* Public entry point: Execute component with full lifecycle (execute + render)
|
|
85
|
-
* Handles both initial mount and re-execution. Always enqueues through scheduler.
|
|
86
|
-
* Single entry point to avoid lifecycle divergence.
|
|
87
|
-
*/
|
|
88
|
-
declare function executeComponent(instance: ComponentInstance): void;
|
|
89
|
-
/**
|
|
90
|
-
* Finalize read subscriptions for an instance after a successful commit.
|
|
91
|
-
* - Update per-state readers map to point to this instance's last committed token
|
|
92
|
-
* - Remove this instance from states it no longer reads
|
|
93
|
-
* This is deterministic and runs synchronously with commit to ensure
|
|
94
|
-
* subscribers are only notified when they actually read a state in their
|
|
95
|
-
* last committed render.
|
|
96
|
-
*/
|
|
97
|
-
declare function finalizeReadSubscriptions(instance: ComponentInstance): void;
|
|
98
|
-
/**
|
|
99
|
-
* Mount a component instance.
|
|
100
|
-
* This is just an alias to executeComponent() to maintain API compatibility.
|
|
101
|
-
* All lifecycle logic is unified in executeComponent().
|
|
102
|
-
*/
|
|
103
|
-
declare function mountComponent(instance: ComponentInstance): void;
|
|
104
|
-
//#endregion
|
|
105
|
-
export { type ComponentFunction, ComponentInstance, cleanupComponent, registerOwnedChildScope, unregisterOwnedChildScope };
|
|
@@ -1,237 +0,0 @@
|
|
|
1
|
-
import { isDevelopmentEnvironment, isProductionEnvironment } from "../common/env.js";
|
|
2
|
-
import { logger } from "../common/logger.js";
|
|
3
|
-
import { enqueueRuntimeTask } from "./access.js";
|
|
4
|
-
import { callWithContext, getExecutionContextFrame, withContext } from "./context.js";
|
|
5
|
-
import { finalizeReadableSubscriptions } from "./readable.js";
|
|
6
|
-
import { incDevCounter } from "./dev-namespace.js";
|
|
7
|
-
import { beginRenderTracking, captureInlineComponentScope, captureInlineRenderTracking, clearRenderTracking, enterComponentExecutionScope, enterRenderScopedComponent, exitComponentExecutionScope, getCurrentComponentInstance, getCurrentInstance, getCurrentPortalScope, getSignalForInstance, resetRenderState, restoreInlineComponentScope, restoreInlineRenderTracking, restoreRenderScopedComponent } from "./component-scope.js";
|
|
8
|
-
import { cleanupComponent, registerOwnedChildScope, unregisterOwnedChildScope } from "./component-cleanup.js";
|
|
9
|
-
import { discardCommitOperations } from "./lifecycle-operation-settlement.js";
|
|
10
|
-
import { captureInlineRenderSnapshot as captureInlineRenderSnapshot$1, finalizeInlineReadSubscriptions } from "./lifecycle-batch.js";
|
|
11
|
-
import { commitLifecycleForInstance, commitRenderedComponent as commitRenderedComponent$1, registerCommitOperationForInstance } from "./component-lifecycle.js";
|
|
12
|
-
import { runScheduledComponent } from "./component-commit.js";
|
|
13
|
-
//#region src/runtime/component-internal.ts
|
|
14
|
-
const PRODUCTION_BUILD_ENABLED = isProductionEnvironment();
|
|
15
|
-
function ensurePendingRunTask(instance) {
|
|
16
|
-
const existing = instance._pendingRunTask;
|
|
17
|
-
if (existing) return existing;
|
|
18
|
-
const task = () => {
|
|
19
|
-
instance.hasPendingUpdate = false;
|
|
20
|
-
if (instance.notifyUpdate === null) return;
|
|
21
|
-
runScheduledComponent(instance, {
|
|
22
|
-
execute: executeComponentSync,
|
|
23
|
-
finalizeReadSubscriptions,
|
|
24
|
-
warnUnusedStateReads,
|
|
25
|
-
commitRenderedComponent
|
|
26
|
-
});
|
|
27
|
-
};
|
|
28
|
-
instance._pendingRunTask = task;
|
|
29
|
-
if (!instance._pendingFlushTask) instance._pendingFlushTask = task;
|
|
30
|
-
return task;
|
|
31
|
-
}
|
|
32
|
-
function enqueueComponentRun() {
|
|
33
|
-
if (this.hasPendingUpdate) return;
|
|
34
|
-
this.hasPendingUpdate = true;
|
|
35
|
-
enqueueRuntimeTask(ensurePendingRunTask(this));
|
|
36
|
-
}
|
|
37
|
-
var ComponentExecutionContext = class {
|
|
38
|
-
constructor(instance) {
|
|
39
|
-
this.instance = instance;
|
|
40
|
-
}
|
|
41
|
-
get signal() {
|
|
42
|
-
return getSignalForInstance(this.instance);
|
|
43
|
-
}
|
|
44
|
-
};
|
|
45
|
-
function createComponentInstance(id, fn, props, target) {
|
|
46
|
-
const parentInstance = getCurrentInstance();
|
|
47
|
-
const instance = {
|
|
48
|
-
id,
|
|
49
|
-
fn,
|
|
50
|
-
props,
|
|
51
|
-
target,
|
|
52
|
-
parentInstance,
|
|
53
|
-
portalScope: parentInstance?.portalScope ?? getCurrentPortalScope() ?? null,
|
|
54
|
-
mounted: false,
|
|
55
|
-
abortController: null,
|
|
56
|
-
stateValues: void 0,
|
|
57
|
-
evaluationGeneration: 0,
|
|
58
|
-
notifyUpdate: null,
|
|
59
|
-
_pendingFlushTask: void 0,
|
|
60
|
-
_pendingRunTask: void 0,
|
|
61
|
-
_enqueueRun: void 0,
|
|
62
|
-
stateIndexCheck: -1,
|
|
63
|
-
expectedStateIndices: void 0,
|
|
64
|
-
firstRenderComplete: false,
|
|
65
|
-
mountOperations: [],
|
|
66
|
-
commitOperations: [],
|
|
67
|
-
cleanupFns: [],
|
|
68
|
-
lifecycleSlots: void 0,
|
|
69
|
-
lifecycleGeneration: 0,
|
|
70
|
-
hasPendingUpdate: false,
|
|
71
|
-
ownerFrame: null,
|
|
72
|
-
ssr: false,
|
|
73
|
-
cleanupStrict: false,
|
|
74
|
-
isRoot: false,
|
|
75
|
-
_currentRenderToken: void 0,
|
|
76
|
-
lastRenderToken: 0,
|
|
77
|
-
_pendingReadSources: void 0,
|
|
78
|
-
_pendingReadSourceVersions: void 0,
|
|
79
|
-
_lastReadSources: void 0,
|
|
80
|
-
devWarningsEmitted: void 0
|
|
81
|
-
};
|
|
82
|
-
instance._enqueueRun = enqueueComponentRun;
|
|
83
|
-
return instance;
|
|
84
|
-
}
|
|
85
|
-
/**
|
|
86
|
-
* Register a mount operation that will run after the component is mounted
|
|
87
|
-
* Used by operations (task, on, timer, etc) to execute after render completes
|
|
88
|
-
*/
|
|
89
|
-
function captureInlineRenderSnapshot(instance) {
|
|
90
|
-
captureInlineRenderSnapshot$1(instance);
|
|
91
|
-
}
|
|
92
|
-
function registerCommitOperation(operation) {
|
|
93
|
-
registerCommitOperationForInstance(getCurrentComponentInstance(), operation);
|
|
94
|
-
}
|
|
95
|
-
function commitRenderedComponent(instance) {
|
|
96
|
-
commitRenderedComponent$1(instance);
|
|
97
|
-
}
|
|
98
|
-
function mountInstanceInline(instance, target) {
|
|
99
|
-
instance.target = target;
|
|
100
|
-
try {
|
|
101
|
-
if (target instanceof Element) {
|
|
102
|
-
const host = target;
|
|
103
|
-
const instances = host.__ASKR_INSTANCES;
|
|
104
|
-
if (!instances) {
|
|
105
|
-
host.__ASKR_INSTANCES = [instance];
|
|
106
|
-
host.__ASKR_INSTANCE = instance;
|
|
107
|
-
} else if (instances[instances.length - 1] !== instance) {
|
|
108
|
-
const nextInstances = instances.indexOf(instance) === -1 ? instances.slice() : instances.filter((entry) => entry !== instance);
|
|
109
|
-
nextInstances.push(instance);
|
|
110
|
-
host.__ASKR_INSTANCES = nextInstances;
|
|
111
|
-
host.__ASKR_INSTANCE = nextInstances[0] ?? instance;
|
|
112
|
-
}
|
|
113
|
-
}
|
|
114
|
-
} catch (err) {}
|
|
115
|
-
instance.notifyUpdate = instance._enqueueRun;
|
|
116
|
-
const wasFirstMount = !instance.mounted;
|
|
117
|
-
instance.mounted = true;
|
|
118
|
-
commitLifecycleForInstance(instance, wasFirstMount);
|
|
119
|
-
}
|
|
120
|
-
/**
|
|
121
|
-
* Run a component synchronously: execute function, handle result
|
|
122
|
-
* This is the internal workhorse that manages async continuations and generation tracking.
|
|
123
|
-
* Must always be called through the scheduler.
|
|
124
|
-
*
|
|
125
|
-
* ACTOR INVARIANT: This function is enqueued as a task, never called directly.
|
|
126
|
-
*/
|
|
127
|
-
function renderScopedComponent(instance, startStateIndex, render) {
|
|
128
|
-
instance.notifyUpdate = instance._enqueueRun;
|
|
129
|
-
resetRenderState(instance);
|
|
130
|
-
beginRenderTracking(instance);
|
|
131
|
-
const savedScope = enterRenderScopedComponent(instance, startStateIndex);
|
|
132
|
-
let didComplete = false;
|
|
133
|
-
try {
|
|
134
|
-
const result = withContext(getExecutionContextFrame(instance.ownerFrame), render);
|
|
135
|
-
didComplete = true;
|
|
136
|
-
return result;
|
|
137
|
-
} finally {
|
|
138
|
-
if (!didComplete) clearRenderTracking(instance);
|
|
139
|
-
restoreRenderScopedComponent(savedScope);
|
|
140
|
-
}
|
|
141
|
-
}
|
|
142
|
-
/**
|
|
143
|
-
* Execute a component's render function synchronously.
|
|
144
|
-
* Returns either a vnode/promise immediately (does NOT render).
|
|
145
|
-
* Rendering happens separately through the scheduled commit helper.
|
|
146
|
-
*/
|
|
147
|
-
function renderComponentInline(instance) {
|
|
148
|
-
instance.notifyUpdate = instance._enqueueRun;
|
|
149
|
-
const trackingSnapshot = captureInlineRenderTracking(instance);
|
|
150
|
-
const scopeSnapshot = captureInlineComponentScope();
|
|
151
|
-
const hadToken = trackingSnapshot.currentRenderToken !== void 0;
|
|
152
|
-
if (!hadToken) beginRenderTracking(instance);
|
|
153
|
-
try {
|
|
154
|
-
const result = executeComponentSync(instance);
|
|
155
|
-
if (!hadToken) finalizeInlineReadSubscriptions(instance, instance._currentRenderToken, instance._pendingReadSources, instance._pendingReadSourceVersions);
|
|
156
|
-
commitRenderedComponent(instance);
|
|
157
|
-
return result;
|
|
158
|
-
} finally {
|
|
159
|
-
restoreInlineRenderTracking(instance, trackingSnapshot);
|
|
160
|
-
restoreInlineComponentScope(scopeSnapshot);
|
|
161
|
-
}
|
|
162
|
-
}
|
|
163
|
-
function warnUnusedStateReads(instance) {
|
|
164
|
-
const stateValues = instance.stateValues;
|
|
165
|
-
if (!stateValues) return;
|
|
166
|
-
for (let i = 0; i < stateValues.length; i++) {
|
|
167
|
-
const state = stateValues[i];
|
|
168
|
-
const hasCommittedUsage = (state?._readers?.size ?? 0) > 0 || (state?._derivedSubscribers?.size ?? 0) > 0;
|
|
169
|
-
if (state && !state._hasBeenRead && !state._hasEverBeenRead && !hasCommittedUsage) try {
|
|
170
|
-
const name = instance.fn?.name || "<anonymous>";
|
|
171
|
-
warnInstanceOnce(instance, `unused-state:${i}`, `[askr] Unused state variable detected in ${name} at index ${i}. State should be read during render or removed.`);
|
|
172
|
-
} catch {
|
|
173
|
-
warnInstanceOnce(instance, `unused-state:${i}`, `[askr] Unused state variable detected. State should be read during render or removed.`);
|
|
174
|
-
}
|
|
175
|
-
}
|
|
176
|
-
}
|
|
177
|
-
function executeComponentSync(instance) {
|
|
178
|
-
resetRenderState(instance);
|
|
179
|
-
incDevCounter("componentRuns");
|
|
180
|
-
incDevCounter("componentReruns");
|
|
181
|
-
const savedPortalScope = enterComponentExecutionScope(instance);
|
|
182
|
-
let didComplete = false;
|
|
183
|
-
try {
|
|
184
|
-
const trackRenderTime = !PRODUCTION_BUILD_ENABLED && isDevelopmentEnvironment();
|
|
185
|
-
const renderStartTime = trackRenderTime ? Date.now() : 0;
|
|
186
|
-
const context = new ComponentExecutionContext(instance);
|
|
187
|
-
const result = callWithContext(getExecutionContextFrame(instance.ownerFrame), instance.fn, instance.props, context);
|
|
188
|
-
if (trackRenderTime) {
|
|
189
|
-
const renderTime = Date.now() - renderStartTime;
|
|
190
|
-
if (renderTime > 5) warnInstanceOnce(instance, "slow-render", `[askr] Slow render detected: ${renderTime}ms. Consider optimizing component performance.`);
|
|
191
|
-
}
|
|
192
|
-
if (!instance.firstRenderComplete) instance.firstRenderComplete = true;
|
|
193
|
-
didComplete = true;
|
|
194
|
-
return result;
|
|
195
|
-
} finally {
|
|
196
|
-
if (!didComplete) discardCommitOperations(instance);
|
|
197
|
-
exitComponentExecutionScope(savedPortalScope);
|
|
198
|
-
}
|
|
199
|
-
}
|
|
200
|
-
/**
|
|
201
|
-
* Public entry point: Execute component with full lifecycle (execute + render)
|
|
202
|
-
* Handles both initial mount and re-execution. Always enqueues through scheduler.
|
|
203
|
-
* Single entry point to avoid lifecycle divergence.
|
|
204
|
-
*/
|
|
205
|
-
function executeComponent(instance) {
|
|
206
|
-
instance.abortController = null;
|
|
207
|
-
instance.notifyUpdate = instance._enqueueRun;
|
|
208
|
-
enqueueRuntimeTask(ensurePendingRunTask(instance));
|
|
209
|
-
}
|
|
210
|
-
/**
|
|
211
|
-
* Finalize read subscriptions for an instance after a successful commit.
|
|
212
|
-
* - Update per-state readers map to point to this instance's last committed token
|
|
213
|
-
* - Remove this instance from states it no longer reads
|
|
214
|
-
* This is deterministic and runs synchronously with commit to ensure
|
|
215
|
-
* subscribers are only notified when they actually read a state in their
|
|
216
|
-
* last committed render.
|
|
217
|
-
*/
|
|
218
|
-
function finalizeReadSubscriptions(instance) {
|
|
219
|
-
finalizeReadableSubscriptions(instance);
|
|
220
|
-
}
|
|
221
|
-
/**
|
|
222
|
-
* Mount a component instance.
|
|
223
|
-
* This is just an alias to executeComponent() to maintain API compatibility.
|
|
224
|
-
* All lifecycle logic is unified in executeComponent().
|
|
225
|
-
*/
|
|
226
|
-
function mountComponent(instance) {
|
|
227
|
-
executeComponent(instance);
|
|
228
|
-
}
|
|
229
|
-
function warnInstanceOnce(instance, key, message) {
|
|
230
|
-
if (isProductionEnvironment()) return;
|
|
231
|
-
const warnings = instance.devWarningsEmitted ??= /* @__PURE__ */ new Set();
|
|
232
|
-
if (warnings.has(key)) return;
|
|
233
|
-
warnings.add(key);
|
|
234
|
-
logger.warn(message);
|
|
235
|
-
}
|
|
236
|
-
//#endregion
|
|
237
|
-
export { captureInlineRenderSnapshot, cleanupComponent, commitRenderedComponent, createComponentInstance, executeComponent, finalizeReadSubscriptions, mountComponent, mountInstanceInline, registerCommitOperation, registerOwnedChildScope, renderComponentInline, renderScopedComponent, unregisterOwnedChildScope, warnUnusedStateReads };
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import { LifecycleCommitBatch, LifecycleOperation, LifecycleTransaction } from "./lifecycle-batch.js";
|
|
2
|
-
import { ComponentInstance } from "./component-internal.js";
|
|
3
|
-
|
|
4
|
-
//#region src/runtime/component-lifecycle.d.ts
|
|
5
|
-
declare function registerMountOperationForInstance(instance: ComponentInstance | null, operation: LifecycleOperation): void;
|
|
6
|
-
declare function registerCommitOperationForInstance(instance: ComponentInstance | null, operation: LifecycleOperation): void;
|
|
7
|
-
declare function commitLifecycleForInstance(instance: ComponentInstance, wasFirstMount: boolean): void;
|
|
8
|
-
declare function commitRenderedComponent(instance: ComponentInstance): void;
|
|
9
|
-
//#endregion
|
|
10
|
-
export type { LifecycleOperation };
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
import { isDevelopmentEnvironment } from "../common/env.js";
|
|
2
|
-
import { isBulkCommitActive } from "./fastlane.js";
|
|
3
|
-
import { discardCommitOperations, executeCommittedLifecycleOperations } from "./lifecycle-operation-settlement.js";
|
|
4
|
-
import { beginLifecycleCommitBatch, captureInlineRenderSnapshot, discardLifecycleCommitBatch, drainLifecycleCommitErrors, enqueueLifecycleCommitForInstance, finalizeInlineReadSubscriptions, flushLifecycleCommitBatch, getCurrentLifecycleCommitBatch, registerLifecycleRollback, registerLifecycleTransaction } from "./lifecycle-batch.js";
|
|
5
|
-
//#region src/runtime/component-lifecycle.ts
|
|
6
|
-
function registerMountOperationForInstance(instance, operation) {
|
|
7
|
-
if (instance) {
|
|
8
|
-
if (isBulkCommitActive()) {
|
|
9
|
-
if (isDevelopmentEnvironment()) throw new Error("registerMountOperation called during bulk commit fast-lane");
|
|
10
|
-
return;
|
|
11
|
-
}
|
|
12
|
-
instance.mountOperations.push(operation);
|
|
13
|
-
}
|
|
14
|
-
}
|
|
15
|
-
function registerCommitOperationForInstance(instance, operation) {
|
|
16
|
-
if (instance) {
|
|
17
|
-
if (isBulkCommitActive()) {
|
|
18
|
-
if (isDevelopmentEnvironment()) throw new Error("registerCommitOperation called during bulk commit fast-lane");
|
|
19
|
-
return;
|
|
20
|
-
}
|
|
21
|
-
instance.commitOperations.push(operation);
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
function commitLifecycleForInstance(instance, wasFirstMount) {
|
|
25
|
-
if ((instance.mountOperations?.length ?? 0) === 0 && (instance.commitOperations?.length ?? 0) === 0) return;
|
|
26
|
-
if (enqueueLifecycleCommitForInstance(instance, wasFirstMount)) return;
|
|
27
|
-
executeCommittedLifecycleOperations(instance, wasFirstMount);
|
|
28
|
-
}
|
|
29
|
-
function commitRenderedComponent(instance) {
|
|
30
|
-
if (instance.mounted && (instance.commitOperations?.length ?? 0) > 0) commitLifecycleForInstance(instance, false);
|
|
31
|
-
}
|
|
32
|
-
//#endregion
|
|
33
|
-
export { beginLifecycleCommitBatch, captureInlineRenderSnapshot, commitLifecycleForInstance, commitRenderedComponent, discardCommitOperations, discardLifecycleCommitBatch, drainLifecycleCommitErrors, finalizeInlineReadSubscriptions, flushLifecycleCommitBatch, getCurrentLifecycleCommitBatch, registerCommitOperationForInstance, registerLifecycleRollback, registerLifecycleTransaction, registerMountOperationForInstance };
|
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
import { ComponentInstance } from "./component-internal.js";
|
|
2
|
-
import { ReadableSource } from "./readable.js";
|
|
3
|
-
|
|
4
|
-
//#region src/runtime/component-scope.d.ts
|
|
5
|
-
type ComponentScopeSnapshot = {
|
|
6
|
-
instance: ComponentInstance | null;
|
|
7
|
-
portalScope: object | null;
|
|
8
|
-
stateIndex: number;
|
|
9
|
-
};
|
|
10
|
-
type InstancePortalScopeSnapshot = {
|
|
11
|
-
instance: ComponentInstance | null;
|
|
12
|
-
portalScope: object | null;
|
|
13
|
-
};
|
|
14
|
-
type InlineRenderTrackingSnapshot = {
|
|
15
|
-
currentRenderToken: number | undefined;
|
|
16
|
-
pendingReadSources: Set<ReadableSource<unknown>> | undefined;
|
|
17
|
-
pendingReadSourceVersions: Map<ReadableSource<unknown>, number> | undefined;
|
|
18
|
-
};
|
|
19
|
-
declare function getCurrentComponentInstance(): ComponentInstance | null;
|
|
20
|
-
declare function getCurrentInstance(): ComponentInstance | null;
|
|
21
|
-
declare function setCurrentComponentInstance(instance: ComponentInstance | null): void;
|
|
22
|
-
declare function getCurrentPortalScope(): object | null;
|
|
23
|
-
declare function getSignalForInstance(instance: ComponentInstance): AbortSignal;
|
|
24
|
-
/**
|
|
25
|
-
* Get the abort signal for the current component.
|
|
26
|
-
*
|
|
27
|
-
* The signal is guaranteed to be aborted when:
|
|
28
|
-
* - Component unmounts
|
|
29
|
-
* - Navigation occurs (different route)
|
|
30
|
-
* - Parent is destroyed
|
|
31
|
-
*/
|
|
32
|
-
declare function getSignal(): AbortSignal;
|
|
33
|
-
declare function resetRenderState(instance: ComponentInstance): void;
|
|
34
|
-
declare function beginRenderTracking(instance: ComponentInstance): void;
|
|
35
|
-
declare function clearRenderTracking(instance: ComponentInstance): void;
|
|
36
|
-
declare function captureInlineRenderTracking(instance: ComponentInstance): InlineRenderTrackingSnapshot;
|
|
37
|
-
declare function restoreInlineRenderTracking(instance: ComponentInstance, snapshot: InlineRenderTrackingSnapshot): void;
|
|
38
|
-
declare function enterRenderScopedComponent(instance: ComponentInstance, startStateIndex: number): ComponentScopeSnapshot | null;
|
|
39
|
-
declare function restoreRenderScopedComponent(snapshot: ComponentScopeSnapshot | null): void;
|
|
40
|
-
declare function captureInlineComponentScope(): InstancePortalScopeSnapshot;
|
|
41
|
-
declare function restoreInlineComponentScope(snapshot: InstancePortalScopeSnapshot): void;
|
|
42
|
-
declare function enterComponentExecutionScope(instance: ComponentInstance): object | null;
|
|
43
|
-
declare function exitComponentExecutionScope(savedPortalScope: object | null): void;
|
|
44
|
-
declare function enterDomCommitScope(instance: ComponentInstance): ComponentInstance | null;
|
|
45
|
-
declare function restoreDomCommitScope(previousInstance: ComponentInstance | null): void;
|
|
46
|
-
declare function clearCurrentComponentScope(): ComponentScopeSnapshot;
|
|
47
|
-
declare function restoreCurrentComponentScope(snapshot: ComponentScopeSnapshot): void;
|
|
48
|
-
declare function getNextStateIndex(): number;
|
|
49
|
-
declare function claimHookIndex(instance: ComponentInstance, hookName: string): number;
|
|
50
|
-
declare function getCurrentStateIndex(): number;
|
|
51
|
-
declare function resetStateIndex(): void;
|
|
52
|
-
declare function setStateIndex(value: number): void;
|
|
53
|
-
//#endregion
|
|
54
|
-
export { getSignal };
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
import { cleanupComponent, registerOwnedChildScope, unregisterOwnedChildScope } from "./component-cleanup.js";
|
|
2
|
-
import { ComponentInstance } from "./component-internal.js";
|
|
3
|
-
import { getSignal } from "./component-scope.js";
|
|
4
|
-
import { ComponentFunction } from "../common/component.js";
|
|
5
|
-
export { type ComponentFunction, type ComponentInstance, getSignal };
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import { claimHookIndex, enterDomCommitScope, getCurrentComponentInstance, getCurrentInstance, getCurrentPortalScope, getCurrentStateIndex, getSignal, restoreDomCommitScope, setCurrentComponentInstance } from "./component-scope.js";
|
|
2
|
-
import { cleanupComponent, registerOwnedChildScope, unregisterOwnedChildScope } from "./component-cleanup.js";
|
|
3
|
-
import { getCurrentLifecycleCommitBatch, registerLifecycleRollback, registerLifecycleTransaction } from "./lifecycle-batch.js";
|
|
4
|
-
import { captureInlineRenderSnapshot, createComponentInstance, mountComponent, mountInstanceInline, registerCommitOperation, renderComponentInline, renderScopedComponent, warnUnusedStateReads } from "./component-internal.js";
|
|
5
|
-
import "./component-facade.js";
|
|
6
|
-
export { captureInlineRenderSnapshot, claimHookIndex, cleanupComponent, createComponentInstance, enterDomCommitScope, getCurrentComponentInstance, getCurrentInstance, getCurrentLifecycleCommitBatch, getCurrentPortalScope, getCurrentStateIndex, getSignal, mountComponent, mountInstanceInline, registerCommitOperation, registerLifecycleRollback, registerLifecycleTransaction, registerOwnedChildScope, renderComponentInline, renderScopedComponent, restoreDomCommitScope, setCurrentComponentInstance, unregisterOwnedChildScope, warnUnusedStateReads };
|