@askrjs/askr 0.0.48 → 0.0.49
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/dist/benchmark.js +6 -6
- package/dist/benchmark.js.map +1 -1
- package/dist/boot/hydration.js +140 -0
- package/dist/boot/hydration.js.map +1 -0
- package/dist/boot/index.d.ts +3 -56
- package/dist/boot/index.d.ts.map +1 -1
- package/dist/boot/index.js +62 -410
- package/dist/boot/index.js.map +1 -1
- package/dist/boot/root-lifecycle.d.ts +15 -0
- package/dist/boot/root-lifecycle.d.ts.map +1 -0
- package/dist/boot/root-lifecycle.js +205 -0
- package/dist/boot/root-lifecycle.js.map +1 -0
- package/dist/boot/route-startup.js +45 -0
- package/dist/boot/route-startup.js.map +1 -0
- package/dist/boot/types.d.ts +62 -0
- package/dist/boot/types.d.ts.map +1 -0
- package/dist/common/component.d.ts +3 -1
- package/dist/common/component.d.ts.map +1 -1
- package/dist/common/jsx.d.ts +1 -1
- package/dist/common/jsx.d.ts.map +1 -1
- package/dist/common/jsx.js.map +1 -1
- package/dist/common/props.d.ts +1 -1
- package/dist/common/render-context.js +55 -0
- package/dist/common/render-context.js.map +1 -0
- package/dist/common/router.d.ts +5 -1
- package/dist/common/router.d.ts.map +1 -1
- package/dist/common/ssr.d.ts +1 -1
- package/dist/common/ssr.js.map +1 -1
- package/dist/common/vnode.d.ts +5 -4
- package/dist/common/vnode.d.ts.map +1 -1
- package/dist/common/vnode.js.map +1 -1
- package/dist/components/error-boundary.d.ts +1 -1
- package/dist/components/error-boundary.js +2 -1
- package/dist/components/error-boundary.js.map +1 -1
- package/dist/components/link.js.map +1 -1
- package/dist/control/for.js +2 -1
- package/dist/control/for.js.map +1 -1
- package/dist/data/data-runtime.d.ts +28 -0
- package/dist/data/data-runtime.d.ts.map +1 -0
- package/dist/data/data-runtime.js +114 -0
- package/dist/data/data-runtime.js.map +1 -0
- package/dist/data/index.d.ts +6 -142
- package/dist/data/index.js +5 -539
- package/dist/data/invalidation.d.ts +9 -0
- package/dist/data/invalidation.d.ts.map +1 -0
- package/dist/data/invalidation.js +27 -0
- package/dist/data/invalidation.js.map +1 -0
- package/dist/data/mutation-cell.d.ts +28 -0
- package/dist/data/mutation-cell.d.ts.map +1 -0
- package/dist/data/mutation-cell.js +132 -0
- package/dist/data/mutation-cell.js.map +1 -0
- package/dist/data/query-cell.d.ts +46 -0
- package/dist/data/query-cell.d.ts.map +1 -0
- package/dist/data/query-cell.js +290 -0
- package/dist/data/query-cell.js.map +1 -0
- package/dist/data/query-key.js +42 -0
- package/dist/data/query-key.js.map +1 -0
- package/dist/data/shared.js +20 -0
- package/dist/data/shared.js.map +1 -0
- package/dist/data/types.d.ts +161 -0
- package/dist/data/types.d.ts.map +1 -0
- package/dist/foundations/icon/icon.d.ts.map +1 -1
- package/dist/foundations/icon/icon.js.map +1 -1
- package/dist/foundations/structures/portal.d.ts +1 -1
- package/dist/foundations/structures/portal.d.ts.map +1 -1
- package/dist/foundations/structures/portal.js +2 -1
- package/dist/foundations/structures/portal.js.map +1 -1
- package/dist/fx/fx.d.ts +1 -1
- package/dist/fx/fx.js +5 -4
- package/dist/fx/fx.js.map +1 -1
- package/dist/fx/timing.d.ts.map +1 -1
- package/dist/fx/timing.js +10 -6
- package/dist/fx/timing.js.map +1 -1
- package/dist/index.d.ts +3 -2
- package/dist/index.js +4 -2
- package/dist/index.js.map +1 -1
- package/dist/jsx/index.d.ts +2 -1
- package/dist/jsx/index.js +3 -2
- package/dist/jsx/types.d.ts +2 -0
- package/dist/jsx/types.js +2 -1
- package/dist/jsx-runtime2.d.ts +2 -1
- package/dist/jsx-runtime2.js +3 -2
- package/dist/renderer/attributes.js +231 -0
- package/dist/renderer/attributes.js.map +1 -0
- package/dist/renderer/boundaries.js +266 -0
- package/dist/renderer/boundaries.js.map +1 -0
- package/dist/renderer/child-shape.js +85 -0
- package/dist/renderer/child-shape.js.map +1 -0
- package/dist/renderer/children.js +3 -2
- package/dist/renderer/children.js.map +1 -1
- package/dist/renderer/cleanup.js +2 -1
- package/dist/renderer/cleanup.js.map +1 -1
- package/dist/renderer/component-host-cleanup.js +68 -0
- package/dist/renderer/component-host-cleanup.js.map +1 -0
- package/dist/renderer/component-host-instances.js +65 -0
- package/dist/renderer/component-host-instances.js.map +1 -0
- package/dist/renderer/component-host.js +247 -0
- package/dist/renderer/component-host.js.map +1 -0
- package/dist/renderer/dom-host.js +13 -0
- package/dist/renderer/dom-host.js.map +1 -0
- package/dist/renderer/dom-internal.js +185 -0
- package/dist/renderer/dom-internal.js.map +1 -0
- package/dist/renderer/dom.js +9 -2356
- package/dist/renderer/element-children.js +279 -0
- package/dist/renderer/element-children.js.map +1 -0
- package/dist/renderer/env.js +2 -1
- package/dist/renderer/error-boundary-dom.js +29 -0
- package/dist/renderer/error-boundary-dom.js.map +1 -0
- package/dist/renderer/evaluate-dom-range.js +85 -0
- package/dist/renderer/evaluate-dom-range.js.map +1 -0
- package/dist/renderer/evaluate-reconcile.js +281 -0
- package/dist/renderer/evaluate-reconcile.js.map +1 -0
- package/dist/renderer/evaluate.js +13 -399
- package/dist/renderer/evaluate.js.map +1 -1
- package/dist/renderer/fastpath.js +6 -5
- package/dist/renderer/fastpath.js.map +1 -1
- package/dist/renderer/for-commit-dom-map.js +83 -0
- package/dist/renderer/for-commit-dom-map.js.map +1 -0
- package/dist/renderer/for-commit-removal.js +36 -0
- package/dist/renderer/for-commit-removal.js.map +1 -0
- package/dist/renderer/for-commit-reorder.js +89 -0
- package/dist/renderer/for-commit-reorder.js.map +1 -0
- package/dist/renderer/for-commit.js +6 -188
- package/dist/renderer/for-commit.js.map +1 -1
- package/dist/renderer/index.js +28 -16
- package/dist/renderer/index.js.map +1 -1
- package/dist/renderer/keyed-children.js +32 -0
- package/dist/renderer/keyed-children.js.map +1 -0
- package/dist/renderer/keyed.js +2 -15
- package/dist/renderer/keyed.js.map +1 -1
- package/dist/renderer/namespaces.js +23 -0
- package/dist/renderer/namespaces.js.map +1 -0
- package/dist/renderer/prop-bindings.js +280 -0
- package/dist/renderer/prop-bindings.js.map +1 -0
- package/dist/renderer/reactive-child-dom.js +133 -0
- package/dist/renderer/reactive-child-dom.js.map +1 -0
- package/dist/renderer/reactive-child-sources.js +184 -0
- package/dist/renderer/reactive-child-sources.js.map +1 -0
- package/dist/renderer/reactive-children.js +294 -0
- package/dist/renderer/reactive-children.js.map +1 -0
- package/dist/renderer/reconcile-commit.js +38 -0
- package/dist/renderer/reconcile-commit.js.map +1 -0
- package/dist/renderer/reconcile-fastpaths.js +106 -0
- package/dist/renderer/reconcile-fastpaths.js.map +1 -0
- package/dist/renderer/reconcile-resolution.js +187 -0
- package/dist/renderer/reconcile-resolution.js.map +1 -0
- package/dist/renderer/reconcile.js +9 -371
- package/dist/renderer/reconcile.js.map +1 -1
- package/dist/renderer/retained-element-rollback.js +276 -0
- package/dist/renderer/retained-element-rollback.js.map +1 -0
- package/dist/renderer/stable-patch.js +82 -0
- package/dist/renderer/stable-patch.js.map +1 -0
- package/dist/renderer/static-reuse.js +96 -0
- package/dist/renderer/static-reuse.js.map +1 -0
- package/dist/renderer/types.js +2 -1
- package/dist/renderer/utils.js +4 -4
- package/dist/renderer/utils.js.map +1 -1
- package/dist/resources/index.d.ts +3 -2
- package/dist/resources/index.js +5 -2
- package/dist/router/access.js +36 -0
- package/dist/router/access.js.map +1 -0
- package/dist/router/activity.d.ts +10 -0
- package/dist/router/activity.d.ts.map +1 -0
- package/dist/router/activity.js +89 -0
- package/dist/router/activity.js.map +1 -0
- package/dist/router/authoring.d.ts +22 -0
- package/dist/router/authoring.d.ts.map +1 -0
- package/dist/router/authoring.js +198 -0
- package/dist/router/authoring.js.map +1 -0
- package/dist/router/index.d.ts +12 -4
- package/dist/router/index.js +10 -3
- package/dist/router/internal-types.d.ts +31 -0
- package/dist/router/internal-types.d.ts.map +1 -0
- package/dist/router/lazy.d.ts +19 -0
- package/dist/router/lazy.d.ts.map +1 -0
- package/dist/router/lazy.js +52 -0
- package/dist/router/lazy.js.map +1 -0
- package/dist/router/manifest.d.ts +10 -0
- package/dist/router/manifest.d.ts.map +1 -0
- package/dist/router/manifest.js +49 -0
- package/dist/router/manifest.js.map +1 -0
- package/dist/router/navigate.d.ts +4 -51
- package/dist/router/navigate.d.ts.map +1 -1
- package/dist/router/navigate.js +16 -459
- package/dist/router/navigate.js.map +1 -1
- package/dist/router/navigation-registry.d.ts +32 -0
- package/dist/router/navigation-registry.d.ts.map +1 -0
- package/dist/router/navigation-registry.js +105 -0
- package/dist/router/navigation-registry.js.map +1 -0
- package/dist/router/navigation-scroll.d.ts +14 -0
- package/dist/router/navigation-scroll.d.ts.map +1 -0
- package/dist/router/navigation-scroll.js +93 -0
- package/dist/router/navigation-scroll.js.map +1 -0
- package/dist/router/navigation-targets.d.ts +31 -0
- package/dist/router/navigation-targets.d.ts.map +1 -0
- package/dist/router/navigation-targets.js +253 -0
- package/dist/router/navigation-targets.js.map +1 -0
- package/dist/router/policy.d.ts +7 -1
- package/dist/router/policy.d.ts.map +1 -1
- package/dist/router/policy.js +27 -9
- package/dist/router/policy.js.map +1 -1
- package/dist/router/rendering.d.ts +10 -0
- package/dist/router/rendering.d.ts.map +1 -0
- package/dist/router/rendering.js +45 -0
- package/dist/router/rendering.js.map +1 -0
- package/dist/router/resolution.d.ts +17 -0
- package/dist/router/resolution.d.ts.map +1 -0
- package/dist/router/resolution.js +253 -0
- package/dist/router/resolution.js.map +1 -0
- package/dist/router/route-query.d.ts +17 -0
- package/dist/router/route-query.d.ts.map +1 -0
- package/dist/router/route-query.js +47 -0
- package/dist/router/route-query.js.map +1 -0
- package/dist/router/route.d.ts +8 -149
- package/dist/router/route.js +8 -854
- package/dist/router/store.d.ts +50 -0
- package/dist/router/store.d.ts.map +1 -0
- package/dist/router/store.js +171 -0
- package/dist/router/store.js.map +1 -0
- package/dist/runtime/access.js +45 -0
- package/dist/runtime/access.js.map +1 -0
- package/dist/runtime/child-scope.d.ts +1 -1
- package/dist/runtime/child-scope.js +4 -1
- package/dist/runtime/child-scope.js.map +1 -1
- package/dist/runtime/component-cleanup.d.ts +16 -0
- package/dist/runtime/component-cleanup.d.ts.map +1 -0
- package/dist/runtime/component-cleanup.js +70 -0
- package/dist/runtime/component-cleanup.js.map +1 -0
- package/dist/runtime/component-commit.js +165 -0
- package/dist/runtime/component-commit.js.map +1 -0
- package/dist/runtime/component-contracts.js +5 -0
- package/dist/runtime/component-facade.d.ts +5 -0
- package/dist/runtime/component-facade.js +4 -0
- package/dist/runtime/component-internal.d.ts +100 -0
- package/dist/runtime/component-internal.d.ts.map +1 -0
- package/dist/runtime/component-internal.js +219 -0
- package/dist/runtime/component-internal.js.map +1 -0
- package/dist/runtime/component-lifecycle.d.ts +49 -0
- package/dist/runtime/component-lifecycle.d.ts.map +1 -0
- package/dist/runtime/component-lifecycle.js +176 -0
- package/dist/runtime/component-lifecycle.js.map +1 -0
- package/dist/runtime/component-scope.d.ts +55 -0
- package/dist/runtime/component-scope.d.ts.map +1 -0
- package/dist/runtime/component-scope.js +154 -0
- package/dist/runtime/component-scope.js.map +1 -0
- package/dist/runtime/component.d.ts +4 -152
- package/dist/runtime/component.js +4 -692
- package/dist/runtime/context.d.ts +1 -1
- package/dist/runtime/context.js +6 -4
- package/dist/runtime/context.js.map +1 -1
- package/dist/runtime/control.d.ts +3 -3
- package/dist/runtime/control.js +2 -1
- package/dist/runtime/control.js.map +1 -1
- package/dist/runtime/derive.d.ts.map +1 -1
- package/dist/runtime/derive.js +6 -5
- package/dist/runtime/derive.js.map +1 -1
- package/dist/runtime/effect.d.ts +1 -1
- package/dist/runtime/effect.d.ts.map +1 -1
- package/dist/runtime/effect.js +2 -2
- package/dist/runtime/effect.js.map +1 -1
- package/dist/runtime/events.js +3 -3
- package/dist/runtime/events.js.map +1 -1
- package/dist/runtime/fastlane.js +13 -27
- package/dist/runtime/fastlane.js.map +1 -1
- package/dist/runtime/for-bench.d.ts +1 -1
- package/dist/runtime/for-bench.js +1 -4
- package/dist/runtime/for-bench.js.map +1 -1
- package/dist/runtime/for-internal.d.ts +43 -0
- package/dist/runtime/for-internal.d.ts.map +1 -0
- package/dist/runtime/for-internal.js +98 -0
- package/dist/runtime/for-internal.js.map +1 -0
- package/dist/runtime/for-reconcile.d.ts +8 -0
- package/dist/runtime/for-reconcile.d.ts.map +1 -0
- package/dist/runtime/for-reconcile.js +389 -0
- package/dist/runtime/for-reconcile.js.map +1 -0
- package/dist/runtime/for-scopes.d.ts +26 -0
- package/dist/runtime/for-scopes.d.ts.map +1 -0
- package/dist/runtime/for-scopes.js +160 -0
- package/dist/runtime/for-scopes.js.map +1 -0
- package/dist/runtime/for-signals.d.ts +30 -0
- package/dist/runtime/for-signals.d.ts.map +1 -0
- package/dist/runtime/for-signals.js +139 -0
- package/dist/runtime/for-signals.js.map +1 -0
- package/dist/runtime/for.d.ts +4 -66
- package/dist/runtime/for.js +5 -773
- package/dist/runtime/lifecycle-operations.d.ts +31 -0
- package/dist/runtime/lifecycle-operations.d.ts.map +1 -0
- package/dist/runtime/lifecycle-operations.js +195 -0
- package/dist/runtime/lifecycle-operations.js.map +1 -0
- package/dist/runtime/operations.d.ts +3 -40
- package/dist/runtime/operations.js +2 -357
- package/dist/runtime/readable.d.ts +2 -3
- package/dist/runtime/readable.d.ts.map +1 -1
- package/dist/runtime/readable.js +6 -5
- package/dist/runtime/readable.js.map +1 -1
- package/dist/runtime/resource-cell.js +2 -2
- package/dist/runtime/resource-cell.js.map +1 -1
- package/dist/runtime/resource-operation.d.ts +13 -0
- package/dist/runtime/resource-operation.d.ts.map +1 -0
- package/dist/runtime/resource-operation.js +170 -0
- package/dist/runtime/resource-operation.js.map +1 -0
- package/dist/runtime/runtime.d.ts +42 -0
- package/dist/runtime/runtime.d.ts.map +1 -0
- package/dist/runtime/runtime.js +59 -0
- package/dist/runtime/runtime.js.map +1 -0
- package/dist/runtime/scheduler.d.ts +5 -1
- package/dist/runtime/scheduler.d.ts.map +1 -1
- package/dist/runtime/scheduler.js +17 -17
- package/dist/runtime/scheduler.js.map +1 -1
- package/dist/runtime/selector.js +4 -3
- package/dist/runtime/selector.js.map +1 -1
- package/dist/runtime/snapshot-source.d.ts +1 -1
- package/dist/runtime/snapshot-source.js +1 -1
- package/dist/runtime/state.js +2 -1
- package/dist/runtime/state.js.map +1 -1
- package/dist/ssg/batch-render.js +2 -1
- package/dist/ssg/batch-render.js.map +1 -1
- package/dist/ssg/create-static-gen.d.ts +9 -3
- package/dist/ssg/create-static-gen.d.ts.map +1 -1
- package/dist/ssg/create-static-gen.js +12 -99
- package/dist/ssg/create-static-gen.js.map +1 -1
- package/dist/ssg/generation-plan.js +70 -0
- package/dist/ssg/generation-plan.js.map +1 -0
- package/dist/ssg/incremental-manifest.js +1 -1
- package/dist/ssg/static-routes.js +101 -0
- package/dist/ssg/static-routes.js.map +1 -0
- package/dist/ssg/types.d.ts +15 -7
- package/dist/ssg/types.d.ts.map +1 -1
- package/dist/ssr/boundaries.js +113 -0
- package/dist/ssr/boundaries.js.map +1 -0
- package/dist/ssr/component-runtime.js +111 -0
- package/dist/ssr/component-runtime.js.map +1 -0
- package/dist/ssr/context.d.ts +3 -1
- package/dist/ssr/context.d.ts.map +1 -1
- package/dist/ssr/context.js +9 -2
- package/dist/ssr/context.js.map +1 -1
- package/dist/ssr/errors.d.ts +2 -0
- package/dist/ssr/errors.js +11 -1
- package/dist/ssr/errors.js.map +1 -1
- package/dist/ssr/escape.js +3 -3
- package/dist/ssr/escape.js.map +1 -1
- package/dist/ssr/hydration-data.js +10 -0
- package/dist/ssr/hydration-data.js.map +1 -0
- package/dist/ssr/hydration-verify.d.ts +12 -0
- package/dist/ssr/hydration-verify.d.ts.map +1 -0
- package/dist/ssr/hydration-verify.js +144 -0
- package/dist/ssr/hydration-verify.js.map +1 -0
- package/dist/ssr/index-internal.d.ts +15 -0
- package/dist/ssr/index-internal.d.ts.map +1 -0
- package/dist/ssr/index-internal.js +19 -0
- package/dist/ssr/index-internal.js.map +1 -0
- package/dist/ssr/index.d.ts +5 -57
- package/dist/ssr/index.js +3 -738
- package/dist/ssr/render-keys.js +9 -32
- package/dist/ssr/render-keys.js.map +1 -1
- package/dist/ssr/render-resolved.d.ts +1 -1
- package/dist/ssr/render-resolved.d.ts.map +1 -1
- package/dist/ssr/render-resolved.js +4 -2
- package/dist/ssr/render-resolved.js.map +1 -1
- package/dist/ssr/render-sync.d.ts +21 -0
- package/dist/ssr/render-sync.d.ts.map +1 -0
- package/dist/ssr/render-sync.js +275 -0
- package/dist/ssr/render-sync.js.map +1 -0
- package/dist/ssr/route-policy-resolution.js +77 -0
- package/dist/ssr/route-policy-resolution.js.map +1 -0
- package/dist/ssr/route-render.d.ts +77 -0
- package/dist/ssr/route-render.d.ts.map +1 -0
- package/dist/ssr/route-render.js +119 -0
- package/dist/ssr/route-render.js.map +1 -0
- package/dist/ssr/sink.d.ts +26 -0
- package/dist/ssr/sink.d.ts.map +1 -0
- package/dist/ssr/types.d.ts +1 -0
- package/dist/ssr/types.d.ts.map +1 -1
- package/dist/ssr/verify-hydration.js.map +1 -1
- package/dist/testing/index.d.ts +1 -2
- package/dist/testing/index.d.ts.map +1 -1
- package/dist/testing/index.js +2 -1
- package/dist/testing/index.js.map +1 -1
- package/package.json +4 -3
- package/dist/data/index.d.ts.map +0 -1
- package/dist/data/index.js.map +0 -1
- package/dist/renderer/dom.js.map +0 -1
- package/dist/router/route.d.ts.map +0 -1
- package/dist/router/route.js.map +0 -1
- package/dist/runtime/component.d.ts.map +0 -1
- package/dist/runtime/component.js.map +0 -1
- package/dist/runtime/for.d.ts.map +0 -1
- package/dist/runtime/for.js.map +0 -1
- package/dist/runtime/operations.d.ts.map +0 -1
- package/dist/runtime/operations.js.map +0 -1
- package/dist/runtime/ssr-bridge.js +0 -24
- package/dist/runtime/ssr-bridge.js.map +0 -1
- package/dist/ssr/index.d.ts.map +0 -1
- package/dist/ssr/index.js.map +0 -1
package/dist/benchmark.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { flushRuntimeScheduler } from "./runtime/access.js";
|
|
2
2
|
import { jsx } from "./jsx-runtime.js";
|
|
3
3
|
import { installRendererBridge } from "./renderer/index.js";
|
|
4
4
|
import { state } from "./runtime/state.js";
|
|
@@ -10,8 +10,8 @@ import { BenchmarkTable } from "./bench/components/benchmark-table.js";
|
|
|
10
10
|
installRendererBridge();
|
|
11
11
|
const benchmarkMetadata = {
|
|
12
12
|
packageName: "@askrjs/askr",
|
|
13
|
-
packageVersion: "0.0.
|
|
14
|
-
buildLabel: "0.0.
|
|
13
|
+
packageVersion: "0.0.49",
|
|
14
|
+
buildLabel: "0.0.49-local"
|
|
15
15
|
};
|
|
16
16
|
function getBenchmarkMetadata() {
|
|
17
17
|
return { ...benchmarkMetadata };
|
|
@@ -44,15 +44,15 @@ function mountBenchmark(root, initialRows) {
|
|
|
44
44
|
root,
|
|
45
45
|
component: App
|
|
46
46
|
});
|
|
47
|
-
|
|
47
|
+
flushRuntimeScheduler();
|
|
48
48
|
return {
|
|
49
49
|
setRows(rows) {
|
|
50
50
|
dataState.set(rows);
|
|
51
|
-
|
|
51
|
+
flushRuntimeScheduler();
|
|
52
52
|
},
|
|
53
53
|
setSelected(id) {
|
|
54
54
|
selectedState.set(id);
|
|
55
|
-
|
|
55
|
+
flushRuntimeScheduler();
|
|
56
56
|
},
|
|
57
57
|
cleanup() {}
|
|
58
58
|
};
|
package/dist/benchmark.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"benchmark.js","names":[],"sources":["../src/bench/benchmark-entry.tsx"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { createIsland } from '../boot';\nimport { installRendererBridge } from '../renderer';\nimport {
|
|
1
|
+
{"version":3,"file":"benchmark.js","names":[],"sources":["../src/bench/benchmark-entry.tsx"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { createIsland } from '../boot';\nimport { installRendererBridge } from '../renderer';\nimport { flushRuntimeScheduler } from '../runtime/access';\nimport { selector } from '../runtime/selector';\nimport { state, State } from '../runtime/state';\nimport { BenchmarkTable } from './components/benchmark-table';\nimport type { BenchmarkRowData } from './components/benchmark-row';\n\ninstallRendererBridge();\n\ntype RowData = BenchmarkRowData;\n\nexport interface BenchmarkMetadata {\n packageName: string;\n packageVersion: string;\n buildLabel: string;\n}\n\nconst packageName =\n process.env.ASKR_PACKAGE_NAME ||\n process.env.npm_package_name ||\n '@askrjs/askr';\nconst packageVersion =\n process.env.ASKR_PACKAGE_VERSION ||\n process.env.npm_package_version ||\n '0.0.0';\n\nexport const benchmarkMetadata: BenchmarkMetadata = {\n packageName,\n packageVersion,\n buildLabel:\n process.env.ASKR_BENCHMARK_BUILD_LABEL || `${packageVersion}-local`,\n};\n\nexport function getBenchmarkMetadata(): BenchmarkMetadata {\n return { ...benchmarkMetadata };\n}\n\nexport function mountBenchmark(root: Element, initialRows?: RowData[]) {\n const initialRowsTyped: RowData[] = Array.isArray(initialRows)\n ? initialRows\n : [];\n let dataState!: State<RowData[]>;\n let selectedState!: State<number | null>;\n\n const App = () => {\n dataState = state<RowData[]>(initialRowsTyped);\n selectedState = state<number | null>(null);\n dataState._hasBeenRead = true;\n const isSelected = selector(selectedState);\n\n const select = (id: number) => selectedState.set(id);\n const remove = (id: number) => {\n dataState.set((rows) => rows.filter((item) => item.id !== id));\n selectedState.set((selected) => (selected === id ? null : selected));\n };\n\n return (\n <div class=\"container\">\n <BenchmarkTable\n rows={dataState}\n isSelected={isSelected}\n onSelect={select}\n onRemove={remove}\n />\n </div>\n );\n };\n\n createIsland({ root, component: App as any });\n flushRuntimeScheduler();\n\n return {\n setRows(rows: RowData[]) {\n dataState.set(rows);\n // Ensure work is flushed so external harnesses (like JFB) that check the DOM\n // immediately after calling `setRows` observe the committed DOM.\n flushRuntimeScheduler();\n },\n setSelected(id: number | null) {\n selectedState.set(id);\n flushRuntimeScheduler();\n },\n cleanup() {\n // nothing to do; outer test may clean the container\n },\n };\n}\n\nexport default { mountBenchmark };\n"],"mappings":";;;;;;;;;AASA,sBAAsB;AAmBtB,MAAa,oBAAuC;CAClD;CACA;CACA,YAAA;AAEF;AAEA,SAAgB,uBAA0C;CACxD,OAAO,EAAE,GAAG,kBAAkB;AAChC;AAEA,SAAgB,eAAe,MAAe,aAAyB;CACrE,MAAM,mBAA8B,MAAM,QAAQ,WAAW,IACzD,cACA,CAAC;CACL,IAAI;CACJ,IAAI;CAEJ,MAAM,YAAY;EAChB,YAAY,MAAiB,gBAAgB;EAC7C,gBAAgB,MAAqB,IAAI;EACzC,UAAU,eAAe;EACzB,MAAM,aAAa,SAAS,aAAa;EAEzC,MAAM,UAAU,OAAe,cAAc,IAAI,EAAE;EACnD,MAAM,UAAU,OAAe;GAC7B,UAAU,KAAK,SAAS,KAAK,QAAQ,SAAS,KAAK,OAAO,EAAE,CAAC;GAC7D,cAAc,KAAK,aAAc,aAAa,KAAK,OAAO,QAAS;EACrE;EAEA,OACE,oBAAC,OAAD;GAAK,OAAM;aACT,oBAAC,gBAAD;IACE,MAAM;IACM;IACZ,UAAU;IACV,UAAU;GACX,CAAA;EACE,CAAA;CAET;CAEA,aAAa;EAAE;EAAM,WAAW;CAAW,CAAC;CAC5C,sBAAsB;CAEtB,OAAO;EACL,QAAQ,MAAiB;GACvB,UAAU,IAAI,IAAI;GAGlB,sBAAsB;EACxB;EACA,YAAY,IAAmB;GAC7B,cAAc,IAAI,EAAE;GACpB,sBAAsB;EACxB;EACA,UAAU,CAEV;CACF;AACF;AAEA,IAAA,0BAAe,EAAE,eAAe"}
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
import { isProductionEnvironment } from "../common/env.js";
|
|
2
|
+
import { setStaticChildSlotsCacheEnabled } from "../renderer/static-reuse.js";
|
|
3
|
+
import "../renderer/dom.js";
|
|
4
|
+
import "../common/ssr.js";
|
|
5
|
+
//#region src/boot/hydration.ts
|
|
6
|
+
function takeHydrationRenderData(rootElement) {
|
|
7
|
+
for (const child of Array.from(rootElement.children)) if (child instanceof HTMLScriptElement && child.getAttribute("data-askr-render-data") === "true") {
|
|
8
|
+
const raw = child.textContent ?? "";
|
|
9
|
+
child.remove();
|
|
10
|
+
if (!raw) return {};
|
|
11
|
+
try {
|
|
12
|
+
return JSON.parse(raw);
|
|
13
|
+
} catch (err) {
|
|
14
|
+
const error = /* @__PURE__ */ new Error("[Askr] Failed to parse embedded SSR render data during hydration.");
|
|
15
|
+
error.cause = err;
|
|
16
|
+
throw error;
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
return null;
|
|
20
|
+
}
|
|
21
|
+
function markSkippedElements(root, skipSelectors) {
|
|
22
|
+
if (skipSelectors.length === 0) return;
|
|
23
|
+
const selectorList = Array.from(new Set(skipSelectors)).join(", ");
|
|
24
|
+
root.querySelectorAll(selectorList).forEach((el) => el.setAttribute("data-skip-hydrate", "true"));
|
|
25
|
+
}
|
|
26
|
+
function collectDeferredBelowFoldBoundaries(root, foldY) {
|
|
27
|
+
const boundaries = [];
|
|
28
|
+
const stack = [];
|
|
29
|
+
for (let index = root.children.length - 1; index >= 0; index -= 1) stack.push(root.children[index]);
|
|
30
|
+
while (stack.length > 0) {
|
|
31
|
+
const element = stack.pop();
|
|
32
|
+
if (element.hasAttribute("data-skip-hydrate")) continue;
|
|
33
|
+
if (element.getBoundingClientRect().top >= foldY) {
|
|
34
|
+
element.setAttribute("data-skip-hydrate", "true");
|
|
35
|
+
boundaries.push(element);
|
|
36
|
+
continue;
|
|
37
|
+
}
|
|
38
|
+
for (let index = element.children.length - 1; index >= 0; index -= 1) stack.push(element.children[index]);
|
|
39
|
+
}
|
|
40
|
+
return boundaries;
|
|
41
|
+
}
|
|
42
|
+
function activateVisibleDeferredBoundaries(boundaries, foldY) {
|
|
43
|
+
let activated = false;
|
|
44
|
+
let remaining = 0;
|
|
45
|
+
for (const element of boundaries) {
|
|
46
|
+
if (!element.hasAttribute("data-skip-hydrate")) continue;
|
|
47
|
+
if (element.getBoundingClientRect().top < foldY) {
|
|
48
|
+
element.removeAttribute("data-skip-hydrate");
|
|
49
|
+
activated = true;
|
|
50
|
+
} else remaining += 1;
|
|
51
|
+
}
|
|
52
|
+
return {
|
|
53
|
+
activated,
|
|
54
|
+
remaining
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
function queueIdleWork(work) {
|
|
58
|
+
return new Promise((resolve) => {
|
|
59
|
+
if (typeof requestIdleCallback !== "undefined") {
|
|
60
|
+
requestIdleCallback(() => {
|
|
61
|
+
work();
|
|
62
|
+
resolve();
|
|
63
|
+
}, { timeout: 2e3 });
|
|
64
|
+
return;
|
|
65
|
+
}
|
|
66
|
+
setTimeout(() => {
|
|
67
|
+
work();
|
|
68
|
+
resolve();
|
|
69
|
+
}, 0);
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
function shouldVerifyHydrationMarkup(config) {
|
|
73
|
+
const explicit = config.hydrate?.verifyMarkup;
|
|
74
|
+
if (typeof explicit === "boolean") return explicit;
|
|
75
|
+
return !isProductionEnvironment();
|
|
76
|
+
}
|
|
77
|
+
async function applySelectiveHydration(rootElement, resolved, path, cleanupStrict, hydrateOptions, source, hooks) {
|
|
78
|
+
const hasPermanentSkips = (hydrateOptions.skipSelectors?.length ?? 0) > 0;
|
|
79
|
+
const hasBelowFoldDeferral = !!hydrateOptions.deferBelowFold;
|
|
80
|
+
const hasSelectiveBoundaries = hasPermanentSkips || hasBelowFoldDeferral;
|
|
81
|
+
let staticChildSlotsCacheSuspended = false;
|
|
82
|
+
let releaseSelectiveHydrationResources = () => {};
|
|
83
|
+
const restoreStaticChildSlotsCache = () => {
|
|
84
|
+
if (!staticChildSlotsCacheSuspended) return;
|
|
85
|
+
setStaticChildSlotsCacheEnabled(true);
|
|
86
|
+
staticChildSlotsCacheSuspended = false;
|
|
87
|
+
};
|
|
88
|
+
if (hydrateOptions.skipSelectors?.length) markSkippedElements(rootElement, hydrateOptions.skipSelectors);
|
|
89
|
+
let deferredBoundaries = [];
|
|
90
|
+
if (hydrateOptions.deferBelowFold) {
|
|
91
|
+
setStaticChildSlotsCacheEnabled(false);
|
|
92
|
+
staticChildSlotsCacheSuspended = true;
|
|
93
|
+
const foldY = hydrateOptions.foldThreshold ?? window.innerHeight;
|
|
94
|
+
deferredBoundaries = collectDeferredBelowFoldBoundaries(rootElement, foldY);
|
|
95
|
+
let selectiveHydrationResourcesReleased = false;
|
|
96
|
+
let unregisterRootCleanupCallback = () => {};
|
|
97
|
+
function handleScroll() {
|
|
98
|
+
const { activated, remaining } = activateVisibleDeferredBoundaries(deferredBoundaries, foldY);
|
|
99
|
+
if (!activated) return;
|
|
100
|
+
hooks.flushHydrationActivation(rootElement);
|
|
101
|
+
if (remaining === 0) releaseSelectiveHydrationResources();
|
|
102
|
+
}
|
|
103
|
+
releaseSelectiveHydrationResources = () => {
|
|
104
|
+
if (selectiveHydrationResourcesReleased) return;
|
|
105
|
+
selectiveHydrationResourcesReleased = true;
|
|
106
|
+
unregisterRootCleanupCallback();
|
|
107
|
+
window.removeEventListener("scroll", handleScroll);
|
|
108
|
+
restoreStaticChildSlotsCache();
|
|
109
|
+
};
|
|
110
|
+
unregisterRootCleanupCallback = hooks.registerRootCleanupCallback(rootElement, releaseSelectiveHydrationResources);
|
|
111
|
+
window.addEventListener("scroll", handleScroll, { passive: true });
|
|
112
|
+
}
|
|
113
|
+
if (hydrateOptions.deferUntilIdle && !hasSelectiveBoundaries) {
|
|
114
|
+
await queueIdleWork(() => {
|
|
115
|
+
hooks.mountOrUpdate(rootElement, (() => resolved.handler(resolved.params)), { cleanupStrict });
|
|
116
|
+
});
|
|
117
|
+
await hooks.registerAppNavigation(rootElement, path, source);
|
|
118
|
+
return;
|
|
119
|
+
}
|
|
120
|
+
try {
|
|
121
|
+
hooks.mountOrUpdate(rootElement, (() => resolved.handler(resolved.params)), { cleanupStrict });
|
|
122
|
+
await hooks.registerAppNavigation(rootElement, path, source);
|
|
123
|
+
} catch (error) {
|
|
124
|
+
releaseSelectiveHydrationResources();
|
|
125
|
+
throw error;
|
|
126
|
+
}
|
|
127
|
+
if (hydrateOptions.deferUntilIdle && deferredBoundaries.length > 0) await queueIdleWork(() => {
|
|
128
|
+
try {
|
|
129
|
+
const { activated } = activateVisibleDeferredBoundaries(deferredBoundaries, Number.POSITIVE_INFINITY);
|
|
130
|
+
if (activated) hooks.flushHydrationActivation(rootElement);
|
|
131
|
+
} finally {
|
|
132
|
+
releaseSelectiveHydrationResources();
|
|
133
|
+
}
|
|
134
|
+
});
|
|
135
|
+
if (deferredBoundaries.length === 0) releaseSelectiveHydrationResources();
|
|
136
|
+
}
|
|
137
|
+
//#endregion
|
|
138
|
+
export { applySelectiveHydration, markSkippedElements, shouldVerifyHydrationMarkup, takeHydrationRenderData };
|
|
139
|
+
|
|
140
|
+
//# sourceMappingURL=hydration.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hydration.js","names":[],"sources":["../../src/boot/hydration.ts"],"sourcesContent":["import { isProductionEnvironment } from '../common/env';\nimport { SSR_RENDER_DATA_ATTR, type SSRData } from '../common/ssr';\nimport type { ResolvedRoute } from '../common/router';\nimport type { ComponentFunction } from '../runtime/component';\nimport { setStaticChildSlotsCacheEnabled } from '../renderer/dom';\nimport type { BootAppRouteSource, HydrateSPAConfig } from './types';\n\ntype MountOrUpdateRoot = (\n rootElement: Element,\n componentFn: ComponentFunction,\n options?: { cleanupStrict?: boolean }\n) => void;\n\nexport type HydrationRuntimeHooks = {\n mountOrUpdate: MountOrUpdateRoot;\n registerAppNavigation: (\n rootElement: Element,\n path: string,\n source?: BootAppRouteSource\n ) => Promise<void>;\n registerRootCleanupCallback: (\n rootElement: Element,\n callback: () => void\n ) => () => void;\n flushHydrationActivation: (rootElement: Element) => void;\n};\n\nexport function takeHydrationRenderData(rootElement: Element): SSRData | null {\n for (const child of Array.from(rootElement.children)) {\n if (\n child instanceof HTMLScriptElement &&\n child.getAttribute(SSR_RENDER_DATA_ATTR) === 'true'\n ) {\n const raw = child.textContent ?? '';\n child.remove();\n if (!raw) {\n return {};\n }\n\n try {\n return JSON.parse(raw) as SSRData;\n } catch (err) {\n const error = new Error(\n '[Askr] Failed to parse embedded SSR render data during hydration.'\n );\n (error as Error & { cause?: unknown }).cause = err;\n throw error;\n }\n }\n }\n\n return null;\n}\n\nexport function markSkippedElements(\n root: Element,\n skipSelectors: string[]\n): void {\n if (skipSelectors.length === 0) {\n return;\n }\n\n const uniqueSelectors = Array.from(new Set(skipSelectors));\n const selectorList = uniqueSelectors.join(', ');\n const elements = root.querySelectorAll(selectorList);\n elements.forEach((el) => el.setAttribute('data-skip-hydrate', 'true'));\n}\n\nfunction collectDeferredBelowFoldBoundaries(\n root: Element,\n foldY: number\n): Element[] {\n const boundaries: Element[] = [];\n const stack: Element[] = [];\n\n for (let index = root.children.length - 1; index >= 0; index -= 1) {\n stack.push(root.children[index]);\n }\n\n while (stack.length > 0) {\n const element = stack.pop()!;\n\n if (element.hasAttribute('data-skip-hydrate')) {\n continue;\n }\n\n const rect = element.getBoundingClientRect();\n if (rect.top >= foldY) {\n element.setAttribute('data-skip-hydrate', 'true');\n boundaries.push(element);\n continue;\n }\n\n for (let index = element.children.length - 1; index >= 0; index -= 1) {\n stack.push(element.children[index]);\n }\n }\n\n return boundaries;\n}\n\nfunction activateVisibleDeferredBoundaries(\n boundaries: Element[],\n foldY: number\n): { activated: boolean; remaining: number } {\n let activated = false;\n let remaining = 0;\n\n for (const element of boundaries) {\n if (!element.hasAttribute('data-skip-hydrate')) {\n continue;\n }\n\n const rect = element.getBoundingClientRect();\n if (rect.top < foldY) {\n element.removeAttribute('data-skip-hydrate');\n activated = true;\n } else {\n remaining += 1;\n }\n }\n\n return { activated, remaining };\n}\n\nfunction queueIdleWork(work: () => void): Promise<void> {\n return new Promise((resolve) => {\n if (typeof requestIdleCallback !== 'undefined') {\n requestIdleCallback(\n () => {\n work();\n resolve();\n },\n { timeout: 2000 }\n );\n return;\n }\n\n setTimeout(() => {\n work();\n resolve();\n }, 0);\n });\n}\n\nexport function shouldVerifyHydrationMarkup(config: HydrateSPAConfig): boolean {\n const explicit = config.hydrate?.verifyMarkup;\n if (typeof explicit === 'boolean') {\n return explicit;\n }\n\n return !isProductionEnvironment();\n}\n\nexport async function applySelectiveHydration(\n rootElement: Element,\n resolved: ResolvedRoute,\n path: string,\n cleanupStrict: boolean | undefined,\n hydrateOptions: NonNullable<HydrateSPAConfig['hydrate']>,\n source: BootAppRouteSource | undefined,\n hooks: HydrationRuntimeHooks\n): Promise<void> {\n const hasPermanentSkips = (hydrateOptions.skipSelectors?.length ?? 0) > 0;\n const hasBelowFoldDeferral = !!hydrateOptions.deferBelowFold;\n const hasSelectiveBoundaries = hasPermanentSkips || hasBelowFoldDeferral;\n let staticChildSlotsCacheSuspended = false;\n let releaseSelectiveHydrationResources = () => {};\n\n const restoreStaticChildSlotsCache = () => {\n if (!staticChildSlotsCacheSuspended) {\n return;\n }\n\n setStaticChildSlotsCacheEnabled(true);\n staticChildSlotsCacheSuspended = false;\n };\n\n if (hydrateOptions.skipSelectors?.length) {\n markSkippedElements(rootElement, hydrateOptions.skipSelectors);\n }\n\n let deferredBoundaries: Element[] = [];\n if (hydrateOptions.deferBelowFold) {\n setStaticChildSlotsCacheEnabled(false);\n staticChildSlotsCacheSuspended = true;\n const foldY = hydrateOptions.foldThreshold ?? window.innerHeight;\n deferredBoundaries = collectDeferredBelowFoldBoundaries(rootElement, foldY);\n\n let selectiveHydrationResourcesReleased = false;\n let unregisterRootCleanupCallback = () => {};\n\n function handleScroll() {\n const { activated, remaining } = activateVisibleDeferredBoundaries(\n deferredBoundaries,\n foldY\n );\n\n if (!activated) {\n return;\n }\n\n hooks.flushHydrationActivation(rootElement);\n\n if (remaining === 0) {\n releaseSelectiveHydrationResources();\n }\n }\n\n releaseSelectiveHydrationResources = () => {\n if (selectiveHydrationResourcesReleased) {\n return;\n }\n\n selectiveHydrationResourcesReleased = true;\n unregisterRootCleanupCallback();\n window.removeEventListener('scroll', handleScroll);\n restoreStaticChildSlotsCache();\n };\n\n unregisterRootCleanupCallback = hooks.registerRootCleanupCallback(\n rootElement,\n releaseSelectiveHydrationResources\n );\n\n window.addEventListener('scroll', handleScroll, { passive: true });\n }\n\n if (hydrateOptions.deferUntilIdle && !hasSelectiveBoundaries) {\n await queueIdleWork(() => {\n hooks.mountOrUpdate(\n rootElement,\n (() => resolved.handler(resolved.params)) as ComponentFunction,\n {\n cleanupStrict,\n }\n );\n });\n await hooks.registerAppNavigation(rootElement, path, source);\n return;\n }\n\n try {\n hooks.mountOrUpdate(\n rootElement,\n (() => resolved.handler(resolved.params)) as ComponentFunction,\n {\n cleanupStrict,\n }\n );\n await hooks.registerAppNavigation(rootElement, path, source);\n } catch (error) {\n releaseSelectiveHydrationResources();\n throw error;\n }\n\n if (hydrateOptions.deferUntilIdle && deferredBoundaries.length > 0) {\n await queueIdleWork(() => {\n try {\n const { activated } = activateVisibleDeferredBoundaries(\n deferredBoundaries,\n Number.POSITIVE_INFINITY\n );\n if (activated) {\n hooks.flushHydrationActivation(rootElement);\n }\n } finally {\n releaseSelectiveHydrationResources();\n }\n });\n }\n\n if (deferredBoundaries.length === 0) {\n releaseSelectiveHydrationResources();\n }\n}\n"],"mappings":"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"}
|
package/dist/boot/index.d.ts
CHANGED
|
@@ -1,51 +1,7 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import { ScrollRestorationOptions } from "../router/navigate.js";
|
|
1
|
+
import { HydrateSPAConfig, IslandConfig, IslandsConfig, SPAConfig } from "./types.js";
|
|
2
|
+
import { cleanupApp, hasApp } from "./root-lifecycle.js";
|
|
4
3
|
|
|
5
4
|
//#region src/boot/index.d.ts
|
|
6
|
-
type IslandConfig = {
|
|
7
|
-
root: Element | string;
|
|
8
|
-
component: ComponentFunction;
|
|
9
|
-
cleanupStrict?: boolean;
|
|
10
|
-
routes?: never;
|
|
11
|
-
};
|
|
12
|
-
type IslandsConfig = {
|
|
13
|
-
islands: IslandConfig[];
|
|
14
|
-
};
|
|
15
|
-
type BootRouteSource = {
|
|
16
|
-
manifest: RouteManifest;
|
|
17
|
-
routes?: Route[];
|
|
18
|
-
} | {
|
|
19
|
-
manifest?: RouteManifest;
|
|
20
|
-
routes: Route[];
|
|
21
|
-
};
|
|
22
|
-
type SPAConfig = BootRouteSource & {
|
|
23
|
-
root: Element | string;
|
|
24
|
-
/**
|
|
25
|
-
* Preferred: pass the route manifest built via `registerRoutes(() => { ... })`.
|
|
26
|
-
* ```ts
|
|
27
|
-
* import { getManifest } from '@askrjs/askr/router';
|
|
28
|
-
* await createSPA({ root: '#app', manifest: getManifest() });
|
|
29
|
-
* ```
|
|
30
|
-
*/
|
|
31
|
-
auth?: RouteAuthOptions;
|
|
32
|
-
scrollRestoration?: boolean | ScrollRestorationOptions;
|
|
33
|
-
cleanupStrict?: boolean;
|
|
34
|
-
component?: never;
|
|
35
|
-
};
|
|
36
|
-
type HydrateSPAConfig = BootRouteSource & {
|
|
37
|
-
root: Element | string; /** Preferred manifest input — see `SPAConfig.manifest`. */
|
|
38
|
-
auth?: RouteAuthOptions;
|
|
39
|
-
scrollRestoration?: boolean | ScrollRestorationOptions;
|
|
40
|
-
cleanupStrict?: boolean;
|
|
41
|
-
hydrate?: {
|
|
42
|
-
verifyMarkup?: boolean;
|
|
43
|
-
deferUntilIdle?: boolean;
|
|
44
|
-
deferBelowFold?: boolean;
|
|
45
|
-
foldThreshold?: number;
|
|
46
|
-
skipSelectors?: string[];
|
|
47
|
-
};
|
|
48
|
-
};
|
|
49
5
|
/**
|
|
50
6
|
* createIsland: Enhances existing DOM (no router, mounts once)
|
|
51
7
|
*/
|
|
@@ -75,15 +31,6 @@ declare function createSPA(config: SPAConfig): Promise<void>;
|
|
|
75
31
|
* Accepts either a `manifest` (preferred) or a legacy `routes` array.
|
|
76
32
|
*/
|
|
77
33
|
declare function hydrateSPA(config: HydrateSPAConfig): Promise<void>;
|
|
78
|
-
/**
|
|
79
|
-
* Cleanup an app mounted on a root element (element or id).
|
|
80
|
-
* Safe to call multiple times — no-op when nothing is mounted.
|
|
81
|
-
*/
|
|
82
|
-
declare function cleanupApp(root: Element | string): void;
|
|
83
|
-
/**
|
|
84
|
-
* Check whether an app is mounted on the given root
|
|
85
|
-
*/
|
|
86
|
-
declare function hasApp(root: Element | string): boolean;
|
|
87
34
|
//#endregion
|
|
88
|
-
export { HydrateSPAConfig, IslandConfig, IslandsConfig, SPAConfig, cleanupApp, createIsland, createIslands, createSPA, hasApp, hydrateSPA };
|
|
35
|
+
export { type HydrateSPAConfig, type IslandConfig, type IslandsConfig, type SPAConfig, cleanupApp, createIsland, createIslands, createSPA, hasApp, hydrateSPA };
|
|
89
36
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/boot/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","names":[],"sources":["../../src/boot/index.ts"],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","names":[],"sources":["../../src/boot/index.ts"],"mappings":";;;;;;AA4DiD;iBAAjC,YAAA,CAAa,MAAoB,EAAZ,YAAY;;;;AAwCE;iBAAnC,aAAA,CAAc,MAAqB,EAAb,aAAa;;;;;;;;AA2BQ;AA0G3D;;;;;;iBA1GsB,SAAA,CAAU,MAAA,EAAQ,SAAA,GAAY,OAAO;;AA0GQ;;;iBAA7C,UAAA,CAAW,MAAA,EAAQ,gBAAA,GAAmB,OAAO"}
|