@real-router/core 0.74.6 → 0.74.8

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 (40) hide show
  1. package/dist/cjs/Router-BMsOK0sO.js +2 -0
  2. package/dist/cjs/Router-BMsOK0sO.js.map +1 -0
  3. package/dist/cjs/api.d.ts +1 -1
  4. package/dist/cjs/api.js +1 -1
  5. package/dist/cjs/{cloneRouter-B2T6Rdyz.js → cloneRouter-D9FVuCV6.js} +2 -2
  6. package/dist/cjs/{cloneRouter-B2T6Rdyz.js.map → cloneRouter-D9FVuCV6.js.map} +1 -1
  7. package/dist/cjs/esm-BIeQwCN9.js +2 -0
  8. package/dist/cjs/esm-BIeQwCN9.js.map +1 -0
  9. package/dist/cjs/{index-Ti9C-wWj.d.ts → index-cgB7PGoM.d.ts} +3 -2
  10. package/dist/cjs/{index-Ti9C-wWj.d.ts.map → index-cgB7PGoM.d.ts.map} +1 -1
  11. package/dist/cjs/index.d.ts +1 -1
  12. package/dist/cjs/index.js +1 -1
  13. package/dist/cjs/utils.js +1 -1
  14. package/dist/cjs/validation.d.ts +1 -1
  15. package/dist/cjs/validation.js +1 -1
  16. package/dist/esm/Router-Q3GRd0Nq.mjs +2 -0
  17. package/dist/esm/Router-Q3GRd0Nq.mjs.map +1 -0
  18. package/dist/esm/api.d.mts +1 -1
  19. package/dist/esm/api.mjs +1 -1
  20. package/dist/esm/cloneRouter-BFeskDYy.mjs +2 -0
  21. package/dist/esm/{cloneRouter-M_dwhLD_.mjs.map → cloneRouter-BFeskDYy.mjs.map} +1 -1
  22. package/dist/esm/esm-CLeBo4Hk.mjs +2 -0
  23. package/dist/esm/esm-CLeBo4Hk.mjs.map +1 -0
  24. package/dist/esm/{index-Ti9C-wWj.d.mts → index-cgB7PGoM.d.mts} +3 -2
  25. package/dist/esm/{index-Ti9C-wWj.d.mts.map → index-cgB7PGoM.d.mts.map} +1 -1
  26. package/dist/esm/index.d.mts +1 -1
  27. package/dist/esm/index.mjs +1 -1
  28. package/dist/esm/utils.mjs +1 -1
  29. package/dist/esm/validation.d.mts +1 -1
  30. package/dist/esm/validation.mjs +1 -1
  31. package/package.json +1 -1
  32. package/dist/cjs/Router-8HpJ4G7u.js +0 -2
  33. package/dist/cjs/Router-8HpJ4G7u.js.map +0 -1
  34. package/dist/cjs/esm-BEsl32ya.js +0 -2
  35. package/dist/cjs/esm-BEsl32ya.js.map +0 -1
  36. package/dist/esm/Router-EYmAJsXk.mjs +0 -2
  37. package/dist/esm/Router-EYmAJsXk.mjs.map +0 -1
  38. package/dist/esm/cloneRouter-M_dwhLD_.mjs +0 -2
  39. package/dist/esm/esm-C2tc0t6J.mjs +0 -2
  40. package/dist/esm/esm-C2tc0t6J.mjs.map +0 -1
@@ -1,4 +1,4 @@
1
- import { i as RouteTree } from "./index-Ti9C-wWj.mjs";
1
+ import { i as RouteTree } from "./index-cgB7PGoM.mjs";
2
2
  import { t as Router$1 } from "./Router-Bm2qafJA.mjs";
3
3
  import { DefaultDependencies, DependenciesApi, LifecycleApi, PluginApi as PluginApi$1, Router, RoutesApi } from "@real-router/types";
4
4
 
package/dist/esm/api.mjs CHANGED
@@ -1,2 +1,2 @@
1
- import{a as e,b as t,c as n,d as r,f as i,h as a,i as o,l as s,m as c,o as l,p as u,r as d,s as f,u as p,v as m,y as h}from"./Router-EYmAJsXk.mjs";import{l as g,n as _}from"./esm-C2tc0t6J.mjs";import{a as v,i as y,n as b,r as x,t as S}from"./cloneRouter-M_dwhLD_.mjs";import{logger as C}from"@real-router/logger";function w(e,t,n){if(t){let n=t===e,r=t.startsWith(`${e}.`);if(n||r){let r=n?``:` (current: "${t}")`;return C.warn(`router.removeRoute`,`Cannot remove route "${e}" — it is currently active${r}. Navigate away first.`),!1}}return n&&C.warn(`router.removeRoute`,`Route "${e}" removed while navigation is in progress. This may cause unexpected behavior.`),!0}function T(e){return e?(C.error(`router.clearRoutes`,`Cannot clear routes while navigation is in progress. Wait for navigation to complete.`),!1):!0}const E=Object.freeze({replace:!0,revalidate:!0});function D(e,t,n,r){let i=t=>t===e||t.startsWith(`${e}.`);m(t.decoders,i),m(t.encoders,i),m(t.defaultParams,i),m(t.forwardMap,i),m(t.forwardFnMap,i),m(n,i),m(t.forwardMap,e=>i(t.forwardMap[e]));let[a,o]=r.getFactories();for(let e of Object.keys(o))i(e)&&r.clearCanActivate(e,`both`);for(let e of Object.keys(a))i(e)&&r.clearCanDeactivate(e,`both`)}function O(e,t,n,r){let i=n.forwardFnMap[t],a=n.forwardMap[t];i===void 0?a!==void 0&&(e.forwardTo=a):e.forwardTo=i,t in n.defaultParams&&(e.defaultParams=n.defaultParams[t]),t in n.decoders&&(e.decodeParams=n.decoders[t]),t in n.encoders&&(e.encodeParams=n.encoders[t]);let[o,s]=r;return t in s&&(e.canActivate=s[t]),t in o&&(e.canDeactivate=o[t]),e}function k(e,t,n,r){let i={name:e.name,path:e.path};return O(i,t,n,r),e.children&&(i.children=e.children.map(e=>k(e,`${t}.${e.name}`,n,r))),i}function A(e,t,n,r){let i={name:e,path:t};return O(i,e,n,r),Object.freeze(i)}function j(e,t){let n=new Map,r=e.lifecycleNamespace.getFactories(),i=(a,o)=>{for(let s of a){let a=o?`${o}.${s.name}`:s.name;t(a)&&n.set(a,A(a,s.path,e.config,r)),s.children&&i(s.children,a)}};return i(e.definitions,``),n}function M(e,t){let n=`${t}.`,r=j(e,e=>e===t||e.startsWith(n));return Object.freeze([...r.values()])}function N(e,t,n){let r=n.lifecycleNamespace.getFactories(),i=[],a=(e,t)=>{for(let o of e){let e=t?`${t}.${o.name}`:o.name;i.push(A(e,o.path,n.config,r)),o.children&&a(o.children,e)}};return a(e,t??``),Object.freeze(i)}function P(e,t){let n=[],r=[];for(let[r,i]of e)t.has(r)||n.push(i);for(let[n,i]of t)e.has(n)||r.push(i);return{removed:Object.freeze(n),added:Object.freeze(r)}}function F(e){let t={};return e.forwardTo!==void 0&&(t.forwardTo=e.forwardTo),e.defaultParams!==void 0&&(t.defaultParams=e.defaultParams),e.encodeParams!==void 0&&(t.encodeParams=e.encodeParams),e.decodeParams!==void 0&&(t.decodeParams=e.decodeParams),Object.freeze(t)}function I(t,n,r){e(t,n,r);let i=p(t,n,r);t.lifecycleNamespace.preflightHandlerLimit(i.pendingCanActivate.keys(),i.pendingCanDeactivate.keys(),!1),o(t,i)}function L(e,t,n){e.setState(t),e.emitTransitionSuccess(t,n,E)}function R(e,t,i,a,s){n(t,`addRoute`),l(t,``,`addRoute`),f(t,``,`addRoute`);let u=r(t,e.rootPath,e.matcherOptions);e.lifecycleNamespace.preflightHandlerLimit(u.pendingCanActivate.keys(),u.pendingCanDeactivate.keys(),!0);let p=c(u,e.depsStore);if(e.lifecycleNamespace.clearDefinitionGuards(),o(e,u,p),s?.(),a!==void 0){let t=i.matchPath(a.path,i.getOptions());if(t)if(t.name===a.name)L(i,{...t,context:a.context,transition:a.transition},a);else{let{toDeactivate:n,toActivate:r}=d(t,a);e.lifecycleNamespace.canNavigateTo(n,r,t,a)?L(i,{...t,transition:a.transition},a):i.navigateToNotFound(a.path)}else i.navigateToNotFound(a.path)}}function z(e,t){return h(e.definitions,t)?(D(t,e.config,e.routeCustomFields,e.lifecycleNamespace),u(e),!0):!1}function B(e,t){let n=e.matcher.getSegmentsByName(t);if(!n)return;let r=_(n.at(-1)),i=e.lifecycleNamespace.getFactories();return k(r,t,e.config,i)}const V=new WeakMap;function H(e){let n=V.get(e);if(n)return n;let r=g(e),o=r.routeGetStore(),c=e=>{r.treeChanged.emit(e)},l={add:(e,n)=>{y(r.isDisposed),v(r.treeChanged.isEmitting);let i=Array.isArray(e)?e:[e],a=n?.parent;if(t(i,r.validator),a!==void 0&&r.validator?.routes.validateParentOption(a,o.tree),r.validator?.routes.throwIfInternalRouteInArray(i,`addRoute`),r.validator?.routes.validateAddRouteArgs(i),r.validator?.routes.validateRoutes(i,o),I(o,i,a),r.treeChanged.listenerCount()>0){let e=N(i,a,o);c(a===void 0?{op:`add`,added:e}:{op:`add`,added:e,parent:a})}},remove:e=>{if(y(r.isDisposed),v(r.treeChanged.isEmitting),r.validator?.routes.validateRemoveRouteArgs(e),r.validator?.routes.throwIfInternalRoute(e,`removeRoute`),s(e,`removeRoute`),!w(e,r.getStateName(),r.isTransitioning()))return;let t=r.treeChanged.listenerCount()>0?M(o,e):void 0;if(!z(o,e)){C.warn(`router.removeRoute`,`Route "${e}" not found. No changes made.`);return}t!==void 0&&c({op:`remove`,name:e,removedSubtree:t})},update:(e,t)=>{if(y(r.isDisposed),v(r.treeChanged.isEmitting),r.validator?.routes.validateUpdateRouteBasicArgs(e,t),r.validator?.routes.throwIfInternalRoute(e,`updateRoute`),s(e,`updateRoute`),r.validator?.routes.validateUpdateRoutePropertyTypes(e,t),r.isTransitioning()&&C.error(`router.updateRoute`,`Updating route "${e}" while navigation is in progress. This may cause unexpected behavior.`),r.validator?.routes.validateUpdateRoute(e,t,o),!o.matcher.hasRoute(e))return;let n=o.lifecycleNamespace,a=i(o,n,e,t);if(r.treeChanged.listenerCount()>0){let t=F(a);Object.keys(t).length>0&&c({op:`update`,name:e,patch:t})}},clear:()=>{if(y(r.isDisposed),v(r.treeChanged.isEmitting),!T(r.isTransitioning()))return;let e=r.treeChanged.listenerCount()>0?Object.freeze([...j(o,()=>!0).values()]):void 0;a(o),o.lifecycleNamespace.clearAll(),r.clearState(),e!==void 0&&c({op:`clear`,removed:e})},has:e=>(r.validator?.routes.validateRouteName(e,`hasRoute`),o.matcher.hasRoute(e)),get:e=>(r.validator?.routes.validateRouteName(e,`getRoute`),B(o,e)),replace:n=>{y(r.isDisposed),v(r.treeChanged.isEmitting);let i=Array.isArray(n)?n:[n];if(!T(r.isTransitioning()))return;t(i,r.validator),r.validator?.routes.throwIfInternalRouteInArray(i,`replaceRoutes`),r.validator?.routes.validateAddRouteArgs(i),r.validator?.routes.validateRoutes(i,o);let a=e.getState(),s=r.treeChanged.listenerCount()>0?j(o,()=>!0):void 0;R(o,i,r,a,s===void 0?void 0:()=>{let{removed:e,added:t}=P(s,j(o,()=>!0));c({op:`replace`,removed:e,added:t})})},subscribeChanges:e=>r.treeChanged.subscribe(e)};return V.set(e,l),l}function U(e,t,n,r){if(n!==void 0){if(!Object.hasOwn(e.dependencies,t))r?.dependencies.validateDependencyCount(e,`setDependency`);else{let i=e.dependencies[t];i!==n&&!(Number.isNaN(i)&&Number.isNaN(n))&&r?.dependencies.warnOverwrite(t,`setDependency`)}e.dependencies[t]=n}}function W(e,t,n){let r=[];for(let i in t)t[i]!==void 0&&(Object.hasOwn(e.dependencies,i)?r.push(i):n?.dependencies.validateDependencyCount(e,`setDependencies`),e.dependencies[i]=t[i]);r.length>0&&n?.dependencies.warnBatchOverwrite(r,`setDependencies`)}function G(e){let t=g(e);return{get:e=>{t.validator?.dependencies.validateDependencyName(e,`getDependency`);let n=t.dependenciesGetStore(),r=n.dependencies[e];return t.validator?.dependencies.validateDependencyExists(e,n),r},getAll:()=>({...t.dependenciesGetStore().dependencies}),set:(e,n)=>{y(t.isDisposed),t.validator?.dependencies.validateSetDependencyArgs(e,n,`setDependency`),U(t.dependenciesGetStore(),e,n,t.validator)},setAll:e=>{y(t.isDisposed);let n=t.dependenciesGetStore();t.validator?.dependencies.validateDependenciesObject(e,`setDependencies`),t.validator?.dependencies.validateDependencyLimit(n,n.limits),W(n,e,t.validator)},remove:e=>{y(t.isDisposed),t.validator?.dependencies.validateDependencyName(e,`removeDependency`);let n=t.dependenciesGetStore();Object.hasOwn(n.dependencies,e)||t.validator?.dependencies.warnRemoveNonExistent(e),delete n.dependencies[e]},reset:()=>{y(t.isDisposed);let e=t.dependenciesGetStore();e.dependencies=Object.create(null)},has:e=>(t.validator?.dependencies.validateDependencyName(e,`hasDependency`),Object.hasOwn(t.dependenciesGetStore().dependencies,e))}}export{S as cloneRouter,G as getDependenciesApi,b as getLifecycleApi,x as getPluginApi,H as getRoutesApi};
1
+ import{a as e,b as t,c as n,d as r,f as i,h as a,i as o,l as s,m as c,o as l,p as u,r as d,s as f,u as p,v as m,y as h}from"./Router-Q3GRd0Nq.mjs";import{i as g,l as _}from"./esm-CLeBo4Hk.mjs";import{a as v,i as y,n as b,r as x,t as S}from"./cloneRouter-BFeskDYy.mjs";import{logger as C}from"@real-router/logger";function w(e,t,n){if(t){let n=t===e,r=t.startsWith(`${e}.`);if(n||r){let r=n?``:` (current: "${t}")`;return C.warn(`router.removeRoute`,`Cannot remove route "${e}" — it is currently active${r}. Navigate away first.`),!1}}return n&&C.warn(`router.removeRoute`,`Route "${e}" removed while navigation is in progress. This may cause unexpected behavior.`),!0}function T(e){return e?(C.error(`router.clearRoutes`,`Cannot clear routes while navigation is in progress. Wait for navigation to complete.`),!1):!0}const E=Object.freeze({replace:!0,revalidate:!0});function D(e,t,n,r){let i=t=>t===e||t.startsWith(`${e}.`);m(t.decoders,i),m(t.encoders,i),m(t.defaultParams,i),m(t.forwardMap,i),m(t.forwardFnMap,i),m(n,i),m(t.forwardMap,e=>i(t.forwardMap[e]));let[a,o]=r.getFactories();for(let e of Object.keys(o))i(e)&&r.clearCanActivate(e,`both`);for(let e of Object.keys(a))i(e)&&r.clearCanDeactivate(e,`both`)}function O(e,t,n,r){let i=n.forwardFnMap[t],a=n.forwardMap[t];i===void 0?a!==void 0&&(e.forwardTo=a):e.forwardTo=i,t in n.defaultParams&&(e.defaultParams=n.defaultParams[t]),t in n.decoders&&(e.decodeParams=n.decoders[t]),t in n.encoders&&(e.encodeParams=n.encoders[t]);let[o,s]=r;return t in s&&(e.canActivate=s[t]),t in o&&(e.canDeactivate=o[t]),e}function k(e,t,n,r){let i={name:e.name,path:e.path};return O(i,t,n,r),e.children&&(i.children=e.children.map(e=>k(e,`${t}.${e.name}`,n,r))),i}function A(e,t,n,r){let i={name:e,path:t};return O(i,e,n,r),Object.freeze(i)}function j(e,t){let n=new Map,r=e.lifecycleNamespace.getFactories(),i=(a,o)=>{for(let s of a){let a=o?`${o}.${s.name}`:s.name;t(a)&&n.set(a,A(a,s.path,e.config,r)),s.children&&i(s.children,a)}};return i(e.definitions,``),n}function M(e,t){let n=`${t}.`,r=j(e,e=>e===t||e.startsWith(n));return Object.freeze([...r.values()])}function N(e,t,n){let r=n.lifecycleNamespace.getFactories(),i=[],a=(e,t)=>{for(let o of e){let e=t?`${t}.${o.name}`:o.name;i.push(A(e,o.path,n.config,r)),o.children&&a(o.children,e)}};return a(e,t??``),Object.freeze(i)}function P(e,t){let n=[],r=[];for(let[r,i]of e)t.has(r)||n.push(i);for(let[n,i]of t)e.has(n)||r.push(i);return{removed:Object.freeze(n),added:Object.freeze(r)}}function F(e){let t={};return e.forwardTo!==void 0&&(t.forwardTo=e.forwardTo),e.defaultParams!==void 0&&(t.defaultParams=e.defaultParams),e.encodeParams!==void 0&&(t.encodeParams=e.encodeParams),e.decodeParams!==void 0&&(t.decodeParams=e.decodeParams),Object.freeze(t)}function I(t,n,r){e(t,n,r);let i=p(t,n,r);t.lifecycleNamespace.preflightHandlerLimit(i.pendingCanActivate.keys(),i.pendingCanDeactivate.keys(),!1),o(t,i)}function L(e,t,n){e.setState(t),e.emitTransitionSuccess(t,n,E)}function R(e,t,i,a,s){n(t,`addRoute`),l(t,``,`addRoute`),f(t,``,`addRoute`);let u=r(t,e.rootPath,e.matcherOptions);e.lifecycleNamespace.preflightHandlerLimit(u.pendingCanActivate.keys(),u.pendingCanDeactivate.keys(),!0);let p=c(u,e.depsStore);if(e.lifecycleNamespace.clearDefinitionGuards(),o(e,u,p),s?.(),a!==void 0){let t=i.matchPath(a.path,i.getOptions());if(t)if(t.name===a.name)L(i,{...t,context:a.context,transition:a.transition},a);else{let{toDeactivate:n,toActivate:r}=d(t,a);e.lifecycleNamespace.canNavigateTo(n,r,t,a)?L(i,{...t,transition:a.transition},a):i.navigateToNotFound(a.path)}else i.navigateToNotFound(a.path)}}function z(e,t){return h(e.definitions,t)?(D(t,e.config,e.routeCustomFields,e.lifecycleNamespace),u(e),!0):!1}function B(e,t){let n=e.matcher.getSegmentsByName(t);if(!n)return;let r=g(n.at(-1)),i=e.lifecycleNamespace.getFactories();return k(r,t,e.config,i)}const V=new WeakMap;function H(e){let n=V.get(e);if(n)return n;let r=_(e),o=r.routeGetStore(),c=e=>{r.treeChanged.emit(e)},l={add:(e,n)=>{y(r.isDisposed),v(r.treeChanged.isEmitting);let i=Array.isArray(e)?e:[e],a=n?.parent;if(t(i,r.validator),a!==void 0&&r.validator?.routes.validateParentOption(a,o.tree),r.validator?.routes.throwIfInternalRouteInArray(i,`addRoute`),r.validator?.routes.validateAddRouteArgs(i),r.validator?.routes.validateRoutes(i,o),I(o,i,a),r.treeChanged.listenerCount()>0){let e=N(i,a,o);c(a===void 0?{op:`add`,added:e}:{op:`add`,added:e,parent:a})}},remove:e=>{if(y(r.isDisposed),v(r.treeChanged.isEmitting),r.validator?.routes.validateRemoveRouteArgs(e),r.validator?.routes.throwIfInternalRoute(e,`removeRoute`),s(e,`removeRoute`),!w(e,r.getStateName(),r.isTransitioning()))return;let t=r.treeChanged.listenerCount()>0?M(o,e):void 0;if(!z(o,e)){C.warn(`router.removeRoute`,`Route "${e}" not found. No changes made.`);return}t!==void 0&&c({op:`remove`,name:e,removedSubtree:t})},update:(e,t)=>{if(y(r.isDisposed),v(r.treeChanged.isEmitting),r.validator?.routes.validateUpdateRouteBasicArgs(e,t),r.validator?.routes.throwIfInternalRoute(e,`updateRoute`),s(e,`updateRoute`),r.validator?.routes.validateUpdateRoutePropertyTypes(e,t),r.isTransitioning()&&C.error(`router.updateRoute`,`Updating route "${e}" while navigation is in progress. This may cause unexpected behavior.`),r.validator?.routes.validateUpdateRoute(e,t,o),!o.matcher.hasRoute(e))return;let n=o.lifecycleNamespace,a=i(o,n,e,t);if(r.treeChanged.listenerCount()>0){let t=F(a);Object.keys(t).length>0&&c({op:`update`,name:e,patch:t})}},clear:()=>{if(y(r.isDisposed),v(r.treeChanged.isEmitting),!T(r.isTransitioning()))return;let e=r.treeChanged.listenerCount()>0?Object.freeze([...j(o,()=>!0).values()]):void 0;a(o),o.lifecycleNamespace.clearAll(),r.clearState(),e!==void 0&&c({op:`clear`,removed:e})},has:e=>(r.validator?.routes.validateRouteName(e,`hasRoute`),o.matcher.hasRoute(e)),get:e=>(r.validator?.routes.validateRouteName(e,`getRoute`),B(o,e)),replace:n=>{y(r.isDisposed),v(r.treeChanged.isEmitting);let i=Array.isArray(n)?n:[n];if(!T(r.isTransitioning()))return;t(i,r.validator),r.validator?.routes.throwIfInternalRouteInArray(i,`replaceRoutes`),r.validator?.routes.validateAddRouteArgs(i),r.validator?.routes.validateRoutes(i,o);let a=e.getState(),s=r.treeChanged.listenerCount()>0?j(o,()=>!0):void 0;R(o,i,r,a,s===void 0?void 0:()=>{let{removed:e,added:t}=P(s,j(o,()=>!0));c({op:`replace`,removed:e,added:t})})},subscribeChanges:e=>r.treeChanged.subscribe(e)};return V.set(e,l),l}function U(e,t,n,r){if(n!==void 0){if(!Object.hasOwn(e.dependencies,t))r?.dependencies.validateDependencyCount(e,`setDependency`);else{let i=e.dependencies[t];i!==n&&!(Number.isNaN(i)&&Number.isNaN(n))&&r?.dependencies.warnOverwrite(t,`setDependency`)}e.dependencies[t]=n}}function W(e,t,n){let r=[];for(let i in t)t[i]!==void 0&&(Object.hasOwn(e.dependencies,i)?r.push(i):n?.dependencies.validateDependencyCount(e,`setDependencies`),e.dependencies[i]=t[i]);r.length>0&&n?.dependencies.warnBatchOverwrite(r,`setDependencies`)}function G(e){let t=_(e);return{get:e=>{t.validator?.dependencies.validateDependencyName(e,`getDependency`);let n=t.dependenciesGetStore(),r=n.dependencies[e];return t.validator?.dependencies.validateDependencyExists(e,n),r},getAll:()=>({...t.dependenciesGetStore().dependencies}),set:(e,n)=>{y(t.isDisposed),t.validator?.dependencies.validateSetDependencyArgs(e,n,`setDependency`),U(t.dependenciesGetStore(),e,n,t.validator)},setAll:e=>{y(t.isDisposed);let n=t.dependenciesGetStore();t.validator?.dependencies.validateDependenciesObject(e,`setDependencies`),t.validator?.dependencies.validateDependencyLimit(n,n.limits),W(n,e,t.validator)},remove:e=>{y(t.isDisposed),t.validator?.dependencies.validateDependencyName(e,`removeDependency`);let n=t.dependenciesGetStore();Object.hasOwn(n.dependencies,e)||t.validator?.dependencies.warnRemoveNonExistent(e),delete n.dependencies[e]},reset:()=>{y(t.isDisposed);let e=t.dependenciesGetStore();e.dependencies=Object.create(null)},has:e=>(t.validator?.dependencies.validateDependencyName(e,`hasDependency`),Object.hasOwn(t.dependenciesGetStore().dependencies,e))}}export{S as cloneRouter,G as getDependenciesApi,b as getLifecycleApi,x as getPluginApi,H as getRoutesApi};
2
2
  //# sourceMappingURL=api.mjs.map
@@ -0,0 +1,2 @@
1
+ import{C as e,_ as t,n,t as r}from"./Router-Q3GRd0Nq.mjs";import{l as i,r as a}from"./esm-CLeBo4Hk.mjs";function o(t){if(t())throw new n(e.ROUTER_DISPOSED)}function s(t){if(t())throw new n(e.REENTRANT_TREE_MUTATION)}const c=new WeakMap;function l(t){let r=c.get(t);if(r)return r;let a=i(t),s={makeState:(e,t,n,r)=>(a.validator?.state.validateMakeStateArgs(e,t,n),a.makeState(e,t,n,r?.params)),buildState:(e,t)=>{a.validator?.routes.validateStateBuilderArgs(e,t,`buildState`);let{name:n,params:r}=a.forwardState(e,t);return a.buildStateResolved(n,r)},forwardState:(e,t)=>(a.validator?.routes.validateStateBuilderArgs(e,t,`forwardState`),a.forwardState(e,t)),matchPath:e=>(a.validator?.routes.validateMatchPathArgs(e),a.matchPath(e,a.getOptions())),navigateToState:(e,t)=>(o(a.isDisposed),a.validator?.navigation.validateNavigateToStateArgs(e),t!==void 0&&a.validator?.navigation.validateNavigationOptions(t,`navigateToState`),a.navigateToState(e,t)),setRootPath:e=>{o(a.isDisposed),a.validator?.routes.validateSetRootPathArgs(e),a.setRootPath(e)},getRootPath:a.getRootPath,addEventListener:(e,t)=>(o(a.isDisposed),a.validator?.eventBus.validateListenerArgs(e,t),a.addEventListener(e,t)),buildNavigationState:(e,t={})=>{a.validator?.routes.validateStateBuilderArgs(e,t,`buildNavigationState`);let{name:n,params:r}=a.forwardState(e,t),i=a.buildStateResolved(n,r);if(i)return a.makeState(i.name,i.params,a.buildPath(i.name,i.params),i.meta)},getOptions:a.getOptions,getTree:a.getTree,addInterceptor:(e,t)=>{o(a.isDisposed),a.validator?.plugins.validateAddInterceptorArgs(e,t);let n=a.interceptors.get(e);n||(n=[],a.interceptors.set(e,n)),n.push(t);let r=!1;return()=>{r||(r=!0,n.splice(n.indexOf(t),1))}},getRouteConfig:e=>{let t=a.routeGetStore();if(t.matcher.hasRoute(e))return t.routeCustomFields[e]},extendRouter:r=>{o(a.isDisposed);let i=Object.keys(r);for(let r of i)if(r in t)throw new n(e.PLUGIN_CONFLICT,{message:`Cannot extend router: property "${r}" already exists`});for(let e of i)t[e]=r[e];let s={keys:i};a.routerExtensions.push(s);let c=!1;return()=>{if(c)return;c=!0;for(let e of s.keys)delete t[e];let e=a.routerExtensions.indexOf(s);e!==-1&&a.routerExtensions.splice(e,1)}},emitTransitionError:e=>{o(a.isDisposed),a.emitTransitionError(e)},claimContextNamespace:t=>{if(o(a.isDisposed),a.contextClaimRecords.has(t))throw new n(e.CONTEXT_NAMESPACE_ALREADY_CLAIMED,{message:`Cannot claim context namespace: "${t}" is already claimed by another plugin`});return a.contextClaimRecords.add(t),{write(e,n){e.context[t]=n},release(){a.contextClaimRecords.delete(t)}}}};return c.set(t,s),s}function u(e){let t=i(e),n=t.routeGetStore().lifecycleNamespace;return{addActivateGuard(e,r){o(t.isDisposed),t.validator?.routes.validateRouteName(e,`addActivateGuard`),t.validator?.lifecycle.validateHandler(r,`addActivateGuard`),n.addCanActivate(e,r)},addDeactivateGuard(e,r){o(t.isDisposed),t.validator?.routes.validateRouteName(e,`addDeactivateGuard`),t.validator?.lifecycle.validateHandler(r,`addDeactivateGuard`),n.addCanDeactivate(e,r)},removeActivateGuard(e){o(t.isDisposed),t.validator?.routes.validateRouteName(e,`removeActivateGuard`),n.clearCanActivate(e,`external`)},removeDeactivateGuard(e){o(t.isDisposed),t.validator?.routes.validateRouteName(e,`removeDeactivateGuard`),n.clearCanDeactivate(e,`external`)}}}function d(o,s){let c=i(o);if(c.isDisposed())throw new n(e.ROUTER_DISPOSED);c.validator?.dependencies.validateCloneArgs(s);let l=c.routeGetStore(),d=a(l.tree),f=l.config,p=l.resolvedForwardMap,m=l.routeCustomFields,{options:h,dependencies:g,pluginFactories:_}=c.getCloneState(),{definition:v,external:y}=l.lifecycleNamespace.getFactoriesByOrigin(),b=new r(d,h,{...g,...s}),x=i(b),S=x.routeGetStore(),C=S.lifecycleNamespace;t(S.config,f),Object.assign(S.resolvedForwardMap,p),Object.assign(S.routeCustomFields,m),l.rootPath!==``&&x.setRootPath(l.rootPath);let[w,T]=v,[E,D]=y;for(let[e,t]of Object.entries(w))C.addCanDeactivate(e,t,!0);for(let[e,t]of Object.entries(T))C.addCanActivate(e,t,!0);let O=u(b);for(let[e,t]of Object.entries(E))O.addDeactivateGuard(e,t);for(let[e,t]of Object.entries(D))O.addActivateGuard(e,t);let k=new Set(x.getCloneState().pluginFactories),A=_.filter(e=>!k.has(e));return A.length>0&&b.usePlugin(...A),b}export{s as a,o as i,u as n,l as r,d as t};
2
+ //# sourceMappingURL=cloneRouter-BFeskDYy.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"cloneRouter-M_dwhLD_.mjs","names":["routeTreeToDefinitions","RouterClass"],"sources":["../../src/api/helpers.ts","../../src/api/getPluginApi.ts","../../src/api/getLifecycleApi.ts","../../src/api/cloneRouter.ts"],"sourcesContent":["// packages/core/src/api/helpers.ts\n\nimport { errorCodes } from \"../constants\";\nimport { RouterError } from \"../RouterError\";\n\nexport function throwIfDisposed(isDisposed: () => boolean): void {\n if (isDisposed()) {\n throw new RouterError(errorCodes.ROUTER_DISPOSED);\n }\n}\n\n/**\n * Bans synchronous reentrant route-CRUD: a CRUD op called while a `TREE_CHANGED`\n * emit is on the stack (i.e. from inside a `subscribeChanges` handler) throws\n * `REENTRANT_TREE_MUTATION` BEFORE mutating — the tree stays atomic (#1032).\n * Deferred CRUD (`queueMicrotask` / `await`) runs after the dispatch settles and\n * is unaffected; CRUD from a transition listener is not a TREE_CHANGED dispatch.\n */\nexport function throwIfReentrantTreeMutation(isEmitting: () => boolean): void {\n if (isEmitting()) {\n throw new RouterError(errorCodes.REENTRANT_TREE_MUTATION);\n }\n}\n","import { throwIfDisposed } from \"./helpers\";\nimport { errorCodes } from \"../constants\";\nimport { getInternals } from \"../internals\";\nimport { RouterError } from \"../RouterError\";\n\nimport type { PluginApi } from \"./types\";\nimport type {\n ContextNamespaceClaim,\n DefaultDependencies,\n Params,\n Router,\n State,\n} from \"@real-router/types\";\n\n// Cache the assembled PluginApi per router — mirrors getNavigator() (#525):\n// avoids re-allocating the closure-bag on each call (plugins call this once\n// at init, but tests + nested plugins poll it), and gives spy/stub helpers\n// a stable object identity to attach to (e.g. spying on\n// `getPluginApi(router).navigateToState` to inject errors in popstate\n// recovery tests).\nconst cache = new WeakMap<object, PluginApi>();\n\nexport function getPluginApi<\n Dependencies extends DefaultDependencies = DefaultDependencies,\n>(router: Router<Dependencies>): PluginApi {\n const cached = cache.get(router);\n\n if (cached) {\n return cached;\n }\n\n const ctx = getInternals(router);\n const api: PluginApi = {\n makeState: (name, params, path, meta) => {\n ctx.validator?.state.validateMakeStateArgs(name, params, path);\n\n return ctx.makeState(\n name,\n params,\n path,\n meta?.params as\n Record<string, Record<string, \"url\" | \"query\">> | undefined,\n );\n },\n buildState: (routeName, routeParams) => {\n ctx.validator?.routes.validateStateBuilderArgs(\n routeName,\n routeParams,\n \"buildState\",\n );\n\n const { name, params } = ctx.forwardState(routeName, routeParams);\n\n return ctx.buildStateResolved(name, params);\n },\n forwardState: <P extends Params = Params>(\n routeName: string,\n routeParams: P,\n ) => {\n ctx.validator?.routes.validateStateBuilderArgs(\n routeName,\n routeParams,\n \"forwardState\",\n );\n\n return ctx.forwardState(routeName, routeParams);\n },\n matchPath: (path) => {\n ctx.validator?.routes.validateMatchPathArgs(path);\n\n return ctx.matchPath(path, ctx.getOptions());\n },\n navigateToState: (state, options) => {\n throwIfDisposed(ctx.isDisposed);\n\n ctx.validator?.navigation.validateNavigateToStateArgs(state);\n\n if (options !== undefined) {\n ctx.validator?.navigation.validateNavigationOptions(\n options,\n \"navigateToState\",\n );\n }\n\n return ctx.navigateToState(state, options);\n },\n setRootPath: (rootPath) => {\n throwIfDisposed(ctx.isDisposed);\n\n ctx.validator?.routes.validateSetRootPathArgs(rootPath);\n\n ctx.setRootPath(rootPath);\n },\n getRootPath: ctx.getRootPath,\n addEventListener: (eventName, cb) => {\n throwIfDisposed(ctx.isDisposed);\n\n ctx.validator?.eventBus.validateListenerArgs(eventName, cb);\n\n return ctx.addEventListener(eventName, cb);\n },\n buildNavigationState: (name, params = {}) => {\n ctx.validator?.routes.validateStateBuilderArgs(\n name,\n params,\n \"buildNavigationState\",\n );\n\n const { name: resolvedName, params: resolvedParams } = ctx.forwardState(\n name,\n params,\n );\n const routeInfo = ctx.buildStateResolved(resolvedName, resolvedParams);\n\n if (!routeInfo) {\n return;\n }\n\n return ctx.makeState(\n routeInfo.name,\n routeInfo.params,\n ctx.buildPath(routeInfo.name, routeInfo.params),\n routeInfo.meta,\n );\n },\n getOptions: ctx.getOptions,\n getTree: ctx.getTree,\n addInterceptor: (method, fn) => {\n throwIfDisposed(ctx.isDisposed);\n ctx.validator?.plugins.validateAddInterceptorArgs(method, fn);\n let list = ctx.interceptors.get(method);\n\n if (!list) {\n list = [];\n ctx.interceptors.set(method, list);\n }\n\n list.push(fn);\n\n // Idempotency flag (#1198). Without it, a double call would `indexOf(fn)`\n // again and splice a DUPLICATE registration of the same fn — silently\n // deactivating another plugin's interceptor whose own unsubscribe was never\n // called. The `Unsubscribe` contract is documented idempotent. The flag\n // guarantees exactly one splice of a still-present `fn`, so no `index !== -1`\n // guard is needed (it would be dead — the second call returns above).\n let removed = false;\n\n return () => {\n if (removed) {\n return;\n }\n\n removed = true;\n list.splice(list.indexOf(fn), 1);\n };\n },\n getRouteConfig: (name) => {\n const store = ctx.routeGetStore();\n\n // Stryker disable next-line ConditionalExpression,BlockStatement: equivalent — a missing route yields routeCustomFields[name] === undefined, identical to this early return\n if (!store.matcher.hasRoute(name)) {\n return;\n }\n\n return store.routeCustomFields[name];\n },\n extendRouter: (extensions: Record<string, unknown>) => {\n throwIfDisposed(ctx.isDisposed);\n\n const keys = Object.keys(extensions);\n\n for (const key of keys) {\n if (key in router) {\n throw new RouterError(errorCodes.PLUGIN_CONFLICT, {\n message: `Cannot extend router: property \"${key}\" already exists`,\n });\n }\n }\n\n for (const key of keys) {\n (router as Record<string, unknown>)[key] = extensions[key];\n }\n\n const extensionRecord = { keys };\n\n ctx.routerExtensions.push(extensionRecord);\n\n let removed = false;\n\n return () => {\n if (removed) {\n return;\n }\n\n removed = true;\n\n for (const key of extensionRecord.keys) {\n delete (router as Record<string, unknown>)[key];\n }\n\n const idx = ctx.routerExtensions.indexOf(extensionRecord);\n\n // Stryker disable next-line ConditionalExpression,EqualityOperator,UnaryOperator,BlockStatement: equivalent — this splice only tidies the `routerExtensions` TRACKING array; the router INSTANCE is cleaned by the `delete router[key]` loop above, and dispose()'s safety-net re-deletes any leaked key harmlessly. So no mutation of this guard/splice is behaviourally observable (full suite green with `===`, `+1`, and an empty body). Contrast the addInterceptor splice, which IS observable through buildPath and is killed behaviourally by invariantGuardMutants.test.ts.\n if (idx !== -1) {\n ctx.routerExtensions.splice(idx, 1);\n }\n };\n },\n emitTransitionError: (error) => {\n throwIfDisposed(ctx.isDisposed);\n ctx.emitTransitionError(error);\n },\n claimContextNamespace: (namespace: string) => {\n throwIfDisposed(ctx.isDisposed);\n\n if (ctx.contextClaimRecords.has(namespace)) {\n throw new RouterError(errorCodes.CONTEXT_NAMESPACE_ALREADY_CLAIMED, {\n message: `Cannot claim context namespace: \"${namespace}\" is already claimed by another plugin`,\n });\n }\n\n ctx.contextClaimRecords.add(namespace);\n\n return {\n write(state: State, value: unknown) {\n state.context[namespace] = value;\n },\n release() {\n ctx.contextClaimRecords.delete(namespace);\n },\n } satisfies ContextNamespaceClaim;\n },\n };\n\n cache.set(router, api);\n\n return api;\n}\n","import { throwIfDisposed } from \"./helpers\";\nimport { getInternals } from \"../internals\";\n\nimport type { LifecycleApi } from \"./types\";\nimport type { DefaultDependencies, Router } from \"@real-router/types\";\n\nexport function getLifecycleApi<\n Dependencies extends DefaultDependencies = DefaultDependencies,\n>(router: Router<Dependencies>): LifecycleApi<Dependencies> {\n const ctx = getInternals(router);\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion -- guaranteed set after wiring\n const lifecycleNamespace = ctx.routeGetStore().lifecycleNamespace!;\n\n return {\n addActivateGuard(name, handler) {\n throwIfDisposed(ctx.isDisposed);\n\n ctx.validator?.routes.validateRouteName(name, \"addActivateGuard\");\n ctx.validator?.lifecycle.validateHandler(handler, \"addActivateGuard\");\n\n // Handler-limit enforcement lives at the namespace registration choke point\n // (RouteLifecycleNamespace.#registerHandler) so all paths are bounded\n // uniformly — see #961.\n lifecycleNamespace.addCanActivate(name, handler);\n },\n\n addDeactivateGuard(name, handler) {\n throwIfDisposed(ctx.isDisposed);\n\n ctx.validator?.routes.validateRouteName(name, \"addDeactivateGuard\");\n ctx.validator?.lifecycle.validateHandler(handler, \"addDeactivateGuard\");\n\n lifecycleNamespace.addCanDeactivate(name, handler);\n },\n\n removeActivateGuard(name) {\n throwIfDisposed(ctx.isDisposed);\n\n ctx.validator?.routes.validateRouteName(name, \"removeActivateGuard\");\n\n // Inverse of addActivateGuard (external): clears only the external guard;\n // a route-config (definition) canActivate survives (#1171).\n lifecycleNamespace.clearCanActivate(name, \"external\");\n },\n\n removeDeactivateGuard(name) {\n throwIfDisposed(ctx.isDisposed);\n\n ctx.validator?.routes.validateRouteName(name, \"removeDeactivateGuard\");\n\n // Inverse of addDeactivateGuard (external): clears only the external guard;\n // a route-config (definition) canDeactivate survives (#1171).\n lifecycleNamespace.clearCanDeactivate(name, \"external\");\n },\n };\n}\n","import { routeTreeToDefinitions } from \"route-tree\";\n\nimport { errorCodes } from \"../constants\";\nimport { getInternals } from \"../internals\";\nimport { assignConfigEntries } from \"../namespaces/RoutesNamespace/helpers\";\nimport { Router as RouterClass } from \"../Router\";\nimport { RouterError } from \"../RouterError\";\nimport { getLifecycleApi } from \"./getLifecycleApi\";\n\nimport type { Route } from \"../types\";\nimport type { DefaultDependencies, Router } from \"@real-router/types\";\n\n/**\n * Build an independent router instance that shares the route tree, options,\n * lifecycle guards, and plugin factories of `router`. The primary use case\n * is **SSR multi-tenancy** — one base router per process, one clone per\n * request.\n *\n * @param router - Source router (must not be disposed).\n * @param dependencies - Optional per-clone overrides merged on top of the\n * base router's dependencies. Always **fresh per call** in the documented\n * SSR pattern: pass per-request state here, never store it in the base.\n *\n * @remarks\n *\n * **Dependency merge — shallow by design.** `base.dependencies` are spread\n * into the clone via `{ ...sourceDeps, ...dependencies }`. Top-level keys\n * are new objects, but **values are shared by reference**: a `Map`, `Set`,\n * class instance, function, or nested plain object stored in\n * `base.dependencies` is the **same instance** in every clone. Mutations\n * in one clone are visible in the base and in every sibling clone.\n *\n * This is intentional. `structuredClone` of dep values is **not** applied\n * because it would:\n * - strip class prototypes (`new DbClient()` → plain object, methods lost)\n * - reject functions and symbols (`DataCloneError`)\n * - fragment singleton pools (one connection pool per request — pool\n * semantics destroyed)\n * - reject circular references\n *\n * **SSR rule of thumb.** Place values in `base.dependencies` according to\n * their lifecycle:\n *\n * - **Singletons / shared services** → `base.dependencies`. Examples: DB\n * client, connection pool, logger, config, feature-flag client. Process-\n * wide pooling depends on sharing these by reference.\n * - **Per-request state** → the `dependencies` override parameter (or\n * `createRequestScope`'s `deps` argument). Examples: `currentUser`,\n * `traceId`, `sessionId`, `abortSignal`. The override is applied last,\n * so it wins over base keys; pass a fresh object per call.\n *\n * Cross-request data leaks are **only possible** when per-request mutable\n * state is incorrectly placed in `base.dependencies`. The override slot is\n * the safe channel.\n *\n * @example\n * ```typescript\n * // Server boot — singletons only\n * const base = createRouter(routes, options, {\n * db: new DbClient(dbUrl),\n * logger,\n * });\n *\n * // Per request — fresh override per call\n * const clone = cloneRouter(base, {\n * currentUser,\n * traceId,\n * });\n * // clone.deps.db === base.deps.db ✓ shared pool (intentional)\n * // clone.deps.currentUser ✓ unique per request\n * ```\n *\n * @see createRequestScope — `@real-router/core/utils` SSR helper that\n * wraps this function and injects `abortSignal` automatically.\n */\nexport function cloneRouter<\n Dependencies extends DefaultDependencies = DefaultDependencies,\n>(\n router: Router<Dependencies>,\n dependencies?: Dependencies,\n): RouterClass<Dependencies> {\n const ctx = getInternals(router);\n\n if (ctx.isDisposed()) {\n throw new RouterError(errorCodes.ROUTER_DISPOSED);\n }\n\n ctx.validator?.dependencies.validateCloneArgs(dependencies);\n\n // Get source store directly\n const sourceStore = ctx.routeGetStore();\n const routes = routeTreeToDefinitions(sourceStore.tree);\n const routeConfig = sourceStore.config;\n const resolvedForwardMap = sourceStore.resolvedForwardMap;\n const routeCustomFields = sourceStore.routeCustomFields;\n\n const {\n options,\n dependencies: sourceDeps,\n pluginFactories,\n } = ctx.getCloneState();\n // Origin-aware factory snapshot — definition guards are re-registered with\n // `isFromDefinition=true` on the clone so `replace()` can still strip them\n // via `clearDefinitionGuards()`. External guards take the public lifecycle\n // API path so they survive `replace()` symmetric with the base.\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion -- guaranteed set after wiring\n const sourceLifecycleNamespace = sourceStore.lifecycleNamespace!;\n const { definition: definitionFactories, external: externalFactories } =\n sourceLifecycleNamespace.getFactoriesByOrigin();\n\n const mergedDeps = {\n ...sourceDeps,\n ...dependencies,\n } as Dependencies;\n\n const newRouter = new RouterClass<Dependencies>(\n routes as Route<Dependencies>[],\n options,\n mergedDeps,\n );\n\n const newCtx = getInternals(newRouter);\n const newStore = newCtx.routeGetStore();\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion -- guaranteed set after wiring\n const newLifecycleNamespace = newStore.lifecycleNamespace!;\n\n // Copy the source config + store-level maps BEFORE re-registering guards\n // (#1331 review): the definition-guard factories re-executed below must\n // observe the fully-built clone (encoders/decoders/defaultParams/custom\n // fields), mirroring the constructor where flushPendingGuards runs after the\n // store is complete. The five RouteConfig sub-maps go through a single\n // enumeration so a newly added config field is carried over automatically\n // (#965); resolvedForwardMap and routeCustomFields are store-level (not part\n // of RouteConfig) and stay explicit.\n assignConfigEntries(newStore.config, routeConfig);\n Object.assign(newStore.resolvedForwardMap, resolvedForwardMap);\n Object.assign(newStore.routeCustomFields, routeCustomFields);\n\n // #1175: carry the source rootPath. It lives in the store (not options/config),\n // and neither routeTreeToDefinitions nor getCloneState include it — so a clone\n // of a base configured with `setRootPath(\"/app\")` would otherwise build/match\n // under \"\" and 404 every request of a sub-path SSR deployment. setRootPath\n // rebuilds the tree in place with the just-copied config; the rebuild is only\n // paid when a rootPath is actually set, and it runs before the definition-guard\n // factories below so they observe the fully-built clone (rootPath included).\n if (sourceStore.rootPath !== \"\") {\n newCtx.setRootPath(sourceStore.rootPath);\n }\n\n const [definitionDeactivate, definitionActivate] = definitionFactories;\n const [externalDeactivate, externalActivate] = externalFactories;\n\n for (const [name, handler] of Object.entries(definitionDeactivate)) {\n newLifecycleNamespace.addCanDeactivate(name, handler, true);\n }\n\n for (const [name, handler] of Object.entries(definitionActivate)) {\n newLifecycleNamespace.addCanActivate(name, handler, true);\n }\n\n const lifecycle = getLifecycleApi(newRouter);\n\n for (const [name, handler] of Object.entries(externalDeactivate)) {\n lifecycle.addDeactivateGuard(name, handler);\n }\n\n for (const [name, handler] of Object.entries(externalActivate)) {\n lifecycle.addActivateGuard(name, handler);\n }\n\n // Plugin replay runs last and skips factories that a (contract-violating)\n // definition-guard factory already registered on the clone during the\n // re-compilation above — without the filter every clone would double-apply\n // such a plugin: once via the factory, once via this replay (#1331 review).\n const alreadyRegistered = new Set(newCtx.getCloneState().pluginFactories);\n const pluginsToReplay = pluginFactories.filter(\n (factory) => !alreadyRegistered.has(factory),\n );\n\n // Stryker disable next-line EqualityOperator: equivalent — `>= 0` is always true, but `usePlugin(...[])` with an empty spread is a no-op, so entering the block on an empty list behaves identically to skipping it. (ConditionalExpression stays live: `→false` skips a real plugin list and is killable.)\n if (pluginsToReplay.length > 0) {\n newRouter.usePlugin(...pluginsToReplay);\n }\n\n return newRouter;\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"cloneRouter-BFeskDYy.mjs","names":["routeTreeToDefinitions","RouterClass"],"sources":["../../src/api/helpers.ts","../../src/api/getPluginApi.ts","../../src/api/getLifecycleApi.ts","../../src/api/cloneRouter.ts"],"sourcesContent":["// packages/core/src/api/helpers.ts\n\nimport { errorCodes } from \"../constants\";\nimport { RouterError } from \"../RouterError\";\n\nexport function throwIfDisposed(isDisposed: () => boolean): void {\n if (isDisposed()) {\n throw new RouterError(errorCodes.ROUTER_DISPOSED);\n }\n}\n\n/**\n * Bans synchronous reentrant route-CRUD: a CRUD op called while a `TREE_CHANGED`\n * emit is on the stack (i.e. from inside a `subscribeChanges` handler) throws\n * `REENTRANT_TREE_MUTATION` BEFORE mutating — the tree stays atomic (#1032).\n * Deferred CRUD (`queueMicrotask` / `await`) runs after the dispatch settles and\n * is unaffected; CRUD from a transition listener is not a TREE_CHANGED dispatch.\n */\nexport function throwIfReentrantTreeMutation(isEmitting: () => boolean): void {\n if (isEmitting()) {\n throw new RouterError(errorCodes.REENTRANT_TREE_MUTATION);\n }\n}\n","import { throwIfDisposed } from \"./helpers\";\nimport { errorCodes } from \"../constants\";\nimport { getInternals } from \"../internals\";\nimport { RouterError } from \"../RouterError\";\n\nimport type { PluginApi } from \"./types\";\nimport type {\n ContextNamespaceClaim,\n DefaultDependencies,\n Params,\n Router,\n State,\n} from \"@real-router/types\";\n\n// Cache the assembled PluginApi per router — mirrors getNavigator() (#525):\n// avoids re-allocating the closure-bag on each call (plugins call this once\n// at init, but tests + nested plugins poll it), and gives spy/stub helpers\n// a stable object identity to attach to (e.g. spying on\n// `getPluginApi(router).navigateToState` to inject errors in popstate\n// recovery tests).\nconst cache = new WeakMap<object, PluginApi>();\n\nexport function getPluginApi<\n Dependencies extends DefaultDependencies = DefaultDependencies,\n>(router: Router<Dependencies>): PluginApi {\n const cached = cache.get(router);\n\n if (cached) {\n return cached;\n }\n\n const ctx = getInternals(router);\n const api: PluginApi = {\n makeState: (name, params, path, meta) => {\n ctx.validator?.state.validateMakeStateArgs(name, params, path);\n\n return ctx.makeState(\n name,\n params,\n path,\n meta?.params as\n Record<string, Record<string, \"url\" | \"query\">> | undefined,\n );\n },\n buildState: (routeName, routeParams) => {\n ctx.validator?.routes.validateStateBuilderArgs(\n routeName,\n routeParams,\n \"buildState\",\n );\n\n const { name, params } = ctx.forwardState(routeName, routeParams);\n\n return ctx.buildStateResolved(name, params);\n },\n forwardState: <P extends Params = Params>(\n routeName: string,\n routeParams: P,\n ) => {\n ctx.validator?.routes.validateStateBuilderArgs(\n routeName,\n routeParams,\n \"forwardState\",\n );\n\n return ctx.forwardState(routeName, routeParams);\n },\n matchPath: (path) => {\n ctx.validator?.routes.validateMatchPathArgs(path);\n\n return ctx.matchPath(path, ctx.getOptions());\n },\n navigateToState: (state, options) => {\n throwIfDisposed(ctx.isDisposed);\n\n ctx.validator?.navigation.validateNavigateToStateArgs(state);\n\n if (options !== undefined) {\n ctx.validator?.navigation.validateNavigationOptions(\n options,\n \"navigateToState\",\n );\n }\n\n return ctx.navigateToState(state, options);\n },\n setRootPath: (rootPath) => {\n throwIfDisposed(ctx.isDisposed);\n\n ctx.validator?.routes.validateSetRootPathArgs(rootPath);\n\n ctx.setRootPath(rootPath);\n },\n getRootPath: ctx.getRootPath,\n addEventListener: (eventName, cb) => {\n throwIfDisposed(ctx.isDisposed);\n\n ctx.validator?.eventBus.validateListenerArgs(eventName, cb);\n\n return ctx.addEventListener(eventName, cb);\n },\n buildNavigationState: (name, params = {}) => {\n ctx.validator?.routes.validateStateBuilderArgs(\n name,\n params,\n \"buildNavigationState\",\n );\n\n const { name: resolvedName, params: resolvedParams } = ctx.forwardState(\n name,\n params,\n );\n const routeInfo = ctx.buildStateResolved(resolvedName, resolvedParams);\n\n if (!routeInfo) {\n return;\n }\n\n return ctx.makeState(\n routeInfo.name,\n routeInfo.params,\n ctx.buildPath(routeInfo.name, routeInfo.params),\n routeInfo.meta,\n );\n },\n getOptions: ctx.getOptions,\n getTree: ctx.getTree,\n addInterceptor: (method, fn) => {\n throwIfDisposed(ctx.isDisposed);\n ctx.validator?.plugins.validateAddInterceptorArgs(method, fn);\n let list = ctx.interceptors.get(method);\n\n if (!list) {\n list = [];\n ctx.interceptors.set(method, list);\n }\n\n list.push(fn);\n\n // Idempotency flag (#1198). Without it, a double call would `indexOf(fn)`\n // again and splice a DUPLICATE registration of the same fn — silently\n // deactivating another plugin's interceptor whose own unsubscribe was never\n // called. The `Unsubscribe` contract is documented idempotent. The flag\n // guarantees exactly one splice of a still-present `fn`, so no `index !== -1`\n // guard is needed (it would be dead — the second call returns above).\n let removed = false;\n\n return () => {\n if (removed) {\n return;\n }\n\n removed = true;\n list.splice(list.indexOf(fn), 1);\n };\n },\n getRouteConfig: (name) => {\n const store = ctx.routeGetStore();\n\n // Stryker disable next-line ConditionalExpression,BlockStatement: equivalent — a missing route yields routeCustomFields[name] === undefined, identical to this early return\n if (!store.matcher.hasRoute(name)) {\n return;\n }\n\n return store.routeCustomFields[name];\n },\n extendRouter: (extensions: Record<string, unknown>) => {\n throwIfDisposed(ctx.isDisposed);\n\n const keys = Object.keys(extensions);\n\n for (const key of keys) {\n if (key in router) {\n throw new RouterError(errorCodes.PLUGIN_CONFLICT, {\n message: `Cannot extend router: property \"${key}\" already exists`,\n });\n }\n }\n\n for (const key of keys) {\n (router as Record<string, unknown>)[key] = extensions[key];\n }\n\n const extensionRecord = { keys };\n\n ctx.routerExtensions.push(extensionRecord);\n\n let removed = false;\n\n return () => {\n if (removed) {\n return;\n }\n\n removed = true;\n\n for (const key of extensionRecord.keys) {\n delete (router as Record<string, unknown>)[key];\n }\n\n const idx = ctx.routerExtensions.indexOf(extensionRecord);\n\n // Stryker disable next-line ConditionalExpression,EqualityOperator,UnaryOperator,BlockStatement: equivalent — this splice only tidies the `routerExtensions` TRACKING array; the router INSTANCE is cleaned by the `delete router[key]` loop above, and dispose()'s safety-net re-deletes any leaked key harmlessly. So no mutation of this guard/splice is behaviourally observable (full suite green with `===`, `+1`, and an empty body). Contrast the addInterceptor splice, which IS observable through buildPath and is killed behaviourally by invariantGuardMutants.test.ts.\n if (idx !== -1) {\n ctx.routerExtensions.splice(idx, 1);\n }\n };\n },\n emitTransitionError: (error) => {\n throwIfDisposed(ctx.isDisposed);\n ctx.emitTransitionError(error);\n },\n claimContextNamespace: (namespace: string) => {\n throwIfDisposed(ctx.isDisposed);\n\n if (ctx.contextClaimRecords.has(namespace)) {\n throw new RouterError(errorCodes.CONTEXT_NAMESPACE_ALREADY_CLAIMED, {\n message: `Cannot claim context namespace: \"${namespace}\" is already claimed by another plugin`,\n });\n }\n\n ctx.contextClaimRecords.add(namespace);\n\n return {\n write(state: State, value: unknown) {\n state.context[namespace] = value;\n },\n release() {\n ctx.contextClaimRecords.delete(namespace);\n },\n } satisfies ContextNamespaceClaim;\n },\n };\n\n cache.set(router, api);\n\n return api;\n}\n","import { throwIfDisposed } from \"./helpers\";\nimport { getInternals } from \"../internals\";\n\nimport type { LifecycleApi } from \"./types\";\nimport type { DefaultDependencies, Router } from \"@real-router/types\";\n\nexport function getLifecycleApi<\n Dependencies extends DefaultDependencies = DefaultDependencies,\n>(router: Router<Dependencies>): LifecycleApi<Dependencies> {\n const ctx = getInternals(router);\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion -- guaranteed set after wiring\n const lifecycleNamespace = ctx.routeGetStore().lifecycleNamespace!;\n\n return {\n addActivateGuard(name, handler) {\n throwIfDisposed(ctx.isDisposed);\n\n ctx.validator?.routes.validateRouteName(name, \"addActivateGuard\");\n ctx.validator?.lifecycle.validateHandler(handler, \"addActivateGuard\");\n\n // Handler-limit enforcement lives at the namespace registration choke point\n // (RouteLifecycleNamespace.#registerHandler) so all paths are bounded\n // uniformly — see #961.\n lifecycleNamespace.addCanActivate(name, handler);\n },\n\n addDeactivateGuard(name, handler) {\n throwIfDisposed(ctx.isDisposed);\n\n ctx.validator?.routes.validateRouteName(name, \"addDeactivateGuard\");\n ctx.validator?.lifecycle.validateHandler(handler, \"addDeactivateGuard\");\n\n lifecycleNamespace.addCanDeactivate(name, handler);\n },\n\n removeActivateGuard(name) {\n throwIfDisposed(ctx.isDisposed);\n\n ctx.validator?.routes.validateRouteName(name, \"removeActivateGuard\");\n\n // Inverse of addActivateGuard (external): clears only the external guard;\n // a route-config (definition) canActivate survives (#1171).\n lifecycleNamespace.clearCanActivate(name, \"external\");\n },\n\n removeDeactivateGuard(name) {\n throwIfDisposed(ctx.isDisposed);\n\n ctx.validator?.routes.validateRouteName(name, \"removeDeactivateGuard\");\n\n // Inverse of addDeactivateGuard (external): clears only the external guard;\n // a route-config (definition) canDeactivate survives (#1171).\n lifecycleNamespace.clearCanDeactivate(name, \"external\");\n },\n };\n}\n","import { routeTreeToDefinitions } from \"route-tree\";\n\nimport { errorCodes } from \"../constants\";\nimport { getInternals } from \"../internals\";\nimport { assignConfigEntries } from \"../namespaces/RoutesNamespace/helpers\";\nimport { Router as RouterClass } from \"../Router\";\nimport { RouterError } from \"../RouterError\";\nimport { getLifecycleApi } from \"./getLifecycleApi\";\n\nimport type { Route } from \"../types\";\nimport type { DefaultDependencies, Router } from \"@real-router/types\";\n\n/**\n * Build an independent router instance that shares the route tree, options,\n * lifecycle guards, and plugin factories of `router`. The primary use case\n * is **SSR multi-tenancy** — one base router per process, one clone per\n * request.\n *\n * @param router - Source router (must not be disposed).\n * @param dependencies - Optional per-clone overrides merged on top of the\n * base router's dependencies. Always **fresh per call** in the documented\n * SSR pattern: pass per-request state here, never store it in the base.\n *\n * @remarks\n *\n * **Dependency merge — shallow by design.** `base.dependencies` are spread\n * into the clone via `{ ...sourceDeps, ...dependencies }`. Top-level keys\n * are new objects, but **values are shared by reference**: a `Map`, `Set`,\n * class instance, function, or nested plain object stored in\n * `base.dependencies` is the **same instance** in every clone. Mutations\n * in one clone are visible in the base and in every sibling clone.\n *\n * This is intentional. `structuredClone` of dep values is **not** applied\n * because it would:\n * - strip class prototypes (`new DbClient()` → plain object, methods lost)\n * - reject functions and symbols (`DataCloneError`)\n * - fragment singleton pools (one connection pool per request — pool\n * semantics destroyed)\n * - reject circular references\n *\n * **SSR rule of thumb.** Place values in `base.dependencies` according to\n * their lifecycle:\n *\n * - **Singletons / shared services** → `base.dependencies`. Examples: DB\n * client, connection pool, logger, config, feature-flag client. Process-\n * wide pooling depends on sharing these by reference.\n * - **Per-request state** → the `dependencies` override parameter (or\n * `createRequestScope`'s `deps` argument). Examples: `currentUser`,\n * `traceId`, `sessionId`, `abortSignal`. The override is applied last,\n * so it wins over base keys; pass a fresh object per call.\n *\n * Cross-request data leaks are **only possible** when per-request mutable\n * state is incorrectly placed in `base.dependencies`. The override slot is\n * the safe channel.\n *\n * @example\n * ```typescript\n * // Server boot — singletons only\n * const base = createRouter(routes, options, {\n * db: new DbClient(dbUrl),\n * logger,\n * });\n *\n * // Per request — fresh override per call\n * const clone = cloneRouter(base, {\n * currentUser,\n * traceId,\n * });\n * // clone.deps.db === base.deps.db ✓ shared pool (intentional)\n * // clone.deps.currentUser ✓ unique per request\n * ```\n *\n * @see createRequestScope — `@real-router/core/utils` SSR helper that\n * wraps this function and injects `abortSignal` automatically.\n */\nexport function cloneRouter<\n Dependencies extends DefaultDependencies = DefaultDependencies,\n>(\n router: Router<Dependencies>,\n dependencies?: Dependencies,\n): RouterClass<Dependencies> {\n const ctx = getInternals(router);\n\n if (ctx.isDisposed()) {\n throw new RouterError(errorCodes.ROUTER_DISPOSED);\n }\n\n ctx.validator?.dependencies.validateCloneArgs(dependencies);\n\n // Get source store directly\n const sourceStore = ctx.routeGetStore();\n const routes = routeTreeToDefinitions(sourceStore.tree);\n const routeConfig = sourceStore.config;\n const resolvedForwardMap = sourceStore.resolvedForwardMap;\n const routeCustomFields = sourceStore.routeCustomFields;\n\n const {\n options,\n dependencies: sourceDeps,\n pluginFactories,\n } = ctx.getCloneState();\n // Origin-aware factory snapshot — definition guards are re-registered with\n // `isFromDefinition=true` on the clone so `replace()` can still strip them\n // via `clearDefinitionGuards()`. External guards take the public lifecycle\n // API path so they survive `replace()` symmetric with the base.\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion -- guaranteed set after wiring\n const sourceLifecycleNamespace = sourceStore.lifecycleNamespace!;\n const { definition: definitionFactories, external: externalFactories } =\n sourceLifecycleNamespace.getFactoriesByOrigin();\n\n const mergedDeps = {\n ...sourceDeps,\n ...dependencies,\n } as Dependencies;\n\n const newRouter = new RouterClass<Dependencies>(\n routes as Route<Dependencies>[],\n options,\n mergedDeps,\n );\n\n const newCtx = getInternals(newRouter);\n const newStore = newCtx.routeGetStore();\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion -- guaranteed set after wiring\n const newLifecycleNamespace = newStore.lifecycleNamespace!;\n\n // Copy the source config + store-level maps BEFORE re-registering guards\n // (#1331 review): the definition-guard factories re-executed below must\n // observe the fully-built clone (encoders/decoders/defaultParams/custom\n // fields), mirroring the constructor where flushPendingGuards runs after the\n // store is complete. The five RouteConfig sub-maps go through a single\n // enumeration so a newly added config field is carried over automatically\n // (#965); resolvedForwardMap and routeCustomFields are store-level (not part\n // of RouteConfig) and stay explicit.\n assignConfigEntries(newStore.config, routeConfig);\n Object.assign(newStore.resolvedForwardMap, resolvedForwardMap);\n Object.assign(newStore.routeCustomFields, routeCustomFields);\n\n // #1175: carry the source rootPath. It lives in the store (not options/config),\n // and neither routeTreeToDefinitions nor getCloneState include it — so a clone\n // of a base configured with `setRootPath(\"/app\")` would otherwise build/match\n // under \"\" and 404 every request of a sub-path SSR deployment. setRootPath\n // rebuilds the tree in place with the just-copied config; the rebuild is only\n // paid when a rootPath is actually set, and it runs before the definition-guard\n // factories below so they observe the fully-built clone (rootPath included).\n if (sourceStore.rootPath !== \"\") {\n newCtx.setRootPath(sourceStore.rootPath);\n }\n\n const [definitionDeactivate, definitionActivate] = definitionFactories;\n const [externalDeactivate, externalActivate] = externalFactories;\n\n for (const [name, handler] of Object.entries(definitionDeactivate)) {\n newLifecycleNamespace.addCanDeactivate(name, handler, true);\n }\n\n for (const [name, handler] of Object.entries(definitionActivate)) {\n newLifecycleNamespace.addCanActivate(name, handler, true);\n }\n\n const lifecycle = getLifecycleApi(newRouter);\n\n for (const [name, handler] of Object.entries(externalDeactivate)) {\n lifecycle.addDeactivateGuard(name, handler);\n }\n\n for (const [name, handler] of Object.entries(externalActivate)) {\n lifecycle.addActivateGuard(name, handler);\n }\n\n // Plugin replay runs last and skips factories that a (contract-violating)\n // definition-guard factory already registered on the clone during the\n // re-compilation above — without the filter every clone would double-apply\n // such a plugin: once via the factory, once via this replay (#1331 review).\n const alreadyRegistered = new Set(newCtx.getCloneState().pluginFactories);\n const pluginsToReplay = pluginFactories.filter(\n (factory) => !alreadyRegistered.has(factory),\n );\n\n // Stryker disable next-line EqualityOperator: equivalent — `>= 0` is always true, but `usePlugin(...[])` with an empty spread is a no-op, so entering the block on an empty list behaves identically to skipping it. (ConditionalExpression stays live: `→false` skips a real plugin list and is killable.)\n if (pluginsToReplay.length > 0) {\n newRouter.usePlugin(...pluginsToReplay);\n }\n\n return newRouter;\n}\n"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ const e=new WeakMap;function t(t){let n=e.get(t);if(!n)throw TypeError(`[real-router] Invalid router instance — not found in internals registry`);return n}function n(t,n){e.set(t,n)}function r(e,t,n){let r=t;for(let t of e){let e=r;r=(...n)=>t(e,...n)}return r(...n)}function i(e,t,n){return((...i)=>{let a=n.get(e);return!a||a.length===0?t(...i):r(a,t,i)})}function a(e,t,n){return(i,a)=>{let o=n.get(e);return!o||o.length===0?t(i,a):r(o,t,[i,a])}}const o=`[^>]*`;function s(e){let t=!1;for(let n of e)if(n===`<`)t=!0;else if(n===`>`){if(!t)return!1;t=!1}return!t}const c=/[<>]/u,l=e=>e===58||e===42;function u(e){let t=[],n=0,r=!1;for(let i=0;i<e.length;i+=1){let a=e.charCodeAt(i);a===60?r=!0:a===62?r=!1:a===47&&!r&&(t.push(e.slice(n,i)),n=i+1)}return t.push(e.slice(n)),t}function d(e){let t=e.length;if(t===0)return{kind:`static`,text:``};if(!l(e.charCodeAt(0))){for(let n=0;n<t;n+=1){let r=e.charCodeAt(n);if(r===60)return{error:`constraint-in-static`};if(l(r)&&n+1<t&&e.charCodeAt(n+1)!==60)return{error:`fused-marker`}}return e.charCodeAt(t-1)===63?{error:`name-less`}:{kind:`static`,text:e}}let n=e.charCodeAt(0)===42,r=1;for(;r<t;){let t=e.charCodeAt(r);if(t===60||t===63)break;r+=1}let i=e.slice(1,r);if(i.length===0)return{error:`name-less`};if(l(i.charCodeAt(i.length-1)))return{error:`trailing-marker`};let a,o=!1;if(r<t)if(e.charCodeAt(r)===60){let n=e.indexOf(`>`,r+1);if(n===-1)return{error:`unbalanced-constraint`};if(n===r+1)return{error:`empty-constraint`};a=e.slice(r,n+1);let i=n+1;if(i<t)if(e.charCodeAt(i)===63)o=!0;else return{error:`fused-constraint-suffix`}}else o=!0;return n?o?{error:`optional-splat`}:{kind:`splat`,name:i}:a===void 0?{kind:`param`,name:i,optional:o}:{kind:`param`,name:i,constraint:a,optional:o}}function f(e){for(let t of u(e)){let e=d(t);if(`error`in e)return e.error}}function p(e){let t=u(e);for(let e=2;e<t.length;e+=1)if(t[e].startsWith(`*`)&&m(t[e-1])&&m(t[e-2]))return!0;return!1}function m(e){return e.startsWith(`:`)&&e.endsWith(`?`)}function h(e){return`(${e.replaceAll(/(^<|>$)/g,``)})`}function g(e,t){try{return RegExp(`^${h(e)}$`)}catch{throw Error(`[buildParamMeta] Invalid constraint '${e}' on parameter '${t}': the body between '<' and '>' must be a valid regular expression (e.g. '<[0-9]+>', '<[a-z]+>').`)}}const ee=new RegExp(String.raw`([:*]${`[^/?<]+`}(?:<${o}>)?)\?(?=[/?]|$)`,`g`),te=RegExp(`<${o}>`,`g`),ne=/\?(.+)$/;function re(e){return e.replaceAll(te,e=>`<${`x`.repeat(e.length-2)}>`).replaceAll(ee,`$1\0`)}const _=Object.freeze([]),v=Object.freeze({}),y=new Map,ie=Object.freeze({urlParams:_,queryParams:_,spatParams:_,paramTypeMap:v,constraintPatterns:y,pathPattern:``});function ae(e,t,n,r,i){for(let a of u(e)){if(a.length===0)continue;let e=d(a);`error`in e||e.kind===`static`||(t.push(e.name),r[e.name]=`url`,e.kind===`splat`?n.push(e.name):e.constraint!==void 0&&i.set(e.name,{pattern:g(e.constraint,e.name),constraint:e.constraint}))}}function oe(e){let t=[],n=[],r=[],i={},a=new Map,o=ne.exec(re(e));if(o!==null){let t=e.slice(o.index+1).split(`&`);for(let e of t){let t=e.trim();t.length>0&&(n.push(t),i[t]=`query`)}e=e.slice(0,o.index)}return ae(e,t,r,i,a),se(t,n,r,i,a,e)}function se(e,t,n,r,i,a){return{urlParams:e.length===0?_:e,queryParams:t.length===0?_:t,spatParams:n.length===0?_:n,paramTypeMap:e.length===0&&t.length===0?v:r,constraintPatterns:i.size===0?y:i,pathPattern:a}}const ce=/[^\w!$'()*+,.:;|~-]/gu,le=/[^\w!$'()*+,.:;|~-]/u,ue=/[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?<![\uD800-\uDBFF])[\uDC00-\uDFFF]/g,b=e=>t=>{try{return e(t)}catch{return e(t.replaceAll(ue,`�`))}},de=b(e=>e.replaceAll(ce,e=>encodeURIComponent(e))),fe={default:e=>le.test(e)?de(e):e,uri:b(encodeURI),uriComponent:b(encodeURIComponent),none:e=>e},pe={default:decodeURIComponent,uri:decodeURI,uriComponent:decodeURIComponent,none:e=>e},me=(e,t)=>{let n=fe[t],r=String(e).split(`/`),i=n(r[0]);for(let e=1;e<r.length;e++)i+=`/`+n(r[e]);return i},x=Object.freeze(Object.create(null));function S(){return{staticChildren:x,hasChildren:!1,paramChild:void 0,splatChild:void 0,route:void 0,routeIsStrong:!1,slashChildRoute:void 0}}function C(e){return e.length>1&&e.endsWith(`/`)?e.slice(0,-1):e}function he(e,t){return e===``?t:t===``?e:e+t}function w(e){return e>=48&&e<=57||e>=65&&e<=70||e>=97&&e<=102}function ge(e){let t=0;for(;t<e.length;)if(e.codePointAt(t)===37){if(t+2>=e.length)return!1;let n=e.codePointAt(t+1)??0,r=e.codePointAt(t+2)??0;if(!w(n)||!w(r))return!1;t+=3}else t++;return!0}const _e=Object.freeze([]),T=Object.freeze(new Set),ve=Object.freeze(new Map),ye=Object.freeze([]),be=Object.freeze({}),xe=Object.freeze({}),Se=RegExp(`<${o}>`,`g`);function Ce(e,t,n){let r=t.has(e.name);return{paramName:e.name,isOptional:e.kind===`param`?e.optional:!1,encoder:r?e=>me(e,n):fe[n]}}function we(e,t,n){let r=new Set,i=new Set;for(let e of t){for(let t of e.paramMeta.urlParams)r.add(t);for(let t of e.paramMeta.spatParams)i.add(t)}if(r.size===0)return{buildStaticParts:[e],buildParamSlots:ye};let a=[],o=[],s=``,c=u(e);for(let[e,t]of c.entries()){e>0&&(s+=`/`);let r=d(t);if(`error`in r||r.kind===`static`){s+=t;continue}a.push(s),s=``,o.push(Ce(r,i,n))}return a.push(s),{buildStaticParts:a,buildParamSlots:o}}function E(e,t,n){throw Error(`[SegmentMatcher.registerTree] Parameter name conflict at the same path position: '${n}${e}' and '${n}${t}'. A parametric URL segment binds to a single name across every route that shares that position — the value cannot be captured under two names. Rename one so both routes agree (e.g. use '${n}${e}' in both).`)}function D(){throw Error(`[SegmentMatcher.registerTree] Empty parameter name: a parameter marker (':' or '*') or an optional '?' must be followed by a name (e.g. ':id', '*rest', ':id?'). A name-less marker or modifier would capture under an empty key at match but emit a literal at build — the two disagree, so it is rejected.`)}function Te(e){throw Error(`[SegmentMatcher.registerTree] Fused parameter marker in segment "${e}": a ':'/'*' marker must begin a segment (e.g. 'a/:b', not 'a:b'). build extracts it as a param while the trie treats the segment as a literal — the two disagree.`)}function Ee(e){throw Error(`[SegmentMatcher.registerTree] Trailing parameter marker in segment "${e}": a param name cannot end in a bare ':' or '*' (e.g. ':y*' — the name is 'y' plus a stray marker). build/meta would capture the marker into the name while the gate rejects it as name-less — the two disagree, so it is rejected.`)}function De(e){throw Error(`[SegmentMatcher.registerTree] Two optional params directly before a splat in "${e}": a single trie slot carries only one optional→splat fork, so the outer optional would overwrite the inner and the omit-outer/take-inner form would silently reshape into the splat. Split into separate routes, or drop the '?' on one.`)}function Oe(e){throw Error(`[SegmentMatcher.registerTree] Non-ASCII static segment "${e}": match rejects non-ASCII input and compares static keys raw, so this route would never match. Percent-encode it (e.g. "/caf%C3%A9") or use a param.`)}function ke(e){throw Error(`[SegmentMatcher.registerTree] Optional splat "${e}" is not supported: a splat cannot be optional — build emits multi-segment URLs the matcher rejects. Use a required splat "*name".`)}function Ae(e){throw Error(`[SegmentMatcher.registerTree] Optional param ":${e}?" before a splat must be constrained: an unconstrained optional before a splat is ambiguous (every multi-segment value has two readings). Add a constraint, e.g. ":${e}<[a-z]+>?", or model it as two routes.`)}function O(e){throw Error(`[SegmentMatcher.registerTree] Unbalanced constraint delimiter ('<' or '>') in path "${e}": every '<' must be closed by a '>'. A stray delimiter desyncs match vs build (buildPath would emit a URL match rejects).`)}function je(e){throw Error(`[SegmentMatcher.registerTree] Empty constraint '<>' in path "${e}": a constraint body must be non-empty (e.g. '<[0-9]+>'). An empty '<>' compiles to a never-matching pattern.`)}function Me(e){throw Error(`[SegmentMatcher.registerTree] Text fused to a constraint '>' in path "${e}": a '<...>' constraint must end its segment or be followed by '/' or an optional '?' — use "/:id<...>/rest", not "/:id<...>rest".`)}function Ne(e){throw Error(`[SegmentMatcher.registerTree] Constraint '<...>' in a static segment in path "${e}": a '<...>' constraint must follow a parameter marker (':' or '*') — a static segment carrying '<...>' is silently stripped. Attach it to a param (e.g. "/:id<...>") or drop it.`)}function Pe(e,t,n){switch(e){case`name-less`:return D();case`trailing-marker`:return Ee(t);case`fused-marker`:return Te(t);case`optional-splat`:return ke(t);case`empty-constraint`:return je(n);case`fused-constraint-suffix`:return Me(n);case`constraint-in-static`:return Ne(n);case`unbalanced-constraint`:return O(n)}}function Fe(e,t){let n=new Set,r=``;for(let e of t){if(n.has(e)){r=e;break}n.add(e)}throw Error(`[SegmentMatcher.registerTree] Duplicate parameter name ':${r}' in route "${e}": a param name must be unique within a route — two positions cannot both bind ':${r}' (the second silently overwrites the first). Rename one.`)}function Ie(e,t){throw Error(`[SegmentMatcher.registerTree] Invalid query-param declaration "${t}" in route "${e}": a query-param name cannot contain '<' or '>'. This is a reverse-order modifier typo that leaked a constraint into the query — put the optional '?' AFTER the constraint (':id<...>?', not ':id?<...>'). It would never round-trip.`)}function Le(e,t){throw Error(`[SegmentMatcher.registerTree] Name collision in route "${e}": "${t}" is declared as BOTH a path param (':${t}') and a query param ('?${t}'). buildPath would emit its value twice (once in the path, once in the query). Rename one.`)}function Re(e,t){throw Error(`[SegmentMatcher.registerTree] Duplicate route path: routes "${e}" and "${t}" resolve to the same URL. The later registration would silently shadow the earlier (its deep link would resolve to the other route). Give them distinct paths.`)}function ze(e,t){throw Error(`[SegmentMatcher.registerTree] Index route "${e}" (path "/") under the dynamic parent "${t}" is not supported: the index cannot reliably replace the parent on every form of its path — under an optional param it binds only the present form, under a splat it is unreachable. Give the index a distinct path, or make the parent static.`)}function k(e){let t=d(e);return(`error`in t||t.kind===`static`)&&D(),t.name}function A(e,t,n){return e.paramChild?e.paramChild.name!==t&&!n.has(e)&&E(e.paramChild.name,t,`:`):(e.paramChild={node:S(),name:t,fork:void 0},n.add(e)),e.paramChild.node}function Be(e,t,n,r,i,a){let o=t.constraintPatterns.get(n)?.pattern;if(e.paramChild&&e.splatChild){o===void 0&&Ae(n),e.paramChild.fork={constraint:o};return}let s=i+1;if(s<=a){let t=r.indexOf(`/`,s),n=r.slice(s,t===-1?a:t);e.paramChild&&n.startsWith(`:`)&&!n.endsWith(`?`)&&(e.paramChild.fork={skipName:k(n)})}}function Ve(e,t,n){if(!t.hasConstraints||!n.startsWith(`:`)||e.paramChild===void 0)return;let r=t.constraintPatterns.get(k(n))?.pattern;if(r===void 0)return;let i=e.paramChild;i.fork?.constraint===void 0?i.fork={...i.fork,constraint:r}:i.fork.constraint.source!==r.source&&(i.fork={...i.fork,constraint:RegExp(`(?:${i.fork.constraint.source})|(?:${r.source})`,i.fork.constraint.flags)})}function He(e,t,n){return e.splatChild?e.splatChild.name!==t&&!n.has(e)&&E(e.splatChild.name,t,`*`):(e.splatChild={node:S(),name:t},n.add(e)),e.splatChild.node}function j(e,t){e.route!==void 0&&e.route!==t&&e.routeIsStrong===!0&&Re(e.route.name,t.name),e.route=t,e.routeIsStrong=!0}function Ue(e){for(let t=0;t<e.length;t++)if(e.charCodeAt(t)>=128)return!0;return!1}function We(e,t,n){let r=C(n);if(r===`/`){j(e.root,t);return}let i=new Set,a=new Map;M(e,e.root,r,1,t,i,a)}function M(e,t,n,r,i,a,o){let s=o.get(t);if(s===void 0)s=new Set,o.set(t,s);else if(s.has(r))return;s.add(r);let c=n.length;for(;r<=c;){let s=n.indexOf(`/`,r),l=s===-1?c:s,u=n.slice(r,l);if(u.endsWith(`?`)){let r=k(u);M(e,A(t,r,a),n,l+1,i,a,o),l>=c?t.route??=i:M(e,t,n,l+1,i,a,o),Be(t,i,r,n,l,c);return}let d=t;t=N(e,t,u,a),Ve(d,i,u),r=l+1}j(t,i)}function Ge(e,t,n){let r=n.slice(n.lastIndexOf(`/`)+1),i=n.split(`/`).some(e=>e.startsWith(`:`)&&e.endsWith(`?`)),a=r.startsWith(`*`);(i||a)&&ze(t.name,n);let o=Ke(e,n);o.slashChildRoute=t}function Ke(e,t){return qe(e,e.root,t)}function qe(e,t,n){let r=C(n);if(r===`/`||r===``)return t;let i=t,a=1,o=r.length,s=new Set;for(;a<=o;){let t=r.indexOf(`/`,a),n=t===-1?o:t;if(n<=a)break;let c=r.slice(a,n);i=N(e,i,c,s),a=n+1}return i}function N(e,t,n,r){if(n.startsWith(`*`)){let e=He(t,k(n),r);return t.hasChildren=!0,e}if(n.startsWith(`:`)){let e=A(t,k(n),r);return t.hasChildren=!0,e}Ue(n)&&Oe(n);let i=e.options.caseSensitive?n:n.toLowerCase();return i in t.staticChildren||(t.staticChildren===x&&(t.staticChildren=Object.create(null)),t.staticChildren[i]=S(),t.hasChildren=!0),t.staticChildren[i]}function P(e,t,n,r,i){let a=t.fullName===``;a||r.push(t);let o=t.absolute,c=t.paramMeta===ie?t.path:t.paramMeta.pathPattern,l=o&&c.startsWith(`~`)?c.slice(1):c,f=o?l:c;s(f)||O(f);for(let e of u(f)){let t=d(e);`error`in t&&Pe(t.error,e,f)}let m=f.replaceAll(Se,``);p(f)&&De(f);let h=o?m:he(n,m),g=a?i:Je(e,t,h,o?``:n,r,i);for(let n of t.children.values())P(e,n,h,r,g);a||r.pop()}function Je(e,t,n,r,i,a){let o=$e(n,r),s=Object.freeze([...i]),c=Ye(s),l=C(n),u=et(e.rootQueryParams,i),d=tt(i),{buildStaticParts:f,buildParamSlots:p}=we(o?C(r):l,o?i.slice(0,-1):i,e.options.urlParamsEncoding),m=p.map(e=>e.paramName),h=m.length===0?T:new Set(m);h.size!==m.length&&Fe(t.fullName,m),nt(t.fullName,u,h);let g={name:t.fullName,parent:a,matchSegments:s,meta:c,declaredQueryParams:u,declaredQueryParamsSet:u.length===0?T:new Set(u),hasTrailingSlash:n.length>1&&n.endsWith(`/`),constraintPatterns:d,hasConstraints:d.size>0,buildStaticParts:f,buildParamSlots:p,buildParamNamesSet:h,cachedResult:void 0};return t.paramMeta.urlParams.length===0&&(g.cachedResult=Object.freeze({segments:g.matchSegments,params:be,meta:g.meta})),e.routesByName.set(t.fullName,g),o?Ze(e,g,r):Qe(e,g,n,l,t),g}function Ye(e){let t;for(let n of e)Xe(n.paramTypeMap)&&(t??={},t[n.fullName]=n.paramTypeMap);return t===void 0?xe:Object.freeze(t)}function Xe(e){for(let t in e)if(Object.hasOwn(e,t))return!0;return!1}function Ze(e,t,n){Ge(e,t,n);let r=C(n),i=e.options.caseSensitive?r:r.toLowerCase();e.staticCache.has(i)&&e.staticCache.set(i,t)}function Qe(e,t,n,r,i){if(We(e,t,n),i.paramMeta.urlParams.length===0){let n=e.options.caseSensitive?r:r.toLowerCase();e.staticCache.set(n,t)}}function $e(e,t){return C(e)===C(t)}function et(e,t){let n=[];e.length>0&&n.push(...e);for(let e of t)e.paramMeta.queryParams.length>0&&n.push(...e.paramMeta.queryParams);return n.length===0?_e:n}function tt(e){let t=new Map;for(let n of e)for(let[e,r]of n.paramMeta.constraintPatterns)t.set(e,r);return t.size===0?ve:t}function nt(e,t,n){for(let r of t)c.test(r)&&Ie(e,r),n.has(r)&&Le(e,r)}function rt(e){return typeof e==`string`?e:typeof e==`object`?JSON.stringify(e):String(e)}function F(e,t,n){t===`__proto__`?Object.defineProperty(e,t,{value:n,writable:!0,enumerable:!0,configurable:!0}):e[t]=n}var it=class{get options(){return this.#e}#e;#t=S();#n=new Map;#r=new Map;#i={cleanPath:``,normalized:``,queryString:void 0};#a=[];#o=``;#s;#c;constructor(e){this.#e={caseSensitive:e.caseSensitive??!0,strictTrailingSlash:e.strictTrailingSlash??!1,strictQueryParams:e.strictQueryParams??!1,urlParamsEncoding:e.urlParamsEncoding??`default`,parseQueryString:e.parseQueryString,buildQueryString:e.buildQueryString},this.#s=this.#e.caseSensitive,this.#c=this.#e.urlParamsEncoding===`none`?null:pe[this.#e.urlParamsEncoding]}registerTree(e){this.#a=e.paramMeta.queryParams,P({root:this.#t,options:this.#e,routesByName:this.#n,staticCache:this.#r,rootQueryParams:this.#a},e,``,[],null)}match(e){if(!this.#p(e))return;let{cleanPath:t,normalized:n,queryString:r}=this.#i,i=this.#s?n:n.toLowerCase(),a=this.#r.get(i);if(a)return this.#e.strictTrailingSlash&&!this.#_(t,a)?void 0:r===void 0&&a.cachedResult?a.cachedResult:this.#h(a,{},r);let o={},s=this.#v(n,o);if(s&&!(this.#e.strictTrailingSlash&&!this.#_(t,s))&&this.#S(o)&&!(s.hasConstraints&&!this.#w(o,s)))return this.#h(s,o,r)}buildPath(e,t,n){let r=this.#n.get(e);if(!r)throw Error(`[SegmentMatcher.buildPath] '${e}' is not defined`);r.hasConstraints&&t&&this.#l(r,e,t);let i=this.#u(r,t),a=this.#d(i,n?.trailingSlash),o=this.#f(r,t,n?.queryParamsMode);return a+(o?`?${o}`:``)}getSegmentsByName(e){return this.#n.get(e)?.matchSegments}getMetaByName(e){return this.#n.get(e)?.meta}hasRoute(e){return this.#n.has(e)}#l(e,t,n){for(let[r,i]of e.constraintPatterns){let e=n[r];if(e!=null){let n=typeof e==`object`?JSON.stringify(e):String(e);if(!i.pattern.test(n))throw Error(`[SegmentMatcher.buildPath] '${t}' — param '${r}' value '${n}' does not match constraint '${i.constraint}'`)}}}#u(e,t){let n=e.buildStaticParts,r=e.buildParamSlots;if(r.length===0)return n[0];let i=n[0];for(let[e,a]of r.entries()){let r=t?.[a.paramName];if(r==null){if(!a.isOptional)throw Error(`[SegmentMatcher.buildPath] Missing required param '${a.paramName}'`);i.length>1?i=i.slice(0,-1):n[e+1].startsWith(`/`)&&(i=``),i+=n[e+1];continue}if(r===``&&!a.isOptional)throw Error(`[SegmentMatcher.buildPath] Missing required param '${a.paramName}' (empty string)`);let o=a.encoder(rt(r));i+=o+n[e+1]}return i}#d(e,t){return t===`always`&&!e.endsWith(`/`)?`${e}/`:t===`never`&&e!==`/`&&e.endsWith(`/`)?e.slice(0,-1):e}#f(e,t,n){if(!t||e.declaredQueryParams.length===0&&n!==`loose`)return``;let r={},i=!1;for(let n of e.declaredQueryParams)n in t&&(r[n]=t[n],i=!0);if(n===`loose`)for(let n in t)Object.hasOwn(t,n)&&!e.declaredQueryParamsSet.has(n)&&!e.buildParamNamesSet.has(n)&&(r[n]=t[n],i=!0);return i?this.#e.buildQueryString(r):``}#p(e){if(e===``&&(e=`/`),e.codePointAt(0)!==47)return!1;let t=this.#m(e);if(t===-2)return!1;t===-3&&(e=this.#o);let n=t>=0?e.slice(0,t):e,r=t>=0?e.slice(t+1):void 0;if(r!==void 0){let e=r.indexOf(`#`);e!==-1&&(r=r.slice(0,e))}let i=C(n);return this.#i.cleanPath=n,this.#i.normalized=i,this.#i.queryString=r,!0}#m(e){let t=!1;for(let n=0;n<e.length;n++){let r=e.codePointAt(n);if(r===35)return this.#o=e.slice(0,n),-3;if(r===63)return n;if(r>=128)return-2;if(r===47){if(t)return-2;t=!0}else t=!1}return-1}#h(e,t,n){if(!(n!==void 0&&!this.#g(e,t,n)))return{segments:e.matchSegments,params:t,meta:e.meta}}#g(e,t,n){let r;try{r=this.#e.parseQueryString(n)}catch{return!1}if(this.#e.strictQueryParams){let n=e.declaredQueryParamsSet;for(let e in r){if(!n.has(e))return!1;F(t,e,r[e])}}else for(let e in r)F(t,e,r[e]);return!0}#_(e,t){return(e.length>1&&e.endsWith(`/`))===t.hasTrailingSlash}#v(e,t){return e.length===1?this.#t.slashChildRoute??this.#t.route:this.#y(this.#t,e,1,t)}#y(e,t,n,r){let i=e,a=t.length,o=this.#s;for(;n<=a;){let e=t.indexOf(`/`,n),s=e===-1?a:e,c=t.slice(n,s),l=o?c:c.toLowerCase(),u;if(l in i.staticChildren)u=i.staticChildren[l];else if(i.paramChild){let e=i.paramChild,o=e.fork;if(i.splatChild!==void 0){if(o?.constraint!==void 0&&!this.#x(o.constraint,c))return this.#b(i.splatChild,t,n,r);let l={[o?.skipName!==void 0&&s>=a?o.skipName:e.name]:c},u=this.#y(e.node,t,s+1,l);return u!==void 0&&(!u.hasConstraints||this.#C(u,l))?(Object.assign(r,l),u):this.#b(i.splatChild,t,n,r)}u=e.node,o?.skipName!==void 0&&s>=a?r[o.skipName]=c:r[e.name]=c}else if(i.splatChild)return this.#b(i.splatChild,t,n,r);else return;i=u,n=s+1}return i.slashChildRoute??i.route}#b(e,t,n,r){let i=e.node;if(!i.hasChildren)return r[e.name]=t.slice(n),i.route;let a={},o=this.#y(i,t,n,a);return o&&(!o.hasConstraints||this.#C(o,a))?(Object.assign(r,a),o):(r[e.name]=t.slice(n),i.route)}#x(e,t){try{return e.test(this.#c?this.#c(t):t)}catch{return!1}}#S(e){let t=this.#c;if(!t)return!0;for(let n in e){let r=e[n];if(r.includes(`%`)){if(!ge(r))return!1;try{e[n]=t(r)}catch{return!1}}}return!0}#C(e,t){let n=this.#c;for(let[r,i]of e.constraintPatterns){if(!Object.hasOwn(t,r))continue;let e=t[r];if(n&&e.includes(`%`))try{e=n(e)}catch{return!1}if(!i.pattern.test(e))return!1}return!0}#w(e,t){for(let[n,r]of t.constraintPatterns)if(Object.hasOwn(e,n)&&!r.pattern.test(e[n]))return!1;return!0}};const I=e=>{let t=e.indexOf(`%`),n=e.indexOf(`+`);if(t===-1&&n===-1)return e;let r=n===-1?e:e.replaceAll(`+`,` `);return t===-1?r:decodeURIComponent(r)},L=(e,t)=>{if(e===void 0)return t.boolean.decodeUndefined();let n=t.boolean.decodeRaw(e);if(n!==null)return n;let r=I(e),i=t.number.decode(r);return i===null?t.boolean.decodeValue(r):i},at=/[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?<![\uD800-\uDBFF])[\uDC00-\uDFFF]/g,R=e=>{try{return encodeURIComponent(e)}catch(t){if(!(t instanceof URIError))throw t;return encodeURIComponent(String(e).replaceAll(at,`�`))}},z=e=>{let t=typeof e;if(t!==`string`&&t!==`number`&&t!==`boolean`)throw TypeError(`[search-params] Array element must be a string, number, or boolean — received ${t}`);return R(e)},B=(e,t,n,r)=>{let i=`${e}${n}`,a=[];for(let e of t)if(e===null){let e=r.encode(i);e&&a.push(e)}else a.push(`${i}=${z(e)}`);return a.join(`&`)},V={none:{encodeArray:(e,t,n)=>B(e,t,``,n)},brackets:{encodeArray:(e,t,n)=>B(e,t,`[]`,n)},index:{encodeArray:(e,t,n)=>{let r=[];for(let[i,a]of t.entries()){let t=`${e}[${i}]`;if(a===null){let e=n.encode(t);e&&r.push(e)}else r.push(`${t}=${z(a)}`)}return r.join(`&`)},indexed:!0},comma:{encodeArray:(e,t)=>{let n=[];for(let e of t)e!==null&&n.push(z(e));return n.length===0?``:`${e}=${n.join(`,`)}`},decodeValue:e=>e.includes(`,`)?e.split(`,`):null}},H={none:{encode:(e,t)=>`${e}=${t}`,decodeUndefined:()=>null,decodeRaw:()=>null,decodeValue:e=>e},auto:{encode:(e,t)=>`${e}=${t}`,decodeUndefined:()=>null,decodeRaw:e=>e===`true`?!0:e===`false`?!1:null,decodeValue:e=>e},"empty-true":{encode:(e,t)=>t?e:`${e}=false`,decodeUndefined:()=>!0,decodeRaw:e=>e===`true`?!0:e===`false`?!1:null,decodeValue:e=>e}},U={default:{encode:e=>e},hidden:{encode:()=>``}},ot={auto:{decode:e=>{let t=e.length;if(t===0)return null;let n=+(e.codePointAt(0)===45);if(n===t||t-n>1&&e.codePointAt(n)===48&&e.codePointAt(n+1)!==46)return null;let r=!1;for(let i=n;i<t;i++){let a=e.codePointAt(i);if(!(a!==void 0&&a>=48&&a<=57)){if(a===46&&!r&&i!==n&&i!==t-1){r=!0;continue}return null}}let i=Number(e);return Object.is(i,-0)||!Number.isSafeInteger(i)&&!r?null:i}},none:{decode:()=>null}},W=(e,t,n,r)=>{if(e===void 0)throw TypeError(`[search-params] Unknown ${t} "${n}" — expected ${r}`);return e},st=(e,t,n,r)=>({boolean:W(H[t],`booleanFormat`,t,`"none" | "auto" | "empty-true"`),null:W(U[n],`nullFormat`,n,`"default" | "hidden"`),number:W(ot[r],`numberFormat`,r,`"none" | "auto"`),array:W(V[e],`arrayFormat`,e,`"none" | "brackets" | "index" | "comma"`)}),ct={boolean:H.auto,null:U.default,number:ot.auto,array:V.none},G={arrayFormat:`none`,booleanFormat:`auto`,nullFormat:`default`,numberFormat:`auto`},lt={...G,strategies:ct},ut=e=>{if(!e||e.arrayFormat===void 0&&e.booleanFormat===void 0&&e.nullFormat===void 0&&e.numberFormat===void 0)return lt;let t=e.arrayFormat??G.arrayFormat,n=e.booleanFormat??G.booleanFormat,r=e.nullFormat??G.nullFormat,i=e.numberFormat??G.numberFormat;return{arrayFormat:t,booleanFormat:n,nullFormat:r,numberFormat:i,strategies:st(t,n,r,i)}},K=e=>R(e),dt=(e,t,n)=>{let r=K(e);switch(typeof t){case`string`:case`number`:return`${r}=${K(t)}`;case`boolean`:return n.strategies.boolean.encode(r,t);case`object`:return t===null?n.strategies.null.encode(r):Array.isArray(t)?n.strategies.array.encodeArray(r,t,n.strategies.null):`${r}=${K(t)}`;default:return`${r}=${K(t)}`}};function q(e,t,n){t===`__proto__`?Object.defineProperty(e,t,{value:n,writable:!0,enumerable:!0,configurable:!0}):e[t]=n}function ft(e,t,n,r){if(!Object.hasOwn(e,t)){q(e,t,r?[n]:n);return}let i=e[t];Array.isArray(i)?i.push(n):q(e,t,[i,n])}function pt(e,t,n,r,i){return L(r?e.slice(t+1,n):void 0,i)}function mt(e,t,n){let r=t+1,i=0,a=!1;for(;r<n;){let t=e.codePointAt(r);if(t===93)return a?i:null;if(t!==void 0&&t>=48&&t<=57){i=i*10+(t-48),a=!0,r++;continue}return null}return null}function ht(e,t,n){let{searchPart:r,nameEnd:i,nameSourceEnd:a,eqPos:o,end:s,hasValue:c,decodedName:l}=e,u=mt(r,i,a);if(u===null)return!1;let d=pt(r,o,s,c,t),f=n.get(l);return f===void 0?n.set(l,[[u,d]]):f.push([u,d]),!0}function gt(e,t,n,r,i,a,o){let s=a!==-1&&a<n,c=s?a:n,l=c,u=!1;for(let n=t;n<c;n++)if(e.codePointAt(n)===91){l=n,u=!0;break}let d=I(e.slice(t,l));if(!(o!==void 0&&u&&ht({searchPart:e,nameEnd:l,nameSourceEnd:c,eqPos:a,end:n,hasValue:s,decodedName:d},i,o))){if(!u&&s&&i.array.decodeValue){let t=e.slice(a+1,n),o=i.array.decodeValue(t);if(o){for(let e of o)ft(r,d,L(e,i),!0);return}}ft(r,d,pt(e,a,n,s,i),u)}}const _t=(e,t)=>{if(e===``||e===`?`)return{};let n={};return vt(e,n,ut(t).strategies),n};function vt(e,t,n){let r=n.array.indexed?new Map:void 0,i=0,a=e.length,o=-2;for(;i<a;){let s=e.indexOf(`&`,i);s===-1&&(s=a),s>i&&(o!==-1&&o<i&&(o=e.indexOf(`=`,i)),gt(e,i,s,t,n,o,r)),i=s+1}if(r!==void 0)for(let[e,n]of r)n.sort((e,t)=>e[0]-t[0]),q(t,e,n.map(e=>e[1]))}const yt=(e,t)=>{let n=Object.keys(e);if(n.length===0)return``;let r=ut(t),i=[];for(let t of n){let n=e[t];if(n===void 0)continue;let a=dt(t,n,r);a&&i.push(a)}return i.join(`&`)};function J(e,t){let n=e.path,r=n.startsWith(`~`),i=r?n.slice(1):n,a={name:e.name,path:i,absolute:r,children:[],parent:t};if(e.children)for(let t of e.children){let e=J(t,a);a.children.push(e)}return a}function bt(e,t,n){let r=J({name:e,path:t},null);for(let e of n){let t=J(e,r);r.children.push(t)}return r}const xt=Object.freeze(new Map),St=Object.freeze([]);function Ct(e){return e.parent?.name?`${e.parent.fullName}.${e.name}`:e.name}function wt(e){let t=new Map;for(let n of e)t.set(n.name,n);return t}function Tt(e,t){let n=[],r=[];for(let i of e){let e=Et(i,t);n.push(e),e.absolute||r.push(e)}return{childrenMap:wt(n),nonAbsoluteChildren:r}}function Et(e,t){let n=oe(e.path),r=n.urlParams.length===0&&n.queryParams.length===0&&n.spatParams.length===0&&n.constraintPatterns.size===0&&n.pathPattern===e.path?ie:n,i=r.paramTypeMap,a={name:e.name,path:e.path,absolute:e.absolute,parent:t,children:void 0,paramMeta:r,nonAbsoluteChildren:void 0,fullName:``,paramTypeMap:i};if(a.fullName=Ct(a),e.children.length===0)a.children=xt,a.nonAbsoluteChildren=St;else{let{childrenMap:t,nonAbsoluteChildren:n}=Tt(e.children,a);a.children=t,a.nonAbsoluteChildren=n,Object.freeze(a.nonAbsoluteChildren),Object.freeze(a.children)}return Object.freeze(i),Object.freeze(r.urlParams),Object.freeze(r.queryParams),Object.freeze(r.spatParams),Object.freeze(r),Object.freeze(a),a}function Dt(e){return Et(e,null)}function Ot(e,t,n){return Dt(bt(e,t,n))}function Y(e){let t=e.absolute?`~${e.path}`:e.path,n={name:e.name,path:t};return e.children.size>0&&(n.children=Array.from(e.children.values(),Y)),n}function kt(e){return Array.from(e.children.values(),Y)}function At(e){let t=e?.queryParams;return new it({...e?.caseSensitive!==void 0&&{caseSensitive:e.caseSensitive},...e?.strictTrailingSlash!==void 0&&{strictTrailingSlash:e.strictTrailingSlash},...e?.strictQueryParams!==void 0&&{strictQueryParams:e.strictQueryParams},...e?.urlParamsEncoding!==void 0&&{urlParamsEncoding:e.urlParamsEncoding},parseQueryString:e=>_t(e,t),buildQueryString:e=>yt(e,t)})}function X(e,t){return TypeError(`[router.${e}] ${t}`)}function jt(e,t,n){if(!s(e))throw X(n,`Invalid path for route "${t}": unbalanced constraint delimiter ('<' or '>') in "${e}"`);if(e.includes(`<>`))throw X(n,`Invalid path for route "${t}": empty constraint '<>' in "${e}" (a constraint body must be non-empty, e.g. '<[0-9]+>')`)}function Mt(e,t,n,r){let i=new Set;for(let a of e){if(i.has(a))throw X(n,`Invalid path for route "${t}": duplicate parameter name ':${a}' in "${r}" (a param name must be unique within a route — the second binding would overwrite the first)`);i.add(a)}}function Nt(e,t,n,r,i){let a=new Set(e);for(let e of t){if(c.test(e))throw X(r,`Invalid path for route "${n}": invalid query-param name "${e}" in "${i}" (a query-param name cannot contain '<' or '>' — a reverse-order modifier typo that leaked a constraint into the query; put the optional '?' after the constraint, ':id<...>?')`);if(a.has(e))throw X(r,`Invalid path for route "${n}": "${e}" is declared as both a path param and a query param in "${i}" — buildPath would emit its value twice (rename one)`)}}function Pt(e){let t=!0,n=!1,r=!1;for(let i of e){if(r){r=i!==`>`;continue}if(i===`<`){r=!0;continue}if(i===`/`){t=!0;continue}if(t&&=(n=i===`:`||i===`*`,!1),!n&&i.codePointAt(0)>=128)return!0}return!1}function Ft(e){for(let t=1;t<e.length;t++)if(e[t]===`?`&&e[t-1]!==`>`&&e[t+1]===`/`&&e[t+2]===`*`)return!0;return!1}function It(e,t,n,r){if(p(e))throw X(r,`Invalid path for route "${t}": two optional params directly before a splat are not supported in "${n}" — a single trie slot carries one optional→splat fork, so the omit-outer/take-inner form would silently reshape into the splat. Split into two routes, or drop the '?' on one`);if(Ft(e))throw X(r,`Invalid path for route "${t}": an unconstrained optional param before a splat is not supported in "${n}" — it is ambiguous (every multi-segment value has two readings). Add a constraint (e.g. ':lang<[a-z]+>?') or model it as two routes`)}function Lt(e,t,n){switch(e){case`name-less`:case`trailing-marker`:return`Invalid path for route "${t}": parameter marker (':' or '*') without a name in "${n}"`;case`fused-marker`:return`Invalid path for route "${t}": parameter marker (':' or '*') must begin a segment, but "${n}" fuses one to a static prefix (use a boundary marker like "/a/:b")`;case`fused-constraint-suffix`:return`Invalid path for route "${t}": text fused to a constraint '>' in "${n}" (a '<...>' must end its segment or be followed by '/' or an optional '?' — use "/:id<...>/rest", not "/:id<...>rest")`;case`constraint-in-static`:return`Invalid path for route "${t}": constraint '<...>' in a static segment in "${n}" (a '<...>' must follow a parameter marker ':' or '*' — attach it to a param like "/:id<...>", or drop it)`;case`optional-splat`:return`Invalid path for route "${t}": optional splat ('*name?') is not supported in "${n}" — a splat cannot be optional (use a required splat '*name')`;case`unbalanced-constraint`:case`empty-constraint`:return`Invalid path for route "${t}": invalid constraint in "${n}"`}}function Rt(e,t,n){try{return oe(e)}catch(r){throw X(n,`Invalid path for route "${t}": ${(r instanceof Error?r.message:String(r)).replace(/^\[buildParamMeta] /,``)} (in "${e}")`)}}function zt(e,t,n,r){if(typeof e!=`string`){let t;throw t=e===null?`null`:Array.isArray(e)?`array`:typeof e,X(n,`Route path must be a string, got ${t}`)}if(e===``)return;if(/\s/.test(e))throw X(n,`Invalid path for route "${t}": whitespace not allowed in "${e}"`);if(!/^([/?~]|[^/]+$)/.test(e))throw X(n,`Route "${t}" has invalid path format: "${e}". Path should start with '/', '~', '?' or be a relative segment.`);if(e.includes(`//`))throw X(n,`Invalid path for route "${t}": double slashes not allowed in "${e}"`);jt(e,t,n);let{pathPattern:i,urlParams:a,queryParams:o}=Rt(e,t,n);Mt(a,t,n,e),Nt(a,o,t,n,e);let s=f(i);if(s!==void 0)throw X(n,Lt(s,t,e));if(It(i,t,e,n),Pt(i))throw X(n,`Invalid path for route "${t}": non-ASCII static segment in "${e}" — match compares static segments raw and rejects non-ASCII input, so this route would never match. Percent-encode it (e.g. '/caf%C3%A9') or use a param`);let c=r&&r.paramMeta.urlParams.length>0;if(e.startsWith(`~`)&&c)throw X(n,`Absolute path "${e}" cannot be used under parent route with URL parameters`)}const Bt=/^[A-Z_a-z][\w-]*$/,Vt=/\S/,Ht=1e4;function Z(e){if(e===null)return`null`;if(typeof e==`object`){try{let t=e.constructor;if(typeof t==`function`&&t.name!==`Object`)return t.name||`object`}catch{}return`object`}return typeof e}function Ut(e){for(let t of Object.keys(e)){let n=Object.getOwnPropertyDescriptor(e,t);if(n&&(n.get||n.set))return!0}return!1}function Wt(e,t){if(!e||typeof e!=`object`)throw TypeError(`[router.${t}] Route must be an object, got ${Z(e)}`);let n=Object.getPrototypeOf(e);if(n!==Object.prototype&&n!==null)throw TypeError(`[router.${t}] Route must be a plain object, got ${Z(e)}`);if(Ut(e))throw TypeError(`[router.${t}] Route must not have getters or setters`)}function Gt(e,t){if(e.encodeParams!==void 0&&typeof e.encodeParams!=`function`)throw TypeError(`[router.${t}] Route "${String(e.name)}" encodeParams must be a function`)}function Kt(e,t){if(e.decodeParams!==void 0&&typeof e.decodeParams!=`function`)throw TypeError(`[router.${t}] Route "${String(e.name)}" decodeParams must be a function`)}function qt(e,t){if(typeof e.name!=`string`)throw TypeError(`[router.${t}] Route name must be a string, got ${Z(e.name)}`);let n=e.name;if(n===``)throw TypeError(`[router.${t}] Route name cannot be empty`);if(!Vt.test(n))throw TypeError(`[router.${t}] Route name cannot contain only whitespace`);if(n.length>Ht)throw TypeError(`[router.${t}] Route name exceeds maximum length of ${Ht} characters`);if(!n.startsWith(`@@`)){if(n.includes(`.`))throw TypeError(`[router.${t}] Route name "${n}" cannot contain dots. Use children array or { parent } option in addRoute() instead.`);if(!Bt.test(n))throw TypeError(`[router.${t}] Invalid route name "${n}". Name must start with a letter or underscore, followed by letters, numbers, underscores, or hyphens.`)}}function Q(e,t){if(!t.includes(`.`))return e.children.get(t);let n=e;for(let e of t.split(`.`))if(n=n.children.get(e),!n)return;return n}function Jt(e,t,n){if(Q(e,t))throw Error(`[router.${n}] Route "${t}" already exists`)}function Yt(e,t,n){if(e.has(t))throw Error(`[router.${n}] Duplicate route "${t}" in batch`);e.add(t)}function Xt(e,t,n,r){let i=t===``?e:Q(e,t);if(i){for(let e of i.children.values())if(e.path===n)throw Error(`[router.${r}] Path "${n}" is already defined`)}}function Zt(e,t,n,r){let i=e.get(t);if(i?.has(n))throw Error(`[router.${r}] Path "${n}" is already defined`);i?i.add(n):e.set(t,new Set([n]))}function $(e,t,n,r=``,i,a){Wt(e,t);let o=e;qt(o,t),zt(o.path,o.name,t,n),Gt(o,t),Kt(o,t);let s=o.name,c=r?`${r}.${s}`:s;n&&c&&Jt(n,c,t),i&&Yt(i,c,t);let l=o.path,u=r;if(n&&Xt(n,u,l,t),a&&Zt(a,u,l,t),o.children!==void 0){if(!Array.isArray(o.children))throw TypeError(`[router.${t}] Route "${s}" children must be an array, got ${Z(o.children)}`);for(let e of o.children)$(e,t,n,c,i,a)}}export{Ot as a,i as c,Y as i,t as l,$ as n,G as o,kt as r,a as s,At as t,n as u};
2
+ //# sourceMappingURL=esm-CLeBo4Hk.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"esm-CLeBo4Hk.mjs","names":["e","t","n","r","i","a","o","s","c","l","u","d","f","p","m","h","g","_","v","y","b","x","S","C","w","T","E","D","O","k","A","j","M","N","P","F","I","L","R","z","B","V","H","U","W","G","K","q","J","#e","#s","#c","#a","#t","#n","#r","#p","#i","#_","#h","#v","#S","#w","#l","#u","#d","#f","#m","#o","#g","#y","#x","#b","#C","u","d","f","p","m","h","g","_","v","y","x","S","C","w","T","D","E","O","r","e","n","l","c","o","t","a","i"],"sources":["../../src/internals.ts","../../../path-matcher/dist/esm/index.mjs","../../../search-params/dist/esm/index.mjs","../../../route-tree/dist/esm/index.mjs"],"sourcesContent":["import type { DependenciesStore } from \"./namespaces\";\nimport type { RoutesStore } from \"./namespaces/RoutesNamespace\";\nimport type { Router as RouterClass } from \"./Router\";\nimport type { EventMethodMap, PluginFactory } from \"./types\";\nimport type { RouterValidator } from \"./types/RouterValidator\";\nimport type { SerializedRouterState } from \"./utils\";\nimport type {\n DefaultDependencies,\n EventName,\n NavigationOptions,\n Options,\n Params,\n Plugin,\n Router as RouterInterface,\n RouteTreeState,\n SimpleState,\n State,\n TreeChangedEvent,\n Unsubscribe,\n} from \"@real-router/types\";\nimport type { RouteTree } from \"route-tree\";\n\nexport interface RouterInternals<\n D extends DefaultDependencies = DefaultDependencies,\n> {\n readonly makeState: <P extends Params = Params>(\n name: string,\n params?: P,\n path?: string,\n meta?: Record<string, Record<string, \"url\" | \"query\">>,\n ) => State<P>;\n\n readonly forwardState: <P extends Params = Params>(\n routeName: string,\n routeParams: P,\n ) => SimpleState<P>;\n\n readonly buildStateResolved: (\n resolvedName: string,\n resolvedParams: Params,\n ) => RouteTreeState | undefined;\n\n readonly matchPath: <P extends Params = Params>(\n path: string,\n options?: Options,\n ) => State<P> | undefined;\n\n readonly getOptions: () => Options;\n\n readonly addEventListener: <E extends EventName>(\n eventName: E,\n cb: Plugin[EventMethodMap[E]],\n ) => Unsubscribe;\n\n /**\n * Route-tree mutation channel — internal access for the `getRoutesApi`\n * wrapper. A dedicated bridge is required because the public\n * `addEventListener<E extends EventName>` structurally rejects\n * `\"TREE_CHANGED\"` (it is not in the public `EventName` union), is strict on\n * duplicates, and exposes neither `emit` nor `listenerCount`.\n */\n readonly treeChanged: {\n readonly emit: (event: TreeChangedEvent) => void;\n readonly subscribe: (\n handler: (event: TreeChangedEvent) => void,\n ) => Unsubscribe;\n readonly listenerCount: () => number;\n /**\n * True while a `TREE_CHANGED` emit is on the stack — `getRoutesApi` reads it\n * to reject reentrant route-CRUD from a `subscribeChanges` handler (#1032).\n */\n readonly isEmitting: () => boolean;\n };\n\n readonly buildPath: (route: string, params?: Params) => string;\n\n readonly emitTransitionError: (error: Error) => void;\n\n /**\n * Emits `TRANSITION_SUCCESS` directly (no FSM transition) — used by\n * `getRoutesApi().replace()` to notify `router.subscribe` listeners when a\n * structural replace revalidates the active state (#950). Mirrors the success\n * emission `completeTransition` / `navigateToNotFound` perform.\n */\n readonly emitTransitionSuccess: (\n toState: State,\n fromState: State | undefined,\n opts?: NavigationOptions,\n ) => void;\n\n /**\n * Commits the not-found (`UNKNOWN_ROUTE`) state for `path` and emits\n * `TRANSITION_SUCCESS` — the `NavigationNamespace.navigateToNotFound`\n * primitive. `replace()` uses it when a structural replace drops the active\n * route, so subscribers are notified instead of the state silently clearing\n * (#950).\n */\n readonly navigateToNotFound: (path: string) => State;\n\n readonly start: (path: string) => Promise<State>;\n\n /**\n * Plugin-only navigation entry point — delegates to\n * `NavigationNamespace.navigateToState` (`getPluginApi(router).navigateToState`).\n * Hidden from `Router`/`Navigator` to keep the userland surface minimal;\n * see `core-types/src/api.ts` for usage docs.\n */\n readonly navigateToState: (\n state: State,\n options?: NavigationOptions,\n ) => Promise<State>;\n\n /* eslint-disable @typescript-eslint/no-explicit-any -- heterogeneous map: stores different InterceptorFn<M> types under different keys */\n readonly interceptors: Map<\n string,\n ((next: (...args: any[]) => any, ...args: any[]) => any)[]\n >;\n /* eslint-enable @typescript-eslint/no-explicit-any */\n\n readonly setRootPath: (rootPath: string) => void;\n readonly getRootPath: () => string;\n\n readonly getTree: () => RouteTree;\n\n readonly isDisposed: () => boolean;\n\n validator: RouterValidator | null;\n\n // Dependencies (issue #172)\n readonly dependenciesGetStore: () => DependenciesStore<D>;\n\n // Clone support (issue #173, consolidated #964). One accessor for the\n // source-side snapshot a clone carries over besides the route store, so a new\n // clone-relevant subsystem is wired in a single place instead of being spread\n // across separate methods.\n readonly getCloneState: () => {\n options: Options;\n dependencies: Record<string, unknown>;\n pluginFactories: PluginFactory<D>[];\n };\n\n // Consolidated route data store (issue #174 Phase 2)\n readonly routeGetStore: () => RoutesStore<D>;\n\n // Cross-namespace state (issue #174)\n readonly getStateName: () => string | undefined;\n readonly isTransitioning: () => boolean;\n readonly clearState: () => void;\n readonly setState: (state: State) => void;\n readonly routerExtensions: { keys: string[] }[];\n readonly contextClaimRecords: Set<string>;\n\n /**\n * One-shot hydration scratchpad populated by `hydrateRouter` immediately\n * before delegating to `router.start(parsed.path)` and cleared in the\n * matching `finally`. SSR loader plugins read this slot directly via\n * `getInternals(router).hydrationState` to short-circuit their own loader\n * call when the server-resolved namespace value is already present in the\n * parsed state (#596). `null` outside of an active `hydrateRouter`\n * invocation.\n */\n hydrationState: SerializedRouterState | null;\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any -- existential type: stores RouterInternals for all Dependencies types\nconst internals = new WeakMap<object, RouterInternals<any>>();\n\nexport function getInternals<D extends DefaultDependencies>(\n router: RouterInterface<D>,\n): RouterInternals<D> {\n const ctx = internals.get(router);\n\n if (!ctx) {\n throw new TypeError(\n \"[real-router] Invalid router instance — not found in internals registry\",\n );\n }\n\n return ctx as RouterInternals<D>;\n}\n\nexport function registerInternals<D extends DefaultDependencies>(\n router: RouterClass<D>,\n ctx: RouterInternals<D>,\n): void {\n internals.set(router, ctx);\n}\n\n/* eslint-disable @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-return, @typescript-eslint/no-unsafe-argument -- internal chain execution: type safety enforced at public API boundary (PluginApi.addInterceptor) */\nfunction executeInterceptorChain<T>(\n interceptors: ((next: (...args: any[]) => any, ...args: any[]) => any)[],\n original: (...args: any[]) => T,\n args: any[],\n): T {\n let chain = original as (...args: any[]) => any;\n\n for (const interceptor of interceptors) {\n const prev = chain;\n\n chain = (...chainArgs: any[]) => interceptor(prev, ...chainArgs);\n }\n\n return chain(...args) as T;\n}\n\n/**\n * Variadic interceptor wrapper — wraps a function of any arity, returning the\n * same callable type `T`. Use {@link createBinaryInterceptable} instead when the\n * wrapped method takes exactly two args and the caller needs the precise\n * `(a, b) => r` signature preserved (the variadic form widens args to `any[]`).\n */\nexport function createInterceptable<T extends (...args: any[]) => any>(\n name: string,\n original: T,\n interceptors: Map<\n string,\n ((next: (...args: any[]) => any, ...args: any[]) => any)[]\n >,\n): T {\n return ((...args: any[]) => {\n const chain = interceptors.get(name);\n\n if (!chain || chain.length === 0) {\n return original(...args);\n }\n\n return executeInterceptorChain(chain, original, args);\n }) as T;\n}\n\n/**\n * Two-argument interceptor wrapper — preserves the exact `(a: A, b: B) => R`\n * signature, which the variadic {@link createInterceptable} cannot express\n * (it widens args to `any[]`). Used for the binary interceptable methods\n * `forwardState(routeName, routeParams)` and `buildPath(route, params)`.\n */\nexport function createBinaryInterceptable<A, B, R>(\n name: string,\n original: (a: A, b: B) => R,\n interceptors: Map<\n string,\n ((next: (...args: any[]) => any, ...args: any[]) => any)[]\n >,\n): (a: A, b: B) => R {\n return (arg1: A, arg2: B) => {\n const chain = interceptors.get(name);\n\n if (!chain || chain.length === 0) {\n return original(arg1, arg2);\n }\n\n return executeInterceptorChain(chain, original, [arg1, arg2]);\n };\n}\n/* eslint-enable @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-return, @typescript-eslint/no-unsafe-argument */\n","const e=`[^>]*`;function t(e){let t=!1;for(let n of e)if(n===`<`)t=!0;else if(n===`>`){if(!t)return!1;t=!1}return!t}const n=/[<>]/u,r=e=>e===58||e===42;function i(e){let t=[],n=0,r=!1;for(let i=0;i<e.length;i+=1){let a=e.charCodeAt(i);a===60?r=!0:a===62?r=!1:a===47&&!r&&(t.push(e.slice(n,i)),n=i+1)}return t.push(e.slice(n)),t}function a(e){let t=e.length;if(t===0)return{kind:`static`,text:``};if(!r(e.charCodeAt(0))){for(let n=0;n<t;n+=1){let i=e.charCodeAt(n);if(i===60)return{error:`constraint-in-static`};if(r(i)&&n+1<t&&e.charCodeAt(n+1)!==60)return{error:`fused-marker`}}return e.charCodeAt(t-1)===63?{error:`name-less`}:{kind:`static`,text:e}}let n=e.charCodeAt(0)===42,i=1;for(;i<t;){let t=e.charCodeAt(i);if(t===60||t===63)break;i+=1}let a=e.slice(1,i);if(a.length===0)return{error:`name-less`};if(r(a.charCodeAt(a.length-1)))return{error:`trailing-marker`};let o,s=!1;if(i<t)if(e.charCodeAt(i)===60){let n=e.indexOf(`>`,i+1);if(n===-1)return{error:`unbalanced-constraint`};if(n===i+1)return{error:`empty-constraint`};o=e.slice(i,n+1);let r=n+1;if(r<t)if(e.charCodeAt(r)===63)s=!0;else return{error:`fused-constraint-suffix`}}else s=!0;return n?s?{error:`optional-splat`}:{kind:`splat`,name:a}:o===void 0?{kind:`param`,name:a,optional:s}:{kind:`param`,name:a,constraint:o,optional:s}}function o(e){for(let t of i(e)){let e=a(t);if(`error`in e)return e.error}}function s(e){let t=i(e);for(let e=2;e<t.length;e+=1)if(t[e].startsWith(`*`)&&c(t[e-1])&&c(t[e-2]))return!0;return!1}function c(e){return e.startsWith(`:`)&&e.endsWith(`?`)}function l(e){return`(${e.replaceAll(/(^<|>$)/g,``)})`}function u(e,t){try{return RegExp(`^${l(e)}$`)}catch{throw Error(`[buildParamMeta] Invalid constraint '${e}' on parameter '${t}': the body between '<' and '>' must be a valid regular expression (e.g. '<[0-9]+>', '<[a-z]+>').`)}}const d=`[^/?<]+`,f=new RegExp(String.raw`([:*]${d}(?:<${e}>)?)\\?(?=[/?]|$)`,`g`),p=RegExp(`<${e}>`,`g`),m=/\\?(.+)$/;function h(e){return e.replaceAll(p,e=>`<${`x`.repeat(e.length-2)}>`).replaceAll(f,`$1\\0`)}const g=Object.freeze([]),_=Object.freeze({}),v=new Map,y=Object.freeze({urlParams:g,queryParams:g,spatParams:g,paramTypeMap:_,constraintPatterns:v,pathPattern:``});function ee(e,t,n,r,o){for(let s of i(e)){if(s.length===0)continue;let e=a(s);`error`in e||e.kind===`static`||(t.push(e.name),r[e.name]=`url`,e.kind===`splat`?n.push(e.name):e.constraint!==void 0&&o.set(e.name,{pattern:u(e.constraint,e.name),constraint:e.constraint}))}}function b(e){let t=[],n=[],r=[],i={},a=new Map,o=m.exec(h(e));if(o!==null){let t=e.slice(o.index+1).split(`&`);for(let e of t){let t=e.trim();t.length>0&&(n.push(t),i[t]=`query`)}e=e.slice(0,o.index)}return ee(e,t,r,i,a),te(t,n,r,i,a,e)}function te(e,t,n,r,i,a){return{urlParams:e.length===0?g:e,queryParams:t.length===0?g:t,spatParams:n.length===0?g:n,paramTypeMap:e.length===0&&t.length===0?_:r,constraintPatterns:i.size===0?v:i,pathPattern:a}}const ne=/[^\\w!$'()*+,.:;|~-]/gu,re=/[^\\w!$'()*+,.:;|~-]/u,ie=/[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?<![\\uD800-\\uDBFF])[\\uDC00-\\uDFFF]/g,x=e=>t=>{try{return e(t)}catch{return e(t.replaceAll(ie,`�`))}},S=x(e=>e.replaceAll(ne,e=>encodeURIComponent(e))),C={default:e=>re.test(e)?S(e):e,uri:x(encodeURI),uriComponent:x(encodeURIComponent),none:e=>e},w={default:decodeURIComponent,uri:decodeURI,uriComponent:decodeURIComponent,none:e=>e},ae=(e,t)=>{let n=C[t],r=String(e).split(`/`),i=n(r[0]);for(let e=1;e<r.length;e++)i+=`/`+n(r[e]);return i},T=Object.freeze(Object.create(null));function E(){return{staticChildren:T,hasChildren:!1,paramChild:void 0,splatChild:void 0,route:void 0,routeIsStrong:!1,slashChildRoute:void 0}}function D(e){return e.length>1&&e.endsWith(`/`)?e.slice(0,-1):e}function oe(e,t){return e===``?t:t===``?e:e+t}function O(e){return e>=48&&e<=57||e>=65&&e<=70||e>=97&&e<=102}function se(e){let t=0;for(;t<e.length;)if(e.codePointAt(t)===37){if(t+2>=e.length)return!1;let n=e.codePointAt(t+1)??0,r=e.codePointAt(t+2)??0;if(!O(n)||!O(r))return!1;t+=3}else t++;return!0}const ce=Object.freeze([]),k=Object.freeze(new Set),A=Object.freeze(new Map),j=Object.freeze([]),M=Object.freeze({}),N=Object.freeze({}),P=RegExp(`<${e}>`,`g`);function F(e,t,n){let r=t.has(e.name);return{paramName:e.name,isOptional:e.kind===`param`?e.optional:!1,encoder:r?e=>ae(e,n):C[n]}}function I(e,t,n){let r=new Set,o=new Set;for(let e of t){for(let t of e.paramMeta.urlParams)r.add(t);for(let t of e.paramMeta.spatParams)o.add(t)}if(r.size===0)return{buildStaticParts:[e],buildParamSlots:j};let s=[],c=[],l=``,u=i(e);for(let[e,t]of u.entries()){e>0&&(l+=`/`);let r=a(t);if(`error`in r||r.kind===`static`){l+=t;continue}s.push(l),l=``,c.push(F(r,o,n))}return s.push(l),{buildStaticParts:s,buildParamSlots:c}}function L(e,t,n){throw Error(`[SegmentMatcher.registerTree] Parameter name conflict at the same path position: '${n}${e}' and '${n}${t}'. A parametric URL segment binds to a single name across every route that shares that position — the value cannot be captured under two names. Rename one so both routes agree (e.g. use '${n}${e}' in both).`)}function R(){throw Error(`[SegmentMatcher.registerTree] Empty parameter name: a parameter marker (':' or '*') or an optional '?' must be followed by a name (e.g. ':id', '*rest', ':id?'). A name-less marker or modifier would capture under an empty key at match but emit a literal at build — the two disagree, so it is rejected.`)}function z(e){throw Error(`[SegmentMatcher.registerTree] Fused parameter marker in segment \"${e}\": a ':'/'*' marker must begin a segment (e.g. 'a/:b', not 'a:b'). build extracts it as a param while the trie treats the segment as a literal — the two disagree.`)}function B(e){throw Error(`[SegmentMatcher.registerTree] Trailing parameter marker in segment \"${e}\": a param name cannot end in a bare ':' or '*' (e.g. ':y*' — the name is 'y' plus a stray marker). build/meta would capture the marker into the name while the gate rejects it as name-less — the two disagree, so it is rejected.`)}function V(e){throw Error(`[SegmentMatcher.registerTree] Two optional params directly before a splat in \"${e}\": a single trie slot carries only one optional→splat fork, so the outer optional would overwrite the inner and the omit-outer/take-inner form would silently reshape into the splat. Split into separate routes, or drop the '?' on one.`)}function H(e){throw Error(`[SegmentMatcher.registerTree] Non-ASCII static segment \"${e}\": match rejects non-ASCII input and compares static keys raw, so this route would never match. Percent-encode it (e.g. \"/caf%C3%A9\") or use a param.`)}function U(e){throw Error(`[SegmentMatcher.registerTree] Optional splat \"${e}\" is not supported: a splat cannot be optional — build emits multi-segment URLs the matcher rejects. Use a required splat \"*name\".`)}function W(e){throw Error(`[SegmentMatcher.registerTree] Optional param \":${e}?\" before a splat must be constrained: an unconstrained optional before a splat is ambiguous (every multi-segment value has two readings). Add a constraint, e.g. \":${e}<[a-z]+>?\", or model it as two routes.`)}function G(e){throw Error(`[SegmentMatcher.registerTree] Unbalanced constraint delimiter ('<' or '>') in path \"${e}\": every '<' must be closed by a '>'. A stray delimiter desyncs match vs build (buildPath would emit a URL match rejects).`)}function le(e){throw Error(`[SegmentMatcher.registerTree] Empty constraint '<>' in path \"${e}\": a constraint body must be non-empty (e.g. '<[0-9]+>'). An empty '<>' compiles to a never-matching pattern.`)}function ue(e){throw Error(`[SegmentMatcher.registerTree] Text fused to a constraint '>' in path \"${e}\": a '<...>' constraint must end its segment or be followed by '/' or an optional '?' — use \"/:id<...>/rest\", not \"/:id<...>rest\".`)}function de(e){throw Error(`[SegmentMatcher.registerTree] Constraint '<...>' in a static segment in path \"${e}\": a '<...>' constraint must follow a parameter marker (':' or '*') — a static segment carrying '<...>' is silently stripped. Attach it to a param (e.g. \"/:id<...>\") or drop it.`)}function fe(e,t,n){switch(e){case`name-less`:return R();case`trailing-marker`:return B(t);case`fused-marker`:return z(t);case`optional-splat`:return U(t);case`empty-constraint`:return le(n);case`fused-constraint-suffix`:return ue(n);case`constraint-in-static`:return de(n);case`unbalanced-constraint`:return G(n)}}function pe(e,t){let n=new Set,r=``;for(let e of t){if(n.has(e)){r=e;break}n.add(e)}throw Error(`[SegmentMatcher.registerTree] Duplicate parameter name ':${r}' in route \"${e}\": a param name must be unique within a route — two positions cannot both bind ':${r}' (the second silently overwrites the first). Rename one.`)}function me(e,t){throw Error(`[SegmentMatcher.registerTree] Invalid query-param declaration \"${t}\" in route \"${e}\": a query-param name cannot contain '<' or '>'. This is a reverse-order modifier typo that leaked a constraint into the query — put the optional '?' AFTER the constraint (':id<...>?', not ':id?<...>'). It would never round-trip.`)}function he(e,t){throw Error(`[SegmentMatcher.registerTree] Name collision in route \"${e}\": \"${t}\" is declared as BOTH a path param (':${t}') and a query param ('?${t}'). buildPath would emit its value twice (once in the path, once in the query). Rename one.`)}function ge(e,t){throw Error(`[SegmentMatcher.registerTree] Duplicate route path: routes \"${e}\" and \"${t}\" resolve to the same URL. The later registration would silently shadow the earlier (its deep link would resolve to the other route). Give them distinct paths.`)}function _e(e,t){throw Error(`[SegmentMatcher.registerTree] Index route \"${e}\" (path \"/\") under the dynamic parent \"${t}\" is not supported: the index cannot reliably replace the parent on every form of its path — under an optional param it binds only the present form, under a splat it is unreachable. Give the index a distinct path, or make the parent static.`)}function K(e){let t=a(e);return(`error`in t||t.kind===`static`)&&R(),t.name}function q(e,t,n){return e.paramChild?e.paramChild.name!==t&&!n.has(e)&&L(e.paramChild.name,t,`:`):(e.paramChild={node:E(),name:t,fork:void 0},n.add(e)),e.paramChild.node}function ve(e,t,n,r,i,a){let o=t.constraintPatterns.get(n)?.pattern;if(e.paramChild&&e.splatChild){o===void 0&&W(n),e.paramChild.fork={constraint:o};return}let s=i+1;if(s<=a){let t=r.indexOf(`/`,s),n=r.slice(s,t===-1?a:t);e.paramChild&&n.startsWith(`:`)&&!n.endsWith(`?`)&&(e.paramChild.fork={skipName:K(n)})}}function ye(e,t,n){if(!t.hasConstraints||!n.startsWith(`:`)||e.paramChild===void 0)return;let r=t.constraintPatterns.get(K(n))?.pattern;if(r===void 0)return;let i=e.paramChild;i.fork?.constraint===void 0?i.fork={...i.fork,constraint:r}:i.fork.constraint.source!==r.source&&(i.fork={...i.fork,constraint:RegExp(`(?:${i.fork.constraint.source})|(?:${r.source})`,i.fork.constraint.flags)})}function be(e,t,n){return e.splatChild?e.splatChild.name!==t&&!n.has(e)&&L(e.splatChild.name,t,`*`):(e.splatChild={node:E(),name:t},n.add(e)),e.splatChild.node}function J(e,t){e.route!==void 0&&e.route!==t&&e.routeIsStrong===!0&&ge(e.route.name,t.name),e.route=t,e.routeIsStrong=!0}function xe(e){for(let t=0;t<e.length;t++)if(e.charCodeAt(t)>=128)return!0;return!1}function Se(e,t,n){let r=D(n);if(r===`/`){J(e.root,t);return}let i=new Set,a=new Map;Y(e,e.root,r,1,t,i,a)}function Y(e,t,n,r,i,a,o){let s=o.get(t);if(s===void 0)s=new Set,o.set(t,s);else if(s.has(r))return;s.add(r);let c=n.length;for(;r<=c;){let s=n.indexOf(`/`,r),l=s===-1?c:s,u=n.slice(r,l);if(u.endsWith(`?`)){let r=K(u);Y(e,q(t,r,a),n,l+1,i,a,o),l>=c?t.route??=i:Y(e,t,n,l+1,i,a,o),ve(t,i,r,n,l,c);return}let d=t;t=X(e,t,u,a),ye(d,i,u),r=l+1}J(t,i)}function Ce(e,t,n){let r=n.slice(n.lastIndexOf(`/`)+1),i=n.split(`/`).some(e=>e.startsWith(`:`)&&e.endsWith(`?`)),a=r.startsWith(`*`);(i||a)&&_e(t.name,n);let o=we(e,n);o.slashChildRoute=t}function we(e,t){return Te(e,e.root,t)}function Te(e,t,n){let r=D(n);if(r===`/`||r===``)return t;let i=t,a=1,o=r.length,s=new Set;for(;a<=o;){let t=r.indexOf(`/`,a),n=t===-1?o:t;if(n<=a)break;let c=r.slice(a,n);i=X(e,i,c,s),a=n+1}return i}function X(e,t,n,r){if(n.startsWith(`*`)){let e=be(t,K(n),r);return t.hasChildren=!0,e}if(n.startsWith(`:`)){let e=q(t,K(n),r);return t.hasChildren=!0,e}xe(n)&&H(n);let i=e.options.caseSensitive?n:n.toLowerCase();return i in t.staticChildren||(t.staticChildren===T&&(t.staticChildren=Object.create(null)),t.staticChildren[i]=E(),t.hasChildren=!0),t.staticChildren[i]}function Z(e,n,r,o,c){let l=n.fullName===``;l||o.push(n);let u=n.absolute,d=n.paramMeta===y?n.path:n.paramMeta.pathPattern,f=u&&d.startsWith(`~`)?d.slice(1):d,p=u?f:d;t(p)||G(p);for(let e of i(p)){let t=a(e);`error`in t&&fe(t.error,e,p)}let m=p.replaceAll(P,``);s(p)&&V(p);let h=u?m:oe(r,m),g=l?c:Ee(e,n,h,u?``:r,o,c);for(let t of n.children.values())Z(e,t,h,o,g);l||o.pop()}function Ee(e,t,n,r,i,a){let o=je(n,r),s=Object.freeze([...i]),c=De(s),l=D(n),u=Q(e.rootQueryParams,i),d=Me(i),{buildStaticParts:f,buildParamSlots:p}=I(o?D(r):l,o?i.slice(0,-1):i,e.options.urlParamsEncoding),m=p.map(e=>e.paramName),h=m.length===0?k:new Set(m);h.size!==m.length&&pe(t.fullName,m),Ne(t.fullName,u,h);let g={name:t.fullName,parent:a,matchSegments:s,meta:c,declaredQueryParams:u,declaredQueryParamsSet:u.length===0?k:new Set(u),hasTrailingSlash:n.length>1&&n.endsWith(`/`),constraintPatterns:d,hasConstraints:d.size>0,buildStaticParts:f,buildParamSlots:p,buildParamNamesSet:h,cachedResult:void 0};return t.paramMeta.urlParams.length===0&&(g.cachedResult=Object.freeze({segments:g.matchSegments,params:M,meta:g.meta})),e.routesByName.set(t.fullName,g),o?ke(e,g,r):Ae(e,g,n,l,t),g}function De(e){let t;for(let n of e)Oe(n.paramTypeMap)&&(t??={},t[n.fullName]=n.paramTypeMap);return t===void 0?N:Object.freeze(t)}function Oe(e){for(let t in e)if(Object.hasOwn(e,t))return!0;return!1}function ke(e,t,n){Ce(e,t,n);let r=D(n),i=e.options.caseSensitive?r:r.toLowerCase();e.staticCache.has(i)&&e.staticCache.set(i,t)}function Ae(e,t,n,r,i){if(Se(e,t,n),i.paramMeta.urlParams.length===0){let n=e.options.caseSensitive?r:r.toLowerCase();e.staticCache.set(n,t)}}function je(e,t){return D(e)===D(t)}function Q(e,t){let n=[];e.length>0&&n.push(...e);for(let e of t)e.paramMeta.queryParams.length>0&&n.push(...e.paramMeta.queryParams);return n.length===0?ce:n}function Me(e){let t=new Map;for(let n of e)for(let[e,r]of n.paramMeta.constraintPatterns)t.set(e,r);return t.size===0?A:t}function Ne(e,t,r){for(let i of t)n.test(i)&&me(e,i),r.has(i)&&he(e,i)}function Pe(e){return typeof e==`string`?e:typeof e==`object`?JSON.stringify(e):String(e)}function $(e,t,n){t===`__proto__`?Object.defineProperty(e,t,{value:n,writable:!0,enumerable:!0,configurable:!0}):e[t]=n}var Fe=class{get options(){return this.#e}#e;#t=E();#n=new Map;#r=new Map;#i={cleanPath:``,normalized:``,queryString:void 0};#a=[];#o=``;#s;#c;constructor(e){this.#e={caseSensitive:e.caseSensitive??!0,strictTrailingSlash:e.strictTrailingSlash??!1,strictQueryParams:e.strictQueryParams??!1,urlParamsEncoding:e.urlParamsEncoding??`default`,parseQueryString:e.parseQueryString,buildQueryString:e.buildQueryString},this.#s=this.#e.caseSensitive,this.#c=this.#e.urlParamsEncoding===`none`?null:w[this.#e.urlParamsEncoding]}registerTree(e){this.#a=e.paramMeta.queryParams,Z({root:this.#t,options:this.#e,routesByName:this.#n,staticCache:this.#r,rootQueryParams:this.#a},e,``,[],null)}match(e){if(!this.#p(e))return;let{cleanPath:t,normalized:n,queryString:r}=this.#i,i=this.#s?n:n.toLowerCase(),a=this.#r.get(i);if(a)return this.#e.strictTrailingSlash&&!this.#_(t,a)?void 0:r===void 0&&a.cachedResult?a.cachedResult:this.#h(a,{},r);let o={},s=this.#v(n,o);if(s&&!(this.#e.strictTrailingSlash&&!this.#_(t,s))&&this.#S(o)&&!(s.hasConstraints&&!this.#w(o,s)))return this.#h(s,o,r)}buildPath(e,t,n){let r=this.#n.get(e);if(!r)throw Error(`[SegmentMatcher.buildPath] '${e}' is not defined`);r.hasConstraints&&t&&this.#l(r,e,t);let i=this.#u(r,t),a=this.#d(i,n?.trailingSlash),o=this.#f(r,t,n?.queryParamsMode);return a+(o?`?${o}`:``)}getSegmentsByName(e){return this.#n.get(e)?.matchSegments}getMetaByName(e){return this.#n.get(e)?.meta}hasRoute(e){return this.#n.has(e)}#l(e,t,n){for(let[r,i]of e.constraintPatterns){let e=n[r];if(e!=null){let n=typeof e==`object`?JSON.stringify(e):String(e);if(!i.pattern.test(n))throw Error(`[SegmentMatcher.buildPath] '${t}' — param '${r}' value '${n}' does not match constraint '${i.constraint}'`)}}}#u(e,t){let n=e.buildStaticParts,r=e.buildParamSlots;if(r.length===0)return n[0];let i=n[0];for(let[e,a]of r.entries()){let r=t?.[a.paramName];if(r==null){if(!a.isOptional)throw Error(`[SegmentMatcher.buildPath] Missing required param '${a.paramName}'`);i.length>1?i=i.slice(0,-1):n[e+1].startsWith(`/`)&&(i=``),i+=n[e+1];continue}if(r===``&&!a.isOptional)throw Error(`[SegmentMatcher.buildPath] Missing required param '${a.paramName}' (empty string)`);let o=a.encoder(Pe(r));i+=o+n[e+1]}return i}#d(e,t){return t===`always`&&!e.endsWith(`/`)?`${e}/`:t===`never`&&e!==`/`&&e.endsWith(`/`)?e.slice(0,-1):e}#f(e,t,n){if(!t||e.declaredQueryParams.length===0&&n!==`loose`)return``;let r={},i=!1;for(let n of e.declaredQueryParams)n in t&&(r[n]=t[n],i=!0);if(n===`loose`)for(let n in t)Object.hasOwn(t,n)&&!e.declaredQueryParamsSet.has(n)&&!e.buildParamNamesSet.has(n)&&(r[n]=t[n],i=!0);return i?this.#e.buildQueryString(r):``}#p(e){if(e===``&&(e=`/`),e.codePointAt(0)!==47)return!1;let t=this.#m(e);if(t===-2)return!1;t===-3&&(e=this.#o);let n=t>=0?e.slice(0,t):e,r=t>=0?e.slice(t+1):void 0;if(r!==void 0){let e=r.indexOf(`#`);e!==-1&&(r=r.slice(0,e))}let i=D(n);return this.#i.cleanPath=n,this.#i.normalized=i,this.#i.queryString=r,!0}#m(e){let t=!1;for(let n=0;n<e.length;n++){let r=e.codePointAt(n);if(r===35)return this.#o=e.slice(0,n),-3;if(r===63)return n;if(r>=128)return-2;if(r===47){if(t)return-2;t=!0}else t=!1}return-1}#h(e,t,n){if(!(n!==void 0&&!this.#g(e,t,n)))return{segments:e.matchSegments,params:t,meta:e.meta}}#g(e,t,n){let r;try{r=this.#e.parseQueryString(n)}catch{return!1}if(this.#e.strictQueryParams){let n=e.declaredQueryParamsSet;for(let e in r){if(!n.has(e))return!1;$(t,e,r[e])}}else for(let e in r)$(t,e,r[e]);return!0}#_(e,t){return(e.length>1&&e.endsWith(`/`))===t.hasTrailingSlash}#v(e,t){return e.length===1?this.#t.slashChildRoute??this.#t.route:this.#y(this.#t,e,1,t)}#y(e,t,n,r){let i=e,a=t.length,o=this.#s;for(;n<=a;){let e=t.indexOf(`/`,n),s=e===-1?a:e,c=t.slice(n,s),l=o?c:c.toLowerCase(),u;if(l in i.staticChildren)u=i.staticChildren[l];else if(i.paramChild){let e=i.paramChild,o=e.fork;if(i.splatChild!==void 0){if(o?.constraint!==void 0&&!this.#x(o.constraint,c))return this.#b(i.splatChild,t,n,r);let l={[o?.skipName!==void 0&&s>=a?o.skipName:e.name]:c},u=this.#y(e.node,t,s+1,l);return u!==void 0&&(!u.hasConstraints||this.#C(u,l))?(Object.assign(r,l),u):this.#b(i.splatChild,t,n,r)}u=e.node,o?.skipName!==void 0&&s>=a?r[o.skipName]=c:r[e.name]=c}else if(i.splatChild)return this.#b(i.splatChild,t,n,r);else return;i=u,n=s+1}return i.slashChildRoute??i.route}#b(e,t,n,r){let i=e.node;if(!i.hasChildren)return r[e.name]=t.slice(n),i.route;let a={},o=this.#y(i,t,n,a);return o&&(!o.hasConstraints||this.#C(o,a))?(Object.assign(r,a),o):(r[e.name]=t.slice(n),i.route)}#x(e,t){try{return e.test(this.#c?this.#c(t):t)}catch{return!1}}#S(e){let t=this.#c;if(!t)return!0;for(let n in e){let r=e[n];if(r.includes(`%`)){if(!se(r))return!1;try{e[n]=t(r)}catch{return!1}}}return!0}#C(e,t){let n=this.#c;for(let[r,i]of e.constraintPatterns){if(!Object.hasOwn(t,r))continue;let e=t[r];if(n&&e.includes(`%`))try{e=n(e)}catch{return!1}if(!i.pattern.test(e))return!1}return!0}#w(e,t){for(let[n,r]of t.constraintPatterns)if(Object.hasOwn(e,n)&&!r.pattern.test(e[n]))return!1;return!0}};export{e as CONSTRAINT_BODY_PATTERN,y as EMPTY_PARAM_META,n as INVALID_QUERY_NAME_RGX,d as PARAM_NAME_PATTERN,Fe as SegmentMatcher,b as buildParamMeta,o as findSegmentGrammarError,s as hasMultipleOptionalsBeforeSplat,t as isConstraintBalanced};\n//# sourceMappingURL=index.mjs.map","const e=e=>{let t=e.indexOf(`%`),n=e.indexOf(`+`);if(t===-1&&n===-1)return e;let r=n===-1?e:e.replaceAll(`+`,` `);return t===-1?r:decodeURIComponent(r)},t=(t,n)=>{if(t===void 0)return n.boolean.decodeUndefined();let r=n.boolean.decodeRaw(t);if(r!==null)return r;let i=e(t),a=n.number.decode(i);return a===null?n.boolean.decodeValue(i):a},n=e=>{let t=e.indexOf(`?`);return t===-1?e:e.slice(t+1)},r=/[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?<![\\uD800-\\uDBFF])[\\uDC00-\\uDFFF]/g,i=e=>{try{return encodeURIComponent(e)}catch(t){if(!(t instanceof URIError))throw t;return encodeURIComponent(String(e).replaceAll(r,`�`))}},a=e=>{let t=typeof e;if(t!==`string`&&t!==`number`&&t!==`boolean`)throw TypeError(`[search-params] Array element must be a string, number, or boolean — received ${t}`);return i(e)},o=(e,t,n,r)=>{let i=`${e}${n}`,o=[];for(let e of t)if(e===null){let e=r.encode(i);e&&o.push(e)}else o.push(`${i}=${a(e)}`);return o.join(`&`)},s={none:{encodeArray:(e,t,n)=>o(e,t,``,n)},brackets:{encodeArray:(e,t,n)=>o(e,t,`[]`,n)},index:{encodeArray:(e,t,n)=>{let r=[];for(let[i,o]of t.entries()){let t=`${e}[${i}]`;if(o===null){let e=n.encode(t);e&&r.push(e)}else r.push(`${t}=${a(o)}`)}return r.join(`&`)},indexed:!0},comma:{encodeArray:(e,t)=>{let n=[];for(let e of t)e!==null&&n.push(a(e));return n.length===0?``:`${e}=${n.join(`,`)}`},decodeValue:e=>e.includes(`,`)?e.split(`,`):null}},c={none:{encode:(e,t)=>`${e}=${t}`,decodeUndefined:()=>null,decodeRaw:()=>null,decodeValue:e=>e},auto:{encode:(e,t)=>`${e}=${t}`,decodeUndefined:()=>null,decodeRaw:e=>e===`true`?!0:e===`false`?!1:null,decodeValue:e=>e},\"empty-true\":{encode:(e,t)=>t?e:`${e}=false`,decodeUndefined:()=>!0,decodeRaw:e=>e===`true`?!0:e===`false`?!1:null,decodeValue:e=>e}},l={default:{encode:e=>e},hidden:{encode:()=>``}},u={auto:{decode:e=>{let t=e.length;if(t===0)return null;let n=+(e.codePointAt(0)===45);if(n===t||t-n>1&&e.codePointAt(n)===48&&e.codePointAt(n+1)!==46)return null;let r=!1;for(let i=n;i<t;i++){let a=e.codePointAt(i);if(!(a!==void 0&&a>=48&&a<=57)){if(a===46&&!r&&i!==n&&i!==t-1){r=!0;continue}return null}}let i=Number(e);return Object.is(i,-0)||!Number.isSafeInteger(i)&&!r?null:i}},none:{decode:()=>null}},d=(e,t,n,r)=>{if(e===void 0)throw TypeError(`[search-params] Unknown ${t} \"${n}\" — expected ${r}`);return e},f=(e,t,n,r)=>({boolean:d(c[t],`booleanFormat`,t,`\"none\" | \"auto\" | \"empty-true\"`),null:d(l[n],`nullFormat`,n,`\"default\" | \"hidden\"`),number:d(u[r],`numberFormat`,r,`\"none\" | \"auto\"`),array:d(s[e],`arrayFormat`,e,`\"none\" | \"brackets\" | \"index\" | \"comma\"`)}),p={boolean:c.auto,null:l.default,number:u.auto,array:s.none},m={arrayFormat:`none`,booleanFormat:`auto`,nullFormat:`default`,numberFormat:`auto`},h={...m,strategies:p},g=e=>{if(!e||e.arrayFormat===void 0&&e.booleanFormat===void 0&&e.nullFormat===void 0&&e.numberFormat===void 0)return h;let t=e.arrayFormat??m.arrayFormat,n=e.booleanFormat??m.booleanFormat,r=e.nullFormat??m.nullFormat,i=e.numberFormat??m.numberFormat;return{arrayFormat:t,booleanFormat:n,nullFormat:r,numberFormat:i,strategies:f(t,n,r,i)}},_=e=>i(e),v=(e,t,n)=>{let r=_(e);switch(typeof t){case`string`:case`number`:return`${r}=${_(t)}`;case`boolean`:return n.strategies.boolean.encode(r,t);case`object`:return t===null?n.strategies.null.encode(r):Array.isArray(t)?n.strategies.array.encodeArray(r,t,n.strategies.null):`${r}=${_(t)}`;default:return`${r}=${_(t)}`}};function y(e,t,n){t===`__proto__`?Object.defineProperty(e,t,{value:n,writable:!0,enumerable:!0,configurable:!0}):e[t]=n}function b(e,t,n,r){if(!Object.hasOwn(e,t)){y(e,t,r?[n]:n);return}let i=e[t];Array.isArray(i)?i.push(n):y(e,t,[i,n])}function x(e,n,r,i,a){return t(i?e.slice(n+1,r):void 0,a)}function S(e,t,n){let r=t+1,i=0,a=!1;for(;r<n;){let t=e.codePointAt(r);if(t===93)return a?i:null;if(t!==void 0&&t>=48&&t<=57){i=i*10+(t-48),a=!0,r++;continue}return null}return null}function C(e,t,n){let{searchPart:r,nameEnd:i,nameSourceEnd:a,eqPos:o,end:s,hasValue:c,decodedName:l}=e,u=S(r,i,a);if(u===null)return!1;let d=x(r,o,s,c,t),f=n.get(l);return f===void 0?n.set(l,[[u,d]]):f.push([u,d]),!0}function w(n,r,i,a,o,s,c){let l=s!==-1&&s<i,u=l?s:i,d=u,f=!1;for(let e=r;e<u;e++)if(n.codePointAt(e)===91){d=e,f=!0;break}let p=e(n.slice(r,d));if(!(c!==void 0&&f&&C({searchPart:n,nameEnd:d,nameSourceEnd:u,eqPos:s,end:i,hasValue:l,decodedName:p},o,c))){if(!f&&l&&o.array.decodeValue){let e=n.slice(s+1,i),r=o.array.decodeValue(e);if(r){for(let e of r)b(a,p,t(e,o),!0);return}}b(a,p,x(n,s,i,l,o),f)}}const T=(e,t)=>{if(e===``||e===`?`)return{};let n={};return D(e,n,g(t).strategies),n},E=(e,t)=>T(n(e),t);function D(e,t,n){let r=n.array.indexed?new Map:void 0,i=0,a=e.length,o=-2;for(;i<a;){let s=e.indexOf(`&`,i);s===-1&&(s=a),s>i&&(o!==-1&&o<i&&(o=e.indexOf(`=`,i)),w(e,i,s,t,n,o,r)),i=s+1}if(r!==void 0)for(let[e,n]of r)n.sort((e,t)=>e[0]-t[0]),y(t,e,n.map(e=>e[1]))}const O=(e,t)=>{let n=Object.keys(e);if(n.length===0)return``;let r=g(t),i=[];for(let t of n){let n=e[t];if(n===void 0)continue;let a=v(t,n,r);a&&i.push(a)}return i.join(`&`)};export{m as DEFAULT_QUERY_PARAMS,O as build,E as parse,T as parseQuery};\n//# sourceMappingURL=index.mjs.map","import{EMPTY_PARAM_META as e,INVALID_QUERY_NAME_RGX as t,SegmentMatcher as n,buildParamMeta as r,findSegmentGrammarError as i,hasMultipleOptionalsBeforeSplat as a,isConstraintBalanced as o}from\"path-matcher\";import{DEFAULT_QUERY_PARAMS as s,build as c,parseQuery as l}from\"search-params\";function u(e,t){let n=e.path,r=n.startsWith(`~`),i=r?n.slice(1):n,a={name:e.name,path:i,absolute:r,children:[],parent:t};if(e.children)for(let t of e.children){let e=u(t,a);a.children.push(e)}return a}function d(e,t,n){let r=u({name:e,path:t},null);for(let e of n){let t=u(e,r);r.children.push(t)}return r}const f=Object.freeze(new Map),p=Object.freeze([]);function m(e){return e.parent?.name?`${e.parent.fullName}.${e.name}`:e.name}function h(e){let t=new Map;for(let n of e)t.set(n.name,n);return t}function g(e,t){let n=[],r=[];for(let i of e){let e=_(i,t);n.push(e),e.absolute||r.push(e)}return{childrenMap:h(n),nonAbsoluteChildren:r}}function _(t,n){let i=r(t.path),a=i.urlParams.length===0&&i.queryParams.length===0&&i.spatParams.length===0&&i.constraintPatterns.size===0&&i.pathPattern===t.path?e:i,o=a.paramTypeMap,s={name:t.name,path:t.path,absolute:t.absolute,parent:n,children:void 0,paramMeta:a,nonAbsoluteChildren:void 0,fullName:``,paramTypeMap:o};if(s.fullName=m(s),t.children.length===0)s.children=f,s.nonAbsoluteChildren=p;else{let{childrenMap:e,nonAbsoluteChildren:n}=g(t.children,s);s.children=e,s.nonAbsoluteChildren=n,Object.freeze(s.nonAbsoluteChildren),Object.freeze(s.children)}return Object.freeze(o),Object.freeze(a.urlParams),Object.freeze(a.queryParams),Object.freeze(a.spatParams),Object.freeze(a),Object.freeze(s),s}function v(e){return _(e,null)}function y(e,t,n){return v(d(e,t,n))}function b(e,t){let n=[],r=t.includes(`.`)?t.split(`.`):[t];e.path!==``&&n.push(e);let i=e;for(let e of r){let t=i.children.get(e);if(!t)return null;n.push(t),i=t}return n}function x(e){let t=e.absolute?`~${e.path}`:e.path,n={name:e.name,path:t};return e.children.size>0&&(n.children=Array.from(e.children.values(),x)),n}function S(e){return Array.from(e.children.values(),x)}function C(e){let t=e?.queryParams;return new n({...e?.caseSensitive!==void 0&&{caseSensitive:e.caseSensitive},...e?.strictTrailingSlash!==void 0&&{strictTrailingSlash:e.strictTrailingSlash},...e?.strictQueryParams!==void 0&&{strictQueryParams:e.strictQueryParams},...e?.urlParamsEncoding!==void 0&&{urlParamsEncoding:e.urlParamsEncoding},parseQueryString:e=>l(e,t),buildQueryString:e=>c(e,t)})}function w(e,t){return TypeError(`[router.${e}] ${t}`)}function T(e,t,n){if(!o(e))throw w(n,`Invalid path for route \"${t}\": unbalanced constraint delimiter ('<' or '>') in \"${e}\"`);if(e.includes(`<>`))throw w(n,`Invalid path for route \"${t}\": empty constraint '<>' in \"${e}\" (a constraint body must be non-empty, e.g. '<[0-9]+>')`)}function E(e,t,n,r){let i=new Set;for(let a of e){if(i.has(a))throw w(n,`Invalid path for route \"${t}\": duplicate parameter name ':${a}' in \"${r}\" (a param name must be unique within a route — the second binding would overwrite the first)`);i.add(a)}}function D(e,n,r,i,a){let o=new Set(e);for(let e of n){if(t.test(e))throw w(i,`Invalid path for route \"${r}\": invalid query-param name \"${e}\" in \"${a}\" (a query-param name cannot contain '<' or '>' — a reverse-order modifier typo that leaked a constraint into the query; put the optional '?' after the constraint, ':id<...>?')`);if(o.has(e))throw w(i,`Invalid path for route \"${r}\": \"${e}\" is declared as both a path param and a query param in \"${a}\" — buildPath would emit its value twice (rename one)`)}}function O(e){let t=!0,n=!1,r=!1;for(let i of e){if(r){r=i!==`>`;continue}if(i===`<`){r=!0;continue}if(i===`/`){t=!0;continue}if(t&&=(n=i===`:`||i===`*`,!1),!n&&i.codePointAt(0)>=128)return!0}return!1}function k(e){for(let t=1;t<e.length;t++)if(e[t]===`?`&&e[t-1]!==`>`&&e[t+1]===`/`&&e[t+2]===`*`)return!0;return!1}function A(e,t,n,r){if(a(e))throw w(r,`Invalid path for route \"${t}\": two optional params directly before a splat are not supported in \"${n}\" — a single trie slot carries one optional→splat fork, so the omit-outer/take-inner form would silently reshape into the splat. Split into two routes, or drop the '?' on one`);if(k(e))throw w(r,`Invalid path for route \"${t}\": an unconstrained optional param before a splat is not supported in \"${n}\" — it is ambiguous (every multi-segment value has two readings). Add a constraint (e.g. ':lang<[a-z]+>?') or model it as two routes`)}function j(e,t,n){switch(e){case`name-less`:case`trailing-marker`:return`Invalid path for route \"${t}\": parameter marker (':' or '*') without a name in \"${n}\"`;case`fused-marker`:return`Invalid path for route \"${t}\": parameter marker (':' or '*') must begin a segment, but \"${n}\" fuses one to a static prefix (use a boundary marker like \"/a/:b\")`;case`fused-constraint-suffix`:return`Invalid path for route \"${t}\": text fused to a constraint '>' in \"${n}\" (a '<...>' must end its segment or be followed by '/' or an optional '?' — use \"/:id<...>/rest\", not \"/:id<...>rest\")`;case`constraint-in-static`:return`Invalid path for route \"${t}\": constraint '<...>' in a static segment in \"${n}\" (a '<...>' must follow a parameter marker ':' or '*' — attach it to a param like \"/:id<...>\", or drop it)`;case`optional-splat`:return`Invalid path for route \"${t}\": optional splat ('*name?') is not supported in \"${n}\" — a splat cannot be optional (use a required splat '*name')`;case`unbalanced-constraint`:case`empty-constraint`:return`Invalid path for route \"${t}\": invalid constraint in \"${n}\"`}}function M(e,t,n){try{return r(e)}catch(r){throw w(n,`Invalid path for route \"${t}\": ${(r instanceof Error?r.message:String(r)).replace(/^\\[buildParamMeta] /,``)} (in \"${e}\")`)}}function N(e,t,n,r){if(typeof e!=`string`){let t;throw t=e===null?`null`:Array.isArray(e)?`array`:typeof e,w(n,`Route path must be a string, got ${t}`)}if(e===``)return;if(/\\s/.test(e))throw w(n,`Invalid path for route \"${t}\": whitespace not allowed in \"${e}\"`);if(!/^([/?~]|[^/]+$)/.test(e))throw w(n,`Route \"${t}\" has invalid path format: \"${e}\". Path should start with '/', '~', '?' or be a relative segment.`);if(e.includes(`//`))throw w(n,`Invalid path for route \"${t}\": double slashes not allowed in \"${e}\"`);T(e,t,n);let{pathPattern:a,urlParams:o,queryParams:s}=M(e,t,n);E(o,t,n,e),D(o,s,t,n,e);let c=i(a);if(c!==void 0)throw w(n,j(c,t,e));if(A(a,t,e,n),O(a))throw w(n,`Invalid path for route \"${t}\": non-ASCII static segment in \"${e}\" — match compares static segments raw and rejects non-ASCII input, so this route would never match. Percent-encode it (e.g. '/caf%C3%A9') or use a param`);let l=r&&r.paramMeta.urlParams.length>0;if(e.startsWith(`~`)&&l)throw w(n,`Absolute path \"${e}\" cannot be used under parent route with URL parameters`)}const P=/^[A-Z_a-z][\\w-]*$/,F=/\\S/,I=1e4;function L(e){if(e===null)return`null`;if(typeof e==`object`){try{let t=e.constructor;if(typeof t==`function`&&t.name!==`Object`)return t.name||`object`}catch{}return`object`}return typeof e}function R(e){for(let t of Object.keys(e)){let n=Object.getOwnPropertyDescriptor(e,t);if(n&&(n.get||n.set))return!0}return!1}function z(e,t){if(!e||typeof e!=`object`)throw TypeError(`[router.${t}] Route must be an object, got ${L(e)}`);let n=Object.getPrototypeOf(e);if(n!==Object.prototype&&n!==null)throw TypeError(`[router.${t}] Route must be a plain object, got ${L(e)}`);if(R(e))throw TypeError(`[router.${t}] Route must not have getters or setters`)}function B(e,t){if(e.encodeParams!==void 0&&typeof e.encodeParams!=`function`)throw TypeError(`[router.${t}] Route \"${String(e.name)}\" encodeParams must be a function`)}function V(e,t){if(e.decodeParams!==void 0&&typeof e.decodeParams!=`function`)throw TypeError(`[router.${t}] Route \"${String(e.name)}\" decodeParams must be a function`)}function H(e,t){if(typeof e.name!=`string`)throw TypeError(`[router.${t}] Route name must be a string, got ${L(e.name)}`);let n=e.name;if(n===``)throw TypeError(`[router.${t}] Route name cannot be empty`);if(!F.test(n))throw TypeError(`[router.${t}] Route name cannot contain only whitespace`);if(n.length>I)throw TypeError(`[router.${t}] Route name exceeds maximum length of ${I} characters`);if(!n.startsWith(`@@`)){if(n.includes(`.`))throw TypeError(`[router.${t}] Route name \"${n}\" cannot contain dots. Use children array or { parent } option in addRoute() instead.`);if(!P.test(n))throw TypeError(`[router.${t}] Invalid route name \"${n}\". Name must start with a letter or underscore, followed by letters, numbers, underscores, or hyphens.`)}}function U(e,t){if(!t.includes(`.`))return e.children.get(t);let n=e;for(let e of t.split(`.`))if(n=n.children.get(e),!n)return;return n}function W(e,t,n){if(U(e,t))throw Error(`[router.${n}] Route \"${t}\" already exists`)}function G(e,t,n){if(e.has(t))throw Error(`[router.${n}] Duplicate route \"${t}\" in batch`);e.add(t)}function K(e,t,n,r){let i=t===``?e:U(e,t);if(i){for(let e of i.children.values())if(e.path===n)throw Error(`[router.${r}] Path \"${n}\" is already defined`)}}function q(e,t,n,r){let i=e.get(t);if(i?.has(n))throw Error(`[router.${r}] Path \"${n}\" is already defined`);i?i.add(n):e.set(t,new Set([n]))}function J(e,t,n,r=``,i,a){z(e,t);let o=e;H(o,t),N(o.path,o.name,t,n),B(o,t),V(o,t);let s=o.name,c=r?`${r}.${s}`:s;n&&c&&W(n,c,t),i&&G(i,c,t);let l=o.path,u=r;if(n&&K(n,u,l,t),a&&q(a,u,l,t),o.children!==void 0){if(!Array.isArray(o.children))throw TypeError(`[router.${t}] Route \"${s}\" children must be an array, got ${L(o.children)}`);for(let e of o.children)J(e,t,n,c,i,a)}}export{s as DEFAULT_QUERY_PARAMS,C as createMatcher,y as createRouteTree,b as getSegmentsByName,x as nodeToDefinition,S as routeTreeToDefinitions,J as validateRoute};\n//# sourceMappingURL=index.mjs.map"],"mappings":"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"}
@@ -143,7 +143,8 @@ interface ResolvedMatcherOptions {
143
143
  *
144
144
  * **Single source of truth** for "what characters a parameter name may contain"
145
145
  * (#738), now consumed by the whole-path query-mask (`OPTIONAL_PARAM_MARKER_RGX`
146
- * below) and `route-tree`'s name-less-marker gate (`EMPTY_PARAM_MARKER_RGX`). The
146
+ * below). The route-tree gate reads the per-segment grammar through `parseSegment`
147
+ * (`findSegmentGrammarError`), not this char class. The
147
148
  * per-segment name grammar itself lives in `parseSegment` (the tokenizer this
148
149
  * module now consumes for URL-param extraction), so `match()` / `buildPath()`
149
150
  * cannot disagree on a name.
@@ -363,4 +364,4 @@ type Matcher = SegmentMatcher;
363
364
  declare function validateRoute(route: unknown, methodName: string, rootNode?: RouteTree, parentName?: string, seenNames?: Set<string>, seenPathsByParent?: Map<string, Set<string>>): asserts route is RouteDefinition; //#endregion
364
365
  //#endregion
365
366
  export { validateRoute as a, RouteTree as i, Matcher as n, RouteDefinition as r, CreateMatcherOptions as t };
366
- //# sourceMappingURL=index-Ti9C-wWj.d.mts.map
367
+ //# sourceMappingURL=index-cgB7PGoM.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index-Ti9C-wWj.d.mts","names":["pattern","RegExp","constraint","urlParams","queryParams","spatParams","paramTypeMap","Readonly","Record","constraintPatterns","ReadonlyMap","ConstraintPattern","pathPattern","name","path","fullName","absolute","children","MatcherInputNode","nonAbsoluteChildren","paramMeta","ParamMeta","parent","CompiledRoute","matchSegments","meta","declaredQueryParams","declaredQueryParamsSet","ReadonlySet","hasTrailingSlash","hasConstraints","buildStaticParts","buildParamSlots","BuildParamSlot","buildParamNamesSet","cachedResult","MatchResult","paramName","encoder","value","isOptional","queryParamsMode","trailingSlash","skipName","staticChildren","SegmentNode","hasChildren","paramChild","node","fork","ForkMeta","splatChild","route","routeIsStrong","slashChildRoute","segments","params","caseSensitive","strictTrailingSlash","strictQueryParams","urlParamsEncoding","URLParamsEncodingType","parseQueryString","queryString","buildQueryString","SegmentErrorCode","private","options","ResolvedMatcherOptions","constructor","SegmentMatcherOptions","registerTree","match","buildPath","BuildPathOptions","getSegmentsByName","getMetaByName","hasRoute","arrayFormat","ArrayFormat","booleanFormat","BooleanFormat","nullFormat","NullFormat","numberFormat","NumberFormat","QueryParamPrimitive","Record","QueryParamValue","search","Options","opts","path","params","FinalOptions","key","name","path","children","RouteDefinition","absolute","ReadonlyMap","RouteTree","paramMeta","ParamMeta","parent","nonAbsoluteChildren","fullName","paramTypeMap","Readonly","Record","ParamSource","ParamTypeMap","P","RouteParams","segments","params","meta","RouteTreeStateMeta","routes","tree","routeName","node","Options","caseSensitive","strictTrailingSlash","strictQueryParams","urlParamsEncoding","queryParams","QueryParamsConfig","SegmentMatcher","CreateMatcherOptions","options","Matcher","route","methodName","rootNode","parentName","Set","seenNames","Map","seenPathsByParent"],"sources":["../../../path-matcher/dist/esm/index.d.mts","../../../search-params/dist/esm/index.d.mts","../../../route-tree/dist/esm/index.d.mts"],"mappings":"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"}
1
+ {"version":3,"file":"index-cgB7PGoM.d.mts","names":["pattern","RegExp","constraint","urlParams","queryParams","spatParams","paramTypeMap","Readonly","Record","constraintPatterns","ReadonlyMap","ConstraintPattern","pathPattern","name","path","fullName","absolute","children","MatcherInputNode","nonAbsoluteChildren","paramMeta","ParamMeta","parent","CompiledRoute","matchSegments","meta","declaredQueryParams","declaredQueryParamsSet","ReadonlySet","hasTrailingSlash","hasConstraints","buildStaticParts","buildParamSlots","BuildParamSlot","buildParamNamesSet","cachedResult","MatchResult","paramName","encoder","value","isOptional","queryParamsMode","trailingSlash","skipName","staticChildren","SegmentNode","hasChildren","paramChild","node","fork","ForkMeta","splatChild","route","routeIsStrong","slashChildRoute","segments","params","caseSensitive","strictTrailingSlash","strictQueryParams","urlParamsEncoding","URLParamsEncodingType","parseQueryString","queryString","buildQueryString","SegmentErrorCode","private","options","ResolvedMatcherOptions","constructor","SegmentMatcherOptions","registerTree","match","buildPath","BuildPathOptions","getSegmentsByName","getMetaByName","hasRoute","arrayFormat","ArrayFormat","booleanFormat","BooleanFormat","nullFormat","NullFormat","numberFormat","NumberFormat","QueryParamPrimitive","Record","QueryParamValue","search","Options","opts","path","params","FinalOptions","key","name","path","children","RouteDefinition","absolute","ReadonlyMap","RouteTree","paramMeta","ParamMeta","parent","nonAbsoluteChildren","fullName","paramTypeMap","Readonly","Record","ParamSource","ParamTypeMap","P","RouteParams","segments","params","meta","RouteTreeStateMeta","routes","tree","routeName","node","Options","caseSensitive","strictTrailingSlash","strictQueryParams","urlParamsEncoding","queryParams","QueryParamsConfig","SegmentMatcher","CreateMatcherOptions","options","Matcher","route","methodName","rootNode","parentName","Set","seenNames","Map","seenPathsByParent"],"sources":["../../../path-matcher/dist/esm/index.d.mts","../../../search-params/dist/esm/index.d.mts","../../../route-tree/dist/esm/index.d.mts"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { i as RouteTree } from "./index-Ti9C-wWj.mjs";
1
+ import { i as RouteTree } from "./index-cgB7PGoM.mjs";
2
2
  import { a as PluginFactory, o as Route, r as GuardFnFactory, s as RouteConfigUpdate, t as Router } from "./Router-Bm2qafJA.mjs";
3
3
  import { n as RouterValidator, t as RouterError } from "./RouterError-BEqOMMFO.mjs";
4
4
  import { Config, DefaultDependencies, DefaultDependencies as DefaultDependencies$1, ErrorCodeKeys, ErrorCodeToValueMap, ErrorCodeValues, EventToNameMap, GuardFn, Listener, NavigationOptions, Navigator, Navigator as Navigator$1, Options, Options as Options$1, Params, Plugin, Router as Router$1, SimpleState, State, SubscribeFn, SubscribeState, Subscription, TreeChangedAdd, TreeChangedClear, TreeChangedEvent, TreeChangedRemove, TreeChangedReplace, TreeChangedUpdate, TreeStructuralPatch, Unsubscribe } from "@real-router/types";
@@ -1,2 +1,2 @@
1
- import{C as e,S as t,g as n,n as r,t as i,w as a,x as o}from"./Router-EYmAJsXk.mjs";const s=(e=[],t={},n={})=>new i(e,t,n),c=new WeakMap,l=e=>{let t=c.get(e);return t||(t=Object.freeze({navigate:e.navigate,getState:e.getState,isActiveRoute:e.isActiveRoute,canNavigateTo:e.canNavigateTo,subscribe:e.subscribe,subscribeLeave:e.subscribeLeave,isLeaveApproved:e.isLeaveApproved}),c.set(e,t)),t};export{i as Router,r as RouterError,o as UNKNOWN_ROUTE,t as constants,s as createRouter,e as errorCodes,a as events,l as getNavigator,n as resolveForwardChain};
1
+ import{C as e,S as t,g as n,n as r,t as i,w as a,x as o}from"./Router-Q3GRd0Nq.mjs";const s=(e=[],t={},n={})=>new i(e,t,n),c=new WeakMap,l=e=>{let t=c.get(e);return t||(t=Object.freeze({navigate:e.navigate,getState:e.getState,isActiveRoute:e.isActiveRoute,canNavigateTo:e.canNavigateTo,subscribe:e.subscribe,subscribeLeave:e.subscribeLeave,isLeaveApproved:e.isLeaveApproved}),c.set(e,t)),t};export{i as Router,r as RouterError,o as UNKNOWN_ROUTE,t as constants,s as createRouter,e as errorCodes,a as events,l as getNavigator,n as resolveForwardChain};
2
2
  //# sourceMappingURL=index.mjs.map
@@ -1,2 +1,2 @@
1
- import{l as e}from"./esm-C2tc0t6J.mjs";import{r as t,t as n}from"./cloneRouter-M_dwhLD_.mjs";function r(e){return`signal`in e&&typeof e.signal==`object`&&e.signal!==void 0&&typeof e.signal.aborted==`boolean`}function i(e,t,i){let a,o,s;if(r(e))s=e.signal;else{let t=new AbortController,n=()=>{t.abort()};s=t.signal,o=()=>{e.on(`close`,n)},a=()=>{e.removeListener?.(`close`,n)}}let c=n(t,{...i,abortSignal:s});o?.();let l=!1,u=()=>l?Promise.resolve():(l=!0,a?.(),c.dispose(),Promise.resolve());return{router:c,signal:s,dispose:u,[Symbol.asyncDispose]:u}}function a(e,t){for(let n of e.children.values())n.children.size===0?t.push(n.fullName):a(n,t)}function o(e){let t=[];return a(e,t),t}async function s(e,n){let r=o(t(e).getTree()),i=[];for(let t of r){let r=n?.[t];if(r){let n=await r();for(let r of n)i.push(e.buildPath(t,r))}else i.push(e.buildPath(t,{}))}return i}async function c(t,n,r){let i=r?.deserialize??JSON.parse,a=typeof n==`string`?i(n):n,o=e(t),s=o.hydrationState;o.hydrationState=a;try{return await t.start(a.path)}finally{o.hydrationState=s}}function l(e,t){return((t?.serialize??JSON.stringify)(e)??`null`).replaceAll(`<`,String.raw`\u003c`).replaceAll(`>`,String.raw`\u003e`).replaceAll(`&`,String.raw`\u0026`)}function u(e,t){let n=t?.excludeContext,r=e.context;if(n?.length){let t={},i=e.context;for(let[e,r]of Object.entries(i))n.includes(e)||(t[e]=r);r=t}let i={name:e.name,params:e.params,path:e.path,context:r};return t?.serialize?l(i,{serialize:t.serialize}):l(i)}export{i as createRequestScope,s as getStaticPaths,c as hydrateRouter,u as serializeRouterState,l as serializeState};
1
+ import{l as e}from"./esm-CLeBo4Hk.mjs";import{r as t,t as n}from"./cloneRouter-BFeskDYy.mjs";function r(e){return`signal`in e&&typeof e.signal==`object`&&e.signal!==void 0&&typeof e.signal.aborted==`boolean`}function i(e,t,i){let a,o,s;if(r(e))s=e.signal;else{let t=new AbortController,n=()=>{t.abort()};s=t.signal,o=()=>{e.on(`close`,n)},a=()=>{e.removeListener?.(`close`,n)}}let c=n(t,{...i,abortSignal:s});o?.();let l=!1,u=()=>l?Promise.resolve():(l=!0,a?.(),c.dispose(),Promise.resolve());return{router:c,signal:s,dispose:u,[Symbol.asyncDispose]:u}}function a(e,t){for(let n of e.children.values())n.children.size===0?t.push(n.fullName):a(n,t)}function o(e){let t=[];return a(e,t),t}async function s(e,n){let r=o(t(e).getTree()),i=[];for(let t of r){let r=n?.[t];if(r){let n=await r();for(let r of n)i.push(e.buildPath(t,r))}else i.push(e.buildPath(t,{}))}return i}async function c(t,n,r){let i=r?.deserialize??JSON.parse,a=typeof n==`string`?i(n):n,o=e(t),s=o.hydrationState;o.hydrationState=a;try{return await t.start(a.path)}finally{o.hydrationState=s}}function l(e,t){return((t?.serialize??JSON.stringify)(e)??`null`).replaceAll(`<`,String.raw`\u003c`).replaceAll(`>`,String.raw`\u003e`).replaceAll(`&`,String.raw`\u0026`)}function u(e,t){let n=t?.excludeContext,r=e.context;if(n?.length){let t={},i=e.context;for(let[e,r]of Object.entries(i))n.includes(e)||(t[e]=r);r=t}let i={name:e.name,params:e.params,path:e.path,context:r};return t?.serialize?l(i,{serialize:t.serialize}):l(i)}export{i as createRequestScope,s as getStaticPaths,c as hydrateRouter,u as serializeRouterState,l as serializeState};
2
2
  //# sourceMappingURL=utils.mjs.map
@@ -1,4 +1,4 @@
1
- import { a as validateRoute, i as RouteTree, n as Matcher, r as RouteDefinition, t as CreateMatcherOptions } from "./index-Ti9C-wWj.mjs";
1
+ import { a as validateRoute, i as RouteTree, n as Matcher, r as RouteDefinition, t as CreateMatcherOptions } from "./index-cgB7PGoM.mjs";
2
2
  import { a as PluginFactory, i as Limits, n as EventMethodMap, r as GuardFnFactory } from "./Router-Bm2qafJA.mjs";
3
3
  import { n as RouterValidator } from "./RouterError-BEqOMMFO.mjs";
4
4
  import { n as SerializedRouterState } from "./index-Cwd11Hun.mjs";
@@ -1 +1 @@
1
- import{l as e,r as t}from"./esm-C2tc0t6J.mjs";export{e as getInternals,t as validateRoute};
1
+ import{l as e,n as t}from"./esm-CLeBo4Hk.mjs";export{e as getInternals,t as validateRoute};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@real-router/core",
3
- "version": "0.74.6",
3
+ "version": "0.74.8",
4
4
  "type": "commonjs",
5
5
  "description": "A simple, powerful, view-agnostic, modular and extensible router",
6
6
  "main": "./dist/cjs/index.js",