@real-router/core 0.63.2 → 0.63.3
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-C5VvnYPl.js +2 -0
- package/dist/cjs/Router-C5VvnYPl.js.map +1 -0
- package/dist/cjs/api.js +1 -1
- package/dist/cjs/{cloneRouter-BzZ-We9n.js → cloneRouter-Cr7YwKyu.js} +2 -2
- package/dist/cjs/{cloneRouter-BzZ-We9n.js.map → cloneRouter-Cr7YwKyu.js.map} +1 -1
- package/dist/cjs/index.js +1 -1
- package/dist/cjs/utils.js +1 -1
- package/dist/esm/Router-D79-rwtp.mjs +2 -0
- package/dist/esm/Router-D79-rwtp.mjs.map +1 -0
- package/dist/esm/api.mjs +1 -1
- package/dist/esm/{cloneRouter-CCcxyhmT.mjs → cloneRouter-xIQ7YNFf.mjs} +2 -2
- package/dist/esm/{cloneRouter-CCcxyhmT.mjs.map → cloneRouter-xIQ7YNFf.mjs.map} +1 -1
- package/dist/esm/index.mjs +1 -1
- package/dist/esm/utils.mjs +1 -1
- package/package.json +2 -2
- package/dist/cjs/Router-CvXQQQ9T.js +0 -2
- package/dist/cjs/Router-CvXQQQ9T.js.map +0 -1
- package/dist/esm/Router-DB8d2iPj.mjs +0 -2
- package/dist/esm/Router-DB8d2iPj.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}}const S=`[^>]*`;function ae(e){let t=!1;for(let n of e)if(n===`<`)t=!0;else if(n===`>`){if(!t)return!1;t=!1}return!t}function oe(e){return`(${e.replaceAll(/(^<|>$)/g,``)})`}const C=`[^/?<]+`,se=new RegExp(String.raw`([:*])(${C})(<${S}>)?(\?)?`,`g`),ce=new RegExp(String.raw`([:*]${C}(?:<${S}>)?)\?(?=[/?]|$)`,`g`),le=RegExp(`<${S}>`,`g`),ue=/\?(.+)$/;function de(e){return e.replaceAll(le,e=>`<${`x`.repeat(e.length-2)}>`).replaceAll(ce,`$1\0`)}const w=Object.freeze([]),fe=Object.freeze({}),pe=new Map;function me(e){let t=[],n=[],r=[],i={},a=new Map,o=ue.exec(de(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=se.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=`^${oe(o)}$`;a.set(n,{pattern:new RegExp(e),constraint:o})}}return he(t,n,r,i,a,e)}function he(e,t,n,r,i,a){return{urlParams:e.length===0?w:e,queryParams:t.length===0?w:t,spatParams:n.length===0?w:n,paramTypeMap:e.length===0&&t.length===0?fe:r,constraintPatterns:i.size===0?pe:i,pathPattern:a}}const ge=/[^\w!$'()*+,.:;|~-]/gu,_e=/[^\w!$'()*+,.:;|~-]/u,ve={default:e=>_e.test(e)?e.replaceAll(ge,e=>encodeURIComponent(e)):e,uri:encodeURI,uriComponent:encodeURIComponent,none:e=>e},ye={default:decodeURIComponent,uri:decodeURI,uriComponent:decodeURIComponent,none:e=>e},be=(e,t,n)=>{let r=ve[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 T(){return{staticChildren:Object.create(null),hasChildren:!1,paramChild:void 0,splatChild:void 0,route:void 0,slashChildRoute:void 0}}function E(e){return e.length>1&&e.endsWith(`/`)?e.slice(0,-1):e}function xe(e,t){return e===``?t:t===``?e:e+t}function Se(e){return e>=48&&e<=57||e>=65&&e<=70||e>=97&&e<=102}function Ce(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(!Se(n)||!Se(r))return!1;t+=3}else t++;return!0}const we=Object.freeze([]),Te=new Set,Ee=new Map,De=Object.freeze([]),Oe=Object.freeze({}),ke=RegExp(`<${S}>`,`g`);function Ae(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;ae(l)||ze(l),l.includes(`<>`)&&Be(l);let u=l.replaceAll(ke,``),d=o?u:xe(n,u),f=a?i:je(e,t,d,o?``:n,r,i);for(let n of t.children.values())Ae(e,n,d,r,f);a||r.pop()}function je(e,t,n,r,i,a){let o=Fe(n,r),s=Object.freeze([...i]),c=Me(s),l=E(n),u=Qe(e.rootQueryParams,i),d=$e(i),{buildStaticParts:f,buildParamSlots:p}=Ze(o?E(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?Te:new Set(u),hasTrailingSlash:n.length>1&&n.endsWith(`/`),constraintPatterns:d,hasConstraints:d.size>0,buildStaticParts:f,buildParamSlots:p,buildParamNamesSet:p.length===0?Te:new Set(p.map(e=>e.paramName)),cachedResult:void 0};return t.paramMeta.urlParams.length===0&&(m.cachedResult=Object.freeze({segments:m.matchSegments,params:Oe,meta:m.meta})),e.routesByName.set(t.fullName,m),o?Ne(e,m,r):Pe(e,m,n,l,t),m}function Me(e){let t={};for(let n of e)t[n.fullName]=n.paramTypeMap;return Object.freeze(t)}function Ne(e,t,n){qe(e,t,n);let r=E(n),i=e.options.caseSensitive?r:r.toLowerCase();e.staticCache.has(i)&&e.staticCache.set(i,t)}function Pe(e,t,n,r,i){if(Ke(e,t,n),i.paramMeta.urlParams.length===0){let n=e.options.caseSensitive?r:r.toLowerCase();e.staticCache.set(n,t)}}function Fe(e,t){return E(e)===E(t)}function Ie(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 Le(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 Re(e){throw Error(`[SegmentMatcher.registerTree] Fused parameter marker in segment "${e}": a ':'/'*' marker must begin a segment (e.g. 'a/:b', not 'a:b'). build extracts it as a param while the trie treats the segment as a literal — the two disagree.`)}function ze(e){throw Error(`[SegmentMatcher.registerTree] Unbalanced constraint delimiter ('<' or '>') in path "${e}": every '<' must be closed by a '>'. A stray delimiter desyncs match vs build (buildPath would emit a URL match rejects).`)}function Be(e){throw Error(`[SegmentMatcher.registerTree] Empty constraint '<>' in path "${e}": a constraint body must be non-empty (e.g. '<[0-9]+>'). An empty '<>' compiles to a never-matching pattern.`)}const Ve=RegExp(`^[:*](${C})`),He=RegExp(`[:*]${C}`);function Ue(e){let t=Ve.exec(e)?.[1]??``;return t===``&&Le(`:`),t}function We(e,t,n){return e.paramChild?e.paramChild.name!==t&&!n.has(e)&&Ie(e.paramChild.name,t,`:`):(e.paramChild={node:T(),name:t},n.add(e)),e.paramChild.node}function Ge(e,t,n){return e.splatChild?e.splatChild.name!==t&&!n.has(e)&&Ie(e.splatChild.name,t,`*`):(e.splatChild={node:T(),name:t},n.add(e)),e.splatChild.node}function Ke(e,t,n){let r=E(n);if(r===`/`){e.root.route=t;return}let i=new Set,a=new Map;D(e,e.root,r,1,t,i,a)}function D(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=Ue(u);D(e,We(t,r,a),n,l+1,i,a,o),l>=c?t.route??=i:D(e,t,n,l+1,i,a,o);return}t=Xe(e,t,u,a),r=l+1}t.route=i}function qe(e,t,n){let r=Je(e,n);r.slashChildRoute=t}function Je(e,t){return Ye(e,e.root,t)}function Ye(e,t,n){let r=E(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=Xe(e,i,c,s),a=n+1}return i}function Xe(e,t,n,r){if(n.startsWith(`*`)){let e=n.slice(1);e===``&&Le(`*`);let i=Ge(t,e,r);return t.hasChildren=!0,i}if(n.startsWith(`:`)){let e=We(t,Ue(n),r);return t.hasChildren=!0,e}He.test(n)&&Re(n);let i=e.options.caseSensitive?n:n.toLowerCase();return i in t.staticChildren||(t.staticChildren[i]=T(),t.hasChildren=!0),t.staticChildren[i]}function Ze(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:De};let a=[],o=[],s=new RegExp(String.raw`[:*](${C})(?:<${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=>be(e,n,!0):ve[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 Qe(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?we:n}function $e(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?Ee:t}function et(e){return typeof e==`string`?e:typeof e==`object`?JSON.stringify(e):String(e)}var tt=class{get options(){return this.#e}#e;#t=T();#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:ye[this.#e.urlParamsEncoding]}registerTree(e){this.#a=e.paramMeta.queryParams,Ae({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(et(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=E(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(!Ce(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 nt=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)},rt=(e,t)=>{if(e===void 0)return t.boolean.decodeUndefined();let n=t.boolean.decodeRaw(e);if(n!==null)return n;let r=nt(e),i=t.number.decode(r);return i===null?t.boolean.decodeValue(r):i},O=e=>{let t=typeof e;if(t!==`string`&&t!==`number`&&t!==`boolean`)throw TypeError(`[search-params] Array element must be a string, number, or boolean — received ${t}`);return encodeURIComponent(e)},it=(e,t,n,r)=>{let i=`${e}${n}`,a=[];for(let e of t)if(e===null){let e=r.encode(i);e&&a.push(e)}else a.push(`${i}=${O(e)}`);return a.join(`&`)},at={none:{encodeArray:(e,t,n)=>it(e,t,``,n)},brackets:{encodeArray:(e,t,n)=>it(e,t,`[]`,n)},index:{encodeArray:(e,t,n)=>{let r=[];for(let[i,a]of t.entries()){let t=`${e}[${i}]`;if(a===null){let e=n.encode(t);e&&r.push(e)}else r.push(`${t}=${O(a)}`)}return r.join(`&`)},indexed:!0},comma:{encodeArray:(e,t)=>{let n=[];for(let e of t)e!==null&&n.push(O(e));return n.length===0?``:`${e}=${n.join(`,`)}`},decodeValue:e=>e.includes(`,`)?e.split(`,`):null}},ot={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}},st={default:{encode:e=>e},hidden:{encode:()=>``}},ct={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}},lt=(e,t,n,r)=>({boolean:ot[t],null:st[n],number:ct[r],array:at[e]}),ut={boolean:ot.auto,null:st.default,number:ct.auto,array:at.none},k={arrayFormat:`none`,booleanFormat:`auto`,nullFormat:`default`,numberFormat:`auto`},dt={...k,strategies:ut},ft=e=>{if(!e||e.arrayFormat===void 0&&e.booleanFormat===void 0&&e.nullFormat===void 0&&e.numberFormat===void 0)return dt;let t=e.arrayFormat??k.arrayFormat,n=e.booleanFormat??k.booleanFormat,r=e.nullFormat??k.nullFormat,i=e.numberFormat??k.numberFormat;return{arrayFormat:t,booleanFormat:n,nullFormat:r,numberFormat:i,strategies:lt(t,n,r,i)}},A=e=>encodeURIComponent(e),pt=(e,t,n)=>{let r=A(e);switch(typeof t){case`string`:case`number`:return`${r}=${A(t)}`;case`boolean`:return n.strategies.boolean.encode(r,t);case`object`:return t===null?n.strategies.null.encode(r):Array.isArray(t)?n.strategies.array.encodeArray(r,t,n.strategies.null):`${r}=${A(t)}`;default:return`${r}=${A(t)}`}},mt=e=>{let t=e.indexOf(`?`);return t===-1?e:e.slice(t+1)};function ht(e,t,n){t===`__proto__`?Object.defineProperty(e,t,{value:n,writable:!0,enumerable:!0,configurable:!0}):e[t]=n}function gt(e,t,n,r){if(!Object.hasOwn(e,t)){ht(e,t,r?[n]:n);return}let i=e[t];Array.isArray(i)?i.push(n):ht(e,t,[i,n])}function _t(e,t,n,r,i){return rt(r?e.slice(t+1,n):void 0,i)}function vt(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 yt(e,t,n){let{searchPart:r,nameEnd:i,nameSourceEnd:a,eqPos:o,end:s,hasValue:c,decodedName:l}=e,u=vt(r,i,a);if(u===null)return!1;let d=_t(r,o,s,c,t),f=n.get(l);return f===void 0?n.set(l,[[u,d]]):f.push([u,d]),!0}function bt(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=nt(e.slice(t,l));if(!(a!==void 0&&u&&yt({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)gt(r,d,rt(e,i),!0);return}}gt(r,d,_t(e,o,n,s,i),u)}}const xt=(e,t)=>{let n=mt(e);if(n===``||n===`?`)return{};let r={};return St(n,r,ft(t).strategies),r};function St(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),o>i&&bt(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]),ht(t,e,n.map(e=>e[1]))}const Ct=(e,t)=>{let n=Object.keys(e);if(n.length===0)return``;let r=ft(t),i=[];for(let t of n){let n=e[t];if(n===void 0)continue;let a=pt(t,n,r);a&&i.push(a)}return i.join(`&`)};function wt(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=wt(t,a);a.children.push(e)}return a}function Tt(e,t,n){let r=wt({name:e,path:t},null);for(let e of n){let t=wt(e,r);r.children.push(t)}return r}const Et=Object.freeze(new Map),Dt=Object.freeze([]);function Ot(e){return e.parent?.name?`${e.parent.fullName}.${e.name}`:e.name}function kt(e){let t=new Map;for(let n of e)t.set(n.name,n);return t}function At(e,t,n){let r=[],i=[];for(let a of e){let e=jt(a,t,n);r.push(e),e.absolute||i.push(e)}return{childrenMap:kt(r),nonAbsoluteChildren:i}}function jt(e,t,n){let r=me(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=Ot(a),e.children.length===0)a.children=Et,a.nonAbsoluteChildren=Dt;else{let{childrenMap:t,nonAbsoluteChildren:r}=At(e.children,a,n);a.children=t,a.nonAbsoluteChildren=r}return n&&(e.children.length>0&&(Object.freeze(a.nonAbsoluteChildren),Object.freeze(a.children)),Object.freeze(i),Object.freeze(r.urlParams),Object.freeze(r.queryParams),Object.freeze(r.spatParams),Object.freeze(r),Object.freeze(a)),a}function Mt(e,t=!0){return jt(e,null,t)}function Nt(e,t){let n=[],r={add(e){return n.push(e),r},addMany(e){return n.push(...e),r},build(r){return Mt(Tt(e,t,n),!r?.skipFreeze)}};return r}function Pt(e,t,n,r){return Nt(e,t).addMany(n).build(r)}function j(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(),j)),n}function Ft(e){return Array.from(e.children.values(),j)}function It(e){let t=e?.queryParams;return new tt({...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=>xt(e,t),buildQueryString:e=>Ct(e,t)})}RegExp(`[:*](?!${C})`);const Lt={defaultRoute:``,defaultParams:{},trailingSlash:`preserve`,queryParamsMode:`loose`,queryParams:k,urlParamsEncoding:`default`,allowNotFound:!0,rewritePathOnMatch:!0};function Rt(e){Object.freeze(e);for(let t of Object.values(e))t&&typeof t==`object`&&t.constructor===Object&&Rt(t);return e}function zt(e,t){return typeof e==`function`?e(t):e}function Bt(e){if(!e||typeof e!=`object`||Array.isArray(e))throw TypeError(`[router.constructor] options must be a plain object`)}var Vt=class{#e;constructor(e={}){this.#e=Rt({...Lt,...e})}static validateOptionsIsObject(e){Bt(e)}get(){return this.#e}};function M(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(!M(e[n],t[n]))return!1;return!0}return!1}const Ht=new WeakMap;function Ut(e){return Ht.get(e)}function Wt(e,t){Ht.set(e,t)}var Gt=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&&Wt(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(!M(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)||!M(e.params[n],t.params[n]))return!1;return!0}};const Kt={[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},qt=Object.keys(Kt),N=`router.usePlugin`;function Jt(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 Yt=class e{#e=new Set;#t=new Set;#n;#r=null;static validatePlugin(e){Jt(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 qt)e in n&&(typeof n[e]==`function`?(r.push(this.#n.addEventListener(Kt[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 Xt=()=>!0,Zt=()=>!1,Qt=()=>Xt,$t=()=>Zt;function en(e){return e?Qt:$t}var tn=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`?en(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`?en(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 nn=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 rn(e,t){for(let n of Object.keys(t))Object.assign(e[n],t[n])}function an(e,t){for(let n in e)if(e[n]!==t[n])return!1;return!0}function on(e,t,n){for(let r in e)if(!(r in n)&&e[r]!==t[r])return!1;return!0}function sn(e,t){if(!t||!cn(e,t))return e;let n={};for(let r in e)t[r]!==`query`&&(n[r]=e[r]);return n}function cn(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 ln(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}.`)&&ln(i.children,t,a))return!0}return!1}function un(e,t){for(let n of Object.keys(e))t(n)&&delete e[n]}function dn(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 fn(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 pn(e,t,n){let r=Pt(``,t,e),i=It(n);return i.registerTree(r),{tree:r,matcher:i}}function I(e){let t=pn(e.definitions,e.rootPath,e.matcherOptions);e.tree=t.tree,e.matcher=t.matcher,e.urlParamsCache.clear()}function mn(e){I(e),e.resolvedForwardMap=L(e.config)}function hn(e){gn(e),I(e)}function gn(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]=fn(n,e.forwardMap);return t}function _n(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 vn(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}".`)}_n(e.forwardTo,t),typeof e.forwardTo==`string`?n.forwardMap[t]=e.forwardTo:n.forwardFnMap[t]=e.forwardTo}function yn(e,t,n,r,i,a){let o=Object.fromEntries(Object.entries(e).filter(([e])=>!nn.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&&vn(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 bn(e,t,n,r,i,a=``){for(let o of e){let e=a?`${a}.${o.name}`:o.name;yn(o,e,t,n,r,i),o.children&&bn(o.children,t,n,r,i,e)}}function xn(e){let t=P();return rn(t,e),t}function Sn(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]:Sn(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 Cn(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 wn(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)wn(n.name,t),n.children&&z(n.children,t)}function Tn(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 En(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`)}),Cn(t,n??``,`addRoute`),Tn(t,n??``,`addRoute`)}function Dn(e,t,n,r,i,a,o){let s=new Map,c=new Map;bn(t,n,r,s,c,i);let l=L(n),{tree:u,matcher:d}=pn(e,a,o);return{definitions:e,config:n,routeCustomFields:r,pendingCanActivate:s,pendingCanDeactivate:c,tree:u,matcher:d,resolvedForwardMap:l}}function On(e,t,n){return Dn(Sn(e.definitions,t.map(e=>F(e)),n===void 0?[]:n.split(`.`)),t,xn(e.config),Object.assign(Object.create(null),e.routeCustomFields),n??``,e.rootPath,e.matcherOptions)}function kn(e,t,n){return Dn(e.map(e=>F(e)),e,P(),Object.create(null),``,t,n)}function An(e,t,n){let r=[];for(let[i,a]of e)r.push([i,a,t(a,n)]);return r}function jn(e,t){let n=e.depsStore,r=An(t.pendingCanActivate,n.compileGuard,`canActivate`),i=An(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 Mn(e,t,n,r){let{forwardTo:i,defaultParams:a,decodeParams:o,encodeParams:s,canActivate:c,canDeactivate:l}=r,u=i===void 0?void 0:Nn(n,i,e.config),d=Pn(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),Fn(e,n,{defaultParams:a,decodeParams:o,encodeParams:s}),In(t,`activate`,n,c,f),In(t,`deactivate`,n,l,p),{forwardTo:i,defaultParams:a,decodeParams:o,encodeParams:s}}function Nn(e,t,n){_n(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 Pn(e,t,n){let r;for(let i of Object.keys(n)){if(nn.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 Fn(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 In(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 Ln(e,t){let n=kn(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 Rn(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 zn=new Set([`string`,`number`,`boolean`]);function Bn(e){return zn.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(Bn(t)&&Bn(i)&&String(t)!==String(i))return!1}return!0}function Hn(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 Un=new Map;function V(e){let t=Un.get(e);if(t)return t;let n=Wn(e);return Object.freeze(n),Un.set(e,n),n}function Wn(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]:Rn(e)}let H,U,W=null,Gn,Kn,G=null;function qn(e,t){if(!t)return{intersection:``,toActivate:V(e.name),toDeactivate:B};let n=Ut(e),r=Ut(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=Hn(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===Gn&&t===Kn)return G;let n=qn(e,t);return Gn=H,Kn=U,G=W,H=e,U=t,W=n,n}function Jn(e){let t=[];for(let n of e)for(let e of n.paramMeta.urlParams)t.push(e);return t}function Yn(e,t){return{name:t??e.segments.at(-1).fullName,params:e.params,meta:e.meta}}var Xn=class{#e;#t;#n;get#r(){return this.#e.depsStore}constructor(e=[],t){this.#e=Ln(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(){hn(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}=Yn(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;try{u=this.#e.matcher.buildPath(c,t,{trailingSlash:r===`never`||r===`always`?r:void 0,queryParamsMode:n.queryParamsMode}),r===`preserve`&&(u=dn(e,u))}catch{u=e}}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 Yn({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 an(t,s)?o?on(r?sn(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?Jn(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 Zn=new Set(Object.values(c)),Qn=new Set([`code`,`segment`,`path`]),$n=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(Qn.has(e))throw TypeError(`[RouterError] Cannot set reserved property "${e}"`);$n.has(e)||(this[e]=t)}}setCode(e){this.code=e,Zn.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(Qn.has(t))throw TypeError(`[RouterError.setAdditionalFields] Cannot set reserved property "${t}"`);$n.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 er=new q(c.ROUTER_NOT_STARTED),tr=new q(c.ROUTE_NOT_FOUND),nr=new q(c.SAME_STATES),J=Promise.reject(er),rr=Promise.reject(tr),ir=Promise.reject(nr);J.catch(()=>{}),rr.catch(()=>{}),ir.catch(()=>{});function ar(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 or({signal:e,...t}){return t}function sr(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=ar(r,i,a,o,s);let l=Object.freeze(n);e.setState(l);let d=i.signal===void 0?i:or(i);return e.sendTransitionDone(l,r,d),l}function cr(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;lr(e,t,n)}function lr(e,t,n){throw e instanceof q?(e.setCode(t),e):new q(t,dr(e,n))}const ur=new Set([`code`,`segment`,`path`,`then`]);function dr(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))ur.has(n)||(t[n]=r);return{...n,...t}}return n}async function fr(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 pr(e,t,n,r,i,a,o,s,l,u){await fr(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 fr(d,n,s);continue}if(!d)throw new q(n,{segment:s})}}async function mr(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 hr(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 mr(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 gr(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 gr(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 pr(e,t,n,r,i,a,o,s+1,d,l);if(!d)throw new q(n,{segment:l})}}const _r=Object.freeze([u.UNKNOWN_ROUTE]),vr=Object.freeze({replace:!0});function yr(e,t){return t?.name===u.UNKNOWN_ROUTE&&!e.replace?{...e,replace:!0}:e}function br(e,t,n){return!!e&&!t.reload&&!t.force&&e.path===n.path}var xr=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(),tr),this.lastSyncRejected=!0,rr)}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:_r,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,vr),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=yr(t,r),br(r,t,e))return n.emitTransitionError(e,r,nr),this.lastSyncRejected=!0,ir;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=hr(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=sr(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=sr(i,t);return u=!0,n}catch(e){throw d=e,cr(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&&cr(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 Sr=Object.freeze({replace:!0});var Cr=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,Sr):t.navigateToNotFound(e)}stop(){this.#e.clearState()}};const Z=`TREE_CHANGED`;function Q(e){return e instanceof Error?e:Error(String(e))}function wr(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 Tr=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 wr(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 Er=new q(c.ROUTER_ALREADY_STARTED),Dr=new Set([`all`,`warn-error`,`error-only`,`none`]);function Or(e){return typeof e==`string`&&Dr.has(e)}function kr(e){return typeof e==`string`?`"${e}"`:typeof e==`object`?JSON.stringify(e):String(e)}function Ar(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&&!Or(t.level))throw TypeError(`Invalid logger level: ${kr(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 jr=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=zt(e.defaultRoute,e=>this.dependenciesStore.dependencies[e]),i=zt(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 Mr(e){e.wireLimits(),e.wireRouteLifecycleDeps(),e.wireRoutesDeps(),e.wirePluginsDeps(),e.wireNavigationDeps(),e.wireLifecycleDeps(),e.wireStateDeps()}const Nr=Object.freeze({}),Pr=new Set([c.SAME_STATES,c.TRANSITION_CANCELLED,c.ROUTER_NOT_STARTED,c.ROUTE_NOT_FOUND,c.CANNOT_ACTIVATE,c.CANNOT_DEACTIVATE]);function Fr(e,t){i.error(`Router`,`Error in listener for ${e}:`,t)}var Ir=class a{#e;#t;#n;#r;#i;#a;#o;#s;#c;#l;constructor(n=[],o={},c={}){let{logger:l,...u}=o;l&&(Ar(l),i.configure(l)),Vt.validateOptionsIsObject(o),te(c),n.length>0&&b(n),this.#e=new Vt(u),this.#t=re(u.limits),this.#n=ie(c),this.#r=new Gt,this.#i=new Xn(n,Lr(this.#e.get())),this.#a=new tn,this.#o=new Yt,this.#s=new xr,this.#c=new Cr;let d=ee(),f=new s({onListenerError:Fr,onListenerWarn:(e,t)=>{i.warn(`router.addEventListener`,`Event "${e}" has ${t} listeners — possible memory leak`)}});this.#l=new Tr({routerFSM:d,emitter:f,onListenerError:Fr,abortController:e=>{this.#s.abortCurrentController(e)}}),Mr(new jr({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??Nr);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),Xn.shouldUpdateNode(e)}isActive(){return this.#l.isActive()}start(e){if(!this.#l.canStart())return Promise.reject(Er);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 Tr.validateSubscribeListener(e),this.#l.subscribe(e)}subscribeLeave(e){return Tr.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??Nr;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??Nr;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&&Pr.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 Lr(e){return{strictTrailingSlash:e.trailingSlash===`strict`,strictQueryParams:e.queryParamsMode===`strict`,urlParamsEncoding:e.urlParamsEncoding,queryParams:e.queryParams}}export{c as C,u as S,ln as _,Cn as a,b,wn as c,Mn as d,mn as f,un as g,rn as h,En as i,On as l,fn as m,q as n,Tn as o,hn as p,jn as r,z as s,Ir as t,kn as u,Ft as v,f as w,l as x,j as y};
|
|
2
|
-
//# sourceMappingURL=Router-DB8d2iPj.mjs.map
|