@askrjs/askr 0.0.52 → 0.0.53
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-j2KoN6ss.js +647 -0
- package/dist/cleanup-COv77su2.js +487 -0
- package/dist/component-internal-B3z7GXlD.js +614 -0
- package/dist/component-lifecycle-CO4hXlP4.js +357 -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-BQvNVfAd.d.ts +436 -0
- package/dist/control-BYyLTFyw.js +165 -0
- package/dist/control-Bf4Wkdvv.d.ts +9 -0
- package/dist/{common/control.js → control-DhFRTIoE.js} +1 -1
- package/dist/data/index.d.ts +2 -6
- package/dist/data/index.js +4 -5
- package/dist/data-DnxnDxD-.js +559 -0
- package/dist/{data/data-runtime.js → data-runtime-SJ1BSUvk.js} +32 -31
- package/dist/deferred-lKE8uR0z.js +386 -0
- package/dist/{runtime/effect.js → effect-BwnIvLah.js} +4 -4
- package/dist/fastlane-Dw8SOBr9.js +343 -0
- package/dist/for-internal-BKf_Tnv1.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-31Uoz_NS.d.ts +239 -0
- package/dist/index-Bki2rqcr.d.ts +233 -0
- package/dist/index-BnU0NPwM.d.ts +101 -0
- package/dist/index-D73jgYx1.d.ts +48 -0
- package/dist/{runtime/runtime.d.ts → index-R2JJIbM-.d.ts} +31 -8
- package/dist/index-SJXJkssx.d.ts +44 -0
- 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-D9va7GOU.js} +4 -5
- package/dist/navigate-BVDCzOuB.d.ts +34 -0
- package/dist/navigate-CmPLSXyw.js +1449 -0
- package/dist/{runtime/portal.js → portal-CyU3Ucf2.js} +33 -36
- package/dist/query-registry-CQIT4mXr.js +73 -0
- package/dist/{common/render-context.js → render-context-Clw3rFiO.js} +14 -6
- package/dist/renderer-DzPjeLby.js +6197 -0
- package/dist/{runtime/resource-operation.js → resource-operation-CEzfpnDk.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-CeYvjj5_.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-D3t80Rc0.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-io9ahUeq.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
package/dist/boot/hydration.js
DELETED
|
@@ -1,139 +0,0 @@
|
|
|
1
|
-
import { isProductionEnvironment } from "../common/env.js";
|
|
2
|
-
import { setStaticChildSlotsCacheEnabled } from "../renderer/static-reuse.js";
|
|
3
|
-
import { registerDeferredHydrationBoundary } from "../renderer/hydration-boundaries.js";
|
|
4
|
-
import "../renderer/dom.js";
|
|
5
|
-
import "../renderer/index.js";
|
|
6
|
-
import "../common/ssr.js";
|
|
7
|
-
//#region src/boot/hydration.ts
|
|
8
|
-
function takeHydrationRenderData(rootElement) {
|
|
9
|
-
for (const child of Array.from(rootElement.children)) if (child instanceof HTMLScriptElement && child.getAttribute("data-askr-render-data") === "true") {
|
|
10
|
-
const raw = child.textContent ?? "";
|
|
11
|
-
child.remove();
|
|
12
|
-
if (!raw) return {};
|
|
13
|
-
try {
|
|
14
|
-
return JSON.parse(raw);
|
|
15
|
-
} catch (err) {
|
|
16
|
-
const error = /* @__PURE__ */ new Error("[Askr] Failed to parse embedded SSR render data during hydration.");
|
|
17
|
-
error.cause = err;
|
|
18
|
-
throw error;
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
return null;
|
|
22
|
-
}
|
|
23
|
-
function markSkippedElements(root, skipSelectors) {
|
|
24
|
-
if (skipSelectors.length === 0) return;
|
|
25
|
-
const selectorList = Array.from(new Set(skipSelectors)).join(", ");
|
|
26
|
-
root.querySelectorAll(selectorList).forEach((el) => el.setAttribute("data-skip-hydrate", "true"));
|
|
27
|
-
}
|
|
28
|
-
function collectDeferredBelowFoldBoundaries(root, foldY) {
|
|
29
|
-
const boundaries = [];
|
|
30
|
-
const stack = [];
|
|
31
|
-
for (let index = root.children.length - 1; index >= 0; index -= 1) stack.push(root.children[index]);
|
|
32
|
-
while (stack.length > 0) {
|
|
33
|
-
const element = stack.pop();
|
|
34
|
-
if (element.hasAttribute("data-skip-hydrate")) continue;
|
|
35
|
-
if (element.getBoundingClientRect().top >= foldY) {
|
|
36
|
-
element.setAttribute("data-skip-hydrate", "true");
|
|
37
|
-
registerDeferredHydrationBoundary(root, element);
|
|
38
|
-
boundaries.push(element);
|
|
39
|
-
continue;
|
|
40
|
-
}
|
|
41
|
-
for (let index = element.children.length - 1; index >= 0; index -= 1) stack.push(element.children[index]);
|
|
42
|
-
}
|
|
43
|
-
return boundaries;
|
|
44
|
-
}
|
|
45
|
-
function activateVisibleDeferredBoundaries(root, boundaries, foldY, activate) {
|
|
46
|
-
let activated = false;
|
|
47
|
-
let remaining = 0;
|
|
48
|
-
for (const element of boundaries) {
|
|
49
|
-
if (!element.hasAttribute("data-skip-hydrate")) continue;
|
|
50
|
-
if (element.getBoundingClientRect().top < foldY) try {
|
|
51
|
-
if (activate(root, element)) activated = true;
|
|
52
|
-
} catch {}
|
|
53
|
-
if (element.hasAttribute("data-skip-hydrate")) remaining += 1;
|
|
54
|
-
}
|
|
55
|
-
return {
|
|
56
|
-
activated,
|
|
57
|
-
remaining
|
|
58
|
-
};
|
|
59
|
-
}
|
|
60
|
-
function queueIdleWork(work) {
|
|
61
|
-
return new Promise((resolve) => {
|
|
62
|
-
if (typeof requestIdleCallback !== "undefined") {
|
|
63
|
-
requestIdleCallback(() => {
|
|
64
|
-
work();
|
|
65
|
-
resolve();
|
|
66
|
-
}, { timeout: 2e3 });
|
|
67
|
-
return;
|
|
68
|
-
}
|
|
69
|
-
setTimeout(() => {
|
|
70
|
-
work();
|
|
71
|
-
resolve();
|
|
72
|
-
}, 0);
|
|
73
|
-
});
|
|
74
|
-
}
|
|
75
|
-
function shouldVerifyHydrationMarkup(config) {
|
|
76
|
-
const explicit = config.hydrate?.verifyMarkup;
|
|
77
|
-
if (typeof explicit === "boolean") return explicit;
|
|
78
|
-
return !isProductionEnvironment();
|
|
79
|
-
}
|
|
80
|
-
async function applySelectiveHydration(rootElement, resolved, path, cleanupStrict, hydrateOptions, source, hooks) {
|
|
81
|
-
const hasPermanentSkips = (hydrateOptions.skipSelectors?.length ?? 0) > 0;
|
|
82
|
-
const hasBelowFoldDeferral = !!hydrateOptions.deferBelowFold;
|
|
83
|
-
const hasSelectiveBoundaries = hasPermanentSkips || hasBelowFoldDeferral;
|
|
84
|
-
let staticChildSlotsCacheSuspended = false;
|
|
85
|
-
let releaseSelectiveHydrationResources = () => {};
|
|
86
|
-
const restoreStaticChildSlotsCache = () => {
|
|
87
|
-
if (!staticChildSlotsCacheSuspended) return;
|
|
88
|
-
setStaticChildSlotsCacheEnabled(true);
|
|
89
|
-
staticChildSlotsCacheSuspended = false;
|
|
90
|
-
};
|
|
91
|
-
if (hydrateOptions.skipSelectors?.length) markSkippedElements(rootElement, hydrateOptions.skipSelectors);
|
|
92
|
-
let deferredBoundaries = [];
|
|
93
|
-
if (hydrateOptions.deferBelowFold) {
|
|
94
|
-
setStaticChildSlotsCacheEnabled(false);
|
|
95
|
-
staticChildSlotsCacheSuspended = true;
|
|
96
|
-
const foldY = hydrateOptions.foldThreshold ?? window.innerHeight;
|
|
97
|
-
deferredBoundaries = collectDeferredBelowFoldBoundaries(rootElement, foldY);
|
|
98
|
-
let selectiveHydrationResourcesReleased = false;
|
|
99
|
-
let unregisterRootCleanupCallback = () => {};
|
|
100
|
-
function handleScroll() {
|
|
101
|
-
const { activated, remaining } = activateVisibleDeferredBoundaries(rootElement, deferredBoundaries, foldY, hooks.activateHydrationBoundary);
|
|
102
|
-
if (!activated) return;
|
|
103
|
-
if (remaining === 0) releaseSelectiveHydrationResources();
|
|
104
|
-
}
|
|
105
|
-
releaseSelectiveHydrationResources = () => {
|
|
106
|
-
if (selectiveHydrationResourcesReleased) return;
|
|
107
|
-
selectiveHydrationResourcesReleased = true;
|
|
108
|
-
unregisterRootCleanupCallback();
|
|
109
|
-
window.removeEventListener("scroll", handleScroll);
|
|
110
|
-
restoreStaticChildSlotsCache();
|
|
111
|
-
};
|
|
112
|
-
unregisterRootCleanupCallback = hooks.registerRootCleanupCallback(rootElement, releaseSelectiveHydrationResources);
|
|
113
|
-
window.addEventListener("scroll", handleScroll, { passive: true });
|
|
114
|
-
}
|
|
115
|
-
if (hydrateOptions.deferUntilIdle && !hasSelectiveBoundaries) {
|
|
116
|
-
await queueIdleWork(() => {
|
|
117
|
-
hooks.mountOrUpdate(rootElement, (() => resolved.handler(resolved.params)), { cleanupStrict });
|
|
118
|
-
});
|
|
119
|
-
await hooks.registerAppNavigation(rootElement, path, source);
|
|
120
|
-
return;
|
|
121
|
-
}
|
|
122
|
-
try {
|
|
123
|
-
hooks.mountOrUpdate(rootElement, (() => resolved.handler(resolved.params)), { cleanupStrict });
|
|
124
|
-
await hooks.registerAppNavigation(rootElement, path, source);
|
|
125
|
-
} catch (error) {
|
|
126
|
-
releaseSelectiveHydrationResources();
|
|
127
|
-
throw error;
|
|
128
|
-
}
|
|
129
|
-
if (hydrateOptions.deferUntilIdle && deferredBoundaries.length > 0) await queueIdleWork(() => {
|
|
130
|
-
try {
|
|
131
|
-
activateVisibleDeferredBoundaries(rootElement, deferredBoundaries, Number.POSITIVE_INFINITY, hooks.activateHydrationBoundary);
|
|
132
|
-
} finally {
|
|
133
|
-
releaseSelectiveHydrationResources();
|
|
134
|
-
}
|
|
135
|
-
});
|
|
136
|
-
if (deferredBoundaries.length === 0) releaseSelectiveHydrationResources();
|
|
137
|
-
}
|
|
138
|
-
//#endregion
|
|
139
|
-
export { applySelectiveHydration, markSkippedElements, shouldVerifyHydrationMarkup, takeHydrationRenderData };
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import { ComponentInstance } from "../runtime/component-internal.js";
|
|
2
|
-
import { ComponentFunction } from "../common/component.js";
|
|
3
|
-
import { BootAppRouteSource } from "./types.js";
|
|
4
|
-
|
|
5
|
-
//#region src/boot/root-lifecycle.d.ts
|
|
6
|
-
declare function registerRootCleanupCallback(rootElement: Element, callback: () => void): () => void;
|
|
7
|
-
declare function mountOrUpdate(rootElement: Element, componentFn: ComponentFunction, options?: {
|
|
8
|
-
cleanupStrict?: boolean;
|
|
9
|
-
}): void;
|
|
10
|
-
/** @internal Activate one deferred boundary without rerunning its root. */
|
|
11
|
-
declare function activateHydrationBoundary(rootElement: Element, boundary: Element): boolean;
|
|
12
|
-
/** @internal Move a prepared, off-tree root instance into a mounted root. */
|
|
13
|
-
declare function replaceMountedRootInstance(rootElement: Element, previousInstance: ComponentInstance, nextInstance: ComponentInstance): void;
|
|
14
|
-
declare function registerAppNavigation(rootElement: Element, path: string, source?: BootAppRouteSource): Promise<void>;
|
|
15
|
-
declare function cleanupApp(root: Element | string): void;
|
|
16
|
-
declare function hasApp(root: Element | string): boolean;
|
|
17
|
-
//#endregion
|
|
18
|
-
export { cleanupApp, hasApp };
|
|
@@ -1,209 +0,0 @@
|
|
|
1
|
-
import { isDevelopmentEnvironment } from "../common/env.js";
|
|
2
|
-
import { logger } from "../common/logger.js";
|
|
3
|
-
import { flushRuntimeScheduler } from "../runtime/access.js";
|
|
4
|
-
import { ELEMENT_TYPE, Fragment } from "../common/jsx.js";
|
|
5
|
-
import { cleanupComponent } from "../runtime/component-cleanup.js";
|
|
6
|
-
import { isPromiseLike } from "../common/promise.js";
|
|
7
|
-
import { createComponentInstance, mountComponent } from "../runtime/component-internal.js";
|
|
8
|
-
import { DefaultPortal, disposeDefaultPortalScope } from "../runtime/portal.js";
|
|
9
|
-
import "../runtime/index.js";
|
|
10
|
-
import { removeAllListeners, teardownNodeSubtree } from "../renderer/cleanup.js";
|
|
11
|
-
import "../jsx/index.js";
|
|
12
|
-
import { clearDeferredHydrationBoundaries } from "../renderer/hydration-boundaries.js";
|
|
13
|
-
import { activateHydrationBoundary as activateHydrationBoundary$1 } from "../renderer/dom-internal.js";
|
|
14
|
-
import { installRendererBridge } from "../renderer/index.js";
|
|
15
|
-
import { clearRoutes } from "../router/manifest.js";
|
|
16
|
-
import "../router/route.js";
|
|
17
|
-
import { registerAppInstance, unregisterAppInstance } from "../router/navigation-registry.js";
|
|
18
|
-
import { initializeNavigation } from "../router/navigate.js";
|
|
19
|
-
//#region src/boot/root-lifecycle.ts
|
|
20
|
-
installRendererBridge();
|
|
21
|
-
let componentIdCounter = 0;
|
|
22
|
-
const instancesByRoot = /* @__PURE__ */ new WeakMap();
|
|
23
|
-
const routedRoots = /* @__PURE__ */ new Set();
|
|
24
|
-
const CLEANUP_SYMBOL = Symbol.for("__askrCleanup__");
|
|
25
|
-
const ROOT_CLEANUP_CALLBACKS_SYMBOL = Symbol.for("__askrRootCleanupCallbacks__");
|
|
26
|
-
function clearRootCleanupCallbacks(rootElement) {
|
|
27
|
-
try {
|
|
28
|
-
delete rootElement[ROOT_CLEANUP_CALLBACKS_SYMBOL];
|
|
29
|
-
} catch {
|
|
30
|
-
rootElement[ROOT_CLEANUP_CALLBACKS_SYMBOL]?.clear();
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
function registerRootCleanupCallback(rootElement, callback) {
|
|
34
|
-
const elementWithCleanup = rootElement;
|
|
35
|
-
const callbacks = elementWithCleanup[ROOT_CLEANUP_CALLBACKS_SYMBOL] ?? /* @__PURE__ */ new Set();
|
|
36
|
-
callbacks.add(callback);
|
|
37
|
-
elementWithCleanup[ROOT_CLEANUP_CALLBACKS_SYMBOL] = callbacks;
|
|
38
|
-
return () => {
|
|
39
|
-
callbacks.delete(callback);
|
|
40
|
-
if (callbacks.size === 0) clearRootCleanupCallbacks(rootElement);
|
|
41
|
-
};
|
|
42
|
-
}
|
|
43
|
-
function runRootCleanupCallbacks(rootElement, errors) {
|
|
44
|
-
const callbacks = rootElement[ROOT_CLEANUP_CALLBACKS_SYMBOL];
|
|
45
|
-
if (!callbacks || callbacks.size === 0) {
|
|
46
|
-
clearRootCleanupCallbacks(rootElement);
|
|
47
|
-
return;
|
|
48
|
-
}
|
|
49
|
-
clearRootCleanupCallbacks(rootElement);
|
|
50
|
-
for (const callback of callbacks) try {
|
|
51
|
-
callback();
|
|
52
|
-
} catch (e) {
|
|
53
|
-
errors.push(e);
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
function cleanupRootInstance(rootElement, instance, options) {
|
|
57
|
-
const errors = [];
|
|
58
|
-
try {
|
|
59
|
-
teardownNodeSubtree(rootElement);
|
|
60
|
-
} catch (e) {
|
|
61
|
-
errors.push(e);
|
|
62
|
-
}
|
|
63
|
-
try {
|
|
64
|
-
cleanupComponent(instance);
|
|
65
|
-
} catch (e) {
|
|
66
|
-
errors.push(e);
|
|
67
|
-
}
|
|
68
|
-
runRootCleanupCallbacks(rootElement, errors);
|
|
69
|
-
clearDeferredHydrationBoundaries(rootElement);
|
|
70
|
-
if (!options?.preserveInstance) {
|
|
71
|
-
unregisterAppInstance(instance);
|
|
72
|
-
instancesByRoot.delete(rootElement);
|
|
73
|
-
clearRootCleanupCallbacks(rootElement);
|
|
74
|
-
try {
|
|
75
|
-
delete rootElement[CLEANUP_SYMBOL];
|
|
76
|
-
} catch {}
|
|
77
|
-
}
|
|
78
|
-
if (errors.length > 0) {
|
|
79
|
-
if (instance.cleanupStrict) throw new AggregateError(errors, `cleanup failed for app root`);
|
|
80
|
-
else if (isDevelopmentEnvironment()) for (const err of errors) logger.warn("[Askr] cleanup error:", err);
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
function attachCleanupForRoot(rootElement, instance) {
|
|
84
|
-
rootElement[CLEANUP_SYMBOL] = (options) => {
|
|
85
|
-
cleanupRootInstance(rootElement, instance, options);
|
|
86
|
-
};
|
|
87
|
-
try {
|
|
88
|
-
const descriptor = Object.getOwnPropertyDescriptor(rootElement, "innerHTML") || Object.getOwnPropertyDescriptor(Object.getPrototypeOf(rootElement), "innerHTML") || Object.getOwnPropertyDescriptor(Element.prototype, "innerHTML");
|
|
89
|
-
if (descriptor && (descriptor.get || descriptor.set)) Object.defineProperty(rootElement, "innerHTML", {
|
|
90
|
-
get: descriptor.get ? function() {
|
|
91
|
-
return descriptor.get.call(this);
|
|
92
|
-
} : void 0,
|
|
93
|
-
set: function(value) {
|
|
94
|
-
if (value === "" && instancesByRoot.get(this) === instance) cleanupRootInstance(rootElement, instance);
|
|
95
|
-
if (descriptor.set) return descriptor.set.call(this, value);
|
|
96
|
-
},
|
|
97
|
-
configurable: true
|
|
98
|
-
});
|
|
99
|
-
} catch {}
|
|
100
|
-
}
|
|
101
|
-
function mountOrUpdate(rootElement, componentFn, options) {
|
|
102
|
-
const wrappedFn = (props, ctx) => {
|
|
103
|
-
const out = componentFn(props, ctx);
|
|
104
|
-
if (isPromiseLike(out)) throw new Error("Async components are not supported. Components must return synchronously.");
|
|
105
|
-
const portalVNode = {
|
|
106
|
-
$$typeof: ELEMENT_TYPE,
|
|
107
|
-
type: DefaultPortal,
|
|
108
|
-
props: { __askrAutoDefaultPortal: true },
|
|
109
|
-
key: "__default_portal"
|
|
110
|
-
};
|
|
111
|
-
return {
|
|
112
|
-
$$typeof: ELEMENT_TYPE,
|
|
113
|
-
type: Fragment,
|
|
114
|
-
props: { children: out === void 0 || out === null ? [portalVNode] : [out, portalVNode] }
|
|
115
|
-
};
|
|
116
|
-
};
|
|
117
|
-
Object.defineProperty(wrappedFn, "name", { value: componentFn.name || "Component" });
|
|
118
|
-
const existingCleanup = rootElement[CLEANUP_SYMBOL];
|
|
119
|
-
const reusedExistingInstance = typeof existingCleanup === "function";
|
|
120
|
-
if (reusedExistingInstance) existingCleanup({ preserveInstance: true });
|
|
121
|
-
let instance = instancesByRoot.get(rootElement);
|
|
122
|
-
if (instance) {
|
|
123
|
-
const shouldResetHookState = instance._rootComponentFn !== componentFn;
|
|
124
|
-
if (!reusedExistingInstance) {
|
|
125
|
-
removeAllListeners(rootElement);
|
|
126
|
-
try {
|
|
127
|
-
cleanupComponent(instance);
|
|
128
|
-
} catch (e) {
|
|
129
|
-
if (isDevelopmentEnvironment()) logger.warn("[Askr] prior cleanup threw:", e);
|
|
130
|
-
}
|
|
131
|
-
}
|
|
132
|
-
instance.fn = wrappedFn;
|
|
133
|
-
instance._rootComponentFn = componentFn;
|
|
134
|
-
instance.evaluationGeneration++;
|
|
135
|
-
instance.mounted = false;
|
|
136
|
-
instance.expectedStateIndices = [];
|
|
137
|
-
instance.firstRenderComplete = false;
|
|
138
|
-
instance.isRoot = true;
|
|
139
|
-
instance.portalScope = instance;
|
|
140
|
-
if (shouldResetHookState) {
|
|
141
|
-
instance.stateValues = [];
|
|
142
|
-
instance.hasPendingUpdate = false;
|
|
143
|
-
instance.notifyUpdate = null;
|
|
144
|
-
instance.stateIndexCheck = -1;
|
|
145
|
-
instance.mountOperations = [];
|
|
146
|
-
instance.commitOperations = [];
|
|
147
|
-
instance.lifecycleSlots = [];
|
|
148
|
-
instance.cleanupFns = [];
|
|
149
|
-
instance._currentRenderToken = void 0;
|
|
150
|
-
instance.lastRenderToken = 0;
|
|
151
|
-
instance._pendingReadSources = void 0;
|
|
152
|
-
instance._lastReadSources = void 0;
|
|
153
|
-
instance._placeholder = void 0;
|
|
154
|
-
instance.errorBoundaryState = void 0;
|
|
155
|
-
instance.devWarningsEmitted = void 0;
|
|
156
|
-
}
|
|
157
|
-
if (options && typeof options.cleanupStrict === "boolean") instance.cleanupStrict = options.cleanupStrict;
|
|
158
|
-
} else {
|
|
159
|
-
instance = createComponentInstance(String(++componentIdCounter), wrappedFn, {}, rootElement);
|
|
160
|
-
instancesByRoot.set(rootElement, instance);
|
|
161
|
-
instance.isRoot = true;
|
|
162
|
-
instance._rootComponentFn = componentFn;
|
|
163
|
-
instance.portalScope = instance;
|
|
164
|
-
if (options && typeof options.cleanupStrict === "boolean") instance.cleanupStrict = options.cleanupStrict;
|
|
165
|
-
}
|
|
166
|
-
attachCleanupForRoot(rootElement, instance);
|
|
167
|
-
registerRootCleanupCallback(rootElement, () => {
|
|
168
|
-
disposeDefaultPortalScope(instance.portalScope ?? instance);
|
|
169
|
-
});
|
|
170
|
-
mountComponent(instance);
|
|
171
|
-
flushRuntimeScheduler();
|
|
172
|
-
}
|
|
173
|
-
/** @internal Activate one deferred boundary without rerunning its root. */
|
|
174
|
-
function activateHydrationBoundary(rootElement, boundary) {
|
|
175
|
-
if (!instancesByRoot.has(rootElement)) return false;
|
|
176
|
-
const activated = activateHydrationBoundary$1(boundary);
|
|
177
|
-
if (activated) flushRuntimeScheduler();
|
|
178
|
-
return activated;
|
|
179
|
-
}
|
|
180
|
-
async function registerAppNavigation(rootElement, path, source) {
|
|
181
|
-
const instance = instancesByRoot.get(rootElement);
|
|
182
|
-
if (!instance) throw new Error("Internal error: app instance missing");
|
|
183
|
-
routedRoots.add(rootElement);
|
|
184
|
-
registerAppInstance(instance, path, source);
|
|
185
|
-
initializeNavigation();
|
|
186
|
-
}
|
|
187
|
-
function cleanupApp(root) {
|
|
188
|
-
const rootElement = typeof root === "string" ? document.getElementById(root) : root;
|
|
189
|
-
if (!rootElement) return;
|
|
190
|
-
const cleanupFn = rootElement[CLEANUP_SYMBOL];
|
|
191
|
-
try {
|
|
192
|
-
if (typeof cleanupFn === "function") cleanupFn();
|
|
193
|
-
} finally {
|
|
194
|
-
const wasRoutedRoot = routedRoots.delete(rootElement);
|
|
195
|
-
instancesByRoot.delete(rootElement);
|
|
196
|
-
clearRootCleanupCallbacks(rootElement);
|
|
197
|
-
if (wasRoutedRoot && routedRoots.size === 0) clearRoutes();
|
|
198
|
-
try {
|
|
199
|
-
delete rootElement[CLEANUP_SYMBOL];
|
|
200
|
-
} catch {}
|
|
201
|
-
}
|
|
202
|
-
}
|
|
203
|
-
function hasApp(root) {
|
|
204
|
-
const rootElement = typeof root === "string" ? document.getElementById(root) : root;
|
|
205
|
-
if (!rootElement) return false;
|
|
206
|
-
return instancesByRoot.has(rootElement);
|
|
207
|
-
}
|
|
208
|
-
//#endregion
|
|
209
|
-
export { activateHydrationBoundary, cleanupApp, hasApp, mountOrUpdate, registerAppNavigation, registerRootCleanupCallback };
|
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
import { resolveRouteFromRoutes } from "../router/route-matching.js";
|
|
2
|
-
import { resolveRouteRequest } from "../router/resolution.js";
|
|
3
|
-
import "../router/route.js";
|
|
4
|
-
//#region src/boot/route-startup.ts
|
|
5
|
-
const MAX_INITIAL_ROUTE_REDIRECTS = 20;
|
|
6
|
-
function bindResolvedRouteHandler(resolved) {
|
|
7
|
-
return () => resolved.handler(resolved.params);
|
|
8
|
-
}
|
|
9
|
-
function createDeniedStatusNode(status) {
|
|
10
|
-
return {
|
|
11
|
-
type: "div",
|
|
12
|
-
props: { "data-route-denied": String(status) },
|
|
13
|
-
children: [String(status)]
|
|
14
|
-
};
|
|
15
|
-
}
|
|
16
|
-
function bindDeniedStatus(status) {
|
|
17
|
-
return () => createDeniedStatusNode(status);
|
|
18
|
-
}
|
|
19
|
-
function bindDeniedRouteHandler(status) {
|
|
20
|
-
return () => createDeniedStatusNode(status);
|
|
21
|
-
}
|
|
22
|
-
async function resolveInitialRoute(auth, source) {
|
|
23
|
-
let path = typeof window !== "undefined" ? window.location.pathname : "/";
|
|
24
|
-
let href = typeof window !== "undefined" ? `${window.location.pathname}${window.location.search}${window.location.hash}` : path;
|
|
25
|
-
const visited = /* @__PURE__ */ new Set();
|
|
26
|
-
for (let redirects = 0; redirects <= MAX_INITIAL_ROUTE_REDIRECTS; redirects++) {
|
|
27
|
-
if (visited.has(href)) throw new Error(`[Askr] Route redirect cycle detected at ${href}.`);
|
|
28
|
-
visited.add(href);
|
|
29
|
-
const resolved = source?.manifest ? await resolveRouteRequest(href, {
|
|
30
|
-
manifest: source.manifest,
|
|
31
|
-
auth
|
|
32
|
-
}) : source?.routes ? (() => {
|
|
33
|
-
const match = resolveRouteFromRoutes(path, source.routes);
|
|
34
|
-
return match ? {
|
|
35
|
-
kind: "render",
|
|
36
|
-
handler: match.handler,
|
|
37
|
-
params: match.params
|
|
38
|
-
} : null;
|
|
39
|
-
})() : await resolveRouteRequest(href, { auth });
|
|
40
|
-
if (typeof window === "undefined" || !resolved || resolved.kind !== "redirect") return {
|
|
41
|
-
path,
|
|
42
|
-
href,
|
|
43
|
-
resolved
|
|
44
|
-
};
|
|
45
|
-
const redirectTarget = new URL(resolved.to, window.location.href);
|
|
46
|
-
const redirectHref = `${redirectTarget.pathname}${redirectTarget.search}${redirectTarget.hash}`;
|
|
47
|
-
window.history.replaceState({ path: redirectHref }, "", redirectHref);
|
|
48
|
-
path = redirectTarget.pathname;
|
|
49
|
-
href = redirectHref;
|
|
50
|
-
}
|
|
51
|
-
throw new Error(`[Askr] Route redirect limit exceeded (${MAX_INITIAL_ROUTE_REDIRECTS}).`);
|
|
52
|
-
}
|
|
53
|
-
//#endregion
|
|
54
|
-
export { bindDeniedRouteHandler, bindDeniedStatus, bindResolvedRouteHandler, resolveInitialRoute };
|
package/dist/boot/types.d.ts
DELETED
|
@@ -1,61 +0,0 @@
|
|
|
1
|
-
import { ComponentFunction } from "../common/component.js";
|
|
2
|
-
import { Route, RouteAuthOptions, RouteManifest, RouteRegistry } from "../common/router.js";
|
|
3
|
-
import { ScrollRestorationOptions } from "../router/navigation-scroll.js";
|
|
4
|
-
//#region src/boot/types.d.ts
|
|
5
|
-
type IslandConfig = {
|
|
6
|
-
root: Element | string;
|
|
7
|
-
component: ComponentFunction;
|
|
8
|
-
cleanupStrict?: boolean;
|
|
9
|
-
routes?: never;
|
|
10
|
-
};
|
|
11
|
-
type IslandsConfig = {
|
|
12
|
-
islands: IslandConfig[];
|
|
13
|
-
};
|
|
14
|
-
type BootRouteSource = {
|
|
15
|
-
registry: RouteRegistry;
|
|
16
|
-
manifest?: RouteManifest;
|
|
17
|
-
routes?: Route[];
|
|
18
|
-
} | {
|
|
19
|
-
manifest: RouteManifest;
|
|
20
|
-
registry?: RouteRegistry;
|
|
21
|
-
routes?: Route[];
|
|
22
|
-
} | {
|
|
23
|
-
manifest?: RouteManifest;
|
|
24
|
-
registry?: RouteRegistry;
|
|
25
|
-
routes: Route[];
|
|
26
|
-
};
|
|
27
|
-
type SPAConfig = BootRouteSource & {
|
|
28
|
-
root: Element | string;
|
|
29
|
-
/**
|
|
30
|
-
* Preferred: pass a route registry built via `createRouteRegistry(() => { ... })`.
|
|
31
|
-
* ```ts
|
|
32
|
-
* import { createRouteRegistry } from '@askrjs/askr/router';
|
|
33
|
-
* const registry = createRouteRegistry(() => { ... });
|
|
34
|
-
* await createSPA({ root: '#app', registry });
|
|
35
|
-
* ```
|
|
36
|
-
*/
|
|
37
|
-
auth?: RouteAuthOptions;
|
|
38
|
-
scrollRestoration?: boolean | ScrollRestorationOptions;
|
|
39
|
-
cleanupStrict?: boolean;
|
|
40
|
-
component?: never;
|
|
41
|
-
};
|
|
42
|
-
type HydrateSPAConfig = BootRouteSource & {
|
|
43
|
-
root: Element | string; /** Preferred route input - see `SPAConfig`. */
|
|
44
|
-
auth?: RouteAuthOptions;
|
|
45
|
-
scrollRestoration?: boolean | ScrollRestorationOptions;
|
|
46
|
-
cleanupStrict?: boolean;
|
|
47
|
-
hydrate?: {
|
|
48
|
-
verifyMarkup?: boolean;
|
|
49
|
-
deferUntilIdle?: boolean;
|
|
50
|
-
deferBelowFold?: boolean;
|
|
51
|
-
foldThreshold?: number;
|
|
52
|
-
skipSelectors?: string[];
|
|
53
|
-
};
|
|
54
|
-
};
|
|
55
|
-
type BootAppRouteSource = {
|
|
56
|
-
manifest?: RouteManifest;
|
|
57
|
-
routes?: readonly Route[];
|
|
58
|
-
auth?: RouteAuthOptions;
|
|
59
|
-
};
|
|
60
|
-
//#endregion
|
|
61
|
-
export { BootAppRouteSource, HydrateSPAConfig, IslandConfig, IslandsConfig, SPAConfig };
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import { Props } from "./props.js";
|
|
2
|
-
import { JSXElement } from "./jsx.js";
|
|
3
|
-
import { SSRContext } from "./ssr.js";
|
|
4
|
-
import { VNode } from "./vnode.js";
|
|
5
|
-
|
|
6
|
-
//#region src/common/component.d.ts
|
|
7
|
-
type ComponentContext = {
|
|
8
|
-
signal: AbortSignal;
|
|
9
|
-
ssr?: SSRContext;
|
|
10
|
-
};
|
|
11
|
-
type ComponentVNode = {
|
|
12
|
-
type: string;
|
|
13
|
-
props?: Props;
|
|
14
|
-
children?: (string | ComponentVNode | null | undefined | false)[];
|
|
15
|
-
};
|
|
16
|
-
type ComponentFunction = (props: Props, context?: ComponentContext) => JSXElement | VNode;
|
|
17
|
-
//#endregion
|
|
18
|
-
export { ComponentContext, ComponentFunction, ComponentVNode };
|
package/dist/common/control.d.ts
DELETED
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import { Props } from "./props.js";
|
|
2
|
-
|
|
3
|
-
//#region src/common/control.d.ts
|
|
4
|
-
declare const __CONTROL_BOUNDARY__: unique symbol;
|
|
5
|
-
declare const EAGER_CONTROL_PRIMITIVE: unique symbol;
|
|
6
|
-
type EagerControlPrimitive<P extends Props = Props> = ((props: P) => unknown) & {
|
|
7
|
-
[EAGER_CONTROL_PRIMITIVE]?: true;
|
|
8
|
-
};
|
|
9
|
-
declare function markEagerControlPrimitive<T extends (...args: never[]) => unknown>(primitive: T): T;
|
|
10
|
-
declare function isEagerControlPrimitive(value: unknown): value is EagerControlPrimitive;
|
|
11
|
-
//#endregion
|
|
12
|
-
export { EagerControlPrimitive };
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
//#region src/common/dom-range.d.ts
|
|
2
|
-
/**
|
|
3
|
-
* Internal DOM range shape shared by runtime ownership records and the
|
|
4
|
-
* renderer. A singleton range uses the node itself for both anchors; a
|
|
5
|
-
* multi-node or empty range uses deterministic comment anchors.
|
|
6
|
-
*/
|
|
7
|
-
interface DOMRange {
|
|
8
|
-
start: Node;
|
|
9
|
-
end: Node;
|
|
10
|
-
single: boolean;
|
|
11
|
-
}
|
|
12
|
-
//#endregion
|
|
13
|
-
export { DOMRange };
|
package/dist/common/env.js
DELETED
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
//#region src/common/env.ts
|
|
2
|
-
function normalizeEnv(source) {
|
|
3
|
-
if (!source) return {};
|
|
4
|
-
const normalized = {};
|
|
5
|
-
for (const [key, value] of Object.entries(source)) if (typeof value === "string") normalized[key] = value;
|
|
6
|
-
else if (typeof value === "boolean" || typeof value === "number") normalized[key] = String(value);
|
|
7
|
-
return normalized;
|
|
8
|
-
}
|
|
9
|
-
function getBuildTimeEnv() {
|
|
10
|
-
const metaEnv = import.meta.env;
|
|
11
|
-
const normalized = normalizeEnv(metaEnv);
|
|
12
|
-
if (normalized.NODE_ENV == null && metaEnv) {
|
|
13
|
-
if (typeof metaEnv.MODE === "string" && metaEnv.MODE.length > 0) normalized.NODE_ENV = metaEnv.MODE;
|
|
14
|
-
else if (metaEnv.PROD === true || metaEnv.PROD === "true") normalized.NODE_ENV = "production";
|
|
15
|
-
else if (metaEnv.DEV === true || metaEnv.DEV === "true") normalized.NODE_ENV = "development";
|
|
16
|
-
}
|
|
17
|
-
return normalized;
|
|
18
|
-
}
|
|
19
|
-
function resolveNodeEnv(processNodeEnv, buildNodeEnv) {
|
|
20
|
-
if (buildNodeEnv === "production") return "production";
|
|
21
|
-
if (processNodeEnv != null) return processNodeEnv;
|
|
22
|
-
if (buildNodeEnv === "development") return "development";
|
|
23
|
-
return buildNodeEnv === "test" ? void 0 : buildNodeEnv;
|
|
24
|
-
}
|
|
25
|
-
function getRuntimeEnv() {
|
|
26
|
-
const processEnv = globalThis.process?.env ?? {};
|
|
27
|
-
const buildTimeEnv = getBuildTimeEnv();
|
|
28
|
-
return {
|
|
29
|
-
...processEnv,
|
|
30
|
-
...buildTimeEnv,
|
|
31
|
-
NODE_ENV: resolveNodeEnv(processEnv.NODE_ENV, buildTimeEnv.NODE_ENV)
|
|
32
|
-
};
|
|
33
|
-
}
|
|
34
|
-
function isProductionEnvironment() {
|
|
35
|
-
return getRuntimeEnv().NODE_ENV === "production";
|
|
36
|
-
}
|
|
37
|
-
function isDevelopmentEnvironment() {
|
|
38
|
-
return !isProductionEnvironment();
|
|
39
|
-
}
|
|
40
|
-
//#endregion
|
|
41
|
-
export { getRuntimeEnv, isDevelopmentEnvironment, isProductionEnvironment };
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import { Props } from "./props.js";
|
|
2
|
-
import { VNode } from "./vnode.js";
|
|
3
|
-
|
|
4
|
-
//#region src/common/error-boundary.d.ts
|
|
5
|
-
type ErrorBoundaryContent = VNode | readonly VNode[];
|
|
6
|
-
type ErrorBoundaryFallbackValue = ErrorBoundaryContent | Node;
|
|
7
|
-
type ErrorBoundaryFallbackRender = (error: unknown, reset: () => void) => ErrorBoundaryFallbackValue;
|
|
8
|
-
interface ErrorBoundaryProps extends Props {
|
|
9
|
-
children?: ErrorBoundaryContent;
|
|
10
|
-
fallback?: ErrorBoundaryFallbackValue | ErrorBoundaryFallbackRender;
|
|
11
|
-
onError?: (error: unknown) => void;
|
|
12
|
-
resetKey?: unknown;
|
|
13
|
-
}
|
|
14
|
-
//#endregion
|
|
15
|
-
export { ErrorBoundaryContent, ErrorBoundaryFallbackRender, ErrorBoundaryFallbackValue, ErrorBoundaryProps };
|
package/dist/common/invariant.js
DELETED
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
//#region src/common/invariant.ts
|
|
2
|
-
/**
|
|
3
|
-
* Invariant assertions shared by production runtime code.
|
|
4
|
-
*/
|
|
5
|
-
function invariant(condition, message, context) {
|
|
6
|
-
if (!condition) {
|
|
7
|
-
const contextStr = context ? "\n" + JSON.stringify(context, null, 2) : "";
|
|
8
|
-
throw new Error(`[Askr Invariant] ${message}${contextStr}`);
|
|
9
|
-
}
|
|
10
|
-
}
|
|
11
|
-
function assertSchedulingPrecondition(condition, violationMessage) {
|
|
12
|
-
invariant(condition, `[Scheduler Precondition] ${violationMessage}`);
|
|
13
|
-
}
|
|
14
|
-
//#endregion
|
|
15
|
-
export { assertSchedulingPrecondition, invariant };
|
package/dist/common/jsx.d.ts
DELETED
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import { Props } from "./props.js";
|
|
2
|
-
|
|
3
|
-
//#region src/common/jsx.d.ts
|
|
4
|
-
declare const ELEMENT_TYPE: unique symbol;
|
|
5
|
-
declare const Fragment: unique symbol;
|
|
6
|
-
declare const STATIC_CHILDREN: unique symbol;
|
|
7
|
-
type JSXComponent<TProps extends object = Props> = {
|
|
8
|
-
bivarianceHack(props: TProps): unknown;
|
|
9
|
-
}['bivarianceHack'];
|
|
10
|
-
type JSXElementType = string | JSXComponent | symbol;
|
|
11
|
-
interface JSXElement {
|
|
12
|
-
/** Internal element marker */
|
|
13
|
-
$$typeof: symbol;
|
|
14
|
-
/** Element type: string, component, Fragment, etc */
|
|
15
|
-
type: JSXElementType;
|
|
16
|
-
/** Props bag */
|
|
17
|
-
props: Props;
|
|
18
|
-
/** Optional key (normalized by runtime) */
|
|
19
|
-
key?: string | number | null;
|
|
20
|
-
}
|
|
21
|
-
//#endregion
|
|
22
|
-
export { Fragment, JSXComponent, JSXElement, JSXElementType };
|
package/dist/common/logger.js
DELETED
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
import { isProductionEnvironment } from "./env.js";
|
|
2
|
-
//#region src/common/logger.ts
|
|
3
|
-
/**
|
|
4
|
-
* Shared logger interface for runtime and tooling code.
|
|
5
|
-
*
|
|
6
|
-
* Debug, info, and warn stay silent in production. Errors always log.
|
|
7
|
-
*/
|
|
8
|
-
function callConsole(method, args) {
|
|
9
|
-
const c = typeof console !== "undefined" ? console : void 0;
|
|
10
|
-
if (!c) return;
|
|
11
|
-
const fn = c[method];
|
|
12
|
-
if (typeof fn === "function") try {
|
|
13
|
-
fn.apply(console, args);
|
|
14
|
-
} catch {}
|
|
15
|
-
}
|
|
16
|
-
const logger = {
|
|
17
|
-
debug: (...args) => {
|
|
18
|
-
if (isProductionEnvironment()) return;
|
|
19
|
-
callConsole("debug", args);
|
|
20
|
-
},
|
|
21
|
-
info: (...args) => {
|
|
22
|
-
if (isProductionEnvironment()) return;
|
|
23
|
-
callConsole("info", args);
|
|
24
|
-
},
|
|
25
|
-
warn: (...args) => {
|
|
26
|
-
if (isProductionEnvironment()) return;
|
|
27
|
-
callConsole("warn", args);
|
|
28
|
-
},
|
|
29
|
-
error: (...args) => {
|
|
30
|
-
callConsole("error", args);
|
|
31
|
-
}
|
|
32
|
-
};
|
|
33
|
-
//#endregion
|
|
34
|
-
export { logger };
|
package/dist/common/promise.js
DELETED