@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/router/lazy.js
DELETED
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
//#region src/router/lazy.ts
|
|
2
|
-
const pendingLazy = /* @__PURE__ */ new Set();
|
|
3
|
-
const registryLazyImports = /* @__PURE__ */ new WeakMap();
|
|
4
|
-
const manifestLazyImports = /* @__PURE__ */ new WeakMap();
|
|
5
|
-
function lazy(factory) {
|
|
6
|
-
let resolved = null;
|
|
7
|
-
let loadError = null;
|
|
8
|
-
const promise = factory().then((mod) => {
|
|
9
|
-
resolved = typeof mod === "function" ? mod : mod.default;
|
|
10
|
-
pendingLazy.delete(promise);
|
|
11
|
-
}, (err) => {
|
|
12
|
-
loadError = err;
|
|
13
|
-
pendingLazy.delete(promise);
|
|
14
|
-
});
|
|
15
|
-
pendingLazy.add(promise);
|
|
16
|
-
return ((params) => {
|
|
17
|
-
if (loadError) throw loadError;
|
|
18
|
-
if (!resolved) throw new Error("lazy() component used before it was resolved. Await createSPA() / hydrateSPA() to ensure all chunks load first.");
|
|
19
|
-
return resolved(params);
|
|
20
|
-
});
|
|
21
|
-
}
|
|
22
|
-
function _snapshotLazy() {
|
|
23
|
-
return [...pendingLazy];
|
|
24
|
-
}
|
|
25
|
-
function _snapshotRouteSourceLazy(source) {
|
|
26
|
-
const imports = /* @__PURE__ */ new Set();
|
|
27
|
-
if (source.registry) for (const lazyImport of registryLazyImports.get(source.registry) ?? []) imports.add(lazyImport);
|
|
28
|
-
const manifest = source.manifest ?? source.registry?.manifest;
|
|
29
|
-
if (manifest) for (const lazyImport of manifestLazyImports.get(manifest) ?? []) imports.add(lazyImport);
|
|
30
|
-
return [...imports];
|
|
31
|
-
}
|
|
32
|
-
function _drainLazy(additionalPending = []) {
|
|
33
|
-
const combined = /* @__PURE__ */ new Set([...additionalPending, ...pendingLazy]);
|
|
34
|
-
if (combined.size === 0) return Promise.resolve();
|
|
35
|
-
return Promise.allSettled(combined).then(() => void 0);
|
|
36
|
-
}
|
|
37
|
-
function associateRouteSourceLazy(registry, manifest, lazyImports) {
|
|
38
|
-
if (lazyImports.length === 0) return;
|
|
39
|
-
registryLazyImports.set(registry, lazyImports);
|
|
40
|
-
manifestLazyImports.set(manifest, lazyImports);
|
|
41
|
-
}
|
|
42
|
-
function clearPendingLazy() {
|
|
43
|
-
pendingLazy.clear();
|
|
44
|
-
}
|
|
45
|
-
function restorePendingLazy(lazyImports) {
|
|
46
|
-
pendingLazy.clear();
|
|
47
|
-
for (const lazyImport of lazyImports) pendingLazy.add(lazyImport);
|
|
48
|
-
}
|
|
49
|
-
//#endregion
|
|
50
|
-
export { _drainLazy, _snapshotLazy, _snapshotRouteSourceLazy, associateRouteSourceLazy, clearPendingLazy, lazy, restorePendingLazy };
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import { RegisterRoutesOptions, RouteDefinition, RouteManifest, RouteRegistry } from "../common/router.js";
|
|
2
|
-
|
|
3
|
-
//#region src/router/manifest.d.ts
|
|
4
|
-
declare function getManifest(): RouteManifest;
|
|
5
|
-
declare function _applyManifest(manifest: RouteManifest): void;
|
|
6
|
-
declare function clearRoutes(): void;
|
|
7
|
-
declare function createRouteRegistry(definition: RouteDefinition, options?: RegisterRoutesOptions): RouteRegistry;
|
|
8
|
-
//#endregion
|
|
9
|
-
export { clearRoutes, createRouteRegistry, getManifest };
|
package/dist/router/manifest.js
DELETED
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
import { addRouteToStores, clearRouteState, getDefaultRouteAuthOptions, getRouteRecords, getRoutes, insertRecordSorted, restoreRouteState, setDefaultRouteAuthOptions, snapshotRouteState } from "./store.js";
|
|
2
|
-
import { registerRoutes } from "./authoring.js";
|
|
3
|
-
import { _snapshotLazy, associateRouteSourceLazy, clearPendingLazy, restorePendingLazy } from "./lazy.js";
|
|
4
|
-
//#region src/router/manifest.ts
|
|
5
|
-
function getManifest() {
|
|
6
|
-
const auth = getDefaultRouteAuthOptions();
|
|
7
|
-
return {
|
|
8
|
-
records: [...getRouteRecords()],
|
|
9
|
-
...auth ? { auth } : {}
|
|
10
|
-
};
|
|
11
|
-
}
|
|
12
|
-
function _applyManifest(manifest) {
|
|
13
|
-
setDefaultRouteAuthOptions(manifest.auth);
|
|
14
|
-
for (const record of manifest.records) {
|
|
15
|
-
insertRecordSorted(record);
|
|
16
|
-
addRouteToStores({
|
|
17
|
-
path: record.path,
|
|
18
|
-
handler: record.handler,
|
|
19
|
-
namespace: record.options.namespace,
|
|
20
|
-
..."fallbackPrefix" in record && typeof record.fallbackPrefix === "string" ? { fallbackPrefix: record.fallbackPrefix } : {}
|
|
21
|
-
});
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
function clearRoutes() {
|
|
25
|
-
clearRouteState();
|
|
26
|
-
clearPendingLazy();
|
|
27
|
-
}
|
|
28
|
-
function createRouteRegistry(definition, options = {}) {
|
|
29
|
-
const previous = snapshotRouteState();
|
|
30
|
-
const previousLazy = _snapshotLazy();
|
|
31
|
-
clearRoutes();
|
|
32
|
-
try {
|
|
33
|
-
registerRoutes(definition, options);
|
|
34
|
-
const manifest = getManifest();
|
|
35
|
-
const registry = Object.freeze({
|
|
36
|
-
manifest,
|
|
37
|
-
routes: getRoutes()
|
|
38
|
-
});
|
|
39
|
-
associateRouteSourceLazy(registry, manifest, _snapshotLazy());
|
|
40
|
-
return registry;
|
|
41
|
-
} finally {
|
|
42
|
-
restoreRouteState(previous);
|
|
43
|
-
restorePendingLazy(previousLazy);
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
//#endregion
|
|
47
|
-
export { _applyManifest, clearRoutes, createRouteRegistry, getManifest };
|
package/dist/router/match.js
DELETED
|
@@ -1,120 +0,0 @@
|
|
|
1
|
-
//#region src/router/match.ts
|
|
2
|
-
function splitPathSegments(path) {
|
|
3
|
-
const normalized = path.endsWith("/") && path !== "/" ? path.slice(0, -1) : path;
|
|
4
|
-
if (!normalized || normalized === "/") return [];
|
|
5
|
-
const withoutLeadingSlash = normalized.startsWith("/") ? normalized.slice(1) : normalized;
|
|
6
|
-
return withoutLeadingSlash.length === 0 ? [] : withoutLeadingSlash.split("/");
|
|
7
|
-
}
|
|
8
|
-
function normalizeRouteSegmentName(value) {
|
|
9
|
-
return value.trim();
|
|
10
|
-
}
|
|
11
|
-
/**
|
|
12
|
-
* Parse a route template path into typed segments.
|
|
13
|
-
*
|
|
14
|
-
* @example
|
|
15
|
-
* parseSegments('/users/{id}') // [{kind:'static',value:'users'},{kind:'param',value:'id'}]
|
|
16
|
-
* parseSegments('/*') // [{kind:'catchall',value:'*'}]
|
|
17
|
-
* parseSegments('/posts/*') // [{kind:'static',value:'posts'},{kind:'wildcard',value:'*'}]
|
|
18
|
-
* parseSegments('/files/{*path}') // [{kind:'static',value:'files'},{kind:'splat',value:'path'}]
|
|
19
|
-
*/
|
|
20
|
-
function parseSegments(path) {
|
|
21
|
-
const parts = (path.endsWith("/") && path !== "/" ? path.slice(0, -1) : path).split("/").filter(Boolean);
|
|
22
|
-
if (parts.length === 1 && parts[0] === "*") return [{
|
|
23
|
-
kind: "catchall",
|
|
24
|
-
value: "*"
|
|
25
|
-
}];
|
|
26
|
-
return parts.map((segment) => {
|
|
27
|
-
if (segment.startsWith("{") && segment.endsWith("}")) {
|
|
28
|
-
const value = normalizeRouteSegmentName(segment.slice(1, -1));
|
|
29
|
-
if (value.startsWith("*")) return {
|
|
30
|
-
kind: "splat",
|
|
31
|
-
value: normalizeRouteSegmentName(value.slice(1))
|
|
32
|
-
};
|
|
33
|
-
return {
|
|
34
|
-
kind: "param",
|
|
35
|
-
value
|
|
36
|
-
};
|
|
37
|
-
}
|
|
38
|
-
if (segment === "*") return {
|
|
39
|
-
kind: "wildcard",
|
|
40
|
-
value: "*"
|
|
41
|
-
};
|
|
42
|
-
return {
|
|
43
|
-
kind: "static",
|
|
44
|
-
value: segment
|
|
45
|
-
};
|
|
46
|
-
});
|
|
47
|
-
}
|
|
48
|
-
/**
|
|
49
|
-
* Compute a numeric specificity rank from a parsed segment list.
|
|
50
|
-
*
|
|
51
|
-
* Scoring: static = 3, param = 2, wildcard = 1, catchall = 0.
|
|
52
|
-
* Higher rank wins when multiple routes match the same path.
|
|
53
|
-
*/
|
|
54
|
-
function computeRank(segments) {
|
|
55
|
-
if (segments.length === 1 && segments[0].kind === "catchall") return -1;
|
|
56
|
-
let score = 0;
|
|
57
|
-
for (const seg of segments) if (seg.kind === "static") score += 3;
|
|
58
|
-
else if (seg.kind === "param") score += 2;
|
|
59
|
-
else if (seg.kind === "wildcard") score += 1;
|
|
60
|
-
else if (seg.kind === "splat") score -= .5;
|
|
61
|
-
return score;
|
|
62
|
-
}
|
|
63
|
-
/** Reused frozen empty params object — returned for purely-static (no-capture) routes. */
|
|
64
|
-
const emptyParams = Object.freeze(Object.create(null));
|
|
65
|
-
Object.freeze({
|
|
66
|
-
matched: false,
|
|
67
|
-
params: emptyParams
|
|
68
|
-
});
|
|
69
|
-
function decodeRouteParam(part) {
|
|
70
|
-
if (!part.includes("%")) return part;
|
|
71
|
-
try {
|
|
72
|
-
return decodeURIComponent(part);
|
|
73
|
-
} catch {
|
|
74
|
-
return part;
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
/**
|
|
78
|
-
* Match pre-split URL parts against pre-parsed route segments.
|
|
79
|
-
*
|
|
80
|
-
* This is the hot-path matcher used by `resolveRoute` and
|
|
81
|
-
* `resolveRouteFromRoutes`. Callers split the URL path **once** and reuse
|
|
82
|
-
* `urlParts` across all route comparisons in a single resolution call.
|
|
83
|
-
*
|
|
84
|
-
* - Returns a params object (possibly the shared `{}`) on match.
|
|
85
|
-
* - Returns `null` on no match.
|
|
86
|
-
* - Params are allocated lazily — purely-static routes return the frozen
|
|
87
|
-
* empty sentinel without any heap allocation.
|
|
88
|
-
*/
|
|
89
|
-
function matchSegments(urlParts, segments) {
|
|
90
|
-
if (segments.length === 1 && segments[0].kind === "catchall") return { "*": urlParts.length === 0 ? "/" : urlParts.length === 1 ? urlParts[0] : "/" + urlParts.join("/") };
|
|
91
|
-
const splatIndex = segments.findIndex((segment) => segment.kind === "splat");
|
|
92
|
-
if (splatIndex !== -1) {
|
|
93
|
-
if (splatIndex !== segments.length - 1) return null;
|
|
94
|
-
if (urlParts.length < splatIndex) return null;
|
|
95
|
-
} else if (urlParts.length !== segments.length) return null;
|
|
96
|
-
let params = null;
|
|
97
|
-
const normalizeCapturedSplatParts = (parts) => {
|
|
98
|
-
let start = 0;
|
|
99
|
-
while (start < parts.length && parts[start] === "") start += 1;
|
|
100
|
-
return start === 0 ? parts : parts.slice(start);
|
|
101
|
-
};
|
|
102
|
-
for (let i = 0; i < segments.length; i++) {
|
|
103
|
-
const seg = segments[i];
|
|
104
|
-
const part = urlParts[i];
|
|
105
|
-
if (seg.kind === "static") {
|
|
106
|
-
if (seg.value !== part) return null;
|
|
107
|
-
} else if (seg.kind === "splat") {
|
|
108
|
-
if (params === null) params = {};
|
|
109
|
-
params[seg.value] = normalizeCapturedSplatParts(urlParts.slice(i).map(decodeRouteParam)).join("/");
|
|
110
|
-
return params;
|
|
111
|
-
} else {
|
|
112
|
-
if (params === null) params = {};
|
|
113
|
-
if (seg.kind === "param") params[seg.value] = decodeRouteParam(part);
|
|
114
|
-
else params["*"] = part;
|
|
115
|
-
}
|
|
116
|
-
}
|
|
117
|
-
return params ?? emptyParams;
|
|
118
|
-
}
|
|
119
|
-
//#endregion
|
|
120
|
-
export { computeRank, matchSegments, normalizeRouteSegmentName, parseSegments, splitPathSegments };
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import { HistoryScrollBehavior, NavigationScrollBehavior, ScrollRestorationOptions } from "./navigation-scroll.js";
|
|
2
|
-
import { NavigateOptions } from "./navigation-targets.js";
|
|
3
|
-
import { RouteQueryParamInput, RouteQueryParamValue, RouteQueryUpdater, RouteQueryUpdates, UpdateRouteQueryOptions, updateRouteQuery } from "./route-query.js";
|
|
4
|
-
|
|
5
|
-
//#region src/router/navigate.d.ts
|
|
6
|
-
declare function navigate(path: string, options?: NavigateOptions): void;
|
|
7
|
-
declare function initializeNavigation(): void;
|
|
8
|
-
declare function cleanupNavigation(): void;
|
|
9
|
-
//#endregion
|
|
10
|
-
export { type HistoryScrollBehavior, type NavigateOptions, type NavigationScrollBehavior, type RouteQueryParamInput, type RouteQueryParamValue, type RouteQueryUpdater, type RouteQueryUpdates, type ScrollRestorationOptions, type UpdateRouteQueryOptions, navigate, updateRouteQuery };
|
package/dist/router/navigate.js
DELETED
|
@@ -1,73 +0,0 @@
|
|
|
1
|
-
import { logger } from "../common/logger.js";
|
|
2
|
-
import { isPromiseLike } from "../common/promise.js";
|
|
3
|
-
import { configureNavigationRegistryHost, getCurrentHref, hasRegisteredApps, parseTargetUrl, registerAppInstance, unregisterAppInstance } from "./navigation-registry.js";
|
|
4
|
-
import { configureScrollRestoration } from "./navigation-scroll.js";
|
|
5
|
-
import { applyNavigationTargets, applyPopStateNavigationTargets, beginRouteRequest, cancelRouteRequests, isStaleRouteRequest, resolveNavigationTargetsForApps } from "./navigation-targets.js";
|
|
6
|
-
import { updateRouteQuery } from "./route-query.js";
|
|
7
|
-
//#region src/router/navigate.ts
|
|
8
|
-
/**
|
|
9
|
-
* Client-side navigation with History API
|
|
10
|
-
*/
|
|
11
|
-
let navigationInitialized = false;
|
|
12
|
-
configureNavigationRegistryHost({ cancelRouteRequests });
|
|
13
|
-
function navigate(path, options = {}) {
|
|
14
|
-
if (typeof window === "undefined") return;
|
|
15
|
-
const initialTarget = parseTargetUrl(path);
|
|
16
|
-
navigateWithRedirectState(path, options, {
|
|
17
|
-
redirects: 0,
|
|
18
|
-
visited: /* @__PURE__ */ new Set([`${initialTarget.pathname}${initialTarget.search}${initialTarget.hash}`])
|
|
19
|
-
});
|
|
20
|
-
}
|
|
21
|
-
function navigateWithRedirectState(path, options, redirectState) {
|
|
22
|
-
if (typeof window === "undefined") return;
|
|
23
|
-
const request = beginRouteRequest();
|
|
24
|
-
const target = parseTargetUrl(path);
|
|
25
|
-
const pathname = target.pathname;
|
|
26
|
-
const href = `${target.pathname}${target.search}${target.hash}`;
|
|
27
|
-
const resolvedTargets = resolveNavigationTargetsForApps(pathname, href, request.signal);
|
|
28
|
-
if (isPromiseLike(resolvedTargets)) {
|
|
29
|
-
Promise.resolve(resolvedTargets).then((targets) => {
|
|
30
|
-
if (isStaleRouteRequest(request.id)) return;
|
|
31
|
-
try {
|
|
32
|
-
applyNavigationTargets(request.id, path, options, redirectState, pathname, href, targets, navigateWithRedirectState);
|
|
33
|
-
} catch (error) {
|
|
34
|
-
logger.error("[Askr] navigation failed:", error);
|
|
35
|
-
}
|
|
36
|
-
}, (error) => {
|
|
37
|
-
logger.error("[Askr] navigation failed:", error);
|
|
38
|
-
});
|
|
39
|
-
return;
|
|
40
|
-
}
|
|
41
|
-
applyNavigationTargets(request.id, path, options, redirectState, pathname, href, resolvedTargets, navigateWithRedirectState);
|
|
42
|
-
}
|
|
43
|
-
function handlePopState(event) {
|
|
44
|
-
const request = beginRouteRequest();
|
|
45
|
-
const previousHref = getCurrentHref();
|
|
46
|
-
const pathname = window.location.pathname;
|
|
47
|
-
const href = `${window.location.pathname}${window.location.search}${window.location.hash}`;
|
|
48
|
-
if (!hasRegisteredApps()) return;
|
|
49
|
-
const applyResolved = (targets) => {
|
|
50
|
-
try {
|
|
51
|
-
applyPopStateNavigationTargets(request.id, previousHref, { path: previousHref }, pathname, href, event.state, targets, navigate);
|
|
52
|
-
} catch (error) {
|
|
53
|
-
logger.error("[Askr] popstate navigation failed:", error);
|
|
54
|
-
}
|
|
55
|
-
};
|
|
56
|
-
const resolvedTargets = resolveNavigationTargetsForApps(pathname, href, request.signal);
|
|
57
|
-
if (isPromiseLike(resolvedTargets)) {
|
|
58
|
-
Promise.resolve(resolvedTargets).then((next) => {
|
|
59
|
-
applyResolved(next);
|
|
60
|
-
}, (error) => {
|
|
61
|
-
logger.error("[Askr] popstate navigation failed:", error);
|
|
62
|
-
});
|
|
63
|
-
return;
|
|
64
|
-
}
|
|
65
|
-
applyResolved(resolvedTargets);
|
|
66
|
-
}
|
|
67
|
-
function initializeNavigation() {
|
|
68
|
-
if (typeof window === "undefined" || navigationInitialized) return;
|
|
69
|
-
navigationInitialized = true;
|
|
70
|
-
window.addEventListener("popstate", handlePopState);
|
|
71
|
-
}
|
|
72
|
-
//#endregion
|
|
73
|
-
export { configureScrollRestoration, initializeNavigation, navigate, registerAppInstance, unregisterAppInstance, updateRouteQuery };
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
import { ComponentInstance } from "../runtime/component-internal.js";
|
|
2
|
-
import { Route, RouteAuthOptions, RouteManifest } from "../common/router.js";
|
|
3
|
-
|
|
4
|
-
//#region src/router/navigation-registry.d.ts
|
|
5
|
-
type AppNavigationSource = {
|
|
6
|
-
manifest?: RouteManifest;
|
|
7
|
-
routes?: readonly Route[];
|
|
8
|
-
auth?: RouteAuthOptions;
|
|
9
|
-
};
|
|
10
|
-
type AppRegistration = AppNavigationSource & {
|
|
11
|
-
instance: ComponentInstance;
|
|
12
|
-
pathname: string;
|
|
13
|
-
href: string;
|
|
14
|
-
};
|
|
15
|
-
type NavigationRegistryHost = {
|
|
16
|
-
cancelRouteRequests(): void;
|
|
17
|
-
};
|
|
18
|
-
declare function configureNavigationRegistryHost(host: NavigationRegistryHost): void;
|
|
19
|
-
declare function getCurrentPathname(): string;
|
|
20
|
-
declare function getCurrentHref(): string;
|
|
21
|
-
declare function setCurrentRouteLocation(pathname: string, href: string): void;
|
|
22
|
-
declare function getWindowHref(): string;
|
|
23
|
-
declare function parseTargetUrl(path: string): URL;
|
|
24
|
-
declare function getRegisteredAppsSnapshot(): AppRegistration[];
|
|
25
|
-
declare function hasRegisteredApps(): boolean;
|
|
26
|
-
declare function syncAppRegistrationLocation(app: AppRegistration, pathname: string, href: string): void;
|
|
27
|
-
declare function syncRegisteredRouteSnapshot(): void;
|
|
28
|
-
declare function registerAppInstance(instance: ComponentInstance, path: string, source?: AppNavigationSource): void;
|
|
29
|
-
declare function unregisterAppInstance(instance: ComponentInstance): void;
|
|
30
|
-
//#endregion
|
|
31
|
-
export { AppNavigationSource, AppRegistration };
|
|
@@ -1,103 +0,0 @@
|
|
|
1
|
-
import { isProductionEnvironment } from "../common/env.js";
|
|
2
|
-
import { lockRouteRegistration } from "./store.js";
|
|
3
|
-
import { computeRouteActivityMatches } from "./route-matching.js";
|
|
4
|
-
import { syncCurrentRouteSnapshot } from "./activity.js";
|
|
5
|
-
import "./route.js";
|
|
6
|
-
//#region src/router/navigation-registry.ts
|
|
7
|
-
let currentInstance = null;
|
|
8
|
-
let currentPathname = "/";
|
|
9
|
-
let currentHref = "/";
|
|
10
|
-
let navigationRegistryHost = null;
|
|
11
|
-
const registeredApps = [];
|
|
12
|
-
function configureNavigationRegistryHost(host) {
|
|
13
|
-
navigationRegistryHost = host;
|
|
14
|
-
}
|
|
15
|
-
function getCurrentPathname() {
|
|
16
|
-
return currentPathname;
|
|
17
|
-
}
|
|
18
|
-
function getCurrentHref() {
|
|
19
|
-
return currentHref;
|
|
20
|
-
}
|
|
21
|
-
function setCurrentRouteLocation(pathname, href) {
|
|
22
|
-
currentPathname = pathname;
|
|
23
|
-
currentHref = href;
|
|
24
|
-
}
|
|
25
|
-
function getWindowHref() {
|
|
26
|
-
if (typeof window === "undefined") return currentHref;
|
|
27
|
-
return `${window.location.pathname}${window.location.search}${window.location.hash}`;
|
|
28
|
-
}
|
|
29
|
-
function parseTargetUrl(path) {
|
|
30
|
-
const pathname = window.location.pathname || "/";
|
|
31
|
-
const search = window.location.search || "";
|
|
32
|
-
const hash = window.location.hash || "";
|
|
33
|
-
const href = typeof window.location.href === "string" ? window.location.href : "";
|
|
34
|
-
const base = href && href !== "about:blank" && !href.startsWith("about:") && !href.startsWith("data:") ? href : `http://localhost${pathname}${search}${hash}`;
|
|
35
|
-
return new URL(path, base);
|
|
36
|
-
}
|
|
37
|
-
function getRegisteredAppsSnapshot() {
|
|
38
|
-
return [...registeredApps];
|
|
39
|
-
}
|
|
40
|
-
function hasRegisteredApps() {
|
|
41
|
-
return registeredApps.length > 0;
|
|
42
|
-
}
|
|
43
|
-
function syncAppRegistrationLocation(app, pathname, href) {
|
|
44
|
-
app.pathname = pathname;
|
|
45
|
-
app.href = href;
|
|
46
|
-
}
|
|
47
|
-
function collectRouteActivityMatches(pathname, apps = registeredApps) {
|
|
48
|
-
const matches = [];
|
|
49
|
-
const seenPaths = /* @__PURE__ */ new Set();
|
|
50
|
-
for (const app of apps) {
|
|
51
|
-
const appMatches = computeRouteActivityMatches(pathname, {
|
|
52
|
-
manifest: app.manifest,
|
|
53
|
-
routes: app.routes
|
|
54
|
-
});
|
|
55
|
-
for (const match of appMatches) {
|
|
56
|
-
if (seenPaths.has(match.path)) continue;
|
|
57
|
-
seenPaths.add(match.path);
|
|
58
|
-
matches.push(match);
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
return matches;
|
|
62
|
-
}
|
|
63
|
-
function syncRegisteredRouteSnapshot() {
|
|
64
|
-
if (typeof window === "undefined") return;
|
|
65
|
-
const pathname = window.location.pathname || "/";
|
|
66
|
-
syncCurrentRouteSnapshot(pathname, window.location.search || "", window.location.hash || "", collectRouteActivityMatches(pathname));
|
|
67
|
-
}
|
|
68
|
-
function registerAppInstance(instance, path, source = {}) {
|
|
69
|
-
const existingIndex = registeredApps.findIndex((app) => app.instance === instance);
|
|
70
|
-
const registration = {
|
|
71
|
-
instance,
|
|
72
|
-
pathname: path,
|
|
73
|
-
href: getWindowHref(),
|
|
74
|
-
...source
|
|
75
|
-
};
|
|
76
|
-
if (existingIndex >= 0) registeredApps[existingIndex] = registration;
|
|
77
|
-
else registeredApps.push(registration);
|
|
78
|
-
currentInstance = instance;
|
|
79
|
-
currentPathname = path;
|
|
80
|
-
currentHref = getWindowHref();
|
|
81
|
-
syncRegisteredRouteSnapshot();
|
|
82
|
-
if (isProductionEnvironment()) lockRouteRegistration();
|
|
83
|
-
}
|
|
84
|
-
function unregisterAppInstance(instance) {
|
|
85
|
-
const existingIndex = registeredApps.findIndex((app) => app.instance === instance);
|
|
86
|
-
if (existingIndex >= 0) registeredApps.splice(existingIndex, 1);
|
|
87
|
-
syncRegisteredRouteSnapshot();
|
|
88
|
-
if (currentInstance !== instance) return;
|
|
89
|
-
const nextApp = registeredApps.length > 0 ? registeredApps[registeredApps.length - 1] : null;
|
|
90
|
-
currentInstance = nextApp?.instance ?? null;
|
|
91
|
-
if (nextApp) {
|
|
92
|
-
currentPathname = nextApp.pathname;
|
|
93
|
-
currentHref = nextApp.href;
|
|
94
|
-
syncRegisteredRouteSnapshot();
|
|
95
|
-
return;
|
|
96
|
-
}
|
|
97
|
-
navigationRegistryHost?.cancelRouteRequests();
|
|
98
|
-
currentPathname = "/";
|
|
99
|
-
currentHref = "/";
|
|
100
|
-
if (typeof window === "undefined") syncCurrentRouteSnapshot("/", "", "", []);
|
|
101
|
-
}
|
|
102
|
-
//#endregion
|
|
103
|
-
export { configureNavigationRegistryHost, getCurrentHref, getCurrentPathname, getRegisteredAppsSnapshot, getWindowHref, hasRegisteredApps, parseTargetUrl, registerAppInstance, setCurrentRouteLocation, syncAppRegistrationLocation, syncRegisteredRouteSnapshot, unregisterAppInstance };
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
//#region src/router/navigation-scroll.d.ts
|
|
2
|
-
type NavigationScrollBehavior = 'top' | 'preserve';
|
|
3
|
-
type HistoryScrollBehavior = 'restore' | 'top' | 'preserve';
|
|
4
|
-
type ScrollRestorationOptions = {
|
|
5
|
-
navigation?: NavigationScrollBehavior;
|
|
6
|
-
history?: HistoryScrollBehavior;
|
|
7
|
-
};
|
|
8
|
-
declare function saveScrollPosition(href: string): void;
|
|
9
|
-
declare function applyNavigationScroll(behavior?: NavigationScrollBehavior): void;
|
|
10
|
-
declare function applyHistoryScroll(href: string, state: PopStateEvent['state']): void;
|
|
11
|
-
declare function configureScrollRestoration(options?: boolean | ScrollRestorationOptions): void;
|
|
12
|
-
//#endregion
|
|
13
|
-
export { HistoryScrollBehavior, NavigationScrollBehavior, ScrollRestorationOptions };
|
|
@@ -1,91 +0,0 @@
|
|
|
1
|
-
//#region src/router/navigation-scroll.ts
|
|
2
|
-
const DEFAULT_SCROLL_RESTORATION = {
|
|
3
|
-
enabled: true,
|
|
4
|
-
navigation: "top",
|
|
5
|
-
history: "restore"
|
|
6
|
-
};
|
|
7
|
-
let scrollRestorationOptions = { ...DEFAULT_SCROLL_RESTORATION };
|
|
8
|
-
const scrollPositions = /* @__PURE__ */ new Map();
|
|
9
|
-
function getWindowHref() {
|
|
10
|
-
if (typeof window === "undefined") return "/";
|
|
11
|
-
return `${window.location.pathname}${window.location.search}${window.location.hash}`;
|
|
12
|
-
}
|
|
13
|
-
function normalizeScrollRestorationOptions(options) {
|
|
14
|
-
if (options === false) return {
|
|
15
|
-
enabled: false,
|
|
16
|
-
navigation: DEFAULT_SCROLL_RESTORATION.navigation,
|
|
17
|
-
history: DEFAULT_SCROLL_RESTORATION.history
|
|
18
|
-
};
|
|
19
|
-
if (options === true || options === void 0) return { ...DEFAULT_SCROLL_RESTORATION };
|
|
20
|
-
return {
|
|
21
|
-
enabled: true,
|
|
22
|
-
navigation: options.navigation ?? DEFAULT_SCROLL_RESTORATION.navigation,
|
|
23
|
-
history: options.history ?? DEFAULT_SCROLL_RESTORATION.history
|
|
24
|
-
};
|
|
25
|
-
}
|
|
26
|
-
function readScrollPosition() {
|
|
27
|
-
if (typeof window === "undefined") return {
|
|
28
|
-
x: 0,
|
|
29
|
-
y: 0
|
|
30
|
-
};
|
|
31
|
-
return {
|
|
32
|
-
x: typeof window.scrollX === "number" ? window.scrollX : typeof window.pageXOffset === "number" ? window.pageXOffset : 0,
|
|
33
|
-
y: typeof window.scrollY === "number" ? window.scrollY : typeof window.pageYOffset === "number" ? window.pageYOffset : 0
|
|
34
|
-
};
|
|
35
|
-
}
|
|
36
|
-
function writeHistoryScrollPosition(href, position) {
|
|
37
|
-
if (typeof window === "undefined" || getWindowHref() !== href) return;
|
|
38
|
-
if (typeof window.history?.replaceState !== "function") return;
|
|
39
|
-
const state = window.history.state && typeof window.history.state === "object" ? window.history.state : {};
|
|
40
|
-
window.history.replaceState({
|
|
41
|
-
...state,
|
|
42
|
-
path: href,
|
|
43
|
-
scroll: position
|
|
44
|
-
}, "", href);
|
|
45
|
-
}
|
|
46
|
-
function saveScrollPosition(href) {
|
|
47
|
-
if (!scrollRestorationOptions.enabled || typeof window === "undefined") return;
|
|
48
|
-
const position = readScrollPosition();
|
|
49
|
-
scrollPositions.set(href, position);
|
|
50
|
-
writeHistoryScrollPosition(href, position);
|
|
51
|
-
}
|
|
52
|
-
function scrollToPosition(position) {
|
|
53
|
-
if (typeof window === "undefined" || typeof window.scrollTo !== "function") return;
|
|
54
|
-
window.scrollTo(position.x, position.y);
|
|
55
|
-
}
|
|
56
|
-
function applyNavigationScroll(behavior) {
|
|
57
|
-
const nextBehavior = behavior ?? scrollRestorationOptions.navigation;
|
|
58
|
-
if (!scrollRestorationOptions.enabled || nextBehavior === "preserve") return;
|
|
59
|
-
scrollToPosition({
|
|
60
|
-
x: 0,
|
|
61
|
-
y: 0
|
|
62
|
-
});
|
|
63
|
-
}
|
|
64
|
-
function applyHistoryScroll(href, state) {
|
|
65
|
-
if (!scrollRestorationOptions.enabled) return;
|
|
66
|
-
if (scrollRestorationOptions.history === "preserve") return;
|
|
67
|
-
if (scrollRestorationOptions.history === "top") {
|
|
68
|
-
scrollToPosition({
|
|
69
|
-
x: 0,
|
|
70
|
-
y: 0
|
|
71
|
-
});
|
|
72
|
-
return;
|
|
73
|
-
}
|
|
74
|
-
const fromState = state && typeof state === "object" && "scroll" in state ? state.scroll : void 0;
|
|
75
|
-
scrollToPosition((fromState && typeof fromState.x === "number" && typeof fromState.y === "number" ? {
|
|
76
|
-
x: fromState.x,
|
|
77
|
-
y: fromState.y
|
|
78
|
-
} : scrollPositions.get(href)) ?? {
|
|
79
|
-
x: 0,
|
|
80
|
-
y: 0
|
|
81
|
-
});
|
|
82
|
-
}
|
|
83
|
-
function configureScrollRestoration(options) {
|
|
84
|
-
scrollRestorationOptions = normalizeScrollRestorationOptions(options);
|
|
85
|
-
if (typeof window === "undefined") return;
|
|
86
|
-
if ("scrollRestoration" in window.history) try {
|
|
87
|
-
window.history.scrollRestoration = scrollRestorationOptions.enabled ? "manual" : "auto";
|
|
88
|
-
} catch {}
|
|
89
|
-
}
|
|
90
|
-
//#endregion
|
|
91
|
-
export { applyHistoryScroll, applyNavigationScroll, configureScrollRestoration, saveScrollPosition };
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
import { RouteRequestResult } from "../common/router.js";
|
|
2
|
-
import { NavigationScrollBehavior } from "./navigation-scroll.js";
|
|
3
|
-
import { AppRegistration } from "./navigation-registry.js";
|
|
4
|
-
|
|
5
|
-
//#region src/router/navigation-targets.d.ts
|
|
6
|
-
type NavigateOptions = {
|
|
7
|
-
history?: 'push' | 'replace';
|
|
8
|
-
replace?: boolean;
|
|
9
|
-
scroll?: NavigationScrollBehavior;
|
|
10
|
-
};
|
|
11
|
-
type NavigationRedirectState = {
|
|
12
|
-
redirects: number;
|
|
13
|
-
visited: Set<string>;
|
|
14
|
-
};
|
|
15
|
-
type AppNavigationTarget = {
|
|
16
|
-
app: AppRegistration;
|
|
17
|
-
resolved: RouteRequestResult;
|
|
18
|
-
};
|
|
19
|
-
declare function beginRouteRequest(): {
|
|
20
|
-
id: number;
|
|
21
|
-
signal: AbortSignal;
|
|
22
|
-
};
|
|
23
|
-
declare function isStaleRouteRequest(requestId: number): boolean;
|
|
24
|
-
declare function cancelRouteRequests(): void;
|
|
25
|
-
declare function getRedirectHistoryMode(replace: boolean | undefined): 'push' | 'replace';
|
|
26
|
-
declare function resolveNavigationTargetsForApps(pathname: string, href: string, signal: AbortSignal): AppNavigationTarget[] | Promise<AppNavigationTarget[]>;
|
|
27
|
-
declare function applyNavigationTargets(requestId: number, path: string, options: NavigateOptions, redirectState: NavigationRedirectState, pathname: string, href: string, targets: AppNavigationTarget[], navigateWithRedirectState: (path: string, options: NavigateOptions, redirectState: NavigationRedirectState) => void): void;
|
|
28
|
-
declare function applyPopStateNavigationTargets(requestId: number, previousHref: string, previousState: unknown, pathname: string, href: string, state: unknown, targets: AppNavigationTarget[], navigate: (path: string, options: NavigateOptions) => void): void;
|
|
29
|
-
//#endregion
|
|
30
|
-
export { AppNavigationTarget, NavigateOptions, NavigationRedirectState };
|