@real-router/core 0.61.7 → 0.61.8
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-Bm2qafJA.d.ts.map +1 -1
- package/dist/cjs/Router-eMtFFD38.js +2 -0
- package/dist/cjs/Router-eMtFFD38.js.map +1 -0
- package/dist/cjs/api.d.ts.map +1 -1
- package/dist/cjs/api.js +1 -1
- package/dist/cjs/api.js.map +1 -1
- package/dist/cjs/{cloneRouter-Bqd3Ihq6.js → cloneRouter-BuW_HXyc.js} +2 -2
- package/dist/cjs/{cloneRouter-Bqd3Ihq6.js.map → cloneRouter-BuW_HXyc.js.map} +1 -1
- package/dist/cjs/index.js +1 -1
- package/dist/cjs/internals-DJjgSePy.js.map +1 -1
- package/dist/cjs/utils.js +1 -1
- package/dist/cjs/validation.d.ts +60 -13
- package/dist/cjs/validation.d.ts.map +1 -1
- package/dist/esm/Router-Bm2qafJA.d.mts.map +1 -1
- package/dist/esm/Router-UDzQURRd.mjs +2 -0
- package/dist/esm/Router-UDzQURRd.mjs.map +1 -0
- package/dist/esm/api.d.mts.map +1 -1
- package/dist/esm/api.mjs +1 -1
- package/dist/esm/api.mjs.map +1 -1
- package/dist/esm/cloneRouter-B6XVO2c3.mjs +2 -0
- package/dist/esm/{cloneRouter-DDa1uCo2.mjs.map → cloneRouter-B6XVO2c3.mjs.map} +1 -1
- package/dist/esm/index.mjs +1 -1
- package/dist/esm/internals-C8mRvTxc.mjs.map +1 -1
- package/dist/esm/utils.mjs +1 -1
- package/dist/esm/validation.d.mts +60 -13
- package/dist/esm/validation.d.mts.map +1 -1
- package/package.json +3 -3
- package/dist/cjs/Router-BtIOwNA_.js +0 -2
- package/dist/cjs/Router-BtIOwNA_.js.map +0 -1
- package/dist/esm/Router-znAIxBjc.mjs +0 -2
- package/dist/esm/Router-znAIxBjc.mjs.map +0 -1
- package/dist/esm/cloneRouter-DDa1uCo2.mjs +0 -2
package/dist/cjs/validation.d.ts
CHANGED
|
@@ -54,27 +54,34 @@ declare class RouteLifecycleNamespace<Dependencies extends DefaultDependencies =
|
|
|
54
54
|
* determines which Map the factory is filed under (relevant for
|
|
55
55
|
* `clearDefinitionGuards()` and `cloneRouter` re-registration).
|
|
56
56
|
*/
|
|
57
|
-
addCanActivate(name: string, handler: GuardFnFactory<Dependencies> | boolean, isFromDefinition?: boolean): void;
|
|
57
|
+
addCanActivate(name: string, handler: GuardFnFactory<Dependencies> | boolean, isFromDefinition?: boolean, precompiledFn?: GuardFn): void;
|
|
58
58
|
/**
|
|
59
59
|
* Adds a canDeactivate guard for a route.
|
|
60
60
|
*
|
|
61
61
|
* Symmetric counterpart to {@link addCanActivate}.
|
|
62
62
|
*/
|
|
63
|
-
addCanDeactivate(name: string, handler: GuardFnFactory<Dependencies> | boolean, isFromDefinition?: boolean): void;
|
|
63
|
+
addCanDeactivate(name: string, handler: GuardFnFactory<Dependencies> | boolean, isFromDefinition?: boolean, precompiledFn?: GuardFn): void;
|
|
64
64
|
/**
|
|
65
|
-
* Removes a canActivate guard for a route
|
|
66
|
-
*
|
|
67
|
-
* `
|
|
65
|
+
* Removes a canActivate guard for a route. By default clears BOTH the
|
|
66
|
+
* definition and external slots (route removal / `clearAll` cleanup). With
|
|
67
|
+
* `definitionOnly = true` it clears ONLY the definition slot, leaving an
|
|
68
|
+
* external guard intact — `update(name, { canActivate: null })` passes this so
|
|
69
|
+
* clearing a route-config guard does not also wipe a guard registered
|
|
70
|
+
* independently via `getLifecycleApi().addActivateGuard()` (#952). When the
|
|
71
|
+
* definition is cleared but an external survives, `#recompileSlot` recompiles
|
|
72
|
+
* the slot from the external factory (external wins).
|
|
68
73
|
*
|
|
69
74
|
* @param name - Route name (already validated by facade)
|
|
75
|
+
* @param definitionOnly - When true, leave the external slot intact (#952)
|
|
70
76
|
*/
|
|
71
|
-
clearCanActivate(name: string): void;
|
|
77
|
+
clearCanActivate(name: string, definitionOnly?: boolean): void;
|
|
72
78
|
/**
|
|
73
|
-
* Removes a canDeactivate guard for a route
|
|
79
|
+
* Removes a canDeactivate guard for a route.
|
|
74
80
|
*
|
|
75
|
-
* Symmetric counterpart to {@link clearCanActivate}
|
|
81
|
+
* Symmetric counterpart to {@link clearCanActivate} — `definitionOnly = true`
|
|
82
|
+
* clears only the definition slot, preserving an external guard (#952).
|
|
76
83
|
*/
|
|
77
|
-
clearCanDeactivate(name: string): void;
|
|
84
|
+
clearCanDeactivate(name: string, definitionOnly?: boolean): void;
|
|
78
85
|
/**
|
|
79
86
|
* Clears all lifecycle handlers (canActivate and canDeactivate).
|
|
80
87
|
* Used by clearRoutes to reset all lifecycle state.
|
|
@@ -118,6 +125,20 @@ declare class RouteLifecycleNamespace<Dependencies extends DefaultDependencies =
|
|
|
118
125
|
*/
|
|
119
126
|
getFunctions(): [Map<string, GuardFn>, Map<string, GuardFn>];
|
|
120
127
|
canNavigateTo(toDeactivate: string[], toActivate: string[], toState: State, fromState: State | undefined): boolean;
|
|
128
|
+
/**
|
|
129
|
+
* Compiles a guard factory to its `GuardFn` WITHOUT registering it — surfaces
|
|
130
|
+
* a throwing / non-function factory eagerly. The prepare-then-commit
|
|
131
|
+
* add/replace path (`adoptRouteArtifacts`) calls this for every pending guard
|
|
132
|
+
* BEFORE the store swap (#956), so a malformed factory aborts the mutation
|
|
133
|
+
* with the store untouched. The returned function is then installed via the
|
|
134
|
+
* `precompiledFn` argument of {@link addCanActivate} / {@link addCanDeactivate}
|
|
135
|
+
* — no re-compile, so a factory with compile-time side effects runs exactly
|
|
136
|
+
* once. Same boolean-shorthand handling + compile + non-function check as the
|
|
137
|
+
* inline `#registerHandler` path, so a route-config `canActivate: true`
|
|
138
|
+
* (boolean shorthand, runtime-reachable via the public route type) compiles to
|
|
139
|
+
* the cached `TRUE_GUARD`/`FALSE_GUARD` instead of throwing on a non-callable.
|
|
140
|
+
*/
|
|
141
|
+
compileGuardFactory(handler: GuardFnFactory<Dependencies> | boolean, methodName: string): GuardFn;
|
|
121
142
|
}
|
|
122
143
|
//#endregion
|
|
123
144
|
//#region src/namespaces/RoutesNamespace/types.d.ts
|
|
@@ -128,10 +149,21 @@ declare class RouteLifecycleNamespace<Dependencies extends DefaultDependencies =
|
|
|
128
149
|
* avoiding the need to pass the entire Router object.
|
|
129
150
|
*/
|
|
130
151
|
interface RoutesDependencies<Dependencies extends DefaultDependencies = DefaultDependencies> {
|
|
131
|
-
/**
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
152
|
+
/**
|
|
153
|
+
* Register a canActivate handler for a route. `precompiledFn` installs an
|
|
154
|
+
* already-compiled `GuardFn` (from {@link compileGuard}) without re-invoking
|
|
155
|
+
* the factory — used by the #956 prepare-then-commit path so guards compile
|
|
156
|
+
* once, before the store swap.
|
|
157
|
+
*/
|
|
158
|
+
addActivateGuard: (name: string, handler: GuardFnFactory<Dependencies>, precompiledFn?: GuardFn) => void;
|
|
159
|
+
/** Register a canDeactivate handler for a route (see {@link addActivateGuard}). */
|
|
160
|
+
addDeactivateGuard: (name: string, handler: GuardFnFactory<Dependencies>, precompiledFn?: GuardFn) => void;
|
|
161
|
+
/**
|
|
162
|
+
* Compile a guard factory to its `GuardFn` WITHOUT registering it — surfaces a
|
|
163
|
+
* throwing / non-function factory eagerly so the add/replace commit can
|
|
164
|
+
* validate every guard before swapping the store (#956).
|
|
165
|
+
*/
|
|
166
|
+
compileGuard: (handler: GuardFnFactory<Dependencies>, methodName: string) => GuardFn;
|
|
135
167
|
/** Create state object */
|
|
136
168
|
makeState: <P extends Params = Params>(name: string, params?: P, path?: string, meta?: Record<string, Record<string, "url" | "query">>) => State<P>;
|
|
137
169
|
/** Get current router state */
|
|
@@ -205,6 +237,21 @@ interface RouterInternals<D extends DefaultDependencies = DefaultDependencies> {
|
|
|
205
237
|
};
|
|
206
238
|
readonly buildPath: (route: string, params?: Params) => string;
|
|
207
239
|
readonly emitTransitionError: (error: Error) => void;
|
|
240
|
+
/**
|
|
241
|
+
* Emits `TRANSITION_SUCCESS` directly (no FSM transition) — used by
|
|
242
|
+
* `getRoutesApi().replace()` to notify `router.subscribe` listeners when a
|
|
243
|
+
* structural replace revalidates the active state (#950). Mirrors the success
|
|
244
|
+
* emission `completeTransition` / `navigateToNotFound` perform.
|
|
245
|
+
*/
|
|
246
|
+
readonly emitTransitionSuccess: (toState: State, fromState: State | undefined, opts?: NavigationOptions) => void;
|
|
247
|
+
/**
|
|
248
|
+
* Commits the not-found (`UNKNOWN_ROUTE`) state for `path` and emits
|
|
249
|
+
* `TRANSITION_SUCCESS` — the `NavigationNamespace.navigateToNotFound`
|
|
250
|
+
* primitive. `replace()` uses it when a structural replace drops the active
|
|
251
|
+
* route, so subscribers are notified instead of the state silently clearing
|
|
252
|
+
* (#950).
|
|
253
|
+
*/
|
|
254
|
+
readonly navigateToNotFound: (path: string) => State;
|
|
208
255
|
readonly start: (path: string) => Promise<State>;
|
|
209
256
|
/**
|
|
210
257
|
* Plugin-only navigation entry point — delegates to
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validation.d.ts","names":[],"sources":["../../src/namespaces/DependenciesNamespace/dependenciesStore.ts","../../src/namespaces/RouteLifecycleNamespace/types.ts","../../src/namespaces/RouteLifecycleNamespace/RouteLifecycleNamespace.ts","../../src/namespaces/RoutesNamespace/types.ts","../../src/namespaces/RoutesNamespace/routesStore.ts","../../src/internals.ts"],"mappings":";;;;;;UAKiB,iBAAA,sBACM,mBAAA,GAAsB,mBAAA;EAE3C,YAAA,EAAc,OAAA,CAAQ,YAAA;EACtB,MAAA,EAAQ,MAAA;AAAA;;;UCJO,0BAAA,sBACM,mBAAA,GAAsB,mBAAA;EAE3C,cAAA,GAAiB,OAAA,EAAS,cAAA,CAAe,YAAA,MAAkB,OAAA;AAAA;;;;;;;ADH7D;;;;;;;;;;;;;;;cE0Ca,uBAAA,sBACU,mBAAA,GAAsB,mBAAA;EAAA;EAoC3C,eAAA,CAAgB,IAAA,EAAM,0BAAA,CAA2B,YAAA;EAIjD,kBAAA,CAAmB,MAAA,QAAc,eAAA;EAIjC,eAAA,CAAgB,IAAA;;;;ADvFlB;;;;;;;;;;;;ECqIE,cAAA,CACE,IAAA,UACA,OAAA,EAAS,cAAA,CAAe,YAAA,aACxB,gBAAA;
|
|
1
|
+
{"version":3,"file":"validation.d.ts","names":[],"sources":["../../src/namespaces/DependenciesNamespace/dependenciesStore.ts","../../src/namespaces/RouteLifecycleNamespace/types.ts","../../src/namespaces/RouteLifecycleNamespace/RouteLifecycleNamespace.ts","../../src/namespaces/RoutesNamespace/types.ts","../../src/namespaces/RoutesNamespace/routesStore.ts","../../src/internals.ts"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Router-Bm2qafJA.d.mts","names":[],"sources":["../../src/types.ts","../../src/Router.ts"],"mappings":";;;;;;KA8DY,MAAA,GAAS,QAAQ,CAAC,YAAA;;;;AAA9B;;;;AAA0C;;;;ACkC1C;;;;;;;cAAa,QAAA,sBACU,mBAAA,GAAsB,mBAAA,aAChC,MAAA,CAAgB,YAAA;EAAA;GAC1B,GAAA;EA8Be;;;;;cAFd,MAAA,GAAQ,KAAA,CAAM,YAAA,KACd,OAAA,GAAS,OAAA,CAAQ,OAAA,GACjB,YAAA,GAAc,YAAA;
|
|
1
|
+
{"version":3,"file":"Router-Bm2qafJA.d.mts","names":[],"sources":["../../src/types.ts","../../src/Router.ts"],"mappings":";;;;;;KA8DY,MAAA,GAAS,QAAQ,CAAC,YAAA;;;;AAA9B;;;;AAA0C;;;;ACkC1C;;;;;;;cAAa,QAAA,sBACU,mBAAA,GAAsB,mBAAA,aAChC,MAAA,CAAgB,YAAA;EAAA;GAC1B,GAAA;EA8Be;;;;;cAFd,MAAA,GAAQ,KAAA,CAAM,YAAA,KACd,OAAA,GAAS,OAAA,CAAQ,OAAA,GACjB,YAAA,GAAc,YAAA;EAkPhB,aAAA,CACE,IAAA,UACA,MAAA,GAAS,MAAA,EACT,cAAA,YACA,iBAAA;EAgCF,SAAA,CAAU,KAAA,UAAe,MAAA,GAAS,MAAA;EAalC,QAAA,WAAmB,MAAA,GAAS,MAAA,KAAW,KAAA,CAAM,CAAA;EAI7C,gBAAA,IAAoB,KAAA;EAIpB,cAAA,CACE,MAAA,EAAQ,KAAA,cACR,MAAA,EAAQ,KAAA,cACR,iBAAA;EAWF,gBAAA,CACE,QAAA,YACE,OAAA,EAAS,KAAA,EAAO,SAAA,GAAY,KAAA;EAUhC,QAAA;EAIA,KAAA,CAAM,SAAA,WAAoB,OAAA,CAAQ,KAAA;EA8ClC,IAAA;EAcA,OAAA;EA+CA,aAAA,CAAc,IAAA,UAAc,MAAA,GAAS,MAAA;EAiErC,SAAA,IACK,OAAA,GAAU,aAAA,CAAc,YAAA,kCAC1B,WAAA;EA+BH,SAAA,CAAU,QAAA,EAAU,WAAA,GAAc,WAAA;EAMlC,cAAA,CAAe,QAAA,EAAU,OAAA,GAAU,WAAA;EAMnC,eAAA;EAQA,QAAA,CACE,SAAA,UACA,WAAA,GAAc,MAAA,EACd,OAAA,GAAU,iBAAA,GACT,OAAA,CAAQ,KAAA;EA4BX,iBAAA,CAAkB,OAAA,GAAU,iBAAA,GAAoB,OAAA,CAAQ,KAAA;EAyBxD,kBAAA,CAAmB,IAAA,YAAgB,KAAA;AAAA"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{i as e,n as t,r as n,t as r}from"./internals-C8mRvTxc.mjs";import{logger as i}from"@real-router/logger";import{FSM as a}from"@real-router/fsm";const o={maxListeners:0,warnListeners:0,maxEventDepth:0};var s=class extends Error{constructor(e){super(e),this.name=`RecursionDepthError`}},c=class{#e=new Map;#t=null;#n=null;#r=o;#i;#a;constructor(e){e?.limits&&(this.#r=e.limits),this.#i=e?.onListenerError??null,this.#a=e?.onListenerWarn??null}static validateCallback(e,t){if(typeof e!=`function`)throw TypeError(`Expected callback to be a function for event ${t}`)}setLimits(e){this.#r=e}on(e,t){let n=this.#u(e);if(n.has(t))throw Error(`Duplicate listener for "${e}"`);let{maxListeners:r,warnListeners:i}=this.#r;if(r!==0&&n.size>=r)throw Error(`Listener limit (${r}) reached for "${e}"`);return i!==0&&n.size===i&&this.#a!==null&&(this.#n??=new Set,this.#n.has(e)||(this.#n.add(e),this.#a(e,i))),n.add(t),()=>{this.off(e,t)}}off(e,t){let n=this.#e.get(e);n&&(n.delete(t),n.size===0&&(this.#e.delete(e),this.#n?.delete(e)))}emit(e,t,n,r,i){let a=this.#e.get(e);if(!a||a.size===0)return;let o=arguments.length-1;if(this.#r.maxEventDepth===0){this.#o(a,e,o,t,n,r,i);return}this.#l(a,e,o,t,n,r,i)}clearAll(){this.#e.clear(),this.#t=null,this.#n=null}listenerCount(e){return this.#e.get(e)?.size??0}#o(e,t,n,r,i,a,o){if(e.size===1){let[s]=e;try{this.#s(s,n,r,i,a,o)}catch(e){this.#c(t,e)}return}let s=[...e];for(let e of s)try{this.#s(e,n,r,i,a,o)}catch(e){this.#c(t,e)}}#s(e,t,n,r,i,a){switch(t){case 0:e();break;case 1:e(n);break;case 2:e(n,r);break;case 3:e(n,r,i);break;default:e(n,r,i,a)}}#c(e,t){if(t instanceof s)throw t;this.#i?.(e,t)}#l(e,t,n,r,i,a,o){this.#t??=new Map;let c=this.#t,l=c.get(t)??0;if(l>=this.#r.maxEventDepth)throw new s(`Maximum recursion depth (${this.#r.maxEventDepth}) exceeded for event: ${t}`);try{if(c.set(t,l+1),e.size===1){let[s]=e;try{this.#s(s,n,r,i,a,o)}catch(e){this.#c(t,e)}}else{let s=[...e];for(let e of s)try{this.#s(e,n,r,i,a,o)}catch(e){this.#c(t,e)}}}finally{let e=c.get(t)-1;e===0?c.delete(t):c.set(t,e)}}#u(e){let t=this.#e.get(e);if(t)return t;let n=new Set;return this.#e.set(e,n),n}};const l=Object.freeze({ROUTER_NOT_STARTED:`NOT_STARTED`,NO_START_PATH_OR_STATE:`NO_START_PATH_OR_STATE`,ROUTER_ALREADY_STARTED:`ALREADY_STARTED`,ROUTE_NOT_FOUND:`ROUTE_NOT_FOUND`,SAME_STATES:`SAME_STATES`,CANNOT_DEACTIVATE:`CANNOT_DEACTIVATE`,CANNOT_ACTIVATE:`CANNOT_ACTIVATE`,TRANSITION_ERR:`TRANSITION_ERR`,TRANSITION_CANCELLED:`CANCELLED`,ROUTER_DISPOSED:`DISPOSED`,PLUGIN_CONFLICT:`PLUGIN_CONFLICT`,CONTEXT_NAMESPACE_ALREADY_CLAIMED:`CONTEXT_NAMESPACE_ALREADY_CLAIMED`}),u=`@@router/UNKNOWN_ROUTE`,d={UNKNOWN_ROUTE:u},f={ROUTER_START:`onStart`,ROUTER_STOP:`onStop`,TRANSITION_START:`onTransitionStart`,TRANSITION_LEAVE_APPROVE:`onTransitionLeaveApprove`,TRANSITION_CANCEL:`onTransitionCancel`,TRANSITION_SUCCESS:`onTransitionSuccess`,TRANSITION_ERROR:`onTransitionError`},p={ROUTER_START:`$start`,ROUTER_STOP:`$stop`,TRANSITION_START:`$$start`,TRANSITION_LEAVE_APPROVE:`$$leaveApprove`,TRANSITION_CANCEL:`$$cancel`,TRANSITION_SUCCESS:`$$success`,TRANSITION_ERROR:`$$error`},m={maxDependencies:100,maxPlugins:50,maxListeners:1e4,warnListeners:1e3,maxEventDepth:5,maxLifecycleHandlers:200},h=Object.freeze({}),ee=Object.freeze({deactivated:Object.freeze([]),activated:Object.freeze([]),intersection:``}),g=Object.freeze({phase:`activating`,reason:`success`,segments:ee}),_={IDLE:`IDLE`,STARTING:`STARTING`,READY:`READY`,TRANSITION_STARTED:`TRANSITION_STARTED`,LEAVE_APPROVED:`LEAVE_APPROVED`,DISPOSED:`DISPOSED`},v={START:`START`,STARTED:`STARTED`,NAVIGATE:`NAVIGATE`,LEAVE_APPROVE:`LEAVE_APPROVE`,COMPLETE:`COMPLETE`,FAIL:`FAIL`,CANCEL:`CANCEL`,STOP:`STOP`,DISPOSE:`DISPOSE`},te={initial:_.IDLE,context:null,transitions:{[_.IDLE]:{[v.START]:_.STARTING,[v.DISPOSE]:_.DISPOSED},[_.STARTING]:{[v.STARTED]:_.READY,[v.FAIL]:_.IDLE,[v.DISPOSE]:_.DISPOSED},[_.READY]:{[v.NAVIGATE]:_.TRANSITION_STARTED,[v.FAIL]:_.READY,[v.STOP]:_.IDLE,[v.DISPOSE]:_.DISPOSED},[_.TRANSITION_STARTED]:{[v.NAVIGATE]:_.TRANSITION_STARTED,[v.LEAVE_APPROVE]:_.LEAVE_APPROVED,[v.CANCEL]:_.READY,[v.FAIL]:_.READY,[v.DISPOSE]:_.DISPOSED},[_.LEAVE_APPROVED]:{[v.NAVIGATE]:_.TRANSITION_STARTED,[v.COMPLETE]:_.READY,[v.CANCEL]:_.READY,[v.FAIL]:_.READY,[v.DISPOSE]:_.DISPOSED},[_.DISPOSED]:{}}};function ne(){return new a(te)}function re(e){if(!e||typeof e!=`object`||e.constructor!==Object)throw TypeError(`dependencies must be a plain object`);for(let t in e)if(Object.getOwnPropertyDescriptor(e,t)?.get)throw TypeError(`dependencies cannot contain getters: "${t}"`)}function y(e,t){for(let n of e){let e=n;if(typeof e!=`object`||!e||Array.isArray(e))throw TypeError(`route must be a non-array object`);t?.routes.guardRouteCallbacks(n),t?.routes.guardNoAsyncCallbacks(n);let r=n.children;r&&y(r,t)}}function ie(e){return Object.freeze(e)}function ae(e={}){return{...m,...e}}function b(e){if(e===void 0)return e;let t={};for(let n in e){if(!Object.hasOwn(e,n))continue;let r=e[n];r!==void 0&&(t[n]=r)}return t}function oe(e={}){let t=Object.create(null);for(let n in e)e[n]!==void 0&&(t[n]=e[n]);return{dependencies:t,limits:m}}function se(e){return`(${e.replaceAll(/(^<|>$)/g,``)})`}const x=`[^/?<]+`,ce=new RegExp(String.raw`([:*])(${x})(<[^>]+>)?(\?)?`,`g`),le=new RegExp(String.raw`([:*]${x}(?:<[^>]+>)?)\?(?=[/?]|$)`,`g`),ue=/<[^>]*>/g,de=/\?(.+)$/;function fe(e){return e.replaceAll(ue,e=>`<${`x`.repeat(e.length-2)}>`).replaceAll(le,`$1\0`)}function pe(e){let t=[],n=[],r=[],i={},a=new Map,o=de.exec(fe(e));if(o!==null){let t=e.slice(o.index+1).split(`&`);for(let e of t){let t=e.trim();t.length>0&&(n.push(t),i[t]=`query`)}e=e.slice(0,o.index)}let s;for(;(s=ce.exec(e))!==null;){let e=s[1],n=s[2],o=s[3];if(e===`*`)r.push(n),t.push(n),i[n]=`url`;else if(t.push(n),i[n]=`url`,o){let e=`^${se(o)}$`;a.set(n,{pattern:new RegExp(e),constraint:o})}}return{urlParams:t,queryParams:n,spatParams:r,paramTypeMap:i,constraintPatterns:a,pathPattern:e}}const me=/[^\w!$'()*+,.:;|~-]/gu,he=/[^\w!$'()*+,.:;|~-]/u,ge={default:e=>he.test(e)?e.replaceAll(me,e=>encodeURIComponent(e)):e,uri:encodeURI,uriComponent:encodeURIComponent,none:e=>e},_e={default:decodeURIComponent,uri:decodeURI,uriComponent:decodeURIComponent,none:e=>e},ve=(e,t,n)=>{let r=ge[t],i=String(e);if(!n)return r(i);let a=i.split(`/`),o=r(a[0]);for(let e=1;e<a.length;e++)o+=`/`+r(a[e]);return o};function S(){return{staticChildren:Object.create(null),hasChildren:!1,paramChild:void 0,splatChild:void 0,route:void 0,slashChildRoute:void 0}}function C(e){return e.length>1&&e.endsWith(`/`)?e.slice(0,-1):e}function ye(e,t){return e===``?t:t===``?e:e+t}function be(e){return e>=48&&e<=57||e>=65&&e<=70||e>=97&&e<=102}function xe(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(!be(n)||!be(r))return!1;t+=3}else t++;return!0}const Se=/<[^>]*>/g;function Ce(e,t,n,r,i){let a=t.fullName===``;a||r.push(t);let o=t.absolute,s=t.paramMeta.pathPattern,c=o&&s.startsWith(`~`)?s.slice(1):s,l=(o?c:s).replaceAll(Se,``),u=o?l:ye(n,l),d=a?i:we(e,t,u,o?``:n,r,i);for(let n of t.children.values())Ce(e,n,u,r,d);a||r.pop()}function we(e,t,n,r,i,a){let o=Oe(n,r),s=Object.freeze([...i]),c=Te(s),l=C(n),u=Ve(e.rootQueryParams,i),d=He(i),{buildStaticParts:f,buildParamSlots:p}=Be(o?C(r):l,o?i.slice(0,-1):i,e.options.urlParamsEncoding),m={name:t.fullName,parent:a,depth:i.length-1,matchSegments:s,meta:c,declaredQueryParams:u,declaredQueryParamsSet:new Set(u),hasTrailingSlash:n.length>1&&n.endsWith(`/`),constraintPatterns:d,hasConstraints:d.size>0,buildStaticParts:f,buildParamSlots:p,buildParamNamesSet:new Set(p.map(e=>e.paramName))};return t.paramMeta.urlParams.length===0&&(m.cachedResult=Object.freeze({segments:m.matchSegments,params:Object.freeze({}),meta:m.meta})),e.routesByName.set(t.fullName,m),e.segmentsByName.set(t.fullName,s),e.metaByName.set(t.fullName,c),o?Ee(e,m,r):De(e,m,n,l,t),m}function Te(e){let t={};for(let n of e)t[n.fullName]=n.paramTypeMap;return Object.freeze(t)}function Ee(e,t,n){Ie(e,t,n);let r=C(n),i=e.options.caseSensitive?r:r.toLowerCase();e.staticCache.has(i)&&e.staticCache.set(i,t)}function De(e,t,n,r,i){if(Fe(e,t,n),i.paramMeta.urlParams.length===0){let n=e.options.caseSensitive?r:r.toLowerCase();e.staticCache.set(n,t)}}function Oe(e,t){return C(e)===C(t)}function ke(e,t,n){throw Error(`[SegmentMatcher.registerTree] Parameter name conflict at the same path position: '${n}${e}' and '${n}${t}'. A parametric URL segment binds to a single name across every route that shares that position — the value cannot be captured under two names. Rename one so both routes agree (e.g. use '${n}${e}' in both).`)}function Ae(e){throw Error(`[SegmentMatcher.registerTree] Empty parameter name: a bare '${e}' marker must be followed by a name (e.g. '${e}id'). A name-less marker would capture under an empty key at match but emit a literal '${e}' at build — the two disagree, so it is rejected.`)}const je=RegExp(`^[:*](${x})`);function Me(e){let t=je.exec(e)?.[1]??``;return t===``&&Ae(`:`),t}function Ne(e,t,n){return e.paramChild?e.paramChild.name!==t&&!n.has(e)&&ke(e.paramChild.name,t,`:`):(e.paramChild={node:S(),name:t},n.add(e)),e.paramChild.node}function Pe(e,t,n){return e.splatChild?e.splatChild.name!==t&&!n.has(e)&&ke(e.splatChild.name,t,`*`):(e.splatChild={node:S(),name:t},n.add(e)),e.splatChild.node}function Fe(e,t,n){let r=C(n);if(r===`/`){e.root.route=t;return}let i=new Set,a=new Map;w(e,e.root,r,1,t,i,a)}function w(e,t,n,r,i,a,o){let s=o.get(t);if(s===void 0)s=new Set,o.set(t,s);else if(s.has(r))return;s.add(r);let c=n.length;for(;r<=c;){let s=n.indexOf(`/`,r),l=s===-1?c:s,u=n.slice(r,l);if(u.endsWith(`?`)){let r=Me(u);w(e,Ne(t,r,a),n,l+1,i,a,o),l>=c?t.route??=i:w(e,t,n,l+1,i,a,o);return}t=ze(e,t,u,a),r=l+1}t.route=i}function Ie(e,t,n){let r=Le(e,n);r.slashChildRoute=t}function Le(e,t){return Re(e,e.root,t)}function Re(e,t,n){let r=C(n);if(r===`/`||r===``)return t;let i=t,a=1,o=r.length,s=new Set;for(;a<=o;){let t=r.indexOf(`/`,a),n=t===-1?o:t;if(n<=a)break;let c=r.slice(a,n);i=ze(e,i,c,s),a=n+1}return i}function ze(e,t,n,r){if(n.startsWith(`*`)){let e=n.slice(1);e===``&&Ae(`*`);let i=Pe(t,e,r);return t.hasChildren=!0,i}if(n.startsWith(`:`)){let e=Ne(t,Me(n),r);return t.hasChildren=!0,e}let i=e.options.caseSensitive?n:n.toLowerCase();return i in t.staticChildren||(t.staticChildren[i]=S(),t.hasChildren=!0),t.staticChildren[i]}function Be(e,t,n){let r=new Set,i=new Set;for(let e of t){for(let t of e.paramMeta.urlParams)r.add(t);for(let t of e.paramMeta.spatParams)i.add(t)}if(r.size===0)return{buildStaticParts:[e],buildParamSlots:[]};let a=[],o=[],s=new RegExp(String.raw`[:*](${x})(?:<[^>]*>)?(\?)?`,`gu`),c=0,l;for(;(l=s.exec(e))!==null;){let t=l[1],r=l[2]===`?`;a.push(e.slice(c,l.index));let s=i.has(t)?e=>ve(e,n,!0):ge[n];o.push({paramName:t,isOptional:r,encoder:s}),c=l.index+l[0].length}return a.push(e.slice(c)),{buildStaticParts:a,buildParamSlots:o}}function Ve(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}function He(e){let t=new Map;for(let n of e)for(let[e,r]of n.paramMeta.constraintPatterns)t.set(e,r);return t}function Ue(e){return typeof e==`string`?e:typeof e==`object`?JSON.stringify(e):String(e)}var We=class{get options(){return this.#e}#e;#t=S();#n=new Map;#r=new Map;#i=new Map;#a=new Map;#o={cleanPath:``,normalized:``,queryString:void 0};#s=[];#c=``;#l;#u;constructor(e){this.#e={caseSensitive:e.caseSensitive??!0,strictTrailingSlash:e.strictTrailingSlash??!1,strictQueryParams:e.strictQueryParams??!1,urlParamsEncoding:e.urlParamsEncoding??`default`,parseQueryString:e.parseQueryString,buildQueryString:e.buildQueryString},this.#l=this.#e.caseSensitive,this.#u=this.#e.urlParamsEncoding===`none`?null:_e[this.#e.urlParamsEncoding]}registerTree(e){this.#s=e.paramMeta.queryParams,Ce({root:this.#t,options:this.#e,routesByName:this.#n,segmentsByName:this.#r,metaByName:this.#i,staticCache:this.#a,rootQueryParams:this.#s},e,``,[],null)}match(e){if(!this.#h(e))return;let{cleanPath:t,normalized:n,queryString:r}=this.#o,i=this.#l?n:n.toLowerCase(),a=this.#a.get(i);if(a)return this.#e.strictTrailingSlash&&!this.#y(t,a)?void 0:r===void 0&&a.cachedResult?a.cachedResult:this.#_(a,{},r);let o={},s=this.#b(n,o);if(s&&!(this.#e.strictTrailingSlash&&!this.#y(t,s))&&this.#C(o)&&!(s.hasConstraints&&!this.#w(o,s)))return this.#_(s,o,r)}buildPath(e,t,n){let r=this.#n.get(e);if(!r)throw Error(`[SegmentMatcher.buildPath] '${e}' is not defined`);r.hasConstraints&&t&&this.#d(r,e,t);let i=this.#f(r,t),a=this.#p(i,n?.trailingSlash),o=this.#m(r,t,n?.queryParamsMode);return a+(o?`?${o}`:``)}getSegmentsByName(e){return this.#r.get(e)}getMetaByName(e){return this.#i.get(e)}hasRoute(e){return this.#n.has(e)}#d(e,t,n){for(let[r,i]of e.constraintPatterns){let e=n[r];if(e!=null){let n=typeof e==`object`?JSON.stringify(e):String(e);if(!i.pattern.test(n))throw Error(`[SegmentMatcher.buildPath] '${t}' — param '${r}' value '${n}' does not match constraint '${i.constraint}'`)}}}#f(e,t){let n=e.buildStaticParts,r=e.buildParamSlots;if(r.length===0)return n[0];let i=n[0];for(let[e,a]of r.entries()){let r=t?.[a.paramName];if(r==null){if(!a.isOptional)throw Error(`[SegmentMatcher.buildPath] Missing required param '${a.paramName}'`);i.length>1&&i.endsWith(`/`)&&(i=i.slice(0,-1)),i+=n[e+1];continue}if(r===``&&!a.isOptional)throw Error(`[SegmentMatcher.buildPath] Missing required param '${a.paramName}' (empty string)`);let o=a.encoder(Ue(r));i+=o+n[e+1]}return i}#p(e,t){return t===`always`&&!e.endsWith(`/`)?`${e}/`:t===`never`&&e!==`/`&&e.endsWith(`/`)?e.slice(0,-1):e}#m(e,t,n){if(!t||e.declaredQueryParams.length===0&&n!==`loose`)return``;let r={},i=!1;for(let n of e.declaredQueryParams)n in t&&(r[n]=t[n],i=!0);if(n===`loose`)for(let n in t)Object.hasOwn(t,n)&&!e.declaredQueryParamsSet.has(n)&&!e.buildParamNamesSet.has(n)&&(r[n]=t[n],i=!0);return i?this.#e.buildQueryString(r):``}#h(e){if(e===``&&(e=`/`),e.codePointAt(0)!==47)return!1;let t=this.#g(e);if(t===-2)return!1;t===-3&&(e=this.#c);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=C(n);return this.#o.cleanPath=n,this.#o.normalized=i,this.#o.queryString=r,!0}#g(e){let t=!1;for(let n=0;n<e.length;n++){let r=e.codePointAt(n);if(r===35)return this.#c=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}#_(e,t,n){if(!(n!==void 0&&!this.#v(e,t,n)))return{segments:e.matchSegments,params:t,meta:e.meta}}#v(e,t,n){let r;try{r=this.#e.parseQueryString(n)}catch{return!1}if(this.#e.strictQueryParams){let n=e.declaredQueryParamsSet;for(let e in r){if(!n.has(e))return!1;t[e]=r[e]}}else for(let e in r)t[e]=r[e];return!0}#y(e,t){return(e.length>1&&e.endsWith(`/`))===t.hasTrailingSlash}#b(e,t){return e.length===1?this.#t.slashChildRoute??this.#t.route:this.#x(this.#t,e,1,t)}#x(e,t,n,r){let i=e,a=t.length,o=this.#l;for(;n<=a;){let e=t.indexOf(`/`,n),s=e===-1?a:e,c=t.slice(n,s),l=o?c:c.toLowerCase(),u;if(l in i.staticChildren)u=i.staticChildren[l];else if(i.paramChild)u=i.paramChild.node,r[i.paramChild.name]=c;else if(i.splatChild)return this.#S(i.splatChild,t,n,r);else return;i=u,n=s+1}return i.slashChildRoute??i.route}#S(e,t,n,r){let i=e.node;if(!i.hasChildren)return r[e.name]=t.slice(n),i.route;let a={},o=this.#x(i,t,n,a);return o?(Object.assign(r,a),o):(r[e.name]=t.slice(n),i.route)}#C(e){let t=this.#u;if(!t)return!0;for(let n in e){let r=e[n];if(r.includes(`%`)){if(!xe(r))return!1;try{e[n]=t(r)}catch{return!1}}}return!0}#w(e,t){for(let[n,r]of t.constraintPatterns)if(!r.pattern.test(e[n]))return!1;return!0}};const Ge=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)},Ke=(e,t)=>{if(e===void 0)return t.boolean.decodeUndefined();let n=t.boolean.decodeRaw(e);if(n!==null)return n;let r=Ge(e),i=t.number.decode(r);return i===null?t.boolean.decodeValue(r):i},T=e=>{let t=typeof e;if(t!==`string`&&t!==`number`&&t!==`boolean`)throw TypeError(`[search-params] Array element must be a string, number, or boolean — received ${t===`object`&&e===null?`null`:t}`);return encodeURIComponent(e)},qe=(e,t,n)=>{if(t.length===0)return``;let r=`${e}${n}`,i=`${r}=${T(t[0])}`;for(let e=1;e<t.length;e++)i+=`&${r}=${T(t[e])}`;return i},Je={none:{encodeArray:(e,t)=>qe(e,t,``)},brackets:{encodeArray:(e,t)=>qe(e,t,`[]`)},index:{encodeArray:(e,t)=>{if(t.length===0)return``;let n=`${e}[0]=${T(t[0])}`;for(let r=1;r<t.length;r++)n+=`&${e}[${r}]=${T(t[r])}`;return n},indexed:!0},comma:{encodeArray:(e,t)=>{if(t.length===0)return``;let n=`${e}=${T(t[0])}`;for(let e=1;e<t.length;e++)n+=`,${T(t[e])}`;return n},decodeValue:e=>e.includes(`,`)?e.split(`,`):null}},Ye={none:{encode:(e,t)=>`${e}=${t}`,decodeUndefined:()=>null,decodeRaw:()=>null,decodeValue:e=>e},auto:{encode:(e,t)=>`${e}=${t}`,decodeUndefined:()=>null,decodeRaw:e=>e===`true`?!0:e===`false`?!1:null,decodeValue:e=>e},"empty-true":{encode:(e,t)=>t?e:`${e}=false`,decodeUndefined:()=>!0,decodeRaw:e=>e===`true`?!0:e===`false`?!1:null,decodeValue:e=>e}},Xe={default:{encode:e=>e},hidden:{encode:()=>``}},Ze={auto:{decode:e=>{let t=e.length;if(t===0)return null;let n=+(e.codePointAt(0)===45);if(n===t||t-n>1&&e.codePointAt(n)===48&&e.codePointAt(n+1)!==46)return null;let r=!1;for(let i=n;i<t;i++){let a=e.codePointAt(i);if(!(a!==void 0&&a>=48&&a<=57)){if(a===46&&!r&&i!==n&&i!==t-1){r=!0;continue}return null}}let i=Number(e);return Object.is(i,-0)||!Number.isSafeInteger(i)&&!r?null:i}},none:{decode:()=>null}},Qe=(e,t,n,r)=>({boolean:Ye[t],null:Xe[n],number:Ze[r],array:Je[e]}),$e={boolean:Ye.auto,null:Xe.default,number:Ze.auto,array:Je.none},E={arrayFormat:`none`,booleanFormat:`auto`,nullFormat:`default`,numberFormat:`auto`},et={...E,strategies:$e},tt=e=>{if(!e||e.arrayFormat===void 0&&e.booleanFormat===void 0&&e.nullFormat===void 0&&e.numberFormat===void 0)return et;let t=e.arrayFormat??E.arrayFormat,n=e.booleanFormat??E.booleanFormat,r=e.nullFormat??E.nullFormat,i=e.numberFormat??E.numberFormat;return{arrayFormat:t,booleanFormat:n,nullFormat:r,numberFormat:i,strategies:Qe(t,n,r,i)}},D=e=>encodeURIComponent(e),nt=(e,t,n)=>{let r=D(e);switch(typeof t){case`string`:case`number`:return`${r}=${D(t)}`;case`boolean`:return n.strategies.boolean.encode(r,t);case`object`:return t===null?n.strategies.null.encode(r):Array.isArray(t)?n.strategies.array.encodeArray(r,t):`${r}=${D(t)}`;default:return`${r}=${D(t)}`}},rt=e=>{let t=e.indexOf(`?`);return t===-1?e:e.slice(t+1)};function O(e,t,n){t===`__proto__`?Object.defineProperty(e,t,{value:n,writable:!0,enumerable:!0,configurable:!0}):e[t]=n}function it(e,t,n,r){if(!Object.hasOwn(e,t)){O(e,t,r?[n]:n);return}let i=e[t];Array.isArray(i)?i.push(n):O(e,t,[i,n])}function at(e,t,n,r,i){return Ke(r?e.slice(t+1,n):void 0,i)}function ot(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 st(e,t,n){let{searchPart:r,nameEnd:i,nameSourceEnd:a,eqPos:o,end:s,hasValue:c,decodedName:l}=e,u=ot(r,i,a);if(u===null)return!1;let d=at(r,o,s,c,t),f=n.get(l);return f===void 0?n.set(l,[[u,d]]):f.push([u,d]),!0}function ct(e,t,n,r,i,a){let o=e.indexOf(`=`,t),s=o!==-1&&o<n,c=s?o:n,l=c,u=!1;for(let n=t;n<c;n++)if(e.codePointAt(n)===91){l=n,u=!0;break}let d=Ge(e.slice(t,l));if(!(a!==void 0&&u&&st({searchPart:e,nameEnd:l,nameSourceEnd:c,eqPos:o,end:n,hasValue:s,decodedName:d},i,a))){if(!u&&s&&i.array.decodeValue){let t=e.slice(o+1,n),a=i.array.decodeValue(t);if(a){for(let e of a)it(r,d,Ke(e,i),!0);return}}it(r,d,at(e,o,n,s,i),u)}}const lt=(e,t)=>{let n=rt(e);if(n===``||n===`?`)return{};let r={};return ut(n,r,tt(t).strategies),r};function ut(e,t,n){let r=n.array.indexed?new Map:void 0,i=0,a=e.length;for(;i<a;){let o=e.indexOf(`&`,i);o===-1&&(o=a),ct(e,i,o,t,n,r),i=o+1}if(r!==void 0)for(let[e,n]of r)n.sort((e,t)=>e[0]-t[0]),O(t,e,n.map(e=>e[1]))}const dt=(e,t)=>{let n=Object.keys(e);if(n.length===0)return``;let r=tt(t),i=[];for(let t of n){let n=e[t];if(n===void 0)continue;let a=nt(t,n,r);a&&i.push(a)}return i.join(`&`)};function k(e,t){let n=e.path,r=n.startsWith(`~`),i=r?n.slice(1):n,a={name:e.name,path:i,absolute:r,children:[],parent:t};if(e.children)for(let t of e.children){let e=k(t,a);a.children.push(e)}return a}function ft(e,t,n){let r=k({name:e,path:t},null);for(let e of n){let t=k(e,r);r.children.push(t)}return r}const pt=Object.freeze(new Map),mt=Object.freeze([]);function ht(e){return e.parent?.name?`${e.parent.fullName}.${e.name}`:e.name}function gt(e){let t=new Map;for(let n of e)t.set(n.name,n);return t}function _t(e,t,n){let r=[],i=[];for(let a of e){let e=vt(a,t,n);r.push(e),e.absolute||i.push(e)}return{childrenMap:gt(r),nonAbsoluteChildren:i}}function vt(e,t,n){let r=pe(e.path),i=r.paramTypeMap,a={name:e.name,path:e.path,absolute:e.absolute,parent:t,children:void 0,paramMeta:r,nonAbsoluteChildren:void 0,fullName:``,paramTypeMap:i};if(a.fullName=ht(a),e.children.length===0)a.children=pt,a.nonAbsoluteChildren=mt;else{let{childrenMap:t,nonAbsoluteChildren:r}=_t(e.children,a,n);a.children=t,a.nonAbsoluteChildren=r}return n&&(e.children.length>0&&(Object.freeze(a.nonAbsoluteChildren),Object.freeze(a.children)),Object.freeze(i),Object.freeze(r.urlParams),Object.freeze(r.queryParams),Object.freeze(r.spatParams),Object.freeze(r),Object.freeze(a)),a}function yt(e,t=!0){return vt(e,null,t)}function bt(e,t){let n=[],r={add(e){return n.push(e),r},addMany(e){return n.push(...e),r},build(r){return yt(ft(e,t,n),!r?.skipFreeze)}};return r}function xt(e,t,n,r){return bt(e,t).addMany(n).build(r)}function A(e){let t=e.absolute?`~${e.path}`:e.path,n={name:e.name,path:t};return e.children.size>0&&(n.children=Array.from(e.children.values(),A)),n}function St(e){return Array.from(e.children.values(),A)}function Ct(e){let t=e?.queryParams;return new We({...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,t),buildQueryString:e=>dt(e,t)})}RegExp(`[:*](?!${x})`);const wt={defaultRoute:``,defaultParams:{},trailingSlash:`preserve`,queryParamsMode:`loose`,queryParams:E,urlParamsEncoding:`default`,allowNotFound:!0,rewritePathOnMatch:!0};function Tt(e){Object.freeze(e);for(let t of Object.values(e))t&&typeof t==`object`&&t.constructor===Object&&Tt(t);return e}function Et(e,t){return typeof e==`function`?e(t):e}function Dt(e){if(!e||typeof e!=`object`||Array.isArray(e))throw TypeError(`[router.constructor] options must be a plain object`)}var Ot=class{#e;constructor(e={}){this.#e=Tt({...wt,...e})}static validateOptionsIsObject(e){Dt(e)}get(){return this.#e}};function j(e,t){if(e===t)return!0;if(Array.isArray(e)&&Array.isArray(t)){if(e.length!==t.length)return!1;for(let n=0;n<e.length;n++)if(!j(e[n],t[n]))return!1;return!0}return!1}const kt=new WeakMap;function At(e){return kt.get(e)}function jt(e,t){kt.set(e,t)}var Mt=class{#e=void 0;#t=void 0;#n;get(){return this.#e}set(e){this.#t=this.#e,this.#e=e?ie(e):void 0}getPrevious(){return this.#t}reset(){this.#e=void 0,this.#t=void 0}setDependencies(e){this.#n=e}makeState(e,t,n,r,i){let a=this.#n.getDefaultParams(),o=Object.hasOwn(a,e),s;s=o?Object.freeze({...a[e],...t}):!t||t===h?h:Object.freeze({...t});let c={name:e,params:s,path:n??this.#n.buildPath(e,t),context:{},...!i&&{transition:g}};return r&&jt(c,r),i?c:ie(c)}areStatesEqual(e,t,n=!0){if(!e||!t)return!!e==!!t;if(e.name!==t.name)return!1;if(n){let n=this.#n.getUrlParams(e.name);for(let r of n)if(!j(e.params[r],t.params[r]))return!1;return!0}let r=Object.keys(e.params),i=Object.keys(t.params);if(r.length!==i.length)return!1;for(let n of r)if(!(n in t.params)||!j(e.params[n],t.params[n]))return!1;return!0}};const Nt={[f.ROUTER_START]:p.ROUTER_START,[f.ROUTER_STOP]:p.ROUTER_STOP,[f.TRANSITION_SUCCESS]:p.TRANSITION_SUCCESS,[f.TRANSITION_START]:p.TRANSITION_START,[f.TRANSITION_LEAVE_APPROVE]:p.TRANSITION_LEAVE_APPROVE,[f.TRANSITION_ERROR]:p.TRANSITION_ERROR,[f.TRANSITION_CANCEL]:p.TRANSITION_CANCEL},Pt=Object.keys(Nt),M=`router.usePlugin`;function Ft(e){if(!(e&&typeof e==`object`)||Array.isArray(e))throw TypeError(`[router.usePlugin] Plugin factory must return an object, got ${typeof e}`);if(typeof e.then==`function`)throw TypeError(`[router.usePlugin] Async plugin factories are not supported. Factory returned a Promise instead of a plugin object.`)}var It=class e{#e=new Set;#t=new Set;#n;#r=null;static validatePlugin(e){Ft(e)}setDependencies(e){this.#n=e}setValidatorGetter(e){this.#r=e}count(){return this.#e.size}use(...e){if(this.#r?.()?.plugins.validateCountThresholds(this.#e.size+e.length),e.length===1){let t=e[0],n=this.#a(t);this.#e.add(t);let r=!1,a=()=>{if(!r){r=!0,this.#e.delete(t),this.#t.delete(a);try{n()}catch(e){i.error(M,`Error during cleanup:`,e)}}};return this.#t.add(a),a}let t=this.#i(e),n=[];try{for(let e of t){let t=this.#a(e);n.push({factory:e,cleanup:t})}}catch(e){for(let{cleanup:e}of n)try{e()}catch(e){i.error(M,`Cleanup error:`,e)}throw e}for(let{factory:e}of n)this.#e.add(e);let r=!1,a=()=>{if(!r){r=!0,this.#t.delete(a);for(let{factory:e}of n)this.#e.delete(e);for(let{cleanup:e}of n)try{e()}catch(e){i.error(M,`Error during cleanup:`,e)}}};return this.#t.add(a),a}getAll(){return[...this.#e]}has(e){return this.#e.has(e)}disposeAll(){for(let e of this.#t)e();this.#e.clear(),this.#t.clear()}#i(e){let t=new Set;for(let n of e)t.has(n)?this.#r?.()?.plugins.warnBatchDuplicates(e):t.add(n);return t}#a(t){let n=this.#n.compileFactory(t);e.validatePlugin(n),this.#r?.()?.plugins.validatePluginKeys(n),Object.freeze(n);let r=[];for(let e of Pt)e in n&&(typeof n[e]==`function`?(r.push(this.#n.addEventListener(Nt[e],n[e])),e===`onStart`&&this.#n.canNavigate()&&this.#r?.()?.plugins.warnPluginAfterStart(e)):this.#r?.()?.plugins.warnPluginMethodType(e));return()=>{for(let e of r)e();typeof n.teardown==`function`&&n.teardown()}}};const Lt=()=>!0,Rt=()=>!1,zt=()=>Lt,Bt=()=>Rt;function Vt(e){return e?zt:Bt}var Ht=class{#e=new Map;#t=new Map;#n=new Map;#r=new Map;#i=new Map;#a=new Map;#o=[this.#i,this.#a];#s;#c=null;setDependencies(e){this.#s=e}setValidatorGetter(e){this.#c=e}getHandlerCount(e){let t=e===`activate`?this.#e:this.#n,n=e===`activate`?this.#t:this.#r;if(t.size===0)return n.size;if(n.size===0)return t.size;let r=new Set(t.keys());for(let e of n.keys())r.add(e);return r.size}addCanActivate(e,t,n=!1,r){this.#l(`activate`,e,t,n,`canActivate`,r)}addCanDeactivate(e,t,n=!1,r){this.#l(`deactivate`,e,t,n,`canDeactivate`,r)}clearCanActivate(e,t=!1){let n=this.#e.delete(e),r=t?!1:this.#t.delete(e);(n||r)&&this.#u(`activate`,e)}clearCanDeactivate(e,t=!1){let n=this.#n.delete(e),r=t?!1:this.#r.delete(e);(n||r)&&this.#u(`deactivate`,e)}clearAll(){this.#e.clear(),this.#t.clear(),this.#n.clear(),this.#r.clear(),this.#a.clear(),this.#i.clear()}clearDefinitionGuards(){for(let e of this.#e.keys())this.#t.has(e)||this.#a.delete(e);for(let e of this.#n.keys())this.#r.has(e)||this.#i.delete(e);this.#e.clear(),this.#n.clear()}getFactories(){let e={},t={};for(let[t,n]of this.#n)e[t]=n;for(let[t,n]of this.#r)e[t]=n;for(let[e,n]of this.#e)t[e]=n;for(let[e,n]of this.#t)t[e]=n;return[e,t]}getFactoriesByOrigin(){let e={},t={},n={},r={};for(let[t,n]of this.#n)e[t]=n;for(let[e,n]of this.#e)t[e]=n;for(let[e,t]of this.#r)n[e]=t;for(let[e,t]of this.#t)r[e]=t;return{definition:[e,t],external:[n,r]}}getFunctions(){return this.#o}canNavigateTo(e,t,n,r){for(let t of e)if(!this.#f(this.#i,t,n,r,`canNavigateTo`))return!1;for(let e of t)if(!this.#f(this.#a,e,n,r,`canNavigateTo`))return!1;return!0}compileGuardFactory(e,t){let n=typeof e==`boolean`?Vt(e):e,r=this.#s.compileFactory(n);if(typeof r!=`function`)throw TypeError(`[router.${t}] Factory must return a function, got ${typeof r}`);return r}#l(e,t,n,r,i,a){let o=this.#d(e),s=e===`activate`?this.#a:this.#i,c=r?o.definition:o.external,l=r?o.external:o.definition;if(c.has(t)||l.has(t))this.#c?.()?.lifecycle.warnOverwrite(t,e,i);else{let t=this.#c?.();if(t){let n=this.getHandlerCount(e);t.lifecycle.validateHandlerLimit(n,i),t.lifecycle.validateCountThresholds(n+1,i)}}let u=typeof n==`boolean`?Vt(n):n,d=c.get(t);c.set(t,u);try{let e=a??this.compileGuardFactory(u,i);s.set(t,e)}catch(n){throw d===void 0?c.delete(t):c.set(t,d),this.#u(e,t),n}}#u(e,t){let n=this.#d(e),r=e===`activate`?this.#a:this.#i,i=n.external.get(t)??n.definition.get(t);if(!i){r.delete(t);return}try{let e=this.#s.compileFactory(i);if(typeof e!=`function`){r.delete(t);return}r.set(t,e)}catch{r.delete(t)}}#d(e){return e===`activate`?{definition:this.#e,external:this.#t}:{definition:this.#n,external:this.#r}}#f(e,t,n,r,a){let o=e.get(t);if(!o)return!0;try{let e=o(n,r);return typeof e==`boolean`?e:(this.#c?.()?.lifecycle.warnAsyncGuardSync(t,a),!1)}catch(e){return i.warn(`router.${a}`,`Guard for "${t}" threw — treated as navigation-blocking (returned false)`,e),!1}}};const Ut=new Set([`name`,`path`,`children`,`canActivate`,`canDeactivate`,`forwardTo`,`encodeParams`,`decodeParams`,`defaultParams`]);function N(){return{decoders:Object.create(null),encoders:Object.create(null),defaultParams:Object.create(null),forwardMap:Object.create(null),forwardFnMap:Object.create(null)}}function Wt(e,t){for(let n in e)if(e[n]!==t[n])return!1;return!0}function Gt(e,t,n){for(let r in e)if(!(r in n)&&e[r]!==t[r])return!1;return!0}function Kt(e,t){if(!t||!qt(e,t))return e;let n={};for(let r in e)t[r]!==`query`&&(n[r]=e[r]);return n}function qt(e,t){for(let n in e)if(t[n]===`query`)return!0;return!1}function P(e){let t={name:e.name,path:e.path};return e.children&&(t.children=e.children.map(e=>P(e))),t}function Jt(e,t,n=``){for(let r=0;r<e.length;r++){let i=e[r],a=n?`${n}.${i.name}`:i.name;if(a===t)return e.splice(r,1),!0;if(i.children&&t.startsWith(`${a}.`)&&Jt(i.children,t,a))return!0}return!1}function Yt(e,t){for(let n of Object.keys(e))t(n)&&delete e[n]}function Xt(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 Zt(e,t,n=100){let r=new Set,i=[e],a=e;for(;t[a];){let e=t[a];if(r.has(e)){let t=i.indexOf(e),n=[...i.slice(t),e];throw Error(`Circular forwardTo: ${n.join(` → `)}`)}if(r.add(a),i.push(e),a=e,i.length>n)throw Error(`forwardTo chain exceeds maximum depth (${n}): ${i.join(` → `)}`)}return a}function Qt(e,t,n){let r=xt(``,t,e),i=Ct(n);return i.registerTree(r),{tree:r,matcher:i}}function F(e){let t=Qt(e.definitions,e.rootPath,e.matcherOptions);e.tree=t.tree,e.matcher=t.matcher,e.urlParamsCache.clear()}function $t(e){F(e),e.resolvedForwardMap=I(e.config)}function en(e){tn(e),F(e)}function tn(e){e.definitions.length=0,Object.assign(e.config,N()),e.resolvedForwardMap=Object.create(null),e.routeCustomFields=Object.create(null)}function I(e){let t=Object.create(null);for(let n of Object.keys(e.forwardMap))t[n]=Zt(n,e.forwardMap);return t}function nn(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 rn(e,t,n){if(e.canActivate){let n=typeof e.forwardTo==`string`?e.forwardTo:`[dynamic]`;i.warn(`real-router`,`Route "${t}" has both forwardTo and canActivate. canActivate will be ignored because forwardTo creates a redirect (industry standard). Move canActivate to the target route "${n}".`)}if(e.canDeactivate){let n=typeof e.forwardTo==`string`?e.forwardTo:`[dynamic]`;i.warn(`real-router`,`Route "${t}" has both forwardTo and canDeactivate. canDeactivate will be ignored because forwardTo creates a redirect (industry standard). Move canDeactivate to the target route "${n}".`)}nn(e.forwardTo,t),typeof e.forwardTo==`string`?n.forwardMap[t]=e.forwardTo:n.forwardFnMap[t]=e.forwardTo}function an(e,t,n,r,i,a){let o=Object.fromEntries(Object.entries(e).filter(([e])=>!Ut.has(e)));Object.keys(o).length>0&&(r[t]=o),e.canActivate&&i.set(t,e.canActivate),e.canDeactivate&&a.set(t,e.canDeactivate),e.forwardTo&&rn(e,t,n),e.decodeParams&&(n.decoders[t]=t=>e.decodeParams?.(t)??t),e.encodeParams&&(n.encoders[t]=t=>e.encodeParams?.(t)??t),e.defaultParams&&(n.defaultParams[t]=e.defaultParams)}function on(e,t,n,r,i,a=``){for(let o of e){let e=a?`${a}.${o.name}`:o.name;an(o,e,t,n,r,i),o.children&&on(o.children,t,n,r,i,e)}}function sn(e){let t=N();return Object.assign(t.decoders,e.decoders),Object.assign(t.encoders,e.encoders),Object.assign(t.defaultParams,e.defaultParams),Object.assign(t.forwardMap,e.forwardMap),Object.assign(t.forwardFnMap,e.forwardFnMap),t}function cn(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]:cn(n,t,i)}})}function L(e,t,n){for(let r of e){let e=t?`${t}.${r.name}`:r.name;n(e),r.children&&L(r.children,e,n)}}function ln(e,t,n){let r=new Set;L(e,t,e=>{if(r.has(e))throw Error(`[router.${n}] Duplicate route "${e}" in batch`);r.add(e)})}function un(e,t){for(let n of e){if(n.name.startsWith(`@@`))throw Error(`[router.${t}] Route name "${n.name}" uses the reserved "@@" prefix. Routes with this prefix are internal and cannot be modified through the public API.`);n.children&&un(n.children,t)}}function dn(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 fn(e,t,n){if(un(t,`addRoute`),n!==void 0&&!e.matcher.hasRoute(n))throw Error(`[router.addRoute] Parent route "${n}" does not exist`);L(t,n??``,t=>{if(e.matcher.hasRoute(t))throw Error(`[router.addRoute] Route "${t}" already exists`)}),ln(t,n??``,`addRoute`),dn(t,n??``,`addRoute`)}function pn(e,t,n,r,i,a,o){let s=new Map,c=new Map;on(t,n,r,s,c,i);let l=I(n),{tree:u,matcher:d}=Qt(e,a,o);return{definitions:e,config:n,routeCustomFields:r,pendingCanActivate:s,pendingCanDeactivate:c,tree:u,matcher:d,resolvedForwardMap:l}}function mn(e,t,n){return pn(cn(e.definitions,t.map(e=>P(e)),n===void 0?[]:n.split(`.`)),t,sn(e.config),Object.assign(Object.create(null),e.routeCustomFields),n??``,e.rootPath,e.matcherOptions)}function hn(e,t,n){return pn(e.map(e=>P(e)),e,N(),Object.create(null),``,t,n)}function gn(e,t,n){let r=[];for(let[i,a]of e)r.push([i,a,t(a,n)]);return r}function _n(e,t){let n=e.depsStore,r=gn(t.pendingCanActivate,n.compileGuard,`canActivate`),i=gn(t.pendingCanDeactivate,n.compileGuard,`canDeactivate`);e.definitions.length=0;for(let n of t.definitions)e.definitions.push(n);Object.assign(e.config,t.config),e.routeCustomFields=t.routeCustomFields,e.tree=t.tree,e.matcher=t.matcher,e.urlParamsCache.clear(),e.resolvedForwardMap=t.resolvedForwardMap;for(let[e,t,i]of r)n.addActivateGuard(e,t,i);for(let[e,t,r]of i)n.addDeactivateGuard(e,t,r)}function vn(e,t){let n=hn(e,``,t);return{definitions:n.definitions,config:n.config,tree:n.tree,matcher:n.matcher,urlParamsCache:new Map,resolvedForwardMap:n.resolvedForwardMap,routeCustomFields:n.routeCustomFields,rootPath:``,matcherOptions:t,depsStore:void 0,lifecycleNamespace:void 0,pendingCanActivate:n.pendingCanActivate,pendingCanDeactivate:n.pendingCanDeactivate}}const R=[];Object.freeze(R);function yn(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 bn=new Set([`string`,`number`,`boolean`]);function xn(e){return bn.has(typeof e)}function Sn(e,t,n,r){let i=t[e];if(!i||typeof i!=`object`)return!0;for(let e of Object.keys(i)){let t=n.params[e],i=r.params[e];if(xn(t)&&xn(i)&&String(t)!==String(i))return!1}return!0}function Cn(e,t,n,r,i,a){for(let o=0;o<a;o++){let a=r[o];if(a!==i[o]||!Sn(a,e,t,n))return o}return a}const wn=new Map;function z(e){let t=wn.get(e);if(t)return t;let n=Tn(e);return Object.freeze(n),wn.set(e,n),n}function Tn(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]:yn(e)}let B,V,H=null,En,Dn,U=null;function On(e,t){if(!t)return{intersection:``,toActivate:z(e.name),toDeactivate:R};let n=At(e),r=At(t);if(!n&&!r)return{intersection:``,toActivate:z(e.name),toDeactivate:z(t.name)};let i=z(e.name),a=z(t.name),o=Math.min(a.length,i.length),s=Cn(n??r,e,t,i,a,o),c;if(s>=a.length)c=R;else if(s===0&&a.length===1)c=a;else{c=[];for(let e=a.length-1;e>=s;e--)c.push(a[e])}let l=s===0?i:i.slice(s);return{intersection:s>0?a[s-1]:``,toDeactivate:c,toActivate:l}}function W(e,t){if(H!==null&&e===B&&t===V)return H;if(U!==null&&e===En&&t===Dn)return U;let n=On(e,t);return En=B,Dn=V,U=H,B=e,V=t,H=n,n}function kn(e){let t=[];for(let n of e)for(let e of n.paramMeta.urlParams)t.push(e);return t}function An(e,t){return{name:t??e.segments.at(-1).fullName,params:e.params,meta:e.meta}}var jn=class{#e;#t;get#n(){return this.#e.depsStore}constructor(e=[],t){this.#e=vn(e,t)}static shouldUpdateNode(e){return(t,n)=>{if(!(t&&typeof t==`object`&&`name`in t))throw TypeError(`[router.shouldUpdateNode] toState must be valid State object`);if(t.transition.reload||e===``)return!0;let{intersection:r,toActivate:i,toDeactivate:a}=W(t,n);return e===r||i.includes(e)?!0:a.includes(e)}}setDependencies(e){this.#e.depsStore=e;for(let[t,n]of this.#e.pendingCanActivate)e.addActivateGuard(t,n);this.#e.pendingCanActivate.clear();for(let[t,n]of this.#e.pendingCanDeactivate)e.addDeactivateGuard(t,n);this.#e.pendingCanDeactivate.clear()}setLifecycleNamespace(e){this.#e.lifecycleNamespace=e}setRootPath(e){this.#e.rootPath=e,F(this.#e)}hasRoute(e){return this.#e.matcher.hasRoute(e)}clearRoutes(){en(this.#e)}buildPath(e,t,n){if(e===d.UNKNOWN_ROUTE)return typeof t?.path==`string`?t.path:``;let r=Object.hasOwn(this.#e.config.defaultParams,e)?{...this.#e.config.defaultParams[e],...t}:t??{},i=typeof this.#e.config.encoders[e]==`function`?this.#e.config.encoders[e]({...r}):r;return this.#e.matcher.buildPath(e,i,this.#i(n))}matchPath(e,t){let n=t,r=this.#e.matcher.match(e);if(!r)return;let{name:i,params:a,meta:o}=An(r),s=typeof this.#e.config.decoders[i]==`function`?this.#e.config.decoders[i](a):a,{name:c,params:l}=this.#n.forwardState(i,s),u=e;if(n.rewritePathOnMatch){let t=typeof this.#e.config.encoders[c]==`function`?this.#e.config.encoders[c]({...l}):l,r=n.trailingSlash;u=this.#e.matcher.buildPath(c,t,{trailingSlash:r===`never`||r===`always`?r:void 0,queryParamsMode:n.queryParamsMode}),r===`preserve`&&(u=Xt(e,u))}return this.#n.makeState(c,l,u,o)}forwardState(e,t){if(Object.hasOwn(this.#e.config.forwardFnMap,e)){let n=this.#r(e,t),r=this.#e.config.forwardFnMap[e],i=this.#a(e,r,t);return{name:i,params:this.#r(i,n)}}let n=this.#e.resolvedForwardMap[e]??e;if(n!==e&&Object.hasOwn(this.#e.config.forwardFnMap,n)){let r=this.#r(e,t),i=this.#e.config.forwardFnMap[n],a=this.#a(n,i,t);return{name:a,params:this.#r(a,r)}}if(n!==e){let r=this.#r(e,t);return{name:n,params:this.#r(n,r)}}return{name:e,params:this.#r(e,t)}}buildStateResolved(e,t){let n=this.#e.matcher.getSegmentsByName(e);if(n)return An({segments:n,params:t,meta:this.#e.matcher.getMetaByName(e)},e)}isActiveRoute(e,t={},n=!1,r=!0){let i=this.#n.getState();if(!i)return!1;let a=i.name;if(a!==e&&!a.startsWith(`${e}.`)&&!e.startsWith(`${a}.`))return!1;let o=this.#e.config.defaultParams[e];if(n||a===e){let n={name:e,params:o?{...o,...t}:t,path:``,transition:g,context:{}};return this.#n.areStatesEqual(n,i,r)}if(!a.startsWith(`${e}.`))return!1;let s=i.params;return Wt(t,s)?o?Gt(r?Kt(o,this.#e.matcher.getMetaByName(e)?.[e]):o,s,t):!0:!1}getMetaForState(e){return this.#e.matcher.hasRoute(e)?this.#e.matcher.getMetaByName(e):void 0}getUrlParams(e){let t=this.#e.urlParamsCache.get(e);if(t!==void 0)return t;let n=this.#e.matcher.getSegmentsByName(e),r=n?kn(n):[];return this.#e.urlParamsCache.set(e,r),r}getStore(){return this.#e}#r(e,t){return Object.hasOwn(this.#e.config.defaultParams,e)?{...this.#e.config.defaultParams[e],...t}:t}#i(e){if(this.#t)return this.#t;let t=e?.trailingSlash;return this.#t=Object.freeze({trailingSlash:t===`never`||t===`always`?t:void 0,queryParamsMode:e?.queryParamsMode}),this.#t}#a(e,t,n){let r=new Set([e]),i=t(this.#n.getDependency,n),a=0;if(typeof i!=`string`)throw TypeError(`forwardTo callback must return a string, got ${typeof i}`);for(;a<100;){if(this.#e.matcher.getSegmentsByName(i)===void 0)throw Error(`Route "${i}" does not exist`);if(r.has(i)){let e=[...r,i].join(` → `);throw Error(`Circular forwardTo: ${e}`)}if(r.add(i),Object.hasOwn(this.#e.config.forwardFnMap,i)){let e=this.#e.config.forwardFnMap[i];i=e(this.#n.getDependency,n),a++;continue}let e=this.#e.config.forwardMap[i];if(e!==void 0){i=e,a++;continue}return i}throw Error(`forwardTo exceeds maximum depth of 100`)}};const Mn=new Set(Object.values(l)),Nn=new Set([`code`,`segment`,`path`]),Pn=new Set([`setCode`,`setErrorInstance`,`setAdditionalFields`,`hasField`,`getField`,`toJSON`]);var G=class extends Error{segment;path;code;constructor(e,{message:t,segment:n,path:r,...i}={}){super(t??e),this.name=`RouterError`,this.code=e,this.segment=n,this.path=r;for(let[e,t]of Object.entries(i)){if(Nn.has(e))throw TypeError(`[RouterError] Cannot set reserved property "${e}"`);Pn.has(e)||(this[e]=t)}}setCode(e){this.code=e,Mn.has(this.message)&&(this.message=e)}setErrorInstance(e){if(!e)throw TypeError(`[RouterError.setErrorInstance] err parameter is required and must be an Error instance`);this.message=e.message,this.cause=e.cause,this.stack=e.stack??``}setAdditionalFields(e){for(let[t,n]of Object.entries(e)){if(Nn.has(t))throw TypeError(`[RouterError.setAdditionalFields] Cannot set reserved property "${t}"`);Pn.has(t)||(this[t]=n)}}hasField(e){return e in this}getField(e){return this[e]}toJSON(){let e={code:this.code,message:this.message};this.segment!==void 0&&(e.segment=this.segment),this.path!==void 0&&(e.path=this.path);let t=new Set([`code`,`message`,`segment`,`path`,`stack`,`name`]);for(let n in this)Object.hasOwn(this,n)&&!t.has(n)&&(e[n]=this[n]);return e}};const Fn=new G(l.ROUTER_NOT_STARTED),In=new G(l.ROUTE_NOT_FOUND),Ln=new G(l.SAME_STATES),K=Promise.reject(Fn),Rn=Promise.reject(In),zn=Promise.reject(Ln);K.catch(()=>{}),Rn.catch(()=>{}),zn.catch(()=>{});function Bn(e,t,n,r,i){Object.freeze(n),Object.freeze(r);let a={phase:`activating`,reason:`success`,segments:Object.freeze({deactivated:n,activated:r,intersection:i})};return e?.name!==void 0&&(a.from=e.name),t.reload!==void 0&&(a.reload=t.reload),t.replace!==void 0&&(a.replace=t.replace),t.redirected!==void 0&&(a.redirected=t.redirected),Object.freeze(a)}function Vn({signal:e,...t}){return t}function Hn(e,t){let{toState:n,fromState:r,opts:i,toDeactivate:a,toActivate:o,intersection:s}=t;if(n.name!==d.UNKNOWN_ROUTE&&!e.hasRoute(n.name)){let t=new G(l.ROUTE_NOT_FOUND,{routeName:n.name});throw e.sendTransitionFail(n,r,t),t}if(r)for(let n of a)!o.includes(n)&&t.canDeactivateFunctions.has(n)&&e.clearCanDeactivate(n);n.transition=Bn(r,i,a,o,s);let c=Object.freeze(n);e.setState(c);let u=i.signal===void 0?i:Vn(i);return e.sendTransitionDone(c,r,u),c}function Un(e,t,n,r){let i=t;i.code===l.TRANSITION_CANCELLED||i.code===l.ROUTE_NOT_FOUND||e.sendTransitionFail(n,r,i)}function q(e,t,n){if(e instanceof DOMException&&e.name===`AbortError`)throw new G(l.TRANSITION_CANCELLED);if(e instanceof G&&e.code===l.TRANSITION_CANCELLED)throw e;Wn(e,t,n)}function Wn(e,t,n){throw e instanceof G?(e.setCode(t),e):new G(t,Kn(e,n))}const Gn=new Set([`code`,`segment`,`path`,`then`]);function Kn(e,t){let n={segment:t};if(e instanceof Error)return{...n,message:e.message,stack:e.stack,...`cause`in e&&e.cause!==void 0&&{cause:e.cause}};if(e&&typeof e==`object`){let t={};for(let[n,r]of Object.entries(e))Gn.has(n)||(t[n]=r);return{...n,...t}}return n}async function qn(e,t,n){let r;try{r=await e}catch(e){q(e,t,n);return}if(!r)throw new G(t,{segment:n})}async function Jn(e,t,n,r,i,a,o,s,c,u){await qn(c,n,u);for(let c=s;c<t.length;c++){if(!o())throw new G(l.TRANSITION_CANCELLED);let s=t[c],u=e.get(s);if(!u)continue;let d=!1;try{d=u(r,i,a)}catch(e){q(e,n,s)}if(d instanceof Promise){await qn(d,n,s);continue}if(!d)throw new G(n,{segment:s})}}async function Yn(e,t,n,r,i,a,o,s,c){if(await e,!s())throw new G(l.TRANSITION_CANCELLED);let u=c();if(u!==void 0&&(await u,!s()))throw new G(l.TRANSITION_CANCELLED);if(r){let e=J(t,n,l.CANNOT_ACTIVATE,i,a,o,s);if(e!==void 0&&await e,!s())throw new G(l.TRANSITION_CANCELLED)}}function Xn(e,t,n,r,i,a,o,s,c,u,d){if(i){let i=J(e,n,l.CANNOT_DEACTIVATE,o,s,c,u);if(i!==void 0)return Yn(i,t,r,a,o,s,c,u,d)}if(!u())throw new G(l.TRANSITION_CANCELLED);let f=d();if(f!==void 0)return Zn(f,a?t:void 0,r,o,s,c,u);if(a)return J(t,r,l.CANNOT_ACTIVATE,o,s,c,u)}async function Zn(e,t,n,r,i,a,o){if(await e,!o())throw new G(l.TRANSITION_CANCELLED);if(t!==void 0){let e=J(t,n,l.CANNOT_ACTIVATE,r,i,a,o);if(e!==void 0&&await e,!o())throw new G(l.TRANSITION_CANCELLED)}}function J(e,t,n,r,i,a,o){for(let[s,c]of t.entries()){if(!o())throw new G(l.TRANSITION_CANCELLED);let u=e.get(c);if(!u)continue;let d=!1;try{d=u(r,i,a)}catch(e){q(e,n,c)}if(d instanceof Promise)return Jn(e,t,n,r,i,a,o,s+1,d,c);if(!d)throw new G(n,{segment:c})}}const Qn=[d.UNKNOWN_ROUTE];Object.freeze(Qn);const $n={replace:!0};Object.freeze($n);function er(e,t){return t?.name===d.UNKNOWN_ROUTE&&!e.replace?{...e,replace:!0}:e}function tr(e,t,n){return!!e&&!t.reload&&!t.force&&e.path===n.path}var nr=class{lastSyncResolved=!1;lastSyncRejected=!1;#e;#t=null;#n=0;setDependencies(e){this.#e=e}navigate(e,t,n){this.lastSyncResolved=!1;let r=this.#e;if(!r.canNavigate())return this.lastSyncRejected=!0,K;let i;try{i=r.buildNavigateState(e,t)}catch(e){return Promise.reject(e)}return i?this.#r(i,n):(r.emitTransitionError(void 0,r.getState(),In),this.lastSyncRejected=!0,Rn)}navigateToState(e,t){this.lastSyncResolved=!1;let n=this.#e;if(!n.canNavigate())return this.lastSyncRejected=!0,K;if(e.name!==d.UNKNOWN_ROUTE&&!n.hasRoute(e.name)){let t=new G(l.ROUTE_NOT_FOUND,{routeName:e.name});return n.emitTransitionError(void 0,n.getState(),t),Promise.reject(t)}let r={name:e.name,params:e.params,path:e.path,context:{...e.context}};return this.#r(r,t)}navigateToDefault(e){this.lastSyncResolved=!1;let t=this.#e;if(!t.getOptions().defaultRoute)return Promise.reject(new G(l.ROUTE_NOT_FOUND,{routeName:`defaultRoute not configured`}));let n,r;try{({route:n,params:r}=t.resolveDefault())}catch(e){return Promise.reject(e)}return n?this.navigate(n,r,e):Promise.reject(new G(l.ROUTE_NOT_FOUND,{routeName:`defaultRoute resolved to empty`}))}navigateToNotFound(e){this.#c();let t=this.#e.getState(),n=t?z(t.name).toReversed():[];Object.freeze(n);let r={deactivated:n,activated:Qn,intersection:``};Object.freeze(r);let i={phase:`activating`,...t&&{from:t.name},reason:`success`,replace:!0,segments:r};Object.freeze(i);let a={name:d.UNKNOWN_ROUTE,params:h,path:e,transition:i,context:{}};return Object.freeze(a),this.#e.setState(a),this.#e.emitTransitionSuccess(a,t,$n),a}abortCurrentNavigation(){this.#t?.abort(new G(l.TRANSITION_CANCELLED)),this.#t=null}#r(e,t){let n=this.#e,r,i=!1,a=null;try{if(r=n.getState(),t=er(t,r),tr(r,t,e))return n.emitTransitionError(e,r,Ln),this.lastSyncRejected=!0,zn;this.#c(t.signal);let o=++this.#n;if(n.startTransition(e,r),i=!0,this.#n!==o)throw new G(l.TRANSITION_CANCELLED);let[s,c]=n.getLifecycleFunctions(),u=e.name===d.UNKNOWN_ROUTE,f=W(e,r),{toDeactivate:p,toActivate:m,intersection:h}=f,ee=r&&!t.forceDeactivate&&p.length>0,g=!u&&m.length>0,_=s.size>0||c.size>0,v=e;if(!_){let e=this.#o(v,r,o,t,f,s);if(e!==void 0)return e}if(_){a=new AbortController,this.#t=a;let i=()=>this.#n===o&&n.isActive(),u=a.signal,d=Xn(s,c,p,m,!!ee,g,e,r,u,i,()=>{if(n.sendLeaveApprove(v,r),n.hasLeaveListeners())return n.awaitLeaveListeners(v,r,u)});if(d!==void 0)return this.#i(d,{toState:e,fromState:r,opts:t,toDeactivate:p,toActivate:m,intersection:h,canDeactivateFunctions:s},a,o);if(!i())throw new G(l.TRANSITION_CANCELLED);this.#s(a,!1)}let te=Hn(n,{toState:e,fromState:r,opts:t,toDeactivate:p,toActivate:m,intersection:h,canDeactivateFunctions:s});return this.lastSyncResolved=!0,Promise.resolve(te)}catch(t){return this.#a(t,a,i,e,r),Promise.reject(t)}}async#i(e,t,n,r){let i=this.#e,a=()=>this.#n===r&&!n.signal.aborted&&i.isActive(),o=t.opts.signal,s,c=!1,u;try{if(o){if(o.aborted)throw new G(l.TRANSITION_CANCELLED,{reason:o.reason});s=()=>{n.abort(o.reason)},o.addEventListener(`abort`,s,{once:!0})}if(await e,!a())throw new G(l.TRANSITION_CANCELLED);let r=Hn(i,t);return c=!0,r}catch(e){throw u=e,Un(i,e,t.toState,t.fromState),e}finally{s&&o?.removeEventListener(`abort`,s),this.#s(n,!c,u)}}#a(e,t,n,r,i){t&&this.#s(t,!0,e),n&&r&&Un(this.#e,e,r,i)}#o(e,t,n,r,i,a){let o=this.#e;if(o.sendLeaveApprove(e,t),o.hasLeaveListeners()){let s=new AbortController;this.#t=s;let c;try{c=o.awaitLeaveListeners(e,t,s.signal)}catch(e){throw this.#s(s,!0,e),e}if(c!==void 0)return this.#i(c,{toState:e,fromState:t,opts:r,toDeactivate:i.toDeactivate,toActivate:i.toActivate,intersection:i.intersection,canDeactivateFunctions:a},s,n);let u=this.#n!==n;if(this.#s(s,u),u)throw new G(l.TRANSITION_CANCELLED);return}if(this.#n!==n)throw new G(l.TRANSITION_CANCELLED)}#s(e,t,n){t&&e.abort(n),this.#t===e&&(this.#t=null)}#c(e){if(this.#e.isTransitioning()&&(i.warn(`router.navigate`,`Concurrent navigation detected on shared router instance. For SSR, use cloneRouter() to create isolated instance per request.`),this.#t?.abort(new G(l.TRANSITION_CANCELLED)),this.#e.cancelNavigation()),e?.aborted)throw new G(l.TRANSITION_CANCELLED,{reason:e.reason})}};const rr={replace:!0};Object.freeze(rr);var ir=class{#e;setDependencies(e){this.#e=e}async start(e){let t=this.#e,n=t.getOptions(),r=t.matchPath(e);if(!r&&!n.allowNotFound){let n=new G(l.ROUTE_NOT_FOUND,{path:e});throw t.emitTransitionError(void 0,void 0,n),n}return t.completeStart(),r?t.navigateToState(r,rr):t.navigateToNotFound(e)}stop(){this.#e.clearState()}};const Y=`TREE_CHANGED`;function X(e){return e instanceof Error?e:Error(String(e))}function ar(e,t,n){return new Promise((r,i)=>{let a=()=>{i(X(n.reason))};if(n.aborted){a();return}n.addEventListener(`abort`,a,{once:!0}),Promise.allSettled(e).then(e=>{if(n.removeEventListener(`abort`,a),n.aborted)return;if(t!==void 0){i(X(t));return}let o=e.find(e=>e.status===`rejected`);if(o!==void 0){i(X(o.reason));return}r()})})}var Z=class{#e;#t;#n;#r=[];#i=0;#a=0;#o;#s;#c;#l;constructor(e){this.#e=e.routerFSM,this.#t=e.emitter,this.#n=e.onListenerError,this.#o=void 0,this.#d()}static validateSubscribeListener(e){if(typeof e!=`function`)throw TypeError(`[router.subscribe] Expected a function. For Observable pattern use observable(router) from @real-router/rx`)}static validateSubscribeLeaveListener(e){if(typeof e!=`function`)throw TypeError(`[router.subscribeLeave] Expected a function`)}emitRouterStart(){this.#t.emit(p.ROUTER_START)}emitRouterStop(){this.#t.emit(p.ROUTER_STOP)}emitTransitionStart(e,t){this.#t.emit(p.TRANSITION_START,e,t)}emitTransitionSuccess(e,t,n){this.#t.emit(p.TRANSITION_SUCCESS,e,t,n)}emitTransitionError(e,t,n){this.#t.emit(p.TRANSITION_ERROR,e,t,n)}emitTransitionCancel(e,t){this.#t.emit(p.TRANSITION_CANCEL,e,t)}emitTransitionLeaveApprove(e,t){this.#t.emit(p.TRANSITION_LEAVE_APPROVE,e,t)}emitTreeChanged(e){this.#t.emit(Y,e)}subscribeTreeChanged(e){return this.#t.on(Y,t=>{e(t)})}treeChangedListenerCount(){return this.#t.listenerCount(Y)}sendStart(){this.#e.send(v.START)}sendStop(){this.#e.send(v.STOP)}sendDispose(){this.#e.send(v.DISPOSE)}sendStarted(){this.#e.send(v.STARTED)}sendNavigate(e,t){this.#o=e,this.#e.forceState(_.TRANSITION_STARTED),this.emitTransitionStart(e,t)}sendComplete(e,t,n={}){this.#e.forceState(_.READY),this.emitTransitionSuccess(e,t,n),this.#o===e&&(this.#o=void 0)}sendLeaveApprove(e,t){this.#e.forceState(_.LEAVE_APPROVED),this.emitTransitionLeaveApprove(e,t)}sendFail(e,t,n){let r=this.#o;this.#s=e,this.#c=t,this.#l=n,this.#e.send(v.FAIL),this.#o===r&&(this.#o=void 0)}sendFailSafe(e,t,n){this.isReady()?this.sendFail(e,t,n):this.emitTransitionError(e,t,n)}sendCancel(e,t){let n=this.#o;this.#s=e,this.#c=t,this.#e.send(v.CANCEL),this.#o===n&&(this.#o=void 0)}canBeginTransition(){return this.#e.canSend(v.NAVIGATE)}canStart(){return this.#e.canSend(v.START)}canCancel(){return this.#e.canSend(v.CANCEL)}isActive(){let e=this.#e.getState();return e!==_.IDLE&&e!==_.DISPOSED}isDisposed(){return this.#e.getState()===_.DISPOSED}isTransitioning(){let e=this.#e.getState();return e===_.TRANSITION_STARTED||e===_.LEAVE_APPROVED}isLeaveApproved(){return this.#e.getState()===_.LEAVE_APPROVED}isReady(){return this.#e.getState()===_.READY}isStarting(){return this.#e.getState()===_.STARTING}getCurrentToState(){return this.#o}addEventListener(e,t){return this.#t.on(e,t)}subscribe(e){if(this.isDisposed())throw new G(l.ROUTER_DISPOSED);return this.#t.on(p.TRANSITION_SUCCESS,(t,n)=>{let r=e({route:t,previousRoute:n});r!=null&&typeof r.then==`function`&&Promise.resolve(r).catch(e=>{this.#n(p.TRANSITION_SUCCESS,e)})})}subscribeLeave(e){if(this.isDisposed())throw new G(l.ROUTER_DISPOSED);return this.#r.push(e),()=>{let t=this.#r.indexOf(e);t!==-1&&this.#r.splice(t,1)}}hasLeaveListeners(){return this.#r.length>0}awaitLeaveListeners(e,t,n){if(t===void 0)return;if(this.#i>0&&this.#a>=this.#i)throw new s(`Maximum recursion depth (${this.#i}) exceeded for subscribeLeave`);let r=Object.freeze({route:t,nextRoute:e,signal:n}),i,a,o=[...this.#r];this.#a++;try{for(let e of o)try{let t=e(r);t!==void 0&&typeof t.then==`function`&&(i??=[],i.push(t))}catch(e){a===void 0&&(a=e)}}finally{this.#a--}if(i===void 0){if(a!==void 0)throw X(a);return}return ar(i,a,n)}clearAll(){this.#t.clearAll(),this.#r.length=0}setLimits(e){this.#i=e.maxEventDepth,this.#t.setLimits(e)}sendCancelIfPossible(e){let t=this.#o;!this.canCancel()||t===void 0||this.sendCancel(t,e)}#u(){this.emitTransitionError(this.#s,this.#c,this.#l),this.#s=void 0,this.#c=void 0,this.#l=void 0}#d(){let e=this.#e;e.on(_.STARTING,v.STARTED,()=>{this.emitRouterStart()}),e.on(_.READY,v.STOP,()=>{this.emitRouterStop()});let t=()=>{let e=this.#s;e!==void 0&&this.emitTransitionCancel(e,this.#c)};e.on(_.TRANSITION_STARTED,v.CANCEL,t),e.on(_.LEAVE_APPROVED,v.CANCEL,t),e.on(_.LEAVE_APPROVED,v.FAIL,()=>{this.#u()}),e.on(_.STARTING,v.FAIL,()=>{this.#u()}),e.on(_.READY,v.FAIL,()=>{this.#u()}),e.on(_.TRANSITION_STARTED,v.FAIL,()=>{this.#u()})}};const or=new G(l.ROUTER_ALREADY_STARTED),sr=new Set([`all`,`warn-error`,`error-only`,`none`]);function cr(e){return typeof e==`string`&&sr.has(e)}function lr(e){return typeof e==`string`?`"${e}"`:typeof e==`object`?JSON.stringify(e):String(e)}function ur(e){if(typeof e!=`object`)throw TypeError(`Logger config must be an object`);let t=e;for(let e of Object.keys(t))if(e!==`level`&&e!==`callback`&&e!==`callbackIgnoresLevel`)throw TypeError(`Unknown logger config property: "${e}"`);if(`level`in t&&t.level!==void 0&&!cr(t.level))throw TypeError(`Invalid logger level: ${lr(t.level)}. Expected: "all" | "warn-error" | "error-only" | "none"`);if(`callback`in t&&t.callback!==void 0&&typeof t.callback!=`function`)throw TypeError(`Logger callback must be a function, got ${typeof t.callback}`);if(`callbackIgnoresLevel`in t&&t.callbackIgnoresLevel!==void 0&&typeof t.callbackIgnoresLevel!=`boolean`)throw TypeError(`Logger callbackIgnoresLevel must be a boolean, got ${typeof t.callbackIgnoresLevel}`)}var dr=class{router;options;limits;dependenciesStore;state;routes;routeLifecycle;plugins;navigation;lifecycle;eventBus;constructor(e){this.router=e.router,this.options=e.options,this.limits=e.limits,this.dependenciesStore=e.dependenciesStore,this.state=e.state,this.routes=e.routes,this.routeLifecycle=e.routeLifecycle,this.plugins=e.plugins,this.navigation=e.navigation,this.lifecycle=e.lifecycle,this.eventBus=e.eventBus}wireLimits(){this.dependenciesStore.limits=this.limits,this.eventBus.setLimits({maxListeners:this.limits.maxListeners,warnListeners:this.limits.warnListeners,maxEventDepth:this.limits.maxEventDepth})}wireRouteLifecycleDeps(){let e={compileFactory:this.createCompileFactory()};this.routeLifecycle.setDependencies(e),this.routeLifecycle.setValidatorGetter(()=>{try{return n(this.router).validator}catch{return null}})}wireRoutesDeps(){this.routes.setDependencies({addActivateGuard:(e,t,n)=>{this.routeLifecycle.addCanActivate(e,t,!0,n)},addDeactivateGuard:(e,t,n)=>{this.routeLifecycle.addCanDeactivate(e,t,!0,n)},compileGuard:(e,t)=>this.routeLifecycle.compileGuardFactory(e,t),makeState:(e,t,n,r)=>this.state.makeState(e,t,n,r),getState:()=>this.state.get(),areStatesEqual:(e,t,n)=>this.state.areStatesEqual(e,t,n),getDependency:e=>this.dependenciesStore.dependencies[e],forwardState:(e,t)=>{let r=n(this.router);return r.validator?.routes.validateStateBuilderArgs(e,t,`forwardState`),r.forwardState(e,t)}}),this.routes.setLifecycleNamespace(this.routeLifecycle)}wirePluginsDeps(){let e={addEventListener:(e,t)=>this.eventBus.addEventListener(e,t),canNavigate:()=>this.eventBus.canBeginTransition(),compileFactory:this.createCompileFactory()};this.plugins.setDependencies(e),this.plugins.setValidatorGetter(()=>{try{return n(this.router).validator}catch{return null}})}wireNavigationDeps(){this.navigation.setDependencies({getOptions:()=>this.options.get(),hasRoute:e=>this.routes.hasRoute(e),getState:()=>this.state.get(),setState:e=>{this.state.set(e)},buildNavigateState:(e,t)=>{let r=n(this.router);r.validator?.routes.validateStateBuilderArgs(e,t,`navigate`);let i=r.forwardState(e,t),a=i.name,o=b(i.params),s=this.routes.getMetaForState(a);if(s===void 0)return;let c=r.buildPath(a,o);return this.state.makeState(a,o,c,s,!0)},resolveDefault:()=>{let e=this.options.get(),t=n(this.router),r=Et(e.defaultRoute,e=>this.dependenciesStore.dependencies[e]),i=Et(e.defaultParams,e=>this.dependenciesStore.dependencies[e]);return typeof e.defaultRoute==`function`&&t.validator?.options.validateResolvedDefaultRoute(r,t.routeGetStore()),{route:r,params:i}},startTransition:(e,t)=>{this.eventBus.sendNavigate(e,t)},cancelNavigation:()=>{let e=this.eventBus.getCurrentToState();e!==void 0&&this.eventBus.sendCancel(e,this.state.get())},sendTransitionDone:(e,t,n)=>{this.eventBus.sendComplete(e,t,n)},sendTransitionFail:(e,t,n)=>{this.eventBus.sendFail(e,t,n)},emitTransitionError:(e,t,n)=>{this.eventBus.sendFailSafe(e,t,n)},emitTransitionSuccess:(e,t,n)=>{this.eventBus.emitTransitionSuccess(e,t,n)},sendLeaveApprove:(e,t)=>{this.eventBus.sendLeaveApprove(e,t)},canNavigate:()=>this.eventBus.canBeginTransition(),getLifecycleFunctions:()=>this.routeLifecycle.getFunctions(),isActive:()=>this.router.isActive(),isTransitioning:()=>this.eventBus.isTransitioning(),clearCanDeactivate:e=>{this.routeLifecycle.clearCanDeactivate(e)},hasLeaveListeners:()=>this.eventBus.hasLeaveListeners(),awaitLeaveListeners:(e,t,n)=>this.eventBus.awaitLeaveListeners(e,t,n)})}wireLifecycleDeps(){this.lifecycle.setDependencies({getOptions:()=>this.options.get(),navigateToState:(e,t)=>this.navigation.navigateToState(e,t),navigateToNotFound:e=>this.navigation.navigateToNotFound(e),clearState:()=>{this.state.set(void 0)},matchPath:e=>this.routes.matchPath(e,this.options.get()),completeStart:()=>{this.eventBus.sendStarted()},emitTransitionError:(e,t,n)=>{this.eventBus.sendFail(e,t,n)}})}wireStateDeps(){this.state.setDependencies({getDefaultParams:()=>this.routes.getStore().config.defaultParams,buildPath:(e,t)=>n(this.router).buildPath(e,t),getUrlParams:e=>this.routes.getUrlParams(e)})}createCompileFactory(){let{router:e,dependenciesStore:t}=this;return n=>n(e,e=>t.dependencies[e])}};function fr(e){e.wireLimits(),e.wireRouteLifecycleDeps(),e.wireRoutesDeps(),e.wirePluginsDeps(),e.wireNavigationDeps(),e.wireLifecycleDeps(),e.wireStateDeps()}const Q=Object.freeze({}),pr=new Set([l.SAME_STATES,l.TRANSITION_CANCELLED,l.ROUTER_NOT_STARTED,l.ROUTE_NOT_FOUND,l.CANNOT_ACTIVATE,l.CANNOT_DEACTIVATE]);function mr(e,t){i.error(`Router`,`Error in listener for ${e}:`,t)}var hr=class a{#e;#t;#n;#r;#i;#a;#o;#s;#c;#l;constructor(n=[],o={},s={}){let{logger:l,...u}=o;l&&(ur(l),i.configure(l)),Ot.validateOptionsIsObject(o),re(s),n.length>0&&y(n),this.#e=new Ot(u),this.#t=ae(u.limits),this.#n=oe(s),this.#r=new Mt,this.#i=new jn(n,gr(this.#e.get())),this.#a=new Ht,this.#o=new It,this.#s=new nr,this.#c=new ir;let d=ne(),f=new c({onListenerError:mr,onListenerWarn:(e,t)=>{i.warn(`router.addEventListener`,`Event "${e}" has ${t} listeners — possible memory leak`)}});this.#l=new Z({routerFSM:d,emitter:f,onListenerError:mr}),fr(new dr({router:this,options:this.#e,limits:this.#t,dependenciesStore:this.#n,state:this.#r,routes:this.#i,routeLifecycle:this.#a,plugins:this.#o,navigation:this.#s,lifecycle:this.#c,eventBus:this.#l}));let p=new Map;e(this,{makeState:(e,t,n,r)=>this.#r.makeState(e,t,n,r),forwardState:r(`forwardState`,(e,t)=>this.#i.forwardState(e,t),p),buildStateResolved:(e,t)=>this.#i.buildStateResolved(e,t),matchPath:(e,t)=>this.#i.matchPath(e,t),getOptions:()=>this.#e.get(),addEventListener:(e,t)=>this.#l.addEventListener(e,t),treeChanged:{emit:e=>{this.#l.emitTreeChanged(e)},subscribe:e=>this.#l.subscribeTreeChanged(e),listenerCount:()=>this.#l.treeChangedListenerCount()},buildPath:r(`buildPath`,(e,t)=>this.#i.buildPath(e,t??h,this.#e.get()),p),emitTransitionError:e=>{this.#l.sendFailSafe(void 0,this.#r.get(),e)},emitTransitionSuccess:(e,t,n)=>{this.#l.emitTransitionSuccess(e,t,n)},navigateToNotFound:e=>this.#s.navigateToNotFound(e),start:t(`start`,e=>this.#c.start(e),p),navigateToState:(e,t)=>{let n=this.#s.navigateToState(e,t??Q);return this.#s.lastSyncResolved?this.#s.lastSyncResolved=!1:this.#s.lastSyncRejected?this.#s.lastSyncRejected=!1:a.#d(n),n},interceptors:p,setRootPath:e=>{this.#i.setRootPath(e)},getRootPath:()=>this.#i.getStore().rootPath,getTree:()=>this.#i.getStore().tree,isDisposed:()=>this.#l.isDisposed(),validator:null,dependenciesGetStore:()=>this.#n,cloneOptions:()=>({...this.#e.get()}),cloneDependencies:()=>({...this.#n.dependencies}),getPluginFactories:()=>this.#o.getAll(),routeGetStore:()=>this.#i.getStore(),getStateName:()=>this.#r.get()?.name,isTransitioning:()=>this.#l.isTransitioning(),clearState:()=>{this.#r.set(void 0)},setState:e=>{this.#r.set(e)},routerExtensions:[],contextClaimRecords:new Set,hydrationState:null}),this.isActiveRoute=this.isActiveRoute.bind(this),this.buildPath=this.buildPath.bind(this),this.getState=this.getState.bind(this),this.getPreviousState=this.getPreviousState.bind(this),this.areStatesEqual=this.areStatesEqual.bind(this),this.shouldUpdateNode=this.shouldUpdateNode.bind(this),this.isActive=this.isActive.bind(this),this.start=this.start.bind(this),this.stop=this.stop.bind(this),this.dispose=this.dispose.bind(this),this.canNavigateTo=this.canNavigateTo.bind(this),this.usePlugin=this.usePlugin.bind(this),this.navigate=this.navigate.bind(this),this.navigateToDefault=this.navigateToDefault.bind(this),this.navigateToNotFound=this.navigateToNotFound.bind(this),this.subscribe=this.subscribe.bind(this),this.subscribeLeave=this.subscribeLeave.bind(this),this.isLeaveApproved=this.isLeaveApproved.bind(this)}isActiveRoute(e,t,r,a){return n(this).validator?.routes.validateIsActiveRouteArgs(e,t,r,a),n(this).validator?.routes.validateRouteName(e,`isActiveRoute`),e===``?(i.warn(`real-router`,`isActiveRoute("") called with empty string. Root node is not considered a parent of any route.`),!1):this.#i.isActiveRoute(e,t,r,a)}buildPath(e,t){let r=n(this);return r.validator?.routes.validateBuildPathArgs(e),r.validator?.navigation.validateParams(t,`buildPath`),r.buildPath(e,b(t))}getState(){return this.#r.get()}getPreviousState(){return this.#r.getPrevious()}areStatesEqual(e,t,r=!0){return n(this).validator?.state.validateAreStatesEqualArgs(e,t,r),this.#r.areStatesEqual(e,t,r)}shouldUpdateNode(e){return n(this).validator?.routes.validateShouldUpdateNodeArgs(e),jn.shouldUpdateNode(e)}isActive(){return this.#l.isActive()}start(e){if(!this.#l.canStart())return Promise.reject(or);n(this).validator?.navigation.validateStartArgs(e),this.#l.sendStart();let t;try{t=n(this).start(e)}catch(e){t=Promise.reject(e)}let r=t.catch(e=>{throw this.#l.isReady()&&this.#r.get()===void 0?(this.#c.stop(),this.#l.sendStop()):this.#l.isStarting()&&this.#l.sendFail(void 0,void 0,e),e});return a.#d(r),r}stop(){return this.#s.abortCurrentNavigation(),this.#l.sendCancelIfPossible(this.#r.get()),!this.#l.isReady()&&!this.#l.isTransitioning()?this:(this.#c.stop(),this.#l.sendStop(),this)}dispose(){if(this.#l.isDisposed())return;this.#s.abortCurrentNavigation(),this.#l.sendCancelIfPossible(this.#r.get()),(this.#l.isReady()||this.#l.isTransitioning())&&(this.#c.stop(),this.#l.sendStop()),this.#l.sendDispose(),this.#l.clearAll(),this.#o.disposeAll();let e=n(this);for(let t of e.routerExtensions)for(let e of t.keys)delete this[e];e.routerExtensions.length=0,e.contextClaimRecords.clear(),this.#i.clearRoutes(),this.#a.clearAll(),this.#r.reset(),this.#n.dependencies=Object.create(null),this.#f()}canNavigateTo(e,t){let r=n(this);if(r.validator?.routes.validateRouteName(e,`canNavigateTo`),r.validator?.navigation.validateParams(t,`canNavigateTo`),!this.#i.hasRoute(e))return!1;let{name:i,params:a}=r.forwardState(e,t??{}),o;try{let e=b(a),t=this.#i.getMetaForState(i),n=r.buildPath(i,e);o=this.#r.makeState(i,e,n,t,!0)}catch{return!1}let s=this.#r.get(),{toDeactivate:c,toActivate:l}=W(o,s);return this.#a.canNavigateTo(c,l,o,s)}usePlugin(...e){let t=e.filter(Boolean);if(t.length===0)return()=>{};let r=n(this);r.validator?.plugins.validatePluginLimit(this.#o.count(),this.#t);for(let e of t)r.validator?.plugins.validateNoDuplicatePlugins(e,this.#o.getAll());return this.#o.use(...t)}subscribe(e){return Z.validateSubscribeListener(e),this.#l.subscribe(e)}subscribeLeave(e){return Z.validateSubscribeLeaveListener(e),this.#l.subscribeLeave(e)}isLeaveApproved(){return this.#l.isLeaveApproved()}navigate(e,t,r){let i=n(this);i.validator?.navigation.validateNavigateArgs(e),i.validator?.navigation.validateParams(t,`navigate`);let o=r??Q;i.validator?.navigation.validateNavigationOptions(o,`navigate`);let s=this.#s.navigate(e,t??h,o);return this.#s.lastSyncResolved?this.#s.lastSyncResolved=!1:this.#s.lastSyncRejected?this.#s.lastSyncRejected=!1:a.#d(s),s}navigateToDefault(e){let t=n(this);t.validator?.navigation.validateNavigateToDefaultArgs(e);let r=e??Q;t.validator?.navigation.validateNavigationOptions(r,`navigateToDefault`);let i=this.#s.navigateToDefault(r);return this.#s.lastSyncResolved?this.#s.lastSyncResolved=!1:this.#s.lastSyncRejected?this.#s.lastSyncRejected=!1:a.#d(i),i}navigateToNotFound(e){if(!this.#l.isActive())throw new G(l.ROUTER_NOT_STARTED);if(e!==void 0&&typeof e!=`string`)throw TypeError(`[router.navigateToNotFound] path must be a string, got ${typeof e}`);let t=e??this.#r.get().path;return this.#s.navigateToNotFound(t)}static#u=e=>{e instanceof G&&pr.has(e.code)||e instanceof s||i.error(`router.navigate`,`Unexpected navigation error`,e)};static#d(e){e.catch(a.#u)}#f(){this.navigate=$,this.navigateToDefault=$,this.navigateToNotFound=$,this.start=$,this.stop=$,this.usePlugin=$,this.subscribe=$,this.subscribeLeave=$,this.canNavigateTo=$}};function $(){throw new G(l.ROUTER_DISPOSED)}function gr(e){return{strictTrailingSlash:e.trailingSlash===`strict`,strictQueryParams:e.queryParamsMode===`strict`,urlParamsEncoding:e.urlParamsEncoding,queryParams:e.queryParams}}export{s as C,p as S,St as _,nn as a,d as b,hn as c,en as d,Zt as f,A as g,Ut as h,fn as i,$t as l,Jt as m,G as n,ln as o,Yt as p,_n as r,mn as s,hr as t,I as u,y as v,l as x,u as y};
|
|
2
|
+
//# sourceMappingURL=Router-UDzQURRd.mjs.map
|