@askrjs/askr 0.2.4 → 0.3.0
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/CHANGELOG.md +11 -0
- package/dist/access-CEA2pOry.js +1046 -0
- package/dist/actions/index.d.ts +16 -2
- package/dist/actions/index.js +5 -5
- package/dist/{activity-FirwPXA_.js → activity-oy2YFTFF.js} +10 -16
- package/dist/benchmark.js +8 -9
- package/dist/boot/index.d.ts +19 -9
- package/dist/boot/index.js +1 -1
- package/dist/{boot-tWyF6121.js → boot-BMBMWUGI.js} +680 -441
- package/dist/capabilities-Bbf0mlp9.js +42 -0
- package/dist/components/index.d.ts +11 -8
- package/dist/components/index.js +1 -1
- package/dist/{compose-ref-Bfaf4kUC.js → compose-ref-v0qGlHoN.js} +7 -1
- package/dist/control/index.d.ts +20 -2
- package/dist/control/index.js +1 -1
- package/dist/{control-C-wSaq9V.js → control-BR_mrX__.js} +4 -4
- package/dist/core.d.ts +163 -0
- package/dist/csp-nonce-BfFWcd0w.js +173 -0
- package/dist/data/index.d.ts +74 -2
- package/dist/data/index.js +3 -3
- package/dist/{data-ghKopAbp.js → data-2edW0jhF.js} +108 -122
- package/dist/{data-runtime-7t_Y0iv3.js → data-runtime-CxoY98lX.js} +22 -15
- package/dist/{deferred-CxjWCkIn.js → deferred-CbgNhf67.js} +5 -5
- package/dist/dom-renderer.d.ts +77 -0
- package/dist/domains/actions.d.ts +70 -0
- package/dist/domains/component.d.ts +119 -0
- package/dist/domains/context.d.ts +73 -0
- package/dist/domains/control.d.ts +328 -0
- package/dist/domains/data.d.ts +461 -0
- package/dist/domains/diagnostics.d.ts +21 -0
- package/dist/domains/lifecycle.d.ts +112 -0
- package/dist/domains/refs.d.ts +18 -0
- package/dist/domains/renderer.d.ts +127 -0
- package/dist/domains/routing.d.ts +501 -0
- package/dist/domains/scheduler.d.ts +79 -0
- package/dist/domains/server.d.ts +112 -0
- package/dist/domains/state.d.ts +129 -0
- package/dist/domains/telemetry.d.ts +29 -0
- package/dist/eager-control.d.ts +8 -0
- package/dist/{effect-CNwstBBD.js → effect-C3Zsc1k6.js} +14 -41
- package/dist/{types-DWVrKn9N.d.ts → elements.d.ts} +79 -42
- package/dist/{for-internal-DyBHfKJA.js → for-state-BDykeOJL.js} +598 -494
- package/dist/foundations/icon/index.d.ts +67 -16
- package/dist/foundations/icon/index.js +1 -1
- package/dist/foundations/index.d.ts +26 -3
- package/dist/foundations/index.js +1 -1
- package/dist/foundations/interactions/index.d.ts +73 -34
- package/dist/foundations/interactions/index.js +1 -1
- package/dist/foundations/state/index.d.ts +12 -5
- package/dist/foundations/state/index.js +1 -1
- package/dist/foundations/structures/index.d.ts +44 -3
- package/dist/foundations/structures/index.js +1 -1
- package/dist/foundations/utilities/index.d.ts +34 -3
- package/dist/foundations/utilities/index.js +1 -1
- package/dist/fx/index.d.ts +72 -25
- package/dist/fx/index.js +8 -8
- package/dist/index.d.ts +121 -4
- package/dist/index.js +316 -47
- package/dist/{component-internal-C4hKKQBF.js → instance-VAFYVJOa.js} +495 -283
- package/dist/{interactions-D102JxBR.js → interactions-CTeACdT_.js} +1 -1
- package/dist/jsx-dev-runtime.d.ts +51 -11
- package/dist/jsx-globals.d.ts +2 -0
- package/dist/jsx-runtime-CPJXAOBF.js +43 -0
- package/dist/jsx-runtime.d.ts +17 -3
- package/dist/jsx-runtime.js +2 -42
- package/dist/jsx.d.ts +108 -0
- package/dist/{manifest-D6rfj_jC.js → manifest-D1P3UNWV.js} +4 -9
- package/dist/{navigate-ZZu1IV0B.js → navigate-prC5V8XV.js} +125 -472
- package/dist/{navigate-F4sHgWbw.d.ts → navigation.d.ts} +8 -8
- package/dist/{readable-Di1fzSwm.js → notify-DxxuDPeY.js} +96 -34
- package/dist/{query-registry-Bua3cDyb.js → query-registry-LrYpQsDJ.js} +1 -1
- package/dist/{compose-ref-DOJHoW5X.d.ts → refs.d.ts} +11 -7
- package/dist/{ssr-Doog-AfJ.js → render-resolved-BC0W7_5b.js} +165 -558
- package/dist/{renderer-Cl23O0hV.js → renderer-CT0HeY58.js} +6825 -5692
- package/dist/{resolution-ClD-K7Lz.js → resolution-3DskUkjG.js} +189 -180
- package/dist/{resource-operation-Vz1S5h2k.js → resource-18-sFRl9.js} +98 -58
- package/dist/resources/index.d.ts +64 -12
- package/dist/resources/index.js +214 -8
- package/dist/route-activity.d.ts +21 -0
- package/dist/{route-matching-Bo6UqG-5.js → route-matching-CUzZ31gT.js} +68 -82
- package/dist/router/index.d.ts +378 -79
- package/dist/router/index.js +9 -9
- package/dist/router-internal-7nuNEHfG.js +36 -0
- package/dist/scope-Cq_iYbTR.js +403 -0
- package/dist/{selector-CsKuomw0.js → selector-BSPVkjKP.js} +26 -27
- package/dist/{shared-CYBH3F8I.js → shared-kU8yvryp.js} +3 -6
- package/dist/{snapshot-source-BB42xgwb.js → snapshot-source-An4iKajG.js} +1 -1
- package/dist/ssg/index.d.ts +51 -15
- package/dist/ssg/index.js +269 -209
- package/dist/ssr/index.d.ts +121 -68
- package/dist/ssr/index.js +2 -1
- package/dist/ssr-CiNm6Vzl.js +393 -0
- package/dist/{ssr-DSHd_Q9K.js → ssr-EPjwJH5R.js} +5 -1
- package/dist/{state-BGJgYSyQ.js → state-BXJfudq1.js} +10 -15
- package/dist/{structures-DFyK5AdQ.js → structures-CjEzfj4h.js} +37 -57
- package/dist/{index-CTpMmzgN.d.ts → structures.d.ts} +57 -36
- package/dist/testing/index.d.ts +123 -24
- package/dist/testing/index.js +24 -61
- package/dist/timer-C7uqnJVt.js +85 -0
- package/dist/{index-B1gu0_m0.d.ts → utilities.d.ts} +24 -13
- package/dist/{verify-hydration-BZPJ_kYa.js → verify-hydration-ikaxotf7.js} +8 -5
- package/package.json +12 -14
- package/dist/access-BucjYZcX.js +0 -509
- package/dist/activity-DooIuxQO.d.ts +0 -14
- package/dist/benchmark.d.ts +0 -26
- package/dist/cleanup-TXSsApEl.js +0 -535
- package/dist/component-cleanup-jdbgjkT1.js +0 -143
- package/dist/component-scope-4I3yEMkb.js +0 -195
- package/dist/control-Cxag1yqV.d.ts +0 -8
- package/dist/csp-nonce-9NFUb7hJ.js +0 -72
- package/dist/css-BuPaTOfe.js +0 -70
- package/dist/fastlane-BKZduiBQ.js +0 -166
- package/dist/index-Dgjbo2gU.d.ts +0 -1456
- package/dist/jsx-runtime-Cg7GqY1S.d.ts +0 -2
- package/dist/jsx-runtime-gVIaTPw0.d.ts +0 -38
- package/dist/lifecycle-batch-63aXFf2S.js +0 -253
- package/dist/lifecycle-operations-Q0k3EFnG.js +0 -287
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,121 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
export {
|
|
2
|
+
createDOMRendererHost,
|
|
3
|
+
DOMComponentOwner,
|
|
4
|
+
DOMChildScope,
|
|
5
|
+
DOMReactiveSource,
|
|
6
|
+
DOMRendererRange,
|
|
7
|
+
DOMRendererEvaluation,
|
|
8
|
+
DOMRendererCleanup,
|
|
9
|
+
DOMRendererScopes,
|
|
10
|
+
DOMRendererKeys,
|
|
11
|
+
DOMRendererReactivity,
|
|
12
|
+
DOMRendererHost,
|
|
13
|
+
} from './dom-renderer.js';
|
|
14
|
+
import {
|
|
15
|
+
cspNonce,
|
|
16
|
+
selector,
|
|
17
|
+
Show,
|
|
18
|
+
configureRenderDiagnostics,
|
|
19
|
+
ShowProps,
|
|
20
|
+
For,
|
|
21
|
+
CaseProps,
|
|
22
|
+
StateSetter,
|
|
23
|
+
Match,
|
|
24
|
+
StateTuple,
|
|
25
|
+
registerSSRStyle,
|
|
26
|
+
MatchProps,
|
|
27
|
+
state,
|
|
28
|
+
ForProps,
|
|
29
|
+
createQuery,
|
|
30
|
+
createRef,
|
|
31
|
+
RenderDiagnosticsOptions,
|
|
32
|
+
derive,
|
|
33
|
+
defineScope,
|
|
34
|
+
QueryCollection,
|
|
35
|
+
RuntimeKeyedReorderDecision,
|
|
36
|
+
defineServerQueries,
|
|
37
|
+
QueryCollectionOptions,
|
|
38
|
+
getDefaultRuntime,
|
|
39
|
+
dehydrateDataRuntime,
|
|
40
|
+
createQueryCollection,
|
|
41
|
+
serveQuery,
|
|
42
|
+
QueryPrefetchContext,
|
|
43
|
+
Derived,
|
|
44
|
+
Case,
|
|
45
|
+
State,
|
|
46
|
+
CspNonceScope,
|
|
47
|
+
QueryCollectionEntry,
|
|
48
|
+
RuntimeRendererHost,
|
|
49
|
+
prefetchQuery,
|
|
50
|
+
AskrRuntime,
|
|
51
|
+
hydrateDataRuntime,
|
|
52
|
+
QueryDefinition,
|
|
53
|
+
getSignal,
|
|
54
|
+
AskrRuntimeOptions,
|
|
55
|
+
DataRuntime,
|
|
56
|
+
defineQuery,
|
|
57
|
+
QueryCollectionKey,
|
|
58
|
+
createRuntime,
|
|
59
|
+
ServerQueryHandler,
|
|
60
|
+
Ref,
|
|
61
|
+
readScope,
|
|
62
|
+
Scope,
|
|
63
|
+
Selector,
|
|
64
|
+
} from './core.js';
|
|
65
|
+
import { Props, Fragment } from './elements.js';
|
|
66
|
+
import { jsxs, jsx } from './jsx.js';
|
|
67
|
+
export {
|
|
68
|
+
AskrRuntime,
|
|
69
|
+
type AskrRuntimeOptions,
|
|
70
|
+
Case,
|
|
71
|
+
type CaseProps,
|
|
72
|
+
CspNonceScope,
|
|
73
|
+
type DataRuntime,
|
|
74
|
+
type Derived,
|
|
75
|
+
For,
|
|
76
|
+
type ForProps,
|
|
77
|
+
Fragment,
|
|
78
|
+
Match,
|
|
79
|
+
type MatchProps,
|
|
80
|
+
type Props,
|
|
81
|
+
type QueryCollection,
|
|
82
|
+
type QueryCollectionEntry,
|
|
83
|
+
type QueryCollectionKey,
|
|
84
|
+
type QueryCollectionOptions,
|
|
85
|
+
type QueryDefinition,
|
|
86
|
+
type QueryPrefetchContext,
|
|
87
|
+
type Ref,
|
|
88
|
+
type RenderDiagnosticsOptions,
|
|
89
|
+
type RuntimeKeyedReorderDecision,
|
|
90
|
+
type RuntimeRendererHost,
|
|
91
|
+
type Scope,
|
|
92
|
+
type Selector,
|
|
93
|
+
type ServerQueryHandler,
|
|
94
|
+
Show,
|
|
95
|
+
type ShowProps,
|
|
96
|
+
type State,
|
|
97
|
+
type StateSetter,
|
|
98
|
+
type StateTuple,
|
|
99
|
+
configureRenderDiagnostics,
|
|
100
|
+
createQuery,
|
|
101
|
+
createQueryCollection,
|
|
102
|
+
createRef,
|
|
103
|
+
createRuntime,
|
|
104
|
+
cspNonce,
|
|
105
|
+
defineQuery,
|
|
106
|
+
defineScope,
|
|
107
|
+
defineServerQueries,
|
|
108
|
+
dehydrateDataRuntime,
|
|
109
|
+
derive,
|
|
110
|
+
getDefaultRuntime,
|
|
111
|
+
getSignal,
|
|
112
|
+
hydrateDataRuntime,
|
|
113
|
+
jsx,
|
|
114
|
+
jsxs,
|
|
115
|
+
prefetchQuery,
|
|
116
|
+
readScope,
|
|
117
|
+
registerSSRStyle,
|
|
118
|
+
selector,
|
|
119
|
+
serveQuery,
|
|
120
|
+
state,
|
|
121
|
+
};
|
package/dist/index.js
CHANGED
|
@@ -1,24 +1,24 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { _ as defaultRuntimeState, b as ScheduledWork, f as requestRuntimeWork, g as createRuntimeState, o as getRuntimeFlushVersion } from "./access-CEA2pOry.js";
|
|
2
|
+
import { f as configureRenderDiagnostics, m as defineScope, v as readScope, w as bindComponentOwnership } from "./instance-VAFYVJOa.js";
|
|
3
|
+
import { C as teardownScopeHost, D as captureOwnerRange, E as recordInlineComponentHost, O as releaseOwnerRange, S as resolveScopeBoundary, T as isComponentHostDetached, _ as captureChildScopeHost, b as prepareScopeRemoval, m as applyComponentResult, p as classifyUpdate, r as ensureNativeDOMHost, t as createRendererCapabilities, v as clearChildScopeHost, w as detachPortalHostOutput, x as recordRemovedScopeBoundary, y as hasUnmountedComponentHost } from "./renderer-CT0HeY58.js";
|
|
4
|
+
import { O as ownCleanup, T as getOwnedChildScopes, f as getCurrentComponentInstance, h as getSignal, i as claimHookIndex, j as setOwnedChildScopes, x as componentRecordPrototype, y as OwnershipRecord } from "./scope-Cq_iYbTR.js";
|
|
5
|
+
import { b as syncDerivedDependencySubscriptions, h as clearDerivedDependencySubscriptions, t as notifyReadableSource, v as recordReadableRead, x as withDerivedReadTracking } from "./notify-DxxuDPeY.js";
|
|
3
6
|
import { n as Fragment } from "./jsx-DRS-qjiN.js";
|
|
4
|
-
import {
|
|
5
|
-
import { f as syncDerivedDependencySubscriptions, l as notifyReadableReaders, o as markReactivePropsDirtySource, p as withDerivedReadTracking, r as clearDerivedDependencySubscriptions, s as markReadableDerivedSubscribersDirty, u as recordReadableRead } from "./readable-Di1fzSwm.js";
|
|
6
|
-
import { n as isSnapshotSource } from "./snapshot-source-BB42xgwb.js";
|
|
7
|
+
import { n as isSnapshotSource } from "./snapshot-source-An4iKajG.js";
|
|
7
8
|
import { c as registerSSRStyle } from "./render-context-B7ohlh6t.js";
|
|
8
|
-
import { t as state } from "./state-
|
|
9
|
-
import { t as selector } from "./selector-
|
|
10
|
-
import { t as
|
|
11
|
-
import { n as
|
|
12
|
-
import {
|
|
13
|
-
import {
|
|
14
|
-
import { n as
|
|
15
|
-
|
|
16
|
-
//#region src/runtime/derive.ts
|
|
9
|
+
import { t as state } from "./state-BXJfudq1.js";
|
|
10
|
+
import { t as selector } from "./selector-BSPVkjKP.js";
|
|
11
|
+
import { n as cspNonce, t as CspNonceScope } from "./csp-nonce-BfFWcd0w.js";
|
|
12
|
+
import { i as For, n as Match, r as Show, t as Case } from "./control-BR_mrX__.js";
|
|
13
|
+
import { r as jsxs, t as jsx } from "./jsx-runtime-CPJXAOBF.js";
|
|
14
|
+
import { n as createQuery, t as createQueryCollection } from "./data-2edW0jhF.js";
|
|
15
|
+
import { a as hydrateDataRuntime, i as dehydrateDataRuntime, n as defineQuery, o as prefetchQuery, r as defineServerQueries, s as serveQuery } from "./query-registry-LrYpQsDJ.js";
|
|
16
|
+
//#region src/runtime/reactivity/derive.ts
|
|
17
17
|
const deriveCells = /* @__PURE__ */ new WeakMap();
|
|
18
18
|
const dirtyDerivedCells = /* @__PURE__ */ new Set();
|
|
19
|
-
|
|
19
|
+
const derivedWork = new ScheduledWork(flushDirtyDerivedCells);
|
|
20
20
|
function getDeriveStore(instance) {
|
|
21
|
-
const generation = instance.
|
|
21
|
+
const generation = instance.owner.identity;
|
|
22
22
|
let store = deriveCells.get(generation);
|
|
23
23
|
if (!store) {
|
|
24
24
|
store = /* @__PURE__ */ new Map();
|
|
@@ -28,16 +28,13 @@ function getDeriveStore(instance) {
|
|
|
28
28
|
}
|
|
29
29
|
function markDerivedCellDirty(cell) {
|
|
30
30
|
cell._dirty = true;
|
|
31
|
-
if (cell.
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
if (!hasPendingDerivedFlush) {
|
|
35
|
-
hasPendingDerivedFlush = true;
|
|
36
|
-
enqueueRuntimeLane("derived", flushDirtyDerivedCells);
|
|
31
|
+
if (!cell._pending) {
|
|
32
|
+
cell._pending = true;
|
|
33
|
+
dirtyDerivedCells.add(cell);
|
|
37
34
|
}
|
|
35
|
+
requestRuntimeWork("derived", derivedWork);
|
|
38
36
|
}
|
|
39
37
|
function flushDirtyDerivedCells() {
|
|
40
|
-
hasPendingDerivedFlush = false;
|
|
41
38
|
if (dirtyDerivedCells.size === 0) return;
|
|
42
39
|
const pending = dirtyDerivedCells.values();
|
|
43
40
|
let failures = null;
|
|
@@ -45,7 +42,7 @@ function flushDirtyDerivedCells() {
|
|
|
45
42
|
while (!next.done) {
|
|
46
43
|
const cell = next.value;
|
|
47
44
|
dirtyDerivedCells.delete(cell);
|
|
48
|
-
cell.
|
|
45
|
+
cell._pending = false;
|
|
49
46
|
if (!cell._dirty) {
|
|
50
47
|
next = pending.next();
|
|
51
48
|
continue;
|
|
@@ -85,11 +82,7 @@ function recomputeDerivedCell(cell, notifyDownstream) {
|
|
|
85
82
|
cell._hasValue = true;
|
|
86
83
|
cell._value = nextValue;
|
|
87
84
|
cell._lastRecomputeFlushVersion = getRuntimeFlushVersion();
|
|
88
|
-
if (valueChanged && notifyDownstream) {
|
|
89
|
-
markReadableDerivedSubscribersDirty(cell, true);
|
|
90
|
-
markReactivePropsDirtySource(cell);
|
|
91
|
-
notifyReadableReaders(cell);
|
|
92
|
-
}
|
|
85
|
+
if (valueChanged && notifyDownstream) notifyReadableSource(cell, { skipCurrentDerivedSubscriber: true });
|
|
93
86
|
return cell._value;
|
|
94
87
|
}
|
|
95
88
|
function createDerivedCell(instance, generation, store, hookIndex, compute) {
|
|
@@ -100,7 +93,7 @@ function createDerivedCell(instance, generation, store, hookIndex, compute) {
|
|
|
100
93
|
return derivedCell._value;
|
|
101
94
|
}
|
|
102
95
|
recordReadableRead(derivedCell);
|
|
103
|
-
return recomputeDerivedCell(derivedCell, derivedCell.
|
|
96
|
+
return recomputeDerivedCell(derivedCell, derivedCell._pending);
|
|
104
97
|
};
|
|
105
98
|
cell._owner = instance;
|
|
106
99
|
cell._hookIndex = hookIndex;
|
|
@@ -108,7 +101,7 @@ function createDerivedCell(instance, generation, store, hookIndex, compute) {
|
|
|
108
101
|
cell._value = void 0;
|
|
109
102
|
cell._hasValue = false;
|
|
110
103
|
cell._dirty = true;
|
|
111
|
-
cell.
|
|
104
|
+
cell._pending = false;
|
|
112
105
|
cell._evaluating = false;
|
|
113
106
|
cell._active = true;
|
|
114
107
|
cell._lastRecomputeFlushVersion = -1;
|
|
@@ -119,7 +112,7 @@ function createDerivedCell(instance, generation, store, hookIndex, compute) {
|
|
|
119
112
|
cell._cleanup = () => {
|
|
120
113
|
if (!cell._active) return;
|
|
121
114
|
cell._active = false;
|
|
122
|
-
cell.
|
|
115
|
+
cell._pending = false;
|
|
123
116
|
cell._dirty = false;
|
|
124
117
|
cell._pendingDependencySources = void 0;
|
|
125
118
|
dirtyDerivedCells.delete(cell);
|
|
@@ -128,10 +121,13 @@ function createDerivedCell(instance, generation, store, hookIndex, compute) {
|
|
|
128
121
|
cell._readers?.size;
|
|
129
122
|
cell._readers?.clear();
|
|
130
123
|
};
|
|
131
|
-
(instance.
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
124
|
+
ownCleanup(instance.owner, () => {
|
|
125
|
+
try {
|
|
126
|
+
cell._cleanup();
|
|
127
|
+
} finally {
|
|
128
|
+
store.delete(hookIndex);
|
|
129
|
+
if (store.size === 0 && deriveCells.get(generation) === store) deriveCells.delete(generation);
|
|
130
|
+
}
|
|
135
131
|
});
|
|
136
132
|
return cell;
|
|
137
133
|
}
|
|
@@ -143,7 +139,7 @@ function getOrCreateDerivedCell(instance, hookIndex, compute) {
|
|
|
143
139
|
if (existing._lastRecomputeFlushVersion !== getRuntimeFlushVersion()) existing._dirty = true;
|
|
144
140
|
return existing;
|
|
145
141
|
}
|
|
146
|
-
const created = createDerivedCell(instance, instance.
|
|
142
|
+
const created = createDerivedCell(instance, instance.owner.identity, store, hookIndex, compute);
|
|
147
143
|
store.set(hookIndex, created);
|
|
148
144
|
return created;
|
|
149
145
|
}
|
|
@@ -161,25 +157,298 @@ function createMappedSelector(source, map) {
|
|
|
161
157
|
};
|
|
162
158
|
}
|
|
163
159
|
function derive(source, map) {
|
|
164
|
-
const instance =
|
|
160
|
+
const instance = getCurrentComponentInstance();
|
|
165
161
|
if (!instance) throw new Error("derive() can only be called during component render execution. Move derive() calls to the top level of your component function.");
|
|
166
162
|
const cell = getOrCreateDerivedCell(instance, claimHookIndex(instance, "derive"), map === void 0 ? () => source() : createMappedSelector(source, map));
|
|
167
163
|
recomputeDerivedCell(cell, false);
|
|
168
164
|
return cell;
|
|
169
165
|
}
|
|
170
166
|
//#endregion
|
|
167
|
+
//#region src/runtime/public-ownership.ts
|
|
168
|
+
const fields = {
|
|
169
|
+
mounted: "mounted",
|
|
170
|
+
abortController: "controller",
|
|
171
|
+
cleanupFns: "cleanups",
|
|
172
|
+
_lastReadSources: "reads",
|
|
173
|
+
_ownershipGeneration: "identity"
|
|
174
|
+
};
|
|
175
|
+
const descriptors = {};
|
|
176
|
+
for (const [field, member] of Object.entries(fields)) descriptors[field] = {
|
|
177
|
+
enumerable: true,
|
|
178
|
+
configurable: true,
|
|
179
|
+
get() {
|
|
180
|
+
return this.owner[member];
|
|
181
|
+
},
|
|
182
|
+
set(value) {
|
|
183
|
+
this.owner[member] = value;
|
|
184
|
+
}
|
|
185
|
+
};
|
|
186
|
+
descriptors._ownedChildScopes = {
|
|
187
|
+
enumerable: true,
|
|
188
|
+
configurable: true,
|
|
189
|
+
get() {
|
|
190
|
+
return getOwnedChildScopes(this.owner);
|
|
191
|
+
},
|
|
192
|
+
set(scopes) {
|
|
193
|
+
setOwnedChildScopes(this.owner, scopes);
|
|
194
|
+
}
|
|
195
|
+
};
|
|
196
|
+
let ownershipViewsInstalled = false;
|
|
197
|
+
/**
|
|
198
|
+
* Publish the legacy ownership property views onto the execution record.
|
|
199
|
+
*
|
|
200
|
+
* Called at module scope from the published entry barrels: an entry barrel
|
|
201
|
+
* exists to compose the surface a consumer imports, so wiring there is the
|
|
202
|
+
* composition root rather than accidental import-order coupling. It latches so
|
|
203
|
+
* that importing several entries, or adapting a renderer host afterwards,
|
|
204
|
+
* redefines nothing.
|
|
205
|
+
*/
|
|
206
|
+
function installOwnershipViews() {
|
|
207
|
+
if (ownershipViewsInstalled) return;
|
|
208
|
+
ownershipViewsInstalled = true;
|
|
209
|
+
Object.defineProperties(componentRecordPrototype, descriptors);
|
|
210
|
+
}
|
|
211
|
+
const exposed = /* @__PURE__ */ new WeakSet();
|
|
212
|
+
/** Preserve the object identity used by host callbacks and readable maps.
|
|
213
|
+
* Legacy properties are views of the same record, never copied lifetime state. */
|
|
214
|
+
function componentView(instance) {
|
|
215
|
+
if (!exposed.has(instance)) {
|
|
216
|
+
Object.defineProperties(instance, descriptors);
|
|
217
|
+
exposed.add(instance);
|
|
218
|
+
}
|
|
219
|
+
return instance;
|
|
220
|
+
}
|
|
221
|
+
/** Adopt a consumer-created extension record in place, preserving identity. */
|
|
222
|
+
function executionRecord(instance) {
|
|
223
|
+
const record = instance;
|
|
224
|
+
if (!record.owner) {
|
|
225
|
+
const owner = new OwnershipRecord();
|
|
226
|
+
owner.mounted = instance.mounted;
|
|
227
|
+
owner.controller = instance.abortController;
|
|
228
|
+
owner.cleanups = instance.cleanupFns;
|
|
229
|
+
setOwnedChildScopes(owner, instance._ownedChildScopes);
|
|
230
|
+
owner.reads = instance._lastReadSources;
|
|
231
|
+
owner.identity = instance._ownershipGeneration;
|
|
232
|
+
record.owner = owner;
|
|
233
|
+
bindComponentOwnership(record);
|
|
234
|
+
componentView(record);
|
|
235
|
+
}
|
|
236
|
+
return record;
|
|
237
|
+
}
|
|
238
|
+
//#endregion
|
|
239
|
+
//#region src/renderer/host-adapter.ts
|
|
240
|
+
const nativeHosts = /* @__PURE__ */ new WeakMap();
|
|
241
|
+
/** Only extension hosts pay for callback translation. Keep their receiver and
|
|
242
|
+
* look up methods at invocation time so later host mutation stays observable. */
|
|
243
|
+
function adaptRendererHost(host) {
|
|
244
|
+
installOwnershipViews();
|
|
245
|
+
const native = nativeHosts.get(host);
|
|
246
|
+
if (native) return native;
|
|
247
|
+
return {
|
|
248
|
+
captureComponentHost: captureOwnerRange,
|
|
249
|
+
releaseComponentHost: releaseOwnerRange,
|
|
250
|
+
detachPortalHostOutput,
|
|
251
|
+
isComponentHostDetached,
|
|
252
|
+
clearChildScopeHost,
|
|
253
|
+
captureChildScopeHost,
|
|
254
|
+
resolveScopeBoundary,
|
|
255
|
+
prepareScopeRemoval,
|
|
256
|
+
recordRemovedScopeBoundary,
|
|
257
|
+
teardownScopeHost,
|
|
258
|
+
hasUnmountedComponentHost,
|
|
259
|
+
recordInlineComponentHost,
|
|
260
|
+
applyComponentResult,
|
|
261
|
+
classifyComponentUpdate: classifyUpdate,
|
|
262
|
+
evaluate: (...args) => {
|
|
263
|
+
if (args[3]) componentView(args[3]);
|
|
264
|
+
return host.evaluate(...args);
|
|
265
|
+
},
|
|
266
|
+
cleanupInstancesUnder: (...args) => host.cleanupInstancesUnder(...args),
|
|
267
|
+
replaceComponentRange: (...args) => {
|
|
268
|
+
componentView(args[0]);
|
|
269
|
+
return host.replaceComponentRange(...args);
|
|
270
|
+
},
|
|
271
|
+
get resolveChildScopeRange() {
|
|
272
|
+
return host.resolveChildScopeRange ? (...args) => {
|
|
273
|
+
componentView(args[0].componentInstance);
|
|
274
|
+
return host.resolveChildScopeRange(...args);
|
|
275
|
+
} : void 0;
|
|
276
|
+
},
|
|
277
|
+
teardownNodeSubtree: (...args) => host.teardownNodeSubtree(...args),
|
|
278
|
+
populateKeyMapForElement: (...args) => host.populateKeyMapForElement(...args),
|
|
279
|
+
getKeyMapForElement: (...args) => host.getKeyMapForElement(...args),
|
|
280
|
+
isKeyedReorderFastPathEligible: (...args) => host.isKeyedReorderFastPathEligible(...args),
|
|
281
|
+
markReactivePropsDirtySource: (...args) => host.markReactivePropsDirtySource(...args)
|
|
282
|
+
};
|
|
283
|
+
}
|
|
284
|
+
/** Keep the native host's identity and writable properties. Only inbound
|
|
285
|
+
* extension records require adoption; ordinary owners are already authoritative. */
|
|
286
|
+
function rendererHostView(capabilities) {
|
|
287
|
+
installOwnershipViews();
|
|
288
|
+
const host = capabilities;
|
|
289
|
+
if (nativeHosts.has(host)) return host;
|
|
290
|
+
const evaluate = capabilities.evaluate;
|
|
291
|
+
capabilities.evaluate = function(...args) {
|
|
292
|
+
if (args[3] && !args[3].owner) executionRecord(args[3]);
|
|
293
|
+
return evaluate.apply(this, args);
|
|
294
|
+
};
|
|
295
|
+
const replace = capabilities.replaceComponentRange;
|
|
296
|
+
capabilities.replaceComponentRange = function(...args) {
|
|
297
|
+
if (!args[0].owner) executionRecord(args[0]);
|
|
298
|
+
return replace.apply(this, args);
|
|
299
|
+
};
|
|
300
|
+
const resolve = capabilities.resolveChildScopeRange;
|
|
301
|
+
if (resolve) capabilities.resolveChildScopeRange = function(...args) {
|
|
302
|
+
if (!args[0].componentInstance.owner) executionRecord(args[0].componentInstance);
|
|
303
|
+
return resolve.apply(this, args);
|
|
304
|
+
};
|
|
305
|
+
nativeHosts.set(host, capabilities);
|
|
306
|
+
return host;
|
|
307
|
+
}
|
|
308
|
+
//#endregion
|
|
309
|
+
//#region src/runtime/public-runtime.ts
|
|
310
|
+
const defaultRuntimeOptions = {};
|
|
311
|
+
/** Construction-only scheduler and renderer wiring. Mounting uses the default runtime. */
|
|
312
|
+
var AskrRuntime = class {
|
|
313
|
+
#rendererCapabilities;
|
|
314
|
+
#state;
|
|
315
|
+
constructor(options = {}) {
|
|
316
|
+
this.#state = options === defaultRuntimeOptions ? defaultRuntimeState : createRuntimeState(options.scheduler);
|
|
317
|
+
this.scheduler = this.#state.scheduler;
|
|
318
|
+
this.rendererHost = options.renderer ?? rendererHostView(this.#state.renderer);
|
|
319
|
+
this.#state.renderer = adaptRendererHost(this.rendererHost);
|
|
320
|
+
this.#rendererCapabilities = this.#state.renderer;
|
|
321
|
+
}
|
|
322
|
+
get renderer() {
|
|
323
|
+
if (this.#rendererCapabilities !== this.#state.renderer) {
|
|
324
|
+
this.#rendererCapabilities = this.#state.renderer;
|
|
325
|
+
this.rendererHost = rendererHostView(this.#rendererCapabilities);
|
|
326
|
+
}
|
|
327
|
+
return this.rendererHost;
|
|
328
|
+
}
|
|
329
|
+
configureRenderer(renderer) {
|
|
330
|
+
this.#state.renderer = adaptRendererHost(renderer);
|
|
331
|
+
this.#rendererCapabilities = this.#state.renderer;
|
|
332
|
+
this.rendererHost = renderer;
|
|
333
|
+
}
|
|
334
|
+
};
|
|
335
|
+
/** Create construction-only runtime wiring. Omitted schedulers share the default scheduler; mounting uses the default runtime. */
|
|
336
|
+
function createRuntime(options = {}) {
|
|
337
|
+
return new AskrRuntime(options);
|
|
338
|
+
}
|
|
339
|
+
const defaultRuntime = /* @__PURE__ */ new AskrRuntime(defaultRuntimeOptions);
|
|
340
|
+
/** Get the process-wide default {@link AskrRuntime}. */
|
|
341
|
+
function getDefaultRuntime() {
|
|
342
|
+
return defaultRuntime;
|
|
343
|
+
}
|
|
344
|
+
//#endregion
|
|
345
|
+
//#region src/renderer/public-dom-host.ts
|
|
346
|
+
function handles() {
|
|
347
|
+
const outward = /* @__PURE__ */ new WeakMap();
|
|
348
|
+
const inward = /* @__PURE__ */ new WeakMap();
|
|
349
|
+
return {
|
|
350
|
+
wrap(record) {
|
|
351
|
+
let handle = outward.get(record);
|
|
352
|
+
if (!handle) {
|
|
353
|
+
handle = Object.freeze({});
|
|
354
|
+
outward.set(record, handle);
|
|
355
|
+
inward.set(handle, record);
|
|
356
|
+
}
|
|
357
|
+
return handle;
|
|
358
|
+
},
|
|
359
|
+
unwrap(handle) {
|
|
360
|
+
const record = inward.get(handle);
|
|
361
|
+
if (!record) throw new TypeError("[Askr] Invalid DOM renderer handle.");
|
|
362
|
+
return record;
|
|
363
|
+
}
|
|
364
|
+
};
|
|
365
|
+
}
|
|
366
|
+
/** Construct a complete DOM adapter without installing it. Handles belong only
|
|
367
|
+
* to this factory; native delegates validate them before accessing the DOM. */
|
|
368
|
+
function createDOMRendererHost(configure) {
|
|
369
|
+
ensureNativeDOMHost();
|
|
370
|
+
const renderer = rendererHostView(createRendererCapabilities());
|
|
371
|
+
const owners = handles();
|
|
372
|
+
const scopes = handles();
|
|
373
|
+
const sources = handles();
|
|
374
|
+
const native = {
|
|
375
|
+
evaluation: {
|
|
376
|
+
evaluate(node, target, context, owner) {
|
|
377
|
+
renderer.evaluate(node, target, context, owner === void 0 ? void 0 : owners.unwrap(owner));
|
|
378
|
+
},
|
|
379
|
+
replaceComponentRange(owner, result, host) {
|
|
380
|
+
return renderer.replaceComponentRange(owners.unwrap(owner), result, host);
|
|
381
|
+
}
|
|
382
|
+
},
|
|
383
|
+
cleanup: {
|
|
384
|
+
cleanupInstancesUnder(node) {
|
|
385
|
+
renderer.cleanupInstancesUnder(node);
|
|
386
|
+
},
|
|
387
|
+
teardownNodeSubtree(node) {
|
|
388
|
+
renderer.teardownNodeSubtree(node);
|
|
389
|
+
}
|
|
390
|
+
},
|
|
391
|
+
scopes: { resolveChildScopeRange(scope) {
|
|
392
|
+
const range = renderer.resolveChildScopeRange(scopes.unwrap(scope));
|
|
393
|
+
return range ? Object.freeze({
|
|
394
|
+
start: range.start,
|
|
395
|
+
end: range.end,
|
|
396
|
+
single: range.single
|
|
397
|
+
}) : null;
|
|
398
|
+
} },
|
|
399
|
+
keys: {
|
|
400
|
+
populateKeyMapForElement(parent) {
|
|
401
|
+
renderer.populateKeyMapForElement(parent);
|
|
402
|
+
},
|
|
403
|
+
getKeyMapForElement(parent) {
|
|
404
|
+
return renderer.getKeyMapForElement(parent);
|
|
405
|
+
},
|
|
406
|
+
isKeyedReorderFastPathEligible(parent, children, oldKeyMap) {
|
|
407
|
+
return renderer.isKeyedReorderFastPathEligible(parent, children, oldKeyMap);
|
|
408
|
+
}
|
|
409
|
+
},
|
|
410
|
+
reactivity: { markReactivePropsDirtySource(source) {
|
|
411
|
+
renderer.markReactivePropsDirtySource(sources.unwrap(source));
|
|
412
|
+
} }
|
|
413
|
+
};
|
|
414
|
+
const required = Object.fromEntries(Object.entries(native).map(([role, methods]) => [role, Object.keys(methods)]));
|
|
415
|
+
const host = configure(native);
|
|
416
|
+
for (const role of Object.keys(required)) for (const method of required[role]) if (typeof (host?.[role])?.[method] !== "function") throw new TypeError(`[Askr] DOM renderer requires ${role}.${method}.`);
|
|
417
|
+
return {
|
|
418
|
+
evaluate(node, target, context, owner) {
|
|
419
|
+
host.evaluation.evaluate(node, target, context, owner === void 0 ? void 0 : owners.wrap(owner));
|
|
420
|
+
},
|
|
421
|
+
replaceComponentRange(owner, result, target) {
|
|
422
|
+
return host.evaluation.replaceComponentRange(owners.wrap(owner), result, target);
|
|
423
|
+
},
|
|
424
|
+
cleanupInstancesUnder(node) {
|
|
425
|
+
host.cleanup.cleanupInstancesUnder(node);
|
|
426
|
+
},
|
|
427
|
+
teardownNodeSubtree(node) {
|
|
428
|
+
host.cleanup.teardownNodeSubtree(node);
|
|
429
|
+
},
|
|
430
|
+
resolveChildScopeRange(scope) {
|
|
431
|
+
return host.scopes.resolveChildScopeRange(scopes.wrap(scope));
|
|
432
|
+
},
|
|
433
|
+
populateKeyMapForElement(parent) {
|
|
434
|
+
host.keys.populateKeyMapForElement(parent);
|
|
435
|
+
},
|
|
436
|
+
getKeyMapForElement(parent) {
|
|
437
|
+
return host.keys.getKeyMapForElement(parent);
|
|
438
|
+
},
|
|
439
|
+
isKeyedReorderFastPathEligible(parent, children, oldKeyMap) {
|
|
440
|
+
return host.keys.isKeyedReorderFastPathEligible(parent, children, oldKeyMap);
|
|
441
|
+
},
|
|
442
|
+
markReactivePropsDirtySource(source) {
|
|
443
|
+
host.reactivity.markReactivePropsDirtySource(sources.wrap(source));
|
|
444
|
+
}
|
|
445
|
+
};
|
|
446
|
+
}
|
|
447
|
+
//#endregion
|
|
171
448
|
//#region src/ref.ts
|
|
172
449
|
/** Create a new, empty {@link Ref} holder. */
|
|
173
450
|
function createRef() {
|
|
174
451
|
return { current: null };
|
|
175
452
|
}
|
|
176
453
|
//#endregion
|
|
177
|
-
|
|
178
|
-
/**
|
|
179
|
-
* Askr: Lane-scheduled deterministic UI framework
|
|
180
|
-
*
|
|
181
|
-
* Public API surface — only users should import from here
|
|
182
|
-
*/
|
|
183
|
-
installRendererBridge();
|
|
184
|
-
//#endregion
|
|
185
|
-
export { AskrRuntime, Case, CspNonceScope, For, Fragment, Match, Show, configureRenderDiagnostics, createQuery, createQueryCollection, createRef, createRuntime, cspNonce, defineQuery, defineScope, defineServerQueries, dehydrateDataRuntime, derive, getDefaultRuntime, getSignal, hydrateDataRuntime, jsx, jsxs, prefetchQuery, readScope, registerSSRStyle, selector, serveQuery, state };
|
|
454
|
+
export { AskrRuntime, Case, CspNonceScope, For, Fragment, Match, Show, configureRenderDiagnostics, createDOMRendererHost, createQuery, createQueryCollection, createRef, createRuntime, cspNonce, defineQuery, defineScope, defineServerQueries, dehydrateDataRuntime, derive, getDefaultRuntime, getSignal, hydrateDataRuntime, jsx, jsxs, prefetchQuery, readScope, registerSSRStyle, selector, serveQuery, state };
|