@askrjs/askr 0.0.53 → 0.0.55

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 (46) hide show
  1. package/dist/actions/index.d.ts +1 -1
  2. package/dist/benchmark.js +5 -5
  3. package/dist/boot/index.d.ts +2 -2
  4. package/dist/boot/index.js +1 -1
  5. package/dist/{boot-j2KoN6ss.js → boot-2ZR3MtO0.js} +8 -8
  6. package/dist/{cleanup-COv77su2.js → cleanup-DScKZG2i.js} +1 -1
  7. package/dist/{component-internal-B3z7GXlD.js → component-internal-D9PLuFUc.js} +1 -1
  8. package/dist/{component-lifecycle-CO4hXlP4.js → component-lifecycle-C7lnU9Bt.js} +3 -1
  9. package/dist/components/index.d.ts +1 -1
  10. package/dist/control/index.d.ts +1 -1
  11. package/dist/control/index.js +1 -1
  12. package/dist/{control-BQvNVfAd.d.ts → control-BI4RMD2z.d.ts} +1 -0
  13. package/dist/{control-BYyLTFyw.js → control-mXROCjL3.js} +1 -1
  14. package/dist/data/index.js +1 -1
  15. package/dist/{data-DnxnDxD-.js → data-B9dauyDn.js} +1 -1
  16. package/dist/{deferred-lKE8uR0z.js → deferred-DklLG4qM.js} +3 -3
  17. package/dist/{for-internal-BKf_Tnv1.js → for-internal-CSz8Unkq.js} +2 -2
  18. package/dist/foundations/index.d.ts +1 -1
  19. package/dist/foundations/index.js +1 -1
  20. package/dist/foundations/state/index.d.ts +1 -1
  21. package/dist/foundations/structures/index.d.ts +1 -1
  22. package/dist/foundations/structures/index.js +1 -1
  23. package/dist/{index-31Uoz_NS.d.ts → index-B1LNotpU.d.ts} +1 -1
  24. package/dist/{index-SJXJkssx.d.ts → index-C8iW3xCt.d.ts} +1 -1
  25. package/dist/{index-D73jgYx1.d.ts → index-DwxdIA-t.d.ts} +1 -1
  26. package/dist/{index-R2JJIbM-.d.ts → index-Zb31mCiU.d.ts} +1 -1
  27. package/dist/index.d.ts +3 -3
  28. package/dist/index.js +4 -4
  29. package/dist/{lifecycle-operations-D9va7GOU.js → lifecycle-operations-CdRjdsHo.js} +1 -1
  30. package/dist/{navigate-CmPLSXyw.js → navigate-D17eVQyI.js} +5 -5
  31. package/dist/{portal-CyU3Ucf2.js → portal-C47xkwXj.js} +40 -7
  32. package/dist/{renderer-DzPjeLby.js → renderer-DrLRAD5y.js} +111 -42
  33. package/dist/{resource-operation-CEzfpnDk.js → resource-operation-BNY29MVH.js} +2 -2
  34. package/dist/resources/index.js +2 -2
  35. package/dist/router/index.d.ts +2 -2
  36. package/dist/router/index.js +2 -2
  37. package/dist/{router-CeYvjj5_.d.ts → router-DCfwLBr-.d.ts} +2 -2
  38. package/dist/ssg/index.d.ts +2 -2
  39. package/dist/ssg/index.js +2 -2
  40. package/dist/ssr/index.d.ts +2 -2
  41. package/dist/ssr/index.js +1 -1
  42. package/dist/{ssr-D3t80Rc0.js → ssr-DEARZxJ5.js} +5 -5
  43. package/dist/testing/index.d.ts +1 -1
  44. package/dist/{types-DnQVG4ZY.d.ts → types-BujHn5pL.d.ts} +1 -1
  45. package/dist/{verify-hydration-io9ahUeq.js → verify-hydration-BWwu-mWu.js} +1 -1
  46. package/package.json +4 -3
@@ -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-SJXJkssx.js";
1
+ import { a as action, i as ActionValidationError, n as ActionForm, o as defineAction, r as ActionStatus, t as ActionDescriptor } from "../index-C8iW3xCt.js";
2
2
  export { ActionDescriptor, ActionForm, ActionStatus, ActionValidationError, action, defineAction };
package/dist/benchmark.js CHANGED
@@ -1,10 +1,10 @@
1
1
  import { r as flushRuntimeScheduler } from "./access-Bg4RJNC8.js";
2
- import { t as installRendererBridge } from "./renderer-DzPjeLby.js";
2
+ import { t as installRendererBridge } from "./renderer-DrLRAD5y.js";
3
3
  import { t as state } from "./state-DPl8lffD.js";
4
4
  import { t as selector } from "./selector-DafVYzV4.js";
5
5
  import { jsx, jsxs } from "./jsx-runtime.js";
6
- import { i as For } from "./control-BYyLTFyw.js";
7
- import { t as createIsland } from "./boot-j2KoN6ss.js";
6
+ import { i as For } from "./control-mXROCjL3.js";
7
+ import { t as createIsland } from "./boot-2ZR3MtO0.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.53",
67
- buildLabel: "0.0.53-local"
66
+ packageVersion: "0.0.55",
67
+ buildLabel: "0.0.55-local"
68
68
  };
69
69
  function getBenchmarkMetadata() {
70
70
  return { ...benchmarkMetadata };
@@ -1,6 +1,6 @@
1
- import { s as ComponentFunction } from "../control-BQvNVfAd.js";
1
+ import { s as ComponentFunction } from "../control-BI4RMD2z.js";
2
2
  import { v as DataRuntime } from "../index-Bki2rqcr.js";
3
- import { P as RouteRegistry, m as RouteAuthOptions, p as Route, x as RouteManifest } from "../router-CeYvjj5_.js";
3
+ import { P as RouteRegistry, m as RouteAuthOptions, p as Route, x as RouteManifest } from "../router-DCfwLBr-.js";
4
4
  import { d as ScrollRestorationOptions } from "../navigate-BVDCzOuB.js";
5
5
 
6
6
  //#region src/boot/types.d.ts
@@ -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-j2KoN6ss.js";
1
+ import { a as cleanupApp, i as hydrateSPA, n as createIslands, o as hasApp, r as createSPA, t as createIsland } from "../boot-2ZR3MtO0.js";
2
2
  export { cleanupApp, createIsland, createIslands, createSPA, hasApp, hydrateSPA };
@@ -1,16 +1,16 @@
1
1
  import { b as isDevelopmentEnvironment, r as flushRuntimeScheduler, v as logger, x as isProductionEnvironment } from "./access-Bg4RJNC8.js";
2
2
  import { n as Fragment, t as ELEMENT_TYPE } from "./jsx-CUpRxrLH.js";
3
- import { n as createComponentInstance, r as mountComponent } from "./component-internal-B3z7GXlD.js";
4
- import { h as cleanupComponent, m as isPromiseLike } from "./component-lifecycle-CO4hXlP4.js";
5
- import { a as withIntrinsicHydrationAdoption, i as registerDeferredHydrationBoundary, n as activateHydrationBoundary$1, o as setStaticChildSlotsCacheEnabled, r as clearDeferredHydrationBoundaries, t as installRendererBridge } from "./renderer-DzPjeLby.js";
6
- import { _ as teardownNodeSubtree, d as removeAllListeners } from "./cleanup-COv77su2.js";
7
- import { D as assertExecutionModel, E as route, a as resolveRouteMeta, b as createAppRenderRuntime, c as registerAppInstance, d as clearRoutes, g as _snapshotRouteSourceLazy, h as _snapshotLazy, i as reconcileRouteMeta, l as unregisterAppInstance, m as _drainLazy, s as configureScrollRestoration, t as initializeNavigation, u as _applyManifest, y as setServerLocation } from "./navigate-CmPLSXyw.js";
3
+ import { n as createComponentInstance, r as mountComponent } from "./component-internal-D9PLuFUc.js";
4
+ import { h as cleanupComponent, m as isPromiseLike } from "./component-lifecycle-C7lnU9Bt.js";
5
+ import { a as withIntrinsicHydrationAdoption, i as registerDeferredHydrationBoundary, n as activateHydrationBoundary$1, o as setStaticChildSlotsCacheEnabled, r as clearDeferredHydrationBoundaries, t as installRendererBridge } from "./renderer-DrLRAD5y.js";
6
+ import { _ as teardownNodeSubtree, d as removeAllListeners } from "./cleanup-DScKZG2i.js";
7
+ import { D as assertExecutionModel, E as route, a as resolveRouteMeta, b as createAppRenderRuntime, c as registerAppInstance, d as clearRoutes, g as _snapshotRouteSourceLazy, h as _snapshotLazy, i as reconcileRouteMeta, l as unregisterAppInstance, m as _drainLazy, s as configureScrollRestoration, t as initializeNavigation, u as _applyManifest, y as setServerLocation } from "./navigate-D17eVQyI.js";
8
8
  import { a as startHydrationRenderPhase, s as stopHydrationRenderPhase } from "./render-context-Clw3rFiO.js";
9
- import { a as disposeDefaultPortalScope, t as DefaultPortal } from "./portal-CyU3Ucf2.js";
9
+ import { a as disposeDefaultPortalScope, t as DefaultPortal } from "./portal-C47xkwXj.js";
10
10
  import { i as getDefaultDataRuntime } from "./data-runtime-SJ1BSUvk.js";
11
11
  import { a as hydrateDataRuntime } from "./query-registry-CQIT4mXr.js";
12
12
  import { a as resolveRouteFromRoutes, d as _setActiveRouteAuthOptions, j as lockRouteRegistration, k as hasRegisteredRoutes } from "./route-matching-vJpvLVbX.js";
13
- import { _ as pageRenderEnvelope, d as hasRouteRenderData, f as resolveRouteRequest, l as getRouteRenderContext, o as reviveDeferredValue, u as getRouteRenderData } from "./deferred-lKE8uR0z.js";
13
+ import { _ as pageRenderEnvelope, d as hasRouteRenderData, f as resolveRouteRequest, l as getRouteRenderContext, o as reviveDeferredValue, u as getRouteRenderData } from "./deferred-DklLG4qM.js";
14
14
  import "./ssr-CbQO5xd3.js";
15
15
  //#region src/boot/hydration.ts
16
16
  const DEFERRED_PAYLOAD = "__askr_deferred__";
@@ -601,7 +601,7 @@ async function hydrateSPA(config) {
601
601
  handler: r.handler,
602
602
  namespace: r.options.namespace
603
603
  })) : routeTable;
604
- const { verifyHydrationSyncForUrl } = await import("./verify-hydration-io9ahUeq.js");
604
+ const { verifyHydrationSyncForUrl } = await import("./verify-hydration-BWwu-mWu.js");
605
605
  if (!verifyHydrationSyncForUrl({
606
606
  root: rootElement,
607
607
  url: currentUrl,
@@ -1,6 +1,6 @@
1
1
  import { c as runRuntimeHandlerScope, v as logger } from "./access-Bg4RJNC8.js";
2
2
  import "./fastlane-Dw8SOBr9.js";
3
- import { f as registerLifecycleTransaction, h as cleanupComponent } from "./component-lifecycle-CO4hXlP4.js";
3
+ import { f as registerLifecycleTransaction, h as cleanupComponent } from "./component-lifecycle-C7lnU9Bt.js";
4
4
  //#region src/runtime/events.ts
5
5
  /**
6
6
  * Event delegation system for Askr
@@ -3,7 +3,7 @@ import { b as isDevelopmentEnvironment, n as enqueueRuntimeTask, o as getRuntime
3
3
  import { r as tryRuntimeFastLaneSync, s as finalizeReadableSubscriptions } from "./fastlane-Dw8SOBr9.js";
4
4
  import { r as STATIC_CHILDREN, t as ELEMENT_TYPE } from "./jsx-CUpRxrLH.js";
5
5
  import { C as restoreRenderScopedComponent, S as restoreInlineRenderTracking, _ as getSignalForInstance, b as restoreDomCommitScope, c as enterDomCommitScope, f as getCurrentComponentInstance, l as enterRenderScopedComponent, m as getCurrentPortalScope, n as captureInlineComponentScope, o as clearRenderTracking, p as getCurrentInstance, r as captureInlineRenderTracking, s as enterComponentExecutionScope, t as beginRenderTracking, u as exitComponentExecutionScope, v as resetRenderState, x as restoreInlineComponentScope } from "./component-scope-CC3cojX9.js";
6
- import { a as captureInlineRenderSnapshot$1, c as finalizeInlineReadSubscriptions, i as beginLifecycleCommitBatch, l as flushLifecycleCommitBatch, m as isPromiseLike, n as commitRenderedComponent$1, o as discardLifecycleCommitBatch, p as discardCommitOperations, r as registerCommitOperationForInstance, t as commitLifecycleForInstance } from "./component-lifecycle-CO4hXlP4.js";
6
+ import { a as captureInlineRenderSnapshot$1, c as finalizeInlineReadSubscriptions, i as beginLifecycleCommitBatch, l as flushLifecycleCommitBatch, m as isPromiseLike, n as commitRenderedComponent$1, o as discardLifecycleCommitBatch, p as discardCommitOperations, r as registerCommitOperationForInstance, t as commitLifecycleForInstance } from "./component-lifecycle-C7lnU9Bt.js";
7
7
  //#region src/runtime/context.ts
8
8
  const ROOT_EXECUTION_FRAME = {
9
9
  parent: null,
@@ -262,7 +262,8 @@ function captureInlineRenderSnapshot(instance) {
262
262
  ownerFrame: instance.ownerFrame,
263
263
  portalScope: instance.portalScope,
264
264
  parentInstance: instance.parentInstance,
265
- isRoot: instance.isRoot
265
+ isRoot: instance.isRoot,
266
+ vnodeParentGeneration: instance._vnodeParentGeneration
266
267
  });
267
268
  }
268
269
  function finalizeInlineReadSubscriptions(instance, token, pendingReadSources, pendingReadSourceVersions) {
@@ -328,6 +329,7 @@ function discardLifecycleCommitBatch(batch) {
328
329
  snapshot.instance.portalScope = snapshot.portalScope;
329
330
  snapshot.instance.parentInstance = snapshot.parentInstance;
330
331
  snapshot.instance.isRoot = snapshot.isRoot;
332
+ snapshot.instance._vnodeParentGeneration = snapshot.vnodeParentGeneration;
331
333
  }
332
334
  for (const entry of batch.entries) {
333
335
  if (entry.wasFirstMount) entry.instance.mountOperations = void 0;
@@ -1,4 +1,4 @@
1
- import { l as VNode } from "../control-BQvNVfAd.js";
1
+ import { l as VNode } from "../control-BI4RMD2z.js";
2
2
  import { r as JSXElement, s as Props } from "../jsx-CP0gmYwJ.js";
3
3
 
4
4
  //#region src/common/error-boundary.d.ts
@@ -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-D73jgYx1.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-DwxdIA-t.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-BYyLTFyw.js";
1
+ import { i as For, n as Match, r as Show, t as Case } from "../control-mXROCjL3.js";
2
2
  export { Case, For, Match, Show };
@@ -173,6 +173,7 @@ interface ComponentInstance {
173
173
  _appRenderRuntime?: AppRenderRuntime;
174
174
  _vnodeOwner?: object;
175
175
  _vnodeParent?: ComponentInstance | null;
176
+ _vnodeParentGeneration?: object;
176
177
  _vnodeKey?: string | number;
177
178
  _vnodePosition?: number;
178
179
  _wrapperDepth?: number;
@@ -1,7 +1,7 @@
1
1
  import { r as markEagerControlPrimitive, t as __CONTROL_BOUNDARY__ } from "./control-DhFRTIoE.js";
2
2
  import { b as isDevelopmentEnvironment } from "./access-Bg4RJNC8.js";
3
3
  import { n as Fragment } from "./jsx-CUpRxrLH.js";
4
- import { m as createShowState, p as createCaseState, s as useForState } from "./for-internal-BKf_Tnv1.js";
4
+ import { m as createShowState, p as createCaseState, s as useForState } from "./for-internal-CSz8Unkq.js";
5
5
  import { t as createFineGrainedEffect } from "./effect-BwnIvLah.js";
6
6
  import { t as state } from "./state-DPl8lffD.js";
7
7
  //#region src/control/shared.ts
@@ -1,4 +1,4 @@
1
1
  import { i as getDefaultDataRuntime, t as createDataRuntime } from "../data-runtime-SJ1BSUvk.js";
2
- import { a as queryScope, i as invalidateOnInterval, n as createMutation, r as invalidate, t as createQuery } from "../data-DnxnDxD-.js";
2
+ import { a as queryScope, i as invalidateOnInterval, n as createMutation, r as invalidate, t as createQuery } from "../data-B9dauyDn.js";
3
3
  import { a as hydrateDataRuntime, i as dehydrateDataRuntime, n as defineQuery, o as prefetchQuery, r as defineServerQueries, s as serveQuery, t as createQueryPrefetchContext } from "../query-registry-CQIT4mXr.js";
4
4
  export { createDataRuntime, createMutation, createQuery, createQueryPrefetchContext, defineQuery, defineServerQueries, dehydrateDataRuntime, getDefaultDataRuntime, hydrateDataRuntime, invalidate, invalidateOnInterval, prefetchQuery, queryScope, serveQuery };
@@ -2,7 +2,7 @@ import { n as enqueueRuntimeTask, v as logger } from "./access-Bg4RJNC8.js";
2
2
  import { f as notifyReadableReaders, l as markReactivePropsDirtySource, p as recordReadableRead, u as markReadableDerivedSubscribersDirty } from "./fastlane-Dw8SOBr9.js";
3
3
  import { f as getCurrentComponentInstance, i as claimHookIndex } from "./component-scope-CC3cojX9.js";
4
4
  import { n as getActiveRenderContext } from "./render-context-Clw3rFiO.js";
5
- import { c as windowFocused, i as routeActive, n as documentVisible, s as timer } from "./lifecycle-operations-D9va7GOU.js";
5
+ import { c as windowFocused, i as routeActive, n as documentVisible, s as timer } from "./lifecycle-operations-CdRjdsHo.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-SJ1BSUvk.js";
7
7
  //#region src/data/query-key.ts
8
8
  function serializeQueryKeyNumber(part) {
@@ -1,9 +1,9 @@
1
1
  import { n as Fragment, t as ELEMENT_TYPE } from "./jsx-CUpRxrLH.js";
2
- import { h as readScope, u as defineScope } from "./component-internal-B3z7GXlD.js";
2
+ import { h as readScope, u as defineScope } from "./component-internal-D9PLuFUc.js";
3
3
  import { d as getCurrentAppRenderRuntime } from "./component-scope-CC3cojX9.js";
4
- import { m as isPromiseLike } from "./component-lifecycle-CO4hXlP4.js";
4
+ import { m as isPromiseLike } from "./component-lifecycle-C7lnU9Bt.js";
5
5
  import { n as getActiveRenderContext, r as getCurrentRenderData } from "./render-context-Clw3rFiO.js";
6
- import { t as resource } from "./resource-operation-CEzfpnDk.js";
6
+ import { t as resource } from "./resource-operation-BNY29MVH.js";
7
7
  import { t as ROUTE_ROOT_COMPONENT } from "./router-internal-BC0w1_xk.js";
8
8
  import { c as withTelemetry, t as createQueryPrefetchContext } from "./query-registry-CQIT4mXr.js";
9
9
  import { E as getRouteRecords, h as getActiveRouteAuthOptions, i as getMatchingRouteRecord, o as buildRouteContext, s as buildRouteContextBase } from "./route-matching-vJpvLVbX.js";
@@ -1,9 +1,9 @@
1
1
  import { r as _isDOMElement } from "./vnode-CGMJYPMB.js";
2
2
  import { b as isDevelopmentEnvironment, o as getRuntimeRenderer, v as logger } from "./access-Bg4RJNC8.js";
3
3
  import { f as notifyReadableReaders, l as markReactivePropsDirtySource, m as shouldCoalesceFineGrainedItemReads, p as recordReadableRead, u as markReadableDerivedSubscribersDirty } from "./fastlane-Dw8SOBr9.js";
4
- import { n as createComponentInstance, s as renderScopedComponent } from "./component-internal-B3z7GXlD.js";
4
+ import { n as createComponentInstance, s as renderScopedComponent } from "./component-internal-D9PLuFUc.js";
5
5
  import { h as getCurrentStateIndex, i as claimHookIndex, o as clearRenderTracking, p as getCurrentInstance } from "./component-scope-CC3cojX9.js";
6
- import { _ as registerOwnedChildScope, c as finalizeInlineReadSubscriptions, f as registerLifecycleTransaction, h as cleanupComponent, v as unregisterOwnedChildScope } from "./component-lifecycle-CO4hXlP4.js";
6
+ import { _ as registerOwnedChildScope, c as finalizeInlineReadSubscriptions, f as registerLifecycleTransaction, h as cleanupComponent, v as unregisterOwnedChildScope } from "./component-lifecycle-C7lnU9Bt.js";
7
7
  //#region src/runtime/child-scope.ts
8
8
  const EMPTY_CHILD_SCOPE_PROPS = {};
9
9
  const childScopesByInstance = /* @__PURE__ */ new WeakMap();
@@ -1,3 +1,3 @@
1
1
  import { r as JSXElement } from "../jsx-CP0gmYwJ.js";
2
- import { _ as definePortal, c as Presence, d as SlotProps, f as LayoutComponent, g as PortalProps, h as Portal, l as PresenceProps, m as DefaultPortal, p as layout, u as Slot } from "../index-31Uoz_NS.js";
2
+ import { _ as definePortal, c as Presence, d as SlotProps, f as LayoutComponent, g as PortalProps, h as Portal, l as PresenceProps, m as DefaultPortal, p as layout, u as Slot } from "../index-B1LNotpU.js";
3
3
  export { DefaultPortal, type JSXElement, type LayoutComponent, Portal, type PortalProps, Presence, type PresenceProps, Slot, type SlotProps, definePortal, layout };
@@ -1,3 +1,3 @@
1
- import { i as definePortal, n as Portal, t as DefaultPortal } from "../portal-CyU3Ucf2.js";
1
+ import { i as definePortal, n as Portal, t as DefaultPortal } from "../portal-C47xkwXj.js";
2
2
  import { a as layout, i as Slot, r as Presence } from "../structures-DUB3HchX.js";
3
3
  export { DefaultPortal, Portal, Presence, Slot, definePortal, layout };
@@ -1,4 +1,4 @@
1
- import { m as State } from "../../control-BQvNVfAd.js";
1
+ import { m as State } from "../../control-BI4RMD2z.js";
2
2
 
3
3
  //#region src/foundations/state/controllable.d.ts
4
4
  declare function isControlled<T>(value: T | undefined): value is T;
@@ -1,3 +1,3 @@
1
1
  import { r as JSXElement } from "../../jsx-CP0gmYwJ.js";
2
- import { _ as definePortal, a as Collection, c as Presence, d as SlotProps, f as LayoutComponent, g as PortalProps, h as Portal, i as createLayer, l as PresenceProps, m as DefaultPortal, n as LayerManager, o as CollectionItem, p as layout, r as LayerOptions, s as createCollection, t as Layer, u as Slot } from "../../index-31Uoz_NS.js";
2
+ import { _ as definePortal, a as Collection, c as Presence, d as SlotProps, f as LayoutComponent, g as PortalProps, h as Portal, i as createLayer, l as PresenceProps, m as DefaultPortal, n as LayerManager, o as CollectionItem, p as layout, r as LayerOptions, s as createCollection, t as Layer, u as Slot } from "../../index-B1LNotpU.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, createCollection, createLayer, definePortal, layout };
@@ -1,3 +1,3 @@
1
- import { i as definePortal, n as Portal, t as DefaultPortal } from "../../portal-CyU3Ucf2.js";
1
+ import { i as definePortal, n as Portal, t as DefaultPortal } from "../../portal-C47xkwXj.js";
2
2
  import { a as layout, i as Slot, n as createCollection, r as Presence, t as createLayer } from "../../structures-DUB3HchX.js";
3
3
  export { DefaultPortal, Portal, Presence, Slot, createCollection, createLayer, definePortal, layout };
@@ -1,4 +1,4 @@
1
- import { c as RenderableChild } from "./control-BQvNVfAd.js";
1
+ import { c as RenderableChild } from "./control-BI4RMD2z.js";
2
2
  import { r as JSXElement } from "./jsx-CP0gmYwJ.js";
3
3
  //#region src/runtime/portal.d.ts
4
4
  interface Portal<T extends RenderableChild = RenderableChild> {
@@ -1,4 +1,4 @@
1
- import { c as RenderableChild, g as StateTuple } from "./control-BQvNVfAd.js";
1
+ import { c as RenderableChild, g as StateTuple } from "./control-BI4RMD2z.js";
2
2
  import { r as JSXElement } from "./jsx-CP0gmYwJ.js";
3
3
  import { ObjectSchema } from "@askrjs/schema";
4
4
 
@@ -1,4 +1,4 @@
1
- import { c as RenderableChild, l as VNode, t as ForEachSource } from "./control-BQvNVfAd.js";
1
+ import { c as RenderableChild, l as VNode, t as ForEachSource } from "./control-BI4RMD2z.js";
2
2
  import { r as JSXElement } from "./jsx-CP0gmYwJ.js";
3
3
 
4
4
  //#region src/control/shared.d.ts
@@ -1,4 +1,4 @@
1
- import { n as ReadableSource, r as ComponentInstance } from "./control-BQvNVfAd.js";
1
+ import { n as ReadableSource, r as ComponentInstance } from "./control-BI4RMD2z.js";
2
2
  import { t as Scheduler } from "./scheduler-CmLO4Dfm.js";
3
3
  //#region src/runtime/runtime.d.ts
4
4
  interface RuntimeKeyedReorderDecision {
package/dist/index.d.ts CHANGED
@@ -1,8 +1,8 @@
1
- import { _ as state, a as defineScope, g as StateTuple, h as StateSetter, i as Scope, m as State, o as readScope } from "./control-BQvNVfAd.js";
1
+ import { _ as state, a as defineScope, g as StateTuple, h as StateSetter, i as Scope, m as State, o as readScope } from "./control-BI4RMD2z.js";
2
2
  import { s as Props, t as Fragment } from "./jsx-CP0gmYwJ.js";
3
3
  import { t as getSignal } from "./component-scope-CvPba6O6.js";
4
- import { a as AskrRuntime, c as RuntimeRendererHost, i as derive, l as createRuntime, n as selector, o as AskrRuntimeOptions, r as Derived, s as RuntimeKeyedReorderDecision, t as Selector, u as getDefaultRuntime } from "./index-R2JJIbM-.js";
5
- 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-D73jgYx1.js";
4
+ import { a as AskrRuntime, c as RuntimeRendererHost, i as derive, l as createRuntime, n as selector, o as AskrRuntimeOptions, r as Derived, s as RuntimeKeyedReorderDecision, t as Selector, u as getDefaultRuntime } from "./index-Zb31mCiU.js";
5
+ 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-DwxdIA-t.js";
6
6
  import { i as jsxs, n as jsx } from "./jsx-runtime-92bV2hSa.js";
7
7
  import { A as ServerQueryHandler, D as QueryPrefetchContext, T as QueryDefinition, a as defineServerQueries, c as prefetchQuery, g as createQuery, i as defineQuery, l as serveQuery, o as dehydrateDataRuntime, s as hydrateDataRuntime, v as DataRuntime } from "./index-Bki2rqcr.js";
8
8
  export { AskrRuntime, type AskrRuntimeOptions, Case, type CaseProps, type DataRuntime, type Derived, For, type ForProps, Fragment, Match, type MatchProps, type Props, type QueryDefinition, type QueryPrefetchContext, type RuntimeKeyedReorderDecision, type RuntimeRendererHost, type Scope, type Selector, type ServerQueryHandler, Show, type ShowProps, type State, type StateSetter, type StateTuple, createQuery, createRuntime, defineQuery, defineScope, defineServerQueries, dehydrateDataRuntime, derive, getDefaultRuntime, getSignal, hydrateDataRuntime, jsx, jsxs, prefetchQuery, readScope, selector, serveQuery, state };
package/dist/index.js CHANGED
@@ -1,15 +1,15 @@
1
1
  import { a as getRuntimeFlushVersion, d as AskrRuntime, m as getDefaultRuntime, p as createRuntime, t as enqueueRuntimeLane } from "./access-Bg4RJNC8.js";
2
2
  import { f as notifyReadableReaders, g as withDerivedReadTracking, h as syncDerivedDependencySubscriptions, l as markReactivePropsDirtySource, o as clearDerivedDependencySubscriptions, p as recordReadableRead, u as markReadableDerivedSubscribersDirty } from "./fastlane-Dw8SOBr9.js";
3
3
  import { n as Fragment } from "./jsx-CUpRxrLH.js";
4
- import { h as readScope, u as defineScope } from "./component-internal-B3z7GXlD.js";
4
+ import { h as readScope, u as defineScope } from "./component-internal-D9PLuFUc.js";
5
5
  import { g as getSignal, i as claimHookIndex, p as getCurrentInstance } from "./component-scope-CC3cojX9.js";
6
6
  import { n as isSnapshotSource } from "./snapshot-source-BB42xgwb.js";
7
- import { t as installRendererBridge } from "./renderer-DzPjeLby.js";
7
+ import { t as installRendererBridge } from "./renderer-DrLRAD5y.js";
8
8
  import { t as state } from "./state-DPl8lffD.js";
9
9
  import { t as selector } from "./selector-DafVYzV4.js";
10
10
  import { jsx, jsxs } from "./jsx-runtime.js";
11
- import { i as For, n as Match, r as Show, t as Case } from "./control-BYyLTFyw.js";
12
- import { t as createQuery } from "./data-DnxnDxD-.js";
11
+ import { i as For, n as Match, r as Show, t as Case } from "./control-mXROCjL3.js";
12
+ import { t as createQuery } from "./data-B9dauyDn.js";
13
13
  import { a as hydrateDataRuntime, i as dehydrateDataRuntime, n as defineQuery, o as prefetchQuery, r as defineServerQueries, s as serveQuery } from "./query-registry-CQIT4mXr.js";
14
14
  //#region src/runtime/derive.ts
15
15
  const deriveCells = /* @__PURE__ */ new WeakMap();
@@ -1,4 +1,4 @@
1
- import { a as registerCommitOperation } from "./component-internal-B3z7GXlD.js";
1
+ import { a as registerCommitOperation } from "./component-internal-D9PLuFUc.js";
2
2
  import { f as getCurrentComponentInstance, i as claimHookIndex } from "./component-scope-CC3cojX9.js";
3
3
  import { t as isRouteActivityActive } from "./route-activity-CNJfpwx-.js";
4
4
  //#region src/runtime/lifecycle-operations.ts
@@ -1,15 +1,15 @@
1
1
  import { b as isDevelopmentEnvironment, r as flushRuntimeScheduler, v as logger, x as isProductionEnvironment } from "./access-Bg4RJNC8.js";
2
2
  import { f as notifyReadableReaders, i as cleanupReadableSubscriptionSources, l as markReactivePropsDirtySource, p as recordReadableRead, u as markReadableDerivedSubscribersDirty } from "./fastlane-Dw8SOBr9.js";
3
3
  import { n as Fragment, t as ELEMENT_TYPE } from "./jsx-CUpRxrLH.js";
4
- import { r as mountComponent } from "./component-internal-B3z7GXlD.js";
4
+ import { r as mountComponent } from "./component-internal-D9PLuFUc.js";
5
5
  import { d as getCurrentAppRenderRuntime, f as getCurrentComponentInstance } from "./component-scope-CC3cojX9.js";
6
- import { g as cleanupComponentGeneration, h as cleanupComponent, i as beginLifecycleCommitBatch, l as flushLifecycleCommitBatch, m as isPromiseLike, o as discardLifecycleCommitBatch, s as drainLifecycleCommitErrors } from "./component-lifecycle-CO4hXlP4.js";
7
- import { _ as teardownNodeSubtree } from "./cleanup-COv77su2.js";
6
+ import { g as cleanupComponentGeneration, h as cleanupComponent, i as beginLifecycleCommitBatch, l as flushLifecycleCommitBatch, m as isPromiseLike, o as discardLifecycleCommitBatch, s as drainLifecycleCommitErrors } from "./component-lifecycle-C7lnU9Bt.js";
7
+ import { _ as teardownNodeSubtree } from "./cleanup-DScKZG2i.js";
8
8
  import { n as getActiveRenderContext } from "./render-context-Clw3rFiO.js";
9
9
  import { n as syncRouteActivitySnapshot } from "./route-activity-CNJfpwx-.js";
10
- import { r as clearDefaultPortalForInstance, t as DefaultPortal } from "./portal-CyU3Ucf2.js";
10
+ import { r as clearDefaultPortalForInstance, t as DefaultPortal } from "./portal-C47xkwXj.js";
11
11
  import { A as insertRecordSorted, C as getCurrentPathPrefix, D as getRoutes, E as getRouteRecords, F as snapshotRouteState, I as computeRank, L as normalizeRouteSegmentName, M as pushRegistrationScope, N as restoreRouteState, O as hasActivePageScope, P as setDefaultRouteAuthOptions, R as parseSegments, S as getCurrentPageScope, T as getDefaultRouteAuthOptions, _ as getCurrentInheritedAuthRequirements, a as resolveRouteFromRoutes, b as getCurrentLayoutChain, c as deepFreeze, f as addRouteToStores, g as getActiveRoutes, j as lockRouteRegistration, l as makeQuery, m as clearRouteState, n as computeMatchesFromRoutes, p as assertRouteRegistrationUnlocked, r as computeRouteActivityMatches, u as parseLocation, v as getCurrentInheritedMeta, w as getCurrentScopeKind, x as getCurrentPageChain, y as getCurrentInheritedPolicies } from "./route-matching-vJpvLVbX.js";
12
- import { d as hasRouteRenderData, f as resolveRouteRequest, l as getRouteRenderContext, u as getRouteRenderData, y as createRouteHandler } from "./deferred-lKE8uR0z.js";
12
+ import { d as hasRouteRenderData, f as resolveRouteRequest, l as getRouteRenderContext, u as getRouteRenderData, y as createRouteHandler } from "./deferred-DklLG4qM.js";
13
13
  import { allOf } from "@askrjs/auth";
14
14
  //#region src/runtime/execution-model.ts
15
15
  const EXECUTION_MODEL_KEY = Symbol.for("__ASKR_EXECUTION_MODEL__");
@@ -1,7 +1,7 @@
1
1
  import { o as getRuntimeRenderer } from "./access-Bg4RJNC8.js";
2
2
  import { f as notifyReadableReaders, l as markReactivePropsDirtySource, p as recordReadableRead, u as markReadableDerivedSubscribersDirty } from "./fastlane-Dw8SOBr9.js";
3
3
  import { f as getCurrentComponentInstance, m as getCurrentPortalScope } from "./component-scope-CC3cojX9.js";
4
- import { f as registerLifecycleTransaction, h as cleanupComponent, u as getCurrentLifecycleCommitBatch } from "./component-lifecycle-CO4hXlP4.js";
4
+ import { f as registerLifecycleTransaction, h as cleanupComponent, u as getCurrentLifecycleCommitBatch } from "./component-lifecycle-C7lnU9Bt.js";
5
5
  //#region src/runtime/portal.ts
6
6
  function createPortalSlot() {
7
7
  let currentValue;
@@ -52,6 +52,26 @@ let _hasPendingDefaultPortalValue = false;
52
52
  let _pendingDefaultPortalValue = void 0;
53
53
  let _pendingDefaultPortalWrites = /* @__PURE__ */ new WeakMap();
54
54
  const _batchPortalWrites = /* @__PURE__ */ new WeakMap();
55
+ function trackBatchPortalWrite(batch, state, transaction) {
56
+ let current = batch;
57
+ while (current) {
58
+ let writes = _batchPortalWrites.get(current);
59
+ if (!writes) {
60
+ writes = /* @__PURE__ */ new Map();
61
+ _batchPortalWrites.set(current, writes);
62
+ }
63
+ if (!writes.has(state)) writes.set(state, transaction);
64
+ current = current.parent;
65
+ }
66
+ }
67
+ function clearTrackedBatchPortalWrite(transaction) {
68
+ let batch = transaction.batch ?? null;
69
+ while (batch) {
70
+ const writes = _batchPortalWrites.get(batch);
71
+ if (writes?.get(transaction.state) === transaction) writes.delete(transaction.state);
72
+ batch = batch.parent;
73
+ }
74
+ }
55
75
  function createExplicitHostSource(readCount) {
56
76
  let source = (() => {
57
77
  recordReadableRead(source);
@@ -177,20 +197,20 @@ function writeDefaultPortal(props, owner) {
177
197
  };
178
198
  if (registerLifecycleTransaction(state, () => {
179
199
  if (_batchPortalWrites.get(batch)?.get(state) !== transaction) return;
180
- _batchPortalWrites.get(batch)?.delete(state);
200
+ clearTrackedBatchPortalWrite(transaction);
181
201
  applyDefaultPortalWrite(state, transaction.children, transaction.owner);
182
202
  }, () => {
183
- if (_batchPortalWrites.get(batch)?.get(state) === transaction) _batchPortalWrites.get(batch)?.delete(state);
203
+ clearTrackedBatchPortalWrite(transaction);
184
204
  }, () => {
185
205
  const parentBatch = batch.parent;
186
206
  const parentWrite = parentBatch ? _batchPortalWrites.get(parentBatch)?.get(state) : void 0;
187
- if (parentWrite) {
207
+ if (parentWrite && parentWrite !== transaction) {
188
208
  parentWrite.owner = transaction.owner;
189
209
  parentWrite.children = transaction.children;
190
210
  }
191
- _batchPortalWrites.get(batch)?.delete(state);
211
+ clearTrackedBatchPortalWrite(transaction);
192
212
  })) {
193
- writes.set(state, transaction);
213
+ trackBatchPortalWrite(batch, state, transaction);
194
214
  return;
195
215
  }
196
216
  }
@@ -229,6 +249,19 @@ function applyPendingDefaultPortalValue(scope) {
229
249
  _hasPendingDefaultPortalValue = false;
230
250
  _pendingDefaultPortalValue = void 0;
231
251
  }
252
+ function getPendingDefaultPortalWrite(state) {
253
+ let batch = getCurrentLifecycleCommitBatch();
254
+ while (batch) {
255
+ const pending = _batchPortalWrites.get(batch)?.get(state);
256
+ if (pending) return pending;
257
+ batch = batch.parent;
258
+ }
259
+ return _pendingDefaultPortalWrites.get(state);
260
+ }
261
+ function hasPendingReplacementPortalOwner(state, owner, generation) {
262
+ const pendingOwner = getPendingDefaultPortalWrite(state)?.owner;
263
+ return Boolean(pendingOwner && (pendingOwner.instance !== owner || pendingOwner.generation !== generation));
264
+ }
232
265
  function registerDefaultPortalOwner(owner) {
233
266
  const scope = resolveDefaultPortalScope(owner);
234
267
  if (!scope) return;
@@ -239,7 +272,7 @@ function registerDefaultPortalOwner(owner) {
239
272
  (owner.cleanupFns ??= []).push(() => {
240
273
  const currentState = _defaultPortalStates.get(scope);
241
274
  if (!currentState) return;
242
- if (currentState.owner?.instance === owner && currentState.owner.generation === generation) applyDefaultPortalWrite(currentState, void 0, null);
275
+ if (currentState.owner?.instance === owner && currentState.owner.generation === generation && !hasPendingReplacementPortalOwner(currentState, owner, generation)) applyDefaultPortalWrite(currentState, void 0, null);
243
276
  if (currentState.cleanupOwners.delete(generation)) {}
244
277
  });
245
278
  }
@@ -2,12 +2,12 @@ import { n as __FOR_BOUNDARY__, r as _isDOMElement, t as __ERROR_BOUNDARY__ } fr
2
2
  import { b as isDevelopmentEnvironment, c as runRuntimeHandlerScope, f as configureRuntimeRenderer, i as getDefaultRuntimeInstance, n as enqueueRuntimeTask, v as logger, y as getRuntimeEnv } from "./access-Bg4RJNC8.js";
3
3
  import { n as markFastPathApplied, t as isBulkCommitActive } from "./fastlane-Dw8SOBr9.js";
4
4
  import { n as Fragment, r as STATIC_CHILDREN } from "./jsx-CUpRxrLH.js";
5
- import { _ as withContext, c as warnUnusedStateReads, d as getCurrentContextFrame, i as mountInstanceInline, m as markVNodeTreeWithContextFrame, n as createComponentInstance, o as renderComponentInline, p as getVNodeContextFrame, t as captureInlineRenderSnapshot } from "./component-internal-B3z7GXlD.js";
5
+ import { _ as withContext, c as warnUnusedStateReads, d as getCurrentContextFrame, i as mountInstanceInline, m as markVNodeTreeWithContextFrame, n as createComponentInstance, o as renderComponentInline, p as getVNodeContextFrame, t as captureInlineRenderSnapshot } from "./component-internal-D9PLuFUc.js";
6
6
  import { b as restoreDomCommitScope, c as enterDomCommitScope, p as getCurrentInstance } from "./component-scope-CC3cojX9.js";
7
- import { d as registerLifecycleRollback, f as registerLifecycleTransaction, h as cleanupComponent, i as beginLifecycleCommitBatch, l as flushLifecycleCommitBatch, m as isPromiseLike, o as discardLifecycleCommitBatch, u as getCurrentLifecycleCommitBatch } from "./component-lifecycle-CO4hXlP4.js";
8
- import { _ as createChildScope, a as registerForStateTransaction, c as captureForFallbackTransactionSnapshot, d as clearCaseDomUpdateState, f as clearShowDomUpdateState, g as evaluateShowState, h as evaluateCaseState, i as evaluateForState, l as captureForItemTransactionSnapshot, n as clearForDomUpdateState, o as rollbackForStateTransaction, t as beginForStateTransaction, v as disposeChildScope, y as rerenderChildScope } from "./for-internal-BKf_Tnv1.js";
7
+ import { d as registerLifecycleRollback, f as registerLifecycleTransaction, h as cleanupComponent, i as beginLifecycleCommitBatch, l as flushLifecycleCommitBatch, m as isPromiseLike, o as discardLifecycleCommitBatch, u as getCurrentLifecycleCommitBatch } from "./component-lifecycle-C7lnU9Bt.js";
8
+ import { _ as createChildScope, a as registerForStateTransaction, c as captureForFallbackTransactionSnapshot, d as clearCaseDomUpdateState, f as clearShowDomUpdateState, g as evaluateShowState, h as evaluateCaseState, i as evaluateForState, l as captureForItemTransactionSnapshot, n as clearForDomUpdateState, o as rollbackForStateTransaction, t as beginForStateTransaction, v as disposeChildScope, y as rerenderChildScope } from "./for-internal-CSz8Unkq.js";
9
9
  import { n as createOwnedFineGrainedEffect, r as markFineGrainedEffectsDirtySource, t as createFineGrainedEffect } from "./effect-BwnIvLah.js";
10
- import { C as getDelegatedHandlersForElement, D as updateDelegatedListener, E as removeDelegatedListener, S as getDelegatedHandlerForElement, T as isEventDelegationEnabled, _ as teardownNodeSubtree, a as elementReactivePropsCleanup, b as addFreshDelegatedListener, c as forEachElementReactivePropCleanup, d as removeAllListeners, f as removeElementReactiveProps, g as setFreshElementReactivePropCleanup, h as setDirectElementReactivePropCleanup, i as elementListeners, l as getElementReactivePropCleanupSize, m as replaceElementRefBookkeeping, n as cleanupInstanceIfPresent, o as elementRefs, p as removeElementRef, r as cleanupInstancesUnder, s as forEachDescendantNode, t as REACTIVE_CHILDREN_KEY, u as getElementReactivePropsCleanupMap, v as updateElementRef, w as isDelegatedEvent, x as clearDelegatedHandlersForElement, y as addDelegatedListener } from "./cleanup-COv77su2.js";
10
+ import { C as getDelegatedHandlersForElement, D as updateDelegatedListener, E as removeDelegatedListener, S as getDelegatedHandlerForElement, T as isEventDelegationEnabled, _ as teardownNodeSubtree, a as elementReactivePropsCleanup, b as addFreshDelegatedListener, c as forEachElementReactivePropCleanup, d as removeAllListeners, f as removeElementReactiveProps, g as setFreshElementReactivePropCleanup, h as setDirectElementReactivePropCleanup, i as elementListeners, l as getElementReactivePropCleanupSize, m as replaceElementRefBookkeeping, n as cleanupInstanceIfPresent, o as elementRefs, p as removeElementRef, r as cleanupInstancesUnder, s as forEachDescendantNode, t as REACTIVE_CHILDREN_KEY, u as getElementReactivePropsCleanupMap, v as updateElementRef, w as isDelegatedEvent, x as clearDelegatedHandlersForElement, y as addDelegatedListener } from "./cleanup-DScKZG2i.js";
11
11
  import { t as getPublicAttributeName } from "./attr-names-CjhzmHOn.js";
12
12
  import { t as ROUTE_ROOT_COMPONENT } from "./router-internal-BC0w1_xk.js";
13
13
  //#region src/runtime/error-boundary.ts
@@ -1540,10 +1540,10 @@ function reconcileSingleChild(child, index, parent, resolveOldElOnce, resolveUnk
1540
1540
  return reconcileSingleChild(resolvedControlBoundary.vnode, index, parent, resolveOldElOnce, resolveUnkeyedOnce, usedOldEls, newKeyMap);
1541
1541
  }
1542
1542
  const key = extractKey(child);
1543
- if (key !== void 0) return reconcileKeyedChild(child, key, parent, resolveOldElOnce, newKeyMap);
1543
+ if (key !== void 0) return reconcileKeyedChild(child, key, parent, resolveOldElOnce, usedOldEls, newKeyMap);
1544
1544
  return reconcileUnkeyedChild(child, index, parent, resolveUnkeyedOnce, usedOldEls);
1545
1545
  }
1546
- function reconcileKeyedChild(child, key, parent, resolveOldElOnce, newKeyMap) {
1546
+ function reconcileKeyedChild(child, key, parent, resolveOldElOnce, usedOldEls, newKeyMap) {
1547
1547
  const el = resolveOldElOnce(key);
1548
1548
  const parentNamespace = getParentNamespace(parent);
1549
1549
  const domHost = getRendererDOMHost();
@@ -1564,6 +1564,17 @@ function reconcileKeyedChild(child, key, parent, resolveOldElOnce, newKeyMap) {
1564
1564
  }
1565
1565
  }
1566
1566
  }
1567
+ if (isComponentVNode(child)) {
1568
+ const componentHost = findKeyedComponentHost(parent, key, usedOldEls);
1569
+ if (componentHost) {
1570
+ const synced = domHost.syncComponentElement(componentHost, child, child.type, (child.props ?? {}) || {}, parentNamespace);
1571
+ if (synced) {
1572
+ usedOldEls.add(synced);
1573
+ if (synced instanceof Element) newKeyMap.set(key, synced);
1574
+ return synced;
1575
+ }
1576
+ }
1577
+ }
1567
1578
  const dom = domHost.createDOMNode(child, parentNamespace);
1568
1579
  if (dom) {
1569
1580
  if (dom instanceof Element) newKeyMap.set(key, dom);
@@ -1571,6 +1582,18 @@ function reconcileKeyedChild(child, key, parent, resolveOldElOnce, newKeyMap) {
1571
1582
  }
1572
1583
  return null;
1573
1584
  }
1585
+ function findKeyedComponentHost(parent, key, usedOldEls) {
1586
+ for (const node of parent.childNodes) {
1587
+ if (usedOldEls.has(node)) continue;
1588
+ const host = node;
1589
+ const instances = new Set(host.__ASKR_INSTANCES ?? []);
1590
+ if (host.__ASKR_INSTANCE) instances.add(host.__ASKR_INSTANCE);
1591
+ if (Array.from(instances).some((instance) => instance._vnodeKey === key)) {
1592
+ usedOldEls.add(node);
1593
+ return node;
1594
+ }
1595
+ }
1596
+ }
1574
1597
  function reconcileUnkeyedChild(child, index, parent, resolveUnkeyedOnce, usedOldEls) {
1575
1598
  const parentNamespace = getParentNamespace(parent);
1576
1599
  const domHost = getRendererDOMHost();
@@ -1583,7 +1606,7 @@ function reconcileUnkeyedChild(child, index, parent, resolveUnkeyedOnce, usedOld
1583
1606
  }
1584
1607
  return domHost.createDOMNode(child, parentNamespace);
1585
1608
  }
1586
- if (existing instanceof Element) {
1609
+ if (existing) {
1587
1610
  const synced = trySyncComponentChild(existing, child, usedOldEls, parentNamespace);
1588
1611
  if (synced) return synced;
1589
1612
  }
@@ -2596,7 +2619,7 @@ function updateMixedControlChildren(parent, children, forceUpdate) {
2596
2619
  cursor = cursor.nextSibling;
2597
2620
  continue;
2598
2621
  }
2599
- if (cursor instanceof Element && _isDOMElement(child) && typeof child.type === "function") {
2622
+ if (cursor && _isDOMElement(child) && typeof child.type === "function") {
2600
2623
  const synced = domHost.syncComponentElement(cursor, child, child.type, (child.props ?? {}) || {}, parentNamespace, forceUpdate);
2601
2624
  if (synced) {
2602
2625
  cursor = synced.nextSibling;
@@ -2730,6 +2753,7 @@ function updateUnkeyedChildren(parent, newChildren, forceUpdate = false) {
2730
2753
  }
2731
2754
  }
2732
2755
  } else {
2756
+ if (typeof next.type === "function" && trySyncComponentChild(currentNode, next)) continue;
2733
2757
  const dom = domHost.createDOMNode(next, parentNamespace);
2734
2758
  if (dom) {
2735
2759
  teardownNodeSubtree(currentNode);
@@ -4644,7 +4668,7 @@ function pruneComponentHostInstances(host, retainedInstances) {
4644
4668
  const retained = new Set(retainedInstances);
4645
4669
  const currentInstances = collectHostInstances(host);
4646
4670
  const nextInstances = Array.from(currentInstances).filter((instance) => retained.has(instance));
4647
- for (const instance of retained) if (instance.target === host && !nextInstances.includes(instance)) nextInstances.push(instance);
4671
+ for (const instance of retained) if ((instance.target === host || instance._placeholder === host) && !nextInstances.includes(instance)) nextInstances.push(instance);
4648
4672
  writeHostInstances(host, nextInstances);
4649
4673
  cleanupHostInstances(Array.from(currentInstances).filter((instance) => !retained.has(instance)), "Component host pruning failed");
4650
4674
  };
@@ -4751,6 +4775,7 @@ function inheritComponentKey(target, source) {
4751
4775
  function setComponentOwnershipIdentity(instance, node, parent, wrapperDepth = 0, position) {
4752
4776
  instance._vnodeOwner = typeof node === "object" && node !== null ? node : void 0;
4753
4777
  instance._vnodeParent = parent;
4778
+ instance._vnodeParentGeneration = parent?._ownershipGeneration;
4754
4779
  const key = extractKey(node);
4755
4780
  if (key === void 0) delete instance._vnodeKey;
4756
4781
  else instance._vnodeKey = key;
@@ -4784,6 +4809,22 @@ function findHostInstanceByType(host, type, node, parent, wrapperDepth) {
4784
4809
  }
4785
4810
  return null;
4786
4811
  }
4812
+ /**
4813
+ * Resolve an instance on a comment host only when the vnode carries durable
4814
+ * identity. Fresh unkeyed null components intentionally supersede the old
4815
+ * generation instead of falling back to type-only reuse.
4816
+ */
4817
+ function findStableHostInstanceByType(host, type, node, parent, wrapperDepth) {
4818
+ const instances = new Set(host.__ASKR_INSTANCES ?? []);
4819
+ if (host.__ASKR_INSTANCE) instances.add(host.__ASKR_INSTANCE);
4820
+ const parentGeneration = parent?._ownershipGeneration;
4821
+ const vnodeOwner = getVNodeComponentInstance(node);
4822
+ if (vnodeOwner?.fn === type && instances.has(vnodeOwner) && vnodeOwner._vnodeParent === parent && vnodeOwner._vnodeParentGeneration === parentGeneration) return vnodeOwner;
4823
+ const key = extractKey(node);
4824
+ if (key === void 0) return null;
4825
+ const matches = Array.from(instances).filter((instance) => instance.fn === type && instance._vnodeParent === parent && instance._vnodeParentGeneration === parentGeneration && instance._vnodeKey === key && instance._wrapperDepth === wrapperDepth);
4826
+ return matches.length > 0 ? matches[matches.length - 1] : null;
4827
+ }
4787
4828
  //#endregion
4788
4829
  //#region src/renderer/component-host-replacement.ts
4789
4830
  function cleanupProvisionalComponentInstance(instance) {
@@ -4799,20 +4840,15 @@ function createRetainedHostInstanceSet(owner, additional) {
4799
4840
  for (const instance of additional ?? []) retained.add(instance);
4800
4841
  return retained;
4801
4842
  }
4802
- function cleanupReplacementNode(node, retainedInstance) {
4803
- if (node instanceof Element) {
4804
- cleanupDetachedComponentHost(node, retainedInstance);
4805
- return;
4806
- }
4807
- try {
4808
- delete node.__ASKR_INSTANCE;
4809
- } catch {}
4843
+ function cleanupReplacementNode(node, retainedInstances) {
4844
+ cleanupDetachedComponentHost(node, retainedInstances);
4810
4845
  }
4811
4846
  function beginComponentHostReplacement(existingHost, retainedInstance, previousTarget, retainedInstances = [retainedInstance], disposeOnRollback = false) {
4812
4847
  const parent = existingHost.parentNode;
4813
- const previousRef = elementRefs.get(existingHost);
4848
+ const previousRef = existingHost instanceof Element ? elementRefs.get(existingHost) : void 0;
4814
4849
  let previousRefDetached = false;
4815
4850
  let nextDom = null;
4851
+ let previousBindings = /* @__PURE__ */ new Map();
4816
4852
  let didReplace = false;
4817
4853
  let replacementAttempted = false;
4818
4854
  let finished = false;
@@ -4821,8 +4857,15 @@ function beginComponentHostReplacement(existingHost, retainedInstance, previousT
4821
4857
  finished = true;
4822
4858
  if (replacementAttempted && didReplace) {
4823
4859
  const retained = Array.from(retainedInstances);
4824
- if (nextDom instanceof Element) {
4825
- for (const instance of retained) if (instance.target === existingHost) instance.target = nextDom;
4860
+ if (nextDom) for (const [instance, binding] of previousBindings) {
4861
+ if (binding.target !== existingHost && binding.placeholder !== existingHost) continue;
4862
+ if (nextDom instanceof Element) {
4863
+ instance.target = nextDom;
4864
+ instance._placeholder = void 0;
4865
+ } else if (nextDom instanceof Comment) {
4866
+ instance.target = null;
4867
+ instance._placeholder = nextDom;
4868
+ }
4826
4869
  }
4827
4870
  cleanupDetachedComponentHost(existingHost, retained);
4828
4871
  }
@@ -4832,18 +4875,24 @@ function beginComponentHostReplacement(existingHost, retainedInstance, previousT
4832
4875
  finished = true;
4833
4876
  if (!replacementAttempted) return;
4834
4877
  const rollbackErrors = [];
4878
+ const retained = Array.from(retainedInstances);
4835
4879
  if (nextDom && nextDom !== existingHost) try {
4836
- cleanupReplacementNode(nextDom, retainedInstance);
4880
+ cleanupReplacementNode(nextDom, retained);
4837
4881
  } catch (error) {
4838
4882
  rollbackErrors.push(error);
4839
4883
  }
4840
4884
  try {
4841
4885
  if (disposeOnRollback) cleanupComponent(retainedInstance);
4842
- else retainedInstance.target = previousTarget;
4886
+ for (const [instance, binding] of previousBindings) {
4887
+ if (disposeOnRollback && instance === retainedInstance) continue;
4888
+ instance.target = binding.target;
4889
+ instance._placeholder = binding.placeholder;
4890
+ }
4891
+ if (!previousBindings.has(retainedInstance) && !disposeOnRollback) retainedInstance.target = previousTarget;
4843
4892
  } catch (error) {
4844
4893
  rollbackErrors.push(error);
4845
4894
  }
4846
- if (previousRefDetached && previousRef) try {
4895
+ if (previousRefDetached && previousRef && existingHost instanceof Element) try {
4847
4896
  updateElementRef(existingHost, previousRef);
4848
4897
  } catch (error) {
4849
4898
  rollbackErrors.push(error);
@@ -4853,11 +4902,15 @@ function beginComponentHostReplacement(existingHost, retainedInstance, previousT
4853
4902
  const staged = registerLifecycleTransaction({}, commit, rollback);
4854
4903
  const replace = (materialize, prepareNextDom) => {
4855
4904
  replacementAttempted = true;
4856
- if (!staged && previousRef) {
4905
+ if (!staged && previousRef && existingHost instanceof Element) {
4857
4906
  removeElementRef(existingHost);
4858
4907
  previousRefDetached = true;
4859
4908
  }
4860
4909
  try {
4910
+ previousBindings = new Map(Array.from(retainedInstances, (instance) => [instance, {
4911
+ target: instance.target,
4912
+ placeholder: instance._placeholder
4913
+ }]));
4861
4914
  nextDom = materialize();
4862
4915
  prepareNextDom(nextDom);
4863
4916
  if (parent && nextDom !== existingHost) {
@@ -4899,7 +4952,9 @@ function materializeComponentResultNode(childInstance, result, parentNamespace)
4899
4952
  if (!dom) {
4900
4953
  const placeholder = document.createComment("");
4901
4954
  try {
4902
- placeholder.__ASKR_INSTANCE = childInstance;
4955
+ const host = placeholder;
4956
+ host.__ASKR_INSTANCE = childInstance;
4957
+ host.__ASKR_INSTANCES = [childInstance];
4903
4958
  } catch {}
4904
4959
  childInstance._placeholder = placeholder;
4905
4960
  mountInstanceInline(childInstance, null);
@@ -4977,7 +5032,13 @@ function resolveHostNestedComponentResult(host, retainedInstance, result, snapsh
4977
5032
  currentResult = markVNodeTreeWithContextFrame(nextResult, activeSnapshot);
4978
5033
  depth += 1;
4979
5034
  }
4980
- for (const instance of createdInstances) mountInstanceInline(instance, host);
5035
+ for (const instance of createdInstances) if (host instanceof Element) {
5036
+ instance._placeholder = void 0;
5037
+ mountInstanceInline(instance, host);
5038
+ } else {
5039
+ mountInstanceInline(instance, null);
5040
+ instance._placeholder = host;
5041
+ }
4981
5042
  } catch (error) {
4982
5043
  for (let index = createdVNodeOwners.length - 1; index >= 0; index -= 1) {
4983
5044
  const owner = createdVNodeOwners[index];
@@ -5017,11 +5078,12 @@ function resolveWrapperHostResult(host, result, snapshot, retainedInstances) {
5017
5078
  //#endregion
5018
5079
  //#region src/renderer/component-host.ts
5019
5080
  function syncComponentElement(currentDom, node, type, props, parentNamespace, forceChildrenUpdate = false, retainedHostInstances) {
5020
- const existingHost = currentDom instanceof Element ? currentDom : null;
5021
- const existingInstance = existingHost ? findHostInstanceByType(existingHost, type, node, getCurrentInstance(), 0) : null;
5081
+ const existingHost = currentDom instanceof Element || currentDom instanceof Comment ? currentDom : null;
5082
+ const existingInstance = existingHost ? existingHost instanceof Comment ? findStableHostInstanceByType(existingHost, type, node, getCurrentInstance(), 0) : findHostInstanceByType(existingHost, type, node, getCurrentInstance(), 0) : null;
5022
5083
  if (!existingHost) return null;
5023
5084
  const domHost = getRendererDOMHost();
5024
5085
  if (!existingInstance || existingInstance.fn !== type) {
5086
+ if (!(existingHost instanceof Element)) return null;
5025
5087
  const snapshot = getVNodeContextFrame(node) || getCurrentContextFrame() || null;
5026
5088
  const hydrationInstance = createComponentInstance(nextComponentInstanceId(), type, props || {}, existingHost);
5027
5089
  setComponentOwnershipIdentity(hydrationInstance, node, getCurrentInstance(), 0);
@@ -5061,10 +5123,8 @@ function syncComponentElement(currentDom, node, type, props, parentNamespace, fo
5061
5123
  return existingHost;
5062
5124
  }
5063
5125
  const nextDom = replacement.replace(() => materializeComponentResultNode(hydrationInstance, scopedResult, parentNamespace), (replacement) => {
5064
- if (replacement instanceof Element) {
5065
- materializeKey(replacement, node, props);
5066
- retainReplacementOwnerChain(replacement, hydrationInstance, liveRetainedInstances);
5067
- }
5126
+ if (replacement instanceof Element) materializeKey(replacement, node, props);
5127
+ retainReplacementOwnerChain(replacement, hydrationInstance, liveRetainedInstances);
5068
5128
  });
5069
5129
  warnUnusedStateReads(hydrationInstance);
5070
5130
  return nextDom;
@@ -5088,13 +5148,13 @@ function syncComponentElement(currentDom, node, type, props, parentNamespace, fo
5088
5148
  const result = withContext(snapshot, () => renderComponentInline(existingInstance));
5089
5149
  if (isPromiseLike(result)) throw new Error("Async components are not supported. Components must return synchronously.");
5090
5150
  const scopedResult = markVNodeTreeWithContextFrame(result, snapshot ?? null);
5091
- if (existingHost.__ASKR_WRAPPER_HOST) {
5151
+ if (existingHost instanceof Element && existingHost.__ASKR_WRAPPER_HOST) {
5092
5152
  const wrapperResult = resolveWrapperHostResult(existingHost, scopedResult, snapshot ?? null, liveRetainedInstances);
5093
5153
  domHost.updateElementChildren(existingHost, normalizeComponentChildren(wrapperResult));
5094
5154
  warnUnusedStateReads(existingInstance);
5095
5155
  return existingHost;
5096
5156
  }
5097
- if (scopedResult && typeof scopedResult === "object" && "type" in scopedResult && typeof scopedResult.type === "string" && tagNamesEqualIgnoreCase$1(existingHost.tagName, scopedResult.type)) {
5157
+ if (existingHost instanceof Element && scopedResult && typeof scopedResult === "object" && "type" in scopedResult && typeof scopedResult.type === "string" && tagNamesEqualIgnoreCase$1(existingHost.tagName, scopedResult.type)) {
5098
5158
  withContext(snapshot, () => {
5099
5159
  domHost.updateElementFromVnode(existingHost, inheritComponentKey(scopedResult, node), true, forceChildrenUpdate || existingInstance.mounted === false);
5100
5160
  materializeKey(existingHost, node, props);
@@ -5103,7 +5163,16 @@ function syncComponentElement(currentDom, node, type, props, parentNamespace, fo
5103
5163
  return existingHost;
5104
5164
  }
5105
5165
  const resolvedResult = resolveHostNestedComponentResult(existingHost, existingInstance, scopedResult, snapshot ?? null, liveRetainedInstances);
5106
- if (_isDOMElement(resolvedResult) && typeof resolvedResult.type === "string" && tagNamesEqualIgnoreCase$1(existingHost.tagName, resolvedResult.type)) {
5166
+ if (existingHost instanceof Comment && (resolvedResult === null || resolvedResult === void 0 || resolvedResult === false)) {
5167
+ retainReplacementOwnerChain(existingHost, existingInstance, liveRetainedInstances);
5168
+ for (const instance of liveRetainedInstances) if (instance.target === null || instance._placeholder === existingHost) {
5169
+ instance.target = null;
5170
+ instance._placeholder = existingHost;
5171
+ }
5172
+ warnUnusedStateReads(existingInstance);
5173
+ return existingHost;
5174
+ }
5175
+ if (existingHost instanceof Element && _isDOMElement(resolvedResult) && typeof resolvedResult.type === "string" && tagNamesEqualIgnoreCase$1(existingHost.tagName, resolvedResult.type)) {
5107
5176
  withContext(snapshot, () => {
5108
5177
  domHost.updateElementFromVnode(existingHost, inheritComponentKey(resolvedResult, node), true, forceChildrenUpdate || existingInstance.mounted === false);
5109
5178
  materializeKey(existingHost, node, props);
@@ -5112,10 +5181,8 @@ function syncComponentElement(currentDom, node, type, props, parentNamespace, fo
5112
5181
  return existingHost;
5113
5182
  }
5114
5183
  const nextDom = replacement.replace(() => materializeComponentResultNode(existingInstance, scopedResult, parentNamespace), (replacement) => {
5115
- if (replacement instanceof Element) {
5116
- materializeKey(replacement, node, props);
5117
- retainReplacementOwnerChain(replacement, existingInstance, liveRetainedInstances);
5118
- }
5184
+ if (replacement instanceof Element) materializeKey(replacement, node, props);
5185
+ retainReplacementOwnerChain(replacement, existingInstance, liveRetainedInstances);
5119
5186
  });
5120
5187
  warnUnusedStateReads(existingInstance);
5121
5188
  return nextDom;
@@ -6140,9 +6207,11 @@ function evaluateInLifecycleBatch(node, target, context, retainedOwner) {
6140
6207
  const retainedHostInstances = getRetainedHostOwnerChain(targetWithInstance, targetInstance);
6141
6208
  if (_isDOMElement(vnode) && typeof vnode.type === "function") {
6142
6209
  const syncedDom = syncComponentElement(target, vnode, vnode.type, (vnode.props ?? {}) || {}, void 0, false, retainedHostInstances);
6143
- if (syncedDom instanceof Element) {
6144
- retainHostOwnerChain(syncedDom, targetInstance, retainedHostInstances);
6145
- targetInstance.target = syncedDom;
6210
+ if (syncedDom) {
6211
+ if (syncedDom instanceof Element) {
6212
+ retainHostOwnerChain(syncedDom, targetInstance, retainedHostInstances);
6213
+ targetInstance.target = syncedDom;
6214
+ }
6146
6215
  return;
6147
6216
  }
6148
6217
  }
@@ -1,7 +1,7 @@
1
1
  import { t as enqueueRuntimeLane, v as logger } from "./access-Bg4RJNC8.js";
2
- import { d as getCurrentContextFrame, g as withAsyncResourceContext } from "./component-internal-B3z7GXlD.js";
2
+ import { d as getCurrentContextFrame, g as withAsyncResourceContext } from "./component-internal-D9PLuFUc.js";
3
3
  import { f as getCurrentComponentInstance } from "./component-scope-CC3cojX9.js";
4
- import { m as isPromiseLike, r as registerCommitOperationForInstance } from "./component-lifecycle-CO4hXlP4.js";
4
+ import { m as isPromiseLike, r as registerCommitOperationForInstance } from "./component-lifecycle-C7lnU9Bt.js";
5
5
  import { t as brandSnapshotSource } from "./snapshot-source-BB42xgwb.js";
6
6
  import { i as getNextRenderKey, l as throwSSRDataMissing, n as getActiveRenderContext, r as getCurrentRenderData, u as SSRDataMissingError } from "./render-context-Clw3rFiO.js";
7
7
  import { t as state } from "./state-DPl8lffD.js";
@@ -1,4 +1,4 @@
1
1
  import { g as getSignal } from "../component-scope-CC3cojX9.js";
2
- import { t as resource } from "../resource-operation-CEzfpnDk.js";
3
- import { a as stream, c as windowFocused, i as routeActive, n as documentVisible, o as task, r as on, s as timer, t as capture } from "../lifecycle-operations-D9va7GOU.js";
2
+ import { t as resource } from "../resource-operation-BNY29MVH.js";
3
+ import { a as stream, c as windowFocused, i as routeActive, n as documentVisible, o as task, r as on, s as timer, t as capture } from "../lifecycle-operations-CdRjdsHo.js";
4
4
  export { capture, documentVisible, getSignal, on, resource, routeActive, stream, task, timer, windowFocused };
@@ -1,6 +1,6 @@
1
- import { c as RenderableChild } from "../control-BQvNVfAd.js";
1
+ import { c as RenderableChild } from "../control-BI4RMD2z.js";
2
2
  import { r as JSXElement, s as Props } from "../jsx-CP0gmYwJ.js";
3
- import { A as RouteQuery, B as RouteSnapshot, C as RouteMeta, D as RouteParams, E as RouteOptions, F as RouteRenderResult, I as RouteRequestOptions, L as RouteRequestResult, M as RouteRef, N as RouteRefSearch, O as RoutePathParams, P as RouteRegistry, R as RouteSearch, S as RouteMatch, T as RouteMode, _ as RouteContext, a as AccessRedirectDecision, b as RouteHandler, c as LayoutScopeRecord, d as ParsedSegment, f as RegisterRoutesOptions, g as RouteComponent, h as RouteAuthResolver, i as AccessDenyStatus, j as RouteRecord, k as RoutePolicy, l as PageHelperOptions, m as RouteAuthOptions, n as AccessDecision, o as AccessRedirectStatus, p as Route, r as AccessDenyDecision, s as GroupHelperOptions, t as AccessAllowDecision, u as PageScopeRecord, v as RouteDefinition, w as RouteMetaSource, x as RouteManifest, y as RouteDestination, z as RouteSearchValue } from "../router-CeYvjj5_.js";
3
+ import { A as RouteQuery, B as RouteSnapshot, C as RouteMeta, D as RouteParams, E as RouteOptions, F as RouteRenderResult, I as RouteRequestOptions, L as RouteRequestResult, M as RouteRef, N as RouteRefSearch, O as RoutePathParams, P as RouteRegistry, R as RouteSearch, S as RouteMatch, T as RouteMode, _ as RouteContext, a as AccessRedirectDecision, b as RouteHandler, c as LayoutScopeRecord, d as ParsedSegment, f as RegisterRoutesOptions, g as RouteComponent, h as RouteAuthResolver, i as AccessDenyStatus, j as RouteRecord, k as RoutePolicy, l as PageHelperOptions, m as RouteAuthOptions, n as AccessDecision, o as AccessRedirectStatus, p as Route, r as AccessDenyDecision, s as GroupHelperOptions, t as AccessAllowDecision, u as PageScopeRecord, v as RouteDefinition, w as RouteMetaSource, x as RouteManifest, y as RouteDestination, z as RouteSearchValue } from "../router-DCfwLBr-.js";
4
4
  import { a as RouteQueryUpdates, c as NavigateOptions, d as ScrollRestorationOptions, i as RouteQueryUpdater, l as HistoryScrollBehavior, n as RouteQueryParamInput, o as UpdateRouteQueryOptions, r as RouteQueryParamValue, s as updateRouteQuery, t as navigate, u as NavigationScrollBehavior } from "../navigate-BVDCzOuB.js";
5
5
  import { AuthContext, AuthContext as AuthContext$1, AuthRequirement, AuthRequirement as AuthRequirement$1 } from "@askrjs/auth";
6
6
  import { ObjectSchema } from "@askrjs/schema";
@@ -1,7 +1,7 @@
1
- import { C as index, E as route, S as group, T as registerRoutes, _ as lazy, a as resolveRouteMeta, d as clearRoutes, f as createRouteRegistry, i as reconcileRouteMeta, n as navigate, o as serializeRouteMeta, p as getManifest, r as updateRouteQuery, v as currentRoute, w as page, x as fallback } from "../navigate-CmPLSXyw.js";
1
+ import { C as index, E as route, S as group, T as registerRoutes, _ as lazy, a as resolveRouteMeta, d as clearRoutes, f as createRouteRegistry, i as reconcileRouteMeta, n as navigate, o as serializeRouteMeta, p as getManifest, r as updateRouteQuery, v as currentRoute, w as page, x as fallback } from "../navigate-D17eVQyI.js";
2
2
  import { jsx } from "../jsx-runtime.js";
3
3
  import { D as getRoutes } from "../route-matching-vJpvLVbX.js";
4
- import { a as resolveDeferredValues, f as resolveRouteRequest, i as isDeferred, n as Resolve, p as currentAuth, r as defer, s as routeData, v as Outlet } from "../deferred-lKE8uR0z.js";
4
+ import { a as resolveDeferredValues, f as resolveRouteRequest, i as isDeferred, n as Resolve, p as currentAuth, r as defer, s as routeData, v as Outlet } from "../deferred-DklLG4qM.js";
5
5
  import { o as mergeProps } from "../compose-ref-Cc_YkUpM.js";
6
6
  import { t as applyInteractionPolicy } from "../interactions-w7gQN4ha.js";
7
7
  //#region src/router/policy.ts
@@ -1,6 +1,6 @@
1
- import { c as RenderableChild } from "./control-BQvNVfAd.js";
1
+ import { c as RenderableChild } from "./control-BI4RMD2z.js";
2
2
  import { D as QueryPrefetchContext, u as CoreTelemetry } from "./index-Bki2rqcr.js";
3
- import { t as ActionDescriptor } from "./index-SJXJkssx.js";
3
+ import { t as ActionDescriptor } from "./index-C8iW3xCt.js";
4
4
  import { AuthContext, AuthRequirement } from "@askrjs/auth";
5
5
  import { InferSchema, ObjectSchema } from "@askrjs/schema";
6
6
 
@@ -1,5 +1,5 @@
1
- import { c as RenderableChild, d as DocumentRenderContext, f as DocumentRenderer, s as ComponentFunction, u as DocumentRenderArgs } from "../control-BQvNVfAd.js";
2
- import { E as RouteOptions, O as RoutePathParams, P as RouteRegistry, b as RouteHandler, k as RoutePolicy } from "../router-CeYvjj5_.js";
1
+ import { c as RenderableChild, d as DocumentRenderContext, f as DocumentRenderer, s as ComponentFunction, u as DocumentRenderArgs } from "../control-BI4RMD2z.js";
2
+ import { E as RouteOptions, O as RoutePathParams, P as RouteRegistry, b as RouteHandler, k as RoutePolicy } from "../router-DCfwLBr-.js";
3
3
  import { AuthRequirement } from "@askrjs/auth";
4
4
  //#region src/ssg/types.d.ts
5
5
  type SSGMode = 'full' | 'incremental';
package/dist/ssg/index.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import "../access-Bg4RJNC8.js";
2
- import { a as resolveDeferredValues, b as getRenderHandler, c as bindResolvedRouteData } from "../deferred-lKE8uR0z.js";
2
+ import { a as resolveDeferredValues, b as getRenderHandler, c as bindResolvedRouteData } from "../deferred-DklLG4qM.js";
3
3
  import { n as renderDocument } from "../ssr-CbQO5xd3.js";
4
- import { n as renderToString } from "../ssr-D3t80Rc0.js";
4
+ import { n as renderToString } from "../ssr-DEARZxJ5.js";
5
5
  import * as fs from "node:fs/promises";
6
6
  import * as pathModule from "node:path";
7
7
  import * as os from "node:os";
@@ -1,7 +1,7 @@
1
- import { c as RenderableChild, d as DocumentRenderContext, f as DocumentRenderer, p as SSRData, u as DocumentRenderArgs } from "../control-BQvNVfAd.js";
1
+ import { c as RenderableChild, d as DocumentRenderContext, f as DocumentRenderer, p as SSRData, u as DocumentRenderArgs } from "../control-BI4RMD2z.js";
2
2
  import { r as JSXElement, s as Props } from "../jsx-CP0gmYwJ.js";
3
3
  import { D as QueryPrefetchContext, n as ServerQueryRegistry, u as CoreTelemetry, v as DataRuntime } from "../index-Bki2rqcr.js";
4
- import { L as RouteRequestResult, P as RouteRegistry, a as AccessRedirectDecision, b as RouteHandler, j as RouteRecord, m as RouteAuthOptions, p as Route, r as AccessDenyDecision, x as RouteManifest } from "../router-CeYvjj5_.js";
4
+ import { L as RouteRequestResult, P as RouteRegistry, a as AccessRedirectDecision, b as RouteHandler, j as RouteRecord, m as RouteAuthOptions, p as Route, r as AccessDenyDecision, x as RouteManifest } from "../router-DCfwLBr-.js";
5
5
  import { AuthContext } from "@askrjs/auth";
6
6
 
7
7
  //#region src/common/page-render-envelope.d.ts
package/dist/ssr/index.js CHANGED
@@ -1,3 +1,3 @@
1
1
  import { u as SSRDataMissingError } from "../render-context-Clw3rFiO.js";
2
- import { a as renderResolvedToStringSync, c as createRenderContext, d as withRenderContextAsync, i as renderRouteRequestToString, l as getRenderContext, n as renderToString, o as renderToStringSync, r as renderRouteRequest, s as resolveRequest, t as renderToStream, u as withRenderContext } from "../ssr-D3t80Rc0.js";
2
+ import { a as renderResolvedToStringSync, c as createRenderContext, d as withRenderContextAsync, i as renderRouteRequestToString, l as getRenderContext, n as renderToString, o as renderToStringSync, r as renderRouteRequest, s as resolveRequest, t as renderToStream, u as withRenderContext } from "../ssr-DEARZxJ5.js";
3
3
  export { SSRDataMissingError, createRenderContext, getRenderContext, renderResolvedToStringSync, renderRouteRequest, renderRouteRequestToString, renderToStream, renderToString, renderToStringSync, resolveRequest, withRenderContext, withRenderContextAsync };
@@ -2,17 +2,17 @@ import { t as __CONTROL_BOUNDARY__ } from "./control-DhFRTIoE.js";
2
2
  import { t as __ERROR_BOUNDARY__ } from "./vnode-CGMJYPMB.js";
3
3
  import { v as logger } from "./access-Bg4RJNC8.js";
4
4
  import { n as Fragment, t as ELEMENT_TYPE } from "./jsx-CUpRxrLH.js";
5
- import { f as getExecutionContextFrame, l as callWithContext, m as markVNodeTreeWithContextFrame, n as createComponentInstance, p as getVNodeContextFrame } from "./component-internal-B3z7GXlD.js";
5
+ import { f as getExecutionContextFrame, l as callWithContext, m as markVNodeTreeWithContextFrame, n as createComponentInstance, p as getVNodeContextFrame } from "./component-internal-D9PLuFUc.js";
6
6
  import { f as getCurrentComponentInstance, w as setCurrentComponentInstance } from "./component-scope-CC3cojX9.js";
7
- import { h as cleanupComponent, m as isPromiseLike } from "./component-lifecycle-CO4hXlP4.js";
8
- import { g as evaluateShowState, h as evaluateCaseState, i as evaluateForState, o as rollbackForStateTransaction, r as commitForStateTransaction } from "./for-internal-BKf_Tnv1.js";
7
+ import { h as cleanupComponent, m as isPromiseLike } from "./component-lifecycle-C7lnU9Bt.js";
8
+ import { g as evaluateShowState, h as evaluateCaseState, i as evaluateForState, o as rollbackForStateTransaction, r as commitForStateTransaction } from "./for-internal-CSz8Unkq.js";
9
9
  import { c as stopRenderPhase$1, o as startRenderPhase$1, t as configureRenderContextProvider, u as SSRDataMissingError } from "./render-context-Clw3rFiO.js";
10
- import { a as disposeDefaultPortalScope, t as DefaultPortal } from "./portal-CyU3Ucf2.js";
10
+ import { a as disposeDefaultPortalScope, t as DefaultPortal } from "./portal-C47xkwXj.js";
11
11
  import { t as getPublicAttributeName } from "./attr-names-CjhzmHOn.js";
12
12
  import { t as createDataRuntime } from "./data-runtime-SJ1BSUvk.js";
13
13
  import { c as withTelemetry, i as dehydrateDataRuntime, t as createQueryPrefetchContext } from "./query-registry-CQIT4mXr.js";
14
14
  import { a as resolveRouteFromRoutes, t as _resolveRouteMatchFromRoutes } from "./route-matching-vJpvLVbX.js";
15
- import { f as resolveRouteRequest, g as isPageRenderEnvelope, h as isEmptyPageRenderEnvelope, i as isDeferred, m as createPageRenderEnvelope, t as DEFERRED_BOUNDARY } from "./deferred-lKE8uR0z.js";
15
+ import { f as resolveRouteRequest, g as isPageRenderEnvelope, h as isEmptyPageRenderEnvelope, i as isDeferred, m as createPageRenderEnvelope, t as DEFERRED_BOUNDARY } from "./deferred-DklLG4qM.js";
16
16
  import { n as renderDocument, t as SSR_RENDER_DATA_ATTR } from "./ssr-CbQO5xd3.js";
17
17
  //#region src/ssr/escape.ts
18
18
  /**
@@ -1,5 +1,5 @@
1
1
  import { C as Query, k as QueryStaleReason } from "../index-Bki2rqcr.js";
2
- import { S as RouteMatch, p as Route, x as RouteManifest } from "../router-CeYvjj5_.js";
2
+ import { S as RouteMatch, p as Route, x as RouteManifest } from "../router-DCfwLBr-.js";
3
3
 
4
4
  //#region src/testing/index.d.ts
5
5
  type MockRefresh = () => void | Promise<void>;
@@ -16,4 +16,4 @@ declare global {
16
16
  children: unknown;
17
17
  }
18
18
  }
19
- } //# sourceMappingURL=types.d.ts.map
19
+ }
@@ -1,5 +1,5 @@
1
1
  import { t as SSR_RENDER_DATA_ATTR } from "./ssr-CbQO5xd3.js";
2
- import { a as renderResolvedToStringSync } from "./ssr-D3t80Rc0.js";
2
+ import { a as renderResolvedToStringSync } from "./ssr-DEARZxJ5.js";
3
3
  //#region src/ssr/verify-hydration.ts
4
4
  function normalizeHydrationHtml(html) {
5
5
  const template = document.createElement("template");
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@askrjs/askr",
3
- "version": "0.0.53",
3
+ "version": "0.0.55",
4
4
  "description": "Actor-backed deterministic UI framework",
5
5
  "keywords": [
6
6
  "askr",
@@ -130,9 +130,10 @@
130
130
  "test:checks": "vp test run -c vitest.test.checks.config.ts",
131
131
  "test:jsdom": "vp test run -c vitest.test.jsdom.config.ts",
132
132
  "test:types": "vp pack && tsd --files \"tests/types/**/*.test-d.ts\" --files \"tests/types/**/*.test-d.tsx\"",
133
+ "test:installed": "node tests/installed-types.js",
133
134
  "test:publint": "publint",
134
- "release:verify": "npm run lint && npm run build && npm run test:publint && npm run test:checks && npm run test:types && npm run test:unit && npm run test:jsdom && npm run test:browser",
135
- "pack:check": "npm pack --ignore-scripts --dry-run --json",
135
+ "release:verify": "npm run lint && npm run build && npm run test:publint && npm run test:checks && npm run test:types && npm run test:installed && npm run test:unit && npm run test:jsdom && npm run test:browser",
136
+ "pack:check": "node tests/package-artifacts.js",
136
137
  "check": "npm run release:verify && npm run pack:check",
137
138
  "test:unit": "vp test run -c vitest.test.unit.config.ts",
138
139
  "bench": "npm run bench:tier1 && npm run bench:tier2 && npm run bench:tier3 && npm run bench:tier4",