@askrjs/askr 0.0.88 → 0.0.90

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 (51) hide show
  1. package/dist/actions/index.d.ts +1 -1
  2. package/dist/actions/index.js +1 -1
  3. package/dist/{activity-VMb7aJVx.d.ts → activity-CF2_JvJs.d.ts} +1 -1
  4. package/dist/{activity-C9naVZwy.js → activity-CQKEAORw.js} +3 -2
  5. package/dist/benchmark.js +5 -5
  6. package/dist/boot/index.d.ts +6 -4
  7. package/dist/boot/index.js +1 -1
  8. package/dist/{boot-BVHzYQz8.js → boot-D5GZU_g4.js} +24 -14
  9. package/dist/{component-internal-uVCJAre6.js → component-internal-C4uwwUaK.js} +31 -2
  10. package/dist/components/index.d.ts +1 -1
  11. package/dist/control/index.d.ts +1 -1
  12. package/dist/control/index.js +1 -1
  13. package/dist/{control-DlwTrXBN.js → control-CON10J1p.js} +1 -1
  14. package/dist/{control-x8iehxf7.d.ts → control-D-FIa-n-.d.ts} +2 -0
  15. package/dist/{csp-nonce-CUscoNF1.js → csp-nonce-DH0TrDij.js} +1 -1
  16. package/dist/data/index.d.ts +3 -2
  17. package/dist/data/index.js +3 -3
  18. package/dist/{data-CXZ-FOa7.js → data-BmZC1kDn.js} +27 -9
  19. package/dist/{data-runtime-CnVeSvJz.js → data-runtime-SC6zzAwh.js} +10 -5
  20. package/dist/{deferred-BCgoep1C.js → deferred-Bh-nZhZF.js} +2 -2
  21. package/dist/{for-internal-Be7x2TFd.js → for-internal-Bsm0B8GZ.js} +1 -1
  22. package/dist/foundations/index.d.ts +1 -1
  23. package/dist/foundations/state/index.d.ts +1 -1
  24. package/dist/foundations/structures/index.d.ts +1 -1
  25. package/dist/{index-BYWsbogt.d.ts → index-BU17hud9.d.ts} +1 -1
  26. package/dist/index-CPlPDbEY.d.ts +64 -0
  27. package/dist/{index-DODUjRdZ.d.ts → index-Cf2ANwPL.d.ts} +1 -1
  28. package/dist/{index-yDjeTqs5.d.ts → index-Izwp_ESC.d.ts} +18 -3
  29. package/dist/index.d.ts +6 -5
  30. package/dist/index.js +7 -7
  31. package/dist/{lifecycle-operations-DTO93Hrl.js → lifecycle-operations-CMK1AN2C.js} +1 -1
  32. package/dist/{navigate-kJ_EW8Y8.d.ts → navigate-BO7M2iUG.d.ts} +1 -1
  33. package/dist/{navigate-Bz6hh2JB.js → navigate-DIOaNAcS.js} +5 -4
  34. package/dist/{query-registry-p_0kkieE.js → query-registry-IACQeDqi.js} +1 -1
  35. package/dist/{renderer-5bjf5dIf.js → renderer-y2DL627q.js} +3 -3
  36. package/dist/{resolution-BRmiFYvw.js → resolution-D3UO6aKA.js} +40 -4
  37. package/dist/{resource-operation-B94oj6xT.js → resource-operation-CYDU3XzS.js} +1 -1
  38. package/dist/resources/index.d.ts +2 -2
  39. package/dist/resources/index.js +4 -4
  40. package/dist/router/index.d.ts +26 -5
  41. package/dist/router/index.js +6 -6
  42. package/dist/ssg/index.d.ts +2 -2
  43. package/dist/ssg/index.js +4 -4
  44. package/dist/ssr/index.d.ts +4 -3
  45. package/dist/ssr/index.js +1 -1
  46. package/dist/{ssr-D3hUAWyQ.js → ssr-VdXmmJqx.js} +9 -7
  47. package/dist/testing/index.d.ts +35 -4
  48. package/dist/testing/index.js +150 -3
  49. package/dist/{index-SGxMZLAc.d.ts → types-iAmDSV6o.d.ts} +6 -63
  50. package/dist/{verify-hydration-Bd1kGLmH.js → verify-hydration-wRofFN5b.js} +1 -1
  51. package/package.json +2 -2
@@ -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-yDjeTqs5.js";
1
+ import { a as action, i as ActionValidationError, n as ActionForm, o as defineAction, r as ActionStatus, t as ActionDescriptor } from "../index-Izwp_ESC.js";
2
2
  export { ActionDescriptor, ActionForm, ActionStatus, ActionValidationError, action, defineAction };
@@ -2,7 +2,7 @@ import { d as getCurrentAppRenderRuntime } from "../component-scope-DzJEbYGE.js"
2
2
  import { r as getCurrentRenderData } from "../render-context-D0Hoj9dW.js";
3
3
  import { t as state } from "../state-DCjONcHK.js";
4
4
  import { jsx, jsxs } from "../jsx-runtime.js";
5
- import { c as resolveDataRuntimeState, s as invalidateQueriesForRuntime } from "../data-runtime-CnVeSvJz.js";
5
+ import { c as resolveDataRuntimeState, s as invalidateQueriesForRuntime } from "../data-runtime-SC6zzAwh.js";
6
6
  //#region src/actions/runtime.ts
7
7
  const emptyFramework = Object.freeze({});
8
8
  /** @internal Read Askr-owned state from the current application root. */
@@ -1,4 +1,4 @@
1
- import { L as RouteParams, Z as RouteSnapshot } from "./index-yDjeTqs5.js";
1
+ import { L as RouteParams, Z as RouteSnapshot } from "./index-Izwp_ESC.js";
2
2
  //#region src/router/activity.d.ts
3
3
  interface RouteChangeOptions {
4
4
  immediate?: boolean;
@@ -1,5 +1,5 @@
1
1
  import { d as getCurrentAppRenderRuntime, f as getCurrentComponentInstance, i as claimHookIndex } from "./component-scope-DzJEbYGE.js";
2
- import { a as registerCommitOperation } from "./component-internal-uVCJAre6.js";
2
+ import { a as registerCommitOperation } from "./component-internal-C4uwwUaK.js";
3
3
  import { l as notifyReadableReaders, o as markReactivePropsDirtySource, s as markReadableDerivedSubscribersDirty, u as recordReadableRead } from "./readable-B5NtV7V0.js";
4
4
  import { n as getActiveRenderContext } from "./render-context-D0Hoj9dW.js";
5
5
  import { n as syncRouteActivitySnapshot } from "./route-activity-CNJfpwx-.js";
@@ -10,7 +10,8 @@ function createAppRenderRuntime(input = {}) {
10
10
  return {
11
11
  framework: Object.freeze({ ...input.framework }),
12
12
  route: input.route,
13
- hasRoute: input.hasRoute ?? false
13
+ hasRoute: input.hasRoute ?? false,
14
+ dataRuntime: input.dataRuntime
14
15
  };
15
16
  }
16
17
  function stageAppRenderRouteLocation(runtime, href) {
package/dist/benchmark.js CHANGED
@@ -1,10 +1,10 @@
1
1
  import { r as flushRuntimeScheduler } from "./access-Dpfoi4cA.js";
2
- import { t as installRendererBridge } from "./renderer-5bjf5dIf.js";
2
+ import { t as installRendererBridge } from "./renderer-y2DL627q.js";
3
3
  import { t as state } from "./state-DCjONcHK.js";
4
4
  import { t as selector } from "./selector-BLNkRZ2i.js";
5
- import { i as For } from "./control-DlwTrXBN.js";
5
+ import { i as For } from "./control-CON10J1p.js";
6
6
  import { jsx, jsxs } from "./jsx-runtime.js";
7
- import { t as createIsland } from "./boot-BVHzYQz8.js";
7
+ import { t as createIsland } from "./boot-D5GZU_g4.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.0.88",
67
- buildLabel: "0.0.88-local"
66
+ packageVersion: "0.0.90",
67
+ buildLabel: "0.0.90-local"
68
68
  };
69
69
  function getBenchmarkMetadata() {
70
70
  return { ...benchmarkMetadata };
@@ -1,7 +1,7 @@
1
- import { l as ComponentFunction } from "../control-x8iehxf7.js";
2
- import { W as RouteRegistry, w as RouteAuthOptions } from "../index-yDjeTqs5.js";
3
- import { v as DataRuntime } from "../index-SGxMZLAc.js";
4
- import { a as ScrollRestorationOptions } from "../navigate-kJ_EW8Y8.js";
1
+ import { l as ComponentFunction } from "../control-D-FIa-n-.js";
2
+ import { t as DataRuntime } from "../types-iAmDSV6o.js";
3
+ import { W as RouteRegistry, w as RouteAuthOptions } from "../index-Izwp_ESC.js";
4
+ import { a as ScrollRestorationOptions } from "../navigate-BO7M2iUG.js";
5
5
  //#region src/boot/types.d.ts
6
6
  type IslandConfig = {
7
7
  root: Element | string;
@@ -20,6 +20,8 @@ type BootRouteSource = {
20
20
  type SPAConfig = BootRouteSource & {
21
21
  root: Element | string;
22
22
  cspNonce?: string;
23
+ /** Optional data runtime, primarily for routed test fixtures. */
24
+ dataRuntime?: DataRuntime;
23
25
  /** Pass a route registry built via `createRouteRegistry(() => { ... })`. */
24
26
  auth?: RouteAuthOptions;
25
27
  scrollRestoration?: boolean | ScrollRestorationOptions;
@@ -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-BVHzYQz8.js";
1
+ import { a as cleanupApp, i as hydrateSPA, n as createIslands, o as hasApp, r as createSPA, t as createIsland } from "../boot-D5GZU_g4.js";
2
2
  export { cleanupApp, createIsland, createIslands, createSPA, hasApp, hydrateSPA };
@@ -1,19 +1,19 @@
1
1
  import { b as isDevelopmentEnvironment, r as flushRuntimeScheduler, v as logger, x as isProductionEnvironment } from "./access-Dpfoi4cA.js";
2
2
  import { n as Fragment, t as ELEMENT_TYPE } from "./jsx-C3IECePB.js";
3
- import { n as createComponentInstance, r as executeComponent } from "./component-internal-uVCJAre6.js";
3
+ import { n as createComponentInstance, r as executeComponent } from "./component-internal-C4uwwUaK.js";
4
4
  import { t as cleanupComponent } from "./component-cleanup-BUfUleGZ.js";
5
5
  import { p as isPromiseLike } from "./lifecycle-batch-Dfpid9-A.js";
6
- 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-5bjf5dIf.js";
6
+ 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-y2DL627q.js";
7
7
  import { _ as teardownNodeSubtree, d as removeAllListeners } from "./cleanup-c837KVij.js";
8
8
  import { r as assertExecutionModel, t as _applyManifest } from "./manifest-D1P9uTlz.js";
9
9
  import { d as stopHydrationRenderPhase, l as startHydrationRenderPhase, v as pageRenderEnvelope } from "./render-context-D0Hoj9dW.js";
10
- import { r as validateCspNonce, t as CspNonceScope } from "./csp-nonce-CUscoNF1.js";
11
- import { i as getDefaultDataRuntime } from "./data-runtime-CnVeSvJz.js";
12
- import { a as hydrateDataRuntime } from "./query-registry-p_0kkieE.js";
10
+ import { r as validateCspNonce, t as CspNonceScope } from "./csp-nonce-DH0TrDij.js";
11
+ import { i as getDefaultDataRuntime } from "./data-runtime-SC6zzAwh.js";
12
+ import { a as hydrateDataRuntime } from "./query-registry-IACQeDqi.js";
13
13
  import { I as lockRouteRegistration, P as hasRegisteredRoutes, _ as clearRouteState, m as _setActiveRouteAuthOptions } from "./route-matching-DqULzZtC.js";
14
- import { a as resolveRouteRequest, i as hasRouteRenderData, m as reviveDeferredValue, n as getRouteRenderContext, r as getRouteRenderData } from "./resolution-BRmiFYvw.js";
15
- import { o as createAppRenderRuntime, r as setServerLocation } from "./activity-C9naVZwy.js";
16
- import { f as registerAppInstance, g as unregisterAppInstance, i as resolveRouteMeta, o as configureScrollRestoration, r as reconcileRouteMeta, t as initializeNavigation } from "./navigate-Bz6hh2JB.js";
14
+ import { a as resolveRouteRequest, i as hasRouteRenderData, m as reviveDeferredValue, n as getRouteRenderContext, r as getRouteRenderData } from "./resolution-D3UO6aKA.js";
15
+ import { o as createAppRenderRuntime, r as setServerLocation } from "./activity-CQKEAORw.js";
16
+ import { f as registerAppInstance, g as unregisterAppInstance, i as resolveRouteMeta, o as configureScrollRestoration, r as reconcileRouteMeta, t as initializeNavigation } from "./navigate-DIOaNAcS.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
@@ -499,8 +499,9 @@ async function createSPA(config) {
499
499
  setServerLocation(currentUrl);
500
500
  const appRuntime = createAppRenderRuntime(resolved?.kind === "render" && hasRouteRenderData(resolved) ? {
501
501
  route: getRouteRenderData(resolved),
502
- hasRoute: true
503
- } : {});
502
+ hasRoute: true,
503
+ dataRuntime: config.dataRuntime ?? getDefaultDataRuntime()
504
+ } : { dataRuntime: config.dataRuntime ?? getDefaultDataRuntime() });
504
505
  if (!resolved) {
505
506
  mountOrUpdate(rootElement, () => ({
506
507
  type: "div",
@@ -510,7 +511,10 @@ async function createSPA(config) {
510
511
  appRuntime,
511
512
  cspNonce: config.cspNonce
512
513
  });
513
- await registerAppNavigation(rootElement, path, { ...appRouteSource });
514
+ await registerAppNavigation(rootElement, path, {
515
+ ...appRouteSource,
516
+ runtime: appRuntime
517
+ });
514
518
  return;
515
519
  }
516
520
  if (resolved.kind === "redirect") {
@@ -522,7 +526,10 @@ async function createSPA(config) {
522
526
  appRuntime,
523
527
  cspNonce: config.cspNonce
524
528
  });
525
- await registerAppNavigation(rootElement, path, { ...appRouteSource });
529
+ await registerAppNavigation(rootElement, path, {
530
+ ...appRouteSource,
531
+ runtime: appRuntime
532
+ });
526
533
  return;
527
534
  }
528
535
  await reconcileInitialRouteMetadata(resolved);
@@ -534,7 +541,10 @@ async function createSPA(config) {
534
541
  appRuntime,
535
542
  cspNonce: config.cspNonce
536
543
  });
537
- await registerAppNavigation(rootElement, path, { ...appRouteSource });
544
+ await registerAppNavigation(rootElement, path, {
545
+ ...appRouteSource,
546
+ runtime: appRuntime
547
+ });
538
548
  }
539
549
  /**
540
550
  * hydrateSPA: Hydrate server-rendered HTML with an explicit route registry.
@@ -588,7 +598,7 @@ async function hydrateSPA(config) {
588
598
  cspNonce: config.cspNonce
589
599
  }));
590
600
  if (shouldVerifyHydrationMarkup(config)) {
591
- const { verifyHydrationSyncForUrl } = await import("./verify-hydration-Bd1kGLmH.js");
601
+ const { verifyHydrationSyncForUrl } = await import("./verify-hydration-wRofFN5b.js");
592
602
  if (!verifyHydrationSyncForUrl({
593
603
  root: rootElement,
594
604
  url: currentUrl,
@@ -316,6 +316,35 @@ function getCurrentContextFrame() {
316
316
  return currentContextFrame;
317
317
  }
318
318
  //#endregion
319
+ //#region src/runtime/render-diagnostics.ts
320
+ let renderDiagnostics = {
321
+ slowRenderWarnings: true,
322
+ slowRenderThresholdMs: 5
323
+ };
324
+ /**
325
+ * Configure development render diagnostics and return a function that restores
326
+ * the previous configuration. Component counters and timing remain enabled
327
+ * when warning output is disabled.
328
+ */
329
+ function configureRenderDiagnostics(options) {
330
+ if (options.slowRenderThresholdMs !== void 0 && (!Number.isFinite(options.slowRenderThresholdMs) || options.slowRenderThresholdMs < 0)) throw new TypeError("configureRenderDiagnostics slowRenderThresholdMs must be a finite, non-negative number.");
331
+ const previous = renderDiagnostics;
332
+ renderDiagnostics = {
333
+ slowRenderWarnings: options.slowRenderWarnings ?? previous.slowRenderWarnings,
334
+ slowRenderThresholdMs: options.slowRenderThresholdMs ?? previous.slowRenderThresholdMs
335
+ };
336
+ let restored = false;
337
+ return () => {
338
+ if (restored) return;
339
+ restored = true;
340
+ if (renderDiagnostics === previous) return;
341
+ renderDiagnostics = previous;
342
+ };
343
+ }
344
+ function shouldWarnSlowRender(renderTimeMs) {
345
+ return renderDiagnostics.slowRenderWarnings && renderTimeMs > renderDiagnostics.slowRenderThresholdMs;
346
+ }
347
+ //#endregion
319
348
  //#region src/runtime/component-lifecycle.ts
320
349
  function registerCommitOperationForInstance(instance, operation) {
321
350
  if (instance) {
@@ -668,7 +697,7 @@ function executeComponentSync(instance) {
668
697
  const result = callWithContext(getExecutionContextFrame(instance.ownerFrame), instance.fn, instance.props, context);
669
698
  if (trackRenderTime) {
670
699
  const renderTime = Date.now() - renderStartTime;
671
- if (renderTime > 5) warnInstanceOnce(instance, "slow-render", `[askr] Slow render detected in ${instance.fn?.name || "<anonymous>"}: ${renderTime}ms. Consider optimizing component performance.`);
700
+ if (shouldWarnSlowRender(renderTime)) warnInstanceOnce(instance, "slow-render", `[askr] Slow render detected in ${instance.fn?.name || "<anonymous>"}: ${renderTime}ms. Consider optimizing component performance.`);
672
701
  }
673
702
  if (!instance.firstRenderComplete) instance.firstRenderComplete = true;
674
703
  didComplete = true;
@@ -708,4 +737,4 @@ function warnInstanceOnce(instance, key, message) {
708
737
  logger.warn(message);
709
738
  }
710
739
  //#endregion
711
- export { rebaseVNodeTreeWithContextFrame as _, registerCommitOperation as a, registerCommitOperationForInstance as c, getCurrentContextFrame as d, getExecutionContextFrame as f, readScope as g, markVNodeTreeWithContextFrame as h, mountInstanceInline as i, callWithContext as l, haveEquivalentContextFrames as m, createComponentInstance as n, renderComponentInline as o, getVNodeContextFrame as p, executeComponent as r, renderScopedComponent as s, captureInlineRenderSnapshot as t, defineScope as u, withAsyncResourceContext as v, withContext as y };
740
+ export { readScope as _, registerCommitOperation as a, withContext as b, registerCommitOperationForInstance as c, defineScope as d, getCurrentContextFrame as f, markVNodeTreeWithContextFrame as g, haveEquivalentContextFrames as h, mountInstanceInline as i, configureRenderDiagnostics as l, getVNodeContextFrame as m, createComponentInstance as n, renderComponentInline as o, getExecutionContextFrame as p, executeComponent as r, renderScopedComponent as s, captureInlineRenderSnapshot as t, callWithContext as u, rebaseVNodeTreeWithContextFrame as v, withAsyncResourceContext as y };
@@ -1,4 +1,4 @@
1
- import { d as VNode } from "../control-x8iehxf7.js";
1
+ import { d as VNode } from "../control-D-FIa-n-.js";
2
2
  import { r as JSXElement, s as Props } from "../jsx-BYXe_Nnk.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 Show, c as ForProps, i as MatchProps, n as CaseProps, o as ShowProps, r as Match, s as For, t as Case } from "../index-BYWsbogt.js";
1
+ import { a as Show, c as ForProps, i as MatchProps, n as CaseProps, o as ShowProps, r as Match, s as For, t as Case } from "../index-BU17hud9.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-DlwTrXBN.js";
1
+ import { i as For, n as Match, r as Show, t as Case } from "../control-CON10J1p.js";
2
2
  export { Case, For, Match, Show };
@@ -1,7 +1,7 @@
1
1
  import { i as markEagerControlPrimitive, t as __CONTROL_BOUNDARY__ } from "./control-C-ApnFs1.js";
2
2
  import { b as isDevelopmentEnvironment } from "./access-Dpfoi4cA.js";
3
3
  import { n as Fragment } from "./jsx-C3IECePB.js";
4
- import { m as createShowState, p as createCaseState, s as useForState } from "./for-internal-Be7x2TFd.js";
4
+ import { m as createShowState, p as createCaseState, s as useForState } from "./for-internal-Bsm0B8GZ.js";
5
5
  import { t as createFineGrainedEffect } from "./effect-lnxQIpJG.js";
6
6
  import { t as state } from "./state-DCjONcHK.js";
7
7
  //#region src/control/shared.ts
@@ -1,4 +1,5 @@
1
1
  import { i as JSXElementType, r as JSXElement, s as Props } from "./jsx-BYXe_Nnk.js";
2
+ import { t as DataRuntime } from "./types-iAmDSV6o.js";
2
3
  //#region src/runtime/state.d.ts
3
4
  /**
4
5
  * State value holder - callable to read, has set method to update
@@ -141,6 +142,7 @@ interface AppRenderRuntime {
141
142
  framework: Readonly<Record<string, unknown>>;
142
143
  route: unknown;
143
144
  hasRoute: boolean;
145
+ dataRuntime?: DataRuntime;
144
146
  }
145
147
  //#endregion
146
148
  //#region src/runtime/component-internal.d.ts
@@ -1,4 +1,4 @@
1
- import { g as readScope, u as defineScope } from "./component-internal-uVCJAre6.js";
1
+ import { _ as readScope, d as defineScope } from "./component-internal-C4uwwUaK.js";
2
2
  //#region src/common/url.ts
3
3
  const SAFE_URL_SCHEMES = /* @__PURE__ */ new Set([
4
4
  "http",
@@ -1,2 +1,3 @@
1
- import { A as ServerQueryHandler, C as Query, D as QueryPrefetchContext, E as QueryKeyPart, O as QueryScope, S as Mutation, T as QueryDefinition, a as defineServerQueries, b as InvalidateOnIntervalOptions, c as prefetchQuery, d as invalidateOnInterval, f as queryScope, g as createMutation, h as createQuery, i as defineQuery, k as QueryStaleReason, l as serveQuery, m as getDefaultDataRuntime, n as ServerQueryRegistry, o as dehydrateDataRuntime, p as createDataRuntime, r as createQueryPrefetchContext, s as hydrateDataRuntime, t as ServerQueryEntry, u as invalidate, v as DataRuntime, w as QueryConsistency, x as InvalidateOptions, y as DataRuntimeOptions } from "../index-SGxMZLAc.js";
2
- export { type DataRuntime, type DataRuntimeOptions, type InvalidateOnIntervalOptions, type InvalidateOptions, type Mutation, 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 { a as Mutation, c as QueryConsistency, f as QueryPrefetchContext, h as ServerQueryHandler, i as InvalidateOptions, l as QueryDefinition, m as QueryStaleReason, n as DataRuntimeOptions, o as MutationOptions, p as QueryScope, r as InvalidateOnIntervalOptions, s as Query, t as DataRuntime, u as QueryKeyPart } from "../types-iAmDSV6o.js";
2
+ import { a as defineServerQueries, c as prefetchQuery, d as invalidateOnInterval, f as queryScope, g as createMutation, h as createQuery, i as defineQuery, l as serveQuery, m as getDefaultDataRuntime, n as ServerQueryRegistry, o as dehydrateDataRuntime, p as createDataRuntime, r as createQueryPrefetchContext, s as hydrateDataRuntime, t as ServerQueryEntry, u as invalidate } from "../index-CPlPDbEY.js";
3
+ 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,4 +1,4 @@
1
- import { i as getDefaultDataRuntime, t as createDataRuntime } from "../data-runtime-CnVeSvJz.js";
2
- import { a as queryScope, i as invalidateOnInterval, n as createMutation, r as invalidate, t as createQuery } from "../data-CXZ-FOa7.js";
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-p_0kkieE.js";
1
+ import { i as getDefaultDataRuntime, t as createDataRuntime } from "../data-runtime-SC6zzAwh.js";
2
+ import { c as queryScope, n as createMutation, o as invalidate, s as invalidateOnInterval, t as createQuery } from "../data-BmZC1kDn.js";
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-IACQeDqi.js";
4
4
  export { createDataRuntime, createMutation, createQuery, createQueryPrefetchContext, defineQuery, defineServerQueries, dehydrateDataRuntime, getDefaultDataRuntime, hydrateDataRuntime, invalidate, invalidateOnInterval, prefetchQuery, queryScope, serveQuery };
@@ -1,9 +1,9 @@
1
1
  import { n as enqueueRuntimeTask, v as logger } from "./access-Dpfoi4cA.js";
2
- import { f as getCurrentComponentInstance, i as claimHookIndex } from "./component-scope-DzJEbYGE.js";
2
+ import { d as getCurrentAppRenderRuntime, f as getCurrentComponentInstance, i as claimHookIndex } from "./component-scope-DzJEbYGE.js";
3
3
  import { l as notifyReadableReaders, o as markReactivePropsDirtySource, s as markReadableDerivedSubscribersDirty, u as recordReadableRead } from "./readable-B5NtV7V0.js";
4
4
  import { n as getActiveRenderContext } from "./render-context-D0Hoj9dW.js";
5
- import { i as routeActive, n as documentVisible, o as timer, s as windowFocused } from "./lifecycle-operations-DTO93Hrl.js";
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-CnVeSvJz.js";
5
+ import { i as routeActive, n as documentVisible, o as timer, s as windowFocused } from "./lifecycle-operations-CMK1AN2C.js";
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-SC6zzAwh.js";
7
7
  //#region src/data/query-key.ts
8
8
  function serializeQueryKeyNumber(part) {
9
9
  if (Number.isNaN(part)) return "NaN";
@@ -191,19 +191,37 @@ var MutationCell = class {
191
191
  }
192
192
  };
193
193
  function createMutation(options) {
194
+ if (options.key !== void 0 && options.key.length === 0) throw new TypeError("createMutation key must be a non-empty string.");
194
195
  const instance = getCurrentComponentInstance();
195
196
  const runtimeState = resolveDataRuntimeState(options.runtime);
196
- if (!instance) return new MutationCell(options, runtimeState);
197
+ const override = options.key ? runtimeState.mutationTestOverrides.get(options.key) : void 0;
198
+ if (!instance) {
199
+ if (override) return override;
200
+ return new MutationCell(options, runtimeState);
201
+ }
197
202
  const hookIndex = claimHookIndex(instance, "mutation");
198
203
  ensureMutationCleanup(runtimeState, instance);
199
204
  const slotStore = getMutationSlotStore(runtimeState, instance);
200
- const existing = slotStore.get(hookIndex);
201
- if (existing) {
205
+ if (override) {
206
+ const existingSlot = slotStore.get(hookIndex);
207
+ if (existingSlot) {
208
+ existingSlot.cell.abort();
209
+ slotStore.delete(hookIndex);
210
+ }
211
+ return override;
212
+ }
213
+ const existingSlot = slotStore.get(hookIndex);
214
+ if (existingSlot && existingSlot.key === options.key) {
215
+ const existing = existingSlot.cell;
202
216
  existing.setOptions(options);
203
217
  return existing;
204
218
  }
219
+ if (existingSlot) existingSlot.cell.abort();
205
220
  const created = new MutationCell(options, runtimeState);
206
- slotStore.set(hookIndex, created);
221
+ slotStore.set(hookIndex, {
222
+ key: options.key,
223
+ cell: created
224
+ });
207
225
  return created;
208
226
  }
209
227
  //#endregion
@@ -538,7 +556,7 @@ function createDefinedQuery(definition, input, options = {}) {
538
556
  const runtime = options.runtime;
539
557
  const context = getActiveRenderContext();
540
558
  const key = definition.key(input);
541
- const dataRuntime = runtime ?? getActiveRenderContext()?.dataRuntime ?? getDefaultDataRuntime();
559
+ const dataRuntime = runtime ?? getActiveRenderContext()?.dataRuntime ?? getCurrentAppRenderRuntime()?.dataRuntime ?? getDefaultDataRuntime();
542
560
  const initialData = dataRuntime?.queryData.get(key);
543
561
  return createLegacyQuery({
544
562
  ...options,
@@ -560,4 +578,4 @@ function createQuery(optionsOrDefinition, input, options) {
560
578
  return createLegacyQuery(optionsOrDefinition);
561
579
  }
562
580
  //#endregion
563
- export { queryScope as a, invalidateOnInterval as i, createMutation as n, invalidate as r, createQuery as t };
581
+ 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 };
@@ -1,3 +1,4 @@
1
+ import { d as getCurrentAppRenderRuntime } from "./component-scope-DzJEbYGE.js";
1
2
  import { n as getActiveRenderContext } from "./render-context-D0Hoj9dW.js";
2
3
  //#region src/data/invalidation-listeners.ts
3
4
  const invalidationListeners = /* @__PURE__ */ new Set();
@@ -14,7 +15,7 @@ function emitInvalidation(event) {
14
15
  //#region src/data/data-runtime.ts
15
16
  const dataRuntimeStates = /* @__PURE__ */ new WeakMap();
16
17
  const dataRuntimeByQueryCache = /* @__PURE__ */ new WeakMap();
17
- function createDataRuntimeState(queryCache, queryData, queryTestOverrides) {
18
+ function createDataRuntimeState(queryCache, queryData, queryTestOverrides, mutationTestOverrides) {
18
19
  return {
19
20
  queryCache,
20
21
  queryData,
@@ -22,16 +23,18 @@ function createDataRuntimeState(queryCache, queryData, queryTestOverrides) {
22
23
  mutationSlotsByGeneration: /* @__PURE__ */ new WeakMap(),
23
24
  queryCleanupRegistered: /* @__PURE__ */ new WeakSet(),
24
25
  mutationCleanupRegistered: /* @__PURE__ */ new WeakSet(),
25
- queryTestOverrides
26
+ queryTestOverrides,
27
+ mutationTestOverrides
26
28
  };
27
29
  }
28
30
  function createDataRuntime(options = {}) {
29
31
  const runtime = Object.freeze({
30
32
  queryCache: options.queryCache ?? /* @__PURE__ */ new Map(),
31
33
  queryData: options.queryData ?? /* @__PURE__ */ new Map(),
32
- queryTestOverrides: options.queryTestOverrides ?? /* @__PURE__ */ new Map()
34
+ queryTestOverrides: options.queryTestOverrides ?? /* @__PURE__ */ new Map(),
35
+ mutationTestOverrides: options.mutationTestOverrides ?? /* @__PURE__ */ new Map()
33
36
  });
34
- dataRuntimeStates.set(runtime, createDataRuntimeState(runtime.queryCache, runtime.queryData, runtime.queryTestOverrides));
37
+ dataRuntimeStates.set(runtime, createDataRuntimeState(runtime.queryCache, runtime.queryData, runtime.queryTestOverrides, runtime.mutationTestOverrides));
35
38
  dataRuntimeByQueryCache.set(runtime.queryCache, runtime);
36
39
  return runtime;
37
40
  }
@@ -59,6 +62,8 @@ function getActiveDataRuntime() {
59
62
  const ctx = getActiveRenderContext();
60
63
  if (isDataRuntime(ctx?.dataRuntime)) return ctx.dataRuntime;
61
64
  if (ctx?.queryCache) return getDataRuntimeForQueryCache(ctx.queryCache);
65
+ const appRuntime = getCurrentAppRenderRuntime();
66
+ if (appRuntime?.dataRuntime) return appRuntime.dataRuntime;
62
67
  return defaultDataRuntime;
63
68
  }
64
69
  function getActiveDataRuntimeState() {
@@ -103,7 +108,7 @@ function ensureMutationCleanup(runtimeState, instance) {
103
108
  runtimeState.mutationCleanupRegistered.add(generation);
104
109
  const slots = getMutationSlotStore(runtimeState, instance);
105
110
  (instance.cleanupFns ??= []).push(() => {
106
- for (const cell of slots.values()) cell.abort();
111
+ for (const slot of slots.values()) slot.cell.abort();
107
112
  slots.clear();
108
113
  runtimeState.mutationSlotsByGeneration.delete(generation);
109
114
  runtimeState.mutationCleanupRegistered.delete(generation);
@@ -1,9 +1,9 @@
1
1
  import { d as getCurrentAppRenderRuntime, f as getCurrentComponentInstance } from "./component-scope-DzJEbYGE.js";
2
2
  import { i as getExecutionModel } from "./manifest-D1P9uTlz.js";
3
3
  import { n as getActiveRenderContext, r as getCurrentRenderData } from "./render-context-D0Hoj9dW.js";
4
- import { t as resource } from "./resource-operation-B94oj6xT.js";
4
+ import { t as resource } from "./resource-operation-CYDU3XzS.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-DqULzZtC.js";
6
- import { _ as createRouteHandler, d as DEFERRED_BOUNDARY, p as isDeferred, s as guardHydratedRouteData } from "./resolution-BRmiFYvw.js";
6
+ import { _ as createRouteHandler, d as DEFERRED_BOUNDARY, p as isDeferred, s as guardHydratedRouteData } from "./resolution-D3UO6aKA.js";
7
7
  import { allOf } from "@askrjs/auth";
8
8
  //#region src/router/access.ts
9
9
  function compileNodePolicies(node) {
@@ -1,7 +1,7 @@
1
1
  import { n as _isDOMElement } from "./vnode-D24p6IW2.js";
2
2
  import { b as isDevelopmentEnvironment, o as getRuntimeRenderer, v as logger } from "./access-Dpfoi4cA.js";
3
3
  import { h as getCurrentStateIndex, i as claimHookIndex, o as clearRenderTracking, p as getCurrentInstance } from "./component-scope-DzJEbYGE.js";
4
- import { _ as rebaseVNodeTreeWithContextFrame, m as haveEquivalentContextFrames, n as createComponentInstance, s as renderScopedComponent } from "./component-internal-uVCJAre6.js";
4
+ import { h as haveEquivalentContextFrames, n as createComponentInstance, s as renderScopedComponent, v as rebaseVNodeTreeWithContextFrame } from "./component-internal-C4uwwUaK.js";
5
5
  import { d as shouldCoalesceFineGrainedItemReads, l as notifyReadableReaders, o as markReactivePropsDirtySource, s as markReadableDerivedSubscribersDirty, u as recordReadableRead } from "./readable-B5NtV7V0.js";
6
6
  import { i as unregisterOwnedChildScope, r as registerOwnedChildScope, t as cleanupComponent } from "./component-cleanup-BUfUleGZ.js";
7
7
  import { o as finalizeInlineReadSubscriptions, u as registerLifecycleTransaction } from "./lifecycle-batch-Dfpid9-A.js";
@@ -1,3 +1,3 @@
1
1
  import { r as JSXElement } from "../jsx-BYXe_Nnk.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-DODUjRdZ.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-Cf2ANwPL.js";
3
3
  export { DefaultPortal, type JSXElement, type LayoutComponent, Portal, type PortalProps, Presence, type PresenceProps, Slot, type SlotProps, definePortal, layout };
@@ -1,4 +1,4 @@
1
- import { v as State } from "../../control-x8iehxf7.js";
1
+ import { v as State } from "../../control-D-FIa-n-.js";
2
2
  //#region src/foundations/state/controllable.d.ts
3
3
  declare function isControlled<T>(value: T | undefined): value is T;
4
4
  declare function resolveControllable<T>(value: T | undefined, defaultValue: T): {
@@ -1,3 +1,3 @@
1
1
  import { r as JSXElement } from "../../jsx-BYXe_Nnk.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-DODUjRdZ.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-Cf2ANwPL.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,4 +1,4 @@
1
- import { d as VNode, t as ForEachSource, u as RenderableChild } from "./control-x8iehxf7.js";
1
+ import { d as VNode, t as ForEachSource, u as RenderableChild } from "./control-D-FIa-n-.js";
2
2
  import { r as JSXElement } from "./jsx-BYXe_Nnk.js";
3
3
  //#region src/control/shared.d.ts
4
4
  type BoundaryChild = RenderableChild;
@@ -0,0 +1,64 @@
1
+ import { a as Mutation, d as QueryOptions, f as QueryPrefetchContext, h as ServerQueryHandler, i as InvalidateOptions, l as QueryDefinition, n as DataRuntimeOptions, o as MutationOptions, p as QueryScope, r as InvalidateOnIntervalOptions, s as Query, t as DataRuntime } from "./types-iAmDSV6o.js";
2
+ //#region src/common/telemetry.d.ts
3
+ interface TelemetryFields {
4
+ requestId?: string;
5
+ traceId?: string;
6
+ route?: string;
7
+ action?: string;
8
+ operation?: string;
9
+ status?: number;
10
+ durationMs?: number;
11
+ }
12
+ type TelemetrySpan = <T>(fields: TelemetryFields, work: () => T) => T;
13
+ /**
14
+ * Structural subset implemented by `createTelemetry()` from `@askrjs/otel`.
15
+ * Core does not install an OpenTelemetry SDK, backend, or exporter.
16
+ */
17
+ interface CoreTelemetry {
18
+ routeMatch?: TelemetrySpan;
19
+ loader?: TelemetrySpan;
20
+ queryPrefetch?: TelemetrySpan;
21
+ ssrRender?: TelemetrySpan;
22
+ }
23
+ //#endregion
24
+ //#region src/data/mutation-cell.d.ts
25
+ declare function createMutation<TInput, TResult>(options: MutationOptions<TInput, TResult>): Mutation<TInput, TResult>;
26
+ //#endregion
27
+ //#region src/data/query-cell.d.ts
28
+ declare function createQuery<T extends {}>(options: QueryOptions<T>): Query<T>;
29
+ declare function createQuery<TInput, TResult extends {}>(definition: QueryDefinition<TInput, TResult>, input: TInput, options?: Omit<QueryOptions<TResult>, 'key' | 'fetch'>): Query<TResult>;
30
+ //#endregion
31
+ //#region src/data/data-runtime.d.ts
32
+ declare function createDataRuntime(options?: DataRuntimeOptions): DataRuntime;
33
+ declare function getDefaultDataRuntime(): DataRuntime;
34
+ //#endregion
35
+ //#region src/data/invalidation.d.ts
36
+ declare function invalidate(prefix: string, options?: InvalidateOptions): void;
37
+ declare function queryScope(namespace: string): QueryScope;
38
+ declare function invalidateOnInterval(prefix: string, options: InvalidateOnIntervalOptions): void;
39
+ //#endregion
40
+ //#region src/data/query-registry.d.ts
41
+ interface ServerQueryRegistry {
42
+ readonly entries: readonly ServerQueryEntry<unknown, {}>[];
43
+ get<TInput, TResult extends {}>(query: QueryDefinition<TInput, TResult>): ServerQueryHandler<TInput, TResult> | undefined;
44
+ }
45
+ interface ServerQueryEntry<TInput, TResult extends {}> {
46
+ readonly query: QueryDefinition<TInput, TResult>;
47
+ readonly handler: ServerQueryHandler<TInput, TResult>;
48
+ }
49
+ declare function serveQuery<TInput, TResult extends {}>(query: QueryDefinition<TInput, TResult>, handler: ServerQueryHandler<TInput, TResult>): ServerQueryEntry<TInput, TResult>;
50
+ declare function defineServerQueries(...entries: readonly ServerQueryEntry<any, any>[]): ServerQueryRegistry;
51
+ declare function defineQuery<TInput, TResult extends {}>(definition: QueryDefinition<TInput, TResult>): QueryDefinition<TInput, TResult>;
52
+ declare function createQueryPrefetchContext(options?: {
53
+ runtime?: DataRuntime;
54
+ registry?: ServerQueryRegistry;
55
+ request?: Request;
56
+ signal?: AbortSignal;
57
+ mode?: 'ssr' | 'spa';
58
+ telemetry?: CoreTelemetry;
59
+ }): QueryPrefetchContext;
60
+ declare function prefetchQuery<TInput, TResult extends {}>(context: QueryPrefetchContext, query: QueryDefinition<TInput, TResult>, input: TInput): Promise<boolean>;
61
+ declare function dehydrateDataRuntime(runtime: DataRuntime): Record<string, unknown>;
62
+ declare function hydrateDataRuntime(runtime: DataRuntime, data: unknown): void;
63
+ //#endregion
64
+ export { CoreTelemetry as _, defineServerQueries as a, prefetchQuery as c, invalidateOnInterval as d, queryScope as f, createMutation as g, createQuery as h, defineQuery as i, serveQuery as l, getDefaultDataRuntime as m, ServerQueryRegistry as n, dehydrateDataRuntime as o, createDataRuntime as p, createQueryPrefetchContext as r, hydrateDataRuntime as s, ServerQueryEntry as t, invalidate as u };
@@ -1,4 +1,4 @@
1
- import { u as RenderableChild } from "./control-x8iehxf7.js";
1
+ import { u as RenderableChild } from "./control-D-FIa-n-.js";
2
2
  import { r as JSXElement } from "./jsx-BYXe_Nnk.js";
3
3
  import "./types-CsPtBGWb.js";
4
4
  //#region src/foundations/structures/layout.d.ts
@@ -1,7 +1,8 @@
1
- import { a as ComponentInstance, b as StateTuple, i as ReadableSource, n as ChildScope, o as Scope, r as DOMRange, u as RenderableChild } from "./control-x8iehxf7.js";
1
+ import { a as ComponentInstance, b as StateTuple, i as ReadableSource, n as ChildScope, o as Scope, r as DOMRange, u as RenderableChild } from "./control-D-FIa-n-.js";
2
2
  import { r as JSXElement } from "./jsx-BYXe_Nnk.js";
3
+ import { f as QueryPrefetchContext } from "./types-iAmDSV6o.js";
3
4
  import { t as Scheduler } from "./scheduler-CmLO4Dfm.js";
4
- import { D as QueryPrefetchContext, _ as CoreTelemetry } from "./index-SGxMZLAc.js";
5
+ import { _ as CoreTelemetry } from "./index-CPlPDbEY.js";
5
6
  import "./jsx-runtime-BqhMEuT4.js";
6
7
  import { AuthContext, AuthRequirement } from "@askrjs/auth";
7
8
  import { InferSchema, ObjectSchema } from "@askrjs/schema";
@@ -71,6 +72,20 @@ type SnapshotSource<T> = {
71
72
  declare function derive<TOut>(fn: () => TOut): Derived<TOut>;
72
73
  declare function derive<TIn, TOut>(source: SnapshotSource<TIn> | TIn | (() => TIn), map: (value: TIn) => TOut): Derived<TOut | null>;
73
74
  //#endregion
75
+ //#region src/runtime/render-diagnostics.d.ts
76
+ interface RenderDiagnosticsOptions {
77
+ /** Emit one warning per component instance when a render exceeds the threshold. */
78
+ slowRenderWarnings?: boolean;
79
+ /** Slow-render threshold in milliseconds. The default is 5. */
80
+ slowRenderThresholdMs?: number;
81
+ }
82
+ /**
83
+ * Configure development render diagnostics and return a function that restores
84
+ * the previous configuration. Component counters and timing remain enabled
85
+ * when warning output is disabled.
86
+ */
87
+ declare function configureRenderDiagnostics(options: RenderDiagnosticsOptions): () => void;
88
+ //#endregion
74
89
  //#region src/runtime/selector.d.ts
75
90
  interface Selector<T> {
76
91
  (candidate: T): boolean;
@@ -440,4 +455,4 @@ declare function action<TInput extends Record<string, unknown>, TResult = unknow
440
455
  submit(input: TInput): Promise<TResult>;
441
456
  };
442
457
  //#endregion
443
- export { cspNonce as $, RouteHandler as A, RouteQuery as B, Route as C, RouteContext as D, RouteComponent as E, RouteMode as F, RouteRegistryOptions as G, RouteRef as H, RouteOptions as I, RouteRequestResult as J, RouteRenderResult as K, RouteParams as L, RouteMatch as M, RouteMeta as N, RouteDefinition as O, RouteMetaSource as P, CspNonceScope as Q, RoutePathParams as R, ParsedSegment as S, RouteAuthResolver as T, RouteRefSearch as U, RouteRecord as V, RouteRegistry as W, RouteSearchValue as X, RouteSearch as Y, RouteSnapshot as Z, AccessRedirectStatus as _, action as a, AskrRuntimeOptions as at, PageHelperOptions as b, createRef as c, createRuntime as ct, registerSSRStyle as d, Selector as et, AccessAllowDecision as f, AccessRedirectDecision as g, AccessDenyStatus as h, ActionValidationError as i, AskrRuntime as it, RouteManifest as j, RouteDestination as k, DeferredBoundaryRegistration as l, getDefaultRuntime as lt, AccessDenyDecision as m, ActionForm as n, Derived as nt, defineAction as o, RuntimeKeyedReorderDecision as ot, AccessDecision as p, RouteRequestOptions as q, ActionStatus as r, derive as rt, Ref as s, RuntimeRendererHost as st, ActionDescriptor as t, selector as tt, SSRPortalState as u, getSignal as ut, GroupHelperOptions as v, RouteAuthOptions as w, PageScopeRecord as x, LayoutScopeRecord as y, RoutePolicy as z };
458
+ export { cspNonce as $, RouteHandler as A, RouteQuery as B, Route as C, RouteContext as D, RouteComponent as E, RouteMode as F, RouteRegistryOptions as G, RouteRef as H, RouteOptions as I, RouteRequestResult as J, RouteRenderResult as K, RouteParams as L, RouteMatch as M, RouteMeta as N, RouteDefinition as O, RouteMetaSource as P, CspNonceScope as Q, RoutePathParams as R, ParsedSegment as S, RouteAuthResolver as T, RouteRefSearch as U, RouteRecord as V, RouteRegistry as W, RouteSearchValue as X, RouteSearch as Y, RouteSnapshot as Z, AccessRedirectStatus as _, action as a, derive as at, PageHelperOptions as b, createRef as c, RuntimeKeyedReorderDecision as ct, registerSSRStyle as d, getDefaultRuntime as dt, Selector as et, AccessAllowDecision as f, getSignal as ft, AccessRedirectDecision as g, AccessDenyStatus as h, ActionValidationError as i, Derived as it, RouteManifest as j, RouteDestination as k, DeferredBoundaryRegistration as l, RuntimeRendererHost as lt, AccessDenyDecision as m, ActionForm as n, RenderDiagnosticsOptions as nt, defineAction as o, AskrRuntime as ot, AccessDecision as p, RouteRequestOptions as q, ActionStatus as r, configureRenderDiagnostics as rt, Ref as s, AskrRuntimeOptions as st, ActionDescriptor as t, selector as tt, SSRPortalState as u, createRuntime as ut, GroupHelperOptions as v, RouteAuthOptions as w, PageScopeRecord as x, LayoutScopeRecord as y, RoutePolicy as z };