@askrjs/askr 0.2.2 → 0.2.3
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 +10 -0
- package/README.md +32 -4
- package/dist/{access-d_DCdwqn.js → access-Rr7CMa06.js} +11 -8
- package/dist/actions/index.js +5 -4
- package/dist/{activity-B2Yy7Wz9.js → activity-ZxJXI9hF.js} +2 -2
- package/dist/{compose-ref-1Fhs7mbF.js → aria-hKjThHcp.js} +1 -18
- package/dist/benchmark.js +8 -8
- package/dist/boot/index.js +1 -1
- package/dist/{boot-DVwjHCNh.js → boot-D4GaLA0d.js} +12 -14
- package/dist/{cleanup-DPtpXtA4.js → cleanup-DsrbV-rr.js} +6 -11
- package/dist/{component-cleanup-DPe8claJ.js → component-cleanup-DjpwO9WX.js} +2 -2
- package/dist/{component-internal-xW_OnTmC.js → component-internal-Dl02WQKS.js} +15 -6
- package/dist/compose-ref-Bfaf4kUC.js +20 -0
- package/dist/control/index.js +1 -1
- package/dist/{control-BLVTE1gO.js → control-57x3wa4J.js} +4 -4
- package/dist/{csp-nonce-CCnMtOW-.js → csp-nonce-C9OuML0U.js} +1 -1
- package/dist/data/index.js +1 -1
- package/dist/{data-BjUf0PPS.js → data-B7XCDeC8.js} +26 -35
- package/dist/{deferred-BRw0gbn5.js → deferred-BELyvMsC.js} +2 -2
- package/dist/{effect-BQP5o0Kx.js → effect-4LwBwV58.js} +2 -2
- package/dist/{fastlane-DUxiFV9S.js → fastlane-Buz1Rvlr.js} +2 -2
- package/dist/{for-internal-DKcYl3nl.js → for-internal-DeoSg_AV.js} +5 -5
- package/dist/foundations/index.js +1 -1
- package/dist/foundations/interactions/index.d.ts +1 -1
- package/dist/foundations/interactions/index.js +1 -1
- package/dist/foundations/state/index.js +1 -1
- package/dist/foundations/structures/index.js +1 -1
- package/dist/foundations/utilities/index.d.ts +1 -1
- package/dist/foundations/utilities/index.js +2 -1
- package/dist/fx/index.js +1 -1
- package/dist/{index-CzH-0LcA.d.ts → index-B1gu0_m0.d.ts} +2 -0
- package/dist/index.js +10 -10
- package/dist/{interactions-B-7vkBgx.js → interactions-D102JxBR.js} +10 -3
- package/dist/{lifecycle-batch-BYECQw8T.js → lifecycle-batch-Be-CLDjV.js} +2 -2
- package/dist/{lifecycle-operations-DJk_5MrD.js → lifecycle-operations-C5m03NQc.js} +1 -1
- package/dist/{navigate-DvJvo--6.js → navigate-C46GtScG.js} +9 -9
- package/dist/{readable-D-JIKCg2.js → readable-CEcteIDE.js} +1 -1
- package/dist/{renderer-RjZ8LHbt.js → renderer-BhXofszH.js} +15 -16
- package/dist/{resolution-dVYwYXrI.js → resolution-t8J0yNaU.js} +3 -3
- package/dist/{resource-operation-4qFIM02d.js → resource-operation-B8q-QRUx.js} +4 -4
- package/dist/resources/index.js +5 -5
- package/dist/router/index.js +7 -7
- package/dist/{selector-NQiYHwZC.js → selector-C7rIpOnN.js} +2 -2
- package/dist/shared-CGrx2AOL.js +27 -0
- package/dist/ssg/index.js +4 -4
- package/dist/ssr/index.d.ts +6 -0
- package/dist/ssr/index.js +1 -1
- package/dist/{ssr-F87AcFMt.js → ssr-BaC5qHEw.js} +26 -15
- package/dist/{state-Ks-sWTQi.js → state-BzhOW2TX.js} +3 -3
- package/dist/{structures-C-wmHCi6.js → structures-BwfeO4Iz.js} +4 -4
- package/dist/testing/index.js +4 -4
- package/dist/{verify-hydration-CThsx0pq.js → verify-hydration-_Q6avFp0.js} +1 -1
- package/package.json +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,16 @@
|
|
|
2
2
|
|
|
3
3
|
## Unreleased
|
|
4
4
|
|
|
5
|
+
## 0.2.3 — 2026-08-25
|
|
6
|
+
|
|
7
|
+
- fix(data): make mutation invalidation and reconcile retries generation-safe
|
|
8
|
+
when asynchronous submissions are superseded.
|
|
9
|
+
- fix(renderer): keep DOM-range ownership consistent when anchors are
|
|
10
|
+
re-registered.
|
|
11
|
+
- fix(interactions): respect RTL arrow-key direction in roving focus.
|
|
12
|
+
- fix(runtime): harden scheduler, hydration, SSR, and error-boundary failure
|
|
13
|
+
paths.
|
|
14
|
+
|
|
5
15
|
- feat(data): add lifecycle-owned dynamic keyed query collections with bounded
|
|
6
16
|
initial loading, aggregate state, per-key retry, and shared query caching.
|
|
7
17
|
- fix(runtime): reject recursive `derive()` and `selector()` reads before a
|
package/README.md
CHANGED
|
@@ -3,9 +3,11 @@
|
|
|
3
3
|
[](https://github.com/askrjs/askr/actions/workflows/ci.yml)
|
|
4
4
|
[](https://www.npmjs.com/package/@askrjs/askr)
|
|
5
5
|
|
|
6
|
-
Askr is
|
|
7
|
-
|
|
8
|
-
|
|
6
|
+
Askr is a lane-scheduled UI runtime for TypeScript applications. Its
|
|
7
|
+
single-threaded scheduler serializes queued framework work; it is not a
|
|
8
|
+
message-passing actor system. Askr provides explicit reactivity, routed
|
|
9
|
+
application startup, server-side rendering, and static-site generation
|
|
10
|
+
entrypoints.
|
|
9
11
|
|
|
10
12
|
## Quick Start
|
|
11
13
|
|
|
@@ -22,6 +24,9 @@ function Counter() {
|
|
|
22
24
|
createIsland({ root: document.body, component: Counter });
|
|
23
25
|
```
|
|
24
26
|
|
|
27
|
+
The tuple form above and the direct callable form below are equivalent; see
|
|
28
|
+
[State usage forms](#state-usage-forms) for when each is convenient.
|
|
29
|
+
|
|
25
30
|
## What It Provides
|
|
26
31
|
|
|
27
32
|
### Runtime
|
|
@@ -41,12 +46,30 @@ on their own subpaths.
|
|
|
41
46
|
|
|
42
47
|
State is read through getter functions and updated through setter functions.
|
|
43
48
|
|
|
49
|
+
#### State usage forms
|
|
50
|
+
|
|
51
|
+
`state()` returns one callable state cell that is also iterable. Destructuring
|
|
52
|
+
it gives the cell as the getter and its `.set()` method as the setter:
|
|
53
|
+
|
|
44
54
|
```ts
|
|
45
55
|
const [count, setCount] = state(0);
|
|
46
56
|
console.log(count());
|
|
47
57
|
setCount(1);
|
|
48
58
|
```
|
|
49
59
|
|
|
60
|
+
The same state can be kept as one value and updated through `.set()`:
|
|
61
|
+
|
|
62
|
+
```ts
|
|
63
|
+
const count = state(0);
|
|
64
|
+
console.log(count());
|
|
65
|
+
count.set(1);
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
Prefer destructuring when local getter and setter names make event handlers
|
|
69
|
+
clear. Prefer the direct form when passing the state cell around as one value or
|
|
70
|
+
when keeping reads and writes under one name. Both forms have the same tracking,
|
|
71
|
+
scheduling, and update semantics.
|
|
72
|
+
|
|
50
73
|
### Routing and app startup
|
|
51
74
|
|
|
52
75
|
Startup belongs in `@askrjs/askr/boot`. Routing helpers live in
|
|
@@ -86,7 +109,12 @@ return <div>{data.value.name}</div>;
|
|
|
86
109
|
}
|
|
87
110
|
```
|
|
88
111
|
|
|
89
|
-
|
|
112
|
+
`@askrjs/askr/data` is the canonical entrypoint for all query, mutation,
|
|
113
|
+
invalidation, and data-runtime helpers. The root package retains query creation
|
|
114
|
+
and collection, definition and serving, prefetch, and hydration exports for
|
|
115
|
+
compatibility with existing applications. Mutation, invalidation, and
|
|
116
|
+
data-runtime control remain subpath-only. New code should import the whole data surface from
|
|
117
|
+
`@askrjs/askr/data` rather than split related imports across entrypoints.
|
|
90
118
|
|
|
91
119
|
### Developer error boundaries
|
|
92
120
|
|
|
@@ -282,7 +282,15 @@ var Scheduler = class {
|
|
|
282
282
|
const target = typeof targetVersion === "number" ? targetVersion : this.flushVersion + 1;
|
|
283
283
|
if (this.flushVersion >= target) return Promise.resolve();
|
|
284
284
|
return new Promise((resolve, reject) => {
|
|
285
|
-
const
|
|
285
|
+
const waiter = {
|
|
286
|
+
target,
|
|
287
|
+
resolve,
|
|
288
|
+
reject
|
|
289
|
+
};
|
|
290
|
+
waiter.timer = setTimeout(() => {
|
|
291
|
+
const index = this.waiters.indexOf(waiter);
|
|
292
|
+
if (index >= 0) this.waiters.splice(index, 1);
|
|
293
|
+
if (waiter.timer !== void 0) clearTimeout(waiter.timer);
|
|
286
294
|
const diag = {
|
|
287
295
|
flushVersion: this.flushVersion,
|
|
288
296
|
queueLen: this.getPendingTaskCount(),
|
|
@@ -292,12 +300,7 @@ var Scheduler = class {
|
|
|
292
300
|
};
|
|
293
301
|
reject(/* @__PURE__ */ new Error(`waitForFlush timeout ${timeoutMs}ms: ${JSON.stringify(diag)}`));
|
|
294
302
|
}, timeoutMs);
|
|
295
|
-
this.waiters.push(
|
|
296
|
-
target,
|
|
297
|
-
resolve,
|
|
298
|
-
reject,
|
|
299
|
-
timer
|
|
300
|
-
});
|
|
303
|
+
this.waiters.push(waiter);
|
|
301
304
|
});
|
|
302
305
|
}
|
|
303
306
|
getState() {
|
|
@@ -377,7 +380,7 @@ var Scheduler = class {
|
|
|
377
380
|
const ready = [];
|
|
378
381
|
const remaining = [];
|
|
379
382
|
for (const w of this.waiters) if (this.flushVersion >= w.target) {
|
|
380
|
-
if (w.timer) clearTimeout(w.timer);
|
|
383
|
+
if (w.timer !== void 0) clearTimeout(w.timer);
|
|
381
384
|
ready.push(w.resolve);
|
|
382
385
|
} else remaining.push(w);
|
|
383
386
|
this.waiters = remaining;
|
package/dist/actions/index.js
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { d as getCurrentAppRenderRuntime } from "../component-scope-4I3yEMkb.js";
|
|
2
2
|
import { r as getCurrentRenderData } from "../render-context-B7ohlh6t.js";
|
|
3
|
-
import { t as state } from "../state-
|
|
3
|
+
import { t as state } from "../state-BzhOW2TX.js";
|
|
4
4
|
import { jsx, jsxs } from "../jsx-runtime.js";
|
|
5
5
|
import { c as resolveDataRuntimeState, s as invalidateQueriesForRuntime } from "../data-runtime-7t_Y0iv3.js";
|
|
6
|
+
import { r as isCurrentAsyncGeneration } from "../shared-CGrx2AOL.js";
|
|
6
7
|
//#region src/actions/runtime.ts
|
|
7
8
|
const emptyFramework = Object.freeze({});
|
|
8
9
|
/** @internal Read Askr-owned state from the current application root. */
|
|
@@ -97,8 +98,8 @@ function action(descriptor) {
|
|
|
97
98
|
if (!response.ok) throw envelope.error ?? validationError(envelope, descriptor.id) ?? /* @__PURE__ */ new Error(`Action failed (${response.status}).`);
|
|
98
99
|
const redirect = typeof envelope.redirect === "string" ? normalizeActionRedirect(envelope.redirect) : void 0;
|
|
99
100
|
const invalidates = Array.isArray(envelope.invalidates) ? envelope.invalidates.filter((prefix) => typeof prefix === "string") : descriptor.invalidates;
|
|
100
|
-
|
|
101
|
-
|
|
101
|
+
for (const prefix of invalidates) invalidateQueriesForRuntime(runtime, prefix, true);
|
|
102
|
+
if (isCurrentAsyncGeneration(actionSubmissionGenerations.get(value) ?? 0, generation)) {
|
|
102
103
|
setValue({
|
|
103
104
|
pending: false,
|
|
104
105
|
result: envelope.result
|
|
@@ -107,7 +108,7 @@ function action(descriptor) {
|
|
|
107
108
|
}
|
|
108
109
|
return envelope.result;
|
|
109
110
|
} catch (error) {
|
|
110
|
-
if (
|
|
111
|
+
if (isCurrentAsyncGeneration(actionSubmissionGenerations.get(value) ?? 0, generation)) setValue({
|
|
111
112
|
pending: false,
|
|
112
113
|
error
|
|
113
114
|
});
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { d as getCurrentAppRenderRuntime, f as getCurrentComponentInstance, i as claimHookIndex } from "./component-scope-4I3yEMkb.js";
|
|
2
|
-
import { a as registerCommitOperation } from "./component-internal-
|
|
3
|
-
import { l as notifyReadableReaders, o as markReactivePropsDirtySource, s as markReadableDerivedSubscribersDirty, u as recordReadableRead } from "./readable-
|
|
2
|
+
import { a as registerCommitOperation } from "./component-internal-Dl02WQKS.js";
|
|
3
|
+
import { l as notifyReadableReaders, o as markReactivePropsDirtySource, s as markReadableDerivedSubscribersDirty, u as recordReadableRead } from "./readable-CEcteIDE.js";
|
|
4
4
|
import { n as getActiveRenderContext } from "./render-context-B7ohlh6t.js";
|
|
5
5
|
import { n as syncRouteActivitySnapshot } from "./route-activity-CNJfpwx-.js";
|
|
6
6
|
import { b as getActiveRoutes, c as removeRouteBasePath, d as deepFreeze, f as makeQuery, n as computeMatchesFromRoutes, p as parseLocation, y as getActiveRouteBasePath } from "./route-matching-Bo6UqG-5.js";
|
|
@@ -85,21 +85,4 @@ function ariaSelected(selected) {
|
|
|
85
85
|
return selected === void 0 ? {} : { "aria-selected": String(selected) };
|
|
86
86
|
}
|
|
87
87
|
//#endregion
|
|
88
|
-
|
|
89
|
-
/** Write `value` to a {@link Ref}, ignoring failures on readonly object refs. */
|
|
90
|
-
function setRef(ref, value) {
|
|
91
|
-
if (!ref) return;
|
|
92
|
-
if (typeof ref === "function") {
|
|
93
|
-
ref(value);
|
|
94
|
-
return;
|
|
95
|
-
}
|
|
96
|
-
if (Object.isExtensible(ref)) ref.current = value;
|
|
97
|
-
}
|
|
98
|
-
/** Combine multiple refs into one callback ref that writes to all of them. */
|
|
99
|
-
function composeRefs(...refs) {
|
|
100
|
-
return (value) => {
|
|
101
|
-
for (const ref of refs) setRef(ref, value);
|
|
102
|
-
};
|
|
103
|
-
}
|
|
104
|
-
//#endregion
|
|
105
|
-
export { ariaSelected as a, ariaExpanded as i, setRef as n, mergeProps as o, ariaDisabled as r, composeHandlers as s, composeRefs as t };
|
|
88
|
+
export { composeHandlers as a, mergeProps as i, ariaExpanded as n, ariaSelected as r, ariaDisabled as t };
|
package/dist/benchmark.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { r as flushRuntimeScheduler } from "./access-
|
|
2
|
-
import { t as state } from "./state-
|
|
3
|
-
import { t as selector } from "./selector-
|
|
4
|
-
import { t as installRendererBridge } from "./renderer-
|
|
5
|
-
import { i as For } from "./control-
|
|
1
|
+
import { r as flushRuntimeScheduler } from "./access-Rr7CMa06.js";
|
|
2
|
+
import { t as state } from "./state-BzhOW2TX.js";
|
|
3
|
+
import { t as selector } from "./selector-C7rIpOnN.js";
|
|
4
|
+
import { t as installRendererBridge } from "./renderer-BhXofszH.js";
|
|
5
|
+
import { i as For } from "./control-57x3wa4J.js";
|
|
6
6
|
import { jsx, jsxs } from "./jsx-runtime.js";
|
|
7
|
-
import { t as createIsland } from "./boot-
|
|
7
|
+
import { t as createIsland } from "./boot-D4GaLA0d.js";
|
|
8
8
|
//#region src/bench/components/benchmark-row.tsx
|
|
9
9
|
function BenchmarkRow({ item, isSelected, onSelect, onRemove }) {
|
|
10
10
|
return /* @__PURE__ */ jsxs("tr", {
|
|
@@ -63,8 +63,8 @@ function BenchmarkTable({ rows, isSelected, onSelect, onRemove }) {
|
|
|
63
63
|
installRendererBridge();
|
|
64
64
|
const benchmarkMetadata = {
|
|
65
65
|
packageName: "@askrjs/askr",
|
|
66
|
-
packageVersion: "0.2.
|
|
67
|
-
buildLabel: "0.2.
|
|
66
|
+
packageVersion: "0.2.3",
|
|
67
|
+
buildLabel: "0.2.3-local"
|
|
68
68
|
};
|
|
69
69
|
function getBenchmarkMetadata() {
|
|
70
70
|
return { ...benchmarkMetadata };
|
package/dist/boot/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { a as cleanupApp, i as hydrateSPA, n as createIslands, o as hasApp, r as createSPA, t as createIsland } from "../boot-
|
|
1
|
+
import { a as cleanupApp, i as hydrateSPA, n as createIslands, o as hasApp, r as createSPA, t as createIsland } from "../boot-D4GaLA0d.js";
|
|
2
2
|
export { cleanupApp, createIsland, createIslands, createSPA, hasApp, hydrateSPA };
|
|
@@ -1,19 +1,19 @@
|
|
|
1
|
-
import { S as isProductionEnvironment, r as flushRuntimeScheduler, x as isDevelopmentEnvironment, y as logger } from "./access-
|
|
1
|
+
import { S as isProductionEnvironment, r as flushRuntimeScheduler, x as isDevelopmentEnvironment, y as logger } from "./access-Rr7CMa06.js";
|
|
2
2
|
import { n as Fragment, t as ELEMENT_TYPE } from "./jsx-DRS-qjiN.js";
|
|
3
|
-
import { n as createComponentInstance, r as executeComponent } from "./component-internal-
|
|
4
|
-
import { t as cleanupComponent } from "./component-cleanup-
|
|
5
|
-
import { p as isPromiseLike } from "./lifecycle-batch-
|
|
6
|
-
import { _ as teardownNodeSubtree, d as removeAllListeners } from "./cleanup-
|
|
3
|
+
import { n as createComponentInstance, r as executeComponent } from "./component-internal-Dl02WQKS.js";
|
|
4
|
+
import { t as cleanupComponent } from "./component-cleanup-DjpwO9WX.js";
|
|
5
|
+
import { p as isPromiseLike } from "./lifecycle-batch-Be-CLDjV.js";
|
|
6
|
+
import { _ as teardownNodeSubtree, d as removeAllListeners } from "./cleanup-DsrbV-rr.js";
|
|
7
7
|
import { r as assertExecutionModel, t as _applyManifest } from "./manifest-D6rfj_jC.js";
|
|
8
8
|
import { d as stopHydrationRenderPhase, l as startHydrationRenderPhase, y as pageRenderEnvelope } from "./render-context-B7ohlh6t.js";
|
|
9
|
-
import { a as setStaticChildSlotsCacheEnabled, c as endHydrationDirectListenerMode, d as discardHydrationListenerTransaction, i as registerDeferredHydrationBoundary, l as beginHydrationListenerTransaction, n as activateHydrationBoundary$1, o as withIntrinsicHydrationAdoption, r as clearDeferredHydrationBoundaries, s as beginHydrationDirectListenerMode, t as installRendererBridge, u as commitHydrationListenerTransaction } from "./renderer-
|
|
10
|
-
import { r as validateCspNonce, t as CspNonceScope } from "./csp-nonce-
|
|
9
|
+
import { a as setStaticChildSlotsCacheEnabled, c as endHydrationDirectListenerMode, d as discardHydrationListenerTransaction, i as registerDeferredHydrationBoundary, l as beginHydrationListenerTransaction, n as activateHydrationBoundary$1, o as withIntrinsicHydrationAdoption, r as clearDeferredHydrationBoundaries, s as beginHydrationDirectListenerMode, t as installRendererBridge, u as commitHydrationListenerTransaction } from "./renderer-BhXofszH.js";
|
|
10
|
+
import { r as validateCspNonce, t as CspNonceScope } from "./csp-nonce-C9OuML0U.js";
|
|
11
11
|
import { i as getDefaultDataRuntime } from "./data-runtime-7t_Y0iv3.js";
|
|
12
12
|
import { a as hydrateDataRuntime } from "./query-registry-Bua3cDyb.js";
|
|
13
13
|
import { I as lockRouteRegistration, P as hasRegisteredRoutes, _ as clearRouteState, m as _setActiveRouteAuthOptions } from "./route-matching-Bo6UqG-5.js";
|
|
14
|
-
import { a as resolveRouteRequest, i as hasRouteRenderData, m as reviveDeferredValue, n as getRouteRenderContext, r as getRouteRenderData } from "./resolution-
|
|
15
|
-
import { o as createAppRenderRuntime, r as setServerLocation } from "./activity-
|
|
16
|
-
import { f as registerAppInstance, g as unregisterAppInstance, i as resolveRouteMeta, o as configureScrollRestoration, r as reconcileRouteMeta, t as initializeNavigation } from "./navigate-
|
|
14
|
+
import { a as resolveRouteRequest, i as hasRouteRenderData, m as reviveDeferredValue, n as getRouteRenderContext, r as getRouteRenderData } from "./resolution-t8J0yNaU.js";
|
|
15
|
+
import { o as createAppRenderRuntime, r as setServerLocation } from "./activity-ZxJXI9hF.js";
|
|
16
|
+
import { f as registerAppInstance, g as unregisterAppInstance, i as resolveRouteMeta, o as configureScrollRestoration, r as reconcileRouteMeta, t as initializeNavigation } from "./navigate-C46GtScG.js";
|
|
17
17
|
import { n as disposeRegisteredDefaultPortalScope, r as getDefaultPortalHost } from "./default-portal-runtime-DvMvWJVp.js";
|
|
18
18
|
import "./ssr-DSHd_Q9K.js";
|
|
19
19
|
//#region src/boot/hydration.ts
|
|
@@ -109,9 +109,7 @@ function shouldVerifyHydrationMarkup(config) {
|
|
|
109
109
|
return !isProductionEnvironment();
|
|
110
110
|
}
|
|
111
111
|
async function applySelectiveHydration(rootElement, resolved, path, cleanupStrict, hydrateOptions, source, hooks, interactionReplay) {
|
|
112
|
-
const hasPermanentSkips = (hydrateOptions.skipSelectors?.length ?? 0) > 0;
|
|
113
112
|
const hasBelowFoldDeferral = !!hydrateOptions.deferBelowFold;
|
|
114
|
-
const hasSelectiveBoundaries = hasPermanentSkips || hasBelowFoldDeferral;
|
|
115
113
|
let staticChildSlotsCacheSuspended = false;
|
|
116
114
|
let releaseSelectiveHydrationResources = () => {};
|
|
117
115
|
const restoreStaticChildSlotsCache = () => {
|
|
@@ -146,7 +144,7 @@ async function applySelectiveHydration(rootElement, resolved, path, cleanupStric
|
|
|
146
144
|
unregisterRootCleanupCallback = hooks.registerRootCleanupCallback(rootElement, releaseSelectiveHydrationResources);
|
|
147
145
|
window.addEventListener("scroll", handleScroll, { passive: true });
|
|
148
146
|
}
|
|
149
|
-
if (hydrateOptions.deferUntilIdle && !
|
|
147
|
+
if (hydrateOptions.deferUntilIdle && !hasBelowFoldDeferral) {
|
|
150
148
|
await queueIdleWork(() => {
|
|
151
149
|
hooks.mountOrUpdate(rootElement, (() => resolved.handler(resolved.params)), {
|
|
152
150
|
cleanupStrict,
|
|
@@ -786,7 +784,7 @@ async function hydrateSPA(config) {
|
|
|
786
784
|
cspNonce: config.cspNonce
|
|
787
785
|
}));
|
|
788
786
|
if (shouldVerifyHydrationMarkup(config)) {
|
|
789
|
-
const { verifyHydrationSyncForUrl } = await import("./verify-hydration-
|
|
787
|
+
const { verifyHydrationSyncForUrl } = await import("./verify-hydration-_Q6avFp0.js");
|
|
790
788
|
if (!verifyHydrationSyncForUrl({
|
|
791
789
|
root: rootElement,
|
|
792
790
|
url: currentUrl,
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
import { l as runRuntimeHandlerScope, y as logger } from "./access-
|
|
2
|
-
import "./fastlane-
|
|
1
|
+
import { l as runRuntimeHandlerScope, y as logger } from "./access-Rr7CMa06.js";
|
|
2
|
+
import "./fastlane-Buz1Rvlr.js";
|
|
3
3
|
import { T as withAppRenderRuntime, d as getCurrentAppRenderRuntime } from "./component-scope-4I3yEMkb.js";
|
|
4
|
-
import { t as cleanupComponent } from "./component-cleanup-
|
|
5
|
-
import { u as registerLifecycleTransaction } from "./lifecycle-batch-
|
|
4
|
+
import { t as cleanupComponent } from "./component-cleanup-DjpwO9WX.js";
|
|
5
|
+
import { u as registerLifecycleTransaction } from "./lifecycle-batch-Be-CLDjV.js";
|
|
6
|
+
import { n as setRef } from "./compose-ref-Bfaf4kUC.js";
|
|
6
7
|
//#region src/runtime/events.ts
|
|
7
8
|
/**
|
|
8
9
|
* Event delegation system for Askr
|
|
@@ -281,13 +282,7 @@ function replaceElementRefBookkeeping(element, ref) {
|
|
|
281
282
|
} else elementRefs.delete(element);
|
|
282
283
|
}
|
|
283
284
|
function applyRefValue(ref, value) {
|
|
284
|
-
|
|
285
|
-
if (!resolvedRef) return;
|
|
286
|
-
if (typeof resolvedRef === "function") {
|
|
287
|
-
resolvedRef(value);
|
|
288
|
-
return;
|
|
289
|
-
}
|
|
290
|
-
if (Object.isExtensible(resolvedRef)) resolvedRef.current = value;
|
|
285
|
+
setRef(ref, value);
|
|
291
286
|
}
|
|
292
287
|
function updateElementRef(element, ref) {
|
|
293
288
|
if (registerLifecycleTransaction({}, () => updateElementRefImmediately(element, ref), () => void 0)) return;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { S as isProductionEnvironment, x as isDevelopmentEnvironment, y as logger } from "./access-
|
|
1
|
+
import { S as isProductionEnvironment, x as isDevelopmentEnvironment, y as logger } from "./access-Rr7CMa06.js";
|
|
2
2
|
import { a as clearCurrentComponentScope, y as restoreCurrentComponentScope } from "./component-scope-4I3yEMkb.js";
|
|
3
|
-
import { n as cleanupReadableSubscriptions, t as cleanupReadableSubscriptionSources } from "./readable-
|
|
3
|
+
import { n as cleanupReadableSubscriptions, t as cleanupReadableSubscriptionSources } from "./readable-CEcteIDE.js";
|
|
4
4
|
//#region src/runtime/state-diagnostics.ts
|
|
5
5
|
/**
|
|
6
6
|
* Report state cells that were never read during a component's completed
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { a as markTransparentComponentResult, i as markEagerControlPrimitive } from "./control-C-ApnFs1.js";
|
|
2
|
-
import { S as isProductionEnvironment, n as enqueueRuntimeTask, o as getRuntimeRenderer, x as isDevelopmentEnvironment, y as logger } from "./access-
|
|
3
|
-
import { i as tryRuntimeFastLaneSync, n as isBulkCommitActive } from "./fastlane-
|
|
2
|
+
import { S as isProductionEnvironment, n as enqueueRuntimeTask, o as getRuntimeRenderer, x as isDevelopmentEnvironment, y as logger } from "./access-Rr7CMa06.js";
|
|
3
|
+
import { i as tryRuntimeFastLaneSync, n as isBulkCommitActive } from "./fastlane-Buz1Rvlr.js";
|
|
4
4
|
import { C as restoreRenderScopedComponent, S as restoreInlineRenderTracking, _ as getSignalForInstance, b as restoreDomCommitScope, c as enterDomCommitScope, f as getCurrentComponentInstance, l as enterRenderScopedComponent, m as getCurrentPortalScope, n as captureInlineComponentScope, o as clearRenderTracking, p as getCurrentInstance, r as captureInlineRenderTracking, s as enterComponentExecutionScope, t as beginRenderTracking, u as exitComponentExecutionScope, v as resetRenderState, x as restoreInlineComponentScope } from "./component-scope-4I3yEMkb.js";
|
|
5
5
|
import { r as STATIC_CHILDREN, t as ELEMENT_TYPE } from "./jsx-DRS-qjiN.js";
|
|
6
|
-
import { i as finalizeReadableSubscriptions } from "./readable-
|
|
7
|
-
import { a as enqueueLifecycleCommitForInstance, d as discardCommitOperations, f as executeCommittedLifecycleOperations, n as captureInlineRenderSnapshot$1, o as finalizeInlineReadSubscriptions, p as isPromiseLike, r as discardLifecycleCommitBatch, s as flushLifecycleCommitBatch, t as beginLifecycleCommitBatch } from "./lifecycle-batch-
|
|
6
|
+
import { i as finalizeReadableSubscriptions } from "./readable-CEcteIDE.js";
|
|
7
|
+
import { a as enqueueLifecycleCommitForInstance, d as discardCommitOperations, f as executeCommittedLifecycleOperations, n as captureInlineRenderSnapshot$1, o as finalizeInlineReadSubscriptions, p as isPromiseLike, r as discardLifecycleCommitBatch, s as flushLifecycleCommitBatch, t as beginLifecycleCommitBatch } from "./lifecycle-batch-Be-CLDjV.js";
|
|
8
8
|
//#region src/runtime/context.ts
|
|
9
9
|
const TransparentContextScopeComponent = markTransparentComponentResult(ContextScopeComponent);
|
|
10
10
|
let nextScopeIdentityKey = 0;
|
|
@@ -689,7 +689,7 @@ function commitRenderedComponent(instance) {
|
|
|
689
689
|
function mountInstanceInline(instance, target) {
|
|
690
690
|
instance.target = target;
|
|
691
691
|
try {
|
|
692
|
-
if (target instanceof Element) {
|
|
692
|
+
if (typeof Element !== "undefined" && target instanceof Element) {
|
|
693
693
|
const host = target;
|
|
694
694
|
const instances = host.__ASKR_INSTANCES;
|
|
695
695
|
if (!instances) {
|
|
@@ -702,7 +702,16 @@ function mountInstanceInline(instance, target) {
|
|
|
702
702
|
host.__ASKR_INSTANCE = nextInstances[0] ?? instance;
|
|
703
703
|
}
|
|
704
704
|
}
|
|
705
|
-
} catch (err) {
|
|
705
|
+
} catch (err) {
|
|
706
|
+
if (isDevelopmentEnvironment()) {
|
|
707
|
+
const componentName = instance.fn.name || instance.id;
|
|
708
|
+
let hostName = "unknown";
|
|
709
|
+
try {
|
|
710
|
+
hostName = target?.tagName?.toLowerCase() || hostName;
|
|
711
|
+
} catch {}
|
|
712
|
+
logger.warn(`[askr] Failed to record DOM ownership for ${componentName} on <${hostName}>.`, err);
|
|
713
|
+
}
|
|
714
|
+
}
|
|
706
715
|
instance.notifyUpdate = instance._enqueueRun;
|
|
707
716
|
const wasFirstMount = !instance.mounted;
|
|
708
717
|
instance.mounted = true;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
//#region src/foundations/utilities/compose-ref.ts
|
|
2
|
+
/** Write `value` to a {@link Ref}, ignoring failures on readonly object refs. */
|
|
3
|
+
function setRef(ref, value) {
|
|
4
|
+
if (!ref) return;
|
|
5
|
+
if (typeof ref === "function") {
|
|
6
|
+
ref(value);
|
|
7
|
+
return;
|
|
8
|
+
}
|
|
9
|
+
try {
|
|
10
|
+
ref.current = value;
|
|
11
|
+
} catch {}
|
|
12
|
+
}
|
|
13
|
+
/** Combine multiple refs into one callback ref that writes to all of them. */
|
|
14
|
+
function composeRefs(...refs) {
|
|
15
|
+
return (value) => {
|
|
16
|
+
for (const ref of refs) setRef(ref, value);
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
//#endregion
|
|
20
|
+
export { setRef as n, composeRefs as t };
|
package/dist/control/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { i as For, n as Match, r as Show, t as Case } from "../control-
|
|
1
|
+
import { i as For, n as Match, r as Show, t as Case } from "../control-57x3wa4J.js";
|
|
2
2
|
export { Case, For, Match, Show };
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { i as markEagerControlPrimitive, t as __CONTROL_BOUNDARY__ } from "./control-C-ApnFs1.js";
|
|
2
|
-
import { x as isDevelopmentEnvironment } from "./access-
|
|
2
|
+
import { x as isDevelopmentEnvironment } from "./access-Rr7CMa06.js";
|
|
3
3
|
import { n as Fragment } from "./jsx-DRS-qjiN.js";
|
|
4
|
-
import { m as createShowState, p as createCaseState, s as useForState } from "./for-internal-
|
|
5
|
-
import { t as createFineGrainedEffect } from "./effect-
|
|
6
|
-
import { t as state } from "./state-
|
|
4
|
+
import { m as createShowState, p as createCaseState, s as useForState } from "./for-internal-DeoSg_AV.js";
|
|
5
|
+
import { t as createFineGrainedEffect } from "./effect-4LwBwV58.js";
|
|
6
|
+
import { t as state } from "./state-BzhOW2TX.js";
|
|
7
7
|
//#region src/control/shared.ts
|
|
8
8
|
function normalizeBoundaryChild(value) {
|
|
9
9
|
if (Array.isArray(value)) {
|
package/dist/data/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import { i as getDefaultDataRuntime, t as createDataRuntime } from "../data-runtime-7t_Y0iv3.js";
|
|
2
|
-
import {
|
|
2
|
+
import { a as invalidateOnInterval, i as invalidate, n as createQuery, o as queryScope, r as createMutation, t as createQueryCollection } from "../data-B7XCDeC8.js";
|
|
3
3
|
import { a as hydrateDataRuntime, i as dehydrateDataRuntime, n as defineQuery, o as prefetchQuery, r as defineServerQueries, s as serveQuery, t as createQueryPrefetchContext } from "../query-registry-Bua3cDyb.js";
|
|
4
4
|
export { createDataRuntime, createMutation, createQuery, createQueryCollection, createQueryPrefetchContext, defineQuery, defineServerQueries, dehydrateDataRuntime, getDefaultDataRuntime, hydrateDataRuntime, invalidate, invalidateOnInterval, prefetchQuery, queryScope, serveQuery };
|
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
import { n as enqueueRuntimeTask, y as logger } from "./access-
|
|
1
|
+
import { n as enqueueRuntimeTask, y as logger } from "./access-Rr7CMa06.js";
|
|
2
2
|
import { d as getCurrentAppRenderRuntime, f as getCurrentComponentInstance, i as claimHookIndex } from "./component-scope-4I3yEMkb.js";
|
|
3
|
-
import {
|
|
3
|
+
import { u as recordReadableRead } from "./readable-CEcteIDE.js";
|
|
4
4
|
import { n as getActiveRenderContext } from "./render-context-B7ohlh6t.js";
|
|
5
|
-
import { i as routeActive, n as documentVisible, o as timer, s as windowFocused } from "./lifecycle-operations-
|
|
5
|
+
import { i as routeActive, n as documentVisible, o as timer, s as windowFocused } from "./lifecycle-operations-C5m03NQc.js";
|
|
6
6
|
import { a as getMutationSlotStore, c as resolveDataRuntimeState, i as getDefaultDataRuntime, n as ensureMutationCleanup, o as getQuerySlotStore, r as ensureQueryCleanup, s as invalidateQueriesForRuntime } from "./data-runtime-7t_Y0iv3.js";
|
|
7
|
+
import { a as normalizeAsyncDataError, i as isCurrentAsyncOperation, n as isAbortError, o as notifySource, t as createReadableSource } from "./shared-CGrx2AOL.js";
|
|
7
8
|
//#region src/data/query-key.ts
|
|
8
9
|
function serializeQueryKeyNumber(part) {
|
|
9
10
|
if (Number.isNaN(part)) return "NaN";
|
|
@@ -69,23 +70,6 @@ function invalidateOnInterval(prefix, options) {
|
|
|
69
70
|
}, when.length > 0 ? { when } : void 0);
|
|
70
71
|
}
|
|
71
72
|
//#endregion
|
|
72
|
-
//#region src/data/shared.ts
|
|
73
|
-
function createReadableSource() {
|
|
74
|
-
return (() => void 0);
|
|
75
|
-
}
|
|
76
|
-
function notifySource(source) {
|
|
77
|
-
markReadableDerivedSubscribersDirty(source);
|
|
78
|
-
markReactivePropsDirtySource(source);
|
|
79
|
-
notifyReadableReaders(source);
|
|
80
|
-
}
|
|
81
|
-
function isAbortError(error, signal) {
|
|
82
|
-
return signal.aborted || error instanceof Error && error.name === "AbortError" || typeof DOMException !== "undefined" && error instanceof DOMException && error.name === "AbortError";
|
|
83
|
-
}
|
|
84
|
-
function normalizeAsyncDataError(error, fallbackMessage) {
|
|
85
|
-
if (error instanceof Error) return error;
|
|
86
|
-
return new Error(error == null ? fallbackMessage : String(error));
|
|
87
|
-
}
|
|
88
|
-
//#endregion
|
|
89
73
|
//#region src/data/mutation-cell.ts
|
|
90
74
|
var MutationCell = class {
|
|
91
75
|
constructor(options, runtimeState) {
|
|
@@ -148,7 +132,7 @@ var MutationCell = class {
|
|
|
148
132
|
try {
|
|
149
133
|
result = await action(input, { signal: controller.signal });
|
|
150
134
|
} catch (error) {
|
|
151
|
-
if (this.generation
|
|
135
|
+
if (!isCurrentAsyncOperation(this.generation, generation, this.controller, controller)) throw error;
|
|
152
136
|
if (isAbortError(error, controller.signal)) {
|
|
153
137
|
this.setState({
|
|
154
138
|
status: "idle",
|
|
@@ -162,8 +146,7 @@ var MutationCell = class {
|
|
|
162
146
|
});
|
|
163
147
|
throw error;
|
|
164
148
|
}
|
|
165
|
-
if (this.generation
|
|
166
|
-
this.setState({
|
|
149
|
+
if (isCurrentAsyncOperation(this.generation, generation, this.controller, controller)) this.setState({
|
|
167
150
|
status: "success",
|
|
168
151
|
error: null,
|
|
169
152
|
result
|
|
@@ -249,6 +232,7 @@ var QueryCell = class {
|
|
|
249
232
|
this.pendingRefreshResolve = null;
|
|
250
233
|
this.pendingRefreshToken = 0;
|
|
251
234
|
this.reconcileAttemptCount = 0;
|
|
235
|
+
this.reconcileSequence = 0;
|
|
252
236
|
this.destroyed = false;
|
|
253
237
|
this.ownerCount = 0;
|
|
254
238
|
this.owners = /* @__PURE__ */ new Map();
|
|
@@ -382,19 +366,24 @@ var QueryCell = class {
|
|
|
382
366
|
staleReason: null
|
|
383
367
|
});
|
|
384
368
|
}
|
|
385
|
-
queueStart() {
|
|
369
|
+
queueStart(reconcileSequence) {
|
|
386
370
|
if (this.destroyed) return;
|
|
371
|
+
const sequence = reconcileSequence ?? (() => {
|
|
372
|
+
this.reconcileAttemptCount = 0;
|
|
373
|
+
return ++this.reconcileSequence;
|
|
374
|
+
})();
|
|
387
375
|
this.startQueued = true;
|
|
388
376
|
const token = ++this.pendingRefreshToken;
|
|
389
377
|
this.pendingRefresh = new Promise((resolve) => {
|
|
390
378
|
this.pendingRefreshResolve = resolve;
|
|
391
379
|
enqueueRuntimeTask(() => {
|
|
380
|
+
if (token !== this.pendingRefreshToken) return;
|
|
392
381
|
this.startQueued = false;
|
|
393
382
|
if (this.destroyed) {
|
|
394
383
|
this.finishPendingRefresh(token);
|
|
395
384
|
return;
|
|
396
385
|
}
|
|
397
|
-
this.start().finally(() => {
|
|
386
|
+
this.start(sequence).finally(() => {
|
|
398
387
|
this.finishPendingRefresh(token);
|
|
399
388
|
});
|
|
400
389
|
});
|
|
@@ -415,7 +404,7 @@ var QueryCell = class {
|
|
|
415
404
|
};
|
|
416
405
|
notifySource(this.source);
|
|
417
406
|
}
|
|
418
|
-
async start() {
|
|
407
|
+
async start(reconcileSequence) {
|
|
419
408
|
if (this.destroyed) return;
|
|
420
409
|
this.generation += 1;
|
|
421
410
|
const generation = this.generation;
|
|
@@ -435,7 +424,7 @@ var QueryCell = class {
|
|
|
435
424
|
try {
|
|
436
425
|
nextData = await this.options.fetch({ signal: controller.signal });
|
|
437
426
|
} catch (error) {
|
|
438
|
-
if (this.destroyed || this.generation
|
|
427
|
+
if (this.destroyed || !isCurrentAsyncOperation(this.generation, generation, this.controller, controller)) return;
|
|
439
428
|
if (isAbortError(error, controller.signal)) {
|
|
440
429
|
this.setState(hasData ? {
|
|
441
430
|
loading: false,
|
|
@@ -464,7 +453,7 @@ var QueryCell = class {
|
|
|
464
453
|
});
|
|
465
454
|
return;
|
|
466
455
|
}
|
|
467
|
-
if (this.destroyed || this.generation
|
|
456
|
+
if (this.destroyed || !isCurrentAsyncOperation(this.generation, generation, this.controller, controller)) return;
|
|
468
457
|
let isConsistent;
|
|
469
458
|
try {
|
|
470
459
|
isConsistent = this.options.isConsistent?.(nextData) ?? true;
|
|
@@ -489,9 +478,9 @@ var QueryCell = class {
|
|
|
489
478
|
staleReason: "inconsistent"
|
|
490
479
|
});
|
|
491
480
|
try {
|
|
492
|
-
await this.reconcile(nextData);
|
|
481
|
+
await this.reconcile(nextData, generation, controller, reconcileSequence);
|
|
493
482
|
} catch (error) {
|
|
494
|
-
if (this.generation
|
|
483
|
+
if (isCurrentAsyncOperation(this.generation, generation, this.controller, controller)) this.setState({
|
|
495
484
|
loading: false,
|
|
496
485
|
refreshing: false,
|
|
497
486
|
stale: true,
|
|
@@ -513,8 +502,8 @@ var QueryCell = class {
|
|
|
513
502
|
staleReason: null
|
|
514
503
|
});
|
|
515
504
|
}
|
|
516
|
-
async reconcile(data) {
|
|
517
|
-
if (!await (this.options.reconcile?.(data, { key: this.options.key }) ?? false) || this.destroyed) return;
|
|
505
|
+
async reconcile(data, generation, controller, reconcileSequence) {
|
|
506
|
+
if (!await (this.options.reconcile?.(data, { key: this.options.key }) ?? false) || this.destroyed || reconcileSequence !== this.reconcileSequence || !isCurrentAsyncOperation(this.generation, generation, this.controller, controller)) return;
|
|
518
507
|
this.reconcileAttemptCount += 1;
|
|
519
508
|
if (this.reconcileAttemptCount > RECONCILE_MAX_ATTEMPTS) {
|
|
520
509
|
this.setState({
|
|
@@ -525,8 +514,10 @@ var QueryCell = class {
|
|
|
525
514
|
return;
|
|
526
515
|
}
|
|
527
516
|
await new Promise((resolve) => setTimeout(resolve, RECONCILE_RETRY_DELAY_MS));
|
|
528
|
-
if (this.destroyed || this.state.consistency === "fresh") return;
|
|
529
|
-
this.
|
|
517
|
+
if (this.destroyed || reconcileSequence !== this.reconcileSequence || this.state.consistency === "fresh" || !isCurrentAsyncOperation(this.generation, generation, this.controller, controller)) return;
|
|
518
|
+
this.controller?.abort();
|
|
519
|
+
this.finishPendingRefresh(this.pendingRefreshToken);
|
|
520
|
+
this.queueStart(reconcileSequence);
|
|
530
521
|
}
|
|
531
522
|
};
|
|
532
523
|
function createLegacyQuery(options) {
|
|
@@ -831,4 +822,4 @@ function createQueryCollection(options) {
|
|
|
831
822
|
return collection;
|
|
832
823
|
}
|
|
833
824
|
//#endregion
|
|
834
|
-
export {
|
|
825
|
+
export { invalidateOnInterval as a, invalidate as i, createQuery as n, queryScope as o, createMutation as r, createQueryCollection as t };
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { d as getCurrentAppRenderRuntime, f as getCurrentComponentInstance } from "./component-scope-4I3yEMkb.js";
|
|
2
2
|
import { i as getExecutionModel } from "./manifest-D6rfj_jC.js";
|
|
3
3
|
import { n as getActiveRenderContext, r as getCurrentRenderData } from "./render-context-B7ohlh6t.js";
|
|
4
|
-
import { t as resource } from "./resource-operation-
|
|
4
|
+
import { t as resource } from "./resource-operation-B8q-QRUx.js";
|
|
5
5
|
import { A as getDefaultRouteBasePath, C as getCurrentInheritedPolicies, D as getCurrentPathPrefix, E as getCurrentPageScope, F as insertRecordSorted, H as computeRank, L as pushRegistrationScope, N as hasActivePageScope, O as getCurrentScopeKind, S as getCurrentInheritedMeta, T as getCurrentPageChain, U as normalizeRouteSegmentName, W as parseSegments, g as assertRouteRegistrationUnlocked, h as addRouteToStores, w as getCurrentLayoutChain, x as getCurrentInheritedAuthRequirements } from "./route-matching-Bo6UqG-5.js";
|
|
6
|
-
import { _ as createRouteHandler, d as DEFERRED_BOUNDARY, p as isDeferred, s as guardHydratedRouteData } from "./resolution-
|
|
6
|
+
import { _ as createRouteHandler, d as DEFERRED_BOUNDARY, p as isDeferred, s as guardHydratedRouteData } from "./resolution-t8J0yNaU.js";
|
|
7
7
|
import { allOf } from "@askrjs/auth";
|
|
8
8
|
//#region src/router/access.ts
|
|
9
9
|
function compileNodePolicies(node) {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { t as enqueueRuntimeLane } from "./access-
|
|
2
|
-
import { m as withFineGrainedReadTracking } from "./readable-
|
|
1
|
+
import { t as enqueueRuntimeLane } from "./access-Rr7CMa06.js";
|
|
2
|
+
import { m as withFineGrainedReadTracking } from "./readable-CEcteIDE.js";
|
|
3
3
|
//#region src/runtime/effect.ts
|
|
4
4
|
const SOURCE_EFFECTS = Symbol("askr.source-effects");
|
|
5
5
|
const effectSources = /* @__PURE__ */ new WeakMap();
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { d as setRuntimeBulkCommitProbe, o as getRuntimeRenderer, u as runRuntimeWithSyncProgress, x as isDevelopmentEnvironment } from "./access-
|
|
1
|
+
import { d as setRuntimeBulkCommitProbe, o as getRuntimeRenderer, u as runRuntimeWithSyncProgress, x as isDevelopmentEnvironment } from "./access-Rr7CMa06.js";
|
|
2
2
|
import { i as isFragmentType } from "./jsx-DRS-qjiN.js";
|
|
3
|
-
import { i as finalizeReadableSubscriptions, l as notifyReadableReaders, o as markReactivePropsDirtySource, s as markReadableDerivedSubscribersDirty } from "./readable-
|
|
3
|
+
import { i as finalizeReadableSubscriptions, l as notifyReadableReaders, o as markReactivePropsDirtySource, s as markReadableDerivedSubscribersDirty } from "./readable-CEcteIDE.js";
|
|
4
4
|
//#region src/runtime/dev-namespace.ts
|
|
5
5
|
/**
|
|
6
6
|
* Set a value in the dev namespace (no-op in production).
|