@real-router/core 0.53.0 → 0.54.2

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 (57) hide show
  1. package/dist/cjs/Router-CJihdrWA.d.ts.map +1 -1
  2. package/dist/cjs/Router-Ca_j4nTg.js +6 -0
  3. package/dist/cjs/Router-Ca_j4nTg.js.map +1 -0
  4. package/dist/cjs/RouterError-Bm9YnZ6e.d.ts.map +1 -1
  5. package/dist/cjs/api.d.ts.map +1 -1
  6. package/dist/cjs/api.js +1 -1
  7. package/dist/cjs/api.js.map +1 -1
  8. package/dist/cjs/cloneRouter-8lDtVOLg.js +2 -0
  9. package/dist/cjs/cloneRouter-8lDtVOLg.js.map +1 -0
  10. package/dist/cjs/index-8oPDJBQc.d.ts.map +1 -1
  11. package/dist/cjs/index-EwbhzRQw.d.ts.map +1 -1
  12. package/dist/cjs/index.d.ts.map +1 -1
  13. package/dist/cjs/index.js +1 -1
  14. package/dist/cjs/index.js.map +1 -1
  15. package/dist/cjs/internals-CM6oaz9n.js.map +1 -1
  16. package/dist/cjs/utils.d.ts +1 -1
  17. package/dist/cjs/utils.js +1 -1
  18. package/dist/cjs/utils.js.map +1 -1
  19. package/dist/cjs/validation.d.ts.map +1 -1
  20. package/dist/esm/Router-BmhiDQUJ.d.mts.map +1 -1
  21. package/dist/esm/Router-DybFdPRv.mjs +6 -0
  22. package/dist/esm/Router-DybFdPRv.mjs.map +1 -0
  23. package/dist/esm/RouterError-hhfSVGtY.d.mts.map +1 -1
  24. package/dist/esm/api.d.mts.map +1 -1
  25. package/dist/esm/api.mjs +1 -1
  26. package/dist/esm/api.mjs.map +1 -1
  27. package/dist/esm/cloneRouter-B-Hnm2g0.mjs +2 -0
  28. package/dist/esm/cloneRouter-B-Hnm2g0.mjs.map +1 -0
  29. package/dist/esm/index-DNjaY7KH.d.mts.map +1 -1
  30. package/dist/esm/index-r_JTvSBH.d.mts.map +1 -1
  31. package/dist/esm/index.d.mts.map +1 -1
  32. package/dist/esm/index.mjs +1 -1
  33. package/dist/esm/index.mjs.map +1 -1
  34. package/dist/esm/internals-C59msvHY.mjs.map +1 -1
  35. package/dist/esm/utils.d.mts +1 -1
  36. package/dist/esm/utils.mjs +1 -1
  37. package/dist/esm/utils.mjs.map +1 -1
  38. package/dist/esm/validation.d.mts.map +1 -1
  39. package/package.json +1 -1
  40. package/src/api/getDependenciesApi.ts +3 -11
  41. package/src/api/getPluginApi.ts +3 -3
  42. package/src/api/getRoutesApi.ts +4 -2
  43. package/src/fsm/routerFSM.ts +14 -4
  44. package/src/namespaces/DependenciesNamespace/dependenciesStore.ts +1 -1
  45. package/src/namespaces/NavigationNamespace/NavigationNamespace.ts +8 -4
  46. package/src/namespaces/NavigationNamespace/transition/completeTransition.ts +4 -0
  47. package/src/namespaces/RoutesNamespace/RoutesNamespace.ts +3 -3
  48. package/src/namespaces/StateNamespace/StateNamespace.ts +2 -2
  49. package/src/utils/serializeRouterState.ts +1 -1
  50. package/dist/cjs/Router-DlmLM8Yo.js +0 -6
  51. package/dist/cjs/Router-DlmLM8Yo.js.map +0 -1
  52. package/dist/cjs/cloneRouter-jNfrYcI_.js +0 -2
  53. package/dist/cjs/cloneRouter-jNfrYcI_.js.map +0 -1
  54. package/dist/esm/Router-DRM2Fd06.mjs +0 -6
  55. package/dist/esm/Router-DRM2Fd06.mjs.map +0 -1
  56. package/dist/esm/cloneRouter-DdGGwYdL.mjs +0 -2
  57. package/dist/esm/cloneRouter-DdGGwYdL.mjs.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"Router-CJihdrWA.d.ts","names":[],"sources":["../../src/types.ts","../../src/Router.ts"],"mappings":";;;;;;KAwDY,MAAA,GAAS,QAAA,CAAS,YAAA;;;;;;;;UASb,4BAAA,WAAuC,MAAA,GAAS,MAAA;EAAA,SACtD,KAAA,EAAO,cAAA,CAAe,CAAA;EAAA,SACtB,QAAA;AAAA;;;;AAXX;;;;;AASA;;;;;;;;;;cCOa,QAAA,sBACU,mBAAA,GAAsB,mBAAA,aAChC,MAAA,CAAgB,YAAA;EAAA;GAC1B,GAAA;EDTe;;;;;cCqCd,MAAA,GAAQ,KAAA,CAAM,YAAA,KACd,OAAA,GAAS,OAAA,CAAQ,OAAA,GACjB,YAAA,GAAc,YAAA;EAyNhB,aAAA,CACE,IAAA,UACA,MAAA,GAAS,MAAA,EACT,cAAA,YACA,iBAAA;EAgCF,SAAA,CAAU,KAAA,UAAe,MAAA,GAAS,MAAA;EAalC,QAAA,WAAmB,MAAA,GAAS,MAAA,CAAA,CAAA,GAAW,KAAA,CAAM,CAAA;EAI7C,gBAAA,CAAA,GAAoB,KAAA;EAIpB,cAAA,CACE,MAAA,EAAQ,KAAA,cACR,MAAA,EAAQ,KAAA,cACR,iBAAA;EAWF,gBAAA,CACE,QAAA,YACE,OAAA,EAAS,KAAA,EAAO,SAAA,GAAY,KAAA;EAUhC,QAAA,CAAA;EAIA,KAAA,CAAM,SAAA,WAAoB,OAAA,CAAQ,KAAA;EAyBlC,IAAA,CAAA;EAcA,OAAA,CAAA;EA8CA,aAAA,CAAc,IAAA,UAAc,MAAA,GAAS,MAAA;EA+BrC,SAAA,CAAA,GACK,OAAA,GAAU,aAAA,CAAc,YAAA,kCAC1B,WAAA;EA2BH,SAAA,CAAU,QAAA,EAAU,WAAA,GAAc,WAAA;EAMlC,cAAA,CAAe,QAAA,EAAU,OAAA,GAAU,WAAA;EAMnC,eAAA,CAAA;EAQA,QAAA,CACE,SAAA,UACA,WAAA,GAAc,MAAA,EACd,OAAA,GAAU,iBAAA,GACT,OAAA,CAAQ,KAAA;EA4BX,iBAAA,CAAkB,OAAA,GAAU,iBAAA,GAAoB,OAAA,CAAQ,KAAA;EAyBxD,kBAAA,CAAmB,IAAA,YAAgB,KAAA;AAAA"}
1
+ {"version":3,"file":"Router-CJihdrWA.d.ts","names":[],"sources":["../../src/types.ts","../../src/Router.ts"],"mappings":";;;;;;KAwDY,MAAA,GAAS,QAAQ,CAAC,YAAA;;;;;;;;UASb,4BAAA,WAAuC,MAAA,GAAS,MAAA;EAAA,SACtD,KAAA,EAAO,cAAA,CAAe,CAAA;EAAA,SACtB,QAAA;AAAA;;;;AAXX;;;;AAA0C;AAS1C;;;;;;;;;;cCOa,QAAA,sBACU,mBAAA,GAAsB,mBAAA,aAChC,MAAA,CAAgB,YAAA;EAAA;GAC1B,GAAA;EDTe;;;;AACC;cCoCf,MAAA,GAAQ,KAAA,CAAM,YAAA,KACd,OAAA,GAAS,OAAA,CAAQ,OAAA,GACjB,YAAA,GAAc,YAAA;EAyNhB,aAAA,CACE,IAAA,UACA,MAAA,GAAS,MAAA,EACT,cAAA,YACA,iBAAA;EAgCF,SAAA,CAAU,KAAA,UAAe,MAAA,GAAS,MAAA;EAalC,QAAA,WAAmB,MAAA,GAAS,MAAA,CAAA,CAAA,GAAW,KAAA,CAAM,CAAA;EAI7C,gBAAA,CAAA,GAAoB,KAAA;EAIpB,cAAA,CACE,MAAA,EAAQ,KAAA,cACR,MAAA,EAAQ,KAAA,cACR,iBAAA;EAWF,gBAAA,CACE,QAAA,YACE,OAAA,EAAS,KAAA,EAAO,SAAA,GAAY,KAAA;EAUhC,QAAA,CAAA;EAIA,KAAA,CAAM,SAAA,WAAoB,OAAA,CAAQ,KAAA;EAyBlC,IAAA,CAAA;EAcA,OAAA,CAAA;EA8CA,aAAA,CAAc,IAAA,UAAc,MAAA,GAAS,MAAA;EA+BrC,SAAA,CAAA,GACK,OAAA,GAAU,aAAA,CAAc,YAAA,kCAC1B,WAAA;EA2BH,SAAA,CAAU,QAAA,EAAU,WAAA,GAAc,WAAA;EAMlC,cAAA,CAAe,QAAA,EAAU,OAAA,GAAU,WAAA;EAMnC,eAAA,CAAA;EAQA,QAAA,CACE,SAAA,UACA,WAAA,GAAc,MAAA,EACd,OAAA,GAAU,iBAAA,GACT,OAAA,CAAQ,KAAA;EA4BX,iBAAA,CAAkB,OAAA,GAAU,iBAAA,GAAoB,OAAA,CAAQ,KAAA;EAyBxD,kBAAA,CAAmB,IAAA,YAAgB,KAAA;AAAA"}
@@ -0,0 +1,6 @@
1
+ const e=require(`./internals-CM6oaz9n.js`);let t=require(`@real-router/logger`),n=require(`@real-router/fsm`);const r={maxListeners:0,warnListeners:0,maxEventDepth:0};var i=class extends Error{},a=class{#e=new Map;#t=null;#n=r;#r;#i;constructor(e){e?.limits&&(this.#n=e.limits),this.#r=e?.onListenerError??null,this.#i=e?.onListenerWarn??null}static validateCallback(e,t){if(typeof e!=`function`)throw TypeError(`Expected callback to be a function for event ${t}`)}setLimits(e){this.#n=e}on(e,t){let n=this.#c(e);if(n.has(t))throw Error(`Duplicate listener for "${e}"`);let{maxListeners:r,warnListeners:i}=this.#n;if(i!==0&&n.size===i&&this.#i?.(e,i),r!==0&&n.size>=r)throw Error(`Listener limit (${r}) reached for "${e}"`);return n.add(t),()=>{this.off(e,t)}}off(e,t){this.#e.get(e)?.delete(t)}emit(e,t,n,r,i){let a=this.#e.get(e);if(!a||a.size===0)return;let o=arguments.length-1;if(this.#n.maxEventDepth===0){this.#a(a,e,o,t,n,r,i);return}this.#s(a,e,o,t,n,r,i)}clearAll(){this.#e.clear(),this.#t=null}listenerCount(e){return this.#e.get(e)?.size??0}#a(e,t,n,r,i,a,o){if(e.size===1){let[s]=e;try{this.#o(s,n,r,i,a,o)}catch(e){this.#r?.(t,e)}return}let s=[...e];for(let e of s)try{this.#o(e,n,r,i,a,o)}catch(e){this.#r?.(t,e)}}#o(e,t,n,r,i,a){switch(t){case 0:e();break;case 1:e(n);break;case 2:e(n,r);break;case 3:e(n,r,i);break;default:e(n,r,i,a)}}#s(e,t,n,r,a,o,s){this.#t??=new Map;let c=this.#t,l=c.get(t)??0;if(l>=this.#n.maxEventDepth)throw new i(`Maximum recursion depth (${this.#n.maxEventDepth}) exceeded for event: ${t}`);try{c.set(t,l+1);let u=[...e];for(let e of u)try{this.#o(e,n,r,a,o,s)}catch(e){if(e instanceof i)throw e;this.#r?.(t,e)}}finally{c.set(t,c.get(t)-1)}}#c(e){let t=this.#e.get(e);if(t)return t;let n=new Set;return this.#e.set(e,n),n}};const o=Object.freeze({ROUTER_NOT_STARTED:`NOT_STARTED`,NO_START_PATH_OR_STATE:`NO_START_PATH_OR_STATE`,ROUTER_ALREADY_STARTED:`ALREADY_STARTED`,ROUTE_NOT_FOUND:`ROUTE_NOT_FOUND`,SAME_STATES:`SAME_STATES`,CANNOT_DEACTIVATE:`CANNOT_DEACTIVATE`,CANNOT_ACTIVATE:`CANNOT_ACTIVATE`,TRANSITION_ERR:`TRANSITION_ERR`,TRANSITION_CANCELLED:`CANCELLED`,ROUTER_DISPOSED:`DISPOSED`,PLUGIN_CONFLICT:`PLUGIN_CONFLICT`,CONTEXT_NAMESPACE_ALREADY_CLAIMED:`CONTEXT_NAMESPACE_ALREADY_CLAIMED`}),s=`@@router/UNKNOWN_ROUTE`,c={UNKNOWN_ROUTE:s},l={ROUTER_START:`onStart`,ROUTER_STOP:`onStop`,TRANSITION_START:`onTransitionStart`,TRANSITION_LEAVE_APPROVE:`onTransitionLeaveApprove`,TRANSITION_CANCEL:`onTransitionCancel`,TRANSITION_SUCCESS:`onTransitionSuccess`,TRANSITION_ERROR:`onTransitionError`},u={ROUTER_START:`$start`,ROUTER_STOP:`$stop`,TRANSITION_START:`$$start`,TRANSITION_LEAVE_APPROVE:`$$leaveApprove`,TRANSITION_CANCEL:`$$cancel`,TRANSITION_SUCCESS:`$$success`,TRANSITION_ERROR:`$$error`},d={maxDependencies:100,maxPlugins:50,maxListeners:1e4,warnListeners:1e3,maxEventDepth:5,maxLifecycleHandlers:200},f=Object.freeze({}),p=Object.freeze({deactivated:Object.freeze([]),activated:Object.freeze([]),intersection:``}),m=Object.freeze({phase:`activating`,reason:`success`,segments:p}),h={IDLE:`IDLE`,STARTING:`STARTING`,READY:`READY`,TRANSITION_STARTED:`TRANSITION_STARTED`,LEAVE_APPROVED:`LEAVE_APPROVED`,DISPOSED:`DISPOSED`},g={START:`START`,STARTED:`STARTED`,NAVIGATE:`NAVIGATE`,LEAVE_APPROVE:`LEAVE_APPROVE`,COMPLETE:`COMPLETE`,FAIL:`FAIL`,CANCEL:`CANCEL`,STOP:`STOP`,DISPOSE:`DISPOSE`},_={initial:h.IDLE,context:null,transitions:{[h.IDLE]:{[g.START]:h.STARTING,[g.DISPOSE]:h.DISPOSED},[h.STARTING]:{[g.STARTED]:h.READY,[g.FAIL]:h.IDLE,[g.DISPOSE]:h.DISPOSED},[h.READY]:{[g.NAVIGATE]:h.TRANSITION_STARTED,[g.FAIL]:h.READY,[g.STOP]:h.IDLE,[g.DISPOSE]:h.DISPOSED},[h.TRANSITION_STARTED]:{[g.NAVIGATE]:h.TRANSITION_STARTED,[g.LEAVE_APPROVE]:h.LEAVE_APPROVED,[g.CANCEL]:h.READY,[g.FAIL]:h.READY,[g.DISPOSE]:h.DISPOSED},[h.LEAVE_APPROVED]:{[g.NAVIGATE]:h.TRANSITION_STARTED,[g.COMPLETE]:h.READY,[g.CANCEL]:h.READY,[g.FAIL]:h.READY,[g.DISPOSE]:h.DISPOSED},[h.DISPOSED]:{}}};function v(){return new n.FSM(_)}function y(e){if(!e||typeof e!=`object`||e.constructor!==Object)throw TypeError(`dependencies must be a plain object`);for(let t in e)if(Object.getOwnPropertyDescriptor(e,t)?.get)throw TypeError(`dependencies cannot contain getters: "${t}"`)}function b(e,t){for(let n of e){let e=n;if(typeof e!=`object`||!e||Array.isArray(e))throw TypeError(`route must be a non-array object`);t?.routes.guardRouteCallbacks(n),t?.routes.guardNoAsyncCallbacks(n);let r=n.children;r&&b(r,t)}}function ee(e){if(typeof e!=`object`||!e)return!1;let t=e;return typeof t.name==`string`&&typeof t.path==`string`&&typeof t.params==`object`&&t.params!==null}function te(e){if(!e)return e;if(!ee(e))throw TypeError(`[deepFreezeState] Expected valid State object, got: ${typeof e}`);let t=structuredClone(e),n=new WeakSet;function r(e){if(!(typeof e!=`object`||!e)&&!n.has(e))if(n.add(e),Object.freeze(e),Array.isArray(e))for(let t of e)r(t);else for(let t in e)r(e[t])}return r(t),t}function ne(e){return e&&Object.freeze(e)}function re(e={}){return{...d,...e}}function ie(e){if(e===void 0)return e;let t={};for(let n in e){if(!Object.hasOwn(e,n))continue;let r=e[n];r!==void 0&&(t[n]=r)}return t}function ae(e={}){let t=Object.create(null);for(let n in e)e[n]!==void 0&&(t[n]=e[n]);return{dependencies:t,limits:d}}function oe(e){return`(${e.replaceAll(/(^<|>$)/g,``)})`}const se=/([:*])([^/?<]+)(<[^>]+>)?(\?)?/g,ce=/([:*][^/?<]+(?:<[^>]+>)?)\?(?=\/|$)/g,le=/\?(.+)$/;function ue(e){let t=[],n=[],r=[],i={},a=new Map,o=e.replaceAll(ce,`$1`),s=le.exec(o);if(s!==null){let t=s[1].split(`&`);for(let e of t){let t=e.trim();t.length>0&&(n.push(t),i[t]=`query`)}e=e.slice(0,s.index)}let c;for(;(c=se.exec(e))!==null;){let e=c[1],n=c[2],o=c[3];if(e===`*`)r.push(n),t.push(n),i[n]=`url`;else if(t.push(n),i[n]=`url`,o){let e=`^${oe(o)}$`;a.set(n,{pattern:new RegExp(e),constraint:o})}}return{urlParams:t,queryParams:n,spatParams:r,paramTypeMap:i,constraintPatterns:a,pathPattern:e}}const de=/[^\w!$'()*+,.:;|~-]/gu,fe=/[^\w!$'()*+,.:;|~-]/u,pe={default:e=>fe.test(e)?e.replaceAll(de,e=>encodeURIComponent(e)):e,uri:encodeURI,uriComponent:encodeURIComponent,none:e=>e},me={default:decodeURIComponent,uri:decodeURI,uriComponent:decodeURIComponent,none:e=>e};function x(){return{staticChildren:Object.create(null),hasChildren:!1,paramChild:void 0,splatChild:void 0,route:void 0,slashChildRoute:void 0}}function S(e){return e.length>1&&e.endsWith(`/`)?e.slice(0,-1):e}function he(e,t){return e===``?t:t===``?e:e+t}function ge(e){return e>=48&&e<=57||e>=65&&e<=70||e>=97&&e<=102}function _e(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(!ge(n)||!ge(r))return!1;t+=3}else t++;return!0}const C=/<[^>]*>/g;function ve(e,t,n,r,i){let a=t.fullName===``;a||r.push(t);let o=t.absolute,s=t.paramMeta.pathPattern,c=o&&s.startsWith(`~`)?s.slice(1):s,l=(o?c:s).replaceAll(C,``),u=o?l:he(n,l),d=i;a||(d=ye(e,t,u,o?``:n,r,i));for(let n of t.children.values())ve(e,n,u,r,d);a||r.pop()}function ye(e,t,n,r,i,a){let o=Ce(n,r),s=Object.freeze([...i]),c=be(s),l=S(n),u=Ae(e.rootQueryParams,i),d=je(i),{buildStaticParts:f,buildParamSlots:p}=ke(o?S(r):l,o?i.slice(0,-1):i,e.options.urlParamsEncoding),m={name:t.fullName,parent:a,depth:i.length-1,matchSegments:s,meta:c,declaredQueryParams:u,declaredQueryParamsSet:new Set(u),hasTrailingSlash:n.length>1&&n.endsWith(`/`),constraintPatterns:d,hasConstraints:d.size>0,buildStaticParts:f,buildParamSlots:p,buildParamNamesSet:new Set(p.map(e=>e.paramName))};return t.paramMeta.urlParams.length===0&&(m.cachedResult=Object.freeze({segments:m.matchSegments,params:Object.freeze({}),meta:m.meta})),e.routesByName.set(t.fullName,m),e.segmentsByName.set(t.fullName,s),e.metaByName.set(t.fullName,c),o?xe(e,m,r):Se(e,m,n,l,t),m}function be(e){let t={};for(let n of e)t[n.fullName]=n.paramTypeMap;return Object.freeze(t)}function xe(e,t,n){Te(e,t,n);let r=S(n),i=e.options.caseSensitive?r:r.toLowerCase();e.staticCache.has(i)&&e.staticCache.set(i,t)}function Se(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 Ce(e,t){return S(e)===S(t)}function we(e,t,n){let r=S(n);if(r===`/`){e.root.route=t;return}w(e,e.root,r,1,t)}function w(e,t,n,r,i){let a=n.length;for(;r<=a;){let o=n.indexOf(`/`,r),s=o===-1?a:o,c=n.slice(r,s);if(c.endsWith(`?`)){let r=c.slice(1).replaceAll(C,``).replace(/\?$/,``);t.paramChild??={node:x(),name:r},w(e,t.paramChild.node,n,s+1,i),s>=a?t.route??=i:w(e,t,n,s+1,i);return}t=Oe(e,t,c),r=s+1}t.route=i}function Te(e,t,n){let r=Ee(e,n);r.slashChildRoute=t}function Ee(e,t){return De(e,e.root,t)}function De(e,t,n){let r=S(n);if(r===`/`||r===``)return t;let i=t,a=1,o=r.length;for(;a<=o;){let t=r.indexOf(`/`,a),n=t===-1?o:t;if(n<=a)break;let s=r.slice(a,n);i=Oe(e,i,s),a=n+1}return i}function Oe(e,t,n){if(n.startsWith(`*`)){let e=n.slice(1);return t.splatChild??={node:x(),name:e},t.hasChildren=!0,t.splatChild.node}if(n.startsWith(`:`)){let e=n.slice(1).replaceAll(C,``).replace(/\?$/,``);return t.paramChild??={node:x(),name:e},t.hasChildren=!0,t.paramChild.node}let r=e.options.caseSensitive?n:n.toLowerCase();return r in t.staticChildren||(t.staticChildren[r]=x(),t.hasChildren=!0),t.staticChildren[r]}function ke(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:[]};let a=[],o=[],s=/[:*]([\w]+)(?:<[^>]*>)?(\?)?/gu,c=0,l;for(;(l=s.exec(e))!==null;){let t=l[1],r=l[2]===`?`;a.push(e.slice(c,l.index));let s=i.has(t)?e=>{let t=pe[n],r=e.split(`/`),i=t(r[0]);for(let e=1;e<r.length;e++)i+=`/${t(r[e])}`;return i}:pe[n];o.push({paramName:t,isOptional:r,encoder:s}),c=l.index+l[0].length}return a.push(e.slice(c)),{buildStaticParts:a,buildParamSlots:o}}function Ae(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}function je(e){let t=new Map;for(let n of e)for(let[e,r]of n.paramMeta.constraintPatterns)t.set(e,r);return t}var Me=class{get options(){return this.#e}#e;#t=x();#n=new Map;#r=new Map;#i=new Map;#a=new Map;#o={cleanPath:``,normalized:``,queryString:void 0};#s=``;#c=[];#l=``;#u;#d;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.#u=this.#e.caseSensitive,this.#d=this.#e.urlParamsEncoding===`none`?null:me[this.#e.urlParamsEncoding]}registerTree(e){this.#c=e.paramMeta.queryParams,ve({root:this.#t,options:this.#e,routesByName:this.#n,segmentsByName:this.#r,metaByName:this.#i,staticCache:this.#a,rootQueryParams:this.#c},e,``,[],null)}match(e){if(!this.#g(e))return;let{cleanPath:t,normalized:n,queryString:r}=this.#o,i=this.#u?n:n.toLowerCase(),a=this.#a.get(i);if(a)return this.#e.strictTrailingSlash&&!this.#y(t,a)?void 0:r===void 0&&a.cachedResult?a.cachedResult:this.#v(a,{},r);let o={},s=this.#b(n,o);if(s&&!(this.#e.strictTrailingSlash&&!this.#y(t,s))&&!(s.hasConstraints&&!this.#w(o,s))&&this.#C(o))return this.#v(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.#f(r,e,t);let i=this.#p(r,t),a=this.#m(i,n?.trailingSlash),o=this.#h(r,t,n?.queryParamsMode);return a+(o?`?${o}`:``)}getSegmentsByName(e){return this.#r.get(e)}getMetaByName(e){return this.#i.get(e)}hasRoute(e){return this.#n.has(e)}setRootPath(e){this.#s=e}#f(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}'`)}}}#p(e,t){let n=e.buildStaticParts,r=e.buildParamSlots;if(r.length===0)return this.#s+n[0];let i=this.#s+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.endsWith(`/`)&&(i=i.slice(0,-1)),i+=n[e+1];continue}let o;o=typeof r==`string`?r:typeof r==`object`?JSON.stringify(r):String(r);let s=a.encoder(o);i+=s+n[e+1]}return i}#m(e,t){return t===`always`&&!e.endsWith(`/`)?`${e}/`:t===`never`&&e!==`/`&&e.endsWith(`/`)?e.slice(0,-1):e}#h(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):``}#g(e){if(e===``&&(e=`/`),e.codePointAt(0)!==47)return!1;let t=this.#s.length;if(t>0){if(e.length<t||!e.startsWith(this.#s))return!1;e=e.length===t?`/`:e.slice(t)}let n=this.#_(e);if(n===-2)return!1;n===-3&&(e=this.#l);let r=n>=0?e.slice(0,n):e,i=n>=0?e.slice(n+1):void 0,a=S(r);return this.#o.cleanPath=r,this.#o.normalized=a,this.#o.queryString=i,!0}#_(e){let t=!1;for(let n=0;n<e.length;n++){let r=e.codePointAt(n);if(r===35)return this.#l=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}#v(e,t,n){if(n!==void 0){let r=this.#e.parseQueryString(n);if(this.#e.strictQueryParams){let n=e.declaredQueryParamsSet;for(let e in r){if(!n.has(e))return;t[e]=r[e]}}else for(let e in r)t[e]=r[e]}return{segments:e.matchSegments,params:t,meta:e.meta}}#y(e,t){return(e.length>1&&e.endsWith(`/`))===t.hasTrailingSlash}#b(e,t){return e.length===1?this.#t.slashChildRoute??this.#t.route:this.#x(this.#t,e,1,t)}#x(e,t,n,r){let i=e,a=t.length,o=this.#u;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)u=i.paramChild.node,r[i.paramChild.name]=c;else if(i.splatChild)return this.#S(i.splatChild,t,n,r);else return;i=u,n=s+1}return i.slashChildRoute??i.route}#S(e,t,n,r){let i=e.node;if(!i.hasChildren)return r[e.name]=t.slice(n),i.route;let a={},o=this.#x(i,t,n,a);return o?(Object.assign(r,a),o):(r[e.name]=t.slice(n),i.route)}#C(e){let t=this.#d;if(!t)return!0;for(let n in e){let r=e[n];if(r.includes(`%`)){if(!_e(r))return!1;e[n]=t(r)}}return!0}#w(e,t){for(let[n,r]of t.constraintPatterns)if(!r.pattern.test(e[n]))return!1;return!0}};const T=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)},Ne=(e,t)=>{if(e===void 0)return t.boolean.decodeUndefined();let n=t.boolean.decodeRaw(e);if(n!==null)return n;let r=T(e),i=t.number.decode(r);return i===null?t.boolean.decodeValue(r):i},E=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===`object`&&e===null?`null`:t}`);return encodeURIComponent(e)},Pe=(e,t,n)=>{if(t.length===0)return``;let r=`${e}${n}`,i=`${r}=${E(t[0])}`;for(let e=1;e<t.length;e++)i+=`&${r}=${E(t[e])}`;return i},Fe={none:{encodeArray:(e,t)=>Pe(e,t,``)},brackets:{encodeArray:(e,t)=>Pe(e,t,`[]`)},index:{encodeArray:(e,t)=>{if(t.length===0)return``;let n=`${e}[0]=${E(t[0])}`;for(let r=1;r<t.length;r++)n+=`&${e}[${r}]=${E(t[r])}`;return n}},comma:{encodeArray:(e,t)=>{if(t.length===0)return``;let n=`${e}=${E(t[0])}`;for(let e=1;e<t.length;e++)n+=`,${E(t[e])}`;return n},decodeValue:e=>e.includes(`,`)?e.split(`,`):null}},Ie={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:()=>null,decodeValue:e=>e}},Le={default:{encode:e=>e},hidden:{encode:()=>``}},Re={auto:{decode:e=>{let t=e.length;if(t===0||t>1&&e.codePointAt(0)===48&&e.codePointAt(1)!==46)return null;let n=!1;for(let r=0;r<t;r++){let i=e.codePointAt(r);if(!(i!==void 0&&i>=48&&i<=57)){if(i===46&&!n&&r!==0&&r!==t-1){n=!0;continue}return null}}let r=Number(e);return!Number.isSafeInteger(r)&&!n?null:r}},none:{decode:()=>null}},ze=(e,t,n,r)=>({boolean:Ie[t],null:Le[n],number:Re[r],array:Fe[e]}),Be={boolean:Ie.auto,null:Le.default,number:Re.auto,array:Fe.none},D={arrayFormat:`none`,booleanFormat:`auto`,nullFormat:`default`,numberFormat:`auto`},Ve={...D,strategies:Be},He=e=>{if(!e||e.arrayFormat===void 0&&e.booleanFormat===void 0&&e.nullFormat===void 0&&e.numberFormat===void 0)return Ve;let t=e.arrayFormat??D.arrayFormat,n=e.booleanFormat??D.booleanFormat,r=e.nullFormat??D.nullFormat,i=e.numberFormat??D.numberFormat;return{arrayFormat:t,booleanFormat:n,nullFormat:r,numberFormat:i,strategies:ze(t,n,r,i)}},O=e=>encodeURIComponent(e),Ue=(e,t,n)=>{let r=O(e);switch(typeof t){case`string`:case`number`:return`${r}=${O(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):`${r}=${O(t)}`;default:return`${r}=${O(t)}`}},We=e=>{let t=e.indexOf(`?`);return t===-1?e:e.slice(t+1)};function Ge(e,t,n,r){let i=e[t];i===void 0?e[t]=r?[n]:n:Array.isArray(i)?i.push(n):e[t]=[i,n]}function Ke(e,t,n,r,i){return i?Ne(r?e.slice(t+1,n):void 0,i):r?T(e.slice(t+1,n)):null}function qe(e,t,n,r,i){let a=e.indexOf(`=`,t),o=a!==-1&&a<n,s=o?a:n,c=s,l=!1;for(let n=t;n<s;n++)if(e.codePointAt(n)===91){c=n,l=!0;break}let u=T(e.slice(t,c));if(!l&&o&&i?.array.decodeValue){let t=e.slice(a+1,n),o=i.array.decodeValue(t);if(o){for(let e of o)Ge(r,u,Ne(e,i),!0);return}}Ge(r,u,Ke(e,a,n,o,i),l)}const Je=(e,t)=>{let n=We(e);if(n===``||n===`?`)return{};if(!t)return Ye(n);let r=He(t),i={},a=0,o=n.length;for(;a<o;){let e=n.indexOf(`&`,a);e===-1&&(e=o),qe(n,a,e,i,r.strategies),a=e+1}return i};function Ye(e){let t={};return Xe(e,t),t}function Xe(e,t){let n=0,r=e.length;for(;n<r;){let i=e.indexOf(`&`,n);i===-1&&(i=r),qe(e,n,i,t),n=i+1}}const Ze=(e,t)=>{let n=Object.keys(e);if(n.length===0)return``;let r=He(t),i=[];for(let t of n){let n=e[t];if(n===void 0)continue;let a=Ue(t,n,r);a&&i.push(a)}return i.join(`&`)};function k(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,nonAbsoluteChildren:[],fullName:``};if(e.children)for(let t of e.children){let e=k(t,a);a.children.push(e)}return a}function Qe(e,t,n){let r=k({name:e,path:t},null);for(let e of n){let t=k(e,r);r.children.push(t)}return r}const $e=Object.freeze(new Map),et=Object.freeze([]);function tt(e){return e.parent?.name?`${e.parent.fullName}.${e.name}`:e.name}function nt(e,t){return e.endsWith(`/`)&&t.startsWith(`/`)?e+t.slice(1):e+t}function rt(e){if(!e.path)return null;let{urlParams:t,queryParams:n,spatParams:r}=e.paramMeta;if(t.length>0||n.length>0||r.length>0)return null;if(e.absolute)return e.path;let i=e.parent;return i?.path?i.staticPath===null?null:nt(i.staticPath,e.path):e.path}function it(e){let t=new Map;for(let n of e)t.set(n.name,n);return t}function at(e,t,n){let r=[],i=[];for(let a of e){let e=ot(a,t,n);r.push(e),e.absolute||i.push(e)}return{childrenMap:it(r),nonAbsoluteChildren:i}}function ot(e,t,n){let r=ue(e.path),i=r.paramTypeMap,a={name:e.name,path:e.path,absolute:e.absolute,parent:t,children:void 0,paramMeta:r,nonAbsoluteChildren:void 0,fullName:``,staticPath:null,paramTypeMap:i};if(a.fullName=tt(a),a.staticPath=rt(a),e.children.length===0)a.children=$e,a.nonAbsoluteChildren=et;else{let{childrenMap:t,nonAbsoluteChildren:r}=at(e.children,a,n);a.children=t,a.nonAbsoluteChildren=r}return n&&(e.children.length>0&&(Object.freeze(a.nonAbsoluteChildren),Object.freeze(a.children)),Object.freeze(i),Object.freeze(a)),a}function st(e,t=!0){return ot(e,null,t)}function ct(e,t){let n=[];return{add(e){return n.push(e),this},addMany(e){return n.push(...e),this},build(r){return st(Qe(e,t,n),!r?.skipFreeze)}}}function lt(e,t,n,r){return ct(e,t).addMany(n).build(r)}function A(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(),A)),n}function ut(e){return Array.from(e.children.values(),A)}function dt(e){let t=e?.queryParams;return new Me({...e?.caseSensitive===void 0?void 0:{caseSensitive:e.caseSensitive},...e?.strictTrailingSlash===void 0?void 0:{strictTrailingSlash:e.strictTrailingSlash},...e?.strictQueryParams===void 0?void 0:{strictQueryParams:e.strictQueryParams},...e?.urlParamsEncoding===void 0?void 0:{urlParamsEncoding:e.urlParamsEncoding},parseQueryString:e=>Je(e,t),buildQueryString:e=>Ze(e,t)})}const ft={defaultRoute:``,defaultParams:{},trailingSlash:`preserve`,queryParamsMode:`loose`,queryParams:D,urlParamsEncoding:`default`,allowNotFound:!0,rewritePathOnMatch:!0};function pt(e){Object.freeze(e);for(let t of Object.keys(e)){let n=e[t];n&&typeof n==`object`&&n.constructor===Object&&pt(n)}return e}function mt(e,t){return typeof e==`function`?e(t):e}function ht(e){if(!e||typeof e!=`object`||Array.isArray(e))throw TypeError(`[router.constructor] options must be a plain object`)}var gt=class{#e;constructor(e={}){this.#e=pt({...ft,...e})}static validateOptionsIsObject(e){ht(e)}get(){return this.#e}};function j(e,t){if(e===t)return!0;if(Array.isArray(e)&&Array.isArray(t)){if(e.length!==t.length)return!1;for(let n=0;n<e.length;n++)if(!j(e[n],t[n]))return!1;return!0}return!1}const _t=new WeakMap;function vt(e){return _t.get(e)}function yt(e,t){_t.set(e,t)}var bt=class{#e=void 0;#t=void 0;#n;#r=new Map;get(){return this.#e}set(e){this.#t=this.#e,this.#e=e?ne(e):void 0}getPrevious(){return this.#t}reset(){this.#e=void 0,this.#t=void 0,this.#r.clear()}setDependencies(e){this.#n=e}makeState(e,t,n,r,i){let a=this.#n.getDefaultParams(),o=Object.hasOwn(a,e),s;s=o?Object.freeze({...a[e],...t}):!t||t===f?f:Object.freeze({...t});let c={name:e,params:s,path:n??this.#n.buildPath(e,t),context:{},...!i&&{transition:m}};return r&&yt(c,r),i?c:ne(c)}areStatesEqual(e,t,n=!0){if(!e||!t)return!!e==!!t;if(e.name!==t.name)return!1;if(n){let n=this.#i(e.name);for(let r of n)if(!j(e.params[r],t.params[r]))return!1;return!0}let r=Object.keys(e.params),i=Object.keys(t.params);if(r.length!==i.length)return!1;for(let n of r)if(!(n in t.params)||!j(e.params[n],t.params[n]))return!1;return!0}#i(e){let t=this.#r.get(e);if(t!==void 0)return t;let n=this.#n.getUrlParams(e);return this.#r.set(e,n),n}};const xt={[l.ROUTER_START]:u.ROUTER_START,[l.ROUTER_STOP]:u.ROUTER_STOP,[l.TRANSITION_SUCCESS]:u.TRANSITION_SUCCESS,[l.TRANSITION_START]:u.TRANSITION_START,[l.TRANSITION_LEAVE_APPROVE]:u.TRANSITION_LEAVE_APPROVE,[l.TRANSITION_ERROR]:u.TRANSITION_ERROR,[l.TRANSITION_CANCEL]:u.TRANSITION_CANCEL},St=Object.keys(xt),M=`router.usePlugin`;function Ct(e){if(!(e&&typeof e==`object`)||Array.isArray(e))throw TypeError(`[router.usePlugin] Plugin factory must return an object, got ${typeof e}`);if(typeof e.then==`function`)throw TypeError(`[router.usePlugin] Async plugin factories are not supported. Factory returned a Promise instead of a plugin object.`)}var wt=class e{#e=new Set;#t=new Set;#n;#r=d;#i=null;static validatePlugin(e){Ct(e)}static validateNoDuplicatePlugins(e,t){for(let n of e)if(t(n))throw Error(`[router.usePlugin] Plugin factory already registered. To re-register, first unsubscribe the existing plugin.`)}setDependencies(e){this.#n=e}setLimits(e){
2
+ // eslint-disable-next-line sonarjs/void-use -- @preserve: limits passed to validator via RouterInternals; void suppresses TS6133 until plugin implements validateCountThresholds
3
+ this.#r=e,this.#r}setValidatorGetter(e){this.#i=e}count(){return this.#e.size}use(...e){if(this.#i?.()?.plugins.validateCountThresholds(this.#e.size+e.length),e.length===1){let n=e[0],r=this.#o(n);this.#e.add(n);let i=!1,a=()=>{if(!i){i=!0,this.#e.delete(n),this.#t.delete(a);try{r()}catch(e){t.logger.error(M,`Error during cleanup:`,e)}}};return this.#t.add(a),a}let n=this.#a(e),r=[];try{for(let e of n){let t=this.#o(e);r.push({factory:e,cleanup:t})}}catch(e){for(let{cleanup:e}of r)try{e()}catch(e){t.logger.error(M,`Cleanup error:`,e)}throw e}for(let{factory:e}of r)this.#e.add(e);let i=!1,a=()=>{if(!i){i=!0,this.#t.delete(a);for(let{factory:e}of r)this.#e.delete(e);for(let{cleanup:e}of r)try{e()}catch(e){t.logger.error(M,`Error during cleanup:`,e)}}};return this.#t.add(a),a}getAll(){return[...this.#e]}has(e){return this.#e.has(e)}disposeAll(){for(let e of this.#t)e();this.#e.clear(),this.#t.clear()}#a(e){let t=new Set;for(let n of e)t.has(n)?this.#i?.()?.plugins.warnBatchDuplicates(e):t.add(n);return t}#o(t){let n=this.#n.compileFactory(t);e.validatePlugin(n),this.#i?.()?.plugins.validatePluginKeys(n),Object.freeze(n);let r=[];for(let e of St)e in n&&(typeof n[e]==`function`?(r.push(this.#n.addEventListener(xt[e],n[e])),e===`onStart`&&this.#n.canNavigate()&&this.#i?.()?.plugins.warnPluginAfterStart(e)):this.#i?.()?.plugins.warnPluginMethodType(e));return()=>{for(let e of r)e();typeof n.teardown==`function`&&n.teardown()}}};function Tt(e){let t=()=>e;return()=>t}var Et=class{#e=new Map;#t=new Map;#n=new Map;#r=new Map;#i=[this.#n,this.#r];#a=new Set;#o=new Set;#s=new Set;#c;#l=d;#u=null;setDependencies(e){this.#c=e}setLimits(e){
4
+ // eslint-disable-next-line sonarjs/void-use -- @preserve: Wave 3 validator reads limits via RouterInternals; void suppresses TS6133 until then
5
+ this.#l=e,this.#l}setValidatorGetter(e){this.#u=e}getHandlerCount(e){return e===`activate`?this.#t.size:this.#e.size}addCanActivate(e,t,n=!1){n?this.#o.add(e):this.#o.delete(e);let r=this.#t.has(e);this.#d(`activate`,e,t,this.#t,this.#r,`canActivate`,r)}addCanDeactivate(e,t,n=!1){n?this.#s.add(e):this.#s.delete(e);let r=this.#e.has(e);this.#d(`deactivate`,e,t,this.#e,this.#n,`canDeactivate`,r)}clearCanActivate(e){this.#t.delete(e),this.#r.delete(e),this.#o.delete(e)}clearCanDeactivate(e){this.#e.delete(e),this.#n.delete(e),this.#s.delete(e)}clearAll(){this.#t.clear(),this.#r.clear(),this.#e.clear(),this.#n.clear(),this.#o.clear(),this.#s.clear()}clearDefinitionGuards(){for(let e of this.#o)this.#t.delete(e),this.#r.delete(e);for(let e of this.#s)this.#e.delete(e),this.#n.delete(e);this.#o.clear(),this.#s.clear()}getFactories(){let e={},t={};for(let[t,n]of this.#e)e[t]=n;for(let[e,n]of this.#t)t[e]=n;return[e,t]}getFunctions(){return this.#i}canNavigateTo(e,t,n,r){for(let t of e)if(!this.#f(this.#n,t,n,r,`canNavigateTo`))return!1;for(let e of t)if(!this.#f(this.#r,e,n,r,`canNavigateTo`))return!1;return!0}#d(e,t,n,r,i,a,o){o?this.#u?.()?.lifecycle.warnOverwrite(t,e,a):this.#u?.()?.lifecycle.validateCountThresholds(r.size+1,a);let s=typeof n==`boolean`?Tt(n):n;r.set(t,s),this.#a.add(t);try{let e=this.#c.compileFactory(s);if(typeof e!=`function`)throw TypeError(`[router.${a}] Factory must return a function, got ${typeof e}`);i.set(t,e)}catch(e){throw r.delete(t),e}finally{this.#a.delete(t)}}#f(e,t,n,r,i){let a=e.get(t);if(!a)return!0;try{let e=a(n,r);return typeof e==`boolean`?e:(this.#u?.()?.lifecycle.warnAsyncGuardSync(t,i),!1)}catch{return!1}}};function N(){return{decoders:Object.create(null),encoders:Object.create(null),defaultParams:Object.create(null),forwardMap:Object.create(null),forwardFnMap:Object.create(null)}}function Dt(e,t){for(let n in e)if(e[n]!==t[n])return!1;return!0}function Ot(e,t,n){for(let r in e)if(!(r in n)&&e[r]!==t[r])return!1;return!0}function kt(e,t){if(!t||!At(e,t))return e;let n={};for(let r in e)t[r]!==`query`&&(n[r]=e[r]);return n}function At(e,t){for(let n in e)if(t[n]===`query`)return!0;return!1}function P(e){let t={name:e.name,path:e.path};return e.children&&(t.children=e.children.map(e=>P(e))),t}function jt(e,t,n=``){for(let r=0;r<e.length;r++){let i=e[r],a=n?`${n}.${i.name}`:i.name;if(a===t)return e.splice(r,1),!0;if(i.children&&t.startsWith(`${a}.`)&&jt(i.children,t,a))return!0}return!1}function Mt(e,t){for(let n of Object.keys(e))t(n)&&delete e[n]}function Nt(e,t){let n=t.search(/[?#]/),r=n===-1?t:t.slice(0,n);if(r===`/`||r.endsWith(`/`))return t;let i=e.search(/[?#]/),a=i===-1?e:e.slice(0,i);return a.length>1&&a.endsWith(`/`)?`${r}/${n===-1?``:t.slice(n)}`:t}function Pt(e,t,n=100){let r=new Set,i=[e],a=e;for(;t[a];){let e=t[a];if(r.has(e)){let t=i.indexOf(e),n=[...i.slice(t),e];throw Error(`Circular forwardTo: ${n.join(` → `)}`)}if(r.add(a),i.push(e),a=e,i.length>n)throw Error(`forwardTo chain exceeds maximum depth (${n}): ${i.join(` → `)}`)}return a}function Ft(e,t,n){let r=lt(``,t,e),i=dt(n);return i.registerTree(r),{tree:r,matcher:i}}function F(e){let t=Ft(e.definitions,e.rootPath,e.matcherOptions);e.tree=t.tree,e.matcher=t.matcher}function It(e){F(e),e.resolvedForwardMap=I(e.config)}function Lt(e){Rt(e),F(e)}function Rt(e){e.definitions.length=0,Object.assign(e.config,N()),e.resolvedForwardMap=Object.create(null),e.routeCustomFields=Object.create(null)}function I(e){let t=Object.create(null);for(let n of Object.keys(e.forwardMap))t[n]=Pt(n,e.forwardMap);return t}function zt(e,n,r){if(e.canActivate){let r=typeof e.forwardTo==`string`?e.forwardTo:`[dynamic]`;t.logger.warn(`real-router`,`Route "${n}" has both forwardTo and canActivate. canActivate will be ignored because forwardTo creates a redirect (industry standard). Move canActivate to the target route "${r}".`)}if(e.canDeactivate){let r=typeof e.forwardTo==`string`?e.forwardTo:`[dynamic]`;t.logger.warn(`real-router`,`Route "${n}" has both forwardTo and canDeactivate. canDeactivate will be ignored because forwardTo creates a redirect (industry standard). Move canDeactivate to the target route "${r}".`)}if(typeof e.forwardTo==`function`){let t=e.forwardTo.constructor.name===`AsyncFunction`,r=e.forwardTo.toString().includes(`__awaiter`);if(t||r)throw TypeError(`forwardTo callback cannot be async for route "${n}". Async functions break matchPath/buildPath.`)}typeof e.forwardTo==`string`?r.forwardMap[n]=e.forwardTo:r.forwardFnMap[n]=e.forwardTo}function Bt(e,t,n,r,i,a,o){let s=new Set([`name`,`path`,`children`,`canActivate`,`canDeactivate`,`forwardTo`,`encodeParams`,`decodeParams`,`defaultParams`]),c=Object.fromEntries(Object.entries(e).filter(([e])=>!s.has(e)));Object.keys(c).length>0&&(r[t]=c),e.canActivate&&(o?o.addActivateGuard(t,e.canActivate):i.set(t,e.canActivate)),e.canDeactivate&&(o?o.addDeactivateGuard(t,e.canDeactivate):a.set(t,e.canDeactivate)),e.forwardTo&&zt(e,t,n),e.decodeParams&&(n.decoders[t]=t=>e.decodeParams?.(t)??t),e.encodeParams&&(n.encoders[t]=t=>e.encodeParams?.(t)??t),e.defaultParams&&(n.defaultParams[t]=e.defaultParams)}function L(e,t,n,r,i,a,o=``){for(let s of e){let e=o?`${o}.${s.name}`:s.name;Bt(s,e,t,n,r,i,a),s.children&&L(s.children,t,n,r,i,a,e)}}function Vt(e,t){let n=[],r=N(),i=Object.create(null),a=new Map,o=new Map;for(let t of e)n.push(P(t));let{tree:s,matcher:c}=Ft(n,``,t);return L(e,r,i,a,o,void 0,``),{definitions:n,config:r,tree:s,matcher:c,resolvedForwardMap:I(r),routeCustomFields:i,rootPath:``,matcherOptions:t,depsStore:void 0,lifecycleNamespace:void 0,pendingCanActivate:a,pendingCanDeactivate:o,treeOperations:{commitTreeChanges:It,resetStore:Lt,nodeToDefinition:A}}}const R=[];Object.freeze(R);function Ht(e){let t=e.length,n=[];for(let r=t-1;r>=0;r--)n.push(e[r]);return n}function Ut(e){let t=e.split(`.`),n=t.length,r=[t[0]],i=t[0].length;for(let a=1;a<n-1;a++)i+=1+t[a].length,r.push(e.slice(0,i));return r.push(e),r}function Wt(e){let t=typeof e;return t===`string`||t===`number`||t===`boolean`}function Gt(e,t,n,r){let i=t[e];if(!i||typeof i!=`object`)return!0;for(let e of Object.keys(i)){let t=n.params[e],i=r.params[e];if(Wt(t)&&Wt(i)&&String(t)!==String(i))return!1}return!0}function Kt(e,t,n,r,i,a){for(let o=0;o<a;o++){let a=r[o];if(a!==i[o]||!Gt(a,e,t,n))return o}return a}const qt=new Map;function z(e){let t=qt.get(e);if(t)return t;let n=Jt(e);return Object.freeze(n),qt.set(e,n),n}function Jt(e){if(!e)return[``];let t=e.indexOf(`.`);if(t===-1)return[e];let n=e.indexOf(`.`,t+1);if(n===-1)return[e.slice(0,t),e];let r=e.indexOf(`.`,n+1);return r===-1?[e.slice(0,t),e.slice(0,n),e]:e.indexOf(`.`,r+1)===-1?[e.slice(0,t),e.slice(0,n),e.slice(0,r),e]:Ut(e)}let B,V,H=null,Yt,Xt,U=null;function Zt(e,t){if(!t)return{intersection:``,toActivate:z(e.name),toDeactivate:R};let n=vt(e),r=vt(t);if(!n&&!r)return{intersection:``,toActivate:z(e.name),toDeactivate:Ht(z(t.name))};let i=z(e.name),a=z(t.name),o=Math.min(a.length,i.length),s=Kt(n??r,e,t,i,a,o),c;if(s>=a.length)c=R;else if(s===0&&a.length===1)c=a;else{c=[];for(let e=a.length-1;e>=s;e--)c.push(a[e])}let l=s===0?i:i.slice(s);return{intersection:s>0?a[s-1]:``,toDeactivate:c,toActivate:l}}function W(e,t){if(H!==null&&e===B&&t===V)return H;if(U!==null&&e===Yt&&t===Xt)return U;let n=Zt(e,t);return Yt=B,Xt=V,U=H,B=e,V=t,H=n,n}function Qt(e){let t=[];for(let n of e)for(let e of n.paramMeta.urlParams)t.push(e);return t}function $t(e){return e.at(-1)?.fullName??``}function en(e,t){return{name:t??$t(e.segments),params:e.params,meta:e.meta}}var tn=class{#e;#t;get#n(){return this.#e.depsStore}constructor(e=[],t){this.#e=Vt(e,t)}static shouldUpdateNode(e){return(t,n)=>{if(!(t&&typeof t==`object`&&`name`in t))throw TypeError(`[router.shouldUpdateNode] toState must be valid State object`);if(t.transition.reload||e===``)return!0;let{intersection:r,toActivate:i,toDeactivate:a}=W(t,n);return e===r||i.includes(e)?!0:a.includes(e)}}setDependencies(e){this.#e.depsStore=e;for(let[t,n]of this.#e.pendingCanActivate)e.addActivateGuard(t,n);this.#e.pendingCanActivate.clear();for(let[t,n]of this.#e.pendingCanDeactivate)e.addDeactivateGuard(t,n);this.#e.pendingCanDeactivate.clear()}setLifecycleNamespace(e){this.#e.lifecycleNamespace=e}setRootPath(e){this.#e.rootPath=e,F(this.#e)}hasRoute(e){return this.#e.matcher.hasRoute(e)}clearRoutes(){Lt(this.#e)}buildPath(e,t,n){if(e===c.UNKNOWN_ROUTE)return typeof t?.path==`string`?t.path:``;let r=Object.hasOwn(this.#e.config.defaultParams,e)?{...this.#e.config.defaultParams[e],...t}:t??{},i=typeof this.#e.config.encoders[e]==`function`?this.#e.config.encoders[e]({...r}):r;return this.#e.matcher.buildPath(e,i,this.#i(n))}matchPath(e,t){let n=t,r=this.#e.matcher.match(e);if(!r)return;let{name:i,params:a,meta:o}=en(r),s=typeof this.#e.config.decoders[i]==`function`?this.#e.config.decoders[i](a):a,{name:c,params:l}=this.#n.forwardState(i,s),u=e;if(n.rewritePathOnMatch){let t=typeof this.#e.config.encoders[c]==`function`?this.#e.config.encoders[c]({...l}):l,r=n.trailingSlash;u=this.#e.matcher.buildPath(c,t,{trailingSlash:r===`never`||r===`always`?r:void 0,queryParamsMode:n.queryParamsMode}),r===`preserve`&&(u=Nt(e,u))}return this.#n.makeState(c,l,u,o)}forwardState(e,t){if(Object.hasOwn(this.#e.config.forwardFnMap,e)){let n=this.#r(e,t),r=this.#e.config.forwardFnMap[e],i=this.#a(e,r,t);return{name:i,params:this.#r(i,n)}}let n=this.#e.resolvedForwardMap[e]??e;if(n!==e&&Object.hasOwn(this.#e.config.forwardFnMap,n)){let r=this.#r(e,t),i=this.#e.config.forwardFnMap[n],a=this.#a(n,i,t);return{name:a,params:this.#r(a,r)}}if(n!==e){let r=this.#r(e,t);return{name:n,params:this.#r(n,r)}}return{name:e,params:this.#r(e,t)}}buildStateResolved(e,t){let n=this.#e.matcher.getSegmentsByName(e);if(n)return en({segments:n,params:t,meta:this.#e.matcher.getMetaByName(e)},e)}isActiveRoute(e,t={},n=!1,r=!0){let i=this.#n.getState();if(!i)return!1;let a=i.name;if(a!==e&&!a.startsWith(`${e}.`)&&!e.startsWith(`${a}.`))return!1;let o=this.#e.config.defaultParams[e];if(n||a===e){let n={name:e,params:o?{...o,...t}:t,path:``,transition:m,context:{}};return this.#n.areStatesEqual(n,i,r)}if(!a.startsWith(`${e}.`))return!1;let s=i.params;return Dt(t,s)?o?Ot(r?kt(o,this.#e.matcher.getMetaByName(e)?.[e]):o,s,t):!0:!1}getMetaForState(e){return this.#e.matcher.hasRoute(e)?this.#e.matcher.getMetaByName(e):void 0}getUrlParams(e){let t=this.#e.matcher.getSegmentsByName(e);return t?Qt(t):[]}getStore(){return this.#e}#r(e,t){return Object.hasOwn(this.#e.config.defaultParams,e)?{...this.#e.config.defaultParams[e],...t}:t}#i(e){if(this.#t)return this.#t;let t=e?.trailingSlash;return this.#t=Object.freeze({trailingSlash:t===`never`||t===`always`?t:void 0,queryParamsMode:e?.queryParamsMode}),this.#t}#a(e,t,n){let r=new Set([e]),i=t(this.#n.getDependency,n),a=0;if(typeof i!=`string`)throw TypeError(`forwardTo callback must return a string, got ${typeof i}`);for(;a<100;){if(this.#e.matcher.getSegmentsByName(i)===void 0)throw Error(`Route "${i}" does not exist`);if(r.has(i)){let e=[...r,i].join(` → `);throw Error(`Circular forwardTo detected: ${e}`)}if(r.add(i),Object.hasOwn(this.#e.config.forwardFnMap,i)){let e=this.#e.config.forwardFnMap[i];i=e(this.#n.getDependency,n),a++;continue}let e=this.#e.config.forwardMap[i];if(e!==void 0){i=e,a++;continue}return i}throw Error(`forwardTo exceeds maximum depth of 100`)}};const nn=new Set(Object.values(o)),rn=new Set([`code`,`segment`,`path`,`redirect`]),an=new Set([`setCode`,`setErrorInstance`,`setAdditionalFields`,`hasField`,`getField`,`toJSON`]);var G=class extends Error{segment;path;redirect;code;constructor(e,{message:t,segment:n,path:r,redirect:i,...a}={}){super(t??e),this.code=e,this.segment=n,this.path=r,this.redirect=i?te(i):void 0;for(let[e,t]of Object.entries(a)){if(rn.has(e))throw TypeError(`[RouterError] Cannot set reserved property "${e}"`);an.has(e)||(this[e]=t)}}setCode(e){this.code=e,nn.has(this.message)&&(this.message=e)}setErrorInstance(e){if(!e)throw TypeError(`[RouterError.setErrorInstance] err parameter is required and must be an Error instance`);this.message=e.message,this.cause=e.cause,this.stack=e.stack??``}setAdditionalFields(e){for(let[t,n]of Object.entries(e)){if(rn.has(t))throw TypeError(`[RouterError.setAdditionalFields] Cannot set reserved property "${t}"`);an.has(t)||(this[t]=n)}}hasField(e){return e in this}getField(e){return this[e]}toJSON(){let e={code:this.code,message:this.message};this.segment!==void 0&&(e.segment=this.segment),this.path!==void 0&&(e.path=this.path),this.redirect!==void 0&&(e.redirect=this.redirect);let t=new Set([`code`,`message`,`segment`,`path`,`redirect`,`stack`]);for(let n in this)Object.hasOwn(this,n)&&!t.has(n)&&(e[n]=this[n]);return e}};const on=new G(o.ROUTER_NOT_STARTED),sn=new G(o.ROUTE_NOT_FOUND),cn=new G(o.SAME_STATES),K=Promise.reject(on),ln=Promise.reject(sn),un=Promise.reject(cn);K.catch(()=>{}),ln.catch(()=>{}),un.catch(()=>{});function dn(e,t,n,r,i){Object.freeze(n),Object.freeze(r);let a={phase:`activating`,reason:`success`,segments:Object.freeze({deactivated:n,activated:r,intersection:i})};return e?.name!==void 0&&(a.from=e.name),t.reload!==void 0&&(a.reload=t.reload),t.replace!==void 0&&(a.replace=t.replace),t.redirected!==void 0&&(a.redirected=t.redirected),Object.freeze(a)}function fn({signal:e,...t}){return t}function pn(e,t){let{toState:n,fromState:r,opts:i,toDeactivate:a,toActivate:s,intersection:l}=t;if(n.name!==c.UNKNOWN_ROUTE&&!e.hasRoute(n.name)){let t=new G(o.ROUTE_NOT_FOUND,{routeName:n.name});throw e.sendTransitionFail(n,r,t),t}if(r)for(let n of a)!s.includes(n)&&t.canDeactivateFunctions.has(n)&&e.clearCanDeactivate(n);n.transition=dn(r,i,a,s,l);let u=Object.freeze(n);e.setState(u);let d=i.signal===void 0?i:fn(i);return e.sendTransitionDone(u,r,d),u}function mn(e,t,n,r){let i=t;i.code===o.TRANSITION_CANCELLED||i.code===o.ROUTE_NOT_FOUND||e.sendTransitionFail(n,r,i)}function q(e,t,n){if(e instanceof DOMException&&e.name===`AbortError`)throw new G(o.TRANSITION_CANCELLED);hn(e,t,n)}function hn(e,t,n){throw e instanceof G?(e.setCode(t),e):new G(t,_n(e,n))}const gn=new Set([`code`,`segment`,`path`,`redirect`]);function _n(e,t){let n={segment:t};if(e instanceof Error)return{...n,message:e.message,stack:e.stack,...`cause`in e&&e.cause!==void 0&&{cause:e.cause}};if(e&&typeof e==`object`){let t={};for(let[n,r]of Object.entries(e))gn.has(n)||(t[n]=r);return{...n,...t}}return n}async function J(e,t,n){let r;try{r=await e}catch(e){q(e,t,n);return}if(!r)throw new G(t,{segment:n})}async function vn(e,t,n,r,i,a,s,c,l,u){await J(l,n,u);for(let l=c;l<t.length;l++){if(!s())throw new G(o.TRANSITION_CANCELLED);let c=t[l],u=e.get(c);if(!u)continue;let d=!1;try{d=u(r,i,a)}catch(e){q(e,n,c)}if(d instanceof Promise){await J(d,n,c);continue}if(!d)throw new G(n,{segment:c})}}async function yn(e,t,n,r,i,a,s,c,l){if(await e,!c())throw new G(o.TRANSITION_CANCELLED);let u=l();if(u!==void 0&&(await u,!c()))throw new G(o.TRANSITION_CANCELLED);if(r){let e=Y(t,n,o.CANNOT_ACTIVATE,i,a,s,c);if(e!==void 0&&await e,!c())throw new G(o.TRANSITION_CANCELLED)}}function bn(e,t,n,r,i,a,s,c,l,u,d){if(i){let i=Y(e,n,o.CANNOT_DEACTIVATE,s,c,l,u);if(i!==void 0)return yn(i,t,r,a,s,c,l,u,d)}if(!u())throw new G(o.TRANSITION_CANCELLED);let f=d();if(f!==void 0)return xn(f,a?t:void 0,r,s,c,l,u);if(a)return Y(t,r,o.CANNOT_ACTIVATE,s,c,l,u)}async function xn(e,t,n,r,i,a,s){if(await e,!s())throw new G(o.TRANSITION_CANCELLED);if(t!==void 0){let e=Y(t,n,o.CANNOT_ACTIVATE,r,i,a,s);if(e!==void 0&&await e,!s())throw new G(o.TRANSITION_CANCELLED)}}function Y(e,t,n,r,i,a,s){for(let[c,l]of t.entries()){if(!s())throw new G(o.TRANSITION_CANCELLED);let u=e.get(l);if(!u)continue;let d=!1;try{d=u(r,i,a)}catch(e){q(e,n,l)}if(d instanceof Promise)return vn(e,t,n,r,i,a,s,c+1,d,l);if(!d)throw new G(n,{segment:l})}}const Sn=[c.UNKNOWN_ROUTE];Object.freeze(Sn);const Cn={replace:!0};Object.freeze(Cn);function wn(e,t){return t?.name===c.UNKNOWN_ROUTE&&!e.replace?{...e,replace:!0}:e}function Tn(e,t,n){return!!e&&!t.reload&&!t.force&&e.path===n.path}var En=class{lastSyncResolved=!1;lastSyncRejected=!1;#e;#t=null;#n=0;setDependencies(e){this.#e=e}navigate(e,t,n){this.lastSyncResolved=!1;let r=this.#e;if(!r.canNavigate())return this.lastSyncRejected=!0,K;let i;try{i=r.buildNavigateState(e,t)}catch(e){return Promise.reject(e)}return i?this.#r(i,n):(r.emitTransitionError(void 0,r.getState(),sn),this.lastSyncRejected=!0,ln)}navigateToState(e,t){this.lastSyncResolved=!1;let n=this.#e;if(!n.canNavigate())return this.lastSyncRejected=!0,K;if(e.name!==c.UNKNOWN_ROUTE&&!n.hasRoute(e.name)){let t=new G(o.ROUTE_NOT_FOUND,{routeName:e.name});return n.emitTransitionError(void 0,n.getState(),t),this.lastSyncRejected=!0,Promise.reject(t)}let r={name:e.name,params:e.params,path:e.path,context:{...e.context}};return this.#r(r,t)}navigateToDefault(e){let t=this.#e;if(!t.getOptions().defaultRoute)return Promise.reject(new G(o.ROUTE_NOT_FOUND,{routeName:`defaultRoute not configured`}));let n,r;try{({route:n,params:r}=t.resolveDefault())}catch(e){return Promise.reject(e)}return n?this.navigate(n,r,e):Promise.reject(new G(o.ROUTE_NOT_FOUND,{routeName:`defaultRoute resolved to empty`}))}navigateToNotFound(e){this.#c();let t=this.#e.getState(),n=t?z(t.name).toReversed():[];Object.freeze(n);let r={deactivated:n,activated:Sn,intersection:``};Object.freeze(r);let i={phase:`activating`,...t&&{from:t.name},reason:`success`,replace:!0,segments:r};Object.freeze(i);let a={name:c.UNKNOWN_ROUTE,params:f,path:e,transition:i,context:{}};return Object.freeze(a),this.#e.setState(a),this.#e.emitTransitionSuccess(a,t,Cn),a}abortCurrentNavigation(){this.#t?.abort(new G(o.TRANSITION_CANCELLED)),this.#t=null}#r(e,t){let n=this.#e,r,i=!1,a=null;try{if(r=n.getState(),t=wn(t,r),Tn(r,t,e))return n.emitTransitionError(e,r,cn),this.lastSyncRejected=!0,un;this.#c(t.signal);let s=++this.#n;if(n.startTransition(e,r),i=!0,this.#n!==s)throw new G(o.TRANSITION_CANCELLED);let[l,u]=n.getLifecycleFunctions(),d=e.name===c.UNKNOWN_ROUTE,f=W(e,r),{toDeactivate:p,toActivate:m,intersection:h}=f,g=r&&!t.forceDeactivate&&p.length>0,_=!d&&m.length>0,v=l.size>0||u.size>0,y=e;if(!v){let e=this.#o(y,r,s,t,f,l);if(e!==void 0)return e}if(v){a=new AbortController,this.#t=a;let i=()=>this.#n===s&&n.isActive(),c=a.signal,d=bn(l,u,p,m,!!g,_,e,r,c,i,()=>{if(n.sendLeaveApprove(y,r),n.hasLeaveListeners())return n.awaitLeaveListeners(y,r,c)});if(d!==void 0)return this.#i(d,{toState:e,fromState:r,opts:t,toDeactivate:p,toActivate:m,intersection:h,canDeactivateFunctions:l},a,s);if(!i())throw new G(o.TRANSITION_CANCELLED);this.#s(a)}return this.lastSyncResolved=!0,Promise.resolve(pn(n,{toState:e,fromState:r,opts:t,toDeactivate:p,toActivate:m,intersection:h,canDeactivateFunctions:l}))}catch(t){return this.#a(t,a,i,e,r),Promise.reject(t)}}async#i(e,t,n,r){let i=this.#e,a=()=>this.#n===r&&!n.signal.aborted&&i.isActive();try{if(t.opts.signal){if(t.opts.signal.aborted)throw new G(o.TRANSITION_CANCELLED,{reason:t.opts.signal.reason});t.opts.signal.addEventListener(`abort`,()=>{n.abort(t.opts.signal?.reason)},{once:!0,signal:n.signal})}if(await e,!a())throw new G(o.TRANSITION_CANCELLED);return pn(i,t)}catch(e){throw mn(i,e,t.toState,t.fromState),e}finally{this.#s(n)}}#a(e,t,n,r,i){t&&this.#s(t),n&&r&&mn(this.#e,e,r,i)}#o(e,t,n,r,i,a){let s=this.#e;if(s.sendLeaveApprove(e,t),s.hasLeaveListeners()){let o=new AbortController,c=s.awaitLeaveListeners(e,t,o.signal);if(c!==void 0)return this.#t=o,this.#i(c,{toState:e,fromState:t,opts:r,toDeactivate:i.toDeactivate,toActivate:i.toActivate,intersection:i.intersection,canDeactivateFunctions:a},o,n)}if(this.#n!==n)throw new G(o.TRANSITION_CANCELLED)}#s(e){e.abort(),this.#t===e&&(this.#t=null)}#c(e){if(this.#e.isTransitioning()&&(t.logger.warn(`router.navigate`,`Concurrent navigation detected on shared router instance. For SSR, use cloneRouter() to create isolated instance per request.`),this.#t?.abort(new G(o.TRANSITION_CANCELLED)),this.#e.cancelNavigation()),e?.aborted)throw new G(o.TRANSITION_CANCELLED,{reason:e.reason})}};const Dn={replace:!0};Object.freeze(Dn);var On=class{#e;setDependencies(e){this.#e=e}async start(e){let t=this.#e,n=t.getOptions(),r=t.matchPath(e);if(!r&&!n.allowNotFound){let n=new G(o.ROUTE_NOT_FOUND,{path:e});throw t.emitTransitionError(void 0,void 0,n),n}return t.completeStart(),r?t.navigateToState(r,Dn):t.navigateToNotFound(e)}stop(){this.#e.clearState()}};function X(e){return e instanceof Error?e:Error(String(e))}function kn(e,t){return Promise.allSettled(e).then(e=>{if(t!==void 0)throw X(t);let n=e.find(e=>e.status===`rejected`);if(n!==void 0)throw X(n.reason)})}var Z=class{#e;#t;#n=[];#r;#i;#a;#o;constructor(e){this.#e=e.routerFSM,this.#t=e.emitter,this.#r=void 0,this.#c()}static validateSubscribeListener(e){if(typeof e!=`function`)throw TypeError(`[router.subscribe] Expected a function. For Observable pattern use @real-router/rx package`)}static validateSubscribeLeaveListener(e){if(typeof e!=`function`)throw TypeError(`[router.subscribeLeave] Expected a function`)}emitRouterStart(){this.#t.emit(u.ROUTER_START)}emitRouterStop(){this.#t.emit(u.ROUTER_STOP)}emitTransitionStart(e,t){this.#t.emit(u.TRANSITION_START,e,t)}emitTransitionSuccess(e,t,n){this.#t.emit(u.TRANSITION_SUCCESS,e,t,n)}emitTransitionError(e,t,n){this.#t.emit(u.TRANSITION_ERROR,e,t,n)}emitTransitionCancel(e,t){this.#t.emit(u.TRANSITION_CANCEL,e,t)}emitTransitionLeaveApprove(e,t){this.#t.emit(u.TRANSITION_LEAVE_APPROVE,e,t)}sendStart(){this.#e.send(g.START)}sendStop(){this.#e.send(g.STOP)}sendDispose(){this.#e.send(g.DISPOSE)}sendStarted(){this.#e.send(g.STARTED)}sendNavigate(e,t){this.#r=e,this.#e.forceState(h.TRANSITION_STARTED),this.emitTransitionStart(e,t)}sendComplete(e,t,n={}){this.#e.forceState(h.READY),this.emitTransitionSuccess(e,t,n),this.#r===e&&(this.#r=void 0)}sendLeaveApprove(e,t){this.#e.forceState(h.LEAVE_APPROVED),this.emitTransitionLeaveApprove(e,t)}sendFail(e,t,n){let r=this.#r;this.#i=e,this.#a=t,this.#o=n,this.#e.send(g.FAIL),this.#r===r&&(this.#r=void 0)}sendFailSafe(e,t,n){this.isReady()?this.sendFail(e,t,n):this.emitTransitionError(e,t,n)}sendCancel(e,t){let n=this.#r;this.#i=e,this.#a=t,this.#e.send(g.CANCEL),this.#r===n&&(this.#r=void 0)}canBeginTransition(){return this.#e.canSend(g.NAVIGATE)}canStart(){return this.#e.canSend(g.START)}canCancel(){return this.#e.canSend(g.CANCEL)}isActive(){let e=this.#e.getState();return e!==h.IDLE&&e!==h.DISPOSED}isDisposed(){return this.#e.getState()===h.DISPOSED}isTransitioning(){let e=this.#e.getState();return e===h.TRANSITION_STARTED||e===h.LEAVE_APPROVED}isLeaveApproved(){return this.#e.getState()===h.LEAVE_APPROVED}isReady(){return this.#e.getState()===h.READY}getCurrentToState(){return this.#r}addEventListener(e,t){return this.#t.on(e,t)}subscribe(e){return this.#t.on(u.TRANSITION_SUCCESS,(t,n)=>{e({route:t,previousRoute:n})})}subscribeLeave(e){return this.#n.push(e),()=>{let t=this.#n.indexOf(e);t!==-1&&this.#n.splice(t,1)}}hasLeaveListeners(){return this.#n.length>0}awaitLeaveListeners(e,t,n){if(t===void 0)return;let r={route:t,nextRoute:e,signal:n},i,a;for(let e of this.#n)try{let t=e(r);t!==void 0&&typeof t.then==`function`&&(i??=[],i.push(t))}catch(e){a===void 0&&(a=e)}if(i===void 0){if(a!==void 0)throw X(a);return}return kn(i,a)}clearAll(){this.#t.clearAll(),this.#n.length=0}setLimits(e){this.#t.setLimits(e)}sendCancelIfPossible(e){let t=this.#r;!this.canCancel()||t===void 0||this.sendCancel(t,e)}#s(){this.emitTransitionError(this.#i,this.#a,this.#o)}#c(){let e=this.#e;e.on(h.STARTING,g.STARTED,()=>{this.emitRouterStart()}),e.on(h.READY,g.STOP,()=>{this.emitRouterStop()});let t=()=>{let e=this.#i;e!==void 0&&this.emitTransitionCancel(e,this.#a)};e.on(h.TRANSITION_STARTED,g.CANCEL,t),e.on(h.LEAVE_APPROVED,g.CANCEL,t),e.on(h.LEAVE_APPROVED,g.FAIL,()=>{this.#s()}),e.on(h.STARTING,g.FAIL,()=>{this.#s()}),e.on(h.READY,g.FAIL,()=>{this.#s()}),e.on(h.TRANSITION_STARTED,g.FAIL,()=>{this.#s()})}};const An=new G(o.ROUTER_ALREADY_STARTED),jn=new Set([`all`,`warn-error`,`error-only`]);function Mn(e){return typeof e==`string`&&jn.has(e)}function Nn(e){return typeof e==`string`?`"${e}"`:typeof e==`object`?JSON.stringify(e):String(e)}function Pn(e){if(typeof e!=`object`||!e)throw TypeError(`Logger config must be an object`);let t=e;for(let e of Object.keys(t))if(e!==`level`&&e!==`callback`)throw TypeError(`Unknown logger config property: "${e}"`);if(`level`in t&&t.level!==void 0&&!Mn(t.level))throw TypeError(`Invalid logger level: ${Nn(t.level)}. Expected: "all" | "warn-error" | "error-only"`);if(`callback`in t&&t.callback!==void 0&&typeof t.callback!=`function`)throw TypeError(`Logger callback must be a function, got ${typeof t.callback}`);return!0}var Fn=class{router;options;limits;dependenciesStore;state;routes;routeLifecycle;plugins;navigation;lifecycle;eventBus;constructor(e){this.router=e.router,this.options=e.options,this.limits=e.limits,this.dependenciesStore=e.dependenciesStore,this.state=e.state,this.routes=e.routes,this.routeLifecycle=e.routeLifecycle,this.plugins=e.plugins,this.navigation=e.navigation,this.lifecycle=e.lifecycle,this.eventBus=e.eventBus}wireLimits(){this.dependenciesStore.limits=this.limits,this.plugins.setLimits(this.limits),this.eventBus.setLimits({maxListeners:this.limits.maxListeners,warnListeners:this.limits.warnListeners,maxEventDepth:this.limits.maxEventDepth}),this.routeLifecycle.setLimits(this.limits)}wireRouteLifecycleDeps(){let t={compileFactory:this.createCompileFactory()};this.routeLifecycle.setDependencies(t),this.routeLifecycle.setValidatorGetter(()=>{try{return e.r(this.router).validator}catch{return null}})}wireRoutesDeps(){this.routes.setDependencies({addActivateGuard:(e,t)=>{this.routeLifecycle.addCanActivate(e,t,!0)},addDeactivateGuard:(e,t)=>{this.routeLifecycle.addCanDeactivate(e,t,!0)},makeState:(e,t,n,r)=>this.state.makeState(e,t,n,r),getState:()=>this.state.get(),areStatesEqual:(e,t,n)=>this.state.areStatesEqual(e,t,n),getDependency:e=>this.dependenciesStore.dependencies[e],forwardState:(t,n)=>{let r=e.r(this.router);return r.validator?.routes.validateStateBuilderArgs(t,n,`forwardState`),r.forwardState(t,n)}}),this.routes.setLifecycleNamespace(this.routeLifecycle)}wirePluginsDeps(){let t={addEventListener:(e,t)=>this.eventBus.addEventListener(e,t),canNavigate:()=>this.eventBus.canBeginTransition(),compileFactory:this.createCompileFactory()};this.plugins.setDependencies(t),this.plugins.setValidatorGetter(()=>{try{return e.r(this.router).validator}catch{return null}})}wireNavigationDeps(){this.navigation.setDependencies({getOptions:()=>this.options.get(),hasRoute:e=>this.routes.hasRoute(e),getState:()=>this.state.get(),setState:e=>{this.state.set(e)},buildNavigateState:(t,n)=>{let r=e.r(this.router);r.validator?.routes.validateStateBuilderArgs(t,n,`navigate`);let i=r.forwardState(t,n),a=i.name,o=ie(i.params),s=this.routes.getMetaForState(a);if(s===void 0)return;let c=r.buildPath(a,o);return this.state.makeState(a,o,c,s,!0)},resolveDefault:()=>{let t=this.options.get(),n=e.r(this.router),r=mt(t.defaultRoute,e=>this.dependenciesStore.dependencies[e]),i=mt(t.defaultParams,e=>this.dependenciesStore.dependencies[e]);return typeof t.defaultRoute==`function`&&n.validator?.options.validateResolvedDefaultRoute(r,n.routeGetStore()),{route:r,params:i}},startTransition:(e,t)=>{this.eventBus.sendNavigate(e,t)},cancelNavigation:()=>{let e=this.eventBus.getCurrentToState();e!==void 0&&this.eventBus.sendCancel(e,this.state.get())},sendTransitionDone:(e,t,n)=>{this.eventBus.sendComplete(e,t,n)},sendTransitionFail:(e,t,n)=>{this.eventBus.sendFail(e,t,n)},emitTransitionError:(e,t,n)=>{this.eventBus.sendFailSafe(e,t,n)},emitTransitionSuccess:(e,t,n)=>{this.eventBus.emitTransitionSuccess(e,t,n)},sendLeaveApprove:(e,t)=>{this.eventBus.sendLeaveApprove(e,t)},canNavigate:()=>this.eventBus.canBeginTransition(),getLifecycleFunctions:()=>this.routeLifecycle.getFunctions(),isActive:()=>this.router.isActive(),isTransitioning:()=>this.eventBus.isTransitioning(),clearCanDeactivate:e=>{this.routeLifecycle.clearCanDeactivate(e)},hasLeaveListeners:()=>this.eventBus.hasLeaveListeners(),awaitLeaveListeners:(e,t,n)=>this.eventBus.awaitLeaveListeners(e,t,n)})}wireLifecycleDeps(){this.lifecycle.setDependencies({getOptions:()=>this.options.get(),navigateToState:(e,t)=>this.navigation.navigateToState(e,t),navigateToNotFound:e=>this.navigation.navigateToNotFound(e),clearState:()=>{this.state.set(void 0)},matchPath:e=>this.routes.matchPath(e,this.options.get()),completeStart:()=>{this.eventBus.sendStarted()},emitTransitionError:(e,t,n)=>{this.eventBus.sendFail(e,t,n)}})}wireStateDeps(){this.state.setDependencies({getDefaultParams:()=>this.routes.getStore().config.defaultParams,buildPath:(t,n)=>e.r(this.router).buildPath(t,n),getUrlParams:e=>this.routes.getUrlParams(e)})}createCompileFactory(){let{router:e,dependenciesStore:t}=this;return n=>n(e,e=>t.dependencies[e])}};function In(e){e.wireLimits(),e.wireRouteLifecycleDeps(),e.wireRoutesDeps(),e.wirePluginsDeps(),e.wireNavigationDeps(),e.wireLifecycleDeps(),e.wireStateDeps()}const Q=Object.freeze({});var Ln=class n{#e;#t;#n;#r;#i;#a;#o;#s;#c;#l;constructor(r=[],i={},o={}){i.logger&&Pn(i.logger)&&(t.logger.configure(i.logger),delete i.logger),gt.validateOptionsIsObject(i),y(o),r.length>0&&b(r),this.#e=new gt(i),this.#t=re(i.limits),this.#n=ae(o),this.#r=new bt,this.#i=new tn(r,Rn(this.#e.get())),this.#a=new Et,this.#o=new wt,this.#s=new En,this.#c=new On;let s=v(),c=new a({onListenerError:(e,n)=>{t.logger.error(`Router`,`Error in listener for ${e}:`,n)},onListenerWarn:(e,n)=>{t.logger.warn(`router.addEventListener`,`Event "${e}" has ${n} listeners — possible memory leak`)}});this.#l=new Z({routerFSM:s,emitter:c}),In(new Fn({router:this,options:this.#e,limits:this.#t,dependenciesStore:this.#n,state:this.#r,routes:this.#i,routeLifecycle:this.#a,plugins:this.#o,navigation:this.#s,lifecycle:this.#c,eventBus:this.#l}));let l=new Map;e.i(this,{makeState:(e,t,n,r)=>this.#r.makeState(e,t,n,r),forwardState:e.n(`forwardState`,(e,t)=>this.#i.forwardState(e,t),l),buildStateResolved:(e,t)=>this.#i.buildStateResolved(e,t),matchPath:(e,t)=>this.#i.matchPath(e,t),getOptions:()=>this.#e.get(),addEventListener:(e,t)=>this.#l.addEventListener(e,t),buildPath:e.n(`buildPath`,(e,t)=>this.#i.buildPath(e,t??f,this.#e.get()),l),emitTransitionError:e=>{this.#l.sendFailSafe(void 0,this.#r.get(),e)},start:e.t(`start`,e=>this.#c.start(e),l),navigateToState:(e,t)=>{let r=this.#s.navigateToState(e,t??Q);return this.#s.lastSyncResolved?this.#s.lastSyncResolved=!1:this.#s.lastSyncRejected?this.#s.lastSyncRejected=!1:n.#d(r),r},interceptors:l,setRootPath:e=>{this.#i.setRootPath(e)},getRootPath:()=>this.#i.getStore().rootPath,getTree:()=>this.#i.getStore().tree,isDisposed:()=>this.#l.isDisposed(),validator:null,dependenciesGetStore:()=>this.#n,cloneOptions:()=>({...this.#e.get()}),cloneDependencies:()=>({...this.#n.dependencies}),getLifecycleFactories:()=>this.#a.getFactories(),getPluginFactories:()=>this.#o.getAll(),routeGetStore:()=>this.#i.getStore(),getStateName:()=>this.#r.get()?.name,isTransitioning:()=>this.#l.isTransitioning(),clearState:()=>{this.#r.set(void 0)},setState:e=>{this.#r.set(e)},routerExtensions:[],contextClaimRecords:new Set,hydrationState:null}),this.isActiveRoute=this.isActiveRoute.bind(this),this.buildPath=this.buildPath.bind(this),this.getState=this.getState.bind(this),this.getPreviousState=this.getPreviousState.bind(this),this.areStatesEqual=this.areStatesEqual.bind(this),this.shouldUpdateNode=this.shouldUpdateNode.bind(this),this.isActive=this.isActive.bind(this),this.start=this.start.bind(this),this.stop=this.stop.bind(this),this.dispose=this.dispose.bind(this),this.canNavigateTo=this.canNavigateTo.bind(this),this.usePlugin=this.usePlugin.bind(this),this.navigate=this.navigate.bind(this),this.navigateToDefault=this.navigateToDefault.bind(this),this.navigateToNotFound=this.navigateToNotFound.bind(this),this.subscribe=this.subscribe.bind(this),this.subscribeLeave=this.subscribeLeave.bind(this),this.isLeaveApproved=this.isLeaveApproved.bind(this)}isActiveRoute(n,r,i,a){return e.r(this).validator?.routes.validateIsActiveRouteArgs(n,r,i,a),e.r(this).validator?.routes.validateRouteName(n,`isActiveRoute`),n===``?(t.logger.warn(`real-router`,`isActiveRoute("") called with empty string. Root node is not considered a parent of any route.`),!1):this.#i.isActiveRoute(n,r,i,a)}buildPath(t,n){let r=e.r(this);return r.validator?.routes.validateBuildPathArgs(t),r.validator?.navigation.validateParams(n,`buildPath`),r.buildPath(t,ie(n))}getState(){return this.#r.get()}getPreviousState(){return this.#r.getPrevious()}areStatesEqual(t,n,r=!0){return e.r(this).validator?.state.validateAreStatesEqualArgs(t,n,r),this.#r.areStatesEqual(t,n,r)}shouldUpdateNode(t){return e.r(this).validator?.routes.validateShouldUpdateNodeArgs(t),tn.shouldUpdateNode(t)}isActive(){return this.#l.isActive()}start(t){if(!this.#l.canStart())return Promise.reject(An);e.r(this).validator?.navigation.validateStartArgs(t),this.#l.sendStart();let r=e.r(this).start(t).catch(e=>{throw this.#l.isReady()&&(this.#c.stop(),this.#l.sendStop()),e});return n.#d(r),r}stop(){return this.#s.abortCurrentNavigation(),this.#l.sendCancelIfPossible(this.#r.get()),!this.#l.isReady()&&!this.#l.isTransitioning()?this:(this.#c.stop(),this.#l.sendStop(),this)}dispose(){if(this.#l.isDisposed())return;this.#s.abortCurrentNavigation(),this.#l.sendCancelIfPossible(this.#r.get()),(this.#l.isReady()||this.#l.isTransitioning())&&(this.#c.stop(),this.#l.sendStop()),this.#l.sendDispose(),this.#l.clearAll(),this.#o.disposeAll();let t=e.r(this);for(let e of t.routerExtensions)for(let t of e.keys)delete this[t];t.routerExtensions.length=0,t.contextClaimRecords.clear(),this.#i.clearRoutes(),this.#a.clearAll(),this.#r.reset(),this.#n.dependencies=Object.create(null),this.#f()}canNavigateTo(t,n){let r=e.r(this);if(r.validator?.routes.validateRouteName(t,`canNavigateTo`),r.validator?.navigation.validateParams(n,`canNavigateTo`),!this.#i.hasRoute(t))return!1;let{name:i,params:a}=r.forwardState(t,n??{}),o=this.#r.makeState(i,a),s=this.#r.get(),{toDeactivate:c,toActivate:l}=W(o,s);return this.#a.canNavigateTo(c,l,o,s)}usePlugin(...t){let n=t.filter(Boolean);if(n.length===0)return()=>{};let r=e.r(this);r.validator?.plugins.validatePluginLimit(this.#o.count(),this.#t);for(let e of n)r.validator?.plugins.validateNoDuplicatePlugins(e,this.#o.getAll());return this.#o.use(...n)}subscribe(e){return Z.validateSubscribeListener(e),this.#l.subscribe(e)}subscribeLeave(e){return Z.validateSubscribeLeaveListener(e),this.#l.subscribeLeave(e)}isLeaveApproved(){return this.#l.isLeaveApproved()}navigate(t,r,i){let a=e.r(this);a.validator?.navigation.validateNavigateArgs(t),a.validator?.navigation.validateParams(r,`navigate`);let o=i??Q;a.validator?.navigation.validateNavigationOptions(o,`navigate`);let s=this.#s.navigate(t,r??f,o);return this.#s.lastSyncResolved?this.#s.lastSyncResolved=!1:this.#s.lastSyncRejected?this.#s.lastSyncRejected=!1:n.#d(s),s}navigateToDefault(t){let r=e.r(this);r.validator?.navigation.validateNavigateToDefaultArgs(t);let i=t??Q;r.validator?.navigation.validateNavigationOptions(i,`navigateToDefault`);let a=this.#s.navigateToDefault(i);return this.#s.lastSyncResolved?this.#s.lastSyncResolved=!1:this.#s.lastSyncRejected?this.#s.lastSyncRejected=!1:n.#d(a),a}navigateToNotFound(e){if(!this.#l.isActive())throw new G(o.ROUTER_NOT_STARTED);if(e!==void 0&&typeof e!=`string`)throw TypeError(`[router.navigateToNotFound] path must be a string, got ${typeof e}`);let t=e??this.#r.get().path;return this.#s.navigateToNotFound(t)}static#u=e=>{e instanceof G&&(e.code===o.SAME_STATES||e.code===o.TRANSITION_CANCELLED||e.code===o.ROUTER_NOT_STARTED||e.code===o.ROUTE_NOT_FOUND)||t.logger.error(`router.navigate`,`Unexpected navigation error`,e)};static#d(e){e.catch(n.#u)}#f(){this.navigate=$,this.navigateToDefault=$,this.navigateToNotFound=$,this.start=$,this.stop=$,this.usePlugin=$,this.subscribe=$,this.subscribeLeave=$,this.canNavigateTo=$}};function $(){throw new G(o.ROUTER_DISPOSED)}function Rn(e){return{strictTrailingSlash:e.trailingSlash===`strict`,strictQueryParams:e.queryParamsMode===`strict`,urlParamsEncoding:e.urlParamsEncoding,queryParams:e.queryParams}}Object.defineProperty(exports,`a`,{enumerable:!0,get:function(){return L}}),Object.defineProperty(exports,`c`,{enumerable:!0,get:function(){return jt}}),Object.defineProperty(exports,`d`,{enumerable:!0,get:function(){return b}}),Object.defineProperty(exports,`f`,{enumerable:!0,get:function(){return s}}),Object.defineProperty(exports,`h`,{enumerable:!0,get:function(){return u}}),Object.defineProperty(exports,`i`,{enumerable:!0,get:function(){return I}}),Object.defineProperty(exports,`l`,{enumerable:!0,get:function(){return P}}),Object.defineProperty(exports,`m`,{enumerable:!0,get:function(){return o}}),Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return G}}),Object.defineProperty(exports,`o`,{enumerable:!0,get:function(){return Pt}}),Object.defineProperty(exports,`p`,{enumerable:!0,get:function(){return c}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return Rt}}),Object.defineProperty(exports,`s`,{enumerable:!0,get:function(){return Mt}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return Ln}}),Object.defineProperty(exports,`u`,{enumerable:!0,get:function(){return ut}});
6
+ //# sourceMappingURL=Router-Ca_j4nTg.js.map