@askrjs/askr 0.2.0 → 0.2.2

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 (60) hide show
  1. package/CHANGELOG.md +2 -0
  2. package/capabilities.json +9 -2
  3. package/dist/actions/index.d.ts +1 -1
  4. package/dist/actions/index.js +1 -1
  5. package/dist/{activity-d4t3CdzK.js → activity-B2Yy7Wz9.js} +2 -2
  6. package/dist/{activity-D_5x2HXQ.d.ts → activity-CAJ5eho-.d.ts} +1 -1
  7. package/dist/benchmark.js +7 -7
  8. package/dist/boot/index.d.ts +2 -2
  9. package/dist/boot/index.js +1 -1
  10. package/dist/{boot-BjldNXqF.js → boot-DVwjHCNh.js} +10 -10
  11. package/dist/{cleanup-D7uN-Z1s.js → cleanup-DPtpXtA4.js} +3 -3
  12. package/dist/{component-cleanup-DYG80yhG.js → component-cleanup-DPe8claJ.js} +1 -1
  13. package/dist/{component-internal-D0yE2Ch3.js → component-internal-xW_OnTmC.js} +3 -3
  14. package/dist/components/index.d.ts +1 -1
  15. package/dist/control/index.d.ts +1 -1
  16. package/dist/control/index.js +1 -1
  17. package/dist/{control-C0klPV7Q.js → control-BLVTE1gO.js} +3 -3
  18. package/dist/{csp-nonce-BVybpV1v.js → csp-nonce-CCnMtOW-.js} +1 -1
  19. package/dist/data/index.d.ts +2 -2
  20. package/dist/data/index.js +2 -2
  21. package/dist/{data-CnQwUS76.js → data-BjUf0PPS.js} +245 -3
  22. package/dist/{deferred-BVkZ5T2P.js → deferred-BRw0gbn5.js} +2 -2
  23. package/dist/{effect-BdvdgMvV.js → effect-BQP5o0Kx.js} +1 -1
  24. package/dist/{fastlane-DGo7SxBQ.js → fastlane-DUxiFV9S.js} +1 -1
  25. package/dist/{for-internal-DkBwTG4S.js → for-internal-DKcYl3nl.js} +4 -4
  26. package/dist/foundations/index.d.ts +1 -1
  27. package/dist/foundations/index.js +1 -1
  28. package/dist/foundations/state/index.d.ts +1 -1
  29. package/dist/foundations/state/index.js +1 -1
  30. package/dist/foundations/structures/index.d.ts +1 -1
  31. package/dist/foundations/structures/index.js +1 -1
  32. package/dist/fx/index.d.ts +1 -1
  33. package/dist/{index-CTIBOqUB.d.ts → index-DSqXWc77.d.ts} +35 -1
  34. package/dist/{index-S2IqSJib.d.ts → index-r5THqzPN.d.ts} +1 -1
  35. package/dist/index.d.ts +2 -2
  36. package/dist/index.js +9 -9
  37. package/dist/{lifecycle-batch-BH0fax4F.js → lifecycle-batch-BYECQw8T.js} +1 -1
  38. package/dist/{lifecycle-operations-CBzG5PyB.js → lifecycle-operations-DJk_5MrD.js} +1 -1
  39. package/dist/{navigate-Cix_Q9ym.js → navigate-DvJvo--6.js} +8 -8
  40. package/dist/{navigate-eGm4omPj.d.ts → navigate-wel1e6cU.d.ts} +1 -1
  41. package/dist/{readable-BsdGWsDE.js → readable-D-JIKCg2.js} +2 -0
  42. package/dist/{renderer-Cg92QKOm.js → renderer-RjZ8LHbt.js} +8 -8
  43. package/dist/{resolution-ZsIFeQoB.js → resolution-dVYwYXrI.js} +3 -3
  44. package/dist/{resource-operation-B62UQKHV.js → resource-operation-4qFIM02d.js} +3 -3
  45. package/dist/resources/index.d.ts +2 -2
  46. package/dist/resources/index.js +4 -4
  47. package/dist/router/index.d.ts +3 -3
  48. package/dist/router/index.js +5 -5
  49. package/dist/{selector-CyK-sDwB.js → selector-NQiYHwZC.js} +1 -1
  50. package/dist/ssg/index.d.ts +1 -1
  51. package/dist/ssg/index.js +3 -3
  52. package/dist/ssr/index.d.ts +1 -1
  53. package/dist/ssr/index.js +1 -1
  54. package/dist/{ssr-BrdV2jMy.js → ssr-F87AcFMt.js} +6 -6
  55. package/dist/{state-DmkGM_LN.js → state-Ks-sWTQi.js} +2 -2
  56. package/dist/{structures-CPycoyZj.js → structures-C-wmHCi6.js} +3 -3
  57. package/dist/testing/index.d.ts +1 -1
  58. package/dist/testing/index.js +3 -3
  59. package/dist/{verify-hydration-Bo5_tpen.js → verify-hydration-CThsx0pq.js} +1 -1
  60. package/package.json +1 -1
package/CHANGELOG.md CHANGED
@@ -2,6 +2,8 @@
2
2
 
3
3
  ## Unreleased
4
4
 
5
+ - feat(data): add lifecycle-owned dynamic keyed query collections with bounded
6
+ initial loading, aggregate state, per-key retry, and shared query caching.
5
7
  - fix(runtime): reject recursive `derive()` and `selector()` reads before a
6
8
  memoized value can bypass the self-evaluation guard.
7
9
  - fix(runtime): route scheduled descendant and portal materialization failures
package/capabilities.json CHANGED
@@ -16,10 +16,17 @@
16
16
  "intent": "data queries and mutations",
17
17
  "package": "@askrjs/askr",
18
18
  "import": "@askrjs/askr/data",
19
- "exports": ["createQuery", "defineQuery", "queryScope", "createMutation"],
19
+ "exports": [
20
+ "createQuery",
21
+ "createQueryCollection",
22
+ "defineQuery",
23
+ "queryScope",
24
+ "createMutation"
25
+ ],
20
26
  "constraints": [
21
27
  "query keys identify shared cache entries",
22
- "fetches are cancellable"
28
+ "fetches are cancellable",
29
+ "query collections require component render scope"
23
30
  ],
24
31
  "stability": "stable",
25
32
  "docs": "https://github.com/askrjs/askr/blob/main/docs/core/data.md",
@@ -1,2 +1,2 @@
1
- import { a as action, i as ActionValidationError, n as ActionForm, o as defineAction, r as ActionStatus, t as ActionDescriptor } from "../index-CTIBOqUB.js";
1
+ import { a as action, i as ActionValidationError, n as ActionForm, o as defineAction, r as ActionStatus, t as ActionDescriptor } from "../index-DSqXWc77.js";
2
2
  export { ActionDescriptor, ActionForm, ActionStatus, ActionValidationError, action, defineAction };
@@ -1,6 +1,6 @@
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-DmkGM_LN.js";
3
+ import { t as state } from "../state-Ks-sWTQi.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
6
  //#region src/actions/runtime.ts
@@ -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-D0yE2Ch3.js";
3
- import { l as notifyReadableReaders, o as markReactivePropsDirtySource, s as markReadableDerivedSubscribersDirty, u as recordReadableRead } from "./readable-BsdGWsDE.js";
2
+ import { a as registerCommitOperation } from "./component-internal-xW_OnTmC.js";
3
+ import { l as notifyReadableReaders, o as markReactivePropsDirtySource, s as markReadableDerivedSubscribersDirty, u as recordReadableRead } from "./readable-D-JIKCg2.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";
@@ -1,4 +1,4 @@
1
- import { Ct as RouteParams, Lt as RouteSnapshot } from "./index-CTIBOqUB.js";
1
+ import { Rt as RouteSnapshot, wt as RouteParams } from "./index-DSqXWc77.js";
2
2
  //#region src/router/activity.d.ts
3
3
  /** Options for {@link onRouteChange}. */
4
4
  interface RouteChangeOptions {
package/dist/benchmark.js CHANGED
@@ -1,10 +1,10 @@
1
1
  import { r as flushRuntimeScheduler } from "./access-d_DCdwqn.js";
2
- import { t as state } from "./state-DmkGM_LN.js";
3
- import { t as selector } from "./selector-CyK-sDwB.js";
4
- import { t as installRendererBridge } from "./renderer-Cg92QKOm.js";
5
- import { i as For } from "./control-C0klPV7Q.js";
2
+ import { t as state } from "./state-Ks-sWTQi.js";
3
+ import { t as selector } from "./selector-NQiYHwZC.js";
4
+ import { t as installRendererBridge } from "./renderer-RjZ8LHbt.js";
5
+ import { i as For } from "./control-BLVTE1gO.js";
6
6
  import { jsx, jsxs } from "./jsx-runtime.js";
7
- import { t as createIsland } from "./boot-BjldNXqF.js";
7
+ import { t as createIsland } from "./boot-DVwjHCNh.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.0",
67
- buildLabel: "0.2.0-local"
66
+ packageVersion: "0.2.2",
67
+ buildLabel: "0.2.2-local"
68
68
  };
69
69
  function getBenchmarkMetadata() {
70
70
  return { ...benchmarkMetadata };
@@ -1,5 +1,5 @@
1
- import { At as RouteRegistry, nn as ComponentFunction, ut as RouteAuthOptions, zt as DataRuntime } from "../index-CTIBOqUB.js";
2
- import { a as ScrollRestorationOptions } from "../navigate-eGm4omPj.js";
1
+ import { Bt as DataRuntime, dt as RouteAuthOptions, jt as RouteRegistry, sn as ComponentFunction } from "../index-DSqXWc77.js";
2
+ import { a as ScrollRestorationOptions } from "../navigate-wel1e6cU.js";
3
3
  //#region src/boot/types.d.ts
4
4
  /** Configuration for {@link createIsland}: mounts one component onto existing DOM. */
5
5
  type IslandConfig = {
@@ -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-BjldNXqF.js";
1
+ import { a as cleanupApp, i as hydrateSPA, n as createIslands, o as hasApp, r as createSPA, t as createIsland } from "../boot-DVwjHCNh.js";
2
2
  export { cleanupApp, createIsland, createIslands, createSPA, hasApp, hydrateSPA };
@@ -1,19 +1,19 @@
1
1
  import { S as isProductionEnvironment, r as flushRuntimeScheduler, x as isDevelopmentEnvironment, y as logger } from "./access-d_DCdwqn.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-D0yE2Ch3.js";
4
- import { t as cleanupComponent } from "./component-cleanup-DYG80yhG.js";
5
- import { p as isPromiseLike } from "./lifecycle-batch-BH0fax4F.js";
6
- import { _ as teardownNodeSubtree, d as removeAllListeners } from "./cleanup-D7uN-Z1s.js";
3
+ import { n as createComponentInstance, r as executeComponent } from "./component-internal-xW_OnTmC.js";
4
+ import { t as cleanupComponent } from "./component-cleanup-DPe8claJ.js";
5
+ import { p as isPromiseLike } from "./lifecycle-batch-BYECQw8T.js";
6
+ import { _ as teardownNodeSubtree, d as removeAllListeners } from "./cleanup-DPtpXtA4.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-Cg92QKOm.js";
10
- import { r as validateCspNonce, t as CspNonceScope } from "./csp-nonce-BVybpV1v.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-RjZ8LHbt.js";
10
+ import { r as validateCspNonce, t as CspNonceScope } from "./csp-nonce-CCnMtOW-.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-ZsIFeQoB.js";
15
- import { o as createAppRenderRuntime, r as setServerLocation } from "./activity-d4t3CdzK.js";
16
- import { f as registerAppInstance, g as unregisterAppInstance, i as resolveRouteMeta, o as configureScrollRestoration, r as reconcileRouteMeta, t as initializeNavigation } from "./navigate-Cix_Q9ym.js";
14
+ import { a as resolveRouteRequest, i as hasRouteRenderData, m as reviveDeferredValue, n as getRouteRenderContext, r as getRouteRenderData } from "./resolution-dVYwYXrI.js";
15
+ import { o as createAppRenderRuntime, r as setServerLocation } from "./activity-B2Yy7Wz9.js";
16
+ import { f as registerAppInstance, g as unregisterAppInstance, i as resolveRouteMeta, o as configureScrollRestoration, r as reconcileRouteMeta, t as initializeNavigation } from "./navigate-DvJvo--6.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
@@ -786,7 +786,7 @@ async function hydrateSPA(config) {
786
786
  cspNonce: config.cspNonce
787
787
  }));
788
788
  if (shouldVerifyHydrationMarkup(config)) {
789
- const { verifyHydrationSyncForUrl } = await import("./verify-hydration-Bo5_tpen.js");
789
+ const { verifyHydrationSyncForUrl } = await import("./verify-hydration-CThsx0pq.js");
790
790
  if (!verifyHydrationSyncForUrl({
791
791
  root: rootElement,
792
792
  url: currentUrl,
@@ -1,8 +1,8 @@
1
1
  import { l as runRuntimeHandlerScope, y as logger } from "./access-d_DCdwqn.js";
2
- import "./fastlane-DGo7SxBQ.js";
2
+ import "./fastlane-DUxiFV9S.js";
3
3
  import { T as withAppRenderRuntime, d as getCurrentAppRenderRuntime } from "./component-scope-4I3yEMkb.js";
4
- import { t as cleanupComponent } from "./component-cleanup-DYG80yhG.js";
5
- import { u as registerLifecycleTransaction } from "./lifecycle-batch-BH0fax4F.js";
4
+ import { t as cleanupComponent } from "./component-cleanup-DPe8claJ.js";
5
+ import { u as registerLifecycleTransaction } from "./lifecycle-batch-BYECQw8T.js";
6
6
  //#region src/runtime/events.ts
7
7
  /**
8
8
  * Event delegation system for Askr
@@ -1,6 +1,6 @@
1
1
  import { S as isProductionEnvironment, x as isDevelopmentEnvironment, y as logger } from "./access-d_DCdwqn.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-BsdGWsDE.js";
3
+ import { n as cleanupReadableSubscriptions, t as cleanupReadableSubscriptionSources } from "./readable-D-JIKCg2.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
2
  import { S as isProductionEnvironment, n as enqueueRuntimeTask, o as getRuntimeRenderer, x as isDevelopmentEnvironment, y as logger } from "./access-d_DCdwqn.js";
3
- import { i as tryRuntimeFastLaneSync, n as isBulkCommitActive } from "./fastlane-DGo7SxBQ.js";
3
+ import { i as tryRuntimeFastLaneSync, n as isBulkCommitActive } from "./fastlane-DUxiFV9S.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-BsdGWsDE.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-BH0fax4F.js";
6
+ import { i as finalizeReadableSubscriptions } from "./readable-D-JIKCg2.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-BYECQw8T.js";
8
8
  //#region src/runtime/context.ts
9
9
  const TransparentContextScopeComponent = markTransparentComponentResult(ContextScopeComponent);
10
10
  let nextScopeIdentityKey = 0;
@@ -1,4 +1,4 @@
1
- import { in as VNode } from "../index-CTIBOqUB.js";
1
+ import { ln as VNode } from "../index-DSqXWc77.js";
2
2
  import { r as JSXElement, s as Props } from "../types-DkVJhVs9.js";
3
3
  //#region src/common/error-boundary.d.ts
4
4
  type ErrorBoundaryContent = VNode | readonly VNode[];
@@ -1,2 +1,2 @@
1
- import { A as Case, F as ShowProps, I as For, L as ForProps, M as Match, N as MatchProps, P as Show, j as CaseProps } from "../index-CTIBOqUB.js";
1
+ import { F as Show, I as ShowProps, L as For, M as CaseProps, N as Match, P as MatchProps, R as ForProps, j as Case } from "../index-DSqXWc77.js";
2
2
  export { Case, type CaseProps, For, type ForProps, Match, type MatchProps, Show, type ShowProps };
@@ -1,2 +1,2 @@
1
- import { i as For, n as Match, r as Show, t as Case } from "../control-C0klPV7Q.js";
1
+ import { i as For, n as Match, r as Show, t as Case } from "../control-BLVTE1gO.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
2
  import { x as isDevelopmentEnvironment } from "./access-d_DCdwqn.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-DkBwTG4S.js";
5
- import { t as createFineGrainedEffect } from "./effect-BdvdgMvV.js";
6
- import { t as state } from "./state-DmkGM_LN.js";
4
+ import { m as createShowState, p as createCaseState, s as useForState } from "./for-internal-DKcYl3nl.js";
5
+ import { t as createFineGrainedEffect } from "./effect-BQP5o0Kx.js";
6
+ import { t as state } from "./state-Ks-sWTQi.js";
7
7
  //#region src/control/shared.ts
8
8
  function normalizeBoundaryChild(value) {
9
9
  if (Array.isArray(value)) {
@@ -1,4 +1,4 @@
1
- import { p as defineScope, y as readScope } from "./component-internal-D0yE2Ch3.js";
1
+ import { p as defineScope, y as readScope } from "./component-internal-xW_OnTmC.js";
2
2
  //#region src/common/url.ts
3
3
  const SAFE_URL_SCHEMES = /* @__PURE__ */ new Set([
4
4
  "http",
@@ -1,2 +1,2 @@
1
- import { Bt as DataRuntimeOptions, Gt as Query, Ht as InvalidateOptions, Jt as QueryKeyPart, Kt as QueryConsistency, Qt as ServerQueryHandler, S as createMutation, Ut as Mutation, Vt as InvalidateOnIntervalOptions, Wt as MutationOptions, Xt as QueryScope, Yt as QueryPrefetchContext, Zt as QueryStaleReason, _ as invalidateOnInterval, b as getDefaultDataRuntime, c as ServerQueryRegistry, d as defineServerQueries, f as dehydrateDataRuntime, g as invalidate, h as serveQuery, l as createQueryPrefetchContext, m as prefetchQuery, p as hydrateDataRuntime, qt as QueryDefinition, s as ServerQueryEntry, u as defineQuery, v as queryScope, x as createQuery, y as createDataRuntime, zt as DataRuntime } from "../index-CTIBOqUB.js";
2
- export { type DataRuntime, type DataRuntimeOptions, type InvalidateOnIntervalOptions, type InvalidateOptions, type Mutation, type MutationOptions, type Query, type QueryConsistency, type QueryDefinition, type QueryKeyPart, type QueryPrefetchContext, type QueryScope, type QueryStaleReason, type ServerQueryEntry, type ServerQueryHandler, type ServerQueryRegistry, createDataRuntime, createMutation, createQuery, createQueryPrefetchContext, defineQuery, defineServerQueries, dehydrateDataRuntime, getDefaultDataRuntime, hydrateDataRuntime, invalidate, invalidateOnInterval, prefetchQuery, queryScope, serveQuery };
1
+ import { $t as QueryKeyPart, Bt as DataRuntime, C as createMutation, Gt as MutationOptions, Ht as InvalidateOnIntervalOptions, Jt as QueryCollectionEntry, Kt as Query, Qt as QueryDefinition, S as createQuery, Ut as InvalidateOptions, Vt as DataRuntimeOptions, Wt as Mutation, Xt as QueryCollectionOptions, Yt as QueryCollectionKey, Zt as QueryConsistency, _ as invalidate, b as createDataRuntime, c as ServerQueryRegistry, d as defineServerQueries, en as QueryPrefetchContext, f as dehydrateDataRuntime, g as createQueryCollection, h as serveQuery, l as createQueryPrefetchContext, m as prefetchQuery, nn as QueryStaleReason, p as hydrateDataRuntime, qt as QueryCollection, rn as ServerQueryHandler, s as ServerQueryEntry, tn as QueryScope, u as defineQuery, v as invalidateOnInterval, x as getDefaultDataRuntime, y as queryScope } from "../index-DSqXWc77.js";
2
+ export { type DataRuntime, type DataRuntimeOptions, type InvalidateOnIntervalOptions, type InvalidateOptions, type Mutation, type MutationOptions, type Query, type QueryCollection, type QueryCollectionEntry, type QueryCollectionKey, type QueryCollectionOptions, type QueryConsistency, type QueryDefinition, type QueryKeyPart, type QueryPrefetchContext, type QueryScope, type QueryStaleReason, type ServerQueryEntry, type ServerQueryHandler, type ServerQueryRegistry, createDataRuntime, createMutation, createQuery, createQueryCollection, createQueryPrefetchContext, defineQuery, defineServerQueries, dehydrateDataRuntime, getDefaultDataRuntime, hydrateDataRuntime, invalidate, invalidateOnInterval, prefetchQuery, queryScope, serveQuery };
@@ -1,4 +1,4 @@
1
1
  import { i as getDefaultDataRuntime, t as createDataRuntime } from "../data-runtime-7t_Y0iv3.js";
2
- import { c as queryScope, n as createMutation, o as invalidate, s as invalidateOnInterval, t as createQuery } from "../data-CnQwUS76.js";
2
+ import { c as invalidateOnInterval, l as queryScope, n as createQuery, r as createMutation, s as invalidate, t as createQueryCollection } from "../data-BjUf0PPS.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
- export { createDataRuntime, createMutation, createQuery, createQueryPrefetchContext, defineQuery, defineServerQueries, dehydrateDataRuntime, getDefaultDataRuntime, hydrateDataRuntime, invalidate, invalidateOnInterval, prefetchQuery, queryScope, serveQuery };
4
+ export { createDataRuntime, createMutation, createQuery, createQueryCollection, createQueryPrefetchContext, defineQuery, defineServerQueries, dehydrateDataRuntime, getDefaultDataRuntime, hydrateDataRuntime, invalidate, invalidateOnInterval, prefetchQuery, queryScope, serveQuery };
@@ -1,8 +1,8 @@
1
1
  import { n as enqueueRuntimeTask, y as logger } from "./access-d_DCdwqn.js";
2
2
  import { d as getCurrentAppRenderRuntime, f as getCurrentComponentInstance, i as claimHookIndex } from "./component-scope-4I3yEMkb.js";
3
- import { l as notifyReadableReaders, o as markReactivePropsDirtySource, s as markReadableDerivedSubscribersDirty, u as recordReadableRead } from "./readable-BsdGWsDE.js";
3
+ import { l as notifyReadableReaders, o as markReactivePropsDirtySource, s as markReadableDerivedSubscribersDirty, u as recordReadableRead } from "./readable-D-JIKCg2.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-CBzG5PyB.js";
5
+ import { i as routeActive, n as documentVisible, o as timer, s as windowFocused } from "./lifecycle-operations-DJk_5MrD.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
7
  //#region src/data/query-key.ts
8
8
  function serializeQueryKeyNumber(part) {
@@ -348,6 +348,10 @@ var QueryCell = class {
348
348
  recordReadableRead(this.source);
349
349
  return this.state.staleReason;
350
350
  }
351
+ /** @internal Whether a collection should schedule this cell's first load. */
352
+ needsInitialStart() {
353
+ return !this.destroyed && this.state.data === null && this.state.error === null && !this.pendingRefresh && !this.startQueued;
354
+ }
351
355
  ensureStarted() {
352
356
  if (this.destroyed || this.state.data !== null || this.pendingRefresh || this.startQueued || this.options.skipInitialFetch) return;
353
357
  this.queueStart();
@@ -589,4 +593,242 @@ function createQuery(optionsOrDefinition, input, options) {
589
593
  return createLegacyQuery(optionsOrDefinition);
590
594
  }
591
595
  //#endregion
592
- export { notifySource as a, queryScope as c, normalizeAsyncDataError as i, createMutation as n, invalidate as o, createReadableSource as r, invalidateOnInterval as s, createQuery as t };
596
+ //#region src/data/query-collection.ts
597
+ const DEFAULT_QUERY_COLLECTION_CONCURRENCY = 4;
598
+ const collectionSlotsByGeneration = /* @__PURE__ */ new WeakMap();
599
+ /** @internal Validate and normalize a query collection's concurrency cap. */
600
+ function normalizeQueryCollectionConcurrency(concurrency) {
601
+ const value = concurrency ?? DEFAULT_QUERY_COLLECTION_CONCURRENCY;
602
+ if (!Number.isInteger(value) || value < 1) throw new Error("[Askr] createQueryCollection() concurrency must be a positive integer.");
603
+ return value;
604
+ }
605
+ function getCollectionStore(generation) {
606
+ let store = collectionSlotsByGeneration.get(generation);
607
+ if (!store) {
608
+ store = /* @__PURE__ */ new Map();
609
+ collectionSlotsByGeneration.set(generation, store);
610
+ }
611
+ return store;
612
+ }
613
+ function createCellOptions(runtimeState, query, input, queryKey) {
614
+ return {
615
+ key: queryKey,
616
+ definitionIdentity: query,
617
+ fetch: ({ signal }) => query.fetch({
618
+ ...input,
619
+ signal
620
+ }),
621
+ isConsistent: query.isConsistent,
622
+ reconcile: query.reconcile,
623
+ initialData: runtimeState.queryData.get(queryKey),
624
+ skipInitialFetch: true
625
+ };
626
+ }
627
+ var QueryCollectionCell = class {
628
+ constructor(runtimeState) {
629
+ this.runtimeState = runtimeState;
630
+ this.records = /* @__PURE__ */ new Map();
631
+ this.ordered = [];
632
+ this.tasks = /* @__PURE__ */ new Map();
633
+ this.queue = [];
634
+ this.activeCount = 0;
635
+ this.concurrency = DEFAULT_QUERY_COLLECTION_CONCURRENCY;
636
+ this.disposed = false;
637
+ }
638
+ get entries() {
639
+ return this.ordered;
640
+ }
641
+ get loading() {
642
+ return this.ordered.some(({ query }) => query.loading || query.refreshing);
643
+ }
644
+ get settled() {
645
+ return !this.loading;
646
+ }
647
+ get results() {
648
+ const results = /* @__PURE__ */ new Map();
649
+ for (const { key, query } of this.ordered) if (query.data !== null) results.set(key, query.data);
650
+ return results;
651
+ }
652
+ get errors() {
653
+ const errors = /* @__PURE__ */ new Map();
654
+ for (const { key, query } of this.ordered) if (query.error !== null) errors.set(key, query.error);
655
+ return errors;
656
+ }
657
+ get(key) {
658
+ return this.records.get(key);
659
+ }
660
+ retry(key) {
661
+ const record = this.records.get(key);
662
+ return record ? this.schedule(record.cell) : Promise.resolve();
663
+ }
664
+ update(query, inputs, keyForInput, concurrency, startInitialFetches) {
665
+ if (this.disposed) return;
666
+ this.concurrency = concurrency;
667
+ const desired = [];
668
+ const seenKeys = /* @__PURE__ */ new Set();
669
+ for (const input of inputs) {
670
+ const key = keyForInput(input);
671
+ if (seenKeys.has(key)) continue;
672
+ seenKeys.add(key);
673
+ desired.push({
674
+ input,
675
+ key,
676
+ queryKey: query.key(input)
677
+ });
678
+ }
679
+ const nextRecords = /* @__PURE__ */ new Map();
680
+ const nextOrdered = [];
681
+ const startCandidates = /* @__PURE__ */ new Set();
682
+ const detachedCells = /* @__PURE__ */ new Set();
683
+ for (const { input, key, queryKey } of desired) {
684
+ const cellOptions = createCellOptions(this.runtimeState, query, input, queryKey);
685
+ const previous = this.records.get(key);
686
+ let record;
687
+ if (previous?.queryKey === queryKey) {
688
+ previous.input = input;
689
+ previous.cell.warnOnConflictingDefinition(cellOptions);
690
+ record = previous;
691
+ } else {
692
+ if (previous) {
693
+ this.detach(previous);
694
+ detachedCells.add(previous.cell);
695
+ }
696
+ const cache = this.runtimeState.queryCache;
697
+ let cell = cache.get(queryKey);
698
+ if (!cell) {
699
+ cell = new QueryCell(cellOptions, queryKey, cache);
700
+ cache.set(queryKey, cell);
701
+ } else cell.warnOnConflictingDefinition(cellOptions);
702
+ const owner = {};
703
+ cell.attach(owner, 0);
704
+ record = {
705
+ key,
706
+ input,
707
+ query: cell,
708
+ queryKey,
709
+ cell,
710
+ owner
711
+ };
712
+ if (startInitialFetches && cell.needsInitialStart()) startCandidates.add(cell);
713
+ }
714
+ nextRecords.set(key, record);
715
+ nextOrdered.push(record);
716
+ }
717
+ for (const [key, record] of this.records) if (!nextRecords.has(key)) {
718
+ this.detach(record);
719
+ detachedCells.add(record.cell);
720
+ }
721
+ this.records = nextRecords;
722
+ this.ordered = Object.freeze(nextOrdered);
723
+ for (const cell of detachedCells) this.cancelIfUnused(cell);
724
+ for (const cell of startCandidates) this.schedule(cell);
725
+ this.pump();
726
+ }
727
+ dispose() {
728
+ if (this.disposed) return;
729
+ this.disposed = true;
730
+ const cells = /* @__PURE__ */ new Set();
731
+ for (const record of this.records.values()) {
732
+ cells.add(record.cell);
733
+ record.cell.detach(record.owner, 0);
734
+ }
735
+ this.records.clear();
736
+ this.ordered = [];
737
+ for (const cell of cells) this.cancelIfUnused(cell);
738
+ }
739
+ detach(record) {
740
+ record.cell.detach(record.owner, 0);
741
+ }
742
+ isCellUsed(cell) {
743
+ for (const record of this.records.values()) if (record.cell === cell) return true;
744
+ return false;
745
+ }
746
+ cancelIfUnused(cell) {
747
+ if (this.isCellUsed(cell)) return;
748
+ const task = this.tasks.get(cell);
749
+ if (!task || task.state === "cancelled" || task.state === "done") return;
750
+ if (task.state === "active") this.activeCount -= 1;
751
+ task.state = "cancelled";
752
+ this.tasks.delete(cell);
753
+ task.resolve();
754
+ this.pump();
755
+ }
756
+ schedule(cell) {
757
+ if (this.disposed) return Promise.resolve();
758
+ const existing = this.tasks.get(cell);
759
+ if (existing) return existing.promise;
760
+ let resolve;
761
+ const promise = new Promise((done) => {
762
+ resolve = done;
763
+ });
764
+ const task = {
765
+ cell,
766
+ promise,
767
+ resolve,
768
+ state: "queued"
769
+ };
770
+ this.tasks.set(cell, task);
771
+ this.queue.push(task);
772
+ this.pump();
773
+ return promise;
774
+ }
775
+ pump() {
776
+ if (this.disposed) return;
777
+ while (this.activeCount < this.concurrency) {
778
+ const task = this.queue.shift();
779
+ if (!task) return;
780
+ if (task.state !== "queued" || this.tasks.get(task.cell) !== task) continue;
781
+ task.state = "active";
782
+ this.activeCount += 1;
783
+ task.cell.refresh().finally(() => this.finish(task));
784
+ }
785
+ }
786
+ finish(task) {
787
+ if (task.state !== "active") return;
788
+ task.state = "done";
789
+ this.activeCount -= 1;
790
+ if (this.tasks.get(task.cell) === task) this.tasks.delete(task.cell);
791
+ task.resolve();
792
+ this.pump();
793
+ }
794
+ };
795
+ /**
796
+ * Create one lifecycle-owned collection of dynamically keyed readers for a
797
+ * reusable query definition, with bounded collection-started fetches.
798
+ */
799
+ function createQueryCollection(options) {
800
+ const instance = getCurrentComponentInstance();
801
+ if (!instance) throw new Error("[Askr] createQueryCollection() must be called during component render execution.");
802
+ const hookIndex = claimHookIndex(instance, "createQueryCollection");
803
+ const concurrency = normalizeQueryCollectionConcurrency(options.concurrency);
804
+ const inputs = options.inputs();
805
+ if (!Array.isArray(inputs)) throw new Error("[Askr] createQueryCollection() inputs must return a readonly array.");
806
+ const generation = instance._ownershipGeneration;
807
+ const runtimeState = resolveDataRuntimeState(options.runtime);
808
+ const store = getCollectionStore(generation);
809
+ let slot = store.get(hookIndex);
810
+ if (slot && slot.runtimeState !== runtimeState) {
811
+ slot.collection.dispose();
812
+ store.delete(hookIndex);
813
+ slot = void 0;
814
+ }
815
+ if (!slot) {
816
+ slot = {
817
+ runtimeState,
818
+ collection: new QueryCollectionCell(runtimeState)
819
+ };
820
+ store.set(hookIndex, slot);
821
+ (instance.cleanupFns ??= []).push(() => {
822
+ store.get(hookIndex)?.collection.dispose();
823
+ store.delete(hookIndex);
824
+ if (store.size === 0 && collectionSlotsByGeneration.get(generation) === store) collectionSlotsByGeneration.delete(generation);
825
+ });
826
+ }
827
+ const context = getActiveRenderContext();
828
+ const startInitialFetches = !(context?.mode === "ssr" || context?.mode === void 0 && typeof window === "undefined");
829
+ const collection = slot.collection;
830
+ collection.update(options.query, inputs, options.key, concurrency, startInitialFetches);
831
+ return collection;
832
+ }
833
+ //#endregion
834
+ export { normalizeAsyncDataError as a, invalidateOnInterval as c, createReadableSource as i, queryScope as l, createQuery as n, notifySource as o, createMutation as r, invalidate as s, 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-B62UQKHV.js";
4
+ import { t as resource } from "./resource-operation-4qFIM02d.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-ZsIFeQoB.js";
6
+ import { _ as createRouteHandler, d as DEFERRED_BOUNDARY, p as isDeferred, s as guardHydratedRouteData } from "./resolution-dVYwYXrI.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
1
  import { t as enqueueRuntimeLane } from "./access-d_DCdwqn.js";
2
- import { m as withFineGrainedReadTracking } from "./readable-BsdGWsDE.js";
2
+ import { m as withFineGrainedReadTracking } from "./readable-D-JIKCg2.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
1
  import { d as setRuntimeBulkCommitProbe, o as getRuntimeRenderer, u as runRuntimeWithSyncProgress, x as isDevelopmentEnvironment } from "./access-d_DCdwqn.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-BsdGWsDE.js";
3
+ import { i as finalizeReadableSubscriptions, l as notifyReadableReaders, o as markReactivePropsDirtySource, s as markReadableDerivedSubscribersDirty } from "./readable-D-JIKCg2.js";
4
4
  //#region src/runtime/dev-namespace.ts
5
5
  /**
6
6
  * Set a value in the dev namespace (no-op in production).
@@ -1,10 +1,10 @@
1
1
  import { n as _isDOMElement } from "./vnode-D24p6IW2.js";
2
2
  import { o as getRuntimeRenderer, x as isDevelopmentEnvironment, y as logger } from "./access-d_DCdwqn.js";
3
3
  import { h as getCurrentStateIndex, i as claimHookIndex, o as clearRenderTracking, p as getCurrentInstance } from "./component-scope-4I3yEMkb.js";
4
- import { _ as haveEquivalentContextFrames, b as rebaseVNodeTreeWithContextFrame, n as createComponentInstance, s as renderScopedComponent } from "./component-internal-D0yE2Ch3.js";
5
- import { d as shouldCoalesceFineGrainedItemReads, l as notifyReadableReaders, o as markReactivePropsDirtySource, s as markReadableDerivedSubscribersDirty, u as recordReadableRead } from "./readable-BsdGWsDE.js";
6
- import { i as unregisterOwnedChildScope, r as registerOwnedChildScope, t as cleanupComponent } from "./component-cleanup-DYG80yhG.js";
7
- import { o as finalizeInlineReadSubscriptions, u as registerLifecycleTransaction } from "./lifecycle-batch-BH0fax4F.js";
4
+ import { _ as haveEquivalentContextFrames, b as rebaseVNodeTreeWithContextFrame, n as createComponentInstance, s as renderScopedComponent } from "./component-internal-xW_OnTmC.js";
5
+ import { d as shouldCoalesceFineGrainedItemReads, l as notifyReadableReaders, o as markReactivePropsDirtySource, s as markReadableDerivedSubscribersDirty, u as recordReadableRead } from "./readable-D-JIKCg2.js";
6
+ import { i as unregisterOwnedChildScope, r as registerOwnedChildScope, t as cleanupComponent } from "./component-cleanup-DPe8claJ.js";
7
+ import { o as finalizeInlineReadSubscriptions, u as registerLifecycleTransaction } from "./lifecycle-batch-BYECQw8T.js";
8
8
  //#region src/runtime/child-scope.ts
9
9
  const EMPTY_CHILD_SCOPE_PROPS = {};
10
10
  const childScopesByInstance = /* @__PURE__ */ new WeakMap();
@@ -1,3 +1,3 @@
1
1
  import { r as JSXElement } from "../types-DkVJhVs9.js";
2
- import { c as DefaultPortal, d as definePortal, f as Presence, h as SlotProps, l as Portal, m as Slot, p as PresenceProps, u as PortalProps, v as LayoutComponent, y as layout } from "../index-S2IqSJib.js";
2
+ import { c as DefaultPortal, d as definePortal, f as Presence, h as SlotProps, l as Portal, m as Slot, p as PresenceProps, u as PortalProps, v as LayoutComponent, y as layout } from "../index-r5THqzPN.js";
3
3
  export { DefaultPortal, type JSXElement, type LayoutComponent, Portal, type PortalProps, Presence, type PresenceProps, Slot, type SlotProps, definePortal, layout };
@@ -1,2 +1,2 @@
1
- import { a as definePortal, c as layout, i as Portal, o as Presence, r as DefaultPortal, s as Slot } from "../structures-CPycoyZj.js";
1
+ import { a as definePortal, c as layout, i as Portal, o as Presence, r as DefaultPortal, s as Slot } from "../structures-C-wmHCi6.js";
2
2
  export { DefaultPortal, Portal, Presence, Slot, definePortal, layout };
@@ -1,4 +1,4 @@
1
- import { dn as State } from "../../index-CTIBOqUB.js";
1
+ import { gn as State } from "../../index-DSqXWc77.js";
2
2
  //#region src/foundations/state/controllable.d.ts
3
3
  /** Whether `value` represents controlled mode (not `undefined`). */
4
4
  declare function isControlled<T>(value: T | undefined): value is T;
@@ -1,4 +1,4 @@
1
- import { t as state } from "../../state-DmkGM_LN.js";
1
+ import { t as state } from "../../state-Ks-sWTQi.js";
2
2
  //#region src/foundations/state/controllable.ts
3
3
  /**
4
4
  * controllable
@@ -1,3 +1,3 @@
1
1
  import { r as JSXElement } from "../../types-DkVJhVs9.js";
2
- import { _ as isElement, a as Collection, c as DefaultPortal, d as definePortal, f as Presence, g as cloneElement, h as SlotProps, i as createLayer, l as Portal, m as Slot, n as LayerManager, o as CollectionItem, p as PresenceProps, r as LayerOptions, s as createCollection, t as Layer, u as PortalProps, v as LayoutComponent, y as layout } from "../../index-S2IqSJib.js";
2
+ import { _ as isElement, a as Collection, c as DefaultPortal, d as definePortal, f as Presence, g as cloneElement, h as SlotProps, i as createLayer, l as Portal, m as Slot, n as LayerManager, o as CollectionItem, p as PresenceProps, r as LayerOptions, s as createCollection, t as Layer, u as PortalProps, v as LayoutComponent, y as layout } from "../../index-r5THqzPN.js";
3
3
  export { type Collection, type CollectionItem, DefaultPortal, type JSXElement, type Layer, type LayerManager, type LayerOptions, type LayoutComponent, Portal, type PortalProps, Presence, type PresenceProps, Slot, type SlotProps, cloneElement, createCollection, createLayer, definePortal, isElement, layout };
@@ -1,2 +1,2 @@
1
- import { a as definePortal, c as layout, i as Portal, l as cloneElement, n as createCollection, o as Presence, r as DefaultPortal, s as Slot, t as createLayer, u as isElement } from "../../structures-CPycoyZj.js";
1
+ import { a as definePortal, c as layout, i as Portal, l as cloneElement, n as createCollection, o as Presence, r as DefaultPortal, s as Slot, t as createLayer, u as isElement } from "../../structures-C-wmHCi6.js";
2
2
  export { DefaultPortal, Portal, Presence, Slot, cloneElement, createCollection, createLayer, definePortal, isElement, layout };
@@ -1,4 +1,4 @@
1
- import { X as scheduleEventHandler } from "../index-CTIBOqUB.js";
1
+ import { Z as scheduleEventHandler } from "../index-DSqXWc77.js";
2
2
  //#region src/fx/timing.d.ts
3
3
  /**
4
4
  * Timing utilities — pure helpers for common async patterns
@@ -179,6 +179,32 @@ interface QueryDefinition<TInput, TResult extends {}> {
179
179
  key: string;
180
180
  }) => Promise<boolean> | boolean;
181
181
  }
182
+ /** Stable identity for one member of a {@link QueryCollection}. */
183
+ type QueryCollectionKey = string | number | symbol;
184
+ /** One keyed input and its underlying cache-backed query reader. */
185
+ interface QueryCollectionEntry<TInput, TResult extends {}, TKey extends QueryCollectionKey = string> {
186
+ readonly key: TKey;
187
+ readonly input: TInput;
188
+ readonly query: Query<TResult>;
189
+ }
190
+ /** Options for {@link createQueryCollection}. */
191
+ interface QueryCollectionOptions<TInput, TResult extends {}, TKey extends QueryCollectionKey = string> {
192
+ readonly query: QueryDefinition<TInput, TResult>;
193
+ readonly inputs: () => readonly TInput[];
194
+ readonly key: (input: TInput) => TKey;
195
+ readonly concurrency?: number;
196
+ readonly runtime?: DataRuntime;
197
+ }
198
+ /** Aggregate reactive state for a lifecycle-owned dynamic query collection. */
199
+ interface QueryCollection<TInput, TResult extends {}, TKey extends QueryCollectionKey = string> {
200
+ readonly entries: readonly QueryCollectionEntry<TInput, TResult, TKey>[];
201
+ readonly loading: boolean;
202
+ readonly settled: boolean;
203
+ readonly results: ReadonlyMap<TKey, TResult>;
204
+ readonly errors: ReadonlyMap<TKey, {}>;
205
+ get(key: TKey): QueryCollectionEntry<TInput, TResult, TKey> | undefined;
206
+ retry(key: TKey): Promise<void>;
207
+ }
182
208
  /** Context passed to server prefetch callbacks, exposing a scoped `prefetch` helper. */
183
209
  interface QueryPrefetchContext {
184
210
  readonly runtime: DataRuntime;
@@ -757,6 +783,7 @@ interface ReadableSource<T = unknown> {
757
783
  (): T;
758
784
  _hasBeenRead?: boolean;
759
785
  _hasEverBeenRead?: boolean;
786
+ _unusedStateDiagnosticEligible?: boolean;
760
787
  _readers?: Map<ComponentInstance, {
761
788
  token: number;
762
789
  generation: object;
@@ -1290,6 +1317,13 @@ declare function queryScope(namespace: string): QueryScope;
1290
1317
  */
1291
1318
  declare function invalidateOnInterval(prefix: string, options: InvalidateOnIntervalOptions): void;
1292
1319
  //#endregion
1320
+ //#region src/data/query-collection.d.ts
1321
+ /**
1322
+ * Create one lifecycle-owned collection of dynamically keyed readers for a
1323
+ * reusable query definition, with bounded collection-started fetches.
1324
+ */
1325
+ declare function createQueryCollection<TInput, TResult extends {}, TKey extends QueryCollectionKey = string>(options: QueryCollectionOptions<TInput, TResult, TKey>): QueryCollection<TInput, TResult, TKey>;
1326
+ //#endregion
1293
1327
  //#region src/data/query-registry.d.ts
1294
1328
  /** Lookup table of server handlers keyed by their {@link QueryDefinition}, built by {@link defineServerQueries}. */
1295
1329
  interface ServerQueryRegistry {
@@ -1365,4 +1399,4 @@ declare function action<TInput extends Record<string, unknown>, TResult = unknow
1365
1399
  submit(input: TInput): Promise<TResult>;
1366
1400
  };
1367
1401
  //#endregion
1368
- export { AccessDecision as $, Scope as $t, Case as A, RouteRegistry as At, RenderDiagnosticsOptions as B, DataRuntimeOptions as Bt, Ref as C, RouteParams as Ct, registerSSRStyle as D, RouteRecord as Dt, SSRPortalState as E, RouteQuery as Et, ShowProps as F, RouteSearch as Ft, AskrRuntimeOptions as G, Query as Gt, Derived as H, InvalidateOptions as Ht, For as I, RouteSearchValue as It, createRuntime as J, QueryKeyPart as Jt, RuntimeKeyedReorderDecision as K, QueryConsistency as Kt, ForProps as L, RouteSnapshot as Lt, Match as M, RouteRenderResult as Mt, MatchProps as N, RouteRequestOptions as Nt, CspNonceScope as O, RouteRef as Ot, Show as P, RouteRequestResult as Pt, AccessAllowDecision as Q, ServerQueryHandler as Qt, Selector as R, CoreTelemetry as Rt, createMutation as S, RouteOptions as St, DeferredBoundaryRegistration as T, RoutePolicy as Tt, derive as U, Mutation as Ut, configureRenderDiagnostics as V, InvalidateOnIntervalOptions as Vt, AskrRuntime as W, MutationOptions as Wt, scheduleEventHandler as X, QueryScope as Xt, getDefaultRuntime as Y, QueryPrefetchContext as Yt, getSignal as Z, QueryStaleReason as Zt, invalidateOnInterval as _, RouteManifest as _t, action as a, DocumentRenderArgs as an, LayoutScopeRecord as at, getDefaultDataRuntime as b, RouteMetaSource as bt, ServerQueryRegistry as c, SSRData as cn, ParsedSegment as ct, defineServerQueries as d, State as dn, RouteAuthResolver as dt, defineScope as en, AccessDenyDecision as et, dehydrateDataRuntime as f, StateSetter as fn, RouteComponent as ft, invalidate as g, RouteHandler as gt, serveQuery as h, RouteDestination as ht, ActionValidationError as i, VNode as in, GroupHelperOptions as it, CaseProps as j, RouteRegistryOptions as jt, cspNonce as k, RouteRefSearch as kt, createQueryPrefetchContext as l, SSRStyleRegistration as ln, Route as lt, prefetchQuery as m, state as mn, RouteDefinition as mt, ActionForm as n, ComponentFunction as nn, AccessRedirectDecision as nt, defineAction as o, DocumentRenderContext as on, PageHelperOptions as ot, hydrateDataRuntime as p, StateTuple as pn, RouteContext as pt, RuntimeRendererHost as q, QueryDefinition as qt, ActionStatus as r, RenderableChild as rn, AccessRedirectStatus as rt, ServerQueryEntry as s, DocumentRenderer as sn, PageScopeRecord as st, ActionDescriptor as t, readScope as tn, AccessDenyStatus as tt, defineQuery as u, SSRStyleRegistrationValidation as un, RouteAuthOptions as ut, queryScope as v, RouteMatch as vt, createRef as w, RoutePathParams as wt, createQuery as x, RouteMode as xt, createDataRuntime as y, RouteMeta as yt, selector as z, DataRuntime as zt };
1402
+ export { AccessAllowDecision as $, QueryKeyPart as $t, cspNonce as A, RouteRefSearch as At, selector as B, DataRuntime as Bt, createMutation as C, RouteOptions as Ct, SSRPortalState as D, RouteQuery as Dt, DeferredBoundaryRegistration as E, RoutePolicy as Et, Show as F, RouteRequestResult as Ft, AskrRuntime as G, MutationOptions as Gt, configureRenderDiagnostics as H, InvalidateOnIntervalOptions as Ht, ShowProps as I, RouteSearch as It, RuntimeRendererHost as J, QueryCollectionEntry as Jt, AskrRuntimeOptions as K, Query as Kt, For as L, RouteSearchValue as Lt, CaseProps as M, RouteRegistryOptions as Mt, Match as N, RouteRenderResult as Nt, registerSSRStyle as O, RouteRecord as Ot, MatchProps as P, RouteRequestOptions as Pt, getSignal as Q, QueryDefinition as Qt, ForProps as R, RouteSnapshot as Rt, createQuery as S, RouteMode as St, createRef as T, RoutePathParams as Tt, Derived as U, InvalidateOptions as Ut, RenderDiagnosticsOptions as V, DataRuntimeOptions as Vt, derive as W, Mutation as Wt, getDefaultRuntime as X, QueryCollectionOptions as Xt, createRuntime as Y, QueryCollectionKey as Yt, scheduleEventHandler as Z, QueryConsistency as Zt, invalidate as _, StateSetter as _n, RouteHandler as _t, action as a, defineScope as an, GroupHelperOptions as at, createDataRuntime as b, RouteMeta as bt, ServerQueryRegistry as c, RenderableChild as cn, PageScopeRecord as ct, defineServerQueries as d, DocumentRenderContext as dn, RouteAuthOptions as dt, QueryPrefetchContext as en, AccessDecision as et, dehydrateDataRuntime as f, DocumentRenderer as fn, RouteAuthResolver as ft, createQueryCollection as g, State as gn, RouteDestination as gt, serveQuery as h, SSRStyleRegistrationValidation as hn, RouteDefinition as ht, ActionValidationError as i, Scope as in, AccessRedirectStatus as it, Case as j, RouteRegistry as jt, CspNonceScope as k, RouteRef as kt, createQueryPrefetchContext as l, VNode as ln, ParsedSegment as lt, prefetchQuery as m, SSRStyleRegistration as mn, RouteContext as mt, ActionForm as n, QueryStaleReason as nn, AccessDenyStatus as nt, defineAction as o, readScope as on, LayoutScopeRecord as ot, hydrateDataRuntime as p, SSRData as pn, RouteComponent as pt, RuntimeKeyedReorderDecision as q, QueryCollection as qt, ActionStatus as r, ServerQueryHandler as rn, AccessRedirectDecision as rt, ServerQueryEntry as s, ComponentFunction as sn, PageHelperOptions as st, ActionDescriptor as t, QueryScope as tn, AccessDenyDecision as tt, defineQuery as u, DocumentRenderArgs as un, Route as ut, invalidateOnInterval as v, StateTuple as vn, RouteManifest as vt, Ref as w, RouteParams as wt, getDefaultDataRuntime as x, RouteMetaSource as xt, queryScope as y, state as yn, RouteMatch as yt, Selector as z, CoreTelemetry as zt };
@@ -1,4 +1,4 @@
1
- import { rn as RenderableChild } from "./index-CTIBOqUB.js";
1
+ import { cn as RenderableChild } from "./index-DSqXWc77.js";
2
2
  import { r as JSXElement } from "./types-DkVJhVs9.js";
3
3
  //#region src/foundations/structures/layout.d.ts
4
4
  /**
package/dist/index.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { $t as Scope, A as Case, B as RenderDiagnosticsOptions, C as Ref, D as registerSSRStyle, F as ShowProps, G as AskrRuntimeOptions, H as Derived, I as For, J as createRuntime, K as RuntimeKeyedReorderDecision, L as ForProps, M as Match, N as MatchProps, O as CspNonceScope, P as Show, Qt as ServerQueryHandler, R as Selector, U as derive, V as configureRenderDiagnostics, W as AskrRuntime, Y as getDefaultRuntime, Yt as QueryPrefetchContext, Z as getSignal, d as defineServerQueries, dn as State, en as defineScope, f as dehydrateDataRuntime, fn as StateSetter, h as serveQuery, j as CaseProps, k as cspNonce, m as prefetchQuery, mn as state, p as hydrateDataRuntime, pn as StateTuple, q as RuntimeRendererHost, qt as QueryDefinition, tn as readScope, u as defineQuery, w as createRef, x as createQuery, z as selector, zt as DataRuntime } from "./index-CTIBOqUB.js";
1
+ import { A as cspNonce, B as selector, Bt as DataRuntime, F as Show, G as AskrRuntime, H as configureRenderDiagnostics, I as ShowProps, J as RuntimeRendererHost, Jt as QueryCollectionEntry, K as AskrRuntimeOptions, L as For, M as CaseProps, N as Match, O as registerSSRStyle, P as MatchProps, Q as getSignal, Qt as QueryDefinition, R as ForProps, S as createQuery, T as createRef, U as Derived, V as RenderDiagnosticsOptions, W as derive, X as getDefaultRuntime, Xt as QueryCollectionOptions, Y as createRuntime, Yt as QueryCollectionKey, _n as StateSetter, an as defineScope, d as defineServerQueries, en as QueryPrefetchContext, f as dehydrateDataRuntime, g as createQueryCollection, gn as State, h as serveQuery, in as Scope, j as Case, k as CspNonceScope, m as prefetchQuery, on as readScope, p as hydrateDataRuntime, q as RuntimeKeyedReorderDecision, qt as QueryCollection, rn as ServerQueryHandler, u as defineQuery, vn as StateTuple, w as Ref, yn as state, z as Selector } from "./index-DSqXWc77.js";
2
2
  import { s as Props, t as Fragment } from "./types-DkVJhVs9.js";
3
3
  import { i as jsxs, n as jsx } from "./jsx-runtime-Cdd6Gkb0.js";
4
- export { AskrRuntime, type AskrRuntimeOptions, Case, type CaseProps, CspNonceScope, type DataRuntime, type Derived, For, type ForProps, Fragment, Match, type MatchProps, type Props, 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, createRef, createRuntime, cspNonce, defineQuery, defineScope, defineServerQueries, dehydrateDataRuntime, derive, getDefaultRuntime, getSignal, hydrateDataRuntime, jsx, jsxs, prefetchQuery, readScope, registerSSRStyle, selector, serveQuery, state };
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 };
package/dist/index.js CHANGED
@@ -1,17 +1,17 @@
1
1
  import { a as getRuntimeFlushVersion, f as AskrRuntime, h as getDefaultRuntime, m as createRuntime, t as enqueueRuntimeLane } from "./access-d_DCdwqn.js";
2
2
  import { g as getSignal, i as claimHookIndex, p as getCurrentInstance } from "./component-scope-4I3yEMkb.js";
3
3
  import { n as Fragment } from "./jsx-DRS-qjiN.js";
4
- import { d as configureRenderDiagnostics, p as defineScope, y as readScope } from "./component-internal-D0yE2Ch3.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-BsdGWsDE.js";
4
+ import { d as configureRenderDiagnostics, p as defineScope, y as readScope } from "./component-internal-xW_OnTmC.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-D-JIKCg2.js";
6
6
  import { n as isSnapshotSource } from "./snapshot-source-BB42xgwb.js";
7
7
  import { c as registerSSRStyle } from "./render-context-B7ohlh6t.js";
8
- import { t as state } from "./state-DmkGM_LN.js";
9
- import { t as selector } from "./selector-CyK-sDwB.js";
10
- import { t as installRendererBridge } from "./renderer-Cg92QKOm.js";
11
- import { n as cspNonce, t as CspNonceScope } from "./csp-nonce-BVybpV1v.js";
12
- import { i as For, n as Match, r as Show, t as Case } from "./control-C0klPV7Q.js";
8
+ import { t as state } from "./state-Ks-sWTQi.js";
9
+ import { t as selector } from "./selector-NQiYHwZC.js";
10
+ import { t as installRendererBridge } from "./renderer-RjZ8LHbt.js";
11
+ import { n as cspNonce, t as CspNonceScope } from "./csp-nonce-CCnMtOW-.js";
12
+ import { i as For, n as Match, r as Show, t as Case } from "./control-BLVTE1gO.js";
13
13
  import { jsx, jsxs } from "./jsx-runtime.js";
14
- import { t as createQuery } from "./data-CnQwUS76.js";
14
+ import { n as createQuery, t as createQueryCollection } from "./data-BjUf0PPS.js";
15
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
16
  //#region src/runtime/derive.ts
17
17
  const deriveCells = /* @__PURE__ */ new WeakMap();
@@ -182,4 +182,4 @@ function createRef() {
182
182
  */
183
183
  installRendererBridge();
184
184
  //#endregion
185
- export { AskrRuntime, Case, CspNonceScope, For, Fragment, Match, Show, configureRenderDiagnostics, createQuery, createRef, createRuntime, cspNonce, defineQuery, defineScope, defineServerQueries, dehydrateDataRuntime, derive, getDefaultRuntime, getSignal, hydrateDataRuntime, jsx, jsxs, prefetchQuery, readScope, registerSSRStyle, selector, serveQuery, state };
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 };
@@ -1,5 +1,5 @@
1
1
  import { y as logger } from "./access-d_DCdwqn.js";
2
- import { a as finalizeReadableSubscriptionsFromSnapshot } from "./readable-BsdGWsDE.js";
2
+ import { a as finalizeReadableSubscriptionsFromSnapshot } from "./readable-D-JIKCg2.js";
3
3
  //#region src/common/promise.ts
4
4
  function isPromiseLike(value) {
5
5
  return value !== null && (typeof value === "object" || typeof value === "function") && typeof value.then === "function";
@@ -1,5 +1,5 @@
1
1
  import { f as getCurrentComponentInstance, i as claimHookIndex } from "./component-scope-4I3yEMkb.js";
2
- import { a as registerCommitOperation } from "./component-internal-D0yE2Ch3.js";
2
+ import { a as registerCommitOperation } from "./component-internal-xW_OnTmC.js";
3
3
  import { t as isRouteActivityActive } from "./route-activity-CNJfpwx-.js";
4
4
  //#region src/runtime/lifecycle-operations.ts
5
5
  function normalizePredicates(predicates) {
@@ -1,14 +1,14 @@
1
1
  import { S as isProductionEnvironment, r as flushRuntimeScheduler, x as isDevelopmentEnvironment, y as logger } from "./access-d_DCdwqn.js";
2
2
  import { n as Fragment, t as ELEMENT_TYPE } from "./jsx-DRS-qjiN.js";
3
- import { r as executeComponent } from "./component-internal-D0yE2Ch3.js";
4
- import { t as cleanupReadableSubscriptionSources } from "./readable-BsdGWsDE.js";
5
- import { n as cleanupComponentGeneration, t as cleanupComponent } from "./component-cleanup-DYG80yhG.js";
6
- import { i as drainLifecycleCommitErrors, p as isPromiseLike, r as discardLifecycleCommitBatch, s as flushLifecycleCommitBatch, t as beginLifecycleCommitBatch } from "./lifecycle-batch-BH0fax4F.js";
7
- import { _ as teardownNodeSubtree } from "./cleanup-D7uN-Z1s.js";
8
- import { t as CspNonceScope } from "./csp-nonce-BVybpV1v.js";
3
+ import { r as executeComponent } from "./component-internal-xW_OnTmC.js";
4
+ import { t as cleanupReadableSubscriptionSources } from "./readable-D-JIKCg2.js";
5
+ import { n as cleanupComponentGeneration, t as cleanupComponent } from "./component-cleanup-DPe8claJ.js";
6
+ import { i as drainLifecycleCommitErrors, p as isPromiseLike, r as discardLifecycleCommitBatch, s as flushLifecycleCommitBatch, t as beginLifecycleCommitBatch } from "./lifecycle-batch-BYECQw8T.js";
7
+ import { _ as teardownNodeSubtree } from "./cleanup-DPtpXtA4.js";
8
+ import { t as CspNonceScope } from "./csp-nonce-CCnMtOW-.js";
9
9
  import { I as lockRouteRegistration, o as addRouteBasePath, r as computeRouteActivityMatches, y as getActiveRouteBasePath } from "./route-matching-Bo6UqG-5.js";
10
- import { a as resolveRouteRequest, i as hasRouteRenderData, n as getRouteRenderContext, r as getRouteRenderData, u as withoutRouteHydrationMetadata } from "./resolution-ZsIFeQoB.js";
11
- import { a as clearStagedAppRenderRouteLocation, i as syncCurrentRouteSnapshot, o as createAppRenderRuntime, s as stageAppRenderRouteLocation } from "./activity-d4t3CdzK.js";
10
+ import { a as resolveRouteRequest, i as hasRouteRenderData, n as getRouteRenderContext, r as getRouteRenderData, u as withoutRouteHydrationMetadata } from "./resolution-dVYwYXrI.js";
11
+ import { a as clearStagedAppRenderRouteLocation, i as syncCurrentRouteSnapshot, o as createAppRenderRuntime, s as stageAppRenderRouteLocation } from "./activity-B2Yy7Wz9.js";
12
12
  import { r as getDefaultPortalHost, t as clearRegisteredDefaultPortalForInstance } from "./default-portal-runtime-DvMvWJVp.js";
13
13
  //#region src/router/navigation-registry.ts
14
14
  let currentInstance = null;
@@ -1,4 +1,4 @@
1
- import "./index-CTIBOqUB.js";
1
+ import "./index-DSqXWc77.js";
2
2
  //#region src/router/navigation-scroll.d.ts
3
3
  /** Scroll behavior for programmatic navigations (`navigate()`). */
4
4
  type NavigationScrollBehavior = 'top' | 'preserve';
@@ -6,6 +6,7 @@ function markReadableUsage(source) {
6
6
  if (source && typeof source === "function" && ("_hasBeenRead" in source || "_readers" in source)) {
7
7
  const readable = source;
8
8
  readable._hasBeenRead = true;
9
+ if (readable._unusedStateDiagnosticEligible === true) readable._hasEverBeenRead = true;
9
10
  }
10
11
  }
11
12
  let currentDerivedSubscriber = null;
@@ -25,6 +26,7 @@ function scheduleReadableInstanceUpdate(instance) {
25
26
  });
26
27
  }
27
28
  function recordReadableRead(source) {
29
+ if (source._unusedStateDiagnosticEligible === true) source._hasEverBeenRead = true;
28
30
  if (currentFineGrainedReadCollector) {
29
31
  const first = currentFineGrainedReadCollector._pendingFineGrainedReadSource;
30
32
  if (!first) currentFineGrainedReadCollector._pendingFineGrainedReadSource = source;
@@ -1,17 +1,17 @@
1
1
  import { n as hasTransparentComponentResult, t as __CONTROL_BOUNDARY__ } from "./control-C-ApnFs1.js";
2
2
  import { n as _isDOMElement, t as __ERROR_BOUNDARY__ } from "./vnode-D24p6IW2.js";
3
3
  import { b as getRuntimeEnv, i as getDefaultRuntimeInstance, l as runRuntimeHandlerScope, n as enqueueRuntimeTask, p as configureRuntimeRenderer, x as isDevelopmentEnvironment, y as logger } from "./access-d_DCdwqn.js";
4
- import { n as isBulkCommitActive, r as markFastPathApplied } from "./fastlane-DGo7SxBQ.js";
4
+ import { n as isBulkCommitActive, r as markFastPathApplied } from "./fastlane-DUxiFV9S.js";
5
5
  import { T as withAppRenderRuntime, b as restoreDomCommitScope, c as enterDomCommitScope, d as getCurrentAppRenderRuntime, p as getCurrentInstance } from "./component-scope-4I3yEMkb.js";
6
6
  import { i as isFragmentType, r as STATIC_CHILDREN } from "./jsx-DRS-qjiN.js";
7
- import { S as withContext, c as createBoundaryReset, g as getVNodeContextFrame, i as mountInstanceInline, l as reportBoundaryError, m as getCurrentContextFrame, n as createComponentInstance, o as renderComponentInline, t as captureInlineRenderSnapshot, v as markVNodeTreeWithContextFrame } from "./component-internal-D0yE2Ch3.js";
8
- import { t as cleanupComponent } from "./component-cleanup-DYG80yhG.js";
9
- import { c as getCurrentLifecycleCommitBatch, l as registerLifecycleRollback, p as isPromiseLike, r as discardLifecycleCommitBatch, s as flushLifecycleCommitBatch, t as beginLifecycleCommitBatch, u as registerLifecycleTransaction } from "./lifecycle-batch-BH0fax4F.js";
10
- import { _ as setControlBoundaryContextFrame, a as registerForStateTransaction, b as rerenderChildScope, c as captureForFallbackTransactionSnapshot, d as clearCaseDomUpdateState, f as clearShowDomUpdateState, g as evaluateShowState, h as evaluateCaseState, i as evaluateForState, l as captureForItemTransactionSnapshot, n as clearForDomUpdateState, o as rollbackForStateTransaction, t as beginForStateTransaction, v as createChildScope, y as disposeChildScope } from "./for-internal-DkBwTG4S.js";
11
- import { n as createOwnedFineGrainedEffect, r as markFineGrainedEffectsDirtySource, t as createFineGrainedEffect } from "./effect-BdvdgMvV.js";
12
- import { C as getDelegatedHandlersForElement, D as updateDelegatedListener, E as removeDelegatedListener, S as getDelegatedHandlerForElement, T as isEventDelegationEnabled, _ as teardownNodeSubtree, a as elementReactivePropsCleanup, b as addFreshDelegatedListener, c as forEachElementReactivePropCleanup, d as removeAllListeners, f as removeElementReactiveProps, g as setFreshElementReactivePropCleanup, h as setDirectElementReactivePropCleanup, i as elementListeners, l as getElementReactivePropCleanupSize, m as replaceElementRefBookkeeping, n as cleanupInstanceIfPresent, o as elementRefs, p as removeElementRef, r as cleanupInstancesUnder, s as forEachDescendantNode, t as REACTIVE_CHILDREN_KEY, u as getElementReactivePropsCleanupMap, v as updateElementRef, w as isDelegatedEvent, x as clearDelegatedHandlersForElement, y as addDelegatedListener } from "./cleanup-D7uN-Z1s.js";
7
+ import { S as withContext, c as createBoundaryReset, g as getVNodeContextFrame, i as mountInstanceInline, l as reportBoundaryError, m as getCurrentContextFrame, n as createComponentInstance, o as renderComponentInline, t as captureInlineRenderSnapshot, v as markVNodeTreeWithContextFrame } from "./component-internal-xW_OnTmC.js";
8
+ import { t as cleanupComponent } from "./component-cleanup-DPe8claJ.js";
9
+ import { c as getCurrentLifecycleCommitBatch, l as registerLifecycleRollback, p as isPromiseLike, r as discardLifecycleCommitBatch, s as flushLifecycleCommitBatch, t as beginLifecycleCommitBatch, u as registerLifecycleTransaction } from "./lifecycle-batch-BYECQw8T.js";
10
+ import { _ as setControlBoundaryContextFrame, a as registerForStateTransaction, b as rerenderChildScope, c as captureForFallbackTransactionSnapshot, d as clearCaseDomUpdateState, f as clearShowDomUpdateState, g as evaluateShowState, h as evaluateCaseState, i as evaluateForState, l as captureForItemTransactionSnapshot, n as clearForDomUpdateState, o as rollbackForStateTransaction, t as beginForStateTransaction, v as createChildScope, y as disposeChildScope } from "./for-internal-DKcYl3nl.js";
11
+ import { n as createOwnedFineGrainedEffect, r as markFineGrainedEffectsDirtySource, t as createFineGrainedEffect } from "./effect-BQP5o0Kx.js";
12
+ import { C as getDelegatedHandlersForElement, D as updateDelegatedListener, E as removeDelegatedListener, S as getDelegatedHandlerForElement, T as isEventDelegationEnabled, _ as teardownNodeSubtree, a as elementReactivePropsCleanup, b as addFreshDelegatedListener, c as forEachElementReactivePropCleanup, d as removeAllListeners, f as removeElementReactiveProps, g as setFreshElementReactivePropCleanup, h as setDirectElementReactivePropCleanup, i as elementListeners, l as getElementReactivePropCleanupSize, m as replaceElementRefBookkeeping, n as cleanupInstanceIfPresent, o as elementRefs, p as removeElementRef, r as cleanupInstancesUnder, s as forEachDescendantNode, t as REACTIVE_CHILDREN_KEY, u as getElementReactivePropsCleanupMap, v as updateElementRef, w as isDelegatedEvent, x as clearDelegatedHandlersForElement, y as addDelegatedListener } from "./cleanup-DPtpXtA4.js";
13
13
  import { n as getPublicAttributeName, t as sanitizeCssValue } from "./css-BuPaTOfe.js";
14
- import { i as ROUTE_ROOT_COMPONENT, o as isUnsafeUrlAttribute } from "./csp-nonce-BVybpV1v.js";
14
+ import { i as ROUTE_ROOT_COMPONENT, o as isUnsafeUrlAttribute } from "./csp-nonce-CCnMtOW-.js";
15
15
  import { a as isSSRPortalHydrationAnchor } from "./portal-w3oQ6oQU.js";
16
16
  //#region src/renderer/utils.ts
17
17
  /**
@@ -1,8 +1,8 @@
1
1
  import { n as Fragment, t as ELEMENT_TYPE } from "./jsx-DRS-qjiN.js";
2
- import { p as defineScope, y as readScope } from "./component-internal-D0yE2Ch3.js";
3
- import { p as isPromiseLike } from "./lifecycle-batch-BH0fax4F.js";
2
+ import { p as defineScope, y as readScope } from "./component-internal-xW_OnTmC.js";
3
+ import { p as isPromiseLike } from "./lifecycle-batch-BYECQw8T.js";
4
4
  import { S as withPageFramework, b as replacePageRoute, n as getActiveRenderContext } from "./render-context-B7ohlh6t.js";
5
- import { i as ROUTE_ROOT_COMPONENT } from "./csp-nonce-BVybpV1v.js";
5
+ import { i as ROUTE_ROOT_COMPONENT } from "./csp-nonce-CCnMtOW-.js";
6
6
  import { c as withTelemetry, t as createQueryPrefetchContext } from "./query-registry-Bua3cDyb.js";
7
7
  import { c as removeRouteBasePath, i as getMatchingRouteRecord, l as buildRouteContext, o as addRouteBasePath, s as normalizeRouteBasePath, u as buildRouteContextBase, v as getActiveRouteAuthOptions } from "./route-matching-Bo6UqG-5.js";
8
8
  //#region src/router/route-data-loader.ts
@@ -1,10 +1,10 @@
1
1
  import { t as enqueueRuntimeLane, y as logger } from "./access-d_DCdwqn.js";
2
2
  import { f as getCurrentComponentInstance } from "./component-scope-4I3yEMkb.js";
3
- import { m as getCurrentContextFrame, u as registerCommitOperationForInstance, x as withAsyncResourceContext } from "./component-internal-D0yE2Ch3.js";
4
- import { p as isPromiseLike } from "./lifecycle-batch-BH0fax4F.js";
3
+ import { m as getCurrentContextFrame, u as registerCommitOperationForInstance, x as withAsyncResourceContext } from "./component-internal-xW_OnTmC.js";
4
+ import { p as isPromiseLike } from "./lifecycle-batch-BYECQw8T.js";
5
5
  import { t as brandSnapshotSource } from "./snapshot-source-BB42xgwb.js";
6
6
  import { C as SSRDataMissingError, a as getResourceVerificationSnapshot, i as getNextRenderKey, n as getActiveRenderContext, o as isHydrationVerificationRender, p as throwSSRDataMissing, r as getCurrentRenderData, s as recordResourceVerificationSnapshot } from "./render-context-B7ohlh6t.js";
7
- import { t as state } from "./state-DmkGM_LN.js";
7
+ import { t as state } from "./state-Ks-sWTQi.js";
8
8
  //#region src/runtime/resource-cell.ts
9
9
  /**
10
10
  * Pure, component-agnostic ResourceCell state machine.
@@ -1,5 +1,5 @@
1
- import { Z as getSignal } from "../index-CTIBOqUB.js";
2
- import { i as onRouteChange, n as RouteChangeOptions, t as RouteChangeCleanup } from "../activity-D_5x2HXQ.js";
1
+ import { Q as getSignal } from "../index-DSqXWc77.js";
2
+ import { i as onRouteChange, n as RouteChangeOptions, t as RouteChangeCleanup } from "../activity-CAJ5eho-.js";
3
3
  //#region src/runtime/resource-operation.d.ts
4
4
  /** Reactive result of a {@link resource}: current value, loading state, and controls. */
5
5
  interface ResourceResult<T> {
@@ -1,9 +1,9 @@
1
1
  import { t as enqueueRuntimeLane } from "../access-d_DCdwqn.js";
2
2
  import { f as getCurrentComponentInstance, g as getSignal, i as claimHookIndex } from "../component-scope-4I3yEMkb.js";
3
- import { a as registerCommitOperation } from "../component-internal-D0yE2Ch3.js";
4
- import { t as resource } from "../resource-operation-B62UQKHV.js";
5
- import { a as task, i as routeActive, n as documentVisible, o as timer, r as on, s as windowFocused, t as capture } from "../lifecycle-operations-CBzG5PyB.js";
6
- import { n as onRouteChange } from "../activity-d4t3CdzK.js";
3
+ import { a as registerCommitOperation } from "../component-internal-xW_OnTmC.js";
4
+ import { t as resource } from "../resource-operation-4qFIM02d.js";
5
+ import { a as task, i as routeActive, n as documentVisible, o as timer, r as on, s as windowFocused, t as capture } from "../lifecycle-operations-DJk_5MrD.js";
6
+ import { n as onRouteChange } from "../activity-B2Yy7Wz9.js";
7
7
  //#region src/runtime/stream-operation.ts
8
8
  function toError(value) {
9
9
  return value instanceof Error ? value : new Error(String(value));
@@ -1,7 +1,7 @@
1
- import { $ as AccessDecision, At as RouteRegistry, Ct as RouteParams, Dt as RouteRecord, Et as RouteQuery, Ft as RouteSearch, It as RouteSearchValue, Lt as RouteSnapshot, Mt as RouteRenderResult, Nt as RouteRequestOptions, Ot as RouteRef, Pt as RouteRequestResult, Q as AccessAllowDecision, St as RouteOptions, Tt as RoutePolicy, _t as RouteManifest, at as LayoutScopeRecord, bt as RouteMetaSource, ct as ParsedSegment, dt as RouteAuthResolver, et as AccessDenyDecision, ft as RouteComponent, gt as RouteHandler, ht as RouteDestination, it as GroupHelperOptions, jt as RouteRegistryOptions, kt as RouteRefSearch, lt as Route, mt as RouteDefinition, nt as AccessRedirectDecision, ot as PageHelperOptions, pt as RouteContext, rn as RenderableChild, rt as AccessRedirectStatus, st as PageScopeRecord, tt as AccessDenyStatus, ut as RouteAuthOptions, vt as RouteMatch, wt as RoutePathParams, xt as RouteMode, yt as RouteMeta } from "../index-CTIBOqUB.js";
1
+ import { $ as AccessAllowDecision, At as RouteRefSearch, Ct as RouteOptions, Dt as RouteQuery, Et as RoutePolicy, Ft as RouteRequestResult, It as RouteSearch, Lt as RouteSearchValue, Mt as RouteRegistryOptions, Nt as RouteRenderResult, Ot as RouteRecord, Pt as RouteRequestOptions, Rt as RouteSnapshot, St as RouteMode, Tt as RoutePathParams, _t as RouteHandler, at as GroupHelperOptions, bt as RouteMeta, cn as RenderableChild, ct as PageScopeRecord, dt as RouteAuthOptions, et as AccessDecision, ft as RouteAuthResolver, gt as RouteDestination, ht as RouteDefinition, it as AccessRedirectStatus, jt as RouteRegistry, kt as RouteRef, lt as ParsedSegment, mt as RouteContext, nt as AccessDenyStatus, ot as LayoutScopeRecord, pt as RouteComponent, rt as AccessRedirectDecision, st as PageHelperOptions, tt as AccessDenyDecision, ut as Route, vt as RouteManifest, wt as RouteParams, xt as RouteMetaSource, yt as RouteMatch } from "../index-DSqXWc77.js";
2
2
  import { r as JSXElement, s as Props } from "../types-DkVJhVs9.js";
3
- import { a as ScrollRestorationOptions, i as NavigationScrollBehavior, n as NavigateOptions, r as HistoryScrollBehavior, t as navigate } from "../navigate-eGm4omPj.js";
4
- import { i as onRouteChange, n as RouteChangeOptions, r as currentRoute, t as RouteChangeCleanup } from "../activity-D_5x2HXQ.js";
3
+ import { a as ScrollRestorationOptions, i as NavigationScrollBehavior, n as NavigateOptions, r as HistoryScrollBehavior, t as navigate } from "../navigate-wel1e6cU.js";
4
+ import { i as onRouteChange, n as RouteChangeOptions, r as currentRoute, t as RouteChangeCleanup } from "../activity-CAJ5eho-.js";
5
5
  import { AuthContext, AuthContext as AuthContext$1, AuthRequirement, AuthRequirement as AuthRequirement$1 } from "@askrjs/auth";
6
6
  import { ObjectSchema } from "@askrjs/schema";
7
7
  //#region src/router/route-query.d.ts
@@ -1,11 +1,11 @@
1
1
  import { n as createRouteRegistry } from "../manifest-D6rfj_jC.js";
2
- import { a as isSafeHref } from "../csp-nonce-BVybpV1v.js";
2
+ import { a as isSafeHref } from "../csp-nonce-CCnMtOW-.js";
3
3
  import { jsx } from "../jsx-runtime.js";
4
4
  import { o as addRouteBasePath, y as getActiveRouteBasePath } from "../route-matching-Bo6UqG-5.js";
5
- import { a as group, c as route, i as fallback, n as resolveDeferredValues, o as index, r as routeData, s as page, t as Resolve } from "../deferred-BVkZ5T2P.js";
6
- import { S as RouteDataLoadError, a as resolveRouteRequest, b as lazy, f as defer, g as Outlet, h as currentAuth, p as isDeferred, x as lazyRouteData } from "../resolution-ZsIFeQoB.js";
7
- import { n as onRouteChange, t as currentRoute } from "../activity-d4t3CdzK.js";
8
- import { a as serializeRouteMeta, c as getCurrentHref, d as parseTargetUrl, h as syncRegisteredRouteSnapshot, i as resolveRouteMeta, l as getRegisteredAppsSnapshot, m as syncAppRegistrationLocation, n as navigate, p as setCurrentRouteLocation, r as reconcileRouteMeta, s as saveScrollPosition, u as getWindowHref } from "../navigate-Cix_Q9ym.js";
5
+ import { a as group, c as route, i as fallback, n as resolveDeferredValues, o as index, r as routeData, s as page, t as Resolve } from "../deferred-BRw0gbn5.js";
6
+ import { S as RouteDataLoadError, a as resolveRouteRequest, b as lazy, f as defer, g as Outlet, h as currentAuth, p as isDeferred, x as lazyRouteData } from "../resolution-dVYwYXrI.js";
7
+ import { n as onRouteChange, t as currentRoute } from "../activity-B2Yy7Wz9.js";
8
+ import { a as serializeRouteMeta, c as getCurrentHref, d as parseTargetUrl, h as syncRegisteredRouteSnapshot, i as resolveRouteMeta, l as getRegisteredAppsSnapshot, m as syncAppRegistrationLocation, n as navigate, p as setCurrentRouteLocation, r as reconcileRouteMeta, s as saveScrollPosition, u as getWindowHref } from "../navigate-DvJvo--6.js";
9
9
  import { o as mergeProps } from "../compose-ref-1Fhs7mbF.js";
10
10
  import { t as applyInteractionPolicy } from "../interactions-B-7vkBgx.js";
11
11
  //#region src/router/route-query.ts
@@ -1,6 +1,6 @@
1
1
  import { t as enqueueRuntimeLane } from "./access-d_DCdwqn.js";
2
2
  import { i as claimHookIndex, p as getCurrentInstance } from "./component-scope-4I3yEMkb.js";
3
- import { c as markReadableUsage, f as syncDerivedDependencySubscriptions, l as notifyReadableReaders, o as markReactivePropsDirtySource, p as withDerivedReadTracking, r as clearDerivedDependencySubscriptions, s as markReadableDerivedSubscribersDirty, u as recordReadableRead } from "./readable-BsdGWsDE.js";
3
+ import { c as markReadableUsage, f as syncDerivedDependencySubscriptions, l as notifyReadableReaders, o as markReactivePropsDirtySource, p as withDerivedReadTracking, r as clearDerivedDependencySubscriptions, s as markReadableDerivedSubscribersDirty, u as recordReadableRead } from "./readable-D-JIKCg2.js";
4
4
  //#region src/runtime/selector-store.ts
5
5
  const dirtySelectorRecords = /* @__PURE__ */ new Set();
6
6
  let hasPendingSelectorFlush = false;
@@ -1,4 +1,4 @@
1
- import { At as RouteRegistry, St as RouteOptions, Tt as RoutePolicy, an as DocumentRenderArgs, gt as RouteHandler, on as DocumentRenderContext, sn as DocumentRenderer, un as SSRStyleRegistrationValidation, wt as RoutePathParams } from "../index-CTIBOqUB.js";
1
+ import { Ct as RouteOptions, Et as RoutePolicy, Tt as RoutePathParams, _t as RouteHandler, dn as DocumentRenderContext, fn as DocumentRenderer, hn as SSRStyleRegistrationValidation, jt as RouteRegistry, un as DocumentRenderArgs } from "../index-DSqXWc77.js";
2
2
  import { AuthRequirement } from "@askrjs/auth";
3
3
  import "node:fs/promises";
4
4
  //#region src/ssg/types.d.ts
package/dist/ssg/index.js CHANGED
@@ -1,10 +1,10 @@
1
1
  import "../access-d_DCdwqn.js";
2
2
  import { n as createRouteRegistry } from "../manifest-D6rfj_jC.js";
3
3
  import { o as addRouteBasePath } from "../route-matching-Bo6UqG-5.js";
4
- import { c as route, n as resolveDeferredValues } from "../deferred-BVkZ5T2P.js";
5
- import { S as RouteDataLoadError, c as prepareRouteHydrationData, t as bindResolvedRouteData, v as getRenderHandler, y as _preloadRouteHandler } from "../resolution-ZsIFeQoB.js";
4
+ import { c as route, n as resolveDeferredValues } from "../deferred-BRw0gbn5.js";
5
+ import { S as RouteDataLoadError, c as prepareRouteHydrationData, t as bindResolvedRouteData, v as getRenderHandler, y as _preloadRouteHandler } from "../resolution-dVYwYXrI.js";
6
6
  import { n as renderDocument } from "../ssr-DSHd_Q9K.js";
7
- import { n as renderToString } from "../ssr-BrdV2jMy.js";
7
+ import { n as renderToString } from "../ssr-F87AcFMt.js";
8
8
  import * as fs from "node:fs/promises";
9
9
  import * as pathModule from "node:path";
10
10
  import * as os from "node:os";
@@ -1,4 +1,4 @@
1
- import { At as RouteRegistry, Dt as RouteRecord, E as SSRPortalState, Pt as RouteRequestResult, Rt as CoreTelemetry, T as DeferredBoundaryRegistration, Yt as QueryPrefetchContext, an as DocumentRenderArgs, c as ServerQueryRegistry, cn as SSRData, et as AccessDenyDecision, gt as RouteHandler, ln as SSRStyleRegistration, lt as Route, nt as AccessRedirectDecision, on as DocumentRenderContext, sn as DocumentRenderer, un as SSRStyleRegistrationValidation, ut as RouteAuthOptions, zt as DataRuntime } from "../index-CTIBOqUB.js";
1
+ import { Bt as DataRuntime, D as SSRPortalState, E as DeferredBoundaryRegistration, Ft as RouteRequestResult, Ot as RouteRecord, _t as RouteHandler, c as ServerQueryRegistry, dn as DocumentRenderContext, dt as RouteAuthOptions, en as QueryPrefetchContext, fn as DocumentRenderer, hn as SSRStyleRegistrationValidation, jt as RouteRegistry, mn as SSRStyleRegistration, pn as SSRData, rt as AccessRedirectDecision, tt as AccessDenyDecision, un as DocumentRenderArgs, ut as Route, zt as CoreTelemetry } from "../index-DSqXWc77.js";
2
2
  import { r as JSXElement, s as Props } from "../types-DkVJhVs9.js";
3
3
  import { AuthContext } from "@askrjs/auth";
4
4
  //#region src/common/page-render-envelope.d.ts
package/dist/ssr/index.js CHANGED
@@ -1,3 +1,3 @@
1
1
  import { C as SSRDataMissingError } from "../render-context-B7ohlh6t.js";
2
- import { a as renderResolvedToStringSync, c as createRenderContext, d as withRenderContextAsync, i as renderRouteRequestToString, l as getRenderContext, n as renderToString, o as renderToStringSync, r as renderRouteRequest, s as resolveRequest, t as renderToStream, u as withRenderContext } from "../ssr-BrdV2jMy.js";
2
+ import { a as renderResolvedToStringSync, c as createRenderContext, d as withRenderContextAsync, i as renderRouteRequestToString, l as getRenderContext, n as renderToString, o as renderToStringSync, r as renderRouteRequest, s as resolveRequest, t as renderToStream, u as withRenderContext } from "../ssr-F87AcFMt.js";
3
3
  export { SSRDataMissingError, createRenderContext, getRenderContext, renderResolvedToStringSync, renderRouteRequest, renderRouteRequestToString, renderToStream, renderToString, renderToStringSync, resolveRequest, withRenderContext, withRenderContextAsync };
@@ -3,18 +3,18 @@ import { t as __ERROR_BOUNDARY__ } from "./vnode-D24p6IW2.js";
3
3
  import { y as logger } from "./access-d_DCdwqn.js";
4
4
  import { f as getCurrentComponentInstance, w as setCurrentComponentInstance } from "./component-scope-4I3yEMkb.js";
5
5
  import { i as isFragmentType, n as Fragment, t as ELEMENT_TYPE } from "./jsx-DRS-qjiN.js";
6
- import { f as callWithContext, g as getVNodeContextFrame, h as getExecutionContextFrame, n as createComponentInstance, v as markVNodeTreeWithContextFrame } from "./component-internal-D0yE2Ch3.js";
7
- import { t as cleanupComponent } from "./component-cleanup-DYG80yhG.js";
8
- import { p as isPromiseLike } from "./lifecycle-batch-BH0fax4F.js";
9
- import { _ as setControlBoundaryContextFrame, g as evaluateShowState, h as evaluateCaseState, i as evaluateForState, o as rollbackForStateTransaction, r as commitForStateTransaction } from "./for-internal-DkBwTG4S.js";
6
+ import { f as callWithContext, g as getVNodeContextFrame, h as getExecutionContextFrame, n as createComponentInstance, v as markVNodeTreeWithContextFrame } from "./component-internal-xW_OnTmC.js";
7
+ import { t as cleanupComponent } from "./component-cleanup-DPe8claJ.js";
8
+ import { p as isPromiseLike } from "./lifecycle-batch-BYECQw8T.js";
9
+ import { _ as setControlBoundaryContextFrame, g as evaluateShowState, h as evaluateCaseState, i as evaluateForState, o as rollbackForStateTransaction, r as commitForStateTransaction } from "./for-internal-DKcYl3nl.js";
10
10
  import { C as SSRDataMissingError, _ as isEmptyPageRenderEnvelope, f as stopRenderPhase$1, h as createPageRenderEnvelope, t as configureRenderContextProvider, u as startRenderPhase$1, v as isPageRenderEnvelope, x as withHydrationRenderUrl } from "./render-context-B7ohlh6t.js";
11
11
  import { n as getPublicAttributeName, t as sanitizeCssValue } from "./css-BuPaTOfe.js";
12
- import { o as isUnsafeUrlAttribute, r as validateCspNonce, t as CspNonceScope } from "./csp-nonce-BVybpV1v.js";
12
+ import { o as isUnsafeUrlAttribute, r as validateCspNonce, t as CspNonceScope } from "./csp-nonce-CCnMtOW-.js";
13
13
  import { n as SSR_PORTAL_HOST, t as SSR_PORTAL_ANCHOR } from "./portal-w3oQ6oQU.js";
14
14
  import { t as createDataRuntime } from "./data-runtime-7t_Y0iv3.js";
15
15
  import { c as withTelemetry, i as dehydrateDataRuntime, t as createQueryPrefetchContext } from "./query-registry-Bua3cDyb.js";
16
16
  import { a as resolveRouteFromRoutes, c as removeRouteBasePath, s as normalizeRouteBasePath, t as _resolveRouteMatchFromRoutes } from "./route-matching-Bo6UqG-5.js";
17
- import { a as resolveRouteRequest, d as DEFERRED_BOUNDARY, l as validateRouteHydrationData, o as getRouteHydrationMetadata, p as isDeferred } from "./resolution-ZsIFeQoB.js";
17
+ import { a as resolveRouteRequest, d as DEFERRED_BOUNDARY, l as validateRouteHydrationData, o as getRouteHydrationMetadata, p as isDeferred } from "./resolution-dVYwYXrI.js";
18
18
  import { n as disposeRegisteredDefaultPortalScope, r as getDefaultPortalHost } from "./default-portal-runtime-DvMvWJVp.js";
19
19
  import { n as renderDocument, t as SSR_RENDER_DATA_ATTR } from "./ssr-DSHd_Q9K.js";
20
20
  //#region src/ssr/escape.ts
@@ -1,7 +1,7 @@
1
1
  import { S as isProductionEnvironment } from "./access-d_DCdwqn.js";
2
- import { n as isBulkCommitActive, t as deferBulkCommitReadableNotification } from "./fastlane-DGo7SxBQ.js";
2
+ import { n as isBulkCommitActive, t as deferBulkCommitReadableNotification } from "./fastlane-DUxiFV9S.js";
3
3
  import { i as claimHookIndex, p as getCurrentInstance } from "./component-scope-4I3yEMkb.js";
4
- import { l as notifyReadableReaders, o as markReactivePropsDirtySource, s as markReadableDerivedSubscribersDirty, u as recordReadableRead } from "./readable-BsdGWsDE.js";
4
+ import { l as notifyReadableReaders, o as markReactivePropsDirtySource, s as markReadableDerivedSubscribersDirty, u as recordReadableRead } from "./readable-D-JIKCg2.js";
5
5
  //#region src/runtime/state.ts
6
6
  /**
7
7
  * State primitive for Askr components
@@ -1,9 +1,9 @@
1
1
  import { o as getRuntimeRenderer } from "./access-d_DCdwqn.js";
2
2
  import { f as getCurrentComponentInstance, m as getCurrentPortalScope } from "./component-scope-4I3yEMkb.js";
3
3
  import { n as Fragment, t as ELEMENT_TYPE } from "./jsx-DRS-qjiN.js";
4
- import { l as notifyReadableReaders, o as markReactivePropsDirtySource, s as markReadableDerivedSubscribersDirty, u as recordReadableRead } from "./readable-BsdGWsDE.js";
5
- import { t as cleanupComponent } from "./component-cleanup-DYG80yhG.js";
6
- import { c as getCurrentLifecycleCommitBatch, u as registerLifecycleTransaction } from "./lifecycle-batch-BH0fax4F.js";
4
+ import { l as notifyReadableReaders, o as markReactivePropsDirtySource, s as markReadableDerivedSubscribersDirty, u as recordReadableRead } from "./readable-D-JIKCg2.js";
5
+ import { t as cleanupComponent } from "./component-cleanup-DPe8claJ.js";
6
+ import { c as getCurrentLifecycleCommitBatch, u as registerLifecycleTransaction } from "./lifecycle-batch-BYECQw8T.js";
7
7
  import { n as getActiveRenderContext } from "./render-context-B7ohlh6t.js";
8
8
  import { i as createSSRPortalHostToken, n as SSR_PORTAL_HOST, r as createSSRPortalAnchorToken, t as SSR_PORTAL_ANCHOR } from "./portal-w3oQ6oQU.js";
9
9
  import { i as registerDefaultPortalRuntime } from "./default-portal-runtime-DvMvWJVp.js";
@@ -1,4 +1,4 @@
1
- import { At as RouteRegistry, Gt as Query, Ut as Mutation, Zt as QueryStaleReason, nn as ComponentFunction, ut as RouteAuthOptions, vt as RouteMatch, zt as DataRuntime } from "../index-CTIBOqUB.js";
1
+ import { Bt as DataRuntime, Kt as Query, Wt as Mutation, dt as RouteAuthOptions, jt as RouteRegistry, nn as QueryStaleReason, sn as ComponentFunction, yt as RouteMatch } from "../index-DSqXWc77.js";
2
2
  //#region src/testing/render.d.ts
3
3
  /** Options for {@link render} and {@link mount}. */
4
4
  interface RenderOptions {
@@ -1,9 +1,9 @@
1
1
  import { r as flushRuntimeScheduler } from "../access-d_DCdwqn.js";
2
- import { u as recordReadableRead } from "../readable-BsdGWsDE.js";
2
+ import { u as recordReadableRead } from "../readable-D-JIKCg2.js";
3
3
  import { l as addInvalidationListener, t as createDataRuntime } from "../data-runtime-7t_Y0iv3.js";
4
- import { a as notifySource, i as normalizeAsyncDataError, r as createReadableSource } from "../data-CnQwUS76.js";
4
+ import { a as normalizeAsyncDataError, i as createReadableSource, o as notifySource } from "../data-BjUf0PPS.js";
5
5
  import { r as computeRouteActivityMatches } from "../route-matching-Bo6UqG-5.js";
6
- import { a as cleanupApp, r as createSPA, t as createIsland } from "../boot-BjldNXqF.js";
6
+ import { a as cleanupApp, r as createSPA, t as createIsland } from "../boot-DVwjHCNh.js";
7
7
  //#region src/testing/render.ts
8
8
  const renderStates = /* @__PURE__ */ new WeakMap();
9
9
  const eventConstructorNames = {
@@ -1,6 +1,6 @@
1
1
  import { g as getHydrationRenderUrl, m as withHydrationVerificationRender } from "./render-context-B7ohlh6t.js";
2
2
  import { t as SSR_RENDER_DATA_ATTR } from "./ssr-DSHd_Q9K.js";
3
- import { a as renderResolvedToStringSync } from "./ssr-BrdV2jMy.js";
3
+ import { a as renderResolvedToStringSync } from "./ssr-F87AcFMt.js";
4
4
  //#region src/ssr/verify-hydration.ts
5
5
  function normalizeHydrationHtml(html) {
6
6
  const template = document.createElement("template");
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@askrjs/askr",
3
- "version": "0.2.0",
3
+ "version": "0.2.2",
4
4
  "description": "Actor-backed deterministic UI framework",
5
5
  "keywords": [
6
6
  "askr",