@real-router/core 0.139.1 → 0.140.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/Router-n4a1c_7B.js +2 -0
- package/dist/cjs/Router-n4a1c_7B.js.map +1 -0
- package/dist/cjs/api/getDependenciesApi.d.ts.map +1 -1
- package/dist/cjs/api/getPluginApi.d.ts.map +1 -1
- package/dist/cjs/api.js +1 -1
- package/dist/cjs/api.js.map +1 -1
- package/dist/cjs/dependenciesStore.d.ts +2 -2
- package/dist/cjs/index.js +1 -1
- package/dist/cjs/types/RouterValidator.d.ts +37 -7
- package/dist/cjs/types/RouterValidator.d.ts.map +1 -1
- package/dist/cjs/types/api.d.ts +47 -0
- package/dist/cjs/types/api.d.ts.map +1 -1
- package/dist/esm/Router-1EUSkEk7.mjs +2 -0
- package/dist/esm/Router-1EUSkEk7.mjs.map +1 -0
- package/dist/esm/api/getDependenciesApi.d.mts.map +1 -1
- package/dist/esm/api/getPluginApi.d.mts.map +1 -1
- package/dist/esm/api.mjs +1 -1
- package/dist/esm/api.mjs.map +1 -1
- package/dist/esm/dependenciesStore.d.mts +2 -2
- package/dist/esm/index.mjs +1 -1
- package/dist/esm/types/RouterValidator.d.mts +37 -7
- package/dist/esm/types/RouterValidator.d.mts.map +1 -1
- package/dist/esm/types/api.d.mts +47 -0
- package/dist/esm/types/api.d.mts.map +1 -1
- package/package.json +1 -1
- package/dist/cjs/Router-NcUbf7cb.js +0 -2
- package/dist/cjs/Router-NcUbf7cb.js.map +0 -1
- package/dist/esm/Router-BDfDkG7r.mjs +0 -2
- package/dist/esm/Router-BDfDkG7r.mjs.map +0 -1
|
@@ -7,8 +7,8 @@ import { Limits } from "./types/internal.mjs";
|
|
|
7
7
|
* sake lives in this module; the edits a caller asks for live in
|
|
8
8
|
* `getDependenciesApi`.
|
|
9
9
|
*
|
|
10
|
-
* ⚠ `limits` is read by
|
|
11
|
-
*
|
|
10
|
+
* ⚠ `limits` is read by `getDependenciesApi` for the count check and handed
|
|
11
|
+
* out as `PluginApi.getResolvedLimits()`.
|
|
12
12
|
*/
|
|
13
13
|
export interface DependenciesStore<Dependencies extends DefaultDependencies = DefaultDependencies> {
|
|
14
14
|
dependencies: Partial<Dependencies>;
|
package/dist/esm/index.mjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{_ as e,g as t,h as n,p as r,t as i}from"./RouterError-gEM9-BIR.mjs";import{t as a,v as o}from"./Router-
|
|
1
|
+
import{_ as e,g as t,h as n,p as r,t as i}from"./RouterError-gEM9-BIR.mjs";import{t as a,v as o}from"./Router-1EUSkEk7.mjs";const s=(e=[],t={},n={})=>new a(e,t,n),c=Object.freeze,l=new WeakMap,u=e=>{let t=l.get(e);return t||(t=c({navigate:e.navigate,getState:e.getState,isActiveRoute:e.isActiveRoute,canNavigateTo:e.canNavigateTo,subscribe:e.subscribe,subscribeLeave:e.subscribeLeave,isLeaveApproved:e.isLeaveApproved}),l.set(e,t)),t};export{a as Router,i as RouterError,r as UNKNOWN_ROUTE,n as constants,s as createRouter,t as errorCodes,e as events,u as getNavigator,o as resolveForwardChain};
|
|
2
2
|
//# sourceMappingURL=index.mjs.map
|
|
@@ -6,7 +6,10 @@
|
|
|
6
6
|
* When ctx.validator is null (default), validation is skipped.
|
|
7
7
|
* When ctx.validator is set (by validation plugin), all methods are called.
|
|
8
8
|
*
|
|
9
|
-
*
|
|
9
|
+
* Parameters that carry a caller-supplied value use `unknown`, to avoid coupling
|
|
10
|
+
* to internal type names. ⚠ That is not a blanket rule: where core already holds
|
|
11
|
+
* the fact the analyser judges, the fact travels — a number, a name, a value —
|
|
12
|
+
* rather than the container it was read from (#2382).
|
|
10
13
|
*/
|
|
11
14
|
export interface RouterValidator {
|
|
12
15
|
/**
|
|
@@ -19,12 +22,24 @@ export interface RouterValidator {
|
|
|
19
22
|
validateShouldUpdateNodeArgs: (name: unknown) => void;
|
|
20
23
|
validateStateBuilderArgs: (name: unknown, params: unknown, caller: string) => void;
|
|
21
24
|
validateAddRouteArgs: (routes: unknown) => void;
|
|
22
|
-
|
|
25
|
+
/**
|
|
26
|
+
* ⚑ Takes no store (#2382). The analyser reads the three facts it judges
|
|
27
|
+
* from `PluginApi`: the path slots and the ONE-HOP forward map come back as
|
|
28
|
+
* frozen values, and the tree is the published one `getTree()` already hands
|
|
29
|
+
* out — no container travels that the curated surface does not.
|
|
30
|
+
*/
|
|
31
|
+
validateRoutes: (routes: unknown[], parentName?: string) => void;
|
|
23
32
|
validateRemoveRouteArgs: (name: unknown) => void;
|
|
24
33
|
validateUpdateRouteBasicArgs: (name: unknown, updates: unknown) => void;
|
|
25
34
|
validateUpdateRoutePropertyTypes: (name: string, updates: unknown) => void;
|
|
26
|
-
|
|
27
|
-
|
|
35
|
+
/** Reads the same three facts from `PluginApi` as `validateRoutes` (#2382). */
|
|
36
|
+
validateUpdateRoute: (name: string, updates: unknown) => void;
|
|
37
|
+
/**
|
|
38
|
+
* ⚑ Takes no tree (#2382): the analyser reads it from `PluginApi.getTree()`,
|
|
39
|
+
* which hands out the same object — the tree is published already, so
|
|
40
|
+
* passing it as an argument added a second address and nothing else.
|
|
41
|
+
*/
|
|
42
|
+
validateParentOption: (parent: unknown) => void;
|
|
28
43
|
validateRouteName: (name: unknown, caller: string) => void;
|
|
29
44
|
throwIfInternalRoute: (name: unknown, caller: string) => void;
|
|
30
45
|
throwIfInternalRouteInArray: (routes: unknown[], caller: string) => void;
|
|
@@ -37,7 +52,8 @@ export interface RouterValidator {
|
|
|
37
52
|
*/
|
|
38
53
|
options: {
|
|
39
54
|
validateOptions: (options: unknown, methodName: string) => void;
|
|
40
|
-
|
|
55
|
+
/** Reads the tree from `PluginApi.getTree()`, like `validateParentOption` (#2382). */
|
|
56
|
+
validateResolvedDefaultRoute: (routeName: unknown) => void;
|
|
41
57
|
};
|
|
42
58
|
/**
|
|
43
59
|
* Dependencies validation methods
|
|
@@ -46,8 +62,22 @@ export interface RouterValidator {
|
|
|
46
62
|
validateDependencyName: (name: unknown, caller: string) => void;
|
|
47
63
|
validateSetDependencyArgs: (name: unknown, value: unknown, caller: string) => void;
|
|
48
64
|
validateDependenciesObject: (deps: unknown, caller: string) => void;
|
|
49
|
-
|
|
50
|
-
|
|
65
|
+
/**
|
|
66
|
+
* ⚑ Takes the VALUE core read, not the store that holds it (#2382). The
|
|
67
|
+
* question is whether the name resolved to anything, and core has the answer
|
|
68
|
+
* one line earlier: `readDependency` performs exactly that lookup.
|
|
69
|
+
*/
|
|
70
|
+
validateDependencyExists: (name: string, value: unknown) => void;
|
|
71
|
+
/**
|
|
72
|
+
* ⚑ Takes the two NUMBERS it judges, not the store that holds them (#2382).
|
|
73
|
+
* `maxDependencies` arrives already resolved by `createLimits`, which takes
|
|
74
|
+
* this path out of the default-drift #1879 names.
|
|
75
|
+
*
|
|
76
|
+
* ⚠ Both arguments sit inside the optional chain on purpose: with no
|
|
77
|
+
* validator installed the `?.` short-circuits the whole chain, arguments
|
|
78
|
+
* included, so the key count is never walked.
|
|
79
|
+
*/
|
|
80
|
+
validateDependencyCount: (currentCount: number, maxDependencies: number, methodName: string) => void;
|
|
51
81
|
validateCloneArgs: (dependencies: unknown) => void;
|
|
52
82
|
warnOverwrite: (name: string, methodName: string) => void;
|
|
53
83
|
warnBatchOverwrite: (keys: string[], methodName: string) => void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RouterValidator.d.mts","names":[],"sources":["../../../src/types/RouterValidator.ts"],"mappings":"
|
|
1
|
+
{"version":3,"file":"RouterValidator.d.mts","names":[],"sources":["../../../src/types/RouterValidator.ts"],"mappings":";;;;;;;;;;;;;iBAaiB;;;;EAIf;IACE,wBAAwB,gBAAgB;IACxC,wBAAwB;IACxB,4BACE,eACA,iBACA,iBACA;IAEF,+BAA+B;IAC/B,2BACE,eACA,iBACA;IAEF,uBAAuB;;;;;;;IAOvB,iBAAiB,mBAAmB;IACpC,0BAA0B;IAC1B,+BAA+B,eAAe;IAC9C,mCAAmC,cAAc;;IAEjD,sBAAsB,cAAc;;;;;;IAMpC,uBAAuB;IACvB,oBAAoB,eAAe;IACnC,uBAAuB,eAAe;IACtC,8BAA8B,mBAAmB;IACjD,0BAA0B;IAC1B,sBAAsB;IACtB,wBAAwB;;;;;EAM1B;IACE,kBAAkB,kBAAkB;;IAEpC,+BAA+B;;;;;EAMjC;IACE,yBAAyB,eAAe;IACxC,4BACE,eACA,gBACA;IAEF,6BAA6B,eAAe;;;;;;IAM5C,2BAA2B,cAAc;;;;;;;;;;IAUzC,0BACE,sBACA,yBACA;IAEF,oBAAoB;IACpB,gBAAgB,cAAc;IAC9B,qBAAqB,gBAAgB;IACrC,wBAAwB;;;;;EAM1B;IACE,sBAAsB,eAAe;IACrC,6BACE,kBACA;IAEF,qBAAqB;IACrB,0BAA0B;IAC1B,sBAAsB;IACtB,uBAAuB;IACvB,uBAAuB;;;;;EAMzB;IACE,kBAAkB,kBAAkB;IACpC,uBAAuB,eAAe;IACtC,0BAA0B,eAAe;IACzC,gBAAgB,cAAc,cAAc;IAC5C,qBAAqB,cAAc;;;;;EAMrC;IACE,uBAAuB;IACvB,gCAAgC;IAChC,8BAA8B;IAC9B,4BAA4B,kBAAkB;IAC9C,iBAAiB,iBAAiB;;;;;;;;IAQlC,sBAAsB,iBAAiB;;;;;;;;IAQvC,iBAAiB,iBAAiB;IAClC,oBAAoB;;;;;EAMtB;IACE,wBACE,eACA,iBACA;IAEF,6BACE,aACA,aACA;;;;;;;;;;;;IAaF,wBAAwB,mBAAmB;;IAG3C,2BAA2B,mBAAmB;;;;;EAMhD;IACE,uBAAuB,eAAe;IACtC,0BACE,eACA,mBACA"}
|
package/dist/esm/types/api.d.mts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { Params, SearchParams, SimpleState, State, Unsubscribe } from "./base.mjs";
|
|
2
|
+
import { LimitsConfig } from "./limits.mjs";
|
|
2
3
|
import { AdoptedOrigins, AnyOptions, DefaultDependencies, GuardFnFactory, Plugin, Route, RouteConfigUpdate, RouterLogger } from "./router.mjs";
|
|
3
4
|
import { EventMethodMap, EventName } from "./constants.mjs";
|
|
4
5
|
import { TreeChangedEvent } from "./tree-changed.mjs";
|
|
@@ -157,6 +158,52 @@ export interface PluginApi {
|
|
|
157
158
|
* cannot grow the registry.
|
|
158
159
|
*/
|
|
159
160
|
getDeclaredQueryNames: (name: string) => readonly string[];
|
|
161
|
+
/**
|
|
162
|
+
* The route's PATH slot names, ancestors included — the registry
|
|
163
|
+
* `buildPath` prints from. Answers `[]` for a route the tree does not hold;
|
|
164
|
+
* a name is not a claim that the route exists.
|
|
165
|
+
*
|
|
166
|
+
* ⚠ Handed out BY REFERENCE and frozen where it lives, with the same caveat as
|
|
167
|
+
* {@link getDeclaredQueryNames}: a held array describes the tree as it was
|
|
168
|
+
* when read, and a rebuild mints a new one (#2255).
|
|
169
|
+
*/
|
|
170
|
+
getUrlParams: (name: string) => readonly string[];
|
|
171
|
+
/**
|
|
172
|
+
* The ONE-HOP forward map — each source route's STRING `forwardTo` target; a
|
|
173
|
+
* callback `forwardTo` is not in it — as a fresh frozen copy per call.
|
|
174
|
+
*
|
|
175
|
+
* ⚠ **One hop, not resolved.** A consumer that checks a PENDING forward for
|
|
176
|
+
* cycles overlays it onto this map and resolves the chain itself. A resolved
|
|
177
|
+
* map collapses each chain to its last hop, so a cycle closing through a
|
|
178
|
+
* source that ALREADY forwards is not constructible there, and the check
|
|
179
|
+
* would miss it silently. `resolveForwardChain` takes exactly this shape.
|
|
180
|
+
*
|
|
181
|
+
* ⚑ A copy, so writing to it reaches nothing — and frozen, so the write does
|
|
182
|
+
* not land either; strict-mode code (every ES module) gets a `TypeError`.
|
|
183
|
+
*/
|
|
184
|
+
getForwardMap: () => Readonly<Record<string, string>>;
|
|
185
|
+
/**
|
|
186
|
+
* The resolved limits: the caller's `limits` over core's defaults, each
|
|
187
|
+
* coerced to a number once at construction. The frozen object core's own
|
|
188
|
+
* dependency-count check reads, handed out by reference.
|
|
189
|
+
*/
|
|
190
|
+
getResolvedLimits: () => Readonly<LimitsConfig>;
|
|
191
|
+
/**
|
|
192
|
+
* The dependency names the router holds, as `Object.keys` lists them —
|
|
193
|
+
* `"__proto__"` included, a symbol key not. A fresh frozen array per call.
|
|
194
|
+
*
|
|
195
|
+
* ⚠ Not `Object.keys(getDependenciesApi(router).getAll())`: that container
|
|
196
|
+
* withholds `"__proto__"`, so a count taken from it comes out one short.
|
|
197
|
+
*/
|
|
198
|
+
getDependencyKeys: () => readonly string[];
|
|
199
|
+
/**
|
|
200
|
+
* Route names carrying a guard added through `addActivateGuard` /
|
|
201
|
+
* `addDeactivateGuard` — deactivate first, each name once, including names
|
|
202
|
+
* the route tree does not hold. A fresh frozen array per call.
|
|
203
|
+
*
|
|
204
|
+
* ⚠ A guard declared on a route definition does not put its name here.
|
|
205
|
+
*/
|
|
206
|
+
getExternalGuardNames: () => readonly string[];
|
|
160
207
|
addEventListener: <E extends EventName>(eventName: E, cb: Plugin[EventMethodMap[E]]) => Unsubscribe;
|
|
161
208
|
/**
|
|
162
209
|
* Builds the State `navigate` would commit, without committing it: resolves
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.d.mts","names":[],"sources":["../../../src/types/api.ts"],"mappings":"
|
|
1
|
+
{"version":3,"file":"api.d.mts","names":[],"sources":["../../../src/types/api.ts"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;iBA8CiB;EACf,QAAQ,kBAAkB,QAAQ;EAClC,eACE,mBACA,aAAa,QACb,cAAc,iBACX;;;;;;YAOK,cAAc,gBAAgB,2BACxC,MAAM,uBAAuB,OAC1B,MAAM,WAAW,uBAAuB,QACxC,WAAW,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAwCtB,sBAAsB;EACrC,QAAQ,OAAO,OAAO,OAAO;EAC7B;;;;;;iBAOe;EACf,YAAY,UAAU,SAAS,QAAQ,UAAU,eAAe,cAC9D,cACA,SAAS,GACT,SAAS,GACT,kBACG,MAAM,GAAG;EAEd,eACE,UAAU,SAAS,QACnB,UAAU,eAAe,cAEzB,mBACA,aAAa,GACb,cAAc,MACX,YAAY,GAAG;EAEpB,YAAY,UAAU,SAAS,QAAQ,iBAAiB,MAAM;;;;;;;;;;;EAY9D,yBAAyB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAkCzB,kBACE,OAAO,OACP,UAAU,sBACP,QAAQ;;;;;;;EAQb,cAAc;EACd;;;;;;;;;EAUA,QAAQ;;;;;;;;;;;;;;;;EAiBR,wBAAwB;;;;;;;;;;EAWxB,eAAe;;;;;;;;;;;;;;EAef,qBAAqB,SAAS;;;;;;EAO9B,yBAAyB,SAAS;;;;;;;;EASlC;;;;;;;;EASA;EAEA,mBAAmB,UAAU,WAC3B,WAAW,GACX,IAAI,OAAO,eAAe,QACvB;;;;;;;;;;;;EAaL,uBACE,cACA,SAAS,QACT,SAAS,iBACN;;;;;;;;;;;;;;;;EAiBL,oBACE,cACA,SAAS,QACT,SAAS;EAGX,kBAAkB;EAElB;EAEA,iBAAiB,gBAAgB,wBAC/B,QAAQ,GACR,IAAI,cAAc,OACf;EAEL,eAAe,YAAY,4BAA4B;;;;;;;;;;;;;;;EAgBvD,sBAAsB,OAAO;EAE7B;KAEG,gBAAgB,uBACf,WAAW,IACV,sBAAsB,aAAa;KACrC,oBAAoB;;;;;;;;;;;;;;;;;;;EAoBvB,iBAAiB,iBAAiB;;;;;iBAMnB,UACf,qBAAqB,sBAAsB;EAE3C,MACE,QAAQ,MAAM,kBAAkB,MAAM,eACtC;IAAY;;EAGd,SAAS;;;;;;;;;;;EAYT,SAAS,cAAc,SAAS,kBAAkB;EAElD;EAEA,UAAU,QAAQ,MAAM,kBAAkB,MAAM;EAEhD,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA6BN,MAAM,iBAAiB,MAAM;;;;;;;;;;;;;EAc7B,mBACE,UAAU,OAAO,iBAAiB,2BAC/B;;;;;iBAMU,gBACf,qBAAqB,sBAAsB;EAE3C,MAAM,gBAAgB,cAAc,KAAK,MAAM,aAAa;EAC5D,cAAc,QAAQ;EACtB,MAAM,gBAAgB,uBACpB,MAAM,GACN,OAAO,aAAa;EAEtB,SAAS,MAAM;EACf,SAAS,YAAY;EACrB;EACA,MAAM,YAAY;;;;;iBAMH,aACf,qBAAqB,sBAAsB;EAE3C,mBACE,cACA,oBAAoB,eAAe;EAErC,qBACE,cACA,sBAAsB,eAAe;EAEvC,sBAAsB;EACtB,wBAAwB"}
|
package/package.json
CHANGED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
const e=require("./internals-BzfR3muF.js"),t=require("./RouterError-C-p1yaby.js"),n=require("./helpers-RzUXJQAh.js"),r=Object.entries,i=Object.hasOwn;function a(e,n,a){if(e===void 0||a.length===0)return e;let o,s=!1;for(let[c,l]of r(e)){if(i(n,c)&&n[c]!==void 0&&a.includes(c)){s=!0;continue}o??={},t.s(o,c,l)}return o===void 0?s?void 0:e:o}function o(t,n,i){for(let[a,o]of r(t))e._(i,a,o,n(a),"this route's `defaultParams`","Move it to `defaultSearch`")}const s=Object.entries,c=Object.freeze;function l(e,n,r){let i,a=!1;for(let[o,c]of s(e))n.includes(o)?(i??={},t.s(i,o,c)):(a=!0,r?.(o));return a?c(i??t.f):e}function u(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=u(t,o);o.children.push(e)}return o}function d(e,t,n){let r=u({name:e,path:t},null);for(let e of n){let t=u(e,r);r.children.push(t)}return r}const f=/[^\w!$'()*+,.:;|~-]/gu,p=/[^\w!$'()*+,.:;|~-]/u,m=/[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?<![\uD800-\uDBFF])[\uDC00-\uDFFF]/g,h=e=>t=>{try{return e(t)}catch{return e(t.replaceAll(m,`�`))}},g=h(e=>e.replaceAll(f,e=>encodeURIComponent(e))),_={default:e=>p.test(e)?g(e):e,uri:h(encodeURI),uriComponent:h(encodeURIComponent),none:e=>e},v={default:decodeURIComponent,uri:decodeURI,uriComponent:decodeURIComponent,none:e=>e},y=(e,t)=>{let n=_[t],r=String(e).split(`/`),i=n(r[0]);for(let e=1;e<r.length;e++)i+=`/`+n(r[e]);return i},b=Object.freeze(Object.create(null));function x(){return{staticChildren:b,hasChildren:!1,paramChild:void 0,splatChild:void 0,route:void 0,slashChildRoute:void 0}}function S(e){return e.length>1&&e.endsWith(`/`)?e.slice(0,-1):e}function ee(e,t){return e===``?t:t===``?e:e.endsWith(`/`)&&t.startsWith(`/`)?e+t.slice(1):e+t}function C(e){return e>=48&&e<=57||e>=65&&e<=70||e>=97&&e<=102}function te(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(!C(n)||!C(r))return!1;t+=3}else t++;return!0}const ne=Object.freeze([]),re=Object.freeze(new Set),ie=Object.freeze([]),ae=Object.freeze({}),oe=Object.freeze({}),se=Object.freeze({});function ce(e,t){let n=e.kind===`splat`;return{paramName:e.name,encoder:n?e=>y(e,t):_[t]}}function le(t,n,r,i){let a=new Set(i);for(let e of n)for(let t of e.paramMeta.urlParams)a.add(t);if(a.size===0)return{buildStaticParts:[t],buildParamSlots:ie};let o=[],s=[],c=``,l=e.g(t),u=l.length-1;for(let[t,n]of l.entries()){let i=e.h(n);if(`error`in i||i.kind!==`splat`||t===u){if(t>0&&(c+=`/`),`error`in i||i.kind===`static`){c+=n;continue}o.push(c),c=``,s.push(ce(i,r))}}return o.push(c),{buildStaticParts:o,buildParamSlots:s}}function ue(e,t,n){throw Error(`[router] 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 de(){throw Error(`[router] Empty parameter name: a ':'/'*' marker must be followed by a name (e.g. ':id', '*rest'), and a segment cannot end in a bare '?'.`)}function fe(e){throw Error(`[router] Fused parameter marker in segment "${e}": a ':'/'*' marker must begin a segment — write 'a/:b', not 'a:b'.`)}function pe(e){throw Error(`[router] Trailing parameter marker in segment "${e}": a param name cannot end in a bare ':' or '*'. Drop the stray marker.`)}function me(e){throw Error(`[router] Optional params are not supported: "${e}" — declare two sibling routes instead, one with the segment and one without.`)}function he(e){throw Error(`[router] 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 ge(e){throw Error(`[router] 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 _e(e,t){switch(e){case`name-less`:return de();case`trailing-marker`:return pe(t);case`fused-marker`:return fe(t);case`optional-removed`:return me(t);case`constraint-removed`:return he(t)}}function ve(e,t){let n=new Set,r=``;for(let e of t){if(n.has(e)){r=e;break}n.add(e)}throw Error(`[router] Duplicate parameter name '${r}' in route "${e}": a name must be unique within a route — the second position overwrites the first. Rename one.`)}function ye(e,t){throw Error(`[router] Invalid query-param declaration "${t}" in route "${e}": a query-param name cannot contain '<' or '>'. Rename it.`)}function be(e){throw Error(`[router] Double slashes are not allowed in path "${e}": the route would build a URL its own matcher refuses. Remove the empty segment.`)}function xe(e,t){throw Error(`[router] Duplicate route path: routes "${e}" and "${t}" resolve to the same URL — the later would shadow the earlier. Give them distinct paths.`)}function Se(e,t){throw Error(`[router] 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 Ce(e,t){return e.paramChild?e.paramChild.name!==t&&ue(e.paramChild.name,t,`:`):e.paramChild={node:x(),name:t},e.paramChild.node}function we(e,t){return e.splatChild?e.splatChild.name!==t&&ue(e.splatChild.name,t,`*`):e.splatChild={node:x(),name:t},e.splatChild.node}const Te=Object.create;function Ee(e,t){e.route!==void 0&&e.route!==t&&xe(e.route.name,t.name),e.route=t}function De(e){for(let t=0;t<e.length;t++)if(e.charCodeAt(t)>=128)return!0;return!1}function Oe(e,t,n){let r=S(n);if(r===`/`){Ee(e.root,t);return}ke(e,e.root,r,1,t)}function ke(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=Ne(e,t,s),r=o+1}Ee(t,i)}function Ae(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(`*`)&&Se(t.name,n);let a=je(e,n);a.slashChildRoute=t}function je(e,t){return Me(e,e.root,t)}function Me(e,t,n){let r=S(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=Ne(e,i,s),a=n+1}return i}function Ne(t,n,r){let i=e.h(r);if(`error`in i&&de(),i.kind===`splat`){let e=we(n,i.name);return n.hasChildren=!0,e}if(i.kind===`param`){let e=Ce(n,i.name);return n.hasChildren=!0,e}De(r)&&ge(r);let a=t.options.caseSensitive?r:r.toLowerCase();return a in n.staticChildren||(n.staticChildren===b&&(n.staticChildren=Te(null)),n.staticChildren[a]=x(),n.hasChildren=!0),n.staticChildren[a]}const w=Object.freeze,Pe=Object.hasOwn;function Fe(t){let n=e.g(t);for(let[e,r]of n.entries())r===``&&e>0&&e<n.length-1&&be(t)}function Ie(t){for(let n of e.g(t)){let t=e.h(n);`error`in t&&_e(t.error,n)}}function Le(t,n,r,i,a){let o=n.fullName===``;o||i.push(n);let s=n.absolute,c=n.paramMeta===e.f?n.path:n.paramMeta.pathPattern,l=s&&c.startsWith(`~`)?c.slice(1):c,u=s?l:c;Fe(n.path),Ie(u);let d=u,f=s?d:ee(r,d),p=o?a:Re(t,n,f,s?``:r,i,a);for(let e of n.children.values())Le(t,e,f,i,p);o||i.pop()}function Re(e,t,n,r,i,a){let o=Ue(n,r),s=w([...i]),c=ze(s),l=S(n),u=w(We(e.rootQueryParams,i)),{buildStaticParts:d,buildParamSlots:f}=le(o?S(r):l,o?i.slice(0,-1):i,e.options.urlParamsEncoding,e.rootUrlParams),p=f.map(e=>e.paramName),m=p.length===0?re:new Set(p);m.size!==p.length&&ve(t.fullName,p),Ge(t.fullName,u);let h={name:t.fullName,parent:a,matchSegments:s,meta:c,declaredQueryParams:u,declaredQueryParamsSet:u.length===0?re: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=w({segments:h.matchSegments,params:ae,search:oe,meta:h.meta})),e.routesByName.set(t.fullName,h),o?Ve(e,h,r):He(e,h,n,l,t),h}function ze(e){let n;for(let r of e)Be(r.paramTypeMap)&&(n??=t.a(),n[r.fullName]=r.paramTypeMap);return n===void 0?se:w(t.r(t.o(n)))}function Be(e){for(let t in e)if(Pe(e,t))return!0;return!1}function Ve(e,t,n){Ae(e,t,n);let r=S(n),i=e.options.caseSensitive?r:r.toLowerCase();e.staticCache.has(i)&&e.staticCache.set(i,t)}function He(e,t,n,r,i){if(Oe(e,t,n),i.paramMeta.urlParams.length===0){let n=e.options.caseSensitive?r:r.toLowerCase();e.staticCache.set(n,t)}}function Ue(e,t){return S(e)===S(t)}function We(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?ne:n}function Ge(t,n){for(let r of n)e.p.test(r)&&ye(t,r)}const Ke=Symbol.for(`real-router.searchParams.configFault`),qe=Object.hasOwn,Je=Object.keys,Ye=Object.getOwnPropertyDescriptor;function Xe(e){try{return Ye(e,Ke)?.configurable===!1}catch{return!1}}function Ze(e){return typeof e==`string`?e:typeof e==`object`?JSON.stringify(e):String(e)}const Qe=Object.freeze({});function $e(e,t){return e===`strict`?t?`always`:`never`:e}var et=class{get options(){return this.#e}#e;#t=x();#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=qe(_,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:v[this.#e.urlParamsEncoding]}registerTree(e){this.#a=e.paramMeta.queryParams,Le({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(`[router.buildPath] '${e}' is not defined`);let a=this.#l(i,t),o=this.#u(a,$e(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&&qe(t,a.paramName)?t[a.paramName]:void 0;if(r==null)throw Error(`[router.buildPath] Missing required param '${a.paramName}'`);if(r===``)throw Error(`[router.buildPath] Missing required param '${a.paramName}' (empty string)`);let o=a.encoder(Ze(r));i+=o+n[e+1]}return i}#u(e,t){return t===`always`&&!e.endsWith(`/`)?`${e}/`:t===`never`&&e!==`/`&&e.endsWith(`/`)?e.slice(0,-1):e}#d(e,n,r){if(!n||e.declaredQueryParams.length===0&&r!==`loose`)return``;let i={},a=!1;for(let r of e.declaredQueryParams)qe(n,r)&&(t.s(i,r,n[r]),a=!0);if(r===`loose`)for(let r of Je(n))e.declaredQueryParamsSet.has(r)||e.buildParamNamesSet.has(r)||(t.s(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=S(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=Qe;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(Xe(e))throw e;return}if(this.#e.strictQueryParams){let t=e.declaredQueryParamsSet;for(let e of Je(n))if(!t.has(e))return}return n}#g(e,t){return(e.length>1&&e.endsWith(`/`))===t.hasTrailingSlash}#_(e,t){return e.length===1?this.#t.slashChildRoute??this.#t.route:this.#v(this.#t,e,1,t)}#v(e,n,r,i){let a=e,o=n.length,s=this.#s;for(;r<=o;){let e=n.indexOf(`/`,r),c=e===-1?o:e,l=n.slice(r,c),u=s?l:l.toLowerCase(),d;if(u in a.staticChildren){let e=a.staticChildren[u];if(a.splatChild!==void 0){let o={},s=this.#v(e,n,c+1,o);return s===void 0?this.#y(a.splatChild,n,r,i):(t.i(i,o),s)}d=e}else if(a.paramChild){let e=a.paramChild;if(a.splatChild!==void 0){let o={[e.name]:l},s=this.#v(e.node,n,c+1,o);return s===void 0?this.#y(a.splatChild,n,r,i):(t.i(i,o),s)}d=e.node,t.s(i,e.name,l)}else if(a.splatChild)return this.#y(a.splatChild,n,r,i);else return;a=d,r=c+1}return a.slashChildRoute??a.route}#y(e,n,r,i){let a=e.node;if(!a.hasChildren)return t.s(i,e.name,n.slice(r)),a.route;let o={},s=this.#v(a,n,r,o);return s?(t.i(i,o),s):(t.s(i,e.name,n.slice(r)),a.route)}#b(e){let t=this.#c;if(!t)return!0;for(let n of Je(e)){let r=e[n];if(r.includes(`%`)){if(!te(r))return!1;try{e[n]=t(r)}catch{return!1}}}return!0}};const T=Object.freeze,tt=Object.freeze(new Map),nt=Object.freeze([]);function rt(e){return e.parent?.name?`${e.parent.fullName}.${e.name}`:e.name}function it(e){let t=new Map;for(let n of e)t.set(n.name,n);return t}function at(e,t){let n=[],r=[];for(let i of e){let e=ot(i,t);n.push(e),e.absolute||r.push(e)}return{childrenMap:it(n),nonAbsoluteChildren:r}}function ot(t,n){let r=e.m(t.path),i=r.urlParams.length===0&&r.queryParams.length===0&&r.pathPattern===t.path?e.f:r,a=i.paramTypeMap,o={name:t.name,path:t.path,absolute:t.absolute,parent:n,children:void 0,paramMeta:i,nonAbsoluteChildren:void 0,fullName:``,paramTypeMap:a};if(o.fullName=rt(o),t.children.length===0)o.children=tt,o.nonAbsoluteChildren=nt;else{let{childrenMap:e,nonAbsoluteChildren:n}=at(t.children,o);o.children=e,o.nonAbsoluteChildren=n,T(o.nonAbsoluteChildren),T(o.children)}return T(a),T(i.urlParams),T(i.queryParams),T(i),T(o),o}function st(e){return ot(e,null)}function ct(e,t,n){return st(d(e,t,n))}function lt(e){let n=e.absolute?`~${e.path}`:e.path,r={name:e.name,path:n};return e.children.size>0&&t.s(r,`children`,Array.from(e.children.values(),lt)),r}function ut(e){return Array.from(e.children.values(),lt)}const dt=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)},ft=(e,t)=>{if(e===void 0)return t.boolean.decodeUndefined();let n=t.boolean.decodeRaw(e);if(n!==null)return n;let r=dt(e),i=t.number.decode(r);return i===null?t.boolean.decodeValue(r):i},pt=/[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?<![\uD800-\uDBFF])[\uDC00-\uDFFF]/g,mt=e=>{try{return encodeURIComponent(e)}catch(t){if(!(t instanceof URIError))throw t;return encodeURIComponent(String(e).replaceAll(pt,`�`))}},ht=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 mt(e)},gt=(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}=${ht(e)}`);return a.join(`&`)},_t={none:{encodeArray:(e,t,n)=>gt(e,t,``,n)},brackets:{encodeArray:(e,t,n)=>gt(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}=${ht(a)}`)}return r.join(`&`)},indexed:!0},comma:{encodeArray:(e,t)=>{let n=[];for(let e of t)e!==null&&n.push(ht(e));return n.length===0?``:`${e}=${n.join(`,`)}`},decodeValue:e=>e.includes(`,`)?e.split(`,`):null}},vt={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}},yt={default:{encode:e=>e},hidden:{encode:()=>``}},bt={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}},xt=Object.defineProperty,St=Object.keys,Ct=Object.hasOwn,wt=Symbol.for(`real-router.searchParams.configFault`),E=(e,t,n)=>{let r=typeof t==`string`?t:String(t);if(!Ct(e,r)){let t=TypeError(`[router.constructor] Invalid "queryParams.${n}": "${r}" — expected ${St(e).map(e=>`"${e}"`).join(` | `)}`);throw xt(t,wt,{value:!0}),t}return e[r]},Tt=(e,t,n,r)=>({boolean:E(vt,t,`booleanFormat`),null:E(yt,n,`nullFormat`),number:E(bt,r,`numberFormat`),array:E(_t,e,`arrayFormat`)}),Et=Object.freeze({boolean:vt.auto,null:yt.default,number:bt.auto,array:_t.none}),D=Object.freeze({arrayFormat:`none`,booleanFormat:`auto`,nullFormat:`default`,numberFormat:`auto`}),Dt=Object.freeze({...D,strategies:Et}),Ot=e=>{if(!e||e.arrayFormat===void 0&&e.booleanFormat===void 0&&e.nullFormat===void 0&&e.numberFormat===void 0)return Dt;let t=e.arrayFormat??D.arrayFormat,n=e.booleanFormat??D.booleanFormat,r=e.nullFormat??D.nullFormat,i=e.numberFormat??D.numberFormat;return{arrayFormat:t,booleanFormat:n,nullFormat:r,numberFormat:i,strategies:Tt(t,n,r,i)}},O=e=>mt(e),kt=(e,t,n)=>{let r=O(e);switch(typeof t){case`string`:case`number`:return`${r}=${O(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}=${O(t)}`;default:return`${r}=${O(t)}`}},At=Object.hasOwn,jt=Object.keys;function Mt(e,n,r){t.s(e,n,r)}function Nt(e,t,n,r){if(!At(e,t)){Mt(e,t,r?[n]:n);return}let i=e[t];Array.isArray(i)?i.push(n):Mt(e,t,[i,n])}function Pt(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 Ft(e,t,n){let{searchPart:r,nameEnd:i,nameSourceEnd:a,rawValue:o,decodedName:s}=e,c=Pt(r,i,a);if(c===null)return!1;let l=ft(o,t),u=n.get(s);return u===void 0?n.set(s,[[c,l]]):u.push([c,l]),!0}function It(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=dt(e.slice(t,l));if(!(o!==void 0&&u&&Ft({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)Nt(r,d,ft(t,i),!0);return}}Nt(r,d,ft(s,i),u)}}const Lt=(e,t)=>{if(e===``||e===`?`)return{};let n={};return Rt(e,n,t.strategies),n};function Rt(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)),It(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]),Mt(t,e,n.map(e=>e[1]))}const zt=(e,t)=>{let n=jt(e);if(n.length===0)return``;let r=[];for(let i of n){let n=e[i];if(n===void 0)continue;let a=kt(i,n,t);a&&r.push(a)}return r.join(`&`)};function Bt(e){let t=e?.queryParams,n=Ot(t);return new et({...e?.caseSensitive!==void 0&&{caseSensitive:e.caseSensitive},...e?.strictTrailingSlash!==void 0&&{strictTrailingSlash:e.strictTrailingSlash},...e?.strictQueryParams!==void 0&&{strictQueryParams:e.strictQueryParams},...e?.urlParamsEncoding!==void 0&&{urlParamsEncoding:e.urlParamsEncoding},parseQueryString:e=>Lt(e,n),buildQueryString:e=>zt(e,n)})}const Vt=Object.keys,Ht=Object.values,Ut=Object.hasOwn,Wt=Object.getOwnPropertyDescriptor,Gt=Object.getPrototypeOf,Kt=Object,qt=new Set(Ht(t._));function Jt(e){if(!qt.has(e))throw TypeError(`[router.addEventListener] Invalid event name: ${String(e)}. Must be one of: ${[...qt].join(`, `)}`)}function Yt(e){if(typeof e!=`function`)throw TypeError(`[router.addEventListener] callback must be a function, got ${typeof e}`)}function Xt(e){if(typeof e!=`function`)throw TypeError(`[router.subscribeChanges] Expected a function`)}function Zt(t,n){if(typeof t!=`string`||!Ut(e.t,t))throw TypeError(`[router.addInterceptor] Invalid method: ${typeof t==`string`?`"${t}"`:typeof t}. Must be one of: ${Vt(e.t).join(`, `)}`);if(typeof n!=`function`)throw TypeError(`[router.addInterceptor] interceptor must be a function, got ${typeof n}`)}function Qt(e,t){if(typeof e!=`string`)throw TypeError(`[router.${t}] Route name must be a string, got ${typeof e}`)}function $t(e){if(!e||typeof e!=`object`||Array.isArray(e))return!1;let t=Gt(e);return t===null||t.constructor===Kt}function en(e){if(!$t(e))throw TypeError(`dependencies must be a plain object`)}function tn(e){return e===null?`null`:typeof e==`object`?`a non-plain object`:typeof e}function nn(e){if(!$t(e))throw TypeError(`[router.extendRouter] extensions must be a plain object, got ${tn(e)}`)}function rn(e,t){en(e);let n=e,r=[];for(let e of Vt(n)){if(Wt(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 an(n){let r=[];for(let i of n){let n=i;if(typeof n!=`object`||!n||Array.isArray(n))throw TypeError(`route must be a non-array object`);e.l(n,`addRoute`);let a={...n},o=a.children;o&&t.s(a,`children`,an(o)),r.push(a)}return r}function on(e,t){if(t)for(let n of e){t.routes.guardRouteCallbacks(n),t.routes.guardNoAsyncCallbacks(n);let e=n.children;e&&on(e,t)}}const sn=new Set([`all`,`warn-error`,`error-only`,`none`]);function cn(e){return typeof e==`string`&&sn.has(e)}function ln(e){return typeof e==`string`?`"${e}"`:typeof e==`object`?JSON.stringify(e):String(e)}function un(e){for(let t of Vt(e))if(t!==`level`&&t!==`callback`&&t!==`callbackIgnoresLevel`)throw TypeError(`Unknown logger config property: "${t}"`)}function dn(e){if(!Ut(e,`level`))return;let t=e.level;if(t!==void 0){if(!cn(t))throw TypeError(`Invalid logger level: ${ln(t)}. Expected: "all" | "warn-error" | "error-only" | "none"`);return t}}function fn(e){if(!Ut(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 pn(e){if(typeof e!=`object`||!e)throw TypeError(`Logger config must be an object`);let n=e;un(n);let r=t.a(),i=dn(n);if(i!==void 0&&(r.level=i),Ut(n,`callback`)){let e=n.callback;if(e!==void 0&&typeof e!=`function`)throw TypeError(`Logger callback must be a function, got ${typeof e}`);r.callback=e}let a=fn(n);return a!==void 0&&(r.callbackIgnoresLevel=a),r}const mn=Object.create;function hn(e,t,n){e[t]=n}function gn(e,t){return e.dependencies[t]}function _n(e){e.dependencies=mn(null)}function vn(e){return n.s({...e.dependencies})}function yn(e,t){let n=mn(null),r=e,i=n;return rn(r,(e,t)=>{hn(i,e,t)}),{dependencies:n,limits:t}}const k={defaultRoute:``,defaultParams:{},defaultSearch:{},trailingSlash:`preserve`,caseSensitive:!0,queryParamsMode:`loose`,queryParams:D,urlParamsEncoding:`default`,allowNotFound:!0,rewritePathOnMatch:!0},bn=[`strict`,`never`,`always`,`preserve`],xn=[`default`,`strict`,`loose`];function Sn(e){return e!==void 0&&bn.includes(e)?e:k.trailingSlash}function Cn(e){return e!==void 0&&xn.includes(e)?e:k.queryParamsMode}function wn(e){if(!e||typeof e!=`object`||Array.isArray(e))throw TypeError(`[router.constructor] options must be a plain object`)}const Tn=Object.freeze;var En=class{#e;constructor(e={}){this.#e=Tn(n.s({...k,...e}))}static validateOptionsIsObject(e){wn(e)}get(){return this.#e}};function Dn(e,t){return typeof e==`function`?e(t):e}const On=Object.keys;function kn(e,t,n,r,i){let a=e.pathNames(t);if(a!==void 0)for(let e of On(n))!r.includes(e)&&!a.includes(e)&&i(t,e)}function A(e,r,i,o,s){let c=String(r),u=s?.resolveForward===!1?{name:c,params:i,search:o}:e.resolveForward(c,i,o),d=u.name,f=n.f(u.params,t.d),p=s?.diagnoseUndeclared===!0?e.reportUndeclaredParamKey:void 0;p&&kn(e,d,f,e.queryNames(d),p);let m=e.defaultParams(d),h=e.defaultSearch(d);if((u.search===void 0||u.search===t.f)&&m===void 0&&h===void 0)return{name:d,path:f,query:t.f};let g=e.queryNames(d),_=e.reportDroppedQueryKey,v=s?.resolveForward===!1?a(h,f,g):h,y=n.f(u.search,t.f),b=n.d(v,y);return{name:d,path:n.u(m,f),query:e.admitsUndeclaredQuery()?b:l(b,e.printedQueryNames(d),t=>{_!==void 0&&e.pathNames(d)!==void 0&&_(d,t)})}}function j(e,t){return t.buildPath(e.name,e.path,e.query)}const An=Object.freeze;function jn(e,n){let r={name:e.name,params:e.path,search:e.query,path:n,context:{},transition:t.l};return An(r.params),r}function M(e,t){return n.c(jn(e,t))}function Mn(e,t){return jn(e,t)}var Nn=class{#e;#t;get(){return this.#e.current}getPrevious(){return this.#e.previous}setContext(e){this.#e=e}setDependencies(e){this.#t=e}makeState(n,r,i,a){let o=this.#t.port(),s=A(o,n,r??t.d,i,{resolveForward:!1});return e.v(`makeState`,s.name,s.path,o.queryNames(s.name)),M(s,a??j(s,o))}areStatesEqual(e,t,r=!0){if(!e||!t)return!!e==!!t;let i=e.name;return i===t.name?r?n.g(e.params,t.params,this.#t.getUrlParams(i)):n.h(e.params,t.params)&&n.h(e.search,t.search):!1}};const Pn=Object.keys,Fn={[t.v.ROUTER_START]:t._.ROUTER_START,[t.v.ROUTER_STOP]:t._.ROUTER_STOP,[t.v.TRANSITION_SUCCESS]:t._.TRANSITION_SUCCESS,[t.v.TRANSITION_START]:t._.TRANSITION_START,[t.v.TRANSITION_LEAVE_APPROVE]:t._.TRANSITION_LEAVE_APPROVE,[t.v.TRANSITION_ERROR]:t._.TRANSITION_ERROR,[t.v.TRANSITION_CANCEL]:t._.TRANSITION_CANCEL},In=Pn(Fn),Ln=`router.usePlugin`;function Rn(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 zn=Object.freeze;var Bn=class e{#e=new Set;#t=new Set;#n;static validatePlugin(e){Rn(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(Ln,`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(Ln,`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(Ln,`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),zn(n);let r=[];for(let e of In)e in n&&(typeof n[e]==`function`?(r.push(this.#n.addEventListener(Fn[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 N=Object.create,Vn=()=>!0,Hn=()=>!1,Un=()=>Vn,Wn=()=>Hn;function Gn(e){return e?Un:Wn}function Kn(e,t,n){n===void 0?e.delete(t):e.set(t,n)}var qn=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=N(null),t=N(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=N(null),t=N(null),n=N(null),r=N(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`?Gn(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`?Gn(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 Kn(c,t,d),Kn(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 Jn=new Set([`name`,`path`,`children`,`canActivate`,`canDeactivate`,`forwardTo`,`encodeParams`,`decodeParams`,`defaultParams`,`defaultSearch`]),P=Object.freeze,F=Object.create,Yn=Object.hasOwn,I=Object.keys;function Xn(){return{decoders:F(null),encoders:F(null),defaultParams:F(null),defaultSearch:F(null),forwardMap:F(null),forwardFnMap:F(null)}}function Zn(e){return I(e.forwardMap).length>0||I(e.forwardFnMap).length>0}function Qn(e,t){for(let n of I(t))Object.assign(e[n],t[n])}function $n(e,t){for(let r in e)if(Yn(t,r)&&!n.a(e[r],t[r]))return!1;return!0}function er(e){return typeof e==`string`?e:`<non-string>`}function tr(e,t){for(let r in e)if(!n.a(e[r],t[r]))return!1;return!0}function nr(e){let n={name:e.name,path:e.path};return e.children&&t.s(n,`children`,e.children.map(e=>nr(e))),n}function rr(e,t,n){if(n.add(t),e.children)for(let r of e.children)rr(r,`${t}.${r.name}`,n)}function ir(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 rr(i,a,t),t}if(i.children&&t.startsWith(`${a}.`)){let e=ir(i.children,t,a);if(e)return e}}}function ar(e,t){for(let n of I(e))t(n)&&delete e[n]}function or(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 sr(e){let t=[];for(let n of e)for(let e of n.paramMeta.urlParams)t.push(e);return t}const cr=P([]);function lr(e,t,n){let r=n.get(t);if(r!==void 0)return r;let i=e.getSegmentsByName(t);if(!i)return cr;let a=P(sr(i));return n.set(t,a),a}function ur(e,t){return lr(e.matcher,t,e.urlParamsCache)}const dr=P([]);function fr(e,t,n,r){let i=r.get(t);if(i!==void 0)return i;let a=e.getDeclaredQueryParams(t);if(!a)return dr;let o=lr(e,t,n),s=P(a.filter(e=>!o.includes(e)));return r.set(t,s),s}function pr(e,t){return e.getDeclaredQueryParams(t)??dr}function mr(e,t){return fr(e.matcher,t,e.urlParamsCache,e.queryParamsCache)}function hr(e,t,n){let r=new Map,i=new Map;o(t.defaultParams,t=>fr(e,t,r,i),n)}function gr(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 _r=Object.freeze,L=Object.create,vr=Object.entries,R=Object.keys,yr=Object.defineProperty,br=Object.fromEntries;function xr(e,t,n){let r=ct(``,t,e),i=Bt(n);return i.registerTree(r),{tree:r,matcher:i}}function Sr(e,t=e.definitions){let n=xr(t,e.rootPath,e.matcherOptions);e.tree=n.tree,e.matcher=n.matcher,e.urlParamsCache.clear(),e.queryParamsCache.clear()}function Cr(e,t){let n=xr(e.definitions,t,e.matcherOptions);hr(n.matcher,e.config,`setRootPath`),e.rootPath=t,e.tree=n.tree,e.matcher=n.matcher,e.urlParamsCache.clear(),e.queryParamsCache.clear()}function wr(e,t){Sr(e,t),z(e,Dr(e.config))}function Tr(e){Er(e),Sr(e,[])}function Er(e){Object.assign(e.config,Xn()),z(e,L(null)),e.routeCustomFields=L(null)}function z(e,t){e.resolvedForwardMap=t,e.hasAnyForward=Zn(e.config)}function Dr(e){let t=L(null);for(let n of R(e.forwardMap))t[n]=gr(n,e.forwardMap);return t}function Or(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 kr(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}".`)}Or(e.forwardTo,t),typeof e.forwardTo==`string`?n.forwardMap[t]=e.forwardTo:n.forwardFnMap[t]=e.forwardTo}function Ar(e,t,r,i,a,o,s){let c=br(vr(e).filter(([e])=>!Jn.has(e)));if(R(c).length>0&&(i[t]=_r(c)),e.canActivate&&a.set(t,e.canActivate),e.canDeactivate&&o.set(t,e.canDeactivate),e.forwardTo&&kr(e,t,r,s),e.decodeParams){let n=e.decodeParams;r.decoders[t]=e=>n(e)??e}if(e.encodeParams){let n=e.encodeParams;r.encoders[t]=e=>n(e)??e}e.defaultParams&&(r.defaultParams[t]=n.o(`defaultParams`,e.defaultParams)),e.defaultSearch&&(r.defaultSearch[t]=n.o(`defaultSearch`,e.defaultSearch))}function jr(e,t,n,r,i,a,o=``){for(let s of e){let e=o?`${o}.${s.name}`:s.name;Ar(s,e,t,n,r,i,a),s.children&&jr(s.children,t,n,r,i,a,e)}}function Mr(e){let t=Xn();return Qn(t,e),t}function Nr(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]:Nr(n,t,i)}})}function Pr(e,t,n){for(let r of e){let e=t?`${t}.${r.name}`:r.name;n(e),r.children&&Pr(r.children,e,n)}}function Fr(e,t,n){let r=new Set;Pr(e,t,e=>{if(r.has(e))throw Error(`[router.${n}] Duplicate route "${e}" in batch`);r.add(e)})}function Ir(e,t){if(Qt(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 B(e,t){for(let n of e)Ir(n.name,t),n.children&&B(n.children,t)}function V(t,n){for(let r of t)e.d(r.name,n),r.children&&V(r.children,n)}function H(t,n){for(let r of t)e.u(r.name,n),r.children&&H(r.children,n)}function Lr(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 Rr(e,t,n){if(B(t,`addRoute`),V(t,`addRoute`),H(t,`addRoute`),n!==void 0&&!e.matcher.hasRoute(n))throw Error(`[router.addRoute] Parent route "${n}" does not exist`);Pr(t,n??``,t=>{if(e.matcher.hasRoute(t))throw Error(`[router.addRoute] Route "${t}" already exists`)}),Fr(t,n??``,`addRoute`),Lr(t,n??``,`addRoute`)}function zr({definitions:e,routesForHandlers:t,config:n,routeCustomFields:r,handlerParentName:i,rootPath:a,matcherOptions:o,logger:s}){let c=new Map,l=new Map;jr(t,n,r,c,l,s,i);let u=Dr(n),{tree:d,matcher:f}=xr(e,a,o);return{config:n,routeCustomFields:r,pendingCanActivate:c,pendingCanDeactivate:l,tree:d,matcher:f,resolvedForwardMap:u}}function Br(e,t,n,r){return zr({definitions:Nr(e.definitions,t.map(e=>nr(e)),n===void 0?[]:n.split(`.`)),routesForHandlers:t,config:Mr(e.config),routeCustomFields:Object.assign(L(null),e.routeCustomFields),handlerParentName:n??``,rootPath:e.rootPath,matcherOptions:e.matcherOptions,logger:r})}function Vr(e,t,n,r){return zr({definitions:e.map(e=>nr(e)),routesForHandlers:e,config:Xn(),routeCustomFields:L(null),handlerParentName:``,rootPath:t,matcherOptions:n,logger:r})}function Hr(e,t,n){let r=[];for(let[i,a]of e)r.push([i,a,t(a,n)]);return r}function Ur(e,t){return{activate:Hr(e.pendingCanActivate,t.compileGuard,`canActivate`),deactivate:Hr(e.pendingCanDeactivate,t.compileGuard,`canDeactivate`)}}function Wr(e,t,n){let r=e.depsStore,{activate:i,deactivate:a}=n??Ur(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(),z(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 U(e){return e===null?e:e||void 0}function Gr(e,t){return t==null?t:n.o(e,t)}function Kr(t,n,r,i){let{forwardTo:a,defaultParams:o,defaultSearch:s,decodeParams:c,encodeParams:l,canActivate:u,canDeactivate:d}=i,f=U(a),p=Gr(`defaultParams`,U(o)),m=Gr(`defaultSearch`,U(s)),h=U(c),g=U(l),_=U(u),v=U(d);p!=null&&e._(`updateRoute`,r,p,mr(t,r),"this route's `defaultParams`","Move it to `defaultSearch`");let y=f===void 0?void 0:qr(r,f,t.config),b=Jr(t,r,i),x=_==null?void 0:n.compileGuardFactory(_,`canActivate`),S=v==null?void 0:n.compileGuardFactory(v,`canDeactivate`);return n.preflightHandlerLimit(x===void 0?[]:[r],S===void 0?[]:[r],!1),b!==void 0&&(R(b).length>0?t.routeCustomFields[r]=_r(b):delete t.routeCustomFields[r]),y!==void 0&&(t.config.forwardMap=y.forwardMap,t.config.forwardFnMap=y.forwardFnMap,z(t,y.resolved)),Xr(t,r,{defaultParams:p,defaultSearch:m,decodeParams:h,encodeParams:g}),Zr(n,`activate`,r,_,x),Zr(n,`deactivate`,r,v,S),{forwardTo:f,defaultParams:p,defaultSearch:m,decodeParams:h,encodeParams:g}}function qr(e,t,n){Or(t,e);let r=Object.assign(L(null),n.forwardMap),i=Object.assign(L(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:Dr({...n,forwardMap:r})}}function Jr(e,n,r){let i;for(let a of R(r)){if(Jn.has(a))continue;let o=r[a];o!==void 0&&(i??={...e.routeCustomFields[n]},o===null?delete i[a]:t.s(i,a,o))}return i}function Yr(e,t,n){n!==void 0&&(n===null?delete e[t]:e[t]=n)}function Xr(e,t,n){if(Yr(e.config.defaultParams,t,n.defaultParams),Yr(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 Zr(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 Qr(e,t,n){let r=e;B(r,`addRoute`),V(r,`constructor`),H(r,`constructor`),Fr(r,``,`addRoute`);let i=Vr(r,``,t,n),a={get definitions(){return ut(a.tree)},config:i.config,tree:i.tree,matcher:i.matcher,urlParamsCache:new Map,queryParamsCache:new Map,resolvedForwardMap:i.resolvedForwardMap,hasAnyForward:Zn(i.config),routeCustomFields:i.routeCustomFields,rootPath:``,matcherOptions:t,depsStore:void 0,lifecycleNamespace:void 0,revalidating:!1,pendingCanActivate:i.pendingCanActivate,pendingCanDeactivate:i.pendingCanDeactivate};return hr(a.matcher,a.config,`addRoute`),yr(a,`matcherOptions`,{writable:!1,configurable:!1}),a}const $r=Object.freeze,ei=Object.keys,ti=[];Object.freeze(ti);function ni(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 ri=new Set([`string`,`number`,`boolean`]);function ii(e){return ri.has(typeof e)}function ai(e,t,n,r){let i=t[e];if(!i||typeof i!=`object`)return!0;for(let e of ei(i)){let t=n.params[e],i=r.params[e];if(ii(t)&&ii(i)&&String(t)!==String(i))return!1}return!0}function oi(e,t,n,r,i,a){for(let o=0;o<a;o++){let a=r[o];if(a!==i[o]||!ai(a,e,t,n))return o}return a}const si=new Map;function W(e){let t=si.get(e);if(t)return t;let n=ci(e);return $r(n),si.set(e,n),n}function ci(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]:ni(e)}let li,ui,G=null,di,fi,pi=null;function mi(e,t,n){if(!t)return{intersection:``,toActivate:W(e.name),toDeactivate:ti};let r=n(e.name),i=n(t.name);if(!r&&!i)return{intersection:``,toActivate:W(e.name),toDeactivate:W(t.name)};let a=W(e.name),o=W(t.name),s=Math.min(o.length,a.length),c=oi(r??i,e,t,a,o,s),l;if(c>=o.length)l=ti;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 K(e,t,n){if(G!==null&&e===li&&t===ui)return G;if(pi!==null&&e===di&&t===fi)return pi;let r=mi(e,t,n);return di=li,fi=ui,pi=G,li=e,ui=t,G=r,r}const hi=Object.freeze,q=Object.hasOwn;function gi(e,t){return{name:t??e.segments.at(-1).fullName,params:e.params,search:e.search,meta:e.meta}}function _i(e){let t=Sn(e);return t===`preserve`?void 0:t}var vi=class{#e;#t;#n;get#r(){return this.#e.depsStore}constructor(e,t,n){this.#e=Qr(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}=K(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){Cr(this.#e,e)}hasRoute(e){return this.#e.matcher.hasRoute(e)}clearRoutes(){Tr(this.#e)}buildPath(e,n,r,i){if(e===t.h.UNKNOWN_ROUTE)return typeof n.path==`string`?n.path:``;let a=this.#e.config.encoders[e];if(typeof a==`function`){let t=a({params:{...n},search:{...r}});return this.#e.matcher.buildPath(e,t.params,t.search,this.#c(i))}return this.#e.matcher.buildPath(e,n,r,this.#c(i))}buildPathFromIntent(e,r,i){return e===t.h.UNKNOWN_ROUTE?this.#r.port.buildPath(e,n.f(r,t.d),i??t.f):j(A(this.#r.port,e,r,i,{resolveForward:!1}),this.#r.port)}matchPath(t,r){let i=r,a=this.#e.matcher.match(t);if(!a)return;let o=gi(a),{name:s}=o,c=n._(o.params),l=n._(o.search),u=this.#e.config.decoders[s],d;if(typeof u==`function`){d=u({params:c,search:l});let t=d.params;d={params:t,search:d.search},this.#r.getValidator()?.routes.validateStateBuilderArgs(s,t,`matchPath`),e._(`matchPath`,s,t,this.getQueryParams(s),"the `params` returned by this route's `decodeParams`")}else d={params:c,search:l};let f=A(this.#r.port,s,d.params,d.search),p=f.name;e.v(`matchPath`,f.name,f.path,this.getQueryParams(f.name));let m=f.path,h=f.query,g=t;if(i.rewritePathOnMatch){let e=this.#e.config.encoders[p],n=typeof e==`function`?e({params:m,search:h}):{params:m,search:h},r=i.trailingSlash;try{g=this.#e.matcher.buildPath(p,n.params,n.search,{trailingSlash:_i(r),queryParamsMode:Cn(i.queryParamsMode)}),Sn(r)===`preserve`&&(g=or(t,g))}catch{g=t}}return M(f,g)}forwardState(e,n,r){let i=r??t.f;if(q(this.#e.config.forwardFnMap,e)){let t=this.#e.config.forwardFnMap[e],{target:r,chain:a,params:o}=this.#l(e,t,n);return this.#s(r,a,o,i)}let a=this.#e.resolvedForwardMap[e]??e;if(a!==e&&q(this.#e.config.forwardFnMap,a)){let t=this.#e.config.forwardFnMap[a],{target:r,chain:o,params:s}=this.#l(a,t,n);return this.#s(r,[...this.#o(e),...o],s,i)}return a===e?{name:e,params:n,search:i}:this.#s(a,this.#o(e),n,i)}buildStateResolved(e,t){let n=this.#e.matcher.getSegmentsByName(e);if(n)return gi({segments:n,params:t,search:{},meta:this.#e.matcher.getMetaByName(e)},e)}isActiveRoute(e,n=t.d,r=t.f,i=!1,a=!0){if(this.#i(e,n,r,i,a))return!0;if(!this.#e.hasAnyForward)return!1;let o;try{o=typeof e==`string`?e:String(e)}catch{return!1}if(!q(this.#e.config.forwardMap,o)&&!q(this.#e.config.forwardFnMap,o))return!1;let s;try{s=this.forwardState(e,n,r)}catch(t){return this.#r.logger.warn(`router.isActiveRoute`,`Dynamic forwardTo of route "${er(e)}" threw while resolving the active-link destination; treating the link as inactive.`,t),!1}return this.#i(s.name,s.params,s.search,i,a)}getMetaForState(e){return this.#e.matcher.hasRoute(e)?this.#e.matcher.getMetaByName(e):void 0}getUrlParams(e){return ur(this.#e,e)}getQueryParams(e){return mr(this.#e,e)}getPrintedQueryParams(e){return pr(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 "${er(e)}" threw while resolving the active-link state; treating the link as inactive.`,t),!1}}#a(e,t,r,i,a){let o=this.#r.getState();if(!o)return!1;let s=o.name;if(s!==e&&!s.startsWith(`${e}.`)&&!e.startsWith(`${s}.`))return!1;let c=A(this.#r.port,e,t,r,{resolveForward:!1});if(i||s===e){let e=Mn(c,``);return!this.#r.areStatesEqual(e,o,!0)||!$n(c.path,o.params)?!1:a||n.h(e.search,o.search)}return!(!s.startsWith(`${e}.`)||!$n(c.path,o.params)||!a&&!tr(c.query,o.search))}#o(e){let t=[],n=e;for(;q(this.#e.config.forwardMap,n);)t.push(n),n=this.#e.config.forwardMap[n];return t}#s(e,r,i,a){let o,s;for(let e of r)o=n.l(this.#e.config.defaultParams[e],o),s=n.l(this.#e.config.defaultSearch[e],s);return{name:e,params:n.f(n.l(o,i),t.d),search:n.f(n.l(s,a),t.f)}}#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=hi({trailingSlash:_i(e?.trailingSlash),queryParamsMode:Cn(e?.queryParamsMode)}),this.#t)}#l(e,t,r){let i=n.t(r),a=new Set([e]),o=[e],s=t(this.#r.getDependency,i),c=0;if(typeof s!=`string`)throw TypeError(`forwardTo callback must return a string, got ${typeof s}`);for(;c<100;){if(this.#e.matcher.getSegmentsByName(s)===void 0)throw Error(`Route "${s}" does not exist`);if(a.has(s)){let e=[...a,s].join(` → `);throw Error(`Circular forwardTo: ${e}`)}if(a.add(s),q(this.#e.config.forwardFnMap,s)){let e=this.#e.config.forwardFnMap[s];o.push(s),s=e(this.#r.getDependency,i),c++;continue}let e=this.#e.config.forwardMap[s];if(e!==void 0){o.push(s),s=e,c++;continue}return{target:s,chain:o,params:i}}throw Error(`forwardTo exceeds maximum depth of 100`)}};const yi=new t.t(t.g.ROUTER_NOT_STARTED),bi=new t.t(t.g.SAME_STATES),xi=new t.t(t.g.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(yi),Object.freeze(bi),Object.freeze(xi);const Si=Promise.reject(yi),Ci=Promise.reject(bi),wi=Promise.reject(xi);Si.catch(()=>{}),Ci.catch(()=>{}),wi.catch(()=>{});const Ti=new Set([t.g.SAME_STATES,t.g.TRANSITION_CANCELLED,t.g.ROUTER_NOT_STARTED,t.g.ROUTE_NOT_FOUND,t.g.CANNOT_ACTIVATE,t.g.CANNOT_DEACTIVATE,t.g.ROUTER_ALREADY_STARTED]);function Ei(e){return e instanceof t.t&&Ti.has(e.code)}const Di=new Set([Si,Ci,wi]),J=Object.freeze;function Oi(e){let{fromState:t,toDeactivate:n,toActivate:r,intersection:i}=e;J(n),J(r);let a={phase:`activating`,reason:`success`,segments:J({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),J(a)}function ki(e,n){let{toState:r,fromState:i,toDeactivate:a,toActivate:o}=n;if(r.name!==t.h.UNKNOWN_ROUTE&&!e.hasRoute(r.name)){let a=new t.t(t.g.ROUTE_NOT_FOUND,{routeName:r.name});throw e.sendTransitionFail(i,a,n),t.n(a)}let s=n,c={...r,transition:Oi(n)},l=J(c);n.toState=l;let u=e.canCommitTransition(s);if(!u)throw t.n(new t.t(t.g.TRANSITION_CANCELLED));for(let t of a)!o.includes(t)&&n.canDeactivateFunctions.has(t)&&e.clearCanDeactivate(t,u);return e.sendTransitionDone(s),l}const Ai=Object.entries;function ji(e){return e instanceof t.t&&e.code===t.g.TRANSITION_CANCELLED}function Mi(e){return ji(e)?e:new t.t(t.g.TRANSITION_CANCELLED,{reason:e})}function Ni(e,n,r,i){let a=n;a.code!==t.g.TRANSITION_CANCELLED&&a.code!==t.g.ROUTE_NOT_FOUND&&e.sendTransitionFail(r,a,i)}function Pi(e,n,r){if(e instanceof DOMException&&e.name===`AbortError`)throw t.n(new t.t(t.g.TRANSITION_CANCELLED));if(ji(e))throw e;Fi(e,n,r)}function Fi(e,n,r){if(e instanceof t.t){let{code:r,message:i,...a}=e.toJSON(),o=new t.t(r,{...a,message:i});throw o.setCode(n),o.stack=e.stack??``,t.n(o)}throw t.n(new t.t(n,Li(e,r)))}const Ii=new Set([`code`,`segment`,`path`,`then`]);function Li(e,n){let r={segment:n};if(e instanceof Error){let t=e.message,n=e.stack,i=`cause`in e?e.cause:void 0;return{...r,message:t,stack:n,...i!==void 0&&{cause:i}}}if(e&&typeof e==`object`){let n={};for(let[r,i]of Ai(e))r!==`__proto__`&&!Ii.has(r)&&t.s(n,r,i);return{...r,...n}}return r}async function Ri(e,n,r){let i;try{i=await e}catch(e){Pi(e,n,r);return}if(!i)throw t.n(new t.t(n,{segment:r}))}function zi(e,n,r,i,a,o,s,c,l,u){if(!l())throw t.n(new t.t(t.g.TRANSITION_CANCELLED));if(e===1){let t=u();return t===void 0?void 0:{phase:e,index:n+1,pending:t}}let d=r[n],f=i.get(d);if(!f)return;let p=!1;try{p=f(o,s,c)}catch(e){Pi(e,a,d)}let m;try{m=p.then}catch(e){Pi(e,a,d)}if(typeof m==`function`){let t=p;return{phase:e,index:n+1,pending:new Promise((e,n)=>{Reflect.apply(m,t,[e,n])})}}if(!p)throw t.n(new t.t(a,{segment:d}))}function Bi(e,n,r,i,a,o,s,c,l,u,d,f,p){let m=e===1,h=e===0;if(!m&&!(h?s:c))return;let g=h?a:o,_=m?1:g.length,v=h?r:i,y=h?t.g.CANNOT_DEACTIVATE:t.g.CANNOT_ACTIVATE;for(let t=n;t<_;t++){let n=zi(e,t,g,v,y,l,u,d,f,p);if(n!==void 0)return n}}function Vi(e,t,n,r,i,a,o,s,c,l,u,d,f){for(let p=d;p<=2;p++){let m=Bi(p,p===d?f:0,e,t,n,r,i,a,o,s,c,l,u);if(m!==void 0)return m}}async function Hi(e,n,r,i,a,o,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 Ri(p.pending,e?t.g.CANNOT_DEACTIVATE:t.g.CANNOT_ACTIVATE,(e?i:a)[p.index-1])}p=Vi(n,r,i,a,o,s,c,l,u,d,f,p.phase,p.index)}}function Ui(e,t,n,r,i,a,o,s,c,l,u){let d=Vi(e,t,n,r,i,a,o,s,c,l,u,0,0);return d===void 0?void 0:Hi(d,e,t,n,r,i,a,o,s,c,l,u)}const Wi=Object.freeze,Gi=Object.freeze([]),Ki=new Map;function qi(e,t){return t?Wi({...e,replace:!0}):e}function Ji(e,t,n,r){return!!e&&!t&&!n&&e.path===r.path}function Yi(e,t){if(e.size===0)return!1;for(let n of t)if(e.has(n))return!0;return!1}function Xi(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 Zi(e,t){t.externalSignal!==void 0&&t.cancelReason===void 0&&t.hasGuards&&e.bridgeExternalSignal(t)}function Qi(e,n,r,i,a,o,s,c,l,u){aa(e,o);let d=e.hasLeaveListeners()||e.hasPreCommitListeners(),f={toState:n,fromState:r,opts:i,suspendable:a!==void 0||d,forceDeactivate:u,toDeactivate:Gi,toActivate:Gi,intersection:``,canDeactivateFunctions:Ki,canActivateFunctions:Ki,shouldDeactivate:!1,shouldActivate:!1,hasGuards:!1,controller:void 0,cancelReason:void 0,detachExternalBridge:void 0,externalSignal:a,reload:s,replace:c,redirected:l};if(!e.startTransition(f))throw t.n(new t.t(t.g.TRANSITION_CANCELLED));return f}function $i(e,t){return e.sendLeaveApprove(t),ki(e,t)}function ea(e,n){let[r,i]=e.getLifecycleFunctions(),{toDeactivate:a,toActivate:o,intersection:s}=K(n.toState,n.fromState,t=>e.getMetaForState(t));n.canDeactivateFunctions=r,n.canActivateFunctions=i,n.toDeactivate=a,n.toActivate=o,n.intersection=s,n.shouldDeactivate=!!n.fromState&&!n.forceDeactivate&&a.length>0,n.shouldActivate=n.toState.name!==t.h.UNKNOWN_ROUTE&&o.length>0,n.hasGuards=n.shouldDeactivate&&Yi(r,a)||n.shouldActivate&&Yi(i,o)}function ta(e,r,i){let a,o;try{a=e.getState();let s=n.m(i),c=s?.aborted===!0?s:void 0;i=n.i(i);let l=n.p(i,`reload`),u=n.p(i,`force`),d=n.p(i,`replace`),f=n.p(i,`redirected`),p=n.p(i,`forceDeactivate`)===!0,m=a?.name===t.h.UNKNOWN_ROUTE&&!d,h=m||d;if(i=qi(i,m),Ji(a,l,u,r))return e.emitTransitionError(r,a,bi),Ci;let g=Qi(e,r,a,i,s,c,l,h,f,p);o=g;let _=g.externalSignal;if(_?.aborted===!0&&e.cancelNavigation(_.reason),ea(e,g),Zi(e,g),!g.hasGuards&&!g.suspendable)return $i(e,g);let{canDeactivateFunctions:v,canActivateFunctions:y,toDeactivate:b,toActivate:x,shouldDeactivate:S,shouldActivate:ee,hasGuards:C}=g,te=r;if(!C){let t=ia(e,g);if(t!==void 0)return t}if(C){let n=Xi(g),i=()=>!n.signal.aborted,o=n.signal,s=Ui(v,y,b,x,S,ee,r,a,o,i,()=>{if(e.sendLeaveApprove(g),e.hasLeaveListeners())return e.awaitLeaveListeners(te,a,o)});if(s!==void 0)return na(e,s,g,n);if(!i())throw t.n(new t.t(t.g.TRANSITION_CANCELLED))}return ki(e,g)}catch(t){let n=ra(e,t,{nav:o,fromState:a});return Promise.reject(n)}}async function na(e,n,r,i){let a=()=>!i.signal.aborted,o=r.externalSignal,s,c=!1,l,u=new Promise(e=>{if(i.signal.aborted){e();return}s=()=>{e()},i.signal.addEventListener(`abort`,s,{once:!0})});n.catch(()=>{});try{if(o?.aborted)throw t.n(new t.t(t.g.TRANSITION_CANCELLED,{reason:o.reason}));if(await Promise.race([n,u]),!a())throw t.n(new t.t(t.g.TRANSITION_CANCELLED));let i=ki(e,r);return c=!0,i}catch(t){let n=a()?t:Mi(t);throw l=n,Ni(e,n,r.fromState,r),n}finally{s&&i.signal.removeEventListener(`abort`,s),c||i.abort(l)}}function ra(e,t,n){let{nav:r}=n;if(r?.controller?.abort(t),r!==void 0){let i=e.isTransitioning()?t:Mi(t);return Ni(e,i,n.fromState,r),i}return t}function ia(e,t){let{toState:n,fromState:r}=t;if(e.hasLeaveListeners()&&Xi(t),e.sendLeaveApprove(t),e.hasLeaveListeners()){let i=Xi(t),a;try{a=e.awaitLeaveListeners(n,r,i.signal)}catch(e){throw i.abort(e),e}return a===void 0?void 0:na(e,a,t,i)}}function aa(e,n){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()),n!==void 0)throw t.n(new t.t(t.g.TRANSITION_CANCELLED,{reason:n.reason}))}const oa=Object.freeze,sa=Object.freeze([t.h.UNKNOWN_ROUTE]),ca=Object.freeze({replace:!0});function la(e,n,r){aa(e,void 0);let i=e.getState(),a=i?W(i.name).toReversed():[];oa(a);let o={deactivated:a,activated:sa,intersection:``};oa(o);let s={phase:`activating`,...i&&{from:i.name},reason:`success`,replace:!0,segments:o};oa(s);let c={name:t.h.UNKNOWN_ROUTE,params:t.d,search:t.f,path:n,transition:s,context:{}};if(oa(c),r&&i!==void 0&&!e.canDeactivateCurrent(a,c,i)){let r=new t.t(t.g.CANNOT_DEACTIVATE,{path:n,message:`[router.navigateToNotFound] a canDeactivate guard on "${i.name}" refused to leave for ${n}`});throw e.emitTransitionError(void 0,i,r),t.n(r)}return e.systemCommit(c,i,ca)}function ua(e,t){return la(e,t,!0)}function da(e,t){return la(e,t,!1)}var fa=class{#e;#t;#n=0;setDependencies(e){this.#e=e,this.#t=t=>{Ei(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 ua(this.#e,e)}revalidateToNotFound(e){return da(this.#e,e)}isPreparing(){return this.#n>0}#r(e){return e instanceof Promise&&!Di.has(e)&&e.catch(this.#t),e}#i(e,n,r,i){let a=this.#e;if(!a.canNavigate())return a.isStarting()?wi:Si;let o;this.#n++;try{o=a.buildNavigateState(e,n,r)}catch(e){return Promise.reject(e)}finally{this.#n--}if(!o){let n=t.n(new t.t(t.g.ROUTE_NOT_FOUND,{routeName:e}));return a.emitTransitionError(void 0,a.getState(),n),Promise.reject(n)}return ta(this.#e,o,i)}#a(n,r){let i=this.#e;if(!i.canNavigate())return i.isStarting()?wi:Si;let a=n.name;if(a!==t.h.UNKNOWN_ROUTE&&!i.hasRoute(a)){let e=t.n(new t.t(t.g.ROUTE_NOT_FOUND,{routeName:a}));return i.emitTransitionError(void 0,i.getState(),e),Promise.reject(e)}let o=e.y(n.params,i.getQueryParams(a));if(o!==void 0){let n=t.n(new t.t(t.g.WRONG_CHANNEL,{routeName:a,message:`[router.navigateToState] ${e.b(a,o,"`state.params`")}`}));return i.emitTransitionError(void 0,i.getState(),n),Promise.reject(n)}let s;try{s=this.#o(n,a)}catch(e){return Promise.reject(e)}return ta(this.#e,s,r)}#o(e,r){let i={name:r,params:n.n(e.params,t.d),search:n.n(e.search,t.f),path:e.path,context:{...e.context},transition:t.l};return n.c(i)}#s(e){let n=this.#e;if(!n.getOptions().defaultRoute)return Promise.reject(t.n(new t.t(t.g.ROUTE_NOT_FOUND,{message:`[router.navigateToDefault] no defaultRoute is configured — pass one to createRouter, or navigate to a route by name`})));let r,i,a;this.#n++;try{({route:r,params:i,search:a}=n.resolveDefault())}catch(e){return Promise.reject(e)}finally{this.#n--}return r?typeof r==`string`?this.#i(r,i,a,e):Promise.reject(t.n(new t.t(t.g.ROUTE_NOT_FOUND,{message:`[router.navigateToDefault] defaultRoute resolved to ${typeof r}, which cannot name a route`}))):Promise.reject(t.n(new t.t(t.g.ROUTE_NOT_FOUND,{message:`[router.navigateToDefault] defaultRoute resolved to an empty name`})))}};const pa={},ma=Object.freeze({replace:!0});function ha(e){return[e,e?.reason].some(e=>e instanceof t.t&&e.code===t.g.ROUTE_NOT_FOUND)}var ga=class{#e;setDependencies(e){this.#e=e}async start(e){let n=this.#e;if(n.isIdle())throw t.n(new t.t(t.g.TRANSITION_CANCELLED));let r=n.getOptions();if(typeof e!=`string`)throw TypeError(`[router.start] path must be a string, got ${typeof e}`);let i=n.getRootPath(),a=n.matchPath(e);if(!a&&!r.allowNotFound){let n=new t.t(t.g.ROUTE_NOT_FOUND,{path:e});throw t.n(n)}if(n.completeStart(),a!==void 0&&n.getRootPath()!==i&&(a=n.matchPath(e),!a&&!r.allowNotFound))throw t.n(new t.t(t.g.ROUTE_NOT_FOUND,{path:e}));if(a)try{return await n.navigateToState(a,ma)}catch(t){if(!r.allowNotFound||!ha(t))throw t;return n.navigateToNotFound(e)}return n.navigateToNotFound(e)}};const _a={},va=Object.create,ya=Object.entries,ba=Object.hasOwn,xa=Object.values,Sa=new WeakMap;function Ca(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 wa(e){let t=Sa.get(e);if(t!==void 0)return t;let n=e,r=va(null);for(let[e,t]of ya(n)){let n=va(null);for(let[r,i]of ya(t))i!==void 0&&(n[r]=Ca(e,r,i));r[e]=n}for(let e of xa(r))for(let t of xa(e))if(t!==void 0&&r[t.target]===void 0)throw Error(`[FSM.constructor] state "${t.target}" is not declared in config.transitions`);return Sa.set(e,r),r}var Ta=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=wa(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(!ba(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 Y={IDLE:`IDLE`,STARTING:`STARTING`,READY:`READY`,TRANSITION_STARTED:`TRANSITION_STARTED`,LEAVE_APPROVED:`LEAVE_APPROVED`,DISPOSED:`DISPOSED`},X={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 Ea(){return{inflight:void 0,current:void 0,previous:void 0}}const Da=(e,t)=>t?.nav===void 0||t.nav===e.inflight,Oa=(e,t)=>t!==void 0&&t===e.inflight&&t.externalSignal?.aborted!==!0,ka=(e,t)=>{e.previous=e.current,e.current=n.c(t)},Aa=(e,t)=>{ka(e,t.toState),e.inflight=void 0},ja=(e,t)=>{ka(e,t.toState)},Ma=e=>{e.previous=e.current,e.current=void 0},Z=e=>{e.current=void 0,e.previous=void 0,e.inflight=void 0},Na=(e,t)=>{e.inflight=t},Pa={[Y.IDLE]:{[X.START]:Y.STARTING,[X.DISPOSE]:{target:Y.DISPOSED,update:Z}},[Y.STARTING]:{[X.STARTED]:Y.READY,[X.FAIL]:Y.IDLE,[X.STOP]:{target:Y.IDLE,update:Ma},[X.DISPOSE]:{target:Y.DISPOSED,update:Z}},[Y.READY]:{[X.NAVIGATE]:{target:Y.TRANSITION_STARTED,update:Na},[X.SYSTEM_COMMIT]:{target:Y.READY,update:ja},[X.STOP]:{target:Y.IDLE,update:Ma},[X.DISPOSE]:{target:Y.DISPOSED,update:Z}},[Y.TRANSITION_STARTED]:{[X.NAVIGATE]:{target:Y.TRANSITION_STARTED,update:Na},[X.LEAVE_APPROVE]:Y.LEAVE_APPROVED,[X.CANCEL]:Y.READY,[X.FAIL]:{target:Y.READY,when:Da},[X.DISPOSE]:{target:Y.DISPOSED,update:Z}},[Y.LEAVE_APPROVED]:{[X.NAVIGATE]:{target:Y.TRANSITION_STARTED,update:Na},[X.COMPLETE]:{target:Y.READY,when:Oa,update:Aa},[X.CANCEL]:Y.READY,[X.FAIL]:{target:Y.READY,when:Da},[X.DISPOSE]:{target:Y.DISPOSED,update:Z}},[Y.DISPOSED]:{}};function Fa(){return new Ta({initial:Y.IDLE,context:Ea(),transitions:Pa})}const Ia=Object.freeze,Q=`TREE_CHANGED`;function La(e){return e instanceof Error?e:Error(String(e))}function Ra(e,n,r){return new Promise((i,a)=>{let o=()=>{let e=r.reason;a(e instanceof t.t&&e.code===t.g.TRANSITION_CANCELLED?e:new t.t(t.g.TRANSITION_CANCELLED,{reason:e}))};if(r.aborted){o();return}r.addEventListener(`abort`,o,{once:!0}),Promise.allSettled(e).then(e=>{if(r.removeEventListener(`abort`,o),r.aborted)return;if(n!==void 0){a(La(n));return}let t=e.find(e=>e.status===`rejected`);if(t!==void 0){a(La(t.reason));return}i()})})}function za(e,t,n){return e.addEventListener(`abort`,t,{once:!0}),()=>{n(),e.removeEventListener(`abort`,t)}}var Ba=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(t._.ROUTER_START)}finally{this.#i--}}emitRouterStop(){this.#t.emit(t._.ROUTER_STOP)}emitTransitionStart(e,n,r){this.#i++;try{this.#t.emit(t._.TRANSITION_START,e,n)}finally{this.#i--}}emitTransitionSuccess(e,n,r){this.#i++;try{this.#t.emit(t._.TRANSITION_SUCCESS,e,n,r)}finally{this.#i--}}emitTransitionError(e,n,r){this.#i++;try{this.#t.emit(t._.TRANSITION_ERROR,e,n,r)}finally{this.#i--}}emitTransitionCancel(e,n){this.#i++;try{this.#t.emit(t._.TRANSITION_CANCEL,e,n)}finally{this.#i--}}emitTransitionLeaveApprove(e,n){this.#i++;try{this.#t.emit(t._.TRANSITION_LEAVE_APPROVE,e,n)}finally{this.#i--}}isProcessing(){return this.#i>0}emitTreeChanged(e){this.#t.emit(Q,e)}isEmittingTreeChanged(){return this.#t.isDispatching(Q)}subscribeTreeChanged(e){if(this.isDisposed())throw t.n(new t.t(t.g.ROUTER_DISPOSED));return this.#t.on(Q,t=>{e(t)})}treeChangedListenerCount(){return this.#t.listenerCount(Q)}sendStart(){this.#e.send(X.START)}sendStop(){this.#e.send(X.STOP)}sendDispose(){this.#e.send(X.DISPOSE)}sendStarted(){this.#e.send(X.STARTED)}sendNavigate(e){return this.#e.send(X.NAVIGATE,e)===Y.TRANSITION_STARTED}canCommitTransition(e){return this.#e.canSend(X.COMPLETE,e)}sendComplete(e){this.#e.send(X.COMPLETE,e)}sendLeaveApprove(e){this.#e.send(X.LEAVE_APPROVE,e)}sendFail(e,t,n){this.#e.send(X.FAIL,{nav:n,fromState:e,error:t})}sendCancel(e,t){this.#e.send(X.CANCEL,{fromState:e,reason:t})}systemCommit(e){let{toState:r}=e,i=r.transition,a={name:r.name,params:n.n(r.params,t.d),search:n.n(r.search,t.f),path:r.path,context:{...r.context},...i!=null&&{transition:n.r(i)}};if(!this.#e.canSend(X.SYSTEM_COMMIT))throw this.#o();return this.#e.send(X.SYSTEM_COMMIT,{...e,toState:a}),a}canBeginTransition(){return this.#e.canSend(X.NAVIGATE)}canStart(){return this.#e.canSend(X.START)}canCancel(){return this.#e.canSend(X.CANCEL)}isActive(){let e=this.#e.getState();return e!==Y.IDLE&&e!==Y.DISPOSED}isDisposed(){return this.#e.getState()===Y.DISPOSED}isTransitioning(){let e=this.#e.getState();return e===Y.TRANSITION_STARTED||e===Y.LEAVE_APPROVED}isLeaveApproved(){return this.#e.getState()===Y.LEAVE_APPROVED}isReady(){return this.#e.getState()===Y.READY}isStarting(){return this.#e.getState()===Y.STARTING}isIdle(){return this.#e.getState()===Y.IDLE}addEventListener(e,t){return this.#a(e,`addEventListener`),this.#t.on(e,t)}subscribe(e){if(this.isDisposed())throw t.n(new t.t(t.g.ROUTER_DISPOSED));return this.#a(t._.TRANSITION_SUCCESS,`subscribe`),this.#t.on(t._.TRANSITION_SUCCESS,(t,n)=>e({route:t,previousRoute:n}))}subscribeLeave(e){if(this.isDisposed())throw t.n(new t.t(t.g.ROUTER_DISPOSED));this.#r.push(e);let n=!1;return()=>{if(n)return;n=!0;let t=this.#r.indexOf(e);t!==-1&&this.#r.splice(t,1)}}hasLeaveListeners(){return this.#r.length>0}hasPreCommitListeners(){return this.#t.listenerCount(t._.TRANSITION_START)>0||this.#t.listenerCount(t._.TRANSITION_LEAVE_APPROVE)>0}awaitLeaveListeners(e,t,n){if(t===void 0)return;let r=Ia({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 La(a);return}return Ra(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=za(t,()=>{this.sendCancelIfPossible(this.#e.getContext().current,t.reason)},()=>{e.detachExternalBridge=void 0})),_a}#a(e,t){let n=this.#n?.();n&&n.eventBus.validateCountThresholds(this.#t.listenerCount(e)+1,e,t)}#o(){if(this.isDisposed())return new t.t(t.g.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 t.t(t.g.ROUTER_NOT_STARTED,{message:e})}#s(){let e=this.#e;e.on(Y.STARTING,X.STARTED,()=>{this.emitRouterStart()}),e.on(Y.READY,X.STOP,()=>{this.emitRouterStop()});let n=e=>{let t=e.externalSignal!==void 0&&(this.hasLeaveListeners()||this.hasPreCommitListeners())?this.bridgeExternalSignal(e):_a;this.emitTransitionStart(e.toState,e.fromState,t)};e.on(Y.READY,X.NAVIGATE,n),e.on(Y.TRANSITION_STARTED,X.NAVIGATE,n),e.on(Y.LEAVE_APPROVED,X.NAVIGATE,n),e.on(Y.TRANSITION_STARTED,X.LEAVE_APPROVE,e=>{this.emitTransitionLeaveApprove(e.toState,e.fromState)}),e.on(Y.LEAVE_APPROVED,X.COMPLETE,e=>{e.detachExternalBridge?.(),this.emitTransitionSuccess(e.toState,e.fromState,e.opts)});let r=e=>{let{fromState:n,reason:r}=e,i=this.#e.getContext().inflight,a=r??new t.t(t.g.TRANSITION_CANCELLED);i.cancelReason=a,i.controller?.abort(a),i.detachExternalBridge?.(),this.emitTransitionCancel(i.toState,n)};e.on(Y.TRANSITION_STARTED,X.CANCEL,r),e.on(Y.LEAVE_APPROVED,X.CANCEL,r),e.on(Y.READY,X.SYSTEM_COMMIT,e=>{this.emitTransitionSuccess(e.toState,e.fromState,e.opts)});let i=e=>{let t=this.#e.getContext().inflight;t?.detachExternalBridge?.(),this.emitTransitionError(t?.toState,e.fromState,e.error)};e.on(Y.LEAVE_APPROVED,X.FAIL,i),e.on(Y.TRANSITION_STARTED,X.FAIL,i),e.on(Y.STARTING,X.FAIL,e=>{this.emitTransitionError(void 0,e.fromState,e.error)})}};const Va=Object.freeze;function Ha(e){return Wa(e)&&!Object.isFrozen(e)&&e!==k.defaultParams&&e!==k.defaultSearch}function Ua(e){let{defaultParams:t,defaultSearch:n}=e;return Va({...Ha(t)&&{defaultParams:new WeakRef(t)},...Ha(n)&&{defaultSearch:new WeakRef(n)}})}function Wa(e){return typeof e==`object`&&!!e}function Ga(e){let t={...e};return e.limits!=null&&(t.limits=n.o(`limits`,e.limits)),Wa(e.defaultParams)&&(t.defaultParams=n.o(`defaultParams`,e.defaultParams)),Wa(e.defaultSearch)&&(t.defaultSearch=n.o(`defaultSearch`,e.defaultSearch)),t}const Ka=Object.keys,qa=Object.freeze;function Ja(e={}){let n={...t.c,...e};return qa({maxDependencies:Number(n.maxDependencies),maxPlugins:Number(n.maxPlugins),maxListeners:Number(n.maxListeners),warnListeners:Number(n.warnListeners),maxLifecycleHandlers:Number(n.maxLifecycleHandlers)})}function Ya(e){return e==null?void 0:qa(Ka(e))}const Xa=Object.freeze,Za=Object.freeze({});function Qa(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 $a(e){if(e==null)return`default`;try{return String(e)}catch(e){throw TypeError(`[router.constructor] Invalid "urlParamsEncoding": coercing it threw.`,{cause:e})}}function eo(e){if(!e)return Za;let t=Qa(`arrayFormat`,e),n=Qa(`booleanFormat`,e),r=Qa(`nullFormat`,e),i=Qa(`numberFormat`,e);return Xa({...t!==void 0&&{arrayFormat:t},...n!==void 0&&{booleanFormat:n},...r!==void 0&&{nullFormat:r},...i!==void 0&&{numberFormat:i}})}function to(e){return Xa({strictTrailingSlash:e.trailingSlash===`strict`,caseSensitive:e.caseSensitive,strictQueryParams:e.queryParamsMode===`strict`,urlParamsEncoding:$a(e.urlParamsEncoding),queryParams:eo(e.queryParams)})}const no=new t.t(t.g.ROUTER_ALREADY_STARTED);Object.freeze(no);const ro={maxListeners:0,warnListeners:0};var io=class{#e=new Map;#t=new Set;#n=null;#r=ro;#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 ao=Object.freeze({log:0,warn:1,error:2}),oo=Object.freeze({all:0,"warn-error":1,"error-only":2,none:3}),so=Object.hasOwn;var co=class{#e={level:`all`,callback:void 0,callbackIgnoresLevel:!1};#t=0;#n=!1;constructor(e){e&&this.configure(e)}configure(e){let t=pn(e),n=t.level;n!==void 0&&(this.#e.level=n,this.#t=oo[n]),so(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=ao[e]<this.#t;i||this.#i(e,t,n,r),this.#a(e,t,n,i,r)}#i(e,t,n,r){if(typeof console<`u`&&typeof console[e]==`function`){let i=t?`[${t}] ${n}`:n;console[e](i,...r)}}#a(e,t,n,r,i){if(!(!this.#e.callback||!this.#e.callbackIgnoresLevel&&r)&&!this.#n){this.#n=!0;try{let r=this.#e.callback(e,t,n,...i);r!=null&&typeof r.then==`function`&&Promise.resolve(r).catch(e=>{this.#o(`[router] Error in async callback:`,e)})}catch(e){this.#o(`[router] Error in callback:`,e)}finally{this.#n=!1}}}#o(e,t){typeof console<`u`&&typeof console.error==`function`&&console.error(e,t)}};function lo(t){let n=e=>gn(t.dependenciesStore,e),r=uo(t.router,n),i=_o(t),a=()=>e.i(t.router).validator;fo(t),po(t,a),mo(t,r,a),ho(t,i,a,n),go(t,r,a),vo(t,i,n),yo(t),bo(t,i)}function uo(e,t){return n=>n(e,t)}function fo(e){e.eventBus.setLimits({maxListeners:e.limits.maxListeners,warnListeners:e.limits.warnListeners})}function po(e,t){e.eventBus.setValidatorAccessor(t)}function mo(t,n,r){let i={logger:e.i(t.router).logger,compileFactory:n,getValidator:r};t.routeLifecycle.setDependencies(i)}function ho(t,n,r,i){let a={logger:e.i(t.router).logger,getValidator:r,port:n,addActivateGuard:(e,n,r)=>{t.routeLifecycle.addCanActivate(e,n,!0,r)},addDeactivateGuard:(e,n,r)=>{t.routeLifecycle.addCanDeactivate(e,n,!0,r)},compileGuard:(e,n)=>t.routeLifecycle.compileGuardFactory(e,n),getState:()=>t.state.get(),areStatesEqual:(e,n,r)=>t.state.areStatesEqual(e,n,r),getDependency:i};t.routes.setDependencies(a),t.routes.setLifecycleNamespace(t.routeLifecycle)}function go(t,n,r){let i={logger:e.i(t.router).logger,addEventListener:(e,n)=>t.eventBus.addEventListener(e,n),canNavigate:()=>t.eventBus.canBeginTransition(),compileFactory:n,getValidator:r};t.plugins.setDependencies(i)}function _o(t){let n=e.i(t.router),r=t.routes.getStore(),i=(e,t)=>{n.validator?.state.reportUndeclaredParamKey(e,t)},a=(e,t)=>{n.validator?.state.reportDroppedQueryKey(e,t)};return{resolveForward:(e,t,r)=>n.forwardState(e,t,r),defaultParams:e=>r.config.defaultParams[e],defaultSearch:e=>r.config.defaultSearch[e],buildPath:(e,n,r)=>t.routes.buildPath(e,n,r,t.options.get()),queryNames:e=>t.routes.getQueryParams(e),printedQueryNames:e=>t.routes.getPrintedQueryParams(e),pathNames:e=>t.routes.hasRoute(e)?t.routes.getUrlParams(e):void 0,admitsUndeclaredQuery:()=>Cn(t.options.get().queryParamsMode)===`loose`,get reportDroppedQueryKey(){return n.validator?a:void 0},get reportUndeclaredParamKey(){return n.validator?i:void 0}}}function vo(t,n,r){let i=e=>r(e),a={logger:e.i(t.router).logger,getOptions:()=>t.options.get(),hasRoute:e=>t.routes.hasRoute(e),getQueryParams:e=>t.routes.getQueryParams(e),getMetaForState:e=>t.routes.getMetaForState(e),getState:()=>t.state.get(),buildNavigateState:(r,i,a)=>{e.i(t.router).validator?.routes.validateStateBuilderArgs(r,i,`navigate`);let o=A(n,r,i,a,{diagnoseUndeclared:!0});if(t.routes.getMetaForState(o.name)!==void 0)return e.v(`navigate`,o.name,o.path,n.queryNames(o.name)),M(o,j(o,n))},resolveDefault:()=>{let n=t.options.get(),r=e.i(t.router),a=Dn(n.defaultRoute,i),o=Dn(n.defaultParams,i),s=Dn(n.defaultSearch,i);return typeof n.defaultRoute==`function`&&r.validator?.options.validateResolvedDefaultRoute(a,r.routeGetStore()),{route:a,params:o,search:s}},startTransition:e=>t.eventBus.sendNavigate(e),systemCommit:(e,n,r)=>t.eventBus.systemCommit({toState:e,fromState:n,opts:r}),cancelNavigation:e=>{t.eventBus.sendCancelIfPossible(t.state.get(),e)},bridgeExternalSignal:e=>{t.eventBus.bridgeExternalSignal(e)},canCommitTransition:e=>t.eventBus.canCommitTransition(e)?pa:void 0,sendTransitionDone:e=>{t.eventBus.sendComplete(e)},sendTransitionFail:(e,n,r)=>{t.eventBus.sendFail(e,n,r)},emitTransitionError:(e,n,r)=>{t.eventBus.emitTransitionError(e,n,r)},sendLeaveApprove:e=>{t.eventBus.sendLeaveApprove(e)},canNavigate:()=>t.eventBus.canBeginTransition(),isStarting:()=>t.eventBus.isStarting(),getLifecycleFunctions:()=>t.routeLifecycle.getFunctions(),canDeactivateCurrent:(e,n,r)=>t.routeLifecycle.canNavigateTo(e,[],n,r),isTransitioning:()=>t.eventBus.isTransitioning(),clearCanDeactivate:(e,n)=>{t.routeLifecycle.clearCanDeactivate(e,`external`)},hasLeaveListeners:()=>t.eventBus.hasLeaveListeners(),hasPreCommitListeners:()=>t.eventBus.hasPreCommitListeners(),awaitLeaveListeners:(e,n,r)=>t.eventBus.awaitLeaveListeners(e,n,r)};t.navigation.setDependencies(a)}function yo(e){e.lifecycle.setDependencies({getOptions:()=>e.options.get(),navigateToState:(t,n)=>e.navigation.navigateToState(t,n),navigateToNotFound:t=>e.navigation.navigateToNotFound(t),matchPath:t=>e.routes.matchPath(t,e.options.get()),getRootPath:()=>e.routes.getStore().rootPath,completeStart:()=>{e.eventBus.sendStarted()},isIdle:()=>e.eventBus.isIdle()})}function bo(e,t){e.state.setDependencies({port:()=>t,getUrlParams:t=>e.routes.getUrlParams(t)})}var xo=class r{#e;#t;#n;#r;#i;#a;#o;#s;#c;#l;#u;#d;#f;#p;constructor(i=[],a={},o={}){let{logger:s,...c}=a,l=new co(s?pn(s):void 0);this.#f=e=>{Ei(e)||l.error(`router.start`,`Unexpected start error`,e)},En.validateOptionsIsObject(a),en(o);let u=an(i),d=Ga(c);this.#r=Ua(c),this.#e=new En(d),this.#t=Ja(d.limits),this.#n=Ya(d.limits),this.#i=yn(o,this.#t),this.#a=new Nn,this.#o=new vi(u,to(this.#e.get()),l),this.#s=new qn,this.#c=new Bn,this.#l=new fa,this.#u=new ga;let f=Fa();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 Ba({routerFSM:f,emitter:p});let m=new Map,h=e=>{let t=e.params,r=e.search;return{name:e.name,params:t==null?t:n._(t),search:r==null?r:n._(r)}},g=e.r(e.t.forwardState,(e,t,n)=>this.#o.forwardState(e,t,n),m,h,So),_=((r,i,a)=>{let o=g(r,i,a),s=o.name,c=o.params;e._(`forwardState`,s,c,this.#o.getQueryParams(s),()=>s===r?"the `params` bag leaving the forwardState chain":`the \`params\` bag leaving the forwardState chain (forwarded here from "${r}")`);let l=o.search,u=l==null;return{name:s,params:n._(c??t.d),search:u?l:n._(l)}}),v=e.r(e.t.forwardState,(e,t,n)=>({name:e,params:t,search:n}),m,h,So);this.#p=(e,n,r)=>{let i=v(e,n,r),a=i.params,o=i.search;return this.#o.buildPathFromIntent(i.name,a??t.d,o)};let y={logger:l,makeState:(t,r,i,a)=>{e.s(y,`makeState`,t,r);let o=n.t(r);return y.validator?.state.validateMakeStateArgs(t,o,a),y.validator?.navigation.validateSearch(i,`makeState`),this.#a.makeState(t,o,i,a)},getMetaForState:e=>this.#o.getMetaForState(e),getDeclaredQueryNames:e=>this.#o.getQueryParams(e),forwardState:_,buildStateResolved:(e,t)=>this.#o.buildStateResolved(e,t),buildPathResolved:(e,r,i)=>{let a=n.t(r);return y.validator?.navigation.validateParamsShape(r,`buildPathResolved`),y.validator?.navigation.validateSearch(i,`buildPathResolved`),y.validator?.navigation.validateParams(a,`buildPathResolved`),this.#o.buildPathFromIntent(e,a??t.d,i)},port:()=>this.#o.getPort(),matchPath:(e,t)=>(y.validator?.routes.validateMatchPathArgs(e),this.#o.matchPath(e,t??this.#e.get())),getOptions:()=>this.#e.get(),getAdoptedOrigins:()=>this.#r,addEventListener:(t,n)=>(e.o(y.isDisposed),Jt(t),Yt(n),y.validator?.eventBus.validateListenerArgs(t,n),this.#d.addEventListener(t,n)),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:e.n(e.t.start,e=>this.#u.start(e),m),navigateToState:(n,i)=>(e.o(y.isDisposed),y.validator?.navigation.validateNavigateToStateArgs(n),i!==void 0&&y.validator?.navigation.validateNavigationOptions(i,`navigateToState`),this.#g(),r.#m(this.#l.navigateToState(n,i??t.u))),interceptors:m,setRootPath:e=>{y.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:vn(this.#i),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,n,r)=>{let i=e.name;if(i!==`@@router/UNKNOWN_ROUTE`&&!this.#o.hasRoute(i))throw t.n(new t.t(t.g.ROUTE_NOT_FOUND,{routeName:i}));return this.#d.systemCommit({toState:e,fromState:n,opts:r})},routerExtensions:[],contextClaimRecords:new Map,hydrationState:null};e.a(this,y),lo({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(t,n,r,i,a){let o=e.i(this);return o.validator?.routes.validateIsActiveRouteArgs(t,n,i,a),o.validator?.navigation.validateSearch(r,`isActiveRoute`),o.validator?.routes.validateRouteName(t,`isActiveRoute`),t===``?(o.logger.warn(`real-router`,`isActiveRoute("") called with empty string. Root node is not considered a parent of any route.`),!1):this.#o.isActiveRoute(t,n,r,i,a)}buildPath(r,i,a){let o=e.i(this);o.validator?.routes.validateBuildPathArgs(r,i),o.validator?.navigation.validateParamsShape(i,`buildPath`),o.validator?.navigation.validateSearch(a,`buildPath`);let s=n.t(i);return o.validator?.navigation.validateParams(s,`buildPath`),this.#p(r,s??t.d,a)}getState(){return this.#a.get()}getPreviousState(){return this.#a.getPrevious()}areStatesEqual(t,n,r=!0){return e.i(this).validator?.state.validateAreStatesEqualArgs(t,n,r),this.#a.areStatesEqual(t,n,r)}shouldUpdateNode(t){return e.i(this).validator?.routes.validateShouldUpdateNodeArgs(t),vi.shouldUpdateNode(t,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 t=e.i(this);for(let e of t.routerExtensions)for(let t of e.keys)delete this[t];t.routerExtensions.length=0,t.contextClaimRecords.clear(),t.interceptors.clear(),this.#o.clearRoutes(),this.#s.clearAll(),_n(this.#i),this.#v()}canNavigateTo(r,i,a){let o=e.i(this);o.validator?.routes.validateRouteName(r,`canNavigateTo`),o.validator?.navigation.validateParamsShape(i,`canNavigateTo`),o.validator?.navigation.validateSearch(a,`canNavigateTo`);let s;try{s=n.t(i)}catch(e){return o.logger.warn(`router.canNavigateTo`,`Reading the params bag for route "${r}" threw; treating the route as unreachable.`,e),!1}if(o.validator?.navigation.validateParams(s,`canNavigateTo`),!this.#o.hasRoute(r)||e.y(i,this.#o.getQueryParams(r))!==void 0)return!1;let c=this.#o.getPort(),l;try{l=A(c,r,s??t.d,a)}catch(e){return o.logger.warn(`router.canNavigateTo`,`Resolving route "${r}" threw while answering the predicate; treating the route as unreachable.`,e),!1}let u;try{u=M(l,j(l,c))}catch{return!1}let d=this.#a.get(),{toDeactivate:f,toActivate:p}=K(u,d,e=>this.#o.getMetaForState(e));return this.#s.canNavigateTo(f,p,u,d)}usePlugin(...n){if(this.#d.isDisposed())throw t.n(new t.t(t.g.ROUTER_DISPOSED));let r=n.filter(Boolean);if(r.length===0)return()=>{};let i=e.i(this);i.validator?.plugins.validatePluginLimit(this.#c.count(),this.#t);for(let e of r)i.validator?.plugins.validateNoDuplicatePlugins(e,this.#c.getAll());return this.#c.use(...r)}subscribe(e){return Ba.validateSubscribeListener(e),this.#d.subscribe(e)}subscribeLeave(e){return Ba.validateSubscribeLeaveListener(e),this.#d.subscribeLeave(e)}isLeaveApproved(){return this.#d.isLeaveApproved()}navigate(i,a,o,s){this.#g();let c=e.i(this),l,u,d,f;typeof i==`object`&&i?(l=i.name,u=i.params,d=i.search,f=a??t.u):(l=i,u=a,d=o,f=s??t.u),e.s(c,`navigate`,l,u),c.validator?.navigation.validateNavigateArgs(l),c.validator?.navigation.validateParamsShape(u,`navigate`),c.validator?.navigation.validateSearch(d,`navigate`),c.validator?.navigation.validateNavigationOptions(f,`navigate`);let p;try{p=n.t(u)}catch(e){return Promise.reject(e)}return c.validator?.navigation.validateParams(p,`navigate`),r.#m(this.#l.navigate(l,p??t.d,d,f))}navigateToDefault(n){this.#g();let i=e.i(this);i.validator?.navigation.validateNavigateToDefaultArgs(n);let a=n??t.u;return i.validator?.navigation.validateNavigationOptions(a,`navigateToDefault`),r.#m(this.#l.navigateToDefault(a))}navigateToNotFound(e){if(this.#g(),!this.#d.isActive())throw t.n(new t.t(t.g.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 n=this.#a.get();if(n===void 0)throw t.n(new t.t(t.g.ROUTER_NOT_STARTED,{message:`[router.navigateToNotFound] cannot derive the path before the start navigation commits — pass an explicit path`}));return this.#l.navigateToNotFound(n.path)}static#m(e){return e instanceof Promise?e:Promise.resolve(e)}#h(t){if(!this.#d.canStart())return Promise.reject(no);e.i(this).validator?.navigation.validateStartArgs(t),this.#d.sendStart();let n;try{let r=e.i(this).start(t);n=typeof r?.then==`function`?r:Promise.reject(TypeError("[router.start] a `start` interceptor returned without calling next(). Every start interceptor must return `next(path)`."))}catch(e){n=Promise.reject(e)}return n.catch(e=>this.#_(e))}#g(){if(this.#d.isProcessing())throw t.n(new t.t(t.g.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 t.n(new t.t(t.g.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 t.n(new t.t(t.g.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 t.n(new t.t(t.g.ROUTER_DISPOSED))}function So(e,t,r){return[e,n.t(t),n.t(r)]}Object.defineProperty(exports,"A",{enumerable:!0,get:function(){return nn}}),Object.defineProperty(exports,"C",{enumerable:!0,get:function(){return M}}),Object.defineProperty(exports,"D",{enumerable:!0,get:function(){return gn}}),Object.defineProperty(exports,"E",{enumerable:!0,get:function(){return _n}}),Object.defineProperty(exports,"F",{enumerable:!0,get:function(){return an}}),Object.defineProperty(exports,"I",{enumerable:!0,get:function(){return rn}}),Object.defineProperty(exports,"L",{enumerable:!0,get:function(){return lt}}),Object.defineProperty(exports,"M",{enumerable:!0,get:function(){return Qt}}),Object.defineProperty(exports,"N",{enumerable:!0,get:function(){return Xt}}),Object.defineProperty(exports,"O",{enumerable:!0,get:function(){return vn}}),Object.defineProperty(exports,"P",{enumerable:!0,get:function(){return on}}),Object.defineProperty(exports,"R",{enumerable:!0,get:function(){return ut}}),Object.defineProperty(exports,"S",{enumerable:!0,get:function(){return ir}}),Object.defineProperty(exports,"T",{enumerable:!0,get:function(){return A}}),Object.defineProperty(exports,"_",{enumerable:!0,get:function(){return Tr}}),Object.defineProperty(exports,"a",{enumerable:!0,get:function(){return Rr}}),Object.defineProperty(exports,"b",{enumerable:!0,get:function(){return Qn}}),Object.defineProperty(exports,"c",{enumerable:!0,get:function(){return Lr}}),Object.defineProperty(exports,"d",{enumerable:!0,get:function(){return V}}),Object.defineProperty(exports,"f",{enumerable:!0,get:function(){return Br}}),Object.defineProperty(exports,"g",{enumerable:!0,get:function(){return Ur}}),Object.defineProperty(exports,"h",{enumerable:!0,get:function(){return wr}}),Object.defineProperty(exports,"i",{enumerable:!0,get:function(){return Wr}}),Object.defineProperty(exports,"j",{enumerable:!0,get:function(){return Zt}}),Object.defineProperty(exports,"k",{enumerable:!0,get:function(){return hn}}),Object.defineProperty(exports,"l",{enumerable:!0,get:function(){return B}}),Object.defineProperty(exports,"m",{enumerable:!0,get:function(){return Kr}}),Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return K}}),Object.defineProperty(exports,"o",{enumerable:!0,get:function(){return H}}),Object.defineProperty(exports,"p",{enumerable:!0,get:function(){return Vr}}),Object.defineProperty(exports,"r",{enumerable:!0,get:function(){return z}}),Object.defineProperty(exports,"s",{enumerable:!0,get:function(){return Fr}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return xo}}),Object.defineProperty(exports,"u",{enumerable:!0,get:function(){return Ir}}),Object.defineProperty(exports,"v",{enumerable:!0,get:function(){return gr}}),Object.defineProperty(exports,"w",{enumerable:!0,get:function(){return j}}),Object.defineProperty(exports,"x",{enumerable:!0,get:function(){return ar}}),Object.defineProperty(exports,"y",{enumerable:!0,get:function(){return hr}});
|
|
2
|
-
//# sourceMappingURL=Router-NcUbf7cb.js.map
|