@real-router/core 0.126.11 → 0.127.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/Router-DBXu0GEz.js +2 -0
- package/dist/cjs/Router-DBXu0GEz.js.map +1 -0
- package/dist/cjs/RouterError-CJMrktYx.js +2 -0
- package/dist/cjs/RouterError-CJMrktYx.js.map +1 -0
- package/dist/cjs/RouterError.d.ts.map +1 -1
- package/dist/cjs/api.js +1 -1
- package/dist/cjs/index.js +1 -1
- package/dist/cjs/utils.js +1 -1
- package/dist/esm/Router-B23sjYPo.mjs +2 -0
- package/dist/esm/Router-B23sjYPo.mjs.map +1 -0
- package/dist/esm/RouterError-BNmwvKoa.mjs +2 -0
- package/dist/esm/RouterError-BNmwvKoa.mjs.map +1 -0
- package/dist/esm/RouterError.d.mts.map +1 -1
- package/dist/esm/api.mjs +1 -1
- package/dist/esm/index.mjs +1 -1
- package/dist/esm/utils.mjs +1 -1
- package/package.json +1 -1
- package/dist/cjs/Router-RG9LpezX.js +0 -2
- package/dist/cjs/Router-RG9LpezX.js.map +0 -1
- package/dist/cjs/RouterError-DCVsSNgX.js +0 -2
- package/dist/cjs/RouterError-DCVsSNgX.js.map +0 -1
- package/dist/esm/Router-DVZv00ft.mjs +0 -2
- package/dist/esm/Router-DVZv00ft.mjs.map +0 -1
- package/dist/esm/RouterError-iSQqAez7.mjs +0 -2
- package/dist/esm/RouterError-iSQqAez7.mjs.map +0 -1
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{a as e,m as t}from"./ingest-XMtKw1RB.mjs";const n=Object.freeze,r=Object.entries,i=Object.values,a=Object.hasOwn,o=new Set(i(t)),s=new Set([`code`,`segment`,`path`]),c=new Set([`setCode`,`setErrorInstance`,`setAdditionalFields`,`hasField`,`getField`,`toJSON`]);function l(e){return n(e)}var u=class extends Error{segment;path;code;constructor(t,{message:n,segment:i,path:a,...o}={}){super(n??t),this.name=`RouterError`,this.code=t,this.segment=i,this.path=a;for(let[t,n]of r(o)){if(s.has(t))throw TypeError(`[RouterError] Cannot set reserved property "${t}"`);t!==`__proto__`&&!c.has(t)&&e(this,t,n)}}setCode(e){this.code=e,o.has(this.message)&&(this.message=e)}setErrorInstance(t){if(!t)throw TypeError(`[RouterError.setErrorInstance] err parameter is required and must be an Error instance`);this.message=t.message,e(this,`cause`,t.cause),this.stack=t.stack??``}setAdditionalFields(t){for(let[n,i]of r(t)){if(s.has(n))throw TypeError(`[RouterError.setAdditionalFields] Cannot set reserved property "${n}"`);n!==`__proto__`&&!c.has(n)&&e(this,n,i)}}hasField(e){return a(this,e)}getField(e){return a(this,e)?this[e]:void 0}toJSON(){let t={code:this.code,message:this.message};this.segment!==void 0&&(t.segment=this.segment),this.path!==void 0&&(t.path=this.path);let n=new Set([`code`,`message`,`segment`,`path`,`stack`,`name`]);for(let r in this)a(this,r)&&!n.has(r)&&e(t,r,this[r]);return t}};export{l as n,u as t};
|
|
2
|
+
//# sourceMappingURL=RouterError-BNmwvKoa.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RouterError-BNmwvKoa.mjs","names":[],"sources":["../../src/RouterError.ts"],"sourcesContent":["// packages/core/src/RouterError.ts\n\nimport { errorCodes, UNSAFE_KEY } from \"./constants\";\nimport { putField } from \"./utils/ingest\";\n\n/** Captured like the deciding seven, but this one BUILDS the guarantee (#2073). */\nconst freeze = Object.freeze;\n\nconst objectEntries = Object.entries;\nconst objectValues = Object.values;\n\n// Pre-compute Set of error code values for O(1) lookup in setCode()\n// This avoids creating array and doing linear search on every setCode() call\n// ⚑ Captured at module load, for the reason `helpers.ts` states over its own\n// three: an application can re-point `Object.hasOwn` after boot, and this one\n// gates a PUBLIC read (#1829). ⚠ The file's four other intrinsic reads are still\n// raw — #1971 owns that sweep, and a point fix here would be the N+1 it exists\n// to prevent; capturing the read this commit ADDS is not the same thing as\n// sweeping the ones it found.\nconst hasOwn = Object.hasOwn;\n\nconst errorCodeValues = new Set(objectValues(errorCodes));\n\n// Reserved built-in properties - throw error if user tries to set these\nconst reservedProperties = new Set([\"code\", \"segment\", \"path\"]);\n\n// Reserved method names - silently ignore attempts to overwrite these\nconst reservedMethods = new Set([\n \"setCode\",\n \"setErrorInstance\",\n \"setAdditionalFields\",\n \"hasField\",\n \"getField\",\n \"toJSON\",\n]);\n\n/**\n * Freeze a `RouterError` at the moment it stops being core's to change — the\n * throw (#1960).\n *\n * ⚑ At the THROW, never in the constructor. `RouterError` publishes three\n * mutators (`setCode`, `setErrorInstance`, `setAdditionalFields`) with worked\n * examples in the wiki, and `rethrowAsRouterError` copies an error and re-codes\n * the copy before throwing it. Freezing on construction was measured: it reds\n * across the tier and concentrates in this class's own suite, because it\n * withdraws published API from errors a CONSUMER builds. Freezing here\n * withdraws exactly one thing — writing to an error core threw at you — which\n * #1606 already established is corruption when the instance is one of the\n * cached, process-shared ones, and which a repository-wide sweep of every\n * `catch` binding found nobody doing.\n *\n * ⚠ Only for errors core CONSTRUCTED. A re-thrown foreign error stays untouched:\n * freezing someone else's object on the way through is the hazard, not the fix.\n */\nexport function freezeThrownError<E extends RouterError>(error: E): E {\n return freeze(error);\n}\n\nexport class RouterError extends Error {\n [key: string]: unknown;\n\n // Using public properties to ensure structural compatibility\n // with the `RouterError` interface in `types/base.ts`\n readonly segment: string | undefined;\n readonly path: string | undefined;\n\n // Note: code appears to be writable but setCode() should be used\n // to properly update both code and message together\n code: string;\n\n /**\n * Creates a new RouterError instance.\n *\n * The options object accepts built-in fields (message, segment, path)\n * and any additional custom fields, which will all be attached to the error instance.\n *\n * @param code - The error code (e.g., \"ROUTE_NOT_FOUND\", \"CANNOT_ACTIVATE\")\n * @param options - Optional configuration object\n * @param options.message - Custom error message (defaults to code if not provided)\n * @param options.segment - The route segment where the error occurred\n * @param options.path - The full path where the error occurred\n *\n * @example\n * ```typescript\n * // Basic error\n * const err1 = new RouterError(\"ROUTE_NOT_FOUND\");\n *\n * // Error with custom message\n * const err2 = new RouterError(\"ERR\", { message: \"Something went wrong\" });\n *\n * // Error with context and custom fields\n * const err3 = new RouterError(\"CANNOT_ACTIVATE\", {\n * message: \"Insufficient permissions\",\n * segment: \"admin\",\n * path: \"/admin/users\",\n * userId: \"123\" // custom field\n * });\n * ```\n */\n constructor(\n code: string,\n {\n message,\n segment,\n path,\n ...rest\n }: {\n [key: string]: unknown;\n message?: string | undefined;\n segment?: string | undefined;\n path?: string | undefined;\n } = {},\n ) {\n super(message ?? code);\n\n // Subclasses don't auto-set `name`; without this `error.name` inherits\n // \"Error\", breaking `error.name === \"RouterError\"` checks at catch sites that\n // can't `instanceof` across bundle boundaries.\n this.name = \"RouterError\";\n\n this.code = code;\n this.segment = segment;\n this.path = path;\n\n // Assign custom fields, checking reserved properties and filtering out reserved method names\n // Issue #39: Throw for reserved properties to match setAdditionalFields behavior\n for (const [key, value] of objectEntries(rest)) {\n if (reservedProperties.has(key)) {\n throw new TypeError(\n `[RouterError] Cannot set reserved property \"${key}\"`,\n );\n }\n\n // ⚑ `UNSAFE_KEY` skipped for the reason the state channels give (#1852):\n // this instance is a container core hands out and `toJSON` serializes, so\n // an own `\"__proto__\"` on it is a prototype-swap primitive for whoever\n // merges or re-parses the error — measured, a guard throwing a plain\n // object put the key into `JSON.stringify(err)`.\n //\n // ⚠ Plain assignment is the alternative that looks equivalent and is\n // worse than losing the key: measured, `new RouterError(\"X\", bag)` swaps\n // the INSTANCE's prototype and `instanceof RouterError` answers `false`.\n // `putField` keeps the instance intact; the skip keeps the key off a\n // container someone will merge.\n if (key !== UNSAFE_KEY && !reservedMethods.has(key)) {\n // ⚑ `putField` (#1852). The target is `this`, whose chain runs\n // `RouterError.prototype → Error.prototype → Object.prototype`, and the\n // key comes from the caller's bag. `reservedProperties` / `reservedMethods`\n // above filter by NAME and therefore cannot see an ambient one: measured,\n // an accessor under a custom field name threw out of the constructor,\n // and a setter left the field non-own while reading back the hijacked\n // value.\n putField(this as unknown as Record<string, unknown>, key, value);\n }\n }\n }\n\n /**\n * Updates the error code and conditionally updates the message.\n *\n * If the current message is one of the standard error code values\n * (e.g., \"ROUTE_NOT_FOUND\", \"SAME_STATES\"), it will be replaced with the new code.\n * This allows keeping error messages in sync with codes when using standard error codes.\n *\n * If the message is custom (not a standard error code), it will be preserved.\n *\n * @param newCode - The new error code to set\n *\n * @example\n * // Message follows code (standard error code as message)\n * const err = new RouterError(\"ROUTE_NOT_FOUND\", { message: \"ROUTE_NOT_FOUND\" });\n * err.setCode(\"CUSTOM_ERROR\"); // message becomes \"CUSTOM_ERROR\"\n *\n * @example\n * // Custom message is preserved\n * const err = new RouterError(\"ERR\", { message: \"Custom error message\" });\n * err.setCode(\"NEW_CODE\"); // message stays \"Custom error message\"\n */\n setCode(newCode: string): void {\n this.code = newCode;\n\n // Only update message if it's a standard error code value (not a custom message)\n if (errorCodeValues.has(this.message)) {\n this.message = newCode;\n }\n }\n\n /**\n * Copies properties from another Error instance to this RouterError.\n *\n * This method updates the message, cause, and stack trace from the provided error.\n * Useful for wrapping native errors while preserving error context.\n *\n * @param err - The Error instance to copy properties from\n * @throws {TypeError} If err is null or undefined\n *\n * @example\n * ```typescript\n * const routerErr = new RouterError(\"TRANSITION_ERR\");\n * try {\n * // some operation that might fail\n * } catch (nativeErr) {\n * routerErr.setErrorInstance(nativeErr);\n * throw routerErr;\n * }\n * ```\n */\n setErrorInstance(err: Error): void {\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n if (!err) {\n throw new TypeError(\n \"[RouterError.setErrorInstance] err parameter is required and must be an Error instance\",\n );\n }\n\n this.message = err.message;\n // ⚑ `putField` for THIS slot only, and the set was recounted rather than\n // assumed (#2142 / #1852). `message` and `stack` are already own on every\n // instance — `super(message ?? code)` always passes a string, and the\n // `Error` constructor installs `stack` — so their assignments define own\n // data and cannot reach the chain. `cause` has no own slot unless the\n // constructor was given one, and this class never is.\n //\n // ⚠ Measured on the plain form: an ambient `Object.prototype.cause` setter\n // took the value and left `cause` absent, and a getter-only one made this\n // line THROW — from inside the method that wraps a native failure into the\n // router's own error, so the throw would replace the error being reported.\n putField(this as unknown as Record<string, unknown>, \"cause\", err.cause);\n this.stack = err.stack ?? \"\";\n }\n\n /**\n * Adds custom fields to the error object.\n *\n * This method allows attaching arbitrary data to the error for debugging or logging purposes.\n * All fields become accessible as properties on the error instance and are included in JSON serialization.\n *\n * Reserved method names (setCode, setErrorInstance, setAdditionalFields, hasField, getField, toJSON)\n * are automatically filtered out to prevent accidental overwriting of class methods.\n *\n * @param fields - Object containing custom fields to add to the error\n *\n * @example\n * ```typescript\n * const err = new RouterError(\"CANNOT_ACTIVATE\");\n * err.setAdditionalFields({\n * userId: \"123\",\n * attemptedRoute: \"/admin\",\n * reason: \"insufficient permissions\"\n * });\n *\n * console.log(err.userId); // \"123\"\n * console.log(JSON.stringify(err)); // includes all custom fields\n * ```\n */\n setAdditionalFields(fields: Record<string, unknown>): void {\n // Assign fields, throwing for reserved properties, silently ignoring methods\n for (const [key, value] of objectEntries(fields)) {\n if (reservedProperties.has(key)) {\n throw new TypeError(\n `[RouterError.setAdditionalFields] Cannot set reserved property \"${key}\"`,\n );\n }\n\n // ⚑ `UNSAFE_KEY` skipped, and `putField` rather than assignment, for the\n // reasons the constructor's own field loop states (#1852). Not restated\n // here — one mechanism, one explanation.\n if (key !== UNSAFE_KEY && !reservedMethods.has(key)) {\n // ⚑ `putField` (#1852). The target is `this`, whose chain runs\n // `RouterError.prototype → Error.prototype → Object.prototype`, and the\n // key comes from the caller's bag. `reservedProperties` / `reservedMethods`\n // above filter by NAME and therefore cannot see an ambient one: measured,\n // an accessor under a custom field name threw out of the constructor,\n // and a setter left the field non-own while reading back the hijacked\n // value.\n putField(this as unknown as Record<string, unknown>, key, value);\n }\n }\n }\n\n /**\n * Checks if a custom field exists on the error object.\n *\n * This method checks for both custom fields added via setAdditionalFields()\n * and built-in fields (code, message, segment, etc.).\n *\n * @param key - The field name to check\n * @returns `true` if the field exists, `false` otherwise\n *\n * @example\n * ```typescript\n * const err = new RouterError(\"ROUTE_NOT_FOUND\", {\n * segment: \"users\",\n * path: \"/users/7\",\n * });\n * err.setAdditionalFields({ userId: \"123\" });\n *\n * err.hasField(\"code\"); // true\n * err.hasField(\"segment\"); // true\n * err.hasField(\"path\"); // true\n * err.hasField(\"userId\"); // true\n * err.hasField(\"unknown\"); // false\n * ```\n */\n hasField(key: string): boolean {\n // ⚑ `hasOwn`, not `in` (#1829). `in` walks the prototype chain, so this\n // answered `true` for `Object.prototype`'s twelve members and for the\n // class's own six methods — eighteen names for an error carrying ONE field\n // and `toString` / `constructor` are ordinary strings arriving from a config\n // key, a route param name or a serialized payload.\n //\n // ⚠ NOT `toJSON`'s `excludeKeys`, which the issue proposed. Measured against\n // the docstring above: that set excludes `code`, `segment` and `path`,\n // which this method documents as answering `true`. The two functions ask\n // different questions (what to SERIALIZE vs what the error CARRIES), so\n // agreeing on those three is the contract and diverging on `message` /\n // `stack` / `name` is not drift.\n return hasOwn(this, key);\n }\n\n /**\n * Retrieves a custom field value from the error object.\n *\n * This method can access both custom fields and built-in fields.\n * Returns `undefined` if the field doesn't exist.\n *\n * @param key - The field name to retrieve\n * @returns The field value, or `undefined` if it doesn't exist\n *\n * @example\n * ```typescript\n * const err = new RouterError(\"ERR\");\n * err.setAdditionalFields({ userId: \"123\", role: \"admin\" });\n *\n * err.getField(\"userId\"); // \"123\"\n * err.getField(\"role\"); // \"admin\"\n * err.getField(\"code\"); // \"ERR\" (built-in field)\n * err.getField(\"unknown\"); // undefined\n * ```\n */\n getField(key: string): unknown {\n // Reachable without `hasField` — a consumer may just read — so the same gate\n // stands here rather than being implied by the predicate (#1829). Before\n // this, `getField(\"toString\")` handed back the native function.\n return hasOwn(this, key) ? this[key] : undefined;\n }\n\n /**\n * Serializes the error to a JSON-compatible object.\n *\n * This method is automatically called by JSON.stringify() and includes:\n * - Built-in fields: code, message, segment (if set), path (if set)\n * - All custom fields added via setAdditionalFields() or constructor\n * - Excludes: stack trace (for security/cleanliness)\n *\n * @returns A plain object representation of the error, suitable for JSON serialization\n *\n * @example\n * ```typescript\n * const err = new RouterError(\"ROUTE_NOT_FOUND\", {\n * message: \"Route not found\",\n * path: \"/admin/users/123\"\n * });\n * err.setAdditionalFields({ userId: \"123\" });\n *\n * JSON.stringify(err);\n * // {\n * // \"code\": \"ROUTE_NOT_FOUND\",\n * // \"message\": \"Route not found\",\n * // \"path\": \"/admin/users/123\",\n * // \"userId\": \"123\"\n * // }\n * ```\n */\n toJSON(): Record<string, unknown> {\n const result: Record<string, unknown> = {\n code: this.code,\n message: this.message,\n };\n\n if (this.segment !== undefined) {\n result.segment = this.segment;\n }\n if (this.path !== undefined) {\n result.path = this.path;\n }\n\n // add all public fields\n // Using Set.has() for O(1) lookup instead of Array.includes() O(n)\n // Overall complexity: O(n) instead of O(n*m)\n const excludeKeys = new Set([\n \"code\",\n \"message\",\n \"segment\",\n \"path\",\n \"stack\",\n // `name` is now an own enumerable prop (constructor sets it to\n // \"RouterError\"); it's class metadata, not a custom field — keep it out of\n // the serialized output (preserves toJSON shape).\n \"name\",\n ]);\n\n for (const key in this) {\n if (hasOwn(this, key) && !excludeKeys.has(key)) {\n // ⚑ `putField` (#1852): `result` is a fresh literal and the keys are the\n // user's own error fields. Measured, a setter under one of them made the\n // field vanish from the serialized output with no error at all.\n putField(result, key, this[key]);\n }\n }\n\n return result;\n }\n}\n"],"mappings":"iDAMA,MAAM,EAAS,OAAO,OAEhB,EAAgB,OAAO,QACvB,EAAe,OAAO,OAUtB,EAAS,OAAO,OAEhB,EAAkB,IAAI,IAAI,EAAa,CAAU,CAAC,EAGlD,EAAqB,IAAI,IAAI,CAAC,OAAQ,UAAW,MAAM,CAAC,EAGxD,EAAkB,IAAI,IAAI,CAC9B,UACA,mBACA,sBACA,WACA,WACA,QACF,CAAC,EAoBD,SAAgB,EAAyC,EAAa,CACpE,OAAO,EAAO,CAAK,CACrB,CAEA,IAAa,EAAb,cAAiC,KAAM,CAKrC,QACA,KAIA,KA+BA,YACE,EACA,CACE,UACA,UACA,OACA,GAAG,GAMD,CAAC,EACL,CACA,MAAM,GAAW,CAAI,EAKrB,KAAK,KAAO,cAEZ,KAAK,KAAO,EACZ,KAAK,QAAU,EACf,KAAK,KAAO,EAIZ,IAAK,GAAM,CAAC,EAAK,KAAU,EAAc,CAAI,EAAG,CAC9C,GAAI,EAAmB,IAAI,CAAG,EAC5B,MAAU,UACR,+CAA+C,EAAI,EACrD,EAcE,IAAA,aAAsB,CAAC,EAAgB,IAAI,CAAG,GAQhD,EAAS,KAA4C,EAAK,CAAK,CAEnE,CACF,CAuBA,QAAQ,EAAuB,CAC7B,KAAK,KAAO,EAGR,EAAgB,IAAI,KAAK,OAAO,IAClC,KAAK,QAAU,EAEnB,CAsBA,iBAAiB,EAAkB,CAEjC,GAAI,CAAC,EACH,MAAU,UACR,wFACF,EAGF,KAAK,QAAU,EAAI,QAYnB,EAAS,KAA4C,QAAS,EAAI,KAAK,EACvE,KAAK,MAAQ,EAAI,OAAS,EAC5B,CA0BA,oBAAoB,EAAuC,CAEzD,IAAK,GAAM,CAAC,EAAK,KAAU,EAAc,CAAM,EAAG,CAChD,GAAI,EAAmB,IAAI,CAAG,EAC5B,MAAU,UACR,mEAAmE,EAAI,EACzE,EAME,IAAA,aAAsB,CAAC,EAAgB,IAAI,CAAG,GAQhD,EAAS,KAA4C,EAAK,CAAK,CAEnE,CACF,CA0BA,SAAS,EAAsB,CAa7B,OAAO,EAAO,KAAM,CAAG,CACzB,CAsBA,SAAS,EAAsB,CAI7B,OAAO,EAAO,KAAM,CAAG,EAAI,KAAK,GAAO,IAAA,EACzC,CA6BA,QAAkC,CAChC,IAAM,EAAkC,CACtC,KAAM,KAAK,KACX,QAAS,KAAK,OAChB,EAEI,KAAK,UAAY,IAAA,KACnB,EAAO,QAAU,KAAK,SAEpB,KAAK,OAAS,IAAA,KAChB,EAAO,KAAO,KAAK,MAMrB,IAAM,EAAc,IAAI,IAAI,CAC1B,OACA,UACA,UACA,OACA,QAIA,MACF,CAAC,EAED,IAAK,IAAM,KAAO,KACZ,EAAO,KAAM,CAAG,GAAK,CAAC,EAAY,IAAI,CAAG,GAI3C,EAAS,EAAQ,EAAK,KAAK,EAAI,EAInC,OAAO,CACT,CACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RouterError.d.mts","names":[],"sources":["../../src/RouterError.ts"],"mappings":";;;;;;;;;;;;;;;;;;;wBAsDgB,kBAAkB,UAAU,aAAa,OAAO,IAAI;qBAIvD,oBAAoB;GAC9B;WAIQ;WACA;EAIT;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAgCE,YAAA,gBAEE,SACA,SACA,SACG;KAEF;IACD;IACA;IACA;;;;;;;;;;;;;;;;;;;;;;;EAoEJ,QAAQ;;;;;;;;;;;;;;;;;;;;;EA6BR,iBAAiB,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"RouterError.d.mts","names":[],"sources":["../../src/RouterError.ts"],"mappings":";;;;;;;;;;;;;;;;;;;wBAsDgB,kBAAkB,UAAU,aAAa,OAAO,IAAI;qBAIvD,oBAAoB;GAC9B;WAIQ;WACA;EAIT;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAgCE,YAAA,gBAEE,SACA,SACA,SACG;KAEF;IACD;IACA;IACA;;;;;;;;;;;;;;;;;;;;;;;EAoEJ,QAAQ;;;;;;;;;;;;;;;;;;;;;EA6BR,iBAAiB,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;EAgDtB,oBAAoB,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;EAiD5B,SAAS;;;;;;;;;;;;;;;;;;;;;EAoCT,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAkCT,UAAU"}
|
package/dist/esm/api.mjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{_ as e,i as t,o as n}from"./internals-CcqRqpm9.mjs";import{a as r,m as i}from"./ingest-XMtKw1RB.mjs";import{A as a,C as o,D as s,E as c,F as l,I as u,L as ee,M as d,N as f,O as te,P as p,S as m,T as h,_ as g,a as _,b as ne,c as v,d as y,f as b,g as x,h as S,i as C,j as w,k as T,l as E,m as D,n as O,o as k,p as A,r as re,s as j,t as ie,u as M,w as N,x as P,y as F}from"./Router-DVZv00ft.mjs";import{n as I,t as L}from"./RouterError-iSQqAez7.mjs";function R(e){if(e())throw I(new L(i.ROUTER_DISPOSED))}function z(e){if(e())throw I(new L(i.REENTRANT_TREE_MUTATION,{message:`[router] cannot mutate the route tree from inside a subscribeChanges handler — the mutation would run while a TREE_CHANGED emit is on the stack and the tree must stay atomic. Defer it: queueMicrotask(() => routes.add(...)) or await.`}))}function ae(e,t,n){if(t){let r=t===e;if(r||t.startsWith(`${e}.`)){let i=r?``:` (current: "${t}")`;return n.warn(`router.removeRoute`,`Cannot remove route "${e}" — it is currently active${i}. Navigate away first.`),!1}}return!0}function oe(e,t){t.warn(`router.removeRoute`,`Route "${e}" removed while navigation is in progress. Removing a route the router is navigating to (or an ancestor of it) fails that navigation. The rejected navigate() promise carries "CANCELLED" while the guard walk is synchronous and "ROUTE_NOT_FOUND" once it has gone async; onTransitionError always reports "ROUTE_NOT_FOUND", and onTransitionCancel never fires. The committed state is not affected either way.`)}function B(e){let t=e.indexOf(`?`);return t===-1?e:e.slice(0,t)}function se(e,t,n,r){return n&&B(e)!==B(t)?(r.error(`router.setRootPath`,"Cannot change the root PATH while navigation is in progress — it moves every route's path, including the one being navigated to. Wait for navigation to complete. (Changing only the `?`-declared query names is allowed here: it moves no paths.)"),!1):!0}function V(e,t){return!e||(t.error(`router.clearRoutes`,`Cannot clear routes while navigation is in progress. Wait for navigation to complete.`),!1)}const ce=Object.freeze,le=Object.keys,H=new WeakMap;function ue(c){let l=H.get(c);if(l)return l;let u=t(c),ee={makeState:(e,t,r,i)=>{n(u,`makeState`,e,t);let a=s(t);return u.validator?.state.validateMakeStateArgs(e,a,i),u.validator?.navigation.validateSearch(r,`makeState`),u.makeState(e,a,r,i)},forwardState:(e,t,n)=>(u.validator?.routes.validateStateBuilderArgs(e,t,`forwardState`),u.validator?.navigation.validateSearch(n,`forwardState`),u.forwardState(e,t,n)),matchPath:e=>(u.validator?.routes.validateMatchPathArgs(e),u.matchPath(e,u.getOptions())),navigateToState:(e,t)=>(R(u.isDisposed),u.validator?.navigation.validateNavigateToStateArgs(e),t!==void 0&&u.validator?.navigation.validateNavigationOptions(t,`navigateToState`),u.navigateToState(e,t)),setRootPath:e=>(R(u.isDisposed),z(u.treeChanged.isEmitting),u.validator?.routes.validateSetRootPathArgs(e),se(u.getRootPath(),e,u.isTransitioning(),u.logger)?(u.setRootPath(e),!0):!1),getRootPath:u.getRootPath,addEventListener:(e,t)=>(R(u.isDisposed),T(e),w(t),u.validator?.eventBus.validateListenerArgs(e,t),u.addEventListener(e,t)),buildNavigationState:(t,r={},i={})=>{n(u,`buildNavigationState`,t,r);let a=s(r);u.validator?.navigation.validateSearch(i,`buildNavigationState`),u.validator?.routes.validateStateBuilderArgs(t,a,`buildNavigationState`);let c=h(u.port(),t,a,i,{diagnoseUndeclared:!0});if(u.buildStateResolved(c.name,c.path))return e(`buildNavigationState`,c.name,c.path,u.port().queryNames(c.name)),o(c,N(c,u.port()))},getOptions:u.getOptions,getTree:u.getTree,addInterceptor:(e,t)=>{R(u.isDisposed),a(e,t);let n=u.interceptors.get(e);n||(n=[],u.interceptors.set(e,n)),n.push(t);let r=!1;return()=>{r||(r=!0,n.splice(n.indexOf(t),1))}},getRouteConfig:e=>{let t=u.routeGetStore();if(t.matcher.hasRoute(e))return t.routeCustomFields[e]},extendRouter:e=>{R(u.isDisposed);let t=le(e);for(let e of t)if(e in c)throw I(new L(i.PLUGIN_CONFLICT,{message:`Cannot extend router: property "${e}" already exists`}));let n=t.map(t=>e[t]),r={keys:t};for(let[e,r]of t.entries())c[r]=n[e];u.routerExtensions.push(r);let a=!1;return()=>{if(a)return;a=!0;for(let e of r.keys)delete c[e];let e=u.routerExtensions.indexOf(r);e!==-1&&u.routerExtensions.splice(e,1)}},emitTransitionError:e=>{R(u.isDisposed),u.emitTransitionError(e)},claimContextNamespace:e=>{if(R(u.isDisposed),typeof e!=`string`||e===``)throw TypeError(`[claimContextNamespace] namespace must be a non-empty string, got ${typeof e==`string`?`an empty string`:typeof e}`);if(u.contextClaimRecords.has(e))throw I(new L(i.CONTEXT_NAMESPACE_ALREADY_CLAIMED,{message:`Cannot claim context namespace: "${e}" is already claimed by another plugin`}));let t={write(n,i){u.contextClaimRecords.get(e)===t&&r(n.context,e,i)},release(){u.contextClaimRecords.get(e)===t&&u.contextClaimRecords.delete(e)}};return u.contextClaimRecords.set(e,t),t}},d=ce(ee);return H.set(c,d),d}const U=Object.freeze,W=Object.keys,de=Object.freeze({replace:!0,revalidate:!0}),fe=Object.freeze([]);function pe(e,t,n,r){let i=t=>e.has(t);P(t.decoders,i),P(t.encoders,i),P(t.defaultParams,i),P(t.defaultSearch,i),P(t.forwardMap,i),P(t.forwardFnMap,i),P(n,i),P(t.forwardMap,e=>i(t.forwardMap[e]));let[a,o]=r.getFactories();for(let e of W(o))i(e)&&r.clearCanActivate(e,`both`);for(let e of W(a))i(e)&&r.clearCanDeactivate(e,`both`)}function G(e,t,n,r){let i=n.forwardFnMap[t],a=n.forwardMap[t];i===void 0?a!==void 0&&(e.forwardTo=a):e.forwardTo=i,t in n.defaultParams&&(e.defaultParams=n.defaultParams[t]),t in n.defaultSearch&&(e.defaultSearch=n.defaultSearch[t]),t in n.decoders&&(e.decodeParams=n.decoders[t]),t in n.encoders&&(e.encodeParams=n.encoders[t]);let[o,s]=r;return t in s&&(e.canActivate=s[t]),t in o&&(e.canDeactivate=o[t]),e}function K(e,t,n,i){let a={name:e.name,path:e.path};return G(a,t,n,i),e.children&&r(a,`children`,e.children.map(e=>K(e,`${t}.${e.name}`,n,i))),a}function q(e,t,n,r){let i={name:e,path:t};return G(i,e,n,r),U(i)}function J(e,t){let n=new Map,r=e.lifecycleNamespace.getFactories(),i=(a,o)=>{for(let s of a){let a=o?`${o}.${s.name}`:s.name;t(a)&&n.set(a,q(a,s.path,e.config,r)),s.children&&i(s.children,a)}};return i(e.definitions,``),n}function me(e,t){let n=J(e,e=>t.has(e));return U([...n.values()])}function he(e,t,n){let r=n.lifecycleNamespace.getFactories(),i=[],a=(e,t)=>{for(let o of e){let e=t?`${t}.${o.name}`:o.name;i.push(q(e,o.path,n.config,r)),o.children&&a(o.children,e)}};return a(e,t??``),U(i)}function ge(e,t){let n=[],r=[];for(let[r,i]of e)t.has(r)||n.push(i);for(let[n,i]of t)e.has(n)||r.push(i);return{removed:U(n),added:U(r)}}function _e(e){let t={};return e.forwardTo!==void 0&&(t.forwardTo=e.forwardTo),e.defaultParams!==void 0&&(t.defaultParams=e.defaultParams),e.defaultSearch!==void 0&&(t.defaultSearch=e.defaultSearch),e.encodeParams!==void 0&&(t.encodeParams=e.encodeParams),e.decodeParams!==void 0&&(t.decodeParams=e.decodeParams),U(t)}function ve(e,t,n,r){_(e,t,n);let i=b(e,t,n,r);F(i.matcher,i.config,`addRoute`),e.lifecycleNamespace.preflightHandlerLimit(i.pendingCanActivate.keys(),i.pendingCanDeactivate.keys(),!1),C(e,i)}function Y(e,t){return e.matcher.match(t)?.segments.at(-1)?.fullName}function X(e,t,n,r,i){if(Y(e,r.path)!==i){t.revalidateToNotFound(r.path);return}t.systemCommit(n,r,de)}function ye(e,t,n,r,i){E(t,`addRoute`),y(t,`addRoute`),k(t,`addRoute`),j(t,``,`addRoute`),v(t,``,`addRoute`);let a=A(t,e.rootPath,e.matcherOptions,n.logger);F(a.matcher,a.config,`addRoute`),e.lifecycleNamespace.preflightHandlerLimit(a.pendingCanActivate.keys(),a.pendingCanDeactivate.keys(),!0);let o=x(a,e.depsStore);if(e.lifecycleNamespace.clearDefinitionGuards(),C(e,a,o),i?.(),r!==void 0){let t=Y(e,r.path),i=n.matchPath(r.path,n.getOptions());if(i){if(i.name===r.name)X(e,n,{...i,context:r.context,transition:r.transition},r,t);else{let{toActivate:a}=O(i,r,n.getMetaForState);e.lifecycleNamespace.canNavigateTo([],a,i,r)?X(e,n,{...i,transition:r.transition},r,t):n.revalidateToNotFound(r.path)}}else n.revalidateToNotFound(r.path)}}function be(e,t,n){let r=e.definitions,i=m(r,t);if(i===void 0)return;let a=n?me(e,i):fe;return pe(i,e.config,e.routeCustomFields,e.lifecycleNamespace),S(e,r),a}function xe(e,t){let n=e.matcher.getSegmentsByName(t);if(!n)return;let r=n.at(-1),i=u(r),a=e.lifecycleNamespace.getFactories();return K(i,t,e.config,a)}const Z=new WeakMap;function Se(e){let n=Z.get(e);if(n)return n;let r=t(e),a=r.routeGetStore(),o=e=>{r.treeChanged.emit(e)},s=U({add:(e,t)=>{R(r.isDisposed),z(r.treeChanged.isEmitting);let n=Array.isArray(e)?e:[e],i=t?.parent,s=p(n);if(f(s,r.validator),i!==void 0&&r.validator?.routes.validateParentOption(i,a.tree),r.validator?.routes.throwIfInternalRouteInArray(s,`addRoute`),r.validator?.routes.validateAddRouteArgs(s),r.validator?.routes.validateRoutes(s,a,i),ve(a,s,i,r.logger),r.treeChanged.listenerCount()>0){let e=he(s,i,a);o(i===void 0?{op:`add`,added:e}:{op:`add`,added:e,parent:i})}},remove:e=>{if(R(r.isDisposed),z(r.treeChanged.isEmitting),r.validator?.routes.validateRemoveRouteArgs(e),r.validator?.routes.throwIfInternalRoute(e,`removeRoute`),M(e,`removeRoute`),!ae(e,r.getStateName(),r.logger))return;let t=r.treeChanged.listenerCount()>0,n=be(a,e,t);if(n===void 0){r.logger.warn(`router.removeRoute`,`Route "${e}" not found. No changes made.`);return}r.isTransitioning()&&oe(e,r.logger),t&&o({op:`remove`,name:e,removedSubtree:n})},update:(e,t)=>{if(R(r.isDisposed),z(r.treeChanged.isEmitting),r.validator?.routes.validateUpdateRouteBasicArgs(e,t),r.validator?.routes.throwIfInternalRoute(e,`updateRoute`),M(e,`updateRoute`),r.validator?.routes.validateUpdateRoutePropertyTypes(e,t),r.validator?.routes.validateUpdateRoute(e,t,a),!a.matcher.hasRoute(e))return;r.isTransitioning()&&r.logger.error(`router.updateRoute`,`Updating route "${e}" while navigation is in progress. This may cause unexpected behavior.`);let n=a.lifecycleNamespace,i=D(a,n,e,t);if(r.treeChanged.listenerCount()>0){let t=_e(i);W(t).length>0&&o({op:`update`,name:e,patch:t})}},clear:()=>{if(R(r.isDisposed),z(r.treeChanged.isEmitting),r.getStateName()!==void 0)throw I(new L(i.ROUTER_NOT_STOPPED,{message:`[router.clear] Cannot clear routes while a state is committed. Use replace(routes) to swap the tree on a running router, or stop() first.`}));if(!V(r.isTransitioning(),r.logger))return;let e=r.treeChanged.listenerCount()>0?U([...J(a,()=>!0).values()]):void 0;g(a),a.lifecycleNamespace.clearAll(),e!==void 0&&o({op:`clear`,removed:e})},has:e=>(r.validator?.routes.validateRouteName(e,`hasRoute`),a.matcher.hasRoute(e)),get:e=>(r.validator?.routes.validateRouteName(e,`getRoute`),xe(a,e)),replace:t=>{R(r.isDisposed),z(r.treeChanged.isEmitting);let n=Array.isArray(t)?t:[t];if(!V(r.isTransitioning(),r.logger))return;let i=p(n);f(i,r.validator),r.validator?.routes.throwIfInternalRouteInArray(i,`replaceRoutes`),r.validator?.routes.validateAddRouteArgs(i),r.validator?.routes.validateRoutes(i,a);let s=e.getState(),c=r.treeChanged.listenerCount()>0?J(a,()=>!0):void 0;ye(a,i,r,s,c===void 0?void 0:()=>{let e=J(a,()=>!0),{removed:t,added:n}=ge(c,e);o({op:`replace`,removed:t,added:n})})},subscribeChanges:e=>r.treeChanged.subscribe(e)});return Z.set(e,s),s}const Ce=Object.create,Q=Object.hasOwn,we=e=>typeof e==`symbol`?e:String(e);function Te(e,t,n,r){if(n===void 0)return;let i=e.dependencies,a=we(t);if(!Q(i,a))r?.dependencies.validateDependencyCount(e,`setDependency`);else{let e=i[a];e!==n&&!(Number.isNaN(e)&&Number.isNaN(n))&&r?.dependencies.warnOverwrite(String(a),`setDependency`)}i[a]=n}function Ee(e,t,n){let r=[],i=e.dependencies;l(t,(t,a)=>{Q(i,t)?r.push(t):n?.dependencies.validateDependencyCount(e,`setDependencies`),c(i,t,a)}),r.length>0&&n?.dependencies.warnBatchOverwrite(r,`setDependencies`)}function De(e){let n=t(e);return{get:e=>{n.validator?.dependencies.validateDependencyName(e,`getDependency`);let t=n.dependenciesGetStore(),r=t.dependencies[e];return n.validator?.dependencies.validateDependencyExists(e,t),r},getAll:()=>{let e=n.dependenciesGetStore().dependencies;return te({...e})},set:(e,t)=>{R(n.isDisposed),n.validator?.dependencies.validateSetDependencyArgs(e,t,`setDependency`),Te(n.dependenciesGetStore(),e,t,n.validator),R(n.isDisposed)},setAll:e=>{R(n.isDisposed);let t=n.dependenciesGetStore();n.validator?.dependencies.validateDependenciesObject(e,`setDependencies`),Ee(t,e,n.validator),R(n.isDisposed)},remove:e=>{R(n.isDisposed),n.validator?.dependencies.validateDependencyName(e,`removeDependency`);let t=n.dependenciesGetStore(),r=we(e);Q(t.dependencies,r)||n.validator?.dependencies.warnRemoveNonExistent(String(r)),delete t.dependencies[r]},reset:()=>{R(n.isDisposed);let e=n.dependenciesGetStore();e.dependencies=Ce(null)},has:e=>(n.validator?.dependencies.validateDependencyName(e,`hasDependency`),Q(n.dependenciesGetStore().dependencies,e))}}function Oe(e){let n=t(e),r=n.routeGetStore().lifecycleNamespace;return{addActivateGuard(e,t){R(n.isDisposed),d(e,`addActivateGuard`),n.validator?.routes.validateRouteName(e,`addActivateGuard`),n.validator?.lifecycle.validateHandler(t,`addActivateGuard`),r.addCanActivate(e,t,!1)},addDeactivateGuard(e,t){R(n.isDisposed),d(e,`addDeactivateGuard`),n.validator?.routes.validateRouteName(e,`addDeactivateGuard`),n.validator?.lifecycle.validateHandler(t,`addDeactivateGuard`),r.addCanDeactivate(e,t,!1)},removeActivateGuard(e){R(n.isDisposed),d(e,`removeActivateGuard`),n.validator?.routes.validateRouteName(e,`removeActivateGuard`),r.clearCanActivate(e,`external`)},removeDeactivateGuard(e){R(n.isDisposed),d(e,`removeDeactivateGuard`),n.validator?.routes.validateRouteName(e,`removeDeactivateGuard`),r.clearCanDeactivate(e,`external`)}}}const $=Object.entries,ke=Object.hasOwn;function Ae(e,n,a){let o=t(e);if(o.isDisposed())throw I(new L(i.ROUTER_DISPOSED));o.validator?.dependencies.validateCloneArgs(n);let s=o.routeGetStore(),c=ee(s.tree),u=s.config,d=s.resolvedForwardMap,f=s.routeCustomFields,{options:te,dependencies:p,pluginFactories:m,loggerConfig:h,limits:g,limitKeys:_}=o.getCloneState(),{definition:v,external:y}=s.lifecycleNamespace.getFactoriesByOrigin(),b={...p};n!==void 0&&l(n,(e,t)=>{r(b,e,t)});let x=a?.logger,S=x?{...h,...x}:h,C=new ie(c,{...te,...s.matcherOptions?.queryParams!==void 0&&{queryParams:s.matcherOptions.queryParams},logger:S,..._!==void 0&&{limits:Object.fromEntries(_.filter(e=>ke(g,e)).map(e=>[e,g[e]]))},...s.matcherOptions?.urlParamsEncoding!==void 0&&{urlParamsEncoding:s.matcherOptions.urlParamsEncoding}},b),w=t(C),T=w.routeGetStore(),E=T.lifecycleNamespace;ne(T.config,u),re(T,Object.assign(T.resolvedForwardMap,d)),Object.assign(T.routeCustomFields,f),s.rootPath!==``&&w.setRootPath(s.rootPath);let[D,O]=v,[k,A]=y;for(let[e,t]of $(D))E.addCanDeactivate(e,t,!0);for(let[e,t]of $(O))E.addCanActivate(e,t,!0);let j=Oe(C);for(let[e,t]of $(k))j.addDeactivateGuard(e,t);for(let[e,t]of $(A))j.addActivateGuard(e,t);let M=new Set(w.getCloneState().pluginFactories),N=m.filter(e=>!M.has(e));return N.length>0&&C.usePlugin(...N),C}export{Ae as cloneRouter,De as getDependenciesApi,Oe as getLifecycleApi,ue as getPluginApi,Se as getRoutesApi};
|
|
1
|
+
import{_ as e,i as t,o as n}from"./internals-CcqRqpm9.mjs";import{a as r,m as i}from"./ingest-XMtKw1RB.mjs";import{A as a,C as o,D as s,E as c,F as l,I as u,L as ee,M as d,N as f,O as te,P as p,S as m,T as h,_ as g,a as _,b as ne,c as v,d as y,f as b,g as x,h as S,i as C,j as w,k as T,l as E,m as D,n as O,o as k,p as A,r as re,s as j,t as ie,u as M,w as N,x as P,y as F}from"./Router-B23sjYPo.mjs";import{n as I,t as L}from"./RouterError-BNmwvKoa.mjs";function R(e){if(e())throw I(new L(i.ROUTER_DISPOSED))}function z(e){if(e())throw I(new L(i.REENTRANT_TREE_MUTATION,{message:`[router] cannot mutate the route tree from inside a subscribeChanges handler — the mutation would run while a TREE_CHANGED emit is on the stack and the tree must stay atomic. Defer it: queueMicrotask(() => routes.add(...)) or await.`}))}function ae(e,t,n){if(t){let r=t===e;if(r||t.startsWith(`${e}.`)){let i=r?``:` (current: "${t}")`;return n.warn(`router.removeRoute`,`Cannot remove route "${e}" — it is currently active${i}. Navigate away first.`),!1}}return!0}function oe(e,t){t.warn(`router.removeRoute`,`Route "${e}" removed while navigation is in progress. Removing a route the router is navigating to (or an ancestor of it) fails that navigation. The rejected navigate() promise carries "CANCELLED" while the guard walk is synchronous and "ROUTE_NOT_FOUND" once it has gone async; onTransitionError always reports "ROUTE_NOT_FOUND", and onTransitionCancel never fires. The committed state is not affected either way.`)}function B(e){let t=e.indexOf(`?`);return t===-1?e:e.slice(0,t)}function se(e,t,n,r){return n&&B(e)!==B(t)?(r.error(`router.setRootPath`,"Cannot change the root PATH while navigation is in progress — it moves every route's path, including the one being navigated to. Wait for navigation to complete. (Changing only the `?`-declared query names is allowed here: it moves no paths.)"),!1):!0}function V(e,t){return!e||(t.error(`router.clearRoutes`,`Cannot clear routes while navigation is in progress. Wait for navigation to complete.`),!1)}const ce=Object.freeze,le=Object.keys,H=new WeakMap;function ue(c){let l=H.get(c);if(l)return l;let u=t(c),ee={makeState:(e,t,r,i)=>{n(u,`makeState`,e,t);let a=s(t);return u.validator?.state.validateMakeStateArgs(e,a,i),u.validator?.navigation.validateSearch(r,`makeState`),u.makeState(e,a,r,i)},forwardState:(e,t,n)=>(u.validator?.routes.validateStateBuilderArgs(e,t,`forwardState`),u.validator?.navigation.validateSearch(n,`forwardState`),u.forwardState(e,t,n)),matchPath:e=>(u.validator?.routes.validateMatchPathArgs(e),u.matchPath(e,u.getOptions())),navigateToState:(e,t)=>(R(u.isDisposed),u.validator?.navigation.validateNavigateToStateArgs(e),t!==void 0&&u.validator?.navigation.validateNavigationOptions(t,`navigateToState`),u.navigateToState(e,t)),setRootPath:e=>(R(u.isDisposed),z(u.treeChanged.isEmitting),u.validator?.routes.validateSetRootPathArgs(e),se(u.getRootPath(),e,u.isTransitioning(),u.logger)?(u.setRootPath(e),!0):!1),getRootPath:u.getRootPath,addEventListener:(e,t)=>(R(u.isDisposed),T(e),w(t),u.validator?.eventBus.validateListenerArgs(e,t),u.addEventListener(e,t)),buildNavigationState:(t,r={},i={})=>{n(u,`buildNavigationState`,t,r);let a=s(r);u.validator?.navigation.validateSearch(i,`buildNavigationState`),u.validator?.routes.validateStateBuilderArgs(t,a,`buildNavigationState`);let c=h(u.port(),t,a,i,{diagnoseUndeclared:!0});if(u.buildStateResolved(c.name,c.path))return e(`buildNavigationState`,c.name,c.path,u.port().queryNames(c.name)),o(c,N(c,u.port()))},getOptions:u.getOptions,getTree:u.getTree,addInterceptor:(e,t)=>{R(u.isDisposed),a(e,t);let n=u.interceptors.get(e);n||(n=[],u.interceptors.set(e,n)),n.push(t);let r=!1;return()=>{r||(r=!0,n.splice(n.indexOf(t),1))}},getRouteConfig:e=>{let t=u.routeGetStore();if(t.matcher.hasRoute(e))return t.routeCustomFields[e]},extendRouter:e=>{R(u.isDisposed);let t=le(e);for(let e of t)if(e in c)throw I(new L(i.PLUGIN_CONFLICT,{message:`Cannot extend router: property "${e}" already exists`}));let n=t.map(t=>e[t]),r={keys:t};for(let[e,r]of t.entries())c[r]=n[e];u.routerExtensions.push(r);let a=!1;return()=>{if(a)return;a=!0;for(let e of r.keys)delete c[e];let e=u.routerExtensions.indexOf(r);e!==-1&&u.routerExtensions.splice(e,1)}},emitTransitionError:e=>{R(u.isDisposed),u.emitTransitionError(e)},claimContextNamespace:e=>{if(R(u.isDisposed),typeof e!=`string`||e===``)throw TypeError(`[claimContextNamespace] namespace must be a non-empty string, got ${typeof e==`string`?`an empty string`:typeof e}`);if(u.contextClaimRecords.has(e))throw I(new L(i.CONTEXT_NAMESPACE_ALREADY_CLAIMED,{message:`Cannot claim context namespace: "${e}" is already claimed by another plugin`}));let t={write(n,i){u.contextClaimRecords.get(e)===t&&r(n.context,e,i)},release(){u.contextClaimRecords.get(e)===t&&u.contextClaimRecords.delete(e)}};return u.contextClaimRecords.set(e,t),t}},d=ce(ee);return H.set(c,d),d}const U=Object.freeze,W=Object.keys,de=Object.freeze({replace:!0,revalidate:!0}),fe=Object.freeze([]);function pe(e,t,n,r){let i=t=>e.has(t);P(t.decoders,i),P(t.encoders,i),P(t.defaultParams,i),P(t.defaultSearch,i),P(t.forwardMap,i),P(t.forwardFnMap,i),P(n,i),P(t.forwardMap,e=>i(t.forwardMap[e]));let[a,o]=r.getFactories();for(let e of W(o))i(e)&&r.clearCanActivate(e,`both`);for(let e of W(a))i(e)&&r.clearCanDeactivate(e,`both`)}function G(e,t,n,r){let i=n.forwardFnMap[t],a=n.forwardMap[t];i===void 0?a!==void 0&&(e.forwardTo=a):e.forwardTo=i,t in n.defaultParams&&(e.defaultParams=n.defaultParams[t]),t in n.defaultSearch&&(e.defaultSearch=n.defaultSearch[t]),t in n.decoders&&(e.decodeParams=n.decoders[t]),t in n.encoders&&(e.encodeParams=n.encoders[t]);let[o,s]=r;return t in s&&(e.canActivate=s[t]),t in o&&(e.canDeactivate=o[t]),e}function K(e,t,n,i){let a={name:e.name,path:e.path};return G(a,t,n,i),e.children&&r(a,`children`,e.children.map(e=>K(e,`${t}.${e.name}`,n,i))),a}function q(e,t,n,r){let i={name:e,path:t};return G(i,e,n,r),U(i)}function J(e,t){let n=new Map,r=e.lifecycleNamespace.getFactories(),i=(a,o)=>{for(let s of a){let a=o?`${o}.${s.name}`:s.name;t(a)&&n.set(a,q(a,s.path,e.config,r)),s.children&&i(s.children,a)}};return i(e.definitions,``),n}function me(e,t){let n=J(e,e=>t.has(e));return U([...n.values()])}function he(e,t,n){let r=n.lifecycleNamespace.getFactories(),i=[],a=(e,t)=>{for(let o of e){let e=t?`${t}.${o.name}`:o.name;i.push(q(e,o.path,n.config,r)),o.children&&a(o.children,e)}};return a(e,t??``),U(i)}function ge(e,t){let n=[],r=[];for(let[r,i]of e)t.has(r)||n.push(i);for(let[n,i]of t)e.has(n)||r.push(i);return{removed:U(n),added:U(r)}}function _e(e){let t={};return e.forwardTo!==void 0&&(t.forwardTo=e.forwardTo),e.defaultParams!==void 0&&(t.defaultParams=e.defaultParams),e.defaultSearch!==void 0&&(t.defaultSearch=e.defaultSearch),e.encodeParams!==void 0&&(t.encodeParams=e.encodeParams),e.decodeParams!==void 0&&(t.decodeParams=e.decodeParams),U(t)}function ve(e,t,n,r){_(e,t,n);let i=b(e,t,n,r);F(i.matcher,i.config,`addRoute`),e.lifecycleNamespace.preflightHandlerLimit(i.pendingCanActivate.keys(),i.pendingCanDeactivate.keys(),!1),C(e,i)}function Y(e,t){return e.matcher.match(t)?.segments.at(-1)?.fullName}function X(e,t,n,r,i){if(Y(e,r.path)!==i){t.revalidateToNotFound(r.path);return}t.systemCommit(n,r,de)}function ye(e,t,n,r,i){E(t,`addRoute`),y(t,`addRoute`),k(t,`addRoute`),j(t,``,`addRoute`),v(t,``,`addRoute`);let a=A(t,e.rootPath,e.matcherOptions,n.logger);F(a.matcher,a.config,`addRoute`),e.lifecycleNamespace.preflightHandlerLimit(a.pendingCanActivate.keys(),a.pendingCanDeactivate.keys(),!0);let o=x(a,e.depsStore);if(e.lifecycleNamespace.clearDefinitionGuards(),C(e,a,o),i?.(),r!==void 0){let t=Y(e,r.path),i=n.matchPath(r.path,n.getOptions());if(i){if(i.name===r.name)X(e,n,{...i,context:r.context,transition:r.transition},r,t);else{let{toActivate:a}=O(i,r,n.getMetaForState);e.lifecycleNamespace.canNavigateTo([],a,i,r)?X(e,n,{...i,transition:r.transition},r,t):n.revalidateToNotFound(r.path)}}else n.revalidateToNotFound(r.path)}}function be(e,t,n){let r=e.definitions,i=m(r,t);if(i===void 0)return;let a=n?me(e,i):fe;return pe(i,e.config,e.routeCustomFields,e.lifecycleNamespace),S(e,r),a}function xe(e,t){let n=e.matcher.getSegmentsByName(t);if(!n)return;let r=n.at(-1),i=u(r),a=e.lifecycleNamespace.getFactories();return K(i,t,e.config,a)}const Z=new WeakMap;function Se(e){let n=Z.get(e);if(n)return n;let r=t(e),a=r.routeGetStore(),o=e=>{r.treeChanged.emit(e)},s=U({add:(e,t)=>{R(r.isDisposed),z(r.treeChanged.isEmitting);let n=Array.isArray(e)?e:[e],i=t?.parent,s=p(n);if(f(s,r.validator),i!==void 0&&r.validator?.routes.validateParentOption(i,a.tree),r.validator?.routes.throwIfInternalRouteInArray(s,`addRoute`),r.validator?.routes.validateAddRouteArgs(s),r.validator?.routes.validateRoutes(s,a,i),ve(a,s,i,r.logger),r.treeChanged.listenerCount()>0){let e=he(s,i,a);o(i===void 0?{op:`add`,added:e}:{op:`add`,added:e,parent:i})}},remove:e=>{if(R(r.isDisposed),z(r.treeChanged.isEmitting),r.validator?.routes.validateRemoveRouteArgs(e),r.validator?.routes.throwIfInternalRoute(e,`removeRoute`),M(e,`removeRoute`),!ae(e,r.getStateName(),r.logger))return;let t=r.treeChanged.listenerCount()>0,n=be(a,e,t);if(n===void 0){r.logger.warn(`router.removeRoute`,`Route "${e}" not found. No changes made.`);return}r.isTransitioning()&&oe(e,r.logger),t&&o({op:`remove`,name:e,removedSubtree:n})},update:(e,t)=>{if(R(r.isDisposed),z(r.treeChanged.isEmitting),r.validator?.routes.validateUpdateRouteBasicArgs(e,t),r.validator?.routes.throwIfInternalRoute(e,`updateRoute`),M(e,`updateRoute`),r.validator?.routes.validateUpdateRoutePropertyTypes(e,t),r.validator?.routes.validateUpdateRoute(e,t,a),!a.matcher.hasRoute(e))return;r.isTransitioning()&&r.logger.error(`router.updateRoute`,`Updating route "${e}" while navigation is in progress. This may cause unexpected behavior.`);let n=a.lifecycleNamespace,i=D(a,n,e,t);if(r.treeChanged.listenerCount()>0){let t=_e(i);W(t).length>0&&o({op:`update`,name:e,patch:t})}},clear:()=>{if(R(r.isDisposed),z(r.treeChanged.isEmitting),r.getStateName()!==void 0)throw I(new L(i.ROUTER_NOT_STOPPED,{message:`[router.clear] Cannot clear routes while a state is committed. Use replace(routes) to swap the tree on a running router, or stop() first.`}));if(!V(r.isTransitioning(),r.logger))return;let e=r.treeChanged.listenerCount()>0?U([...J(a,()=>!0).values()]):void 0;g(a),a.lifecycleNamespace.clearAll(),e!==void 0&&o({op:`clear`,removed:e})},has:e=>(r.validator?.routes.validateRouteName(e,`hasRoute`),a.matcher.hasRoute(e)),get:e=>(r.validator?.routes.validateRouteName(e,`getRoute`),xe(a,e)),replace:t=>{R(r.isDisposed),z(r.treeChanged.isEmitting);let n=Array.isArray(t)?t:[t];if(!V(r.isTransitioning(),r.logger))return;let i=p(n);f(i,r.validator),r.validator?.routes.throwIfInternalRouteInArray(i,`replaceRoutes`),r.validator?.routes.validateAddRouteArgs(i),r.validator?.routes.validateRoutes(i,a);let s=e.getState(),c=r.treeChanged.listenerCount()>0?J(a,()=>!0):void 0;ye(a,i,r,s,c===void 0?void 0:()=>{let e=J(a,()=>!0),{removed:t,added:n}=ge(c,e);o({op:`replace`,removed:t,added:n})})},subscribeChanges:e=>r.treeChanged.subscribe(e)});return Z.set(e,s),s}const Ce=Object.create,Q=Object.hasOwn,we=e=>typeof e==`symbol`?e:String(e);function Te(e,t,n,r){if(n===void 0)return;let i=e.dependencies,a=we(t);if(!Q(i,a))r?.dependencies.validateDependencyCount(e,`setDependency`);else{let e=i[a];e!==n&&!(Number.isNaN(e)&&Number.isNaN(n))&&r?.dependencies.warnOverwrite(String(a),`setDependency`)}i[a]=n}function Ee(e,t,n){let r=[],i=e.dependencies;l(t,(t,a)=>{Q(i,t)?r.push(t):n?.dependencies.validateDependencyCount(e,`setDependencies`),c(i,t,a)}),r.length>0&&n?.dependencies.warnBatchOverwrite(r,`setDependencies`)}function De(e){let n=t(e);return{get:e=>{n.validator?.dependencies.validateDependencyName(e,`getDependency`);let t=n.dependenciesGetStore(),r=t.dependencies[e];return n.validator?.dependencies.validateDependencyExists(e,t),r},getAll:()=>{let e=n.dependenciesGetStore().dependencies;return te({...e})},set:(e,t)=>{R(n.isDisposed),n.validator?.dependencies.validateSetDependencyArgs(e,t,`setDependency`),Te(n.dependenciesGetStore(),e,t,n.validator),R(n.isDisposed)},setAll:e=>{R(n.isDisposed);let t=n.dependenciesGetStore();n.validator?.dependencies.validateDependenciesObject(e,`setDependencies`),Ee(t,e,n.validator),R(n.isDisposed)},remove:e=>{R(n.isDisposed),n.validator?.dependencies.validateDependencyName(e,`removeDependency`);let t=n.dependenciesGetStore(),r=we(e);Q(t.dependencies,r)||n.validator?.dependencies.warnRemoveNonExistent(String(r)),delete t.dependencies[r]},reset:()=>{R(n.isDisposed);let e=n.dependenciesGetStore();e.dependencies=Ce(null)},has:e=>(n.validator?.dependencies.validateDependencyName(e,`hasDependency`),Q(n.dependenciesGetStore().dependencies,e))}}function Oe(e){let n=t(e),r=n.routeGetStore().lifecycleNamespace;return{addActivateGuard(e,t){R(n.isDisposed),d(e,`addActivateGuard`),n.validator?.routes.validateRouteName(e,`addActivateGuard`),n.validator?.lifecycle.validateHandler(t,`addActivateGuard`),r.addCanActivate(e,t,!1)},addDeactivateGuard(e,t){R(n.isDisposed),d(e,`addDeactivateGuard`),n.validator?.routes.validateRouteName(e,`addDeactivateGuard`),n.validator?.lifecycle.validateHandler(t,`addDeactivateGuard`),r.addCanDeactivate(e,t,!1)},removeActivateGuard(e){R(n.isDisposed),d(e,`removeActivateGuard`),n.validator?.routes.validateRouteName(e,`removeActivateGuard`),r.clearCanActivate(e,`external`)},removeDeactivateGuard(e){R(n.isDisposed),d(e,`removeDeactivateGuard`),n.validator?.routes.validateRouteName(e,`removeDeactivateGuard`),r.clearCanDeactivate(e,`external`)}}}const $=Object.entries,ke=Object.hasOwn;function Ae(e,n,a){let o=t(e);if(o.isDisposed())throw I(new L(i.ROUTER_DISPOSED));o.validator?.dependencies.validateCloneArgs(n);let s=o.routeGetStore(),c=ee(s.tree),u=s.config,d=s.resolvedForwardMap,f=s.routeCustomFields,{options:te,dependencies:p,pluginFactories:m,loggerConfig:h,limits:g,limitKeys:_}=o.getCloneState(),{definition:v,external:y}=s.lifecycleNamespace.getFactoriesByOrigin(),b={...p};n!==void 0&&l(n,(e,t)=>{r(b,e,t)});let x=a?.logger,S=x?{...h,...x}:h,C=new ie(c,{...te,...s.matcherOptions?.queryParams!==void 0&&{queryParams:s.matcherOptions.queryParams},logger:S,..._!==void 0&&{limits:Object.fromEntries(_.filter(e=>ke(g,e)).map(e=>[e,g[e]]))},...s.matcherOptions?.urlParamsEncoding!==void 0&&{urlParamsEncoding:s.matcherOptions.urlParamsEncoding}},b),w=t(C),T=w.routeGetStore(),E=T.lifecycleNamespace;ne(T.config,u),re(T,Object.assign(T.resolvedForwardMap,d)),Object.assign(T.routeCustomFields,f),s.rootPath!==``&&w.setRootPath(s.rootPath);let[D,O]=v,[k,A]=y;for(let[e,t]of $(D))E.addCanDeactivate(e,t,!0);for(let[e,t]of $(O))E.addCanActivate(e,t,!0);let j=Oe(C);for(let[e,t]of $(k))j.addDeactivateGuard(e,t);for(let[e,t]of $(A))j.addActivateGuard(e,t);let M=new Set(w.getCloneState().pluginFactories),N=m.filter(e=>!M.has(e));return N.length>0&&C.usePlugin(...N),C}export{Ae as cloneRouter,De as getDependenciesApi,Oe as getLifecycleApi,ue as getPluginApi,Se as getRoutesApi};
|
|
2
2
|
//# sourceMappingURL=api.mjs.map
|
package/dist/esm/index.mjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{d as e,h as t,m as n,p as r}from"./ingest-XMtKw1RB.mjs";import{t as i,v as a}from"./Router-
|
|
1
|
+
import{d as e,h as t,m as n,p as r}from"./ingest-XMtKw1RB.mjs";import{t as i,v as a}from"./Router-B23sjYPo.mjs";import{t as o}from"./RouterError-BNmwvKoa.mjs";const s=(e=[],t={},n={})=>new i(e,t,n),c=Object.freeze,l=new WeakMap,u=e=>{let t=l.get(e);return t||(t=c({navigate:e.navigate,getState:e.getState,isActiveRoute:e.isActiveRoute,canNavigateTo:e.canNavigateTo,subscribe:e.subscribe,subscribeLeave:e.subscribeLeave,isLeaveApproved:e.isLeaveApproved}),l.set(e,t)),t};export{i as Router,o as RouterError,e as UNKNOWN_ROUTE,r as constants,s as createRouter,n as errorCodes,t as events,u as getNavigator,a as resolveForwardChain};
|
|
2
2
|
//# sourceMappingURL=index.mjs.map
|
package/dist/esm/utils.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as e,n as t}from"./ingest-XMtKw1RB.mjs";import{n}from"./RouterError-
|
|
1
|
+
import{a as e,n as t}from"./ingest-XMtKw1RB.mjs";import{n}from"./RouterError-BNmwvKoa.mjs";export{t as copyFields,n as freezeThrownError,e as putField};
|
package/package.json
CHANGED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
const e=require("./internals-BGTllfGV.js"),t=require("./ingest-C6HQ7xXf.js"),n=require("./RouterError-DCVsSNgX.js"),r=Object.entries,i=Object.hasOwn;function a(e,n,a){if(e===void 0||a.length===0)return e;let o,s=!1;for(let[c,l]of r(e)){if(i(n,c)&&n[c]!==void 0&&a.includes(c)){s=!0;continue}o??={},t.a(o,c,l)}return o===void 0?s?void 0:e:o}function o(t,n,i){for(let[a,o]of r(t))e.g(i,a,o,n(a),"this route's `defaultParams`","Move it to `defaultSearch`")}const s=Object.entries,c=Object.freeze;function l(e,n,r){let i,a=!1;for(let[o,c]of s(e))n.includes(o)?(i??={},t.a(i,o,c)):(a=!0,r?.(o));return a?c(i??t.u):e}function u(e,t){let n=e.path,r=n.startsWith(`~`),i=r?n.slice(1):n,a=i!==``&&!i.startsWith(`/`)&&!i.startsWith(`?`)?`/${i}`:i,o={name:e.name,path:a,absolute:r,children:[],parent:t};if(e.children)for(let t of e.children){let e=u(t,o);o.children.push(e)}return o}function d(e,t,n){let r=u({name:e,path:t},null);for(let e of n){let t=u(e,r);r.children.push(t)}return r}const f=/[^\w!$'()*+,.:;|~-]/gu,p=/[^\w!$'()*+,.:;|~-]/u,m=/[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?<![\uD800-\uDBFF])[\uDC00-\uDFFF]/g,h=e=>t=>{try{return e(t)}catch{return e(t.replaceAll(m,`�`))}},g=h(e=>e.replaceAll(f,e=>encodeURIComponent(e))),_={default:e=>p.test(e)?g(e):e,uri:h(encodeURI),uriComponent:h(encodeURIComponent),none:e=>e},v={default:decodeURIComponent,uri:decodeURI,uriComponent:decodeURIComponent,none:e=>e},y=(e,t)=>{let n=_[t],r=String(e).split(`/`),i=n(r[0]);for(let e=1;e<r.length;e++)i+=`/`+n(r[e]);return i},b=Object.freeze(Object.create(null));function x(){return{staticChildren:b,hasChildren:!1,paramChild:void 0,splatChild:void 0,route:void 0,slashChildRoute:void 0}}function S(e){return e.length>1&&e.endsWith(`/`)?e.slice(0,-1):e}function ee(e,t){return e===``?t:t===``?e:e.endsWith(`/`)&&t.startsWith(`/`)?e+t.slice(1):e+t}function C(e){return e>=48&&e<=57||e>=65&&e<=70||e>=97&&e<=102}function te(e){let t=0;for(;t<e.length;)if(e.codePointAt(t)===37){if(t+2>=e.length)return!1;let n=e.codePointAt(t+1)??0,r=e.codePointAt(t+2)??0;if(!C(n)||!C(r))return!1;t+=3}else t++;return!0}const ne=Object.freeze([]),re=Object.freeze(new Set),ie=Object.freeze([]),ae=Object.freeze({}),oe=Object.freeze({}),se=Object.freeze({});function ce(e,t){let n=e.kind===`splat`;return{paramName:e.name,encoder:n?e=>y(e,t):_[t]}}function le(t,n,r,i){let a=new Set(i);for(let e of n)for(let t of e.paramMeta.urlParams)a.add(t);if(a.size===0)return{buildStaticParts:[t],buildParamSlots:ie};let o=[],s=[],c=``,l=e.h(t),u=l.length-1;for(let[t,n]of l.entries()){let i=e.m(n);if(`error`in i||i.kind!==`splat`||t===u){if(t>0&&(c+=`/`),`error`in i||i.kind===`static`){c+=n;continue}o.push(c),c=``,s.push(ce(i,r))}}return o.push(c),{buildStaticParts:o,buildParamSlots:s}}function ue(e,t,n){throw Error(`[SegmentMatcher.registerTree] Parameter name conflict at the same path position: '${n}${e}' and '${n}${t}'. One position binds one name across every route that shares it. Rename one — e.g. use '${n}${e}' in both.`)}function de(){throw Error(`[SegmentMatcher.registerTree] Empty parameter name: a ':'/'*' marker must be followed by a name (e.g. ':id', '*rest'), and a segment cannot end in a bare '?'.`)}function fe(e){throw Error(`[SegmentMatcher.registerTree] Fused parameter marker in segment "${e}": a ':'/'*' marker must begin a segment — write 'a/:b', not 'a:b'.`)}function pe(e){throw Error(`[SegmentMatcher.registerTree] Trailing parameter marker in segment "${e}": a param name cannot end in a bare ':' or '*'. Drop the stray marker.`)}function me(e){throw Error(`[SegmentMatcher.registerTree] Optional params are not supported: "${e}" — declare two sibling routes instead, one with the segment and one without.`)}function he(e){throw Error(`[SegmentMatcher.registerTree] Regex constraints are not supported: '<' and '>' are reserved in path segments ("${e}"). Match it as a plain string and validate the value in a canActivate guard.`)}function ge(e){throw Error(`[SegmentMatcher.registerTree] Non-ASCII static segment "${e}": match compares static keys raw and rejects non-ASCII input, so this route can never match. Percent-encode it (e.g. "/caf%C3%A9") or use a param.`)}function _e(e,t){switch(e){case`name-less`:return de();case`trailing-marker`:return pe(t);case`fused-marker`:return fe(t);case`optional-removed`:return me(t);case`constraint-removed`:return he(t)}}function ve(e,t){let n=new Set,r=``;for(let e of t){if(n.has(e)){r=e;break}n.add(e)}throw Error(`[SegmentMatcher.registerTree] Duplicate parameter name '${r}' in route "${e}": a name must be unique within a route — the second position overwrites the first. Rename one.`)}function ye(e,t){throw Error(`[SegmentMatcher.registerTree] Invalid query-param declaration "${t}" in route "${e}": a query-param name cannot contain '<' or '>'. Rename it.`)}function be(e){throw Error(`[SegmentMatcher.registerTree] Double slashes are not allowed in path "${e}": the route would build a URL its own matcher refuses. Remove the empty segment.`)}function xe(e,t){throw Error(`[SegmentMatcher.registerTree] Duplicate route path: routes "${e}" and "${t}" resolve to the same URL — the later would shadow the earlier. Give them distinct paths.`)}function Se(e,t){throw Error(`[SegmentMatcher.registerTree] Index route "${e}" (path "/") under the splat parent "${t}" is unreachable: the wildcard match never reaches the index node. Give the index a distinct path, or make the parent static.`)}function Ce(e,t){return e.paramChild?e.paramChild.name!==t&&ue(e.paramChild.name,t,`:`):e.paramChild={node:x(),name:t},e.paramChild.node}function we(e,t){return e.splatChild?e.splatChild.name!==t&&ue(e.splatChild.name,t,`*`):e.splatChild={node:x(),name:t},e.splatChild.node}const Te=Object.create;function Ee(e,t){e.route!==void 0&&e.route!==t&&xe(e.route.name,t.name),e.route=t}function De(e){for(let t=0;t<e.length;t++)if(e.charCodeAt(t)>=128)return!0;return!1}function Oe(e,t,n){let r=S(n);if(r===`/`){Ee(e.root,t);return}ke(e,e.root,r,1,t)}function ke(e,t,n,r,i){let a=n.length;for(;r<=a;){let i=n.indexOf(`/`,r),o=i===-1?a:i,s=n.slice(r,o);t=Ne(e,t,s),r=o+1}Ee(t,i)}function Ae(e,t,n){let r=n.length;for(;r>1&&n.codePointAt(r-1)===47;)--r;let i=n.slice(0,r);i.slice(i.lastIndexOf(`/`)+1).startsWith(`*`)&&Se(t.name,n);let a=je(e,n);a.slashChildRoute=t}function je(e,t){return Me(e,e.root,t)}function Me(e,t,n){let r=S(n);if(r===`/`||r===``)return t;let i=t,a=1,o=r.length;for(;a<=o;){let t=r.indexOf(`/`,a),n=t===-1?o:t;if(n<=a)break;let s=r.slice(a,n);i=Ne(e,i,s),a=n+1}return i}function Ne(t,n,r){let i=e.m(r);if(`error`in i&&de(),i.kind===`splat`){let e=we(n,i.name);return n.hasChildren=!0,e}if(i.kind===`param`){let e=Ce(n,i.name);return n.hasChildren=!0,e}De(r)&&ge(r);let a=t.options.caseSensitive?r:r.toLowerCase();return a in n.staticChildren||(n.staticChildren===b&&(n.staticChildren=Te(null)),n.staticChildren[a]=x(),n.hasChildren=!0),n.staticChildren[a]}const Pe=Object.freeze,Fe=Object.hasOwn;function Ie(t){let n=e.h(t);for(let[e,r]of n.entries())r===``&&e>0&&e<n.length-1&&be(t)}function Le(t){for(let n of e.h(t)){let t=e.m(n);`error`in t&&_e(t.error,n)}}function Re(t,n,r,i,a){let o=n.fullName===``;o||i.push(n);let s=n.absolute,c=n.paramMeta===e.d?n.path:n.paramMeta.pathPattern,l=s&&c.startsWith(`~`)?c.slice(1):c,u=s?l:c;Ie(n.path),Le(u);let d=u,f=s?d:ee(r,d),p=o?a:ze(t,n,f,s?``:r,i,a);for(let e of n.children.values())Re(t,e,f,i,p);o||i.pop()}function ze(e,t,n,r,i,a){let o=We(n,r),s=Pe([...i]),c=Be(s),l=S(n),u=Ge(e.rootQueryParams,i),{buildStaticParts:d,buildParamSlots:f}=le(o?S(r):l,o?i.slice(0,-1):i,e.options.urlParamsEncoding,e.rootUrlParams),p=f.map(e=>e.paramName),m=p.length===0?re:new Set(p);m.size!==p.length&&ve(t.fullName,p),Ke(t.fullName,u);let h={name:t.fullName,parent:a,matchSegments:s,meta:c,declaredQueryParams:u,declaredQueryParamsSet:u.length===0?re:new Set(u),hasTrailingSlash:n.length>1&&n.endsWith(`/`),buildStaticParts:d,buildParamSlots:f,buildParamNamesSet:m,cachedResult:void 0};return t.paramMeta.urlParams.length===0&&(h.cachedResult=Pe({segments:h.matchSegments,params:ae,search:oe,meta:h.meta})),e.routesByName.set(t.fullName,h),o?He(e,h,r):Ue(e,h,n,l,t),h}function Be(e){let n;for(let r of e)Ve(r.paramTypeMap)&&(n??=t.r(),n[r.fullName]=r.paramTypeMap);return n===void 0?se:Pe(t.t(t.i(n)))}function Ve(e){for(let t in e)if(Fe(e,t))return!0;return!1}function He(e,t,n){Ae(e,t,n);let r=S(n),i=e.options.caseSensitive?r:r.toLowerCase();e.staticCache.has(i)&&e.staticCache.set(i,t)}function Ue(e,t,n,r,i){if(Oe(e,t,n),i.paramMeta.urlParams.length===0){let n=e.options.caseSensitive?r:r.toLowerCase();e.staticCache.set(n,t)}}function We(e,t){return S(e)===S(t)}function Ge(e,t){let n=[];e.length>0&&n.push(...e);for(let e of t)e.paramMeta.queryParams.length>0&&n.push(...e.paramMeta.queryParams);return n.length===0?ne:n}function Ke(t,n){for(let r of n)e.f.test(r)&&ye(t,r)}const qe=Symbol.for(`real-router.searchParams.configFault`),Je=Object.hasOwn,Ye=Object.keys,Xe=Object.getOwnPropertyDescriptor;function Ze(e){try{return Xe(e,qe)?.configurable===!1}catch{return!1}}function Qe(e){return typeof e==`string`?e:typeof e==`object`?JSON.stringify(e):String(e)}const $e=Object.freeze({});function et(e,t){return e===`strict`?t?`always`:`never`:e}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){let t=e.urlParamsEncoding??`default`,n=typeof t==`string`?t:String(t),r=Je(_,n)?n:`default`;this.#e={caseSensitive:e.caseSensitive??!0,strictTrailingSlash:e.strictTrailingSlash??!1,strictQueryParams:e.strictQueryParams??!1,urlParamsEncoding:r,parseQueryString:e.parseQueryString,buildQueryString:e.buildQueryString},this.#s=this.#e.caseSensitive,this.#c=this.#e.urlParamsEncoding===`none`?null:v[this.#e.urlParamsEncoding]}registerTree(e){this.#a=e.paramMeta.queryParams,Re({root:this.#t,options:this.#e,routesByName:this.#n,staticCache:this.#r,rootQueryParams:this.#a,rootUrlParams:e.paramMeta.urlParams},e,``,[],null)}match(e){if(!this.#f(e))return;let{cleanPath:t,normalized:n,queryString:r}=this.#i,i=this.#s?n:n.toLowerCase(),a=this.#r.get(i);if(a)return this.#e.strictTrailingSlash&&!this.#g(t,a)?void 0:r===void 0&&a.cachedResult?a.cachedResult:this.#m(a,{},r);let o={},s=this.#_(n,o);if(s&&(!this.#e.strictTrailingSlash||this.#g(t,s))&&this.#b(o))return this.#m(s,o,r)}buildPath(e,t,n,r){let i=this.#n.get(e);if(!i)throw Error(`[SegmentMatcher.buildPath] '${e}' is not defined`);let a=this.#l(i,t),o=this.#u(a,et(r?.trailingSlash,i.hasTrailingSlash)),s=this.#d(i,n??t,r?.queryParamsMode);return o+(s?`?${s}`:``)}getSegmentsByName(e){return this.#n.get(e)?.matchSegments}getMetaByName(e){return this.#n.get(e)?.meta}getDeclaredQueryParams(e){return this.#n.get(e)?.declaredQueryParams}hasRoute(e){return this.#n.has(e)}#l(e,t){let n=e.buildStaticParts,r=e.buildParamSlots;if(r.length===0)return n[0];let i=n[0];for(let[e,a]of r.entries()){let r=t!=null&&Je(t,a.paramName)?t[a.paramName]:void 0;if(r==null)throw Error(`[SegmentMatcher.buildPath] Missing required param '${a.paramName}'`);if(r===``)throw Error(`[SegmentMatcher.buildPath] Missing required param '${a.paramName}' (empty string)`);let o=a.encoder(Qe(r));i+=o+n[e+1]}return i}#u(e,t){return t===`always`&&!e.endsWith(`/`)?`${e}/`:t===`never`&&e!==`/`&&e.endsWith(`/`)?e.slice(0,-1):e}#d(e,n,r){if(!n||e.declaredQueryParams.length===0&&r!==`loose`)return``;let i={},a=!1;for(let r of e.declaredQueryParams)Je(n,r)&&(t.a(i,r,n[r]),a=!0);if(r===`loose`)for(let r of Ye(n))e.declaredQueryParamsSet.has(r)||e.buildParamNamesSet.has(r)||(t.a(i,r,n[r]),a=!0);return a?this.#e.buildQueryString(i):``}#f(e){if(e===``&&(e=`/`),e.codePointAt(0)!==47)return!1;let t=this.#p(e);if(t===-2)return!1;t===-3&&(e=this.#o);let n=t>=0?e.slice(0,t):e,r=t>=0?e.slice(t+1):void 0;if(r!==void 0){let e=r.indexOf(`#`);e!==-1&&(r=r.slice(0,e))}let i=S(n);return this.#i.cleanPath=n,this.#i.normalized=i,this.#i.queryString=r,!0}#p(e){let t=!1;for(let n=0;n<e.length;n++){let r=e.codePointAt(n);if(r===35)return this.#o=e.slice(0,n),-3;if(r===63)return n;if(r>=128)return-2;if(r===47){if(t)return-2;t=!0}else t=!1}return-1}#m(e,t,n){let r=$e;if(n!==void 0){let t=this.#h(e,n);if(t===void 0)return;r=t}return{segments:e.matchSegments,params:t,search:r,meta:e.meta}}#h(e,t){let n;try{n=this.#e.parseQueryString(t)}catch(e){if(Ze(e))throw e;return}if(this.#e.strictQueryParams){let t=e.declaredQueryParamsSet;for(let e of Ye(n))if(!t.has(e))return}return n}#g(e,t){return(e.length>1&&e.endsWith(`/`))===t.hasTrailingSlash}#_(e,t){return e.length===1?this.#t.slashChildRoute??this.#t.route:this.#v(this.#t,e,1,t)}#v(e,n,r,i){let a=e,o=n.length,s=this.#s;for(;r<=o;){let e=n.indexOf(`/`,r),c=e===-1?o:e,l=n.slice(r,c),u=s?l:l.toLowerCase(),d;if(u in a.staticChildren){let e=a.staticChildren[u];if(a.splatChild!==void 0){let o={},s=this.#v(e,n,c+1,o);return s===void 0?this.#y(a.splatChild,n,r,i):(t.n(i,o),s)}d=e}else if(a.paramChild){let e=a.paramChild;if(a.splatChild!==void 0){let o={[e.name]:l},s=this.#v(e.node,n,c+1,o);return s===void 0?this.#y(a.splatChild,n,r,i):(t.n(i,o),s)}d=e.node,t.a(i,e.name,l)}else if(a.splatChild)return this.#y(a.splatChild,n,r,i);else return;a=d,r=c+1}return a.slashChildRoute??a.route}#y(e,n,r,i){let a=e.node;if(!a.hasChildren)return t.a(i,e.name,n.slice(r)),a.route;let o={},s=this.#v(a,n,r,o);return s?(t.n(i,o),s):(t.a(i,e.name,n.slice(r)),a.route)}#b(e){let t=this.#c;if(!t)return!0;for(let n of Ye(e)){let r=e[n];if(r.includes(`%`)){if(!te(r))return!1;try{e[n]=t(r)}catch{return!1}}}return!0}};const w=Object.freeze,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.p(t.path),i=r.urlParams.length===0&&r.queryParams.length===0&&r.pathPattern===t.path?e.d: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,w(o.nonAbsoluteChildren),w(o.children)}return w(a),w(i.urlParams),w(i.queryParams),w(i),w(o),o}function ct(e){return st(e,null)}function lt(e,t,n){return ct(d(e,t,n))}function ut(e){let n=e.absolute?`~${e.path}`:e.path,r={name:e.name,path:n};return e.children.size>0&&t.a(r,`children`,Array.from(e.children.values(),ut)),r}function dt(e){return Array.from(e.children.values(),ut)}const ft=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)},pt=(e,t)=>{if(e===void 0)return t.boolean.decodeUndefined();let n=t.boolean.decodeRaw(e);if(n!==null)return n;let r=ft(e),i=t.number.decode(r);return i===null?t.boolean.decodeValue(r):i},mt=/[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?<![\uD800-\uDBFF])[\uDC00-\uDFFF]/g,ht=e=>{try{return encodeURIComponent(e)}catch(t){if(!(t instanceof URIError))throw t;return encodeURIComponent(String(e).replaceAll(mt,`�`))}},gt=e=>{let t=typeof e;if(t!==`string`&&t!==`number`&&t!==`boolean`)throw TypeError(`[router] Invalid query value: an array element must be a string, number, or boolean — received ${t}`);return ht(e)},_t=(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}=${gt(e)}`);return a.join(`&`)},vt={none:{encodeArray:(e,t,n)=>_t(e,t,``,n)},brackets:{encodeArray:(e,t,n)=>_t(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}=${gt(a)}`)}return r.join(`&`)},indexed:!0},comma:{encodeArray:(e,t)=>{let n=[];for(let e of t)e!==null&&n.push(gt(e));return n.length===0?``:`${e}=${n.join(`,`)}`},decodeValue:e=>e.includes(`,`)?e.split(`,`):null}},yt={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}},bt={default:{encode:e=>e},hidden:{encode:()=>``}},xt={auto:{decode:e=>{let t=e.length;if(t===0)return null;let n=+(e.codePointAt(0)===45);if(n===t||t-n>1&&e.codePointAt(n)===48&&e.codePointAt(n+1)!==46)return null;let r=!1;for(let i=n;i<t;i++){let a=e.codePointAt(i);if(!(a!==void 0&&a>=48&&a<=57)){if(a===46&&!r&&i!==n&&i!==t-1){r=!0;continue}return null}}let i=Number(e);return String(i)!==e||!Number.isSafeInteger(i)&&!r?null:i}},none:{decode:()=>null}},St=Object.defineProperty,Ct=Object.keys,wt=Object.hasOwn,Tt=Symbol.for(`real-router.searchParams.configFault`),Et=(e,t,n)=>{let r=typeof t==`string`?t:String(t);if(!wt(e,r)){let t=TypeError(`[router.constructor] Invalid "queryParams.${n}": "${r}" — expected ${Ct(e).map(e=>`"${e}"`).join(` | `)}`);throw St(t,Tt,{value:!0}),t}return e[r]},Dt=(e,t,n,r)=>({boolean:Et(yt,t,`booleanFormat`),null:Et(bt,n,`nullFormat`),number:Et(xt,r,`numberFormat`),array:Et(vt,e,`arrayFormat`)}),Ot=Object.freeze({boolean:yt.auto,null:bt.default,number:xt.auto,array:vt.none}),T=Object.freeze({arrayFormat:`none`,booleanFormat:`auto`,nullFormat:`default`,numberFormat:`auto`}),kt=Object.freeze({...T,strategies:Ot}),At=e=>{if(!e||e.arrayFormat===void 0&&e.booleanFormat===void 0&&e.nullFormat===void 0&&e.numberFormat===void 0)return kt;let t=e.arrayFormat??T.arrayFormat,n=e.booleanFormat??T.booleanFormat,r=e.nullFormat??T.nullFormat,i=e.numberFormat??T.numberFormat;return{arrayFormat:t,booleanFormat:n,nullFormat:r,numberFormat:i,strategies:Dt(t,n,r,i)}},jt=e=>ht(e),Mt=(e,t,n)=>{let r=jt(e);switch(typeof t){case`string`:case`number`:return`${r}=${jt(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}=${jt(t)}`;default:return`${r}=${jt(t)}`}},Nt=Object.hasOwn,Pt=Object.keys;function Ft(e,n,r){t.a(e,n,r)}function It(e,t,n,r){if(!Nt(e,t)){Ft(e,t,r?[n]:n);return}let i=e[t];Array.isArray(i)?i.push(n):Ft(e,t,[i,n])}function Lt(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 Rt(e,t,n){let{searchPart:r,nameEnd:i,nameSourceEnd:a,rawValue:o,decodedName:s}=e,c=Lt(r,i,a);if(c===null)return!1;let l=pt(o,t),u=n.get(s);return u===void 0?n.set(s,[[c,l]]):u.push([c,l]),!0}function zt(e,t,n,r,i,a,o){let s=a!==-1&&a<n?e.slice(a+1,n):void 0,c=s===void 0?n:a,l=c,u=!1;for(let n=t;n<c;n++)if(e.codePointAt(n)===91){l=n,u=!0;break}let d=ft(e.slice(t,l));if(!(o!==void 0&&u&&Rt({searchPart:e,nameEnd:l,nameSourceEnd:c,rawValue:s,decodedName:d},i,o))){if(!u&&s!==void 0&&i.array.decodeValue){let e=i.array.decodeValue(s);if(e){for(let t of e)It(r,d,pt(t,i),!0);return}}It(r,d,pt(s,i),u)}}const Bt=(e,t)=>{if(e===``||e===`?`)return{};let n={};return Vt(e,n,t.strategies),n};function Vt(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)),zt(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]),Ft(t,e,n.map(e=>e[1]))}const Ht=(e,t)=>{let n=Pt(e);if(n.length===0)return``;let r=[];for(let i of n){let n=e[i];if(n===void 0)continue;let a=Mt(i,n,t);a&&r.push(a)}return r.join(`&`)};function Ut(e){let t=e?.queryParams,n=At(t);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=>Bt(e,n),buildQueryString:e=>Ht(e,n)})}const Wt=Object.keys,Gt=Object.values,E=Object.hasOwn,Kt=Object.getOwnPropertyDescriptor,qt=Object.getPrototypeOf,Jt=Object,Yt=new Set(Gt(t.h));function Xt(e){if(!Yt.has(e))throw TypeError(`[router.addEventListener] Invalid event name: ${String(e)}. Must be one of: ${[...Yt].join(`, `)}`)}function Zt(e){if(typeof e!=`function`)throw TypeError(`[router.addEventListener] callback must be a function, got ${typeof e}`)}function Qt(t,n){if(typeof t!=`string`||!E(e.t,t))throw TypeError(`[router.addInterceptor] Invalid method: ${typeof t==`string`?`"${t}"`:typeof t}. Must be one of: ${Wt(e.t).join(`, `)}`);if(typeof n!=`function`)throw TypeError(`[router.addInterceptor] interceptor must be a function, got ${typeof n}`)}function $t(e,t){if(typeof e!=`string`)throw TypeError(`[router.${t}] Route name must be a string, got ${typeof e}`)}function en(e){if(!e||typeof e!=`object`)throw TypeError(`dependencies must be a plain object`);let t=qt(e);if(t!==null&&t.constructor!==Jt)throw TypeError(`dependencies must be a plain object`)}function tn(e,t){en(e);let n=e,r=[];for(let e of Wt(n)){if(Kt(n,e)?.get)throw TypeError(`dependencies cannot contain getters: "${e}"`);let t=n[e];t!==void 0&&r.push([e,t])}for(let[e,n]of r)t(e,n)}function nn(n){let r=[];for(let i of n){let n=i;if(typeof n!=`object`||!n||Array.isArray(n))throw TypeError(`route must be a non-array object`);e.c(n,`addRoute`);let a={...n},o=a.children;o&&t.a(a,`children`,nn(o)),r.push(a)}return r}function rn(e,t){if(t)for(let n of e){t.routes.guardRouteCallbacks(n),t.routes.guardNoAsyncCallbacks(n);let e=n.children;e&&rn(e,t)}}const an=new Set([`all`,`warn-error`,`error-only`,`none`]);function on(e){return typeof e==`string`&&an.has(e)}function sn(e){return typeof e==`string`?`"${e}"`:typeof e==`object`?JSON.stringify(e):String(e)}function cn(e){for(let t of Wt(e))if(t!==`level`&&t!==`callback`&&t!==`callbackIgnoresLevel`)throw TypeError(`Unknown logger config property: "${t}"`)}function ln(e){if(!E(e,`level`))return;let t=e.level;if(t!==void 0){if(!on(t))throw TypeError(`Invalid logger level: ${sn(t)}. Expected: "all" | "warn-error" | "error-only" | "none"`);return t}}function un(e){if(!E(e,`callbackIgnoresLevel`))return;let t=e.callbackIgnoresLevel;if(t!==void 0){if(typeof t!=`boolean`)throw TypeError(`Logger callbackIgnoresLevel must be a boolean, got ${typeof t}`);return t}}function dn(e){if(typeof e!=`object`||!e)throw TypeError(`Logger config must be an object`);let t=e;cn(t);let n={},r=ln(t);if(r!==void 0&&(n.level=r),E(t,`callback`)){let e=t.callback;if(e!==void 0&&typeof e!=`function`)throw TypeError(`Logger callback must be a function, got ${typeof e}`);n.callback=e}let i=un(t);return i!==void 0&&(n.callbackIgnoresLevel=i),n}const D=Object.freeze,fn=Object.hasOwn,O=Object.keys,pn=Object.getPrototypeOf,mn=`signal`;function k(e,n){if(e===void 0)return n;let r={};for(let n of O(e)){if(n===`__proto__`)continue;let i=e[n];i!==void 0&&t.a(r,n,i)}if(n!==void 0)for(let e of O(n)){if(e===`__proto__`)continue;let i=n[e];i!==void 0&&t.a(r,e,i)}return r}const hn=new Set([`string`,`number`,`boolean`]);function gn(e){return hn.has(typeof e)}function A(e,t){if(e===t)return!0;if(Array.isArray(e)){let n=e.length;if(!Array.isArray(t))return n===1&&A(e[0],t);if(n!==t.length)return!1;for(let r=0;r<n;r++)if(!A(e[r],t[r]))return!1;return!0}return Array.isArray(t)?t.length===1&&A(e,t[0]):gn(e)&&gn(t)&&String(e)===String(t)}function _n(e,t){let n=O(e),r=O(t);if(n.length!==r.length)return!1;for(let i of n)if(!r.includes(i)||!A(e[i],t[i]))return!1;return!0}function vn(e,t,n){if(n.length===0)return!0;let r=O(e),i=O(t);for(let a of n)if(!A(r.includes(a)?e[a]:void 0,i.includes(a)?t[a]:void 0))return!1;return!0}function yn(e){return D(e)}function bn(e,t,n){return e===void 0?t===void 0||t===n?n:t:k(e,t)}function xn(e,n){return bn(e,n,t.l)}function Sn(e,n){let r=bn(e,n,t.u);return r===t.u?r:D(r)}function j(e,n){if(e==null||e===n)return n;let r={};for(let n of O(e)){if(n===`__proto__`)continue;let i=e[n];i!==void 0&&t.a(r,n,i)}return D(r)}function Cn(e){return fn(e,mn)?e.signal:void 0}function M(e,t){return fn(e,t)?e[t]:void 0}function wn(e){if(e===t.c)return t.c;let n={},r=e;for(let e of O(r))e!==`__proto__`&&e!==mn&&t.a(n,e,r[e]);return D(n)}function N(e,n){if(e===void 0)return e;if(e===null)return n;let r;for(let n of O(e)){if(n===`__proto__`)continue;let i=e[n];i!==void 0&&(r??={},t.a(r,n,i))}return r??n}function P(e){if(e==null)return e;let t=pn(e);return t===null||t===Object.prototype?{...e}:e}function Tn(e){return delete e[t.f],e}function F(e,t){if(typeof t!=`object`||!t)return t;try{let e=Array.isArray(t)?[...t]:{...t};return D(Tn(e))}catch(t){throw TypeError(`[router.constructor] Invalid "${e}": reading it threw.`,{cause:t})}}function I(e){if(!fn(e,`__proto__`))return e;let n={};for(let r of O(e))r!==`__proto__`&&t.a(n,r,e[r]);return n}const En=Object.freeze;function Dn(e={}){let n={...t.o,...e};return En({maxDependencies:Number(n.maxDependencies),maxPlugins:Number(n.maxPlugins),maxListeners:Number(n.maxListeners),warnListeners:Number(n.warnListeners),maxLifecycleHandlers:Number(n.maxLifecycleHandlers)})}const On=Object.create;function kn(e,t,n){e[t]=n}function An(e={}){let n=On(null),r=e,i=n;return tn(r,(e,t)=>{kn(i,e,t)}),{dependencies:n,limits:t.o}}const jn={defaultRoute:``,defaultParams:{},defaultSearch:{},trailingSlash:`preserve`,caseSensitive:!0,queryParamsMode:`loose`,queryParams:T,urlParamsEncoding:`default`,allowNotFound:!0,rewritePathOnMatch:!0};function Mn(e){if(!e||typeof e!=`object`||Array.isArray(e))throw TypeError(`[router.constructor] options must be a plain object`)}const Nn=Object.freeze;var Pn=class{#e;constructor(e={}){this.#e=Nn(Tn({...jn,...e}))}static validateOptionsIsObject(e){Mn(e)}get(){return this.#e}};function Fn(e,t){return typeof e==`function`?e(t):e}const In=Object.keys;function Ln(e,t,n,r,i){let a=e.pathNames(t);if(a!==void 0)for(let e of In(n))!r.includes(e)&&!a.includes(e)&&i(t,e)}function L(e,n,r,i,o){let s=String(n),c=o?.resolveForward===!1?{name:s,params:r,search:i}:e.resolveForward(s,r,i),u=c.name,d=N(c.params,t.l),f=o?.diagnoseUndeclared===!0?e.reportUndeclaredParamKey:void 0;f&&Ln(e,u,d,e.queryNames(u),f);let p=e.defaultParams(u),m=e.defaultSearch(u);if((c.search===void 0||c.search===t.u)&&p===void 0&&m===void 0)return{name:u,path:d,query:t.u};let h=e.queryNames(u),g=e.reportDroppedQueryKey,_=Sn(o?.resolveForward===!1?a(m,d,h):m,N(c.search,t.u));return{name:u,path:xn(p,d),query:e.admitsUndeclaredQuery()?_:l(_,h,t=>{g!==void 0&&e.pathNames(u)!==void 0&&g(u,t)})}}function R(e,t){return t.buildPath(e.name,e.path,e.query)}const Rn=Object.freeze;function zn(e,n){let r={name:e.name,params:e.path,search:e.query,path:n,context:{},transition:t.s};return Rn(r.params),r}function Bn(e,t){return yn(zn(e,t))}function Vn(e,t){return zn(e,t)}var Hn=class{#e;#t;get(){return this.#e.current}getPrevious(){return this.#e.previous}setContext(e){this.#e=e}setDependencies(e){this.#t=e}makeState(n,r,i,a){let o=this.#t.port(),s=L(o,n,r??t.l,i,{resolveForward:!1});return e._(`makeState`,s.name,s.path,o.queryNames(s.name)),Bn(s,a??R(s,o))}areStatesEqual(e,t,n=!0){if(!e||!t)return!!e==!!t;let r=e.name;return r===t.name?n?vn(e.params,t.params,this.#t.getUrlParams(r)):_n(e.params,t.params)&&_n(e.search,t.search):!1}};const Un=Object.keys,Wn={[t.g.ROUTER_START]:t.h.ROUTER_START,[t.g.ROUTER_STOP]:t.h.ROUTER_STOP,[t.g.TRANSITION_SUCCESS]:t.h.TRANSITION_SUCCESS,[t.g.TRANSITION_START]:t.h.TRANSITION_START,[t.g.TRANSITION_LEAVE_APPROVE]:t.h.TRANSITION_LEAVE_APPROVE,[t.g.TRANSITION_ERROR]:t.h.TRANSITION_ERROR,[t.g.TRANSITION_CANCEL]:t.h.TRANSITION_CANCEL},Gn=Un(Wn),Kn=`router.usePlugin`;function qn(e){if(!(e&&typeof e==`object`)||Array.isArray(e))throw TypeError(`[router.usePlugin] Plugin factory must return an object, got ${typeof e}`);if(typeof e.then==`function`)throw TypeError(`[router.usePlugin] Async plugin factories are not supported. Factory returned a Promise instead of a plugin object.`)}const Jn=Object.freeze;var Yn=class e{#e=new Set;#t=new Set;#n;static validatePlugin(e){qn(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(Kn,`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(Kn,`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(Kn,`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),Jn(n);let r=[];for(let e of Gn)e in n&&(typeof n[e]==`function`?(r.push(this.#n.addEventListener(Wn[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 z=Object.create,Xn=()=>!0,Zn=()=>!1,Qn=()=>Xn,$n=()=>Zn;function er(e){return e?Qn:$n}function tr(e,t,n){n===void 0?e.delete(t):e.set(t,n)}var nr=class{#e=new Map;#t=new Map;#n=new Map;#r=new Map;#i=new Map;#a=new Map;#o=new Map;#s=new Map;#c=new Map;#l=new Map;#u=[this.#i,this.#a];#d;setDependencies(e){this.#d=e}getHandlerCount(e){let t=e===`activate`?this.#e:this.#n,n=e===`activate`?this.#t:this.#r;if(t.size===0)return n.size;if(n.size===0)return t.size;let r=new Set(t.keys());for(let e of n.keys())r.add(e);return r.size}preflightHandlerLimit(e,t,n){let r=this.#d.getValidator();if(!r)return;let i=(e,t,i)=>{let{definition:a,external:o}=this.#g(e),s=0;for(let e of t)(n?o.has(e):a.has(e)||o.has(e))||s++;if(s===0)return;let c=n?o.size:this.getHandlerCount(e);r.lifecycle.validateHandlerLimit(c+s-1,i)};i(`activate`,e,`canActivate`),i(`deactivate`,t,`canDeactivate`)}addCanActivate(e,t,n,r){this.#f(`activate`,e,t,n,`canActivate`,r)}addCanDeactivate(e,t,n,r){this.#f(`deactivate`,e,t,n,`canDeactivate`,r)}clearCanActivate(e,t){this.#p(`activate`,e,t)}clearCanDeactivate(e,t){this.#p(`deactivate`,e,t)}clearAll(){this.#e.clear(),this.#t.clear(),this.#n.clear(),this.#r.clear(),this.#a.clear(),this.#i.clear(),this.#o.clear(),this.#s.clear(),this.#c.clear(),this.#l.clear()}clearDefinitionGuards(){for(let e of this.#e.keys())this.#c.delete(e),this.#t.has(e)?this.#m(`activate`,e):this.#a.delete(e);for(let e of this.#n.keys())this.#o.delete(e),this.#r.has(e)?this.#m(`deactivate`,e):this.#i.delete(e);this.#e.clear(),this.#n.clear()}getFactories(){let e=z(null),t=z(null);for(let[t,n]of this.#n)e[t]=n;for(let[t,n]of this.#r)e[t]=n;for(let[e,n]of this.#e)t[e]=n;for(let[e,n]of this.#t)t[e]=n;return[e,t]}getFactoriesByOrigin(){let e=z(null),t=z(null),n=z(null),r=z(null);for(let[t,n]of this.#n)e[t]=n;for(let[e,n]of this.#e)t[e]=n;for(let[e,t]of this.#r)n[e]=t;for(let[e,t]of this.#t)r[e]=t;return{definition:[e,t],external:[n,r]}}getFunctions(){return this.#u}canNavigateTo(e,t,n,r){for(let t of e)if(!this.#_(this.#i,t,n,r,`canNavigateTo`))return!1;for(let e of t)if(!this.#_(this.#a,e,n,r,`canNavigateTo`))return!1;return!0}compileGuardFactory(e,t){let n=typeof e==`boolean`?er(e):e,r=this.#d.compileFactory(n);if(typeof r!=`function`)throw TypeError(`[router.${t}] Factory must return a function, got ${typeof r}`);return r}#f(e,t,n,r,i,a){let o=this.#g(e),s=e===`activate`?this.#a:this.#i,c=r?o.definition:o.external,l=r?o.external:o.definition;if(c.has(t)||l.has(t))this.#d.getValidator()?.lifecycle.warnOverwrite(t,e,i);else{let t=this.#d.getValidator();if(t){let n=this.getHandlerCount(e);t.lifecycle.validateHandlerLimit(n,i),t.lifecycle.validateCountThresholds(n+1,i)}}let u=typeof n==`boolean`?er(n):n,d=c.get(t),f=this.#h(e),p=r?f.definition:f.external,m=p.get(t);c.set(t,u);let h=r&&l.has(t);try{let e=a??this.compileGuardFactory(u,i);p.set(t,e),h||s.set(t,e)}catch(n){throw tr(c,t,d),tr(p,t,m),this.#m(e,t),n}}#p(e,t,n){let{definition:r,external:i}=this.#g(e),a=this.#h(e),o=n!==`external`&&r.delete(t),s=n!==`definition`&&i.delete(t);o&&a.definition.delete(t),s&&a.external.delete(t),(o||s)&&this.#m(e,t)}#m(e,t){let n=this.#h(e),r=e===`activate`?this.#a:this.#i,i=n.external.get(t)??n.definition.get(t);if(!i){r.delete(t);return}r.set(t,i)}#h(e){return e===`activate`?{definition:this.#c,external:this.#l}:{definition:this.#o,external:this.#s}}#g(e){return e===`activate`?{definition:this.#e,external:this.#t}:{definition:this.#n,external:this.#r}}#_(e,t,n,r,i){let a=e.get(t);if(!a)return!0;try{let e=a(n,r);return typeof e==`boolean`?e:(this.#d.getValidator()?.lifecycle.warnAsyncGuardSync(t,i),!1)}catch(e){return this.#d.logger.warn(`router.${i}`,`Guard for "${t}" threw — treated as navigation-blocking (returned false)`,e),!1}}};const rr=new Set([`name`,`path`,`children`,`canActivate`,`canDeactivate`,`forwardTo`,`encodeParams`,`decodeParams`,`defaultParams`,`defaultSearch`]),B=Object.create,ir=Object.hasOwn,V=Object.keys;function ar(){return{decoders:B(null),encoders:B(null),defaultParams:B(null),defaultSearch:B(null),forwardMap:B(null),forwardFnMap:B(null)}}function or(e){return V(e.forwardMap).length>0||V(e.forwardFnMap).length>0}function sr(e,t){for(let n of V(t))Object.assign(e[n],t[n])}function cr(e,t){for(let n in e)if(ir(t,n)&&!A(e[n],t[n]))return!1;return!0}function lr(e){return typeof e==`string`?e:`<non-string>`}function ur(e,t){for(let n in e)if(!A(e[n],t[n]))return!1;return!0}function dr(e){let n={name:e.name,path:e.path};return e.children&&t.a(n,`children`,e.children.map(e=>dr(e))),n}function fr(e,t,n){if(n.add(t),e.children)for(let r of e.children)fr(r,`${t}.${r.name}`,n)}function pr(e,t,n=``){for(let r=0;r<e.length;r++){let i=e[r],a=n?`${n}.${i.name}`:i.name;if(a===t){e.splice(r,1);let t=new Set;return fr(i,a,t),t}if(i.children&&t.startsWith(`${a}.`)){let e=pr(i.children,t,a);if(e)return e}}}function mr(e,t){for(let n of V(e))t(n)&&delete e[n]}function hr(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 gr(e){let t=[];for(let n of e)for(let e of n.paramMeta.urlParams)t.push(e);return t}function _r(e,t,n){let r=n.get(t);if(r!==void 0)return r;let i=e.getSegmentsByName(t),a=i?gr(i):[];return n.set(t,a),a}function vr(e,t){return _r(e.matcher,t,e.urlParamsCache)}function yr(e,t,n,r){let i=r.get(t);if(i!==void 0)return i;let a=e.getDeclaredQueryParams(t),o=[];if(a){let r=_r(e,t,n);o=a.filter(e=>!r.includes(e))}return r.set(t,o),o}function br(e,t){return yr(e.matcher,t,e.urlParamsCache,e.queryParamsCache)}function xr(e,t,n){let r=new Map,i=new Map;o(t.defaultParams,t=>yr(e,t,r,i),n)}function Sr(e,t,n=100){let r=String(e),i=new Set,a=[r],o=r;for(;;){let e=t[o];if(!e)break;let r=String(e);if(i.has(r)){let e=a.indexOf(r),t=[...a.slice(e),r];throw Error(`Circular forwardTo: ${t.join(` → `)}`)}if(i.add(o),a.push(r),o=r,a.length>n)throw Error(`forwardTo chain exceeds maximum depth (${n}): ${a.join(` → `)}`)}return o}const Cr=Object.freeze,H=Object.create,wr=Object.entries,U=Object.keys,Tr=Object.defineProperty,Er=Object.fromEntries;function Dr(e,t,n){let r=lt(``,t,e),i=Ut(n);return i.registerTree(r),{tree:r,matcher:i}}function Or(e,t=e.definitions){let n=Dr(t,e.rootPath,e.matcherOptions);e.tree=n.tree,e.matcher=n.matcher,e.urlParamsCache.clear(),e.queryParamsCache.clear()}function kr(e,t){let n=Dr(e.definitions,t,e.matcherOptions);xr(n.matcher,e.config,`setRootPath`),e.rootPath=t,e.tree=n.tree,e.matcher=n.matcher,e.urlParamsCache.clear(),e.queryParamsCache.clear()}function Ar(e,t){Or(e,t),W(e,Nr(e.config))}function jr(e){Mr(e),Or(e,[])}function Mr(e){Object.assign(e.config,ar()),W(e,H(null)),e.routeCustomFields=H(null)}function W(e,t){e.resolvedForwardMap=t,e.hasAnyForward=or(e.config)}function Nr(e){let t=H(null);for(let n of U(e.forwardMap))t[n]=Sr(n,e.forwardMap);return t}function Pr(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 Fr(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}".`)}Pr(e.forwardTo,t),typeof e.forwardTo==`string`?n.forwardMap[t]=e.forwardTo:n.forwardFnMap[t]=e.forwardTo}function Ir(e,t,n,r,i,a,o){let s=Er(wr(e).filter(([e])=>!rr.has(e)));if(U(s).length>0&&(r[t]=Cr(s)),e.canActivate&&i.set(t,e.canActivate),e.canDeactivate&&a.set(t,e.canDeactivate),e.forwardTo&&Fr(e,t,n,o),e.decodeParams){let r=e.decodeParams;n.decoders[t]=e=>r(e)??e}if(e.encodeParams){let r=e.encodeParams;n.encoders[t]=e=>r(e)??e}e.defaultParams&&(n.defaultParams[t]=F(`defaultParams`,e.defaultParams)),e.defaultSearch&&(n.defaultSearch[t]=F(`defaultSearch`,e.defaultSearch))}function Lr(e,t,n,r,i,a,o=``){for(let s of e){let e=o?`${o}.${s.name}`:s.name;Ir(s,e,t,n,r,i,a),s.children&&Lr(s.children,t,n,r,i,a,e)}}function Rr(e){let t=ar();return sr(t,e),t}function zr(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]:zr(n,t,i)}})}function Br(e,t,n){for(let r of e){let e=t?`${t}.${r.name}`:r.name;n(e),r.children&&Br(r.children,e,n)}}function Vr(e,t,n){let r=new Set;Br(e,t,e=>{if(r.has(e))throw Error(`[router.${n}] Duplicate route "${e}" in batch`);r.add(e)})}function Hr(e,t){if($t(e,t),e.startsWith(`@@`))throw Error(`[router.${t}] Route name "${e}" uses the reserved "@@" prefix. Routes with this prefix are internal and cannot be modified through the public API.`)}function Ur(e,t){for(let n of e)Hr(n.name,t),n.children&&Ur(n.children,t)}function Wr(t,n){for(let r of t)e.u(r.name,n),r.children&&Wr(r.children,n)}function Gr(t,n){for(let r of t)e.l(r.name,n),r.children&&Gr(r.children,n)}function Kr(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 qr(e,t,n){if(Ur(t,`addRoute`),Wr(t,`addRoute`),Gr(t,`addRoute`),n!==void 0&&!e.matcher.hasRoute(n))throw Error(`[router.addRoute] Parent route "${n}" does not exist`);Br(t,n??``,t=>{if(e.matcher.hasRoute(t))throw Error(`[router.addRoute] Route "${t}" already exists`)}),Vr(t,n??``,`addRoute`),Kr(t,n??``,`addRoute`)}function Jr({definitions:e,routesForHandlers:t,config:n,routeCustomFields:r,handlerParentName:i,rootPath:a,matcherOptions:o,logger:s}){let c=new Map,l=new Map;Lr(t,n,r,c,l,s,i);let u=Nr(n),{tree:d,matcher:f}=Dr(e,a,o);return{config:n,routeCustomFields:r,pendingCanActivate:c,pendingCanDeactivate:l,tree:d,matcher:f,resolvedForwardMap:u}}function Yr(e,t,n,r){return Jr({definitions:zr(e.definitions,t.map(e=>dr(e)),n===void 0?[]:n.split(`.`)),routesForHandlers:t,config:Rr(e.config),routeCustomFields:Object.assign(H(null),e.routeCustomFields),handlerParentName:n??``,rootPath:e.rootPath,matcherOptions:e.matcherOptions,logger:r})}function Xr(e,t,n,r){return Jr({definitions:e.map(e=>dr(e)),routesForHandlers:e,config:ar(),routeCustomFields:H(null),handlerParentName:``,rootPath:t,matcherOptions:n,logger:r})}function Zr(e,t,n){let r=[];for(let[i,a]of e)r.push([i,a,t(a,n)]);return r}function Qr(e,t){return{activate:Zr(e.pendingCanActivate,t.compileGuard,`canActivate`),deactivate:Zr(e.pendingCanDeactivate,t.compileGuard,`canDeactivate`)}}function $r(e,t,n){let r=e.depsStore,{activate:i,deactivate:a}=n??Qr(t,r);Object.assign(e.config,t.config),e.routeCustomFields=t.routeCustomFields,e.tree=t.tree,e.matcher=t.matcher,e.urlParamsCache.clear(),e.queryParamsCache.clear(),W(e,t.resolvedForwardMap);for(let[e,t,n]of i)r.addActivateGuard(e,t,n);for(let[e,t,n]of a)r.addDeactivateGuard(e,t,n)}function G(e){return e===null?e:e||void 0}function ei(e,t){return t==null?t:F(e,t)}function ti(t,n,r,i){let{forwardTo:a,defaultParams:o,defaultSearch:s,decodeParams:c,encodeParams:l,canActivate:u,canDeactivate:d}=i,f=G(a),p=ei(`defaultParams`,G(o)),m=ei(`defaultSearch`,G(s)),h=G(c),g=G(l),_=G(u),v=G(d);p!=null&&e.g(`updateRoute`,r,p,br(t,r),"this route's `defaultParams`","Move it to `defaultSearch`");let y=f===void 0?void 0:ni(r,f,t.config),b=ri(t,r,i),x=_==null?void 0:n.compileGuardFactory(_,`canActivate`),S=v==null?void 0:n.compileGuardFactory(v,`canDeactivate`);return n.preflightHandlerLimit(x===void 0?[]:[r],S===void 0?[]:[r],!1),b!==void 0&&(U(b).length>0?t.routeCustomFields[r]=Cr(b):delete t.routeCustomFields[r]),y!==void 0&&(t.config.forwardMap=y.forwardMap,t.config.forwardFnMap=y.forwardFnMap,W(t,y.resolved)),ai(t,r,{defaultParams:p,defaultSearch:m,decodeParams:h,encodeParams:g}),oi(n,`activate`,r,_,x),oi(n,`deactivate`,r,v,S),{forwardTo:f,defaultParams:p,defaultSearch:m,decodeParams:h,encodeParams:g}}function ni(e,t,n){Pr(t,e);let r=Object.assign(H(null),n.forwardMap),i=Object.assign(H(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:Nr({...n,forwardMap:r})}}function ri(e,n,r){let i;for(let a of U(r)){if(rr.has(a))continue;let o=r[a];o!==void 0&&(i??={...e.routeCustomFields[n]},o===null?delete i[a]:t.a(i,a,o))}return i}function ii(e,t,n){n!==void 0&&(n===null?delete e[t]:e[t]=n)}function ai(e,t,n){if(ii(e.config.defaultParams,t,n.defaultParams),ii(e.config.defaultSearch,t,n.defaultSearch),n.decodeParams!==void 0){if(n.decodeParams===null)delete e.config.decoders[t];else{let r=n.decodeParams;e.config.decoders[t]=e=>r(e)??e}}if(n.encodeParams!==void 0){if(n.encodeParams===null)delete e.config.encoders[t];else{let r=n.encodeParams;e.config.encoders[t]=e=>r(e)??e}}}function oi(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 si(e,t,n){let r=e;Ur(r,`addRoute`),Wr(r,`constructor`),Gr(r,`constructor`),Vr(r,``,`addRoute`);let i=Xr(r,``,t,n),a={get definitions(){return dt(a.tree)},config:i.config,tree:i.tree,matcher:i.matcher,urlParamsCache:new Map,queryParamsCache:new Map,resolvedForwardMap:i.resolvedForwardMap,hasAnyForward:or(i.config),routeCustomFields:i.routeCustomFields,rootPath:``,matcherOptions:t,depsStore:void 0,lifecycleNamespace:void 0,pendingCanActivate:i.pendingCanActivate,pendingCanDeactivate:i.pendingCanDeactivate};return xr(a.matcher,a.config,`addRoute`),Tr(a,`matcherOptions`,{writable:!1,configurable:!1}),a}const ci=Object.freeze,li=Object.keys,ui=[];Object.freeze(ui);function di(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 fi=new Set([`string`,`number`,`boolean`]);function pi(e){return fi.has(typeof e)}function mi(e,t,n,r){let i=t[e];if(!i||typeof i!=`object`)return!0;for(let e of li(i)){let t=n.params[e],i=r.params[e];if(pi(t)&&pi(i)&&String(t)!==String(i))return!1}return!0}function hi(e,t,n,r,i,a){for(let o=0;o<a;o++){let a=r[o];if(a!==i[o]||!mi(a,e,t,n))return o}return a}const gi=new Map;function K(e){let t=gi.get(e);if(t)return t;let n=_i(e);return ci(n),gi.set(e,n),n}function _i(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]:di(e)}let vi,yi,bi=null,xi,Si,Ci=null;function wi(e,t,n){if(!t)return{intersection:``,toActivate:K(e.name),toDeactivate:ui};let r=n(e.name),i=n(t.name);if(!r&&!i)return{intersection:``,toActivate:K(e.name),toDeactivate:K(t.name)};let a=K(e.name),o=K(t.name),s=Math.min(o.length,a.length),c=hi(r??i,e,t,a,o,s),l;if(c>=o.length)l=ui;else if(c===0&&o.length===1)l=o;else{l=[];for(let e=o.length-1;e>=c;e--)l.push(o[e])}let u=c===0?a:a.slice(c);return{intersection:c>0?o[c-1]:``,toDeactivate:l,toActivate:u}}function Ti(e,t,n){if(bi!==null&&e===vi&&t===yi)return bi;if(Ci!==null&&e===xi&&t===Si)return Ci;let r=wi(e,t,n);return xi=vi,Si=yi,Ci=bi,vi=e,yi=t,bi=r,r}const Ei=Object.freeze,q=Object.hasOwn;function Di(e,t){return{name:t??e.segments.at(-1).fullName,params:e.params,search:e.search,meta:e.meta}}function Oi(e){return e===`preserve`?void 0:e}var ki=class{#e;#t;#n;get#r(){return this.#e.depsStore}constructor(e,t,n){this.#e=si(e,t,n)}static shouldUpdateNode(e,t){return(n,r)=>{if(!(n&&typeof n==`object`&&`name`in n))throw TypeError(`[router.shouldUpdateNode] toState must be valid State object`);if(n.transition?.reload||e===``)return!0;let{intersection:i,toActivate:a,toDeactivate:o}=Ti(n,r,t);return e===i||a.includes(e)?!0:o.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){kr(this.#e,e)}hasRoute(e){return this.#e.matcher.hasRoute(e)}clearRoutes(){jr(this.#e)}buildPath(e,n,r,i){if(e===t.p.UNKNOWN_ROUTE)return typeof n.path==`string`?n.path:``;let a=this.#e.config.encoders[e];if(typeof a==`function`){let t=a({params:{...n},search:{...r}});return this.#e.matcher.buildPath(e,t.params,t.search,this.#c(i))}return this.#e.matcher.buildPath(e,n,r,this.#c(i))}buildPathFromIntent(e,n,r){return e===t.p.UNKNOWN_ROUTE?this.#r.port.buildPath(e,N(n,t.l),r??t.u):R(L(this.#r.port,e,n,r,{resolveForward:!1}),this.#r.port)}matchPath(t,n){let r=n,i=this.#e.matcher.match(t);if(!i)return;let a=Di(i),{name:o}=a,s=I(a.params),c=I(a.search),l=this.#e.config.decoders[o],u;typeof l==`function`?(u=l({params:s,search:c}),this.#r.getValidator()?.routes.validateStateBuilderArgs(o,u.params,`matchPath`),e.g(`matchPath`,o,u.params,this.getQueryParams(o),"the `params` returned by this route's `decodeParams`")):u={params:s,search:c};let d=L(this.#r.port,o,u.params,u.search),f=d.name;e._(`matchPath`,d.name,d.path,this.getQueryParams(d.name));let p=d.path,m=d.query,h=t;if(r.rewritePathOnMatch){let e=this.#e.config.encoders[f],n=typeof e==`function`?e({params:p,search:m}):{params:p,search:m},i=r.trailingSlash;try{h=this.#e.matcher.buildPath(f,n.params,n.search,{trailingSlash:Oi(i),queryParamsMode:r.queryParamsMode}),i===`preserve`&&(h=hr(t,h))}catch{h=t}}return Bn(d,h)}forwardState(e,n,r){let i=r??t.u;if(q(this.#e.config.forwardFnMap,e)){let t=this.#e.config.forwardFnMap[e],{target:r,chain:a,params:o}=this.#l(e,t,n);return this.#s(r,a,o,i)}let a=this.#e.resolvedForwardMap[e]??e;if(a!==e&&q(this.#e.config.forwardFnMap,a)){let t=this.#e.config.forwardFnMap[a],{target:r,chain:o,params:s}=this.#l(a,t,n);return this.#s(r,[...this.#o(e),...o],s,i)}return a===e?{name:e,params:n,search:i}:this.#s(a,this.#o(e),n,i)}buildStateResolved(e,t){let n=this.#e.matcher.getSegmentsByName(e);if(n)return Di({segments:n,params:t,search:{},meta:this.#e.matcher.getMetaByName(e)},e)}isActiveRoute(e,n=t.l,r=t.u,i=!1,a=!0){if(this.#i(e,n,r,i,a))return!0;if(!this.#e.hasAnyForward)return!1;let o;try{o=typeof e==`string`?e:String(e)}catch{return!1}if(!q(this.#e.config.forwardMap,o)&&!q(this.#e.config.forwardFnMap,o))return!1;let s;try{s=this.forwardState(e,n,r)}catch(t){return this.#r.logger.warn(`router.isActiveRoute`,`Dynamic forwardTo of route "${lr(e)}" threw while resolving the active-link destination; treating the link as inactive.`,t),!1}return this.#i(s.name,s.params,s.search,i,a)}getMetaForState(e){return this.#e.matcher.hasRoute(e)?this.#e.matcher.getMetaByName(e):void 0}getUrlParams(e){return vr(this.#e,e)}getQueryParams(e){return br(this.#e,e)}getStore(){return this.#e}getPort(){return this.#r.port}#i(e,t,n,r,i){try{return this.#a(e,t,n,r,i)}catch(t){return this.#r.logger.warn(`router.isActiveRoute`,`Reading the arguments for route "${lr(e)}" threw while resolving the active-link state; treating the link as inactive.`,t),!1}}#a(e,t,n,r,i){let a=this.#r.getState();if(!a)return!1;let o=a.name;if(o!==e&&!o.startsWith(`${e}.`)&&!e.startsWith(`${o}.`))return!1;let s=L(this.#r.port,e,t,n,{resolveForward:!1});if(r||o===e){let e=Vn(s,``);return!this.#r.areStatesEqual(e,a,!0)||!cr(s.path,a.params)?!1:i||_n(e.search,a.search)}return!(!o.startsWith(`${e}.`)||!cr(s.path,a.params)||!i&&!ur(s.query,a.search))}#o(e){let t=[],n=e;for(;q(this.#e.config.forwardMap,n);)t.push(n),n=this.#e.config.forwardMap[n];return t}#s(e,n,r,i){let a,o;for(let e of n)a=k(this.#e.config.defaultParams[e],a),o=k(this.#e.config.defaultSearch[e],o);return{name:e,params:N(k(a,r),t.l),search:N(k(o,i),t.u)}}#c(e){return this.#t?(e!==this.#n&&this.#r.logger.warn(`router.buildPath`,"`options` differs from the cached source reference; router options are immutable per router instance, so the first-cached buildPath options are reused (#957)."),this.#t):(this.#n=e,this.#t=Ei({trailingSlash:Oi(e?.trailingSlash),queryParamsMode:e?.queryParamsMode}),this.#t)}#l(e,t,n){let r=P(n),i=new Set([e]),a=[e],o=t(this.#r.getDependency,r),s=0;if(typeof o!=`string`)throw TypeError(`forwardTo callback must return a string, got ${typeof o}`);for(;s<100;){if(this.#e.matcher.getSegmentsByName(o)===void 0)throw Error(`Route "${o}" does not exist`);if(i.has(o)){let e=[...i,o].join(` → `);throw Error(`Circular forwardTo: ${e}`)}if(i.add(o),q(this.#e.config.forwardFnMap,o)){let e=this.#e.config.forwardFnMap[o];a.push(o),o=e(this.#r.getDependency,r),s++;continue}let e=this.#e.config.forwardMap[o];if(e!==void 0){a.push(o),o=e,s++;continue}return{target:o,chain:a,params:r}}throw Error(`forwardTo exceeds maximum depth of 100`)}};const Ai=new n.t(t.m.ROUTER_NOT_STARTED),ji=new n.t(t.m.ROUTE_NOT_FOUND),Mi=new n.t(t.m.SAME_STATES),Ni=new n.t(t.m.ROUTER_NOT_STARTED,{message:`[router] cannot commit before the start navigation does — the boot would overwrite it; defer with queueMicrotask/await, or navigate after start() resolves`});Object.freeze(Ai),Object.freeze(ji),Object.freeze(Mi),Object.freeze(Ni);const Pi=Promise.reject(Ai),Fi=Promise.reject(ji),Ii=Promise.reject(Mi),Li=Promise.reject(Ni);Pi.catch(()=>{}),Fi.catch(()=>{}),Ii.catch(()=>{}),Li.catch(()=>{});const Ri=new Set([t.m.SAME_STATES,t.m.TRANSITION_CANCELLED,t.m.ROUTER_NOT_STARTED,t.m.ROUTE_NOT_FOUND,t.m.CANNOT_ACTIVATE,t.m.CANNOT_DEACTIVATE,t.m.ROUTER_ALREADY_STARTED]);function zi(e){return e instanceof n.t&&Ri.has(e.code)}const Bi=new Set([Pi,Fi,Ii,Li]),J=Object.freeze;function Vi(e){let{fromState:t,toDeactivate:n,toActivate:r,intersection:i}=e;J(n),J(r);let a={phase:`activating`,reason:`success`,segments:J({deactivated:n,activated:r,intersection:i})};return t?.name!==void 0&&(a.from=t.name),e.reload!==void 0&&(a.reload=e.reload),e.replace!==void 0&&(a.replace=e.replace),e.redirected!==void 0&&(a.redirected=e.redirected),J(a)}function Hi(e,r){let{toState:i,fromState:a,toDeactivate:o,toActivate:s}=r;if(i.name!==t.p.UNKNOWN_ROUTE&&!e.hasRoute(i.name)){let o=new n.t(t.m.ROUTE_NOT_FOUND,{routeName:i.name});throw e.sendTransitionFail(a,o,r),n.n(o)}let c=r;i.transition=Vi(r);let l=J(i),u=e.canCommitTransition(c);if(!u)throw n.n(new n.t(t.m.TRANSITION_CANCELLED));for(let t of o)!s.includes(t)&&r.canDeactivateFunctions.has(t)&&e.clearCanDeactivate(t,u);return e.sendTransitionDone(c),l}const Ui=Object.entries;function Wi(e){return e instanceof n.t&&e.code===t.m.TRANSITION_CANCELLED}function Gi(e){return Wi(e)?e:new n.t(t.m.TRANSITION_CANCELLED,{reason:e})}function Ki(e,n,r,i){let a=n;a.code!==t.m.TRANSITION_CANCELLED&&a.code!==t.m.ROUTE_NOT_FOUND&&e.sendTransitionFail(r,a,i)}function qi(e,r,i){if(e instanceof DOMException&&e.name===`AbortError`)throw n.n(new n.t(t.m.TRANSITION_CANCELLED));if(Wi(e))throw e;Ji(e,r,i)}function Ji(e,t,r){if(e instanceof n.t){let{code:r,message:i,...a}=e.toJSON(),o=new n.t(r,{...a,message:i});throw o.setCode(t),o.stack=e.stack??``,n.n(o)}throw n.n(new n.t(t,Xi(e,r)))}const Yi=new Set([`code`,`segment`,`path`,`then`]);function Xi(e,n){let r={segment:n};if(e instanceof Error){let t=e.message,n=e.stack,i=`cause`in e?e.cause:void 0;return{...r,message:t,stack:n,...i!==void 0&&{cause:i}}}if(e&&typeof e==`object`){let n={};for(let[r,i]of Ui(e))r!==`__proto__`&&!Yi.has(r)&&t.a(n,r,i);return{...r,...n}}return r}async function Zi(e,t,r){let i;try{i=await e}catch(e){qi(e,t,r);return}if(!i)throw n.n(new n.t(t,{segment:r}))}function Qi(e,r,i,a,o,s,c,l,u,d){if(!u())throw n.n(new n.t(t.m.TRANSITION_CANCELLED));if(e===1){let t=d();return t===void 0?void 0:{phase:e,index:r+1,pending:t}}let f=i[r],p=a.get(f);if(!p)return;let m=!1;try{m=p(s,c,l)}catch(e){qi(e,o,f)}if(m instanceof Promise)return{phase:e,index:r+1,pending:m};if(!m)throw n.n(new n.t(o,{segment:f}))}function $i(e,n,r,i,a,o,s,c,l,u,d,f,p){let m=e===1,h=e===0;if(!m&&!(h?s:c))return;let g=h?a:o,_=m?1:g.length,v=h?r:i,y=h?t.m.CANNOT_DEACTIVATE:t.m.CANNOT_ACTIVATE;for(let t=n;t<_;t++){let n=Qi(e,t,g,v,y,l,u,d,f,p);if(n!==void 0)return n}}function ea(e,t,n,r,i,a,o,s,c,l,u,d,f){for(let p=d;p<=2;p++){let m=$i(p,p===d?f:0,e,t,n,r,i,a,o,s,c,l,u);if(m!==void 0)return m}}async function ta(e,n,r,i,a,o,s,c,l,u,d,f){let p=e;for(;p!==void 0;){if(p.phase===1)await p.pending;else{let e=p.phase===0;await Zi(p.pending,e?t.m.CANNOT_DEACTIVATE:t.m.CANNOT_ACTIVATE,(e?i:a)[p.index-1])}p=ea(n,r,i,a,o,s,c,l,u,d,f,p.phase,p.index)}}function na(e,t,n,r,i,a,o,s,c,l,u){let d=ea(e,t,n,r,i,a,o,s,c,l,u,0,0);return d===void 0?void 0:ta(d,e,t,n,r,i,a,o,s,c,l,u)}const ra=Object.freeze,ia=Object.freeze([]),aa=new Map;function oa(e,t){return t?ra({...e,replace:!0}):e}function sa(e,t,n,r){return!!e&&!t&&!n&&e.path===r.path}function ca(e,t){if(e.size===0)return!1;for(let n of t)if(e.has(n))return!0;return!1}function la(e){let t=e.controller;if(t!==void 0)return t;let n=new AbortController;return e.cancelReason!==void 0&&n.abort(e.cancelReason),e.controller=n,n}function ua(e,t){t.externalSignal!==void 0&&t.cancelReason===void 0&&t.hasGuards&&e.bridgeExternalSignal(t)}function da(e,r,i,a,o,s,c,l,u,d){va(e,s);let f=e.hasLeaveListeners()||e.hasPreCommitListeners(),p={toState:r,fromState:i,opts:a,suspendable:o!==void 0||f,forceDeactivate:d,toDeactivate:ia,toActivate:ia,intersection:``,canDeactivateFunctions:aa,canActivateFunctions:aa,shouldDeactivate:!1,shouldActivate:!1,hasGuards:!1,controller:void 0,cancelReason:void 0,detachExternalBridge:void 0,externalSignal:o,reload:c,replace:l,redirected:u};if(!e.startTransition(p))throw n.n(new n.t(t.m.TRANSITION_CANCELLED));return p}function fa(e,t){return e.sendLeaveApprove(t),Hi(e,t)}function pa(e,n){let[r,i]=e.getLifecycleFunctions(),{toDeactivate:a,toActivate:o,intersection:s}=Ti(n.toState,n.fromState,t=>e.getMetaForState(t));n.canDeactivateFunctions=r,n.canActivateFunctions=i,n.toDeactivate=a,n.toActivate=o,n.intersection=s,n.shouldDeactivate=!!n.fromState&&!n.forceDeactivate&&a.length>0,n.shouldActivate=n.toState.name!==t.p.UNKNOWN_ROUTE&&o.length>0,n.hasGuards=n.shouldDeactivate&&ca(r,a)||n.shouldActivate&&ca(i,o)}function ma(e,r,i){let a,o;try{a=e.getState();let s=Cn(i),c=s?.aborted===!0?s:void 0;i=wn(i);let l=M(i,`reload`),u=M(i,`force`),d=M(i,`replace`),f=M(i,`redirected`),p=M(i,`forceDeactivate`)===!0,m=a?.name===t.p.UNKNOWN_ROUTE&&!d,h=m||d;if(i=oa(i,m),sa(a,l,u,r))return e.emitTransitionError(r,a,Mi),Ii;let g=da(e,r,a,i,s,c,l,h,f,p);o=g;let _=g.externalSignal;if(_?.aborted===!0&&e.cancelNavigation(_.reason),pa(e,g),ua(e,g),!g.hasGuards&&!g.suspendable)return fa(e,g);let{canDeactivateFunctions:v,canActivateFunctions:y,toDeactivate:b,toActivate:x,shouldDeactivate:S,shouldActivate:ee,hasGuards:C}=g,te=r;if(!C){let t=_a(e,g);if(t!==void 0)return t}if(C){let i=la(g),o=()=>!i.signal.aborted,s=i.signal,c=na(v,y,b,x,S,ee,r,a,s,o,()=>{if(e.sendLeaveApprove(g),e.hasLeaveListeners())return e.awaitLeaveListeners(te,a,s)});if(c!==void 0)return ha(e,c,g,i);if(!o())throw n.n(new n.t(t.m.TRANSITION_CANCELLED))}return Hi(e,g)}catch(t){let n=ga(e,t,{nav:o,fromState:a});return Promise.reject(n)}}async function ha(e,r,i,a){let o=()=>!a.signal.aborted,s=i.externalSignal,c,l=!1,u,d=new Promise(e=>{if(a.signal.aborted){e();return}c=()=>{e()},a.signal.addEventListener(`abort`,c,{once:!0})});r.catch(()=>{});try{if(s?.aborted)throw n.n(new n.t(t.m.TRANSITION_CANCELLED,{reason:s.reason}));if(await Promise.race([r,d]),!o())throw n.n(new n.t(t.m.TRANSITION_CANCELLED));let a=Hi(e,i);return l=!0,a}catch(t){let n=o()?t:Gi(t);throw u=n,Ki(e,n,i.fromState,i),n}finally{c&&a.signal.removeEventListener(`abort`,c),l||a.abort(u)}}function ga(e,t,n){let{nav:r}=n;if(r?.controller?.abort(t),r!==void 0){let i=e.isTransitioning()?t:Gi(t);return Ki(e,i,n.fromState,r),i}return t}function _a(e,t){let{toState:n,fromState:r}=t;if(e.hasLeaveListeners()&&la(t),e.sendLeaveApprove(t),e.hasLeaveListeners()){let i=la(t),a;try{a=e.awaitLeaveListeners(n,r,i.signal)}catch(e){throw i.abort(e),e}return a===void 0?void 0:ha(e,a,t,i)}}function va(e,r){if(e.isTransitioning()&&(e.logger.warn(`router.navigate`,`Concurrent navigation detected on shared router instance. For SSR, use cloneRouter() to create isolated instance per request.`),e.cancelNavigation()),r!==void 0)throw n.n(new n.t(t.m.TRANSITION_CANCELLED,{reason:r.reason}))}const ya=Object.freeze,ba=Object.freeze([t.p.UNKNOWN_ROUTE]),xa=Object.freeze({replace:!0});function Sa(e,r,i){va(e,void 0);let a=e.getState(),o=a?K(a.name).toReversed():[];ya(o);let s={deactivated:o,activated:ba,intersection:``};ya(s);let c={phase:`activating`,...a&&{from:a.name},reason:`success`,replace:!0,segments:s};ya(c);let l={name:t.p.UNKNOWN_ROUTE,params:t.l,search:t.u,path:r,transition:c,context:{}};if(ya(l),i&&a!==void 0&&!e.canDeactivateCurrent(o,l,a)){let i=new n.t(t.m.CANNOT_DEACTIVATE,{path:r,message:`[router.navigateToNotFound] a canDeactivate guard on "${a.name}" refused to leave for ${r}`});throw e.emitTransitionError(void 0,a,i),n.n(i)}return e.systemCommit(l,a,xa)}function Ca(e,t){return Sa(e,t,!0)}function wa(e,t){return Sa(e,t,!1)}var Ta=class{#e;#t;#n=0;setDependencies(e){this.#e=e,this.#t=t=>{zi(t)||e.logger.error(`router.navigate`,`Unexpected navigation error`,t)}}navigate(e,t,n,r){return this.#r(this.#i(e,t,n,r))}navigateToState(e,t){return this.#r(this.#a(e,t))}navigateToDefault(e){return this.#r(this.#s(e))}navigateToNotFound(e){return Ca(this.#e,e)}revalidateToNotFound(e){return wa(this.#e,e)}isPreparing(){return this.#n>0}#r(e){return e instanceof Promise&&!Bi.has(e)&&e.catch(this.#t),e}#i(e,t,n,r){let i=this.#e;if(!i.canNavigate())return i.isStarting()?Li:Pi;let a;this.#n++;try{a=i.buildNavigateState(e,t,n)}catch(e){return Promise.reject(e)}finally{this.#n--}return a?ma(this.#e,a,r):(i.emitTransitionError(void 0,i.getState(),ji),Fi)}#a(r,i){let a=this.#e;if(!a.canNavigate())return a.isStarting()?Li:Pi;let o=r.name;if(o!==t.p.UNKNOWN_ROUTE&&!a.hasRoute(o)){let e=new n.t(t.m.ROUTE_NOT_FOUND,{routeName:o});return a.emitTransitionError(void 0,a.getState(),e),Promise.reject(e)}let s=e.v(r.params,a.getQueryParams(o));if(s!==void 0){let r=new n.t(t.m.WRONG_CHANNEL,{routeName:o,message:`[router.navigateToState] ${e.y(o,s,"`state.params`")}`});return a.emitTransitionError(void 0,a.getState(),r),Promise.reject(r)}let c;try{c=this.#o(r,o)}catch(e){return Promise.reject(e)}return ma(this.#e,c,i)}#o(e,n){return{name:n,params:j(e.params,t.l),search:j(e.search,t.u),path:e.path,context:{...e.context},transition:t.s}}#s(e){let r=this.#e;if(!r.getOptions().defaultRoute)return Promise.reject(new n.t(t.m.ROUTE_NOT_FOUND,{routeName:`defaultRoute not configured`}));let i,a,o;this.#n++;try{({route:i,params:a,search:o}=r.resolveDefault())}catch(e){return Promise.reject(e)}finally{this.#n--}return i?typeof i==`string`?this.#i(i,a,o,e):Promise.reject(new n.t(t.m.ROUTE_NOT_FOUND,{routeName:`defaultRoute did not resolve to a route name`})):Promise.reject(new n.t(t.m.ROUTE_NOT_FOUND,{routeName:`defaultRoute resolved to empty`}))}};const Ea={},Da=Object.freeze({replace:!0});function Oa(e){return[e,e?.reason].some(e=>e instanceof n.t&&e.code===t.m.ROUTE_NOT_FOUND)}var ka=class{#e;setDependencies(e){this.#e=e}async start(e){let r=this.#e;if(r.isIdle())throw n.n(new n.t(t.m.TRANSITION_CANCELLED));let i=r.getOptions();if(typeof e!=`string`)throw TypeError(`[router.start] path must be a string, got ${typeof e}`);let a=r.matchPath(e);if(!a&&!i.allowNotFound){let r=new n.t(t.m.ROUTE_NOT_FOUND,{path:e});throw n.n(r)}if(r.completeStart(),a)try{return await r.navigateToState(a,Da)}catch(t){if(!i.allowNotFound||!Oa(t))throw t;return r.navigateToNotFound(e)}return r.navigateToNotFound(e)}};const Aa={},ja=Object.create,Ma=Object.entries,Na=Object.hasOwn,Pa=Object.values,Fa=new WeakMap;function Ia(e,t,n){if(typeof n==`string`)return{target:n,when:void 0,update:void 0};let r=n.when,i=n.update;if(r!==void 0&&typeof r!=`function`)throw Error(`[FSM.constructor] transitions["${e}"]["${t}"].when is not a function`);if(i!==void 0&&typeof i!=`function`)throw Error(`[FSM.constructor] transitions["${e}"]["${t}"].update is not a function`);return{target:n.target,when:r,update:i}}function La(e){let t=Fa.get(e);if(t!==void 0)return t;let n=e,r=ja(null);for(let[e,t]of Ma(n)){let n=ja(null);for(let[r,i]of Ma(t))i!==void 0&&(n[r]=Ia(e,r,i));r[e]=n}for(let e of Pa(r))for(let t of Pa(e))if(t!==void 0&&r[t.target]===void 0)throw Error(`[FSM.constructor] state "${t.target}" is not declared in config.transitions`);return Fa.set(e,r),r}var Ra=class{#e;#t;#n=0;#r=null;#i;#a;#o=[];constructor(e){let t=e.initial;if(this.#e=t,this.#i=e.context,this.#a=La(e.transitions),this.#a[t]===void 0)throw Error(`[FSM.constructor] state "${t}" is not declared in config.transitions`);this.#t=this.#a[t]}send(e,t){let n=this.#t[e];if(n===void 0)return this.#e;let r=t,i=n.when;if(i!==void 0&&!i(this.#i,r))return this.#e;let a=n.target,o=n.update,s=this.#e;if(this.#e=a,this.#t=this.#a[a],o?.(this.#i,r),this.#r!==null){let t=this.#r.get(s)?.get(e);t!==void 0&&t(r)}if(this.#n>0){let t={from:s,to:a,event:e,payload:r};for(let e of this.#o)e!==null&&e(t)}return this.#e}canSend(e,t){let n=this.#t[e];return n===void 0?!1:n.when===void 0||n.when(this.#i,t)}getState(){return this.#e}getContext(){return this.#i}on(e,t,n){let r=this.#a[e];if(r===void 0)throw Error(`[FSM.on] state "${e}" is not declared in config.transitions`);if(!Na(r,t))throw Error(`[FSM.on] event "${t}" has no edge from state "${e}"`);this.#r??=new Map;let i=this.#r.get(e);i||(i=new Map,this.#r.set(e,i));let a=n;return i.set(t,a),()=>{let n=this.#r?.get(e);n?.get(t)===a&&n.delete(t)}}onTransition(e){let t=this.#o.indexOf(null),n;t===-1?(n=this.#o.length,this.#o.push(e)):(this.#o[t]=e,n=t),this.#n++;let r=!0;return()=>{r&&(r=!1,this.#o[n]=null,this.#n--)}}};const Y={IDLE:`IDLE`,STARTING:`STARTING`,READY:`READY`,TRANSITION_STARTED:`TRANSITION_STARTED`,LEAVE_APPROVED:`LEAVE_APPROVED`,DISPOSED:`DISPOSED`},X={START:`START`,STARTED:`STARTED`,NAVIGATE:`NAVIGATE`,LEAVE_APPROVE:`LEAVE_APPROVE`,COMPLETE:`COMPLETE`,FAIL:`FAIL`,CANCEL:`CANCEL`,STOP:`STOP`,DISPOSE:`DISPOSE`,SYSTEM_COMMIT:`SYSTEM_COMMIT`};function za(){return{inflight:void 0,current:void 0,previous:void 0}}const Ba=(e,t)=>t?.nav===void 0||t.nav===e.inflight,Va=(e,t)=>t!==void 0&&t===e.inflight&&t.externalSignal?.aborted!==!0,Ha=(e,t)=>{e.previous=e.current,e.current=yn(t)},Ua=(e,t)=>{Ha(e,t.toState),e.inflight=void 0},Wa=(e,t)=>{Ha(e,t.toState)},Ga=e=>{e.previous=e.current,e.current=void 0},Z=e=>{e.current=void 0,e.previous=void 0,e.inflight=void 0},Ka=(e,t)=>{e.inflight=t},qa={[Y.IDLE]:{[X.START]:Y.STARTING,[X.DISPOSE]:{target:Y.DISPOSED,update:Z}},[Y.STARTING]:{[X.STARTED]:Y.READY,[X.FAIL]:Y.IDLE,[X.STOP]:{target:Y.IDLE,update:Ga},[X.DISPOSE]:{target:Y.DISPOSED,update:Z}},[Y.READY]:{[X.NAVIGATE]:{target:Y.TRANSITION_STARTED,update:Ka},[X.SYSTEM_COMMIT]:{target:Y.READY,update:Wa},[X.STOP]:{target:Y.IDLE,update:Ga},[X.DISPOSE]:{target:Y.DISPOSED,update:Z}},[Y.TRANSITION_STARTED]:{[X.NAVIGATE]:{target:Y.TRANSITION_STARTED,update:Ka},[X.LEAVE_APPROVE]:Y.LEAVE_APPROVED,[X.CANCEL]:Y.READY,[X.FAIL]:{target:Y.READY,when:Ba},[X.DISPOSE]:{target:Y.DISPOSED,update:Z}},[Y.LEAVE_APPROVED]:{[X.NAVIGATE]:{target:Y.TRANSITION_STARTED,update:Ka},[X.COMPLETE]:{target:Y.READY,when:Va,update:Ua},[X.CANCEL]:Y.READY,[X.FAIL]:{target:Y.READY,when:Ba},[X.DISPOSE]:{target:Y.DISPOSED,update:Z}},[Y.DISPOSED]:{}};function Ja(){return new Ra({initial:Y.IDLE,context:za(),transitions:qa})}const Ya=Object.freeze,Xa=`TREE_CHANGED`;function Za(e){return e instanceof Error?e:Error(String(e))}function Qa(e,r,i){return new Promise((a,o)=>{let s=()=>{let e=i.reason;o(e instanceof n.t&&e.code===t.m.TRANSITION_CANCELLED?e:new n.t(t.m.TRANSITION_CANCELLED,{reason:e}))};if(i.aborted){s();return}i.addEventListener(`abort`,s,{once:!0}),Promise.allSettled(e).then(e=>{if(i.removeEventListener(`abort`,s),i.aborted)return;if(r!==void 0){o(Za(r));return}let t=e.find(e=>e.status===`rejected`);if(t!==void 0){o(Za(t.reason));return}a()})})}function $a(e,t,n){return e.addEventListener(`abort`,t,{once:!0}),()=>{n(),e.removeEventListener(`abort`,t)}}var eo=class{#e;#t;#n;#r=[];#i=0;constructor(e){this.#e=e.routerFSM,this.#t=e.emitter,this.#s()}static validateSubscribeListener(e){if(typeof e!=`function`)throw TypeError(`[router.subscribe] Expected a function. For Observable pattern use observable(router) from @real-router/rx`)}static validateSubscribeLeaveListener(e){if(typeof e!=`function`)throw TypeError(`[router.subscribeLeave] Expected a function`)}emitRouterStart(){this.#i++;try{this.#t.emit(t.h.ROUTER_START)}finally{this.#i--}}emitRouterStop(){this.#t.emit(t.h.ROUTER_STOP)}emitTransitionStart(e,n,r){this.#i++;try{this.#t.emit(t.h.TRANSITION_START,e,n)}finally{this.#i--}}emitTransitionSuccess(e,n,r){this.#i++;try{this.#t.emit(t.h.TRANSITION_SUCCESS,e,n,r)}finally{this.#i--}}emitTransitionError(e,n,r){this.#i++;try{this.#t.emit(t.h.TRANSITION_ERROR,e,n,r)}finally{this.#i--}}emitTransitionCancel(e,n){this.#i++;try{this.#t.emit(t.h.TRANSITION_CANCEL,e,n)}finally{this.#i--}}emitTransitionLeaveApprove(e,n){this.#i++;try{this.#t.emit(t.h.TRANSITION_LEAVE_APPROVE,e,n)}finally{this.#i--}}isProcessing(){return this.#i>0}emitTreeChanged(e){this.#t.emit(Xa,e)}isEmittingTreeChanged(){return this.#t.isDispatching(Xa)}subscribeTreeChanged(e){if(this.isDisposed())throw n.n(new n.t(t.m.ROUTER_DISPOSED));return this.#t.on(Xa,t=>{e(t)})}treeChangedListenerCount(){return this.#t.listenerCount(Xa)}sendStart(){this.#e.send(X.START)}sendStop(){this.#e.send(X.STOP)}sendDispose(){this.#e.send(X.DISPOSE)}sendStarted(){this.#e.send(X.STARTED)}sendNavigate(e){return this.#e.send(X.NAVIGATE,e)===Y.TRANSITION_STARTED}canCommitTransition(e){return this.#e.canSend(X.COMPLETE,e)}sendComplete(e){this.#e.send(X.COMPLETE,e)}sendLeaveApprove(e){this.#e.send(X.LEAVE_APPROVE,e)}sendFail(e,t,n){this.#e.send(X.FAIL,{nav:n,fromState:e,error:t})}sendCancel(e,t){this.#e.send(X.CANCEL,{fromState:e,reason:t})}systemCommit(e){let{toState:n}=e,r=n.transition,i={name:n.name,params:j(n.params,t.l),search:j(n.search,t.u),path:n.path,context:{...n.context},...r!==void 0&&{transition:j(r,t.l)}};if(!this.#e.canSend(X.SYSTEM_COMMIT))throw this.#o();return this.#e.send(X.SYSTEM_COMMIT,{...e,toState:i}),i}canBeginTransition(){return this.#e.canSend(X.NAVIGATE)}canStart(){return this.#e.canSend(X.START)}canCancel(){return this.#e.canSend(X.CANCEL)}isActive(){let e=this.#e.getState();return e!==Y.IDLE&&e!==Y.DISPOSED}isDisposed(){return this.#e.getState()===Y.DISPOSED}isTransitioning(){let e=this.#e.getState();return e===Y.TRANSITION_STARTED||e===Y.LEAVE_APPROVED}isLeaveApproved(){return this.#e.getState()===Y.LEAVE_APPROVED}isReady(){return this.#e.getState()===Y.READY}isStarting(){return this.#e.getState()===Y.STARTING}isIdle(){return this.#e.getState()===Y.IDLE}addEventListener(e,t){return this.#a(e,`addEventListener`),this.#t.on(e,t)}subscribe(e){if(this.isDisposed())throw n.n(new n.t(t.m.ROUTER_DISPOSED));return this.#a(t.h.TRANSITION_SUCCESS,`subscribe`),this.#t.on(t.h.TRANSITION_SUCCESS,(t,n)=>e({route:t,previousRoute:n}))}subscribeLeave(e){if(this.isDisposed())throw n.n(new n.t(t.m.ROUTER_DISPOSED));this.#r.push(e);let r=!1;return()=>{if(r)return;r=!0;let t=this.#r.indexOf(e);t!==-1&&this.#r.splice(t,1)}}hasLeaveListeners(){return this.#r.length>0}hasPreCommitListeners(){return this.#t.listenerCount(t.h.TRANSITION_START)>0||this.#t.listenerCount(t.h.TRANSITION_LEAVE_APPROVE)>0}awaitLeaveListeners(e,t,n){if(t===void 0)return;let r=Ya({route:t,nextRoute:e,signal:n}),i,a,o=[...this.#r];this.#i++;try{for(let e of o)try{let t=e(r);t!==void 0&&typeof t.then==`function`&&(i??=[],i.push(t))}catch(e){a===void 0&&(a=e)}}finally{this.#i--}if(i===void 0){if(a!==void 0)throw Za(a);return}return Qa(i,a,n)}clearAll(){this.#t.clearAll(),this.#r.length=0}setLimits(e){this.#t.setLimits(e)}setValidatorAccessor(e){this.#n=e}sendCancelIfPossible(e,t){this.canCancel()&&this.sendCancel(e,t)}bridgeExternalSignal(e){let t=e.externalSignal;return t===void 0||e.detachExternalBridge!==void 0||(e.detachExternalBridge=$a(t,()=>{this.sendCancelIfPossible(this.#e.getContext().current,t.reason)},()=>{e.detachExternalBridge=void 0})),Aa}#a(e,t){let n=this.#n?.();n&&n.eventBus.validateCountThresholds(this.#t.listenerCount(e)+1,e,t)}#o(){if(this.isDisposed())return new n.t(t.m.ROUTER_DISPOSED);let e;return e=this.isTransitioning()?`[router] cannot commit a state while a transition is in flight — the navigation in progress commits its own`:this.isStarting()?`[router] cannot commit before the start navigation does — the boot would overwrite it; await start() first`:`[router] cannot commit a state before the router has started`,new n.t(t.m.ROUTER_NOT_STARTED,{message:e})}#s(){let e=this.#e;e.on(Y.STARTING,X.STARTED,()=>{this.emitRouterStart()}),e.on(Y.READY,X.STOP,()=>{this.emitRouterStop()});let r=e=>{let t=e.externalSignal!==void 0&&(this.hasLeaveListeners()||this.hasPreCommitListeners())?this.bridgeExternalSignal(e):Aa;this.emitTransitionStart(e.toState,e.fromState,t)};e.on(Y.READY,X.NAVIGATE,r),e.on(Y.TRANSITION_STARTED,X.NAVIGATE,r),e.on(Y.LEAVE_APPROVED,X.NAVIGATE,r),e.on(Y.TRANSITION_STARTED,X.LEAVE_APPROVE,e=>{this.emitTransitionLeaveApprove(e.toState,e.fromState)}),e.on(Y.LEAVE_APPROVED,X.COMPLETE,e=>{e.detachExternalBridge?.(),this.emitTransitionSuccess(e.toState,e.fromState,e.opts)});let i=e=>{let{fromState:r,reason:i}=e,a=this.#e.getContext().inflight,o=i??new n.t(t.m.TRANSITION_CANCELLED);a.cancelReason=o,a.controller?.abort(o),a.detachExternalBridge?.(),this.emitTransitionCancel(a.toState,r)};e.on(Y.TRANSITION_STARTED,X.CANCEL,i),e.on(Y.LEAVE_APPROVED,X.CANCEL,i),e.on(Y.READY,X.SYSTEM_COMMIT,e=>{this.emitTransitionSuccess(e.toState,e.fromState,e.opts)});let a=e=>{let t=this.#e.getContext().inflight;t?.detachExternalBridge?.(),this.emitTransitionError(t?.toState,e.fromState,e.error)};e.on(Y.LEAVE_APPROVED,X.FAIL,a),e.on(Y.TRANSITION_STARTED,X.FAIL,a),e.on(Y.STARTING,X.FAIL,e=>{this.emitTransitionError(void 0,e.fromState,e.error)})}};const to=new n.t(t.m.ROUTER_ALREADY_STARTED);Object.freeze(to);const no={maxListeners:0,warnListeners:0};var ro=class{#e=new Map;#t=new Set;#n=null;#r=no;#i;#a;constructor(e){e?.limits&&(this.#r=e.limits),this.#i=e?.onListenerError??null,this.#a=e?.onListenerWarn??null}static validateCallback(e,t){if(typeof e!=`function`)throw TypeError(`Expected callback to be a function for event ${t}`)}setLimits(e){this.#r=e}on(e,t){let n=this.#e.get(e),r=n?.size??0;if(n?.has(t))throw Error(`Duplicate listener for "${e}"`);let{maxListeners:i,warnListeners:a}=this.#r;if(i!==0&&r>=i)throw Error(`Listener limit (${i}) reached for "${e}"`);a!==0&&r===a&&this.#a!==null&&(this.#n??=new Set,this.#n.has(e)||(this.#a(e,a),this.#n.add(e)));let o=n;return o===void 0&&(o=new Set,this.#e.set(e,o)),o.add(t),()=>{this.off(e,t)}}off(e,t){let n=this.#e.get(e);n&&(n.delete(t),n.size===0&&(this.#e.delete(e),this.#n?.delete(e)))}emit(e,t,n,r,i){let a=this.#e.get(e);if(!a||a.size===0||this.#t.has(e))return;let o=arguments.length-1;this.#t.add(e);try{if(a.size===1){let[s]=a;this.#o(e,s,o,t,n,r,i)}else{let s=[...a];for(let a of s)this.#o(e,a,o,t,n,r,i)}}finally{this.#t.delete(e)}}clearAll(){this.#e.clear(),this.#n=null}listenerCount(e){return this.#e.get(e)?.size??0}isDispatching(e){return this.#t.has(e)}#o(e,t,n,r,i,a,o){try{let s=this.#s(t,n,r,i,a,o),c=s?.then;typeof c==`function`&&new Promise((e,t)=>{c.call(s,e,t)}).catch(t=>{this.#i?.(e,t)})}catch(t){this.#i?.(e,t)}}#s(e,t,n,r,i,a){switch(t){case 0:return e();case 1:return e(n);case 2:return e(n,r);case 3:return e(n,r,i);default:return e(n,r,i,a)}}};const io=Object.freeze({log:0,warn:1,error:2}),ao=Object.freeze({all:0,"warn-error":1,"error-only":2,none:3}),oo=Object.hasOwn;var so=class{#e={level:`all`,callbackIgnoresLevel:!1};#t=0;#n=!1;constructor(e){e&&this.configure(e)}configure(e){let t=dn(e),n=t.level;n!==void 0&&(this.#e.level=n,this.#t=ao[n]),oo(t,`callback`)&&(this.#e.callback=t.callback),t.callbackIgnoresLevel!==void 0&&(this.#e.callbackIgnoresLevel=t.callbackIgnoresLevel)}getConfig(){return{level:this.#e.level,callback:this.#e.callback,callbackIgnoresLevel:this.#e.callbackIgnoresLevel}}log(e,t,...n){this.#r(`log`,e,t,n)}warn(e,t,...n){this.#r(`warn`,e,t,n)}error(e,t,...n){this.#r(`error`,e,t,n)}#r(e,t,n,r){if(this.#e.level===`none`&&!this.#e.callbackIgnoresLevel)return;let i=io[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 co(t){let n=lo(t),r=go(t),i=()=>e.i(t.router).validator;uo(t),fo(t,i),po(t,n,i),mo(t,r,i),ho(t,n,i),_o(t,r),vo(t),yo(t,r)}function lo(e){let{router:t,dependenciesStore:n}=e,r=e=>n.dependencies[e];return e=>e(t,r)}function uo(e){e.dependenciesStore.limits=e.limits,e.eventBus.setLimits({maxListeners:e.limits.maxListeners,warnListeners:e.limits.warnListeners})}function fo(e,t){e.eventBus.setValidatorAccessor(t)}function po(t,n,r){let i={logger:e.i(t.router).logger,compileFactory:n,getValidator:r};t.routeLifecycle.setDependencies(i)}function mo(t,n,r){let i={logger:e.i(t.router).logger,getValidator:r,port:n,addActivateGuard:(e,n,r)=>{t.routeLifecycle.addCanActivate(e,n,!0,r)},addDeactivateGuard:(e,n,r)=>{t.routeLifecycle.addCanDeactivate(e,n,!0,r)},compileGuard:(e,n)=>t.routeLifecycle.compileGuardFactory(e,n),getState:()=>t.state.get(),areStatesEqual:(e,n,r)=>t.state.areStatesEqual(e,n,r),getDependency:e=>t.dependenciesStore.dependencies[e]};t.routes.setDependencies(i),t.routes.setLifecycleNamespace(t.routeLifecycle)}function ho(t,n,r){let i={logger:e.i(t.router).logger,addEventListener:(e,n)=>t.eventBus.addEventListener(e,n),canNavigate:()=>t.eventBus.canBeginTransition(),compileFactory:n,getValidator:r};t.plugins.setDependencies(i)}function go(t){let n=e.i(t.router),r=t.routes.getStore(),i=(e,t)=>{n.validator?.state.reportUndeclaredParamKey(e,t)},a=(e,t)=>{n.validator?.state.reportDroppedQueryKey(e,t)};return{resolveForward:(e,t,r)=>n.forwardState(e,t,r),defaultParams:e=>r.config.defaultParams[e],defaultSearch:e=>r.config.defaultSearch[e],buildPath:(e,n,r)=>t.routes.buildPath(e,n,r,t.options.get()),queryNames:e=>t.routes.getQueryParams(e),pathNames:e=>t.routes.hasRoute(e)?t.routes.getUrlParams(e):void 0,admitsUndeclaredQuery:()=>t.options.get().queryParamsMode===`loose`,get reportDroppedQueryKey(){return n.validator?a:void 0},get reportUndeclaredParamKey(){return n.validator?i:void 0}}}function _o(t,n){let r={logger:e.i(t.router).logger,getOptions:()=>t.options.get(),hasRoute:e=>t.routes.hasRoute(e),getQueryParams:e=>t.routes.getQueryParams(e),getMetaForState:e=>t.routes.getMetaForState(e),getState:()=>t.state.get(),buildNavigateState:(r,i,a)=>{e.i(t.router).validator?.routes.validateStateBuilderArgs(r,i,`navigate`);let o=L(n,r,i,a,{diagnoseUndeclared:!0});if(t.routes.getMetaForState(o.name)!==void 0)return e._(`navigate`,o.name,o.path,n.queryNames(o.name)),Vn(o,R(o,n))},resolveDefault:()=>{let n=t.options.get(),r=e.i(t.router),i=Fn(n.defaultRoute,e=>t.dependenciesStore.dependencies[e]),a=Fn(n.defaultParams,e=>t.dependenciesStore.dependencies[e]),o=Fn(n.defaultSearch,e=>t.dependenciesStore.dependencies[e]);return typeof n.defaultRoute==`function`&&r.validator?.options.validateResolvedDefaultRoute(i,r.routeGetStore()),{route:i,params:a,search:o}},startTransition:e=>t.eventBus.sendNavigate(e),systemCommit:(e,n,r)=>t.eventBus.systemCommit({toState:e,fromState:n,opts:r}),cancelNavigation:e=>{t.eventBus.sendCancelIfPossible(t.state.get(),e)},bridgeExternalSignal:e=>{t.eventBus.bridgeExternalSignal(e)},canCommitTransition:e=>t.eventBus.canCommitTransition(e)?Ea:void 0,sendTransitionDone:e=>{t.eventBus.sendComplete(e)},sendTransitionFail:(e,n,r)=>{t.eventBus.sendFail(e,n,r)},emitTransitionError:(e,n,r)=>{t.eventBus.emitTransitionError(e,n,r)},sendLeaveApprove:e=>{t.eventBus.sendLeaveApprove(e)},canNavigate:()=>t.eventBus.canBeginTransition(),isStarting:()=>t.eventBus.isStarting(),getLifecycleFunctions:()=>t.routeLifecycle.getFunctions(),canDeactivateCurrent:(e,n,r)=>t.routeLifecycle.canNavigateTo(e,[],n,r),isTransitioning:()=>t.eventBus.isTransitioning(),clearCanDeactivate:(e,n)=>{t.routeLifecycle.clearCanDeactivate(e,`external`)},hasLeaveListeners:()=>t.eventBus.hasLeaveListeners(),hasPreCommitListeners:()=>t.eventBus.hasPreCommitListeners(),awaitLeaveListeners:(e,n,r)=>t.eventBus.awaitLeaveListeners(e,n,r)};t.navigation.setDependencies(r)}function vo(e){e.lifecycle.setDependencies({getOptions:()=>e.options.get(),navigateToState:(t,n)=>e.navigation.navigateToState(t,n),navigateToNotFound:t=>e.navigation.navigateToNotFound(t),matchPath:t=>e.routes.matchPath(t,e.options.get()),completeStart:()=>{e.eventBus.sendStarted()},isIdle:()=>e.eventBus.isIdle()})}function yo(e,t){e.state.setDependencies({port:()=>t,getUrlParams:t=>e.routes.getUrlParams(t)})}const bo=Object.create,xo=Object.keys,So=Object.freeze;var Co=class r{#e;#t;#n;#r;#i;#a;#o;#s;#c;#l;#u;#d;#f;#p;constructor(n=[],i={},a={}){let{logger:o,...s}=i,c=new so(o?dn(o):void 0);this.#f=e=>{zi(e)||c.error(`router.start`,`Unexpected start error`,e)},Pn.validateOptionsIsObject(i),en(a);let l=nn(n),u=Oo(s);this.#r=To(s),this.#e=new Pn(u),this.#t=Dn(u.limits),this.#n=u.limits==null?void 0:So(xo(u.limits)),this.#i=An(a),this.#a=new Hn,this.#o=new ki(l,Mo(this.#e.get()),c),this.#s=new nr,this.#c=new Yn,this.#l=new Ta,this.#u=new ka;let d=Ja();this.#a.setContext(d.getContext());let f=new ro({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.#d=new eo({routerFSM:d,emitter:f});let p=new Map,m=e=>{let t=e.params,n=e.search;return{name:e.name,params:t==null?t:I(t),search:n==null?n:I(n)}},h=e.r(e.t.forwardState,(e,t,n)=>this.#o.forwardState(e,t,n),p,m,Eo),g=((n,r,i)=>{let a=h(n,r,i),o=a.name,s=a.params;e.g(`forwardState`,o,s,this.#o.getQueryParams(o),()=>o===n?"the `params` bag leaving the forwardState chain":`the \`params\` bag leaving the forwardState chain (forwarded here from "${n}")`);let c=a.search,l=c==null;return{name:o,params:I(s??t.l),search:l?c:I(c)}}),_=e.r(e.t.forwardState,(e,t,n)=>({name:e,params:t,search:n}),p,m,Eo);this.#p=(e,n,r)=>{let i=_(e,n,r),a=i.params,o=i.search;return this.#o.buildPathFromIntent(i.name,a??t.l,o)},e.a(this,{logger:c,makeState:(e,t,n,r)=>this.#a.makeState(e,t,n,r),getMetaForState:e=>this.#o.getMetaForState(e),getQueryParams:e=>this.#o.getQueryParams(e),forwardState:g,buildStateResolved:(e,t)=>this.#o.buildStateResolved(e,t),port:()=>this.#o.getPort(),matchPath:(e,t)=>this.#o.matchPath(e,t),getOptions:()=>this.#e.get(),getAdoptedOrigins:()=>this.#r,addEventListener:(e,t)=>this.#d.addEventListener(e,t),treeChanged:{emit:e=>{this.#d.emitTreeChanged(e)},subscribe:e=>this.#d.subscribeTreeChanged(e),listenerCount:()=>this.#d.treeChangedListenerCount(),isEmitting:()=>this.#d.isEmittingTreeChanged()},emitTransitionError:e=>{this.#d.emitTransitionError(void 0,this.#a.get(),e)},navigateToNotFound:e=>this.#l.navigateToNotFound(e),revalidateToNotFound:e=>this.#l.revalidateToNotFound(e),start:e.n(e.t.start,e=>this.#u.start(e),p),navigateToState:(e,n)=>(this.#g(),r.#m(this.#l.navigateToState(e,n??t.c))),interceptors:p,setRootPath:e=>{this.#o.setRootPath(e)},getRootPath:()=>this.#o.getStore().rootPath,getTree:()=>this.#o.getStore().tree,isDisposed:()=>this.#d.isDisposed(),validator:null,dependenciesGetStore:()=>this.#i,getCloneState:()=>({options:{...this.#e.get()},dependencies:Tn({...this.#i.dependencies}),pluginFactories:this.#c.getAll(),loggerConfig:c.getConfig(),limits:this.#t,limitKeys:this.#n}),routeGetStore:()=>this.#o.getStore(),getStateName:()=>this.#a.get()?.name,isTransitioning:()=>this.#d.isTransitioning(),systemCommit:(e,t,n)=>this.#d.systemCommit({toState:e,fromState:t,opts:n}),routerExtensions:[],contextClaimRecords:new Map,hydrationState:null}),co({router:this,options:this.#e,limits:this.#t,dependenciesStore:this.#i,state:this.#a,routes:this.#o,routeLifecycle:this.#s,plugins:this.#c,navigation:this.#l,lifecycle:this.#u,eventBus:this.#d}),this.isActiveRoute=this.isActiveRoute.bind(this),this.buildPath=this.buildPath.bind(this),this.getState=this.getState.bind(this),this.getPreviousState=this.getPreviousState.bind(this),this.areStatesEqual=this.areStatesEqual.bind(this),this.shouldUpdateNode=this.shouldUpdateNode.bind(this),this.isActive=this.isActive.bind(this),this.start=this.start.bind(this),this.stop=this.stop.bind(this),this.dispose=this.dispose.bind(this),this.canNavigateTo=this.canNavigateTo.bind(this),this.usePlugin=this.usePlugin.bind(this),this.navigate=this.navigate.bind(this),this.navigateToDefault=this.navigateToDefault.bind(this),this.navigateToNotFound=this.navigateToNotFound.bind(this),this.subscribe=this.subscribe.bind(this),this.subscribeLeave=this.subscribeLeave.bind(this),this.isLeaveApproved=this.isLeaveApproved.bind(this);try{this.#o.flushPendingGuards()}catch(e){throw this.dispose(),e}}isActiveRoute(t,n,r,i,a){let o=e.i(this);return o.validator?.routes.validateIsActiveRouteArgs(t,n,i,a),o.validator?.navigation.validateSearch(r,`isActiveRoute`),o.validator?.routes.validateRouteName(t,`isActiveRoute`),t===``?(o.logger.warn(`real-router`,`isActiveRoute("") called with empty string. Root node is not considered a parent of any route.`),!1):this.#o.isActiveRoute(t,n,r,i,a)}buildPath(n,r,i){let a=e.i(this);a.validator?.routes.validateBuildPathArgs(n),a.validator?.navigation.validateParamsShape(r,`buildPath`),a.validator?.navigation.validateSearch(i,`buildPath`);let o=P(r);return a.validator?.navigation.validateParams(o,`buildPath`),this.#p(n,o??t.l,i)}getState(){return this.#a.get()}getPreviousState(){return this.#a.getPrevious()}areStatesEqual(t,n,r=!0){return e.i(this).validator?.state.validateAreStatesEqualArgs(t,n,r),this.#a.areStatesEqual(t,n,r)}shouldUpdateNode(t){return e.i(this).validator?.routes.validateShouldUpdateNodeArgs(t),ki.shouldUpdateNode(t,e=>this.#o.getMetaForState(e))}isActive(){return this.#d.isActive()}start(e){let t=this.#h(e);return t.catch(this.#f),t}stop(){return this.#d.sendCancelIfPossible(this.#a.get()),!this.#d.isReady()&&!this.#d.isTransitioning()&&!this.#d.isStarting()||this.#d.sendStop(),this}dispose(){if(this.#d.isDisposed())return;this.#d.sendCancelIfPossible(this.#a.get()),(this.#d.isReady()||this.#d.isTransitioning())&&this.#d.sendStop(),this.#d.sendDispose(),this.#d.clearAll(),this.#c.disposeAll();let t=e.i(this);for(let e of t.routerExtensions)for(let t of e.keys)delete this[t];t.routerExtensions.length=0,t.contextClaimRecords.clear(),t.interceptors.clear(),this.#o.clearRoutes(),this.#s.clearAll(),this.#i.dependencies=bo(null),this.#v()}canNavigateTo(n,r,i){let a=e.i(this);a.validator?.routes.validateRouteName(n,`canNavigateTo`),a.validator?.navigation.validateParamsShape(r,`canNavigateTo`),a.validator?.navigation.validateSearch(i,`canNavigateTo`);let o;try{o=P(r)}catch(e){return a.logger.warn(`router.canNavigateTo`,`Reading the params bag for route "${n}" threw; treating the route as unreachable.`,e),!1}if(a.validator?.navigation.validateParams(o,`canNavigateTo`),!this.#o.hasRoute(n)||e.v(r,this.#o.getQueryParams(n))!==void 0)return!1;let s=this.#o.getPort(),c;try{c=L(s,n,o??t.l,i)}catch(e){return a.logger.warn(`router.canNavigateTo`,`Resolving route "${n}" threw while answering the predicate; treating the route as unreachable.`,e),!1}let l;try{l=Vn(c,R(c,s))}catch{return!1}let u=this.#a.get(),{toDeactivate:d,toActivate:f}=Ti(l,u,e=>this.#o.getMetaForState(e));return this.#s.canNavigateTo(d,f,l,u)}usePlugin(...r){if(this.#d.isDisposed())throw n.n(new n.t(t.m.ROUTER_DISPOSED));let i=r.filter(Boolean);if(i.length===0)return()=>{};let a=e.i(this);a.validator?.plugins.validatePluginLimit(this.#c.count(),this.#t);for(let e of i)a.validator?.plugins.validateNoDuplicatePlugins(e,this.#c.getAll());return this.#c.use(...i)}subscribe(e){return eo.validateSubscribeListener(e),this.#d.subscribe(e)}subscribeLeave(e){return eo.validateSubscribeLeaveListener(e),this.#d.subscribeLeave(e)}isLeaveApproved(){return this.#d.isLeaveApproved()}navigate(n,i,a,o){this.#g();let s=e.i(this),c,l,u,d;typeof n==`object`&&n?(c=n.name,l=n.params,u=n.search,d=i??t.c):(c=n,l=i,u=a,d=o??t.c),e.o(s,`navigate`,c,l),s.validator?.navigation.validateNavigateArgs(c),s.validator?.navigation.validateParamsShape(l,`navigate`),s.validator?.navigation.validateSearch(u,`navigate`),s.validator?.navigation.validateNavigationOptions(d,`navigate`);let f;try{f=P(l)}catch(e){return Promise.reject(e)}return s.validator?.navigation.validateParams(f,`navigate`),r.#m(this.#l.navigate(c,f??t.l,u,d))}navigateToDefault(n){this.#g();let i=e.i(this);i.validator?.navigation.validateNavigateToDefaultArgs(n);let a=n??t.c;return i.validator?.navigation.validateNavigationOptions(a,`navigateToDefault`),r.#m(this.#l.navigateToDefault(a))}navigateToNotFound(e){if(this.#g(),!this.#d.isActive())throw n.n(new n.t(t.m.ROUTER_NOT_STARTED));if(e!==void 0&&typeof e!=`string`)throw TypeError(`[router.navigateToNotFound] path must be a string, got ${typeof e}`);if(e!==void 0)return this.#l.navigateToNotFound(e);let r=this.#a.get();if(r===void 0)throw n.n(new n.t(t.m.ROUTER_NOT_STARTED,{message:`[router.navigateToNotFound] cannot derive the path before the start navigation commits — pass an explicit path`}));return this.#l.navigateToNotFound(r.path)}static#m(e){return e instanceof Promise?e:Promise.resolve(e)}#h(t){if(!this.#d.canStart())return Promise.reject(to);e.i(this).validator?.navigation.validateStartArgs(t),this.#d.sendStart();let n;try{let r=e.i(this).start(t);n=typeof r?.then==`function`?r:Promise.reject(TypeError("[router.start] a `start` interceptor returned without calling next(). Every start interceptor must return `next(path)`."))}catch(e){n=Promise.reject(e)}return n.catch(e=>this.#_(e))}#g(){if(this.#d.isProcessing())throw n.n(new n.t(t.m.REENTRANT_NAVIGATION,{message:`[router] cannot start a navigation from inside a router event listener — the nested navigation would commit a state the outer one overwrites. Defer it: queueMicrotask(() => router.navigate(...)), await the current transition, or use an async listener.`}));if(this.#l.isPreparing())throw n.n(new n.t(t.m.REENTRANT_NAVIGATION,{message:`[router] cannot start a navigation from inside a forwardState interceptor, a route's encodeParams or dynamic forwardTo callback, or a defaultRoute/defaultParams/defaultSearch option callback — they run while a navigation is being prepared, before it is announced. Defer it: queueMicrotask(() => router.navigate(...)).`}))}#_(e){throw this.#d.isReady()&&this.#a.get()===void 0?this.#d.sendStop():this.#d.isStarting()&&this.#d.sendFail(void 0,e),e}#v(){this.navigate=Q,this.navigateToDefault=Q,this.navigateToNotFound=Q,this.start=Q,this.stop=Q,this.usePlugin=Q,this.subscribe=Q,this.subscribeLeave=Q,this.canNavigateTo=Q}};function Q(){throw n.n(new n.t(t.m.ROUTER_DISPOSED))}function wo(e){return Do(e)&&!Object.isFrozen(e)&&e!==jn.defaultParams&&e!==jn.defaultSearch}function To(e){let{defaultParams:t,defaultSearch:n}=e;return{...wo(t)&&{defaultParams:new WeakRef(t)},...wo(n)&&{defaultSearch:new WeakRef(n)}}}function Eo(e,t,n){return[e,P(t),P(n)]}function Do(e){return typeof e==`object`&&!!e}function Oo(e){let t={...e};return e.limits!=null&&(t.limits=F(`limits`,e.limits)),Do(e.defaultParams)&&(t.defaultParams=F(`defaultParams`,e.defaultParams)),Do(e.defaultSearch)&&(t.defaultSearch=F(`defaultSearch`,e.defaultSearch)),t}const ko=Object.freeze({});function $(e,t){let n;try{n=t[e]}catch(t){throw TypeError(`[router.constructor] Invalid "queryParams.${e}": reading it threw.`,{cause:t})}if(n!=null){if(typeof n==`string`)return n;try{return String(n)}catch(t){throw TypeError(`[router.constructor] Invalid "queryParams.${e}": its value cannot be converted to a string.`,{cause:t})}}}function Ao(e){if(e==null)return`default`;try{return String(e)}catch(e){throw TypeError(`[router.constructor] Invalid "urlParamsEncoding": coercing it threw.`,{cause:e})}}function jo(e){if(!e)return ko;let t=$(`arrayFormat`,e),n=$(`booleanFormat`,e),r=$(`nullFormat`,e),i=$(`numberFormat`,e);return So({...t!==void 0&&{arrayFormat:t},...n!==void 0&&{booleanFormat:n},...r!==void 0&&{nullFormat:r},...i!==void 0&&{numberFormat:i}})}function Mo(e){return So({strictTrailingSlash:e.trailingSlash===`strict`,caseSensitive:e.caseSensitive,strictQueryParams:e.queryParamsMode===`strict`,urlParamsEncoding:Ao(e.urlParamsEncoding),queryParams:jo(e.queryParams)})}Object.defineProperty(exports,"A",{enumerable:!0,get:function(){return Qt}}),Object.defineProperty(exports,"C",{enumerable:!0,get:function(){return Bn}}),Object.defineProperty(exports,"D",{enumerable:!0,get:function(){return P}}),Object.defineProperty(exports,"E",{enumerable:!0,get:function(){return kn}}),Object.defineProperty(exports,"F",{enumerable:!0,get:function(){return tn}}),Object.defineProperty(exports,"I",{enumerable:!0,get:function(){return ut}}),Object.defineProperty(exports,"L",{enumerable:!0,get:function(){return dt}}),Object.defineProperty(exports,"M",{enumerable:!0,get:function(){return $t}}),Object.defineProperty(exports,"N",{enumerable:!0,get:function(){return rn}}),Object.defineProperty(exports,"O",{enumerable:!0,get:function(){return Tn}}),Object.defineProperty(exports,"P",{enumerable:!0,get:function(){return nn}}),Object.defineProperty(exports,"S",{enumerable:!0,get:function(){return pr}}),Object.defineProperty(exports,"T",{enumerable:!0,get:function(){return L}}),Object.defineProperty(exports,"_",{enumerable:!0,get:function(){return jr}}),Object.defineProperty(exports,"a",{enumerable:!0,get:function(){return qr}}),Object.defineProperty(exports,"b",{enumerable:!0,get:function(){return sr}}),Object.defineProperty(exports,"c",{enumerable:!0,get:function(){return Kr}}),Object.defineProperty(exports,"d",{enumerable:!0,get:function(){return Wr}}),Object.defineProperty(exports,"f",{enumerable:!0,get:function(){return Yr}}),Object.defineProperty(exports,"g",{enumerable:!0,get:function(){return Qr}}),Object.defineProperty(exports,"h",{enumerable:!0,get:function(){return Ar}}),Object.defineProperty(exports,"i",{enumerable:!0,get:function(){return $r}}),Object.defineProperty(exports,"j",{enumerable:!0,get:function(){return Zt}}),Object.defineProperty(exports,"k",{enumerable:!0,get:function(){return Xt}}),Object.defineProperty(exports,"l",{enumerable:!0,get:function(){return Ur}}),Object.defineProperty(exports,"m",{enumerable:!0,get:function(){return ti}}),Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return Ti}}),Object.defineProperty(exports,"o",{enumerable:!0,get:function(){return Gr}}),Object.defineProperty(exports,"p",{enumerable:!0,get:function(){return Xr}}),Object.defineProperty(exports,"r",{enumerable:!0,get:function(){return W}}),Object.defineProperty(exports,"s",{enumerable:!0,get:function(){return Vr}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return Co}}),Object.defineProperty(exports,"u",{enumerable:!0,get:function(){return Hr}}),Object.defineProperty(exports,"v",{enumerable:!0,get:function(){return Sr}}),Object.defineProperty(exports,"w",{enumerable:!0,get:function(){return R}}),Object.defineProperty(exports,"x",{enumerable:!0,get:function(){return mr}}),Object.defineProperty(exports,"y",{enumerable:!0,get:function(){return xr}});
|
|
2
|
-
//# sourceMappingURL=Router-RG9LpezX.js.map
|