@askrjs/askr 0.0.97 → 0.0.98

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.
@@ -2,7 +2,7 @@ import { d as getCurrentAppRenderRuntime } from "../component-scope-4I3yEMkb.js"
2
2
  import { r as getCurrentRenderData } from "../render-context-B7ohlh6t.js";
3
3
  import { t as state } from "../state-DmkGM_LN.js";
4
4
  import { jsx, jsxs } from "../jsx-runtime.js";
5
- import { c as resolveDataRuntimeState, s as invalidateQueriesForRuntime } from "../data-runtime-JxoRgrrt.js";
5
+ import { c as resolveDataRuntimeState, s as invalidateQueriesForRuntime } from "../data-runtime-7t_Y0iv3.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. */
package/dist/benchmark.js CHANGED
@@ -4,7 +4,7 @@ import { t as selector } from "./selector-CyK-sDwB.js";
4
4
  import { t as installRendererBridge } from "./renderer-tXX_xj86.js";
5
5
  import { i as For } from "./control-C0klPV7Q.js";
6
6
  import { jsx, jsxs } from "./jsx-runtime.js";
7
- import { t as createIsland } from "./boot-CZuC3Muv.js";
7
+ import { t as createIsland } from "./boot-DE-JutXH.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.97",
67
- buildLabel: "0.0.97-local"
66
+ packageVersion: "0.0.98",
67
+ buildLabel: "0.0.98-local"
68
68
  };
69
69
  function getBenchmarkMetadata() {
70
70
  return { ...benchmarkMetadata };
@@ -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-CZuC3Muv.js";
1
+ import { a as cleanupApp, i as hydrateSPA, n as createIslands, o as hasApp, r as createSPA, t as createIsland } from "../boot-DE-JutXH.js";
2
2
  export { cleanupApp, createIsland, createIslands, createSPA, hasApp, hydrateSPA };
@@ -8,12 +8,12 @@ import { r as assertExecutionModel, t as _applyManifest } from "./manifest-D6rfj
8
8
  import { d as stopHydrationRenderPhase, l as startHydrationRenderPhase, y as pageRenderEnvelope } from "./render-context-B7ohlh6t.js";
9
9
  import { a as setStaticChildSlotsCacheEnabled, c as endHydrationDirectListenerMode, d as discardHydrationListenerTransaction, i as registerDeferredHydrationBoundary, l as beginHydrationListenerTransaction, n as activateHydrationBoundary$1, o as withIntrinsicHydrationAdoption, r as clearDeferredHydrationBoundaries, s as beginHydrationDirectListenerMode, t as installRendererBridge, u as commitHydrationListenerTransaction } from "./renderer-tXX_xj86.js";
10
10
  import { r as validateCspNonce, t as CspNonceScope } from "./csp-nonce-BVybpV1v.js";
11
- import { i as getDefaultDataRuntime } from "./data-runtime-JxoRgrrt.js";
12
- import { a as hydrateDataRuntime } from "./query-registry-CimB1YeW.js";
11
+ import { i as getDefaultDataRuntime } from "./data-runtime-7t_Y0iv3.js";
12
+ import { a as hydrateDataRuntime } from "./query-registry-Bua3cDyb.js";
13
13
  import { I as lockRouteRegistration, P as hasRegisteredRoutes, _ as clearRouteState, m as _setActiveRouteAuthOptions } from "./route-matching-Bo6UqG-5.js";
14
- import { a as resolveRouteRequest, i as hasRouteRenderData, m as reviveDeferredValue, n as getRouteRenderContext, r as getRouteRenderData } from "./resolution-C-ZE5swD.js";
14
+ import { a as resolveRouteRequest, i as hasRouteRenderData, m as reviveDeferredValue, n as getRouteRenderContext, r as getRouteRenderData } from "./resolution-ZsIFeQoB.js";
15
15
  import { o as createAppRenderRuntime, r as setServerLocation } from "./activity-d4t3CdzK.js";
16
- import { f as registerAppInstance, g as unregisterAppInstance, i as resolveRouteMeta, o as configureScrollRestoration, r as reconcileRouteMeta, t as initializeNavigation } from "./navigate-CbsZobFg.js";
16
+ import { f as registerAppInstance, g as unregisterAppInstance, i as resolveRouteMeta, o as configureScrollRestoration, r as reconcileRouteMeta, t as initializeNavigation } from "./navigate-Cix_Q9ym.js";
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
@@ -612,7 +612,7 @@ async function hydrateSPA(config) {
612
612
  cspNonce: config.cspNonce
613
613
  }));
614
614
  if (shouldVerifyHydrationMarkup(config)) {
615
- const { verifyHydrationSyncForUrl } = await import("./verify-hydration-CUgKeP65.js");
615
+ const { verifyHydrationSyncForUrl } = await import("./verify-hydration-Bo5_tpen.js");
616
616
  if (!verifyHydrationSyncForUrl({
617
617
  root: rootElement,
618
618
  url: currentUrl,
@@ -1,4 +1,4 @@
1
- import { i as getDefaultDataRuntime, t as createDataRuntime } from "../data-runtime-JxoRgrrt.js";
2
- import { c as queryScope, n as createMutation, o as invalidate, s as invalidateOnInterval, t as createQuery } from "../data-Bm8L6JOm.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-CimB1YeW.js";
1
+ import { i as getDefaultDataRuntime, t as createDataRuntime } from "../data-runtime-7t_Y0iv3.js";
2
+ import { c as queryScope, n as createMutation, o as invalidate, s as invalidateOnInterval, t as createQuery } from "../data-CnQwUS76.js";
3
+ import { a as hydrateDataRuntime, i as dehydrateDataRuntime, n as defineQuery, o as prefetchQuery, r as defineServerQueries, s as serveQuery, t as createQueryPrefetchContext } from "../query-registry-Bua3cDyb.js";
4
4
  export { createDataRuntime, createMutation, createQuery, createQueryPrefetchContext, defineQuery, defineServerQueries, dehydrateDataRuntime, getDefaultDataRuntime, hydrateDataRuntime, invalidate, invalidateOnInterval, prefetchQuery, queryScope, serveQuery };
@@ -3,7 +3,7 @@ import { d as getCurrentAppRenderRuntime, f as getCurrentComponentInstance, i as
3
3
  import { l as notifyReadableReaders, o as markReactivePropsDirtySource, s as markReadableDerivedSubscribersDirty, u as recordReadableRead } from "./readable-BsdGWsDE.js";
4
4
  import { n as getActiveRenderContext } from "./render-context-B7ohlh6t.js";
5
5
  import { i as routeActive, n as documentVisible, o as timer, s as windowFocused } from "./lifecycle-operations-CBzG5PyB.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-JxoRgrrt.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-7t_Y0iv3.js";
7
7
  //#region src/data/query-key.ts
8
8
  function serializeQueryKeyNumber(part) {
9
9
  if (Number.isNaN(part)) return "NaN";
@@ -2,6 +2,8 @@ import { d as getCurrentAppRenderRuntime } from "./component-scope-4I3yEMkb.js";
2
2
  import { n as getActiveRenderContext } from "./render-context-B7ohlh6t.js";
3
3
  //#region src/data/invalidation-listeners.ts
4
4
  const invalidationListeners = /* @__PURE__ */ new Set();
5
+ const activeInvalidationPrefixes = [];
6
+ const MAX_INVALIDATION_CASCADE_DEPTH = 100;
5
7
  function addInvalidationListener(listener) {
6
8
  invalidationListeners.add(listener);
7
9
  return () => {
@@ -9,7 +11,14 @@ function addInvalidationListener(listener) {
9
11
  };
10
12
  }
11
13
  function emitInvalidation(event) {
12
- for (const listener of invalidationListeners) listener(event);
14
+ if (activeInvalidationPrefixes.includes(event.prefix)) throw new Error(`[Askr] Cyclic invalidation cascade detected for prefix ${JSON.stringify(event.prefix)}.`);
15
+ if (activeInvalidationPrefixes.length >= MAX_INVALIDATION_CASCADE_DEPTH) throw new Error(`[Askr] Invalidation cascade exceeded ${MAX_INVALIDATION_CASCADE_DEPTH} nested events at prefix ${JSON.stringify(event.prefix)}.`);
16
+ activeInvalidationPrefixes.push(event.prefix);
17
+ try {
18
+ for (const listener of invalidationListeners) listener(event);
19
+ } finally {
20
+ activeInvalidationPrefixes.pop();
21
+ }
13
22
  }
14
23
  //#endregion
15
24
  //#region src/data/data-runtime.ts
@@ -3,7 +3,7 @@ import { i as getExecutionModel } from "./manifest-D6rfj_jC.js";
3
3
  import { n as getActiveRenderContext, r as getCurrentRenderData } from "./render-context-B7ohlh6t.js";
4
4
  import { t as resource } from "./resource-operation-B62UQKHV.js";
5
5
  import { A as getDefaultRouteBasePath, C as getCurrentInheritedPolicies, D as getCurrentPathPrefix, E as getCurrentPageScope, F as insertRecordSorted, H as computeRank, L as pushRegistrationScope, N as hasActivePageScope, O as getCurrentScopeKind, S as getCurrentInheritedMeta, T as getCurrentPageChain, U as normalizeRouteSegmentName, W as parseSegments, g as assertRouteRegistrationUnlocked, h as addRouteToStores, w as getCurrentLayoutChain, x as getCurrentInheritedAuthRequirements } from "./route-matching-Bo6UqG-5.js";
6
- import { _ as createRouteHandler, d as DEFERRED_BOUNDARY, p as isDeferred, s as guardHydratedRouteData } from "./resolution-C-ZE5swD.js";
6
+ import { _ as createRouteHandler, d as DEFERRED_BOUNDARY, p as isDeferred, s as guardHydratedRouteData } from "./resolution-ZsIFeQoB.js";
7
7
  import { allOf } from "@askrjs/auth";
8
8
  //#region src/router/access.ts
9
9
  function compileNodePolicies(node) {
package/dist/index.js CHANGED
@@ -11,8 +11,8 @@ import { t as installRendererBridge } from "./renderer-tXX_xj86.js";
11
11
  import { n as cspNonce, t as CspNonceScope } from "./csp-nonce-BVybpV1v.js";
12
12
  import { i as For, n as Match, r as Show, t as Case } from "./control-C0klPV7Q.js";
13
13
  import { jsx, jsxs } from "./jsx-runtime.js";
14
- import { t as createQuery } from "./data-Bm8L6JOm.js";
15
- import { a as hydrateDataRuntime, i as dehydrateDataRuntime, n as defineQuery, o as prefetchQuery, r as defineServerQueries, s as serveQuery } from "./query-registry-CimB1YeW.js";
14
+ import { t as createQuery } from "./data-CnQwUS76.js";
15
+ import { a as hydrateDataRuntime, i as dehydrateDataRuntime, n as defineQuery, o as prefetchQuery, r as defineServerQueries, s as serveQuery } from "./query-registry-Bua3cDyb.js";
16
16
  //#region src/runtime/derive.ts
17
17
  const deriveCells = /* @__PURE__ */ new WeakMap();
18
18
  const dirtyDerivedCells = /* @__PURE__ */ new Set();
@@ -7,7 +7,7 @@ import { i as drainLifecycleCommitErrors, p as isPromiseLike, r as discardLifecy
7
7
  import { _ as teardownNodeSubtree } from "./cleanup-D7uN-Z1s.js";
8
8
  import { t as CspNonceScope } from "./csp-nonce-BVybpV1v.js";
9
9
  import { I as lockRouteRegistration, o as addRouteBasePath, r as computeRouteActivityMatches, y as getActiveRouteBasePath } from "./route-matching-Bo6UqG-5.js";
10
- import { a as resolveRouteRequest, i as hasRouteRenderData, n as getRouteRenderContext, r as getRouteRenderData, u as withoutRouteHydrationMetadata } from "./resolution-C-ZE5swD.js";
10
+ import { a as resolveRouteRequest, i as hasRouteRenderData, n as getRouteRenderContext, r as getRouteRenderData, u as withoutRouteHydrationMetadata } from "./resolution-ZsIFeQoB.js";
11
11
  import { a as clearStagedAppRenderRouteLocation, i as syncCurrentRouteSnapshot, o as createAppRenderRuntime, s as stageAppRenderRouteLocation } from "./activity-d4t3CdzK.js";
12
12
  import { r as getDefaultPortalHost, t as clearRegisteredDefaultPortalForInstance } from "./default-portal-runtime-DvMvWJVp.js";
13
13
  //#region src/router/navigation-registry.ts
@@ -1,4 +1,4 @@
1
- import { i as getDefaultDataRuntime, t as createDataRuntime } from "./data-runtime-JxoRgrrt.js";
1
+ import { i as getDefaultDataRuntime, t as createDataRuntime } from "./data-runtime-7t_Y0iv3.js";
2
2
  //#region src/common/telemetry.ts
3
3
  function withTelemetry(span, fields, work) {
4
4
  return span ? span(fields, work) : work();
@@ -3,7 +3,7 @@ import { p as defineScope, y as readScope } from "./component-internal-D0yE2Ch3.
3
3
  import { p as isPromiseLike } from "./lifecycle-batch-BH0fax4F.js";
4
4
  import { S as withPageFramework, b as replacePageRoute, n as getActiveRenderContext } from "./render-context-B7ohlh6t.js";
5
5
  import { i as ROUTE_ROOT_COMPONENT } from "./csp-nonce-BVybpV1v.js";
6
- import { c as withTelemetry, t as createQueryPrefetchContext } from "./query-registry-CimB1YeW.js";
6
+ import { c as withTelemetry, t as createQueryPrefetchContext } from "./query-registry-Bua3cDyb.js";
7
7
  import { c as removeRouteBasePath, i as getMatchingRouteRecord, l as buildRouteContext, o as addRouteBasePath, s as normalizeRouteBasePath, u as buildRouteContextBase, v as getActiveRouteAuthOptions } from "./route-matching-Bo6UqG-5.js";
8
8
  //#region src/router/route-data-loader.ts
9
9
  /** Thrown when a route's `loader` rejects; wraps the original `cause`. */
@@ -2,10 +2,10 @@ import { n as createRouteRegistry } from "../manifest-D6rfj_jC.js";
2
2
  import { a as isSafeHref } from "../csp-nonce-BVybpV1v.js";
3
3
  import { jsx } from "../jsx-runtime.js";
4
4
  import { o as addRouteBasePath, y as getActiveRouteBasePath } from "../route-matching-Bo6UqG-5.js";
5
- import { a as group, c as route, i as fallback, n as resolveDeferredValues, o as index, r as routeData, s as page, t as Resolve } from "../deferred-DFyDy5e7.js";
6
- import { S as RouteDataLoadError, a as resolveRouteRequest, b as lazy, f as defer, g as Outlet, h as currentAuth, p as isDeferred, x as lazyRouteData } from "../resolution-C-ZE5swD.js";
5
+ import { a as group, c as route, i as fallback, n as resolveDeferredValues, o as index, r as routeData, s as page, t as Resolve } from "../deferred-BVkZ5T2P.js";
6
+ import { S as RouteDataLoadError, a as resolveRouteRequest, b as lazy, f as defer, g as Outlet, h as currentAuth, p as isDeferred, x as lazyRouteData } from "../resolution-ZsIFeQoB.js";
7
7
  import { n as onRouteChange, t as currentRoute } from "../activity-d4t3CdzK.js";
8
- import { a as serializeRouteMeta, c as getCurrentHref, d as parseTargetUrl, h as syncRegisteredRouteSnapshot, i as resolveRouteMeta, l as getRegisteredAppsSnapshot, m as syncAppRegistrationLocation, n as navigate, p as setCurrentRouteLocation, r as reconcileRouteMeta, s as saveScrollPosition, u as getWindowHref } from "../navigate-CbsZobFg.js";
8
+ import { a as serializeRouteMeta, c as getCurrentHref, d as parseTargetUrl, h as syncRegisteredRouteSnapshot, i as resolveRouteMeta, l as getRegisteredAppsSnapshot, m as syncAppRegistrationLocation, n as navigate, p as setCurrentRouteLocation, r as reconcileRouteMeta, s as saveScrollPosition, u as getWindowHref } from "../navigate-Cix_Q9ym.js";
9
9
  import { o as mergeProps } from "../compose-ref-1Fhs7mbF.js";
10
10
  import { t as applyInteractionPolicy } from "../interactions-B4XaFxt1.js";
11
11
  //#region src/router/route-query.ts
package/dist/ssg/index.js CHANGED
@@ -1,10 +1,10 @@
1
1
  import "../access-d_DCdwqn.js";
2
2
  import { n as createRouteRegistry } from "../manifest-D6rfj_jC.js";
3
3
  import { o as addRouteBasePath } from "../route-matching-Bo6UqG-5.js";
4
- import { c as route, n as resolveDeferredValues } from "../deferred-DFyDy5e7.js";
5
- import { S as RouteDataLoadError, c as prepareRouteHydrationData, t as bindResolvedRouteData, v as getRenderHandler, y as _preloadRouteHandler } from "../resolution-C-ZE5swD.js";
4
+ import { c as route, n as resolveDeferredValues } from "../deferred-BVkZ5T2P.js";
5
+ import { S as RouteDataLoadError, c as prepareRouteHydrationData, t as bindResolvedRouteData, v as getRenderHandler, y as _preloadRouteHandler } from "../resolution-ZsIFeQoB.js";
6
6
  import { n as renderDocument } from "../ssr-DSHd_Q9K.js";
7
- import { n as renderToString } from "../ssr-BhcP35fE.js";
7
+ import { n as renderToString } from "../ssr-BrdV2jMy.js";
8
8
  import * as fs from "node:fs/promises";
9
9
  import * as pathModule from "node:path";
10
10
  import * as os from "node:os";
package/dist/ssr/index.js CHANGED
@@ -1,3 +1,3 @@
1
1
  import { C as SSRDataMissingError } from "../render-context-B7ohlh6t.js";
2
- import { a as renderResolvedToStringSync, c as createRenderContext, d as withRenderContextAsync, i as renderRouteRequestToString, l as getRenderContext, n as renderToString, o as renderToStringSync, r as renderRouteRequest, s as resolveRequest, t as renderToStream, u as withRenderContext } from "../ssr-BhcP35fE.js";
2
+ import { a as renderResolvedToStringSync, c as createRenderContext, d as withRenderContextAsync, i as renderRouteRequestToString, l as getRenderContext, n as renderToString, o as renderToStringSync, r as renderRouteRequest, s as resolveRequest, t as renderToStream, u as withRenderContext } from "../ssr-BrdV2jMy.js";
3
3
  export { SSRDataMissingError, createRenderContext, getRenderContext, renderResolvedToStringSync, renderRouteRequest, renderRouteRequestToString, renderToStream, renderToString, renderToStringSync, resolveRequest, withRenderContext, withRenderContextAsync };
@@ -11,10 +11,10 @@ import { C as SSRDataMissingError, _ as isEmptyPageRenderEnvelope, f as stopRend
11
11
  import { n as getPublicAttributeName, t as sanitizeCssValue } from "./css-BuPaTOfe.js";
12
12
  import { o as isUnsafeUrlAttribute, r as validateCspNonce, t as CspNonceScope } from "./csp-nonce-BVybpV1v.js";
13
13
  import { n as SSR_PORTAL_HOST, t as SSR_PORTAL_ANCHOR } from "./portal-w3oQ6oQU.js";
14
- import { t as createDataRuntime } from "./data-runtime-JxoRgrrt.js";
15
- import { c as withTelemetry, i as dehydrateDataRuntime, t as createQueryPrefetchContext } from "./query-registry-CimB1YeW.js";
14
+ import { t as createDataRuntime } from "./data-runtime-7t_Y0iv3.js";
15
+ import { c as withTelemetry, i as dehydrateDataRuntime, t as createQueryPrefetchContext } from "./query-registry-Bua3cDyb.js";
16
16
  import { a as resolveRouteFromRoutes, c as removeRouteBasePath, s as normalizeRouteBasePath, t as _resolveRouteMatchFromRoutes } from "./route-matching-Bo6UqG-5.js";
17
- import { a as resolveRouteRequest, d as DEFERRED_BOUNDARY, l as validateRouteHydrationData, o as getRouteHydrationMetadata, p as isDeferred } from "./resolution-C-ZE5swD.js";
17
+ import { a as resolveRouteRequest, d as DEFERRED_BOUNDARY, l as validateRouteHydrationData, o as getRouteHydrationMetadata, p as isDeferred } from "./resolution-ZsIFeQoB.js";
18
18
  import { n as disposeRegisteredDefaultPortalScope, r as getDefaultPortalHost } from "./default-portal-runtime-DvMvWJVp.js";
19
19
  import { n as renderDocument, t as SSR_RENDER_DATA_ATTR } from "./ssr-DSHd_Q9K.js";
20
20
  //#region src/ssr/escape.ts
@@ -1,9 +1,9 @@
1
1
  import { r as flushRuntimeScheduler } from "../access-d_DCdwqn.js";
2
2
  import { u as recordReadableRead } from "../readable-BsdGWsDE.js";
3
- import { l as addInvalidationListener, t as createDataRuntime } from "../data-runtime-JxoRgrrt.js";
4
- import { a as notifySource, i as normalizeAsyncDataError, r as createReadableSource } from "../data-Bm8L6JOm.js";
3
+ import { l as addInvalidationListener, t as createDataRuntime } from "../data-runtime-7t_Y0iv3.js";
4
+ import { a as notifySource, i as normalizeAsyncDataError, r as createReadableSource } from "../data-CnQwUS76.js";
5
5
  import { r as computeRouteActivityMatches } from "../route-matching-Bo6UqG-5.js";
6
- import { a as cleanupApp, r as createSPA, t as createIsland } from "../boot-CZuC3Muv.js";
6
+ import { a as cleanupApp, r as createSPA, t as createIsland } from "../boot-DE-JutXH.js";
7
7
  //#region src/testing/render.ts
8
8
  const renderStates = /* @__PURE__ */ new WeakMap();
9
9
  const eventConstructorNames = {
@@ -1,6 +1,6 @@
1
1
  import { g as getHydrationRenderUrl, m as withHydrationVerificationRender } from "./render-context-B7ohlh6t.js";
2
2
  import { t as SSR_RENDER_DATA_ATTR } from "./ssr-DSHd_Q9K.js";
3
- import { a as renderResolvedToStringSync } from "./ssr-BhcP35fE.js";
3
+ import { a as renderResolvedToStringSync } from "./ssr-BrdV2jMy.js";
4
4
  //#region src/ssr/verify-hydration.ts
5
5
  function normalizeHydrationHtml(html) {
6
6
  const template = document.createElement("template");
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@askrjs/askr",
3
- "version": "0.0.97",
3
+ "version": "0.0.98",
4
4
  "description": "Actor-backed deterministic UI framework",
5
5
  "keywords": [
6
6
  "askr",