@askrjs/askr 0.2.4 → 0.3.1

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.
Files changed (117) hide show
  1. package/CHANGELOG.md +30 -0
  2. package/dist/access-CEA2pOry.js +1046 -0
  3. package/dist/actions/index.d.ts +16 -2
  4. package/dist/actions/index.js +5 -5
  5. package/dist/{activity-FirwPXA_.js → activity-oy2YFTFF.js} +10 -16
  6. package/dist/benchmark.js +8 -9
  7. package/dist/boot/index.d.ts +19 -9
  8. package/dist/boot/index.js +1 -1
  9. package/dist/{boot-tWyF6121.js → boot-DLplW9h4.js} +700 -441
  10. package/dist/capabilities-Bbf0mlp9.js +42 -0
  11. package/dist/components/index.d.ts +11 -8
  12. package/dist/components/index.js +1 -1
  13. package/dist/{compose-ref-Bfaf4kUC.js → compose-ref-v0qGlHoN.js} +7 -1
  14. package/dist/control/index.d.ts +20 -2
  15. package/dist/control/index.js +1 -1
  16. package/dist/{control-C-wSaq9V.js → control-BR_mrX__.js} +4 -4
  17. package/dist/core.d.ts +163 -0
  18. package/dist/csp-nonce-BfFWcd0w.js +173 -0
  19. package/dist/data/index.d.ts +74 -2
  20. package/dist/data/index.js +3 -3
  21. package/dist/{data-ghKopAbp.js → data-2edW0jhF.js} +108 -122
  22. package/dist/{data-runtime-7t_Y0iv3.js → data-runtime-CxoY98lX.js} +22 -15
  23. package/dist/{deferred-CxjWCkIn.js → deferred-CbgNhf67.js} +5 -5
  24. package/dist/dom-renderer.d.ts +77 -0
  25. package/dist/domains/actions.d.ts +70 -0
  26. package/dist/domains/component.d.ts +119 -0
  27. package/dist/domains/context.d.ts +73 -0
  28. package/dist/domains/control.d.ts +328 -0
  29. package/dist/domains/data.d.ts +461 -0
  30. package/dist/domains/diagnostics.d.ts +21 -0
  31. package/dist/domains/lifecycle.d.ts +112 -0
  32. package/dist/domains/refs.d.ts +18 -0
  33. package/dist/domains/renderer.d.ts +127 -0
  34. package/dist/domains/routing.d.ts +501 -0
  35. package/dist/domains/scheduler.d.ts +79 -0
  36. package/dist/domains/server.d.ts +112 -0
  37. package/dist/domains/state.d.ts +129 -0
  38. package/dist/domains/telemetry.d.ts +29 -0
  39. package/dist/eager-control.d.ts +8 -0
  40. package/dist/{effect-CNwstBBD.js → effect-C3Zsc1k6.js} +14 -41
  41. package/dist/{types-DWVrKn9N.d.ts → elements.d.ts} +79 -42
  42. package/dist/{for-internal-DyBHfKJA.js → for-state-BDykeOJL.js} +598 -494
  43. package/dist/foundations/icon/index.d.ts +67 -16
  44. package/dist/foundations/icon/index.js +1 -1
  45. package/dist/foundations/index.d.ts +26 -3
  46. package/dist/foundations/index.js +1 -1
  47. package/dist/foundations/interactions/index.d.ts +73 -34
  48. package/dist/foundations/interactions/index.js +1 -1
  49. package/dist/foundations/state/index.d.ts +12 -5
  50. package/dist/foundations/state/index.js +1 -1
  51. package/dist/foundations/structures/index.d.ts +44 -3
  52. package/dist/foundations/structures/index.js +1 -1
  53. package/dist/foundations/utilities/index.d.ts +34 -3
  54. package/dist/foundations/utilities/index.js +1 -1
  55. package/dist/fx/index.d.ts +72 -25
  56. package/dist/fx/index.js +8 -8
  57. package/dist/index.d.ts +121 -4
  58. package/dist/index.js +316 -47
  59. package/dist/{component-internal-C4hKKQBF.js → instance-VAFYVJOa.js} +495 -283
  60. package/dist/{interactions-D102JxBR.js → interactions-CTeACdT_.js} +1 -1
  61. package/dist/jsx-dev-runtime.d.ts +51 -11
  62. package/dist/jsx-globals.d.ts +2 -0
  63. package/dist/jsx-runtime-CPJXAOBF.js +43 -0
  64. package/dist/jsx-runtime.d.ts +17 -3
  65. package/dist/jsx-runtime.js +2 -42
  66. package/dist/jsx.d.ts +108 -0
  67. package/dist/{manifest-D6rfj_jC.js → manifest-D1P3UNWV.js} +4 -9
  68. package/dist/{navigate-ZZu1IV0B.js → navigate-prC5V8XV.js} +125 -472
  69. package/dist/{navigate-F4sHgWbw.d.ts → navigation.d.ts} +8 -8
  70. package/dist/{readable-Di1fzSwm.js → notify-DxxuDPeY.js} +96 -34
  71. package/dist/{query-registry-Bua3cDyb.js → query-registry-LrYpQsDJ.js} +1 -1
  72. package/dist/{compose-ref-DOJHoW5X.d.ts → refs.d.ts} +11 -7
  73. package/dist/{ssr-Doog-AfJ.js → render-resolved-BC0W7_5b.js} +165 -558
  74. package/dist/{renderer-Cl23O0hV.js → renderer-CT0HeY58.js} +6825 -5692
  75. package/dist/{resolution-ClD-K7Lz.js → resolution-3DskUkjG.js} +189 -180
  76. package/dist/{resource-operation-Vz1S5h2k.js → resource-18-sFRl9.js} +98 -58
  77. package/dist/resources/index.d.ts +64 -12
  78. package/dist/resources/index.js +214 -8
  79. package/dist/route-activity.d.ts +21 -0
  80. package/dist/{route-matching-Bo6UqG-5.js → route-matching-CUzZ31gT.js} +68 -82
  81. package/dist/router/index.d.ts +378 -79
  82. package/dist/router/index.js +9 -9
  83. package/dist/router-internal-7nuNEHfG.js +36 -0
  84. package/dist/scope-Cq_iYbTR.js +403 -0
  85. package/dist/{selector-CsKuomw0.js → selector-BSPVkjKP.js} +26 -27
  86. package/dist/{shared-CYBH3F8I.js → shared-kU8yvryp.js} +3 -6
  87. package/dist/{snapshot-source-BB42xgwb.js → snapshot-source-An4iKajG.js} +1 -1
  88. package/dist/ssg/index.d.ts +51 -15
  89. package/dist/ssg/index.js +269 -209
  90. package/dist/ssr/index.d.ts +121 -68
  91. package/dist/ssr/index.js +2 -1
  92. package/dist/ssr-CiNm6Vzl.js +393 -0
  93. package/dist/{ssr-DSHd_Q9K.js → ssr-EPjwJH5R.js} +5 -1
  94. package/dist/{state-BGJgYSyQ.js → state-BXJfudq1.js} +10 -15
  95. package/dist/{structures-DFyK5AdQ.js → structures-CjEzfj4h.js} +37 -57
  96. package/dist/{index-CTpMmzgN.d.ts → structures.d.ts} +57 -36
  97. package/dist/testing/index.d.ts +123 -24
  98. package/dist/testing/index.js +24 -61
  99. package/dist/timer-C7uqnJVt.js +85 -0
  100. package/dist/{index-B1gu0_m0.d.ts → utilities.d.ts} +24 -13
  101. package/dist/{verify-hydration-BZPJ_kYa.js → verify-hydration-ikaxotf7.js} +8 -5
  102. package/package.json +12 -14
  103. package/dist/access-BucjYZcX.js +0 -509
  104. package/dist/activity-DooIuxQO.d.ts +0 -14
  105. package/dist/benchmark.d.ts +0 -26
  106. package/dist/cleanup-TXSsApEl.js +0 -535
  107. package/dist/component-cleanup-jdbgjkT1.js +0 -143
  108. package/dist/component-scope-4I3yEMkb.js +0 -195
  109. package/dist/control-Cxag1yqV.d.ts +0 -8
  110. package/dist/csp-nonce-9NFUb7hJ.js +0 -72
  111. package/dist/css-BuPaTOfe.js +0 -70
  112. package/dist/fastlane-BKZduiBQ.js +0 -166
  113. package/dist/index-Dgjbo2gU.d.ts +0 -1456
  114. package/dist/jsx-runtime-Cg7GqY1S.d.ts +0 -2
  115. package/dist/jsx-runtime-gVIaTPw0.d.ts +0 -38
  116. package/dist/lifecycle-batch-63aXFf2S.js +0 -253
  117. package/dist/lifecycle-operations-Q0k3EFnG.js +0 -287
package/dist/index.d.ts CHANGED
@@ -1,4 +1,121 @@
1
- import { A as cspNonce, B as selector, F as Show, H as configureRenderDiagnostics, I as ShowProps, L as For, M as CaseProps, Mn as StateSetter, N as Match, Nn as StateTuple, O as registerSSRStyle, P as MatchProps, Pn as state, R as ForProps, S as createQuery, T as createRef, V as RenderDiagnosticsOptions, at as derive, bn as defineScope, cn as QueryCollection, ct as RuntimeKeyedReorderDecision, d as defineServerQueries, dn as QueryCollectionOptions, dt as getDefaultRuntime, f as dehydrateDataRuntime, g as createQueryCollection, h as serveQuery, hn as QueryPrefetchContext, it as Derived, j as Case, jn as State, k as CspNonceScope, ln as QueryCollectionEntry, lt as RuntimeRendererHost, m as prefetchQuery, ot as AskrRuntime, p as hydrateDataRuntime, pn as QueryDefinition, pt as getSignal, st as AskrRuntimeOptions, tn as DataRuntime, u as defineQuery, un as QueryCollectionKey, ut as createRuntime, vn as ServerQueryHandler, w as Ref, xn as readScope, yn as Scope, z as Selector } from "./index-Dgjbo2gU.js";
2
- import { s as Props, t as Fragment } from "./types-DWVrKn9N.js";
3
- import { i as jsxs, n as jsx } from "./jsx-runtime-gVIaTPw0.js";
4
- export { AskrRuntime, type AskrRuntimeOptions, Case, type CaseProps, CspNonceScope, type DataRuntime, type Derived, For, type ForProps, Fragment, Match, type MatchProps, type Props, type QueryCollection, type QueryCollectionEntry, type QueryCollectionKey, type QueryCollectionOptions, type QueryDefinition, type QueryPrefetchContext, type Ref, type RenderDiagnosticsOptions, type RuntimeKeyedReorderDecision, type RuntimeRendererHost, type Scope, type Selector, type ServerQueryHandler, Show, type ShowProps, type State, type StateSetter, type StateTuple, configureRenderDiagnostics, createQuery, createQueryCollection, createRef, createRuntime, cspNonce, defineQuery, defineScope, defineServerQueries, dehydrateDataRuntime, derive, getDefaultRuntime, getSignal, hydrateDataRuntime, jsx, jsxs, prefetchQuery, readScope, registerSSRStyle, selector, serveQuery, state };
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 { a as getRuntimeFlushVersion, f as AskrRuntime, h as getDefaultRuntime, m as createRuntime, t as enqueueRuntimeLane } from "./access-BucjYZcX.js";
2
- import { g as getSignal, i as claimHookIndex, p as getCurrentInstance } from "./component-scope-4I3yEMkb.js";
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 { b as readScope, f as configureRenderDiagnostics, m as defineScope } from "./component-internal-C4hKKQBF.js";
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-BGJgYSyQ.js";
9
- import { t as selector } from "./selector-CsKuomw0.js";
10
- import { t as installRendererBridge } from "./renderer-Cl23O0hV.js";
11
- import { n as cspNonce, t as CspNonceScope } from "./csp-nonce-9NFUb7hJ.js";
12
- import { i as For, n as Match, r as Show, t as Case } from "./control-C-wSaq9V.js";
13
- import { jsx, jsxs } from "./jsx-runtime.js";
14
- import { n as createQuery, t as createQueryCollection } from "./data-ghKopAbp.js";
15
- import { a as hydrateDataRuntime, i as dehydrateDataRuntime, n as defineQuery, o as prefetchQuery, r as defineServerQueries, s as serveQuery } from "./query-registry-Bua3cDyb.js";
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
- let hasPendingDerivedFlush = false;
19
+ const derivedWork = new ScheduledWork(flushDirtyDerivedCells);
20
20
  function getDeriveStore(instance) {
21
- const generation = instance._ownershipGeneration;
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._scheduled) return;
32
- cell._scheduled = true;
33
- dirtyDerivedCells.add(cell);
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._scheduled = false;
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._scheduled);
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._scheduled = false;
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._scheduled = false;
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.cleanupFns ??= []).push(() => {
132
- cell._cleanup();
133
- store.delete(hookIndex);
134
- if (store.size === 0 && deriveCells.get(generation) === store) deriveCells.delete(generation);
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._ownershipGeneration, store, hookIndex, compute);
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 = getCurrentInstance();
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
- //#region src/index.ts
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 };