@real-router/core 0.61.2 → 0.61.6

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.
@@ -1,2 +0,0 @@
1
- import{i as e,n as t,r as n,t as r}from"./internals-C8mRvTxc.mjs";import{logger as i}from"@real-router/logger";import{FSM as a}from"@real-router/fsm";const o={maxListeners:0,warnListeners:0,maxEventDepth:0};var s=class extends Error{constructor(e){super(e),this.name=`RecursionDepthError`}},c=class{#e=new Map;#t=null;#n=null;#r=o;#i;#a;constructor(e){e?.limits&&(this.#r=e.limits),this.#i=e?.onListenerError??null,this.#a=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.#r=e}on(e,t){let n=this.#u(e);if(n.has(t))throw Error(`Duplicate listener for "${e}"`);let{maxListeners:r,warnListeners:i}=this.#r;if(r!==0&&n.size>=r)throw Error(`Listener limit (${r}) reached for "${e}"`);return i!==0&&n.size===i&&this.#a!==null&&(this.#n??=new Set,this.#n.has(e)||(this.#n.add(e),this.#a(e,i))),n.add(t),()=>{this.off(e,t)}}off(e,t){let n=this.#e.get(e);n&&(n.delete(t),n.size===0&&(this.#e.delete(e),this.#n?.delete(e)))}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.#r.maxEventDepth===0){this.#o(a,e,o,t,n,r,i);return}this.#l(a,e,o,t,n,r,i)}clearAll(){this.#e.clear(),this.#t=null,this.#n=null}listenerCount(e){return this.#e.get(e)?.size??0}#o(e,t,n,r,i,a,o){if(e.size===1){let[s]=e;try{this.#s(s,n,r,i,a,o)}catch(e){this.#c(t,e)}return}let s=[...e];for(let e of s)try{this.#s(e,n,r,i,a,o)}catch(e){this.#c(t,e)}}#s(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)}}#c(e,t){if(t instanceof s)throw t;this.#i?.(e,t)}#l(e,t,n,r,i,a,o){this.#t??=new Map;let c=this.#t,l=c.get(t)??0;if(l>=this.#r.maxEventDepth)throw new s(`Maximum recursion depth (${this.#r.maxEventDepth}) exceeded for event: ${t}`);try{if(c.set(t,l+1),e.size===1){let[s]=e;try{this.#s(s,n,r,i,a,o)}catch(e){this.#c(t,e)}}else{let s=[...e];for(let e of s)try{this.#s(e,n,r,i,a,o)}catch(e){this.#c(t,e)}}}finally{let e=c.get(t)-1;e===0?c.delete(t):c.set(t,e)}}#u(e){let t=this.#e.get(e);if(t)return t;let n=new Set;return this.#e.set(e,n),n}};const l=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`}),u=`@@router/UNKNOWN_ROUTE`,d={UNKNOWN_ROUTE:u},f={ROUTER_START:`onStart`,ROUTER_STOP:`onStop`,TRANSITION_START:`onTransitionStart`,TRANSITION_LEAVE_APPROVE:`onTransitionLeaveApprove`,TRANSITION_CANCEL:`onTransitionCancel`,TRANSITION_SUCCESS:`onTransitionSuccess`,TRANSITION_ERROR:`onTransitionError`},p={ROUTER_START:`$start`,ROUTER_STOP:`$stop`,TRANSITION_START:`$$start`,TRANSITION_LEAVE_APPROVE:`$$leaveApprove`,TRANSITION_CANCEL:`$$cancel`,TRANSITION_SUCCESS:`$$success`,TRANSITION_ERROR:`$$error`},m={maxDependencies:100,maxPlugins:50,maxListeners:1e4,warnListeners:1e3,maxEventDepth:5,maxLifecycleHandlers:200},h=Object.freeze({}),ee=Object.freeze({deactivated:Object.freeze([]),activated:Object.freeze([]),intersection:``}),g=Object.freeze({phase:`activating`,reason:`success`,segments:ee}),_={IDLE:`IDLE`,STARTING:`STARTING`,READY:`READY`,TRANSITION_STARTED:`TRANSITION_STARTED`,LEAVE_APPROVED:`LEAVE_APPROVED`,DISPOSED:`DISPOSED`},v={START:`START`,STARTED:`STARTED`,NAVIGATE:`NAVIGATE`,LEAVE_APPROVE:`LEAVE_APPROVE`,COMPLETE:`COMPLETE`,FAIL:`FAIL`,CANCEL:`CANCEL`,STOP:`STOP`,DISPOSE:`DISPOSE`},te={initial:_.IDLE,context:null,transitions:{[_.IDLE]:{[v.START]:_.STARTING,[v.DISPOSE]:_.DISPOSED},[_.STARTING]:{[v.STARTED]:_.READY,[v.FAIL]:_.IDLE,[v.DISPOSE]:_.DISPOSED},[_.READY]:{[v.NAVIGATE]:_.TRANSITION_STARTED,[v.FAIL]:_.READY,[v.STOP]:_.IDLE,[v.DISPOSE]:_.DISPOSED},[_.TRANSITION_STARTED]:{[v.NAVIGATE]:_.TRANSITION_STARTED,[v.LEAVE_APPROVE]:_.LEAVE_APPROVED,[v.CANCEL]:_.READY,[v.FAIL]:_.READY,[v.DISPOSE]:_.DISPOSED},[_.LEAVE_APPROVED]:{[v.NAVIGATE]:_.TRANSITION_STARTED,[v.COMPLETE]:_.READY,[v.CANCEL]:_.READY,[v.FAIL]:_.READY,[v.DISPOSE]:_.DISPOSED},[_.DISPOSED]:{}}};function ne(){return new a(te)}function re(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 y(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&&y(r,t)}}function b(e){return Object.freeze(e)}function ie(e={}){return{...m,...e}}function ae(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 oe(e={}){let t=Object.create(null);for(let n in e)e[n]!==void 0&&(t[n]=e[n]);return{dependencies:t,limits:m}}function se(e){return`(${e.replaceAll(/(^<|>$)/g,``)})`}const x=`[^/?<]+`,ce=new RegExp(String.raw`([:*])(${x})(<[^>]+>)?(\?)?`,`g`),le=new RegExp(String.raw`([:*]${x}(?:<[^>]+>)?)\?(?=[/?]|$)`,`g`),ue=/<[^>]*>/g,de=/\?(.+)$/;function fe(e){return e.replaceAll(ue,e=>`<${`x`.repeat(e.length-2)}>`).replaceAll(le,`$1\0`)}function pe(e){let t=[],n=[],r=[],i={},a=new Map,o=de.exec(fe(e));if(o!==null){let t=e.slice(o.index+1).split(`&`);for(let e of t){let t=e.trim();t.length>0&&(n.push(t),i[t]=`query`)}e=e.slice(0,o.index)}let s;for(;(s=ce.exec(e))!==null;){let e=s[1],n=s[2],o=s[3];if(e===`*`)r.push(n),t.push(n),i[n]=`url`;else if(t.push(n),i[n]=`url`,o){let e=`^${se(o)}$`;a.set(n,{pattern:new RegExp(e),constraint:o})}}return{urlParams:t,queryParams:n,spatParams:r,paramTypeMap:i,constraintPatterns:a,pathPattern:e}}const me=/[^\w!$'()*+,.:;|~-]/gu,he=/[^\w!$'()*+,.:;|~-]/u,ge={default:e=>he.test(e)?e.replaceAll(me,e=>encodeURIComponent(e)):e,uri:encodeURI,uriComponent:encodeURIComponent,none:e=>e},_e={default:decodeURIComponent,uri:decodeURI,uriComponent:decodeURIComponent,none:e=>e},ve=(e,t,n)=>{let r=ge[t],i=String(e);if(!n)return r(i);let a=i.split(`/`),o=r(a[0]);for(let e=1;e<a.length;e++)o+=`/`+r(a[e]);return o};function S(){return{staticChildren:Object.create(null),hasChildren:!1,paramChild:void 0,splatChild:void 0,route:void 0,slashChildRoute:void 0}}function C(e){return e.length>1&&e.endsWith(`/`)?e.slice(0,-1):e}function ye(e,t){return e===``?t:t===``?e:e+t}function be(e){return e>=48&&e<=57||e>=65&&e<=70||e>=97&&e<=102}function xe(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(!be(n)||!be(r))return!1;t+=3}else t++;return!0}const Se=/<[^>]*>/g;function Ce(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(Se,``),u=o?l:ye(n,l),d=a?i:we(e,t,u,o?``:n,r,i);for(let n of t.children.values())Ce(e,n,u,r,d);a||r.pop()}function we(e,t,n,r,i,a){let o=Oe(n,r),s=Object.freeze([...i]),c=Te(s),l=C(n),u=Ve(e.rootQueryParams,i),d=He(i),{buildStaticParts:f,buildParamSlots:p}=Be(o?C(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?Ee(e,m,r):De(e,m,n,l,t),m}function Te(e){let t={};for(let n of e)t[n.fullName]=n.paramTypeMap;return Object.freeze(t)}function Ee(e,t,n){Ie(e,t,n);let r=C(n),i=e.options.caseSensitive?r:r.toLowerCase();e.staticCache.has(i)&&e.staticCache.set(i,t)}function De(e,t,n,r,i){if(Fe(e,t,n),i.paramMeta.urlParams.length===0){let n=e.options.caseSensitive?r:r.toLowerCase();e.staticCache.set(n,t)}}function Oe(e,t){return C(e)===C(t)}function ke(e,t,n){throw Error(`[SegmentMatcher.registerTree] Parameter name conflict at the same path position: '${n}${e}' and '${n}${t}'. A parametric URL segment binds to a single name across every route that shares that position — the value cannot be captured under two names. Rename one so both routes agree (e.g. use '${n}${e}' in both).`)}function Ae(e){throw Error(`[SegmentMatcher.registerTree] Empty parameter name: a bare '${e}' marker must be followed by a name (e.g. '${e}id'). A name-less marker would capture under an empty key at match but emit a literal '${e}' at build — the two disagree, so it is rejected.`)}const je=RegExp(`^[:*](${x})`);function Me(e){let t=je.exec(e)?.[1]??``;return t===``&&Ae(`:`),t}function Ne(e,t,n){return e.paramChild?e.paramChild.name!==t&&!n.has(e)&&ke(e.paramChild.name,t,`:`):(e.paramChild={node:S(),name:t},n.add(e)),e.paramChild.node}function Pe(e,t,n){return e.splatChild?e.splatChild.name!==t&&!n.has(e)&&ke(e.splatChild.name,t,`*`):(e.splatChild={node:S(),name:t},n.add(e)),e.splatChild.node}function Fe(e,t,n){let r=C(n);if(r===`/`){e.root.route=t;return}let i=new Set,a=new Map;w(e,e.root,r,1,t,i,a)}function w(e,t,n,r,i,a,o){let s=o.get(t);if(s===void 0)s=new Set,o.set(t,s);else if(s.has(r))return;s.add(r);let c=n.length;for(;r<=c;){let s=n.indexOf(`/`,r),l=s===-1?c:s,u=n.slice(r,l);if(u.endsWith(`?`)){let r=Me(u);w(e,Ne(t,r,a),n,l+1,i,a,o),l>=c?t.route??=i:w(e,t,n,l+1,i,a,o);return}t=ze(e,t,u,a),r=l+1}t.route=i}function Ie(e,t,n){let r=Le(e,n);r.slashChildRoute=t}function Le(e,t){return Re(e,e.root,t)}function Re(e,t,n){let r=C(n);if(r===`/`||r===``)return t;let i=t,a=1,o=r.length,s=new Set;for(;a<=o;){let t=r.indexOf(`/`,a),n=t===-1?o:t;if(n<=a)break;let c=r.slice(a,n);i=ze(e,i,c,s),a=n+1}return i}function ze(e,t,n,r){if(n.startsWith(`*`)){let e=n.slice(1);e===``&&Ae(`*`);let i=Pe(t,e,r);return t.hasChildren=!0,i}if(n.startsWith(`:`)){let e=Ne(t,Me(n),r);return t.hasChildren=!0,e}let i=e.options.caseSensitive?n:n.toLowerCase();return i in t.staticChildren||(t.staticChildren[i]=S(),t.hasChildren=!0),t.staticChildren[i]}function Be(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=new RegExp(String.raw`[:*](${x})(?:<[^>]*>)?(\?)?`,`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=>ve(e,n,!0):ge[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 Ve(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 He(e){let t=new Map;for(let n of e)for(let[e,r]of n.paramMeta.constraintPatterns)t.set(e,r);return t}function Ue(e){return typeof e==`string`?e:typeof e==`object`?JSON.stringify(e):String(e)}var We=class{get options(){return this.#e}#e;#t=S();#n=new Map;#r=new Map;#i=new Map;#a=new Map;#o={cleanPath:``,normalized:``,queryString:void 0};#s=[];#c=``;#l;#u;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.#l=this.#e.caseSensitive,this.#u=this.#e.urlParamsEncoding===`none`?null:_e[this.#e.urlParamsEncoding]}registerTree(e){this.#s=e.paramMeta.queryParams,Ce({root:this.#t,options:this.#e,routesByName:this.#n,segmentsByName:this.#r,metaByName:this.#i,staticCache:this.#a,rootQueryParams:this.#s},e,``,[],null)}match(e){if(!this.#h(e))return;let{cleanPath:t,normalized:n,queryString:r}=this.#o,i=this.#l?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.#_(a,{},r);let o={},s=this.#b(n,o);if(s&&!(this.#e.strictTrailingSlash&&!this.#y(t,s))&&this.#C(o)&&!(s.hasConstraints&&!this.#w(o,s)))return this.#_(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.#d(r,e,t);let i=this.#f(r,t),a=this.#p(i,n?.trailingSlash),o=this.#m(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)}#d(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}'`)}}}#f(e,t){let n=e.buildStaticParts,r=e.buildParamSlots;if(r.length===0)return n[0];let i=n[0];for(let[e,a]of r.entries()){let r=t?.[a.paramName];if(r==null){if(!a.isOptional)throw Error(`[SegmentMatcher.buildPath] Missing required param '${a.paramName}'`);i.length>1&&i.endsWith(`/`)&&(i=i.slice(0,-1)),i+=n[e+1];continue}if(r===``&&!a.isOptional)throw Error(`[SegmentMatcher.buildPath] Missing required param '${a.paramName}' (empty string)`);let o=a.encoder(Ue(r));i+=o+n[e+1]}return i}#p(e,t){return t===`always`&&!e.endsWith(`/`)?`${e}/`:t===`never`&&e!==`/`&&e.endsWith(`/`)?e.slice(0,-1):e}#m(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):``}#h(e){if(e===``&&(e=`/`),e.codePointAt(0)!==47)return!1;let t=this.#g(e);if(t===-2)return!1;t===-3&&(e=this.#c);let n=t>=0?e.slice(0,t):e,r=t>=0?e.slice(t+1):void 0;if(r!==void 0){let e=r.indexOf(`#`);e!==-1&&(r=r.slice(0,e))}let i=C(n);return this.#o.cleanPath=n,this.#o.normalized=i,this.#o.queryString=r,!0}#g(e){let t=!1;for(let n=0;n<e.length;n++){let r=e.codePointAt(n);if(r===35)return this.#c=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}#_(e,t,n){if(!(n!==void 0&&!this.#v(e,t,n)))return{segments:e.matchSegments,params:t,meta:e.meta}}#v(e,t,n){let r;try{r=this.#e.parseQueryString(n)}catch{return!1}if(this.#e.strictQueryParams){let n=e.declaredQueryParamsSet;for(let e in r){if(!n.has(e))return!1;t[e]=r[e]}}else for(let e in r)t[e]=r[e];return!0}#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.#l;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.#u;if(!t)return!0;for(let n in e){let r=e[n];if(r.includes(`%`)){if(!xe(r))return!1;try{e[n]=t(r)}catch{return!1}}}return!0}#w(e,t){for(let[n,r]of t.constraintPatterns)if(!r.pattern.test(e[n]))return!1;return!0}};const Ge=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)},Ke=(e,t)=>{if(e===void 0)return t.boolean.decodeUndefined();let n=t.boolean.decodeRaw(e);if(n!==null)return n;let r=Ge(e),i=t.number.decode(r);return i===null?t.boolean.decodeValue(r):i},T=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)},qe=(e,t,n)=>{if(t.length===0)return``;let r=`${e}${n}`,i=`${r}=${T(t[0])}`;for(let e=1;e<t.length;e++)i+=`&${r}=${T(t[e])}`;return i},Je={none:{encodeArray:(e,t)=>qe(e,t,``)},brackets:{encodeArray:(e,t)=>qe(e,t,`[]`)},index:{encodeArray:(e,t)=>{if(t.length===0)return``;let n=`${e}[0]=${T(t[0])}`;for(let r=1;r<t.length;r++)n+=`&${e}[${r}]=${T(t[r])}`;return n},indexed:!0},comma:{encodeArray:(e,t)=>{if(t.length===0)return``;let n=`${e}=${T(t[0])}`;for(let e=1;e<t.length;e++)n+=`,${T(t[e])}`;return n},decodeValue:e=>e.includes(`,`)?e.split(`,`):null}},Ye={none:{encode:(e,t)=>`${e}=${t}`,decodeUndefined:()=>null,decodeRaw:()=>null,decodeValue:e=>e},auto:{encode:(e,t)=>`${e}=${t}`,decodeUndefined:()=>null,decodeRaw:e=>e===`true`?!0:e===`false`?!1:null,decodeValue:e=>e},"empty-true":{encode:(e,t)=>t?e:`${e}=false`,decodeUndefined:()=>!0,decodeRaw:e=>e===`true`?!0:e===`false`?!1:null,decodeValue:e=>e}},Xe={default:{encode:e=>e},hidden:{encode:()=>``}},Ze={auto:{decode:e=>{let t=e.length;if(t===0)return null;let n=+(e.codePointAt(0)===45);if(n===t||t-n>1&&e.codePointAt(n)===48&&e.codePointAt(n+1)!==46)return null;let r=!1;for(let i=n;i<t;i++){let a=e.codePointAt(i);if(!(a!==void 0&&a>=48&&a<=57)){if(a===46&&!r&&i!==n&&i!==t-1){r=!0;continue}return null}}let i=Number(e);return Object.is(i,-0)||!Number.isSafeInteger(i)&&!r?null:i}},none:{decode:()=>null}},Qe=(e,t,n,r)=>({boolean:Ye[t],null:Xe[n],number:Ze[r],array:Je[e]}),$e={boolean:Ye.auto,null:Xe.default,number:Ze.auto,array:Je.none},E={arrayFormat:`none`,booleanFormat:`auto`,nullFormat:`default`,numberFormat:`auto`},et={...E,strategies:$e},tt=e=>{if(!e||e.arrayFormat===void 0&&e.booleanFormat===void 0&&e.nullFormat===void 0&&e.numberFormat===void 0)return et;let t=e.arrayFormat??E.arrayFormat,n=e.booleanFormat??E.booleanFormat,r=e.nullFormat??E.nullFormat,i=e.numberFormat??E.numberFormat;return{arrayFormat:t,booleanFormat:n,nullFormat:r,numberFormat:i,strategies:Qe(t,n,r,i)}},D=e=>encodeURIComponent(e),nt=(e,t,n)=>{let r=D(e);switch(typeof t){case`string`:case`number`:return`${r}=${D(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}=${D(t)}`;default:return`${r}=${D(t)}`}},rt=e=>{let t=e.indexOf(`?`);return t===-1?e:e.slice(t+1)};function O(e,t,n){t===`__proto__`?Object.defineProperty(e,t,{value:n,writable:!0,enumerable:!0,configurable:!0}):e[t]=n}function it(e,t,n,r){if(!Object.hasOwn(e,t)){O(e,t,r?[n]:n);return}let i=e[t];Array.isArray(i)?i.push(n):O(e,t,[i,n])}function at(e,t,n,r,i){return Ke(r?e.slice(t+1,n):void 0,i)}function ot(e,t,n){let r=t+1,i=0,a=!1;for(;r<n;){let t=e.codePointAt(r);if(t===93)return a?i:null;if(t!==void 0&&t>=48&&t<=57){i=i*10+(t-48),a=!0,r++;continue}return null}return null}function st(e,t,n){let{searchPart:r,nameEnd:i,nameSourceEnd:a,eqPos:o,end:s,hasValue:c,decodedName:l}=e,u=ot(r,i,a);if(u===null)return!1;let d=at(r,o,s,c,t),f=n.get(l);return f===void 0?n.set(l,[[u,d]]):f.push([u,d]),!0}function ct(e,t,n,r,i,a){let o=e.indexOf(`=`,t),s=o!==-1&&o<n,c=s?o:n,l=c,u=!1;for(let n=t;n<c;n++)if(e.codePointAt(n)===91){l=n,u=!0;break}let d=Ge(e.slice(t,l));if(!(a!==void 0&&u&&st({searchPart:e,nameEnd:l,nameSourceEnd:c,eqPos:o,end:n,hasValue:s,decodedName:d},i,a))){if(!u&&s&&i.array.decodeValue){let t=e.slice(o+1,n),a=i.array.decodeValue(t);if(a){for(let e of a)it(r,d,Ke(e,i),!0);return}}it(r,d,at(e,o,n,s,i),u)}}const lt=(e,t)=>{let n=rt(e);if(n===``||n===`?`)return{};let r={};return ut(n,r,tt(t).strategies),r};function ut(e,t,n){let r=n.array.indexed?new Map:void 0,i=0,a=e.length;for(;i<a;){let o=e.indexOf(`&`,i);o===-1&&(o=a),ct(e,i,o,t,n,r),i=o+1}if(r!==void 0)for(let[e,n]of r)n.sort((e,t)=>e[0]-t[0]),O(t,e,n.map(e=>e[1]))}const dt=(e,t)=>{let n=Object.keys(e);if(n.length===0)return``;let r=tt(t),i=[];for(let t of n){let n=e[t];if(n===void 0)continue;let a=nt(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};if(e.children)for(let t of e.children){let e=k(t,a);a.children.push(e)}return a}function ft(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 pt=Object.freeze(new Map),mt=Object.freeze([]);function ht(e){return e.parent?.name?`${e.parent.fullName}.${e.name}`:e.name}function gt(e){let t=new Map;for(let n of e)t.set(n.name,n);return t}function _t(e,t,n){let r=[],i=[];for(let a of e){let e=vt(a,t,n);r.push(e),e.absolute||i.push(e)}return{childrenMap:gt(r),nonAbsoluteChildren:i}}function vt(e,t,n){let r=pe(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:``,paramTypeMap:i};if(a.fullName=ht(a),e.children.length===0)a.children=pt,a.nonAbsoluteChildren=mt;else{let{childrenMap:t,nonAbsoluteChildren:r}=_t(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(r.urlParams),Object.freeze(r.queryParams),Object.freeze(r.spatParams),Object.freeze(r),Object.freeze(a)),a}function yt(e,t=!0){return vt(e,null,t)}function bt(e,t){let n=[],r={add(e){return n.push(e),r},addMany(e){return n.push(...e),r},build(r){return yt(ft(e,t,n),!r?.skipFreeze)}};return r}function xt(e,t,n,r){return bt(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 St(e){return Array.from(e.children.values(),A)}function Ct(e){let t=e?.queryParams;return new We({...e?.caseSensitive!==void 0&&{caseSensitive:e.caseSensitive},...e?.strictTrailingSlash!==void 0&&{strictTrailingSlash:e.strictTrailingSlash},...e?.strictQueryParams!==void 0&&{strictQueryParams:e.strictQueryParams},...e?.urlParamsEncoding!==void 0&&{urlParamsEncoding:e.urlParamsEncoding},parseQueryString:e=>lt(e,t),buildQueryString:e=>dt(e,t)})}RegExp(`[:*](?!${x})`);const wt={defaultRoute:``,defaultParams:{},trailingSlash:`preserve`,queryParamsMode:`loose`,queryParams:E,urlParamsEncoding:`default`,allowNotFound:!0,rewritePathOnMatch:!0};function Tt(e){Object.freeze(e);for(let t of Object.values(e))t&&typeof t==`object`&&t.constructor===Object&&Tt(t);return e}function Et(e,t){return typeof e==`function`?e(t):e}function Dt(e){if(!e||typeof e!=`object`||Array.isArray(e))throw TypeError(`[router.constructor] options must be a plain object`)}var Ot=class{#e;constructor(e={}){this.#e=Tt({...wt,...e})}static validateOptionsIsObject(e){Dt(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 kt=new WeakMap;function At(e){return kt.get(e)}function jt(e,t){kt.set(e,t)}var Mt=class{#e=void 0;#t=void 0;#n;get(){return this.#e}set(e){this.#t=this.#e,this.#e=e?b(e):void 0}getPrevious(){return this.#t}reset(){this.#e=void 0,this.#t=void 0}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===h?h:Object.freeze({...t});let c={name:e,params:s,path:n??this.#n.buildPath(e,t),context:{},...!i&&{transition:g}};return r&&jt(c,r),i?c:b(c)}areStatesEqual(e,t,n=!0){if(!e||!t)return!!e==!!t;if(e.name!==t.name)return!1;if(n){let n=this.#n.getUrlParams(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}};const Nt={[f.ROUTER_START]:p.ROUTER_START,[f.ROUTER_STOP]:p.ROUTER_STOP,[f.TRANSITION_SUCCESS]:p.TRANSITION_SUCCESS,[f.TRANSITION_START]:p.TRANSITION_START,[f.TRANSITION_LEAVE_APPROVE]:p.TRANSITION_LEAVE_APPROVE,[f.TRANSITION_ERROR]:p.TRANSITION_ERROR,[f.TRANSITION_CANCEL]:p.TRANSITION_CANCEL},Pt=Object.keys(Nt),M=`router.usePlugin`;function Ft(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 It=class e{#e=new Set;#t=new Set;#n;#r=null;static validatePlugin(e){Ft(e)}setDependencies(e){this.#n=e}setValidatorGetter(e){this.#r=e}count(){return this.#e.size}use(...e){if(this.#r?.()?.plugins.validateCountThresholds(this.#e.size+e.length),e.length===1){let t=e[0],n=this.#a(t);this.#e.add(t);let r=!1,a=()=>{if(!r){r=!0,this.#e.delete(t),this.#t.delete(a);try{n()}catch(e){i.error(M,`Error during cleanup:`,e)}}};return this.#t.add(a),a}let t=this.#i(e),n=[];try{for(let e of t){let t=this.#a(e);n.push({factory:e,cleanup:t})}}catch(e){for(let{cleanup:e}of n)try{e()}catch(e){i.error(M,`Cleanup error:`,e)}throw e}for(let{factory:e}of n)this.#e.add(e);let r=!1,a=()=>{if(!r){r=!0,this.#t.delete(a);for(let{factory:e}of n)this.#e.delete(e);for(let{cleanup:e}of n)try{e()}catch(e){i.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()}#i(e){let t=new Set;for(let n of e)t.has(n)?this.#r?.()?.plugins.warnBatchDuplicates(e):t.add(n);return t}#a(t){let n=this.#n.compileFactory(t);e.validatePlugin(n),this.#r?.()?.plugins.validatePluginKeys(n),Object.freeze(n);let r=[];for(let e of Pt)e in n&&(typeof n[e]==`function`?(r.push(this.#n.addEventListener(Nt[e],n[e])),e===`onStart`&&this.#n.canNavigate()&&this.#r?.()?.plugins.warnPluginAfterStart(e)):this.#r?.()?.plugins.warnPluginMethodType(e));return()=>{for(let e of r)e();typeof n.teardown==`function`&&n.teardown()}}};const Lt=()=>!0,Rt=()=>!1,zt=()=>Lt,Bt=()=>Rt;function Vt(e){return e?zt:Bt}var Ht=class{#e=new Map;#t=new Map;#n=new Map;#r=new Map;#i=new Map;#a=new Map;#o=[this.#i,this.#a];#s;#c=null;setDependencies(e){this.#s=e}setValidatorGetter(e){this.#c=e}getHandlerCount(e){let t=e===`activate`?this.#e:this.#n,n=e===`activate`?this.#t:this.#r;if(t.size===0)return n.size;if(n.size===0)return t.size;let r=new Set(t.keys());for(let e of n.keys())r.add(e);return r.size}addCanActivate(e,t,n=!1){this.#l(`activate`,e,t,n,`canActivate`)}addCanDeactivate(e,t,n=!1){this.#l(`deactivate`,e,t,n,`canDeactivate`)}clearCanActivate(e){let t=this.#e.delete(e),n=this.#t.delete(e);(t||n)&&this.#u(`activate`,e)}clearCanDeactivate(e){let t=this.#n.delete(e),n=this.#r.delete(e);(t||n)&&this.#u(`deactivate`,e)}clearAll(){this.#e.clear(),this.#t.clear(),this.#n.clear(),this.#r.clear(),this.#a.clear(),this.#i.clear()}clearDefinitionGuards(){for(let e of this.#e.keys())this.#t.has(e)||this.#a.delete(e);for(let e of this.#n.keys())this.#r.has(e)||this.#i.delete(e);this.#e.clear(),this.#n.clear()}getFactories(){let e={},t={};for(let[t,n]of this.#n)e[t]=n;for(let[t,n]of this.#r)e[t]=n;for(let[e,n]of this.#e)t[e]=n;for(let[e,n]of this.#t)t[e]=n;return[e,t]}getFactoriesByOrigin(){let e={},t={},n={},r={};for(let[t,n]of this.#n)e[t]=n;for(let[e,n]of this.#e)t[e]=n;for(let[e,t]of this.#r)n[e]=t;for(let[e,t]of this.#t)r[e]=t;return{definition:[e,t],external:[n,r]}}getFunctions(){return this.#o}canNavigateTo(e,t,n,r){for(let t of e)if(!this.#f(this.#i,t,n,r,`canNavigateTo`))return!1;for(let e of t)if(!this.#f(this.#a,e,n,r,`canNavigateTo`))return!1;return!0}#l(e,t,n,r,i){let a=this.#d(e),o=e===`activate`?this.#a:this.#i,s=r?a.definition:a.external,c=r?a.external:a.definition;if(s.has(t)||c.has(t))this.#c?.()?.lifecycle.warnOverwrite(t,e,i);else{let t=this.#c?.();if(t){let n=this.getHandlerCount(e);t.lifecycle.validateHandlerLimit(n,i),t.lifecycle.validateCountThresholds(n+1,i)}}let l=typeof n==`boolean`?Vt(n):n;s.set(t,l);try{let e=this.#s.compileFactory(l);if(typeof e!=`function`)throw TypeError(`[router.${i}] Factory must return a function, got ${typeof e}`);o.set(t,e)}catch(n){throw s.delete(t),c.has(t)?this.#u(e,t):o.delete(t),n}}#u(e,t){let n=this.#d(e),r=e===`activate`?this.#a:this.#i,i=n.external.get(t)??n.definition.get(t);if(!i){r.delete(t);return}try{let e=this.#s.compileFactory(i);if(typeof e!=`function`){r.delete(t);return}r.set(t,e)}catch{r.delete(t)}}#d(e){return e===`activate`?{definition:this.#e,external:this.#t}:{definition:this.#n,external:this.#r}}#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.#c?.()?.lifecycle.warnAsyncGuardSync(t,i),!1)}catch{return!1}}};const Ut=new Set([`name`,`path`,`children`,`canActivate`,`canDeactivate`,`forwardTo`,`encodeParams`,`decodeParams`,`defaultParams`]);function N(){return{decoders:Object.create(null),encoders:Object.create(null),defaultParams:Object.create(null),forwardMap:Object.create(null),forwardFnMap:Object.create(null)}}function Wt(e,t){for(let n in e)if(e[n]!==t[n])return!1;return!0}function Gt(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||!qt(e,t))return e;let n={};for(let r in e)t[r]!==`query`&&(n[r]=e[r]);return n}function qt(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 Yt(e,t){for(let n of Object.keys(e))t(n)&&delete e[n]}function Xt(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 Zt(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 Qt(e,t,n){let r=xt(``,t,e),i=Ct(n);return i.registerTree(r),{tree:r,matcher:i}}function F(e){let t=Qt(e.definitions,e.rootPath,e.matcherOptions);e.tree=t.tree,e.matcher=t.matcher,e.urlParamsCache.clear()}function $t(e){F(e),e.resolvedForwardMap=I(e.config)}function en(e){tn(e),F(e)}function tn(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]=Zt(n,e.forwardMap);return t}function nn(e,t){if(typeof e!=`function`)return;let n=e.constructor.name===`AsyncFunction`,r=e.toString().includes(`__awaiter`);if(n||r)throw TypeError(`forwardTo callback cannot be async for route "${t}". Async functions break matchPath/buildPath.`)}function rn(e,t,n){if(e.canActivate){let n=typeof e.forwardTo==`string`?e.forwardTo:`[dynamic]`;i.warn(`real-router`,`Route "${t}" has both forwardTo and canActivate. canActivate will be ignored because forwardTo creates a redirect (industry standard). Move canActivate to the target route "${n}".`)}if(e.canDeactivate){let n=typeof e.forwardTo==`string`?e.forwardTo:`[dynamic]`;i.warn(`real-router`,`Route "${t}" has both forwardTo and canDeactivate. canDeactivate will be ignored because forwardTo creates a redirect (industry standard). Move canDeactivate to the target route "${n}".`)}nn(e.forwardTo,t),typeof e.forwardTo==`string`?n.forwardMap[t]=e.forwardTo:n.forwardFnMap[t]=e.forwardTo}function an(e,t,n,r,i,a){let o=Object.fromEntries(Object.entries(e).filter(([e])=>!Ut.has(e)));Object.keys(o).length>0&&(r[t]=o),e.canActivate&&i.set(t,e.canActivate),e.canDeactivate&&a.set(t,e.canDeactivate),e.forwardTo&&rn(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 on(e,t,n,r,i,a=``){for(let o of e){let e=a?`${a}.${o.name}`:o.name;an(o,e,t,n,r,i),o.children&&on(o.children,t,n,r,i,e)}}function sn(e){let t=N();return Object.assign(t.decoders,e.decoders),Object.assign(t.encoders,e.encoders),Object.assign(t.defaultParams,e.defaultParams),Object.assign(t.forwardMap,e.forwardMap),Object.assign(t.forwardFnMap,e.forwardFnMap),t}function cn(e,t,n){if(n.length===0)return[...e,...t];let[r,...i]=n;return e.map(e=>{if(e.name!==r)return e;let n=e.children??[];return{...e,children:i.length===0?[...n,...t]:cn(n,t,i)}})}function ln(e,t,n){for(let r of e){let e=t?`${t}.${r.name}`:r.name;n(e),r.children&&ln(r.children,e,n)}}function un(e,t,n){if(n!==void 0&&!e.matcher.hasRoute(n))throw Error(`[router.addRoute] Parent route "${n}" does not exist`);ln(t,n??``,t=>{if(e.matcher.hasRoute(t))throw Error(`[router.addRoute] Route "${t}" already exists`)})}function dn(e,t,n,r,i,a,o){let s=new Map,c=new Map;on(t,n,r,s,c,i);let l=I(n),{tree:u,matcher:d}=Qt(e,a,o);return{definitions:e,config:n,routeCustomFields:r,pendingCanActivate:s,pendingCanDeactivate:c,tree:u,matcher:d,resolvedForwardMap:l}}function fn(e,t,n){return dn(cn(e.definitions,t.map(e=>P(e)),n===void 0?[]:n.split(`.`)),t,sn(e.config),Object.assign(Object.create(null),e.routeCustomFields),n??``,e.rootPath,e.matcherOptions)}function pn(e,t,n){return dn(e.map(e=>P(e)),e,N(),Object.create(null),``,t,n)}function mn(e,t){e.definitions.length=0;for(let n of t.definitions)e.definitions.push(n);Object.assign(e.config,t.config),e.routeCustomFields=t.routeCustomFields,e.tree=t.tree,e.matcher=t.matcher,e.urlParamsCache.clear(),e.resolvedForwardMap=t.resolvedForwardMap;let n=e.depsStore;for(let[e,r]of t.pendingCanActivate)n.addActivateGuard(e,r);for(let[e,r]of t.pendingCanDeactivate)n.addDeactivateGuard(e,r)}function hn(e,t){let n=pn(e,``,t);return{definitions:n.definitions,config:n.config,tree:n.tree,matcher:n.matcher,urlParamsCache:new Map,resolvedForwardMap:n.resolvedForwardMap,routeCustomFields:n.routeCustomFields,rootPath:``,matcherOptions:t,depsStore:void 0,lifecycleNamespace:void 0,pendingCanActivate:n.pendingCanActivate,pendingCanDeactivate:n.pendingCanDeactivate}}const L=[];Object.freeze(L);function gn(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}const _n=new Set([`string`,`number`,`boolean`]);function R(e){return _n.has(typeof e)}function vn(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(R(t)&&R(i)&&String(t)!==String(i))return!1}return!0}function yn(e,t,n,r,i,a){for(let o=0;o<a;o++){let a=r[o];if(a!==i[o]||!vn(a,e,t,n))return o}return a}const bn=new Map;function z(e){let t=bn.get(e);if(t)return t;let n=xn(e);return Object.freeze(n),bn.set(e,n),n}function xn(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]:gn(e)}let B,V,H=null,Sn,Cn,U=null;function wn(e,t){if(!t)return{intersection:``,toActivate:z(e.name),toDeactivate:L};let n=At(e),r=At(t);if(!n&&!r)return{intersection:``,toActivate:z(e.name),toDeactivate:z(t.name)};let i=z(e.name),a=z(t.name),o=Math.min(a.length,i.length),s=yn(n??r,e,t,i,a,o),c;if(s>=a.length)c=L;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===Sn&&t===Cn)return U;let n=wn(e,t);return Sn=B,Cn=V,U=H,B=e,V=t,H=n,n}function Tn(e){let t=[];for(let n of e)for(let e of n.paramMeta.urlParams)t.push(e);return t}function En(e,t){return{name:t??e.segments.at(-1).fullName,params:e.params,meta:e.meta}}var Dn=class{#e;#t;get#n(){return this.#e.depsStore}constructor(e=[],t){this.#e=hn(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(){en(this.#e)}buildPath(e,t,n){if(e===d.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=Xt(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:g,context:{}};return this.#n.areStatesEqual(n,i,r)}if(!a.startsWith(`${e}.`))return!1;let s=i.params;return Wt(t,s)?o?Gt(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.urlParamsCache.get(e);if(t!==void 0)return t;let n=this.#e.matcher.getSegmentsByName(e),r=n?Tn(n):[];return this.#e.urlParamsCache.set(e,r),r}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: ${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 On=new Set(Object.values(l)),kn=new Set([`code`,`segment`,`path`]),An=new Set([`setCode`,`setErrorInstance`,`setAdditionalFields`,`hasField`,`getField`,`toJSON`]);var G=class extends Error{segment;path;code;constructor(e,{message:t,segment:n,path:r,...i}={}){super(t??e),this.name=`RouterError`,this.code=e,this.segment=n,this.path=r;for(let[e,t]of Object.entries(i)){if(kn.has(e))throw TypeError(`[RouterError] Cannot set reserved property "${e}"`);An.has(e)||(this[e]=t)}}setCode(e){this.code=e,On.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(kn.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);let t=new Set([`code`,`message`,`segment`,`path`,`stack`,`name`]);for(let n in this)Object.hasOwn(this,n)&&!t.has(n)&&(e[n]=this[n]);return e}};const jn=new G(l.ROUTER_NOT_STARTED),Mn=new G(l.ROUTE_NOT_FOUND),Nn=new G(l.SAME_STATES),K=Promise.reject(jn),Pn=Promise.reject(Mn),Fn=Promise.reject(Nn);K.catch(()=>{}),Pn.catch(()=>{}),Fn.catch(()=>{});function In(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 Ln({signal:e,...t}){return t}function Rn(e,t){let{toState:n,fromState:r,opts:i,toDeactivate:a,toActivate:o,intersection:s}=t;if(n.name!==d.UNKNOWN_ROUTE&&!e.hasRoute(n.name)){let t=new G(l.ROUTE_NOT_FOUND,{routeName:n.name});throw e.sendTransitionFail(n,r,t),t}if(r)for(let n of a)!o.includes(n)&&t.canDeactivateFunctions.has(n)&&e.clearCanDeactivate(n);n.transition=In(r,i,a,o,s);let c=Object.freeze(n);e.setState(c);let u=i.signal===void 0?i:Ln(i);return e.sendTransitionDone(c,r,u),c}function zn(e,t,n,r){let i=t;i.code===l.TRANSITION_CANCELLED||i.code===l.ROUTE_NOT_FOUND||e.sendTransitionFail(n,r,i)}function q(e,t,n){if(e instanceof DOMException&&e.name===`AbortError`)throw new G(l.TRANSITION_CANCELLED);Bn(e,t,n)}function Bn(e,t,n){throw e instanceof G?(e.setCode(t),e):new G(t,Hn(e,n))}const Vn=new Set([`code`,`segment`,`path`]);function Hn(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))Vn.has(n)||(t[n]=r);return{...n,...t}}return n}async function Un(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 Wn(e,t,n,r,i,a,o,s,c,u){await Un(c,n,u);for(let c=s;c<t.length;c++){if(!o())throw new G(l.TRANSITION_CANCELLED);let s=t[c],u=e.get(s);if(!u)continue;let d=!1;try{d=u(r,i,a)}catch(e){q(e,n,s)}if(d instanceof Promise){await Un(d,n,s);continue}if(!d)throw new G(n,{segment:s})}}async function Gn(e,t,n,r,i,a,o,s,c){if(await e,!s())throw new G(l.TRANSITION_CANCELLED);let u=c();if(u!==void 0&&(await u,!s()))throw new G(l.TRANSITION_CANCELLED);if(r){let e=J(t,n,l.CANNOT_ACTIVATE,i,a,o,s);if(e!==void 0&&await e,!s())throw new G(l.TRANSITION_CANCELLED)}}function Kn(e,t,n,r,i,a,o,s,c,u,d){if(i){let i=J(e,n,l.CANNOT_DEACTIVATE,o,s,c,u);if(i!==void 0)return Gn(i,t,r,a,o,s,c,u,d)}if(!u())throw new G(l.TRANSITION_CANCELLED);let f=d();if(f!==void 0)return qn(f,a?t:void 0,r,o,s,c,u);if(a)return J(t,r,l.CANNOT_ACTIVATE,o,s,c,u)}async function qn(e,t,n,r,i,a,o){if(await e,!o())throw new G(l.TRANSITION_CANCELLED);if(t!==void 0){let e=J(t,n,l.CANNOT_ACTIVATE,r,i,a,o);if(e!==void 0&&await e,!o())throw new G(l.TRANSITION_CANCELLED)}}function J(e,t,n,r,i,a,o){for(let[s,c]of t.entries()){if(!o())throw new G(l.TRANSITION_CANCELLED);let 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)return Wn(e,t,n,r,i,a,o,s+1,d,c);if(!d)throw new G(n,{segment:c})}}const Jn=[d.UNKNOWN_ROUTE];Object.freeze(Jn);const Yn={replace:!0};Object.freeze(Yn);function Xn(e,t){return t?.name===d.UNKNOWN_ROUTE&&!e.replace?{...e,replace:!0}:e}function Zn(e,t,n){return!!e&&!t.reload&&!t.force&&e.path===n.path}var Qn=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(),Mn),this.lastSyncRejected=!0,Pn)}navigateToState(e,t){this.lastSyncResolved=!1;let n=this.#e;if(!n.canNavigate())return this.lastSyncRejected=!0,K;if(e.name!==d.UNKNOWN_ROUTE&&!n.hasRoute(e.name)){let t=new G(l.ROUTE_NOT_FOUND,{routeName:e.name});return n.emitTransitionError(void 0,n.getState(),t),Promise.reject(t)}let r={name:e.name,params:e.params,path:e.path,context:{...e.context}};return this.#r(r,t)}navigateToDefault(e){this.lastSyncResolved=!1;let t=this.#e;if(!t.getOptions().defaultRoute)return Promise.reject(new G(l.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(l.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:Jn,intersection:``};Object.freeze(r);let i={phase:`activating`,...t&&{from:t.name},reason:`success`,replace:!0,segments:r};Object.freeze(i);let a={name:d.UNKNOWN_ROUTE,params:h,path:e,transition:i,context:{}};return Object.freeze(a),this.#e.setState(a),this.#e.emitTransitionSuccess(a,t,Yn),a}abortCurrentNavigation(){this.#t?.abort(new G(l.TRANSITION_CANCELLED)),this.#t=null}#r(e,t){let n=this.#e,r,i=!1,a=null;try{if(r=n.getState(),t=Xn(t,r),Zn(r,t,e))return n.emitTransitionError(e,r,Nn),this.lastSyncRejected=!0,Fn;this.#c(t.signal);let o=++this.#n;if(n.startTransition(e,r),i=!0,this.#n!==o)throw new G(l.TRANSITION_CANCELLED);let[s,c]=n.getLifecycleFunctions(),u=e.name===d.UNKNOWN_ROUTE,f=W(e,r),{toDeactivate:p,toActivate:m,intersection:h}=f,ee=r&&!t.forceDeactivate&&p.length>0,g=!u&&m.length>0,_=s.size>0||c.size>0,v=e;if(!_){let e=this.#o(v,r,o,t,f,s);if(e!==void 0)return e}if(_){a=new AbortController,this.#t=a;let i=()=>this.#n===o&&n.isActive(),u=a.signal,d=Kn(s,c,p,m,!!ee,g,e,r,u,i,()=>{if(n.sendLeaveApprove(v,r),n.hasLeaveListeners())return n.awaitLeaveListeners(v,r,u)});if(d!==void 0)return this.#i(d,{toState:e,fromState:r,opts:t,toDeactivate:p,toActivate:m,intersection:h,canDeactivateFunctions:s},a,o);if(!i())throw new G(l.TRANSITION_CANCELLED);this.#s(a,!1)}return this.lastSyncResolved=!0,Promise.resolve(Rn(n,{toState:e,fromState:r,opts:t,toDeactivate:p,toActivate:m,intersection:h,canDeactivateFunctions:s}))}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(),o=t.opts.signal,s,c=!1;try{if(o){if(o.aborted)throw new G(l.TRANSITION_CANCELLED,{reason:o.reason});s=()=>{n.abort(o.reason)},o.addEventListener(`abort`,s,{once:!0})}if(await e,!a())throw new G(l.TRANSITION_CANCELLED);let r=Rn(i,t);return c=!0,r}catch(e){throw zn(i,e,t.toState,t.fromState),e}finally{s&&o?.removeEventListener(`abort`,s),this.#s(n,!c)}}#a(e,t,n,r,i){t&&this.#s(t,!0),n&&r&&zn(this.#e,e,r,i)}#o(e,t,n,r,i,a){let o=this.#e;if(o.sendLeaveApprove(e,t),o.hasLeaveListeners()){let s=new AbortController;this.#t=s;let c;try{c=o.awaitLeaveListeners(e,t,s.signal)}catch(e){throw this.#s(s,!0),e}if(c!==void 0)return this.#i(c,{toState:e,fromState:t,opts:r,toDeactivate:i.toDeactivate,toActivate:i.toActivate,intersection:i.intersection,canDeactivateFunctions:a},s,n);let u=this.#n!==n;if(this.#s(s,u),u)throw new G(l.TRANSITION_CANCELLED);return}if(this.#n!==n)throw new G(l.TRANSITION_CANCELLED)}#s(e,t){t&&e.abort(),this.#t===e&&(this.#t=null)}#c(e){if(this.#e.isTransitioning()&&(i.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(l.TRANSITION_CANCELLED)),this.#e.cancelNavigation()),e?.aborted)throw new G(l.TRANSITION_CANCELLED,{reason:e.reason})}};const $n={replace:!0};Object.freeze($n);var er=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(l.ROUTE_NOT_FOUND,{path:e});throw t.emitTransitionError(void 0,void 0,n),n}return t.completeStart(),r?t.navigateToState(r,$n):t.navigateToNotFound(e)}stop(){this.#e.clearState()}};const Y=`TREE_CHANGED`;function X(e){return e instanceof Error?e:Error(String(e))}function tr(e,t,n){return new Promise((r,i)=>{let a=()=>{i(X(n.reason))};if(n.aborted){a();return}n.addEventListener(`abort`,a,{once:!0}),Promise.allSettled(e).then(e=>{if(n.removeEventListener(`abort`,a),n.aborted)return;if(t!==void 0){i(X(t));return}let o=e.find(e=>e.status===`rejected`);if(o!==void 0){i(X(o.reason));return}r()})})}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 observable(router) from @real-router/rx`)}static validateSubscribeLeaveListener(e){if(typeof e!=`function`)throw TypeError(`[router.subscribeLeave] Expected a function`)}emitRouterStart(){this.#t.emit(p.ROUTER_START)}emitRouterStop(){this.#t.emit(p.ROUTER_STOP)}emitTransitionStart(e,t){this.#t.emit(p.TRANSITION_START,e,t)}emitTransitionSuccess(e,t,n){this.#t.emit(p.TRANSITION_SUCCESS,e,t,n)}emitTransitionError(e,t,n){this.#t.emit(p.TRANSITION_ERROR,e,t,n)}emitTransitionCancel(e,t){this.#t.emit(p.TRANSITION_CANCEL,e,t)}emitTransitionLeaveApprove(e,t){this.#t.emit(p.TRANSITION_LEAVE_APPROVE,e,t)}emitTreeChanged(e){this.#t.emit(Y,e)}subscribeTreeChanged(e){return this.#t.on(Y,t=>{e(t)})}treeChangedListenerCount(){return this.#t.listenerCount(Y)}sendStart(){this.#e.send(v.START)}sendStop(){this.#e.send(v.STOP)}sendDispose(){this.#e.send(v.DISPOSE)}sendStarted(){this.#e.send(v.STARTED)}sendNavigate(e,t){this.#r=e,this.#e.forceState(_.TRANSITION_STARTED),this.emitTransitionStart(e,t)}sendComplete(e,t,n={}){this.#e.forceState(_.READY),this.emitTransitionSuccess(e,t,n),this.#r===e&&(this.#r=void 0)}sendLeaveApprove(e,t){this.#e.forceState(_.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(v.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(v.CANCEL),this.#r===n&&(this.#r=void 0)}canBeginTransition(){return this.#e.canSend(v.NAVIGATE)}canStart(){return this.#e.canSend(v.START)}canCancel(){return this.#e.canSend(v.CANCEL)}isActive(){let e=this.#e.getState();return e!==_.IDLE&&e!==_.DISPOSED}isDisposed(){return this.#e.getState()===_.DISPOSED}isTransitioning(){let e=this.#e.getState();return e===_.TRANSITION_STARTED||e===_.LEAVE_APPROVED}isLeaveApproved(){return this.#e.getState()===_.LEAVE_APPROVED}isReady(){return this.#e.getState()===_.READY}isStarting(){return this.#e.getState()===_.STARTING}getCurrentToState(){return this.#r}addEventListener(e,t){return this.#t.on(e,t)}subscribe(e){return this.#t.on(p.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=Object.freeze({route:t,nextRoute:e,signal:n}),i,a,o=[...this.#n];for(let e of o)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 tr(i,a,n)}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(_.STARTING,v.STARTED,()=>{this.emitRouterStart()}),e.on(_.READY,v.STOP,()=>{this.emitRouterStop()});let t=()=>{let e=this.#i;e!==void 0&&this.emitTransitionCancel(e,this.#a)};e.on(_.TRANSITION_STARTED,v.CANCEL,t),e.on(_.LEAVE_APPROVED,v.CANCEL,t),e.on(_.LEAVE_APPROVED,v.FAIL,()=>{this.#s()}),e.on(_.STARTING,v.FAIL,()=>{this.#s()}),e.on(_.READY,v.FAIL,()=>{this.#s()}),e.on(_.TRANSITION_STARTED,v.FAIL,()=>{this.#s()})}};const nr=new G(l.ROUTER_ALREADY_STARTED),rr=new Set([`all`,`warn-error`,`error-only`,`none`]);function ir(e){return typeof e==`string`&&rr.has(e)}function ar(e){return typeof e==`string`?`"${e}"`:typeof e==`object`?JSON.stringify(e):String(e)}function or(e){if(typeof e!=`object`)throw TypeError(`Logger config must be an object`);let t=e;for(let e of Object.keys(t))if(e!==`level`&&e!==`callback`&&e!==`callbackIgnoresLevel`)throw TypeError(`Unknown logger config property: "${e}"`);if(`level`in t&&t.level!==void 0&&!ir(t.level))throw TypeError(`Invalid logger level: ${ar(t.level)}. Expected: "all" | "warn-error" | "error-only" | "none"`);if(`callback`in t&&t.callback!==void 0&&typeof t.callback!=`function`)throw TypeError(`Logger callback must be a function, got ${typeof t.callback}`);if(`callbackIgnoresLevel`in t&&t.callbackIgnoresLevel!==void 0&&typeof t.callbackIgnoresLevel!=`boolean`)throw TypeError(`Logger callbackIgnoresLevel must be a boolean, got ${typeof t.callbackIgnoresLevel}`)}var sr=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.eventBus.setLimits({maxListeners:this.limits.maxListeners,warnListeners:this.limits.warnListeners,maxEventDepth:this.limits.maxEventDepth})}wireRouteLifecycleDeps(){let e={compileFactory:this.createCompileFactory()};this.routeLifecycle.setDependencies(e),this.routeLifecycle.setValidatorGetter(()=>{try{return n(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:(e,t)=>{let r=n(this.router);return r.validator?.routes.validateStateBuilderArgs(e,t,`forwardState`),r.forwardState(e,t)}}),this.routes.setLifecycleNamespace(this.routeLifecycle)}wirePluginsDeps(){let e={addEventListener:(e,t)=>this.eventBus.addEventListener(e,t),canNavigate:()=>this.eventBus.canBeginTransition(),compileFactory:this.createCompileFactory()};this.plugins.setDependencies(e),this.plugins.setValidatorGetter(()=>{try{return n(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:(e,t)=>{let r=n(this.router);r.validator?.routes.validateStateBuilderArgs(e,t,`navigate`);let i=r.forwardState(e,t),a=i.name,o=ae(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 e=this.options.get(),t=n(this.router),r=Et(e.defaultRoute,e=>this.dependenciesStore.dependencies[e]),i=Et(e.defaultParams,e=>this.dependenciesStore.dependencies[e]);return typeof e.defaultRoute==`function`&&t.validator?.options.validateResolvedDefaultRoute(r,t.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:(e,t)=>n(this.router).buildPath(e,t),getUrlParams:e=>this.routes.getUrlParams(e)})}createCompileFactory(){let{router:e,dependenciesStore:t}=this;return n=>n(e,e=>t.dependencies[e])}};function cr(e){e.wireLimits(),e.wireRouteLifecycleDeps(),e.wireRoutesDeps(),e.wirePluginsDeps(),e.wireNavigationDeps(),e.wireLifecycleDeps(),e.wireStateDeps()}const Q=Object.freeze({}),lr=new Set([l.SAME_STATES,l.TRANSITION_CANCELLED,l.ROUTER_NOT_STARTED,l.ROUTE_NOT_FOUND,l.CANNOT_ACTIVATE,l.CANNOT_DEACTIVATE]);var ur=class a{#e;#t;#n;#r;#i;#a;#o;#s;#c;#l;constructor(n=[],o={},s={}){let{logger:l,...u}=o;l&&(or(l),i.configure(l)),Ot.validateOptionsIsObject(o),re(s),n.length>0&&y(n),this.#e=new Ot(u),this.#t=ie(u.limits),this.#n=oe(s),this.#r=new Mt,this.#i=new Dn(n,dr(this.#e.get())),this.#a=new Ht,this.#o=new It,this.#s=new Qn,this.#c=new er;let d=ne(),f=new c({onListenerError:(e,t)=>{i.error(`Router`,`Error in listener for ${e}:`,t)},onListenerWarn:(e,t)=>{i.warn(`router.addEventListener`,`Event "${e}" has ${t} listeners — possible memory leak`)}});this.#l=new Z({routerFSM:d,emitter:f}),cr(new sr({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 p=new Map;e(this,{makeState:(e,t,n,r)=>this.#r.makeState(e,t,n,r),forwardState:r(`forwardState`,(e,t)=>this.#i.forwardState(e,t),p),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),treeChanged:{emit:e=>{this.#l.emitTreeChanged(e)},subscribe:e=>this.#l.subscribeTreeChanged(e),listenerCount:()=>this.#l.treeChangedListenerCount()},buildPath:r(`buildPath`,(e,t)=>this.#i.buildPath(e,t??h,this.#e.get()),p),emitTransitionError:e=>{this.#l.sendFailSafe(void 0,this.#r.get(),e)},start:t(`start`,e=>this.#c.start(e),p),navigateToState:(e,t)=>{let n=this.#s.navigateToState(e,t??Q);return this.#s.lastSyncResolved?this.#s.lastSyncResolved=!1:this.#s.lastSyncRejected?this.#s.lastSyncRejected=!1:a.#d(n),n},interceptors:p,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}),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(e,t,r,a){return n(this).validator?.routes.validateIsActiveRouteArgs(e,t,r,a),n(this).validator?.routes.validateRouteName(e,`isActiveRoute`),e===``?(i.warn(`real-router`,`isActiveRoute("") called with empty string. Root node is not considered a parent of any route.`),!1):this.#i.isActiveRoute(e,t,r,a)}buildPath(e,t){let r=n(this);return r.validator?.routes.validateBuildPathArgs(e),r.validator?.navigation.validateParams(t,`buildPath`),r.buildPath(e,ae(t))}getState(){return this.#r.get()}getPreviousState(){return this.#r.getPrevious()}areStatesEqual(e,t,r=!0){return n(this).validator?.state.validateAreStatesEqualArgs(e,t,r),this.#r.areStatesEqual(e,t,r)}shouldUpdateNode(e){return n(this).validator?.routes.validateShouldUpdateNodeArgs(e),Dn.shouldUpdateNode(e)}isActive(){return this.#l.isActive()}start(e){if(!this.#l.canStart())return Promise.reject(nr);n(this).validator?.navigation.validateStartArgs(e),this.#l.sendStart();let t;try{t=n(this).start(e)}catch(e){t=Promise.reject(e)}let r=t.catch(e=>{throw this.#l.isReady()&&this.#r.get()===void 0?(this.#c.stop(),this.#l.sendStop()):this.#l.isStarting()&&this.#l.sendFail(void 0,void 0,e),e});return a.#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 e=n(this);for(let t of e.routerExtensions)for(let e of t.keys)delete this[e];e.routerExtensions.length=0,e.contextClaimRecords.clear(),this.#i.clearRoutes(),this.#a.clearAll(),this.#r.reset(),this.#n.dependencies=Object.create(null),this.#f()}canNavigateTo(e,t){let r=n(this);if(r.validator?.routes.validateRouteName(e,`canNavigateTo`),r.validator?.navigation.validateParams(t,`canNavigateTo`),!this.#i.hasRoute(e))return!1;let{name:i,params:a}=r.forwardState(e,t??{}),o;try{o=this.#r.makeState(i,a)}catch{return!1}let s=this.#r.get(),{toDeactivate:c,toActivate:l}=W(o,s);return this.#a.canNavigateTo(c,l,o,s)}usePlugin(...e){let t=e.filter(Boolean);if(t.length===0)return()=>{};let r=n(this);r.validator?.plugins.validatePluginLimit(this.#o.count(),this.#t);for(let e of t)r.validator?.plugins.validateNoDuplicatePlugins(e,this.#o.getAll());return this.#o.use(...t)}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(e,t,r){let i=n(this);i.validator?.navigation.validateNavigateArgs(e),i.validator?.navigation.validateParams(t,`navigate`);let o=r??Q;i.validator?.navigation.validateNavigationOptions(o,`navigate`);let s=this.#s.navigate(e,t??h,o);return this.#s.lastSyncResolved?this.#s.lastSyncResolved=!1:this.#s.lastSyncRejected?this.#s.lastSyncRejected=!1:a.#d(s),s}navigateToDefault(e){let t=n(this);t.validator?.navigation.validateNavigateToDefaultArgs(e);let r=e??Q;t.validator?.navigation.validateNavigationOptions(r,`navigateToDefault`);let i=this.#s.navigateToDefault(r);return this.#s.lastSyncResolved?this.#s.lastSyncResolved=!1:this.#s.lastSyncRejected?this.#s.lastSyncRejected=!1:a.#d(i),i}navigateToNotFound(e){if(!this.#l.isActive())throw new G(l.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&&lr.has(e.code)||i.error(`router.navigate`,`Unexpected navigation error`,e)};static#d(e){e.catch(a.#u)}#f(){this.navigate=$,this.navigateToDefault=$,this.navigateToNotFound=$,this.start=$,this.stop=$,this.usePlugin=$,this.subscribe=$,this.subscribeLeave=$,this.canNavigateTo=$}};function $(){throw new G(l.ROUTER_DISPOSED)}function dr(e){return{strictTrailingSlash:e.trailingSlash===`strict`,strictQueryParams:e.queryParamsMode===`strict`,urlParamsEncoding:e.urlParamsEncoding,queryParams:e.queryParams}}export{u as _,fn as a,p as b,I as c,Yt as d,Jt as f,y as g,St as h,un as i,en as l,A as m,G as n,pn as o,Ut as p,mn as r,$t as s,ur as t,Zt as u,d as v,s as x,l as y};
2
- //# sourceMappingURL=Router-DO2iuH2Y.mjs.map