@real-router/core 0.132.7 → 0.133.0

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.
@@ -29,8 +29,9 @@ import { Params, SearchParams } from "../types/base.js";
29
29
  * `search` is REQUIRED rather than defaulted. This port is its only caller.
30
30
  *
31
31
  * Accessors arrived with their consumers, as designed — `queryNames` with the
32
- * channel guard, `admitsUndeclaredQuery` with the mode gate (#1575),
33
- * `pathNames` and the two sinks with the diagnostics (#1579 / #1584). One
32
+ * channel guard, `admitsUndeclaredQuery` and later `printedQueryNames` with the
33
+ * mode gate (#1575 / #1932), `pathNames` and the two sinks with the diagnostics
34
+ * (#1579 / #1584). One
34
35
  * member the design (RFC §4.5) listed never arrived at all: `encode`. The route
35
36
  * codecs stayed with the entry points that own their direction (`buildPath`
36
37
  * calls `config.encoders`, `matchPath` calls `config.decoders`), so the port
@@ -81,12 +82,32 @@ export interface RouteResolver {
81
82
  */
82
83
  buildPath: (name: string, params: Params, search: SearchParams) => string;
83
84
  /**
84
- * The route's declared `?query` names — the ONE registry that classifies and
85
- * prints (#1556), so a key enters the query channel iff the build shows it.
86
- * A name that also occupies a path slot (`/items/:id?id`) is absent here by
87
- * construction: it is legitimately path-owned (#843 / #1549).
85
+ * The route's declared `?query` names MINUS its path slots — the registry that
86
+ * decides **which channel owns a key** (#1556 / #843 / #1549). A name that
87
+ * also occupies a path slot (`/items/:id?id`) is absent here by construction:
88
+ * it is legitimately path-owned, so the path value stays in `state.params`
89
+ * and the rebuild's precedence holds.
90
+ *
91
+ * ⚠ This is NOT the list of names the build prints, and the difference is one
92
+ * route shape wide (#1932). The consumers that CLASSIFY read this one — the
93
+ * always-on channel guard, the default withhold, the undeclared-key
94
+ * diagnostic. The mode gate asks the OTHER question and reads
95
+ * {@link RouteResolver.printedQueryNames}.
88
96
  */
89
97
  queryNames: (name: string) => readonly string[];
98
+ /**
99
+ * The route's declared `?query` names AS PRINTED — the collision left in
100
+ * (#1932). The matcher keeps path-slot collisions in `declaredQueryParams`
101
+ * and the query-string build reads that same array, so a key is printed iff
102
+ * it appears here.
103
+ *
104
+ * ⚑ The mode gate's registry, and only the gate's. Its question is "will this
105
+ * key survive into `state.path`?", which is what buys
106
+ * `keys(state.search) ⊆ keys(matchPath(state.path).search)` — an invariant the
107
+ * SUBTRACTED list cannot answer for, since it withholds a name the build
108
+ * prints.
109
+ */
110
+ printedQueryNames: (name: string) => readonly string[];
90
111
  /**
91
112
  * The mode gate (#1575) — `true` exactly for `queryParamsMode: "loose"`, the
92
113
  * one mode whose build prints undeclared query keys. Read as a boolean rather
@@ -129,9 +150,9 @@ export interface RouteResolver {
129
150
  * to `[]`.
130
151
  *
131
152
  * `queryNames` is deliberately NOT given the same arm: its consumers — the
132
- * diagnostic, the default merge, the mode gate and the channel guard — all
133
- * want `[]` for a missing route, and only this one asks a question that
134
- * presupposes existence.
153
+ * diagnostic, the default merge and the channel guard — all want `[]` for a
154
+ * missing route, and only this one asks a question that presupposes
155
+ * existence.
135
156
  */
136
157
  pathNames: (name: string) => readonly string[] | undefined;
137
158
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"port.d.ts","names":[],"sources":["../../../src/pipeline/port.ts"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBA0CiB;;;;;;;;EAQf,iBACE,cACA,QAAQ,QACR,SAAS;IAET;IACA,QAAQ;IAIR,SAAS;;;;;;;;;;;;;;;;;;;;;;EAuBX,gBAAgB,iBAAiB;EACjC,gBAAgB,iBAAiB;;;;;;;EAQjC,YAAY,cAAc,QAAQ,QAAQ,QAAQ;;;;;;;EAQlD,aAAa;;;;;;;EAQb;;;;;;;;;;;;;;;;;;EAmBA,0BACI,mBAAmB;;;;;;;;;;;;;;;;;;;;;;EAuBvB,YAAY;;;;;;;;;;;;;;;;;;;EAoBZ,6BACI,mBAAmB"}
1
+ {"version":3,"file":"port.d.ts","names":[],"sources":["../../../src/pipeline/port.ts"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBA2CiB;;;;;;;;EAQf,iBACE,cACA,QAAQ,QACR,SAAS;IAET;IACA,QAAQ;IAIR,SAAS;;;;;;;;;;;;;;;;;;;;;;EAuBX,gBAAgB,iBAAiB;EACjC,gBAAgB,iBAAiB;;;;;;;EAQjC,YAAY,cAAc,QAAQ,QAAQ,QAAQ;;;;;;;;;;;;;;EAelD,aAAa;;;;;;;;;;;;;EAcb,oBAAoB;;;;;;;EAQpB;;;;;;;;;;;;;;;;;;EAmBA,0BACI,mBAAmB;;;;;;;;;;;;;;;;;;;;;;EAuBvB,YAAY;;;;;;;;;;;;;;;;;;;EAoBZ,6BACI,mBAAmB"}
package/dist/cjs/utils.js CHANGED
@@ -1 +1 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./ingest-C6HQ7xXf.js"),t=require("./helpers-C6wi7QmJ.js");exports.adoptChannel=t.t,exports.copyFields=e.n,exports.freezeThrownError=t.y,exports.putField=e.a;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./ingest-C6HQ7xXf.js"),t=require("./helpers-RoLubPTf.js");exports.adoptChannel=t.t,exports.copyFields=e.n,exports.freezeThrownError=t.y,exports.putField=e.a;
@@ -0,0 +1,2 @@
1
+ import{a as e,c as t,g as n,h as r,i,l as a,m as o,n as s,o as c,p as l,r as u,s as d,t as f,u as p}from"./ingest-XMtKw1RB.mjs";import{_ as m,a as h,c as g,d as _,f as v,g as y,h as b,i as ee,l as x,m as te,n as S,o as C,p as w,r as ne,s as re,t as T,u as ie,v as E,y as D}from"./helpers-CP7uvUBo.mjs";import{_ as ae,a as oe,c as se,d as ce,f as le,g as ue,h as de,i as O,l as fe,m as pe,n as me,o as he,p as ge,r as _e,t as k,u as ve,v as ye,y as be}from"./internals-CcqRqpm9.mjs";function xe(e){if(e())throw D(new E(o.ROUTER_DISPOSED))}function Se(e,t){if(e())throw D(new E(o.REENTRANT_TREE_MUTATION,{message:`[router] cannot mutate the route tree from inside a subscribeChanges handler — the mutation would run while a TREE_CHANGED emit is on the stack and the tree must stay atomic. Defer it: queueMicrotask(() => routes.add(...)) or await.`}));if(t())throw D(new E(o.REENTRANT_TREE_MUTATION,{message:`[router] cannot mutate the route tree from inside replace()'s revalidation — the tree would move under a state that has not been revalidated yet. Defer it: queueMicrotask(() => routes.replace(...)) or await.`}))}const Ce=Object.entries,we=Object.hasOwn;function Te(t,n,r){if(t===void 0||r.length===0)return t;let i,a=!1;for(let[o,s]of Ce(t)){if(we(n,o)&&n[o]!==void 0&&r.includes(o)){a=!0;continue}i??={},e(i,o,s)}return i===void 0?a?void 0:t:i}function Ee(e,t,n){for(let[r,i]of Ce(e))ue(n,r,i,t(r),"this route's `defaultParams`","Move it to `defaultSearch`")}const De=Object.entries,Oe=Object.freeze;function ke(t,n,r){let i,a=!1;for(let[o,s]of De(t))n.includes(o)?(i??={},e(i,o,s)):(a=!0,r?.(o));return a?Oe(i??p):t}function Ae(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=Ae(t,o);o.children.push(e)}return o}function je(e,t,n){let r=Ae({name:e,path:t},null);for(let e of n){let t=Ae(e,r);r.children.push(t)}return r}const Me=/[^\w!$'()*+,.:;|~-]/gu,Ne=/[^\w!$'()*+,.:;|~-]/u,Pe=/[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?<![\uD800-\uDBFF])[\uDC00-\uDFFF]/g,Fe=e=>t=>{try{return e(t)}catch{return e(t.replaceAll(Pe,`�`))}},Ie=Fe(e=>e.replaceAll(Me,e=>encodeURIComponent(e))),Le={default:e=>Ne.test(e)?Ie(e):e,uri:Fe(encodeURI),uriComponent:Fe(encodeURIComponent),none:e=>e},Re={default:decodeURIComponent,uri:decodeURI,uriComponent:decodeURIComponent,none:e=>e},ze=(e,t)=>{let n=Le[t],r=String(e).split(`/`),i=n(r[0]);for(let e=1;e<r.length;e++)i+=`/`+n(r[e]);return i},Be=Object.freeze(Object.create(null));function A(){return{staticChildren:Be,hasChildren:!1,paramChild:void 0,splatChild:void 0,route:void 0,slashChildRoute:void 0}}function j(e){return e.length>1&&e.endsWith(`/`)?e.slice(0,-1):e}function Ve(e,t){return e===``?t:t===``?e:e.endsWith(`/`)&&t.startsWith(`/`)?e+t.slice(1):e+t}function He(e){return e>=48&&e<=57||e>=65&&e<=70||e>=97&&e<=102}function Ue(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(!He(n)||!He(r))return!1;t+=3}else t++;return!0}const We=Object.freeze([]),Ge=Object.freeze(new Set),Ke=Object.freeze([]),qe=Object.freeze({}),Je=Object.freeze({}),Ye=Object.freeze({});function Xe(e,t){let n=e.kind===`splat`;return{paramName:e.name,encoder:n?e=>ze(e,t):Le[t]}}function Ze(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:Ke};let a=[],o=[],s=``,c=de(e),l=c.length-1;for(let[e,t]of c.entries()){let r=pe(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(Xe(r,n))}}return a.push(s),{buildStaticParts:a,buildParamSlots:o}}function Qe(e,t,n){throw Error(`[SegmentMatcher.registerTree] 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 $e(){throw Error(`[SegmentMatcher.registerTree] Empty parameter name: a ':'/'*' marker must be followed by a name (e.g. ':id', '*rest'), and a segment cannot end in a bare '?'.`)}function et(e){throw Error(`[SegmentMatcher.registerTree] Fused parameter marker in segment "${e}": a ':'/'*' marker must begin a segment — write 'a/:b', not 'a:b'.`)}function tt(e){throw Error(`[SegmentMatcher.registerTree] Trailing parameter marker in segment "${e}": a param name cannot end in a bare ':' or '*'. Drop the stray marker.`)}function nt(e){throw Error(`[SegmentMatcher.registerTree] Optional params are not supported: "${e}" — declare two sibling routes instead, one with the segment and one without.`)}function rt(e){throw Error(`[SegmentMatcher.registerTree] 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 it(e){throw Error(`[SegmentMatcher.registerTree] 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 at(e,t){switch(e){case`name-less`:return $e();case`trailing-marker`:return tt(t);case`fused-marker`:return et(t);case`optional-removed`:return nt(t);case`constraint-removed`:return rt(t)}}function ot(e,t){let n=new Set,r=``;for(let e of t){if(n.has(e)){r=e;break}n.add(e)}throw Error(`[SegmentMatcher.registerTree] Duplicate parameter name '${r}' in route "${e}": a name must be unique within a route — the second position overwrites the first. Rename one.`)}function st(e,t){throw Error(`[SegmentMatcher.registerTree] Invalid query-param declaration "${t}" in route "${e}": a query-param name cannot contain '<' or '>'. Rename it.`)}function ct(e){throw Error(`[SegmentMatcher.registerTree] Double slashes are not allowed in path "${e}": the route would build a URL its own matcher refuses. Remove the empty segment.`)}function lt(e,t){throw Error(`[SegmentMatcher.registerTree] Duplicate route path: routes "${e}" and "${t}" resolve to the same URL — the later would shadow the earlier. Give them distinct paths.`)}function ut(e,t){throw Error(`[SegmentMatcher.registerTree] 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 dt(e,t){return e.paramChild?e.paramChild.name!==t&&Qe(e.paramChild.name,t,`:`):e.paramChild={node:A(),name:t},e.paramChild.node}function ft(e,t){return e.splatChild?e.splatChild.name!==t&&Qe(e.splatChild.name,t,`*`):e.splatChild={node:A(),name:t},e.splatChild.node}const pt=Object.create;function mt(e,t){e.route!==void 0&&e.route!==t&&lt(e.route.name,t.name),e.route=t}function ht(e){for(let t=0;t<e.length;t++)if(e.charCodeAt(t)>=128)return!0;return!1}function gt(e,t,n){let r=j(n);if(r===`/`){mt(e.root,t);return}_t(e,e.root,r,1,t)}function _t(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=xt(e,t,s),r=o+1}mt(t,i)}function vt(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(`*`)&&ut(t.name,n);let a=yt(e,n);a.slashChildRoute=t}function yt(e,t){return bt(e,e.root,t)}function bt(e,t,n){let r=j(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=xt(e,i,s),a=n+1}return i}function xt(e,t,n){let r=pe(n);if(`error`in r&&$e(),r.kind===`splat`){let e=ft(t,r.name);return t.hasChildren=!0,e}if(r.kind===`param`){let e=dt(t,r.name);return t.hasChildren=!0,e}ht(n)&&it(n);let i=e.options.caseSensitive?n:n.toLowerCase();return i in t.staticChildren||(t.staticChildren===Be&&(t.staticChildren=pt(null)),t.staticChildren[i]=A(),t.hasChildren=!0),t.staticChildren[i]}const St=Object.freeze,Ct=Object.hasOwn;function wt(e){let t=de(e);for(let[n,r]of t.entries())r===``&&n>0&&n<t.length-1&&ct(e)}function Tt(e){for(let t of de(e)){let e=pe(t);`error`in e&&at(e.error,t)}}function Et(e,t,n,r,i){let a=t.fullName===``;a||r.push(t);let o=t.absolute,s=t.paramMeta===ce?t.path:t.paramMeta.pathPattern,c=o&&s.startsWith(`~`)?s.slice(1):s,l=o?c:s;wt(t.path),Tt(l);let u=l,d=o?u:Ve(n,u),f=a?i:Dt(e,t,d,o?``:n,r,i);for(let n of t.children.values())Et(e,n,d,r,f);a||r.pop()}function Dt(e,t,n,r,i,a){let o=Mt(n,r),s=St([...i]),c=Ot(s),l=j(n),u=St(Nt(e.rootQueryParams,i)),{buildStaticParts:d,buildParamSlots:f}=Ze(o?j(r):l,o?i.slice(0,-1):i,e.options.urlParamsEncoding,e.rootUrlParams),p=f.map(e=>e.paramName),m=p.length===0?Ge:new Set(p);m.size!==p.length&&ot(t.fullName,p),Pt(t.fullName,u);let h={name:t.fullName,parent:a,matchSegments:s,meta:c,declaredQueryParams:u,declaredQueryParamsSet:u.length===0?Ge: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=St({segments:h.matchSegments,params:qe,search:Je,meta:h.meta})),e.routesByName.set(t.fullName,h),o?At(e,h,r):jt(e,h,n,l,t),h}function Ot(e){let t;for(let n of e)kt(n.paramTypeMap)&&(t??=u(),t[n.fullName]=n.paramTypeMap);return t===void 0?Ye:St(f(i(t)))}function kt(e){for(let t in e)if(Ct(e,t))return!0;return!1}function At(e,t,n){vt(e,t,n);let r=j(n),i=e.options.caseSensitive?r:r.toLowerCase();e.staticCache.has(i)&&e.staticCache.set(i,t)}function jt(e,t,n,r,i){if(gt(e,t,n),i.paramMeta.urlParams.length===0){let n=e.options.caseSensitive?r:r.toLowerCase();e.staticCache.set(n,t)}}function Mt(e,t){return j(e)===j(t)}function Nt(e,t){let n=[];e.length>0&&n.push(...e);for(let e of t)e.paramMeta.queryParams.length>0&&n.push(...e.paramMeta.queryParams);return n.length===0?We:n}function Pt(e,t){for(let n of t)le.test(n)&&st(e,n)}const Ft=Symbol.for(`real-router.searchParams.configFault`),It=Object.hasOwn,Lt=Object.keys,Rt=Object.getOwnPropertyDescriptor;function zt(e){try{return Rt(e,Ft)?.configurable===!1}catch{return!1}}function Bt(e){return typeof e==`string`?e:typeof e==`object`?JSON.stringify(e):String(e)}const Vt=Object.freeze({});function Ht(e,t){return e===`strict`?t?`always`:`never`:e}var Ut=class{get options(){return this.#e}#e;#t=A();#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=It(Le,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:Re[this.#e.urlParamsEncoding]}registerTree(e){this.#a=e.paramMeta.queryParams,Et({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 Error(`[SegmentMatcher.buildPath] '${e}' is not defined`);let a=this.#l(i,t),o=this.#u(a,Ht(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&&It(t,a.paramName)?t[a.paramName]:void 0;if(r==null)throw Error(`[SegmentMatcher.buildPath] Missing required param '${a.paramName}'`);if(r===``)throw Error(`[SegmentMatcher.buildPath] Missing required param '${a.paramName}' (empty string)`);let o=a.encoder(Bt(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(t,n,r){if(!n||t.declaredQueryParams.length===0&&r!==`loose`)return``;let i={},a=!1;for(let r of t.declaredQueryParams)It(n,r)&&(e(i,r,n[r]),a=!0);if(r===`loose`)for(let r of Lt(n))t.declaredQueryParamsSet.has(r)||t.buildParamNamesSet.has(r)||(e(i,r,n[r]),a=!0);return a?this.#e.buildQueryString(i):``}#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=j(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=Vt;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(zt(e))throw e;return}if(this.#e.strictQueryParams){let t=e.declaredQueryParamsSet;for(let e of Lt(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(t,n,r,i){let a=t,o=n.length,c=this.#s;for(;r<=o;){let t=n.indexOf(`/`,r),l=t===-1?o:t,u=n.slice(r,l),d=c?u:u.toLowerCase(),f;if(d in a.staticChildren){let e=a.staticChildren[d];if(a.splatChild!==void 0){let t={},o=this.#v(e,n,l+1,t);return o===void 0?this.#y(a.splatChild,n,r,i):(s(i,t),o)}f=e}else if(a.paramChild){let t=a.paramChild;if(a.splatChild!==void 0){let e={[t.name]:u},o=this.#v(t.node,n,l+1,e);return o===void 0?this.#y(a.splatChild,n,r,i):(s(i,e),o)}f=t.node,e(i,t.name,u)}else if(a.splatChild)return this.#y(a.splatChild,n,r,i);else return;a=f,r=l+1}return a.slashChildRoute??a.route}#y(t,n,r,i){let a=t.node;if(!a.hasChildren)return e(i,t.name,n.slice(r)),a.route;let o={},c=this.#v(a,n,r,o);return c?(s(i,o),c):(e(i,t.name,n.slice(r)),a.route)}#b(e){let t=this.#c;if(!t)return!0;for(let n of Lt(e)){let r=e[n];if(r.includes(`%`)){if(!Ue(r))return!1;try{e[n]=t(r)}catch{return!1}}}return!0}};const M=Object.freeze,Wt=Object.freeze(new Map),Gt=Object.freeze([]);function Kt(e){return e.parent?.name?`${e.parent.fullName}.${e.name}`:e.name}function qt(e){let t=new Map;for(let n of e)t.set(n.name,n);return t}function Jt(e,t){let n=[],r=[];for(let i of e){let e=Yt(i,t);n.push(e),e.absolute||r.push(e)}return{childrenMap:qt(n),nonAbsoluteChildren:r}}function Yt(e,t){let n=ge(e.path),r=n.urlParams.length===0&&n.queryParams.length===0&&n.pathPattern===e.path?ce: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=Kt(a),e.children.length===0)a.children=Wt,a.nonAbsoluteChildren=Gt;else{let{childrenMap:t,nonAbsoluteChildren:n}=Jt(e.children,a);a.children=t,a.nonAbsoluteChildren=n,M(a.nonAbsoluteChildren),M(a.children)}return M(i),M(r.urlParams),M(r.queryParams),M(r),M(a),a}function Xt(e){return Yt(e,null)}function Zt(e,t,n){return Xt(je(e,t,n))}function Qt(t){let n=t.absolute?`~${t.path}`:t.path,r={name:t.name,path:n};return t.children.size>0&&e(r,`children`,Array.from(t.children.values(),Qt)),r}function $t(e){return Array.from(e.children.values(),Qt)}const en=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)},tn=(e,t)=>{if(e===void 0)return t.boolean.decodeUndefined();let n=t.boolean.decodeRaw(e);if(n!==null)return n;let r=en(e),i=t.number.decode(r);return i===null?t.boolean.decodeValue(r):i},nn=/[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?<![\uD800-\uDBFF])[\uDC00-\uDFFF]/g,rn=e=>{try{return encodeURIComponent(e)}catch(t){if(!(t instanceof URIError))throw t;return encodeURIComponent(String(e).replaceAll(nn,`�`))}},an=e=>{let t=typeof e;if(t!==`string`&&t!==`number`&&t!==`boolean`)throw TypeError(`[router] Invalid query value: an array element must be a string, number, or boolean — received ${t}`);return rn(e)},on=(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}=${an(e)}`);return a.join(`&`)},sn={none:{encodeArray:(e,t,n)=>on(e,t,``,n)},brackets:{encodeArray:(e,t,n)=>on(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}=${an(a)}`)}return r.join(`&`)},indexed:!0},comma:{encodeArray:(e,t)=>{let n=[];for(let e of t)e!==null&&n.push(an(e));return n.length===0?``:`${e}=${n.join(`,`)}`},decodeValue:e=>e.includes(`,`)?e.split(`,`):null}},cn={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}},ln={default:{encode:e=>e},hidden:{encode:()=>``}},un={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}},dn=Object.defineProperty,fn=Object.keys,pn=Object.hasOwn,mn=Symbol.for(`real-router.searchParams.configFault`),hn=(e,t,n)=>{let r=typeof t==`string`?t:String(t);if(!pn(e,r)){let t=TypeError(`[router.constructor] Invalid "queryParams.${n}": "${r}" — expected ${fn(e).map(e=>`"${e}"`).join(` | `)}`);throw dn(t,mn,{value:!0}),t}return e[r]},gn=(e,t,n,r)=>({boolean:hn(cn,t,`booleanFormat`),null:hn(ln,n,`nullFormat`),number:hn(un,r,`numberFormat`),array:hn(sn,e,`arrayFormat`)}),_n=Object.freeze({boolean:cn.auto,null:ln.default,number:un.auto,array:sn.none}),N=Object.freeze({arrayFormat:`none`,booleanFormat:`auto`,nullFormat:`default`,numberFormat:`auto`}),vn=Object.freeze({...N,strategies:_n}),yn=e=>{if(!e||e.arrayFormat===void 0&&e.booleanFormat===void 0&&e.nullFormat===void 0&&e.numberFormat===void 0)return vn;let t=e.arrayFormat??N.arrayFormat,n=e.booleanFormat??N.booleanFormat,r=e.nullFormat??N.nullFormat,i=e.numberFormat??N.numberFormat;return{arrayFormat:t,booleanFormat:n,nullFormat:r,numberFormat:i,strategies:gn(t,n,r,i)}},bn=e=>rn(e),xn=(e,t,n)=>{let r=bn(e);switch(typeof t){case`string`:case`number`:return`${r}=${bn(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}=${bn(t)}`;default:return`${r}=${bn(t)}`}},Sn=Object.hasOwn,Cn=Object.keys;function wn(t,n,r){e(t,n,r)}function Tn(e,t,n,r){if(!Sn(e,t)){wn(e,t,r?[n]:n);return}let i=e[t];Array.isArray(i)?i.push(n):wn(e,t,[i,n])}function En(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 Dn(e,t,n){let{searchPart:r,nameEnd:i,nameSourceEnd:a,rawValue:o,decodedName:s}=e,c=En(r,i,a);if(c===null)return!1;let l=tn(o,t),u=n.get(s);return u===void 0?n.set(s,[[c,l]]):u.push([c,l]),!0}function On(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=en(e.slice(t,l));if(!(o!==void 0&&u&&Dn({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)Tn(r,d,tn(t,i),!0);return}}Tn(r,d,tn(s,i),u)}}const kn=(e,t)=>{if(e===``||e===`?`)return{};let n={};return An(e,n,t.strategies),n};function An(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)),On(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]),wn(t,e,n.map(e=>e[1]))}const jn=(e,t)=>{let n=Cn(e);if(n.length===0)return``;let r=[];for(let i of n){let n=e[i];if(n===void 0)continue;let a=xn(i,n,t);a&&r.push(a)}return r.join(`&`)};function Mn(e){let t=e?.queryParams,n=yn(t);return new Ut({...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=>kn(e,n),buildQueryString:e=>jn(e,n)})}const Nn=Object.keys,Pn=Object.values,Fn=Object.hasOwn,In=Object.getOwnPropertyDescriptor,Ln=Object.getPrototypeOf,Rn=Object,zn=new Set(Pn(r));function Bn(e){if(!zn.has(e))throw TypeError(`[router.addEventListener] Invalid event name: ${String(e)}. Must be one of: ${[...zn].join(`, `)}`)}function Vn(e){if(typeof e!=`function`)throw TypeError(`[router.addEventListener] callback must be a function, got ${typeof e}`)}function Hn(e){if(typeof e!=`function`)throw TypeError(`[router.subscribeChanges] Expected a function`)}function Un(e,t){if(typeof e!=`string`||!Fn(k,e))throw TypeError(`[router.addInterceptor] Invalid method: ${typeof e==`string`?`"${e}"`:typeof e}. Must be one of: ${Nn(k).join(`, `)}`);if(typeof t!=`function`)throw TypeError(`[router.addInterceptor] interceptor must be a function, got ${typeof t}`)}function Wn(e,t){if(typeof e!=`string`)throw TypeError(`[router.${t}] Route name must be a string, got ${typeof e}`)}function Gn(e){if(!e||typeof e!=`object`||Array.isArray(e))return!1;let t=Ln(e);return t===null||t.constructor===Rn}function Kn(e){if(!Gn(e))throw TypeError(`dependencies must be a plain object`)}function qn(e){return e===null?`null`:typeof e==`object`?`a non-plain object`:typeof e}function Jn(e){if(!Gn(e))throw TypeError(`[router.extendRouter] extensions must be a plain object, got ${qn(e)}`)}function Yn(e,t){Kn(e);let n=e,r=[];for(let e of Nn(n)){if(In(n,e)?.get)throw TypeError(`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 Xn(t){let n=[];for(let r of t){let t=r;if(typeof t!=`object`||!t||Array.isArray(t))throw TypeError(`route must be a non-array object`);se(t,`addRoute`);let i={...t},a=i.children;a&&e(i,`children`,Xn(a)),n.push(i)}return n}function Zn(e,t){if(t)for(let n of e){t.routes.guardRouteCallbacks(n),t.routes.guardNoAsyncCallbacks(n);let e=n.children;e&&Zn(e,t)}}const Qn=new Set([`all`,`warn-error`,`error-only`,`none`]);function $n(e){return typeof e==`string`&&Qn.has(e)}function er(e){return typeof e==`string`?`"${e}"`:typeof e==`object`?JSON.stringify(e):String(e)}function tr(e){for(let t of Nn(e))if(t!==`level`&&t!==`callback`&&t!==`callbackIgnoresLevel`)throw TypeError(`Unknown logger config property: "${t}"`)}function nr(e){if(!Fn(e,`level`))return;let t=e.level;if(t!==void 0){if(!$n(t))throw TypeError(`Invalid logger level: ${er(t)}. Expected: "all" | "warn-error" | "error-only" | "none"`);return t}}function rr(e){if(!Fn(e,`callbackIgnoresLevel`))return;let t=e.callbackIgnoresLevel;if(t!==void 0){if(typeof t!=`boolean`)throw TypeError(`Logger callbackIgnoresLevel must be a boolean, got ${typeof t}`);return t}}function ir(e){if(typeof e!=`object`||!e)throw TypeError(`Logger config must be an object`);let t=e;tr(t);let n=u(),r=nr(t);if(r!==void 0&&(n.level=r),Fn(t,`callback`)){let e=t.callback;if(e!==void 0&&typeof e!=`function`)throw TypeError(`Logger callback must be a function, got ${typeof e}`);n.callback=e}let i=rr(t);return i!==void 0&&(n.callbackIgnoresLevel=i),n}const ar=Object.freeze;function or(e={}){let t={...c,...e};return ar({maxDependencies:Number(t.maxDependencies),maxPlugins:Number(t.maxPlugins),maxListeners:Number(t.maxListeners),warnListeners:Number(t.warnListeners),maxLifecycleHandlers:Number(t.maxLifecycleHandlers)})}const sr=Object.create;function cr(e,t,n){e[t]=n}function lr(e={}){let t=sr(null),n=e,r=t;return Yn(n,(e,t)=>{cr(r,e,t)}),{dependencies:t,limits:c}}const ur={defaultRoute:``,defaultParams:{},defaultSearch:{},trailingSlash:`preserve`,caseSensitive:!0,queryParamsMode:`loose`,queryParams:N,urlParamsEncoding:`default`,allowNotFound:!0,rewritePathOnMatch:!0};function dr(e){if(!e||typeof e!=`object`||Array.isArray(e))throw TypeError(`[router.constructor] options must be a plain object`)}const fr=Object.freeze;var pr=class{#e;constructor(e={}){this.#e=fr(re({...ur,...e}))}static validateOptionsIsObject(e){dr(e)}get(){return this.#e}};function mr(e,t){return typeof e==`function`?e(t):e}const hr=Object.keys;function gr(e,t,n,r,i){let a=e.pathNames(t);if(a!==void 0)for(let e of hr(n))!r.includes(e)&&!a.includes(e)&&i(t,e)}function P(e,t,n,r,i){let o=String(t),s=i?.resolveForward===!1?{name:o,params:n,search:r}:e.resolveForward(o,n,r),c=s.name,l=v(s.params,a),u=i?.diagnoseUndeclared===!0?e.reportUndeclaredParamKey:void 0;u&&gr(e,c,l,e.queryNames(c),u);let d=e.defaultParams(c),f=e.defaultSearch(c);if((s.search===void 0||s.search===p)&&d===void 0&&f===void 0)return{name:c,path:l,query:p};let m=e.queryNames(c),h=e.reportDroppedQueryKey,g=i?.resolveForward===!1?Te(f,l,m):f,y=v(s.search,p),b=_(g,y);return{name:c,path:ie(d,l),query:e.admitsUndeclaredQuery()?b:ke(b,e.printedQueryNames(c),t=>{h!==void 0&&e.pathNames(c)!==void 0&&h(c,t)})}}function F(e,t){return t.buildPath(e.name,e.path,e.query)}const _r=Object.freeze;function vr(e,t){let n={name:e.name,params:e.path,search:e.query,path:t,context:{},transition:d};return _r(n.params),n}function I(e,t){return g(vr(e,t))}function yr(e,t){return vr(e,t)}var br=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(),o=P(i,e,t??a,n,{resolveForward:!1});return ae(`makeState`,o.name,o.path,i.queryNames(o.name)),I(o,r??F(o,i))}areStatesEqual(e,t,n=!0){if(!e||!t)return!!e==!!t;let r=e.name;return r===t.name?n?y(e.params,t.params,this.#t.getUrlParams(r)):b(e.params,t.params)&&b(e.search,t.search):!1}};const xr=Object.keys,Sr={[n.ROUTER_START]:r.ROUTER_START,[n.ROUTER_STOP]:r.ROUTER_STOP,[n.TRANSITION_SUCCESS]:r.TRANSITION_SUCCESS,[n.TRANSITION_START]:r.TRANSITION_START,[n.TRANSITION_LEAVE_APPROVE]:r.TRANSITION_LEAVE_APPROVE,[n.TRANSITION_ERROR]:r.TRANSITION_ERROR,[n.TRANSITION_CANCEL]:r.TRANSITION_CANCEL},Cr=xr(Sr),wr=`router.usePlugin`;function Tr(e){if(!(e&&typeof e==`object`)||Array.isArray(e))throw TypeError(`[router.usePlugin] Plugin factory must return an object, got ${typeof e}`);if(typeof e.then==`function`)throw TypeError(`[router.usePlugin] Async plugin factories are not supported. Factory returned a Promise instead of a plugin object.`)}const Er=Object.freeze;var Dr=class e{#e=new Set;#t=new Set;#n;static validatePlugin(e){Tr(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(wr,`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(wr,`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(wr,`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),Er(n);let r=[];for(let e of Cr)e in n&&(typeof n[e]==`function`?(r.push(this.#n.addEventListener(Sr[e],n[e])),e===`onStart`&&this.#n.canNavigate()&&this.#n.getValidator()?.plugins.warnPluginAfterStart(e)):this.#n.getValidator()?.plugins.warnPluginMethodType(e));return()=>{for(let e of r)e();typeof n.teardown==`function`&&n.teardown()}}};const L=Object.create,Or=()=>!0,kr=()=>!1,Ar=()=>Or,jr=()=>kr;function Mr(e){return e?Ar:jr}function Nr(e,t,n){n===void 0?e.delete(t):e.set(t,n)}var Pr=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=L(null),t=L(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=L(null),t=L(null),n=L(null),r=L(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`?Mr(e):e,r=this.#d.compileFactory(n);if(typeof r!=`function`)throw TypeError(`[router.${t}] 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`?Mr(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 Nr(c,t,d),Nr(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 Fr=new Set([`name`,`path`,`children`,`canActivate`,`canDeactivate`,`forwardTo`,`encodeParams`,`decodeParams`,`defaultParams`,`defaultSearch`]),Ir=Object.freeze,R=Object.create,Lr=Object.hasOwn,z=Object.keys;function Rr(){return{decoders:R(null),encoders:R(null),defaultParams:R(null),defaultSearch:R(null),forwardMap:R(null),forwardFnMap:R(null)}}function zr(e){return z(e.forwardMap).length>0||z(e.forwardFnMap).length>0}function Br(e,t){for(let n of z(t))Object.assign(e[n],t[n])}function Vr(e,t){for(let n in e)if(Lr(t,n)&&!h(e[n],t[n]))return!1;return!0}function Hr(e){return typeof e==`string`?e:`<non-string>`}function Ur(e,t){for(let n in e)if(!h(e[n],t[n]))return!1;return!0}function Wr(t){let n={name:t.name,path:t.path};return t.children&&e(n,`children`,t.children.map(e=>Wr(e))),n}function Gr(e,t,n){if(n.add(t),e.children)for(let r of e.children)Gr(r,`${t}.${r.name}`,n)}function Kr(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 Gr(i,a,t),t}if(i.children&&t.startsWith(`${a}.`)){let e=Kr(i.children,t,a);if(e)return e}}}function qr(e,t){for(let n of z(e))t(n)&&delete e[n]}function Jr(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 Yr(e){let t=[];for(let n of e)for(let e of n.paramMeta.urlParams)t.push(e);return t}function Xr(e,t,n){let r=n.get(t);if(r!==void 0)return r;let i=e.getSegmentsByName(t),a=Ir(i?Yr(i):[]);return n.set(t,a),a}function Zr(e,t){return Xr(e.matcher,t,e.urlParamsCache)}function Qr(e,t,n,r){let i=r.get(t);if(i!==void 0)return i;let a=e.getDeclaredQueryParams(t),o=[];if(a){let r=Xr(e,t,n);o=a.filter(e=>!r.includes(e))}let s=Ir(o);return r.set(t,s),s}const $r=Ir([]);function ei(e,t){return e.getDeclaredQueryParams(t)??$r}function ti(e,t){return Qr(e.matcher,t,e.urlParamsCache,e.queryParamsCache)}function ni(e,t,n){let r=new Map,i=new Map;Ee(t.defaultParams,t=>Qr(e,t,r,i),n)}function ri(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 Error(`Circular forwardTo: ${t.join(` → `)}`)}if(i.add(o),a.push(r),o=r,a.length>n)throw Error(`forwardTo chain exceeds maximum depth (${n}): ${a.join(` → `)}`)}return o}const ii=Object.freeze,B=Object.create,ai=Object.entries,V=Object.keys,oi=Object.defineProperty,si=Object.fromEntries;function ci(e,t,n){let r=Zt(``,t,e),i=Mn(n);return i.registerTree(r),{tree:r,matcher:i}}function li(e,t=e.definitions){let n=ci(t,e.rootPath,e.matcherOptions);e.tree=n.tree,e.matcher=n.matcher,e.urlParamsCache.clear(),e.queryParamsCache.clear()}function ui(e,t){let n=ci(e.definitions,t,e.matcherOptions);ni(n.matcher,e.config,`setRootPath`),e.rootPath=t,e.tree=n.tree,e.matcher=n.matcher,e.urlParamsCache.clear(),e.queryParamsCache.clear()}function di(e,t){li(e,t),H(e,mi(e.config))}function fi(e){pi(e),li(e,[])}function pi(e){Object.assign(e.config,Rr()),H(e,B(null)),e.routeCustomFields=B(null)}function H(e,t){e.resolvedForwardMap=t,e.hasAnyForward=zr(e.config)}function mi(e){let t=B(null);for(let n of V(e.forwardMap))t[n]=ri(n,e.forwardMap);return t}function hi(e,t){if(typeof e!=`function`)return;let n=e.constructor.name===`AsyncFunction`,r=e.toString().includes(`__awaiter`);if(n||r)throw TypeError(`forwardTo callback cannot be async for route "${t}". Async functions break matchPath/buildPath.`)}function gi(e,t,n,r){if(e.canActivate){let n=typeof e.forwardTo==`string`?e.forwardTo:`[dynamic]`;r.warn(`real-router`,`Route "${t}" has both forwardTo and canActivate. canActivate will be ignored because forwardTo creates a redirect (industry standard). Move canActivate to the target route "${n}".`)}if(e.canDeactivate){let n=typeof e.forwardTo==`string`?e.forwardTo:`[dynamic]`;r.warn(`real-router`,`Route "${t}" has both forwardTo and canDeactivate. canDeactivate will be ignored because forwardTo creates a redirect (industry standard). Move canDeactivate to the target route "${n}".`)}hi(e.forwardTo,t),typeof e.forwardTo==`string`?n.forwardMap[t]=e.forwardTo:n.forwardFnMap[t]=e.forwardTo}function _i(e,t,n,r,i,a,o){let s=si(ai(e).filter(([e])=>!Fr.has(e)));if(V(s).length>0&&(r[t]=ii(s)),e.canActivate&&i.set(t,e.canActivate),e.canDeactivate&&a.set(t,e.canDeactivate),e.forwardTo&&gi(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]=C(`defaultParams`,e.defaultParams)),e.defaultSearch&&(n.defaultSearch[t]=C(`defaultSearch`,e.defaultSearch))}function vi(e,t,n,r,i,a,o=``){for(let s of e){let e=o?`${o}.${s.name}`:s.name;_i(s,e,t,n,r,i,a),s.children&&vi(s.children,t,n,r,i,a,e)}}function yi(e){let t=Rr();return Br(t,e),t}function bi(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]:bi(n,t,i)}})}function xi(e,t,n){for(let r of e){let e=t?`${t}.${r.name}`:r.name;n(e),r.children&&xi(r.children,e,n)}}function Si(e,t,n){let r=new Set;xi(e,t,e=>{if(r.has(e))throw Error(`[router.${n}] Duplicate route "${e}" in batch`);r.add(e)})}function Ci(e,t){if(Wn(e,t),e.startsWith(`@@`))throw Error(`[router.${t}] Route name "${e}" uses the reserved "@@" prefix. Routes with this prefix are internal and cannot be modified through the public API.`)}function U(e,t){for(let n of e)Ci(n.name,t),n.children&&U(n.children,t)}function W(e,t){for(let n of e)ve(n.name,t),n.children&&W(n.children,t)}function G(e,t){for(let n of e)fe(n.name,t),n.children&&G(n.children,t)}function wi(e,t,n){let r=new Map,i=(e,t)=>{for(let a of e){let e=r.get(t);if(e?.has(a.path))throw Error(`[router.${n}] Path "${a.path}" is already defined`);e?e.add(a.path):r.set(t,new Set([a.path])),a.children&&i(a.children,t?`${t}.${a.name}`:a.name)}};i(e,t)}function Ti(e,t,n){if(U(t,`addRoute`),W(t,`addRoute`),G(t,`addRoute`),n!==void 0&&!e.matcher.hasRoute(n))throw Error(`[router.addRoute] Parent route "${n}" does not exist`);xi(t,n??``,t=>{if(e.matcher.hasRoute(t))throw Error(`[router.addRoute] Route "${t}" already exists`)}),Si(t,n??``,`addRoute`),wi(t,n??``,`addRoute`)}function Ei({definitions:e,routesForHandlers:t,config:n,routeCustomFields:r,handlerParentName:i,rootPath:a,matcherOptions:o,logger:s}){let c=new Map,l=new Map;vi(t,n,r,c,l,s,i);let u=mi(n),{tree:d,matcher:f}=ci(e,a,o);return{config:n,routeCustomFields:r,pendingCanActivate:c,pendingCanDeactivate:l,tree:d,matcher:f,resolvedForwardMap:u}}function Di(e,t,n,r){return Ei({definitions:bi(e.definitions,t.map(e=>Wr(e)),n===void 0?[]:n.split(`.`)),routesForHandlers:t,config:yi(e.config),routeCustomFields:Object.assign(B(null),e.routeCustomFields),handlerParentName:n??``,rootPath:e.rootPath,matcherOptions:e.matcherOptions,logger:r})}function Oi(e,t,n,r){return Ei({definitions:e.map(e=>Wr(e)),routesForHandlers:e,config:Rr(),routeCustomFields:B(null),handlerParentName:``,rootPath:t,matcherOptions:n,logger:r})}function ki(e,t,n){let r=[];for(let[i,a]of e)r.push([i,a,t(a,n)]);return r}function Ai(e,t){return{activate:ki(e.pendingCanActivate,t.compileGuard,`canActivate`),deactivate:ki(e.pendingCanDeactivate,t.compileGuard,`canDeactivate`)}}function ji(e,t,n){let r=e.depsStore,{activate:i,deactivate:a}=n??Ai(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(),H(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 Mi(e,t){return t==null?t:C(e,t)}function Ni(e,t,n,r){let{forwardTo:i,defaultParams:a,defaultSearch:o,decodeParams:s,encodeParams:c,canActivate:l,canDeactivate:u}=r,d=K(i),f=Mi(`defaultParams`,K(a)),p=Mi(`defaultSearch`,K(o)),m=K(s),h=K(c),g=K(l),_=K(u);f!=null&&ue(`updateRoute`,n,f,ti(e,n),"this route's `defaultParams`","Move it to `defaultSearch`");let v=d===void 0?void 0:Pi(n,d,e.config),y=Fi(e,n,r),b=g==null?void 0:t.compileGuardFactory(g,`canActivate`),ee=_==null?void 0:t.compileGuardFactory(_,`canDeactivate`);return t.preflightHandlerLimit(b===void 0?[]:[n],ee===void 0?[]:[n],!1),y!==void 0&&(V(y).length>0?e.routeCustomFields[n]=ii(y):delete e.routeCustomFields[n]),v!==void 0&&(e.config.forwardMap=v.forwardMap,e.config.forwardFnMap=v.forwardFnMap,H(e,v.resolved)),Li(e,n,{defaultParams:f,defaultSearch:p,decodeParams:m,encodeParams:h}),Ri(t,`activate`,n,g,b),Ri(t,`deactivate`,n,_,ee),{forwardTo:d,defaultParams:f,defaultSearch:p,decodeParams:m,encodeParams:h}}function Pi(e,t,n){hi(t,e);let r=Object.assign(B(null),n.forwardMap),i=Object.assign(B(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:mi({...n,forwardMap:r})}}function Fi(t,n,r){let i;for(let a of V(r)){if(Fr.has(a))continue;let o=r[a];o!==void 0&&(i??={...t.routeCustomFields[n]},o===null?delete i[a]:e(i,a,o))}return i}function Ii(e,t,n){n!==void 0&&(n===null?delete e[t]:e[t]=n)}function Li(e,t,n){if(Ii(e.config.defaultParams,t,n.defaultParams),Ii(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 Ri(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 zi(e,t,n){let r=e;U(r,`addRoute`),W(r,`constructor`),G(r,`constructor`),Si(r,``,`addRoute`);let i=Oi(r,``,t,n),a={get definitions(){return $t(a.tree)},config:i.config,tree:i.tree,matcher:i.matcher,urlParamsCache:new Map,queryParamsCache:new Map,resolvedForwardMap:i.resolvedForwardMap,hasAnyForward:zr(i.config),routeCustomFields:i.routeCustomFields,rootPath:``,matcherOptions:t,depsStore:void 0,lifecycleNamespace:void 0,revalidating:!1,pendingCanActivate:i.pendingCanActivate,pendingCanDeactivate:i.pendingCanDeactivate};return ni(a.matcher,a.config,`addRoute`),oi(a,`matcherOptions`,{writable:!1,configurable:!1}),a}const Bi=Object.freeze,Vi=Object.keys,Hi=[];Object.freeze(Hi);function Ui(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 Wi=new Set([`string`,`number`,`boolean`]);function Gi(e){return Wi.has(typeof e)}function Ki(e,t,n,r){let i=t[e];if(!i||typeof i!=`object`)return!0;for(let e of Vi(i)){let t=n.params[e],i=r.params[e];if(Gi(t)&&Gi(i)&&String(t)!==String(i))return!1}return!0}function qi(e,t,n,r,i,a){for(let o=0;o<a;o++){let a=r[o];if(a!==i[o]||!Ki(a,e,t,n))return o}return a}const Ji=new Map;function q(e){let t=Ji.get(e);if(t)return t;let n=Yi(e);return Bi(n),Ji.set(e,n),n}function Yi(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]:Ui(e)}let Xi,Zi,Qi=null,$i,ea,ta=null;function na(e,t,n){if(!t)return{intersection:``,toActivate:q(e.name),toDeactivate:Hi};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=qi(r??i,e,t,a,o,s),l;if(c>=o.length)l=Hi;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 ra(e,t,n){if(Qi!==null&&e===Xi&&t===Zi)return Qi;if(ta!==null&&e===$i&&t===ea)return ta;let r=na(e,t,n);return $i=Xi,ea=Zi,ta=Qi,Xi=e,Zi=t,Qi=r,r}const ia=Object.freeze,J=Object.hasOwn;function aa(e,t){return{name:t??e.segments.at(-1).fullName,params:e.params,search:e.search,meta:e.meta}}function oa(e){return e===`preserve`?void 0:e}var sa=class{#e;#t;#n;get#r(){return this.#e.depsStore}constructor(e,t,n){this.#e=zi(e,t,n)}static shouldUpdateNode(e,t){return(n,r)=>{if(!(n&&typeof n==`object`&&`name`in n))throw TypeError(`[router.shouldUpdateNode] toState must be valid State object`);if(n.transition?.reload||e===``)return!0;let{intersection:i,toActivate:a,toDeactivate:o}=ra(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){ui(this.#e,e)}hasRoute(e){return this.#e.matcher.hasRoute(e)}clearRoutes(){fi(this.#e)}buildPath(e,t,n,r){if(e===l.UNKNOWN_ROUTE)return typeof t.path==`string`?t.path:``;let i=this.#e.config.encoders[e];if(typeof i==`function`){let a=i({params:{...t},search:{...n}});return this.#e.matcher.buildPath(e,a.params,a.search,this.#c(r))}return this.#e.matcher.buildPath(e,t,n,this.#c(r))}buildPathFromIntent(e,t,n){return e===l.UNKNOWN_ROUTE?this.#r.port.buildPath(e,v(t,a),n??p):F(P(this.#r.port,e,t,n,{resolveForward:!1}),this.#r.port)}matchPath(e,t){let n=t,r=this.#e.matcher.match(e);if(!r)return;let i=aa(r),{name:a}=i,o=m(i.params),s=m(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`),ue(`matchPath`,a,e,this.getQueryParams(a),"the `params` returned by this route's `decodeParams`")}else l={params:o,search:s};let u=P(this.#r.port,a,l.params,l.search),d=u.name;ae(`matchPath`,u.name,u.path,this.getQueryParams(u.name));let f=u.path,p=u.query,h=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{h=this.#e.matcher.buildPath(d,r.params,r.search,{trailingSlash:oa(i),queryParamsMode:n.queryParamsMode}),i===`preserve`&&(h=Jr(e,h))}catch{h=e}}return I(u,h)}forwardState(e,t,n){let r=n??p;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 aa({segments:n,params:t,search:{},meta:this.#e.matcher.getMetaByName(e)},e)}isActiveRoute(e,t=a,n=p,r=!1,i=!0){if(this.#i(e,t,n,r,i))return!0;if(!this.#e.hasAnyForward)return!1;let o;try{o=typeof e==`string`?e:String(e)}catch{return!1}if(!J(this.#e.config.forwardMap,o)&&!J(this.#e.config.forwardFnMap,o))return!1;let s;try{s=this.forwardState(e,t,n)}catch(t){return this.#r.logger.warn(`router.isActiveRoute`,`Dynamic forwardTo of route "${Hr(e)}" threw while resolving the active-link destination; treating the link as inactive.`,t),!1}return this.#i(s.name,s.params,s.search,r,i)}getMetaForState(e){return this.#e.matcher.hasRoute(e)?this.#e.matcher.getMetaByName(e):void 0}getUrlParams(e){return Zr(this.#e,e)}getQueryParams(e){return ti(this.#e,e)}getPrintedQueryParams(e){return ei(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 "${Hr(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=P(this.#r.port,e,t,n,{resolveForward:!1});if(r||o===e){let e=yr(s,``);return!this.#r.areStatesEqual(e,a,!0)||!Vr(s.path,a.params)?!1:i||b(e.search,a.search)}return!(!o.startsWith(`${e}.`)||!Vr(s.path,a.params)||!i&&!Ur(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,o;for(let e of t)i=x(this.#e.config.defaultParams[e],i),o=x(this.#e.config.defaultSearch[e],o);return{name:e,params:v(x(i,n),a),search:v(x(o,r),p)}}#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=ia({trailingSlash:oa(e?.trailingSlash),queryParamsMode:e?.queryParamsMode}),this.#t)}#l(e,t,n){let r=T(n),i=new Set([e]),a=[e],o=t(this.#r.getDependency,r),s=0;if(typeof o!=`string`)throw TypeError(`forwardTo callback must return a string, got ${typeof o}`);for(;s<100;){if(this.#e.matcher.getSegmentsByName(o)===void 0)throw Error(`Route "${o}" does not exist`);if(i.has(o)){let e=[...i,o].join(` → `);throw Error(`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 Error(`forwardTo exceeds maximum depth of 100`)}};const ca=new E(o.ROUTER_NOT_STARTED),la=new E(o.ROUTE_NOT_FOUND),ua=new E(o.SAME_STATES),da=new E(o.ROUTER_NOT_STARTED,{message:`[router] cannot commit before the start navigation does — the boot would overwrite it; defer with queueMicrotask/await, or navigate after start() resolves`});Object.freeze(ca),Object.freeze(la),Object.freeze(ua),Object.freeze(da);const fa=Promise.reject(ca),pa=Promise.reject(la),ma=Promise.reject(ua),ha=Promise.reject(da);fa.catch(()=>{}),pa.catch(()=>{}),ma.catch(()=>{}),ha.catch(()=>{});const ga=new Set([o.SAME_STATES,o.TRANSITION_CANCELLED,o.ROUTER_NOT_STARTED,o.ROUTE_NOT_FOUND,o.CANNOT_ACTIVATE,o.CANNOT_DEACTIVATE,o.ROUTER_ALREADY_STARTED]);function _a(e){return e instanceof E&&ga.has(e.code)}const va=new Set([fa,pa,ma,ha]),Y=Object.freeze;function ya(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 ba(e,t){let{toState:n,fromState:r,toDeactivate:i,toActivate:a}=t;if(n.name!==l.UNKNOWN_ROUTE&&!e.hasRoute(n.name)){let i=new E(o.ROUTE_NOT_FOUND,{routeName:n.name});throw e.sendTransitionFail(r,i,t),D(i)}let s=t,c={...n,transition:ya(t)},u=Y(c);t.toState=u;let d=e.canCommitTransition(s);if(!d)throw D(new E(o.TRANSITION_CANCELLED));for(let n of i)!a.includes(n)&&t.canDeactivateFunctions.has(n)&&e.clearCanDeactivate(n,d);return e.sendTransitionDone(s),u}const xa=Object.entries;function Sa(e){return e instanceof E&&e.code===o.TRANSITION_CANCELLED}function Ca(e){return Sa(e)?e:new E(o.TRANSITION_CANCELLED,{reason:e})}function wa(e,t,n,r){let i=t;i.code!==o.TRANSITION_CANCELLED&&i.code!==o.ROUTE_NOT_FOUND&&e.sendTransitionFail(n,i,r)}function Ta(e,t,n){if(e instanceof DOMException&&e.name===`AbortError`)throw D(new E(o.TRANSITION_CANCELLED));if(Sa(e))throw e;Ea(e,t,n)}function Ea(e,t,n){if(e instanceof E){let{code:n,message:r,...i}=e.toJSON(),a=new E(n,{...i,message:r});throw a.setCode(t),a.stack=e.stack??``,D(a)}throw D(new E(t,Oa(e,n)))}const Da=new Set([`code`,`segment`,`path`,`then`]);function Oa(t,n){let r={segment:n};if(t instanceof Error){let e=t.message,n=t.stack,i=`cause`in t?t.cause:void 0;return{...r,message:e,stack:n,...i!==void 0&&{cause:i}}}if(t&&typeof t==`object`){let n={};for(let[r,i]of xa(t))r!==`__proto__`&&!Da.has(r)&&e(n,r,i);return{...r,...n}}return r}async function ka(e,t,n){let r;try{r=await e}catch(e){Ta(e,t,n);return}if(!r)throw D(new E(t,{segment:n}))}function Aa(e,t,n,r,i,a,s,c,l,u){if(!l())throw D(new E(o.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,s,c)}catch(e){Ta(e,i,d)}let m;try{m=p.then}catch(e){Ta(e,i,d)}if(typeof m==`function`){let n=p;return{phase:e,index:t+1,pending:new Promise((e,t)=>{Reflect.apply(m,n,[e,t])})}}if(!p)throw D(new E(i,{segment:d}))}function ja(e,t,n,r,i,a,s,c,l,u,d,f,p){let m=e===1,h=e===0;if(!m&&!(h?s:c))return;let g=h?i:a,_=m?1:g.length,v=h?n:r,y=h?o.CANNOT_DEACTIVATE:o.CANNOT_ACTIVATE;for(let n=t;n<_;n++){let t=Aa(e,n,g,v,y,l,u,d,f,p);if(t!==void 0)return t}}function Ma(e,t,n,r,i,a,o,s,c,l,u,d,f){for(let p=d;p<=2;p++){let m=ja(p,p===d?f:0,e,t,n,r,i,a,o,s,c,l,u);if(m!==void 0)return m}}async function Na(e,t,n,r,i,a,s,c,l,u,d,f){let p=e;for(;p!==void 0;){if(p.phase===1)await p.pending;else{let e=p.phase===0;await ka(p.pending,e?o.CANNOT_DEACTIVATE:o.CANNOT_ACTIVATE,(e?r:i)[p.index-1])}p=Ma(t,n,r,i,a,s,c,l,u,d,f,p.phase,p.index)}}function Pa(e,t,n,r,i,a,o,s,c,l,u){let d=Ma(e,t,n,r,i,a,o,s,c,l,u,0,0);return d===void 0?void 0:Na(d,e,t,n,r,i,a,o,s,c,l,u)}const Fa=Object.freeze,Ia=Object.freeze([]),La=new Map;function Ra(e,t){return t?Fa({...e,replace:!0}):e}function za(e,t,n,r){return!!e&&!t&&!n&&e.path===r.path}function Ba(e,t){if(e.size===0)return!1;for(let n of t)if(e.has(n))return!0;return!1}function Va(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 Ha(e,t){t.externalSignal!==void 0&&t.cancelReason===void 0&&t.hasGuards&&e.bridgeExternalSignal(t)}function Ua(e,t,n,r,i,a,s,c,l,u){Xa(e,a);let d=e.hasLeaveListeners()||e.hasPreCommitListeners(),f={toState:t,fromState:n,opts:r,suspendable:i!==void 0||d,forceDeactivate:u,toDeactivate:Ia,toActivate:Ia,intersection:``,canDeactivateFunctions:La,canActivateFunctions:La,shouldDeactivate:!1,shouldActivate:!1,hasGuards:!1,controller:void 0,cancelReason:void 0,detachExternalBridge:void 0,externalSignal:i,reload:s,replace:c,redirected:l};if(!e.startTransition(f))throw D(new E(o.TRANSITION_CANCELLED));return f}function Wa(e,t){return e.sendLeaveApprove(t),ba(e,t)}function Ga(e,t){let[n,r]=e.getLifecycleFunctions(),{toDeactivate:i,toActivate:a,intersection:o}=ra(t.toState,t.fromState,t=>e.getMetaForState(t));t.canDeactivateFunctions=n,t.canActivateFunctions=r,t.toDeactivate=i,t.toActivate=a,t.intersection=o,t.shouldDeactivate=!!t.fromState&&!t.forceDeactivate&&i.length>0,t.shouldActivate=t.toState.name!==l.UNKNOWN_ROUTE&&a.length>0,t.hasGuards=t.shouldDeactivate&&Ba(n,i)||t.shouldActivate&&Ba(r,a)}function Ka(e,t,n){let r,i;try{r=e.getState();let a=te(n),s=a?.aborted===!0?a:void 0;n=ee(n);let c=w(n,`reload`),u=w(n,`force`),d=w(n,`replace`),f=w(n,`redirected`),p=w(n,`forceDeactivate`)===!0,m=r?.name===l.UNKNOWN_ROUTE&&!d,h=m||d;if(n=Ra(n,m),za(r,c,u,t))return e.emitTransitionError(t,r,ua),ma;let g=Ua(e,t,r,n,a,s,c,h,f,p);i=g;let _=g.externalSignal;if(_?.aborted===!0&&e.cancelNavigation(_.reason),Ga(e,g),Ha(e,g),!g.hasGuards&&!g.suspendable)return Wa(e,g);let{canDeactivateFunctions:v,canActivateFunctions:y,toDeactivate:b,toActivate:x,shouldDeactivate:S,shouldActivate:C,hasGuards:ne}=g,re=t;if(!ne){let t=Ya(e,g);if(t!==void 0)return t}if(ne){let n=Va(g),i=()=>!n.signal.aborted,a=n.signal,s=Pa(v,y,b,x,S,C,t,r,a,i,()=>{if(e.sendLeaveApprove(g),e.hasLeaveListeners())return e.awaitLeaveListeners(re,r,a)});if(s!==void 0)return qa(e,s,g,n);if(!i())throw D(new E(o.TRANSITION_CANCELLED))}return ba(e,g)}catch(t){let n=Ja(e,t,{nav:i,fromState:r});return Promise.reject(n)}}async function qa(e,t,n,r){let i=()=>!r.signal.aborted,a=n.externalSignal,s,c=!1,l,u=new Promise(e=>{if(r.signal.aborted){e();return}s=()=>{e()},r.signal.addEventListener(`abort`,s,{once:!0})});t.catch(()=>{});try{if(a?.aborted)throw D(new E(o.TRANSITION_CANCELLED,{reason:a.reason}));if(await Promise.race([t,u]),!i())throw D(new E(o.TRANSITION_CANCELLED));let r=ba(e,n);return c=!0,r}catch(t){let r=i()?t:Ca(t);throw l=r,wa(e,r,n.fromState,n),r}finally{s&&r.signal.removeEventListener(`abort`,s),c||r.abort(l)}}function Ja(e,t,n){let{nav:r}=n;if(r?.controller?.abort(t),r!==void 0){let i=e.isTransitioning()?t:Ca(t);return wa(e,i,n.fromState,r),i}return t}function Ya(e,t){let{toState:n,fromState:r}=t;if(e.hasLeaveListeners()&&Va(t),e.sendLeaveApprove(t),e.hasLeaveListeners()){let i=Va(t),a;try{a=e.awaitLeaveListeners(n,r,i.signal)}catch(e){throw i.abort(e),e}return a===void 0?void 0:qa(e,a,t,i)}}function Xa(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 D(new E(o.TRANSITION_CANCELLED,{reason:t.reason}))}const Za=Object.freeze,Qa=Object.freeze([l.UNKNOWN_ROUTE]),$a=Object.freeze({replace:!0});function eo(e,t,n){Xa(e,void 0);let r=e.getState(),i=r?q(r.name).toReversed():[];Za(i);let s={deactivated:i,activated:Qa,intersection:``};Za(s);let c={phase:`activating`,...r&&{from:r.name},reason:`success`,replace:!0,segments:s};Za(c);let u={name:l.UNKNOWN_ROUTE,params:a,search:p,path:t,transition:c,context:{}};if(Za(u),n&&r!==void 0&&!e.canDeactivateCurrent(i,u,r)){let n=new E(o.CANNOT_DEACTIVATE,{path:t,message:`[router.navigateToNotFound] a canDeactivate guard on "${r.name}" refused to leave for ${t}`});throw e.emitTransitionError(void 0,r,n),D(n)}return e.systemCommit(u,r,$a)}function to(e,t){return eo(e,t,!0)}function no(e,t){return eo(e,t,!1)}var ro=class{#e;#t;#n=0;setDependencies(e){this.#e=e,this.#t=t=>{_a(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 to(this.#e,e)}revalidateToNotFound(e){return no(this.#e,e)}isPreparing(){return this.#n>0}#r(e){return e instanceof Promise&&!va.has(e)&&e.catch(this.#t),e}#i(e,t,n,r){let i=this.#e;if(!i.canNavigate())return i.isStarting()?ha:fa;let a;this.#n++;try{a=i.buildNavigateState(e,t,n)}catch(e){return Promise.reject(e)}finally{this.#n--}return a?Ka(this.#e,a,r):(i.emitTransitionError(void 0,i.getState(),la),pa)}#a(e,t){let n=this.#e;if(!n.canNavigate())return n.isStarting()?ha:fa;let r=e.name;if(r!==l.UNKNOWN_ROUTE&&!n.hasRoute(r)){let e=new E(o.ROUTE_NOT_FOUND,{routeName:r});return n.emitTransitionError(void 0,n.getState(),e),Promise.reject(e)}let i=ye(e.params,n.getQueryParams(r));if(i!==void 0){let e=new E(o.WRONG_CHANNEL,{routeName:r,message:`[router.navigateToState] ${be(r,i,"`state.params`")}`});return n.emitTransitionError(void 0,n.getState(),e),Promise.reject(e)}let a;try{a=this.#o(e,r)}catch(e){return Promise.reject(e)}return Ka(this.#e,a,t)}#o(e,t){let n={name:t,params:S(e.params,a),search:S(e.search,p),path:e.path,context:{...e.context},transition:d};return g(n)}#s(e){let t=this.#e;if(!t.getOptions().defaultRoute)return Promise.reject(new E(o.ROUTE_NOT_FOUND,{routeName:`defaultRoute not configured`}));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(new E(o.ROUTE_NOT_FOUND,{routeName:`defaultRoute did not resolve to a route name`})):Promise.reject(new E(o.ROUTE_NOT_FOUND,{routeName:`defaultRoute resolved to empty`}))}};const io={},ao=Object.freeze({replace:!0});function oo(e){return[e,e?.reason].some(e=>e instanceof E&&e.code===o.ROUTE_NOT_FOUND)}var so=class{#e;setDependencies(e){this.#e=e}async start(e){let t=this.#e;if(t.isIdle())throw D(new E(o.TRANSITION_CANCELLED));let n=t.getOptions();if(typeof e!=`string`)throw TypeError(`[router.start] path must be a string, got ${typeof e}`);let r=t.matchPath(e);if(!r&&!n.allowNotFound){let t=new E(o.ROUTE_NOT_FOUND,{path:e});throw D(t)}if(t.completeStart(),r)try{return await t.navigateToState(r,ao)}catch(r){if(!n.allowNotFound||!oo(r))throw r;return t.navigateToNotFound(e)}return t.navigateToNotFound(e)}};const co={},lo=Object.create,uo=Object.entries,fo=Object.hasOwn,po=Object.values,mo=new WeakMap;function ho(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 Error(`[FSM.constructor] transitions["${e}"]["${t}"].when is not a function`);if(i!==void 0&&typeof i!=`function`)throw Error(`[FSM.constructor] transitions["${e}"]["${t}"].update is not a function`);return{target:n.target,when:r,update:i}}function go(e){let t=mo.get(e);if(t!==void 0)return t;let n=e,r=lo(null);for(let[e,t]of uo(n)){let n=lo(null);for(let[r,i]of uo(t))i!==void 0&&(n[r]=ho(e,r,i));r[e]=n}for(let e of po(r))for(let t of po(e))if(t!==void 0&&r[t.target]===void 0)throw Error(`[FSM.constructor] state "${t.target}" is not declared in config.transitions`);return mo.set(e,r),r}var _o=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=go(e.transitions),this.#a[t]===void 0)throw Error(`[FSM.constructor] 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 Error(`[FSM.on] state "${e}" is not declared in config.transitions`);if(!fo(r,t))throw Error(`[FSM.on] 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 vo(){return{inflight:void 0,current:void 0,previous:void 0}}const yo=(e,t)=>t?.nav===void 0||t.nav===e.inflight,bo=(e,t)=>t!==void 0&&t===e.inflight&&t.externalSignal?.aborted!==!0,xo=(e,t)=>{e.previous=e.current,e.current=g(t)},So=(e,t)=>{xo(e,t.toState),e.inflight=void 0},Co=(e,t)=>{xo(e,t.toState)},wo=e=>{e.previous=e.current,e.current=void 0},Q=e=>{e.current=void 0,e.previous=void 0,e.inflight=void 0},To=(e,t)=>{e.inflight=t},Eo={[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:wo},[Z.DISPOSE]:{target:X.DISPOSED,update:Q}},[X.READY]:{[Z.NAVIGATE]:{target:X.TRANSITION_STARTED,update:To},[Z.SYSTEM_COMMIT]:{target:X.READY,update:Co},[Z.STOP]:{target:X.IDLE,update:wo},[Z.DISPOSE]:{target:X.DISPOSED,update:Q}},[X.TRANSITION_STARTED]:{[Z.NAVIGATE]:{target:X.TRANSITION_STARTED,update:To},[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:To},[Z.COMPLETE]:{target:X.READY,when:bo,update:So},[Z.CANCEL]:X.READY,[Z.FAIL]:{target:X.READY,when:yo},[Z.DISPOSE]:{target:X.DISPOSED,update:Q}},[X.DISPOSED]:{}};function Do(){return new _o({initial:X.IDLE,context:vo(),transitions:Eo})}const Oo=Object.freeze,ko=`TREE_CHANGED`;function Ao(e){return e instanceof Error?e:Error(String(e))}function jo(e,t,n){return new Promise((r,i)=>{let a=()=>{let e=n.reason;i(e instanceof E&&e.code===o.TRANSITION_CANCELLED?e:new E(o.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(Ao(t));return}let o=e.find(e=>e.status===`rejected`);if(o!==void 0){i(Ao(o.reason));return}r()})})}function Mo(e,t,n){return e.addEventListener(`abort`,t,{once:!0}),()=>{n(),e.removeEventListener(`abort`,t)}}var No=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 TypeError(`[router.subscribe] Expected a function. For Observable pattern use observable(router) from @real-router/rx`)}static validateSubscribeLeaveListener(e){if(typeof e!=`function`)throw TypeError(`[router.subscribeLeave] Expected a function`)}emitRouterStart(){this.#i++;try{this.#t.emit(r.ROUTER_START)}finally{this.#i--}}emitRouterStop(){this.#t.emit(r.ROUTER_STOP)}emitTransitionStart(e,t,n){this.#i++;try{this.#t.emit(r.TRANSITION_START,e,t)}finally{this.#i--}}emitTransitionSuccess(e,t,n){this.#i++;try{this.#t.emit(r.TRANSITION_SUCCESS,e,t,n)}finally{this.#i--}}emitTransitionError(e,t,n){this.#i++;try{this.#t.emit(r.TRANSITION_ERROR,e,t,n)}finally{this.#i--}}emitTransitionCancel(e,t){this.#i++;try{this.#t.emit(r.TRANSITION_CANCEL,e,t)}finally{this.#i--}}emitTransitionLeaveApprove(e,t){this.#i++;try{this.#t.emit(r.TRANSITION_LEAVE_APPROVE,e,t)}finally{this.#i--}}isProcessing(){return this.#i>0}emitTreeChanged(e){this.#t.emit(ko,e)}isEmittingTreeChanged(){return this.#t.isDispatching(ko)}subscribeTreeChanged(e){if(this.isDisposed())throw D(new E(o.ROUTER_DISPOSED));return this.#t.on(ko,t=>{e(t)})}treeChangedListenerCount(){return this.#t.listenerCount(ko)}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:S(t.params,a),search:S(t.search,p),path:t.path,context:{...t.context},...n!=null&&{transition:ne(n)}};if(!this.#e.canSend(Z.SYSTEM_COMMIT))throw 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 D(new E(o.ROUTER_DISPOSED));return this.#a(r.TRANSITION_SUCCESS,`subscribe`),this.#t.on(r.TRANSITION_SUCCESS,(t,n)=>e({route:t,previousRoute:n}))}subscribeLeave(e){if(this.isDisposed())throw D(new E(o.ROUTER_DISPOSED));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(r.TRANSITION_START)>0||this.#t.listenerCount(r.TRANSITION_LEAVE_APPROVE)>0}awaitLeaveListeners(e,t,n){if(t===void 0)return;let r=Oo({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 Ao(a);return}return jo(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=Mo(t,()=>{this.sendCancelIfPossible(this.#e.getContext().current,t.reason)},()=>{e.detachExternalBridge=void 0})),co}#a(e,t){let n=this.#n?.();n&&n.eventBus.validateCountThresholds(this.#t.listenerCount(e)+1,e,t)}#o(){if(this.isDisposed())return new E(o.ROUTER_DISPOSED);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 E(o.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):co;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??new E(o.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 Po=new E(o.ROUTER_ALREADY_STARTED);Object.freeze(Po);const Fo={maxListeners:0,warnListeners:0};var Io=class{#e=new Map;#t=new Set;#n=null;#r=Fo;#i;#a;constructor(e){e?.limits&&(this.#r=e.limits),this.#i=e?.onListenerError??null,this.#a=e?.onListenerWarn??null}static validateCallback(e,t){if(typeof e!=`function`)throw TypeError(`Expected callback to be a function for event ${t}`)}setLimits(e){this.#r=e}on(e,t){let n=this.#e.get(e),r=n?.size??0;if(n?.has(t))throw Error(`Duplicate listener for "${e}"`);let{maxListeners:i,warnListeners:a}=this.#r;if(i!==0&&r>=i)throw Error(`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 Lo=Object.freeze({log:0,warn:1,error:2}),Ro=Object.freeze({all:0,"warn-error":1,"error-only":2,none:3}),zo=Object.hasOwn;var Bo=class{#e={level:`all`,callback:void 0,callbackIgnoresLevel:!1};#t=0;#n=!1;constructor(e){e&&this.configure(e)}configure(e){let t=ir(e),n=t.level;n!==void 0&&(this.#e.level=n,this.#t=Ro[n]),zo(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=Lo[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(`[Logger] Error in async callback:`,e)})}catch(e){this.#o(`[Logger] Error in callback:`,e)}finally{this.#n=!1}}}#o(e,t){typeof console<`u`&&typeof console.error==`function`&&console.error(e,t)}};function Vo(e){let t=Ho(e),n=Jo(e),r=()=>O(e.router).validator;Uo(e),Wo(e,r),Go(e,t,r),Ko(e,n,r),qo(e,t,r),Yo(e,n),Xo(e),Zo(e,n)}function Ho(e){let{router:t,dependenciesStore:n}=e,r=e=>n.dependencies[e];return e=>e(t,r)}function Uo(e){e.dependenciesStore.limits=e.limits,e.eventBus.setLimits({maxListeners:e.limits.maxListeners,warnListeners:e.limits.warnListeners})}function Wo(e,t){e.eventBus.setValidatorAccessor(t)}function Go(e,t,n){let r={logger:O(e.router).logger,compileFactory:t,getValidator:n};e.routeLifecycle.setDependencies(r)}function Ko(e,t,n){let r={logger:O(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:t=>e.dependenciesStore.dependencies[t]};e.routes.setDependencies(r),e.routes.setLifecycleNamespace(e.routeLifecycle)}function qo(e,t,n){let r={logger:O(e.router).logger,addEventListener:(t,n)=>e.eventBus.addEventListener(t,n),canNavigate:()=>e.eventBus.canBeginTransition(),compileFactory:t,getValidator:n};e.plugins.setDependencies(r)}function Jo(e){let t=O(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:()=>e.options.get().queryParamsMode===`loose`,get reportDroppedQueryKey(){return t.validator?i:void 0},get reportUndeclaredParamKey(){return t.validator?r:void 0}}}function Yo(e,t){let n={logger:O(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)=>{O(e.router).validator?.routes.validateStateBuilderArgs(n,r,`navigate`);let a=P(t,n,r,i,{diagnoseUndeclared:!0});if(e.routes.getMetaForState(a.name)!==void 0)return ae(`navigate`,a.name,a.path,t.queryNames(a.name)),I(a,F(a,t))},resolveDefault:()=>{let t=e.options.get(),n=O(e.router),r=mr(t.defaultRoute,t=>e.dependenciesStore.dependencies[t]),i=mr(t.defaultParams,t=>e.dependenciesStore.dependencies[t]),a=mr(t.defaultSearch,t=>e.dependenciesStore.dependencies[t]);return typeof t.defaultRoute==`function`&&n.validator?.options.validateResolvedDefaultRoute(r,n.routeGetStore()),{route:r,params:i,search:a}},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)?io: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(n)}function Xo(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()),completeStart:()=>{e.eventBus.sendStarted()},isIdle:()=>e.eventBus.isIdle()})}function Zo(e,t){e.state.setDependencies({port:()=>t,getUrlParams:t=>e.routes.getUrlParams(t)})}const Qo=Object.create,$o=Object.keys,es=Object.freeze;var ts=class e{#e;#t;#n;#r;#i;#a;#o;#s;#c;#l;#u;#d;#f;#p;constructor(n=[],r={},i={}){let{logger:s,...c}=r,l=new Bo(s?ir(s):void 0);this.#f=e=>{_a(e)||l.error(`router.start`,`Unexpected start error`,e)},pr.validateOptionsIsObject(r),Kn(i);let u=Xn(n),d=os(c);this.#r=rs(c),this.#e=new pr(d),this.#t=or(d.limits),this.#n=d.limits==null?void 0:es($o(d.limits)),this.#i=lr(i),this.#a=new br,this.#o=new sa(u,ds(this.#e.get()),l),this.#s=new Pr,this.#c=new Dr,this.#l=new ro,this.#u=new so;let f=Do();this.#a.setContext(f.getContext());let p=new Io({onListenerError:(e,t)=>{l.error(`Router`,`Error in listener for ${e}:`,t)},onListenerWarn:(e,t)=>{l.warn(`router.addEventListener`,`Event "${e}" has ${t} listeners — possible memory leak`)}});this.#d=new No({routerFSM:f,emitter:p});let h=new Map,g=e=>{let t=e.params,n=e.search;return{name:e.name,params:t==null?t:m(t),search:n==null?n:m(n)}},_=_e(k.forwardState,(e,t,n)=>this.#o.forwardState(e,t,n),h,g,is),v=((e,t,n)=>{let r=_(e,t,n),i=r.name,o=r.params;ue(`forwardState`,i,o,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 s=r.search,c=s==null;return{name:i,params:m(o??a),search:c?s:m(s)}}),y=_e(k.forwardState,(e,t,n)=>({name:e,params:t,search:n}),h,g,is);this.#p=(e,t,n)=>{let r=y(e,t,n),i=r.params,o=r.search;return this.#o.buildPathFromIntent(r.name,i??a,o)};let b={logger:l,makeState:(e,t,n,r)=>{he(b,`makeState`,e,t);let i=T(t);return b.validator?.state.validateMakeStateArgs(e,i,r),b.validator?.navigation.validateSearch(n,`makeState`),this.#a.makeState(e,i,n,r)},getMetaForState:e=>this.#o.getMetaForState(e),getQueryParams:e=>this.#o.getQueryParams(e),forwardState:v,buildStateResolved:(e,t)=>this.#o.buildStateResolved(e,t),port:()=>this.#o.getPort(),matchPath:(e,t)=>(b.validator?.routes.validateMatchPathArgs(e),this.#o.matchPath(e,t??this.#e.get())),getOptions:()=>this.#e.get(),getAdoptedOrigins:()=>this.#r,addEventListener:(e,t)=>(xe(b.isDisposed),Bn(e),Vn(t),b.validator?.eventBus.validateListenerArgs(e,t),this.#d.addEventListener(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 TypeError(`[router.navigateToNotFound] path must be a string, got ${typeof e}`);return this.#l.navigateToNotFound(e)},revalidateToNotFound:e=>this.#l.revalidateToNotFound(e),start:me(k.start,e=>this.#u.start(e),h),navigateToState:(n,r)=>(xe(b.isDisposed),b.validator?.navigation.validateNavigateToStateArgs(n),r!==void 0&&b.validator?.navigation.validateNavigationOptions(r,`navigateToState`),this.#g(),e.#m(this.#l.navigateToState(n,r??t))),interceptors:h,setRootPath:e=>{b.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:re({...this.#i.dependencies}),pluginFactories:this.#c.getAll(),loggerConfig:l.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 D(new E(o.ROUTE_NOT_FOUND,{routeName:r}));return this.#d.systemCommit({toState:e,fromState:t,opts:n})},routerExtensions:[],contextClaimRecords:new Map,hydrationState:null};oe(this,b),Vo({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=O(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(`real-router`,`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=O(this);r.validator?.routes.validateBuildPathArgs(e,t),r.validator?.navigation.validateParamsShape(t,`buildPath`),r.validator?.navigation.validateSearch(n,`buildPath`);let i=T(t);return r.validator?.navigation.validateParams(i,`buildPath`),this.#p(e,i??a,n)}getState(){return this.#a.get()}getPreviousState(){return this.#a.getPrevious()}areStatesEqual(e,t,n=!0){return O(this).validator?.state.validateAreStatesEqualArgs(e,t,n),this.#a.areStatesEqual(e,t,n)}shouldUpdateNode(e){return O(this).validator?.routes.validateShouldUpdateNodeArgs(e),sa.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=O(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(),this.#o.clearRoutes(),this.#s.clearAll(),this.#i.dependencies=Qo(null),this.#v()}canNavigateTo(e,t,n){let r=O(this);r.validator?.routes.validateRouteName(e,`canNavigateTo`),r.validator?.navigation.validateParamsShape(t,`canNavigateTo`),r.validator?.navigation.validateSearch(n,`canNavigateTo`);let i;try{i=T(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(r.validator?.navigation.validateParams(i,`canNavigateTo`),!this.#o.hasRoute(e)||ye(t,this.#o.getQueryParams(e))!==void 0)return!1;let o=this.#o.getPort(),s;try{s=P(o,e,i??a,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 c;try{c=I(s,F(s,o))}catch{return!1}let l=this.#a.get(),{toDeactivate:u,toActivate:d}=ra(c,l,e=>this.#o.getMetaForState(e));return this.#s.canNavigateTo(u,d,c,l)}usePlugin(...e){if(this.#d.isDisposed())throw D(new E(o.ROUTER_DISPOSED));let t=e.filter(Boolean);if(t.length===0)return()=>{};let n=O(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 No.validateSubscribeListener(e),this.#d.subscribe(e)}subscribeLeave(e){return No.validateSubscribeLeaveListener(e),this.#d.subscribeLeave(e)}isLeaveApproved(){return this.#d.isLeaveApproved()}navigate(n,r,i,o){this.#g();let s=O(this),c,l,u,d;typeof n==`object`&&n?(c=n.name,l=n.params,u=n.search,d=r??t):(c=n,l=r,u=i,d=o??t),he(s,`navigate`,c,l),s.validator?.navigation.validateNavigateArgs(c),s.validator?.navigation.validateParamsShape(l,`navigate`),s.validator?.navigation.validateSearch(u,`navigate`),s.validator?.navigation.validateNavigationOptions(d,`navigate`);let f;try{f=T(l)}catch(e){return Promise.reject(e)}return s.validator?.navigation.validateParams(f,`navigate`),e.#m(this.#l.navigate(c,f??a,u,d))}navigateToDefault(n){this.#g();let r=O(this);r.validator?.navigation.validateNavigateToDefaultArgs(n);let i=n??t;return r.validator?.navigation.validateNavigationOptions(i,`navigateToDefault`),e.#m(this.#l.navigateToDefault(i))}navigateToNotFound(e){if(this.#g(),!this.#d.isActive())throw D(new E(o.ROUTER_NOT_STARTED));if(e!==void 0&&typeof e!=`string`)throw TypeError(`[router.navigateToNotFound] 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 D(new E(o.ROUTER_NOT_STARTED,{message:`[router.navigateToNotFound] 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(Po);O(this).validator?.navigation.validateStartArgs(e),this.#d.sendStart();let t;try{let n=O(this).start(e);t=typeof n?.then==`function`?n:Promise.reject(TypeError("[router.start] 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 D(new E(o.REENTRANT_NAVIGATION,{message:`[router] 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 D(new E(o.REENTRANT_NAVIGATION,{message:`[router] 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 D(new E(o.REENTRANT_NAVIGATION,{message:`[router] 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 D(new E(o.ROUTER_DISPOSED))}function ns(e){return as(e)&&!Object.isFrozen(e)&&e!==ur.defaultParams&&e!==ur.defaultSearch}function rs(e){let{defaultParams:t,defaultSearch:n}=e;return es({...ns(t)&&{defaultParams:new WeakRef(t)},...ns(n)&&{defaultSearch:new WeakRef(n)}})}function is(e,t,n){return[e,T(t),T(n)]}function as(e){return typeof e==`object`&&!!e}function os(e){let t={...e};return e.limits!=null&&(t.limits=C(`limits`,e.limits)),as(e.defaultParams)&&(t.defaultParams=C(`defaultParams`,e.defaultParams)),as(e.defaultSearch)&&(t.defaultSearch=C(`defaultSearch`,e.defaultSearch)),t}const ss=Object.freeze({});function cs(e,t){let n;try{n=t[e]}catch(t){throw TypeError(`[router.constructor] Invalid "queryParams.${e}": reading it threw.`,{cause:t})}if(n!=null){if(typeof n==`string`)return n;try{return String(n)}catch(t){throw TypeError(`[router.constructor] Invalid "queryParams.${e}": its value cannot be converted to a string.`,{cause:t})}}}function ls(e){if(e==null)return`default`;try{return String(e)}catch(e){throw TypeError(`[router.constructor] Invalid "urlParamsEncoding": coercing it threw.`,{cause:e})}}function us(e){if(!e)return ss;let t=cs(`arrayFormat`,e),n=cs(`booleanFormat`,e),r=cs(`nullFormat`,e),i=cs(`numberFormat`,e);return es({...t!==void 0&&{arrayFormat:t},...n!==void 0&&{booleanFormat:n},...r!==void 0&&{nullFormat:r},...i!==void 0&&{numberFormat:i}})}function ds(e){return es({strictTrailingSlash:e.trailingSlash===`strict`,caseSensitive:e.caseSensitive,strictQueryParams:e.queryParamsMode===`strict`,urlParamsEncoding:ls(e.urlParamsEncoding),queryParams:us(e.queryParams)})}export{Hn as A,I as C,Jn as D,cr as E,$t as F,xe as I,Se as L,Xn as M,Yn as N,Un as O,Qt as P,Kr as S,P as T,fi as _,Ti as a,Br as b,wi as c,W as d,Di as f,Ai as g,di as h,ji as i,Zn as j,Wn as k,U as l,Ni as m,ra as n,G as o,Oi as p,H as r,Si as s,ts as t,Ci as u,ri as v,F as w,qr as x,ni as y};
2
+ //# sourceMappingURL=Router-DKleJDRH.mjs.map