@real-router/core 0.147.8 → 0.147.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,2 +0,0 @@
1
- const e=require("./RouterError-CentZBJj.js"),t=Object.hasOwn;function n(e,n){if(n.length!==0&&e!=null)for(let r of n){if(!t(e,r))continue;let n;try{n=e[r]}catch{return}if(n!==void 0)return r}}function r(t,r,i,o,s,c){let l=n(i,o);if(l!==void 0)throw e.i(`router`,t).type`${a(r,l,typeof s==`function`?s():s,c)}`}function i(e,t,n,i){r(e,t,n,i,"the `params` bag this call is about to ship — the channel check above it read a different value, so the caller's object answered differently between the two reads")}function a(e,t,n="the `params` argument",r="Pass it in `search` instead"){return`Route "${e}" declares \`${t}\` as a query param, but it was given in ${n} — the path channel. ${r}; the two channels are separate since RFC-4 M2 and the router never moves a key between them.`}const o=e=>e===58||e===42;function s(e){let t=[],n=0;for(let r=0;r<e.length;r+=1)e.charCodeAt(r)===47&&(t.push(e.slice(n,r)),n=r+1);return t.push(e.slice(n)),t}function c(e){let t=e.length;if(t===0)return{kind:`static`,text:``};if(!o(e.charCodeAt(0))){for(let n=0;n<t;n+=1){let r=e.charCodeAt(n);if(r===60||r===62)return{error:`constraint-removed`};if(o(r)&&n+1<t)return{error:`fused-marker`}}return e.charCodeAt(t-1)===63?{error:`name-less`}:{kind:`static`,text:e}}let n=e.charCodeAt(0)===42,r=1;for(;r<t;){let t=e.charCodeAt(r);if(t===60||t===62||t===63)break;r+=1}let i=e.slice(1,r);return i.length===0?{error:`name-less`}:o(i.charCodeAt(i.length-1))?{error:`trailing-marker`}:r<t?e.charCodeAt(r)===63?{error:`optional-removed`}:{error:`constraint-removed`}:n?{kind:`splat`,name:i}:{kind:`param`,name:i}}function l(e){for(let t of s(e)){let e=c(t);if(`error`in e)return e.error}}function u(e){let t=s(e);for(let e=0;e<t.length;e+=1){let n=c(t[e]);if(`error`in n){if(n.error===`optional-removed`){let n=t[e],r=[...t];return r[e]=n.slice(0,n.indexOf(`?`)),{code:`optional-removed`,segment:n,withoutSegment:t.filter((t,n)=>n!==e).join(`/`),requiredForm:r.join(`/`)}}return n.error===`constraint-removed`?{code:`constraint-removed`,segment:t[e]}:void 0}}}const d=/[<>]/u;function f(e){for(let t=0;t<e.length;t+=1){if(e.codePointAt(t)!==63)continue;let n=t+1<e.length?e.codePointAt(t+1):-1;if(n!==-1&&n!==47&&n!==63&&n!==60)return t}return-1}const p=Object.freeze([]),m=Object.freeze({}),h=Object.freeze({urlParams:p,queryParams:p,paramTypeMap:m,pathPattern:``});function g(e,t,n){for(let r of s(e)){if(r.length===0)continue;let e=c(r);`error`in e||e.kind===`static`||(t.push(e.name),n[e.name]=`url`)}}function _(t){let n=[],r=[],i=e.s(),a=f(t);if(a!==-1){let e=t.slice(a+1).split(`&`);for(let t of e){let e=t.trim();e.length>0&&(r.push(e),i[e]=`query`)}t=t.slice(0,a)}return g(t,n,i),v(n,r,e.c(i),t)}function v(e,t,n,r){return{urlParams:e.length===0?p:e,queryParams:t.length===0?p:t,paramTypeMap:e.length===0&&t.length===0?m:n,pathPattern:r}}const y=/^[A-Z_a-z][\w-]*$/,b=/\S/,x=1e4;function S(t,n){if(t===``)throw e.i(`router`,n).type`Route name cannot be empty`}function ee(t,n){if(!b.test(t))throw e.i(`router`,n).type`Route name cannot contain only whitespace`}function C(t,n){if(t.length>x)throw e.i(`router`,n).type`Route name exceeds maximum length of ${x} characters`}function w(t,n){if(t.includes(`.`))throw e.i(`router`,n).type`Route name "${t}" cannot contain dots. Use children array or { parent } option in addRoute() instead.`}function te(t,n){if(!y.test(t))throw e.i(`router`,n).type`Invalid route name "${t}". Name must start with a letter or underscore, followed by letters, numbers, underscores, or hyphens.`}function T(t,n){return e.i(`router`,t).type`${n}`}function E(e,t,n,r){let i=new Set;for(let a of e){if(i.has(a))throw T(n,`Invalid path for route "${t}": duplicate parameter name ':${a}' in "${r}" (a param name must be unique within a route — the second binding would overwrite the first)`);i.add(a)}}function D(e,t,n,r){for(let i of e)if(d.test(i))throw T(n,`Invalid path for route "${t}": invalid query-param name "${i}" in "${r}" (a query-param name cannot contain '<' or '>' — it would never round-trip; rename the query param)`)}function O(e){let t=!0,n=!1;for(let r of e){if(r===`/`){t=!0;continue}if(t&&=(n=r===`:`||r===`*`,!1),!n&&r.codePointAt(0)>=128)return!0}return!1}function k(e,t,n){switch(e){case`name-less`:case`trailing-marker`:return`Invalid path for route "${t}": parameter marker (':' or '*') without a name in "${n}"`;case`fused-marker`:return`Invalid path for route "${t}": parameter marker (':' or '*') must begin a segment, but "${n}" fuses one to a static prefix (use a boundary marker like "/a/:b")`}}function A(e,t){return e.code===`optional-removed`?`Invalid path for route "${t}": optional params are not supported — "${e.segment}". Declare two sibling routes instead: "${e.withoutSegment}" and "${e.requiredForm}" (the route hierarchy already expresses optionality)`:`Invalid path for route "${t}": regex constraints are not supported — '<' and '>' are reserved in path segments ("${e.segment}"). Match the segment as a plain string and validate the value in a guard (canActivate) or app code`}function j(e,t,n,r){if(typeof e!=`string`){let t;throw t=e===null?`null`:Array.isArray(e)?`array`:typeof e,T(n,`Route path must be a string, got ${t}`)}if(e===``)return;if(/\s/.test(e))throw T(n,`Invalid path for route "${t}": whitespace not allowed in "${e}"`);if(!/^([/?~]|[^/]+$)/.test(e))throw T(n,`Route "${t}" has invalid path format: "${e}". Path should start with '/', '~', '?' or be a relative segment.`);if(e.includes(`//`))throw T(n,`Invalid path for route "${t}": double slashes not allowed in "${e}"`);let{pathPattern:i,urlParams:a,queryParams:o}=_(e);E(a,t,n,e),D(o,t,n,e);let s=u(i);if(s!==void 0)throw T(n,A(s,t));let c=l(i);if(c!==void 0)throw T(n,k(c,t,e));if(O(i))throw T(n,`Invalid path for route "${t}": non-ASCII static segment in "${e}" — match compares static segments raw and rejects non-ASCII input, so this route would never match. Percent-encode it (e.g. '/caf%C3%A9') or use a param`);let d=r&&r.paramMeta.urlParams.length>0;if(e.startsWith(`~`)&&d)throw T(n,`Absolute path "${e}" cannot be used under parent route with URL parameters`)}const M=Object.getOwnPropertyDescriptor,N=Object.keys,P=Object.getPrototypeOf;function F(e){if(e===null)return`null`;if(typeof e==`object`){try{let t=e.constructor;if(typeof t==`function`&&t.name!==`Object`)return t.name||`object`}catch{}return`object`}return typeof e}function I(e){for(let t of N(e)){let n=M(e,t);if(n&&(n.get||n.set))return!0}return!1}function L(t,n){if(!t||typeof t!=`object`)throw e.i(`router`,n).type`Route must be an object, got ${F(t)}`;let r=P(t);if(r!==Object.prototype&&r!==null)throw e.i(`router`,n).type`Route must be a plain object, got ${F(t)}`;if(I(t))throw e.i(`router`,n).type`Route must not have getters or setters`}function R(t,n){if(t.encodeParams!==void 0&&typeof t.encodeParams!=`function`)throw e.i(`router`,n).type`Route "${String(t.name)}" encodeParams must be a function`}function z(t,n){if(t.decodeParams!==void 0&&typeof t.decodeParams!=`function`)throw e.i(`router`,n).type`Route "${String(t.name)}" decodeParams must be a function`}function B(t,n){if(typeof t.name!=`string`)throw e.i(`router`,n).type`Route name must be a string, got ${F(t.name)}`;let r=t.name;S(r,n),ee(r,n),C(r,n),!r.startsWith(`@@`)&&(w(r,n),te(r,n))}function V(e,t){if(!t.includes(`.`))return e.children.get(t);let n=e;for(let e of t.split(`.`))if(n=n.children.get(e),!n)return;return n}function H(t,n,r){if(V(t,n))throw e.i(`router`,r).plain`Route "${n}" already exists`}function U(t,n,r){if(t.has(n))throw e.i(`router`,r).plain`Duplicate route "${n}" in batch`;t.add(n)}function W(t,n,r,i){let a=n===``?t:V(t,n);if(a){for(let t of a.children.values())if(t.path===r)throw e.i(`router`,i).plain`Path "${r}" is already defined`}}function G(t,n,r,i){let a=t.get(n);if(a?.has(r))throw e.i(`router`,i).plain`Path "${r}" is already defined`;a?a.add(r):t.set(n,new Set([r]))}function K(t,n,r,i=``,a,o){L(t,n);let s=t;B(s,n),j(s.path,s.name,n,r),R(s,n),z(s,n);let c=s.name,l=i?`${i}.${c}`:c;r&&l&&H(r,l,n),a&&U(a,l,n);let u=s.path,d=i;if(r&&W(r,d,u,n),o&&G(o,d,u,n),s.children!==void 0){if(!Array.isArray(s.children))throw e.i(`router`,n).type`Route "${c}" children must be an array, got ${F(s.children)}`;for(let e of s.children)K(e,n,r,l,a,o)}}const q=new WeakMap,J=Symbol.for(`real-router.router`);function Y(e){try{return e?.[J]===!0}catch{return!1}}function X(e){let t=q.get(e);if(!t)throw TypeError(Y(e)?"[real-router] This IS a router, but not one this copy of @real-router/core built. Core identifies a router by object identity, so it is either wrapped in a Proxy (Vue `reactive()` / Pinia — store it with `markRaw`), or your dependency tree holds two copies of @real-router/core — dedupe it to one.":`[real-router] Invalid router instance — not found in internals registry`);return t}function Z(e,t,n,i){r(t,n,i,e.getDeclaredQueryNames(n))}function Q(t){if(t())throw e.n(new e.t(e.v.ROUTER_DISPOSED,{message:`[router] this router is disposed — dispose() is terminal`}))}function ne(e,t){q.set(e,t),Object.defineProperty(e,J,{value:!0})}function $(e,t,n,r){let i=t;for(let t of e){let e=i,n=r===void 0?e:(...t)=>r(e(...t));i=(...e)=>t(n,...e)}return i(...n)}const re={start:`start`,forwardState:`forwardState`},ie={PLUGIN_AFTER_START:`PLUGIN_AFTER_START`},ae={"buildPath:params":`buildPath:params`,"buildPathResolved:params":`buildPathResolved:params`,"canNavigateTo:entry":`canNavigateTo:entry`,"canNavigateTo:params":`canNavigateTo:params`,"navigate:entry":`navigate:entry`,"navigate:params":`navigate:params`,"addRoute:batch":`addRoute:batch`,"replaceRoutes:batch":`replaceRoutes:batch`,"removeRoute:entry":`removeRoute:entry`,"updateRoute:entry":`updateRoute:entry`,"hasRoute:entry":`hasRoute:entry`,"getRoute:entry":`getRoute:entry`,"forwardState:entry":`forwardState:entry`,"buildNavigationState:state":`buildNavigationState:state`,"addActivateGuard:entry":`addActivateGuard:entry`,"addDeactivateGuard:entry":`addDeactivateGuard:entry`,"removeActivateGuard:entry":`removeActivateGuard:entry`,"removeDeactivateGuard:entry":`removeDeactivateGuard:entry`};function oe(e,t,...n){let r=e.get(t);if(r===void 0)return;let i=r.length;for(let e=0;e<i&&e<r.length;e++)r[e](...n)}function se(e,t,n){return((...r)=>{let i=n.get(e);return!i||i.length===0?t(...r):$(i,t,r)})}function ce(e,t,n,r,i){return(a,o,s)=>{let c=n.get(e);return!c||c.length===0?t(a,o,s):$(c,t,i(a,o,s),r)}}Object.defineProperty(exports,"C",{enumerable:!0,get:function(){return a}}),Object.defineProperty(exports,"S",{enumerable:!0,get:function(){return n}}),Object.defineProperty(exports,"_",{enumerable:!0,get:function(){return _}}),Object.defineProperty(exports,"a",{enumerable:!0,get:function(){return ce}}),Object.defineProperty(exports,"b",{enumerable:!0,get:function(){return r}}),Object.defineProperty(exports,"c",{enumerable:!0,get:function(){return oe}}),Object.defineProperty(exports,"d",{enumerable:!0,get:function(){return K}}),Object.defineProperty(exports,"f",{enumerable:!0,get:function(){return L}}),Object.defineProperty(exports,"g",{enumerable:!0,get:function(){return d}}),Object.defineProperty(exports,"h",{enumerable:!0,get:function(){return h}}),Object.defineProperty(exports,"i",{enumerable:!0,get:function(){return se}}),Object.defineProperty(exports,"l",{enumerable:!0,get:function(){return Q}}),Object.defineProperty(exports,"m",{enumerable:!0,get:function(){return S}}),Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return ae}}),Object.defineProperty(exports,"o",{enumerable:!0,get:function(){return X}}),Object.defineProperty(exports,"p",{enumerable:!0,get:function(){return w}}),Object.defineProperty(exports,"r",{enumerable:!0,get:function(){return re}}),Object.defineProperty(exports,"s",{enumerable:!0,get:function(){return ne}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return ie}}),Object.defineProperty(exports,"u",{enumerable:!0,get:function(){return Z}}),Object.defineProperty(exports,"v",{enumerable:!0,get:function(){return c}}),Object.defineProperty(exports,"x",{enumerable:!0,get:function(){return i}}),Object.defineProperty(exports,"y",{enumerable:!0,get:function(){return s}});
2
- //# sourceMappingURL=internals-CPtQ-QBg.js.map
@@ -1,2 +0,0 @@
1
- import{_ as e,a as t,b as n,c as r,d as i,f as a,i as o,l as s,m as c,n as l,o as u,p as d,r as f,s as p,t as m,u as h,v as g,y as _}from"./RouterError-Dy1_FfLa.mjs";import{C as v,S as y,_ as b,a as x,b as S,c as C,f as ee,g as w,h as te,i as ne,l as re,m as ie,n as T,o as E,p as ae,r as oe,s as se,t as ce,u as le,v as ue,x as de,y as fe}from"./internals-CXO8tXaA.mjs";import{_ as D,a as pe,c as me,d as he,f as O,g as ge,h as _e,i as ve,l as ye,m as be,n as xe,o as k,p as A,r as Se,s as Ce,t as j,u as we}from"./helpers-Bg_svUPj.mjs";const Te=Object.entries,Ee=Object.hasOwn;function De(e,t,n){if(e===void 0||n.length===0)return e;let r,i=!1;for(let[a,o]of Te(e)){if(Ee(t,a)&&t[a]!==void 0&&n.includes(a)){i=!0;continue}r??={},s(r,a,o)}return r===void 0?i?void 0:e:r}function Oe(e,t,n){for(let[r,i]of Te(e))S(n,r,i,t(r),"this route's `defaultParams`","Move it to `defaultSearch`")}const ke=Object.entries,Ae=Object.freeze;function je(e,t,n){let r,i=!1;for(let[a,o]of ke(e))t.includes(a)?(r??={},s(r,a,o)):(i=!0,n?.(a));return i?Ae(r??c):e}function Me(e,t){let n=e.path,r=n.startsWith(`~`),i=r?n.slice(1):n,a=i!==``&&!i.startsWith(`/`)&&!i.startsWith(`?`)?`/${i}`:i,o={name:e.name,path:a,absolute:r,children:[],parent:t};if(e.children)for(let t of e.children){let e=Me(t,o);o.children.push(e)}return o}function Ne(e,t,n){let r=Me({name:e,path:t},null);for(let e of n){let t=Me(e,r);r.children.push(t)}return r}const Pe=/[^\w!$'()*+,.:;|~-]/gu,Fe=/[^\w!$'()*+,.:;|~-]/u,Ie=/[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?<![\uD800-\uDBFF])[\uDC00-\uDFFF]/g,Le=e=>t=>{try{return e(t)}catch{return e(t.replaceAll(Ie,`�`))}},Re=Le(e=>e.replaceAll(Pe,e=>encodeURIComponent(e))),ze={default:e=>Fe.test(e)?Re(e):e,uri:Le(encodeURI),uriComponent:Le(encodeURIComponent),none:e=>e},Be={default:decodeURIComponent,uri:decodeURI,uriComponent:decodeURIComponent,none:e=>e},Ve=(e,t)=>{let n=ze[t],r=String(e).split(`/`),i=n(r[0]);for(let e=1;e<r.length;e++)i+=`/`+n(r[e]);return i},He=Object.freeze(Object.create(null));function Ue(){return{staticChildren:He,hasChildren:!1,paramChild:void 0,splatChild:void 0,route:void 0,slashChildRoute:void 0}}function M(e){return e.length>1&&e.endsWith(`/`)?e.slice(0,-1):e}function We(e,t){return e===``?t:t===``?e:e.endsWith(`/`)&&t.startsWith(`/`)?e+t.slice(1):e+t}function Ge(e){return e>=48&&e<=57||e>=65&&e<=70||e>=97&&e<=102}function Ke(e){let t=0;for(;t<e.length;)if(e.codePointAt(t)===37){if(t+2>=e.length)return!1;let n=e.codePointAt(t+1)??0,r=e.codePointAt(t+2)??0;if(!Ge(n)||!Ge(r))return!1;t+=3}else t++;return!0}const qe=Object.freeze([]),Je=Object.freeze(new Set),Ye=Object.freeze([]),Xe=Object.freeze({}),Ze=Object.freeze({}),Qe=Object.freeze({});function $e(e,t){let n=e.kind===`splat`;return{paramName:e.name,encoder:n?e=>Ve(e,t):ze[t]}}function et(e,t,n,r){let i=new Set(r);for(let e of t)for(let t of e.paramMeta.urlParams)i.add(t);if(i.size===0)return{buildStaticParts:[e],buildParamSlots:Ye};let a=[],o=[],s=``,c=fe(e),l=c.length-1;for(let[e,t]of c.entries()){let r=ue(t);if(`error`in r||r.kind!==`splat`||e===l){if(e>0&&(s+=`/`),`error`in r||r.kind===`static`){s+=t;continue}a.push(s),s=``,o.push($e(r,n))}}return a.push(s),{buildStaticParts:a,buildParamSlots:o}}const N=o(`router`);function tt(e,t,n){throw N.plain`Parameter name conflict at the same path position: '${n}${e}' and '${n}${t}'. One position binds one name across every route that shares it. Rename one — e.g. use '${n}${e}' in both.`}function nt(){throw N.plain`Empty parameter name: a ':'/'*' marker must be followed by a name (e.g. ':id', '*rest'), and a segment cannot end in a bare '?'.`}function rt(e){throw N.plain`Fused parameter marker in segment "${e}": a ':'/'*' marker must begin a segment — write 'a/:b', not 'a:b'.`}function it(e){throw N.plain`Trailing parameter marker in segment "${e}": a param name cannot end in a bare ':' or '*'. Drop the stray marker.`}function at(e){throw N.plain`Optional params are not supported: "${e}" — declare two sibling routes instead, one with the segment and one without.`}function ot(e){throw N.plain`Regex constraints are not supported: '<' and '>' are reserved in path segments ("${e}"). Match it as a plain string and validate the value in a canActivate guard.`}function st(e){throw N.plain`Non-ASCII static segment "${e}": match compares static keys raw and rejects non-ASCII input, so this route can never match. Percent-encode it (e.g. "/caf%C3%A9") or use a param.`}function ct(e,t){switch(e){case`name-less`:return nt();case`trailing-marker`:return it(t);case`fused-marker`:return rt(t);case`optional-removed`:return at(t);case`constraint-removed`:return ot(t)}}function lt(e,t){let n=new Set,r=``;for(let e of t){if(n.has(e)){r=e;break}n.add(e)}throw N.plain`Duplicate parameter name '${r}' in route "${e}": a name must be unique within a route — the second position overwrites the first. Rename one.`}function ut(e,t){throw N.plain`Invalid query-param declaration "${t}" in route "${e}": a query-param name cannot contain '<' or '>'. Rename it.`}function dt(e){throw N.plain`Double slashes are not allowed in path "${e}": the route would build a URL its own matcher refuses. Remove the empty segment.`}function ft(e,t){throw N.plain`Duplicate route path: routes "${e}" and "${t}" resolve to the same URL — the later would shadow the earlier. Give them distinct paths.`}function pt(e,t){throw N.plain`Index route "${e}" (path "/") under the splat parent "${t}" is unreachable: the wildcard match never reaches the index node. Give the index a distinct path, or make the parent static.`}function mt(e,t){return e.paramChild?e.paramChild.name!==t&&tt(e.paramChild.name,t,`:`):e.paramChild={node:Ue(),name:t},e.paramChild.node}function ht(e,t){return e.splatChild?e.splatChild.name!==t&&tt(e.splatChild.name,t,`*`):e.splatChild={node:Ue(),name:t},e.splatChild.node}const gt=Object.create;function _t(e,t){e.route!==void 0&&e.route!==t&&ft(e.route.name,t.name),e.route=t}function vt(e){for(let t=0;t<e.length;t++)if(e.charCodeAt(t)>=128)return!0;return!1}function yt(e,t,n){let r=M(n);if(r===`/`){_t(e.root,t);return}bt(e,e.root,r,1,t)}function bt(e,t,n,r,i){let a=n.length;for(;r<=a;){let i=n.indexOf(`/`,r),o=i===-1?a:i,s=n.slice(r,o);t=wt(e,t,s),r=o+1}_t(t,i)}function xt(e,t,n){let r=n.length;for(;r>1&&n.codePointAt(r-1)===47;)--r;let i=n.slice(0,r);i.slice(i.lastIndexOf(`/`)+1).startsWith(`*`)&&pt(t.name,n);let a=St(e,n);a.slashChildRoute=t}function St(e,t){return Ct(e,e.root,t)}function Ct(e,t,n){let r=M(n);if(r===`/`||r===``)return t;let i=t,a=1,o=r.length;for(;a<=o;){let t=r.indexOf(`/`,a),n=t===-1?o:t;if(n<=a)break;let s=r.slice(a,n);i=wt(e,i,s),a=n+1}return i}function wt(e,t,n){let r=ue(n);if(`error`in r&&nt(),r.kind===`splat`){let e=ht(t,r.name);return t.hasChildren=!0,e}if(r.kind===`param`){let e=mt(t,r.name);return t.hasChildren=!0,e}vt(n)&&st(n);let i=e.options.caseSensitive?n:n.toLowerCase();return i in t.staticChildren||(t.staticChildren===He&&(t.staticChildren=gt(null)),t.staticChildren[i]=Ue(),t.hasChildren=!0),t.staticChildren[i]}const Tt=Object.freeze,Et=Object.hasOwn;function Dt(e){let t=fe(e);for(let[n,r]of t.entries())r===``&&n>0&&n<t.length-1&&dt(e)}function Ot(e){for(let t of fe(e)){let e=ue(t);`error`in e&&ct(e.error,t)}}function kt(e,t,n,r,i){let a=t.fullName===``;a||r.push(t);let o=t.absolute,s=t.paramMeta===te?t.path:t.paramMeta.pathPattern,c=o&&s.startsWith(`~`)?s.slice(1):s,l=o?c:s;Dt(t.path),Ot(l);let u=l,d=o?u:We(n,u),f=a?i:At(e,t,d,o?``:n,r,i);for(let n of t.children.values())kt(e,n,d,r,f);a||r.pop()}function At(e,t,n,r,i,a){let o=Ft(n,r),s=Tt([...i]),c=jt(s),l=M(n),u=Tt(It(e.rootQueryParams,i)),{buildStaticParts:d,buildParamSlots:f}=et(o?M(r):l,o?i.slice(0,-1):i,e.options.urlParamsEncoding,e.rootUrlParams),p=f.map(e=>e.paramName),m=p.length===0?Je:new Set(p);m.size!==p.length&&lt(t.fullName,p),Lt(t.fullName,u);let h={name:t.fullName,parent:a,matchSegments:s,meta:c,declaredQueryParams:u,declaredQueryParamsSet:u.length===0?Je:new Set(u),hasTrailingSlash:n.length>1&&n.endsWith(`/`),buildStaticParts:d,buildParamSlots:f,buildParamNamesSet:m,cachedResult:void 0};return t.paramMeta.urlParams.length===0&&(h.cachedResult=Tt({segments:h.matchSegments,params:Xe,search:Ze,meta:h.meta})),e.routesByName.set(t.fullName,h),o?Nt(e,h,r):Pt(e,h,n,l,t),h}function jt(e){let n;for(let t of e)Mt(t.paramTypeMap)&&(n??=p(),n[t.fullName]=t.paramTypeMap);return n===void 0?Qe:Tt(t(r(n)))}function Mt(e){for(let t in e)if(Et(e,t))return!0;return!1}function Nt(e,t,n){xt(e,t,n);let r=M(n),i=e.options.caseSensitive?r:r.toLowerCase();e.staticCache.has(i)&&e.staticCache.set(i,t)}function Pt(e,t,n,r,i){if(yt(e,t,n),i.paramMeta.urlParams.length===0){let n=e.options.caseSensitive?r:r.toLowerCase();e.staticCache.set(n,t)}}function Ft(e,t){return M(e)===M(t)}function It(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?qe:n}function Lt(e,t){for(let n of t)w.test(n)&&ut(e,n)}const Rt=o(`router`,`buildPath`),zt=Symbol.for(`real-router.searchParams.configFault`),Bt=Object.hasOwn,Vt=Object.keys,Ht=Object.getOwnPropertyDescriptor;function Ut(e){try{return Ht(e,zt)?.configurable===!1}catch{return!1}}function Wt(e){return typeof e==`string`?e:typeof e==`object`?JSON.stringify(e):String(e)}const Gt=Object.freeze({});function Kt(e,t){return e===`strict`?t?`always`:`never`:e}var qt=class{get options(){return this.#e}#e;#t=Ue();#n=new Map;#r=new Map;#i={cleanPath:``,normalized:``,queryString:void 0};#a=[];#o=``;#s;#c;constructor(e){let t=e.urlParamsEncoding??`default`,n=typeof t==`string`?t:String(t),r=Bt(ze,n)?n:`default`;this.#e={caseSensitive:e.caseSensitive??!0,strictTrailingSlash:e.strictTrailingSlash??!1,strictQueryParams:e.strictQueryParams??!1,urlParamsEncoding:r,parseQueryString:e.parseQueryString,buildQueryString:e.buildQueryString},this.#s=this.#e.caseSensitive,this.#c=this.#e.urlParamsEncoding===`none`?null:Be[this.#e.urlParamsEncoding]}registerTree(e){this.#a=e.paramMeta.queryParams,kt({root:this.#t,options:this.#e,routesByName:this.#n,staticCache:this.#r,rootQueryParams:this.#a,rootUrlParams:e.paramMeta.urlParams},e,``,[],null)}match(e){if(!this.#f(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.#g(t,a)?void 0:r===void 0&&a.cachedResult?a.cachedResult:this.#m(a,{},r);let o={},s=this.#_(n,o);if(s&&(!this.#e.strictTrailingSlash||this.#g(t,s))&&this.#b(o))return this.#m(s,o,r)}buildPath(e,t,n,r){let i=this.#n.get(e);if(!i)throw Rt.plain`'${e}' is not defined`;let a=this.#l(i,t),o=this.#u(a,Kt(r?.trailingSlash,i.hasTrailingSlash)),s=this.#d(i,n??t,r?.queryParamsMode);return o+(s?`?${s}`:``)}getSegmentsByName(e){return this.#n.get(e)?.matchSegments}getMetaByName(e){return this.#n.get(e)?.meta}getDeclaredQueryParams(e){return this.#n.get(e)?.declaredQueryParams}hasRoute(e){return this.#n.has(e)}#l(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!=null&&Bt(t,a.paramName)?t[a.paramName]:void 0;if(r==null)throw Rt.plain`Missing required param '${a.paramName}'`;if(r===``)throw Rt.plain`Missing required param '${a.paramName}' (empty string)`;let o=a.encoder(Wt(r));i+=o+n[e+1]}return i}#u(e,t){return t===`always`&&!e.endsWith(`/`)?`${e}/`:t===`never`&&e!==`/`&&e.endsWith(`/`)?e.slice(0,-1):e}#d(e,t,n){if(!t||e.declaredQueryParams.length===0&&n!==`loose`)return``;let r={},i=!1;for(let n of e.declaredQueryParams)Bt(t,n)&&(s(r,n,t[n]),i=!0);if(n===`loose`)for(let n of Vt(t))e.declaredQueryParamsSet.has(n)||e.buildParamNamesSet.has(n)||(s(r,n,t[n]),i=!0);return i?this.#e.buildQueryString(r):``}#f(e){if(e===``&&(e=`/`),e.codePointAt(0)!==47)return!1;let t=this.#p(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=M(n);return this.#i.cleanPath=n,this.#i.normalized=i,this.#i.queryString=r,!0}#p(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}#m(e,t,n){let r=Gt;if(n!==void 0){let t=this.#h(e,n);if(t===void 0)return;r=t}return{segments:e.matchSegments,params:t,search:r,meta:e.meta}}#h(e,t){let n;try{n=this.#e.parseQueryString(t)}catch(e){if(Ut(e))throw e;return}if(this.#e.strictQueryParams){let t=e.declaredQueryParamsSet;for(let e of Vt(n))if(!t.has(e))return}return n}#g(e,t){return(e.length>1&&e.endsWith(`/`))===t.hasTrailingSlash}#_(e,t){return e.length===1?this.#t.slashChildRoute??this.#t.route:this.#v(this.#t,e,1,t)}#v(e,t,n,r){let i=e,a=t.length,o=this.#s;for(;n<=a;){let e=t.indexOf(`/`,n),c=e===-1?a:e,l=t.slice(n,c),d=o?l:l.toLowerCase(),f;if(d in i.staticChildren){let e=i.staticChildren[d];if(i.splatChild!==void 0){let a={},o=this.#v(e,t,c+1,a);return o===void 0?this.#y(i.splatChild,t,n,r):(u(r,a),o)}f=e}else if(i.paramChild){let e=i.paramChild;if(i.splatChild!==void 0){let a={[e.name]:l},o=this.#v(e.node,t,c+1,a);return o===void 0?this.#y(i.splatChild,t,n,r):(u(r,a),o)}f=e.node,s(r,e.name,l)}else if(i.splatChild)return this.#y(i.splatChild,t,n,r);else return;i=f,n=c+1}return i.slashChildRoute??i.route}#y(e,t,n,r){let i=e.node;if(!i.hasChildren)return s(r,e.name,t.slice(n)),i.route;let a={},o=this.#v(i,t,n,a);return o?(u(r,a),o):(s(r,e.name,t.slice(n)),i.route)}#b(e){let t=this.#c;if(!t)return!0;for(let n of Vt(e)){let r=e[n];if(r.includes(`%`)){if(!Ke(r))return!1;try{e[n]=t(r)}catch{return!1}}}return!0}};const P=Object.freeze,Jt=Object.freeze(new Map),Yt=Object.freeze([]);function Xt(e){return e.parent?.name?`${e.parent.fullName}.${e.name}`:e.name}function Zt(e){let t=new Map;for(let n of e)t.set(n.name,n);return t}function Qt(e,t){let n=[],r=[];for(let i of e){let e=$t(i,t);n.push(e),e.absolute||r.push(e)}return{childrenMap:Zt(n),nonAbsoluteChildren:r}}function $t(e,t){let n=b(e.path),r=n.urlParams.length===0&&n.queryParams.length===0&&n.pathPattern===e.path?te:n,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=Xt(a),e.children.length===0)a.children=Jt,a.nonAbsoluteChildren=Yt;else{let{childrenMap:t,nonAbsoluteChildren:n}=Qt(e.children,a);a.children=t,a.nonAbsoluteChildren=n,P(a.nonAbsoluteChildren),P(a.children)}return P(i),P(r.urlParams),P(r.queryParams),P(r),P(a),a}function en(e){return $t(e,null)}function tn(e,t,n){return en(Ne(e,t,n))}function nn(e){let t=e.absolute?`~${e.path}`:e.path,n={name:e.name,path:t};return e.children.size>0&&s(n,`children`,Array.from(e.children.values(),nn)),n}function rn(e){return Array.from(e.children.values(),nn)}const an=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)},on=(e,t)=>{if(e===void 0)return t.boolean.decodeUndefined();let n=t.boolean.decodeRaw(e);if(n!==null)return n;let r=an(e),i=t.number.decode(r);return i===null?t.boolean.decodeValue(r):i},sn=/[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?<![\uD800-\uDBFF])[\uDC00-\uDFFF]/g,cn=e=>{try{return encodeURIComponent(e)}catch(t){if(!(t instanceof URIError))throw t;return encodeURIComponent(String(e).replaceAll(sn,`�`))}},ln=o(`router`),un=e=>{let t=typeof e;if(t!==`string`&&t!==`number`&&t!==`boolean`)throw ln.type`Invalid query value: an array element must be a string, number, or boolean — received ${t}`;return cn(e)},dn=(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}=${un(e)}`);return a.join(`&`)},fn={none:{encodeArray:(e,t,n)=>dn(e,t,``,n)},brackets:{encodeArray:(e,t,n)=>dn(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}=${un(a)}`)}return r.join(`&`)},indexed:!0},comma:{encodeArray:(e,t)=>{let n=[];for(let e of t)e!==null&&n.push(un(e));return n.length===0?``:`${e}=${n.join(`,`)}`},decodeValue:e=>e.includes(`,`)?e.split(`,`):null}},pn={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`||e!==`false`&&null,decodeValue:e=>e},"empty-true":{encode:(e,t)=>t?e:`${e}=false`,decodeUndefined:()=>!0,decodeRaw:e=>e===`true`||e!==`false`&&null,decodeValue:e=>e}},mn={default:{encode:e=>e},hidden:{encode:()=>``}},hn={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 String(i)!==e||!Number.isSafeInteger(i)&&!r?null:i}},none:{decode:()=>null}},gn=o(`router`),_n=Object.defineProperty,vn=Object.keys,yn=Object.hasOwn,bn=Symbol.for(`real-router.searchParams.configFault`),xn=(e,t,n)=>{let r=typeof t==`string`?t:String(t);if(!yn(e,r)){let t=gn.type`Invalid "queryParams.${n}": "${r}" — expected ${vn(e).map(e=>`"${e}"`).join(` | `)}`;throw _n(t,bn,{value:!0}),t}return e[r]},Sn=(e,t,n,r)=>({boolean:xn(pn,t,`booleanFormat`),null:xn(mn,n,`nullFormat`),number:xn(hn,r,`numberFormat`),array:xn(fn,e,`arrayFormat`)}),Cn=Object.freeze({boolean:pn.auto,null:mn.default,number:hn.auto,array:fn.none}),F=Object.freeze({arrayFormat:`none`,booleanFormat:`auto`,nullFormat:`default`,numberFormat:`auto`}),wn=Object.freeze({...F,strategies:Cn}),Tn=e=>{if(!e||e.arrayFormat===void 0&&e.booleanFormat===void 0&&e.nullFormat===void 0&&e.numberFormat===void 0)return wn;let t=e.arrayFormat??F.arrayFormat,n=e.booleanFormat??F.booleanFormat,r=e.nullFormat??F.nullFormat,i=e.numberFormat??F.numberFormat;return{arrayFormat:t,booleanFormat:n,nullFormat:r,numberFormat:i,strategies:Sn(t,n,r,i)}},En=e=>cn(e),Dn=(e,t,n)=>{let r=En(e);switch(typeof t){case`string`:case`number`:return`${r}=${En(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}=${En(t)}`;default:return`${r}=${En(t)}`}},On=Object.hasOwn,kn=Object.keys;function An(e,t,n){s(e,t,n)}function jn(e,t,n,r){if(!On(e,t)){An(e,t,r?[n]:n);return}let i=e[t];Array.isArray(i)?i.push(n):An(e,t,[i,n])}function Mn(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 Nn(e,t,n){let{searchPart:r,nameEnd:i,nameSourceEnd:a,rawValue:o,decodedName:s}=e,c=Mn(r,i,a);if(c===null)return!1;let l=on(o,t),u=n.get(s);return u===void 0?n.set(s,[[c,l]]):u.push([c,l]),!0}function Pn(e,t,n,r,i,a,o){let s=a!==-1&&a<n?e.slice(a+1,n):void 0,c=s===void 0?n:a,l=c,u=!1;for(let n=t;n<c;n++)if(e.codePointAt(n)===91){l=n,u=!0;break}let d=an(e.slice(t,l));if(!(o!==void 0&&u&&Nn({searchPart:e,nameEnd:l,nameSourceEnd:c,rawValue:s,decodedName:d},i,o))){if(!u&&s!==void 0&&i.array.decodeValue){let e=i.array.decodeValue(s);if(e){for(let t of e)jn(r,d,on(t,i),!0);return}}jn(r,d,on(s,i),u)}}const Fn=(e,t)=>{if(e===``||e===`?`)return{};let n={};return In(e,n,t.strategies),n};function In(e,t,n){let r=n.array.indexed?new Map:void 0,i=0,a=e.length,o=-2;for(;i<a;){let s=e.indexOf(`&`,i);s===-1&&(s=a),s>i&&(o!==-1&&o<i&&(o=e.indexOf(`=`,i)),Pn(e,i,s,t,n,o,r)),i=s+1}if(r!==void 0)for(let[e,n]of r)n.sort((e,t)=>e[0]-t[0]),An(t,e,n.map(e=>e[1]))}const Ln=(e,t)=>{let n=kn(e);if(n.length===0)return``;let r=[];for(let i of n){let n=e[i];if(n===void 0)continue;let a=Dn(i,n,t);a&&r.push(a)}return r.join(`&`)};function Rn(e){let t=e?.queryParams,n=Tn(t);return new qt({...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=>Fn(e,n),buildQueryString:e=>Ln(e,n)})}const zn=o(`router`,`addEventListener`),Bn=o(`router`,`subscribeChanges`),Vn=o(`router`,`addInterceptor`),Hn=o(`router`,`addCheck`),Un=o(`router`,`extendRouter`),I=o(`router`),Wn=Object.keys,Gn=Object.values,L=Object.hasOwn,Kn=Object.getOwnPropertyDescriptor,qn=Object.getPrototypeOf,Jn=Object,Yn=new Set(Gn(_));function Xn(e){if(!Yn.has(e))throw zn.type`Invalid event name: ${String(e)}. Must be one of: ${[...Yn].join(`, `)}`}function Zn(e){if(typeof e!=`function`)throw zn.type`callback must be a function, got ${typeof e}`}function Qn(e){if(typeof e!=`function`)throw Bn.type`Expected a function`}function $n(e,t){if(typeof e!=`string`||!L(oe,e))throw Vn.type`Invalid method: ${typeof e==`string`?`"${e}"`:typeof e}. Must be one of: ${Wn(oe).join(`, `)}`;if(typeof t!=`function`)throw Vn.type`interceptor must be a function, got ${typeof t}`}function er(e,t){if(typeof e!=`string`||!L(T,e))throw Hn.type`Invalid position: ${typeof e==`string`?`"${e}"`:typeof e}. Must be one of: ${Wn(T).join(`, `)}`;if(typeof t!=`function`)throw Hn.type`check must be a function, got ${typeof t}`}function tr(e,t){if(typeof e!=`string`)throw o(`router`,t).type`Route name must be a string, got ${typeof e}`}function nr(e){if(!e||typeof e!=`object`||Array.isArray(e))return!1;let t=qn(e);return t===null||t.constructor===Jn}function rr(e){if(!nr(e))throw I.type`dependencies must be a plain object`}function ir(e){return e===null?`null`:typeof e==`object`?`a non-plain object`:typeof e}function ar(e){if(!nr(e))throw Un.type`extensions must be a plain object, got ${ir(e)}`}function or(e,t){rr(e);let n=e,r=[];for(let e of Wn(n)){if(Kn(n,e)?.get)throw I.type`dependencies cannot contain getters: "${e}"`;let t=n[e];t!==void 0&&r.push([e,t])}for(let[e,n]of r)t(e,n)}function sr(e){let t=[];for(let n of e){let e=n;if(typeof e!=`object`||!e||Array.isArray(e))throw I.type`route must be a non-array object`;ee(e,`addRoute`);let r={...e},i=r.children;i&&s(r,`children`,sr(i)),t.push(r)}return t}const cr=new Set([`all`,`warn-error`,`error-only`,`none`]);function lr(e){return typeof e==`string`&&cr.has(e)}function ur(e){return typeof e==`string`?`"${e}"`:typeof e==`object`?JSON.stringify(e):String(e)}function dr(e){for(let t of Wn(e))if(t!==`level`&&t!==`callback`&&t!==`callbackIgnoresLevel`)throw I.type`Unknown logger config property: "${t}"`}function fr(e){if(!L(e,`level`))return;let t=e.level;if(t!==void 0){if(!lr(t))throw I.type`Invalid logger level: ${ur(t)}. Expected: "all" | "warn-error" | "error-only" | "none"`;return t}}function pr(e){if(!L(e,`callbackIgnoresLevel`))return;let t=e.callbackIgnoresLevel;if(t!==void 0){if(typeof t!=`boolean`)throw I.type`Logger callbackIgnoresLevel must be a boolean, got ${typeof t}`;return t}}function mr(e){if(typeof e!=`object`||!e)throw I.type`Logger config must be an object`;let t=e;dr(t);let n=p(),r=fr(t);if(r!==void 0&&(n.level=r),L(t,`callback`)){let e=t.callback;if(e!==void 0&&typeof e!=`function`)throw I.type`Logger callback must be a function, got ${typeof e}`;n.callback=e}let i=pr(t);return i!==void 0&&(n.callbackIgnoresLevel=i),n}const hr=Object.create;function gr(e,t,n){e[t]=n}function _r(e,t){return e.dependencies[t]}function vr(e){e.dependencies=hr(null)}function yr(e){return Ce({...e.dependencies})}function br(e,t){let n=hr(null),r=e,i=n;return or(r,(e,t)=>{gr(i,e,t)}),{dependencies:n,limits:t}}const R={defaultRoute:``,defaultParams:{},defaultSearch:{},trailingSlash:`preserve`,caseSensitive:!0,queryParamsMode:`loose`,queryParams:F,urlParamsEncoding:`default`,allowNotFound:!0,rewritePathOnMatch:!0},xr=[`strict`,`never`,`always`,`preserve`],Sr=[`default`,`strict`,`loose`];function Cr(e){return e!==void 0&&xr.includes(e)?e:R.trailingSlash}function wr(e){return e!==void 0&&Sr.includes(e)?e:R.queryParamsMode}const Tr=o(`router`);function Er(e){if(!e||typeof e!=`object`||Array.isArray(e))throw Tr.type`options must be a plain object`}const Dr=Object.freeze;var Or=class{#e;constructor(e={}){this.#e=Dr(Ce({...R,...e}))}static validateOptionsIsObject(e){Er(e)}get(){return this.#e}};function kr(e,t){return typeof e==`function`?e(t):e}const Ar=Object.keys;function jr(e,t,n,r,i){let a=e.pathNames(t);if(a!==void 0)for(let e of Ar(n))!r.includes(e)&&!a.includes(e)&&i(t,e)}function z(e,t,n,r,i){let a=String(t),o=i?.resolveForward===!1?{name:a,params:n,search:r}:e.resolveForward(a,n,r),s=o.name,l=O(o.params,d),u=i?.diagnoseUndeclared===!0?e.reportUndeclaredParamKey:void 0;u&&jr(e,s,l,e.queryNames(s),u);let f=e.defaultParams(s),p=e.defaultSearch(s);if((o.search===void 0||o.search===c)&&f===void 0&&p===void 0)return{name:s,path:l,query:c};let m=e.queryNames(s),h=e.reportDroppedQueryKey,g=i?.resolveForward===!1?De(p,l,m):p,_=O(o.search,c),v=he(g,_);return{name:s,path:we(f,l),query:e.admitsUndeclaredQuery()?v:je(v,e.printedQueryNames(s),t=>{h!==void 0&&e.pathNames(s)!==void 0&&h(s,t)})}}function B(e,t){return t.buildPath(e.name,e.path,e.query)}const Mr=Object.freeze;function Nr(e,t){let n={name:e.name,params:e.path,search:e.query,path:t,context:{},transition:i};return Mr(n.params),n}function V(e,t){return me(Nr(e,t))}function Pr(e,t){return Nr(e,t)}var Fr=class{#e;#t;get(){return this.#e.current}getPrevious(){return this.#e.previous}setContext(e){this.#e=e}setDependencies(e){this.#t=e}makeState(e,t,n,r){let i=this.#t.port(),a=z(i,e,t??d,n,{resolveForward:!1});return de(`makeState`,a.name,a.path,i.queryNames(a.name)),V(a,r??B(a,i))}areStatesEqual(e,t,n=!0){if(!e||!t)return!!e==!!t;let r=e.name;return r===t.name?n?ge(e.params,t.params,this.#t.getUrlParams(r)):_e(e.params,t.params)&&_e(e.search,t.search):!1}};const Ir=Object.keys,Lr={[n.ROUTER_START]:_.ROUTER_START,[n.ROUTER_STOP]:_.ROUTER_STOP,[n.TRANSITION_SUCCESS]:_.TRANSITION_SUCCESS,[n.TRANSITION_START]:_.TRANSITION_START,[n.TRANSITION_LEAVE_APPROVE]:_.TRANSITION_LEAVE_APPROVE,[n.TRANSITION_ERROR]:_.TRANSITION_ERROR,[n.TRANSITION_CANCEL]:_.TRANSITION_CANCEL},Rr=Ir(Lr),zr=`router.usePlugin`,Br=o(`router`,`usePlugin`);function Vr(e){if(!(e&&typeof e==`object`)||Array.isArray(e))throw Br.type`Plugin factory must return an object, got ${typeof e}`;if(typeof e.then==`function`)throw Br.type`Async plugin factories are not supported. Factory returned a Promise instead of a plugin object.`}const Hr=Object.freeze;var Ur=class e{#e=new Set;#t=new Set;#n;static validatePlugin(e){Vr(e)}setDependencies(e){this.#n=e}count(){return this.#e.size}use(...e){if(this.#n.getValidator()?.plugins.validateCountThresholds(this.#e.size+e.length),e.length===1){let t=e[0],n=this.#i(t);this.#e.add(t);let r=!1,i=()=>{if(!r){r=!0,this.#e.delete(t),this.#t.delete(i);try{n()}catch(e){this.#n.logger.error(zr,`Error during cleanup:`,e)}}};return this.#t.add(i),i}let t=this.#r(e),n=[];try{for(let e of t){let t=this.#i(e);n.push({factory:e,cleanup:t})}}catch(e){for(let{cleanup:e}of n)try{e()}catch(e){this.#n.logger.error(zr,`Cleanup error:`,e)}throw e}for(let{factory:e}of n)this.#e.add(e);let r=!1,i=()=>{if(!r){r=!0,this.#t.delete(i);for(let{factory:e}of n)this.#e.delete(e);for(let{cleanup:e}of n)try{e()}catch(e){this.#n.logger.error(zr,`Error during cleanup:`,e)}}};return this.#t.add(i),i}getAll(){return[...this.#e]}disposeAll(){for(let e of this.#t)e();this.#e.clear(),this.#t.clear()}#r(e){let t=new Set;for(let n of e)t.has(n)?this.#n.getValidator()?.plugins.warnBatchDuplicates(e):t.add(n);return t}#i(t){let n=this.#n.compileFactory(t);e.validatePlugin(n),this.#n.getValidator()?.plugins.validatePluginKeys(n),Hr(n);let r=[];for(let e of Rr)e in n&&(typeof n[e]==`function`?(r.push(this.#n.addEventListener(Lr[e],n[e])),e===`onStart`&&this.#n.canNavigate()&&this.#n.emitDiagnostic(ce.PLUGIN_AFTER_START,e)):this.#n.getValidator()?.plugins.warnPluginMethodType(e));return()=>{for(let e of r)e();typeof n.teardown==`function`&&n.teardown()}}};const H=Object.create,Wr=()=>!0,Gr=()=>!1,Kr=()=>Wr,qr=()=>Gr;function Jr(e){return e?Kr:qr}function Yr(e,t,n){n===void 0?e.delete(t):e.set(t,n)}var Xr=class{#e=new Map;#t=new Map;#n=new Map;#r=new Map;#i=new Map;#a=new Map;#o=new Map;#s=new Map;#c=new Map;#l=new Map;#u=[this.#i,this.#a];#d;setDependencies(e){this.#d=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.#d.getValidator();if(!r)return;let i=(e,t,i)=>{let{definition:a,external:o}=this.#g(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,r){this.#f(`activate`,e,t,n,`canActivate`,r)}addCanDeactivate(e,t,n,r){this.#f(`deactivate`,e,t,n,`canDeactivate`,r)}clearCanActivate(e,t){this.#p(`activate`,e,t)}clearCanDeactivate(e,t){this.#p(`deactivate`,e,t)}clearAll(){this.#e.clear(),this.#t.clear(),this.#n.clear(),this.#r.clear(),this.#a.clear(),this.#i.clear(),this.#o.clear(),this.#s.clear(),this.#c.clear(),this.#l.clear()}clearDefinitionGuards(){for(let e of this.#e.keys())this.#c.delete(e),this.#t.has(e)?this.#m(`activate`,e):this.#a.delete(e);for(let e of this.#n.keys())this.#o.delete(e),this.#r.has(e)?this.#m(`deactivate`,e):this.#i.delete(e);this.#e.clear(),this.#n.clear()}getFactories(){let e=H(null),t=H(null);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=H(null),t=H(null),n=H(null),r=H(null);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.#u}canNavigateTo(e,t,n,r){for(let t of e)if(!this.#_(this.#i,t,n,r,`canNavigateTo`))return!1;for(let e of t)if(!this.#_(this.#a,e,n,r,`canNavigateTo`))return!1;return!0}compileGuardFactory(e,t){let n=typeof e==`boolean`?Jr(e):e,r=this.#d.compileFactory(n);if(typeof r!=`function`)throw o(`router`,t).type`Factory must return a function, got ${typeof r}`;return r}#f(e,t,n,r,i,a){let o=this.#g(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.#d.getValidator()?.lifecycle.warnOverwrite(t,e,i);else{let t=this.#d.getValidator();if(t){let n=this.getHandlerCount(e);t.lifecycle.validateHandlerLimit(n,i),t.lifecycle.validateCountThresholds(n+1,i)}}let u=typeof n==`boolean`?Jr(n):n,d=c.get(t),f=this.#h(e),p=r?f.definition:f.external,m=p.get(t);c.set(t,u);let h=r&&l.has(t);try{let e=a??this.compileGuardFactory(u,i);p.set(t,e),h||s.set(t,e)}catch(n){throw Yr(c,t,d),Yr(p,t,m),this.#m(e,t),n}}#p(e,t,n){let{definition:r,external:i}=this.#g(e),a=this.#h(e),o=n!==`external`&&r.delete(t),s=n!==`definition`&&i.delete(t);o&&a.definition.delete(t),s&&a.external.delete(t),(o||s)&&this.#m(e,t)}#m(e,t){let n=this.#h(e),r=e===`activate`?this.#a:this.#i,i=n.external.get(t)??n.definition.get(t);if(!i){r.delete(t);return}r.set(t,i)}#h(e){return e===`activate`?{definition:this.#c,external:this.#l}:{definition:this.#o,external:this.#s}}#g(e){return e===`activate`?{definition:this.#e,external:this.#t}:{definition:this.#n,external:this.#r}}#_(e,t,n,r,i){let a=e.get(t);if(!a)return!0;try{let e=a(n,r);return typeof e==`boolean`?e:(this.#d.getValidator()?.lifecycle.warnAsyncGuardSync(t,i),!1)}catch(e){return this.#d.logger.warn(`router.${i}`,`Guard for "${t}" threw — treated as navigation-blocking (returned false)`,e),!1}}};const Zr=new Set([`name`,`path`,`children`,`canActivate`,`canDeactivate`,`forwardTo`,`encodeParams`,`decodeParams`,`defaultParams`,`defaultSearch`]),Qr=Object.freeze,U=Object.create,$r=Object.hasOwn,ei=Object.keys;function ti(){return{decoders:U(null),encoders:U(null),defaultParams:U(null),defaultSearch:U(null),forwardMap:U(null),forwardFnMap:U(null)}}function ni(e){return ei(e.forwardMap).length>0||ei(e.forwardFnMap).length>0}function ri(e,t){for(let n of ei(t))Object.assign(e[n],t[n])}function ii(e,t){for(let n in e)if($r(t,n)&&!pe(e[n],t[n]))return!1;return!0}function ai(e){return typeof e==`string`?e:`<non-string>`}function oi(e,t){for(let n in e)if(!pe(e[n],t[n]))return!1;return!0}function si(e){let t={name:e.name,path:e.path};return e.children&&s(t,`children`,e.children.map(e=>si(e))),t}function ci(e,t,n){if(n.add(t),e.children)for(let r of e.children)ci(r,`${t}.${r.name}`,n)}function li(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){e.splice(r,1);let t=new Set;return ci(i,a,t),t}if(i.children&&t.startsWith(`${a}.`)){let e=li(i.children,t,a);if(e)return e}}}function ui(e,t){for(let n of ei(e))t(n)&&delete e[n]}function di(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 fi(e){let t=[];for(let n of e)for(let e of n.paramMeta.urlParams)t.push(e);return t}const pi=Qr([]);function mi(e,t,n){let r=n.get(t);if(r!==void 0)return r;let i=e.getSegmentsByName(t);if(!i)return pi;let a=Qr(fi(i));return n.set(t,a),a}function hi(e,t){return mi(e.matcher,t,e.urlParamsCache)}const gi=Qr([]);function _i(e,t,n,r){let i=r.get(t);if(i!==void 0)return i;let a=e.getDeclaredQueryParams(t);if(!a)return gi;let o=mi(e,t,n),s=Qr(a.filter(e=>!o.includes(e)));return r.set(t,s),s}function vi(e,t){return e.getDeclaredQueryParams(t)??gi}function yi(e,t){return _i(e.matcher,t,e.urlParamsCache,e.queryParamsCache)}function bi(e,t,n){let r=new Map,i=new Map;Oe(t.defaultParams,t=>_i(e,t,r,i),n)}const xi=o(`router`);function Si(e,t,n=100){let r=String(e),i=new Set,a=[r],o=r;for(;;){let e=t[o];if(!e)break;let r=String(e);if(i.has(r)){let e=a.indexOf(r),t=[...a.slice(e),r];throw xi.plain`Circular forwardTo: ${t.join(` → `)}`}if(i.add(o),a.push(r),o=r,a.length>n)throw xi.plain`forwardTo chain exceeds maximum depth (${n}): ${a.join(` → `)}`}return o}const Ci=o(`router`),wi=o(`router`,`addRoute`),Ti=Object.freeze,W=Object.create,Ei=Object.entries,Di=Object.keys,Oi=Object.defineProperty,ki=Object.fromEntries;function Ai(e,t,n){let r=tn(``,t,e),i=Rn(n);return i.registerTree(r),{tree:r,matcher:i}}function ji(e,t=e.definitions){let n=Ai(t,e.rootPath,e.matcherOptions);e.tree=n.tree,e.matcher=n.matcher,e.urlParamsCache.clear(),e.queryParamsCache.clear()}function Mi(e,t){let n=Ai(e.definitions,t,e.matcherOptions);bi(n.matcher,e.config,`setRootPath`),e.rootPath=t,e.tree=n.tree,e.matcher=n.matcher,e.urlParamsCache.clear(),e.queryParamsCache.clear()}function Ni(e,t){ji(e,t),G(e,Ii(e.config))}function Pi(e){Fi(e),ji(e,[])}function Fi(e){Object.assign(e.config,ti()),G(e,W(null)),e.routeCustomFields=W(null)}function G(e,t){e.resolvedForwardMap=t,e.hasAnyForward=ni(e.config)}function Ii(e){let t=W(null);for(let n of Di(e.forwardMap))t[n]=Si(n,e.forwardMap);return t}function Li(e,t){if(typeof e!=`function`){if(typeof e!=`string`&&e!==null)throw Ci.type`forwardTo must be a string or function for route "${t}", got ${typeof e}`;return}let n=e.constructor.name===`AsyncFunction`,r=e.toString().includes(`__awaiter`);if(n||r)throw Ci.type`forwardTo callback cannot be async for route "${t}". Async functions break matchPath/buildPath.`}function Ri(e,t,n,r){if(Li(e.forwardTo,t),e.canActivate){let n=typeof e.forwardTo==`string`?e.forwardTo:`[dynamic]`;r.warn(`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]`;r.warn(`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}".`)}typeof e.forwardTo==`string`?n.forwardMap[t]=e.forwardTo:n.forwardFnMap[t]=e.forwardTo}function zi(e,t,n,r,i,a,o){let s=ki(Ei(e).filter(([e])=>!Zr.has(e)));if(Di(s).length>0&&(r[t]=Ti(s)),e.canActivate&&i.set(t,e.canActivate),e.canDeactivate&&a.set(t,e.canDeactivate),e.forwardTo&&Ri(e,t,n,o),e.decodeParams){let r=e.decodeParams;n.decoders[t]=e=>r(e)??e}if(e.encodeParams){let r=e.encodeParams;n.encoders[t]=e=>r(e)??e}e.defaultParams&&(n.defaultParams[t]=k(`defaultParams`,e.defaultParams)),e.defaultSearch&&(n.defaultSearch[t]=k(`defaultSearch`,e.defaultSearch))}function Bi(e,t,n,r,i,a,o=``){for(let s of e){let e=o?`${o}.${s.name}`:s.name;zi(s,e,t,n,r,i,a),s.children&&Bi(s.children,t,n,r,i,a,e)}}function Vi(e){let t=ti();return ri(t,e),t}function Hi(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]:Hi(n,t,i)}})}function Ui(e,t,n){for(let r of e){let e=t?`${t}.${r.name}`:r.name;n(e),r.children&&Ui(r.children,e,n)}}function Wi(e,t,n){let r=new Set;Ui(e,t,e=>{if(r.has(e))throw o(`router`,n).plain`Duplicate route "${e}" in batch`;r.add(e)})}function Gi(e,t){if(tr(e,t),e.startsWith(`@@`))throw o(`router`,t).plain`Route name "${e}" uses the reserved "${`@@`}" prefix. Routes with this prefix are internal and cannot be modified through the public API.`}function Ki(e,t){for(let n of e)Gi(n.name,t),n.children&&Ki(n.children,t)}function qi(e,t){for(let n of e)ie(n.name,t),n.children&&qi(n.children,t)}function Ji(e,t){for(let n of e)ae(n.name,t),n.children&&Ji(n.children,t)}function Yi(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 o(`router`,n).plain`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 Xi(e,t,n){if(Ki(t,`addRoute`),qi(t,`addRoute`),Ji(t,`addRoute`),n!==void 0&&!e.matcher.hasRoute(n))throw wi.plain`Parent route "${n}" does not exist`;Ui(t,n??``,t=>{if(e.matcher.hasRoute(t))throw wi.plain`Route "${t}" already exists`}),Wi(t,n??``,`addRoute`),Yi(t,n??``,`addRoute`)}function Zi({definitions:e,routesForHandlers:t,config:n,routeCustomFields:r,handlerParentName:i,rootPath:a,matcherOptions:o,logger:s}){let c=new Map,l=new Map;Bi(t,n,r,c,l,s,i);let u=Ii(n),{tree:d,matcher:f}=Ai(e,a,o);return{config:n,routeCustomFields:r,pendingCanActivate:c,pendingCanDeactivate:l,tree:d,matcher:f,resolvedForwardMap:u}}function Qi(e,t,n,r){return Zi({definitions:Hi(e.definitions,t.map(e=>si(e)),n===void 0?[]:n.split(`.`)),routesForHandlers:t,config:Vi(e.config),routeCustomFields:Object.assign(W(null),e.routeCustomFields),handlerParentName:n??``,rootPath:e.rootPath,matcherOptions:e.matcherOptions,logger:r})}function $i(e,t,n,r){return Zi({definitions:e.map(e=>si(e)),routesForHandlers:e,config:ti(),routeCustomFields:W(null),handlerParentName:``,rootPath:t,matcherOptions:n,logger:r})}function ea(e,t,n){let r=[];for(let[i,a]of e)r.push([i,a,t(a,n)]);return r}function ta(e,t){return{activate:ea(e.pendingCanActivate,t.compileGuard,`canActivate`),deactivate:ea(e.pendingCanDeactivate,t.compileGuard,`canDeactivate`)}}function na(e,t,n){let r=e.depsStore,{activate:i,deactivate:a}=n??ta(t,r);Object.assign(e.config,t.config),e.routeCustomFields=t.routeCustomFields,e.tree=t.tree,e.matcher=t.matcher,e.urlParamsCache.clear(),e.queryParamsCache.clear(),G(e,t.resolvedForwardMap);for(let[e,t,n]of i)r.addActivateGuard(e,t,n);for(let[e,t,n]of a)r.addDeactivateGuard(e,t,n)}function K(e){return e===null?e:e||void 0}function ra(e,t){return t==null?t:k(e,t)}function ia(e,t,n,r){let{forwardTo:i,defaultParams:a,defaultSearch:o,decodeParams:s,encodeParams:c,canActivate:l,canDeactivate:u}=r,d=K(i),f=ra(`defaultParams`,K(a)),p=ra(`defaultSearch`,K(o)),m=K(s),h=K(c),g=K(l),_=K(u);f!=null&&S(`updateRoute`,n,f,yi(e,n),"this route's `defaultParams`","Move it to `defaultSearch`");let v=d===void 0?void 0:aa(n,d,e.config),y=oa(e,n,r),b=g==null?void 0:t.compileGuardFactory(g,`canActivate`),x=_==null?void 0:t.compileGuardFactory(_,`canDeactivate`);return t.preflightHandlerLimit(b===void 0?[]:[n],x===void 0?[]:[n],!1),y!==void 0&&(Di(y).length>0?e.routeCustomFields[n]=Ti(y):delete e.routeCustomFields[n]),v!==void 0&&(e.config.forwardMap=v.forwardMap,e.config.forwardFnMap=v.forwardFnMap,G(e,v.resolved)),ca(e,n,{defaultParams:f,defaultSearch:p,decodeParams:m,encodeParams:h}),la(t,`activate`,n,g,b),la(t,`deactivate`,n,_,x),{forwardTo:d,defaultParams:f,defaultSearch:p,decodeParams:m,encodeParams:h}}function aa(e,t,n){Li(t,e);let r=Object.assign(W(null),n.forwardMap),i=Object.assign(W(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:Ii({...n,forwardMap:r})}}function oa(e,t,n){let r;for(let i of Di(n)){if(Zr.has(i))continue;let a=n[i];a!==void 0&&(r??={...e.routeCustomFields[t]},a===null?delete r[i]:s(r,i,a))}return r}function sa(e,t,n){n!==void 0&&(n===null?delete e[t]:e[t]=n)}function ca(e,t,n){if(sa(e.config.defaultParams,t,n.defaultParams),sa(e.config.defaultSearch,t,n.defaultSearch),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 la(e,t,n,r,i){r!==void 0&&(t===`activate`?r===null?e.clearCanActivate(n,`definition`):e.addCanActivate(n,r,!0,i):r===null?e.clearCanDeactivate(n,`definition`):e.addCanDeactivate(n,r,!0,i))}function ua(e,t,n){let r=e;Ki(r,`addRoute`),qi(r,void 0),Ji(r,void 0),Wi(r,``,`addRoute`);let i=$i(r,``,t,n),a={get definitions(){return rn(a.tree)},config:i.config,tree:i.tree,matcher:i.matcher,urlParamsCache:new Map,queryParamsCache:new Map,resolvedForwardMap:i.resolvedForwardMap,hasAnyForward:ni(i.config),routeCustomFields:i.routeCustomFields,rootPath:``,matcherOptions:t,depsStore:void 0,lifecycleNamespace:void 0,revalidating:!1,pendingCanActivate:i.pendingCanActivate,pendingCanDeactivate:i.pendingCanDeactivate};return bi(a.matcher,a.config,`addRoute`),Oi(a,`matcherOptions`,{writable:!1,configurable:!1}),a}const da=Object.freeze,fa=Object.keys,pa=[];Object.freeze(pa);function ma(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 ha=new Set([`string`,`number`,`boolean`]);function ga(e){return ha.has(typeof e)}function _a(e,t,n,r){let i=t[e];if(!i||typeof i!=`object`)return!0;for(let e of fa(i)){let t=n.params[e],i=r.params[e];if(ga(t)&&ga(i)&&String(t)!==String(i))return!1}return!0}function va(e,t,n,r,i,a){for(let o=0;o<a;o++){let a=r[o];if(a!==i[o]||!_a(a,e,t,n))return o}return a}const ya=new Map;function q(e){let t=ya.get(e);if(t)return t;let n=ba(e);return da(n),ya.set(e,n),n}function ba(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]:ma(e)}let xa,Sa,Ca=null,wa,Ta,Ea=null;function Da(e,t,n){if(!t)return{intersection:``,toActivate:q(e.name),toDeactivate:pa};let r=n(e.name),i=n(t.name);if(!r&&!i)return{intersection:``,toActivate:q(e.name),toDeactivate:q(t.name)};let a=q(e.name),o=q(t.name),s=Math.min(o.length,a.length),c=va(r??i,e,t,a,o,s),l;if(c>=o.length)l=pa;else if(c===0&&o.length===1)l=o;else{l=[];for(let e=o.length-1;e>=c;e--)l.push(o[e])}let u=c===0?a:a.slice(c);return{intersection:c>0?o[c-1]:``,toDeactivate:l,toActivate:u}}function Oa(e,t,n){if(Ca!==null&&e===xa&&t===Sa)return Ca;if(Ea!==null&&e===wa&&t===Ta)return Ea;let r=Da(e,t,n);return wa=xa,Ta=Sa,Ea=Ca,xa=e,Sa=t,Ca=r,r}const ka=o(`router`),Aa=o(`router`,`shouldUpdateNode`),ja=Object.freeze,J=Object.hasOwn;function Ma(e,t){return{name:t??e.segments.at(-1).fullName,params:e.params,search:e.search,meta:e.meta}}function Na(e){let t=Cr(e);return t===`preserve`?void 0:t}var Pa=class{#e;#t;#n;get#r(){return this.#e.depsStore}constructor(e,t,n){this.#e=ua(e,t,n)}static shouldUpdateNode(e,t){return(n,r)=>{if(!(n&&typeof n==`object`&&`name`in n))throw Aa.type`toState must be valid State object`;if(n.transition?.reload||e===``)return!0;let{intersection:i,toActivate:a,toDeactivate:o}=Oa(n,r,t);return e===i||a.includes(e)?!0:o.includes(e)}}isRevalidating(){return this.#e.revalidating}setDependencies(e){this.#e.depsStore=e}flushPendingGuards(){let e=this.#r;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){Mi(this.#e,e)}hasRoute(e){return this.#e.matcher.hasRoute(e)}clearRoutes(){Pi(this.#e)}buildPath(t,n,r,i){if(t===e.UNKNOWN_ROUTE)return typeof n.path==`string`?n.path:``;let a=this.#e.config.encoders[t];if(typeof a==`function`){let e=a({params:{...n},search:{...r}});return this.#e.matcher.buildPath(t,e.params,e.search,this.#c(i))}return this.#e.matcher.buildPath(t,n,r,this.#c(i))}buildPathFromIntent(t,n,r){return t===e.UNKNOWN_ROUTE?this.#r.port.buildPath(t,O(n,d),r??c):B(z(this.#r.port,t,n,r,{resolveForward:!1}),this.#r.port)}matchPath(e,t){let n=t,r=this.#e.matcher.match(e);if(!r)return;let i=Ma(r),{name:a}=i,o=D(i.params),s=D(i.search),c=this.#e.config.decoders[a],l;if(typeof c==`function`){l=c({params:o,search:s});let e=l.params;l={params:e,search:l.search},this.#r.getValidator()?.routes.validateStateBuilderArgs(a,e,`matchPath`),S(`matchPath`,a,e,this.getQueryParams(a),"the `params` returned by this route's `decodeParams`")}else l={params:o,search:s};let u=z(this.#r.port,a,l.params,l.search),d=u.name;de(`matchPath`,u.name,u.path,this.getQueryParams(u.name));let f=u.path,p=u.query,m=e;if(n.rewritePathOnMatch){let t=this.#e.config.encoders[d],r=typeof t==`function`?t({params:f,search:p}):{params:f,search:p},i=n.trailingSlash;try{m=this.#e.matcher.buildPath(d,r.params,r.search,{trailingSlash:Na(i),queryParamsMode:wr(n.queryParamsMode)}),Cr(i)===`preserve`&&(m=di(e,m))}catch{m=e}}return V(u,m)}forwardState(e,t,n){let r=n??c;if(J(this.#e.config.forwardFnMap,e)){let n=this.#e.config.forwardFnMap[e],{target:i,chain:a,params:o}=this.#l(e,n,t);return this.#s(i,a,o,r)}let i=this.#e.resolvedForwardMap[e]??e;if(i!==e&&J(this.#e.config.forwardFnMap,i)){let n=this.#e.config.forwardFnMap[i],{target:a,chain:o,params:s}=this.#l(i,n,t);return this.#s(a,[...this.#o(e),...o],s,r)}return i===e?{name:e,params:t,search:r}:this.#s(i,this.#o(e),t,r)}buildStateResolved(e,t){let n=this.#e.matcher.getSegmentsByName(e);if(n)return Ma({segments:n,params:t,search:{},meta:this.#e.matcher.getMetaByName(e)},e)}isActiveRoute(e,t=d,n=c,r=!1,i=!0){if(this.#i(e,t,n,r,i))return!0;if(!this.#e.hasAnyForward)return!1;let a;try{a=typeof e==`string`?e:String(e)}catch{return!1}if(!J(this.#e.config.forwardMap,a)&&!J(this.#e.config.forwardFnMap,a))return!1;let o;try{o=this.forwardState(e,t,n)}catch(t){return this.#r.logger.warn(`router.isActiveRoute`,`Dynamic forwardTo of route "${ai(e)}" threw while resolving the active-link destination; treating the link as inactive.`,t),!1}return this.#i(o.name,o.params,o.search,r,i)}getMetaForState(e){return this.#e.matcher.hasRoute(e)?this.#e.matcher.getMetaByName(e):void 0}getUrlParams(e){return hi(this.#e,e)}getQueryParams(e){return yi(this.#e,e)}getPrintedQueryParams(e){return vi(this.#e.matcher,e)}getStore(){return this.#e}getPort(){return this.#r.port}#i(e,t,n,r,i){try{return this.#a(e,t,n,r,i)}catch(t){return this.#r.logger.warn(`router.isActiveRoute`,`Reading the arguments for route "${ai(e)}" threw while resolving the active-link state; treating the link as inactive.`,t),!1}}#a(e,t,n,r,i){let a=this.#r.getState();if(!a)return!1;let o=a.name;if(o!==e&&!o.startsWith(`${e}.`)&&!e.startsWith(`${o}.`))return!1;let s=z(this.#r.port,e,t,n,{resolveForward:!1});if(r||o===e){let e=Pr(s,``);return!this.#r.areStatesEqual(e,a,!0)||!ii(s.path,a.params)?!1:i||_e(e.search,a.search)}return!(!o.startsWith(`${e}.`)||!ii(s.path,a.params)||!i&&!oi(s.query,a.search))}#o(e){let t=[],n=e;for(;J(this.#e.config.forwardMap,n);)t.push(n),n=this.#e.config.forwardMap[n];return t}#s(e,t,n,r){let i,a;for(let e of t)i=ye(this.#e.config.defaultParams[e],i),a=ye(this.#e.config.defaultSearch[e],a);return{name:e,params:O(ye(i,n),d),search:O(ye(a,r),c)}}#c(e){return this.#t?(e!==this.#n&&this.#r.logger.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,this.#t=ja({trailingSlash:Na(e?.trailingSlash),queryParamsMode:wr(e?.queryParamsMode)}),this.#t)}#l(e,t,n){let r=j(n),i=new Set([e]),a=[e],o=t(this.#r.getDependency,r),s=0;if(typeof o!=`string`)throw ka.type`forwardTo callback must return a string, got ${typeof o}`;for(;s<100;){if(this.#e.matcher.getSegmentsByName(o)===void 0)throw ka.plain`Route "${o}" does not exist`;if(i.has(o)){let e=[...i,o].join(` → `);throw ka.plain`Circular forwardTo: ${e}`}if(i.add(o),J(this.#e.config.forwardFnMap,o)){let e=this.#e.config.forwardFnMap[o];a.push(o),o=e(this.#r.getDependency,r),s++;continue}let e=this.#e.config.forwardMap[o];if(e!==void 0){a.push(o),o=e,s++;continue}return{target:o,chain:a,params:r}}throw ka.plain`forwardTo exceeds maximum depth of ${100}`}};const Fa=o(`router`),Ia=new m(g.ROUTER_NOT_STARTED),La=new m(g.SAME_STATES),Ra=Fa.code(g.ROUTER_NOT_STARTED)`cannot commit before the start navigation does — the boot would overwrite it; defer with queueMicrotask/await, or navigate after start() resolves`;Object.freeze(Ia),Object.freeze(La),Object.freeze(Ra);const za=Promise.reject(Ia),Ba=Promise.reject(La),Va=Promise.reject(Ra);za.catch(()=>{}),Ba.catch(()=>{}),Va.catch(()=>{});const Ha=new Set([g.SAME_STATES,g.TRANSITION_CANCELLED,g.ROUTER_NOT_STARTED,g.ROUTE_NOT_FOUND,g.CANNOT_ACTIVATE,g.CANNOT_DEACTIVATE,g.ROUTER_ALREADY_STARTED]);function Ua(e){return e instanceof m&&Ha.has(e.code)}const Wa=new Set([za,Ba,Va]),Y=Object.freeze;function Ga(e){let{fromState:t,toDeactivate:n,toActivate:r,intersection:i}=e;Y(n),Y(r);let a={phase:`activating`,reason:`success`,segments:Y({deactivated:n,activated:r,intersection:i})};return t?.name!==void 0&&(a.from=t.name),e.reload!==void 0&&(a.reload=e.reload),e.replace!==void 0&&(a.replace=e.replace),e.redirected!==void 0&&(a.redirected=e.redirected),Y(a)}function Ka(t,n){let{toState:r,fromState:i,toDeactivate:a,toActivate:o}=n;if(r.name!==e.UNKNOWN_ROUTE&&!t.hasRoute(r.name)){let e=l(new m(g.ROUTE_NOT_FOUND,{routeName:r.name}));throw t.sendTransitionFail(i,e,n),e}let s=n,c={...r,transition:Ga(n)},u=Y(c);n.toState=u;let d=t.canCommitTransition(s);if(!d)throw l(new m(g.TRANSITION_CANCELLED));for(let e of a)!o.includes(e)&&n.canDeactivateFunctions.has(e)&&t.clearCanDeactivate(e,d);return t.sendTransitionDone(s),u}const qa=Object.entries;function Ja(e){return e instanceof m&&e.code===g.TRANSITION_CANCELLED}function Ya(e){return Ja(e)?e:l(new m(g.TRANSITION_CANCELLED,{reason:e}))}function Xa(e,t,n,r){let i=t;i.code!==g.TRANSITION_CANCELLED&&i.code!==g.ROUTE_NOT_FOUND&&e.sendTransitionFail(n,i,r)}function Za(e,t,n){if(e instanceof DOMException&&e.name===`AbortError`)throw l(new m(g.TRANSITION_CANCELLED));if(Ja(e))throw e;Qa(e,t,n)}function Qa(e,t,n){if(e instanceof m){let{code:n,message:r,...i}=e.toJSON(),a=new m(n,{...i,message:r});throw a.setCode(t),a.stack=e.stack??``,l(a)}throw l(new m(t,eo(e,n)))}const $a=new Set([`code`,`segment`,`path`,`then`]);function eo(e,t){let n={segment:t};if(e instanceof Error){let t=e.message,r=e.stack,i=`cause`in e?e.cause:void 0;return{...n,message:t,stack:r,...i!==void 0&&{cause:i}}}if(e&&typeof e==`object`){let t={};for(let[n,r]of qa(e))n!==`__proto__`&&!$a.has(n)&&s(t,n,r);return{...n,...t}}return n}async function to(e,t,n){let r;try{r=await e}catch(e){Za(e,t,n);return}if(!r)throw l(new m(t,{segment:n}))}function no(e,t,n,r,i,a,o,s,c,u){if(!c())throw l(new m(g.TRANSITION_CANCELLED));if(e===1){let n=u();return n===void 0?void 0:{phase:e,index:t+1,pending:n}}let d=n[t],f=r.get(d);if(!f)return;let p=!1;try{p=f(a,o,s)}catch(e){Za(e,i,d)}let h;try{h=p.then}catch(e){Za(e,i,d)}if(typeof h==`function`){let n=p;return{phase:e,index:t+1,pending:new Promise((e,t)=>{Reflect.apply(h,n,[e,t])})}}if(!p)throw l(new m(i,{segment:d}))}function ro(e,t,n,r,i,a,o,s,c,l,u,d,f){let p=e===1,m=e===0;if(!p&&!(m?o:s))return;let h=m?i:a,_=p?1:h.length,v=m?n:r,y=m?g.CANNOT_DEACTIVATE:g.CANNOT_ACTIVATE;for(let n=t;n<_;n++){let t=no(e,n,h,v,y,c,l,u,d,f);if(t!==void 0)return t}}function io(e,t,n,r,i,a,o,s,c,l,u,d,f){for(let p=d;p<=2;p++){let m=ro(p,p===d?f:0,e,t,n,r,i,a,o,s,c,l,u);if(m!==void 0)return m}}async function ao(e,t,n,r,i,a,o,s,c,l,u,d){let f=e;for(;f!==void 0;){if(f.phase===1)await f.pending;else{let e=f.phase===0;await to(f.pending,e?g.CANNOT_DEACTIVATE:g.CANNOT_ACTIVATE,(e?r:i)[f.index-1])}f=io(t,n,r,i,a,o,s,c,l,u,d,f.phase,f.index)}}function oo(e,t,n,r,i,a,o,s,c,l,u){let d=io(e,t,n,r,i,a,o,s,c,l,u,0,0);return d===void 0?void 0:ao(d,e,t,n,r,i,a,o,s,c,l,u)}const so=Object.freeze,co=Object.freeze([]),lo=new Map;function uo(e,t){return t?so({...e,replace:!0}):e}function fo(e,t,n,r){return!!e&&!t&&!n&&e.path===r.path}function po(e,t){if(e.size===0)return!1;for(let n of t)if(e.has(n))return!0;return!1}function mo(e){let t=e.controller;if(t!==void 0)return t;let n=new AbortController;return e.cancelReason!==void 0&&n.abort(e.cancelReason),e.controller=n,n}function ho(e,t){t.externalSignal!==void 0&&t.cancelReason===void 0&&t.hasGuards&&e.bridgeExternalSignal(t)}function go(e,t,n,r,i,a,o,s,c,u){Co(e,a);let d=e.hasLeaveListeners()||e.hasPreCommitListeners(),f={toState:t,fromState:n,opts:r,suspendable:i!==void 0||d,forceDeactivate:u,toDeactivate:co,toActivate:co,intersection:``,canDeactivateFunctions:lo,canActivateFunctions:lo,shouldDeactivate:!1,shouldActivate:!1,hasGuards:!1,controller:void 0,cancelReason:void 0,detachExternalBridge:void 0,externalSignal:i,reload:o,replace:s,redirected:c};if(!e.startTransition(f))throw l(new m(g.TRANSITION_CANCELLED));return f}function _o(e,t){return e.sendLeaveApprove(t),Ka(e,t)}function vo(t,n){let[r,i]=t.getLifecycleFunctions(),{toDeactivate:a,toActivate:o,intersection:s}=Oa(n.toState,n.fromState,e=>t.getMetaForState(e));n.canDeactivateFunctions=r,n.canActivateFunctions=i,n.toDeactivate=a,n.toActivate=o,n.intersection=s,n.shouldDeactivate=!!n.fromState&&!n.forceDeactivate&&a.length>0,n.shouldActivate=n.toState.name!==e.UNKNOWN_ROUTE&&o.length>0,n.hasGuards=n.shouldDeactivate&&po(r,a)||n.shouldActivate&&po(i,o)}function yo(t,n,r){let i,a;try{i=t.getState();let o=be(r),s=o?.aborted===!0?o:void 0;r=ve(r);let c=A(r,`reload`),u=A(r,`force`),d=A(r,`replace`),f=A(r,`redirected`),p=A(r,`forceDeactivate`)===!0,h=i?.name===e.UNKNOWN_ROUTE&&!d,_=h||d;if(r=uo(r,h),fo(i,c,u,n))return t.emitTransitionError(n,i,La),Ba;let v=go(t,n,i,r,o,s,c,_,f,p);a=v;let y=v.externalSignal;if(y?.aborted===!0&&t.cancelNavigation(y.reason),vo(t,v),ho(t,v),!v.hasGuards&&!v.suspendable)return _o(t,v);let{canDeactivateFunctions:b,canActivateFunctions:x,toDeactivate:S,toActivate:C,shouldDeactivate:ee,shouldActivate:w,hasGuards:te}=v,ne=n;if(!te){let e=So(t,v);if(e!==void 0)return e}if(te){let e=mo(v),r=()=>!e.signal.aborted,a=e.signal,o=oo(b,x,S,C,ee,w,n,i,a,r,()=>{if(t.sendLeaveApprove(v),t.hasLeaveListeners())return t.awaitLeaveListeners(ne,i,a)});if(o!==void 0)return bo(t,o,v,e);if(!r())throw l(new m(g.TRANSITION_CANCELLED))}return Ka(t,v)}catch(e){let n=xo(t,e,{nav:a,fromState:i});return Promise.reject(n)}}async function bo(e,t,n,r){let i=()=>!r.signal.aborted,a=n.externalSignal,o,s=!1,c,u=new Promise(e=>{if(r.signal.aborted){e();return}o=()=>{e()},r.signal.addEventListener(`abort`,o,{once:!0})});t.catch(()=>{});try{if(a?.aborted)throw l(new m(g.TRANSITION_CANCELLED,{reason:a.reason}));if(await Promise.race([t,u]),!i())throw l(new m(g.TRANSITION_CANCELLED));let r=Ka(e,n);return s=!0,r}catch(t){let r=i()?t:Ya(t);throw c=r,Xa(e,r,n.fromState,n),r}finally{o&&r.signal.removeEventListener(`abort`,o),s||r.abort(c)}}function xo(e,t,n){let{nav:r}=n;if(r?.controller?.abort(t),r!==void 0){let i=e.isTransitioning()?t:Ya(t);return Xa(e,i,n.fromState,r),i}return t}function So(e,t){let{toState:n,fromState:r}=t;if(e.hasLeaveListeners()&&mo(t),e.sendLeaveApprove(t),e.hasLeaveListeners()){let i=mo(t),a;try{a=e.awaitLeaveListeners(n,r,i.signal)}catch(e){throw i.abort(e),e}return a===void 0?void 0:bo(e,a,t,i)}}function Co(e,t){if(e.isTransitioning()&&(e.logger.warn(`router.navigate`,`Concurrent navigation detected on shared router instance. For SSR, use cloneRouter() to create isolated instance per request.`),e.cancelNavigation()),t!==void 0)throw l(new m(g.TRANSITION_CANCELLED,{reason:t.reason}))}const wo=Object.freeze,To=o(`router`,`navigateToNotFound`),Eo=Object.freeze([e.UNKNOWN_ROUTE]),Do=Object.freeze({replace:!0});function Oo(t,n,r){Co(t,void 0);let i=t.getState(),a=i?q(i.name).toReversed():[];wo(a);let o={deactivated:a,activated:Eo,intersection:``};wo(o);let s={phase:`activating`,...i&&{from:i.name},reason:`success`,replace:!0,segments:o};wo(s);let l={name:e.UNKNOWN_ROUTE,params:d,search:c,path:n,transition:s,context:{}};if(wo(l),r&&i!==void 0&&!t.canDeactivateCurrent(a,l,i)){let e=To.code(g.CANNOT_DEACTIVATE,{path:n})`a canDeactivate guard on "${i.name}" refused to leave for ${n}`;throw t.emitTransitionError(void 0,i,e),e}return t.systemCommit(l,i,Do)}function ko(e,t){return Oo(e,t,!0)}function Ao(e,t){return Oo(e,t,!1)}const jo=o(`router`,`navigateToState`),Mo=o(`router`,`navigateToDefault`);var No=class{#e;#t;#n=0;setDependencies(e){this.#e=e,this.#t=t=>{Ua(t)||e.logger.error(`router.navigate`,`Unexpected navigation error`,t)}}navigate(e,t,n,r){return this.#r(this.#i(e,t,n,r))}navigateToState(e,t){return this.#r(this.#a(e,t))}navigateToDefault(e){return this.#r(this.#s(e))}navigateToNotFound(e){return ko(this.#e,e)}revalidateToNotFound(e){return Ao(this.#e,e)}isPreparing(){return this.#n>0}#r(e){return e instanceof Promise&&!Wa.has(e)&&e.catch(this.#t),e}#i(e,t,n,r){let i=this.#e;if(!i.canNavigate())return i.isStarting()?Va:za;let a;this.#n++;try{a=i.buildNavigateState(e,t,n)}catch(e){return Promise.reject(e)}finally{this.#n--}if(!a){let t=l(new m(g.ROUTE_NOT_FOUND,{routeName:e}));return i.emitTransitionError(void 0,i.getState(),t),Promise.reject(t)}return yo(this.#e,a,r)}#a(t,n){let r=this.#e;if(!r.canNavigate())return r.isStarting()?Va:za;let i=t.name;if(i!==e.UNKNOWN_ROUTE&&!r.hasRoute(i)){let e=l(new m(g.ROUTE_NOT_FOUND,{routeName:i}));return r.emitTransitionError(void 0,r.getState(),e),Promise.reject(e)}let a=y(t.params,r.getQueryParams(i));if(a!==void 0){let e=jo.code(g.WRONG_CHANNEL,{routeName:i})`${v(i,a,"`state.params`")}`;return r.emitTransitionError(void 0,r.getState(),e),Promise.reject(e)}let o;try{o=this.#o(t,i)}catch(e){return Promise.reject(e)}return yo(this.#e,o,n)}#o(e,t){let n={name:t,params:xe(e.params,d),search:xe(e.search,c),path:e.path,context:{...e.context},transition:i};return me(n)}#s(e){let t=this.#e;if(!t.getOptions().defaultRoute)return Promise.reject(Mo.code(g.ROUTE_NOT_FOUND)`no defaultRoute is configured — pass one to createRouter, or navigate to a route by name`);let n,r,i;this.#n++;try{({route:n,params:r,search:i}=t.resolveDefault())}catch(e){return Promise.reject(e)}finally{this.#n--}return n?typeof n==`string`?this.#i(n,r,i,e):Promise.reject(Mo.code(g.ROUTE_NOT_FOUND)`defaultRoute resolved to ${typeof n}, which cannot name a route`):Promise.reject(Mo.code(g.ROUTE_NOT_FOUND)`defaultRoute resolved to an empty name`)}};const Po={},Fo=o(`router`,`start`),Io=Object.freeze({replace:!0});function Lo(e){return[e,e?.reason].some(e=>e instanceof m&&e.code===g.ROUTE_NOT_FOUND)}var Ro=class{#e;setDependencies(e){this.#e=e}async start(e){let t=this.#e;if(t.isIdle())throw l(new m(g.TRANSITION_CANCELLED));let n=t.getOptions();if(typeof e!=`string`)throw Fo.type`path must be a string, got ${typeof e}`;let r=t.getRootPath(),i=t.matchPath(e);if(!i&&!n.allowNotFound){let t=new m(g.ROUTE_NOT_FOUND,{path:e});throw l(t)}if(t.completeStart(),i!==void 0&&t.getRootPath()!==r&&(i=t.matchPath(e),!i&&!n.allowNotFound))throw l(new m(g.ROUTE_NOT_FOUND,{path:e}));if(i)try{return await t.navigateToState(i,Io)}catch(r){if(!n.allowNotFound||!Lo(r))throw r;return t.navigateToNotFound(e)}return t.navigateToNotFound(e)}};const zo={},Bo=Object.create,Vo=Object.entries,Ho=Object.hasOwn,Uo=Object.values,Wo=new WeakMap;function Go(e,t,n){if(typeof n==`string`)return{target:n,when:void 0,update:void 0};let r=n.when,i=n.update;if(r!==void 0&&typeof r!=`function`)throw f.plain`transitions["${e}"]["${t}"].when is not a function`;if(i!==void 0&&typeof i!=`function`)throw f.plain`transitions["${e}"]["${t}"].update is not a function`;return{target:n.target,when:r,update:i}}function Ko(e){let t=Wo.get(e);if(t!==void 0)return t;let n=e,r=Bo(null);for(let[e,t]of Vo(n)){let n=Bo(null);for(let[r,i]of Vo(t))i!==void 0&&(n[r]=Go(e,r,i));r[e]=n}for(let e of Uo(r))for(let t of Uo(e))if(t!==void 0&&r[t.target]===void 0)throw f.plain`state "${t.target}" is not declared in config.transitions`;return Wo.set(e,r),r}var qo=class{#e;#t;#n=0;#r=null;#i;#a;#o=[];constructor(e){let t=e.initial;if(this.#e=t,this.#i=e.context,this.#a=Ko(e.transitions),this.#a[t]===void 0)throw f.plain`state "${t}" is not declared in config.transitions`;this.#t=this.#a[t]}send(e,t){let n=this.#t[e];if(n===void 0)return this.#e;let r=t,i=n.when;if(i!==void 0&&!i(this.#i,r))return this.#e;let a=n.target,o=n.update,s=this.#e;if(this.#e=a,this.#t=this.#a[a],o?.(this.#i,r),this.#r!==null){let t=this.#r.get(s)?.get(e);t!==void 0&&t(r)}if(this.#n>0){let t={from:s,to:a,event:e,payload:r};for(let e of this.#o)e!==null&&e(t)}return this.#e}canSend(e,t){let n=this.#t[e];return n===void 0?!1:n.when===void 0||n.when(this.#i,t)}getState(){return this.#e}getContext(){return this.#i}on(e,t,n){let r=this.#a[e];if(r===void 0)throw f.plain`state "${e}" is not declared in config.transitions`;if(!Ho(r,t))throw f.plain`event "${t}" has no edge from state "${e}"`;this.#r??=new Map;let i=this.#r.get(e);i||(i=new Map,this.#r.set(e,i));let a=n;return i.set(t,a),()=>{let n=this.#r?.get(e);n?.get(t)===a&&n.delete(t)}}onTransition(e){let t=this.#o.indexOf(null),n;t===-1?(n=this.#o.length,this.#o.push(e)):(this.#o[t]=e,n=t),this.#n++;let r=!0;return()=>{r&&(r=!1,this.#o[n]=null,this.#n--)}}};const X={IDLE:`IDLE`,STARTING:`STARTING`,READY:`READY`,TRANSITION_STARTED:`TRANSITION_STARTED`,LEAVE_APPROVED:`LEAVE_APPROVED`,DISPOSED:`DISPOSED`},Z={START:`START`,STARTED:`STARTED`,NAVIGATE:`NAVIGATE`,LEAVE_APPROVE:`LEAVE_APPROVE`,COMPLETE:`COMPLETE`,FAIL:`FAIL`,CANCEL:`CANCEL`,STOP:`STOP`,DISPOSE:`DISPOSE`,SYSTEM_COMMIT:`SYSTEM_COMMIT`};function Jo(){return{inflight:void 0,current:void 0,previous:void 0}}const Yo=(e,t)=>t?.nav===void 0||t.nav===e.inflight,Xo=(e,t)=>t!==void 0&&t===e.inflight&&t.externalSignal?.aborted!==!0,Zo=(e,t)=>{e.previous=e.current,e.current=me(t)},Qo=(e,t)=>{Zo(e,t.toState),e.inflight=void 0},$o=(e,t)=>{Zo(e,t.toState)},es=e=>{e.previous=e.current,e.current=void 0},Q=e=>{e.current=void 0,e.previous=void 0,e.inflight=void 0},ts=(e,t)=>{e.inflight=t},ns={[X.IDLE]:{[Z.START]:X.STARTING,[Z.DISPOSE]:{target:X.DISPOSED,update:Q}},[X.STARTING]:{[Z.STARTED]:X.READY,[Z.FAIL]:X.IDLE,[Z.STOP]:{target:X.IDLE,update:es},[Z.DISPOSE]:{target:X.DISPOSED,update:Q}},[X.READY]:{[Z.NAVIGATE]:{target:X.TRANSITION_STARTED,update:ts},[Z.SYSTEM_COMMIT]:{target:X.READY,update:$o},[Z.STOP]:{target:X.IDLE,update:es},[Z.DISPOSE]:{target:X.DISPOSED,update:Q}},[X.TRANSITION_STARTED]:{[Z.NAVIGATE]:{target:X.TRANSITION_STARTED,update:ts},[Z.LEAVE_APPROVE]:X.LEAVE_APPROVED,[Z.CANCEL]:X.READY,[Z.FAIL]:{target:X.READY,when:Yo},[Z.DISPOSE]:{target:X.DISPOSED,update:Q}},[X.LEAVE_APPROVED]:{[Z.NAVIGATE]:{target:X.TRANSITION_STARTED,update:ts},[Z.COMPLETE]:{target:X.READY,when:Xo,update:Qo},[Z.CANCEL]:X.READY,[Z.FAIL]:{target:X.READY,when:Yo},[Z.DISPOSE]:{target:X.DISPOSED,update:Q}},[X.DISPOSED]:{}};function rs(){return new qo({initial:X.IDLE,context:Jo(),transitions:ns})}const is=o(`router`,`subscribe`),as=o(`router`,`subscribeChanges`),os=o(`router`,`subscribeDiagnostic`),ss=o(`router`,`subscribeLeave`),cs=Object.freeze,ls=`TREE_CHANGED`;function us(e){return e instanceof Error?e:Error(String(e))}function ds(e,t,n){return new Promise((r,i)=>{let a=()=>{let e=n.reason;i(e instanceof m&&e.code===g.TRANSITION_CANCELLED?e:l(new m(g.TRANSITION_CANCELLED,{reason:e})))};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(us(t));return}let o=e.find(e=>e.status===`rejected`);if(o!==void 0){i(us(o.reason));return}r()})})}function fs(e,t,n){return e.addEventListener(`abort`,t,{once:!0}),()=>{n(),e.removeEventListener(`abort`,t)}}var ps=class{#e;#t;#n;#r=[];#i=0;constructor(e){this.#e=e.routerFSM,this.#t=e.emitter,this.#s()}static validateSubscribeListener(e){if(typeof e!=`function`)throw is.type`Expected a function. For Observable pattern use observable(router) from @real-router/rx`}static validateSubscribeLeaveListener(e){if(typeof e!=`function`)throw ss.type`Expected a function`}emitRouterStart(){this.#i++;try{this.#t.emit(_.ROUTER_START)}finally{this.#i--}}emitRouterStop(){this.#t.emit(_.ROUTER_STOP)}emitTransitionStart(e,t,n){this.#i++;try{this.#t.emit(_.TRANSITION_START,e,t)}finally{this.#i--}}emitTransitionSuccess(e,t,n){this.#i++;try{this.#t.emit(_.TRANSITION_SUCCESS,e,t,n)}finally{this.#i--}}emitTransitionError(e,t,n){this.#i++;try{this.#t.emit(_.TRANSITION_ERROR,e,t,n)}finally{this.#i--}}emitTransitionCancel(e,t){this.#i++;try{this.#t.emit(_.TRANSITION_CANCEL,e,t)}finally{this.#i--}}emitTransitionLeaveApprove(e,t){this.#i++;try{this.#t.emit(_.TRANSITION_LEAVE_APPROVE,e,t)}finally{this.#i--}}isProcessing(){return this.#i>0}emitTreeChanged(e){this.#t.emit(ls,e)}isEmittingTreeChanged(){return this.#t.isDispatching(ls)}subscribeTreeChanged(e){if(this.isDisposed())throw as.code(g.ROUTER_DISPOSED)`cannot subscribe on a disposed router — dispose() is terminal`;return this.#t.on(ls,t=>{e(t)})}emitDiagnostic(e,...t){this.#t.emit(e,...t)}subscribeDiagnostic(e,t){if(this.isDisposed())throw os.code(g.ROUTER_DISPOSED)`cannot subscribe on a disposed router — dispose() is terminal`;return this.#t.on(e,(...e)=>{t(...e)})}treeChangedListenerCount(){return this.#t.listenerCount(ls)}sendStart(){this.#e.send(Z.START)}sendStop(){this.#e.send(Z.STOP)}sendDispose(){this.#e.send(Z.DISPOSE)}sendStarted(){this.#e.send(Z.STARTED)}sendNavigate(e){return this.#e.send(Z.NAVIGATE,e)===X.TRANSITION_STARTED}canCommitTransition(e){return this.#e.canSend(Z.COMPLETE,e)}sendComplete(e){this.#e.send(Z.COMPLETE,e)}sendLeaveApprove(e){this.#e.send(Z.LEAVE_APPROVE,e)}sendFail(e,t,n){this.#e.send(Z.FAIL,{nav:n,fromState:e,error:t})}sendCancel(e,t){this.#e.send(Z.CANCEL,{fromState:e,reason:t})}systemCommit(e){let{toState:t}=e,n=t.transition,r={name:t.name,params:xe(t.params,d),search:xe(t.search,c),path:t.path,context:{...t.context},...n!=null&&{transition:Se(n)}};if(!this.#e.canSend(Z.SYSTEM_COMMIT))throw l(this.#o());return this.#e.send(Z.SYSTEM_COMMIT,{...e,toState:r}),r}canBeginTransition(){return this.#e.canSend(Z.NAVIGATE)}canStart(){return this.#e.canSend(Z.START)}canCancel(){return this.#e.canSend(Z.CANCEL)}isActive(){let e=this.#e.getState();return e!==X.IDLE&&e!==X.DISPOSED}isDisposed(){return this.#e.getState()===X.DISPOSED}isTransitioning(){let e=this.#e.getState();return e===X.TRANSITION_STARTED||e===X.LEAVE_APPROVED}isLeaveApproved(){return this.#e.getState()===X.LEAVE_APPROVED}isReady(){return this.#e.getState()===X.READY}isStarting(){return this.#e.getState()===X.STARTING}isIdle(){return this.#e.getState()===X.IDLE}addEventListener(e,t){return this.#a(e,`addEventListener`),this.#t.on(e,t)}subscribe(e){if(this.isDisposed())throw is.code(g.ROUTER_DISPOSED)`cannot subscribe on a disposed router — dispose() is terminal`;return this.#a(_.TRANSITION_SUCCESS,`subscribe`),this.#t.on(_.TRANSITION_SUCCESS,(t,n)=>e({route:t,previousRoute:n}))}subscribeLeave(e){if(this.isDisposed())throw ss.code(g.ROUTER_DISPOSED)`cannot subscribe on a disposed router — dispose() is terminal`;this.#r.push(e);let t=!1;return()=>{if(t)return;t=!0;let n=this.#r.indexOf(e);n!==-1&&this.#r.splice(n,1)}}hasLeaveListeners(){return this.#r.length>0}hasPreCommitListeners(){return this.#t.listenerCount(_.TRANSITION_START)>0||this.#t.listenerCount(_.TRANSITION_LEAVE_APPROVE)>0}awaitLeaveListeners(e,t,n){if(t===void 0)return;let r=cs({route:t,nextRoute:e,signal:n}),i,a,o=[...this.#r];this.#i++;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.#i--}if(i===void 0){if(a!==void 0)throw us(a);return}return ds(i,a,n)}clearAll(){this.#t.clearAll(),this.#r.length=0}setLimits(e){this.#t.setLimits(e)}setValidatorAccessor(e){this.#n=e}sendCancelIfPossible(e,t){this.canCancel()&&this.sendCancel(e,t)}bridgeExternalSignal(e){let t=e.externalSignal;return t===void 0||e.detachExternalBridge!==void 0||(e.detachExternalBridge=fs(t,()=>{this.sendCancelIfPossible(this.#e.getContext().current,t.reason)},()=>{e.detachExternalBridge=void 0})),zo}#a(e,t){let n=this.#n?.();n&&n.eventBus.validateCountThresholds(this.#t.listenerCount(e)+1,e,t)}#o(){if(this.isDisposed())return new m(g.ROUTER_DISPOSED,{message:`[router] cannot commit a state on a disposed router — dispose() is terminal`});let e;return e=this.isTransitioning()?`[router] cannot commit a state while a transition is in flight — the navigation in progress commits its own`:this.isStarting()?`[router] cannot commit before the start navigation does — the boot would overwrite it; await start() first`:`[router] cannot commit a state before the router has started`,new m(g.ROUTER_NOT_STARTED,{message:e})}#s(){let e=this.#e;e.on(X.STARTING,Z.STARTED,()=>{this.emitRouterStart()}),e.on(X.READY,Z.STOP,()=>{this.emitRouterStop()});let t=e=>{let t=e.externalSignal!==void 0&&(this.hasLeaveListeners()||this.hasPreCommitListeners())?this.bridgeExternalSignal(e):zo;this.emitTransitionStart(e.toState,e.fromState,t)};e.on(X.READY,Z.NAVIGATE,t),e.on(X.TRANSITION_STARTED,Z.NAVIGATE,t),e.on(X.LEAVE_APPROVED,Z.NAVIGATE,t),e.on(X.TRANSITION_STARTED,Z.LEAVE_APPROVE,e=>{this.emitTransitionLeaveApprove(e.toState,e.fromState)}),e.on(X.LEAVE_APPROVED,Z.COMPLETE,e=>{e.detachExternalBridge?.(),this.emitTransitionSuccess(e.toState,e.fromState,e.opts)});let n=e=>{let{fromState:t,reason:n}=e,r=this.#e.getContext().inflight,i=n??l(new m(g.TRANSITION_CANCELLED));r.cancelReason=i,r.controller?.abort(i),r.detachExternalBridge?.(),this.emitTransitionCancel(r.toState,t)};e.on(X.TRANSITION_STARTED,Z.CANCEL,n),e.on(X.LEAVE_APPROVED,Z.CANCEL,n),e.on(X.READY,Z.SYSTEM_COMMIT,e=>{this.emitTransitionSuccess(e.toState,e.fromState,e.opts)});let r=e=>{let t=this.#e.getContext().inflight;t?.detachExternalBridge?.(),this.emitTransitionError(t?.toState,e.fromState,e.error)};e.on(X.LEAVE_APPROVED,Z.FAIL,r),e.on(X.TRANSITION_STARTED,Z.FAIL,r),e.on(X.STARTING,Z.FAIL,e=>{this.emitTransitionError(void 0,e.fromState,e.error)})}};const ms=Object.freeze;function hs(e){return _s(e)&&!Object.isFrozen(e)&&e!==R.defaultParams&&e!==R.defaultSearch}function gs(e){let{defaultParams:t,defaultSearch:n}=e;return ms({...hs(t)&&{defaultParams:new WeakRef(t)},...hs(n)&&{defaultSearch:new WeakRef(n)}})}function _s(e){return typeof e==`object`&&!!e}function vs(e){let t={...e};return e.limits!=null&&(t.limits=k(`limits`,e.limits)),_s(e.defaultParams)&&(t.defaultParams=k(`defaultParams`,e.defaultParams)),_s(e.defaultSearch)&&(t.defaultSearch=k(`defaultSearch`,e.defaultSearch)),t}const ys=Object.keys,bs=Object.freeze;function xs(e={}){let t={...h,...e};return bs({maxDependencies:Number(t.maxDependencies),maxPlugins:Number(t.maxPlugins),maxListeners:Number(t.maxListeners),warnListeners:Number(t.warnListeners),maxLifecycleHandlers:Number(t.maxLifecycleHandlers)})}function Ss(e){return e==null?void 0:bs(ys(e))}const Cs=o(`router`),ws=Object.freeze,Ts=Object.freeze({});function Es(e,t){let n;try{n=t[e]}catch(t){throw Cs.type({cause:t})`Invalid "queryParams.${e}": reading it threw.`}if(n!=null){if(typeof n==`string`)return n;try{return String(n)}catch(t){throw Cs.type({cause:t})`Invalid "queryParams.${e}": its value cannot be converted to a string.`}}}function Ds(e){if(e==null)return`default`;try{return String(e)}catch(e){throw Cs.type({cause:e})`Invalid "urlParamsEncoding": coercing it threw.`}}function Os(e){if(!e)return Ts;let t=Es(`arrayFormat`,e),n=Es(`booleanFormat`,e),r=Es(`nullFormat`,e),i=Es(`numberFormat`,e);return ws({...t!==void 0&&{arrayFormat:t},...n!==void 0&&{booleanFormat:n},...r!==void 0&&{nullFormat:r},...i!==void 0&&{numberFormat:i}})}function ks(e){return ws({strictTrailingSlash:e.trailingSlash===`strict`,caseSensitive:e.caseSensitive,strictQueryParams:e.queryParamsMode===`strict`,urlParamsEncoding:Ds(e.urlParamsEncoding),queryParams:Os(e.queryParams)})}const As=new m(g.ROUTER_ALREADY_STARTED);Object.freeze(As);const js=o(`router`),Ms={maxListeners:0,warnListeners:0};var Ns=class{#e=new Map;#t=new Set;#n=null;#r=Ms;#i;#a;constructor(e){e?.limits&&(this.#r=e.limits),this.#i=e?.onListenerError??null,this.#a=e?.onListenerWarn??null}setLimits(e){this.#r=e}on(e,t){let n=this.#e.get(e),r=n?.size??0;if(n?.has(t))throw js.plain`Duplicate listener for "${e}"`;let{maxListeners:i,warnListeners:a}=this.#r;if(i!==0&&r>=i)throw js.plain`Listener limit (${i}) reached for "${e}"`;a!==0&&r===a&&this.#a!==null&&(this.#n??=new Set,this.#n.has(e)||(this.#a(e,a),this.#n.add(e)));let o=n;return o===void 0&&(o=new Set,this.#e.set(e,o)),o.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;this.#o(e,s,o,t,n,r,i)}else{let s=[...a];for(let a of s)this.#o(e,a,o,t,n,r,i)}}finally{this.#t.delete(e)}}clearAll(){this.#e.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,o){try{let s=this.#s(t,n,r,i,a,o),c=s?.then;typeof c==`function`&&new Promise((e,t)=>{c.call(s,e,t)}).catch(t=>{this.#i?.(e,t)})}catch(t){this.#i?.(e,t)}}#s(e,t,n,r,i,a){switch(t){case 0:return e();case 1:return e(n);case 2:return e(n,r);case 3:return e(n,r,i);default:return e(n,r,i,a)}}};const Ps=Object.freeze({log:0,warn:1,error:2}),Fs=Object.freeze({all:0,"warn-error":1,"error-only":2,none:3}),Is=Object.hasOwn;var Ls=class{#e={level:`all`,callback:void 0,callbackIgnoresLevel:!1};#t=0;#n=!1;constructor(e){e&&this.configure(e)}configure(e){let t=mr(e),n=t.level;n!==void 0&&(this.#e.level=n,this.#t=Fs[n]),Is(t,`callback`)&&(this.#e.callback=t.callback),t.callbackIgnoresLevel!==void 0&&(this.#e.callbackIgnoresLevel=t.callbackIgnoresLevel)}getConfig(){return{level:this.#e.level,callback:this.#e.callback,callbackIgnoresLevel:this.#e.callbackIgnoresLevel}}log(e,t,...n){this.#r(`log`,e,t,n)}warn(e,t,...n){this.#r(`warn`,e,t,n)}error(e,t,...n){this.#r(`error`,e,t,n)}#r(e,t,n,r){if(this.#e.level===`none`&&!this.#e.callbackIgnoresLevel)return;let i=Ps[e]<this.#t;i||this.#i(e,t,n,r),this.#a(e,t,n,i,r)}#i(e,t,n,r){if(typeof console<`u`&&typeof console[e]==`function`){let i=t?`[${t}] ${n}`:n;console[e](i,...r)}}#a(e,t,n,r,i){if(!(!this.#e.callback||!this.#e.callbackIgnoresLevel&&r)&&!this.#n){this.#n=!0;try{let r=this.#e.callback(e,t,n,...i);r!=null&&typeof r.then==`function`&&Promise.resolve(r).catch(e=>{this.#o(`[router] Error in async callback:`,e)})}catch(e){this.#o(`[router] Error in callback:`,e)}finally{this.#n=!1}}}#o(e,t){typeof console<`u`&&typeof console.error==`function`&&console.error(e,t)}};function Rs(e){let t=t=>_r(e.dependenciesStore,t),n=zs(e.router,t),r=Gs(e),i=()=>E(e.router).validator;Bs(e),Vs(e,i),Hs(e,n,i),Us(e,r,i,t),Ws(e,n,i),Ks(e,r,t),qs(e),Js(e,r)}function zs(e,t){return n=>n(e,t)}function Bs(e){e.eventBus.setLimits({maxListeners:e.limits.maxListeners,warnListeners:e.limits.warnListeners})}function Vs(e,t){e.eventBus.setValidatorAccessor(t)}function Hs(e,t,n){let r={logger:E(e.router).logger,compileFactory:t,getValidator:n};e.routeLifecycle.setDependencies(r)}function Us(e,t,n,r){let i={logger:E(e.router).logger,getValidator:n,port:t,addActivateGuard:(t,n,r)=>{e.routeLifecycle.addCanActivate(t,n,!0,r)},addDeactivateGuard:(t,n,r)=>{e.routeLifecycle.addCanDeactivate(t,n,!0,r)},compileGuard:(t,n)=>e.routeLifecycle.compileGuardFactory(t,n),getState:()=>e.state.get(),areStatesEqual:(t,n,r)=>e.state.areStatesEqual(t,n,r),getDependency:r};e.routes.setDependencies(i),e.routes.setLifecycleNamespace(e.routeLifecycle)}function Ws(e,t,n){let r={logger:E(e.router).logger,addEventListener:(t,n)=>e.eventBus.addEventListener(t,n),canNavigate:()=>e.eventBus.canBeginTransition(),compileFactory:t,getValidator:n,emitDiagnostic:(t,...n)=>{e.eventBus.emitDiagnostic(t,...n)}};e.plugins.setDependencies(r)}function Gs(e){let t=E(e.router),n=e.routes.getStore(),r=(e,n)=>{t.validator?.state.reportUndeclaredParamKey(e,n)},i=(e,n)=>{t.validator?.state.reportDroppedQueryKey(e,n)};return{resolveForward:(e,n,r)=>t.forwardState(e,n,r),defaultParams:e=>n.config.defaultParams[e],defaultSearch:e=>n.config.defaultSearch[e],buildPath:(t,n,r)=>e.routes.buildPath(t,n,r,e.options.get()),queryNames:t=>e.routes.getQueryParams(t),printedQueryNames:t=>e.routes.getPrintedQueryParams(t),pathNames:t=>e.routes.hasRoute(t)?e.routes.getUrlParams(t):void 0,admitsUndeclaredQuery:()=>wr(e.options.get().queryParamsMode)===`loose`,get reportDroppedQueryKey(){return t.validator?i:void 0},get reportUndeclaredParamKey(){return t.validator?r:void 0}}}function Ks(e,t,n){let r=e=>n(e),i={logger:E(e.router).logger,getOptions:()=>e.options.get(),hasRoute:t=>e.routes.hasRoute(t),getQueryParams:t=>e.routes.getQueryParams(t),getMetaForState:t=>e.routes.getMetaForState(t),getState:()=>e.state.get(),buildNavigateState:(n,r,i)=>{E(e.router).validator?.routes.validateStateBuilderArgs(n,r,`navigate`);let a=z(t,n,r,i,{diagnoseUndeclared:!0});if(e.routes.getMetaForState(a.name)!==void 0)return de(`navigate`,a.name,a.path,t.queryNames(a.name)),V(a,B(a,t))},resolveDefault:()=>{let t=e.options.get(),n=E(e.router),i=kr(t.defaultRoute,r),a=kr(t.defaultParams,r),o=kr(t.defaultSearch,r);return typeof t.defaultRoute==`function`&&n.validator?.options.validateResolvedDefaultRoute(i),{route:i,params:a,search:o}},startTransition:t=>e.eventBus.sendNavigate(t),systemCommit:(t,n,r)=>e.eventBus.systemCommit({toState:t,fromState:n,opts:r}),cancelNavigation:t=>{e.eventBus.sendCancelIfPossible(e.state.get(),t)},bridgeExternalSignal:t=>{e.eventBus.bridgeExternalSignal(t)},canCommitTransition:t=>e.eventBus.canCommitTransition(t)?Po:void 0,sendTransitionDone:t=>{e.eventBus.sendComplete(t)},sendTransitionFail:(t,n,r)=>{e.eventBus.sendFail(t,n,r)},emitTransitionError:(t,n,r)=>{e.eventBus.emitTransitionError(t,n,r)},sendLeaveApprove:t=>{e.eventBus.sendLeaveApprove(t)},canNavigate:()=>e.eventBus.canBeginTransition(),isStarting:()=>e.eventBus.isStarting(),getLifecycleFunctions:()=>e.routeLifecycle.getFunctions(),canDeactivateCurrent:(t,n,r)=>e.routeLifecycle.canNavigateTo(t,[],n,r),isTransitioning:()=>e.eventBus.isTransitioning(),clearCanDeactivate:(t,n)=>{e.routeLifecycle.clearCanDeactivate(t,`external`)},hasLeaveListeners:()=>e.eventBus.hasLeaveListeners(),hasPreCommitListeners:()=>e.eventBus.hasPreCommitListeners(),awaitLeaveListeners:(t,n,r)=>e.eventBus.awaitLeaveListeners(t,n,r)};e.navigation.setDependencies(i)}function qs(e){e.lifecycle.setDependencies({getOptions:()=>e.options.get(),navigateToState:(t,n)=>e.navigation.navigateToState(t,n),navigateToNotFound:t=>e.navigation.navigateToNotFound(t),matchPath:t=>e.routes.matchPath(t,e.options.get()),getRootPath:()=>e.routes.getStore().rootPath,completeStart:()=>{e.eventBus.sendStarted()},isIdle:()=>e.eventBus.isIdle()})}function Js(e,t){e.state.setDependencies({port:()=>t,getUrlParams:t=>e.routes.getUrlParams(t)})}const Ys=o(`router`,`navigateToNotFound`),Xs=o(`router`,`usePlugin`),Zs=o(`router`,`start`),Qs=o(`router`);var $s=class e{#e;#t;#n;#r;#i;#a;#o;#s;#c;#l;#u;#d;#f;#p;constructor(t=[],n={},r={}){let{logger:i,...o}=n,s=new Ls(i?mr(i):void 0);this.#f=e=>{Ua(e)||s.error(`router.start`,`Unexpected start error`,e)},Or.validateOptionsIsObject(n),rr(r);let c=sr(t),u=vs(o);this.#r=gs(o),this.#e=new Or(u),this.#t=xs(u.limits),this.#n=Ss(u.limits),this.#i=br(r,this.#t),this.#a=new Fr,this.#o=new Pa(c,ks(this.#e.get()),s),this.#s=new Xr,this.#c=new Ur,this.#l=new No,this.#u=new Ro;let f=rs();this.#a.setContext(f.getContext());let p=new Ns({onListenerError:(e,t)=>{s.error(`router`,`Error in listener for ${e}:`,t)},onListenerWarn:(e,t)=>{s.warn(`router.addEventListener`,`Event "${e}" has ${t} listeners — possible memory leak`)}});this.#d=new ps({routerFSM:f,emitter:p});let h=new Map,_=new Map,v=e=>{let t=e.params,n=e.search;return{name:e.name,params:t==null?t:D(t),search:n==null?n:D(n)}},y=x(oe.forwardState,(e,t,n)=>this.#o.forwardState(e,t,n),h,v,ec),b=((e,t,n)=>{let r=y(e,t,n),i=r.name,a=r.params;S(`forwardState`,i,a,this.#o.getQueryParams(i),()=>i===e?"the `params` bag leaving the forwardState chain":`the \`params\` bag leaving the forwardState chain (forwarded here from "${e}")`);let o=r.search,s=o==null;return{name:i,params:D(a??d),search:s?o:D(o)}}),ee=x(oe.forwardState,(e,t,n)=>({name:e,params:t,search:n}),h,v,ec);this.#p=(e,t,n)=>{let r=ee(e,t,n),i=r.params,a=r.search;return this.#o.buildPathFromIntent(r.name,i??d,a)};let w={logger:s,makeState:(e,t,n,r)=>{le(w,`makeState`,e,t);let i=j(t);return w.validator?.state.validateMakeStateArgs(e,i,r),w.validator?.navigation.validateSearch(n,`makeState`),this.#a.makeState(e,i,n,r)},getMetaForState:e=>this.#o.getMetaForState(e),getDeclaredQueryNames:e=>this.#o.getQueryParams(e),forwardState:b,buildStateResolved:(e,t)=>this.#o.buildStateResolved(e,t),buildPathResolved:(e,t,n)=>{let r=j(t);return w.validator?.navigation.validateParamsShape(t,`buildPathResolved`),w.validator?.navigation.validateSearch(n,`buildPathResolved`),C(w.checks,T[`buildPathResolved:params`],r),this.#o.buildPathFromIntent(e,r??d,n)},port:()=>this.#o.getPort(),matchPath:(e,t)=>(w.validator?.routes.validateMatchPathArgs(e),this.#o.matchPath(e,t??this.#e.get())),getOptions:()=>this.#e.get(),getAdoptedOrigins:()=>this.#r,addEventListener:(e,t)=>(re(w.isDisposed),Xn(e),Zn(t),w.validator?.eventBus.validateListenerArgs(e,t),this.#d.addEventListener(e,t)),subscribeDiagnostic:(e,t)=>this.#d.subscribeDiagnostic(e,t),treeChanged:{emit:e=>{this.#d.emitTreeChanged(e)},subscribe:e=>this.#d.subscribeTreeChanged(e),listenerCount:()=>this.#d.treeChangedListenerCount(),isEmitting:()=>this.#d.isEmittingTreeChanged()},emitTransitionError:e=>{this.#d.emitTransitionError(void 0,this.#a.get(),e)},navigateToNotFound:e=>{if(e!==void 0&&typeof e!=`string`)throw Ys.type`path must be a string, got ${typeof e}`;return this.#l.navigateToNotFound(e)},revalidateToNotFound:e=>this.#l.revalidateToNotFound(e),start:ne(oe.start,e=>this.#u.start(e),h),navigateToState:(t,n)=>(re(w.isDisposed),w.validator?.navigation.validateNavigateToStateArgs(t),n!==void 0&&w.validator?.navigation.validateNavigationOptions(n,`navigateToState`),this.#g(),e.#m(this.#l.navigateToState(t,n??a))),interceptors:h,checks:_,setRootPath:e=>{w.validator?.routes.validateSetRootPathArgs(e),this.#o.setRootPath(e)},getRootPath:()=>this.#o.getStore().rootPath,getTree:()=>this.#o.getStore().tree,isDisposed:()=>this.#d.isDisposed(),validator:null,dependenciesGetStore:()=>this.#i,getCloneState:()=>({options:{...this.#e.get()},dependencies:yr(this.#i),pluginFactories:this.#c.getAll(),loggerConfig:s.getConfig(),limits:this.#t,limitKeys:this.#n}),routeGetStore:()=>this.#o.getStore(),getStateName:()=>this.#a.get()?.name,isTransitioning:()=>this.#d.isTransitioning(),systemCommit:(e,t,n)=>{let r=e.name;if(r!==`@@router/UNKNOWN_ROUTE`&&!this.#o.hasRoute(r))throw l(new m(g.ROUTE_NOT_FOUND,{routeName:r}));return this.#d.systemCommit({toState:e,fromState:t,opts:n})},routerExtensions:[],contextClaimRecords:new Map};se(this,w),Rs({router:this,options:this.#e,limits:this.#t,dependenciesStore:this.#i,state:this.#a,routes:this.#o,routeLifecycle:this.#s,plugins:this.#c,navigation:this.#l,lifecycle:this.#u,eventBus:this.#d}),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);try{this.#o.flushPendingGuards()}catch(e){throw this.dispose(),e}}isActiveRoute(e,t,n,r,i){let a=E(this);return a.validator?.routes.validateIsActiveRouteArgs(e,t,r,i),a.validator?.navigation.validateSearch(n,`isActiveRoute`),a.validator?.routes.validateRouteName(e,`isActiveRoute`),e===``?(a.logger.warn(`router.isActiveRoute`,`isActiveRoute("") called with empty string. Root node is not considered a parent of any route.`),!1):this.#o.isActiveRoute(e,t,n,r,i)}buildPath(e,t,n){let r=E(this);r.validator?.routes.validateBuildPathArgs(e,t),r.validator?.navigation.validateParamsShape(t,`buildPath`),r.validator?.navigation.validateSearch(n,`buildPath`);let i=j(t);return C(r.checks,T[`buildPath:params`],i),this.#p(e,i??d,n)}getState(){return this.#a.get()}getPreviousState(){return this.#a.getPrevious()}areStatesEqual(e,t,n=!0){return E(this).validator?.state.validateAreStatesEqualArgs(e,t,n),this.#a.areStatesEqual(e,t,n)}shouldUpdateNode(e){return E(this).validator?.routes.validateShouldUpdateNodeArgs(e),Pa.shouldUpdateNode(e,e=>this.#o.getMetaForState(e))}isActive(){return this.#d.isActive()}start(e){let t=this.#h(e);return t.catch(this.#f),t}stop(){return this.#d.sendCancelIfPossible(this.#a.get()),!this.#d.isReady()&&!this.#d.isTransitioning()&&!this.#d.isStarting()||this.#d.sendStop(),this}dispose(){if(this.#d.isDisposed())return;this.#d.sendCancelIfPossible(this.#a.get()),(this.#d.isReady()||this.#d.isTransitioning())&&this.#d.sendStop(),this.#d.sendDispose(),this.#d.clearAll(),this.#c.disposeAll();let e=E(this);for(let t of e.routerExtensions)for(let e of t.keys)delete this[e];e.routerExtensions.length=0,e.contextClaimRecords.clear(),e.interceptors.clear(),e.checks.clear(),this.#o.clearRoutes(),this.#s.clearAll(),vr(this.#i),this.#v()}canNavigateTo(e,t,n){let r=E(this);C(r.checks,T[`canNavigateTo:entry`],e,t,n);let i;try{i=j(t)}catch(t){return r.logger.warn(`router.canNavigateTo`,`Reading the params bag for route "${e}" threw; treating the route as unreachable.`,t),!1}if(C(r.checks,T[`canNavigateTo:params`],i),!this.#o.hasRoute(e)||y(t,this.#o.getQueryParams(e))!==void 0)return!1;let a=this.#o.getPort(),o;try{o=z(a,e,i??d,n)}catch(t){return r.logger.warn(`router.canNavigateTo`,`Resolving route "${e}" threw while answering the predicate; treating the route as unreachable.`,t),!1}let s;try{s=V(o,B(o,a))}catch{return!1}let c=this.#a.get(),{toDeactivate:l,toActivate:u}=Oa(s,c,e=>this.#o.getMetaForState(e));return this.#s.canNavigateTo(l,u,s,c)}usePlugin(...e){if(this.#d.isDisposed())throw Xs.code(g.ROUTER_DISPOSED)`cannot install a plugin on a disposed router — dispose() is terminal`;let t=e.filter(Boolean);if(t.length===0)return()=>{};let n=E(this);n.validator?.plugins.validatePluginLimit(this.#c.count(),this.#t);for(let e of t)n.validator?.plugins.validateNoDuplicatePlugins(e,this.#c.getAll());return this.#c.use(...t)}subscribe(e){return ps.validateSubscribeListener(e),this.#d.subscribe(e)}subscribeLeave(e){return ps.validateSubscribeLeaveListener(e),this.#d.subscribeLeave(e)}isLeaveApproved(){return this.#d.isLeaveApproved()}navigate(t,n,r,i){this.#g();let o=E(this),s,c,l,u;typeof t==`object`&&t?(s=t.name,c=t.params,l=t.search,u=n??a):(s=t,c=n,l=r,u=i??a),le(o,`navigate`,s,c),C(o.checks,T[`navigate:entry`],s,c,l,u);let f;try{f=j(c)}catch(e){return Promise.reject(e)}return C(o.checks,T[`navigate:params`],f),e.#m(this.#l.navigate(s,f??d,l,u))}navigateToDefault(t){this.#g();let n=E(this);n.validator?.navigation.validateNavigateToDefaultArgs(t);let r=t??a;return n.validator?.navigation.validateNavigationOptions(r,`navigateToDefault`),e.#m(this.#l.navigateToDefault(r))}navigateToNotFound(e){if(this.#g(),!this.#d.isActive())throw l(new m(g.ROUTER_NOT_STARTED));if(e!==void 0&&typeof e!=`string`)throw Ys.type`path must be a string, got ${typeof e}`;if(e!==void 0)return this.#l.navigateToNotFound(e);let t=this.#a.get();if(t===void 0)throw Ys.code(g.ROUTER_NOT_STARTED)`cannot derive the path before the start navigation commits — pass an explicit path`;return this.#l.navigateToNotFound(t.path)}static#m(e){return e instanceof Promise?e:Promise.resolve(e)}#h(e){if(!this.#d.canStart())return Promise.reject(As);E(this).validator?.navigation.validateStartArgs(e),this.#d.sendStart();let t;try{let n=E(this).start(e);t=typeof n?.then==`function`?n:Promise.reject(Zs.type`a \`start\` interceptor returned without calling next(). Every start interceptor must return \`next(path)\`.`)}catch(e){t=Promise.reject(e)}return t.catch(e=>this.#_(e))}#g(){if(this.#d.isProcessing())throw Qs.code(g.REENTRANT_NAVIGATION)`cannot start a navigation from inside a router event listener — the nested navigation would commit a state the outer one overwrites. Defer it: queueMicrotask(() => router.navigate(...)), await the current transition, or use an async listener.`;if(this.#l.isPreparing())throw Qs.code(g.REENTRANT_NAVIGATION)`cannot start a navigation from inside a forwardState interceptor, a route's encodeParams or dynamic forwardTo callback, or a defaultRoute/defaultParams/defaultSearch option callback — they run while a navigation is being prepared, before it is announced. Defer it: queueMicrotask(() => router.navigate(...)).`;if(this.#o.isRevalidating())throw Qs.code(g.REENTRANT_NAVIGATION)`cannot start a navigation from inside replace()'s revalidation — the revalidation would then defer to a commit that may never happen. Defer it: queueMicrotask(() => router.navigate(...)).`}#_(e){throw this.#d.isReady()&&this.#a.get()===void 0?this.#d.sendStop():this.#d.isStarting()&&this.#d.sendFail(void 0,e),e}#v(){this.navigate=$,this.navigateToDefault=$,this.navigateToNotFound=$,this.start=$,this.stop=$,this.usePlugin=$,this.subscribe=$,this.subscribeLeave=$,this.canNavigateTo=$}};function $(){throw Qs.code(g.ROUTER_DISPOSED)`this router is disposed — dispose() is terminal and swapped every method to refuse`}function ec(e,t,n){return[e,j(t),j(n)]}export{gr as A,hi as C,vr as D,z as E,Qn as F,sr as I,or as L,ar as M,$n as N,_r as O,tr as P,nn as R,li as S,B as T,Pi as _,Xi as a,ri as b,Yi as c,qi as d,Qi as f,ta as g,Ni as h,na as i,er as j,yr as k,Ki as l,ia as m,Oa as n,Ji as o,$i as p,G as r,Wi as s,$s as t,Gi as u,Si as v,V as w,ui as x,bi as y,rn as z};
2
- //# sourceMappingURL=Router-BpVpyamY.mjs.map