@real-router/core 0.42.0 → 0.43.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/{Router-B2tmtNiM.d.ts → Router-73rMK2YI.d.ts} +64 -8
- package/dist/cjs/Router-NL2_9FQk.js +6 -0
- package/dist/cjs/Router-NL2_9FQk.js.map +1 -0
- package/dist/cjs/api.d.ts +1 -1
- package/dist/cjs/api.js +1 -1
- package/dist/cjs/index.d.ts +1 -1
- package/dist/cjs/index.js +1 -1
- package/dist/cjs/validation.d.ts +1 -1
- package/dist/esm/{Router-4JRfQLMM.d.mts → Router-BhDMI4UX.d.mts} +64 -8
- package/dist/esm/Router-CUi2TqAr.mjs +6 -0
- package/dist/esm/Router-CUi2TqAr.mjs.map +1 -0
- package/dist/esm/api.d.mts +1 -1
- package/dist/esm/api.mjs +1 -1
- package/dist/esm/index.d.mts +1 -1
- package/dist/esm/index.mjs +1 -1
- package/dist/esm/validation.d.mts +1 -1
- package/package.json +2 -2
- package/src/namespaces/OptionsNamespace/constants.ts +3 -6
- package/dist/cjs/Router-CVNR-dug.js +0 -6
- package/dist/cjs/Router-CVNR-dug.js.map +0 -1
- package/dist/esm/Router-C_k70gHi.mjs +0 -6
- package/dist/esm/Router-C_k70gHi.mjs.map +0 -1
package/dist/esm/api.d.mts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { f as RouteTree, t as Router$1 } from "./Router-
|
|
1
|
+
import { f as RouteTree, t as Router$1 } from "./Router-BhDMI4UX.mjs";
|
|
2
2
|
import { DefaultDependencies, DependenciesApi, LifecycleApi, PluginApi as PluginApi$1, Router, RoutesApi } from "@real-router/types";
|
|
3
3
|
|
|
4
4
|
//#region src/api/types.d.ts
|
package/dist/esm/api.mjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{c as e,i as t,l as n,n as r,o as i,r as a,s as o,t as s,u as c}from"./Router-
|
|
1
|
+
import{c as e,i as t,l as n,n as r,o as i,r as a,s as o,t as s,u as c}from"./Router-CUi2TqAr.mjs";import{c as l,t as u}from"./RouterError-D0RlQE_5.mjs";import{r as d}from"./internals-CCymabFj.mjs";import{n as f,t as p}from"./getPluginApi-D0bBPuLp.mjs";import{logger as m}from"@real-router/logger";function h(e,t,n){if(t){let n=t===e,r=t.startsWith(`${e}.`);if(n||r){let r=n?``:` (current: "${t}")`;return m.warn(`router.removeRoute`,`Cannot remove route "${e}" — it is currently active${r}. Navigate away first.`),!1}}return n&&m.warn(`router.removeRoute`,`Route "${e}" removed while navigation is in progress. This may cause unexpected behavior.`),!0}function g(e){return e?(m.error(`router.clearRoutes`,`Cannot clear routes while navigation is in progress. Wait for navigation to complete.`),!1):!0}function _(e,t,n=``){for(let r of e){let e=n?`${n}.${r.name}`:r.name;if(e===t)return r;if(r.children&&t.startsWith(`${e}.`))return _(r.children,t,e)}}function v(e,t,n,r){let a=t=>t===e||t.startsWith(`${e}.`);i(t.decoders,a),i(t.encoders,a),i(t.defaultParams,a),i(t.forwardMap,a),i(t.forwardFnMap,a),i(n,a),i(t.forwardMap,e=>a(t.forwardMap[e]));let[o,s]=r.getFactories();for(let e of Object.keys(s))a(e)&&r.clearCanActivate(e);for(let e of Object.keys(o))a(e)&&r.clearCanDeactivate(e)}function y(e,t,n,r){return t===null?(delete n.forwardMap[e],delete n.forwardFnMap[e]):typeof t==`string`?(delete n.forwardFnMap[e],n.forwardMap[e]=t):(delete n.forwardMap[e],n.forwardFnMap[e]=t),r(n)}function b(e,t,n,r){let i={name:e.name,path:e.path},a=n.forwardFnMap[t],o=n.forwardMap[t];a===void 0?o!==void 0&&(i.forwardTo=o):i.forwardTo=a,t in n.defaultParams&&(i.defaultParams=n.defaultParams[t]),t in n.decoders&&(i.decodeParams=n.decoders[t]),t in n.encoders&&(i.encodeParams=n.encoders[t]);let[s,c]=r;return t in c&&(i.canActivate=c[t]),t in s&&(i.canDeactivate=s[t]),e.children&&(i.children=e.children.map(e=>b(e,`${t}.${e.name}`,n,r))),i}function x(n,r,i){if(i){let t=_(n.definitions,i);t.children??=[];for(let n of r)t.children.push(e(n))}else for(let t of r)n.definitions.push(e(t));t(r,n.config,n.routeCustomFields,n.pendingCanActivate,n.pendingCanDeactivate,n.depsStore,i??``),n.treeOperations.commitTreeChanges(n)}function S(n,i,a,o){r(n),n.lifecycleNamespace.clearDefinitionGuards();for(let t of i)n.definitions.push(e(t));if(t(i,n.config,n.routeCustomFields,n.pendingCanActivate,n.pendingCanDeactivate,n.depsStore,``),n.treeOperations.commitTreeChanges(n),o!==void 0){let e=a.matchPath(o,a.getOptions());e?a.setState(e):a.clearState()}}function C(e,t){return o(e.definitions,t)?(v(t,e.config,e.routeCustomFields,e.lifecycleNamespace),e.treeOperations.commitTreeChanges(e),!0):!1}function w(e,t,n){if(n.forwardTo!==void 0&&(e.resolvedForwardMap=y(t,n.forwardTo,e.config,e=>a(e))),n.defaultParams!==void 0&&(n.defaultParams===null?delete e.config.defaultParams[t]:e.config.defaultParams[t]=n.defaultParams),n.decodeParams!==void 0)if(n.decodeParams===null)delete e.config.decoders[t];else{let r=n.decodeParams;e.config.decoders[t]=e=>r(e)??e}if(n.encodeParams!==void 0)if(n.encodeParams===null)delete e.config.encoders[t];else{let r=n.encodeParams;e.config.encoders[t]=e=>r(e)??e}}function T(e,t){let n=e.matcher.getSegmentsByName(t);if(!n)return;let r=n.at(-1),i=e.treeOperations.nodeToDefinition(r),a=e.lifecycleNamespace.getFactories();return b(i,t,e.config,a)}function E(e){let t=d(e),n=t.routeGetStore();return{add:(e,r)=>{f(t.isDisposed);let i=Array.isArray(e)?e:[e],a=r?.parent;c(i,t.validator),a!==void 0&&t.validator?.routes.validateParentOption(a,n.tree),t.validator?.routes.throwIfInternalRouteInArray(i,`addRoute`),t.validator?.routes.validateAddRouteArgs(i),t.validator?.routes.validateRoutes(i,n),x(n,i,a)},remove:e=>{f(t.isDisposed),t.validator?.routes.validateRemoveRouteArgs(e),t.validator?.routes.throwIfInternalRoute(e,`removeRoute`),h(e,t.getStateName(),t.isTransitioning())&&(C(n,e)||m.warn(`router.removeRoute`,`Route "${e}" not found. No changes made.`))},update:(e,r)=>{f(t.isDisposed),t.validator?.routes.validateUpdateRouteBasicArgs(e,r),t.validator?.routes.throwIfInternalRoute(e,`updateRoute`);let{forwardTo:i,defaultParams:a,decodeParams:o,encodeParams:s,canActivate:c,canDeactivate:l}=r;t.validator?.routes.validateUpdateRoutePropertyTypes(e,r),t.isTransitioning()&&m.error(`router.updateRoute`,`Updating route "${e}" while navigation is in progress. This may cause unexpected behavior.`),t.validator?.routes.validateUpdateRoute(e,r,n),w(n,e,{forwardTo:i,defaultParams:a,decodeParams:o,encodeParams:s}),c!==void 0&&(c===null?n.lifecycleNamespace.clearCanActivate(e):n.lifecycleNamespace.addCanActivate(e,c,!0)),l!==void 0&&(l===null?n.lifecycleNamespace.clearCanDeactivate(e):n.lifecycleNamespace.addCanDeactivate(e,l,!0))},clear:()=>{f(t.isDisposed),g(t.isTransitioning())&&(n.treeOperations.resetStore(n),n.lifecycleNamespace.clearAll(),t.clearState())},has:e=>(t.validator?.routes.validateRouteName(e,`hasRoute`),n.matcher.hasRoute(e)),get:e=>(t.validator?.routes.validateRouteName(e,`getRoute`),T(n,e)),replace:r=>{f(t.isDisposed);let i=Array.isArray(r)?r:[r];if(!g(t.isTransitioning()))return;c(i,t.validator),t.validator?.routes.throwIfInternalRouteInArray(i,`replaceRoutes`),t.validator?.routes.validateAddRouteArgs(i),t.validator?.routes.validateRoutes(i,n);let a=e.getState()?.path;S(n,i,t,a)}}}function D(e,t,n,r){if(n===void 0)return!1;if(!Object.hasOwn(e.dependencies,t))r?.dependencies.validateDependencyCount(e,`setDependency`);else{let i=e.dependencies[t];i!==n&&!(Number.isNaN(i)&&Number.isNaN(n))&&r?.dependencies.warnOverwrite(t,`setDependency`)}return e.dependencies[t]=n,!0}function O(e,t,n){let r=[];for(let i in t)t[i]!==void 0&&(Object.hasOwn(e.dependencies,i)?r.push(i):n?.dependencies.validateDependencyCount(e,`setDependencies`),e.dependencies[i]=t[i]);r.length>0&&n?.dependencies.warnBatchOverwrite(r,`setDependencies`)}function k(e){let t=d(e);return{get:e=>{t.validator?.dependencies.validateDependencyName(e,`getDependency`);let n=t.dependenciesGetStore(),r=n.dependencies[e];return t.validator?.dependencies.validateDependencyExists(e,n),r},getAll:()=>({...t.dependenciesGetStore().dependencies}),set:(e,n)=>{f(t.isDisposed),t.validator?.dependencies.validateSetDependencyArgs(e,n,`setDependency`),D(t.dependenciesGetStore(),e,n,t.validator)},setAll:e=>{f(t.isDisposed);let n=t.dependenciesGetStore();t.validator?.dependencies.validateDependenciesObject(e,`setDependencies`),t.validator?.dependencies.validateDependencyLimit(n,n.limits),O(n,e,t.validator)},remove:e=>{f(t.isDisposed),t.validator?.dependencies.validateDependencyName(e,`removeDependency`);let n=t.dependenciesGetStore();Object.hasOwn(n.dependencies,e)||t.validator?.dependencies.warnRemoveNonExistent(e),delete n.dependencies[e]},reset:()=>{f(t.isDisposed);let e=t.dependenciesGetStore();e.dependencies=Object.create(null)},has:e=>(t.validator?.dependencies.validateDependencyName(e,`hasDependency`),Object.hasOwn(t.dependenciesGetStore().dependencies,e))}}function A(e){let t=d(e),n=t.routeGetStore().lifecycleNamespace;return{addActivateGuard(e,r){f(t.isDisposed),t.validator?.routes.validateRouteName(e,`addActivateGuard`),t.validator?.lifecycle.validateHandler(r,`addActivateGuard`);let i=n.getHandlerCount(`activate`);t.validator?.lifecycle.validateHandlerLimit(i,t.dependenciesGetStore().limits,`canActivate`),n.addCanActivate(e,r)},addDeactivateGuard(e,r){f(t.isDisposed),t.validator?.routes.validateRouteName(e,`addDeactivateGuard`),t.validator?.lifecycle.validateHandler(r,`addDeactivateGuard`);let i=n.getHandlerCount(`deactivate`);t.validator?.lifecycle.validateHandlerLimit(i,t.dependenciesGetStore().limits,`canDeactivate`),n.addCanDeactivate(e,r)},removeActivateGuard(e){f(t.isDisposed),t.validator?.routes.validateRouteName(e,`removeActivateGuard`),n.clearCanActivate(e)},removeDeactivateGuard(e){f(t.isDisposed),t.validator?.routes.validateRouteName(e,`removeDeactivateGuard`),n.clearCanDeactivate(e)}}}function j(e,t){let r=d(e);if(r.isDisposed())throw new u(l.ROUTER_DISPOSED);r.validator?.dependencies.validateCloneArgs(t);let i=r.routeGetStore(),a=n(i.tree),o=i.config,c=i.resolvedForwardMap,f=i.routeCustomFields,p=r.cloneOptions(),m=r.cloneDependencies(),[h,g]=r.getLifecycleFactories(),_=r.getPluginFactories(),v=new s(a,p,{...m,...t}),y=A(v);for(let[e,t]of Object.entries(h))y.addDeactivateGuard(e,t);for(let[e,t]of Object.entries(g))y.addActivateGuard(e,t);_.length>0&&v.usePlugin(..._);let b=d(v).routeGetStore();return Object.assign(b.config.decoders,o.decoders),Object.assign(b.config.encoders,o.encoders),Object.assign(b.config.defaultParams,o.defaultParams),Object.assign(b.config.forwardMap,o.forwardMap),Object.assign(b.config.forwardFnMap,o.forwardFnMap),Object.assign(b.resolvedForwardMap,c),Object.assign(b.routeCustomFields,f),v}export{j as cloneRouter,k as getDependenciesApi,A as getLifecycleApi,p as getPluginApi,E as getRoutesApi};
|
|
2
2
|
//# sourceMappingURL=api.mjs.map
|
package/dist/esm/index.d.mts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { c as RouteConfigUpdate, f as RouteTree, i as GuardFnFactory, n as BuildStateResultWithSegments, o as PluginFactory, s as Route, t as Router } from "./Router-
|
|
1
|
+
import { c as RouteConfigUpdate, f as RouteTree, i as GuardFnFactory, n as BuildStateResultWithSegments, o as PluginFactory, s as Route, t as Router } from "./Router-BhDMI4UX.mjs";
|
|
2
2
|
import { t as RouterValidator } from "./RouterValidator-DphcVMEp.mjs";
|
|
3
3
|
import { Config, DefaultDependencies, DefaultDependencies as DefaultDependencies$1, ErrorCodeKeys, ErrorCodeToValueMap, ErrorCodeValues, EventToNameMap, GuardFn, Listener, NavigationOptions, Navigator, Navigator as Navigator$1, Options, Options as Options$1, Params, Plugin, Router as Router$1, SimpleState, State, State as State$1, SubscribeFn, SubscribeState, Subscription, Unsubscribe } from "@real-router/types";
|
|
4
4
|
|
package/dist/esm/index.mjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{a as e,t}from"./Router-
|
|
1
|
+
import{a as e,t}from"./Router-CUi2TqAr.mjs";import{c as n,l as r,o as i,s as a,t as o}from"./RouterError-D0RlQE_5.mjs";const s=(e=[],n={},r={})=>new t(e,n,r),c=new WeakMap,l=e=>{let t=c.get(e);return t||(t=Object.freeze({navigate:e.navigate,getState:e.getState,isActiveRoute:e.isActiveRoute,canNavigateTo:e.canNavigateTo,subscribe:e.subscribe}),c.set(e,t)),t};export{t as Router,o as RouterError,i as UNKNOWN_ROUTE,a as constants,s as createRouter,n as errorCodes,r as events,l as getNavigator,e as resolveForwardChain};
|
|
2
2
|
//# sourceMappingURL=index.mjs.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { a as Limits, d as RouteDefinition, f as RouteTree, i as GuardFnFactory, l as CreateMatcherOptions, o as PluginFactory, r as EventMethodMap, u as Matcher } from "./Router-
|
|
1
|
+
import { a as Limits, d as RouteDefinition, f as RouteTree, i as GuardFnFactory, l as CreateMatcherOptions, o as PluginFactory, r as EventMethodMap, u as Matcher } from "./Router-BhDMI4UX.mjs";
|
|
2
2
|
import { t as RouterValidator } from "./RouterValidator-DphcVMEp.mjs";
|
|
3
3
|
import { DefaultDependencies, EventName, ForwardToCallback, GuardFn, Options, Params, Plugin, RouteTreeState, Router, SimpleState, State, Unsubscribe } from "@real-router/types";
|
|
4
4
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@real-router/core",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.43.0",
|
|
4
4
|
"type": "commonjs",
|
|
5
5
|
"description": "A simple, powerful, view-agnostic, modular and extensible router",
|
|
6
6
|
"main": "./dist/cjs/index.js",
|
|
@@ -89,7 +89,7 @@
|
|
|
89
89
|
"dependencies": {
|
|
90
90
|
"@real-router/fsm": "^0.2.2",
|
|
91
91
|
"@real-router/logger": "^0.2.1",
|
|
92
|
-
"@real-router/types": "^0.
|
|
92
|
+
"@real-router/types": "^0.29.0"
|
|
93
93
|
},
|
|
94
94
|
"devDependencies": {
|
|
95
95
|
"event-emitter": "^0.1.2",
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
// packages/core/src/namespaces/OptionsNamespace/constants.ts
|
|
2
2
|
|
|
3
|
+
import { DEFAULT_QUERY_PARAMS } from "route-tree";
|
|
4
|
+
|
|
3
5
|
import type { Options } from "@real-router/types";
|
|
4
6
|
|
|
5
7
|
/**
|
|
@@ -10,12 +12,7 @@ export const defaultOptions: Options = {
|
|
|
10
12
|
defaultParams: {},
|
|
11
13
|
trailingSlash: "preserve",
|
|
12
14
|
queryParamsMode: "loose",
|
|
13
|
-
queryParams:
|
|
14
|
-
arrayFormat: "none",
|
|
15
|
-
booleanFormat: "none",
|
|
16
|
-
nullFormat: "default",
|
|
17
|
-
numberFormat: "none",
|
|
18
|
-
},
|
|
15
|
+
queryParams: DEFAULT_QUERY_PARAMS,
|
|
19
16
|
urlParamsEncoding: "default",
|
|
20
17
|
allowNotFound: true,
|
|
21
18
|
rewritePathOnMatch: true,
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
const e=require(`./RouterError-BkgjTHQg.js`),t=require(`./internals-na15rxo_.js`);let n=require(`@real-router/logger`),r=require(`@real-router/fsm`);const i={maxListeners:0,warnListeners:0,maxEventDepth:0};var a=class extends Error{},o=class{#e=new Map;#t=null;#n=i;#r;#i;constructor(e){e?.limits&&(this.#n=e.limits),this.#r=e?.onListenerError??null,this.#i=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.#n=e}on(e,t){let n=this.#c(e);if(n.has(t))throw Error(`Duplicate listener for "${e}"`);let{maxListeners:r,warnListeners:i}=this.#n;if(i!==0&&n.size===i&&this.#i?.(e,i),r!==0&&n.size>=r)throw Error(`Listener limit (${r}) reached for "${e}"`);return n.add(t),()=>{this.off(e,t)}}off(e,t){this.#e.get(e)?.delete(t)}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.#n.maxEventDepth===0){this.#a(a,e,o,t,n,r,i);return}this.#s(a,e,o,t,n,r,i)}clearAll(){this.#e.clear(),this.#t=null}listenerCount(e){return this.#e.get(e)?.size??0}#a(e,t,n,r,i,a,o){if(e.size===1){let[s]=e;try{this.#o(s,n,r,i,a,o)}catch(e){this.#r?.(t,e)}return}let s=[...e];for(let e of s)try{this.#o(e,n,r,i,a,o)}catch(e){this.#r?.(t,e)}}#o(e,t,n,r,i,a){switch(t){case 0:e();break;case 1:e(n);break;case 2:e(n,r);break;case 3:e(n,r,i);break;default:e(n,r,i,a)}}#s(e,t,n,r,i,o,s){this.#t??=new Map;let c=this.#t,l=c.get(t)??0;if(l>=this.#n.maxEventDepth)throw new a(`Maximum recursion depth (${this.#n.maxEventDepth}) exceeded for event: ${t}`);try{c.set(t,l+1);let u=e.size===1?e:[...e];for(let e of u)try{this.#o(e,n,r,i,o,s)}catch(e){if(e instanceof a)throw e;this.#r?.(t,e)}}finally{c.set(t,c.get(t)-1)}}#c(e){let t=this.#e.get(e);if(t)return t;let n=new Set;return this.#e.set(e,n),n}};const s={IDLE:`IDLE`,STARTING:`STARTING`,READY:`READY`,TRANSITIONING:`TRANSITIONING`,DISPOSED:`DISPOSED`},c={START:`START`,STARTED:`STARTED`,NAVIGATE:`NAVIGATE`,COMPLETE:`COMPLETE`,FAIL:`FAIL`,CANCEL:`CANCEL`,STOP:`STOP`,DISPOSE:`DISPOSE`},l={initial:s.IDLE,context:null,transitions:{[s.IDLE]:{[c.START]:s.STARTING,[c.DISPOSE]:s.DISPOSED},[s.STARTING]:{[c.STARTED]:s.READY,[c.FAIL]:s.IDLE},[s.READY]:{[c.NAVIGATE]:s.TRANSITIONING,[c.FAIL]:s.READY,[c.STOP]:s.IDLE},[s.TRANSITIONING]:{[c.NAVIGATE]:s.TRANSITIONING,[c.COMPLETE]:s.READY,[c.CANCEL]:s.READY,[c.FAIL]:s.READY},[s.DISPOSED]:{}}};function u(){return new r.FSM(l)}function d(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 f(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&&f(r,t)}}function p(t={}){let n=Object.create(null);for(let e in t)t[e]!==void 0&&(n[e]=t[e]);return{dependencies:n,limits:e.i}}const m={defaultRoute:``,defaultParams:{},trailingSlash:`preserve`,queryParamsMode:`loose`,queryParams:{arrayFormat:`none`,booleanFormat:`none`,nullFormat:`default`,numberFormat:`none`},urlParamsEncoding:`default`,allowNotFound:!0,rewritePathOnMatch:!0};function h(e){Object.freeze(e);for(let t of Object.keys(e)){let n=e[t];n&&typeof n==`object`&&n.constructor===Object&&h(n)}return e}function g(e,t){return typeof e==`function`?e(t):e}function ee(e){if(!e||typeof e!=`object`||Array.isArray(e))throw TypeError(`[router.constructor] options must be a plain object`)}var te=class{#e;constructor(e={}){this.#e=h({...m,...e})}static validateOptionsIsObject(e){ee(e)}get(){return this.#e}};function _(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(!_(e[n],t[n]))return!1;return!0}return!1}const v=new WeakMap;function y(e){return v.get(e)}function ne(e,t){v.set(e,t)}var re=class{#e=void 0;#t=void 0;#n;#r=new Map;get(){return this.#e}set(t){this.#t=this.#e,this.#e=t?e.r(t):void 0}getPrevious(){return this.#t}reset(){this.#e=void 0,this.#t=void 0,this.#r.clear()}setDependencies(e){this.#n=e}makeState(t,n,r,i,a){let o=this.#n.getDefaultParams(),s=Object.hasOwn(o,t),c;c=s?{...o[t],...n}:!n||n===e.a?e.a:{...n};let l={name:t,params:c,path:r??this.#n.buildPath(t,n)};return i&&ne(l,i),a?l:e.r(l)}areStatesEqual(e,t,n=!0){if(!e||!t)return!!e==!!t;if(e.name!==t.name)return!1;if(n){let n=this.#i(e.name);for(let r of n)if(!_(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)||!_(e.params[n],t.params[n]))return!1;return!0}#i(e){let t=this.#r.get(e);if(t!==void 0)return t;let n=this.#n.getUrlParams(e);return this.#r.set(e,n),n}};const b={[e.u.ROUTER_START]:e.l.ROUTER_START,[e.u.ROUTER_STOP]:e.l.ROUTER_STOP,[e.u.TRANSITION_SUCCESS]:e.l.TRANSITION_SUCCESS,[e.u.TRANSITION_START]:e.l.TRANSITION_START,[e.u.TRANSITION_ERROR]:e.l.TRANSITION_ERROR,[e.u.TRANSITION_CANCEL]:e.l.TRANSITION_CANCEL},ie=Object.keys(b),x=`router.usePlugin`;function ae(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 oe=class t{#e=new Set;#t=new Set;#n;#r=e.i;#i=null;static validatePlugin(e){ae(e)}static validateNoDuplicatePlugins(e,t){for(let n of e)if(t(n))throw Error(`[router.usePlugin] Plugin factory already registered. To re-register, first unsubscribe the existing plugin.`)}setDependencies(e){this.#n=e}setLimits(e){
|
|
2
|
-
// eslint-disable-next-line sonarjs/void-use -- @preserve: limits passed to validator via RouterInternals; void suppresses TS6133 until plugin implements validateCountThresholds
|
|
3
|
-
this.#r=e,this.#r}setValidatorGetter(e){this.#i=e}count(){return this.#e.size}use(...e){if(this.#i?.()?.plugins.validateCountThresholds(this.#e.size+e.length),e.length===1){let t=e[0],r=this.#o(t);this.#e.add(t);let i=!1,a=()=>{if(!i){i=!0,this.#e.delete(t),this.#t.delete(a);try{r()}catch(e){n.logger.error(x,`Error during cleanup:`,e)}}};return this.#t.add(a),a}let t=this.#a(e),r=[];try{for(let e of t){let t=this.#o(e);r.push({factory:e,cleanup:t})}}catch(e){for(let{cleanup:e}of r)try{e()}catch(e){n.logger.error(x,`Cleanup error:`,e)}throw e}for(let{factory:e}of r)this.#e.add(e);let i=!1,a=()=>{if(!i){i=!0,this.#t.delete(a);for(let{factory:e}of r)this.#e.delete(e);for(let{cleanup:e}of r)try{e()}catch(e){n.logger.error(x,`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()}#a(e){let t=new Set;for(let n of e)t.has(n)?this.#i?.()?.plugins.warnBatchDuplicates(e):t.add(n);return t}#o(e){let n=this.#n.compileFactory(e);t.validatePlugin(n),this.#i?.()?.plugins.validatePluginKeys(n),Object.freeze(n);let r=[];for(let e of ie)e in n&&(typeof n[e]==`function`?(r.push(this.#n.addEventListener(b[e],n[e])),e===`onStart`&&this.#n.canNavigate()&&this.#i?.()?.plugins.warnPluginAfterStart(e)):this.#i?.()?.plugins.warnPluginMethodType(e));return()=>{for(let e of r)e();typeof n.teardown==`function`&&n.teardown()}}};function se(e){let t=()=>e;return()=>t}var ce=class{#e=new Map;#t=new Map;#n=new Map;#r=new Map;#i=[this.#n,this.#r];#a=new Set;#o=new Set;#s=new Set;#c;#l=e.i;#u=null;setDependencies(e){this.#c=e}setLimits(e){
|
|
4
|
-
// eslint-disable-next-line sonarjs/void-use -- @preserve: Wave 3 validator reads limits via RouterInternals; void suppresses TS6133 until then
|
|
5
|
-
this.#l=e,this.#l}setValidatorGetter(e){this.#u=e}getHandlerCount(e){return e===`activate`?this.#t.size:this.#e.size}addCanActivate(e,t,n=!1){n?this.#o.add(e):this.#o.delete(e);let r=this.#t.has(e);this.#d(`activate`,e,t,this.#t,this.#r,`canActivate`,r)}addCanDeactivate(e,t,n=!1){n?this.#s.add(e):this.#s.delete(e);let r=this.#e.has(e);this.#d(`deactivate`,e,t,this.#e,this.#n,`canDeactivate`,r)}clearCanActivate(e){this.#t.delete(e),this.#r.delete(e),this.#o.delete(e)}clearCanDeactivate(e){this.#e.delete(e),this.#n.delete(e),this.#s.delete(e)}clearAll(){this.#t.clear(),this.#r.clear(),this.#e.clear(),this.#n.clear(),this.#o.clear(),this.#s.clear()}clearDefinitionGuards(){for(let e of this.#o)this.#t.delete(e),this.#r.delete(e);for(let e of this.#s)this.#e.delete(e),this.#n.delete(e);this.#o.clear(),this.#s.clear()}getFactories(){let e={},t={};for(let[t,n]of this.#e)e[t]=n;for(let[e,n]of this.#t)t[e]=n;return[e,t]}getFunctions(){return this.#i}canNavigateTo(e,t,n,r){for(let t of e)if(!this.#f(this.#n,t,n,r,`canNavigateTo`))return!1;for(let e of t)if(!this.#f(this.#r,e,n,r,`canNavigateTo`))return!1;return!0}#d(e,t,n,r,i,a,o){o?this.#u?.()?.lifecycle.warnOverwrite(t,e,a):this.#u?.()?.lifecycle.validateCountThresholds(r.size+1,a);let s=typeof n==`boolean`?se(n):n;r.set(t,s),this.#a.add(t);try{let e=this.#c.compileFactory(s);if(typeof e!=`function`)throw TypeError(`[router.${a}] Factory must return a function, got ${typeof e}`);i.set(t,e)}catch(e){throw r.delete(t),e}finally{this.#a.delete(t)}}#f(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.#u?.()?.lifecycle.warnAsyncGuardSync(t,i),!1)}catch{return!1}}};function le(){return{decoders:Object.create(null),encoders:Object.create(null),defaultParams:Object.create(null),forwardMap:Object.create(null),forwardFnMap:Object.create(null)}}function ue(e,t){for(let n in e)if(e[n]!==t[n])return!1;return!0}function de(e,t,n){for(let r in e)if(!(r in n)&&e[r]!==t[r])return!1;return!0}function S(e){let t={name:e.name,path:e.path};return e.children&&(t.children=e.children.map(e=>S(e))),t}function fe(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}.`)&&fe(i.children,t,a))return!0}return!1}function pe(e,t){for(let n of Object.keys(e))t(n)&&delete e[n]}function me(e){return`(${e.replaceAll(/(^<|>$)/g,``)})`}const he=/([:*])([^/?<]+)(<[^>]+>)?(\?)?/g,ge=/([:*][^/?<]+(?:<[^>]+>)?)\?(?=\/|$)/g,_e=/\?(.+)$/;function ve(e){let t=[],n=[],r=[],i={},a=new Map,o=e.replaceAll(ge,`$1`),s=_e.exec(o);if(s!==null){let t=s[1].split(`&`);for(let e of t){let t=e.trim();t.length>0&&(n.push(t),i[t]=`query`)}e=e.slice(0,s.index)}let c;for(;(c=he.exec(e))!==null;){let e=c[1],n=c[2],o=c[3];if(e===`*`)r.push(n),t.push(n),i[n]=`url`;else if(t.push(n),i[n]=`url`,o){let e=`^${me(o)}$`;a.set(n,{pattern:new RegExp(e),constraint:o})}}return{urlParams:t,queryParams:n,spatParams:r,paramTypeMap:i,constraintPatterns:a,pathPattern:e}}const ye=/[^\w!$'()*+,.:;|~-]/gu,be=/[^\w!$'()*+,.:;|~-]/u,xe={default:e=>be.test(e)?e.replaceAll(ye,e=>encodeURIComponent(e)):e,uri:encodeURI,uriComponent:encodeURIComponent,none:e=>e},Se={default:decodeURIComponent,uri:decodeURI,uriComponent:decodeURIComponent,none:e=>e};function C(){return{staticChildren:Object.create(null),paramChild:void 0,splatChild:void 0,route:void 0,slashChildRoute:void 0}}function w(e){return e.length>1&&e.endsWith(`/`)?e.slice(0,-1):e}function Ce(e,t){return e===``?t:t===``?e:e+t}function we(e){let t={};if(e.length===0)return t;let n=e.split(`&`);for(let e of n){let n=e.indexOf(`=`);n===-1?t[e]=``:t[e.slice(0,n)]=e.slice(n+1)}return t}function Te(e){let t=[];for(let n of Object.keys(e)){let r=e[n],i=encodeURIComponent(n);t.push(r===``?i:`${i}=${encodeURIComponent(String(r))}`)}return t.join(`&`)}function T(e){return e>=48&&e<=57||e>=65&&e<=70||e>=97&&e<=102}function Ee(e){let t=0;for(;t<e.length;)if(e[t]===`%`){if(t+2>=e.length)return!1;let n=e.codePointAt(t+1)??0,r=e.codePointAt(t+2)??0;if(!T(n)||!T(r))return!1;t+=3}else t++;return!0}const E=/<[^>]*>/g;function D(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(E,``),u=o?l:Ce(n,l),d=i;a||(d=De(e,t,u,o?``:n,r,i));for(let n of t.children.values())D(e,n,u,r,d);a||r.pop()}function De(e,t,n,r,i,a){let o=je(n,r),s=Object.freeze([...i]),c=Oe(s),l=w(n),u=Re(e.rootQueryParams,i),d=ze(i),{buildStaticParts:f,buildParamSlots:p}=Le(o?w(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 e.routesByName.set(t.fullName,m),e.segmentsByName.set(t.fullName,s),e.metaByName.set(t.fullName,c),o?ke(e,m,r):Ae(e,m,n,l,t),m}function Oe(e){let t={};for(let n of e)t[n.fullName]=n.paramTypeMap;return Object.freeze(t)}function ke(e,t,n){Ne(e,t,n);let r=w(n),i=e.options.caseSensitive?r:r.toLowerCase();e.staticCache.has(i)&&e.staticCache.set(i,t)}function Ae(e,t,n,r,i){if(Me(e,t,n),i.paramMeta.urlParams.length===0){let n=e.options.caseSensitive?r:r.toLowerCase();e.staticCache.set(n,t)}}function je(e,t){return w(e)===w(t)}function Me(e,t,n){let r=w(n);if(r===`/`){e.root.route=t;return}O(e,e.root,r,1,t)}function O(e,t,n,r,i){let a=n.length;for(;r<=a;){let o=n.indexOf(`/`,r),s=o===-1?a:o,c=n.slice(r,s);if(c.endsWith(`?`)){let r=c.slice(1).replaceAll(E,``).replace(/\?$/,``);t.paramChild??={node:C(),name:r},O(e,t.paramChild.node,n,s+1,i),s>=a?t.route??=i:O(e,t,n,s+1,i);return}t=Ie(e,t,c),r=s+1}t.route=i}function Ne(e,t,n){let r=Pe(e,n);r.slashChildRoute=t}function Pe(e,t){return Fe(e,e.root,t)}function Fe(e,t,n){let r=w(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=Ie(e,i,s),a=n+1}return i}function Ie(e,t,n){if(n.startsWith(`*`)){let e=n.slice(1);return t.splatChild??={node:C(),name:e},t.splatChild.node}if(n.startsWith(`:`)){let e=n.slice(1).replaceAll(E,``).replace(/\?$/,``);return t.paramChild??={node:C(),name:e},t.paramChild.node}let r=e.options.caseSensitive?n:n.toLowerCase();return r in t.staticChildren||(t.staticChildren[r]=C()),t.staticChildren[r]}function Le(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=/[:*]([\w]+)(?:<[^>]*>)?(\?)?/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=>{let t=xe[n],r=e.split(`/`),i=t(r[0]);for(let e=1;e<r.length;e++)i+=`/${t(r[e])}`;return i}:xe[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 Re(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 ze(e){let t=new Map;for(let n of e)for(let[e,r]of n.paramMeta.constraintPatterns)t.set(e,r);return t}const Be=/[\u0080-\uFFFF]/;var Ve=class{get options(){return this.#e}#e;#t=C();#n=new Map;#r=new Map;#i=new Map;#a=new Map;#o=``;#s=[];constructor(e){this.#e={caseSensitive:e?.caseSensitive??!0,strictTrailingSlash:e?.strictTrailingSlash??!1,strictQueryParams:e?.strictQueryParams??!1,urlParamsEncoding:e?.urlParamsEncoding??`default`,parseQueryString:e?.parseQueryString??we,buildQueryString:e?.buildQueryString??Te}}registerTree(e){this.#s=e.paramMeta.queryParams,D({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){let t=this.#f(e);if(!t)return;let[n,r,i]=t,a=this.#e.caseSensitive?r:r.toLowerCase(),o=this.#a.get(a);if(o)return this.#e.strictTrailingSlash&&!this.#m(n,o)?void 0:this.#p(o,{},i);let s={},c=this.#h(r,s);if(c&&!(this.#e.strictTrailingSlash&&!this.#m(n,c))&&!(c.hasConstraints&&!this.#v(s,c))&&this.#_(s))return this.#p(c,s,i)}buildPath(e,t,n){let r=this.#n.get(e);if(!r)throw Error(`[SegmentMatcher.buildPath] '${e}' is not defined`);r.hasConstraints&&t&&this.#c(r,e,t);let i=this.#l(r,t),a=this.#u(i,n?.trailingSlash),o=this.#d(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)}setRootPath(e){this.#o=e}#c(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}'`)}}}#l(e,t){let n=e.buildStaticParts,r=e.buildParamSlots;if(r.length===0)return this.#o+n[0];let i=this.#o+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}let o=typeof r==`object`?JSON.stringify(r):String(r),s=a.encoder(o);i+=s+n[e+1]}return i}#u(e,t){return t===`always`&&!e.endsWith(`/`)?`${e}/`:t===`never`&&e!==`/`&&e.endsWith(`/`)?e.slice(0,-1):e}#d(e,t,n){if(!t)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):``}#f(e){if(e===``&&(e=`/`),!e.startsWith(`/`))return;let t=e.indexOf(`#`);if(t!==-1&&(e=e.slice(0,t)),Be.test(e))return;if(this.#o.length>0){if(!e.startsWith(this.#o))return;e=e.slice(this.#o.length)||`/`}let n=e.indexOf(`?`),r=n===-1?e:e.slice(0,n),i=n===-1?void 0:e.slice(n+1);if(r.includes(`//`))return;let a=r;return[a,w(a),i]}#p(e,t,n){if(n!==void 0){let r=this.#e.parseQueryString(n);if(this.#e.strictQueryParams){let t=e.declaredQueryParamsSet;for(let e of Object.keys(r))if(!t.has(e))return}for(let e of Object.keys(r))t[e]=r[e]}return{segments:e.matchSegments,params:t,meta:e.meta}}#m(e,t){return(e.length>1&&e.endsWith(`/`))===t.hasTrailingSlash}#h(e,t){return e.length===1?this.#t.slashChildRoute??this.#t.route:this.#g(this.#t,e,1,t)}#g(e,t,n,r){let i=e,a=t.length;for(;n<=a;){let e=t.indexOf(`/`,n),o=e===-1?a:e,s=t.slice(n,o),c=this.#e.caseSensitive?s:s.toLowerCase(),l;if(c in i.staticChildren)l=i.staticChildren[c];else if(i.paramChild)l=i.paramChild.node,r[i.paramChild.name]=s;else if(i.splatChild){let e={},a=this.#g(i.splatChild.node,t,n,e);return a?(Object.assign(r,e),a):(r[i.splatChild.name]=t.slice(n),i.splatChild.node.route)}else return;i=l,n=o+1}return i.slashChildRoute??i.route}#_(e){let t=this.#e.urlParamsEncoding;if(t===`none`)return!0;let n=Se[t];for(let t in e){let r=e[t];if(r.includes(`%`)){if(!Ee(r))return!1;e[t]=n(r)}}return!0}#v(e,t){for(let[n,r]of t.constraintPatterns)if(!r.pattern.test(e[n]))return!1;return!0}};const k=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)},He=(e,t)=>{if(e===void 0)return t.boolean.decodeUndefined();let n=t.boolean.decodeRaw(e);if(n!==null)return n;let r=k(e),i=t.number.decode(r);return i===null?t.boolean.decodeValue(r):i},A=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)},Ue={none:{encodeArray:(e,t)=>{if(t.length===0)return``;let n=`${e}=${A(t[0])}`;for(let r=1;r<t.length;r++)n+=`&${e}=${A(t[r])}`;return n}},brackets:{encodeArray:(e,t)=>{if(t.length===0)return``;let n=`${e}[]=${A(t[0])}`;for(let r=1;r<t.length;r++)n+=`&${e}[]=${A(t[r])}`;return n}},index:{encodeArray:(e,t)=>{if(t.length===0)return``;let n=`${e}[0]=${A(t[0])}`;for(let r=1;r<t.length;r++)n+=`&${e}[${r}]=${A(t[r])}`;return n}},comma:{encodeArray:(e,t)=>{if(t.length===0)return`${e}=`;let n=`${e}=${A(t[0])}`;for(let e=1;e<t.length;e++)n+=`,${A(t[e])}`;return n}}},We={encode:(e,t)=>`${e}=${t}`,decodeUndefined:()=>null,decodeRaw:()=>null,decodeValue:e=>e},Ge={encode:(e,t)=>`${e}=${t}`,decodeUndefined:()=>null,decodeRaw:e=>e===`true`?!0:e===`false`?!1:null,decodeValue:e=>e},Ke={encode:(e,t)=>t?e:`${e}=false`,decodeUndefined:()=>!0,decodeRaw:()=>null,decodeValue:e=>e},qe={none:We,string:Ge,"empty-true":Ke},Je={default:{encode:e=>e},hidden:{encode:()=>``}},Ye={auto:{decode:e=>{let t=e.length;if(t===0)return null;let n=!1;for(let r=0;r<t;r++){let i=e.codePointAt(r);if(!(i!==void 0&&i>=48&&i<=57)){if(i===46&&!n&&r!==0&&r!==t-1){n=!0;continue}return null}}return Number(e)}},none:{decode:()=>null}},Xe=(e,t,n,r)=>({boolean:qe[t],null:Je[n],number:Ye[r],array:Ue[e]}),Ze={arrayFormat:`none`,booleanFormat:`none`,nullFormat:`default`,numberFormat:`none`,strategies:{boolean:qe.none,null:Je.default,number:Ye.none,array:Ue.none}},Qe=e=>{if(!e||e.arrayFormat===void 0&&e.booleanFormat===void 0&&e.nullFormat===void 0&&e.numberFormat===void 0)return Ze;let t=e.arrayFormat??`none`,n=e.booleanFormat??`none`,r=e.nullFormat??`default`,i=e.numberFormat??`none`;return{arrayFormat:t,booleanFormat:n,nullFormat:r,numberFormat:i,strategies:Xe(t,n,r,i)}},j=e=>encodeURIComponent(e),$e=(e,t,n)=>{let r=j(e);switch(typeof t){case`string`:case`number`:return`${r}=${j(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}=${j(t)}`;default:return`${r}=${j(t)}`}},et=e=>{let t=e.indexOf(`?`);return t===-1?e:e.slice(t+1)};function tt(e,t,n,r){let i=e[t];i===void 0?e[t]=r?[n]:n:Array.isArray(i)?i.push(n):e[t]=[i,n]}function nt(e,t,n,r,i){return i?He(r?e.slice(t+1,n):void 0,i):r?k(e.slice(t+1,n)):null}function rt(e,t,n,r,i){let a=e.indexOf(`=`,t),o=a!==-1&&a<n,s=o?a:n,c=s,l=!1;for(let n=t;n<s;n++)if(e.codePointAt(n)===91){c=n,l=!0;break}tt(r,k(e.slice(t,c)),nt(e,a,n,o,i),l)}const it=(e,t)=>{let n=et(e);if(n===``||n===`?`)return{};if(!t)return at(n);let r=Qe(t),i={},a=0,o=n.length;for(;a<o;){let e=n.indexOf(`&`,a);e===-1&&(e=o),rt(n,a,e,i,r.strategies),a=e+1}return i};function at(e){let t={};return ot(e,t),t}function ot(e,t){let n=0,r=e.length;for(;n<r;){let i=e.indexOf(`&`,n);i===-1&&(i=r),rt(e,n,i,t),n=i+1}}const st=(e,t)=>{let n=Object.keys(e);if(n.length===0)return``;let r=Qe(t),i=[];for(let t of n){let n=e[t];if(n===void 0)continue;let a=$e(t,n,r);a&&i.push(a)}return i.join(`&`)};function M(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,nonAbsoluteChildren:[],fullName:``};if(e.children)for(let t of e.children){let e=M(t,a);a.children.push(e)}return a}function ct(e,t,n){let r=M({name:e,path:t},null);for(let e of n){let t=M(e,r);r.children.push(t)}return r}function lt(e){return e.parent?.name?`${e.parent.fullName}.${e.name}`:e.name}function N(e,t){return e.endsWith(`/`)&&t.startsWith(`/`)?e+t.slice(1):e+t}function ut(e){if(!e.path)return null;let{urlParams:t,queryParams:n,spatParams:r}=e.paramMeta;if(t.length>0||n.length>0||r.length>0)return null;let i=[],a=e.parent;for(;a?.path;)i.unshift(a),a=a.parent;let o=``;for(let e of i){let{urlParams:t,queryParams:n,spatParams:r}=e.paramMeta;if(t.length>0||n.length>0||r.length>0)return null;o=e.absolute?e.path:N(o,e.path)}return e.absolute?e.path:N(o,e.path)}function dt(e){let t=new Map;for(let n of e)t.set(n.name,n);return t}function ft(e){let t={};for(let n of e.urlParams)t[n]=`url`;for(let n of e.queryParams)t[n]=`query`;return t}function pt(e,t,n){let r=[],i=[];for(let a of e){let e=P(a,t,n);r.push(e),e.absolute||i.push(e)}return{childrenMap:dt(r),nonAbsoluteChildren:i}}function P(e,t,n){let r=ve(e.path),i=ft(r),a={name:e.name,path:e.path,absolute:e.absolute,parent:t,children:void 0,paramMeta:r,nonAbsoluteChildren:void 0,fullName:``,staticPath:null,paramTypeMap:i};a.fullName=lt(a);let{childrenMap:o,nonAbsoluteChildren:s}=pt(e.children,a,n);return a.children=o,a.nonAbsoluteChildren=s,a.staticPath=ut(a),n&&(Object.freeze(s),Object.freeze(i),Object.freeze(a.children),Object.freeze(a)),a}function mt(e,t=!0){return P(e,null,t)}function ht(e,t){let n=[];return{add(e){return n.push(e),this},addMany(e){return n.push(...e),this},build(r){return mt(ct(e,t,n),!r?.skipFreeze)}}}function gt(e,t,n,r){return ht(e,t).addMany(n).build(r)}function F(e){let t=e.absolute?`~${e.path}`:e.path,n={name:e.name,path:t};return e.children.size>0&&(n.children=[...e.children.values()].map(e=>F(e))),n}function _t(e){return[...e.children.values()].map(e=>F(e))}function vt(e){let t=e?.queryParams;return new Ve({...e?.caseSensitive===void 0?void 0:{caseSensitive:e.caseSensitive},...e?.strictTrailingSlash===void 0?void 0:{strictTrailingSlash:e.strictTrailingSlash},...e?.strictQueryParams===void 0?void 0:{strictQueryParams:e.strictQueryParams},...e?.urlParamsEncoding===void 0?void 0:{urlParamsEncoding:e.urlParamsEncoding},parseQueryString:e=>it(e,t),buildQueryString:e=>st(e,t)})}function I(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 L(e,t,n){let r=gt(``,t,e),i=vt(n);return i.registerTree(r),{tree:r,matcher:i}}function yt(e){let t=L(e.definitions,e.rootPath,e.matcherOptions);e.tree=t.tree,e.matcher=t.matcher,e.resolvedForwardMap=V(e.config)}function R(e){let t=L(e.definitions,e.rootPath,e.matcherOptions);e.tree=t.tree,e.matcher=t.matcher}function z(e){B(e),R(e)}function B(e){e.definitions.length=0,Object.assign(e.config,le()),e.resolvedForwardMap=Object.create(null),e.routeCustomFields=Object.create(null)}function V(e){let t=Object.create(null);for(let n of Object.keys(e.forwardMap))t[n]=I(n,e.forwardMap);return t}function bt(e,t,r){if(e.canActivate){let r=typeof e.forwardTo==`string`?e.forwardTo:`[dynamic]`;n.logger.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 "${r}".`)}if(e.canDeactivate){let r=typeof e.forwardTo==`string`?e.forwardTo:`[dynamic]`;n.logger.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 "${r}".`)}if(typeof e.forwardTo==`function`){let n=e.forwardTo.constructor.name===`AsyncFunction`,r=e.forwardTo.toString().includes(`__awaiter`);if(n||r)throw TypeError(`forwardTo callback cannot be async for route "${t}". Async functions break matchPath/buildPath.`)}typeof e.forwardTo==`string`?r.forwardMap[t]=e.forwardTo:r.forwardFnMap[t]=e.forwardTo}function xt(e,t,n,r,i,a,o){let s=new Set([`name`,`path`,`children`,`canActivate`,`canDeactivate`,`forwardTo`,`encodeParams`,`decodeParams`,`defaultParams`]),c=Object.fromEntries(Object.entries(e).filter(([e])=>!s.has(e)));Object.keys(c).length>0&&(r[t]=c),e.canActivate&&(o?o.addActivateGuard(t,e.canActivate):i.set(t,e.canActivate)),e.canDeactivate&&(o?o.addDeactivateGuard(t,e.canDeactivate):a.set(t,e.canDeactivate)),e.forwardTo&&bt(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 H(e,t,n,r,i,a,o=``){for(let s of e){let e=o?`${o}.${s.name}`:s.name;xt(s,e,t,n,r,i,a),s.children&&H(s.children,t,n,r,i,a,e)}}function St(e,t){let n=[],r=le(),i=Object.create(null),a=new Map,o=new Map;for(let t of e)n.push(S(t));let{tree:s,matcher:c}=L(n,``,t);return H(e,r,i,a,o,void 0,``),{definitions:n,config:r,tree:s,matcher:c,resolvedForwardMap:V(r),routeCustomFields:i,rootPath:``,matcherOptions:t,depsStore:void 0,lifecycleNamespace:void 0,pendingCanActivate:a,pendingCanDeactivate:o,treeOperations:{commitTreeChanges:yt,resetStore:z,nodeToDefinition:F}}}const U=[];Object.freeze(U);function Ct(e){let t=e.length,n=[];for(let r=t-1;r>=0;r--)n.push(e[r]);return n}function wt(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}function Tt(e){let t=typeof e;return t===`string`||t===`number`||t===`boolean`}function Et(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(Tt(t)&&Tt(i)&&String(t)!==String(i))return!1}return!0}function Dt(e,t,n,r,i,a){for(let o=0;o<a;o++){let a=r[o];if(a!==i[o]||!Et(a,e,t,n))return o}return a}const Ot=new Map;function W(e){let t=Ot.get(e);if(t)return t;let n=kt(e);return Object.freeze(n),Ot.set(e,n),n}function kt(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]:wt(e)}let G,K,q=null,At,jt,J=null;function Mt(e,t){if(!t)return{intersection:``,toActivate:W(e.name),toDeactivate:U};let n=y(e),r=y(t);if(!n&&!r)return{intersection:``,toActivate:W(e.name),toDeactivate:Ct(W(t.name))};let i=W(e.name),a=W(t.name),o=Math.min(a.length,i.length),s=Dt(n??r,e,t,i,a,o),c;if(s>=a.length)c=U;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 Y(e,t){if(q!==null&&e===G&&t===K)return q;if(J!==null&&e===At&&t===jt)return J;let n=Mt(e,t);return At=G,jt=K,J=q,G=e,K=t,q=n,n}function Nt(e){let t=[];for(let n of e)for(let e of n.paramMeta.urlParams)t.push(e);return t}function Pt(e){return e.at(-1)?.fullName??``}function Ft(e,t){return{name:t??Pt(e.segments),params:e.params,meta:e.meta}}var It=class{#e;#t;get#n(){return this.#e.depsStore}constructor(e=[],t){this.#e=St(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===``&&!n)return!0;let{intersection:r,toActivate:i,toDeactivate:a}=Y(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,R(this.#e)}hasRoute(e){return this.#e.matcher.hasRoute(e)}clearRoutes(){z(this.#e)}buildPath(t,n,r){if(t===e.s.UNKNOWN_ROUTE)return typeof n?.path==`string`?n.path:``;let i=Object.hasOwn(this.#e.config.defaultParams,t)?{...this.#e.config.defaultParams[t],...n}:n??{},a=typeof this.#e.config.encoders[t]==`function`?this.#e.config.encoders[t]({...i}):i;return this.#e.matcher.buildPath(t,a,this.#i(r))}matchPath(e,t){let n=t,r=this.#e.matcher.match(e);if(!r)return;let{name:i,params:a,meta:o}=Ft(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 e=typeof this.#e.config.encoders[c]==`function`?this.#e.config.encoders[c]({...l}):l,t=n.trailingSlash;u=this.#e.matcher.buildPath(c,e,{trailingSlash:t===`never`||t===`always`?t:void 0,queryParamsMode:n.queryParamsMode})}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 Ft({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:``};return this.#n.areStatesEqual(n,i,r)}let s=i.params;return ue(t,s)?!o||de(o,s,t):!1}getMetaForState(e){return this.#e.matcher.hasRoute(e)?this.#e.matcher.getMetaByName(e):void 0}getUrlParams(e){let t=this.#e.matcher.getSegmentsByName(e);return t?Nt(t):[]}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 detected: ${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 Lt=new e.t(e.c.ROUTER_NOT_STARTED),Rt=new e.t(e.c.ROUTE_NOT_FOUND),zt=new e.t(e.c.SAME_STATES),Bt=Promise.reject(Lt),Vt=Promise.reject(Rt),Ht=Promise.reject(zt);Bt.catch(()=>{}),Vt.catch(()=>{}),Ht.catch(()=>{});function Ut(e,t,n,r,i){let a={phase:`activating`,reason:`success`,segments:{deactivated:n,activated:r,intersection:i}};return e?.name!==void 0&&(a.from=e.name),t.reload!==void 0&&(a.reload=t.reload),t.redirected!==void 0&&(a.redirected=t.redirected),a}function Wt({signal:e,...t}){return t}function Gt(t,n){let{toState:r,fromState:i,opts:a,toDeactivate:o,toActivate:s,intersection:c}=n;if(r.name!==e.s.UNKNOWN_ROUTE&&!t.hasRoute(r.name)){let n=new e.t(e.c.ROUTE_NOT_FOUND,{routeName:r.name});throw t.sendTransitionFail(r,i,n),n}if(i)for(let e of o)!s.includes(e)&&n.canDeactivateFunctions.has(e)&&t.clearCanDeactivate(e);r.transition=Ut(i,a,o,s,c);let l=e.r(r);t.setState(l);let u=a.signal===void 0?a:Wt(a);return t.sendTransitionDone(l,i,u),l}function Kt(t,n,r,i){let a=n;a.code===e.c.TRANSITION_CANCELLED||a.code===e.c.ROUTE_NOT_FOUND||t.sendTransitionFail(r,i,a)}function X(t,n,r){if(t instanceof DOMException&&t.name===`AbortError`)throw new e.t(e.c.TRANSITION_CANCELLED);qt(t,n,r)}function qt(t,n,r){throw t instanceof e.t?(t.setCode(n),t):new e.t(n,Yt(t,r))}const Jt=new Set([`code`,`segment`,`path`,`redirect`]);function Yt(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))Jt.has(n)||(t[n]=r);return{...n,...t}}return n}async function Xt(t,n,r){let i;try{i=await t}catch(e){X(e,n,r);return}if(!i)throw new e.t(n,{segment:r})}async function Zt(t,n,r,i,a,o,s,c,l,u){await Xt(l,r,u);for(let l=c;l<n.length;l++){if(!s())throw new e.t(e.c.TRANSITION_CANCELLED);let c=n[l],u=t.get(c);if(!u)continue;let d=!1;try{d=u(i,a,o)}catch(e){X(e,r,c)}if(d instanceof Promise){await Xt(d,r,c);continue}if(!d)throw new e.t(r,{segment:c})}}async function Qt(t,n,r,i,a,o,s,c){if(await t,!c())throw new e.t(e.c.TRANSITION_CANCELLED);if(i){let t=Z(n,r,e.c.CANNOT_ACTIVATE,a,o,s,c);if(t!==void 0&&await t,!c())throw new e.t(e.c.TRANSITION_CANCELLED)}}function $t(t,n,r,i,a,o,s,c,l,u){if(a){let a=Z(t,r,e.c.CANNOT_DEACTIVATE,s,c,l,u);if(a!==void 0)return Qt(a,n,i,o,s,c,l,u)}if(!u())throw new e.t(e.c.TRANSITION_CANCELLED);if(o)return Z(n,i,e.c.CANNOT_ACTIVATE,s,c,l,u)}function Z(t,n,r,i,a,o,s){for(let[c,l]of n.entries()){if(!s())throw new e.t(e.c.TRANSITION_CANCELLED);let u=t.get(l);if(!u)continue;let d=!1;try{d=u(i,a,o)}catch(e){X(e,r,l)}if(d instanceof Promise)return Zt(t,n,r,i,a,o,s,c+1,d,l);if(!d)throw new e.t(r,{segment:l})}}const Q=[e.s.UNKNOWN_ROUTE];Object.freeze(Q);const en={replace:!0};Object.freeze(en);function tn(t,n){return n?.name===e.s.UNKNOWN_ROUTE&&!t.replace?{...t,replace:!0}:t}function nn(e,t,n){return!!e&&!t.reload&&!t.force&&e.path===n.path}var rn=class{lastSyncResolved=!1;lastSyncRejected=!1;#e;#t=null;#n=0;setDependencies(e){this.#e=e}navigate(t,n,r){this.lastSyncResolved=!1;let i=this.#e;if(!i.canNavigate())return this.lastSyncRejected=!0,Bt;let a,o,s=!1,c=null;try{if(a=i.buildNavigateState(t,n),!a)return i.emitTransitionError(void 0,i.getState(),Rt),this.lastSyncRejected=!0,Vt;if(o=i.getState(),r=tn(r,o),nn(o,r,a))return i.emitTransitionError(a,o,zt),this.lastSyncRejected=!0,Ht;if(this.#o(),r.signal?.aborted)throw new e.t(e.c.TRANSITION_CANCELLED,{reason:r.signal.reason});let l=++this.#n;if(i.startTransition(a,o),s=!0,this.#n!==l)throw new e.t(e.c.TRANSITION_CANCELLED);let[u,d]=i.getLifecycleFunctions(),f=a.name===e.s.UNKNOWN_ROUTE,{toDeactivate:p,toActivate:m,intersection:h}=Y(a,o),g=o&&!r.forceDeactivate&&p.length>0,ee=!f&&m.length>0;if(u.size>0||d.size>0){c=new AbortController,this.#t=c;let t=c.signal,n=()=>this.#n===l&&i.isActive(),s=$t(u,d,p,m,!!g,ee,a,o,t,n);if(s!==void 0)return this.#r(s,{toState:a,fromState:o,opts:r,toDeactivate:p,toActivate:m,intersection:h,canDeactivateFunctions:u},c,l);if(!n())throw new e.t(e.c.TRANSITION_CANCELLED);this.#a(c)}return this.lastSyncResolved=!0,Promise.resolve(Gt(i,{toState:a,fromState:o,opts:r,toDeactivate:p,toActivate:m,intersection:h,canDeactivateFunctions:u}))}catch(e){return this.#i(e,c,s,a,o),Promise.reject(e)}}navigateToDefault(t){let n=this.#e;if(!n.getOptions().defaultRoute)return Promise.reject(new e.t(e.c.ROUTE_NOT_FOUND,{routeName:`defaultRoute not configured`}));let{route:r,params:i}=n.resolveDefault();return r?this.navigate(r,i,t):Promise.reject(new e.t(e.c.ROUTE_NOT_FOUND,{routeName:`defaultRoute resolved to empty`}))}navigateToNotFound(t){this.#o();let n=this.#e.getState(),r=n?W(n.name).toReversed():[];Object.freeze(r);let i={deactivated:r,activated:Q,intersection:``};Object.freeze(i);let a={phase:`activating`,...n&&{from:n.name},reason:`success`,segments:i};Object.freeze(a);let o={name:e.s.UNKNOWN_ROUTE,params:{},path:t,transition:a};return Object.freeze(o),this.#e.setState(o),this.#e.emitTransitionSuccess(o,n,en),o}abortCurrentNavigation(){this.#t?.abort(new e.t(e.c.TRANSITION_CANCELLED)),this.#t=null}async#r(t,n,r,i){let a=this.#e,o=()=>this.#n===i&&!r.signal.aborted&&a.isActive();try{if(n.opts.signal){if(n.opts.signal.aborted)throw new e.t(e.c.TRANSITION_CANCELLED,{reason:n.opts.signal.reason});n.opts.signal.addEventListener(`abort`,()=>{r.abort(n.opts.signal?.reason)},{once:!0,signal:r.signal})}if(await t,!o())throw new e.t(e.c.TRANSITION_CANCELLED);return Gt(a,n)}catch(e){throw Kt(a,e,n.toState,n.fromState),e}finally{this.#a(r)}}#i(e,t,n,r,i){t&&this.#a(t),n&&r&&Kt(this.#e,e,r,i)}#a(e){e.abort(),this.#t===e&&(this.#t=null)}#o(){this.#e.isTransitioning()&&(n.logger.warn(`router.navigate`,`Concurrent navigation detected on shared router instance. For SSR, use cloneRouter() to create isolated instance per request.`),this.#t?.abort(new e.t(e.c.TRANSITION_CANCELLED)),this.#e.cancelNavigation())}};const an={replace:!0};Object.freeze(an);var on=class{#e;setDependencies(e){this.#e=e}async start(t){let n=this.#e,r=n.getOptions(),i=n.matchPath(t);if(!i&&!r.allowNotFound){let r=new e.t(e.c.ROUTE_NOT_FOUND,{path:t});throw n.emitTransitionError(void 0,void 0,r),r}return n.completeStart(),i?n.navigate(i.name,i.params,an):n.navigateToNotFound(t)}stop(){this.#e.clearState()}},sn=class{#e;#t;#n;#r;#i;#a;constructor(e){this.#e=e.routerFSM,this.#t=e.emitter,this.#n=void 0,this.#s()}static validateSubscribeListener(e){if(typeof e!=`function`)throw TypeError(`[router.subscribe] Expected a function. For Observable pattern use @real-router/rx package`)}emitRouterStart(){this.#t.emit(e.l.ROUTER_START)}emitRouterStop(){this.#t.emit(e.l.ROUTER_STOP)}emitTransitionStart(t,n){this.#t.emit(e.l.TRANSITION_START,t,n)}emitTransitionSuccess(t,n,r){this.#t.emit(e.l.TRANSITION_SUCCESS,t,n,r)}emitTransitionError(t,n,r){this.#t.emit(e.l.TRANSITION_ERROR,t,n,r)}emitTransitionCancel(t,n){this.#t.emit(e.l.TRANSITION_CANCEL,t,n)}sendStart(){this.#e.send(c.START)}sendStop(){this.#e.send(c.STOP)}sendDispose(){this.#e.send(c.DISPOSE)}sendStarted(){this.#e.send(c.STARTED)}sendNavigate(e,t){this.#n=e,this.#e.forceState(s.TRANSITIONING),this.emitTransitionStart(e,t)}sendComplete(e,t,n={}){this.#e.forceState(s.READY),this.emitTransitionSuccess(e,t,n),this.#n===e&&(this.#n=void 0)}sendFail(e,t,n){let r=this.#n;this.#r=e,this.#i=t,this.#a=n,this.#e.send(c.FAIL),this.#n===r&&(this.#n=void 0)}sendFailSafe(e,t,n){this.isReady()?this.sendFail(e,t,n):this.emitTransitionError(e,t,n)}sendCancel(e,t){let n=this.#n;this.#r=e,this.#i=t,this.#e.send(c.CANCEL),this.#n===n&&(this.#n=void 0)}canBeginTransition(){return this.#e.canSend(c.NAVIGATE)}canStart(){return this.#e.canSend(c.START)}canCancel(){return this.#e.canSend(c.CANCEL)}isActive(){let e=this.#e.getState();return e!==s.IDLE&&e!==s.DISPOSED}isDisposed(){return this.#e.getState()===s.DISPOSED}isTransitioning(){return this.#e.getState()===s.TRANSITIONING}isReady(){return this.#e.getState()===s.READY}getCurrentToState(){return this.#n}addEventListener(e,t){return this.#t.on(e,t)}subscribe(t){return this.#t.on(e.l.TRANSITION_SUCCESS,(e,n)=>{t({route:e,previousRoute:n})})}clearAll(){this.#t.clearAll()}setLimits(e){this.#t.setLimits(e)}sendCancelIfTransitioning(e){this.canCancel()&&this.sendCancel(this.#n,e)}#o(){this.emitTransitionError(this.#r,this.#i,this.#a)}#s(){let e=this.#e;e.on(s.STARTING,c.STARTED,()=>{this.emitRouterStart()}),e.on(s.READY,c.STOP,()=>{this.emitRouterStop()}),e.on(s.TRANSITIONING,c.CANCEL,()=>{let e=this.#r;e!==void 0&&this.emitTransitionCancel(e,this.#i)}),e.on(s.STARTING,c.FAIL,()=>{this.#o()}),e.on(s.READY,c.FAIL,()=>{this.#o()}),e.on(s.TRANSITIONING,c.FAIL,()=>{this.#o()})}};const cn=new e.t(e.c.ROUTER_ALREADY_STARTED),ln=new Set([`all`,`warn-error`,`error-only`]);function un(e){return typeof e==`string`&&ln.has(e)}function dn(e){return typeof e==`string`?`"${e}"`:typeof e==`object`?JSON.stringify(e):String(e)}function fn(e){if(typeof e!=`object`||!e)throw TypeError(`Logger config must be an object`);let t=e;for(let e of Object.keys(t))if(e!==`level`&&e!==`callback`)throw TypeError(`Unknown logger config property: "${e}"`);if(`level`in t&&t.level!==void 0&&!un(t.level))throw TypeError(`Invalid logger level: ${dn(t.level)}. Expected: "all" | "warn-error" | "error-only"`);if(`callback`in t&&t.callback!==void 0&&typeof t.callback!=`function`)throw TypeError(`Logger callback must be a function, got ${typeof t.callback}`);return!0}var pn=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.plugins.setLimits(this.limits),this.eventBus.setLimits({maxListeners:this.limits.maxListeners,warnListeners:this.limits.warnListeners,maxEventDepth:this.limits.maxEventDepth}),this.routeLifecycle.setLimits(this.limits)}wireRouteLifecycleDeps(){let e={compileFactory:this.createCompileFactory()};this.routeLifecycle.setDependencies(e),this.routeLifecycle.setValidatorGetter(()=>{try{return t.r(this.router).validator}catch{return null}})}wireRoutesDeps(){this.routes.setDependencies({addActivateGuard:(e,t)=>{this.routeLifecycle.addCanActivate(e,t,!0)},addDeactivateGuard:(e,t)=>{this.routeLifecycle.addCanDeactivate(e,t,!0)},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,n)=>{let r=t.r(this.router);return r.validator?.routes.validateStateBuilderArgs(e,n,`forwardState`),r.forwardState(e,n)}}),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 t.r(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,n)=>{let r=t.r(this.router);r.validator?.routes.validateStateBuilderArgs(e,n,`navigate`);let{name:i,params:a}=r.forwardState(e,n),o=this.routes.getMetaForState(i);if(o===void 0)return;let s=r.buildPath(i,a);return this.state.makeState(i,a,s,o,!0)},resolveDefault:()=>{let e=this.options.get();return{route:g(e.defaultRoute,e=>this.dependenciesStore.dependencies[e]),params:g(e.defaultParams,e=>this.dependenciesStore.dependencies[e])}},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)},canNavigate:()=>this.eventBus.canBeginTransition(),getLifecycleFunctions:()=>this.routeLifecycle.getFunctions(),isActive:()=>this.router.isActive(),isTransitioning:()=>this.eventBus.isTransitioning(),clearCanDeactivate:e=>{this.routeLifecycle.clearCanDeactivate(e)}})}wireLifecycleDeps(){this.lifecycle.setDependencies({getOptions:()=>this.options.get(),navigate:(e,t,n)=>this.navigation.navigate(e,t,n),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,n)=>t.r(this.router).buildPath(e,n),getUrlParams:e=>this.routes.getUrlParams(e)})}createCompileFactory(){let{router:e,dependenciesStore:t}=this;return n=>n(e,e=>t.dependencies[e])}};function mn(e){e.wireLimits(),e.wireRouteLifecycleDeps(),e.wireRoutesDeps(),e.wirePluginsDeps(),e.wireNavigationDeps(),e.wireLifecycleDeps(),e.wireStateDeps()}const hn=Object.freeze({});var gn=class r{#e;#t;#n;#r;#i;#a;#o;#s;#c;#l;constructor(r=[],i={},a={}){i.logger&&fn(i.logger)&&(n.logger.configure(i.logger),delete i.logger),te.validateOptionsIsObject(i),d(a),r.length>0&&f(r),this.#e=new te(i),this.#t=e.n(i.limits),this.#n=p(a),this.#r=new re,this.#i=new It(r,_n(this.#e.get())),this.#a=new ce,this.#o=new oe,this.#s=new rn,this.#c=new on,this.#l=new sn({routerFSM:u(),emitter:new o({onListenerError:(e,t)=>{n.logger.error(`Router`,`Error in listener for ${e}:`,t)},onListenerWarn:(e,t)=>{n.logger.warn(`router.addEventListener`,`Event "${e}" has ${t} listeners — possible memory leak`)}})}),mn(new pn({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 s=new Map;t.i(this,{makeState:(e,t,n,r)=>this.#r.makeState(e,t,n,r),forwardState:t.n(`forwardState`,(e,t)=>this.#i.forwardState(e,t),s),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),buildPath:t.n(`buildPath`,(t,n)=>this.#i.buildPath(t,n??e.a,this.#e.get()),s),start:t.t(`start`,e=>this.#c.start(e),s),interceptors:s,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}),getLifecycleFactories:()=>this.#a.getFactories(),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:[]}),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)}isActiveRoute(e,r,i,a){return t.r(this).validator?.routes.validateIsActiveRouteArgs(e,r,i,a),t.r(this).validator?.routes.validateRouteName(e,`isActiveRoute`),e===``?(n.logger.warn(`real-router`,`isActiveRoute("") called with empty string. Root node is not considered a parent of any route.`),!1):this.#i.isActiveRoute(e,r,i,a)}buildPath(e,n){let r=t.r(this);return r.validator?.routes.validateBuildPathArgs(e),r.validator?.navigation.validateParams(n,`buildPath`),r.buildPath(e,n)}getState(){return this.#r.get()}getPreviousState(){return this.#r.getPrevious()}areStatesEqual(e,n,r=!0){return t.r(this).validator?.state.validateAreStatesEqualArgs(e,n,r),this.#r.areStatesEqual(e,n,r)}shouldUpdateNode(e){return t.r(this).validator?.routes.validateShouldUpdateNodeArgs(e),It.shouldUpdateNode(e)}isActive(){return this.#l.isActive()}start(e){if(!this.#l.canStart())return Promise.reject(cn);t.r(this).validator?.navigation.validateStartArgs(e),this.#l.sendStart();let n=t.r(this).start(e).catch(e=>{throw this.#l.isReady()&&(this.#c.stop(),this.#l.sendStop()),e});return r.#d(n),n}stop(){return this.#s.abortCurrentNavigation(),this.#l.sendCancelIfTransitioning(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.sendCancelIfTransitioning(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=t.r(this);for(let t of e.routerExtensions)for(let e of t.keys)delete this[e];e.routerExtensions.length=0,this.#i.clearRoutes(),this.#a.clearAll(),this.#r.reset(),this.#n.dependencies=Object.create(null),this.#f()}canNavigateTo(e,n){let r=t.r(this);if(r.validator?.routes.validateRouteName(e,`canNavigateTo`),r.validator?.navigation.validateParams(n,`canNavigateTo`),!this.#i.hasRoute(e))return!1;let{name:i,params:a}=r.forwardState(e,n??{}),o=this.#r.makeState(i,a),s=this.#r.get(),{toDeactivate:c,toActivate:l}=Y(o,s);return this.#a.canNavigateTo(c,l,o,s)}usePlugin(...e){let n=e.filter(Boolean);if(n.length===0)return()=>{};let r=t.r(this);r.validator?.plugins.validatePluginLimit(this.#o.count(),this.#t);for(let e of n)r.validator?.plugins.validateNoDuplicatePlugins(e,this.#o.getAll());return this.#o.use(...n)}subscribe(e){return sn.validateSubscribeListener(e),this.#l.subscribe(e)}navigate(n,i,a){let o=t.r(this);o.validator?.navigation.validateNavigateArgs(n),o.validator?.navigation.validateParams(i,`navigate`);let s=a??hn;o.validator?.navigation.validateNavigationOptions(s,`navigate`);let c=this.#s.navigate(n,i??e.a,s);return this.#s.lastSyncResolved?this.#s.lastSyncResolved=!1:this.#s.lastSyncRejected?this.#s.lastSyncRejected=!1:r.#d(c),c}navigateToDefault(e){let n=t.r(this);n.validator?.navigation.validateNavigateToDefaultArgs(e);let i=e??hn;n.validator?.navigation.validateNavigationOptions(i,`navigateToDefault`);let a=this.#s.navigateToDefault(i);return this.#s.lastSyncResolved?this.#s.lastSyncResolved=!1:this.#s.lastSyncRejected?this.#s.lastSyncRejected=!1:r.#d(a),a}navigateToNotFound(t){if(!this.#l.isActive())throw new e.t(e.c.ROUTER_NOT_STARTED);if(t!==void 0&&typeof t!=`string`)throw TypeError(`[router.navigateToNotFound] path must be a string, got ${typeof t}`);let n=t??this.#r.get().path;return this.#s.navigateToNotFound(n)}static#u=t=>{t instanceof e.t&&(t.code===e.c.SAME_STATES||t.code===e.c.TRANSITION_CANCELLED||t.code===e.c.ROUTER_NOT_STARTED||t.code===e.c.ROUTE_NOT_FOUND)||n.logger.error(`router.navigate`,`Unexpected navigation error`,t)};static#d(e){e.catch(r.#u)}#f(){this.navigate=$,this.navigateToDefault=$,this.navigateToNotFound=$,this.start=$,this.stop=$,this.usePlugin=$,this.subscribe=$,this.canNavigateTo=$}};function $(){throw new e.t(e.c.ROUTER_DISPOSED)}function _n(e){return{strictTrailingSlash:e.trailingSlash===`strict`,strictQueryParams:e.queryParamsMode===`strict`,urlParamsEncoding:e.urlParamsEncoding,queryParams:e.queryParams}}Object.defineProperty(exports,`a`,{enumerable:!0,get:function(){return I}}),Object.defineProperty(exports,`c`,{enumerable:!0,get:function(){return fe}}),Object.defineProperty(exports,`i`,{enumerable:!0,get:function(){return H}}),Object.defineProperty(exports,`l`,{enumerable:!0,get:function(){return S}}),Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return B}}),Object.defineProperty(exports,`o`,{enumerable:!0,get:function(){return _t}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return V}}),Object.defineProperty(exports,`s`,{enumerable:!0,get:function(){return pe}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return gn}}),Object.defineProperty(exports,`u`,{enumerable:!0,get:function(){return f}});
|
|
6
|
-
//# sourceMappingURL=Router-CVNR-dug.js.map
|