@real-router/core 0.62.3 → 0.63.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.
- package/dist/cjs/Router-CvXQQQ9T.js +2 -0
- package/dist/cjs/Router-CvXQQQ9T.js.map +1 -0
- package/dist/cjs/api.js +1 -1
- package/dist/cjs/{cloneRouter-DcJG5mme.js → cloneRouter-BzZ-We9n.js} +2 -2
- package/dist/cjs/{cloneRouter-DcJG5mme.js.map → cloneRouter-BzZ-We9n.js.map} +1 -1
- package/dist/cjs/index-DdeWDyVB.d.ts.map +1 -1
- package/dist/cjs/index.js +1 -1
- package/dist/cjs/utils.js +1 -1
- package/dist/esm/Router-DB8d2iPj.mjs +2 -0
- package/dist/esm/Router-DB8d2iPj.mjs.map +1 -0
- package/dist/esm/api.mjs +1 -1
- package/dist/esm/{cloneRouter-smv70Nag.mjs → cloneRouter-CCcxyhmT.mjs} +2 -2
- package/dist/esm/{cloneRouter-smv70Nag.mjs.map → cloneRouter-CCcxyhmT.mjs.map} +1 -1
- package/dist/esm/index-DdeWDyVB.d.mts.map +1 -1
- package/dist/esm/index.mjs +1 -1
- package/dist/esm/utils.mjs +1 -1
- package/package.json +3 -3
- package/dist/cjs/Router-bBqAzcoz.js +0 -2
- package/dist/cjs/Router-bBqAzcoz.js.map +0 -1
- package/dist/esm/Router-CV-yIeWr.mjs +0 -2
- package/dist/esm/Router-CV-yIeWr.mjs.map +0 -1
|
@@ -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};var s=class{#e=new Map;#t=new Set;#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.#s(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||this.#t.has(e))return;let o=arguments.length-1;this.#t.add(e);try{if(a.size===1){let[s]=a;try{this.#o(s,o,t,n,r,i)}catch(t){this.#i?.(e,t)}}else{let s=[...a];for(let a of s)try{this.#o(a,o,t,n,r,i)}catch(t){this.#i?.(e,t)}}}finally{this.#t.delete(e)}}clearAll(){this.#e.clear(),this.#t.clear(),this.#n=null}listenerCount(e){return this.#e.get(e)?.size??0}isDispatching(e){return this.#t.has(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){let t=this.#e.get(e);if(t)return t;let n=new Set;return this.#e.set(e,n),n}};const c=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`,REENTRANT_NAVIGATION:`REENTRANT_NAVIGATION`,REENTRANT_TREE_MUTATION:`REENTRANT_TREE_MUTATION`}),l=`@@router/UNKNOWN_ROUTE`,u={UNKNOWN_ROUTE:l},d={ROUTER_START:`onStart`,ROUTER_STOP:`onStop`,TRANSITION_START:`onTransitionStart`,TRANSITION_LEAVE_APPROVE:`onTransitionLeaveApprove`,TRANSITION_CANCEL:`onTransitionCancel`,TRANSITION_SUCCESS:`onTransitionSuccess`,TRANSITION_ERROR:`onTransitionError`},f={ROUTER_START:`$start`,ROUTER_STOP:`$stop`,TRANSITION_START:`$$start`,TRANSITION_LEAVE_APPROVE:`$$leaveApprove`,TRANSITION_CANCEL:`$$cancel`,TRANSITION_SUCCESS:`$$success`,TRANSITION_ERROR:`$$error`},p={maxDependencies:100,maxPlugins:50,maxListeners:1e4,warnListeners:1e3,maxLifecycleHandlers:200},m=Object.freeze({}),h=Object.freeze({deactivated:Object.freeze([]),activated:Object.freeze([]),intersection:``}),g=Object.freeze({phase:`activating`,reason:`success`,segments:h}),_={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`},y={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 ee(){return new a(y)}function te(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 ne(e){return Object.freeze(e)}function re(e={}){return{...p,...e}}function x(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??={},t[n]=r)}return t??m}function ie(e={}){let t=Object.create(null);for(let n in e)e[n]!==void 0&&(t[n]=e[n]);return{dependencies:t,limits:p}}function ae(e){return`(${e.replaceAll(/(^<|>$)/g,``)})`}const S=`[^/?<]+`,oe=new RegExp(String.raw`([:*])(${S})(<[^>]+>)?(\?)?`,`g`),se=new RegExp(String.raw`([:*]${S}(?:<[^>]+>)?)\?(?=[/?]|$)`,`g`),ce=/<[^>]*>/g,le=/\?(.+)$/;function ue(e){return e.replaceAll(ce,e=>`<${`x`.repeat(e.length-2)}>`).replaceAll(se,`$1\0`)}const C=Object.freeze([]),de=Object.freeze({}),fe=new Map;function pe(e){let t=[],n=[],r=[],i={},a=new Map,o=le.exec(ue(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=oe.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=`^${ae(o)}$`;a.set(n,{pattern:new RegExp(e),constraint:o})}}return me(t,n,r,i,a,e)}function me(e,t,n,r,i,a){return{urlParams:e.length===0?C:e,queryParams:t.length===0?C:t,spatParams:n.length===0?C:n,paramTypeMap:e.length===0&&t.length===0?de:r,constraintPatterns:i.size===0?fe:i,pathPattern:a}}const he=/[^\w!$'()*+,.:;|~-]/gu,ge=/[^\w!$'()*+,.:;|~-]/u,_e={default:e=>ge.test(e)?e.replaceAll(he,e=>encodeURIComponent(e)):e,uri:encodeURI,uriComponent:encodeURIComponent,none:e=>e},ve={default:decodeURIComponent,uri:decodeURI,uriComponent:decodeURIComponent,none:e=>e},ye=(e,t,n)=>{let r=_e[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 w(){return{staticChildren:Object.create(null),hasChildren:!1,paramChild:void 0,splatChild:void 0,route:void 0,slashChildRoute:void 0}}function T(e){return e.length>1&&e.endsWith(`/`)?e.slice(0,-1):e}function be(e,t){return e===``?t:t===``?e:e+t}function xe(e){return e>=48&&e<=57||e>=65&&e<=70||e>=97&&e<=102}function Se(e){let t=0;for(;t<e.length;)if(e.codePointAt(t)===37){if(t+2>=e.length)return!1;let n=e.codePointAt(t+1)??0,r=e.codePointAt(t+2)??0;if(!xe(n)||!xe(r))return!1;t+=3}else t++;return!0}const Ce=Object.freeze([]),we=new Set,Te=new Map,Ee=Object.freeze([]),De=Object.freeze({}),Oe=/<[^>]*>/g;function ke(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(Oe,``),u=o?l:be(n,l),d=a?i:Ae(e,t,u,o?``:n,r,i);for(let n of t.children.values())ke(e,n,u,r,d);a||r.pop()}function Ae(e,t,n,r,i,a){let o=Pe(n,r),s=Object.freeze([...i]),c=je(s),l=T(n),u=Ye(e.rootQueryParams,i),d=Xe(i),{buildStaticParts:f,buildParamSlots:p}=Je(o?T(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:u.length===0?we:new Set(u),hasTrailingSlash:n.length>1&&n.endsWith(`/`),constraintPatterns:d,hasConstraints:d.size>0,buildStaticParts:f,buildParamSlots:p,buildParamNamesSet:p.length===0?we:new Set(p.map(e=>e.paramName)),cachedResult:void 0};return t.paramMeta.urlParams.length===0&&(m.cachedResult=Object.freeze({segments:m.matchSegments,params:De,meta:m.meta})),e.routesByName.set(t.fullName,m),o?Me(e,m,r):Ne(e,m,n,l,t),m}function je(e){let t={};for(let n of e)t[n.fullName]=n.paramTypeMap;return Object.freeze(t)}function Me(e,t,n){We(e,t,n);let r=T(n),i=e.options.caseSensitive?r:r.toLowerCase();e.staticCache.has(i)&&e.staticCache.set(i,t)}function Ne(e,t,n,r,i){if(Ue(e,t,n),i.paramMeta.urlParams.length===0){let n=e.options.caseSensitive?r:r.toLowerCase();e.staticCache.set(n,t)}}function Pe(e,t){return T(e)===T(t)}function Fe(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 Ie(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.`)}function Le(e){throw Error(`[SegmentMatcher.registerTree] Fused parameter marker in segment "${e}": a ':'/'*' marker must begin a segment (e.g. 'a/:b', not 'a:b'). build extracts it as a param while the trie treats the segment as a literal — the two disagree.`)}const Re=RegExp(`^[:*](${S})`),ze=RegExp(`[:*]${S}`);function Be(e){let t=Re.exec(e)?.[1]??``;return t===``&&Ie(`:`),t}function Ve(e,t,n){return e.paramChild?e.paramChild.name!==t&&!n.has(e)&&Fe(e.paramChild.name,t,`:`):(e.paramChild={node:w(),name:t},n.add(e)),e.paramChild.node}function He(e,t,n){return e.splatChild?e.splatChild.name!==t&&!n.has(e)&&Fe(e.splatChild.name,t,`*`):(e.splatChild={node:w(),name:t},n.add(e)),e.splatChild.node}function Ue(e,t,n){let r=T(n);if(r===`/`){e.root.route=t;return}let i=new Set,a=new Map;E(e,e.root,r,1,t,i,a)}function E(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=Be(u);E(e,Ve(t,r,a),n,l+1,i,a,o),l>=c?t.route??=i:E(e,t,n,l+1,i,a,o);return}t=qe(e,t,u,a),r=l+1}t.route=i}function We(e,t,n){let r=Ge(e,n);r.slashChildRoute=t}function Ge(e,t){return Ke(e,e.root,t)}function Ke(e,t,n){let r=T(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=qe(e,i,c,s),a=n+1}return i}function qe(e,t,n,r){if(n.startsWith(`*`)){let e=n.slice(1);e===``&&Ie(`*`);let i=He(t,e,r);return t.hasChildren=!0,i}if(n.startsWith(`:`)){let e=Ve(t,Be(n),r);return t.hasChildren=!0,e}ze.test(n)&&Le(n);let i=e.options.caseSensitive?n:n.toLowerCase();return i in t.staticChildren||(t.staticChildren[i]=w(),t.hasChildren=!0),t.staticChildren[i]}function Je(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:Ee};let a=[],o=[],s=new RegExp(String.raw`[:*](${S})(?:<[^>]*>)?(\?)?`,`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=>ye(e,n,!0):_e[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 Ye(e,t){let n=[];e.length>0&&n.push(...e);for(let e of t)e.paramMeta.queryParams.length>0&&n.push(...e.paramMeta.queryParams);return n.length===0?Ce:n}function Xe(e){let t=new Map;for(let n of e)for(let[e,r]of n.paramMeta.constraintPatterns)t.set(e,r);return t.size===0?Te:t}function Ze(e){return typeof e==`string`?e:typeof e==`object`?JSON.stringify(e):String(e)}var Qe=class{get options(){return this.#e}#e;#t=w();#n=new Map;#r=new Map;#i={cleanPath:``,normalized:``,queryString:void 0};#a=[];#o=``;#s;#c;constructor(e){this.#e={caseSensitive:e.caseSensitive??!0,strictTrailingSlash:e.strictTrailingSlash??!1,strictQueryParams:e.strictQueryParams??!1,urlParamsEncoding:e.urlParamsEncoding??`default`,parseQueryString:e.parseQueryString,buildQueryString:e.buildQueryString},this.#s=this.#e.caseSensitive,this.#c=this.#e.urlParamsEncoding===`none`?null:ve[this.#e.urlParamsEncoding]}registerTree(e){this.#a=e.paramMeta.queryParams,ke({root:this.#t,options:this.#e,routesByName:this.#n,staticCache:this.#r,rootQueryParams:this.#a},e,``,[],null)}match(e){if(!this.#p(e))return;let{cleanPath:t,normalized:n,queryString:r}=this.#i,i=this.#s?n:n.toLowerCase(),a=this.#r.get(i);if(a)return this.#e.strictTrailingSlash&&!this.#_(t,a)?void 0:r===void 0&&a.cachedResult?a.cachedResult:this.#h(a,{},r);let o={},s=this.#v(n,o);if(s&&!(this.#e.strictTrailingSlash&&!this.#_(t,s))&&this.#x(o)&&!(s.hasConstraints&&!this.#S(o,s)))return this.#h(s,o,r)}buildPath(e,t,n){let r=this.#n.get(e);if(!r)throw Error(`[SegmentMatcher.buildPath] '${e}' is not defined`);r.hasConstraints&&t&&this.#l(r,e,t);let i=this.#u(r,t),a=this.#d(i,n?.trailingSlash),o=this.#f(r,t,n?.queryParamsMode);return a+(o?`?${o}`:``)}getSegmentsByName(e){return this.#n.get(e)?.matchSegments}getMetaByName(e){return this.#n.get(e)?.meta}hasRoute(e){return this.#n.has(e)}#l(e,t,n){for(let[r,i]of e.constraintPatterns){let e=n[r];if(e!=null){let n=typeof e==`object`?JSON.stringify(e):String(e);if(!i.pattern.test(n))throw Error(`[SegmentMatcher.buildPath] '${t}' — param '${r}' value '${n}' does not match constraint '${i.constraint}'`)}}}#u(e,t){let n=e.buildStaticParts,r=e.buildParamSlots;if(r.length===0)return n[0];let i=n[0];for(let[e,a]of r.entries()){let r=t?.[a.paramName];if(r==null){if(!a.isOptional)throw Error(`[SegmentMatcher.buildPath] Missing required param '${a.paramName}'`);i.length>1&&i.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(Ze(r));i+=o+n[e+1]}return i}#d(e,t){return t===`always`&&!e.endsWith(`/`)?`${e}/`:t===`never`&&e!==`/`&&e.endsWith(`/`)?e.slice(0,-1):e}#f(e,t,n){if(!t||e.declaredQueryParams.length===0&&n!==`loose`)return``;let r={},i=!1;for(let n of e.declaredQueryParams)n in t&&(r[n]=t[n],i=!0);if(n===`loose`)for(let n in t)Object.hasOwn(t,n)&&!e.declaredQueryParamsSet.has(n)&&!e.buildParamNamesSet.has(n)&&(r[n]=t[n],i=!0);return i?this.#e.buildQueryString(r):``}#p(e){if(e===``&&(e=`/`),e.codePointAt(0)!==47)return!1;let t=this.#m(e);if(t===-2)return!1;t===-3&&(e=this.#o);let n=t>=0?e.slice(0,t):e,r=t>=0?e.slice(t+1):void 0;if(r!==void 0){let e=r.indexOf(`#`);e!==-1&&(r=r.slice(0,e))}let i=T(n);return this.#i.cleanPath=n,this.#i.normalized=i,this.#i.queryString=r,!0}#m(e){let t=!1;for(let n=0;n<e.length;n++){let r=e.codePointAt(n);if(r===35)return this.#o=e.slice(0,n),-3;if(r===63)return n;if(r>=128)return-2;if(r===47){if(t)return-2;t=!0}else t=!1}return-1}#h(e,t,n){if(!(n!==void 0&&!this.#g(e,t,n)))return{segments:e.matchSegments,params:t,meta:e.meta}}#g(e,t,n){let r;try{r=this.#e.parseQueryString(n)}catch{return!1}if(this.#e.strictQueryParams){let n=e.declaredQueryParamsSet;for(let e in r){if(!n.has(e))return!1;t[e]=r[e]}}else for(let e in r)t[e]=r[e];return!0}#_(e,t){return(e.length>1&&e.endsWith(`/`))===t.hasTrailingSlash}#v(e,t){return e.length===1?this.#t.slashChildRoute??this.#t.route:this.#y(this.#t,e,1,t)}#y(e,t,n,r){let i=e,a=t.length,o=this.#s;for(;n<=a;){let e=t.indexOf(`/`,n),s=e===-1?a:e,c=t.slice(n,s),l=o?c:c.toLowerCase(),u;if(l in i.staticChildren)u=i.staticChildren[l];else if(i.paramChild)u=i.paramChild.node,r[i.paramChild.name]=c;else if(i.splatChild)return this.#b(i.splatChild,t,n,r);else return;i=u,n=s+1}return i.slashChildRoute??i.route}#b(e,t,n,r){let i=e.node;if(!i.hasChildren)return r[e.name]=t.slice(n),i.route;let a={},o=this.#y(i,t,n,a);return o?(Object.assign(r,a),o):(r[e.name]=t.slice(n),i.route)}#x(e){let t=this.#c;if(!t)return!0;for(let n in e){let r=e[n];if(r.includes(`%`)){if(!Se(r))return!1;try{e[n]=t(r)}catch{return!1}}}return!0}#S(e,t){for(let[n,r]of t.constraintPatterns)if(!r.pattern.test(e[n]))return!1;return!0}};const $e=e=>{let t=e.indexOf(`%`),n=e.indexOf(`+`);if(t===-1&&n===-1)return e;let r=n===-1?e:e.replaceAll(`+`,` `);return t===-1?r:decodeURIComponent(r)},et=(e,t)=>{if(e===void 0)return t.boolean.decodeUndefined();let n=t.boolean.decodeRaw(e);if(n!==null)return n;let r=$e(e),i=t.number.decode(r);return i===null?t.boolean.decodeValue(r):i},D=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)},tt=(e,t,n)=>{if(t.length===0)return``;let r=`${e}${n}`,i=`${r}=${D(t[0])}`;for(let e=1;e<t.length;e++)i+=`&${r}=${D(t[e])}`;return i},nt={none:{encodeArray:(e,t)=>tt(e,t,``)},brackets:{encodeArray:(e,t)=>tt(e,t,`[]`)},index:{encodeArray:(e,t)=>{if(t.length===0)return``;let n=`${e}[0]=${D(t[0])}`;for(let r=1;r<t.length;r++)n+=`&${e}[${r}]=${D(t[r])}`;return n},indexed:!0},comma:{encodeArray:(e,t)=>{if(t.length===0)return``;let n=`${e}=${D(t[0])}`;for(let e=1;e<t.length;e++)n+=`,${D(t[e])}`;return n},decodeValue:e=>e.includes(`,`)?e.split(`,`):null}},rt={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}},it={default:{encode:e=>e},hidden:{encode:()=>``}},at={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}},ot=(e,t,n,r)=>({boolean:rt[t],null:it[n],number:at[r],array:nt[e]}),st={boolean:rt.auto,null:it.default,number:at.auto,array:nt.none},O={arrayFormat:`none`,booleanFormat:`auto`,nullFormat:`default`,numberFormat:`auto`},ct={...O,strategies:st},lt=e=>{if(!e||e.arrayFormat===void 0&&e.booleanFormat===void 0&&e.nullFormat===void 0&&e.numberFormat===void 0)return ct;let t=e.arrayFormat??O.arrayFormat,n=e.booleanFormat??O.booleanFormat,r=e.nullFormat??O.nullFormat,i=e.numberFormat??O.numberFormat;return{arrayFormat:t,booleanFormat:n,nullFormat:r,numberFormat:i,strategies:ot(t,n,r,i)}},k=e=>encodeURIComponent(e),ut=(e,t,n)=>{let r=k(e);switch(typeof t){case`string`:case`number`:return`${r}=${k(t)}`;case`boolean`:return n.strategies.boolean.encode(r,t);case`object`:return t===null?n.strategies.null.encode(r):Array.isArray(t)?n.strategies.array.encodeArray(r,t):`${r}=${k(t)}`;default:return`${r}=${k(t)}`}},dt=e=>{let t=e.indexOf(`?`);return t===-1?e:e.slice(t+1)};function A(e,t,n){t===`__proto__`?Object.defineProperty(e,t,{value:n,writable:!0,enumerable:!0,configurable:!0}):e[t]=n}function ft(e,t,n,r){if(!Object.hasOwn(e,t)){A(e,t,r?[n]:n);return}let i=e[t];Array.isArray(i)?i.push(n):A(e,t,[i,n])}function pt(e,t,n,r,i){return et(r?e.slice(t+1,n):void 0,i)}function mt(e,t,n){let r=t+1,i=0,a=!1;for(;r<n;){let t=e.codePointAt(r);if(t===93)return a?i:null;if(t!==void 0&&t>=48&&t<=57){i=i*10+(t-48),a=!0,r++;continue}return null}return null}function ht(e,t,n){let{searchPart:r,nameEnd:i,nameSourceEnd:a,eqPos:o,end:s,hasValue:c,decodedName:l}=e,u=mt(r,i,a);if(u===null)return!1;let d=pt(r,o,s,c,t),f=n.get(l);return f===void 0?n.set(l,[[u,d]]):f.push([u,d]),!0}function gt(e,t,n,r,i,a){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=$e(e.slice(t,l));if(!(a!==void 0&&u&&ht({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)ft(r,d,et(e,i),!0);return}}ft(r,d,pt(e,o,n,s,i),u)}}const _t=(e,t)=>{let n=dt(e);if(n===``||n===`?`)return{};let r={};return vt(n,r,lt(t).strategies),r};function vt(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),gt(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]),A(t,e,n.map(e=>e[1]))}const yt=(e,t)=>{let n=Object.keys(e);if(n.length===0)return``;let r=lt(t),i=[];for(let t of n){let n=e[t];if(n===void 0)continue;let a=ut(t,n,r);a&&i.push(a)}return i.join(`&`)};function j(e,t){let n=e.path,r=n.startsWith(`~`),i=r?n.slice(1):n,a={name:e.name,path:i,absolute:r,children:[],parent:t};if(e.children)for(let t of e.children){let e=j(t,a);a.children.push(e)}return a}function bt(e,t,n){let r=j({name:e,path:t},null);for(let e of n){let t=j(e,r);r.children.push(t)}return r}const xt=Object.freeze(new Map),St=Object.freeze([]);function Ct(e){return e.parent?.name?`${e.parent.fullName}.${e.name}`:e.name}function wt(e){let t=new Map;for(let n of e)t.set(n.name,n);return t}function Tt(e,t,n){let r=[],i=[];for(let a of e){let e=Et(a,t,n);r.push(e),e.absolute||i.push(e)}return{childrenMap:wt(r),nonAbsoluteChildren:i}}function Et(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=Ct(a),e.children.length===0)a.children=xt,a.nonAbsoluteChildren=St;else{let{childrenMap:t,nonAbsoluteChildren:r}=Tt(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 Dt(e,t=!0){return Et(e,null,t)}function Ot(e,t){let n=[],r={add(e){return n.push(e),r},addMany(e){return n.push(...e),r},build(r){return Dt(bt(e,t,n),!r?.skipFreeze)}};return r}function kt(e,t,n,r){return Ot(e,t).addMany(n).build(r)}function M(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(),M)),n}function At(e){return Array.from(e.children.values(),M)}function jt(e){let t=e?.queryParams;return new Qe({...e?.caseSensitive!==void 0&&{caseSensitive:e.caseSensitive},...e?.strictTrailingSlash!==void 0&&{strictTrailingSlash:e.strictTrailingSlash},...e?.strictQueryParams!==void 0&&{strictQueryParams:e.strictQueryParams},...e?.urlParamsEncoding!==void 0&&{urlParamsEncoding:e.urlParamsEncoding},parseQueryString:e=>_t(e,t),buildQueryString:e=>yt(e,t)})}RegExp(`[:*](?!${S})`);const Mt={defaultRoute:``,defaultParams:{},trailingSlash:`preserve`,queryParamsMode:`loose`,queryParams:O,urlParamsEncoding:`default`,allowNotFound:!0,rewritePathOnMatch:!0};function Nt(e){Object.freeze(e);for(let t of Object.values(e))t&&typeof t==`object`&&t.constructor===Object&&Nt(t);return e}function Pt(e,t){return typeof e==`function`?e(t):e}function Ft(e){if(!e||typeof e!=`object`||Array.isArray(e))throw TypeError(`[router.constructor] options must be a plain object`)}var It=class{#e;constructor(e={}){this.#e=Nt({...Mt,...e})}static validateOptionsIsObject(e){Ft(e)}get(){return this.#e}};function Lt(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(!Lt(e[n],t[n]))return!1;return!0}return!1}const Rt=new WeakMap;function zt(e){return Rt.get(e)}function Bt(e,t){Rt.set(e,t)}var Vt=class{#e=void 0;#t=void 0;#n;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}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===m?m:Object.freeze({...t});let c={name:e,params:s,path:n??this.#n.buildPath(e,t),context:{},...!i&&{transition:g}};return r&&Bt(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.#n.getUrlParams(e.name);for(let r of n)if(!Lt(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)||!Lt(e.params[n],t.params[n]))return!1;return!0}};const Ht={[d.ROUTER_START]:f.ROUTER_START,[d.ROUTER_STOP]:f.ROUTER_STOP,[d.TRANSITION_SUCCESS]:f.TRANSITION_SUCCESS,[d.TRANSITION_START]:f.TRANSITION_START,[d.TRANSITION_LEAVE_APPROVE]:f.TRANSITION_LEAVE_APPROVE,[d.TRANSITION_ERROR]:f.TRANSITION_ERROR,[d.TRANSITION_CANCEL]:f.TRANSITION_CANCEL},Ut=Object.keys(Ht),N=`router.usePlugin`;function Wt(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 Gt=class e{#e=new Set;#t=new Set;#n;#r=null;static validatePlugin(e){Wt(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(N,`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(N,`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(N,`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 Ut)e in n&&(typeof n[e]==`function`?(r.push(this.#n.addEventListener(Ht[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 Kt=()=>!0,qt=()=>!1,Jt=()=>Kt,Yt=()=>qt;function Xt(e){return e?Jt:Yt}var Zt=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}preflightHandlerLimit(e,t,n){let r=this.#c?.();if(!r)return;let i=(e,t,i)=>{let{definition:a,external:o}=this.#d(e),s=0;for(let e of t)(n?o.has(e):a.has(e)||o.has(e))||s++;if(s===0)return;let c=n?o.size:this.getHandlerCount(e);r.lifecycle.validateHandlerLimit(c+s-1,i)};i(`activate`,e,`canActivate`),i(`deactivate`,t,`canDeactivate`)}addCanActivate(e,t,n=!1,r){this.#l(`activate`,e,t,n,`canActivate`,r)}addCanDeactivate(e,t,n=!1,r){this.#l(`deactivate`,e,t,n,`canDeactivate`,r)}clearCanActivate(e,t=!1){let n=this.#e.delete(e),r=t?!1:this.#t.delete(e);(n||r)&&this.#u(`activate`,e)}clearCanDeactivate(e,t=!1){let n=this.#n.delete(e),r=t?!1:this.#r.delete(e);(n||r)&&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}compileGuardFactory(e,t){let n=typeof e==`boolean`?Xt(e):e,r=this.#s.compileFactory(n);if(typeof r!=`function`)throw TypeError(`[router.${t}] Factory must return a function, got ${typeof r}`);return r}#l(e,t,n,r,i,a){let o=this.#d(e),s=e===`activate`?this.#a:this.#i,c=r?o.definition:o.external,l=r?o.external:o.definition;if(c.has(t)||l.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 u=typeof n==`boolean`?Xt(n):n,d=c.get(t);c.set(t,u);try{let e=a??this.compileGuardFactory(u,i);s.set(t,e)}catch(n){throw d===void 0?c.delete(t):c.set(t,d),this.#u(e,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,a){let o=e.get(t);if(!o)return!0;try{let e=o(n,r);return typeof e==`boolean`?e:(this.#c?.()?.lifecycle.warnAsyncGuardSync(t,a),!1)}catch(e){return i.warn(`router.${a}`,`Guard for "${t}" threw — treated as navigation-blocking (returned false)`,e),!1}}};const Qt=new Set([`name`,`path`,`children`,`canActivate`,`canDeactivate`,`forwardTo`,`encodeParams`,`decodeParams`,`defaultParams`]);function P(){return{decoders:Object.create(null),encoders:Object.create(null),defaultParams:Object.create(null),forwardMap:Object.create(null),forwardFnMap:Object.create(null)}}function $t(e,t){for(let n of Object.keys(t))Object.assign(e[n],t[n])}function en(e,t){for(let n in e)if(e[n]!==t[n])return!1;return!0}function tn(e,t,n){for(let r in e)if(!(r in n)&&e[r]!==t[r])return!1;return!0}function nn(e,t){if(!t||!rn(e,t))return e;let n={};for(let r in e)t[r]!==`query`&&(n[r]=e[r]);return n}function rn(e,t){for(let n in e)if(t[n]===`query`)return!0;return!1}function F(e){let t={name:e.name,path:e.path};return e.children&&(t.children=e.children.map(e=>F(e))),t}function an(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}.`)&&an(i.children,t,a))return!0}return!1}function on(e,t){for(let n of Object.keys(e))t(n)&&delete e[n]}function sn(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 cn(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 ln(e,t,n){let r=kt(``,t,e),i=jt(n);return i.registerTree(r),{tree:r,matcher:i}}function I(e){let t=ln(e.definitions,e.rootPath,e.matcherOptions);e.tree=t.tree,e.matcher=t.matcher,e.urlParamsCache.clear()}function un(e){I(e),e.resolvedForwardMap=L(e.config)}function dn(e){fn(e),I(e)}function fn(e){e.definitions.length=0,Object.assign(e.config,P()),e.resolvedForwardMap=Object.create(null),e.routeCustomFields=Object.create(null)}function L(e){let t=Object.create(null);for(let n of Object.keys(e.forwardMap))t[n]=cn(n,e.forwardMap);return t}function pn(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 mn(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}".`)}pn(e.forwardTo,t),typeof e.forwardTo==`string`?n.forwardMap[t]=e.forwardTo:n.forwardFnMap[t]=e.forwardTo}function hn(e,t,n,r,i,a){let o=Object.fromEntries(Object.entries(e).filter(([e])=>!Qt.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&&mn(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 gn(e,t,n,r,i,a=``){for(let o of e){let e=a?`${a}.${o.name}`:o.name;hn(o,e,t,n,r,i),o.children&&gn(o.children,t,n,r,i,e)}}function _n(e){let t=P();return $t(t,e),t}function vn(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]:vn(n,t,i)}})}function R(e,t,n){for(let r of e){let e=t?`${t}.${r.name}`:r.name;n(e),r.children&&R(r.children,e,n)}}function yn(e,t,n){let r=new Set;R(e,t,e=>{if(r.has(e))throw Error(`[router.${n}] Duplicate route "${e}" in batch`);r.add(e)})}function bn(e,t){if(e.startsWith(`@@`))throw Error(`[router.${t}] Route name "${e}" uses the reserved "@@" prefix. Routes with this prefix are internal and cannot be modified through the public API.`)}function z(e,t){for(let n of e)bn(n.name,t),n.children&&z(n.children,t)}function xn(e,t,n){let r=new Map,i=(e,t)=>{for(let a of e){let e=r.get(t);if(e?.has(a.path))throw Error(`[router.${n}] Path "${a.path}" is already defined`);e?e.add(a.path):r.set(t,new Set([a.path])),a.children&&i(a.children,t?`${t}.${a.name}`:a.name)}};i(e,t)}function Sn(e,t,n){if(z(t,`addRoute`),n!==void 0&&!e.matcher.hasRoute(n))throw Error(`[router.addRoute] Parent route "${n}" does not exist`);R(t,n??``,t=>{if(e.matcher.hasRoute(t))throw Error(`[router.addRoute] Route "${t}" already exists`)}),yn(t,n??``,`addRoute`),xn(t,n??``,`addRoute`)}function Cn(e,t,n,r,i,a,o){let s=new Map,c=new Map;gn(t,n,r,s,c,i);let l=L(n),{tree:u,matcher:d}=ln(e,a,o);return{definitions:e,config:n,routeCustomFields:r,pendingCanActivate:s,pendingCanDeactivate:c,tree:u,matcher:d,resolvedForwardMap:l}}function wn(e,t,n){return Cn(vn(e.definitions,t.map(e=>F(e)),n===void 0?[]:n.split(`.`)),t,_n(e.config),Object.assign(Object.create(null),e.routeCustomFields),n??``,e.rootPath,e.matcherOptions)}function Tn(e,t,n){return Cn(e.map(e=>F(e)),e,P(),Object.create(null),``,t,n)}function En(e,t,n){let r=[];for(let[i,a]of e)r.push([i,a,t(a,n)]);return r}function Dn(e,t){let n=e.depsStore,r=En(t.pendingCanActivate,n.compileGuard,`canActivate`),i=En(t.pendingCanDeactivate,n.compileGuard,`canDeactivate`);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;for(let[e,t,i]of r)n.addActivateGuard(e,t,i);for(let[e,t,r]of i)n.addDeactivateGuard(e,t,r)}function On(e,t,n,r){let{forwardTo:i,defaultParams:a,decodeParams:o,encodeParams:s,canActivate:c,canDeactivate:l}=r,u=i===void 0?void 0:kn(n,i,e.config),d=An(e,n,r),f=c==null?void 0:t.compileGuardFactory(c,`canActivate`),p=l==null?void 0:t.compileGuardFactory(l,`canDeactivate`);return t.preflightHandlerLimit(f===void 0?[]:[n],p===void 0?[]:[n],!1),d!==void 0&&(Object.keys(d).length>0?e.routeCustomFields[n]=d:delete e.routeCustomFields[n]),u!==void 0&&(e.config.forwardMap=u.forwardMap,e.config.forwardFnMap=u.forwardFnMap,e.resolvedForwardMap=u.resolved),jn(e,n,{defaultParams:a,decodeParams:o,encodeParams:s}),Mn(t,`activate`,n,c,f),Mn(t,`deactivate`,n,l,p),{forwardTo:i,defaultParams:a,decodeParams:o,encodeParams:s}}function kn(e,t,n){pn(t,e);let r=Object.assign(Object.create(null),n.forwardMap),i=Object.assign(Object.create(null),n.forwardFnMap);return t===null?(delete r[e],delete i[e]):typeof t==`string`?(delete i[e],r[e]=t):(delete r[e],i[e]=t),{forwardMap:r,forwardFnMap:i,resolved:L({...n,forwardMap:r})}}function An(e,t,n){let r;for(let i of Object.keys(n)){if(Qt.has(i))continue;let a=n[i];a!==void 0&&(r??={...e.routeCustomFields[t]},a===null?delete r[i]:r[i]=a)}return r}function jn(e,t,n){if(n.defaultParams!==void 0&&(n.defaultParams===null?delete e.config.defaultParams[t]:e.config.defaultParams[t]=n.defaultParams),n.decodeParams!==void 0)if(n.decodeParams===null)delete e.config.decoders[t];else{let r=n.decodeParams;e.config.decoders[t]=e=>r(e)??e}if(n.encodeParams!==void 0)if(n.encodeParams===null)delete e.config.encoders[t];else{let r=n.encodeParams;e.config.encoders[t]=e=>r(e)??e}}function Mn(e,t,n,r,i){r!==void 0&&(t===`activate`?r===null?e.clearCanActivate(n,!0):e.addCanActivate(n,r,!0,i):r===null?e.clearCanDeactivate(n,!0):e.addCanDeactivate(n,r,!0,i))}function Nn(e,t){let n=Tn(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 B=[];Object.freeze(B);function Pn(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 Fn=new Set([`string`,`number`,`boolean`]);function In(e){return Fn.has(typeof e)}function Ln(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(In(t)&&In(i)&&String(t)!==String(i))return!1}return!0}function Rn(e,t,n,r,i,a){for(let o=0;o<a;o++){let a=r[o];if(a!==i[o]||!Ln(a,e,t,n))return o}return a}const zn=new Map;function V(e){let t=zn.get(e);if(t)return t;let n=Bn(e);return Object.freeze(n),zn.set(e,n),n}function Bn(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]:Pn(e)}let H,U,W=null,Vn,Hn,G=null;function Un(e,t){if(!t)return{intersection:``,toActivate:V(e.name),toDeactivate:B};let n=zt(e),r=zt(t);if(!n&&!r)return{intersection:``,toActivate:V(e.name),toDeactivate:V(t.name)};let i=V(e.name),a=V(t.name),o=Math.min(a.length,i.length),s=Rn(n??r,e,t,i,a,o),c;if(s>=a.length)c=B;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 K(e,t){if(W!==null&&e===H&&t===U)return W;if(G!==null&&e===Vn&&t===Hn)return G;let n=Un(e,t);return Vn=H,Hn=U,G=W,H=e,U=t,W=n,n}function Wn(e){let t=[];for(let n of e)for(let e of n.paramMeta.urlParams)t.push(e);return t}function Gn(e,t){return{name:t??e.segments.at(-1).fullName,params:e.params,meta:e.meta}}var Kn=class{#e;#t;#n;get#r(){return this.#e.depsStore}constructor(e=[],t){this.#e=Nn(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}=K(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,I(this.#e)}hasRoute(e){return this.#e.matcher.hasRoute(e)}clearRoutes(){dn(this.#e)}buildPath(e,t,n){if(e===u.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.#a(n))}matchPath(e,t){let n=t,r=this.#e.matcher.match(e);if(!r)return;let{name:i,params:a,meta:o}=Gn(r),s=typeof this.#e.config.decoders[i]==`function`?this.#e.config.decoders[i](a):a,{name:c,params:l}=this.#r.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=sn(e,u))}return this.#r.makeState(c,l,u,o)}forwardState(e,t){if(Object.hasOwn(this.#e.config.forwardFnMap,e)){let n=this.#i(e,t),r=this.#e.config.forwardFnMap[e],i=this.#o(e,r,t);return{name:i,params:this.#i(i,n)}}let n=this.#e.resolvedForwardMap[e]??e;if(n!==e&&Object.hasOwn(this.#e.config.forwardFnMap,n)){let r=this.#i(e,t),i=this.#e.config.forwardFnMap[n],a=this.#o(n,i,t);return{name:a,params:this.#i(a,r)}}if(n!==e){let r=this.#i(e,t);return{name:n,params:this.#i(n,r)}}return{name:e,params:this.#i(e,t)}}buildStateResolved(e,t){let n=this.#e.matcher.getSegmentsByName(e);if(n)return Gn({segments:n,params:t,meta:this.#e.matcher.getMetaByName(e)},e)}isActiveRoute(e,t={},n=!1,r=!0){let i=this.#r.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.#r.areStatesEqual(n,i,r)}if(!a.startsWith(`${e}.`))return!1;let s=i.params;return en(t,s)?o?tn(r?nn(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?Wn(n):[];return this.#e.urlParamsCache.set(e,r),r}getStore(){return this.#e}#i(e,t){return Object.hasOwn(this.#e.config.defaultParams,e)?{...this.#e.config.defaultParams[e],...t}:t}#a(e){if(this.#t)return e!==this.#n&&i.warn(`router.buildPath`,"`options` differs from the cached source reference; router options are immutable per router instance, so the first-cached buildPath options are reused (#957)."),this.#t;this.#n=e;let t=e?.trailingSlash;return this.#t=Object.freeze({trailingSlash:t===`never`||t===`always`?t:void 0,queryParamsMode:e?.queryParamsMode}),this.#t}#o(e,t,n){let r=new Set([e]),i=t(this.#r.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.#r.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 qn=new Set(Object.values(c)),Jn=new Set([`code`,`segment`,`path`]),Yn=new Set([`setCode`,`setErrorInstance`,`setAdditionalFields`,`hasField`,`getField`,`toJSON`]);var q=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(Jn.has(e))throw TypeError(`[RouterError] Cannot set reserved property "${e}"`);Yn.has(e)||(this[e]=t)}}setCode(e){this.code=e,qn.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(Jn.has(t))throw TypeError(`[RouterError.setAdditionalFields] Cannot set reserved property "${t}"`);Yn.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 Xn=new q(c.ROUTER_NOT_STARTED),Zn=new q(c.ROUTE_NOT_FOUND),Qn=new q(c.SAME_STATES),J=Promise.reject(Xn),$n=Promise.reject(Zn),er=Promise.reject(Qn);J.catch(()=>{}),$n.catch(()=>{}),er.catch(()=>{});function tr(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 nr({signal:e,...t}){return t}function rr(e,t){let{toState:n,fromState:r,opts:i,toDeactivate:a,toActivate:o,intersection:s}=t;if(n.name!==u.UNKNOWN_ROUTE&&!e.hasRoute(n.name)){let t=new q(c.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=tr(r,i,a,o,s);let l=Object.freeze(n);e.setState(l);let d=i.signal===void 0?i:nr(i);return e.sendTransitionDone(l,r,d),l}function ir(e,t,n,r){let i=t;i.code===c.TRANSITION_CANCELLED||i.code===c.ROUTE_NOT_FOUND||e.sendTransitionFail(n,r,i)}function Y(e,t,n){if(e instanceof DOMException&&e.name===`AbortError`)throw new q(c.TRANSITION_CANCELLED);if(e instanceof q&&e.code===c.TRANSITION_CANCELLED)throw e;ar(e,t,n)}function ar(e,t,n){throw e instanceof q?(e.setCode(t),e):new q(t,sr(e,n))}const or=new Set([`code`,`segment`,`path`,`then`]);function sr(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))or.has(n)||(t[n]=r);return{...n,...t}}return n}async function cr(e,t,n){let r;try{r=await e}catch(e){Y(e,t,n);return}if(!r)throw new q(t,{segment:n})}async function lr(e,t,n,r,i,a,o,s,l,u){await cr(l,n,u);for(let l=s;l<t.length;l++){if(!o())throw new q(c.TRANSITION_CANCELLED);let s=t[l],u=e.get(s);if(!u)continue;let d=!1;try{d=u(r,i,a)}catch(e){Y(e,n,s)}if(d instanceof Promise){await cr(d,n,s);continue}if(!d)throw new q(n,{segment:s})}}async function ur(e,t,n,r,i,a,o,s,l){if(await e,!s())throw new q(c.TRANSITION_CANCELLED);let u=l();if(u!==void 0&&(await u,!s()))throw new q(c.TRANSITION_CANCELLED);if(r){let e=X(t,n,c.CANNOT_ACTIVATE,i,a,o,s);if(e!==void 0&&await e,!s())throw new q(c.TRANSITION_CANCELLED)}}function dr(e,t,n,r,i,a,o,s,l,u,d){if(i){let i=X(e,n,c.CANNOT_DEACTIVATE,o,s,l,u);if(i!==void 0)return ur(i,t,r,a,o,s,l,u,d)}if(!u())throw new q(c.TRANSITION_CANCELLED);let f=d();if(f!==void 0)return fr(f,a?t:void 0,r,o,s,l,u);if(a)return X(t,r,c.CANNOT_ACTIVATE,o,s,l,u)}async function fr(e,t,n,r,i,a,o){if(await e,!o())throw new q(c.TRANSITION_CANCELLED);if(t!==void 0){let e=X(t,n,c.CANNOT_ACTIVATE,r,i,a,o);if(e!==void 0&&await e,!o())throw new q(c.TRANSITION_CANCELLED)}}function X(e,t,n,r,i,a,o){for(let[s,l]of t.entries()){if(!o())throw new q(c.TRANSITION_CANCELLED);let u=e.get(l);if(!u)continue;let d=!1;try{d=u(r,i,a)}catch(e){Y(e,n,l)}if(d instanceof Promise)return lr(e,t,n,r,i,a,o,s+1,d,l);if(!d)throw new q(n,{segment:l})}}const pr=Object.freeze([u.UNKNOWN_ROUTE]),mr=Object.freeze({replace:!0});function hr(e,t){return t?.name===u.UNKNOWN_ROUTE&&!e.replace?{...e,replace:!0}:e}function gr(e,t,n){return!!e&&!t.reload&&!t.force&&e.path===n.path}var _r=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,J;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(),Zn),this.lastSyncRejected=!0,$n)}navigateToState(e,t){this.lastSyncResolved=!1;let n=this.#e;if(!n.canNavigate())return this.lastSyncRejected=!0,J;if(e.name!==u.UNKNOWN_ROUTE&&!n.hasRoute(e.name)){let t=new q(c.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 q(c.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 q(c.ROUTE_NOT_FOUND,{routeName:`defaultRoute resolved to empty`}))}navigateToNotFound(e){this.#c();let t=this.#e.getState(),n=t?V(t.name).toReversed():[];Object.freeze(n);let r={deactivated:n,activated:pr,intersection:``};Object.freeze(r);let i={phase:`activating`,...t&&{from:t.name},reason:`success`,replace:!0,segments:r};Object.freeze(i);let a={name:u.UNKNOWN_ROUTE,params:m,path:e,transition:i,context:{}};return Object.freeze(a),this.#e.setState(a),this.#e.emitTransitionSuccess(a,t,mr),a}abortCurrentController(e){this.#t?.abort(e??new q(c.TRANSITION_CANCELLED)),this.#t=null}#r(e,t){let n=this.#e,r,i=!1,a=null;try{if(r=n.getState(),t=hr(t,r),gr(r,t,e))return n.emitTransitionError(e,r,Qn),this.lastSyncRejected=!0,er;this.#c(t.signal);let o=++this.#n;n.startTransition(e,r),i=!0;let[s,l]=n.getLifecycleFunctions(),d=e.name===u.UNKNOWN_ROUTE,f=K(e,r),{toDeactivate:p,toActivate:m,intersection:h}=f,g=r&&!t.forceDeactivate&&p.length>0,_=!d&&m.length>0,v=s.size>0||l.size>0,y=e;if(!v){let e=this.#o(y,r,o,t,f,s);if(e!==void 0)return e}if(v){a=new AbortController,this.#t=a;let i=()=>this.#n===o&&n.isActive(),u=a.signal,d=dr(s,l,p,m,!!g,_,e,r,u,i,()=>{if(n.sendLeaveApprove(y,r),n.hasLeaveListeners())return n.awaitLeaveListeners(y,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 q(c.TRANSITION_CANCELLED);this.#s(a,!1)}let ee=rr(n,{toState:e,fromState:r,opts:t,toDeactivate:p,toActivate:m,intersection:h,canDeactivateFunctions:s});return this.lastSyncResolved=!0,Promise.resolve(ee)}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,l,u=!1,d,f=new Promise(e=>{if(n.signal.aborted){e();return}l=()=>{e()},n.signal.addEventListener(`abort`,l,{once:!0})});e.catch(()=>{});try{if(o){if(o.aborted)throw new q(c.TRANSITION_CANCELLED,{reason:o.reason});s=()=>{i.cancelNavigation(o.reason)},o.addEventListener(`abort`,s,{once:!0})}if(await Promise.race([e,f]),!a())throw new q(c.TRANSITION_CANCELLED);let n=rr(i,t);return u=!0,n}catch(e){throw d=e,ir(i,e,t.toState,t.fromState),e}finally{s&&o?.removeEventListener(`abort`,s),l&&n.signal.removeEventListener(`abort`,l),this.#s(n,!u,d)}}#a(e,t,n,r,i){t&&this.#s(t,!0,e),n&&r&&ir(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),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);this.#s(s,!1);return}}#s(e,t,n){t&&e.abort(n),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.#e.cancelNavigation()),e?.aborted)throw new q(c.TRANSITION_CANCELLED,{reason:e.reason})}};const vr=Object.freeze({replace:!0});var yr=class{#e;setDependencies(e){this.#e=e}async start(e){let t=this.#e,n=t.getOptions();if(typeof e!=`string`)throw TypeError(`[router.start] path must be a string, got ${typeof e}`);let r=t.matchPath(e);if(!r&&!n.allowNotFound){let n=new q(c.ROUTE_NOT_FOUND,{path:e});throw t.emitTransitionError(void 0,void 0,n),n}return t.completeStart(),r?t.navigateToState(r,vr):t.navigateToNotFound(e)}stop(){this.#e.clearState()}};const Z=`TREE_CHANGED`;function Q(e){return e instanceof Error?e:Error(String(e))}function br(e,t,n){return new Promise((r,i)=>{let a=()=>{i(Q(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(Q(t));return}let o=e.find(e=>e.status===`rejected`);if(o!==void 0){i(Q(o.reason));return}r()})})}var xr=class{#e;#t;#n;#r;#i=[];#a=0;#o;#s;#c;#l;#u;constructor(e){this.#e=e.routerFSM,this.#t=e.emitter,this.#n=e.onListenerError,this.#r=e.abortController,this.#o=void 0,this.#f()}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(f.ROUTER_START)}emitRouterStop(){this.#t.emit(f.ROUTER_STOP)}emitTransitionStart(e,t){this.#a++;try{this.#t.emit(f.TRANSITION_START,e,t)}finally{this.#a--}}emitTransitionSuccess(e,t,n){this.#a++;try{this.#t.emit(f.TRANSITION_SUCCESS,e,t,n)}finally{this.#a--}}emitTransitionError(e,t,n){this.#a++;try{this.#t.emit(f.TRANSITION_ERROR,e,t,n)}finally{this.#a--}}emitTransitionCancel(e,t){this.#a++;try{this.#t.emit(f.TRANSITION_CANCEL,e,t)}finally{this.#a--}}emitTransitionLeaveApprove(e,t){this.#a++;try{this.#t.emit(f.TRANSITION_LEAVE_APPROVE,e,t)}finally{this.#a--}}isProcessing(){return this.#a>0}emitTreeChanged(e){this.#t.emit(Z,e)}isEmittingTreeChanged(){return this.#t.isDispatching(Z)}subscribeTreeChanged(e){if(this.isDisposed())throw new q(c.ROUTER_DISPOSED);return this.#t.on(Z,t=>{e(t)})}treeChangedListenerCount(){return this.#t.listenerCount(Z)}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.#o=e,this.#e.forceState(_.TRANSITION_STARTED),this.emitTransitionStart(e,t)}sendComplete(e,t,n={}){this.#e.forceState(_.READY),this.emitTransitionSuccess(e,t,n),this.#o=void 0}sendLeaveApprove(e,t){this.#e.forceState(_.LEAVE_APPROVED),this.emitTransitionLeaveApprove(e,t)}sendFail(e,t,n){this.#s=e,this.#c=t,this.#l=n,this.#e.send(v.FAIL),this.#o=void 0}sendFailSafe(e,t,n){this.isReady()?this.sendFail(e,t,n):this.emitTransitionError(e,t,n)}sendCancel(e,t,n){this.#s=e,this.#c=t,this.#u=n,this.#e.send(v.CANCEL),this.#o=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}addEventListener(e,t){return this.#t.on(e,t)}subscribe(e){if(this.isDisposed())throw new q(c.ROUTER_DISPOSED);return this.#t.on(f.TRANSITION_SUCCESS,(t,n)=>{let r=e({route:t,previousRoute:n});r!=null&&typeof r.then==`function`&&Promise.resolve(r).catch(e=>{this.#n(f.TRANSITION_SUCCESS,e)})})}subscribeLeave(e){if(this.isDisposed())throw new q(c.ROUTER_DISPOSED);return this.#i.push(e),()=>{let t=this.#i.indexOf(e);t!==-1&&this.#i.splice(t,1)}}hasLeaveListeners(){return this.#i.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.#i];this.#a++;try{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)}}finally{this.#a--}if(i===void 0){if(a!==void 0)throw Q(a);return}return br(i,a,n)}clearAll(){this.#t.clearAll(),this.#i.length=0}setLimits(e){this.#t.setLimits(e)}sendCancelIfPossible(e,t){let n=this.#o;!this.canCancel()||n===void 0||this.sendCancel(n,e,t)}#d(){this.emitTransitionError(this.#s,this.#c,this.#l),this.#s=void 0,this.#c=void 0,this.#l=void 0}#f(){let e=this.#e;e.on(_.STARTING,v.STARTED,()=>{this.emitRouterStart()}),e.on(_.READY,v.STOP,()=>{this.emitRouterStop()});let t=()=>{let e=this.#s,t=this.#u;this.#u=void 0,this.#r(t),e!==void 0&&this.emitTransitionCancel(e,this.#c)};e.on(_.TRANSITION_STARTED,v.CANCEL,t),e.on(_.LEAVE_APPROVED,v.CANCEL,t),e.on(_.LEAVE_APPROVED,v.FAIL,()=>{this.#d()}),e.on(_.STARTING,v.FAIL,()=>{this.#d()}),e.on(_.READY,v.FAIL,()=>{this.#d()}),e.on(_.TRANSITION_STARTED,v.FAIL,()=>{this.#d()})}};const Sr=new q(c.ROUTER_ALREADY_STARTED),Cr=new Set([`all`,`warn-error`,`error-only`,`none`]);function wr(e){return typeof e==`string`&&Cr.has(e)}function Tr(e){return typeof e==`string`?`"${e}"`:typeof e==`object`?JSON.stringify(e):String(e)}function Er(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&&!wr(t.level))throw TypeError(`Invalid logger level: ${Tr(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 Dr=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})}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,n)=>{this.routeLifecycle.addCanActivate(e,t,!0,n)},addDeactivateGuard:(e,t,n)=>{this.routeLifecycle.addCanDeactivate(e,t,!0,n)},compileGuard:(e,t)=>this.routeLifecycle.compileGuardFactory(e,t),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=x(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=Pt(e.defaultRoute,e=>this.dependenciesStore.dependencies[e]),i=Pt(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:e=>{this.eventBus.sendCancelIfPossible(this.state.get(),e)},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 Or(e){e.wireLimits(),e.wireRouteLifecycleDeps(),e.wireRoutesDeps(),e.wirePluginsDeps(),e.wireNavigationDeps(),e.wireLifecycleDeps(),e.wireStateDeps()}const kr=Object.freeze({}),Ar=new Set([c.SAME_STATES,c.TRANSITION_CANCELLED,c.ROUTER_NOT_STARTED,c.ROUTE_NOT_FOUND,c.CANNOT_ACTIVATE,c.CANNOT_DEACTIVATE]);function jr(e,t){i.error(`Router`,`Error in listener for ${e}:`,t)}var Mr=class a{#e;#t;#n;#r;#i;#a;#o;#s;#c;#l;constructor(n=[],o={},c={}){let{logger:l,...u}=o;l&&(Er(l),i.configure(l)),It.validateOptionsIsObject(o),te(c),n.length>0&&b(n),this.#e=new It(u),this.#t=re(u.limits),this.#n=ie(c),this.#r=new Vt,this.#i=new Kn(n,Nr(this.#e.get())),this.#a=new Zt,this.#o=new Gt,this.#s=new _r,this.#c=new yr;let d=ee(),f=new s({onListenerError:jr,onListenerWarn:(e,t)=>{i.warn(`router.addEventListener`,`Event "${e}" has ${t} listeners — possible memory leak`)}});this.#l=new xr({routerFSM:d,emitter:f,onListenerError:jr,abortController:e=>{this.#s.abortCurrentController(e)}}),Or(new Dr({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(),isEmitting:()=>this.#l.isEmittingTreeChanged()},buildPath:r(`buildPath`,(e,t)=>this.#i.buildPath(e,t??m,this.#e.get()),p),emitTransitionError:e=>{this.#l.sendFailSafe(void 0,this.#r.get(),e)},emitTransitionSuccess:(e,t,n)=>{this.#l.emitTransitionSuccess(e,t,n)},navigateToNotFound:e=>this.#s.navigateToNotFound(e),start:t(`start`,e=>this.#c.start(e),p),navigateToState:(e,t)=>{this.#m();let n=this.#s.navigateToState(e,t??kr);return this.#s.lastSyncResolved?this.#s.lastSyncResolved=!1:this.#s.lastSyncRejected?this.#s.lastSyncRejected=!1:a.#p(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,getCloneState:()=>({options:{...this.#e.get()},dependencies:{...this.#n.dependencies},pluginFactories: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,x(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),Kn.shouldUpdateNode(e)}isActive(){return this.#l.isActive()}start(e){if(!this.#l.canStart())return Promise.reject(Sr);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=>this.#h(e));return a.#p(r,a.#f),r}stop(){return 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.#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.#g()}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{let e=x(a),t=this.#i.getMetaForState(i),n=r.buildPath(i,e);o=this.#r.makeState(i,e,n,t,!0)}catch{return!1}let s=this.#r.get(),{toDeactivate:c,toActivate:l}=K(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 xr.validateSubscribeListener(e),this.#l.subscribe(e)}subscribeLeave(e){return xr.validateSubscribeLeaveListener(e),this.#l.subscribeLeave(e)}isLeaveApproved(){return this.#l.isLeaveApproved()}navigate(e,t,r){this.#m();let i=n(this);i.validator?.navigation.validateNavigateArgs(e),i.validator?.navigation.validateParams(t,`navigate`);let o=r??kr;i.validator?.navigation.validateNavigationOptions(o,`navigate`);let s=this.#s.navigate(e,t??m,o);return this.#s.lastSyncResolved?this.#s.lastSyncResolved=!1:this.#s.lastSyncRejected?this.#s.lastSyncRejected=!1:a.#p(s),s}navigateToDefault(e){this.#m();let t=n(this);t.validator?.navigation.validateNavigateToDefaultArgs(e);let r=e??kr;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.#p(i),i}navigateToNotFound(e){if(this.#m(),!this.#l.isActive())throw new q(c.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){return e instanceof q&&Ar.has(e.code)}static#d=e=>{a.#u(e)||i.error(`router.navigate`,`Unexpected navigation error`,e)};static#f=e=>{a.#u(e)||i.error(`router.start`,`Unexpected start error`,e)};static#p(e,t=a.#d){e.catch(t)}#m(){if(this.#l.isProcessing())throw new q(c.REENTRANT_NAVIGATION)}#h(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}#g(){this.navigate=$,this.navigateToDefault=$,this.navigateToNotFound=$,this.start=$,this.stop=$,this.usePlugin=$,this.subscribe=$,this.subscribeLeave=$,this.canNavigateTo=$}};function $(){throw new q(c.ROUTER_DISPOSED)}function Nr(e){return{strictTrailingSlash:e.trailingSlash===`strict`,strictQueryParams:e.queryParamsMode===`strict`,urlParamsEncoding:e.urlParamsEncoding,queryParams:e.queryParams}}export{c as C,u as S,an as _,yn as a,b,bn as c,On as d,un as f,on as g,$t as h,Sn as i,wn as l,cn as m,q as n,xn as o,dn as p,Dn as r,z as s,Mr as t,Tn as u,M as v,f as w,l as x,At as y};
|
|
2
|
-
//# sourceMappingURL=Router-CV-yIeWr.mjs.map
|