@real-router/core 0.157.0 → 0.158.0

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 (36) hide show
  1. package/README.md +6 -4
  2. package/dist/cjs/Router-CjpauUGY.js +2 -0
  3. package/dist/cjs/Router-CjpauUGY.js.map +1 -0
  4. package/dist/cjs/api.js +1 -1
  5. package/dist/cjs/helpers-iJq-DSS7.js +2 -0
  6. package/dist/cjs/helpers-iJq-DSS7.js.map +1 -0
  7. package/dist/cjs/helpers.d.ts +6 -3
  8. package/dist/cjs/helpers.d.ts.map +1 -1
  9. package/dist/cjs/index.js +1 -1
  10. package/dist/cjs/{internals-BIFri00a.js → internals-CGNdQfzl.js} +2 -2
  11. package/dist/cjs/{internals-BIFri00a.js.map → internals-CGNdQfzl.js.map} +1 -1
  12. package/dist/cjs/utils.js +1 -1
  13. package/dist/cjs/validation.js +1 -1
  14. package/dist/esm/Router-Dt2la4K2.mjs +2 -0
  15. package/dist/esm/Router-Dt2la4K2.mjs.map +1 -0
  16. package/dist/esm/api.mjs +1 -1
  17. package/dist/esm/api.mjs.map +1 -1
  18. package/dist/esm/helpers-D5eyVTyF.mjs +2 -0
  19. package/dist/esm/helpers-D5eyVTyF.mjs.map +1 -0
  20. package/dist/esm/helpers.d.mts +6 -3
  21. package/dist/esm/helpers.d.mts.map +1 -1
  22. package/dist/esm/index.mjs +1 -1
  23. package/dist/esm/index.mjs.map +1 -1
  24. package/dist/esm/{internals-3GJCFPcw.mjs → internals-CLQmmAMr.mjs} +2 -2
  25. package/dist/esm/{internals-3GJCFPcw.mjs.map → internals-CLQmmAMr.mjs.map} +1 -1
  26. package/dist/esm/utils.mjs +1 -1
  27. package/dist/esm/validation.mjs +1 -1
  28. package/package.json +1 -1
  29. package/dist/cjs/Router-WmGPinsJ.js +0 -2
  30. package/dist/cjs/Router-WmGPinsJ.js.map +0 -1
  31. package/dist/cjs/helpers-CJZd3DYU.js +0 -2
  32. package/dist/cjs/helpers-CJZd3DYU.js.map +0 -1
  33. package/dist/esm/Router-Bq4eRDf_.mjs +0 -2
  34. package/dist/esm/Router-Bq4eRDf_.mjs.map +0 -1
  35. package/dist/esm/helpers-CrMwAJNl.mjs +0 -2
  36. package/dist/esm/helpers-CrMwAJNl.mjs.map +0 -1
package/dist/esm/api.mjs CHANGED
@@ -1,2 +1,2 @@
1
- import{C as e,E as t,L as n,t as r,w as i,x as a}from"./helpers-CrMwAJNl.mjs";import{S as o,c as s,l as c,n as l,o as u,u as d}from"./internals-3GJCFPcw.mjs";import{A as f,B as p,C as m,D as h,E as g,F as _,I as v,L as y,M as ee,N as b,O as x,P as S,R as C,S as w,T,_ as E,a as D,b as te,c as O,d as k,f as A,g as j,h as M,i as N,j as P,k as ne,l as re,m as ie,n as ae,o as oe,p as se,r as ce,s as le,t as ue,u as de,w as fe,x as F,y as I,z as pe}from"./Router-Bq4eRDf_.mjs";const L=a(`router`);function R(e,t){if(e())throw L.code(n.REENTRANT_TREE_MUTATION)`cannot mutate the route tree from inside a subscribeChanges handler — the mutation would run while a TREE_CHANGED emit is on the stack and the tree must stay atomic. Defer it: queueMicrotask(() => routes.add(...)) or await.`;if(t())throw L.code(n.REENTRANT_TREE_MUTATION)`cannot mutate the route tree from inside replace()'s revalidation — the tree would move under a state that has not been revalidated yet. Defer it: queueMicrotask(() => routes.replace(...)) or await.`}function me(e,t,n){if(t){let r=t===e;if(r||t.startsWith(`${e}.`)){let i=r?``:` (current: "${t}")`;return n.warn(`router.removeRoute`,`Cannot remove route "${e}" — it is currently active${i}. Navigate away first.`),!1}}return!0}function he(e,t){t.warn(`router.removeRoute`,`Route "${e}" removed while navigation is in progress. Removing a route the router is navigating to (or an ancestor of it) fails that navigation with "ROUTE_NOT_FOUND" — the rejected navigate() promise and onTransitionError carry the same code, and onTransitionCancel never fires. The committed state is not affected either way.`)}function z(e){let t=e.indexOf(`?`);return t===-1?e:e.slice(0,t)}function ge(e,t,n,r){return n&&z(e)!==z(t)?(r.error(`router.setRootPath`,"Cannot change the root PATH while navigation is in progress — it moves every route's path, including the one being navigated to. Wait for navigation to complete. (Changing only the `?`-declared query names is allowed here: it moves no paths.)"),!1):!0}const B=a(`router`,`claimContextNamespace`),_e=a(`router`,`extendRouter`),V=Object.freeze,H=Object.keys,U=new WeakMap;function ve(a){let f=U.get(a);if(f)return f;let p=u(a),h={makeState:(e,t,n,r)=>p.makeState(e,t,n,r),forwardState:(e,t,n)=>(s(p.checks,l[`forwardState:entry`],e,t,n),p.forwardState(e,t,n)),matchPath:e=>p.matchPath(e,p.getOptions()),navigateToState:(e,t)=>p.navigateToState(e,t),setRootPath:e=>{if(c(p.isDisposed),R(p.treeChanged.isEmitting,()=>p.routeGetStore().revalidating),!ge(p.getRootPath(),e,p.isTransitioning(),p.logger))return!1;let t=p.getRootPath();return p.setRootPath(e),t!==e&&p.treeChanged.emit({op:`rootPath`,previous:t,next:e}),!0},getRootPath:p.getRootPath,addEventListener:(e,t)=>p.addEventListener(e,t),buildNavigationState:(e,t={},n={})=>{d(p,`buildNavigationState`,e,t);let i=r(t);s(p.checks,l[`buildNavigationState:state`],e,i,n);let a=g(p.port(),e,i,n,{diagnoseUndeclared:!0});if(!p.buildStateResolved(a.name,a.path))return;o(`buildNavigationState`,a.name,a.path,p.port().queryNames(a.name));let c=fe(a,T(a,p.port()));return p.port().reportCodecRoundTrip?.(c),c},buildPathResolved:(e,t,n)=>p.buildPathResolved(e,t,n),getAdoptedOrigins:p.getAdoptedOrigins,logger:V({log:(e,t,...n)=>{p.logger.log(e,t,...n)},warn:(e,t,...n)=>{p.logger.warn(e,t,...n)},error:(e,t,...n)=>{p.logger.error(e,t,...n)}}),getDeclaredQueryNames:e=>p.getDeclaredQueryNames(e),getUrlParams:e=>m(p.routeGetStore(),e),getForwardMap:()=>{let t=i();return e(t,p.routeGetStore().config.forwardMap),V(t)},getResolvedLimits:()=>p.dependenciesGetStore().limits,getDependencyKeys:()=>V(H(p.dependenciesGetStore().dependencies)),getExternalGuardNames:()=>{let[e,t]=p.routeGetStore().lifecycleNamespace.getFactoriesByOrigin().external;return V([...new Set([...H(e),...H(t)])])},getOptions:p.getOptions,getTree:p.getTree,addInterceptor:(e,t)=>{c(p.isDisposed),S(e,t);let n=p.interceptors.get(e);n||(n=[],p.interceptors.set(e,n)),n.push(t);let r=!1;return()=>{r||(r=!0,n.splice(n.indexOf(t),1))}},subscribeDiagnostic:p.subscribeDiagnostic,addCheck:(e,t)=>{c(p.isDisposed),P(e,t);let n=p.checks.get(e);n||(n=[],p.checks.set(e,n)),n.push(t);let r=!1;return()=>{r||(r=!0,n.splice(n.indexOf(t),1))}},getRouteConfig:e=>{let t=p.routeGetStore();if(t.matcher.hasRoute(e))return t.routeCustomFields[e]},extendRouter:e=>{c(p.isDisposed),ee(e);let t=H(e);for(let e of t)if(e in a)throw _e.code(n.PLUGIN_CONFLICT)`Cannot extend router: property "${e}" already exists`;let r=t.map(t=>e[t]),i={keys:t};for(let[e,n]of t.entries())a[n]=r[e];p.routerExtensions.push(i);let o=!1;return()=>{if(o)return;o=!0;for(let e of i.keys)delete a[e];let e=p.routerExtensions.indexOf(i);e!==-1&&p.routerExtensions.splice(e,1)}},emitTransitionError:e=>{c(p.isDisposed),p.emitTransitionError(e)},claimContextNamespace:e=>{if(c(p.isDisposed),typeof e!=`string`||e===``)throw B.type`namespace must be a non-empty string, got ${typeof e==`string`?`an empty string`:typeof e}`;if(p.contextClaimRecords.has(e))throw B.code(n.CONTEXT_NAMESPACE_ALREADY_CLAIMED)`Cannot claim context namespace: "${e}" is already claimed by another plugin`;let r={write(n,i){p.contextClaimRecords.get(e)===r&&t(n.context,e,i)},release(){p.contextClaimRecords.get(e)===r&&p.contextClaimRecords.delete(e)}};return p.contextClaimRecords.set(e,r),r}},_=V(h);return U.set(a,_),_}const ye=a(`router`,`clear`),W=Object.freeze,G=Object.keys,be=Object.freeze({replace:!0,revalidate:!0}),xe=Object.freeze([]);function Se(e,t,n,r){let i=t=>e.has(t);F(t.decoders,i),F(t.encoders,i),F(t.defaultParams,i),F(t.defaultSearch,i),F(t.forwardMap,i),F(t.forwardFnMap,i),F(n,i),F(t.forwardMap,e=>i(t.forwardMap[e]));let[a,o]=r.getFactories();for(let e of G(o))i(e)&&r.clearCanActivate(e,`both`);for(let e of G(a))i(e)&&r.clearCanDeactivate(e,`both`)}function K(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.defaultSearch&&(e.defaultSearch=n.defaultSearch[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 q(e,n,r,i){let a={name:e.name,path:e.path};return K(a,n,r,i),e.children&&t(a,`children`,e.children.map(e=>q(e,`${n}.${e.name}`,r,i))),a}function J(e,t,n,r){let i={name:e,path:t};return K(i,e,n,r),W(i)}function Y(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,J(a,s.path,e.config,r)),s.children&&i(s.children,a)}};return i(e.definitions,``),n}function Ce(e,t){let n=Y(e,e=>t.has(e));return W([...n.values()])}function we(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(J(e,o.path,n.config,r)),o.children&&a(o.children,e)}};return a(e,t??``),W(i)}function Te(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:W(n),added:W(r)}}function Ee(e){let t={};return e.forwardTo!==void 0&&(t.forwardTo=e.forwardTo),e.defaultParams!==void 0&&(t.defaultParams=e.defaultParams),e.defaultSearch!==void 0&&(t.defaultSearch=e.defaultSearch),e.encodeParams!==void 0&&(t.encodeParams=e.encodeParams),e.decodeParams!==void 0&&(t.decodeParams=e.decodeParams),W(t)}function De(e,t,n,r){D(e,t,n);let i=A(e,t,n,r);I(i.matcher,i.config,`addRoute`),e.lifecycleNamespace.preflightHandlerLimit(i.pendingCanActivate.keys(),i.pendingCanDeactivate.keys(),!1),N(e,i)}function X(e,t,n){e.systemCommit(t,n,be)}function Oe(e,t,n,r,i){re(t,`addRoute`),k(t,`addRoute`),oe(t,`addRoute`),le(t,``,`addRoute`),O(t,``,`addRoute`);let a=se(t,e.rootPath,e.matcherOptions,n.logger);I(a.matcher,a.config,`addRoute`),e.lifecycleNamespace.preflightHandlerLimit(a.pendingCanActivate.keys(),a.pendingCanDeactivate.keys(),!0);let o=j(a,e.depsStore);e.lifecycleNamespace.clearDefinitionGuards(),N(e,a,o),e.revalidating=!0;let s=r();try{if(i?.(),s!==void 0){let t=n.matchPath(s.path,n.getOptions());if(t){if(t.name===s.name)X(n,{...t,context:s.context,transition:s.transition},s);else{let{toDeactivate:r,toActivate:i,intersection:a}=ae(t,s,n.getMetaForState);if(e.lifecycleNamespace.canNavigateTo([],i,t,s,`replace`)){let e={phase:`activating`,from:s.name,reason:`success`,replace:!0,segments:{deactivated:r,activated:i,intersection:a}};X(n,{...t,transition:e},s)}else n.revalidateToNotFound(s.path)}}else n.revalidateToNotFound(s.path)}}finally{e.revalidating=!1}}function ke(e,t,n){let r=e.definitions,i=w(r,t);if(i===void 0)return;let a=n?Ce(e,i):xe;return Se(i,e.config,e.routeCustomFields,e.lifecycleNamespace),M(e,r),a}function Ae(e,t){let n=e.matcher.getSegmentsByName(t);if(!n)return;let r=n.at(-1),i=pe(r),a=e.lifecycleNamespace.getFactories();return q(i,t,e.config,a)}const Z=new WeakMap;function je(e){let t=Z.get(e);if(t)return t;let r=u(e),i=r.routeGetStore(),a=e=>{r.treeChanged.emit(e)},o=W({add:(e,t)=>{c(r.isDisposed),R(r.treeChanged.isEmitting,()=>i.revalidating);let n=Array.isArray(e)?e:[e],o=t?.parent,u=y(n);if(s(r.checks,l[`addRoute:batch`],u,o),De(i,u,o,r.logger),r.treeChanged.listenerCount()>0){let e=we(u,o,i);a(o===void 0?{op:`add`,added:e}:{op:`add`,added:e,parent:o})}},remove:e=>{if(c(r.isDisposed),R(r.treeChanged.isEmitting,()=>i.revalidating),s(r.checks,l[`removeRoute:entry`],e),de(e,`removeRoute`),!me(e,r.getStateName(),r.logger))return;let t=r.treeChanged.listenerCount()>0,n=ke(i,e,t);n===void 0?r.logger.warn(`router.removeRoute`,`Route "${e}" not found. No changes made.`):(r.isTransitioning()&&he(e,r.logger),t&&a({op:`remove`,name:e,removedSubtree:n}))},update:(e,t)=>{if(c(r.isDisposed),R(r.treeChanged.isEmitting,()=>i.revalidating),s(r.checks,l[`updateRoute:entry`],e,t),de(e,`updateRoute`),!i.matcher.hasRoute(e))return;r.isTransitioning()&&r.logger.error(`router.updateRoute`,`Updating route "${e}" while navigation is in progress. This may cause unexpected behavior.`);let n=i.lifecycleNamespace,o=ie(i,n,e,t);if(r.treeChanged.listenerCount()>0){let t=Ee(o);G(t).length>0&&a({op:`update`,name:e,patch:t})}},clear:()=>{if(c(r.isDisposed),R(r.treeChanged.isEmitting,()=>i.revalidating),r.getStateName()!==void 0)throw ye.code(n.ROUTER_NOT_STOPPED)`Cannot clear routes while a state is committed. Use replace(routes) to swap the tree on a running router, or stop() first.`;if(r.isTransitioning()){r.logger.error(`router.clear`,`Cannot clear routes while navigation is in progress. Wait for navigation to complete.`);return}let e=r.treeChanged.listenerCount()>0?W([...Y(i,()=>!0).values()]):void 0;E(i),i.lifecycleNamespace.clearAll(),e!==void 0&&a({op:`clear`,removed:e})},has:e=>(s(r.checks,l[`hasRoute:entry`],e),i.matcher.hasRoute(e)),get:e=>(s(r.checks,l[`getRoute:entry`],e),Ae(i,e)),replace:t=>{c(r.isDisposed),R(r.treeChanged.isEmitting,()=>i.revalidating);let n=Array.isArray(t)?t:[t];if(r.isTransitioning()){r.logger.error(`router.replace`,`Cannot replace routes while navigation is in progress. Wait for navigation to complete.`);return}let o=y(n);s(r.checks,l[`replaceRoutes:batch`],o);let u=r.treeChanged.listenerCount()>0?Y(i,()=>!0):void 0;Oe(i,o,r,()=>e.getState(),u===void 0?void 0:()=>{let e=Y(i,()=>!0),{removed:t,added:n}=Te(u,e);a({op:`replace`,removed:t,added:n})})},subscribeChanges:e=>(v(e),r.treeChanged.subscribe(e))});return Z.set(e,o),o}const Q=Object.hasOwn,Me=Object.keys,Ne=e=>typeof e==`symbol`?e:String(e),Pe=[];function Fe(e,t,n,r){if(n===void 0)return;let i=e.dependencies,a=Ne(t),o=r?Me(i):Pe;if(o.includes(a)){let e=i[a];e!==n&&!(Number.isNaN(e)&&Number.isNaN(n))&&r?.dependencies.warnOverwrite(String(a),`setDependency`)}else r?.dependencies.validateDependencyCount(o.length,e.limits.maxDependencies,`setDependency`);i[a]=n}function Ie(e,t,n){let r=[],i=e.dependencies,a=new Set(n?Me(i):Pe);C(t,(t,o)=>{a.has(t)?r.push(t):(n?.dependencies.validateDependencyCount(a.size,e.limits.maxDependencies,`setDependencies`),a.add(t)),f(i,t,o)}),r.length>0&&n?.dependencies.warnBatchOverwrite(r,`setDependencies`)}function Le(e){let t=u(e);return{get:e=>{t.validator?.dependencies.validateDependencyName(e,`getDependency`);let n=t.dependenciesGetStore(),r=x(n,e);return t.validator?.dependencies.validateDependencyExists(e,r),r},getAll:()=>ne(t.dependenciesGetStore()),set:(e,n)=>{c(t.isDisposed),t.validator?.dependencies.validateSetDependencyArgs(e,n,`setDependency`),Fe(t.dependenciesGetStore(),e,n,t.validator),c(t.isDisposed)},setAll:e=>{c(t.isDisposed);let n=t.dependenciesGetStore();t.validator?.dependencies.validateDependenciesObject(e,`setDependencies`),Ie(n,e,t.validator),c(t.isDisposed)},remove:e=>{c(t.isDisposed),t.validator?.dependencies.validateDependencyName(e,`removeDependency`);let n=t.dependenciesGetStore(),r=Ne(e);Q(n.dependencies,r)||t.validator?.dependencies.warnRemoveNonExistent(String(r)),delete n.dependencies[r]},reset:()=>{c(t.isDisposed),h(t.dependenciesGetStore())},has:e=>(t.validator?.dependencies.validateDependencyName(e,`hasDependency`),Q(t.dependenciesGetStore().dependencies,e))}}function Re(e){let t=u(e),n=t.routeGetStore().lifecycleNamespace;return{addActivateGuard(e,r){c(t.isDisposed),_(e,`addActivateGuard`),b(e,`addActivateGuard`),s(t.checks,l[`addActivateGuard:entry`],e,r),n.addCanActivate(e,r,!1)},addDeactivateGuard(e,r){c(t.isDisposed),_(e,`addDeactivateGuard`),b(e,`addDeactivateGuard`),s(t.checks,l[`addDeactivateGuard:entry`],e,r),n.addCanDeactivate(e,r,!1)},removeActivateGuard(e){c(t.isDisposed),_(e,`removeActivateGuard`),s(t.checks,l[`removeActivateGuard:entry`],e),n.clearCanActivate(e,`external`)},removeDeactivateGuard(e){c(t.isDisposed),_(e,`removeDeactivateGuard`),s(t.checks,l[`removeDeactivateGuard:entry`],e),n.clearCanDeactivate(e,`external`)}}}const $=Object.entries,ze=Object.hasOwn,Be=a(`cloneRouter`);function Ve(e,r,i){let a=u(e);if(a.isDisposed())throw Be.code(n.ROUTER_DISPOSED)`cannot clone a disposed router — dispose() is terminal`;a.validator?.dependencies.validateCloneArgs(r);let o=a.routeGetStore(),s=p(o.tree),c=o.config,l=o.resolvedForwardMap,d=o.routeCustomFields,{options:f,dependencies:m,pluginFactories:h,loggerConfig:g,limits:_,limitKeys:v}=a.getCloneState(),{definition:y,external:ee}=o.lifecycleNamespace.getFactoriesByOrigin(),b={...m};r!==void 0&&C(r,(e,n)=>{t(b,e,n)});let x=i?.logger,S=x?{...g,...x}:g,w=new ue(s,{...f,...o.matcherOptions?.queryParams!==void 0&&{queryParams:o.matcherOptions.queryParams},logger:S,...v!==void 0&&{limits:Object.fromEntries(v.filter(e=>ze(_,e)).map(e=>[e,_[e]]))},...o.matcherOptions?.urlParamsEncoding!==void 0&&{urlParamsEncoding:o.matcherOptions.urlParamsEncoding}},b),T=u(w),E=T.routeGetStore(),D=E.lifecycleNamespace;te(E.config,c),ce(E,Object.assign(E.resolvedForwardMap,l)),Object.assign(E.routeCustomFields,d),o.rootPath!==``&&T.setRootPath(o.rootPath);let[O,k]=y,[A,j]=ee;for(let[e,t]of $(O))D.addCanDeactivate(e,t,!0);for(let[e,t]of $(k))D.addCanActivate(e,t,!0);let M=Re(w);for(let[e,t]of $(A))M.addDeactivateGuard(e,t);for(let[e,t]of $(j))M.addActivateGuard(e,t);let N=new Set(T.getCloneState().pluginFactories),P=h.filter(e=>!N.has(e));return P.length>0&&w.usePlugin(...P),w}export{Ve as cloneRouter,Le as getDependenciesApi,Re as getLifecycleApi,ve as getPluginApi,je as getRoutesApi};
1
+ import{C as e,E as t,O as n,T as r,t as i,z as a}from"./helpers-D5eyVTyF.mjs";import{S as o,c as s,l as c,n as l,o as u,u as d}from"./internals-CLQmmAMr.mjs";import{A as f,B as p,C as m,D as h,E as g,F as _,I as v,L as y,M as ee,N as b,O as x,P as S,R as C,S as w,T,_ as E,a as D,b as te,c as O,d as k,f as A,g as j,h as M,i as N,j as P,k as ne,l as re,m as ie,n as ae,o as oe,p as se,r as ce,s as le,t as ue,u as de,w as fe,x as F,y as I,z as pe}from"./Router-Dt2la4K2.mjs";const L=e(`router`);function R(e,t){if(e())throw L.code(a.REENTRANT_TREE_MUTATION)`cannot mutate the route tree from inside a subscribeChanges handler — the mutation would run while a TREE_CHANGED emit is on the stack and the tree must stay atomic. Defer it: queueMicrotask(() => routes.add(...)) or await.`;if(t())throw L.code(a.REENTRANT_TREE_MUTATION)`cannot mutate the route tree from inside replace()'s revalidation — the tree would move under a state that has not been revalidated yet. Defer it: queueMicrotask(() => routes.replace(...)) or await.`}function me(e,t,n){if(t){let r=t===e;if(r||t.startsWith(`${e}.`)){let i=r?``:` (current: "${t}")`;return n.warn(`router.removeRoute`,`Cannot remove route "${e}" — it is currently active${i}. Navigate away first.`),!1}}return!0}function he(e,t){t.warn(`router.removeRoute`,`Route "${e}" removed while navigation is in progress. Removing a route the router is navigating to (or an ancestor of it) fails that navigation with "ROUTE_NOT_FOUND" — the rejected navigate() promise and onTransitionError carry the same code, and onTransitionCancel never fires. The committed state is not affected either way.`)}function z(e){let t=e.indexOf(`?`);return t===-1?e:e.slice(0,t)}function ge(e,t,n,r){return n&&z(e)!==z(t)?(r.error(`router.setRootPath`,"Cannot change the root PATH while navigation is in progress — it moves every route's path, including the one being navigated to. Wait for navigation to complete. (Changing only the `?`-declared query names is allowed here: it moves no paths.)"),!1):!0}const B=e(`router`,`claimContextNamespace`),_e=e(`router`,`extendRouter`),V=Object.freeze,H=Object.keys,U=new WeakMap;function ve(e){let f=U.get(e);if(f)return f;let p=u(e),h={makeState:(e,t,n,r)=>p.makeState(e,t,n,r),forwardState:(e,t,n)=>(s(p.checks,l[`forwardState:entry`],e,t,n),p.forwardState(e,t,n)),matchPath:e=>p.matchPath(e,p.getOptions()),navigateToState:(e,t)=>p.navigateToState(e,t),setRootPath:e=>{if(c(p.isDisposed),R(p.treeChanged.isEmitting,()=>p.routeGetStore().revalidating),!ge(p.getRootPath(),e,p.isTransitioning(),p.logger))return!1;let t=p.getRootPath();return p.setRootPath(e),t!==e&&p.treeChanged.emit({op:`rootPath`,previous:t,next:e}),!0},getRootPath:p.getRootPath,addEventListener:(e,t)=>p.addEventListener(e,t),buildNavigationState:(e,t={},n={})=>{d(p,`buildNavigationState`,e,t);let r=i(t);s(p.checks,l[`buildNavigationState:state`],e,r,n);let a=g(p.port(),e,r,n,{diagnoseUndeclared:!0});if(!p.buildStateResolved(a.name,a.path))return;o(`buildNavigationState`,a.name,a.path,p.port().queryNames(a.name));let c=fe(a,T(a,p.port()));return p.port().reportCodecRoundTrip?.(c),c},buildPathResolved:(e,t,n)=>p.buildPathResolved(e,t,n),getAdoptedOrigins:p.getAdoptedOrigins,logger:V({log:(e,t,...n)=>{p.logger.log(e,t,...n)},warn:(e,t,...n)=>{p.logger.warn(e,t,...n)},error:(e,t,...n)=>{p.logger.error(e,t,...n)}}),getDeclaredQueryNames:e=>p.getDeclaredQueryNames(e),getUrlParams:e=>m(p.routeGetStore(),e),getForwardMap:()=>{let e=t();return r(e,p.routeGetStore().config.forwardMap),V(e)},getResolvedLimits:()=>p.dependenciesGetStore().limits,getDependencyKeys:()=>V(H(p.dependenciesGetStore().dependencies)),getExternalGuardNames:()=>{let[e,t]=p.routeGetStore().lifecycleNamespace.getFactoriesByOrigin().external;return V([...new Set([...H(e),...H(t)])])},getOptions:p.getOptions,getTree:p.getTree,addInterceptor:(e,t)=>{c(p.isDisposed),S(e,t);let n=p.interceptors.get(e);n||(n=[],p.interceptors.set(e,n)),n.push(t);let r=!1;return()=>{r||(r=!0,n.splice(n.indexOf(t),1))}},subscribeDiagnostic:p.subscribeDiagnostic,addCheck:(e,t)=>{c(p.isDisposed),P(e,t);let n=p.checks.get(e);n||(n=[],p.checks.set(e,n)),n.push(t);let r=!1;return()=>{r||(r=!0,n.splice(n.indexOf(t),1))}},getRouteConfig:e=>{let t=p.routeGetStore();if(t.matcher.hasRoute(e))return t.routeCustomFields[e]},extendRouter:t=>{c(p.isDisposed),ee(t);let n=H(t);for(let t of n)if(t in e)throw _e.code(a.PLUGIN_CONFLICT)`Cannot extend router: property "${t}" already exists`;let r=n.map(e=>t[e]),i={keys:n};for(let[t,i]of n.entries())e[i]=r[t];p.routerExtensions.push(i);let o=!1;return()=>{if(o)return;o=!0;for(let t of i.keys)delete e[t];let t=p.routerExtensions.indexOf(i);t!==-1&&p.routerExtensions.splice(t,1)}},emitTransitionError:e=>{c(p.isDisposed),p.emitTransitionError(e)},claimContextNamespace:e=>{if(c(p.isDisposed),typeof e!=`string`||e===``)throw B.type`namespace must be a non-empty string, got ${typeof e==`string`?`an empty string`:typeof e}`;if(p.contextClaimRecords.has(e))throw B.code(a.CONTEXT_NAMESPACE_ALREADY_CLAIMED)`Cannot claim context namespace: "${e}" is already claimed by another plugin`;let t={write(r,i){p.contextClaimRecords.get(e)===t&&n(r.context,e,i)},release(){p.contextClaimRecords.get(e)===t&&p.contextClaimRecords.delete(e)}};return p.contextClaimRecords.set(e,t),t}},_=V(h);return U.set(e,_),_}const ye=e(`router`,`clear`),W=Object.freeze,G=Object.keys,be=Object.freeze({replace:!0,revalidate:!0}),xe=Object.freeze([]);function Se(e,t,n,r){let i=t=>e.has(t);F(t.decoders,i),F(t.encoders,i),F(t.defaultParams,i),F(t.defaultSearch,i),F(t.forwardMap,i),F(t.forwardFnMap,i),F(n,i),F(t.forwardMap,e=>i(t.forwardMap[e]));let[a,o]=r.getFactories();for(let e of G(o))i(e)&&r.clearCanActivate(e,`both`);for(let e of G(a))i(e)&&r.clearCanDeactivate(e,`both`)}function K(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.defaultSearch&&(e.defaultSearch=n.defaultSearch[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 q(e,t,r,i){let a={name:e.name,path:e.path};return K(a,t,r,i),e.children&&n(a,`children`,e.children.map(e=>q(e,`${t}.${e.name}`,r,i))),a}function J(e,t,n,r){let i={name:e,path:t};return K(i,e,n,r),W(i)}function Y(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,J(a,s.path,e.config,r)),s.children&&i(s.children,a)}};return i(e.definitions,``),n}function Ce(e,t){let n=Y(e,e=>t.has(e));return W([...n.values()])}function we(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(J(e,o.path,n.config,r)),o.children&&a(o.children,e)}};return a(e,t??``),W(i)}function Te(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:W(n),added:W(r)}}function Ee(e){let t={};return e.forwardTo!==void 0&&(t.forwardTo=e.forwardTo),e.defaultParams!==void 0&&(t.defaultParams=e.defaultParams),e.defaultSearch!==void 0&&(t.defaultSearch=e.defaultSearch),e.encodeParams!==void 0&&(t.encodeParams=e.encodeParams),e.decodeParams!==void 0&&(t.decodeParams=e.decodeParams),W(t)}function De(e,t,n,r){D(e,t,n);let i=A(e,t,n,r);I(i.matcher,i.config,`addRoute`),e.lifecycleNamespace.preflightHandlerLimit(i.pendingCanActivate.keys(),i.pendingCanDeactivate.keys(),!1),N(e,i)}function X(e,t,n){e.systemCommit(t,n,be)}function Oe(e,t,n,r,i){re(t,`addRoute`),k(t,`addRoute`),oe(t,`addRoute`),le(t,``,`addRoute`),O(t,``,`addRoute`);let a=se(t,e.rootPath,e.matcherOptions,n.logger);I(a.matcher,a.config,`addRoute`),e.lifecycleNamespace.preflightHandlerLimit(a.pendingCanActivate.keys(),a.pendingCanDeactivate.keys(),!0);let o=j(a,e.depsStore);e.lifecycleNamespace.clearDefinitionGuards(),N(e,a,o),e.revalidating=!0;let s=r();try{if(i?.(),s!==void 0){let t=n.matchPath(s.path,n.getOptions());if(t){if(t.name===s.name)X(n,{...t,context:s.context,transition:s.transition},s);else{let{toDeactivate:r,toActivate:i,intersection:a}=ae(t,s,n.getMetaForState);if(e.lifecycleNamespace.canNavigateTo([],i,t,s,`replace`)){let e={phase:`activating`,from:s.name,reason:`success`,replace:!0,segments:{deactivated:r,activated:i,intersection:a}};X(n,{...t,transition:e},s)}else n.revalidateToNotFound(s.path)}}else n.revalidateToNotFound(s.path)}}finally{e.revalidating=!1}}function ke(e,t,n){let r=e.definitions,i=w(r,t);if(i===void 0)return;let a=n?Ce(e,i):xe;return Se(i,e.config,e.routeCustomFields,e.lifecycleNamespace),M(e,r),a}function Ae(e,t){let n=e.matcher.getSegmentsByName(t);if(!n)return;let r=n.at(-1),i=pe(r),a=e.lifecycleNamespace.getFactories();return q(i,t,e.config,a)}const Z=new WeakMap;function je(e){let t=Z.get(e);if(t)return t;let n=u(e),r=n.routeGetStore(),i=e=>{n.treeChanged.emit(e)},o=W({add:(e,t)=>{c(n.isDisposed),R(n.treeChanged.isEmitting,()=>r.revalidating);let a=Array.isArray(e)?e:[e],o=t?.parent,u=y(a);if(s(n.checks,l[`addRoute:batch`],u,o),De(r,u,o,n.logger),n.treeChanged.listenerCount()>0){let e=we(u,o,r);i(o===void 0?{op:`add`,added:e}:{op:`add`,added:e,parent:o})}},remove:e=>{if(c(n.isDisposed),R(n.treeChanged.isEmitting,()=>r.revalidating),s(n.checks,l[`removeRoute:entry`],e),de(e,`removeRoute`),!me(e,n.getStateName(),n.logger))return;let t=n.treeChanged.listenerCount()>0,a=ke(r,e,t);a===void 0?n.logger.warn(`router.removeRoute`,`Route "${e}" not found. No changes made.`):(n.isTransitioning()&&he(e,n.logger),t&&i({op:`remove`,name:e,removedSubtree:a}))},update:(e,t)=>{if(c(n.isDisposed),R(n.treeChanged.isEmitting,()=>r.revalidating),s(n.checks,l[`updateRoute:entry`],e,t),de(e,`updateRoute`),!r.matcher.hasRoute(e))return;n.isTransitioning()&&n.logger.error(`router.updateRoute`,`Updating route "${e}" while navigation is in progress. This may cause unexpected behavior.`);let a=r.lifecycleNamespace,o=ie(r,a,e,t);if(n.treeChanged.listenerCount()>0){let t=Ee(o);G(t).length>0&&i({op:`update`,name:e,patch:t})}},clear:()=>{if(c(n.isDisposed),R(n.treeChanged.isEmitting,()=>r.revalidating),n.getStateName()!==void 0)throw ye.code(a.ROUTER_NOT_STOPPED)`Cannot clear routes while a state is committed. Use replace(routes) to swap the tree on a running router, or stop() first.`;if(n.isTransitioning()){n.logger.error(`router.clear`,`Cannot clear routes while navigation is in progress. Wait for navigation to complete.`);return}let e=n.treeChanged.listenerCount()>0?W([...Y(r,()=>!0).values()]):void 0;E(r),r.lifecycleNamespace.clearAll(),e!==void 0&&i({op:`clear`,removed:e})},has:e=>(s(n.checks,l[`hasRoute:entry`],e),r.matcher.hasRoute(e)),get:e=>(s(n.checks,l[`getRoute:entry`],e),Ae(r,e)),replace:t=>{c(n.isDisposed),R(n.treeChanged.isEmitting,()=>r.revalidating);let a=Array.isArray(t)?t:[t];if(n.isTransitioning()){n.logger.error(`router.replace`,`Cannot replace routes while navigation is in progress. Wait for navigation to complete.`);return}let o=y(a);s(n.checks,l[`replaceRoutes:batch`],o);let u=n.treeChanged.listenerCount()>0?Y(r,()=>!0):void 0;Oe(r,o,n,()=>e.getState(),u===void 0?void 0:()=>{let e=Y(r,()=>!0),{removed:t,added:n}=Te(u,e);i({op:`replace`,removed:t,added:n})})},subscribeChanges:e=>(v(e),n.treeChanged.subscribe(e))});return Z.set(e,o),o}const Q=Object.hasOwn,Me=Object.keys,Ne=e=>typeof e==`symbol`?e:String(e),Pe=[];function Fe(e,t,n,r){if(n===void 0)return;let i=e.dependencies,a=Ne(t),o=r?Me(i):Pe;if(o.includes(a)){let e=i[a];e!==n&&!(Number.isNaN(e)&&Number.isNaN(n))&&r?.dependencies.warnOverwrite(String(a),`setDependency`)}else r?.dependencies.validateDependencyCount(o.length,e.limits.maxDependencies,`setDependency`);i[a]=n}function Ie(e,t,n){let r=[],i=e.dependencies,a=new Set(n?Me(i):Pe);C(t,(t,o)=>{a.has(t)?r.push(t):(n?.dependencies.validateDependencyCount(a.size,e.limits.maxDependencies,`setDependencies`),a.add(t)),f(i,t,o)}),r.length>0&&n?.dependencies.warnBatchOverwrite(r,`setDependencies`)}function Le(e){let t=u(e);return{get:e=>{t.validator?.dependencies.validateDependencyName(e,`getDependency`);let n=t.dependenciesGetStore(),r=x(n,e);return t.validator?.dependencies.validateDependencyExists(e,r),r},getAll:()=>ne(t.dependenciesGetStore()),set:(e,n)=>{c(t.isDisposed),t.validator?.dependencies.validateSetDependencyArgs(e,n,`setDependency`),Fe(t.dependenciesGetStore(),e,n,t.validator),c(t.isDisposed)},setAll:e=>{c(t.isDisposed);let n=t.dependenciesGetStore();t.validator?.dependencies.validateDependenciesObject(e,`setDependencies`),Ie(n,e,t.validator),c(t.isDisposed)},remove:e=>{c(t.isDisposed),t.validator?.dependencies.validateDependencyName(e,`removeDependency`);let n=t.dependenciesGetStore(),r=Ne(e);Q(n.dependencies,r)||t.validator?.dependencies.warnRemoveNonExistent(String(r)),delete n.dependencies[r]},reset:()=>{c(t.isDisposed),h(t.dependenciesGetStore())},has:e=>(t.validator?.dependencies.validateDependencyName(e,`hasDependency`),Q(t.dependenciesGetStore().dependencies,e))}}function Re(e){let t=u(e),n=t.routeGetStore().lifecycleNamespace;return{addActivateGuard(e,r){c(t.isDisposed),_(e,`addActivateGuard`),b(e,`addActivateGuard`),s(t.checks,l[`addActivateGuard:entry`],e,r),n.addCanActivate(e,r,!1)},addDeactivateGuard(e,r){c(t.isDisposed),_(e,`addDeactivateGuard`),b(e,`addDeactivateGuard`),s(t.checks,l[`addDeactivateGuard:entry`],e,r),n.addCanDeactivate(e,r,!1)},removeActivateGuard(e){c(t.isDisposed),_(e,`removeActivateGuard`),s(t.checks,l[`removeActivateGuard:entry`],e),n.clearCanActivate(e,`external`)},removeDeactivateGuard(e){c(t.isDisposed),_(e,`removeDeactivateGuard`),s(t.checks,l[`removeDeactivateGuard:entry`],e),n.clearCanDeactivate(e,`external`)}}}const $=Object.entries,ze=Object.hasOwn,Be=e(`cloneRouter`);function Ve(e,t,r){let i=u(e);if(i.isDisposed())throw Be.code(a.ROUTER_DISPOSED)`cannot clone a disposed router — dispose() is terminal`;i.validator?.dependencies.validateCloneArgs(t);let o=i.routeGetStore(),s=p(o.tree),c=o.config,l=o.resolvedForwardMap,d=o.routeCustomFields,{options:f,dependencies:m,pluginFactories:h,loggerConfig:g,limits:_,limitKeys:v}=i.getCloneState(),{definition:y,external:ee}=o.lifecycleNamespace.getFactoriesByOrigin(),b={...m};t!==void 0&&C(t,(e,t)=>{n(b,e,t)});let x=r?.logger,S=x?{...g,...x}:g,w=new ue(s,{...f,...o.matcherOptions?.queryParams!==void 0&&{queryParams:o.matcherOptions.queryParams},logger:S,...v!==void 0&&{limits:Object.fromEntries(v.filter(e=>ze(_,e)).map(e=>[e,_[e]]))},...o.matcherOptions?.urlParamsEncoding!==void 0&&{urlParamsEncoding:o.matcherOptions.urlParamsEncoding}},b),T=u(w),E=T.routeGetStore(),D=E.lifecycleNamespace;te(E.config,c),ce(E,Object.assign(E.resolvedForwardMap,l)),Object.assign(E.routeCustomFields,d),o.rootPath!==``&&T.setRootPath(o.rootPath);let[O,k]=y,[A,j]=ee;for(let[e,t]of $(O))D.addCanDeactivate(e,t,!0);for(let[e,t]of $(k))D.addCanActivate(e,t,!0);let M=Re(w);for(let[e,t]of $(A))M.addDeactivateGuard(e,t);for(let[e,t]of $(j))M.addActivateGuard(e,t);let N=new Set(T.getCloneState().pluginFactories),P=h.filter(e=>!N.has(e));return P.length>0&&w.usePlugin(...P),w}export{Ve as cloneRouter,Le as getDependenciesApi,Re as getLifecycleApi,ve as getPluginApi,je as getRoutesApi};
2
2
  //# sourceMappingURL=api.mjs.map