@askrjs/askr 0.2.2 → 0.2.4

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 (80) hide show
  1. package/CHANGELOG.md +10 -0
  2. package/README.md +32 -4
  3. package/dist/{access-d_DCdwqn.js → access-BucjYZcX.js} +15 -10
  4. package/dist/actions/index.d.ts +1 -1
  5. package/dist/actions/index.js +5 -4
  6. package/dist/{activity-CAJ5eho-.d.ts → activity-DooIuxQO.d.ts} +2 -2
  7. package/dist/{activity-B2Yy7Wz9.js → activity-FirwPXA_.js} +14 -2
  8. package/dist/{compose-ref-1Fhs7mbF.js → aria-hKjThHcp.js} +1 -18
  9. package/dist/benchmark.d.ts +1 -1
  10. package/dist/benchmark.js +8 -8
  11. package/dist/boot/index.d.ts +4 -2
  12. package/dist/boot/index.js +1 -1
  13. package/dist/{boot-DVwjHCNh.js → boot-tWyF6121.js} +14 -15
  14. package/dist/{cleanup-DPtpXtA4.js → cleanup-TXSsApEl.js} +6 -11
  15. package/dist/{component-cleanup-DPe8claJ.js → component-cleanup-jdbgjkT1.js} +2 -2
  16. package/dist/{component-internal-xW_OnTmC.js → component-internal-C4hKKQBF.js} +16 -7
  17. package/dist/components/index.d.ts +2 -2
  18. package/dist/compose-ref-Bfaf4kUC.js +20 -0
  19. package/dist/control/index.d.ts +1 -1
  20. package/dist/control/index.js +1 -1
  21. package/dist/{control-BLVTE1gO.js → control-C-wSaq9V.js} +4 -4
  22. package/dist/{control-DdFw-Caz.d.ts → control-Cxag1yqV.d.ts} +1 -1
  23. package/dist/{csp-nonce-CCnMtOW-.js → csp-nonce-9NFUb7hJ.js} +1 -1
  24. package/dist/data/index.d.ts +1 -1
  25. package/dist/data/index.js +1 -1
  26. package/dist/{data-BjUf0PPS.js → data-ghKopAbp.js} +49 -49
  27. package/dist/{deferred-BRw0gbn5.js → deferred-CxjWCkIn.js} +2 -2
  28. package/dist/{effect-BQP5o0Kx.js → effect-CNwstBBD.js} +2 -2
  29. package/dist/{fastlane-DUxiFV9S.js → fastlane-BKZduiBQ.js} +2 -2
  30. package/dist/{for-internal-DKcYl3nl.js → for-internal-DyBHfKJA.js} +33 -25
  31. package/dist/foundations/icon/index.d.ts +1 -1
  32. package/dist/foundations/index.d.ts +2 -2
  33. package/dist/foundations/index.js +1 -1
  34. package/dist/foundations/interactions/index.d.ts +1 -1
  35. package/dist/foundations/interactions/index.js +1 -1
  36. package/dist/foundations/state/index.d.ts +1 -1
  37. package/dist/foundations/state/index.js +1 -1
  38. package/dist/foundations/structures/index.d.ts +2 -2
  39. package/dist/foundations/structures/index.js +1 -1
  40. package/dist/foundations/utilities/index.d.ts +1 -1
  41. package/dist/foundations/utilities/index.js +2 -1
  42. package/dist/fx/index.d.ts +1 -1
  43. package/dist/fx/index.js +1 -1
  44. package/dist/{index-CzH-0LcA.d.ts → index-B1gu0_m0.d.ts} +2 -0
  45. package/dist/{index-r5THqzPN.d.ts → index-CTpMmzgN.d.ts} +2 -2
  46. package/dist/{index-DSqXWc77.d.ts → index-Dgjbo2gU.d.ts} +58 -4
  47. package/dist/index.d.ts +3 -3
  48. package/dist/index.js +10 -10
  49. package/dist/{interactions-B-7vkBgx.js → interactions-D102JxBR.js} +10 -3
  50. package/dist/jsx-dev-runtime.d.ts +2 -2
  51. package/dist/jsx-runtime-Cg7GqY1S.d.ts +2 -0
  52. package/dist/{jsx-runtime-Cdd6Gkb0.d.ts → jsx-runtime-gVIaTPw0.d.ts} +2 -2
  53. package/dist/jsx-runtime.d.ts +2 -2
  54. package/dist/{lifecycle-batch-BYECQw8T.js → lifecycle-batch-63aXFf2S.js} +2 -2
  55. package/dist/{lifecycle-operations-DJk_5MrD.js → lifecycle-operations-Q0k3EFnG.js} +94 -2
  56. package/dist/{navigate-wel1e6cU.d.ts → navigate-F4sHgWbw.d.ts} +3 -1
  57. package/dist/{navigate-DvJvo--6.js → navigate-ZZu1IV0B.js} +88 -13
  58. package/dist/{readable-D-JIKCg2.js → readable-Di1fzSwm.js} +1 -1
  59. package/dist/{renderer-RjZ8LHbt.js → renderer-Cl23O0hV.js} +154 -137
  60. package/dist/{resolution-dVYwYXrI.js → resolution-ClD-K7Lz.js} +3 -3
  61. package/dist/{resource-operation-4qFIM02d.js → resource-operation-Vz1S5h2k.js} +4 -4
  62. package/dist/resources/index.d.ts +3 -37
  63. package/dist/resources/index.js +6 -6
  64. package/dist/router/index.d.ts +4 -4
  65. package/dist/router/index.js +7 -7
  66. package/dist/{selector-NQiYHwZC.js → selector-CsKuomw0.js} +17 -16
  67. package/dist/shared-CYBH3F8I.js +27 -0
  68. package/dist/ssg/index.d.ts +1 -1
  69. package/dist/ssg/index.js +4 -4
  70. package/dist/ssr/index.d.ts +8 -2
  71. package/dist/ssr/index.js +1 -1
  72. package/dist/{ssr-F87AcFMt.js → ssr-Doog-AfJ.js} +26 -15
  73. package/dist/{state-Ks-sWTQi.js → state-BGJgYSyQ.js} +3 -3
  74. package/dist/{structures-C-wmHCi6.js → structures-DFyK5AdQ.js} +4 -4
  75. package/dist/testing/index.d.ts +3 -1
  76. package/dist/testing/index.js +6 -5
  77. package/dist/{types-DkVJhVs9.d.ts → types-DWVrKn9N.d.ts} +5 -0
  78. package/dist/{verify-hydration-CThsx0pq.js → verify-hydration-BZPJ_kYa.js} +1 -1
  79. package/package.json +7 -7
  80. package/dist/jsx-runtime-BTzDdBJ_.d.ts +0 -2
@@ -1,9 +1,10 @@
1
- import { n as enqueueRuntimeTask, y as logger } from "./access-d_DCdwqn.js";
1
+ import { n as enqueueRuntimeTask, y as logger } from "./access-BucjYZcX.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-D-JIKCg2.js";
3
+ import { u as recordReadableRead } from "./readable-Di1fzSwm.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-DJk_5MrD.js";
5
+ import { c as windowFocused, i as routeActive, n as documentVisible, o as timer } from "./lifecycle-operations-Q0k3EFnG.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-CYBH3F8I.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 !== generation || this.controller !== controller) throw error;
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 !== generation || this.controller !== controller) return result;
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
@@ -246,9 +229,11 @@ var QueryCell = class {
246
229
  this.generation = 0;
247
230
  this.startQueued = false;
248
231
  this.pendingRefresh = null;
232
+ this.pendingRefreshKind = null;
249
233
  this.pendingRefreshResolve = null;
250
234
  this.pendingRefreshToken = 0;
251
235
  this.reconcileAttemptCount = 0;
236
+ this.reconcileSequence = 0;
252
237
  this.destroyed = false;
253
238
  this.ownerCount = 0;
254
239
  this.owners = /* @__PURE__ */ new Map();
@@ -354,21 +339,28 @@ var QueryCell = class {
354
339
  }
355
340
  ensureStarted() {
356
341
  if (this.destroyed || this.state.data !== null || this.pendingRefresh || this.startQueued || this.options.skipInitialFetch) return;
357
- this.queueStart();
342
+ this.queueStart(void 0, "initial");
358
343
  }
359
344
  refresh() {
360
345
  if (this.destroyed) return Promise.resolve();
361
- if (this.pendingRefresh) return this.pendingRefresh;
362
- this.queueStart();
346
+ if (this.pendingRefresh) {
347
+ if (this.pendingRefreshKind === "invalidation") {
348
+ this.controller?.abort();
349
+ this.queueStart(void 0, "manual", true);
350
+ return this.pendingRefresh;
351
+ } else return this.pendingRefresh;
352
+ }
353
+ this.queueStart(void 0, "manual");
363
354
  return this.pendingRefresh ?? Promise.resolve();
364
355
  }
365
356
  invalidate() {
366
357
  if (this.destroyed) return;
367
358
  if (this.pendingRefresh) {
368
359
  this.controller?.abort();
369
- this.finishPendingRefresh(this.pendingRefreshToken);
360
+ this.queueStart(void 0, "invalidation", true);
361
+ return;
370
362
  }
371
- this.queueStart();
363
+ this.queueStart(void 0, "invalidation");
372
364
  }
373
365
  markPendingWrite() {
374
366
  if (this.destroyed) return;
@@ -382,21 +374,27 @@ var QueryCell = class {
382
374
  staleReason: null
383
375
  });
384
376
  }
385
- queueStart() {
377
+ queueStart(reconcileSequence, kind = "manual", continuePending = false) {
386
378
  if (this.destroyed) return;
379
+ const sequence = reconcileSequence ?? (() => {
380
+ this.reconcileAttemptCount = 0;
381
+ return ++this.reconcileSequence;
382
+ })();
387
383
  this.startQueued = true;
384
+ this.pendingRefreshKind = kind;
388
385
  const token = ++this.pendingRefreshToken;
389
- this.pendingRefresh = new Promise((resolve) => {
386
+ if (!continuePending || !this.pendingRefresh) this.pendingRefresh = new Promise((resolve) => {
390
387
  this.pendingRefreshResolve = resolve;
391
- enqueueRuntimeTask(() => {
392
- this.startQueued = false;
393
- if (this.destroyed) {
394
- this.finishPendingRefresh(token);
395
- return;
396
- }
397
- this.start().finally(() => {
398
- this.finishPendingRefresh(token);
399
- });
388
+ });
389
+ enqueueRuntimeTask(() => {
390
+ if (token !== this.pendingRefreshToken) return;
391
+ this.startQueued = false;
392
+ if (this.destroyed) {
393
+ this.finishPendingRefresh(token);
394
+ return;
395
+ }
396
+ this.start(sequence).finally(() => {
397
+ this.finishPendingRefresh(token);
400
398
  });
401
399
  });
402
400
  }
@@ -404,6 +402,7 @@ var QueryCell = class {
404
402
  if (token !== this.pendingRefreshToken) return;
405
403
  const resolve = this.pendingRefreshResolve;
406
404
  this.pendingRefresh = null;
405
+ this.pendingRefreshKind = null;
407
406
  this.pendingRefreshResolve = null;
408
407
  resolve?.();
409
408
  }
@@ -415,7 +414,7 @@ var QueryCell = class {
415
414
  };
416
415
  notifySource(this.source);
417
416
  }
418
- async start() {
417
+ async start(reconcileSequence) {
419
418
  if (this.destroyed) return;
420
419
  this.generation += 1;
421
420
  const generation = this.generation;
@@ -435,7 +434,7 @@ var QueryCell = class {
435
434
  try {
436
435
  nextData = await this.options.fetch({ signal: controller.signal });
437
436
  } catch (error) {
438
- if (this.destroyed || this.generation !== generation || this.controller !== controller) return;
437
+ if (this.destroyed || !isCurrentAsyncOperation(this.generation, generation, this.controller, controller)) return;
439
438
  if (isAbortError(error, controller.signal)) {
440
439
  this.setState(hasData ? {
441
440
  loading: false,
@@ -464,7 +463,7 @@ var QueryCell = class {
464
463
  });
465
464
  return;
466
465
  }
467
- if (this.destroyed || this.generation !== generation || this.controller !== controller) return;
466
+ if (this.destroyed || !isCurrentAsyncOperation(this.generation, generation, this.controller, controller)) return;
468
467
  let isConsistent;
469
468
  try {
470
469
  isConsistent = this.options.isConsistent?.(nextData) ?? true;
@@ -489,9 +488,9 @@ var QueryCell = class {
489
488
  staleReason: "inconsistent"
490
489
  });
491
490
  try {
492
- await this.reconcile(nextData);
491
+ await this.reconcile(nextData, generation, controller, reconcileSequence);
493
492
  } catch (error) {
494
- if (this.generation === generation && this.controller === controller) this.setState({
493
+ if (isCurrentAsyncOperation(this.generation, generation, this.controller, controller)) this.setState({
495
494
  loading: false,
496
495
  refreshing: false,
497
496
  stale: true,
@@ -513,8 +512,8 @@ var QueryCell = class {
513
512
  staleReason: null
514
513
  });
515
514
  }
516
- async reconcile(data) {
517
- if (!await (this.options.reconcile?.(data, { key: this.options.key }) ?? false) || this.destroyed) return;
515
+ async reconcile(data, generation, controller, reconcileSequence) {
516
+ 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
517
  this.reconcileAttemptCount += 1;
519
518
  if (this.reconcileAttemptCount > RECONCILE_MAX_ATTEMPTS) {
520
519
  this.setState({
@@ -525,8 +524,9 @@ var QueryCell = class {
525
524
  return;
526
525
  }
527
526
  await new Promise((resolve) => setTimeout(resolve, RECONCILE_RETRY_DELAY_MS));
528
- if (this.destroyed || this.state.consistency === "fresh") return;
529
- this.invalidate();
527
+ if (this.destroyed || reconcileSequence !== this.reconcileSequence || this.state.consistency === "fresh" || !isCurrentAsyncOperation(this.generation, generation, this.controller, controller)) return;
528
+ this.controller?.abort();
529
+ this.queueStart(reconcileSequence, "reconcile", true);
530
530
  }
531
531
  };
532
532
  function createLegacyQuery(options) {
@@ -831,4 +831,4 @@ function createQueryCollection(options) {
831
831
  return collection;
832
832
  }
833
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 };
834
+ 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-4qFIM02d.js";
4
+ import { t as resource } from "./resource-operation-Vz1S5h2k.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-dVYwYXrI.js";
6
+ import { _ as createRouteHandler, d as DEFERRED_BOUNDARY, p as isDeferred, s as guardHydratedRouteData } from "./resolution-ClD-K7Lz.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-d_DCdwqn.js";
2
- import { m as withFineGrainedReadTracking } from "./readable-D-JIKCg2.js";
1
+ import { t as enqueueRuntimeLane } from "./access-BucjYZcX.js";
2
+ import { m as withFineGrainedReadTracking } from "./readable-Di1fzSwm.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-d_DCdwqn.js";
1
+ import { d as setRuntimeBulkCommitProbe, o as getRuntimeRenderer, u as runRuntimeWithSyncProgress, x as isDevelopmentEnvironment } from "./access-BucjYZcX.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-D-JIKCg2.js";
3
+ import { i as finalizeReadableSubscriptions, l as notifyReadableReaders, o as markReactivePropsDirtySource, s as markReadableDerivedSubscribersDirty } from "./readable-Di1fzSwm.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
- import { o as getRuntimeRenderer, x as isDevelopmentEnvironment, y as logger } from "./access-d_DCdwqn.js";
2
+ import { o as getRuntimeRenderer, x as isDevelopmentEnvironment, y as logger } from "./access-BucjYZcX.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-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";
4
+ import { n as createComponentInstance, s as renderScopedComponent, v as haveEquivalentContextFrames, x as rebaseVNodeTreeWithContextFrame } from "./component-internal-C4hKKQBF.js";
5
+ import { d as shouldCoalesceFineGrainedItemReads, l as notifyReadableReaders, o as markReactivePropsDirtySource, s as markReadableDerivedSubscribersDirty, u as recordReadableRead } from "./readable-Di1fzSwm.js";
6
+ import { i as unregisterOwnedChildScope, r as registerOwnedChildScope, t as cleanupComponent } from "./component-cleanup-jdbgjkT1.js";
7
+ import { o as finalizeInlineReadSubscriptions, u as registerLifecycleTransaction } from "./lifecycle-batch-63aXFf2S.js";
8
8
  //#region src/runtime/child-scope.ts
9
9
  const EMPTY_CHILD_SCOPE_PROPS = {};
10
10
  const childScopesByInstance = /* @__PURE__ */ new WeakMap();
@@ -61,8 +61,10 @@ var ChildScopeImpl = class {
61
61
  dispose() {
62
62
  if (this._disposed) return;
63
63
  this._disposed = true;
64
- if (this._parent) if (this._ownership) this._ownership.delete(this);
65
- else unregisterOwnedChildScope(this._parent, this);
64
+ if (this._parent) {
65
+ if (this._ownership) this._ownership.delete(this);
66
+ else unregisterOwnedChildScope(this._parent, this);
67
+ }
66
68
  childScopesByInstance.delete(this.componentInstance);
67
69
  cleanupComponent(this.componentInstance);
68
70
  this._renderFn = void 0;
@@ -551,14 +553,16 @@ const REACTIVE_FOR_ITEM_PROXY_HANDLER = {
551
553
  if (properties === null) metadata.coalescedProperties = prop;
552
554
  else if (Array.isArray(properties)) {
553
555
  if (!properties.includes(prop)) properties.push(prop);
554
- } else if (properties !== prop && metadata.coalescedProperty2 !== prop) if (metadata.coalescedProperty2 === null) metadata.coalescedProperty2 = prop;
555
- else {
556
- metadata.coalescedProperties = [
557
- properties,
558
- metadata.coalescedProperty2,
559
- prop
560
- ];
561
- metadata.coalescedProperty2 = null;
556
+ } else if (properties !== prop && metadata.coalescedProperty2 !== prop) {
557
+ if (metadata.coalescedProperty2 === null) metadata.coalescedProperty2 = prop;
558
+ else {
559
+ metadata.coalescedProperties = [
560
+ properties,
561
+ metadata.coalescedProperty2,
562
+ prop
563
+ ];
564
+ metadata.coalescedProperty2 = null;
565
+ }
562
566
  }
563
567
  let itemSignal = metadata.itemSignal;
564
568
  if (!itemSignal) {
@@ -836,15 +840,17 @@ function updateItemInstance(forState, itemInstance, item) {
836
840
  if (itemSignal && scopeReadsSource(scope, itemSignal)) scopeReadsChangedSignal = true;
837
841
  let coalescedPropertyChanged = false;
838
842
  const coalescedProperties = reactiveItemState.coalescedProperties;
839
- if (coalescedProperties !== null) if (Array.isArray(coalescedProperties)) {
840
- for (const property of coalescedProperties) if (!Object.is(readForItemProperty(previousItem, property), readForItemProperty(item, property))) {
841
- coalescedPropertyChanged = true;
842
- break;
843
+ if (coalescedProperties !== null) {
844
+ if (Array.isArray(coalescedProperties)) {
845
+ for (const property of coalescedProperties) if (!Object.is(readForItemProperty(previousItem, property), readForItemProperty(item, property))) {
846
+ coalescedPropertyChanged = true;
847
+ break;
848
+ }
849
+ } else {
850
+ coalescedPropertyChanged = !Object.is(readForItemProperty(previousItem, coalescedProperties), readForItemProperty(item, coalescedProperties));
851
+ const secondProperty = reactiveItemState.coalescedProperty2;
852
+ if (secondProperty !== null && !coalescedPropertyChanged) coalescedPropertyChanged = !Object.is(readForItemProperty(previousItem, secondProperty), readForItemProperty(item, secondProperty));
843
853
  }
844
- } else {
845
- coalescedPropertyChanged = !Object.is(readForItemProperty(previousItem, coalescedProperties), readForItemProperty(item, coalescedProperties));
846
- const secondProperty = reactiveItemState.coalescedProperty2;
847
- if (secondProperty !== null && !coalescedPropertyChanged) coalescedPropertyChanged = !Object.is(readForItemProperty(previousItem, secondProperty), readForItemProperty(item, secondProperty));
848
854
  }
849
855
  const wholeItemChanged = itemSignal?._hasBeenRead === true && (reactiveItemState.wholeItemRead || coalescedPropertyChanged);
850
856
  const itemShapeChanged = !wholeItemChanged && changedPropertySignals.length === 0 && !haveSameOwnKeys(previousItem, item);
@@ -860,8 +866,10 @@ function updateItemInstance(forState, itemInstance, item) {
860
866
  removeForParentReaders(forState.parentInstance, itemSignal);
861
867
  itemSignal.set(item, notifyReaders);
862
868
  }
863
- if (scopeReadsChangedSignal) if (itemSignal !== null && scopeDirectlyReadsSource(scope, itemSignal) || changedPropertySignals.some(([propertySignal]) => scopeDirectlyReadsSource(scope, propertySignal))) rerenderItemInstance(forState, itemInstance, itemInstance.reactiveItem);
864
- else scope.markDirty();
869
+ if (scopeReadsChangedSignal) {
870
+ if (itemSignal !== null && scopeDirectlyReadsSource(scope, itemSignal) || changedPropertySignals.some(([propertySignal]) => scopeDirectlyReadsSource(scope, propertySignal))) rerenderItemInstance(forState, itemInstance, itemInstance.reactiveItem);
871
+ else scope.markDirty();
872
+ }
865
873
  return visibleChange;
866
874
  }
867
875
  const FOR_FALLBACK_SCOPE_KEY = "__for-fallback__";
@@ -1,4 +1,4 @@
1
- import { r as JSXElement, s as Props } from "../../types-DkVJhVs9.js";
1
+ import { r as JSXElement, s as Props } from "../../types-DWVrKn9N.js";
2
2
  import { t as Ref } from "../../compose-ref-DOJHoW5X.js";
3
3
  //#region src/foundations/icon/icon.types.d.ts
4
4
  /** Named icon size presets, mapped to CSS variables at render time. */
@@ -1,3 +1,3 @@
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-r5THqzPN.js";
1
+ import { r as JSXElement } from "../types-DWVrKn9N.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-CTpMmzgN.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-C-wmHCi6.js";
1
+ import { a as definePortal, c as layout, i as Portal, o as Presence, r as DefaultPortal, s as Slot } from "../structures-DFyK5AdQ.js";
2
2
  export { DefaultPortal, Portal, Presence, Slot, definePortal, layout };
@@ -1,5 +1,5 @@
1
1
  import { t as Ref } from "../../compose-ref-DOJHoW5X.js";
2
- import { d as KeyboardLikeEvent, f as PointerLikeEvent, l as DefaultPreventable, p as PropagationStoppable } from "../../index-CzH-0LcA.js";
2
+ import { d as KeyboardLikeEvent, f as PointerLikeEvent, l as DefaultPreventable, p as PropagationStoppable } from "../../index-B1gu0_m0.js";
3
3
  //#region src/foundations/interactions/pressable.d.ts
4
4
  /**
5
5
  * pressable
@@ -1,2 +1,2 @@
1
- import { a as focusable, i as hoverable, n as mergeInteractionProps, o as dismissable, r as rovingFocus, s as pressable, t as applyInteractionPolicy } from "../../interactions-B-7vkBgx.js";
1
+ import { a as focusable, i as hoverable, n as mergeInteractionProps, o as dismissable, r as rovingFocus, s as pressable, t as applyInteractionPolicy } from "../../interactions-D102JxBR.js";
2
2
  export { applyInteractionPolicy, dismissable, focusable, hoverable, mergeInteractionProps, pressable, rovingFocus };
@@ -1,4 +1,4 @@
1
- import { gn as State } from "../../index-DSqXWc77.js";
1
+ import { jn as State } from "../../index-Dgjbo2gU.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-Ks-sWTQi.js";
1
+ import { t as state } from "../../state-BGJgYSyQ.js";
2
2
  //#region src/foundations/state/controllable.ts
3
3
  /**
4
4
  * controllable
@@ -1,3 +1,3 @@
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-r5THqzPN.js";
1
+ import { r as JSXElement } from "../../types-DWVrKn9N.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-CTpMmzgN.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-C-wmHCi6.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-DFyK5AdQ.js";
2
2
  export { DefaultPortal, Portal, Presence, Slot, cloneElement, createCollection, createLayer, definePortal, isElement, layout };
@@ -1,3 +1,3 @@
1
1
  import { n as composeRefs, r as setRef, t as Ref } from "../../compose-ref-DOJHoW5X.js";
2
- import { a as ariaSelected, c as composeHandlers, d as KeyboardLikeEvent, f as PointerLikeEvent, i as ariaExpanded, l as DefaultPreventable, n as formatId, o as mergeProps, p as PropagationStoppable, r as ariaDisabled, s as ComposeHandlersOptions, t as FormatIdOptions, u as FocusLikeEvent } from "../../index-CzH-0LcA.js";
2
+ import { a as ariaSelected, c as composeHandlers, d as KeyboardLikeEvent, f as PointerLikeEvent, i as ariaExpanded, l as DefaultPreventable, n as formatId, o as mergeProps, p as PropagationStoppable, r as ariaDisabled, s as ComposeHandlersOptions, t as FormatIdOptions, u as FocusLikeEvent } from "../../index-B1gu0_m0.js";
3
3
  export { type ComposeHandlersOptions, type DefaultPreventable, type FocusLikeEvent, type FormatIdOptions, type KeyboardLikeEvent, type PointerLikeEvent, type PropagationStoppable, type Ref, ariaDisabled, ariaExpanded, ariaSelected, composeHandlers, composeRefs, formatId, mergeProps, setRef };
@@ -1,3 +1,4 @@
1
- import { a as ariaSelected, i as ariaExpanded, n as setRef, o as mergeProps, r as ariaDisabled, s as composeHandlers, t as composeRefs } from "../../compose-ref-1Fhs7mbF.js";
1
+ import { n as setRef, t as composeRefs } from "../../compose-ref-Bfaf4kUC.js";
2
+ import { a as composeHandlers, i as mergeProps, n as ariaExpanded, r as ariaSelected, t as ariaDisabled } from "../../aria-hKjThHcp.js";
2
3
  import { t as formatId } from "../../utilities-C_CGX4Dz.js";
3
4
  export { ariaDisabled, ariaExpanded, ariaSelected, composeHandlers, composeRefs, formatId, mergeProps, setRef };
@@ -1,4 +1,4 @@
1
- import { Z as scheduleEventHandler } from "../index-DSqXWc77.js";
1
+ import { ft as scheduleEventHandler } from "../index-Dgjbo2gU.js";
2
2
  //#region src/fx/timing.d.ts
3
3
  /**
4
4
  * Timing utilities — pure helpers for common async patterns
package/dist/fx/index.js CHANGED
@@ -1,4 +1,4 @@
1
- import { g as scheduleEventHandler, n as enqueueRuntimeTask, y as logger } from "../access-d_DCdwqn.js";
1
+ import { g as scheduleEventHandler, n as enqueueRuntimeTask, y as logger } from "../access-BucjYZcX.js";
2
2
  import { f as getCurrentComponentInstance } from "../component-scope-4I3yEMkb.js";
3
3
  //#region src/fx/timing.ts
4
4
  /**
@@ -11,6 +11,8 @@ interface PropagationStoppable {
11
11
  /** Structural subset of a keyboard event, for handlers that accept native or synthetic events. */
12
12
  interface KeyboardLikeEvent extends DefaultPreventable, PropagationStoppable {
13
13
  key: string;
14
+ currentTarget?: unknown;
15
+ target?: unknown;
14
16
  }
15
17
  /** Structural subset of a pointer event, for handlers that accept native or synthetic events. */
16
18
  interface PointerLikeEvent extends DefaultPreventable, PropagationStoppable {
@@ -1,5 +1,5 @@
1
- import { cn as RenderableChild } from "./index-DSqXWc77.js";
2
- import { r as JSXElement } from "./types-DkVJhVs9.js";
1
+ import { Cn as RenderableChild } from "./index-Dgjbo2gU.js";
2
+ import { r as JSXElement } from "./types-DWVrKn9N.js";
3
3
  //#region src/foundations/structures/layout.d.ts
4
4
  /**
5
5
  * Layout helper.
@@ -1,5 +1,5 @@
1
- import { i as JSXElementType, r as JSXElement, s as Props } from "./types-DkVJhVs9.js";
2
- import "./jsx-runtime-BTzDdBJ_.js";
1
+ import { i as JSXElementType, r as JSXElement, s as Props } from "./types-DWVrKn9N.js";
2
+ import "./jsx-runtime-Cg7GqY1S.js";
3
3
  import { AuthContext, AuthRequirement } from "@askrjs/auth";
4
4
  import { InferSchema, ObjectSchema } from "@askrjs/schema";
5
5
  //#region src/runtime/state.d.ts
@@ -682,11 +682,15 @@ interface RouteQuery {
682
682
  toJSON(): Record<string, string | string[]>;
683
683
  }
684
684
  /** Full description of the currently active route, returned by {@link currentRoute}. */
685
- interface RouteSnapshot<TParams extends RouteParams = RouteParams> {
685
+ interface RouteSnapshot<TParams extends RouteParams = RouteParams, TState = unknown> {
686
686
  path: string;
687
687
  params: Readonly<TParams>;
688
688
  query: Readonly<RouteQuery>;
689
689
  hash: string | null;
690
+ /** Whether the current browser history entry was given explicit location state. */
691
+ hasState: boolean;
692
+ /** Entry-local state supplied to navigate(); absent during SSR and when no state was supplied. */
693
+ state: TState | undefined;
690
694
  name?: string;
691
695
  namespace?: string;
692
696
  matches: readonly RouteMatch<TParams>[];
@@ -1147,6 +1151,56 @@ type SnapshotSource<T> = {
1147
1151
  declare function derive<TOut>(fn: () => TOut): Derived<TOut>;
1148
1152
  declare function derive<TIn, TOut>(source: SnapshotSource<TIn> | TIn | (() => TIn), map: (value: TIn) => TOut): Derived<TOut | null>;
1149
1153
  //#endregion
1154
+ //#region src/runtime/lifecycle-operations.d.ts
1155
+ /** A gating condition for lifecycle primitives like {@link timer}; `true` means active. */
1156
+ type ActivityPredicate = () => boolean;
1157
+ /** Options for {@link timer}. */
1158
+ interface TimerOptions {
1159
+ when?: ActivityPredicate | readonly ActivityPredicate[];
1160
+ }
1161
+ /** {@link ActivityPredicate} that is true while the current route matches `pathOrPaths`. */
1162
+ declare function routeActive(pathOrPaths: string | readonly string[]): ActivityPredicate;
1163
+ /** {@link ActivityPredicate} that is true while the document is visible. */
1164
+ declare function documentVisible(): ActivityPredicate;
1165
+ /** {@link ActivityPredicate} that is true while the window has focus. */
1166
+ declare function windowFocused(): ActivityPredicate;
1167
+ /** An event target, or a function resolving one, accepted by {@link on}. */
1168
+ type ListenerTarget = EventTarget | (() => EventTarget | null | undefined);
1169
+ type ListenerOptions = boolean | AddEventListenerOptions | undefined;
1170
+ /** Attach an owned event listener to `target` for the current component's lifetime. */
1171
+ declare function on(target: ListenerTarget, event: string, handler: EventListener, options?: ListenerOptions): void;
1172
+ /** Run `fn` on an owned interval for the current component's lifetime, optionally gated by `options.when`. */
1173
+ declare function timer(intervalMs: number, fn: () => void, options?: TimerOptions): void;
1174
+ /** Runs an owned task after commit. */
1175
+ declare function task(fn: () => void | (() => void) | PromiseLike<void | (() => void)>): void;
1176
+ /** A callable reactive source accepted by {@link watch}. */
1177
+ type WatchSource<T> = ReadableSource<T>;
1178
+ /** Values inferred from an ordered tuple of {@link WatchSource} accessors. */
1179
+ type WatchValues<TSources extends readonly WatchSource<unknown>[]> = { -readonly [TIndex in keyof TSources]: ReturnType<TSources[TIndex]>; };
1180
+ /** Post-commit generation details supplied to a {@link watch} callback. */
1181
+ interface WatchContext<TValue> {
1182
+ readonly initial: boolean;
1183
+ readonly previous: TValue | undefined;
1184
+ readonly signal: AbortSignal;
1185
+ }
1186
+ /** Owned side-effect callback invoked by {@link watch}. */
1187
+ type WatchCallback<TValue> = (value: TValue, context: WatchContext<TValue>) => void | (() => void) | PromiseLike<void>;
1188
+ /** Observe one readable source after commit and whenever its value changes. */
1189
+ declare function watch<TValue>(source: WatchSource<TValue>, callback: WatchCallback<TValue>): void;
1190
+ /** Observe an ordered tuple of readable sources after commit and whenever an entry changes. */
1191
+ declare function watch<const TSources extends readonly WatchSource<unknown>[]>(sources: TSources, callback: WatchCallback<WatchValues<TSources>>): void;
1192
+ /**
1193
+ * Capture the result of a synchronous expression at call time and return a
1194
+ * thunk that returns the captured value later. This is a low-level helper for
1195
+ * cases where async continuations need to observe a snapshot of values at the
1196
+ * moment scheduling occurred.
1197
+ *
1198
+ * Usage (public API):
1199
+ * const snapshot = capture(() => someState());
1200
+ * Promise.resolve().then(() => { use(snapshot()); });
1201
+ */
1202
+ declare function capture<T>(fn: () => T): () => T;
1203
+ //#endregion
1150
1204
  //#region src/runtime/render-diagnostics.d.ts
1151
1205
  interface RenderDiagnosticsOptions {
1152
1206
  /** Emit one warning per component instance when a render exceeds the threshold. */
@@ -1399,4 +1453,4 @@ declare function action<TInput extends Record<string, unknown>, TResult = unknow
1399
1453
  submit(input: TInput): Promise<TResult>;
1400
1454
  };
1401
1455
  //#endregion
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 };
1456
+ export { routeActive as $, RouteSnapshot as $t, cspNonce as A, SSRStyleRegistrationValidation as An, RouteDefinition as At, selector as B, RoutePathParams as Bt, createMutation as C, RenderableChild as Cn, PageScopeRecord as Ct, SSRPortalState as D, DocumentRenderer as Dn, RouteAuthResolver as Dt, DeferredBoundaryRegistration as E, DocumentRenderContext as En, RouteAuthOptions as Et, Show as F, RouteMeta as Ft, TimerOptions as G, RouteRefSearch as Gt, configureRenderDiagnostics as H, RouteQuery as Ht, ShowProps as I, RouteMetaSource as It, WatchSource as J, RouteRenderResult as Jt, WatchCallback as K, RouteRegistry as Kt, For as L, RouteMode as Lt, CaseProps as M, StateSetter as Mn, RouteHandler as Mt, Match as N, StateTuple as Nn, RouteManifest as Nt, registerSSRStyle as O, SSRData as On, RouteComponent as Ot, MatchProps as P, state as Pn, RouteMatch as Pt, on as Q, RouteSearchValue as Qt, ForProps as R, RouteOptions as Rt, createQuery as S, ComponentFunction as Sn, PageHelperOptions as St, createRef as T, DocumentRenderArgs as Tn, Route as Tt, ActivityPredicate as U, RouteRecord as Ut, RenderDiagnosticsOptions as V, RoutePolicy as Vt, ListenerTarget as W, RouteRef as Wt, capture as X, RouteRequestResult as Xt, WatchValues as Y, RouteRequestOptions as Yt, documentVisible as Z, RouteSearch as Zt, invalidate as _, QueryStaleReason as _n, AccessDenyStatus as _t, action as a, Mutation as an, derive as at, createDataRuntime as b, defineScope as bn, GroupHelperOptions as bt, ServerQueryRegistry as c, QueryCollection as cn, RuntimeKeyedReorderDecision as ct, defineServerQueries as d, QueryCollectionOptions as dn, getDefaultRuntime as dt, CoreTelemetry as en, task as et, dehydrateDataRuntime as f, QueryConsistency as fn, scheduleEventHandler as ft, createQueryCollection as g, QueryScope as gn, AccessDenyDecision as gt, serveQuery as h, QueryPrefetchContext as hn, AccessDecision as ht, ActionValidationError as i, InvalidateOptions as in, Derived as it, Case as j, State as jn, RouteDestination as jt, CspNonceScope as k, SSRStyleRegistration as kn, RouteContext as kt, createQueryPrefetchContext as l, QueryCollectionEntry as ln, RuntimeRendererHost as lt, prefetchQuery as m, QueryKeyPart as mn, AccessAllowDecision as mt, ActionForm as n, DataRuntimeOptions as nn, watch as nt, defineAction as o, MutationOptions as on, AskrRuntime as ot, hydrateDataRuntime as p, QueryDefinition as pn, getSignal as pt, WatchContext as q, RouteRegistryOptions as qt, ActionStatus as r, InvalidateOnIntervalOptions as rn, windowFocused as rt, ServerQueryEntry as s, Query as sn, AskrRuntimeOptions as st, ActionDescriptor as t, DataRuntime as tn, timer as tt, defineQuery as u, QueryCollectionKey as un, createRuntime as ut, invalidateOnInterval as v, ServerQueryHandler as vn, AccessRedirectDecision as vt, Ref as w, VNode as wn, ParsedSegment as wt, getDefaultDataRuntime as x, readScope as xn, LayoutScopeRecord as xt, queryScope as y, Scope as yn, AccessRedirectStatus as yt, Selector as z, RouteParams as zt };
package/dist/index.d.ts CHANGED
@@ -1,4 +1,4 @@
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
- import { s as Props, t as Fragment } from "./types-DkVJhVs9.js";
3
- import { i as jsxs, n as jsx } from "./jsx-runtime-Cdd6Gkb0.js";
1
+ import { A as cspNonce, B as selector, F as Show, H as configureRenderDiagnostics, I as ShowProps, L as For, M as CaseProps, Mn as StateSetter, N as Match, Nn as StateTuple, O as registerSSRStyle, P as MatchProps, Pn as state, R as ForProps, S as createQuery, T as createRef, V as RenderDiagnosticsOptions, at as derive, bn as defineScope, cn as QueryCollection, ct as RuntimeKeyedReorderDecision, d as defineServerQueries, dn as QueryCollectionOptions, dt as getDefaultRuntime, f as dehydrateDataRuntime, g as createQueryCollection, h as serveQuery, hn as QueryPrefetchContext, it as Derived, j as Case, jn as State, k as CspNonceScope, ln as QueryCollectionEntry, lt as RuntimeRendererHost, m as prefetchQuery, ot as AskrRuntime, p as hydrateDataRuntime, pn as QueryDefinition, pt as getSignal, st as AskrRuntimeOptions, tn as DataRuntime, u as defineQuery, un as QueryCollectionKey, ut as createRuntime, vn as ServerQueryHandler, w as Ref, xn as readScope, yn as Scope, z as Selector } from "./index-Dgjbo2gU.js";
2
+ import { s as Props, t as Fragment } from "./types-DWVrKn9N.js";
3
+ import { i as jsxs, n as jsx } from "./jsx-runtime-gVIaTPw0.js";
4
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
- import { a as getRuntimeFlushVersion, f as AskrRuntime, h as getDefaultRuntime, m as createRuntime, t as enqueueRuntimeLane } from "./access-d_DCdwqn.js";
1
+ import { a as getRuntimeFlushVersion, f as AskrRuntime, h as getDefaultRuntime, m as createRuntime, t as enqueueRuntimeLane } from "./access-BucjYZcX.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-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";
4
+ import { b as readScope, f as configureRenderDiagnostics, m as defineScope } from "./component-internal-C4hKKQBF.js";
5
+ import { f as syncDerivedDependencySubscriptions, l as notifyReadableReaders, o as markReactivePropsDirtySource, p as withDerivedReadTracking, r as clearDerivedDependencySubscriptions, s as markReadableDerivedSubscribersDirty, u as recordReadableRead } from "./readable-Di1fzSwm.js";
6
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-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";
8
+ import { t as state } from "./state-BGJgYSyQ.js";
9
+ import { t as selector } from "./selector-CsKuomw0.js";
10
+ import { t as installRendererBridge } from "./renderer-Cl23O0hV.js";
11
+ import { n as cspNonce, t as CspNonceScope } from "./csp-nonce-9NFUb7hJ.js";
12
+ import { i as For, n as Match, r as Show, t as Case } from "./control-C-wSaq9V.js";
13
13
  import { jsx, jsxs } from "./jsx-runtime.js";
14
- import { n as createQuery, t as createQueryCollection } from "./data-BjUf0PPS.js";
14
+ import { n as createQuery, t as createQueryCollection } from "./data-ghKopAbp.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();
@@ -176,7 +176,7 @@ function createRef() {
176
176
  //#endregion
177
177
  //#region src/index.ts
178
178
  /**
179
- * Askr: Actor-backed deterministic UI framework
179
+ * Askr: Lane-scheduled deterministic UI framework
180
180
  *
181
181
  * Public API surface — only users should import from here
182
182
  */