@real-router/core 0.79.1 → 0.81.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/README.md +45 -45
- package/dist/cjs/Router-BIYDZRgF.js +2 -0
- package/dist/cjs/Router-BIYDZRgF.js.map +1 -0
- package/dist/cjs/Router.js +1 -1
- package/dist/cjs/Router.js.map +1 -1
- package/dist/cjs/api/cloneRouter.d.ts +1 -1
- package/dist/cjs/api/cloneRouter.js.map +1 -1
- package/dist/cjs/api.js +1 -2
- package/dist/cjs/api.js.map +1 -1
- package/dist/cjs/buildParamMeta-DniluAIV.js.map +1 -1
- package/dist/cjs/engine/builder/buildTree.js +1 -1
- package/dist/cjs/engine/builder/buildTree.js.map +1 -1
- package/dist/cjs/engine/path-matcher/registration/trieNodes.js.map +1 -1
- package/dist/cjs/index.d.ts +2 -2
- package/dist/cjs/index.js +1 -2
- package/dist/cjs/internals.d.ts +1 -2
- package/dist/cjs/internals.d.ts.map +1 -1
- package/dist/cjs/internals.js.map +1 -1
- package/dist/cjs/namespaces/EventBusNamespace/EventBusNamespace.js.map +1 -1
- package/dist/cjs/routerFSM.js +1 -1
- package/dist/cjs/routerFSM.js.map +1 -1
- package/dist/cjs/types/base.d.ts +10 -1
- package/dist/cjs/types/base.d.ts.map +1 -1
- package/dist/cjs/types/router.d.ts +1 -1
- package/dist/cjs/types.d.ts +2 -2
- package/dist/cjs/types.d.ts.map +1 -1
- package/dist/cjs/utils/event-emitter/EventEmitter.js.map +1 -0
- package/dist/cjs/utils/fsm/fsm.js.map +1 -0
- package/dist/cjs/utils/logger/RouterLogger.js.map +1 -0
- package/dist/cjs/utils/logger/constants.js.map +1 -0
- package/dist/cjs/validation.js +1 -2
- package/dist/esm/Router-BIui2eew.mjs +2 -0
- package/dist/esm/Router-BIui2eew.mjs.map +1 -0
- package/dist/esm/api/cloneRouter.d.mts +1 -1
- package/dist/esm/api.mjs +1 -1
- package/dist/esm/api.mjs.map +1 -1
- package/dist/esm/buildParamMeta-bOLhLF9h.mjs.map +1 -1
- package/dist/esm/index.d.mts +2 -2
- package/dist/esm/index.mjs +1 -1
- package/dist/esm/internals.d.mts +1 -2
- package/dist/esm/internals.d.mts.map +1 -1
- package/dist/esm/types/base.d.mts +10 -1
- package/dist/esm/types/base.d.mts.map +1 -1
- package/dist/esm/types/router.d.mts +1 -1
- package/dist/esm/types.d.mts +2 -2
- package/dist/esm/types.d.mts.map +1 -1
- package/package.json +4 -13
- package/dist/cjs/Router-DGUed2F4.js +0 -2
- package/dist/cjs/Router-DGUed2F4.js.map +0 -1
- package/dist/cjs/cloneRouter-Ch25z3Z2.js +0 -2
- package/dist/cjs/cloneRouter-Ch25z3Z2.js.map +0 -1
- package/dist/cjs/foundation/event-emitter/EventEmitter.js.map +0 -1
- package/dist/cjs/foundation/fsm/fsm.js.map +0 -1
- package/dist/cjs/foundation/logger/RouterLogger.js.map +0 -1
- package/dist/cjs/foundation/logger/constants.js.map +0 -1
- package/dist/cjs/utils/createRequestScope.d.ts +0 -111
- package/dist/cjs/utils/createRequestScope.d.ts.map +0 -1
- package/dist/cjs/utils/createRequestScope.js +0 -2
- package/dist/cjs/utils/createRequestScope.js.map +0 -1
- package/dist/cjs/utils/getStaticPaths.d.ts +0 -7
- package/dist/cjs/utils/getStaticPaths.d.ts.map +0 -1
- package/dist/cjs/utils/getStaticPaths.js +0 -2
- package/dist/cjs/utils/getStaticPaths.js.map +0 -1
- package/dist/cjs/utils/hydrateRouter.d.ts +0 -69
- package/dist/cjs/utils/hydrateRouter.d.ts.map +0 -1
- package/dist/cjs/utils/hydrateRouter.js +0 -2
- package/dist/cjs/utils/hydrateRouter.js.map +0 -1
- package/dist/cjs/utils/serializeRouterState.d.ts +0 -84
- package/dist/cjs/utils/serializeRouterState.d.ts.map +0 -1
- package/dist/cjs/utils/serializeRouterState.js +0 -2
- package/dist/cjs/utils/serializeRouterState.js.map +0 -1
- package/dist/cjs/utils/serializeState.d.ts +0 -50
- package/dist/cjs/utils/serializeState.d.ts.map +0 -1
- package/dist/cjs/utils/serializeState.js +0 -2
- package/dist/cjs/utils/serializeState.js.map +0 -1
- package/dist/cjs/utils.d.ts +0 -6
- package/dist/cjs/utils.js +0 -2
- package/dist/cjs/utils.js.map +0 -1
- package/dist/esm/Router-Bk6PfSE8.mjs +0 -2
- package/dist/esm/Router-Bk6PfSE8.mjs.map +0 -1
- package/dist/esm/cloneRouter-D4rnqmi9.mjs +0 -2
- package/dist/esm/cloneRouter-D4rnqmi9.mjs.map +0 -1
- package/dist/esm/utils/createRequestScope.d.mts +0 -111
- package/dist/esm/utils/createRequestScope.d.mts.map +0 -1
- package/dist/esm/utils/getStaticPaths.d.mts +0 -7
- package/dist/esm/utils/getStaticPaths.d.mts.map +0 -1
- package/dist/esm/utils/hydrateRouter.d.mts +0 -69
- package/dist/esm/utils/hydrateRouter.d.mts.map +0 -1
- package/dist/esm/utils/serializeRouterState.d.mts +0 -84
- package/dist/esm/utils/serializeRouterState.d.mts.map +0 -1
- package/dist/esm/utils/serializeState.d.mts +0 -50
- package/dist/esm/utils/serializeState.d.mts.map +0 -1
- package/dist/esm/utils.d.mts +0 -6
- package/dist/esm/utils.mjs +0 -2
- package/dist/esm/utils.mjs.map +0 -1
- /package/dist/cjs/{foundation → utils}/event-emitter/EventEmitter.js +0 -0
- /package/dist/cjs/{foundation → utils}/fsm/fsm.js +0 -0
- /package/dist/cjs/{foundation → utils}/logger/RouterLogger.js +0 -0
- /package/dist/cjs/{foundation → utils}/logger/constants.js +0 -0
package/README.md
CHANGED
|
@@ -51,12 +51,12 @@ await router.navigate("users.profile", { id: "123" });
|
|
|
51
51
|
|
|
52
52
|
### Navigation
|
|
53
53
|
|
|
54
|
-
| Method | Returns | Description
|
|
55
|
-
| ----------------------------------- | ---------------- |
|
|
56
|
-
| `navigate(name, params?, options?)` | `Promise<State>` | Navigate to a route. Fire-and-forget safe
|
|
54
|
+
| Method | Returns | Description |
|
|
55
|
+
| ----------------------------------- | ---------------- | --------------------------------------------------- |
|
|
56
|
+
| `navigate(name, params?, options?)` | `Promise<State>` | Navigate to a route. Fire-and-forget safe |
|
|
57
57
|
| `navigateToDefault(options?)` | `Promise<State>` | Navigate to the default route. Fire-and-forget safe |
|
|
58
|
-
| `navigateToNotFound(path?)` | `State` | Synchronously set UNKNOWN_ROUTE state
|
|
59
|
-
| `canNavigateTo(name, params?)` | `boolean` | Check if guards allow navigation
|
|
58
|
+
| `navigateToNotFound(path?)` | `State` | Synchronously set UNKNOWN_ROUTE state |
|
|
59
|
+
| `canNavigateTo(name, params?)` | `boolean` | Check if guards allow navigation |
|
|
60
60
|
|
|
61
61
|
```typescript
|
|
62
62
|
await router.navigate("users.profile", { id: "123" });
|
|
@@ -81,11 +81,11 @@ controller.abort();
|
|
|
81
81
|
|
|
82
82
|
### Events & Plugins
|
|
83
83
|
|
|
84
|
-
| Method | Returns | Description
|
|
85
|
-
| -------------------------- | ------------- |
|
|
86
|
-
| `subscribe(listener)` | `Unsubscribe` | Listen to successful transitions
|
|
84
|
+
| Method | Returns | Description |
|
|
85
|
+
| -------------------------- | ------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
86
|
+
| `subscribe(listener)` | `Unsubscribe` | Listen to successful transitions |
|
|
87
87
|
| `subscribeLeave(listener)` | `Unsubscribe` | Subscribe to **approved** route departures — tentative, not committed: an activation guard can still reject. Listener may return `Promise<void>` to block the pipeline (exit animations). Receives an `AbortSignal` that aborts (with the failure reason) if the navigation does not commit |
|
|
88
|
-
| `usePlugin(...plugins)` | `Unsubscribe` | Register plugin factories
|
|
88
|
+
| `usePlugin(...plugins)` | `Unsubscribe` | Register plugin factories |
|
|
89
89
|
|
|
90
90
|
```typescript
|
|
91
91
|
const unsub = router.subscribe(({ route, previousRoute }) => {
|
|
@@ -120,17 +120,17 @@ import {
|
|
|
120
120
|
} from "@real-router/core/api";
|
|
121
121
|
```
|
|
122
122
|
|
|
123
|
-
| Function | Purpose | Key methods
|
|
124
|
-
| ---------------------------- | --------------------- |
|
|
125
|
-
| `getRoutesApi(router)` | Dynamic route CRUD | `add`, `remove`, `update`, `replace`, `has`, `get`
|
|
126
|
-
| `getDependenciesApi(router)` | Dependency injection | `get`, `set`, `setAll`, `remove`, `has`
|
|
127
|
-
| `getLifecycleApi(router)` | Guard registration | `addActivateGuard`, `addDeactivateGuard`, `remove*`
|
|
123
|
+
| Function | Purpose | Key methods |
|
|
124
|
+
| ---------------------------- | --------------------- | --------------------------------------------------------------------------------------------------- |
|
|
125
|
+
| `getRoutesApi(router)` | Dynamic route CRUD | `add`, `remove`, `update`, `replace`, `has`, `get` |
|
|
126
|
+
| `getDependenciesApi(router)` | Dependency injection | `get`, `set`, `setAll`, `remove`, `has` |
|
|
127
|
+
| `getLifecycleApi(router)` | Guard registration | `addActivateGuard`, `addDeactivateGuard`, `remove*` |
|
|
128
128
|
| `getPluginApi(router)` | Plugin infrastructure | `makeState`, `matchPath`, `addInterceptor`, `extendRouter`, `emitTransitionError`, `getRouteConfig` |
|
|
129
|
-
| `cloneRouter(router, deps?)` | SSR cloning | Shares route definitions, independent state
|
|
129
|
+
| `cloneRouter(router, deps?)` | SSR cloning | Shares route definitions, independent state |
|
|
130
130
|
|
|
131
131
|
## Utilities
|
|
132
132
|
|
|
133
|
-
SSR/SSG/hydration helpers
|
|
133
|
+
SSR/SSG/hydration helpers are published separately as [@real-router/ssr-utils](https://www.npmjs.com/package/@real-router/ssr-utils) (extracted from the former `@real-router/core/utils` subpath).
|
|
134
134
|
|
|
135
135
|
```typescript
|
|
136
136
|
import {
|
|
@@ -138,7 +138,7 @@ import {
|
|
|
138
138
|
hydrateRouter,
|
|
139
139
|
getStaticPaths,
|
|
140
140
|
serializeState,
|
|
141
|
-
} from "@real-router/
|
|
141
|
+
} from "@real-router/ssr-utils";
|
|
142
142
|
|
|
143
143
|
// SSR: serialize the full resolved State (incl. plugin context namespaces)
|
|
144
144
|
const state = await router.start(req.url);
|
|
@@ -155,14 +155,14 @@ const paths = await getStaticPaths(router, {
|
|
|
155
155
|
// → ["/", "/users", "/users/1", "/users/2"]
|
|
156
156
|
```
|
|
157
157
|
|
|
158
|
-
| Function
|
|
159
|
-
|
|
|
160
|
-
| `serializeRouterState(state, { excludeContext? })`
|
|
161
|
-
| `hydrateRouter(router, source)`
|
|
162
|
-
| `serializeState(data)`
|
|
163
|
-
| `getStaticPaths(router, entries?)`
|
|
164
|
-
| `SerializedRouterState` (type)
|
|
165
|
-
| `StaticPathEntries` (type)
|
|
158
|
+
| Function | Purpose |
|
|
159
|
+
| -------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
160
|
+
| `serializeRouterState(state, { excludeContext? })` | XSS-safe JSON serialization of a router `State` for SSR → client transport. Strips `transition`; keeps `name`, `params`, `path`, `context`. Pass `excludeContext` to drop non-JSON-safe namespaces (e.g. `rsc`) |
|
|
161
|
+
| `hydrateRouter(router, source)` | Hydrate a fresh router from the server-serialized payload. Deposits the parsed state onto a one-shot scratchpad consumed by SSR loader plugins (#596) so the first `start()` reuses server-resolved namespace values instead of re-running loaders |
|
|
162
|
+
| `serializeState(data)` | XSS-safe JSON serialization for embedding arbitrary data in HTML `<script>` tags (lower-level than `serializeRouterState`) |
|
|
163
|
+
| `getStaticPaths(router, entries?)` | Enumerate leaf routes and build URLs for SSG pre-rendering |
|
|
164
|
+
| `SerializedRouterState` (type) | Parsed shape produced by `serializeRouterState` after `JSON.parse` — `Omit<State, "transition">` |
|
|
165
|
+
| `StaticPathEntries` (type) | Type for the `entries` parameter: `Record<string, () => Promise<Record<string, string>[]>>` |
|
|
166
166
|
|
|
167
167
|
### `getNavigator(router)` (main entry)
|
|
168
168
|
|
|
@@ -233,15 +233,15 @@ const routes: Route[] = [
|
|
|
233
233
|
|
|
234
234
|
### Input — `params` object values
|
|
235
235
|
|
|
236
|
-
| Value
|
|
237
|
-
|
|
|
238
|
-
| `undefined`
|
|
239
|
-
| `null`
|
|
240
|
-
| `""` (empty string)
|
|
241
|
-
| `string`
|
|
242
|
-
| `number`
|
|
243
|
-
| `boolean`
|
|
244
|
-
| `0`, `false` (falsy-defined) | Coerced to string
|
|
236
|
+
| Value | URL path param (`:id`) | URL query param (`?q`) | `state.params` after navigation |
|
|
237
|
+
| ---------------------------- | --------------------------------------- | ---------------------------------------------------- | ----------------------------------------- |
|
|
238
|
+
| `undefined` | Error — path param is required | **stripped** — parameter absent from URL | Key absent (`"q" in params` is `false`) |
|
|
239
|
+
| `null` | Same as `undefined` | `?q` (key-only, via `nullFormat: "default"`) | `null` |
|
|
240
|
+
| `""` (empty string) | Empty segment (caller's responsibility) | `?q=` (explicit empty value, distinct from `null`) | `""` |
|
|
241
|
+
| `string` | Encoded per `urlParamsEncoding` | `?q=value` (URI-encoded) | Unchanged |
|
|
242
|
+
| `number` | `/users/42` | `?q=42` | `42` (number, via `numberFormat: "auto"`) |
|
|
243
|
+
| `boolean` | `/users/true` | `?q=true` / `?q=false` (via `booleanFormat: "auto"`) | `true` / `false` |
|
|
244
|
+
| `0`, `false` (falsy-defined) | Coerced to string | Preserved (not stripped) | Preserved |
|
|
245
245
|
|
|
246
246
|
**`undefined` is stripped at the core boundary.** This is an explicit public contract, not an implementation detail. Plugins that add `undefined` values via `addInterceptor("forwardState")` also have them scrubbed before URL and state.
|
|
247
247
|
|
|
@@ -303,7 +303,7 @@ try {
|
|
|
303
303
|
} catch (err) {
|
|
304
304
|
if (err instanceof RouterError) {
|
|
305
305
|
// err.code: ROUTE_NOT_FOUND | CANNOT_ACTIVATE | CANNOT_DEACTIVATE
|
|
306
|
-
// |
|
|
306
|
+
// | CANCELLED | SAME_STATES | DISPOSED | ...
|
|
307
307
|
}
|
|
308
308
|
}
|
|
309
309
|
```
|
|
@@ -332,19 +332,19 @@ Full documentation: [Wiki](https://github.com/greydragon888/real-router/wiki)
|
|
|
332
332
|
- [Navigation Lifecycle](https://github.com/greydragon888/real-router/wiki/navigation-lifecycle) — transitions, guards, hooks
|
|
333
333
|
- [RouterOptions](https://github.com/greydragon888/real-router/wiki/RouterOptions) — `defaultRoute`, `trailingSlash`, `allowNotFound`, and more
|
|
334
334
|
- [Plugin Architecture](https://github.com/greydragon888/real-router/wiki/plugin-architecture) — interception, extension, events
|
|
335
|
-
- [Migration from router5](https://github.com/greydragon888/real-router/wiki/migration-guide)
|
|
336
335
|
|
|
337
336
|
## Related Packages
|
|
338
337
|
|
|
339
|
-
| Package | Description
|
|
340
|
-
| ------------------------------------------------------------------------------------------------------------ |
|
|
341
|
-
| [@real-router/react](https://www.npmjs.com/package/@real-router/react) | React integration (`RouterProvider`, hooks, `Link`, `RouteView`)
|
|
342
|
-
| [@real-router/browser-plugin](https://www.npmjs.com/package/@real-router/browser-plugin) | Browser History API and URL synchronization
|
|
343
|
-
| [@real-router/hash-plugin](https://www.npmjs.com/package/@real-router/hash-plugin) | Hash-based routing
|
|
344
|
-
| [@real-router/rx](https://www.npmjs.com/package/@real-router/rx) | Observable API (`state$`, `events$`, TC39 Observable)
|
|
345
|
-
| [@real-router/logger-plugin](https://www.npmjs.com/package/@real-router/logger-plugin) | Development logging
|
|
346
|
-
| [@real-router/persistent-params-plugin](https://www.npmjs.com/package/@real-router/persistent-params-plugin) | Parameter persistence
|
|
347
|
-
| [@real-router/route-utils](https://www.npmjs.com/package/@real-router/route-utils) | Route tree queries and segment testing
|
|
338
|
+
| Package | Description |
|
|
339
|
+
| ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------- |
|
|
340
|
+
| [@real-router/react](https://www.npmjs.com/package/@real-router/react) | React integration (`RouterProvider`, hooks, `Link`, `RouteView`) |
|
|
341
|
+
| [@real-router/browser-plugin](https://www.npmjs.com/package/@real-router/browser-plugin) | Browser History API and URL synchronization |
|
|
342
|
+
| [@real-router/hash-plugin](https://www.npmjs.com/package/@real-router/hash-plugin) | Hash-based routing |
|
|
343
|
+
| [@real-router/rx](https://www.npmjs.com/package/@real-router/rx) | Observable API (`state$`, `events$`, TC39 Observable) |
|
|
344
|
+
| [@real-router/logger-plugin](https://www.npmjs.com/package/@real-router/logger-plugin) | Development logging |
|
|
345
|
+
| [@real-router/persistent-params-plugin](https://www.npmjs.com/package/@real-router/persistent-params-plugin) | Parameter persistence |
|
|
346
|
+
| [@real-router/route-utils](https://www.npmjs.com/package/@real-router/route-utils) | Route tree queries and segment testing |
|
|
347
|
+
| [@real-router/ssr-utils](https://www.npmjs.com/package/@real-router/ssr-utils) | Router-level SSR/SSG/hydration helpers (serialize, hydrate, static paths) |
|
|
348
348
|
|
|
349
349
|
## Contributing
|
|
350
350
|
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
const e=require("./buildParamMeta-DniluAIV.js"),t=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`,REENTRANT_NAVIGATION:`REENTRANT_NAVIGATION`,REENTRANT_TREE_MUTATION:`REENTRANT_TREE_MUTATION`}),n=`@@router/UNKNOWN_ROUTE`,r={UNKNOWN_ROUTE:n},i={ROUTER_START:`onStart`,ROUTER_STOP:`onStop`,TRANSITION_START:`onTransitionStart`,TRANSITION_LEAVE_APPROVE:`onTransitionLeaveApprove`,TRANSITION_CANCEL:`onTransitionCancel`,TRANSITION_SUCCESS:`onTransitionSuccess`,TRANSITION_ERROR:`onTransitionError`},a={ROUTER_START:`$start`,ROUTER_STOP:`$stop`,TRANSITION_START:`$$start`,TRANSITION_LEAVE_APPROVE:`$$leaveApprove`,TRANSITION_CANCEL:`$$cancel`,TRANSITION_SUCCESS:`$$success`,TRANSITION_ERROR:`$$error`},o={maxDependencies:100,maxPlugins:50,maxListeners:1e4,warnListeners:1e3,maxLifecycleHandlers:200},s=Object.freeze({}),c=Object.freeze({deactivated:Object.freeze([]),activated:Object.freeze([]),intersection:``}),l=Object.freeze({phase:`activating`,reason:`success`,segments:c});function u(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 d(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&&d(r,t)}}const f=new Set([`all`,`warn-error`,`error-only`,`none`]);function p(e){return typeof e==`string`&&f.has(e)}function m(e){return typeof e==`string`?`"${e}"`:typeof e==`object`?JSON.stringify(e):String(e)}function h(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&&!p(t.level))throw TypeError(`Invalid logger level: ${m(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}`)}function g(e){return Object.freeze(e)}function ee(e={}){return{...o,...e}}function _(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??={},t[n]=r)}return t??s}function v(e={}){let t=Object.create(null);for(let n in e)e[n]!==void 0&&(t[n]=e[n]);return{dependencies:t,limits:o}}function y(e,t){let n=e.path,r=n.startsWith(`~`),i=r?n.slice(1):n,a=i!==``&&!i.startsWith(`/`)&&!i.startsWith(`?`)?`/${i}`:i,o={name:e.name,path:a,absolute:r,children:[],parent:t};if(e.children)for(let t of e.children){let e=y(t,o);o.children.push(e)}return o}function te(e,t,n){let r=y({name:e,path:t},null);for(let e of n){let t=y(e,r);r.children.push(t)}return r}const ne=/[^\w!$'()*+,.:;|~-]/gu,re=/[^\w!$'()*+,.:;|~-]/u,ie=/[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?<![\uD800-\uDBFF])[\uDC00-\uDFFF]/g,b=e=>t=>{try{return e(t)}catch{return e(t.replaceAll(ie,`�`))}},ae=b(e=>e.replaceAll(ne,e=>encodeURIComponent(e))),oe={default:e=>re.test(e)?ae(e):e,uri:b(encodeURI),uriComponent:b(encodeURIComponent),none:e=>e},se={default:decodeURIComponent,uri:decodeURI,uriComponent:decodeURIComponent,none:e=>e},ce=(e,t)=>{let n=oe[t],r=String(e).split(`/`),i=n(r[0]);for(let e=1;e<r.length;e++)i+=`/`+n(r[e]);return i},le=Object.freeze(Object.create(null));function x(){return{staticChildren:le,hasChildren:!1,paramChild:void 0,splatChild:void 0,route:void 0,slashChildRoute:void 0}}function S(e){return e.length>1&&e.endsWith(`/`)?e.slice(0,-1):e}function ue(e,t){return e===``?t:t===``?e:e+t}function de(e){return e>=48&&e<=57||e>=65&&e<=70||e>=97&&e<=102}function fe(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(!de(n)||!de(r))return!1;t+=3}else t++;return!0}const pe=Object.freeze([]),me=Object.freeze(new Set),he=Object.freeze([]),ge=Object.freeze({}),_e=Object.freeze({});function ve(e,t,n){let r=t.has(e.name);return{paramName:e.name,encoder:r?e=>ce(e,n):oe[n]}}function ye(t,n,r){let i=new Set,a=new Set;for(let e of n){for(let t of e.paramMeta.urlParams)i.add(t);for(let t of e.paramMeta.spatParams)a.add(t)}if(i.size===0)return{buildStaticParts:[t],buildParamSlots:he};let o=[],s=[],c=``,l=e.s(t);for(let[t,n]of l.entries()){t>0&&(c+=`/`);let i=e.o(n);if(`error`in i||i.kind===`static`){c+=n;continue}o.push(c),c=``,s.push(ve(i,a,r))}return o.push(c),{buildStaticParts:o,buildParamSlots:s}}function be(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 xe(){throw Error(`[SegmentMatcher.registerTree] Empty parameter name: a parameter marker (':' or '*') must be followed by a name (e.g. ':id', '*rest'). A name-less marker, or a trailing '?' with no parameter name, would capture under an empty key at match but emit a literal at build — the two disagree, so it is rejected.`)}function Se(e){throw Error(`[SegmentMatcher.registerTree] Fused parameter marker in segment "${e}": a ':'/'*' marker must begin a segment (e.g. 'a/:b', not 'a:b'). build extracts it as a param while the trie treats the segment as a literal — the two disagree.`)}function Ce(e){throw Error(`[SegmentMatcher.registerTree] Trailing parameter marker in segment "${e}": a param name cannot end in a bare ':' or '*' (e.g. ':y*' — the name is 'y' plus a stray marker). build/meta would capture the marker into the name while the gate rejects it as name-less — the two disagree, so it is rejected.`)}function we(e){throw Error(`[SegmentMatcher.registerTree] Optional params are not supported: "${e}" — declare two sibling routes instead (one with the segment, one without). The route hierarchy already expresses optionality.`)}function Te(e){throw Error(`[SegmentMatcher.registerTree] Regex constraints are not supported: "<"/">" are reserved in path segments ("${e}"). Match the segment as a plain string and validate the value in a guard (canActivate) or app code.`)}function Ee(e){throw Error(`[SegmentMatcher.registerTree] Non-ASCII static segment "${e}": match rejects non-ASCII input and compares static keys raw, so this route would never match. Percent-encode it (e.g. "/caf%C3%A9") or use a param.`)}function De(e,t){switch(e){case`name-less`:return xe();case`trailing-marker`:return Ce(t);case`fused-marker`:return Se(t);case`optional-removed`:return we(t);case`constraint-removed`:return Te(t)}}function Oe(e,t){let n=new Set,r=``;for(let e of t){if(n.has(e)){r=e;break}n.add(e)}throw Error(`[SegmentMatcher.registerTree] Duplicate parameter name ':${r}' in route "${e}": a param name must be unique within a route — two positions cannot both bind ':${r}' (the second silently overwrites the first). Rename one.`)}function ke(e,t){throw Error(`[SegmentMatcher.registerTree] Invalid query-param declaration "${t}" in route "${e}": a query-param name cannot contain '<' or '>' — it would never round-trip. Rename the query param.`)}function Ae(e,t){throw Error(`[SegmentMatcher.registerTree] Name collision in route "${e}": "${t}" is declared as BOTH a path param (':${t}') and a query param ('?${t}'). buildPath would emit its value twice (once in the path, once in the query). Rename one.`)}function je(e,t){throw Error(`[SegmentMatcher.registerTree] Duplicate route path: routes "${e}" and "${t}" resolve to the same URL. The later registration would silently shadow the earlier (its deep link would resolve to the other route). Give them distinct paths.`)}function Me(e,t){throw Error(`[SegmentMatcher.registerTree] Index route "${e}" (path "/") under the splat parent "${t}" is not supported: the index sits on the splat node, which the wildcard match never reaches, so it is unreachable. Give the index a distinct path, or make the parent static.`)}function Ne(t){let n=e.o(t);return(`error`in n||n.kind===`static`)&&xe(),n.name}function Pe(e,t){return e.paramChild?e.paramChild.name!==t&&be(e.paramChild.name,t,`:`):e.paramChild={node:x(),name:t},e.paramChild.node}function Fe(e,t){return e.splatChild?e.splatChild.name!==t&&be(e.splatChild.name,t,`*`):e.splatChild={node:x(),name:t},e.splatChild.node}function Ie(e,t){e.route!==void 0&&e.route!==t&&je(e.route.name,t.name),e.route=t}function Le(e){for(let t=0;t<e.length;t++)if(e.charCodeAt(t)>=128)return!0;return!1}function Re(e,t,n){let r=S(n);if(r===`/`){Ie(e.root,t);return}ze(e,e.root,r,1,t)}function ze(e,t,n,r,i){let a=n.length;for(;r<=a;){let i=n.indexOf(`/`,r),o=i===-1?a:i,s=n.slice(r,o);t=Ue(e,t,s),r=o+1}Ie(t,i)}function Be(e,t,n){n.slice(n.lastIndexOf(`/`)+1).startsWith(`*`)&&Me(t.name,n);let r=Ve(e,n);r.slashChildRoute=t}function Ve(e,t){return He(e,e.root,t)}function He(e,t,n){let r=S(n);if(r===`/`||r===``)return t;let i=t,a=1,o=r.length;for(;a<=o;){let t=r.indexOf(`/`,a),n=t===-1?o:t;if(n<=a)break;let s=r.slice(a,n);i=Ue(e,i,s),a=n+1}return i}function Ue(e,t,n){if(n.startsWith(`*`)){let e=Fe(t,Ne(n));return t.hasChildren=!0,e}if(n.startsWith(`:`)){let e=Pe(t,Ne(n));return t.hasChildren=!0,e}Le(n)&&Ee(n);let r=e.options.caseSensitive?n:n.toLowerCase();return r in t.staticChildren||(t.staticChildren===le&&(t.staticChildren=Object.create(null)),t.staticChildren[r]=x(),t.hasChildren=!0),t.staticChildren[r]}function We(t,n,r,i,a){let o=n.fullName===``;o||i.push(n);let s=n.absolute,c=n.paramMeta===e.t?n.path:n.paramMeta.pathPattern,l=s&&c.startsWith(`~`)?c.slice(1):c,u=s?l:c;for(let t of e.s(u)){let n=e.o(t);`error`in n&&De(n.error,t)}let d=u,f=s?d:ue(r,d),p=o?a:Ge(t,n,f,s?``:r,i,a);for(let e of n.children.values())We(t,e,f,i,p);o||i.pop()}function Ge(e,t,n,r,i,a){let o=Xe(n,r),s=Object.freeze([...i]),c=Ke(s),l=S(n),u=Ze(e.rootQueryParams,i),{buildStaticParts:d,buildParamSlots:f}=ye(o?S(r):l,o?i.slice(0,-1):i,e.options.urlParamsEncoding),p=f.map(e=>e.paramName),m=p.length===0?me:new Set(p);m.size!==p.length&&Oe(t.fullName,p),Qe(t.fullName,u,m);let h={name:t.fullName,parent:a,matchSegments:s,meta:c,declaredQueryParams:u,declaredQueryParamsSet:u.length===0?me:new Set(u),hasTrailingSlash:n.length>1&&n.endsWith(`/`),buildStaticParts:d,buildParamSlots:f,buildParamNamesSet:m,cachedResult:void 0};return t.paramMeta.urlParams.length===0&&(h.cachedResult=Object.freeze({segments:h.matchSegments,params:ge,meta:h.meta})),e.routesByName.set(t.fullName,h),o?Je(e,h,r):Ye(e,h,n,l,t),h}function Ke(e){let t;for(let n of e)qe(n.paramTypeMap)&&(t??={},t[n.fullName]=n.paramTypeMap);return t===void 0?_e:Object.freeze(t)}function qe(e){for(let t in e)if(Object.hasOwn(e,t))return!0;return!1}function Je(e,t,n){Be(e,t,n);let r=S(n),i=e.options.caseSensitive?r:r.toLowerCase();e.staticCache.has(i)&&e.staticCache.set(i,t)}function Ye(e,t,n,r,i){if(Re(e,t,n),i.paramMeta.urlParams.length===0){let n=e.options.caseSensitive?r:r.toLowerCase();e.staticCache.set(n,t)}}function Xe(e,t){return S(e)===S(t)}function Ze(e,t){let n=[];e.length>0&&n.push(...e);for(let e of t)e.paramMeta.queryParams.length>0&&n.push(...e.paramMeta.queryParams);return n.length===0?pe:n}function Qe(t,n,r){for(let i of n)e.n.test(i)&&ke(t,i),r.has(i)&&Ae(t,i)}function $e(e){return typeof e==`string`?e:typeof e==`object`?JSON.stringify(e):String(e)}function et(e,t,n){t===`__proto__`?Object.defineProperty(e,t,{value:n,writable:!0,enumerable:!0,configurable:!0}):e[t]=n}var tt=class{get options(){return this.#e}#e;#t=x();#n=new Map;#r=new Map;#i={cleanPath:``,normalized:``,queryString:void 0};#a=[];#o=``;#s;#c;constructor(e){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.#s=this.#e.caseSensitive,this.#c=this.#e.urlParamsEncoding===`none`?null:se[this.#e.urlParamsEncoding]}registerTree(e){this.#a=e.paramMeta.queryParams,We({root:this.#t,options:this.#e,routesByName:this.#n,staticCache:this.#r,rootQueryParams:this.#a},e,``,[],null)}match(e){if(!this.#f(e))return;let{cleanPath:t,normalized:n,queryString:r}=this.#i,i=this.#s?n:n.toLowerCase(),a=this.#r.get(i);if(a)return this.#e.strictTrailingSlash&&!this.#g(t,a)?void 0:r===void 0&&a.cachedResult?a.cachedResult:this.#m(a,{},r);let o={},s=this.#_(n,o);if(s&&!(this.#e.strictTrailingSlash&&!this.#g(t,s))&&this.#b(o))return this.#m(s,o,r)}buildPath(e,t,n){let r=this.#n.get(e);if(!r)throw Error(`[SegmentMatcher.buildPath] '${e}' is not defined`);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.#n.get(e)?.matchSegments}getMetaByName(e){return this.#n.get(e)?.meta}hasRoute(e){return this.#n.has(e)}#l(e,t){let n=e.buildStaticParts,r=e.buildParamSlots;if(r.length===0)return n[0];let i=n[0];for(let[e,a]of r.entries()){let r=t?.[a.paramName];if(r==null)throw Error(`[SegmentMatcher.buildPath] Missing required param '${a.paramName}'`);if(r===``)throw Error(`[SegmentMatcher.buildPath] Missing required param '${a.paramName}' (empty string)`);let o=a.encoder($e(r));i+=o+n[e+1]}return i}#u(e,t){return t===`always`&&!e.endsWith(`/`)?`${e}/`:t===`never`&&e!==`/`&&e.endsWith(`/`)?e.slice(0,-1):e}#d(e,t,n){if(!t||e.declaredQueryParams.length===0&&n!==`loose`)return``;let r={},i=!1;for(let n of e.declaredQueryParams)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.codePointAt(0)!==47)return!1;let t=this.#p(e);if(t===-2)return!1;t===-3&&(e=this.#o);let n=t>=0?e.slice(0,t):e,r=t>=0?e.slice(t+1):void 0;if(r!==void 0){let e=r.indexOf(`#`);e!==-1&&(r=r.slice(0,e))}let i=S(n);return this.#i.cleanPath=n,this.#i.normalized=i,this.#i.queryString=r,!0}#p(e){let t=!1;for(let n=0;n<e.length;n++){let r=e.codePointAt(n);if(r===35)return this.#o=e.slice(0,n),-3;if(r===63)return n;if(r>=128)return-2;if(r===47){if(t)return-2;t=!0}else t=!1}return-1}#m(e,t,n){if(!(n!==void 0&&!this.#h(e,t,n)))return{segments:e.matchSegments,params:t,meta:e.meta}}#h(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;et(t,e,r[e])}}else for(let e in r)et(t,e,r[e]);return!0}#g(e,t){return(e.length>1&&e.endsWith(`/`))===t.hasTrailingSlash}#_(e,t){return e.length===1?this.#t.slashChildRoute??this.#t.route:this.#v(this.#t,e,1,t)}#v(e,t,n,r){let i=e,a=t.length,o=this.#s;for(;n<=a;){let e=t.indexOf(`/`,n),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){let e=i.paramChild;if(i.splatChild!==void 0){let a={[e.name]:c},o=this.#v(e.node,t,s+1,a);return o===void 0?this.#y(i.splatChild,t,n,r):(Object.assign(r,a),o)}u=e.node,r[e.name]=c}else if(i.splatChild)return this.#y(i.splatChild,t,n,r);else return;i=u,n=s+1}return i.slashChildRoute??i.route}#y(e,t,n,r){let i=e.node;if(!i.hasChildren)return r[e.name]=t.slice(n),i.route;let a={},o=this.#v(i,t,n,a);return o?(Object.assign(r,a),o):(r[e.name]=t.slice(n),i.route)}#b(e){let t=this.#c;if(!t)return!0;for(let n in e){let r=e[n];if(r.includes(`%`)){if(!fe(r))return!1;try{e[n]=t(r)}catch{return!1}}}return!0}};const nt=Object.freeze(new Map),rt=Object.freeze([]);function it(e){return e.parent?.name?`${e.parent.fullName}.${e.name}`:e.name}function at(e){let t=new Map;for(let n of e)t.set(n.name,n);return t}function ot(e,t){let n=[],r=[];for(let i of e){let e=st(i,t);n.push(e),e.absolute||r.push(e)}return{childrenMap:at(n),nonAbsoluteChildren:r}}function st(t,n){let r=e.r(t.path),i=r.urlParams.length===0&&r.queryParams.length===0&&r.spatParams.length===0&&r.pathPattern===t.path?e.t:r,a=i.paramTypeMap,o={name:t.name,path:t.path,absolute:t.absolute,parent:n,children:void 0,paramMeta:i,nonAbsoluteChildren:void 0,fullName:``,paramTypeMap:a};if(o.fullName=it(o),t.children.length===0)o.children=nt,o.nonAbsoluteChildren=rt;else{let{childrenMap:e,nonAbsoluteChildren:n}=ot(t.children,o);o.children=e,o.nonAbsoluteChildren=n,Object.freeze(o.nonAbsoluteChildren),Object.freeze(o.children)}return Object.freeze(a),Object.freeze(i.urlParams),Object.freeze(i.queryParams),Object.freeze(i.spatParams),Object.freeze(i),Object.freeze(o),o}function ct(e){return st(e,null)}function lt(e,t,n){return ct(te(e,t,n))}function C(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(),C)),n}function ut(e){return Array.from(e.children.values(),C)}const dt=e=>{let t=e.indexOf(`%`),n=e.indexOf(`+`);if(t===-1&&n===-1)return e;let r=n===-1?e:e.replaceAll(`+`,` `);return t===-1?r:decodeURIComponent(r)},ft=(e,t)=>{if(e===void 0)return t.boolean.decodeUndefined();let n=t.boolean.decodeRaw(e);if(n!==null)return n;let r=dt(e),i=t.number.decode(r);return i===null?t.boolean.decodeValue(r):i},pt=/[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?<![\uD800-\uDBFF])[\uDC00-\uDFFF]/g,mt=e=>{try{return encodeURIComponent(e)}catch(t){if(!(t instanceof URIError))throw t;return encodeURIComponent(String(e).replaceAll(pt,`�`))}},w=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}`);return mt(e)},ht=(e,t,n,r)=>{let i=`${e}${n}`,a=[];for(let e of t)if(e===null){let e=r.encode(i);e&&a.push(e)}else a.push(`${i}=${w(e)}`);return a.join(`&`)},gt={none:{encodeArray:(e,t,n)=>ht(e,t,``,n)},brackets:{encodeArray:(e,t,n)=>ht(e,t,`[]`,n)},index:{encodeArray:(e,t,n)=>{let r=[];for(let[i,a]of t.entries()){let t=`${e}[${i}]`;if(a===null){let e=n.encode(t);e&&r.push(e)}else r.push(`${t}=${w(a)}`)}return r.join(`&`)},indexed:!0},comma:{encodeArray:(e,t)=>{let n=[];for(let e of t)e!==null&&n.push(w(e));return n.length===0?``:`${e}=${n.join(`,`)}`},decodeValue:e=>e.includes(`,`)?e.split(`,`):null}},_t={none:{encode:(e,t)=>`${e}=${t}`,decodeUndefined:()=>null,decodeRaw:()=>null,decodeValue:e=>e},auto:{encode:(e,t)=>`${e}=${t}`,decodeUndefined:()=>null,decodeRaw:e=>e===`true`||e!==`false`&&null,decodeValue:e=>e},"empty-true":{encode:(e,t)=>t?e:`${e}=false`,decodeUndefined:()=>!0,decodeRaw:e=>e===`true`||e!==`false`&&null,decodeValue:e=>e}},vt={default:{encode:e=>e},hidden:{encode:()=>``}},yt={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}},T=(e,t,n,r)=>{if(e===void 0)throw TypeError(`[search-params] Unknown ${t} "${n}" — expected ${r}`);return e},bt=(e,t,n,r)=>({boolean:T(_t[t],`booleanFormat`,t,`"none" | "auto" | "empty-true"`),null:T(vt[n],`nullFormat`,n,`"default" | "hidden"`),number:T(yt[r],`numberFormat`,r,`"none" | "auto"`),array:T(gt[e],`arrayFormat`,e,`"none" | "brackets" | "index" | "comma"`)}),xt={boolean:_t.auto,null:vt.default,number:yt.auto,array:gt.none},E={arrayFormat:`none`,booleanFormat:`auto`,nullFormat:`default`,numberFormat:`auto`},St={...E,strategies:xt},Ct=e=>{if(!e||e.arrayFormat===void 0&&e.booleanFormat===void 0&&e.nullFormat===void 0&&e.numberFormat===void 0)return St;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:bt(t,n,r,i)}},D=e=>mt(e),wt=(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,n.strategies.null):`${r}=${D(t)}`;default:return`${r}=${D(t)}`}};function O(e,t,n){t===`__proto__`?Object.defineProperty(e,t,{value:n,writable:!0,enumerable:!0,configurable:!0}):e[t]=n}function Tt(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 Et(e,t,n,r,i){return ft(r?e.slice(t+1,n):void 0,i)}function Dt(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 Ot(e,t,n){let{searchPart:r,nameEnd:i,nameSourceEnd:a,eqPos:o,end:s,hasValue:c,decodedName:l}=e,u=Dt(r,i,a);if(u===null)return!1;let d=Et(r,o,s,c,t),f=n.get(l);return f===void 0?n.set(l,[[u,d]]):f.push([u,d]),!0}function kt(e,t,n,r,i,a,o){let s=a!==-1&&a<n,c=s?a:n,l=c,u=!1;for(let n=t;n<c;n++)if(e.codePointAt(n)===91){l=n,u=!0;break}let d=dt(e.slice(t,l));if(!(o!==void 0&&u&&Ot({searchPart:e,nameEnd:l,nameSourceEnd:c,eqPos:a,end:n,hasValue:s,decodedName:d},i,o))){if(!u&&s&&i.array.decodeValue){let t=e.slice(a+1,n),o=i.array.decodeValue(t);if(o){for(let e of o)Tt(r,d,ft(e,i),!0);return}}Tt(r,d,Et(e,a,n,s,i),u)}}const At=(e,t)=>{if(e===``||e===`?`)return{};let n={};return jt(e,n,Ct(t).strategies),n};function jt(e,t,n){let r=n.array.indexed?new Map:void 0,i=0,a=e.length,o=-2;for(;i<a;){let s=e.indexOf(`&`,i);s===-1&&(s=a),s>i&&(o!==-1&&o<i&&(o=e.indexOf(`=`,i)),kt(e,i,s,t,n,o,r)),i=s+1}if(r!==void 0)for(let[e,n]of r)n.sort((e,t)=>e[0]-t[0]),O(t,e,n.map(e=>e[1]))}const Mt=(e,t)=>{let n=Object.keys(e);if(n.length===0)return``;let r=Ct(t),i=[];for(let t of n){let n=e[t];if(n===void 0)continue;let a=wt(t,n,r);a&&i.push(a)}return i.join(`&`)};function Nt(e){let t=e?.queryParams;return new tt({...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=>At(e,t),buildQueryString:e=>Mt(e,t)})}const Pt={defaultRoute:``,defaultParams:{},trailingSlash:`preserve`,caseSensitive:!0,queryParamsMode:`loose`,queryParams:E,urlParamsEncoding:`default`,allowNotFound:!0,rewritePathOnMatch:!0};function Ft(e){Object.freeze(e);for(let t of Object.values(e))t&&typeof t==`object`&&t.constructor===Object&&Ft(t);return e}function It(e,t){return typeof e==`function`?e(t):e}function Lt(e){if(!e||typeof e!=`object`||Array.isArray(e))throw TypeError(`[router.constructor] options must be a plain object`)}var Rt=class{#e;constructor(e={}){this.#e=Ft({...Pt,...e})}static validateOptionsIsObject(e){Lt(e)}get(){return this.#e}};function k(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(!k(e[n],t[n]))return!1;return!0}return!1}const zt=new WeakMap;function A(e){return zt.get(e)}function Bt(e,t){zt.set(e,t)}var Vt=class{#e=void 0;#t=void 0;#n;get(){return this.#e}set(e){this.#t=this.#e,this.#e=e?g(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),c;c=o?Object.freeze({...a[e],...t}):!t||t===s?s:Object.freeze({...t});let u={name:e,params:c,path:n??this.#n.buildPath(e,t),context:{},...!i&&{transition:l}};return r&&Bt(u,r),i?u:g(u)}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(!k(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)||!k(e.params[n],t.params[n]))return!1;return!0}};const Ht={[i.ROUTER_START]:a.ROUTER_START,[i.ROUTER_STOP]:a.ROUTER_STOP,[i.TRANSITION_SUCCESS]:a.TRANSITION_SUCCESS,[i.TRANSITION_START]:a.TRANSITION_START,[i.TRANSITION_LEAVE_APPROVE]:a.TRANSITION_LEAVE_APPROVE,[i.TRANSITION_ERROR]:a.TRANSITION_ERROR,[i.TRANSITION_CANCEL]:a.TRANSITION_CANCEL},Ut=Object.keys(Ht),j=`router.usePlugin`;function Wt(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 Gt=class e{#e=new Set;#t=new Set;#n;static validatePlugin(e){Wt(e)}setDependencies(e){this.#n=e}count(){return this.#e.size}use(...e){if(this.#n.getValidator()?.plugins.validateCountThresholds(this.#e.size+e.length),e.length===1){let t=e[0],n=this.#i(t);this.#e.add(t);let r=!1,i=()=>{if(!r){r=!0,this.#e.delete(t),this.#t.delete(i);try{n()}catch(e){this.#n.logger.error(j,`Error during cleanup:`,e)}}};return this.#t.add(i),i}let t=this.#r(e),n=[];try{for(let e of t){let t=this.#i(e);n.push({factory:e,cleanup:t})}}catch(e){for(let{cleanup:e}of n)try{e()}catch(e){this.#n.logger.error(j,`Cleanup error:`,e)}throw e}for(let{factory:e}of n)this.#e.add(e);let r=!1,i=()=>{if(!r){r=!0,this.#t.delete(i);for(let{factory:e}of n)this.#e.delete(e);for(let{cleanup:e}of n)try{e()}catch(e){this.#n.logger.error(j,`Error during cleanup:`,e)}}};return this.#t.add(i),i}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()}#r(e){let t=new Set;for(let n of e)t.has(n)?this.#n.getValidator()?.plugins.warnBatchDuplicates(e):t.add(n);return t}#i(t){let n=this.#n.compileFactory(t);e.validatePlugin(n),this.#n.getValidator()?.plugins.validatePluginKeys(n),Object.freeze(n);let r=[];for(let e of Ut)e in n&&(typeof n[e]==`function`?(r.push(this.#n.addEventListener(Ht[e],n[e])),e===`onStart`&&this.#n.canNavigate()&&this.#n.getValidator()?.plugins.warnPluginAfterStart(e)):this.#n.getValidator()?.plugins.warnPluginMethodType(e));return()=>{for(let e of r)e();typeof n.teardown==`function`&&n.teardown()}}};const Kt=()=>!0,qt=()=>!1,Jt=()=>Kt,Yt=()=>qt;function Xt(e){return e?Jt:Yt}var Zt=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;setDependencies(e){this.#s=e}getHandlerCount(e){let t=e===`activate`?this.#e:this.#n,n=e===`activate`?this.#t:this.#r;if(t.size===0)return n.size;if(n.size===0)return t.size;let r=new Set(t.keys());for(let e of n.keys())r.add(e);return r.size}preflightHandlerLimit(e,t,n){let r=this.#s.getValidator();if(!r)return;let i=(e,t,i)=>{let{definition:a,external:o}=this.#d(e),s=0;for(let e of t)(n?o.has(e):a.has(e)||o.has(e))||s++;if(s===0)return;let c=n?o.size:this.getHandlerCount(e);r.lifecycle.validateHandlerLimit(c+s-1,i)};i(`activate`,e,`canActivate`),i(`deactivate`,t,`canDeactivate`)}addCanActivate(e,t,n=!1,r){this.#c(`activate`,e,t,n,`canActivate`,r)}addCanDeactivate(e,t,n=!1,r){this.#c(`deactivate`,e,t,n,`canDeactivate`,r)}clearCanActivate(e,t){this.#l(`activate`,e,t)}clearCanDeactivate(e,t){this.#l(`deactivate`,e,t)}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.#u(`activate`,e):this.#a.delete(e);for(let e of this.#n.keys())this.#r.has(e)?this.#u(`deactivate`,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`?Xt(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}#c(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.#s.getValidator()?.lifecycle.warnOverwrite(t,e,i);else{let t=this.#s.getValidator();if(t){let n=this.getHandlerCount(e);t.lifecycle.validateHandlerLimit(n,i),t.lifecycle.validateCountThresholds(n+1,i)}}let u=typeof n==`boolean`?Xt(n):n,d=c.get(t);c.set(t,u);let f=r&&l.has(t);try{let e=a??this.compileGuardFactory(u,i);f||s.set(t,e)}catch(n){throw d===void 0?c.delete(t):c.set(t,d),this.#u(e,t),n}}#l(e,t,n){let{definition:r,external:i}=this.#d(e),a=n!==`external`&&r.delete(t),o=n!==`definition`&&i.delete(t);(a||o)&&this.#u(e,t)}#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,i){let a=e.get(t);if(!a)return!0;try{let e=a(n,r);return typeof e==`boolean`?e:(this.#s.getValidator()?.lifecycle.warnAsyncGuardSync(t,i),!1)}catch(e){return this.#s.logger.warn(`router.${i}`,`Guard for "${t}" threw — treated as navigation-blocking (returned false)`,e),!1}}};const Qt=new Set([`name`,`path`,`children`,`canActivate`,`canDeactivate`,`forwardTo`,`encodeParams`,`decodeParams`,`defaultParams`]);function M(){return{decoders:Object.create(null),encoders:Object.create(null),defaultParams:Object.create(null),forwardMap:Object.create(null),forwardFnMap:Object.create(null)}}function $t(e,t){for(let n of Object.keys(t))Object.assign(e[n],t[n])}function en(e,t){for(let n in e)if(e[n]!==t[n])return!1;return!0}function tn(e,t,n){for(let r in e)if(!(r in n)&&e[r]!==t[r])return!1;return!0}function nn(e,t){if(!t||!rn(e,t))return e;let n={};for(let r in e)t[r]!==`query`&&(n[r]=e[r]);return n}function rn(e,t){for(let n in e)if(t[n]===`query`)return!0;return!1}function N(e){let t={name:e.name,path:e.path};return e.children&&(t.children=e.children.map(e=>N(e))),t}function an(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}.`)&&an(i.children,t,a))return!0}return!1}function on(e,t){for(let n of Object.keys(e))t(n)&&delete e[n]}function sn(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 cn(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 ln(e,t,n){let r=lt(``,t,e),i=Nt(n);return i.registerTree(r),{tree:r,matcher:i}}function P(e,t=e.definitions){let n=ln(t,e.rootPath,e.matcherOptions);e.tree=n.tree,e.matcher=n.matcher,e.urlParamsCache.clear()}function un(e,t){P(e,t),e.resolvedForwardMap=F(e.config)}function dn(e){fn(e),P(e,[])}function fn(e){Object.assign(e.config,M()),e.resolvedForwardMap=Object.create(null),e.routeCustomFields=Object.create(null)}function F(e){let t=Object.create(null);for(let n of Object.keys(e.forwardMap))t[n]=cn(n,e.forwardMap);return t}function pn(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 mn(e,t,n,r){if(e.canActivate){let n=typeof e.forwardTo==`string`?e.forwardTo:`[dynamic]`;r.warn(`real-router`,`Route "${t}" has both forwardTo and canActivate. canActivate will be ignored because forwardTo creates a redirect (industry standard). Move canActivate to the target route "${n}".`)}if(e.canDeactivate){let n=typeof e.forwardTo==`string`?e.forwardTo:`[dynamic]`;r.warn(`real-router`,`Route "${t}" has both forwardTo and canDeactivate. canDeactivate will be ignored because forwardTo creates a redirect (industry standard). Move canDeactivate to the target route "${n}".`)}pn(e.forwardTo,t),typeof e.forwardTo==`string`?n.forwardMap[t]=e.forwardTo:n.forwardFnMap[t]=e.forwardTo}function hn(e,t,n,r,i,a,o){let s=Object.fromEntries(Object.entries(e).filter(([e])=>!Qt.has(e)));Object.keys(s).length>0&&(r[t]=s),e.canActivate&&i.set(t,e.canActivate),e.canDeactivate&&a.set(t,e.canDeactivate),e.forwardTo&&mn(e,t,n,o),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 gn(e,t,n,r,i,a,o=``){for(let s of e){let e=o?`${o}.${s.name}`:s.name;hn(s,e,t,n,r,i,a),s.children&&gn(s.children,t,n,r,i,a,e)}}function _n(e){let t=M();return $t(t,e),t}function vn(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]:vn(n,t,i)}})}function I(e,t,n){for(let r of e){let e=t?`${t}.${r.name}`:r.name;n(e),r.children&&I(r.children,e,n)}}function L(e,t,n){let r=new Set;I(e,t,e=>{if(r.has(e))throw Error(`[router.${n}] Duplicate route "${e}" in batch`);r.add(e)})}function yn(e,t){if(e.startsWith(`@@`))throw Error(`[router.${t}] Route name "${e}" uses the reserved "@@" prefix. Routes with this prefix are internal and cannot be modified through the public API.`)}function R(e,t){for(let n of e)yn(n.name,t),n.children&&R(n.children,t)}function bn(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 xn(e,t,n){if(R(t,`addRoute`),n!==void 0&&!e.matcher.hasRoute(n))throw Error(`[router.addRoute] Parent route "${n}" does not exist`);I(t,n??``,t=>{if(e.matcher.hasRoute(t))throw Error(`[router.addRoute] Route "${t}" already exists`)}),L(t,n??``,`addRoute`),bn(t,n??``,`addRoute`)}function Sn({definitions:e,routesForHandlers:t,config:n,routeCustomFields:r,handlerParentName:i,rootPath:a,matcherOptions:o,logger:s}){let c=new Map,l=new Map;gn(t,n,r,c,l,s,i);let u=F(n),{tree:d,matcher:f}=ln(e,a,o);return{config:n,routeCustomFields:r,pendingCanActivate:c,pendingCanDeactivate:l,tree:d,matcher:f,resolvedForwardMap:u}}function Cn(e,t,n,r){return Sn({definitions:vn(e.definitions,t.map(e=>N(e)),n===void 0?[]:n.split(`.`)),routesForHandlers:t,config:_n(e.config),routeCustomFields:Object.assign(Object.create(null),e.routeCustomFields),handlerParentName:n??``,rootPath:e.rootPath,matcherOptions:e.matcherOptions,logger:r})}function wn(e,t,n,r){return Sn({definitions:e.map(e=>N(e)),routesForHandlers:e,config:M(),routeCustomFields:Object.create(null),handlerParentName:``,rootPath:t,matcherOptions:n,logger:r})}function Tn(e,t,n){let r=[];for(let[i,a]of e)r.push([i,a,t(a,n)]);return r}function En(e,t){return{activate:Tn(e.pendingCanActivate,t.compileGuard,`canActivate`),deactivate:Tn(e.pendingCanDeactivate,t.compileGuard,`canDeactivate`)}}function Dn(e,t,n){let r=e.depsStore,{activate:i,deactivate:a}=n??En(t,r);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,n]of i)r.addActivateGuard(e,t,n);for(let[e,t,n]of a)r.addDeactivateGuard(e,t,n)}function On(e,t,n,r){let{forwardTo:i,defaultParams:a,decodeParams:o,encodeParams:s,canActivate:c,canDeactivate:l}=r,u=i===void 0?void 0:kn(n,i,e.config),d=An(e,n,r),f=c==null?void 0:t.compileGuardFactory(c,`canActivate`),p=l==null?void 0:t.compileGuardFactory(l,`canDeactivate`);return t.preflightHandlerLimit(f===void 0?[]:[n],p===void 0?[]:[n],!1),d!==void 0&&(Object.keys(d).length>0?e.routeCustomFields[n]=d:delete e.routeCustomFields[n]),u!==void 0&&(e.config.forwardMap=u.forwardMap,e.config.forwardFnMap=u.forwardFnMap,e.resolvedForwardMap=u.resolved),jn(e,n,{defaultParams:a,decodeParams:o,encodeParams:s}),Mn(t,`activate`,n,c,f),Mn(t,`deactivate`,n,l,p),{forwardTo:i,defaultParams:a,decodeParams:o,encodeParams:s}}function kn(e,t,n){pn(t,e);let r=Object.assign(Object.create(null),n.forwardMap),i=Object.assign(Object.create(null),n.forwardFnMap);return t===null?(delete r[e],delete i[e]):typeof t==`string`?(delete i[e],r[e]=t):(delete r[e],i[e]=t),{forwardMap:r,forwardFnMap:i,resolved:F({...n,forwardMap:r})}}function An(e,t,n){let r;for(let i of Object.keys(n)){if(Qt.has(i))continue;let a=n[i];a!==void 0&&(r??={...e.routeCustomFields[t]},a===null?delete r[i]:r[i]=a)}return r}function jn(e,t,n){if(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 Mn(e,t,n,r,i){r!==void 0&&(t===`activate`?r===null?e.clearCanActivate(n,`definition`):e.addCanActivate(n,r,!0,i):r===null?e.clearCanDeactivate(n,`definition`):e.addCanDeactivate(n,r,!0,i))}function Nn(e,t,n){R(e,`addRoute`),L(e,``,`addRoute`);let r=wn(e,``,t,n),i={get definitions(){return ut(i.tree)},config:r.config,tree:r.tree,matcher:r.matcher,urlParamsCache:new Map,resolvedForwardMap:r.resolvedForwardMap,routeCustomFields:r.routeCustomFields,rootPath:``,matcherOptions:t,depsStore:void 0,lifecycleNamespace:void 0,pendingCanActivate:r.pendingCanActivate,pendingCanDeactivate:r.pendingCanDeactivate};return i}const z=[];Object.freeze(z);function Pn(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 Fn=new Set([`string`,`number`,`boolean`]);function In(e){return Fn.has(typeof e)}function Ln(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(In(t)&&In(i)&&String(t)!==String(i))return!1}return!0}function Rn(e,t,n,r,i,a){for(let o=0;o<a;o++){let a=r[o];if(a!==i[o]||!Ln(a,e,t,n))return o}return a}const zn=new Map;function B(e){let t=zn.get(e);if(t)return t;let n=Bn(e);return Object.freeze(n),zn.set(e,n),n}function Bn(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]:Pn(e)}let V,H,U=null,Vn,Hn,W=null;function Un(e,t){if(!t)return{intersection:``,toActivate:B(e.name),toDeactivate:z};let n=A(e),r=A(t);if(!n&&!r)return{intersection:``,toActivate:B(e.name),toDeactivate:B(t.name)};let i=B(e.name),a=B(t.name),o=Math.min(a.length,i.length),s=Rn(n??r,e,t,i,a,o),c;if(s>=a.length)c=z;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 G(e,t){if(U!==null&&e===V&&t===H)return U;if(W!==null&&e===Vn&&t===Hn)return W;let n=Un(e,t);return Vn=V,Hn=H,W=U,V=e,H=t,U=n,n}function Wn(e){let t=[];for(let n of e)for(let e of n.paramMeta.urlParams)t.push(e);return t}function Gn(e,t){return{name:t??e.segments.at(-1).fullName,params:e.params,meta:e.meta}}var Kn=class{#e;#t;#n;get#r(){return this.#e.depsStore}constructor(e,t,n){this.#e=Nn(e,t,n)}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}=G(t,n);return e===r||i.includes(e)?!0:a.includes(e)}}setDependencies(e){this.#e.depsStore=e}flushPendingGuards(){let e=this.#r;for(let[t,n]of this.#e.pendingCanActivate)e.addActivateGuard(t,n);this.#e.pendingCanActivate.clear();for(let[t,n]of this.#e.pendingCanDeactivate)e.addDeactivateGuard(t,n);this.#e.pendingCanDeactivate.clear()}setLifecycleNamespace(e){this.#e.lifecycleNamespace=e}setRootPath(e){this.#e.rootPath=e,P(this.#e)}hasRoute(e){return this.#e.matcher.hasRoute(e)}clearRoutes(){dn(this.#e)}buildPath(e,t,n){if(e===r.UNKNOWN_ROUTE)return typeof t?.path==`string`?t.path:``;let i=Object.hasOwn(this.#e.config.defaultParams,e)?{...this.#e.config.defaultParams[e],...t}:t??{},a=typeof this.#e.config.encoders[e]==`function`?this.#e.config.encoders[e]({...i}):i;return this.#e.matcher.buildPath(e,a,this.#a(n))}matchPath(e,t){let n=t,r=this.#e.matcher.match(e);if(!r)return;let{name:i,params:a,meta:o}=Gn(r),s=typeof this.#e.config.decoders[i]==`function`?this.#e.config.decoders[i](a):a,{name:c,params:l}=this.#r.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;try{u=this.#e.matcher.buildPath(c,t,{trailingSlash:r===`never`||r===`always`?r:void 0,queryParamsMode:n.queryParamsMode}),r===`preserve`&&(u=sn(e,u))}catch{u=e}}return this.#r.makeState(c,l,u,o)}forwardState(e,t){if(Object.hasOwn(this.#e.config.forwardFnMap,e)){let n=this.#i(e,t),r=this.#e.config.forwardFnMap[e],i=this.#o(e,r,t);return{name:i,params:this.#i(i,n)}}let n=this.#e.resolvedForwardMap[e]??e;if(n!==e&&Object.hasOwn(this.#e.config.forwardFnMap,n)){let r=this.#i(e,t),i=this.#e.config.forwardFnMap[n],a=this.#o(n,i,t);return{name:a,params:this.#i(a,r)}}if(n!==e){let r=this.#i(e,t);return{name:n,params:this.#i(n,r)}}return{name:e,params:this.#i(e,t)}}buildStateResolved(e,t){let n=this.#e.matcher.getSegmentsByName(e);if(n)return Gn({segments:n,params:t,meta:this.#e.matcher.getMetaByName(e)},e)}isActiveRoute(e,t={},n=!1,r=!0){let i=this.#r.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:l,context:{}};return this.#r.areStatesEqual(n,i,r)}if(!a.startsWith(`${e}.`))return!1;let s=i.params;return en(t,s)?!o||tn(r?nn(o,this.#e.matcher.getMetaByName(e)?.[e]):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.urlParamsCache.get(e);if(t!==void 0)return t;let n=this.#e.matcher.getSegmentsByName(e),r=n?Wn(n):[];return this.#e.urlParamsCache.set(e,r),r}getStore(){return this.#e}#i(e,t){return Object.hasOwn(this.#e.config.defaultParams,e)?{...this.#e.config.defaultParams[e],...t}:t}#a(e){if(this.#t)return e!==this.#n&&this.#r.logger.warn(`router.buildPath`,"`options` differs from the cached source reference; router options are immutable per router instance, so the first-cached buildPath options are reused (#957)."),this.#t;this.#n=e;let t=e?.trailingSlash;return this.#t=Object.freeze({trailingSlash:t===`never`||t===`always`?t:void 0,queryParamsMode:e?.queryParamsMode}),this.#t}#o(e,t,n){let r=new Set([e]),i=t(this.#r.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.#r.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 qn=new Set(Object.values(t)),Jn=new Set([`code`,`segment`,`path`]),Yn=new Set([`setCode`,`setErrorInstance`,`setAdditionalFields`,`hasField`,`getField`,`toJSON`]);var K=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(Jn.has(e))throw TypeError(`[RouterError] Cannot set reserved property "${e}"`);Yn.has(e)||(this[e]=t)}}setCode(e){this.code=e,qn.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(Jn.has(t))throw TypeError(`[RouterError.setAdditionalFields] Cannot set reserved property "${t}"`);Yn.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 Xn=new K(t.ROUTER_NOT_STARTED),Zn=new K(t.ROUTE_NOT_FOUND),Qn=new K(t.SAME_STATES),q=Promise.reject(Xn),$n=Promise.reject(Zn),er=Promise.reject(Qn);q.catch(()=>{}),$n.catch(()=>{}),er.catch(()=>{});function tr(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 nr({signal:e,...t}){return t}function rr(e,n){let{toState:i,fromState:a,opts:o,toDeactivate:s,toActivate:c,intersection:l}=n;if(i.name!==r.UNKNOWN_ROUTE&&!e.hasRoute(i.name)){let n=new K(t.ROUTE_NOT_FOUND,{routeName:i.name});throw e.sendTransitionFail(i,a,n),n}if(a)for(let t of s)!c.includes(t)&&n.canDeactivateFunctions.has(t)&&e.clearCanDeactivate(t);i.transition=tr(a,o,s,c,l);let u=Object.freeze(i);e.setState(u);let d=o.signal===void 0?o:nr(o);return e.sendTransitionDone(u,a,d),u}function ir(e,n,r,i){let a=n;a.code!==t.TRANSITION_CANCELLED&&a.code!==t.ROUTE_NOT_FOUND&&e.sendTransitionFail(r,i,a)}function J(e,n,r){if(e instanceof DOMException&&e.name===`AbortError`)throw new K(t.TRANSITION_CANCELLED);if(e instanceof K&&e.code===t.TRANSITION_CANCELLED)throw e;ar(e,n,r)}function ar(e,t,n){throw e instanceof K?(e.setCode(t),e):new K(t,sr(e,n))}const or=new Set([`code`,`segment`,`path`,`then`]);function sr(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))or.has(n)||(t[n]=r);return{...n,...t}}return n}async function cr(e,t,n){let r;try{r=await e}catch(e){J(e,t,n);return}if(!r)throw new K(t,{segment:n})}async function lr(e,n,r,i,a,o,s,c,l,u){await cr(l,r,u);for(let l=c;l<n.length;l++){if(!s())throw new K(t.TRANSITION_CANCELLED);let c=n[l],u=e.get(c);if(!u)continue;let d=!1;try{d=u(i,a,o)}catch(e){J(e,r,c)}if(d instanceof Promise){await cr(d,r,c);continue}if(!d)throw new K(r,{segment:c})}}async function ur(e,n,r,i,a,o,s,c,l){if(await e,!c())throw new K(t.TRANSITION_CANCELLED);let u=l();if(u!==void 0&&(await u,!c()))throw new K(t.TRANSITION_CANCELLED);if(i){let e=Y(n,r,t.CANNOT_ACTIVATE,a,o,s,c);if(e!==void 0&&await e,!c())throw new K(t.TRANSITION_CANCELLED)}}function dr(e,n,r,i,a,o,s,c,l,u,d){if(a){let a=Y(e,r,t.CANNOT_DEACTIVATE,s,c,l,u);if(a!==void 0)return ur(a,n,i,o,s,c,l,u,d)}if(!u())throw new K(t.TRANSITION_CANCELLED);let f=d();if(f!==void 0)return fr(f,o?n:void 0,i,s,c,l,u);if(o)return Y(n,i,t.CANNOT_ACTIVATE,s,c,l,u)}async function fr(e,n,r,i,a,o,s){if(await e,!s())throw new K(t.TRANSITION_CANCELLED);if(n!==void 0){let e=Y(n,r,t.CANNOT_ACTIVATE,i,a,o,s);if(e!==void 0&&await e,!s())throw new K(t.TRANSITION_CANCELLED)}}function Y(e,n,r,i,a,o,s){for(let[c,l]of n.entries()){if(!s())throw new K(t.TRANSITION_CANCELLED);let u=e.get(l);if(!u)continue;let d=!1;try{d=u(i,a,o)}catch(e){J(e,r,l)}if(d instanceof Promise)return lr(e,n,r,i,a,o,s,c+1,d,l);if(!d)throw new K(r,{segment:l})}}const pr=Object.freeze([r.UNKNOWN_ROUTE]),mr=Object.freeze({replace:!0});function hr(e,t){return t?.name===r.UNKNOWN_ROUTE&&!e.replace?{...e,replace:!0}:e}function gr(e,t,n){return!!e&&!t.reload&&!t.force&&e.path===n.path}var _r=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,q;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(),Zn),this.lastSyncRejected=!0,$n)}navigateToState(e,n){this.lastSyncResolved=!1;let i=this.#e;if(!i.canNavigate())return this.lastSyncRejected=!0,q;if(e.name!==r.UNKNOWN_ROUTE&&!i.hasRoute(e.name)){let n=new K(t.ROUTE_NOT_FOUND,{routeName:e.name});return i.emitTransitionError(void 0,i.getState(),n),Promise.reject(n)}let a={name:e.name,params:e.params,path:e.path,context:{...e.context}},o=A(e);return o!==void 0&&Bt(a,o),this.#r(a,n)}navigateToDefault(e){this.lastSyncResolved=!1;let n=this.#e;if(!n.getOptions().defaultRoute)return Promise.reject(new K(t.ROUTE_NOT_FOUND,{routeName:`defaultRoute not configured`}));let r,i;try{({route:r,params:i}=n.resolveDefault())}catch(e){return Promise.reject(e)}return r?this.navigate(r,i,e):Promise.reject(new K(t.ROUTE_NOT_FOUND,{routeName:`defaultRoute resolved to empty`}))}navigateToNotFound(e){if(!this.#e.isActive())throw new K(t.ROUTER_DISPOSED);this.#c();let n=this.#e.getState(),i=n?B(n.name).toReversed():[];Object.freeze(i);let a={deactivated:i,activated:pr,intersection:``};Object.freeze(a);let o={phase:`activating`,...n&&{from:n.name},reason:`success`,replace:!0,segments:a};Object.freeze(o);let c={name:r.UNKNOWN_ROUTE,params:s,path:e,transition:o,context:{}};return Object.freeze(c),this.#e.setState(c),this.#e.emitTransitionSuccess(c,n,mr),c}abortCurrentController(e){this.#t?.abort(e??new K(t.TRANSITION_CANCELLED)),this.#t=null}#r(e,n){let i=this.#e,a,o=!1,s=null;try{if(a=i.getState(),n=hr(n,a),gr(a,n,e))return i.emitTransitionError(e,a,Qn),this.lastSyncRejected=!0,er;this.#c(n.signal);let c=++this.#n,l=n.signal!==void 0||i.hasLeaveListeners()||i.hasPreCommitListeners();i.startTransition(e,a),o=!0;let[u,d]=i.getLifecycleFunctions(),f=e.name===r.UNKNOWN_ROUTE,p=G(e,a),{toDeactivate:m,toActivate:h,intersection:g}=p,ee=a&&!n.forceDeactivate&&m.length>0,_=!f&&h.length>0,v=u.size>0||d.size>0,y=e;if(!v){let e=this.#o(y,a,c,n,p,u);if(e!==void 0)return e}if(v){s=new AbortController,this.#t=s;let r=()=>this.#n===c&&i.isActive(),o=s.signal,l=dr(u,d,m,h,!!ee,_,e,a,o,r,()=>{if(i.sendLeaveApprove(y,a),i.hasLeaveListeners())return i.awaitLeaveListeners(y,a,o)});if(l!==void 0)return this.#i(l,{toState:e,fromState:a,opts:n,toDeactivate:m,toActivate:h,intersection:g,canDeactivateFunctions:u},s,c);if(!r())throw new K(t.TRANSITION_CANCELLED);this.#s(s,!1)}if(l&&(!i.isActive()||n.signal?.aborted===!0))throw new K(t.TRANSITION_CANCELLED);let te=rr(i,{toState:e,fromState:a,opts:n,toDeactivate:m,toActivate:h,intersection:g,canDeactivateFunctions:u});return this.lastSyncResolved=!0,Promise.resolve(te)}catch(t){return this.#a(t,s,o,e,a),Promise.reject(t)}}async#i(e,n,r,i){let a=this.#e,o=()=>this.#n===i&&!r.signal.aborted&&a.isActive(),s=n.opts.signal,c,l,u=!1,d,f=new Promise(e=>{if(r.signal.aborted){e();return}l=()=>{e()},r.signal.addEventListener(`abort`,l,{once:!0})});e.catch(()=>{});try{if(s){if(s.aborted)throw new K(t.TRANSITION_CANCELLED,{reason:s.reason});c=()=>{a.cancelNavigation(s.reason)},s.addEventListener(`abort`,c,{once:!0})}if(await Promise.race([e,f]),!o())throw new K(t.TRANSITION_CANCELLED);let r=rr(a,n);return u=!0,r}catch(e){throw d=e,ir(a,e,n.toState,n.fromState),e}finally{c&&s?.removeEventListener(`abort`,c),l&&r.signal.removeEventListener(`abort`,l),this.#s(r,!u,d)}}#a(e,t,n,r,i){t&&this.#s(t,!0,e),n&&r&&ir(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);this.#s(s,!1);return}}#s(e,t,n){t&&e.abort(n),this.#t===e&&(this.#t=null)}#c(e){if(this.#e.isTransitioning()&&(this.#e.logger.warn(`router.navigate`,`Concurrent navigation detected on shared router instance. For SSR, use cloneRouter() to create isolated instance per request.`),this.#e.cancelNavigation()),e?.aborted)throw new K(t.TRANSITION_CANCELLED,{reason:e.reason})}};const vr=Object.freeze({replace:!0});var yr=class{#e;setDependencies(e){this.#e=e}async start(e){let n=this.#e;if(n.isIdle())throw new K(t.TRANSITION_CANCELLED);let r=n.getOptions();if(typeof e!=`string`)throw TypeError(`[router.start] path must be a string, got ${typeof e}`);let i=n.matchPath(e);if(!i&&!r.allowNotFound){let r=new K(t.ROUTE_NOT_FOUND,{path:e});throw n.emitTransitionError(void 0,void 0,r),r}return n.completeStart(),i?n.navigateToState(i,vr):n.navigateToNotFound(e)}stop(){this.#e.clearState()}};function br(e,t,n){let r=e[t];if(r===void 0)throw Error(`[FSM.${n}] state "${t}" is not declared in config.transitions`);return r}var xr=class{#e;#t;#n=0;#r=null;#i;#a;#o=[];constructor(e){this.#e=e.initial,this.#i=e.context,this.#a=e.transitions,this.#t=br(e.transitions,e.initial,`constructor`);for(let t of Object.keys(e.transitions)){let n=e.transitions[t];for(let t of Object.keys(n)){let r=n[t];r!==void 0&&br(e.transitions,r,`constructor`)}}}send(e,...t){let n=this.#t[e];if(n===void 0)return this.#e;let r=this.#e;this.#e=n,this.#t=this.#a[n];let i=t[0];if(this.#r!==null){let t=this.#r.get(r)?.get(e);t!==void 0&&t(i)}if(this.#n>0){let t={from:r,to:n,event:e,payload:i};for(let e of this.#o)e!==null&&e(t)}return this.#e}canSend(e){return this.#t[e]!==void 0}getState(){return this.#e}getContext(){return this.#i}on(e,t,n){br(this.#a,e,`on`),this.#r??=new Map;let r=this.#r.get(e);r||(r=new Map,this.#r.set(e,r));let i=n;return r.set(t,i),()=>{let n=this.#r?.get(e);n?.get(t)===i&&n.delete(t)}}onTransition(e){let t=this.#o.indexOf(null),n;t===-1?(n=this.#o.length,this.#o.push(e)):(this.#o[t]=e,n=t),this.#n++;let r=!0;return()=>{r&&(r=!1,this.#o[n]=null,this.#n--)}}};const X={IDLE:`IDLE`,STARTING:`STARTING`,READY:`READY`,TRANSITION_STARTED:`TRANSITION_STARTED`,LEAVE_APPROVED:`LEAVE_APPROVED`,DISPOSED:`DISPOSED`},Z={START:`START`,STARTED:`STARTED`,NAVIGATE:`NAVIGATE`,LEAVE_APPROVE:`LEAVE_APPROVE`,COMPLETE:`COMPLETE`,FAIL:`FAIL`,CANCEL:`CANCEL`,STOP:`STOP`,DISPOSE:`DISPOSE`},Sr={initial:X.IDLE,context:null,transitions:{[X.IDLE]:{[Z.START]:X.STARTING,[Z.DISPOSE]:X.DISPOSED},[X.STARTING]:{[Z.STARTED]:X.READY,[Z.FAIL]:X.IDLE,[Z.STOP]:X.IDLE,[Z.DISPOSE]:X.DISPOSED},[X.READY]:{[Z.NAVIGATE]:X.TRANSITION_STARTED,[Z.FAIL]:X.READY,[Z.STOP]:X.IDLE,[Z.DISPOSE]:X.DISPOSED},[X.TRANSITION_STARTED]:{[Z.NAVIGATE]:X.TRANSITION_STARTED,[Z.LEAVE_APPROVE]:X.LEAVE_APPROVED,[Z.CANCEL]:X.READY,[Z.FAIL]:X.READY,[Z.DISPOSE]:X.DISPOSED},[X.LEAVE_APPROVED]:{[Z.NAVIGATE]:X.TRANSITION_STARTED,[Z.COMPLETE]:X.READY,[Z.CANCEL]:X.READY,[Z.FAIL]:X.READY,[Z.DISPOSE]:X.DISPOSED},[X.DISPOSED]:{}}};function Cr(){return new xr(Sr)}const Q=`TREE_CHANGED`;function wr(e){return e instanceof Error?e:Error(String(e))}function Tr(e,n,r){return new Promise((i,a)=>{let o=()=>{let e=r.reason;a(e instanceof K&&e.code===t.TRANSITION_CANCELLED?e:new K(t.TRANSITION_CANCELLED,{reason:e}))};if(r.aborted){o();return}r.addEventListener(`abort`,o,{once:!0}),Promise.allSettled(e).then(e=>{if(r.removeEventListener(`abort`,o),r.aborted)return;if(n!==void 0){a(wr(n));return}let t=e.find(e=>e.status===`rejected`);if(t!==void 0){a(wr(t.reason));return}i()})})}var Er=class{#e;#t;#n;#r;#i=[];#a=0;#o;#s;#c;#l;#u;constructor(e){this.#e=e.routerFSM,this.#t=e.emitter,this.#n=e.abortController,this.#o=void 0,this.#p()}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(a.ROUTER_START)}emitRouterStop(){this.#t.emit(a.ROUTER_STOP)}emitTransitionStart(e,t){this.#a++;try{this.#t.emit(a.TRANSITION_START,e,t)}finally{this.#a--}}emitTransitionSuccess(e,t,n){this.#a++;try{this.#t.emit(a.TRANSITION_SUCCESS,e,t,n)}finally{this.#a--}}emitTransitionError(e,t,n){this.#a++;try{this.#t.emit(a.TRANSITION_ERROR,e,t,n)}finally{this.#a--}}emitTransitionCancel(e,t){this.#a++;try{this.#t.emit(a.TRANSITION_CANCEL,e,t)}finally{this.#a--}}emitTransitionLeaveApprove(e,t){this.#a++;try{this.#t.emit(a.TRANSITION_LEAVE_APPROVE,e,t)}finally{this.#a--}}isProcessing(){return this.#a>0}emitTreeChanged(e){this.#t.emit(Q,e)}isEmittingTreeChanged(){return this.#t.isDispatching(Q)}subscribeTreeChanged(e){if(this.isDisposed())throw new K(t.ROUTER_DISPOSED);return this.#t.on(Q,t=>{e(t)})}treeChangedListenerCount(){return this.#t.listenerCount(Q)}sendStart(){this.#e.send(Z.START)}sendStop(){this.#e.send(Z.STOP)}sendDispose(){this.#e.send(Z.DISPOSE)}sendStarted(){this.#e.send(Z.STARTED)}sendNavigate(e,t){this.#o=e,this.#e.send(Z.NAVIGATE,{toState:e,fromState:t})}sendComplete(e,t,n={}){this.#e.send(Z.COMPLETE,{toState:e,fromState:t,opts:n}),this.#o=void 0}sendLeaveApprove(e,t){this.#e.send(Z.LEAVE_APPROVE,{toState:e,fromState:t})}sendFail(e,t,n){this.#s=e,this.#c=t,this.#l=n,this.#e.send(Z.FAIL),this.#o=void 0}sendFailSafe(e,t,n){this.isReady()?this.sendFail(e,t,n):this.emitTransitionError(e,t,n)}sendCancel(e,t,n){this.#s=e,this.#c=t,this.#u=n,this.#e.send(Z.CANCEL),this.#o=void 0}canBeginTransition(){return this.#e.canSend(Z.NAVIGATE)}canStart(){return this.#e.canSend(Z.START)}canCancel(){return this.#e.canSend(Z.CANCEL)}isActive(){let e=this.#e.getState();return e!==X.IDLE&&e!==X.DISPOSED}isDisposed(){return this.#e.getState()===X.DISPOSED}isTransitioning(){let e=this.#e.getState();return e===X.TRANSITION_STARTED||e===X.LEAVE_APPROVED}isLeaveApproved(){return this.#e.getState()===X.LEAVE_APPROVED}isReady(){return this.#e.getState()===X.READY}isStarting(){return this.#e.getState()===X.STARTING}isIdle(){return this.#e.getState()===X.IDLE}addEventListener(e,t){return this.#d(e,`addEventListener`),this.#t.on(e,t)}subscribe(e){if(this.isDisposed())throw new K(t.ROUTER_DISPOSED);return this.#d(a.TRANSITION_SUCCESS,`subscribe`),this.#t.on(a.TRANSITION_SUCCESS,(t,n)=>e({route:t,previousRoute:n}))}subscribeLeave(e){if(this.isDisposed())throw new K(t.ROUTER_DISPOSED);this.#i.push(e);let n=!1;return()=>{if(n)return;n=!0;let t=this.#i.indexOf(e);t!==-1&&this.#i.splice(t,1)}}hasLeaveListeners(){return this.#i.length>0}hasPreCommitListeners(){return this.#t.listenerCount(a.TRANSITION_START)>0||this.#t.listenerCount(a.TRANSITION_LEAVE_APPROVE)>0}awaitLeaveListeners(e,t,n){if(t===void 0)return;let r=Object.freeze({route:t,nextRoute:e,signal:n}),i,a,o=[...this.#i];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 wr(a);return}return Tr(i,a,n)}clearAll(){this.#t.clearAll(),this.#i.length=0}setLimits(e){this.#t.setLimits(e)}setValidatorAccessor(e){this.#r=e}sendCancelIfPossible(e,t){let n=this.#o;!this.canCancel()||n===void 0||this.sendCancel(n,e,t)}#d(e,t){let n=this.#r?.();n&&n.eventBus.validateCountThresholds(this.#t.listenerCount(e)+1,e,t)}#f(){this.emitTransitionError(this.#s,this.#c,this.#l),this.#s=void 0,this.#c=void 0,this.#l=void 0}#p(){let e=this.#e;e.on(X.STARTING,Z.STARTED,()=>{this.emitRouterStart()}),e.on(X.READY,Z.STOP,()=>{this.emitRouterStop()});let t=e=>{this.emitTransitionStart(e.toState,e.fromState)};e.on(X.READY,Z.NAVIGATE,t),e.on(X.TRANSITION_STARTED,Z.NAVIGATE,t),e.on(X.LEAVE_APPROVED,Z.NAVIGATE,t),e.on(X.TRANSITION_STARTED,Z.LEAVE_APPROVE,e=>{this.emitTransitionLeaveApprove(e.toState,e.fromState)}),e.on(X.LEAVE_APPROVED,Z.COMPLETE,e=>{this.emitTransitionSuccess(e.toState,e.fromState,e.opts)});let n=()=>{let e=this.#s,t=this.#u;this.#u=void 0,this.#n(t),e!==void 0&&this.emitTransitionCancel(e,this.#c)};e.on(X.TRANSITION_STARTED,Z.CANCEL,n),e.on(X.LEAVE_APPROVED,Z.CANCEL,n),e.on(X.LEAVE_APPROVED,Z.FAIL,()=>{this.#f()}),e.on(X.STARTING,Z.FAIL,()=>{this.#f()}),e.on(X.READY,Z.FAIL,()=>{this.#f()}),e.on(X.TRANSITION_STARTED,Z.FAIL,()=>{this.#f()})}};const Dr=new K(t.ROUTER_ALREADY_STARTED),Or={maxListeners:0,warnListeners:0};var kr=class{#e=new Map;#t=new Set;#n=null;#r=Or;#i;#a;constructor(e){e?.limits&&(this.#r=e.limits),this.#i=e?.onListenerError??null,this.#a=e?.onListenerWarn??null}static validateCallback(e,t){if(typeof e!=`function`)throw TypeError(`Expected callback to be a function for event ${t}`)}setLimits(e){this.#r=e}on(e,t){let n=this.#e.get(e),r=n?.size??0;if(n?.has(t))throw Error(`Duplicate listener for "${e}"`);let{maxListeners:i,warnListeners:a}=this.#r;if(i!==0&&r>=i)throw Error(`Listener limit (${i}) reached for "${e}"`);a!==0&&r===a&&this.#a!==null&&(this.#n??=new Set,this.#n.has(e)||(this.#a(e,a),this.#n.add(e)));let o=n;return o===void 0&&(o=new Set,this.#e.set(e,o)),o.add(t),()=>{this.off(e,t)}}off(e,t){let n=this.#e.get(e);n&&(n.delete(t),n.size===0&&(this.#e.delete(e),this.#n?.delete(e)))}emit(e,t,n,r,i){let a=this.#e.get(e);if(!a||a.size===0||this.#t.has(e))return;let o=arguments.length-1;this.#t.add(e);try{if(a.size===1){let[s]=a;this.#o(e,s,o,t,n,r,i)}else{let s=[...a];for(let a of s)this.#o(e,a,o,t,n,r,i)}}finally{this.#t.delete(e)}}clearAll(){this.#e.clear(),this.#n=null}listenerCount(e){return this.#e.get(e)?.size??0}isDispatching(e){return this.#t.has(e)}#o(e,t,n,r,i,a,o){try{let s=this.#s(t,n,r,i,a,o);s!=null&&typeof s.then==`function`&&Promise.resolve(s).catch(t=>{this.#i?.(e,t)})}catch(t){this.#i?.(e,t)}}#s(e,t,n,r,i,a){switch(t){case 0:return e();case 1:return e(n);case 2:return e(n,r);case 3:return e(n,r,i);default:return e(n,r,i,a)}}};const Ar=Object.freeze({log:0,warn:1,error:2}),jr=Object.freeze({all:0,"warn-error":1,"error-only":2,none:3});var Mr=class{#e={level:`all`,callbackIgnoresLevel:!1};#t=0;#n=!1;constructor(e){e&&this.configure(e)}configure(e){let t=e.level;if(t!==void 0){if(!Object.hasOwn(jr,t))throw Error(`Invalid log level: "${t}". Valid levels are: ${Object.keys(jr).join(`, `)}`);this.#e.level=t,this.#t=jr[t]}Object.hasOwn(e,`callback`)&&(this.#e.callback=e.callback);let n=e.callbackIgnoresLevel;n!==void 0&&(this.#e.callbackIgnoresLevel=n)}getConfig(){return{level:this.#e.level,callback:this.#e.callback,callbackIgnoresLevel:this.#e.callbackIgnoresLevel}}log(e,t,...n){this.#r(`log`,e,t,n)}warn(e,t,...n){this.#r(`warn`,e,t,n)}error(e,t,...n){this.#r(`error`,e,t,n)}#r(e,t,n,r){if(this.#e.level===`none`&&!this.#e.callbackIgnoresLevel)return;let i=Ar[e]<this.#t;i||this.#i(e,t,n,r),this.#a(e,t,n,i,r)}#i(e,t,n,r){if(typeof console<`u`&&typeof console[e]==`function`){let i=t?`[${t}] ${n}`:n;console[e](i,...r)}}#a(e,t,n,r,i){if(!(!this.#e.callback||!this.#e.callbackIgnoresLevel&&r)&&!this.#n){this.#n=!0;try{let r=this.#e.callback(e,t,n,...i);r!=null&&typeof r.then==`function`&&Promise.resolve(r).catch(e=>{this.#o(`[Logger] Error in async callback:`,e)})}catch(e){this.#o(`[Logger] Error in callback:`,e)}finally{this.#n=!1}}}#o(e,t){typeof console<`u`&&typeof console.error==`function`&&console.error(e,t)}};function Nr(t){let n=Pr(t),r=()=>e.u(t.router).validator;Fr(t),Ir(t,r),Lr(t,n,r),Rr(t),zr(t,n,r),Br(t),Vr(t),Hr(t)}function Pr(e){let{router:t,dependenciesStore:n}=e,r=e=>n.dependencies[e];return e=>e(t,r)}function Fr(e){e.dependenciesStore.limits=e.limits,e.eventBus.setLimits({maxListeners:e.limits.maxListeners,warnListeners:e.limits.warnListeners})}function Ir(e,t){e.eventBus.setValidatorAccessor(t)}function Lr(t,n,r){let i={logger:e.u(t.router).logger,compileFactory:n,getValidator:r};t.routeLifecycle.setDependencies(i)}function Rr(t){let n={logger:e.u(t.router).logger,addActivateGuard:(e,n,r)=>{t.routeLifecycle.addCanActivate(e,n,!0,r)},addDeactivateGuard:(e,n,r)=>{t.routeLifecycle.addCanDeactivate(e,n,!0,r)},compileGuard:(e,n)=>t.routeLifecycle.compileGuardFactory(e,n),makeState:(e,n,r,i)=>t.state.makeState(e,n,r,i),getState:()=>t.state.get(),areStatesEqual:(e,n,r)=>t.state.areStatesEqual(e,n,r),getDependency:e=>t.dependenciesStore.dependencies[e],forwardState:(n,r)=>{let i=e.u(t.router);return i.validator?.routes.validateStateBuilderArgs(n,r,`forwardState`),i.forwardState(n,r)}};t.routes.setDependencies(n),t.routes.setLifecycleNamespace(t.routeLifecycle)}function zr(t,n,r){let i={logger:e.u(t.router).logger,addEventListener:(e,n)=>t.eventBus.addEventListener(e,n),canNavigate:()=>t.eventBus.canBeginTransition(),compileFactory:n,getValidator:r};t.plugins.setDependencies(i)}function Br(t){let n={logger:e.u(t.router).logger,getOptions:()=>t.options.get(),hasRoute:e=>t.routes.hasRoute(e),getState:()=>t.state.get(),setState:e=>{t.state.set(e)},buildNavigateState:(n,r)=>{let i=e.u(t.router);i.validator?.routes.validateStateBuilderArgs(n,r,`navigate`);let a=i.forwardState(n,r),o=a.name,s=_(a.params),c=t.routes.getMetaForState(o);if(c===void 0)return;let l=i.buildPath(o,s);return t.state.makeState(o,s,l,c,!0)},resolveDefault:()=>{let n=t.options.get(),r=e.u(t.router),i=It(n.defaultRoute,e=>t.dependenciesStore.dependencies[e]),a=It(n.defaultParams,e=>t.dependenciesStore.dependencies[e]);return typeof n.defaultRoute==`function`&&r.validator?.options.validateResolvedDefaultRoute(i,r.routeGetStore()),{route:i,params:a}},startTransition:(e,n)=>{t.eventBus.sendNavigate(e,n)},cancelNavigation:e=>{t.eventBus.sendCancelIfPossible(t.state.get(),e)},sendTransitionDone:(e,n,r)=>{t.eventBus.sendComplete(e,n,r)},sendTransitionFail:(e,n,r)=>{t.eventBus.sendFail(e,n,r)},emitTransitionError:(e,n,r)=>{t.eventBus.sendFailSafe(e,n,r)},emitTransitionSuccess:(e,n,r)=>{t.eventBus.emitTransitionSuccess(e,n,r)},sendLeaveApprove:(e,n)=>{t.eventBus.sendLeaveApprove(e,n)},canNavigate:()=>t.eventBus.canBeginTransition(),getLifecycleFunctions:()=>t.routeLifecycle.getFunctions(),isActive:()=>t.router.isActive(),isTransitioning:()=>t.eventBus.isTransitioning(),clearCanDeactivate:e=>{t.routeLifecycle.clearCanDeactivate(e,`external`)},hasLeaveListeners:()=>t.eventBus.hasLeaveListeners(),hasPreCommitListeners:()=>t.eventBus.hasPreCommitListeners(),awaitLeaveListeners:(e,n,r)=>t.eventBus.awaitLeaveListeners(e,n,r)};t.navigation.setDependencies(n)}function Vr(e){e.lifecycle.setDependencies({getOptions:()=>e.options.get(),navigateToState:(t,n)=>e.navigation.navigateToState(t,n),navigateToNotFound:t=>e.navigation.navigateToNotFound(t),clearState:()=>{e.state.set(void 0)},matchPath:t=>e.routes.matchPath(t,e.options.get()),completeStart:()=>{e.eventBus.sendStarted()},isIdle:()=>e.eventBus.isIdle(),emitTransitionError:(t,n,r)=>{e.eventBus.sendFail(t,n,r)}})}function Hr(t){t.state.setDependencies({getDefaultParams:()=>t.routes.getStore().config.defaultParams,buildPath:(n,r)=>e.u(t.router).buildPath(n,r),getUrlParams:e=>t.routes.getUrlParams(e)})}const Ur=Object.freeze({}),Wr=new Set([t.SAME_STATES,t.TRANSITION_CANCELLED,t.ROUTER_NOT_STARTED,t.ROUTE_NOT_FOUND,t.CANNOT_ACTIVATE,t.CANNOT_DEACTIVATE]);var Gr=class n{#e;#t;#n;#r;#i;#a;#o;#s;#c;#l;#u;#d;constructor(t=[],r={},i={}){let{logger:a,...o}=r;a&&h(a);let c=new Mr(a);this.#u=e=>{n.#f(e)||c.error(`router.navigate`,`Unexpected navigation error`,e)},this.#d=e=>{n.#f(e)||c.error(`router.start`,`Unexpected start error`,e)},Rt.validateOptionsIsObject(r),u(i),t.length>0&&d(t),this.#e=new Rt(o),this.#t=ee(o.limits),this.#n=v(i),this.#r=new Vt,this.#i=new Kn(t,Kr(this.#e.get()),c),this.#a=new Zt,this.#o=new Gt,this.#s=new _r,this.#c=new yr;let l=Cr(),f=new kr({onListenerError:(e,t)=>{c.error(`Router`,`Error in listener for ${e}:`,t)},onListenerWarn:(e,t)=>{c.warn(`router.addEventListener`,`Event "${e}" has ${t} listeners — possible memory leak`)}});this.#l=new Er({routerFSM:l,emitter:f,abortController:e=>{this.#s.abortCurrentController(e)}});let p=new Map;e.d(this,{logger:c,makeState:(e,t,n,r)=>this.#r.makeState(e,t,n,r),forwardState:e.c(`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(),isEmitting:()=>this.#l.isEmittingTreeChanged()},buildPath:e.c(`buildPath`,(e,t)=>this.#i.buildPath(e,t??s,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:e.l(`start`,e=>this.#c.start(e),p),navigateToState:(e,t)=>{this.#m();let n=this.#s.navigateToState(e,t??Ur);return this.#s.lastSyncResolved?this.#s.lastSyncResolved=!1:this.#s.lastSyncRejected?this.#s.lastSyncRejected=!1:this.#p(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,getCloneState:()=>({options:{...this.#e.get()},dependencies:{...this.#n.dependencies},pluginFactories:this.#o.getAll(),loggerConfig:c.getConfig()}),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}),Nr({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}),this.isActiveRoute=this.isActiveRoute.bind(this),this.buildPath=this.buildPath.bind(this),this.getState=this.getState.bind(this),this.getPreviousState=this.getPreviousState.bind(this),this.areStatesEqual=this.areStatesEqual.bind(this),this.shouldUpdateNode=this.shouldUpdateNode.bind(this),this.isActive=this.isActive.bind(this),this.start=this.start.bind(this),this.stop=this.stop.bind(this),this.dispose=this.dispose.bind(this),this.canNavigateTo=this.canNavigateTo.bind(this),this.usePlugin=this.usePlugin.bind(this),this.navigate=this.navigate.bind(this),this.navigateToDefault=this.navigateToDefault.bind(this),this.navigateToNotFound=this.navigateToNotFound.bind(this),this.subscribe=this.subscribe.bind(this),this.subscribeLeave=this.subscribeLeave.bind(this),this.isLeaveApproved=this.isLeaveApproved.bind(this);try{this.#i.flushPendingGuards()}catch(e){throw this.dispose(),e}}isActiveRoute(t,n,r,i){return e.u(this).validator?.routes.validateIsActiveRouteArgs(t,n,r,i),e.u(this).validator?.routes.validateRouteName(t,`isActiveRoute`),t===``?(e.u(this).logger.warn(`real-router`,`isActiveRoute("") called with empty string. Root node is not considered a parent of any route.`),!1):this.#i.isActiveRoute(t,n,r,i)}buildPath(t,n){let r=e.u(this);return r.validator?.routes.validateBuildPathArgs(t),r.validator?.navigation.validateParams(n,`buildPath`),r.buildPath(t,_(n))}getState(){return this.#r.get()}getPreviousState(){return this.#r.getPrevious()}areStatesEqual(t,n,r=!0){return e.u(this).validator?.state.validateAreStatesEqualArgs(t,n,r),this.#r.areStatesEqual(t,n,r)}shouldUpdateNode(t){return e.u(this).validator?.routes.validateShouldUpdateNodeArgs(t),Kn.shouldUpdateNode(t)}isActive(){return this.#l.isActive()}start(t){if(!this.#l.canStart())return Promise.reject(Dr);e.u(this).validator?.navigation.validateStartArgs(t),this.#l.sendStart();let n;try{let r=e.u(this).start(t);n=typeof r?.then==`function`?r:Promise.reject(TypeError("[router.start] a `start` interceptor returned without calling next(). Every start interceptor must return `next(path)`."))}catch(e){n=Promise.reject(e)}let r=n.catch(e=>this.#h(e));return this.#p(r,this.#d),r}stop(){return this.#l.sendCancelIfPossible(this.#r.get()),!this.#l.isReady()&&!this.#l.isTransitioning()&&!this.#l.isStarting()?this:(this.#c.stop(),this.#l.sendStop(),this)}dispose(){if(this.#l.isDisposed())return;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 t=e.u(this);for(let e of t.routerExtensions)for(let t of e.keys)delete this[t];t.routerExtensions.length=0,t.contextClaimRecords.clear(),t.interceptors.clear(),this.#i.clearRoutes(),this.#a.clearAll(),this.#r.reset(),this.#n.dependencies=Object.create(null),this.#g()}canNavigateTo(t,n){let r=e.u(this);if(r.validator?.routes.validateRouteName(t,`canNavigateTo`),r.validator?.navigation.validateParams(n,`canNavigateTo`),!this.#i.hasRoute(t))return!1;let{name:i,params:a}=r.forwardState(t,n??{}),o;try{let e=_(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}=G(o,s);return this.#a.canNavigateTo(c,l,o,s)}usePlugin(...n){if(this.#l.isDisposed())throw new K(t.ROUTER_DISPOSED);let r=n.filter(Boolean);if(r.length===0)return()=>{};let i=e.u(this);i.validator?.plugins.validatePluginLimit(this.#o.count(),this.#t);for(let e of r)i.validator?.plugins.validateNoDuplicatePlugins(e,this.#o.getAll());return this.#o.use(...r)}subscribe(e){return Er.validateSubscribeListener(e),this.#l.subscribe(e)}subscribeLeave(e){return Er.validateSubscribeLeaveListener(e),this.#l.subscribeLeave(e)}isLeaveApproved(){return this.#l.isLeaveApproved()}navigate(t,n,r){this.#m();let i=e.u(this);i.validator?.navigation.validateNavigateArgs(t),i.validator?.navigation.validateParams(n,`navigate`);let a=r??Ur;i.validator?.navigation.validateNavigationOptions(a,`navigate`);let o=this.#s.navigate(t,n??s,a);return this.#s.lastSyncResolved?this.#s.lastSyncResolved=!1:this.#s.lastSyncRejected?this.#s.lastSyncRejected=!1:this.#p(o),o}navigateToDefault(t){this.#m();let n=e.u(this);n.validator?.navigation.validateNavigateToDefaultArgs(t);let r=t??Ur;n.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:this.#p(i),i}navigateToNotFound(e){if(this.#m(),!this.#l.isActive())throw new K(t.ROUTER_NOT_STARTED);if(e!==void 0&&typeof e!=`string`)throw TypeError(`[router.navigateToNotFound] path must be a string, got ${typeof e}`);if(e!==void 0)return this.#s.navigateToNotFound(e);let n=this.#r.get();if(n===void 0)throw new K(t.ROUTER_NOT_STARTED,{message:`[router.navigateToNotFound] cannot derive the path before the start navigation commits — pass an explicit path`});return this.#s.navigateToNotFound(n.path)}static#f(e){return e instanceof K&&Wr.has(e.code)}#p(e,t=this.#u){e.catch(t)}#m(){if(this.#l.isProcessing())throw new K(t.REENTRANT_NAVIGATION)}#h(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}#g(){this.navigate=$,this.navigateToDefault=$,this.navigateToNotFound=$,this.start=$,this.stop=$,this.usePlugin=$,this.subscribe=$,this.subscribeLeave=$,this.canNavigateTo=$}};function $(){throw new K(t.ROUTER_DISPOSED)}function Kr(e){return{strictTrailingSlash:e.trailingSlash===`strict`,caseSensitive:e.caseSensitive,strictQueryParams:e.queryParamsMode===`strict`,urlParamsEncoding:e.urlParamsEncoding,queryParams:e.queryParams}}Object.defineProperty(exports,"C",{enumerable:!0,get:function(){return n}}),Object.defineProperty(exports,"E",{enumerable:!0,get:function(){return a}}),Object.defineProperty(exports,"S",{enumerable:!0,get:function(){return d}}),Object.defineProperty(exports,"T",{enumerable:!0,get:function(){return t}}),Object.defineProperty(exports,"_",{enumerable:!0,get:function(){return $t}}),Object.defineProperty(exports,"a",{enumerable:!0,get:function(){return xn}}),Object.defineProperty(exports,"b",{enumerable:!0,get:function(){return C}}),Object.defineProperty(exports,"c",{enumerable:!0,get:function(){return R}}),Object.defineProperty(exports,"d",{enumerable:!0,get:function(){return wn}}),Object.defineProperty(exports,"f",{enumerable:!0,get:function(){return On}}),Object.defineProperty(exports,"g",{enumerable:!0,get:function(){return cn}}),Object.defineProperty(exports,"h",{enumerable:!0,get:function(){return dn}}),Object.defineProperty(exports,"i",{enumerable:!0,get:function(){return Dn}}),Object.defineProperty(exports,"l",{enumerable:!0,get:function(){return yn}}),Object.defineProperty(exports,"m",{enumerable:!0,get:function(){return En}}),Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return K}}),Object.defineProperty(exports,"o",{enumerable:!0,get:function(){return L}}),Object.defineProperty(exports,"p",{enumerable:!0,get:function(){return un}}),Object.defineProperty(exports,"r",{enumerable:!0,get:function(){return G}}),Object.defineProperty(exports,"s",{enumerable:!0,get:function(){return bn}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return Gr}}),Object.defineProperty(exports,"u",{enumerable:!0,get:function(){return Cn}}),Object.defineProperty(exports,"v",{enumerable:!0,get:function(){return on}}),Object.defineProperty(exports,"w",{enumerable:!0,get:function(){return r}}),Object.defineProperty(exports,"x",{enumerable:!0,get:function(){return ut}}),Object.defineProperty(exports,"y",{enumerable:!0,get:function(){return an}});
|
|
2
|
+
//# sourceMappingURL=Router-BIYDZRgF.js.map
|