@real-router/core 0.97.3 → 0.98.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/cjs/index.js CHANGED
@@ -1,2 +1,2 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./Router-BnlmLtFM.js"),t=(t=[],n={},r={})=>new e.t(t,n,r),n=new WeakMap,r=e=>{let t=n.get(e);return t||(t=Object.freeze({navigate:e.navigate,getState:e.getState,isActiveRoute:e.isActiveRoute,canNavigateTo:e.canNavigateTo,subscribe:e.subscribe,subscribeLeave:e.subscribeLeave,isLeaveApproved:e.isLeaveApproved}),n.set(e,t)),t};exports.Router=e.t,exports.RouterError=e.n,exports.UNKNOWN_ROUTE=e.O,exports.constants=e.A,exports.createRouter=t,exports.errorCodes=e.j,exports.events=e.M,exports.getNavigator=r,exports.resolveForwardChain=e._;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./Router-ghLSy24k.js"),t=(t=[],n={},r={})=>new e.t(t,n,r),n=new WeakMap,r=e=>{let t=n.get(e);return t||(t=Object.freeze({navigate:e.navigate,getState:e.getState,isActiveRoute:e.isActiveRoute,canNavigateTo:e.canNavigateTo,subscribe:e.subscribe,subscribeLeave:e.subscribeLeave,isLeaveApproved:e.isLeaveApproved}),n.set(e,t)),t};exports.Router=e.t,exports.RouterError=e.n,exports.UNKNOWN_ROUTE=e.k,exports.constants=e.j,exports.createRouter=t,exports.errorCodes=e.M,exports.events=e.N,exports.getNavigator=r,exports.resolveForwardChain=e.v;
2
2
  //# sourceMappingURL=index.js.map
@@ -52,8 +52,13 @@ interface RoutesStore<Dependencies extends DefaultDependencies = DefaultDependen
52
52
  * `false` here silently switches the arm OFF, which is a correctness bug
53
53
  * wearing a performance change's clothes: a `<Link>` to a forwarding route
54
54
  * would render inactive again (the defect #1573 shipped the arm to fix).
55
- * Pinned across every route-CRUD path by `isActiveRoute-forward-arm` in
56
- * `tests/functional/routes/is-active-route.test.ts`.
55
+ * Pinned in `tests/functional/routes/isActiveRoute.test.ts`, describe
56
+ * `"forwardTo arm survives route-CRUD (#1595)"` — and the generative pin in
57
+ * `tests/property/cloneRouter.properties.ts`. ⚠ That describe name is now
58
+ * narrower than its contents: route-CRUD WAS the whole enumeration until
59
+ * #1800 showed `cloneRouter` writes forward config without being route-CRUD,
60
+ * so a clone case lives there too. (The old reference here named a file that
61
+ * has never existed and a describe that does not either.)
57
62
  */
58
63
  hasAnyForward: boolean;
59
64
  routeCustomFields: Record<string, Record<string, unknown>>;
@@ -1 +1 @@
1
- {"version":3,"file":"routesStore.d.ts","names":[],"sources":["../../../../src/namespaces/RoutesNamespace/routesStore.ts"],"mappings":";;;;;;UA4DiB,YACf,qBAAqB,sBAAsB;;;;;;;;;;;;;WAclC,aAAa;WACb,QAAQ;EACjB,MAAM;EACN,SAAS;;;;;;;WAOA,gBAAgB;;;;;;;;WAQhB,kBAAkB;EAC3B,oBAAoB;;;;;;;;;;;;;;;;;;;EAoBpB;EACA,mBAAmB,eAAe;EAClC;WACS,gBAAgB;EACzB,WAAW,mBAAmB;EAC9B,oBAAoB,wBAAwB;WACnC,oBAAoB,YAAY,eAAe;WAC/C,sBAAsB,YAAY,eAAe"}
1
+ {"version":3,"file":"routesStore.d.ts","names":[],"sources":["../../../../src/namespaces/RoutesNamespace/routesStore.ts"],"mappings":";;;;;;UA4DiB,YACf,qBAAqB,sBAAsB;;;;;;;;;;;;;WAclC,aAAa;WACb,QAAQ;EACjB,MAAM;EACN,SAAS;;;;;;;WAOA,gBAAgB;;;;;;;;WAQhB,kBAAkB;EAC3B,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;EAyBpB;EACA,mBAAmB,eAAe;EAClC;WACS,gBAAgB;EACzB,WAAW,mBAAmB;EAC9B,oBAAoB,wBAAwB;WACnC,oBAAoB,YAAY,eAAe;WAC/C,sBAAsB,YAAY,eAAe"}
@@ -1,2 +1,2 @@
1
- import{c as e,d as t,f as n,h as r,l as i,m as a,n as o,o as s,p as c,r as l,s as u,t as d,u as f}from"./buildParamMeta-D99tL6t-.mjs";const p=Object.hasOwn;function m(e,t,n){if(e===void 0||n.length===0)return e;let r,i=!1;for(let[a,o]of Object.entries(e)){if(p(t,a)&&t[a]!==void 0&&n.includes(a)){i=!0;continue}r??={},r[a]=o}return i?r:e}function h(e,t,n){for(let[r,i]of Object.entries(e))c(n,r,i,t(r),"this route's `defaultParams`","Move it to `defaultSearch`")}const g=Object.freeze({ROUTER_NOT_STARTED:`NOT_STARTED`,NO_START_PATH_OR_STATE:`NO_START_PATH_OR_STATE`,ROUTER_ALREADY_STARTED:`ALREADY_STARTED`,ROUTE_NOT_FOUND:`ROUTE_NOT_FOUND`,SAME_STATES:`SAME_STATES`,CANNOT_DEACTIVATE:`CANNOT_DEACTIVATE`,CANNOT_ACTIVATE:`CANNOT_ACTIVATE`,TRANSITION_ERR:`TRANSITION_ERR`,TRANSITION_CANCELLED:`CANCELLED`,ROUTER_DISPOSED:`DISPOSED`,PLUGIN_CONFLICT:`PLUGIN_CONFLICT`,CONTEXT_NAMESPACE_ALREADY_CLAIMED:`CONTEXT_NAMESPACE_ALREADY_CLAIMED`,REENTRANT_NAVIGATION:`REENTRANT_NAVIGATION`,REENTRANT_TREE_MUTATION:`REENTRANT_TREE_MUTATION`,ROUTER_NOT_STOPPED:`NOT_STOPPED`,WRONG_CHANNEL:`WRONG_CHANNEL`}),_=`@@router/UNKNOWN_ROUTE`,ee=`__proto__`,v={UNKNOWN_ROUTE:_},y={ROUTER_START:`onStart`,ROUTER_STOP:`onStop`,TRANSITION_START:`onTransitionStart`,TRANSITION_LEAVE_APPROVE:`onTransitionLeaveApprove`,TRANSITION_CANCEL:`onTransitionCancel`,TRANSITION_SUCCESS:`onTransitionSuccess`,TRANSITION_ERROR:`onTransitionError`},b={ROUTER_START:`$start`,ROUTER_STOP:`$stop`,TRANSITION_START:`$$start`,TRANSITION_LEAVE_APPROVE:`$$leaveApprove`,TRANSITION_CANCEL:`$$cancel`,TRANSITION_SUCCESS:`$$success`,TRANSITION_ERROR:`$$error`},te={maxDependencies:100,maxPlugins:50,maxListeners:1e4,warnListeners:1e3,maxLifecycleHandlers:200},x=Object.freeze({}),S=Object.freeze({}),ne=Object.freeze({deactivated:Object.freeze([]),activated:Object.freeze([]),intersection:``}),re=Object.freeze({phase:`activating`,reason:`success`,segments:ne});function ie(e,t,n){let r,i=!1;for(let[a,o]of Object.entries(e))t.includes(a)?(r??={},r[a]=o):(i=!0,n?.(a));return i?Object.freeze(r??S):e}const ae=Object.keys,oe=Object.getOwnPropertyDescriptor,se=Object.getPrototypeOf,ce=Object;function le(e){if(!e||typeof e!=`object`)throw TypeError(`dependencies must be a plain object`);let t=se(e);if(t!==null&&t.constructor!==ce)throw TypeError(`dependencies must be a plain object`);for(let t of ae(e))if(oe(e,t)?.get)throw TypeError(`dependencies cannot contain getters: "${t}"`)}function ue(e,t){for(let n of e){let e=n;if(typeof e!=`object`||!e||Array.isArray(e))throw TypeError(`route must be a non-array object`);t?.routes.guardRouteCallbacks(n),t?.routes.guardNoAsyncCallbacks(n);let r=n.children;r&&ue(r,t)}}const de=new Set([`all`,`warn-error`,`error-only`,`none`]);function fe(e){return typeof e==`string`&&de.has(e)}function pe(e){return typeof e==`string`?`"${e}"`:typeof e==`object`?JSON.stringify(e):String(e)}function me(e){if(typeof e!=`object`)throw TypeError(`Logger config must be an object`);let t=e;for(let e of ae(t))if(e!==`level`&&e!==`callback`&&e!==`callbackIgnoresLevel`)throw TypeError(`Unknown logger config property: "${e}"`);if(`level`in t&&t.level!==void 0&&!fe(t.level))throw TypeError(`Invalid logger level: ${pe(t.level)}. Expected: "all" | "warn-error" | "error-only" | "none"`);if(`callback`in t&&t.callback!==void 0&&typeof t.callback!=`function`)throw TypeError(`Logger callback must be a function, got ${typeof t.callback}`);if(`callbackIgnoresLevel`in t&&t.callbackIgnoresLevel!==void 0&&typeof t.callbackIgnoresLevel!=`boolean`)throw TypeError(`Logger callbackIgnoresLevel must be a boolean, got ${typeof t.callbackIgnoresLevel}`)}const C=Object.freeze,w=Object.hasOwn;function T(e,t){if(e===void 0)return ge(t);let n={};for(let t in e){if(t===`__proto__`||!w(e,t))continue;let r=e[t];r!==void 0&&(n[t]=r)}if(t!==void 0)for(let e in t){if(e===`__proto__`||!w(t,e))continue;let r=t[e];r!==void 0&&(n[e]=r)}return n}function he(e){let t={};for(let n in e){if(n===`__proto__`||!w(e,n))continue;let r=e[n];r!==void 0&&(t[n]=r)}return t}function ge(e){if(e===void 0)return;let t;for(let n in e)!w(e,n)||e[n]!==void 0||(t??=he(e),delete t[n]);return t??e}const _e=new Set([`string`,`number`,`boolean`]);function ve(e){return _e.has(typeof e)}function E(e,t){if(e===t)return!0;if(Array.isArray(e)){if(!Array.isArray(t))return e.length===1&&E(e[0],t);if(e.length!==t.length)return!1;for(let n=0;n<e.length;n++)if(!E(e[n],t[n]))return!1;return!0}return Array.isArray(t)?t.length===1&&E(e,t[0]):ve(e)&&ve(t)&&String(e)===String(t)}function ye(e){return C(e)}function D(e,t,n,r=!1){if(e!==void 0)return C(T(e,t));if(t===void 0||t===n)return n;if(r)return C(t);let i=T(void 0,t);if(i!==t)return C(i);let a={};for(let e in t){if(e===`__proto__`||!w(t,e))continue;let n=t[e];n!==void 0&&(a[e]=n)}return C(a)}function be(e,t){if(e===void 0)return e;let n;for(let t in e){if(!w(e,t)||t===`__proto__`)continue;let r=e[t];r!==void 0&&(n??={},n[t]=r)}return n??t}function xe(e={}){let t={...te,...e};return Object.freeze({maxDependencies:Number(t.maxDependencies),maxPlugins:Number(t.maxPlugins),maxListeners:Number(t.maxListeners),warnListeners:Number(t.warnListeners),maxLifecycleHandlers:Number(t.maxLifecycleHandlers)})}const Se=Object.keys;function Ce(e={}){let t=Object.create(null),n=e,r=t;for(let e of Se(n)){let t=n[e];t!==void 0&&(r[e]=t)}return{dependencies:t,limits:te}}function we(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=we(t,o);o.children.push(e)}return o}function Te(e,t,n){let r=we({name:e,path:t},null);for(let e of n){let t=we(e,r);r.children.push(t)}return r}const Ee=/[^\w!$'()*+,.:;|~-]/gu,De=/[^\w!$'()*+,.:;|~-]/u,Oe=/[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?<![\uD800-\uDBFF])[\uDC00-\uDFFF]/g,ke=e=>t=>{try{return e(t)}catch{return e(t.replaceAll(Oe,`�`))}},Ae=ke(e=>e.replaceAll(Ee,e=>encodeURIComponent(e))),je={default:e=>De.test(e)?Ae(e):e,uri:ke(encodeURI),uriComponent:ke(encodeURIComponent),none:e=>e},Me={default:decodeURIComponent,uri:decodeURI,uriComponent:decodeURIComponent,none:e=>e},Ne=(e,t)=>{let n=je[t],r=String(e).split(`/`),i=n(r[0]);for(let e=1;e<r.length;e++)i+=`/`+n(r[e]);return i},Pe=Object.freeze(Object.create(null));function O(){return{staticChildren:Pe,hasChildren:!1,paramChild:void 0,splatChild:void 0,route:void 0,slashChildRoute:void 0}}function k(e){return e.length>1&&e.endsWith(`/`)?e.slice(0,-1):e}function Fe(e,t){return e===``?t:t===``?e:e+t}function Ie(e){return e>=48&&e<=57||e>=65&&e<=70||e>=97&&e<=102}function Le(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(!Ie(n)||!Ie(r))return!1;t+=3}else t++;return!0}const Re=Object.freeze([]),ze=Object.freeze(new Set),Be=Object.freeze([]),Ve=Object.freeze({}),He=Object.freeze({}),Ue=Object.freeze({});function We(e,t,n){let r=t.has(e.name);return{paramName:e.name,encoder:r?e=>Ne(e,n):je[n]}}function Ge(e,t,n,r){let i=new Set(r),a=new Set;for(let e of t){for(let t of e.paramMeta.urlParams)i.add(t);for(let t of e.paramMeta.spatParams)a.add(t)}if(i.size===0)return{buildStaticParts:[e],buildParamSlots:Be};let o=[],c=[],l=``,d=u(e),f=d.length-1;for(let[e,t]of d.entries()){let r=s(t);if(!(!(`error`in r)&&r.kind===`splat`&&e!==f)){if(e>0&&(l+=`/`),`error`in r||r.kind===`static`){l+=t;continue}o.push(l),l=``,c.push(We(r,a,n))}}return o.push(l),{buildStaticParts:o,buildParamSlots:c}}function Ke(e,t,n){throw Error(`[SegmentMatcher.registerTree] Parameter name conflict at the same path position: '${n}${e}' and '${n}${t}'. A parametric URL segment binds to a single name across every route that shares that position — the value cannot be captured under two names. Rename one so both routes agree (e.g. use '${n}${e}' in both).`)}function qe(){throw Error(`[SegmentMatcher.registerTree] Empty parameter name: a parameter marker (':' or '*') must be followed by a name (e.g. ':id', '*rest'). A name-less marker, or a trailing '?' with no parameter name, would capture under an empty key at match but emit a literal at build — the two disagree, so it is rejected.`)}function Je(e){throw Error(`[SegmentMatcher.registerTree] Fused parameter marker in segment "${e}": a ':'/'*' marker must begin a segment (e.g. 'a/:b', not 'a:b'). build extracts it as a param while the trie treats the segment as a literal — the two disagree.`)}function Ye(e){throw Error(`[SegmentMatcher.registerTree] Trailing parameter marker in segment "${e}": a param name cannot end in a bare ':' or '*' (e.g. ':y*' — the name is 'y' plus a stray marker). build/meta would capture the marker into the name while the gate rejects it as name-less — the two disagree, so it is rejected.`)}function Xe(e){throw Error(`[SegmentMatcher.registerTree] Optional params are not supported: "${e}" — declare two sibling routes instead (one with the segment, one without). The route hierarchy already expresses optionality.`)}function Ze(e){throw Error(`[SegmentMatcher.registerTree] Regex constraints are not supported: "<"/">" are reserved in path segments ("${e}"). Match the segment as a plain string and validate the value in a guard (canActivate) or app code.`)}function Qe(e){throw Error(`[SegmentMatcher.registerTree] Non-ASCII static segment "${e}": match rejects non-ASCII input and compares static keys raw, so this route would never match. Percent-encode it (e.g. "/caf%C3%A9") or use a param.`)}function $e(e,t){switch(e){case`name-less`:return qe();case`trailing-marker`:return Ye(t);case`fused-marker`:return Je(t);case`optional-removed`:return Xe(t);case`constraint-removed`:return Ze(t)}}function et(e,t){let n=new Set,r=``;for(let e of t){if(n.has(e)){r=e;break}n.add(e)}throw Error(`[SegmentMatcher.registerTree] Duplicate parameter name ':${r}' in route "${e}": a param name must be unique within a route — two positions cannot both bind ':${r}' (the second silently overwrites the first). Rename one.`)}function tt(e,t){throw Error(`[SegmentMatcher.registerTree] Invalid query-param declaration "${t}" in route "${e}": a query-param name cannot contain '<' or '>' — it would never round-trip. Rename the query param.`)}function nt(e,t){throw Error(`[SegmentMatcher.registerTree] Duplicate route path: routes "${e}" and "${t}" resolve to the same URL. The later registration would silently shadow the earlier (its deep link would resolve to the other route). Give them distinct paths.`)}function rt(e,t){throw Error(`[SegmentMatcher.registerTree] Index route "${e}" (path "/") under the splat parent "${t}" is not supported: the index sits on the splat node, which the wildcard match never reaches, so it is unreachable. Give the index a distinct path, or make the parent static.`)}function it(e){let t=s(e);return(`error`in t||t.kind===`static`)&&qe(),t.name}function at(e,t){return e.paramChild?e.paramChild.name!==t&&Ke(e.paramChild.name,t,`:`):e.paramChild={node:O(),name:t},e.paramChild.node}function ot(e,t){return e.splatChild?e.splatChild.name!==t&&Ke(e.splatChild.name,t,`*`):e.splatChild={node:O(),name:t},e.splatChild.node}function st(e,t){e.route!==void 0&&e.route!==t&&nt(e.route.name,t.name),e.route=t}function ct(e){for(let t=0;t<e.length;t++)if(e.charCodeAt(t)>=128)return!0;return!1}function lt(e,t,n){let r=k(n);if(r===`/`){st(e.root,t);return}ut(e,e.root,r,1,t)}function ut(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=mt(e,t,s),r=o+1}st(t,i)}function dt(e,t,n){n.slice(n.lastIndexOf(`/`)+1).startsWith(`*`)&&rt(t.name,n);let r=ft(e,n);r.slashChildRoute=t}function ft(e,t){return pt(e,e.root,t)}function pt(e,t,n){let r=k(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=mt(e,i,s),a=n+1}return i}function mt(e,t,n){if(n.startsWith(`*`)){let e=ot(t,it(n));return t.hasChildren=!0,e}if(n.startsWith(`:`)){let e=at(t,it(n));return t.hasChildren=!0,e}ct(n)&&Qe(n);let r=e.options.caseSensitive?n:n.toLowerCase();return r in t.staticChildren||(t.staticChildren===Pe&&(t.staticChildren=Object.create(null)),t.staticChildren[r]=O(),t.hasChildren=!0),t.staticChildren[r]}function ht(e,t,n,r,i){let a=t.fullName===``;a||r.push(t);let o=t.absolute,c=t.paramMeta===d?t.path:t.paramMeta.pathPattern,l=o&&c.startsWith(`~`)?c.slice(1):c,f=o?l:c;for(let e of u(f)){let t=s(e);`error`in t&&$e(t.error,e)}let p=f,m=o?p:Fe(n,p),h=a?i:gt(e,t,m,o?``:n,r,i);for(let n of t.children.values())ht(e,n,m,r,h);a||r.pop()}function gt(e,t,n,r,i,a){let o=xt(n,r),s=Object.freeze([...i]),c=_t(s),l=k(n),u=St(e.rootQueryParams,i),{buildStaticParts:d,buildParamSlots:f}=Ge(o?k(r):l,o?i.slice(0,-1):i,e.options.urlParamsEncoding,e.rootUrlParams),p=f.map(e=>e.paramName),m=p.length===0?ze:new Set(p);m.size!==p.length&&et(t.fullName,p),Ct(t.fullName,u);let h={name:t.fullName,parent:a,matchSegments:s,meta:c,declaredQueryParams:u,declaredQueryParamsSet:u.length===0?ze:new Set(u),hasTrailingSlash:n.length>1&&n.endsWith(`/`),buildStaticParts:d,buildParamSlots:f,buildParamNamesSet:m,cachedResult:void 0};return t.paramMeta.urlParams.length===0&&(h.cachedResult=Object.freeze({segments:h.matchSegments,params:Ve,search:He,meta:h.meta})),e.routesByName.set(t.fullName,h),o?yt(e,h,r):bt(e,h,n,l,t),h}function _t(e){let t;for(let n of e)vt(n.paramTypeMap)&&(t??={},t[n.fullName]=n.paramTypeMap);return t===void 0?Ue:Object.freeze(t)}function vt(e){for(let t in e)if(Object.hasOwn(e,t))return!0;return!1}function yt(e,t,n){dt(e,t,n);let r=k(n),i=e.options.caseSensitive?r:r.toLowerCase();e.staticCache.has(i)&&e.staticCache.set(i,t)}function bt(e,t,n,r,i){if(lt(e,t,n),i.paramMeta.urlParams.length===0){let n=e.options.caseSensitive?r:r.toLowerCase();e.staticCache.set(n,t)}}function xt(e,t){return k(e)===k(t)}function St(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?Re:n}function Ct(e,t){for(let n of t)o.test(n)&&tt(e,n)}const wt=Symbol.for(`real-router.searchParams.configFault`),Tt=Object.hasOwn,Et=Object.keys,Dt=Object.getOwnPropertyDescriptor;function Ot(e){try{return Dt(e,wt)?.configurable===!1}catch{return!1}}function kt(e){return typeof e==`string`?e:typeof e==`object`?JSON.stringify(e):String(e)}const At=Object.freeze({});var jt=class{get options(){return this.#e}#e;#t=O();#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=Tt(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:Me[this.#e.urlParamsEncoding]}registerTree(e){this.#a=e.paramMeta.queryParams,ht({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,r?.trailingSlash),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&&Tt(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(kt(r));i+=o+n[e+1]}return i}#u(e,t){return t===`always`&&!e.endsWith(`/`)?`${e}/`:t===`never`&&e!==`/`&&e.endsWith(`/`)?e.slice(0,-1):e}#d(e,t,n){if(!t||e.declaredQueryParams.length===0&&n!==`loose`)return``;let r={},i=!1;for(let n of e.declaredQueryParams)Tt(t,n)&&(r[n]=t[n],i=!0);if(n===`loose`)for(let n of Et(t))e.declaredQueryParamsSet.has(n)||e.buildParamNamesSet.has(n)||(r[n]=t[n],i=!0);return i?this.#e.buildQueryString(r):``}#f(e){if(e===``&&(e=`/`),e.codePointAt(0)!==47)return!1;let t=this.#p(e);if(t===-2)return!1;t===-3&&(e=this.#o);let n=t>=0?e.slice(0,t):e,r=t>=0?e.slice(t+1):void 0;if(r!==void 0){let e=r.indexOf(`#`);e!==-1&&(r=r.slice(0,e))}let i=k(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=At;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(Ot(e))throw e;return}if(this.#e.strictQueryParams){let t=e.declaredQueryParamsSet;for(let e of Et(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,t,n,r){let i=e,a=t.length,o=this.#s;for(;n<=a;){let e=t.indexOf(`/`,n),s=e===-1?a:e,c=t.slice(n,s),l=o?c:c.toLowerCase(),u;if(l in i.staticChildren)u=i.staticChildren[l];else if(i.paramChild){let e=i.paramChild;if(i.splatChild!==void 0){let a={[e.name]:c},o=this.#v(e.node,t,s+1,a);return o===void 0?this.#y(i.splatChild,t,n,r):(Object.assign(r,a),o)}u=e.node,r[e.name]=c}else if(i.splatChild)return this.#y(i.splatChild,t,n,r);else return;i=u,n=s+1}return i.slashChildRoute??i.route}#y(e,t,n,r){let i=e.node;if(!i.hasChildren)return r[e.name]=t.slice(n),i.route;let a={},o=this.#v(i,t,n,a);return o?(Object.assign(r,a),o):(r[e.name]=t.slice(n),i.route)}#b(e){let t=this.#c;if(!t)return!0;for(let n of Et(e)){let r=e[n];if(r.includes(`%`)){if(!Le(r))return!1;try{e[n]=t(r)}catch{return!1}}}return!0}};const Mt=Object.freeze(new Map),Nt=Object.freeze([]);function Pt(e){return e.parent?.name?`${e.parent.fullName}.${e.name}`:e.name}function Ft(e){let t=new Map;for(let n of e)t.set(n.name,n);return t}function It(e,t){let n=[],r=[];for(let i of e){let e=Lt(i,t);n.push(e),e.absolute||r.push(e)}return{childrenMap:Ft(n),nonAbsoluteChildren:r}}function Lt(e,t){let n=l(e.path),r=n.urlParams.length===0&&n.queryParams.length===0&&n.spatParams.length===0&&n.pathPattern===e.path?d:n,i=r.paramTypeMap,a={name:e.name,path:e.path,absolute:e.absolute,parent:t,children:void 0,paramMeta:r,nonAbsoluteChildren:void 0,fullName:``,paramTypeMap:i};if(a.fullName=Pt(a),e.children.length===0)a.children=Mt,a.nonAbsoluteChildren=Nt;else{let{childrenMap:t,nonAbsoluteChildren:n}=It(e.children,a);a.children=t,a.nonAbsoluteChildren=n,Object.freeze(a.nonAbsoluteChildren),Object.freeze(a.children)}return Object.freeze(i),Object.freeze(r.urlParams),Object.freeze(r.queryParams),Object.freeze(r.spatParams),Object.freeze(r),Object.freeze(a),a}function Rt(e){return Lt(e,null)}function zt(e,t,n){return Rt(Te(e,t,n))}function Bt(e){let t=e.absolute?`~${e.path}`:e.path,n={name:e.name,path:t};return e.children.size>0&&(n.children=Array.from(e.children.values(),Bt)),n}function Vt(e){return Array.from(e.children.values(),Bt)}const Ht=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)},Ut=(e,t)=>{if(e===void 0)return t.boolean.decodeUndefined();let n=t.boolean.decodeRaw(e);if(n!==null)return n;let r=Ht(e),i=t.number.decode(r);return i===null?t.boolean.decodeValue(r):i},Wt=/[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?<![\uD800-\uDBFF])[\uDC00-\uDFFF]/g,Gt=e=>{try{return encodeURIComponent(e)}catch(t){if(!(t instanceof URIError))throw t;return encodeURIComponent(String(e).replaceAll(Wt,`�`))}},A=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 Gt(e)},Kt=(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}=${A(e)}`);return a.join(`&`)},qt={none:{encodeArray:(e,t,n)=>Kt(e,t,``,n)},brackets:{encodeArray:(e,t,n)=>Kt(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}=${A(a)}`)}return r.join(`&`)},indexed:!0},comma:{encodeArray:(e,t)=>{let n=[];for(let e of t)e!==null&&n.push(A(e));return n.length===0?``:`${e}=${n.join(`,`)}`},decodeValue:e=>e.includes(`,`)?e.split(`,`):null}},Jt={none:{encode:(e,t)=>`${e}=${t}`,decodeUndefined:()=>null,decodeRaw:()=>null,decodeValue:e=>e},auto:{encode:(e,t)=>`${e}=${t}`,decodeUndefined:()=>null,decodeRaw:e=>e===`true`||e!==`false`&&null,decodeValue:e=>e},"empty-true":{encode:(e,t)=>t?e:`${e}=false`,decodeUndefined:()=>!0,decodeRaw:e=>e===`true`||e!==`false`&&null,decodeValue:e=>e}},Yt={default:{encode:e=>e},hidden:{encode:()=>``}},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}},Zt=Object.defineProperty,Qt=Object.keys,$t=Object.hasOwn,en=Symbol.for(`real-router.searchParams.configFault`),j=(e,t,n)=>{let r=typeof t==`string`?t:String(t);if(!$t(e,r)){let t=TypeError(`[router.constructor] Invalid "queryParams.${n}": "${r}" — expected ${Qt(e).map(e=>`"${e}"`).join(` | `)}`);throw Zt(t,en,{value:!0}),t}return e[r]},tn=(e,t,n,r)=>({boolean:j(Jt,t,`booleanFormat`),null:j(Yt,n,`nullFormat`),number:j(Xt,r,`numberFormat`),array:j(qt,e,`arrayFormat`)}),nn=Object.freeze({boolean:Jt.auto,null:Yt.default,number:Xt.auto,array:qt.none}),M=Object.freeze({arrayFormat:`none`,booleanFormat:`auto`,nullFormat:`default`,numberFormat:`auto`}),rn=Object.freeze({...M,strategies:nn}),an=e=>{if(!e||e.arrayFormat===void 0&&e.booleanFormat===void 0&&e.nullFormat===void 0&&e.numberFormat===void 0)return rn;let t=e.arrayFormat??M.arrayFormat,n=e.booleanFormat??M.booleanFormat,r=e.nullFormat??M.nullFormat,i=e.numberFormat??M.numberFormat;return{arrayFormat:t,booleanFormat:n,nullFormat:r,numberFormat:i,strategies:tn(t,n,r,i)}},N=e=>Gt(e),on=(e,t,n)=>{let r=N(e);switch(typeof t){case`string`:case`number`:return`${r}=${N(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}=${N(t)}`;default:return`${r}=${N(t)}`}},sn=Object.hasOwn,cn=Object.defineProperty,ln=Object.keys;function un(e,t,n){t===`__proto__`?cn(e,t,{value:n,writable:!0,enumerable:!0,configurable:!0}):e[t]=n}function dn(e,t,n,r){if(!sn(e,t)){un(e,t,r?[n]:n);return}let i=e[t];Array.isArray(i)?i.push(n):un(e,t,[i,n])}function fn(e,t,n,r,i){return Ut(r?e.slice(t+1,n):void 0,i)}function pn(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 mn(e,t,n){let{searchPart:r,nameEnd:i,nameSourceEnd:a,eqPos:o,end:s,hasValue:c,decodedName:l}=e,u=pn(r,i,a);if(u===null)return!1;let d=fn(r,o,s,c,t),f=n.get(l);return f===void 0?n.set(l,[[u,d]]):f.push([u,d]),!0}function hn(e,t,n,r,i,a,o){let s=a!==-1&&a<n,c=s?a:n,l=c,u=!1;for(let n=t;n<c;n++)if(e.codePointAt(n)===91){l=n,u=!0;break}let d=Ht(e.slice(t,l));if(!(o!==void 0&&u&&mn({searchPart:e,nameEnd:l,nameSourceEnd:c,eqPos:a,end:n,hasValue:s,decodedName:d},i,o))){if(!u&&s&&i.array.decodeValue){let t=e.slice(a+1,n),o=i.array.decodeValue(t);if(o){for(let e of o)dn(r,d,Ut(e,i),!0);return}}dn(r,d,fn(e,a,n,s,i),u)}}const gn=(e,t)=>{if(e===``||e===`?`)return{};let n={};return _n(e,n,t.strategies),n};function _n(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)),hn(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]),un(t,e,n.map(e=>e[1]))}const vn=(e,t)=>{let n=ln(e);if(n.length===0)return``;let r=[];for(let i of n){let n=e[i];if(n===void 0)continue;let a=on(i,n,t);a&&r.push(a)}return r.join(`&`)};function yn(e){let t=e?.queryParams,n=an(t);return new jt({...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=>gn(e,n),buildQueryString:e=>vn(e,n)})}const bn={defaultRoute:``,defaultParams:{},defaultSearch:{},trailingSlash:`preserve`,caseSensitive:!0,queryParamsMode:`loose`,queryParams:M,urlParamsEncoding:`default`,allowNotFound:!0,rewritePathOnMatch:!0},xn=Object.getOwnPropertyDescriptor,Sn=Object.getOwnPropertyNames,Cn=Object.freeze;function wn(e){Cn(e);for(let t of Sn(e)){let n=xn(e,t);if(!n?.enumerable)continue;let r=n.value;r&&typeof r==`object`&&r.constructor===Object&&wn(r)}return e}function Tn(e,t){return typeof e==`function`?e(t):e}function En(e){if(!e||typeof e!=`object`||Array.isArray(e))throw TypeError(`[router.constructor] options must be a plain object`)}var Dn=class{#e;constructor(e={}){this.#e=wn({...bn,...e})}static validateOptionsIsObject(e){En(e)}get(){return this.#e}};function On(e,t,n,r,i){let a=e.pathNames(t);if(a!==void 0)for(let e of Object.keys(n))!r.includes(e)&&!a.includes(e)&&i(t,e)}function P(e,t,n,r,i){let a=i?.resolveForward===!1?{name:t,params:n,search:r}:e.resolveForward(t,n,r),o=a.name,s=be(a.params,x),c=i?.diagnoseUndeclared===!0?e.reportUndeclaredParamKey:void 0;c&&On(e,o,s,e.queryNames(o),c);let l=e.defaultParams(o),u=e.defaultSearch(o);if((a.search===void 0||a.search===S)&&l===void 0&&u===void 0)return{name:o,path:s,query:S};let d=e.queryNames(o),f=e.reportDroppedQueryKey,p=D(i?.resolveForward===!1?m(u,s,d):u,be(a.search,S),S,!0);return{name:o,path:D(l,s,x,!0),query:e.admitsUndeclaredQuery()?p:ie(p,d,t=>{f!==void 0&&e.pathNames(o)!==void 0&&f(o,t)})}}function F(e,t){return t.buildPath(e.name,e.path,e.query)}function I(e,t){let n={name:e.name,params:e.path,search:e.query,path:t.path,context:{},...!t.skipFreeze&&{transition:re}};return Object.freeze(n.params),t.skipFreeze?n:ye(n)}var kn=class{#e;#t;get(){return this.#e.current}getPrevious(){return this.#e.previous}setContext(e){this.#e=e}setDependencies(e){this.#t=e}makeState(e,t,n,r){let i=this.#t.port(),a=P(i,e,t??x,n,{resolveForward:!1});return I(a,{path:r??F(a,i)})}areStatesEqual(e,t,n=!0){if(!e||!t)return!!e==!!t;if(e.name!==t.name)return!1;if(n){let n=this.#t.getUrlParams(e.name);for(let r of n)if(!E(e.params[r],t.params[r]))return!1;return!0}return An(e.params,t.params)&&An(e.search,t.search)}};function An(e,t){let n=Object.keys(e);if(n.length!==Object.keys(t).length)return!1;for(let r of n)if(!(r in t)||!E(e[r],t[r]))return!1;return!0}const jn={[y.ROUTER_START]:b.ROUTER_START,[y.ROUTER_STOP]:b.ROUTER_STOP,[y.TRANSITION_SUCCESS]:b.TRANSITION_SUCCESS,[y.TRANSITION_START]:b.TRANSITION_START,[y.TRANSITION_LEAVE_APPROVE]:b.TRANSITION_LEAVE_APPROVE,[y.TRANSITION_ERROR]:b.TRANSITION_ERROR,[y.TRANSITION_CANCEL]:b.TRANSITION_CANCEL},Mn=Object.keys(jn),Nn=`router.usePlugin`;function Pn(e){if(!(e&&typeof e==`object`)||Array.isArray(e))throw TypeError(`[router.usePlugin] Plugin factory must return an object, got ${typeof e}`);if(typeof e.then==`function`)throw TypeError(`[router.usePlugin] Async plugin factories are not supported. Factory returned a Promise instead of a plugin object.`)}var Fn=class e{#e=new Set;#t=new Set;#n;static validatePlugin(e){Pn(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(Nn,`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(Nn,`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(Nn,`Error during cleanup:`,e)}}};return this.#t.add(i),i}getAll(){return[...this.#e]}has(e){return this.#e.has(e)}disposeAll(){for(let e of this.#t)e();this.#e.clear(),this.#t.clear()}#r(e){let t=new Set;for(let n of e)t.has(n)?this.#n.getValidator()?.plugins.warnBatchDuplicates(e):t.add(n);return t}#i(t){let n=this.#n.compileFactory(t);e.validatePlugin(n),this.#n.getValidator()?.plugins.validatePluginKeys(n),Object.freeze(n);let r=[];for(let e of Mn)e in n&&(typeof n[e]==`function`?(r.push(this.#n.addEventListener(jn[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 In=()=>!0,Ln=()=>!1,Rn=()=>In,zn=()=>Ln;function Bn(e){return e?Rn:zn}function Vn(e,t,n){n===void 0?e.delete(t):e.set(t,n)}var Hn=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=!1,r){this.#f(`activate`,e,t,n,`canActivate`,r)}addCanDeactivate(e,t,n=!1,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=Object.create(null),t=Object.create(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=Object.create(null),t=Object.create(null),n=Object.create(null),r=Object.create(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`?Bn(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`?Bn(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 Vn(c,t,d),Vn(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 Un=new Set([`name`,`path`,`children`,`canActivate`,`canDeactivate`,`forwardTo`,`encodeParams`,`decodeParams`,`defaultParams`,`defaultSearch`]);function Wn(){return{decoders:Object.create(null),encoders:Object.create(null),defaultParams:Object.create(null),defaultSearch:Object.create(null),forwardMap:Object.create(null),forwardFnMap:Object.create(null)}}function Gn(e){return Object.keys(e.forwardMap).length>0||Object.keys(e.forwardFnMap).length>0}function Kn(e,t){for(let n of Object.keys(t))Object.assign(e[n],t[n])}function qn(e,t){for(let n in e)if(!E(e[n],t[n]))return!1;return!0}function Jn(e){let t={name:e.name,path:e.path};return e.children&&(t.children=e.children.map(e=>Jn(e))),t}function Yn(e,t,n){if(n.add(t),e.children)for(let r of e.children)Yn(r,`${t}.${r.name}`,n)}function Xn(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 Yn(i,a,t),t}if(i.children&&t.startsWith(`${a}.`)){let e=Xn(i.children,t,a);if(e)return e}}}function Zn(e,t){for(let n of Object.keys(e))t(n)&&delete e[n]}function Qn(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 $n(e){let t=[];for(let n of e)for(let e of n.paramMeta.urlParams)t.push(e);return t}function er(e,t,n){let r=n.get(t);if(r!==void 0)return r;let i=e.getSegmentsByName(t),a=i?$n(i):[];return n.set(t,a),a}function tr(e,t){return er(e.matcher,t,e.urlParamsCache)}function nr(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=er(e,t,n);o=a.filter(e=>!r.includes(e))}return r.set(t,o),o}function rr(e,t){return nr(e.matcher,t,e.urlParamsCache,e.queryParamsCache)}function ir(e,t,n){let r=new Map,i=new Map;h(t.defaultParams,t=>nr(e,t,r,i),n)}function ar(e,t,n=100){let r=new Set,i=[e],a=e;for(;t[a];){let e=t[a];if(r.has(e)){let t=i.indexOf(e),n=[...i.slice(t),e];throw Error(`Circular forwardTo: ${n.join(` → `)}`)}if(r.add(a),i.push(e),a=e,i.length>n)throw Error(`forwardTo chain exceeds maximum depth (${n}): ${i.join(` → `)}`)}return a}const or=Object.defineProperty,sr=Object.fromEntries;function cr(e,t,n){let r=zt(``,t,e),i=yn(n);return i.registerTree(r),{tree:r,matcher:i}}function lr(e,t=e.definitions){let n=cr(t,e.rootPath,e.matcherOptions);e.tree=n.tree,e.matcher=n.matcher,e.urlParamsCache.clear(),e.queryParamsCache.clear()}function ur(e,t){let n=cr(e.definitions,t,e.matcherOptions);ir(n.matcher,e.config,`setRootPath`),e.rootPath=t,e.tree=n.tree,e.matcher=n.matcher,e.urlParamsCache.clear(),e.queryParamsCache.clear()}function dr(e,t){lr(e,t),L(e,mr(e.config))}function fr(e){pr(e),lr(e,[])}function pr(e){Object.assign(e.config,Wn()),L(e,Object.create(null)),e.routeCustomFields=Object.create(null)}function L(e,t){e.resolvedForwardMap=t,e.hasAnyForward=Gn(e.config)}function mr(e){let t=Object.create(null);for(let n of Object.keys(e.forwardMap))t[n]=ar(n,e.forwardMap);return t}function hr(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 gr(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}".`)}hr(e.forwardTo,t),typeof e.forwardTo==`string`?n.forwardMap[t]=e.forwardTo:n.forwardFnMap[t]=e.forwardTo}function _r(e,t,n,r,i,a,o){let s=sr(Object.entries(e).filter(([e])=>!Un.has(e)));if(Object.keys(s).length>0&&(r[t]=s),e.canActivate&&i.set(t,e.canActivate),e.canDeactivate&&a.set(t,e.canDeactivate),e.forwardTo&&gr(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]=e.defaultParams),e.defaultSearch&&(n.defaultSearch[t]=e.defaultSearch)}function vr(e,t,n,r,i,a,o=``){for(let s of e){let e=o?`${o}.${s.name}`:s.name;_r(s,e,t,n,r,i,a),s.children&&vr(s.children,t,n,r,i,a,e)}}function yr(e){let t=Wn();return Kn(t,e),t}function br(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]:br(n,t,i)}})}function xr(e,t,n){for(let r of e){let e=t?`${t}.${r.name}`:r.name;n(e),r.children&&xr(r.children,e,n)}}function Sr(e,t,n){let r=new Set;xr(e,t,e=>{if(r.has(e))throw Error(`[router.${n}] Duplicate route "${e}" in batch`);r.add(e)})}function Cr(e,t){if(e.startsWith(`@@`))throw Error(`[router.${t}] Route name "${e}" uses the reserved "@@" prefix. Routes with this prefix are internal and cannot be modified through the public API.`)}function R(e,t){for(let n of e)Cr(n.name,t),n.children&&R(n.children,t)}function wr(e,t){if(e.includes(`.`))throw TypeError(`[router.${t}] Route name "${e}" cannot contain dots. Use children array or { parent } option in addRoute() instead.`)}function z(e,t){for(let n of e)wr(n.name,t),n.children&&z(n.children,t)}function Tr(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 Er(e,t,n){if(R(t,`addRoute`),z(t,`addRoute`),n!==void 0&&!e.matcher.hasRoute(n))throw Error(`[router.addRoute] Parent route "${n}" does not exist`);xr(t,n??``,t=>{if(e.matcher.hasRoute(t))throw Error(`[router.addRoute] Route "${t}" already exists`)}),Sr(t,n??``,`addRoute`),Tr(t,n??``,`addRoute`)}function Dr({definitions:e,routesForHandlers:t,config:n,routeCustomFields:r,handlerParentName:i,rootPath:a,matcherOptions:o,logger:s}){let c=new Map,l=new Map;vr(t,n,r,c,l,s,i);let u=mr(n),{tree:d,matcher:f}=cr(e,a,o);return{config:n,routeCustomFields:r,pendingCanActivate:c,pendingCanDeactivate:l,tree:d,matcher:f,resolvedForwardMap:u}}function Or(e,t,n,r){return Dr({definitions:br(e.definitions,t.map(e=>Jn(e)),n===void 0?[]:n.split(`.`)),routesForHandlers:t,config:yr(e.config),routeCustomFields:Object.assign(Object.create(null),e.routeCustomFields),handlerParentName:n??``,rootPath:e.rootPath,matcherOptions:e.matcherOptions,logger:r})}function kr(e,t,n,r){return Dr({definitions:e.map(e=>Jn(e)),routesForHandlers:e,config:Wn(),routeCustomFields:Object.create(null),handlerParentName:``,rootPath:t,matcherOptions:n,logger:r})}function Ar(e,t,n){let r=[];for(let[i,a]of e)r.push([i,a,t(a,n)]);return r}function jr(e,t){return{activate:Ar(e.pendingCanActivate,t.compileGuard,`canActivate`),deactivate:Ar(e.pendingCanDeactivate,t.compileGuard,`canDeactivate`)}}function Mr(e,t,n){let r=e.depsStore,{activate:i,deactivate:a}=n??jr(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(),L(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 Nr(e,t,n,r){let{forwardTo:i,defaultParams:a,defaultSearch:o,decodeParams:s,encodeParams:l,canActivate:u,canDeactivate:d}=r;a!=null&&c(`updateRoute`,n,a,rr(e,n),"this route's `defaultParams`","Move it to `defaultSearch`");let f=i===void 0?void 0:Pr(n,i,e.config),p=Fr(e,n,r),m=u==null?void 0:t.compileGuardFactory(u,`canActivate`),h=d==null?void 0:t.compileGuardFactory(d,`canDeactivate`);return t.preflightHandlerLimit(m===void 0?[]:[n],h===void 0?[]:[n],!1),p!==void 0&&(Object.keys(p).length>0?e.routeCustomFields[n]=p:delete e.routeCustomFields[n]),f!==void 0&&(e.config.forwardMap=f.forwardMap,e.config.forwardFnMap=f.forwardFnMap,L(e,f.resolved)),Lr(e,n,{defaultParams:a,defaultSearch:o,decodeParams:s,encodeParams:l}),Rr(t,`activate`,n,u,m),Rr(t,`deactivate`,n,d,h),{forwardTo:i,defaultParams:a,defaultSearch:o,decodeParams:s,encodeParams:l}}function Pr(e,t,n){hr(t,e);let r=Object.assign(Object.create(null),n.forwardMap),i=Object.assign(Object.create(null),n.forwardFnMap);return t===null?(delete r[e],delete i[e]):typeof t==`string`?(delete i[e],r[e]=t):(delete r[e],i[e]=t),{forwardMap:r,forwardFnMap:i,resolved:mr({...n,forwardMap:r})}}function Fr(e,t,n){let r;for(let i of Object.keys(n)){if(Un.has(i))continue;let a=n[i];a!==void 0&&(r??={...e.routeCustomFields[t]},a===null?delete r[i]:i===`__proto__`?or(r,i,{value:a,writable:!0,enumerable:!0,configurable:!0}):r[i]=a)}return r}function Ir(e,t,n){n!==void 0&&(n===null?delete e[t]:e[t]=n)}function Lr(e,t,n){if(Ir(e.config.defaultParams,t,n.defaultParams),Ir(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 Rr(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 zr(e,t,n){R(e,`addRoute`),z(e,`constructor`),Sr(e,``,`addRoute`);let r=kr(e,``,t,n),i={get definitions(){return Vt(i.tree)},config:r.config,tree:r.tree,matcher:r.matcher,urlParamsCache:new Map,queryParamsCache:new Map,resolvedForwardMap:r.resolvedForwardMap,hasAnyForward:Gn(r.config),routeCustomFields:r.routeCustomFields,rootPath:``,matcherOptions:t,depsStore:void 0,lifecycleNamespace:void 0,pendingCanActivate:r.pendingCanActivate,pendingCanDeactivate:r.pendingCanDeactivate};return ir(i.matcher,i.config,`addRoute`),or(i,`matcherOptions`,{writable:!1,configurable:!1}),i}const Br=[];Object.freeze(Br);function Vr(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 Hr=new Set([`string`,`number`,`boolean`]);function Ur(e){return Hr.has(typeof e)}function Wr(e,t,n,r){let i=t[e];if(!i||typeof i!=`object`)return!0;for(let e of Object.keys(i)){let t=n.params[e],i=r.params[e];if(Ur(t)&&Ur(i)&&String(t)!==String(i))return!1}return!0}function Gr(e,t,n,r,i,a){for(let o=0;o<a;o++){let a=r[o];if(a!==i[o]||!Wr(a,e,t,n))return o}return a}const Kr=new Map;function B(e){let t=Kr.get(e);if(t)return t;let n=qr(e);return Object.freeze(n),Kr.set(e,n),n}function qr(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]:Vr(e)}let Jr,Yr,V=null,Xr,Zr,Qr=null;function $r(e,t,n){if(!t)return{intersection:``,toActivate:B(e.name),toDeactivate:Br};let r=n(e.name),i=n(t.name);if(!r&&!i)return{intersection:``,toActivate:B(e.name),toDeactivate:B(t.name)};let a=B(e.name),o=B(t.name),s=Math.min(o.length,a.length),c=Gr(r??i,e,t,a,o,s),l;if(c>=o.length)l=Br;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 H(e,t,n){if(V!==null&&e===Jr&&t===Yr)return V;if(Qr!==null&&e===Xr&&t===Zr)return Qr;let r=$r(e,t,n);return Xr=Jr,Zr=Yr,Qr=V,Jr=e,Yr=t,V=r,r}function ei(e,t){return{name:t??e.segments.at(-1).fullName,params:e.params,search:e.search,meta:e.meta}}var ti=class{#e;#t;#n;get#r(){return this.#e.depsStore}constructor(e,t,n){this.#e=zr(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}=H(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){ur(this.#e,e)}hasRoute(e){return this.#e.matcher.hasRoute(e)}clearRoutes(){fr(this.#e)}buildPath(e,t,n,r){if(e===v.UNKNOWN_ROUTE)return typeof t.path==`string`?t.path:``;let i=P(this.#r.port,e,t,n,{resolveForward:!1});if(typeof this.#e.config.encoders[e]==`function`){let t=this.#e.config.encoders[e]({params:{...i.path},search:{...i.query}});return this.#e.matcher.buildPath(e,t.params,t.search,this.#c(r))}return this.#e.matcher.buildPath(e,i.path,i.query,this.#c(r))}matchPath(e,t){let n=t,r=this.#e.matcher.match(e);if(!r)return;let i=ei(r),{name:a,params:o}=i,s=i.search,l=this.#e.config.decoders[a],u;typeof l==`function`?(u=l({params:o,search:s}),this.#r.getValidator()?.routes.validateStateBuilderArgs(a,u.params,`matchPath`),c(`matchPath`,a,u.params,this.getQueryParams(a),"the `params` returned by this route's `decodeParams`")):u={params:o,search:s};let d=P(this.#r.port,a,u.params,u.search),f=d.name,p=d.path,m=d.query,h=e;if(n.rewritePathOnMatch){let t=typeof this.#e.config.encoders[f]==`function`?this.#e.config.encoders[f]({params:p,search:m}):{params:p,search:m},r=n.trailingSlash;try{h=this.#e.matcher.buildPath(f,t.params,t.search,{trailingSlash:r===`never`||r===`always`?r:void 0,queryParamsMode:n.queryParamsMode}),r===`preserve`&&(h=Qn(e,h))}catch{h=e}}return I(d,{path:h})}forwardState(e,t,n){let r=n??S;if(Object.hasOwn(this.#e.config.forwardFnMap,e)){let n=this.#e.config.forwardFnMap[e],{target:i,chain:a}=this.#l(e,n,t);return this.#s(i,a,t,r)}let i=this.#e.resolvedForwardMap[e]??e;if(i!==e&&Object.hasOwn(this.#e.config.forwardFnMap,i)){let n=this.#e.config.forwardFnMap[i],{target:a,chain:o}=this.#l(i,n,t);return this.#s(a,[...this.#o(e),...o],t,r)}return i===e?{name:e,params:t,search:r}:this.#s(i,this.#o(e),t,r)}buildStateResolved(e,t){let n=this.#e.matcher.getSegmentsByName(e);if(n)return ei({segments:n,params:t,search:{},meta:this.#e.matcher.getMetaByName(e)},e)}isActiveRoute(e,t=x,n=S,r=!1,i=!0){if(this.#i(e,t,n,r,i))return!0;if(!this.#e.hasAnyForward||!Object.hasOwn(this.#e.config.forwardMap,e)&&!Object.hasOwn(this.#e.config.forwardFnMap,e))return!1;let a;try{a=this.forwardState(e,t,n)}catch(t){return this.#r.logger.warn(`router.isActiveRoute`,`Dynamic forwardTo of route "${e}" threw while resolving the active-link destination; treating the link as inactive.`,t),!1}return this.#i(a.name,a.params,a.search,r,i)}getMetaForState(e){return this.#e.matcher.hasRoute(e)?this.#e.matcher.getMetaByName(e):void 0}getUrlParams(e){return tr(this.#e,e)}getQueryParams(e){return rr(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 "${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=P(this.#r.port,e,t,n,{resolveForward:!1});return r||o===e?this.#r.areStatesEqual(I(s,{path:``,skipFreeze:!0}),a,i):!(!o.startsWith(`${e}.`)||!qn(s.path,a.params)||!i&&!qn(s.query,a.search))}#o(e){let t=[],n=e;for(;Object.hasOwn(this.#e.config.forwardMap,n);)t.push(n),n=this.#e.config.forwardMap[n];return t}#s(e,t,n,r){let i,a;for(let e of t)i=T(this.#e.config.defaultParams[e],i),a=T(this.#e.config.defaultSearch[e],a);return{name:e,params:T(i,n),search:T(a,r)}}#c(e){if(this.#t)return e!==this.#n&&this.#r.logger.warn(`router.buildPath`,"`options` differs from the cached source reference; router options are immutable per router instance, so the first-cached buildPath options are reused (#957)."),this.#t;this.#n=e;let t=e?.trailingSlash;return this.#t=Object.freeze({trailingSlash:t===`never`||t===`always`?t:void 0,queryParamsMode:e?.queryParamsMode}),this.#t}#l(e,t,n){let r=new Set([e]),i=[e],a=t(this.#r.getDependency,n),o=0;if(typeof a!=`string`)throw TypeError(`forwardTo callback must return a string, got ${typeof a}`);for(;o<100;){if(this.#e.matcher.getSegmentsByName(a)===void 0)throw Error(`Route "${a}" does not exist`);if(r.has(a)){let e=[...r,a].join(` → `);throw Error(`Circular forwardTo: ${e}`)}if(r.add(a),Object.hasOwn(this.#e.config.forwardFnMap,a)){let e=this.#e.config.forwardFnMap[a];i.push(a),a=e(this.#r.getDependency,n),o++;continue}let e=this.#e.config.forwardMap[a];if(e!==void 0){i.push(a),a=e,o++;continue}return{target:a,chain:i}}throw Error(`forwardTo exceeds maximum depth of 100`)}};const ni=new Set(Object.values(g)),ri=new Set([`code`,`segment`,`path`]),ii=new Set([`setCode`,`setErrorInstance`,`setAdditionalFields`,`hasField`,`getField`,`toJSON`]);var U=class extends Error{segment;path;code;constructor(e,{message:t,segment:n,path:r,...i}={}){super(t??e),this.name=`RouterError`,this.code=e,this.segment=n,this.path=r;for(let[e,t]of Object.entries(i)){if(ri.has(e))throw TypeError(`[RouterError] Cannot set reserved property "${e}"`);ii.has(e)||(this[e]=t)}}setCode(e){this.code=e,ni.has(this.message)&&(this.message=e)}setErrorInstance(e){if(!e)throw TypeError(`[RouterError.setErrorInstance] err parameter is required and must be an Error instance`);this.message=e.message,this.cause=e.cause,this.stack=e.stack??``}setAdditionalFields(e){for(let[t,n]of Object.entries(e)){if(ri.has(t))throw TypeError(`[RouterError.setAdditionalFields] Cannot set reserved property "${t}"`);ii.has(t)||(this[t]=n)}}hasField(e){return e in this}getField(e){return this[e]}toJSON(){let e={code:this.code,message:this.message};this.segment!==void 0&&(e.segment=this.segment),this.path!==void 0&&(e.path=this.path);let t=new Set([`code`,`message`,`segment`,`path`,`stack`,`name`]);for(let n in this)Object.hasOwn(this,n)&&!t.has(n)&&(e[n]=this[n]);return e}};const ai=new U(g.ROUTER_NOT_STARTED),oi=new U(g.ROUTE_NOT_FOUND),si=new U(g.SAME_STATES),ci=new U(g.ROUTER_NOT_STARTED,{message:`[router] cannot commit before the start navigation does — the boot would overwrite it; defer with queueMicrotask/await, or navigate after start() resolves`});Object.freeze(ai),Object.freeze(oi),Object.freeze(si),Object.freeze(ci);const W=Promise.reject(ai),li=Promise.reject(oi),ui=Promise.reject(si),G=Promise.reject(ci);W.catch(()=>{}),li.catch(()=>{}),ui.catch(()=>{}),G.catch(()=>{});const di=new Set([g.SAME_STATES,g.TRANSITION_CANCELLED,g.ROUTER_NOT_STARTED,g.ROUTE_NOT_FOUND,g.CANNOT_ACTIVATE,g.CANNOT_DEACTIVATE,g.ROUTER_ALREADY_STARTED]);function fi(e){return e instanceof U&&di.has(e.code)}const pi=new Set([W,li,ui,G]);function mi(e){let{fromState:t,toDeactivate:n,toActivate:r,intersection:i}=e;Object.freeze(n),Object.freeze(r);let a={phase:`activating`,reason:`success`,segments:Object.freeze({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),Object.freeze(a)}function hi(e,t){let{toState:n,fromState:r,toDeactivate:i,toActivate:a}=t;if(n.name!==v.UNKNOWN_ROUTE&&!e.hasRoute(n.name)){let i=new U(g.ROUTE_NOT_FOUND,{routeName:n.name});throw e.sendTransitionFail(r,i,t),i}let o=t;n.transition=mi(t);let s=Object.freeze(n),c=e.canCommitTransition(o);if(!c)throw new U(g.TRANSITION_CANCELLED);for(let n of i)a.includes(n)||!t.canDeactivateFunctions.has(n)||e.clearCanDeactivate(n,c);return e.sendTransitionDone(o),s}function gi(e){return e instanceof U&&e.code===g.TRANSITION_CANCELLED}function _i(e){return gi(e)?e:new U(g.TRANSITION_CANCELLED,{reason:e})}function vi(e,t,n,r){let i=t;i.code!==g.TRANSITION_CANCELLED&&i.code!==g.ROUTE_NOT_FOUND&&e.sendTransitionFail(n,i,r)}function yi(e,t,n){if(e instanceof DOMException&&e.name===`AbortError`)throw new U(g.TRANSITION_CANCELLED);if(gi(e))throw e;bi(e,t,n)}function bi(e,t,n){if(e instanceof U){let{code:n,message:r,...i}=e.toJSON(),a=new U(n,{...i,message:r});throw a.setCode(t),a.stack=e.stack??``,a}throw new U(t,Si(e,n))}const xi=new Set([`code`,`segment`,`path`,`then`]);function Si(e,t){let n={segment:t};if(e instanceof Error)return{...n,message:e.message,stack:e.stack,...`cause`in e&&e.cause!==void 0&&{cause:e.cause}};if(e&&typeof e==`object`){let t={};for(let[n,r]of Object.entries(e))xi.has(n)||(t[n]=r);return{...n,...t}}return n}async function Ci(e,t,n){let r;try{r=await e}catch(e){yi(e,t,n);return}if(!r)throw new U(t,{segment:n})}function wi(e,t,n,r,i,a,o,s,c,l){if(!c())throw new U(g.TRANSITION_CANCELLED);if(e===1){let n=l();return n===void 0?void 0:{phase:e,index:t+1,pending:n}}let u=n[t],d=r.get(u);if(!d)return;let f=!1;try{f=d(a,o,s)}catch(e){yi(e,i,u)}if(f instanceof Promise)return{phase:e,index:t+1,pending:f};if(!f)throw new U(i,{segment:u})}function Ti(e,t,n,r,i,a,o,s,c,l,u,d,f){let p=e===1,m=e===0;if(!p&&!(m?o:s))return;let h=m?i:a,_=p?1:h.length,ee=m?n:r,v=m?g.CANNOT_DEACTIVATE:g.CANNOT_ACTIVATE;for(let n=t;n<_;n++){let t=wi(e,n,h,ee,v,c,l,u,d,f);if(t!==void 0)return t}}function Ei(e,t,n,r,i,a,o,s,c,l,u,d,f){for(let p=d;p<=2;p++){let m=Ti(p,p===d?f:0,e,t,n,r,i,a,o,s,c,l,u);if(m!==void 0)return m}}async function Di(e,t,n,r,i,a,o,s,c,l,u,d){let f=e;for(;f!==void 0;){if(f.phase===1)await f.pending;else{let e=f.phase===0;await Ci(f.pending,e?g.CANNOT_DEACTIVATE:g.CANNOT_ACTIVATE,(e?r:i)[f.index-1])}f=Ei(t,n,r,i,a,o,s,c,l,u,d,f.phase,f.index)}}function Oi(e,t,n,r,i,a,o,s,c,l,u){let d=Ei(e,t,n,r,i,a,o,s,c,l,u,0,0);return d===void 0?void 0:Di(d,e,t,n,r,i,a,o,s,c,l,u)}const ki=Object.freeze([]),Ai=new Map;function ji(e,t){return t?.name===v.UNKNOWN_ROUTE&&!e.replace?{...e,replace:!0}:e}function Mi(e,t,n){return!!e&&!t.reload&&!t.force&&e.path===n.path}function Ni(e,t){if(e.size===0)return!1;for(let n of t)if(e.has(n))return!0;return!1}function K(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 Pi(e,t){t.externalSignal===void 0||t.cancelReason!==void 0||!t.hasGuards||e.bridgeExternalSignal(t)}function Fi(e,t,n,r,i,a,o,s,c,l){Hi(e,a);let u=e.hasLeaveListeners()||e.hasPreCommitListeners(),d={toState:t,fromState:n,opts:r,suspendable:i!==void 0||u,forceDeactivate:l,toDeactivate:ki,toActivate:ki,intersection:``,canDeactivateFunctions:Ai,canActivateFunctions:Ai,shouldDeactivate:!1,shouldActivate:!1,hasGuards:!1,controller:void 0,cancelReason:void 0,detachExternalBridge:void 0,externalSignal:i,reload:o,replace:s,redirected:c};if(!e.startTransition(d))throw new U(g.TRANSITION_CANCELLED);return d}function Ii(e,t){return e.sendLeaveApprove(t),hi(e,t)}function Li(e,t){let[n,r]=e.getLifecycleFunctions(),{toDeactivate:i,toActivate:a,intersection:o}=H(t.toState,t.fromState,t=>e.getMetaForState(t));t.canDeactivateFunctions=n,t.canActivateFunctions=r,t.toDeactivate=i,t.toActivate=a,t.intersection=o,t.shouldDeactivate=!!t.fromState&&!t.forceDeactivate&&i.length>0,t.shouldActivate=t.toState.name!==v.UNKNOWN_ROUTE&&a.length>0,t.hasGuards=t.shouldDeactivate&&Ni(n,i)||t.shouldActivate&&Ni(r,a)}function Ri(e,t,n){let r,i;try{r=e.getState();let a=n.signal,o=a?.aborted===!0?a:void 0;n=ji(n,r);let s=n.reload,c=n.replace,l=n.redirected,u=n.forceDeactivate===!0;if(Mi(r,n,t))return e.emitTransitionError(t,r,si),ui;let d=Fi(e,t,r,n,a,o,s,c,l,u);i=d;let f=d.externalSignal;if(f?.aborted===!0&&e.cancelNavigation(f.reason),Li(e,d),Pi(e,d),!d.hasGuards&&!d.suspendable)return Ii(e,d);let{canDeactivateFunctions:p,canActivateFunctions:m,toDeactivate:h,toActivate:_,shouldDeactivate:ee,shouldActivate:v,hasGuards:y}=d,b=t;if(!y){let t=Vi(e,d);if(t!==void 0)return t}if(y){let n=K(d),i=()=>!n.signal.aborted,a=n.signal,o=Oi(p,m,h,_,ee,v,t,r,a,i,()=>{if(e.sendLeaveApprove(d),e.hasLeaveListeners())return e.awaitLeaveListeners(b,r,a)});if(o!==void 0)return zi(e,o,d,n);if(!i())throw new U(g.TRANSITION_CANCELLED)}return hi(e,d)}catch(t){let n=Bi(e,t,{nav:i,fromState:r});return Promise.reject(n)}}async function zi(e,t,n,r){let i=()=>!r.signal.aborted,a=n.externalSignal,o,s=!1,c,l=new Promise(e=>{if(r.signal.aborted){e();return}o=()=>{e()},r.signal.addEventListener(`abort`,o,{once:!0})});t.catch(()=>{});try{if(a?.aborted)throw new U(g.TRANSITION_CANCELLED,{reason:a.reason});if(await Promise.race([t,l]),!i())throw new U(g.TRANSITION_CANCELLED);let r=hi(e,n);return s=!0,r}catch(t){let r=i()?t:_i(t);throw c=r,vi(e,r,n.fromState,n),r}finally{o&&r.signal.removeEventListener(`abort`,o),s||r.abort(c)}}function Bi(e,t,n){let{nav:r}=n;if(r?.controller?.abort(t),r!==void 0){let i=e.isTransitioning()?t:_i(t);return vi(e,i,n.fromState,r),i}return t}function Vi(e,t){let{toState:n,fromState:r}=t;if(e.hasLeaveListeners()&&K(t),e.sendLeaveApprove(t),e.hasLeaveListeners()){let i=K(t),a;try{a=e.awaitLeaveListeners(n,r,i.signal)}catch(e){throw i.abort(e),e}return a===void 0?void 0:zi(e,a,t,i)}}function Hi(e,t){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()),t!==void 0)throw new U(g.TRANSITION_CANCELLED,{reason:t.reason})}const Ui=Object.freeze([v.UNKNOWN_ROUTE]),Wi=Object.freeze({replace:!0});function Gi(e,t,n){Hi(e,void 0);let r=e.getState(),i=r?B(r.name).toReversed():[];Object.freeze(i);let a={deactivated:i,activated:Ui,intersection:``};Object.freeze(a);let o={phase:`activating`,...r&&{from:r.name},reason:`success`,replace:!0,segments:a};Object.freeze(o);let s={name:v.UNKNOWN_ROUTE,params:x,search:S,path:t,transition:o,context:{}};if(Object.freeze(s),n?.skipDeactivation!==!0&&r!==void 0&&!e.canDeactivateCurrent(i,s,r)){let n=new U(g.CANNOT_DEACTIVATE,{path:t,message:`[router.navigateToNotFound] a canDeactivate guard on "${r.name}" refused to leave for ${t}`});throw e.emitTransitionError(void 0,r,n),n}return e.systemCommit(s,r,Wi)}var Ki=class{#e;#t;#n=0;setDependencies(e){this.#e=e,this.#t=t=>{fi(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,t){return Gi(this.#e,e,t)}isPreparing(){return this.#n>0}#r(e){return e instanceof Promise&&!pi.has(e)&&e.catch(this.#t),e}#i(e,t,n,r){let i=this.#e;if(!i.canNavigate())return i.isStarting()?G:W;let a;this.#n++;try{a=i.buildNavigateState(e,t,n)}catch(e){return Promise.reject(e)}finally{this.#n--}return a?Ri(this.#e,a,r):(i.emitTransitionError(void 0,i.getState(),oi),li)}#a(e,t){let n=this.#e;if(!n.canNavigate())return n.isStarting()?G:W;if(e.name!==v.UNKNOWN_ROUTE&&!n.hasRoute(e.name)){let t=new U(g.ROUTE_NOT_FOUND,{routeName:e.name});return n.emitTransitionError(void 0,n.getState(),t),Promise.reject(t)}let i=a(e.params,n.getQueryParams(e.name));if(i!==void 0){let t=new U(g.WRONG_CHANNEL,{routeName:e.name,message:`[router.navigateToState] ${r(e.name,i,"`state.params`")}`});return n.emitTransitionError(void 0,n.getState(),t),Promise.reject(t)}let o;try{o=this.#o(e)}catch(e){return Promise.reject(e)}return Ri(this.#e,o,t)}#o(e){return{name:e.name,params:D(void 0,e.params,x),search:D(void 0,e.search,S),path:e.path,context:{...e.context}}}#s(e){let t=this.#e;if(!t.getOptions().defaultRoute)return Promise.reject(new U(g.ROUTE_NOT_FOUND,{routeName:`defaultRoute not configured`}));let n,r,i;this.#n++;try{({route:n,params:r,search:i}=t.resolveDefault())}catch(e){return Promise.reject(e)}finally{this.#n--}return n?this.#i(n,r,i,e):Promise.reject(new U(g.ROUTE_NOT_FOUND,{routeName:`defaultRoute resolved to empty`}))}};const qi={},Ji=Object.freeze({replace:!0});function Yi(e){return[e,e?.reason].some(e=>e instanceof U&&e.code===g.ROUTE_NOT_FOUND)}var Xi=class{#e;setDependencies(e){this.#e=e}async start(e){let t=this.#e;if(t.isIdle())throw new U(g.TRANSITION_CANCELLED);let n=t.getOptions();if(typeof e!=`string`)throw TypeError(`[router.start] path must be a string, got ${typeof e}`);let r=t.matchPath(e);if(!r&&!n.allowNotFound)throw new U(g.ROUTE_NOT_FOUND,{path:e});if(t.completeStart(),r)try{return await t.navigateToState(r,Ji)}catch(r){if(!n.allowNotFound||!Yi(r))throw r;return t.navigateToNotFound(e)}return t.navigateToNotFound(e)}};const Zi={},Qi=new WeakMap;function $i(e,t,n){if(typeof n==`string`)return{target:n,when:void 0,update:void 0};if(n.when!==void 0&&typeof n.when!=`function`)throw Error(`[FSM.constructor] transitions["${e}"]["${t}"].when is not a function`);if(n.update!==void 0&&typeof n.update!=`function`)throw Error(`[FSM.constructor] transitions["${e}"]["${t}"].update is not a function`);return{target:n.target,when:n.when,update:n.update}}function ea(e){let t=Qi.get(e);if(t!==void 0)return t;let n=e,r=Object.create(null);for(let[e,t]of Object.entries(n)){let n=Object.create(null);for(let[r,i]of Object.entries(t))i!==void 0&&(n[r]=$i(e,r,i));r[e]=n}for(let e of Object.values(r))for(let t of Object.values(e))if(t!==void 0&&r[t.target]===void 0)throw Error(`[FSM.constructor] state "${t.target}" is not declared in config.transitions`);return Qi.set(e,r),r}var ta=class{#e;#t;#n=0;#r=null;#i;#a;#o=[];constructor(e){if(this.#e=e.initial,this.#i=e.context,this.#a=ea(e.transitions),this.#a[e.initial]===void 0)throw Error(`[FSM.constructor] state "${e.initial}" is not declared in config.transitions`);this.#t=this.#a[e.initial]}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(!Object.hasOwn(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 q={IDLE:`IDLE`,STARTING:`STARTING`,READY:`READY`,TRANSITION_STARTED:`TRANSITION_STARTED`,LEAVE_APPROVED:`LEAVE_APPROVED`,DISPOSED:`DISPOSED`},J={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 na(){return{inflight:void 0,current:void 0,previous:void 0}}const ra=(e,t)=>t?.nav===void 0||t.nav===e.inflight,ia=(e,t)=>t!==void 0&&t===e.inflight&&t.externalSignal?.aborted!==!0,aa=(e,t)=>{e.previous=e.current,e.current=ye(t)},oa=(e,t)=>{aa(e,t.toState),e.inflight=void 0},sa=(e,t)=>{aa(e,t.toState)},ca=e=>{e.previous=e.current,e.current=void 0},Y=e=>{e.current=void 0,e.previous=void 0,e.inflight=void 0},la=(e,t)=>{e.inflight=t},ua={[q.IDLE]:{[J.START]:q.STARTING,[J.DISPOSE]:{target:q.DISPOSED,update:Y}},[q.STARTING]:{[J.STARTED]:q.READY,[J.FAIL]:q.IDLE,[J.STOP]:{target:q.IDLE,update:ca},[J.DISPOSE]:{target:q.DISPOSED,update:Y}},[q.READY]:{[J.NAVIGATE]:{target:q.TRANSITION_STARTED,update:la},[J.SYSTEM_COMMIT]:{target:q.READY,update:sa},[J.STOP]:{target:q.IDLE,update:ca},[J.DISPOSE]:{target:q.DISPOSED,update:Y}},[q.TRANSITION_STARTED]:{[J.NAVIGATE]:{target:q.TRANSITION_STARTED,update:la},[J.LEAVE_APPROVE]:q.LEAVE_APPROVED,[J.CANCEL]:q.READY,[J.FAIL]:{target:q.READY,when:ra},[J.DISPOSE]:{target:q.DISPOSED,update:Y}},[q.LEAVE_APPROVED]:{[J.NAVIGATE]:{target:q.TRANSITION_STARTED,update:la},[J.COMPLETE]:{target:q.READY,when:ia,update:oa},[J.CANCEL]:q.READY,[J.FAIL]:{target:q.READY,when:ra},[J.DISPOSE]:{target:q.DISPOSED,update:Y}},[q.DISPOSED]:{}};function da(){return new ta({initial:q.IDLE,context:na(),transitions:ua})}const X=`TREE_CHANGED`;function fa(e){return e instanceof Error?e:Error(String(e))}function pa(e,t,n){return new Promise((r,i)=>{let a=()=>{let e=n.reason;i(e instanceof U&&e.code===g.TRANSITION_CANCELLED?e:new U(g.TRANSITION_CANCELLED,{reason:e}))};if(n.aborted){a();return}n.addEventListener(`abort`,a,{once:!0}),Promise.allSettled(e).then(e=>{if(n.removeEventListener(`abort`,a),n.aborted)return;if(t!==void 0){i(fa(t));return}let o=e.find(e=>e.status===`rejected`);if(o!==void 0){i(fa(o.reason));return}r()})})}function ma(e,t,n){return e.addEventListener(`abort`,t,{once:!0}),()=>{n(),e.removeEventListener(`abort`,t)}}function ha({signal:e,...t}){return t}var ga=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(b.ROUTER_START)}finally{this.#i--}}emitRouterStop(){this.#t.emit(b.ROUTER_STOP)}emitTransitionStart(e,t,n){this.#i++;try{this.#t.emit(b.TRANSITION_START,e,t)}finally{this.#i--}}emitTransitionSuccess(e,t,n){this.#i++;try{this.#t.emit(b.TRANSITION_SUCCESS,e,t,n)}finally{this.#i--}}emitTransitionError(e,t,n){this.#i++;try{this.#t.emit(b.TRANSITION_ERROR,e,t,n)}finally{this.#i--}}emitTransitionCancel(e,t){this.#i++;try{this.#t.emit(b.TRANSITION_CANCEL,e,t)}finally{this.#i--}}emitTransitionLeaveApprove(e,t){this.#i++;try{this.#t.emit(b.TRANSITION_LEAVE_APPROVE,e,t)}finally{this.#i--}}isProcessing(){return this.#i>0}emitTreeChanged(e){this.#t.emit(X,e)}isEmittingTreeChanged(){return this.#t.isDispatching(X)}subscribeTreeChanged(e){if(this.isDisposed())throw new U(g.ROUTER_DISPOSED);return this.#t.on(X,t=>{e(t)})}treeChangedListenerCount(){return this.#t.listenerCount(X)}sendStart(){this.#e.send(J.START)}sendStop(){this.#e.send(J.STOP)}sendDispose(){this.#e.send(J.DISPOSE)}sendStarted(){this.#e.send(J.STARTED)}sendNavigate(e){return this.#e.send(J.NAVIGATE,e)===q.TRANSITION_STARTED}canCommitTransition(e){return this.#e.canSend(J.COMPLETE,e)}sendComplete(e){this.#e.send(J.COMPLETE,e)}sendLeaveApprove(e){this.#e.send(J.LEAVE_APPROVE,e)}sendFail(e,t,n){this.#e.send(J.FAIL,{nav:n,fromState:e,error:t})}sendCancel(e,t){this.#e.send(J.CANCEL,{fromState:e,reason:t})}systemCommit(e){let{toState:t}=e,n={name:t.name,params:D(void 0,t.params,x),search:D(void 0,t.search,S),path:t.path,context:{...t.context},...t.transition!==void 0&&{transition:D(void 0,t.transition,x)}};if(!this.#e.canSend(J.SYSTEM_COMMIT))throw this.#o();return this.#e.send(J.SYSTEM_COMMIT,{...e,toState:n}),n}canBeginTransition(){return this.#e.canSend(J.NAVIGATE)}canStart(){return this.#e.canSend(J.START)}canCancel(){return this.#e.canSend(J.CANCEL)}isActive(){let e=this.#e.getState();return e!==q.IDLE&&e!==q.DISPOSED}isDisposed(){return this.#e.getState()===q.DISPOSED}isTransitioning(){let e=this.#e.getState();return e===q.TRANSITION_STARTED||e===q.LEAVE_APPROVED}isLeaveApproved(){return this.#e.getState()===q.LEAVE_APPROVED}isReady(){return this.#e.getState()===q.READY}isStarting(){return this.#e.getState()===q.STARTING}isIdle(){return this.#e.getState()===q.IDLE}addEventListener(e,t){return this.#a(e,`addEventListener`),this.#t.on(e,t)}subscribe(e){if(this.isDisposed())throw new U(g.ROUTER_DISPOSED);return this.#a(b.TRANSITION_SUCCESS,`subscribe`),this.#t.on(b.TRANSITION_SUCCESS,(t,n)=>e({route:t,previousRoute:n}))}subscribeLeave(e){if(this.isDisposed())throw new U(g.ROUTER_DISPOSED);this.#r.push(e);let t=!1;return()=>{if(t)return;t=!0;let n=this.#r.indexOf(e);n!==-1&&this.#r.splice(n,1)}}hasLeaveListeners(){return this.#r.length>0}hasPreCommitListeners(){return this.#t.listenerCount(b.TRANSITION_START)>0||this.#t.listenerCount(b.TRANSITION_LEAVE_APPROVE)>0}awaitLeaveListeners(e,t,n){if(t===void 0)return;let r=Object.freeze({route:t,nextRoute:e,signal:n}),i,a,o=[...this.#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 fa(a);return}return pa(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=ma(t,()=>{this.sendCancelIfPossible(this.#e.getContext().current,t.reason)},()=>{e.detachExternalBridge=void 0})),Zi}#a(e,t){let n=this.#n?.();n&&n.eventBus.validateCountThresholds(this.#t.listenerCount(e)+1,e,t)}#o(){if(this.isDisposed())return new U(g.ROUTER_DISPOSED);let e;return e=this.isTransitioning()?`[router] cannot commit a state while a transition is in flight — the navigation in progress commits its own`:this.isStarting()?`[router] cannot commit before the start navigation does — the boot would overwrite it; await start() first`:`[router] cannot commit a state before the router has started`,new U(g.ROUTER_NOT_STARTED,{message:e})}#s(){let e=this.#e;e.on(q.STARTING,J.STARTED,()=>{this.emitRouterStart()}),e.on(q.READY,J.STOP,()=>{this.emitRouterStop()});let t=e=>{let t=e.externalSignal!==void 0&&(this.hasLeaveListeners()||this.hasPreCommitListeners())?this.bridgeExternalSignal(e):Zi;this.emitTransitionStart(e.toState,e.fromState,t)};e.on(q.READY,J.NAVIGATE,t),e.on(q.TRANSITION_STARTED,J.NAVIGATE,t),e.on(q.LEAVE_APPROVED,J.NAVIGATE,t),e.on(q.TRANSITION_STARTED,J.LEAVE_APPROVE,e=>{this.emitTransitionLeaveApprove(e.toState,e.fromState)}),e.on(q.LEAVE_APPROVED,J.COMPLETE,e=>{e.detachExternalBridge?.(),this.emitTransitionSuccess(e.toState,e.fromState,e.externalSignal===void 0?e.opts:ha(e.opts))});let n=e=>{let{fromState:t,reason:n}=e,r=this.#e.getContext().inflight,i=n??new U(g.TRANSITION_CANCELLED);r.cancelReason=i,r.controller?.abort(i),r.detachExternalBridge?.(),this.emitTransitionCancel(r.toState,t)};e.on(q.TRANSITION_STARTED,J.CANCEL,n),e.on(q.LEAVE_APPROVED,J.CANCEL,n),e.on(q.READY,J.SYSTEM_COMMIT,e=>{this.emitTransitionSuccess(e.toState,e.fromState,e.opts)});let r=e=>{let t=this.#e.getContext().inflight;t?.detachExternalBridge?.(),this.emitTransitionError(t?.toState,e.fromState,e.error)};e.on(q.LEAVE_APPROVED,J.FAIL,r),e.on(q.TRANSITION_STARTED,J.FAIL,r),e.on(q.STARTING,J.FAIL,e=>{this.emitTransitionError(void 0,e.fromState,e.error)})}};const _a=new U(g.ROUTER_ALREADY_STARTED),va={maxListeners:0,warnListeners:0};var ya=class{#e=new Map;#t=new Set;#n=null;#r=va;#i;#a;constructor(e){e?.limits&&(this.#r=e.limits),this.#i=e?.onListenerError??null,this.#a=e?.onListenerWarn??null}static validateCallback(e,t){if(typeof e!=`function`)throw TypeError(`Expected callback to be a function for event ${t}`)}setLimits(e){this.#r=e}on(e,t){let n=this.#e.get(e),r=n?.size??0;if(n?.has(t))throw Error(`Duplicate listener for "${e}"`);let{maxListeners:i,warnListeners:a}=this.#r;if(i!==0&&r>=i)throw Error(`Listener limit (${i}) reached for "${e}"`);a!==0&&r===a&&this.#a!==null&&(this.#n??=new Set,this.#n.has(e)||(this.#a(e,a),this.#n.add(e)));let o=n;return o===void 0&&(o=new Set,this.#e.set(e,o)),o.add(t),()=>{this.off(e,t)}}off(e,t){let n=this.#e.get(e);n&&(n.delete(t),n.size===0&&(this.#e.delete(e),this.#n?.delete(e)))}emit(e,t,n,r,i){let a=this.#e.get(e);if(!a||a.size===0||this.#t.has(e))return;let o=arguments.length-1;this.#t.add(e);try{if(a.size===1){let[s]=a;this.#o(e,s,o,t,n,r,i)}else{let s=[...a];for(let a of s)this.#o(e,a,o,t,n,r,i)}}finally{this.#t.delete(e)}}clearAll(){this.#e.clear(),this.#n=null}listenerCount(e){return this.#e.get(e)?.size??0}isDispatching(e){return this.#t.has(e)}#o(e,t,n,r,i,a,o){try{let s=this.#s(t,n,r,i,a,o);s!=null&&typeof s.then==`function`&&Promise.resolve(s).catch(t=>{this.#i?.(e,t)})}catch(t){this.#i?.(e,t)}}#s(e,t,n,r,i,a){switch(t){case 0:return e();case 1:return e(n);case 2:return e(n,r);case 3:return e(n,r,i);default:return e(n,r,i,a)}}};const ba=Object.freeze({log:0,warn:1,error:2}),xa=Object.freeze({all:0,"warn-error":1,"error-only":2,none:3}),Sa=Object.hasOwn;var Ca=class{#e={level:`all`,callbackIgnoresLevel:!1};#t=0;#n=!1;constructor(e){e&&this.configure(e)}configure(e){let t=e.level;if(t!==void 0){if(!Sa(xa,t))throw Error(`Invalid log level: "${t}". Valid levels are: ${Object.keys(xa).join(`, `)}`);this.#e.level=t,this.#t=xa[t]}Sa(e,`callback`)&&(this.#e.callback=e.callback);let n=e.callbackIgnoresLevel;n!==void 0&&(this.#e.callbackIgnoresLevel=n)}getConfig(){return{level:this.#e.level,callback:this.#e.callback,callbackIgnoresLevel:this.#e.callbackIgnoresLevel}}log(e,t,...n){this.#r(`log`,e,t,n)}warn(e,t,...n){this.#r(`warn`,e,t,n)}error(e,t,...n){this.#r(`error`,e,t,n)}#r(e,t,n,r){if(this.#e.level===`none`&&!this.#e.callbackIgnoresLevel)return;let i=ba[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 wa(e){let t=Ta(e),n=ja(e),r=()=>f(e.router).validator;Ea(e),Da(e,r),Oa(e,t,r),ka(e,n,r),Aa(e,t,r),Ma(e,n),Na(e),Pa(e,n)}function Ta(e){let{router:t,dependenciesStore:n}=e,r=e=>n.dependencies[e];return e=>e(t,r)}function Ea(e){e.dependenciesStore.limits=e.limits,e.eventBus.setLimits({maxListeners:e.limits.maxListeners,warnListeners:e.limits.warnListeners})}function Da(e,t){e.eventBus.setValidatorAccessor(t)}function Oa(e,t,n){let r={logger:f(e.router).logger,compileFactory:t,getValidator:n};e.routeLifecycle.setDependencies(r)}function ka(e,t,n){let r={logger:f(e.router).logger,getValidator:n,port:t,addActivateGuard:(t,n,r)=>{e.routeLifecycle.addCanActivate(t,n,!0,r)},addDeactivateGuard:(t,n,r)=>{e.routeLifecycle.addCanDeactivate(t,n,!0,r)},compileGuard:(t,n)=>e.routeLifecycle.compileGuardFactory(t,n),getState:()=>e.state.get(),areStatesEqual:(t,n,r)=>e.state.areStatesEqual(t,n,r),getDependency:t=>e.dependenciesStore.dependencies[t]};e.routes.setDependencies(r),e.routes.setLifecycleNamespace(e.routeLifecycle)}function Aa(e,t,n){let r={logger:f(e.router).logger,addEventListener:(t,n)=>e.eventBus.addEventListener(t,n),canNavigate:()=>e.eventBus.canBeginTransition(),compileFactory:t,getValidator:n};e.plugins.setDependencies(r)}function ja(e){let t=f(e.router),n=e.routes.getStore(),r=(e,n)=>{t.validator?.state.reportUndeclaredParamKey(e,n)},i=(e,n)=>{t.validator?.state.reportDroppedQueryKey(e,n)};return{resolveForward:(e,n,r)=>t.forwardState(e,n,r),defaultParams:e=>n.config.defaultParams[e],defaultSearch:e=>n.config.defaultSearch[e],buildPath:(e,n,r)=>t.buildPath(e,n,r),queryNames:t=>e.routes.getQueryParams(t),pathNames:t=>e.routes.hasRoute(t)?e.routes.getUrlParams(t):void 0,admitsUndeclaredQuery:()=>e.options.get().queryParamsMode===`loose`,get reportDroppedQueryKey(){return t.validator?i:void 0},get reportUndeclaredParamKey(){return t.validator?r:void 0}}}function Ma(e,t){let n={logger:f(e.router).logger,getOptions:()=>e.options.get(),hasRoute:t=>e.routes.hasRoute(t),getQueryParams:t=>e.routes.getQueryParams(t),getMetaForState:t=>e.routes.getMetaForState(t),getState:()=>e.state.get(),buildNavigateState:(n,r,i)=>{f(e.router).validator?.routes.validateStateBuilderArgs(n,r,`navigate`);let a=P(t,n,r,i,{diagnoseUndeclared:!0});if(e.routes.getMetaForState(a.name)!==void 0)return I(a,{path:F(a,t),skipFreeze:!0})},resolveDefault:()=>{let t=e.options.get(),n=f(e.router),r=Tn(t.defaultRoute,t=>e.dependenciesStore.dependencies[t]),i=Tn(t.defaultParams,t=>e.dependenciesStore.dependencies[t]),a=Tn(t.defaultSearch,t=>e.dependenciesStore.dependencies[t]);return typeof t.defaultRoute==`function`&&n.validator?.options.validateResolvedDefaultRoute(r,n.routeGetStore()),{route:r,params:i,search:a}},startTransition:t=>e.eventBus.sendNavigate(t),systemCommit:(t,n,r)=>e.eventBus.systemCommit({toState:t,fromState:n,opts:r}),cancelNavigation:t=>{e.eventBus.sendCancelIfPossible(e.state.get(),t)},bridgeExternalSignal:t=>{e.eventBus.bridgeExternalSignal(t)},canCommitTransition:t=>e.eventBus.canCommitTransition(t)?qi:void 0,sendTransitionDone:t=>{e.eventBus.sendComplete(t)},sendTransitionFail:(t,n,r)=>{e.eventBus.sendFail(t,n,r)},emitTransitionError:(t,n,r)=>{e.eventBus.emitTransitionError(t,n,r)},sendLeaveApprove:t=>{e.eventBus.sendLeaveApprove(t)},canNavigate:()=>e.eventBus.canBeginTransition(),isStarting:()=>e.eventBus.isStarting(),getLifecycleFunctions:()=>e.routeLifecycle.getFunctions(),canDeactivateCurrent:(t,n,r)=>e.routeLifecycle.canNavigateTo(t,[],n,r),isTransitioning:()=>e.eventBus.isTransitioning(),clearCanDeactivate:(t,n)=>{e.routeLifecycle.clearCanDeactivate(t,`external`)},hasLeaveListeners:()=>e.eventBus.hasLeaveListeners(),hasPreCommitListeners:()=>e.eventBus.hasPreCommitListeners(),awaitLeaveListeners:(t,n,r)=>e.eventBus.awaitLeaveListeners(t,n,r)};e.navigation.setDependencies(n)}function Na(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 Pa(e,t){e.state.setDependencies({port:()=>t,getUrlParams:t=>e.routes.getUrlParams(t)})}const Z=Object.freeze({});var Fa=class r{#e;#t;#n;#r;#i;#a;#o;#s;#c;#l;#u;constructor(n=[],a={},o={}){let{logger:s,...l}=a;s&&me(s);let u=new Ca(s);this.#u=e=>{fi(e)||u.error(`router.start`,`Unexpected start error`,e)},Dn.validateOptionsIsObject(a),le(o),n.length>0&&ue(n),this.#e=new Dn(l),this.#t=xe(l.limits),this.#n=Ce(o),this.#r=new kn,this.#i=new ti(n,za(this.#e.get()),u),this.#a=new Hn,this.#o=new Fn,this.#s=new Ki,this.#c=new Xi;let d=da();this.#r.setContext(d.getContext());let f=new ya({onListenerError:(e,t)=>{u.error(`Router`,`Error in listener for ${e}:`,t)},onListenerWarn:(e,t)=>{u.warn(`router.addEventListener`,`Event "${e}" has ${t} listeners — possible memory leak`)}});this.#l=new ga({routerFSM:d,emitter:f});let p=new Map,m=i(`forwardState`,(e,t,n)=>this.#i.forwardState(e,t,n),p);t(this,{logger:u,makeState:(e,t,n,r)=>this.#r.makeState(e,t,n,r),getMetaForState:e=>this.#i.getMetaForState(e),getQueryParams:e=>this.#i.getQueryParams(e),forwardState:((e,t,n)=>{let r=m(e,t,n),i=r.name,a=r.params;return c(`forwardState`,i,a,this.#i.getQueryParams(i),()=>i===e?"the `params` bag leaving the forwardState chain":`the \`params\` bag leaving the forwardState chain (forwarded here from "${e}")`),{name:i,params:a??x,search:r.search}}),buildStateResolved:(e,t)=>this.#i.buildStateResolved(e,t),port:()=>this.#i.getPort(),matchPath:(e,t)=>this.#i.matchPath(e,t),getOptions:()=>this.#e.get(),addEventListener:(e,t)=>this.#l.addEventListener(e,t),treeChanged:{emit:e=>{this.#l.emitTreeChanged(e)},subscribe:e=>this.#l.subscribeTreeChanged(e),listenerCount:()=>this.#l.treeChangedListenerCount(),isEmitting:()=>this.#l.isEmittingTreeChanged()},buildPath:i(`buildPath`,(e,t,n)=>this.#i.buildPath(e,t??x,n,this.#e.get()),p),emitTransitionError:e=>{this.#l.emitTransitionError(void 0,this.#r.get(),e)},navigateToNotFound:(e,t)=>this.#s.navigateToNotFound(e,t),start:e(`start`,e=>this.#c.start(e),p),navigateToState:(e,t)=>(this.#p(),r.#d(this.#s.navigateToState(e,t??Z))),interceptors:p,setRootPath:e=>{this.#i.setRootPath(e)},getRootPath:()=>this.#i.getStore().rootPath,getTree:()=>this.#i.getStore().tree,isDisposed:()=>this.#l.isDisposed(),validator:null,dependenciesGetStore:()=>this.#n,getCloneState:()=>({options:{...this.#e.get()},dependencies:{...this.#n.dependencies},pluginFactories:this.#o.getAll(),loggerConfig:u.getConfig(),limits:this.#t}),routeGetStore:()=>this.#i.getStore(),getStateName:()=>this.#r.get()?.name,isTransitioning:()=>this.#l.isTransitioning(),systemCommit:(e,t,n)=>this.#l.systemCommit({toState:e,fromState:t,opts:n}),routerExtensions:[],contextClaimRecords:new Set,hydrationState:null}),wa({router:this,options:this.#e,limits:this.#t,dependenciesStore:this.#n,state:this.#r,routes:this.#i,routeLifecycle:this.#a,plugins:this.#o,navigation:this.#s,lifecycle:this.#c,eventBus:this.#l}),this.isActiveRoute=this.isActiveRoute.bind(this),this.buildPath=this.buildPath.bind(this),this.getState=this.getState.bind(this),this.getPreviousState=this.getPreviousState.bind(this),this.areStatesEqual=this.areStatesEqual.bind(this),this.shouldUpdateNode=this.shouldUpdateNode.bind(this),this.isActive=this.isActive.bind(this),this.start=this.start.bind(this),this.stop=this.stop.bind(this),this.dispose=this.dispose.bind(this),this.canNavigateTo=this.canNavigateTo.bind(this),this.usePlugin=this.usePlugin.bind(this),this.navigate=this.navigate.bind(this),this.navigateToDefault=this.navigateToDefault.bind(this),this.navigateToNotFound=this.navigateToNotFound.bind(this),this.subscribe=this.subscribe.bind(this),this.subscribeLeave=this.subscribeLeave.bind(this),this.isLeaveApproved=this.isLeaveApproved.bind(this);try{this.#i.flushPendingGuards()}catch(e){throw this.dispose(),e}}isActiveRoute(e,t,n,r,i){return f(this).validator?.routes.validateIsActiveRouteArgs(e,t,r,i),f(this).validator?.routes.validateRouteName(e,`isActiveRoute`),e===``?(f(this).logger.warn(`real-router`,`isActiveRoute("") called with empty string. Root node is not considered a parent of any route.`),!1):this.#i.isActiveRoute(e,t,n,r,i)}buildPath(e,t,n){let r=f(this);return r.validator?.routes.validateBuildPathArgs(e),r.validator?.navigation.validateParams(t,`buildPath`),r.buildPath(e,be(t,x),n)}getState(){return this.#r.get()}getPreviousState(){return this.#r.getPrevious()}areStatesEqual(e,t,n=!0){return f(this).validator?.state.validateAreStatesEqualArgs(e,t,n),this.#r.areStatesEqual(e,t,n)}shouldUpdateNode(e){return f(this).validator?.routes.validateShouldUpdateNodeArgs(e),ti.shouldUpdateNode(e,e=>this.#i.getMetaForState(e))}isActive(){return this.#l.isActive()}start(e){let t=this.#f(e);return t.catch(this.#u),t}stop(){return this.#l.sendCancelIfPossible(this.#r.get()),!this.#l.isReady()&&!this.#l.isTransitioning()&&!this.#l.isStarting()||this.#l.sendStop(),this}dispose(){if(this.#l.isDisposed())return;this.#l.sendCancelIfPossible(this.#r.get()),(this.#l.isReady()||this.#l.isTransitioning())&&this.#l.sendStop(),this.#l.sendDispose(),this.#l.clearAll(),this.#o.disposeAll();let e=f(this);for(let t of e.routerExtensions)for(let e of t.keys)delete this[e];e.routerExtensions.length=0,e.contextClaimRecords.clear(),e.interceptors.clear(),this.#i.clearRoutes(),this.#a.clearAll(),this.#n.dependencies=Object.create(null),this.#h()}canNavigateTo(e,t,n){let r=f(this);if(r.validator?.routes.validateRouteName(e,`canNavigateTo`),r.validator?.navigation.validateParams(t,`canNavigateTo`),!this.#i.hasRoute(e)||a(t,this.#i.getQueryParams(e))!==void 0)return!1;let i=this.#i.getPort(),o;try{o=P(i,e,t??x,n)}catch(t){return r.logger.warn(`router.canNavigateTo`,`Resolving route "${e}" threw while answering the predicate; treating the route as unreachable.`,t),!1}let s;try{s=I(o,{path:F(o,i),skipFreeze:!0})}catch{return!1}let c=this.#r.get(),{toDeactivate:l,toActivate:u}=H(s,c,e=>this.#i.getMetaForState(e));return this.#a.canNavigateTo(l,u,s,c)}usePlugin(...e){if(this.#l.isDisposed())throw new U(g.ROUTER_DISPOSED);let t=e.filter(Boolean);if(t.length===0)return()=>{};let n=f(this);n.validator?.plugins.validatePluginLimit(this.#o.count(),this.#t);for(let e of t)n.validator?.plugins.validateNoDuplicatePlugins(e,this.#o.getAll());return this.#o.use(...t)}subscribe(e){return ga.validateSubscribeListener(e),this.#l.subscribe(e)}subscribeLeave(e){return ga.validateSubscribeLeaveListener(e),this.#l.subscribeLeave(e)}isLeaveApproved(){return this.#l.isLeaveApproved()}navigate(e,t,i,a){this.#p();let o=f(this),s,c,l,u;return typeof e==`object`&&e?(s=e.name,c=e.params,l=e.search,u=t??Z):(s=e,c=t,l=i,u=a??Z),n(o,`navigate`,s,c),o.validator?.navigation.validateNavigateArgs(s),o.validator?.navigation.validateParams(c,`navigate`),o.validator?.navigation.validateNavigationOptions(u,`navigate`),r.#d(this.#s.navigate(s,c??x,l,u))}navigateToDefault(e){this.#p();let t=f(this);t.validator?.navigation.validateNavigateToDefaultArgs(e);let n=e??Z;return t.validator?.navigation.validateNavigationOptions(n,`navigateToDefault`),r.#d(this.#s.navigateToDefault(n))}navigateToNotFound(e){if(this.#p(),!this.#l.isActive())throw new U(g.ROUTER_NOT_STARTED);if(e!==void 0&&typeof e!=`string`)throw TypeError(`[router.navigateToNotFound] path must be a string, got ${typeof e}`);if(e!==void 0)return this.#s.navigateToNotFound(e);let t=this.#r.get();if(t===void 0)throw new U(g.ROUTER_NOT_STARTED,{message:`[router.navigateToNotFound] cannot derive the path before the start navigation commits — pass an explicit path`});return this.#s.navigateToNotFound(t.path)}static#d(e){return e instanceof Promise?e:Promise.resolve(e)}#f(e){if(!this.#l.canStart())return Promise.reject(_a);f(this).validator?.navigation.validateStartArgs(e),this.#l.sendStart();let t;try{let n=f(this).start(e);t=typeof n?.then==`function`?n:Promise.reject(TypeError("[router.start] a `start` interceptor returned without calling next(). Every start interceptor must return `next(path)`."))}catch(e){t=Promise.reject(e)}return t.catch(e=>this.#m(e))}#p(){if(this.#l.isProcessing())throw new U(g.REENTRANT_NAVIGATION,{message:`[router] cannot start a navigation from inside a router event listener — the nested navigation would commit a state the outer one overwrites. Defer it: queueMicrotask(() => router.navigate(...)), await the current transition, or use an async listener.`});if(this.#s.isPreparing())throw new U(g.REENTRANT_NAVIGATION,{message:`[router] cannot start a navigation from inside a forwardState/buildPath 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(...)).`})}#m(e){throw this.#l.isReady()&&this.#r.get()===void 0?this.#l.sendStop():this.#l.isStarting()&&this.#l.sendFail(void 0,e),e}#h(){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 new U(g.ROUTER_DISPOSED)}const Ia=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 La(e){if(e==null)return`default`;try{return String(e)}catch(e){throw TypeError(`[router.constructor] Invalid "urlParamsEncoding": coercing it threw.`,{cause:e})}}function Ra(e){if(!e)return Ia;let t=$(`arrayFormat`,e),n=$(`booleanFormat`,e),r=$(`nullFormat`,e),i=$(`numberFormat`,e);return Object.freeze({...t!==void 0&&{arrayFormat:t},...n!==void 0&&{booleanFormat:n},...r!==void 0&&{nullFormat:r},...i!==void 0&&{numberFormat:i}})}function za(e){return Object.freeze({strictTrailingSlash:e.trailingSlash===`strict`,caseSensitive:e.caseSensitive,strictQueryParams:e.queryParamsMode===`strict`,urlParamsEncoding:La(e.urlParamsEncoding),queryParams:Ra(e.queryParams)})}export{v as A,F as C,ue as D,Vt as E,b as M,_ as O,I as S,Bt as T,ar as _,Er as a,Zn as b,Tr as c,Or as d,kr as f,fr as g,jr as h,Mr as i,g as j,ee as k,R as l,dr as m,U as n,z as o,Nr as p,H as r,Sr as s,Fa as t,Cr as u,ir as v,P as w,Xn as x,Kn as y};
2
- //# sourceMappingURL=Router-G-_V_D0a.mjs.map
1
+ import{c as e,d as t,f as n,h as r,l as i,m as a,n as o,o as s,p as c,r as l,s as u,t as d,u as f}from"./buildParamMeta-D99tL6t-.mjs";const p=Object.hasOwn;function m(e,t,n){if(e===void 0||n.length===0)return e;let r,i=!1;for(let[a,o]of Object.entries(e)){if(p(t,a)&&t[a]!==void 0&&n.includes(a)){i=!0;continue}r??={},r[a]=o}return i?r:e}function h(e,t,n){for(let[r,i]of Object.entries(e))c(n,r,i,t(r),"this route's `defaultParams`","Move it to `defaultSearch`")}const g=Object.freeze({ROUTER_NOT_STARTED:`NOT_STARTED`,NO_START_PATH_OR_STATE:`NO_START_PATH_OR_STATE`,ROUTER_ALREADY_STARTED:`ALREADY_STARTED`,ROUTE_NOT_FOUND:`ROUTE_NOT_FOUND`,SAME_STATES:`SAME_STATES`,CANNOT_DEACTIVATE:`CANNOT_DEACTIVATE`,CANNOT_ACTIVATE:`CANNOT_ACTIVATE`,TRANSITION_ERR:`TRANSITION_ERR`,TRANSITION_CANCELLED:`CANCELLED`,ROUTER_DISPOSED:`DISPOSED`,PLUGIN_CONFLICT:`PLUGIN_CONFLICT`,CONTEXT_NAMESPACE_ALREADY_CLAIMED:`CONTEXT_NAMESPACE_ALREADY_CLAIMED`,REENTRANT_NAVIGATION:`REENTRANT_NAVIGATION`,REENTRANT_TREE_MUTATION:`REENTRANT_TREE_MUTATION`,ROUTER_NOT_STOPPED:`NOT_STOPPED`,WRONG_CHANNEL:`WRONG_CHANNEL`}),_=`@@router/UNKNOWN_ROUTE`,ee=`__proto__`,v={UNKNOWN_ROUTE:_},y={ROUTER_START:`onStart`,ROUTER_STOP:`onStop`,TRANSITION_START:`onTransitionStart`,TRANSITION_LEAVE_APPROVE:`onTransitionLeaveApprove`,TRANSITION_CANCEL:`onTransitionCancel`,TRANSITION_SUCCESS:`onTransitionSuccess`,TRANSITION_ERROR:`onTransitionError`},b={ROUTER_START:`$start`,ROUTER_STOP:`$stop`,TRANSITION_START:`$$start`,TRANSITION_LEAVE_APPROVE:`$$leaveApprove`,TRANSITION_CANCEL:`$$cancel`,TRANSITION_SUCCESS:`$$success`,TRANSITION_ERROR:`$$error`},te={maxDependencies:100,maxPlugins:50,maxListeners:1e4,warnListeners:1e3,maxLifecycleHandlers:200},x=Object.freeze({}),S=Object.freeze({}),ne=Object.freeze({deactivated:Object.freeze([]),activated:Object.freeze([]),intersection:``}),re=Object.freeze({phase:`activating`,reason:`success`,segments:ne});function ie(e,t,n){let r,i=!1;for(let[a,o]of Object.entries(e))t.includes(a)?(r??={},r[a]=o):(i=!0,n?.(a));return i?Object.freeze(r??S):e}const ae=Object.keys,oe=Object.getOwnPropertyDescriptor,se=Object.getPrototypeOf,ce=Object;function le(e){if(!e||typeof e!=`object`)throw TypeError(`dependencies must be a plain object`);let t=se(e);if(t!==null&&t.constructor!==ce)throw TypeError(`dependencies must be a plain object`);for(let t of ae(e))if(oe(e,t)?.get)throw TypeError(`dependencies cannot contain getters: "${t}"`)}function ue(e,t){for(let n of e){let e=n;if(typeof e!=`object`||!e||Array.isArray(e))throw TypeError(`route must be a non-array object`);t?.routes.guardRouteCallbacks(n),t?.routes.guardNoAsyncCallbacks(n);let r=n.children;r&&ue(r,t)}}const de=new Set([`all`,`warn-error`,`error-only`,`none`]);function fe(e){return typeof e==`string`&&de.has(e)}function pe(e){return typeof e==`string`?`"${e}"`:typeof e==`object`?JSON.stringify(e):String(e)}function me(e){if(typeof e!=`object`)throw TypeError(`Logger config must be an object`);let t=e;for(let e of ae(t))if(e!==`level`&&e!==`callback`&&e!==`callbackIgnoresLevel`)throw TypeError(`Unknown logger config property: "${e}"`);if(`level`in t&&t.level!==void 0&&!fe(t.level))throw TypeError(`Invalid logger level: ${pe(t.level)}. Expected: "all" | "warn-error" | "error-only" | "none"`);if(`callback`in t&&t.callback!==void 0&&typeof t.callback!=`function`)throw TypeError(`Logger callback must be a function, got ${typeof t.callback}`);if(`callbackIgnoresLevel`in t&&t.callbackIgnoresLevel!==void 0&&typeof t.callbackIgnoresLevel!=`boolean`)throw TypeError(`Logger callbackIgnoresLevel must be a boolean, got ${typeof t.callbackIgnoresLevel}`)}const C=Object.freeze,w=Object.hasOwn;function T(e,t){if(e===void 0)return ge(t);let n={};for(let t in e){if(t===`__proto__`||!w(e,t))continue;let r=e[t];r!==void 0&&(n[t]=r)}if(t!==void 0)for(let e in t){if(e===`__proto__`||!w(t,e))continue;let r=t[e];r!==void 0&&(n[e]=r)}return n}function he(e){let t={};for(let n in e){if(n===`__proto__`||!w(e,n))continue;let r=e[n];r!==void 0&&(t[n]=r)}return t}function ge(e){if(e===void 0)return;let t;for(let n in e)!w(e,n)||e[n]!==void 0||(t??=he(e),delete t[n]);return t??e}const _e=new Set([`string`,`number`,`boolean`]);function ve(e){return _e.has(typeof e)}function E(e,t){if(e===t)return!0;if(Array.isArray(e)){if(!Array.isArray(t))return e.length===1&&E(e[0],t);if(e.length!==t.length)return!1;for(let n=0;n<e.length;n++)if(!E(e[n],t[n]))return!1;return!0}return Array.isArray(t)?t.length===1&&E(e,t[0]):ve(e)&&ve(t)&&String(e)===String(t)}function ye(e){return C(e)}function D(e,t,n,r=!1){if(e!==void 0)return C(T(e,t));if(t===void 0||t===n)return n;if(r)return C(t);let i=T(void 0,t);if(i!==t)return C(i);let a={};for(let e in t){if(e===`__proto__`||!w(t,e))continue;let n=t[e];n!==void 0&&(a[e]=n)}return C(a)}function be(e,t){if(e===void 0)return e;let n;for(let t in e){if(!w(e,t)||t===`__proto__`)continue;let r=e[t];r!==void 0&&(n??={},n[t]=r)}return n??t}function xe(e={}){let t={...te,...e};return Object.freeze({maxDependencies:Number(t.maxDependencies),maxPlugins:Number(t.maxPlugins),maxListeners:Number(t.maxListeners),warnListeners:Number(t.warnListeners),maxLifecycleHandlers:Number(t.maxLifecycleHandlers)})}const Se=Object.keys;function Ce(e={}){let t=Object.create(null),n=e,r=t;for(let e of Se(n)){let t=n[e];t!==void 0&&(r[e]=t)}return{dependencies:t,limits:te}}function we(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=we(t,o);o.children.push(e)}return o}function Te(e,t,n){let r=we({name:e,path:t},null);for(let e of n){let t=we(e,r);r.children.push(t)}return r}const Ee=/[^\w!$'()*+,.:;|~-]/gu,De=/[^\w!$'()*+,.:;|~-]/u,Oe=/[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?<![\uD800-\uDBFF])[\uDC00-\uDFFF]/g,ke=e=>t=>{try{return e(t)}catch{return e(t.replaceAll(Oe,`�`))}},Ae=ke(e=>e.replaceAll(Ee,e=>encodeURIComponent(e))),je={default:e=>De.test(e)?Ae(e):e,uri:ke(encodeURI),uriComponent:ke(encodeURIComponent),none:e=>e},Me={default:decodeURIComponent,uri:decodeURI,uriComponent:decodeURIComponent,none:e=>e},Ne=(e,t)=>{let n=je[t],r=String(e).split(`/`),i=n(r[0]);for(let e=1;e<r.length;e++)i+=`/`+n(r[e]);return i},Pe=Object.freeze(Object.create(null));function O(){return{staticChildren:Pe,hasChildren:!1,paramChild:void 0,splatChild:void 0,route:void 0,slashChildRoute:void 0}}function k(e){return e.length>1&&e.endsWith(`/`)?e.slice(0,-1):e}function Fe(e,t){return e===``?t:t===``?e:e+t}function Ie(e){return e>=48&&e<=57||e>=65&&e<=70||e>=97&&e<=102}function Le(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(!Ie(n)||!Ie(r))return!1;t+=3}else t++;return!0}const Re=Object.freeze([]),ze=Object.freeze(new Set),Be=Object.freeze([]),Ve=Object.freeze({}),He=Object.freeze({}),Ue=Object.freeze({});function We(e,t,n){let r=t.has(e.name);return{paramName:e.name,encoder:r?e=>Ne(e,n):je[n]}}function Ge(e,t,n,r){let i=new Set(r),a=new Set;for(let e of t){for(let t of e.paramMeta.urlParams)i.add(t);for(let t of e.paramMeta.spatParams)a.add(t)}if(i.size===0)return{buildStaticParts:[e],buildParamSlots:Be};let o=[],c=[],l=``,d=u(e),f=d.length-1;for(let[e,t]of d.entries()){let r=s(t);if(!(!(`error`in r)&&r.kind===`splat`&&e!==f)){if(e>0&&(l+=`/`),`error`in r||r.kind===`static`){l+=t;continue}o.push(l),l=``,c.push(We(r,a,n))}}return o.push(l),{buildStaticParts:o,buildParamSlots:c}}function Ke(e,t,n){throw Error(`[SegmentMatcher.registerTree] Parameter name conflict at the same path position: '${n}${e}' and '${n}${t}'. A parametric URL segment binds to a single name across every route that shares that position — the value cannot be captured under two names. Rename one so both routes agree (e.g. use '${n}${e}' in both).`)}function qe(){throw Error(`[SegmentMatcher.registerTree] Empty parameter name: a parameter marker (':' or '*') must be followed by a name (e.g. ':id', '*rest'). A name-less marker, or a trailing '?' with no parameter name, would capture under an empty key at match but emit a literal at build — the two disagree, so it is rejected.`)}function Je(e){throw Error(`[SegmentMatcher.registerTree] Fused parameter marker in segment "${e}": a ':'/'*' marker must begin a segment (e.g. 'a/:b', not 'a:b'). build extracts it as a param while the trie treats the segment as a literal — the two disagree.`)}function Ye(e){throw Error(`[SegmentMatcher.registerTree] Trailing parameter marker in segment "${e}": a param name cannot end in a bare ':' or '*' (e.g. ':y*' — the name is 'y' plus a stray marker). build/meta would capture the marker into the name while the gate rejects it as name-less — the two disagree, so it is rejected.`)}function Xe(e){throw Error(`[SegmentMatcher.registerTree] Optional params are not supported: "${e}" — declare two sibling routes instead (one with the segment, one without). The route hierarchy already expresses optionality.`)}function Ze(e){throw Error(`[SegmentMatcher.registerTree] Regex constraints are not supported: "<"/">" are reserved in path segments ("${e}"). Match the segment as a plain string and validate the value in a guard (canActivate) or app code.`)}function Qe(e){throw Error(`[SegmentMatcher.registerTree] Non-ASCII static segment "${e}": match rejects non-ASCII input and compares static keys raw, so this route would never match. Percent-encode it (e.g. "/caf%C3%A9") or use a param.`)}function $e(e,t){switch(e){case`name-less`:return qe();case`trailing-marker`:return Ye(t);case`fused-marker`:return Je(t);case`optional-removed`:return Xe(t);case`constraint-removed`:return Ze(t)}}function et(e,t){let n=new Set,r=``;for(let e of t){if(n.has(e)){r=e;break}n.add(e)}throw Error(`[SegmentMatcher.registerTree] Duplicate parameter name ':${r}' in route "${e}": a param name must be unique within a route — two positions cannot both bind ':${r}' (the second silently overwrites the first). Rename one.`)}function tt(e,t){throw Error(`[SegmentMatcher.registerTree] Invalid query-param declaration "${t}" in route "${e}": a query-param name cannot contain '<' or '>' — it would never round-trip. Rename the query param.`)}function nt(e,t){throw Error(`[SegmentMatcher.registerTree] Duplicate route path: routes "${e}" and "${t}" resolve to the same URL. The later registration would silently shadow the earlier (its deep link would resolve to the other route). Give them distinct paths.`)}function rt(e,t){throw Error(`[SegmentMatcher.registerTree] Index route "${e}" (path "/") under the splat parent "${t}" is not supported: the index sits on the splat node, which the wildcard match never reaches, so it is unreachable. Give the index a distinct path, or make the parent static.`)}function it(e){let t=s(e);return(`error`in t||t.kind===`static`)&&qe(),t.name}function at(e,t){return e.paramChild?e.paramChild.name!==t&&Ke(e.paramChild.name,t,`:`):e.paramChild={node:O(),name:t},e.paramChild.node}function ot(e,t){return e.splatChild?e.splatChild.name!==t&&Ke(e.splatChild.name,t,`*`):e.splatChild={node:O(),name:t},e.splatChild.node}function st(e,t){e.route!==void 0&&e.route!==t&&nt(e.route.name,t.name),e.route=t}function ct(e){for(let t=0;t<e.length;t++)if(e.charCodeAt(t)>=128)return!0;return!1}function lt(e,t,n){let r=k(n);if(r===`/`){st(e.root,t);return}ut(e,e.root,r,1,t)}function ut(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=mt(e,t,s),r=o+1}st(t,i)}function dt(e,t,n){n.slice(n.lastIndexOf(`/`)+1).startsWith(`*`)&&rt(t.name,n);let r=ft(e,n);r.slashChildRoute=t}function ft(e,t){return pt(e,e.root,t)}function pt(e,t,n){let r=k(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=mt(e,i,s),a=n+1}return i}function mt(e,t,n){if(n.startsWith(`*`)){let e=ot(t,it(n));return t.hasChildren=!0,e}if(n.startsWith(`:`)){let e=at(t,it(n));return t.hasChildren=!0,e}ct(n)&&Qe(n);let r=e.options.caseSensitive?n:n.toLowerCase();return r in t.staticChildren||(t.staticChildren===Pe&&(t.staticChildren=Object.create(null)),t.staticChildren[r]=O(),t.hasChildren=!0),t.staticChildren[r]}function ht(e,t,n,r,i){let a=t.fullName===``;a||r.push(t);let o=t.absolute,c=t.paramMeta===d?t.path:t.paramMeta.pathPattern,l=o&&c.startsWith(`~`)?c.slice(1):c,f=o?l:c;for(let e of u(f)){let t=s(e);`error`in t&&$e(t.error,e)}let p=f,m=o?p:Fe(n,p),h=a?i:gt(e,t,m,o?``:n,r,i);for(let n of t.children.values())ht(e,n,m,r,h);a||r.pop()}function gt(e,t,n,r,i,a){let o=xt(n,r),s=Object.freeze([...i]),c=_t(s),l=k(n),u=St(e.rootQueryParams,i),{buildStaticParts:d,buildParamSlots:f}=Ge(o?k(r):l,o?i.slice(0,-1):i,e.options.urlParamsEncoding,e.rootUrlParams),p=f.map(e=>e.paramName),m=p.length===0?ze:new Set(p);m.size!==p.length&&et(t.fullName,p),Ct(t.fullName,u);let h={name:t.fullName,parent:a,matchSegments:s,meta:c,declaredQueryParams:u,declaredQueryParamsSet:u.length===0?ze:new Set(u),hasTrailingSlash:n.length>1&&n.endsWith(`/`),buildStaticParts:d,buildParamSlots:f,buildParamNamesSet:m,cachedResult:void 0};return t.paramMeta.urlParams.length===0&&(h.cachedResult=Object.freeze({segments:h.matchSegments,params:Ve,search:He,meta:h.meta})),e.routesByName.set(t.fullName,h),o?yt(e,h,r):bt(e,h,n,l,t),h}function _t(e){let t;for(let n of e)vt(n.paramTypeMap)&&(t??={},t[n.fullName]=n.paramTypeMap);return t===void 0?Ue:Object.freeze(t)}function vt(e){for(let t in e)if(Object.hasOwn(e,t))return!0;return!1}function yt(e,t,n){dt(e,t,n);let r=k(n),i=e.options.caseSensitive?r:r.toLowerCase();e.staticCache.has(i)&&e.staticCache.set(i,t)}function bt(e,t,n,r,i){if(lt(e,t,n),i.paramMeta.urlParams.length===0){let n=e.options.caseSensitive?r:r.toLowerCase();e.staticCache.set(n,t)}}function xt(e,t){return k(e)===k(t)}function St(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?Re:n}function Ct(e,t){for(let n of t)o.test(n)&&tt(e,n)}const wt=Symbol.for(`real-router.searchParams.configFault`),Tt=Object.hasOwn,Et=Object.keys,Dt=Object.getOwnPropertyDescriptor;function Ot(e){try{return Dt(e,wt)?.configurable===!1}catch{return!1}}function kt(e){return typeof e==`string`?e:typeof e==`object`?JSON.stringify(e):String(e)}const At=Object.freeze({});var jt=class{get options(){return this.#e}#e;#t=O();#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=Tt(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:Me[this.#e.urlParamsEncoding]}registerTree(e){this.#a=e.paramMeta.queryParams,ht({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,r?.trailingSlash),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&&Tt(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(kt(r));i+=o+n[e+1]}return i}#u(e,t){return t===`always`&&!e.endsWith(`/`)?`${e}/`:t===`never`&&e!==`/`&&e.endsWith(`/`)?e.slice(0,-1):e}#d(e,t,n){if(!t||e.declaredQueryParams.length===0&&n!==`loose`)return``;let r={},i=!1;for(let n of e.declaredQueryParams)Tt(t,n)&&(r[n]=t[n],i=!0);if(n===`loose`)for(let n of Et(t))e.declaredQueryParamsSet.has(n)||e.buildParamNamesSet.has(n)||(r[n]=t[n],i=!0);return i?this.#e.buildQueryString(r):``}#f(e){if(e===``&&(e=`/`),e.codePointAt(0)!==47)return!1;let t=this.#p(e);if(t===-2)return!1;t===-3&&(e=this.#o);let n=t>=0?e.slice(0,t):e,r=t>=0?e.slice(t+1):void 0;if(r!==void 0){let e=r.indexOf(`#`);e!==-1&&(r=r.slice(0,e))}let i=k(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=At;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(Ot(e))throw e;return}if(this.#e.strictQueryParams){let t=e.declaredQueryParamsSet;for(let e of Et(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,t,n,r){let i=e,a=t.length,o=this.#s;for(;n<=a;){let e=t.indexOf(`/`,n),s=e===-1?a:e,c=t.slice(n,s),l=o?c:c.toLowerCase(),u;if(l in i.staticChildren)u=i.staticChildren[l];else if(i.paramChild){let e=i.paramChild;if(i.splatChild!==void 0){let a={[e.name]:c},o=this.#v(e.node,t,s+1,a);return o===void 0?this.#y(i.splatChild,t,n,r):(Object.assign(r,a),o)}u=e.node,r[e.name]=c}else if(i.splatChild)return this.#y(i.splatChild,t,n,r);else return;i=u,n=s+1}return i.slashChildRoute??i.route}#y(e,t,n,r){let i=e.node;if(!i.hasChildren)return r[e.name]=t.slice(n),i.route;let a={},o=this.#v(i,t,n,a);return o?(Object.assign(r,a),o):(r[e.name]=t.slice(n),i.route)}#b(e){let t=this.#c;if(!t)return!0;for(let n of Et(e)){let r=e[n];if(r.includes(`%`)){if(!Le(r))return!1;try{e[n]=t(r)}catch{return!1}}}return!0}};const Mt=Object.freeze(new Map),Nt=Object.freeze([]);function Pt(e){return e.parent?.name?`${e.parent.fullName}.${e.name}`:e.name}function Ft(e){let t=new Map;for(let n of e)t.set(n.name,n);return t}function It(e,t){let n=[],r=[];for(let i of e){let e=Lt(i,t);n.push(e),e.absolute||r.push(e)}return{childrenMap:Ft(n),nonAbsoluteChildren:r}}function Lt(e,t){let n=l(e.path),r=n.urlParams.length===0&&n.queryParams.length===0&&n.spatParams.length===0&&n.pathPattern===e.path?d:n,i=r.paramTypeMap,a={name:e.name,path:e.path,absolute:e.absolute,parent:t,children:void 0,paramMeta:r,nonAbsoluteChildren:void 0,fullName:``,paramTypeMap:i};if(a.fullName=Pt(a),e.children.length===0)a.children=Mt,a.nonAbsoluteChildren=Nt;else{let{childrenMap:t,nonAbsoluteChildren:n}=It(e.children,a);a.children=t,a.nonAbsoluteChildren=n,Object.freeze(a.nonAbsoluteChildren),Object.freeze(a.children)}return Object.freeze(i),Object.freeze(r.urlParams),Object.freeze(r.queryParams),Object.freeze(r.spatParams),Object.freeze(r),Object.freeze(a),a}function Rt(e){return Lt(e,null)}function zt(e,t,n){return Rt(Te(e,t,n))}function Bt(e){let t=e.absolute?`~${e.path}`:e.path,n={name:e.name,path:t};return e.children.size>0&&(n.children=Array.from(e.children.values(),Bt)),n}function Vt(e){return Array.from(e.children.values(),Bt)}const Ht=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)},Ut=(e,t)=>{if(e===void 0)return t.boolean.decodeUndefined();let n=t.boolean.decodeRaw(e);if(n!==null)return n;let r=Ht(e),i=t.number.decode(r);return i===null?t.boolean.decodeValue(r):i},Wt=/[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?<![\uD800-\uDBFF])[\uDC00-\uDFFF]/g,Gt=e=>{try{return encodeURIComponent(e)}catch(t){if(!(t instanceof URIError))throw t;return encodeURIComponent(String(e).replaceAll(Wt,`�`))}},A=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 Gt(e)},Kt=(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}=${A(e)}`);return a.join(`&`)},qt={none:{encodeArray:(e,t,n)=>Kt(e,t,``,n)},brackets:{encodeArray:(e,t,n)=>Kt(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}=${A(a)}`)}return r.join(`&`)},indexed:!0},comma:{encodeArray:(e,t)=>{let n=[];for(let e of t)e!==null&&n.push(A(e));return n.length===0?``:`${e}=${n.join(`,`)}`},decodeValue:e=>e.includes(`,`)?e.split(`,`):null}},Jt={none:{encode:(e,t)=>`${e}=${t}`,decodeUndefined:()=>null,decodeRaw:()=>null,decodeValue:e=>e},auto:{encode:(e,t)=>`${e}=${t}`,decodeUndefined:()=>null,decodeRaw:e=>e===`true`||e!==`false`&&null,decodeValue:e=>e},"empty-true":{encode:(e,t)=>t?e:`${e}=false`,decodeUndefined:()=>!0,decodeRaw:e=>e===`true`||e!==`false`&&null,decodeValue:e=>e}},Yt={default:{encode:e=>e},hidden:{encode:()=>``}},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}},Zt=Object.defineProperty,Qt=Object.keys,$t=Object.hasOwn,en=Symbol.for(`real-router.searchParams.configFault`),j=(e,t,n)=>{let r=typeof t==`string`?t:String(t);if(!$t(e,r)){let t=TypeError(`[router.constructor] Invalid "queryParams.${n}": "${r}" — expected ${Qt(e).map(e=>`"${e}"`).join(` | `)}`);throw Zt(t,en,{value:!0}),t}return e[r]},tn=(e,t,n,r)=>({boolean:j(Jt,t,`booleanFormat`),null:j(Yt,n,`nullFormat`),number:j(Xt,r,`numberFormat`),array:j(qt,e,`arrayFormat`)}),nn=Object.freeze({boolean:Jt.auto,null:Yt.default,number:Xt.auto,array:qt.none}),M=Object.freeze({arrayFormat:`none`,booleanFormat:`auto`,nullFormat:`default`,numberFormat:`auto`}),rn=Object.freeze({...M,strategies:nn}),an=e=>{if(!e||e.arrayFormat===void 0&&e.booleanFormat===void 0&&e.nullFormat===void 0&&e.numberFormat===void 0)return rn;let t=e.arrayFormat??M.arrayFormat,n=e.booleanFormat??M.booleanFormat,r=e.nullFormat??M.nullFormat,i=e.numberFormat??M.numberFormat;return{arrayFormat:t,booleanFormat:n,nullFormat:r,numberFormat:i,strategies:tn(t,n,r,i)}},N=e=>Gt(e),on=(e,t,n)=>{let r=N(e);switch(typeof t){case`string`:case`number`:return`${r}=${N(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}=${N(t)}`;default:return`${r}=${N(t)}`}},sn=Object.hasOwn,cn=Object.defineProperty,ln=Object.keys;function un(e,t,n){t===`__proto__`?cn(e,t,{value:n,writable:!0,enumerable:!0,configurable:!0}):e[t]=n}function dn(e,t,n,r){if(!sn(e,t)){un(e,t,r?[n]:n);return}let i=e[t];Array.isArray(i)?i.push(n):un(e,t,[i,n])}function fn(e,t,n,r,i){return Ut(r?e.slice(t+1,n):void 0,i)}function pn(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 mn(e,t,n){let{searchPart:r,nameEnd:i,nameSourceEnd:a,eqPos:o,end:s,hasValue:c,decodedName:l}=e,u=pn(r,i,a);if(u===null)return!1;let d=fn(r,o,s,c,t),f=n.get(l);return f===void 0?n.set(l,[[u,d]]):f.push([u,d]),!0}function hn(e,t,n,r,i,a,o){let s=a!==-1&&a<n,c=s?a:n,l=c,u=!1;for(let n=t;n<c;n++)if(e.codePointAt(n)===91){l=n,u=!0;break}let d=Ht(e.slice(t,l));if(!(o!==void 0&&u&&mn({searchPart:e,nameEnd:l,nameSourceEnd:c,eqPos:a,end:n,hasValue:s,decodedName:d},i,o))){if(!u&&s&&i.array.decodeValue){let t=e.slice(a+1,n),o=i.array.decodeValue(t);if(o){for(let e of o)dn(r,d,Ut(e,i),!0);return}}dn(r,d,fn(e,a,n,s,i),u)}}const gn=(e,t)=>{if(e===``||e===`?`)return{};let n={};return _n(e,n,t.strategies),n};function _n(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)),hn(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]),un(t,e,n.map(e=>e[1]))}const vn=(e,t)=>{let n=ln(e);if(n.length===0)return``;let r=[];for(let i of n){let n=e[i];if(n===void 0)continue;let a=on(i,n,t);a&&r.push(a)}return r.join(`&`)};function yn(e){let t=e?.queryParams,n=an(t);return new jt({...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=>gn(e,n),buildQueryString:e=>vn(e,n)})}const bn={defaultRoute:``,defaultParams:{},defaultSearch:{},trailingSlash:`preserve`,caseSensitive:!0,queryParamsMode:`loose`,queryParams:M,urlParamsEncoding:`default`,allowNotFound:!0,rewritePathOnMatch:!0},xn=Object.getOwnPropertyDescriptor,Sn=Object.getOwnPropertyNames,Cn=Object.freeze;function wn(e){Cn(e);for(let t of Sn(e)){let n=xn(e,t);if(!n?.enumerable)continue;let r=n.value;r&&typeof r==`object`&&r.constructor===Object&&wn(r)}return e}function Tn(e,t){return typeof e==`function`?e(t):e}function En(e){if(!e||typeof e!=`object`||Array.isArray(e))throw TypeError(`[router.constructor] options must be a plain object`)}var Dn=class{#e;constructor(e={}){this.#e=wn({...bn,...e})}static validateOptionsIsObject(e){En(e)}get(){return this.#e}};function On(e,t,n,r,i){let a=e.pathNames(t);if(a!==void 0)for(let e of Object.keys(n))!r.includes(e)&&!a.includes(e)&&i(t,e)}function P(e,t,n,r,i){let a=i?.resolveForward===!1?{name:t,params:n,search:r}:e.resolveForward(t,n,r),o=a.name,s=be(a.params,x),c=i?.diagnoseUndeclared===!0?e.reportUndeclaredParamKey:void 0;c&&On(e,o,s,e.queryNames(o),c);let l=e.defaultParams(o),u=e.defaultSearch(o);if((a.search===void 0||a.search===S)&&l===void 0&&u===void 0)return{name:o,path:s,query:S};let d=e.queryNames(o),f=e.reportDroppedQueryKey,p=D(i?.resolveForward===!1?m(u,s,d):u,be(a.search,S),S,!0);return{name:o,path:D(l,s,x,!0),query:e.admitsUndeclaredQuery()?p:ie(p,d,t=>{f!==void 0&&e.pathNames(o)!==void 0&&f(o,t)})}}function F(e,t){return t.buildPath(e.name,e.path,e.query)}function I(e,t){let n={name:e.name,params:e.path,search:e.query,path:t.path,context:{},...!t.skipFreeze&&{transition:re}};return Object.freeze(n.params),t.skipFreeze?n:ye(n)}var kn=class{#e;#t;get(){return this.#e.current}getPrevious(){return this.#e.previous}setContext(e){this.#e=e}setDependencies(e){this.#t=e}makeState(e,t,n,r){let i=this.#t.port(),a=P(i,e,t??x,n,{resolveForward:!1});return I(a,{path:r??F(a,i)})}areStatesEqual(e,t,n=!0){if(!e||!t)return!!e==!!t;if(e.name!==t.name)return!1;if(n){let n=this.#t.getUrlParams(e.name);for(let r of n)if(!E(e.params[r],t.params[r]))return!1;return!0}return An(e.params,t.params)&&An(e.search,t.search)}};function An(e,t){let n=Object.keys(e);if(n.length!==Object.keys(t).length)return!1;for(let r of n)if(!(r in t)||!E(e[r],t[r]))return!1;return!0}const jn={[y.ROUTER_START]:b.ROUTER_START,[y.ROUTER_STOP]:b.ROUTER_STOP,[y.TRANSITION_SUCCESS]:b.TRANSITION_SUCCESS,[y.TRANSITION_START]:b.TRANSITION_START,[y.TRANSITION_LEAVE_APPROVE]:b.TRANSITION_LEAVE_APPROVE,[y.TRANSITION_ERROR]:b.TRANSITION_ERROR,[y.TRANSITION_CANCEL]:b.TRANSITION_CANCEL},Mn=Object.keys(jn),Nn=`router.usePlugin`;function Pn(e){if(!(e&&typeof e==`object`)||Array.isArray(e))throw TypeError(`[router.usePlugin] Plugin factory must return an object, got ${typeof e}`);if(typeof e.then==`function`)throw TypeError(`[router.usePlugin] Async plugin factories are not supported. Factory returned a Promise instead of a plugin object.`)}var Fn=class e{#e=new Set;#t=new Set;#n;static validatePlugin(e){Pn(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(Nn,`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(Nn,`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(Nn,`Error during cleanup:`,e)}}};return this.#t.add(i),i}getAll(){return[...this.#e]}has(e){return this.#e.has(e)}disposeAll(){for(let e of this.#t)e();this.#e.clear(),this.#t.clear()}#r(e){let t=new Set;for(let n of e)t.has(n)?this.#n.getValidator()?.plugins.warnBatchDuplicates(e):t.add(n);return t}#i(t){let n=this.#n.compileFactory(t);e.validatePlugin(n),this.#n.getValidator()?.plugins.validatePluginKeys(n),Object.freeze(n);let r=[];for(let e of Mn)e in n&&(typeof n[e]==`function`?(r.push(this.#n.addEventListener(jn[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 In=()=>!0,Ln=()=>!1,Rn=()=>In,zn=()=>Ln;function Bn(e){return e?Rn:zn}function Vn(e,t,n){n===void 0?e.delete(t):e.set(t,n)}var Hn=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=!1,r){this.#f(`activate`,e,t,n,`canActivate`,r)}addCanDeactivate(e,t,n=!1,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=Object.create(null),t=Object.create(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=Object.create(null),t=Object.create(null),n=Object.create(null),r=Object.create(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`?Bn(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`?Bn(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 Vn(c,t,d),Vn(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 Un=new Set([`name`,`path`,`children`,`canActivate`,`canDeactivate`,`forwardTo`,`encodeParams`,`decodeParams`,`defaultParams`,`defaultSearch`]);function Wn(){return{decoders:Object.create(null),encoders:Object.create(null),defaultParams:Object.create(null),defaultSearch:Object.create(null),forwardMap:Object.create(null),forwardFnMap:Object.create(null)}}function Gn(e){return Object.keys(e.forwardMap).length>0||Object.keys(e.forwardFnMap).length>0}function Kn(e,t){for(let n of Object.keys(t))Object.assign(e[n],t[n])}function qn(e,t){for(let n in e)if(!E(e[n],t[n]))return!1;return!0}function Jn(e){let t={name:e.name,path:e.path};return e.children&&(t.children=e.children.map(e=>Jn(e))),t}function Yn(e,t,n){if(n.add(t),e.children)for(let r of e.children)Yn(r,`${t}.${r.name}`,n)}function Xn(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 Yn(i,a,t),t}if(i.children&&t.startsWith(`${a}.`)){let e=Xn(i.children,t,a);if(e)return e}}}function Zn(e,t){for(let n of Object.keys(e))t(n)&&delete e[n]}function Qn(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 $n(e){let t=[];for(let n of e)for(let e of n.paramMeta.urlParams)t.push(e);return t}function er(e,t,n){let r=n.get(t);if(r!==void 0)return r;let i=e.getSegmentsByName(t),a=i?$n(i):[];return n.set(t,a),a}function tr(e,t){return er(e.matcher,t,e.urlParamsCache)}function nr(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=er(e,t,n);o=a.filter(e=>!r.includes(e))}return r.set(t,o),o}function rr(e,t){return nr(e.matcher,t,e.urlParamsCache,e.queryParamsCache)}function ir(e,t,n){let r=new Map,i=new Map;h(t.defaultParams,t=>nr(e,t,r,i),n)}function ar(e,t,n=100){let r=new Set,i=[e],a=e;for(;t[a];){let e=t[a];if(r.has(e)){let t=i.indexOf(e),n=[...i.slice(t),e];throw Error(`Circular forwardTo: ${n.join(` → `)}`)}if(r.add(a),i.push(e),a=e,i.length>n)throw Error(`forwardTo chain exceeds maximum depth (${n}): ${i.join(` → `)}`)}return a}const or=Object.defineProperty,sr=Object.fromEntries;function cr(e,t,n){let r=zt(``,t,e),i=yn(n);return i.registerTree(r),{tree:r,matcher:i}}function lr(e,t=e.definitions){let n=cr(t,e.rootPath,e.matcherOptions);e.tree=n.tree,e.matcher=n.matcher,e.urlParamsCache.clear(),e.queryParamsCache.clear()}function ur(e,t){let n=cr(e.definitions,t,e.matcherOptions);ir(n.matcher,e.config,`setRootPath`),e.rootPath=t,e.tree=n.tree,e.matcher=n.matcher,e.urlParamsCache.clear(),e.queryParamsCache.clear()}function dr(e,t){lr(e,t),L(e,mr(e.config))}function fr(e){pr(e),lr(e,[])}function pr(e){Object.assign(e.config,Wn()),L(e,Object.create(null)),e.routeCustomFields=Object.create(null)}function L(e,t){e.resolvedForwardMap=t,e.hasAnyForward=Gn(e.config)}function mr(e){let t=Object.create(null);for(let n of Object.keys(e.forwardMap))t[n]=ar(n,e.forwardMap);return t}function hr(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 gr(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}".`)}hr(e.forwardTo,t),typeof e.forwardTo==`string`?n.forwardMap[t]=e.forwardTo:n.forwardFnMap[t]=e.forwardTo}function _r(e,t,n,r,i,a,o){let s=sr(Object.entries(e).filter(([e])=>!Un.has(e)));if(Object.keys(s).length>0&&(r[t]=s),e.canActivate&&i.set(t,e.canActivate),e.canDeactivate&&a.set(t,e.canDeactivate),e.forwardTo&&gr(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]=e.defaultParams),e.defaultSearch&&(n.defaultSearch[t]=e.defaultSearch)}function vr(e,t,n,r,i,a,o=``){for(let s of e){let e=o?`${o}.${s.name}`:s.name;_r(s,e,t,n,r,i,a),s.children&&vr(s.children,t,n,r,i,a,e)}}function yr(e){let t=Wn();return Kn(t,e),t}function br(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]:br(n,t,i)}})}function xr(e,t,n){for(let r of e){let e=t?`${t}.${r.name}`:r.name;n(e),r.children&&xr(r.children,e,n)}}function Sr(e,t,n){let r=new Set;xr(e,t,e=>{if(r.has(e))throw Error(`[router.${n}] Duplicate route "${e}" in batch`);r.add(e)})}function Cr(e,t){if(e.startsWith(`@@`))throw Error(`[router.${t}] Route name "${e}" uses the reserved "@@" prefix. Routes with this prefix are internal and cannot be modified through the public API.`)}function R(e,t){for(let n of e)Cr(n.name,t),n.children&&R(n.children,t)}function wr(e,t){if(e.includes(`.`))throw TypeError(`[router.${t}] Route name "${e}" cannot contain dots. Use children array or { parent } option in addRoute() instead.`)}function z(e,t){for(let n of e)wr(n.name,t),n.children&&z(n.children,t)}function Tr(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 Er(e,t,n){if(R(t,`addRoute`),z(t,`addRoute`),n!==void 0&&!e.matcher.hasRoute(n))throw Error(`[router.addRoute] Parent route "${n}" does not exist`);xr(t,n??``,t=>{if(e.matcher.hasRoute(t))throw Error(`[router.addRoute] Route "${t}" already exists`)}),Sr(t,n??``,`addRoute`),Tr(t,n??``,`addRoute`)}function Dr({definitions:e,routesForHandlers:t,config:n,routeCustomFields:r,handlerParentName:i,rootPath:a,matcherOptions:o,logger:s}){let c=new Map,l=new Map;vr(t,n,r,c,l,s,i);let u=mr(n),{tree:d,matcher:f}=cr(e,a,o);return{config:n,routeCustomFields:r,pendingCanActivate:c,pendingCanDeactivate:l,tree:d,matcher:f,resolvedForwardMap:u}}function Or(e,t,n,r){return Dr({definitions:br(e.definitions,t.map(e=>Jn(e)),n===void 0?[]:n.split(`.`)),routesForHandlers:t,config:yr(e.config),routeCustomFields:Object.assign(Object.create(null),e.routeCustomFields),handlerParentName:n??``,rootPath:e.rootPath,matcherOptions:e.matcherOptions,logger:r})}function kr(e,t,n,r){return Dr({definitions:e.map(e=>Jn(e)),routesForHandlers:e,config:Wn(),routeCustomFields:Object.create(null),handlerParentName:``,rootPath:t,matcherOptions:n,logger:r})}function Ar(e,t,n){let r=[];for(let[i,a]of e)r.push([i,a,t(a,n)]);return r}function jr(e,t){return{activate:Ar(e.pendingCanActivate,t.compileGuard,`canActivate`),deactivate:Ar(e.pendingCanDeactivate,t.compileGuard,`canDeactivate`)}}function Mr(e,t,n){let r=e.depsStore,{activate:i,deactivate:a}=n??jr(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(),L(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 Nr(e,t,n,r){let{forwardTo:i,defaultParams:a,defaultSearch:o,decodeParams:s,encodeParams:l,canActivate:u,canDeactivate:d}=r;a!=null&&c(`updateRoute`,n,a,rr(e,n),"this route's `defaultParams`","Move it to `defaultSearch`");let f=i===void 0?void 0:Pr(n,i,e.config),p=Fr(e,n,r),m=u==null?void 0:t.compileGuardFactory(u,`canActivate`),h=d==null?void 0:t.compileGuardFactory(d,`canDeactivate`);return t.preflightHandlerLimit(m===void 0?[]:[n],h===void 0?[]:[n],!1),p!==void 0&&(Object.keys(p).length>0?e.routeCustomFields[n]=p:delete e.routeCustomFields[n]),f!==void 0&&(e.config.forwardMap=f.forwardMap,e.config.forwardFnMap=f.forwardFnMap,L(e,f.resolved)),Lr(e,n,{defaultParams:a,defaultSearch:o,decodeParams:s,encodeParams:l}),Rr(t,`activate`,n,u,m),Rr(t,`deactivate`,n,d,h),{forwardTo:i,defaultParams:a,defaultSearch:o,decodeParams:s,encodeParams:l}}function Pr(e,t,n){hr(t,e);let r=Object.assign(Object.create(null),n.forwardMap),i=Object.assign(Object.create(null),n.forwardFnMap);return t===null?(delete r[e],delete i[e]):typeof t==`string`?(delete i[e],r[e]=t):(delete r[e],i[e]=t),{forwardMap:r,forwardFnMap:i,resolved:mr({...n,forwardMap:r})}}function Fr(e,t,n){let r;for(let i of Object.keys(n)){if(Un.has(i))continue;let a=n[i];a!==void 0&&(r??={...e.routeCustomFields[t]},a===null?delete r[i]:i===`__proto__`?or(r,i,{value:a,writable:!0,enumerable:!0,configurable:!0}):r[i]=a)}return r}function Ir(e,t,n){n!==void 0&&(n===null?delete e[t]:e[t]=n)}function Lr(e,t,n){if(Ir(e.config.defaultParams,t,n.defaultParams),Ir(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 Rr(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 zr(e,t,n){R(e,`addRoute`),z(e,`constructor`),Sr(e,``,`addRoute`);let r=kr(e,``,t,n),i={get definitions(){return Vt(i.tree)},config:r.config,tree:r.tree,matcher:r.matcher,urlParamsCache:new Map,queryParamsCache:new Map,resolvedForwardMap:r.resolvedForwardMap,hasAnyForward:Gn(r.config),routeCustomFields:r.routeCustomFields,rootPath:``,matcherOptions:t,depsStore:void 0,lifecycleNamespace:void 0,pendingCanActivate:r.pendingCanActivate,pendingCanDeactivate:r.pendingCanDeactivate};return ir(i.matcher,i.config,`addRoute`),or(i,`matcherOptions`,{writable:!1,configurable:!1}),i}const Br=[];Object.freeze(Br);function Vr(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 Hr=new Set([`string`,`number`,`boolean`]);function Ur(e){return Hr.has(typeof e)}function Wr(e,t,n,r){let i=t[e];if(!i||typeof i!=`object`)return!0;for(let e of Object.keys(i)){let t=n.params[e],i=r.params[e];if(Ur(t)&&Ur(i)&&String(t)!==String(i))return!1}return!0}function Gr(e,t,n,r,i,a){for(let o=0;o<a;o++){let a=r[o];if(a!==i[o]||!Wr(a,e,t,n))return o}return a}const Kr=new Map;function B(e){let t=Kr.get(e);if(t)return t;let n=qr(e);return Object.freeze(n),Kr.set(e,n),n}function qr(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]:Vr(e)}let Jr,Yr,V=null,Xr,Zr,Qr=null;function $r(e,t,n){if(!t)return{intersection:``,toActivate:B(e.name),toDeactivate:Br};let r=n(e.name),i=n(t.name);if(!r&&!i)return{intersection:``,toActivate:B(e.name),toDeactivate:B(t.name)};let a=B(e.name),o=B(t.name),s=Math.min(o.length,a.length),c=Gr(r??i,e,t,a,o,s),l;if(c>=o.length)l=Br;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 H(e,t,n){if(V!==null&&e===Jr&&t===Yr)return V;if(Qr!==null&&e===Xr&&t===Zr)return Qr;let r=$r(e,t,n);return Xr=Jr,Zr=Yr,Qr=V,Jr=e,Yr=t,V=r,r}function ei(e,t){return{name:t??e.segments.at(-1).fullName,params:e.params,search:e.search,meta:e.meta}}var ti=class{#e;#t;#n;get#r(){return this.#e.depsStore}constructor(e,t,n){this.#e=zr(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}=H(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){ur(this.#e,e)}hasRoute(e){return this.#e.matcher.hasRoute(e)}clearRoutes(){fr(this.#e)}buildPath(e,t,n,r){if(e===v.UNKNOWN_ROUTE)return typeof t.path==`string`?t.path:``;let i=P(this.#r.port,e,t,n,{resolveForward:!1});if(typeof this.#e.config.encoders[e]==`function`){let t=this.#e.config.encoders[e]({params:{...i.path},search:{...i.query}});return this.#e.matcher.buildPath(e,t.params,t.search,this.#c(r))}return this.#e.matcher.buildPath(e,i.path,i.query,this.#c(r))}matchPath(e,t){let n=t,r=this.#e.matcher.match(e);if(!r)return;let i=ei(r),{name:a,params:o}=i,s=i.search,l=this.#e.config.decoders[a],u;typeof l==`function`?(u=l({params:o,search:s}),this.#r.getValidator()?.routes.validateStateBuilderArgs(a,u.params,`matchPath`),c(`matchPath`,a,u.params,this.getQueryParams(a),"the `params` returned by this route's `decodeParams`")):u={params:o,search:s};let d=P(this.#r.port,a,u.params,u.search),f=d.name,p=d.path,m=d.query,h=e;if(n.rewritePathOnMatch){let t=typeof this.#e.config.encoders[f]==`function`?this.#e.config.encoders[f]({params:p,search:m}):{params:p,search:m},r=n.trailingSlash;try{h=this.#e.matcher.buildPath(f,t.params,t.search,{trailingSlash:r===`never`||r===`always`?r:void 0,queryParamsMode:n.queryParamsMode}),r===`preserve`&&(h=Qn(e,h))}catch{h=e}}return I(d,{path:h})}forwardState(e,t,n){let r=n??S;if(typeof e!=`string`)return{name:e,params:t,search:r};if(Object.hasOwn(this.#e.config.forwardFnMap,e)){let n=this.#e.config.forwardFnMap[e],{target:i,chain:a}=this.#l(e,n,t);return this.#s(i,a,t,r)}let i=this.#e.resolvedForwardMap[e]??e;if(i!==e&&Object.hasOwn(this.#e.config.forwardFnMap,i)){let n=this.#e.config.forwardFnMap[i],{target:a,chain:o}=this.#l(i,n,t);return this.#s(a,[...this.#o(e),...o],t,r)}return i===e?{name:e,params:t,search:r}:this.#s(i,this.#o(e),t,r)}buildStateResolved(e,t){let n=this.#e.matcher.getSegmentsByName(e);if(n)return ei({segments:n,params:t,search:{},meta:this.#e.matcher.getMetaByName(e)},e)}isActiveRoute(e,t=x,n=S,r=!1,i=!0){if(typeof e!=`string`)return!1;if(this.#i(e,t,n,r,i))return!0;if(!this.#e.hasAnyForward||!Object.hasOwn(this.#e.config.forwardMap,e)&&!Object.hasOwn(this.#e.config.forwardFnMap,e))return!1;let a;try{a=this.forwardState(e,t,n)}catch(t){return this.#r.logger.warn(`router.isActiveRoute`,`Dynamic forwardTo of route "${e}" threw while resolving the active-link destination; treating the link as inactive.`,t),!1}return this.#i(a.name,a.params,a.search,r,i)}getMetaForState(e){return this.#e.matcher.hasRoute(e)?this.#e.matcher.getMetaByName(e):void 0}getUrlParams(e){return tr(this.#e,e)}getQueryParams(e){return rr(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 "${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=P(this.#r.port,e,t,n,{resolveForward:!1});return r||o===e?this.#r.areStatesEqual(I(s,{path:``,skipFreeze:!0}),a,i):!(!o.startsWith(`${e}.`)||!qn(s.path,a.params)||!i&&!qn(s.query,a.search))}#o(e){let t=[],n=e;for(;Object.hasOwn(this.#e.config.forwardMap,n);)t.push(n),n=this.#e.config.forwardMap[n];return t}#s(e,t,n,r){let i,a;for(let e of t)i=T(this.#e.config.defaultParams[e],i),a=T(this.#e.config.defaultSearch[e],a);return{name:e,params:T(i,n),search:T(a,r)}}#c(e){if(this.#t)return e!==this.#n&&this.#r.logger.warn(`router.buildPath`,"`options` differs from the cached source reference; router options are immutable per router instance, so the first-cached buildPath options are reused (#957)."),this.#t;this.#n=e;let t=e?.trailingSlash;return this.#t=Object.freeze({trailingSlash:t===`never`||t===`always`?t:void 0,queryParamsMode:e?.queryParamsMode}),this.#t}#l(e,t,n){let r=new Set([e]),i=[e],a=t(this.#r.getDependency,n),o=0;if(typeof a!=`string`)throw TypeError(`forwardTo callback must return a string, got ${typeof a}`);for(;o<100;){if(this.#e.matcher.getSegmentsByName(a)===void 0)throw Error(`Route "${a}" does not exist`);if(r.has(a)){let e=[...r,a].join(` → `);throw Error(`Circular forwardTo: ${e}`)}if(r.add(a),Object.hasOwn(this.#e.config.forwardFnMap,a)){let e=this.#e.config.forwardFnMap[a];i.push(a),a=e(this.#r.getDependency,n),o++;continue}let e=this.#e.config.forwardMap[a];if(e!==void 0){i.push(a),a=e,o++;continue}return{target:a,chain:i}}throw Error(`forwardTo exceeds maximum depth of 100`)}};const ni=new Set(Object.values(g)),ri=new Set([`code`,`segment`,`path`]),ii=new Set([`setCode`,`setErrorInstance`,`setAdditionalFields`,`hasField`,`getField`,`toJSON`]);var U=class extends Error{segment;path;code;constructor(e,{message:t,segment:n,path:r,...i}={}){super(t??e),this.name=`RouterError`,this.code=e,this.segment=n,this.path=r;for(let[e,t]of Object.entries(i)){if(ri.has(e))throw TypeError(`[RouterError] Cannot set reserved property "${e}"`);ii.has(e)||(this[e]=t)}}setCode(e){this.code=e,ni.has(this.message)&&(this.message=e)}setErrorInstance(e){if(!e)throw TypeError(`[RouterError.setErrorInstance] err parameter is required and must be an Error instance`);this.message=e.message,this.cause=e.cause,this.stack=e.stack??``}setAdditionalFields(e){for(let[t,n]of Object.entries(e)){if(ri.has(t))throw TypeError(`[RouterError.setAdditionalFields] Cannot set reserved property "${t}"`);ii.has(t)||(this[t]=n)}}hasField(e){return e in this}getField(e){return this[e]}toJSON(){let e={code:this.code,message:this.message};this.segment!==void 0&&(e.segment=this.segment),this.path!==void 0&&(e.path=this.path);let t=new Set([`code`,`message`,`segment`,`path`,`stack`,`name`]);for(let n in this)Object.hasOwn(this,n)&&!t.has(n)&&(e[n]=this[n]);return e}};const ai=new U(g.ROUTER_NOT_STARTED),oi=new U(g.ROUTE_NOT_FOUND),si=new U(g.SAME_STATES),ci=new U(g.ROUTER_NOT_STARTED,{message:`[router] cannot commit before the start navigation does — the boot would overwrite it; defer with queueMicrotask/await, or navigate after start() resolves`});Object.freeze(ai),Object.freeze(oi),Object.freeze(si),Object.freeze(ci);const W=Promise.reject(ai),li=Promise.reject(oi),ui=Promise.reject(si),G=Promise.reject(ci);W.catch(()=>{}),li.catch(()=>{}),ui.catch(()=>{}),G.catch(()=>{});const di=new Set([g.SAME_STATES,g.TRANSITION_CANCELLED,g.ROUTER_NOT_STARTED,g.ROUTE_NOT_FOUND,g.CANNOT_ACTIVATE,g.CANNOT_DEACTIVATE,g.ROUTER_ALREADY_STARTED]);function fi(e){return e instanceof U&&di.has(e.code)}const pi=new Set([W,li,ui,G]);function mi(e){let{fromState:t,toDeactivate:n,toActivate:r,intersection:i}=e;Object.freeze(n),Object.freeze(r);let a={phase:`activating`,reason:`success`,segments:Object.freeze({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),Object.freeze(a)}function hi(e,t){let{toState:n,fromState:r,toDeactivate:i,toActivate:a}=t;if(n.name!==v.UNKNOWN_ROUTE&&!e.hasRoute(n.name)){let i=new U(g.ROUTE_NOT_FOUND,{routeName:n.name});throw e.sendTransitionFail(r,i,t),i}let o=t;n.transition=mi(t);let s=Object.freeze(n),c=e.canCommitTransition(o);if(!c)throw new U(g.TRANSITION_CANCELLED);for(let n of i)a.includes(n)||!t.canDeactivateFunctions.has(n)||e.clearCanDeactivate(n,c);return e.sendTransitionDone(o),s}function gi(e){return e instanceof U&&e.code===g.TRANSITION_CANCELLED}function _i(e){return gi(e)?e:new U(g.TRANSITION_CANCELLED,{reason:e})}function vi(e,t,n,r){let i=t;i.code!==g.TRANSITION_CANCELLED&&i.code!==g.ROUTE_NOT_FOUND&&e.sendTransitionFail(n,i,r)}function yi(e,t,n){if(e instanceof DOMException&&e.name===`AbortError`)throw new U(g.TRANSITION_CANCELLED);if(gi(e))throw e;bi(e,t,n)}function bi(e,t,n){if(e instanceof U){let{code:n,message:r,...i}=e.toJSON(),a=new U(n,{...i,message:r});throw a.setCode(t),a.stack=e.stack??``,a}throw new U(t,Si(e,n))}const xi=new Set([`code`,`segment`,`path`,`then`]);function Si(e,t){let n={segment:t};if(e instanceof Error)return{...n,message:e.message,stack:e.stack,...`cause`in e&&e.cause!==void 0&&{cause:e.cause}};if(e&&typeof e==`object`){let t={};for(let[n,r]of Object.entries(e))xi.has(n)||(t[n]=r);return{...n,...t}}return n}async function Ci(e,t,n){let r;try{r=await e}catch(e){yi(e,t,n);return}if(!r)throw new U(t,{segment:n})}function wi(e,t,n,r,i,a,o,s,c,l){if(!c())throw new U(g.TRANSITION_CANCELLED);if(e===1){let n=l();return n===void 0?void 0:{phase:e,index:t+1,pending:n}}let u=n[t],d=r.get(u);if(!d)return;let f=!1;try{f=d(a,o,s)}catch(e){yi(e,i,u)}if(f instanceof Promise)return{phase:e,index:t+1,pending:f};if(!f)throw new U(i,{segment:u})}function Ti(e,t,n,r,i,a,o,s,c,l,u,d,f){let p=e===1,m=e===0;if(!p&&!(m?o:s))return;let h=m?i:a,_=p?1:h.length,ee=m?n:r,v=m?g.CANNOT_DEACTIVATE:g.CANNOT_ACTIVATE;for(let n=t;n<_;n++){let t=wi(e,n,h,ee,v,c,l,u,d,f);if(t!==void 0)return t}}function Ei(e,t,n,r,i,a,o,s,c,l,u,d,f){for(let p=d;p<=2;p++){let m=Ti(p,p===d?f:0,e,t,n,r,i,a,o,s,c,l,u);if(m!==void 0)return m}}async function Di(e,t,n,r,i,a,o,s,c,l,u,d){let f=e;for(;f!==void 0;){if(f.phase===1)await f.pending;else{let e=f.phase===0;await Ci(f.pending,e?g.CANNOT_DEACTIVATE:g.CANNOT_ACTIVATE,(e?r:i)[f.index-1])}f=Ei(t,n,r,i,a,o,s,c,l,u,d,f.phase,f.index)}}function Oi(e,t,n,r,i,a,o,s,c,l,u){let d=Ei(e,t,n,r,i,a,o,s,c,l,u,0,0);return d===void 0?void 0:Di(d,e,t,n,r,i,a,o,s,c,l,u)}const ki=Object.freeze([]),Ai=new Map;function ji(e,t){return t?.name===v.UNKNOWN_ROUTE&&!e.replace?{...e,replace:!0}:e}function Mi(e,t,n){return!!e&&!t.reload&&!t.force&&e.path===n.path}function Ni(e,t){if(e.size===0)return!1;for(let n of t)if(e.has(n))return!0;return!1}function K(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 Pi(e,t){t.externalSignal===void 0||t.cancelReason!==void 0||!t.hasGuards||e.bridgeExternalSignal(t)}function Fi(e,t,n,r,i,a,o,s,c,l){Hi(e,a);let u=e.hasLeaveListeners()||e.hasPreCommitListeners(),d={toState:t,fromState:n,opts:r,suspendable:i!==void 0||u,forceDeactivate:l,toDeactivate:ki,toActivate:ki,intersection:``,canDeactivateFunctions:Ai,canActivateFunctions:Ai,shouldDeactivate:!1,shouldActivate:!1,hasGuards:!1,controller:void 0,cancelReason:void 0,detachExternalBridge:void 0,externalSignal:i,reload:o,replace:s,redirected:c};if(!e.startTransition(d))throw new U(g.TRANSITION_CANCELLED);return d}function Ii(e,t){return e.sendLeaveApprove(t),hi(e,t)}function Li(e,t){let[n,r]=e.getLifecycleFunctions(),{toDeactivate:i,toActivate:a,intersection:o}=H(t.toState,t.fromState,t=>e.getMetaForState(t));t.canDeactivateFunctions=n,t.canActivateFunctions=r,t.toDeactivate=i,t.toActivate=a,t.intersection=o,t.shouldDeactivate=!!t.fromState&&!t.forceDeactivate&&i.length>0,t.shouldActivate=t.toState.name!==v.UNKNOWN_ROUTE&&a.length>0,t.hasGuards=t.shouldDeactivate&&Ni(n,i)||t.shouldActivate&&Ni(r,a)}function Ri(e,t,n){let r,i;try{r=e.getState();let a=n.signal,o=a?.aborted===!0?a:void 0;n=ji(n,r);let s=n.reload,c=n.replace,l=n.redirected,u=n.forceDeactivate===!0;if(Mi(r,n,t))return e.emitTransitionError(t,r,si),ui;let d=Fi(e,t,r,n,a,o,s,c,l,u);i=d;let f=d.externalSignal;if(f?.aborted===!0&&e.cancelNavigation(f.reason),Li(e,d),Pi(e,d),!d.hasGuards&&!d.suspendable)return Ii(e,d);let{canDeactivateFunctions:p,canActivateFunctions:m,toDeactivate:h,toActivate:_,shouldDeactivate:ee,shouldActivate:v,hasGuards:y}=d,b=t;if(!y){let t=Vi(e,d);if(t!==void 0)return t}if(y){let n=K(d),i=()=>!n.signal.aborted,a=n.signal,o=Oi(p,m,h,_,ee,v,t,r,a,i,()=>{if(e.sendLeaveApprove(d),e.hasLeaveListeners())return e.awaitLeaveListeners(b,r,a)});if(o!==void 0)return zi(e,o,d,n);if(!i())throw new U(g.TRANSITION_CANCELLED)}return hi(e,d)}catch(t){let n=Bi(e,t,{nav:i,fromState:r});return Promise.reject(n)}}async function zi(e,t,n,r){let i=()=>!r.signal.aborted,a=n.externalSignal,o,s=!1,c,l=new Promise(e=>{if(r.signal.aborted){e();return}o=()=>{e()},r.signal.addEventListener(`abort`,o,{once:!0})});t.catch(()=>{});try{if(a?.aborted)throw new U(g.TRANSITION_CANCELLED,{reason:a.reason});if(await Promise.race([t,l]),!i())throw new U(g.TRANSITION_CANCELLED);let r=hi(e,n);return s=!0,r}catch(t){let r=i()?t:_i(t);throw c=r,vi(e,r,n.fromState,n),r}finally{o&&r.signal.removeEventListener(`abort`,o),s||r.abort(c)}}function Bi(e,t,n){let{nav:r}=n;if(r?.controller?.abort(t),r!==void 0){let i=e.isTransitioning()?t:_i(t);return vi(e,i,n.fromState,r),i}return t}function Vi(e,t){let{toState:n,fromState:r}=t;if(e.hasLeaveListeners()&&K(t),e.sendLeaveApprove(t),e.hasLeaveListeners()){let i=K(t),a;try{a=e.awaitLeaveListeners(n,r,i.signal)}catch(e){throw i.abort(e),e}return a===void 0?void 0:zi(e,a,t,i)}}function Hi(e,t){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()),t!==void 0)throw new U(g.TRANSITION_CANCELLED,{reason:t.reason})}const Ui=Object.freeze([v.UNKNOWN_ROUTE]),Wi=Object.freeze({replace:!0});function Gi(e,t,n){Hi(e,void 0);let r=e.getState(),i=r?B(r.name).toReversed():[];Object.freeze(i);let a={deactivated:i,activated:Ui,intersection:``};Object.freeze(a);let o={phase:`activating`,...r&&{from:r.name},reason:`success`,replace:!0,segments:a};Object.freeze(o);let s={name:v.UNKNOWN_ROUTE,params:x,search:S,path:t,transition:o,context:{}};if(Object.freeze(s),n?.skipDeactivation!==!0&&r!==void 0&&!e.canDeactivateCurrent(i,s,r)){let n=new U(g.CANNOT_DEACTIVATE,{path:t,message:`[router.navigateToNotFound] a canDeactivate guard on "${r.name}" refused to leave for ${t}`});throw e.emitTransitionError(void 0,r,n),n}return e.systemCommit(s,r,Wi)}var Ki=class{#e;#t;#n=0;setDependencies(e){this.#e=e,this.#t=t=>{fi(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,t){return Gi(this.#e,e,t)}isPreparing(){return this.#n>0}#r(e){return e instanceof Promise&&!pi.has(e)&&e.catch(this.#t),e}#i(e,t,n,r){let i=this.#e;if(!i.canNavigate())return i.isStarting()?G:W;let a;this.#n++;try{a=i.buildNavigateState(e,t,n)}catch(e){return Promise.reject(e)}finally{this.#n--}return a?Ri(this.#e,a,r):(i.emitTransitionError(void 0,i.getState(),oi),li)}#a(e,t){let n=this.#e;if(!n.canNavigate())return n.isStarting()?G:W;if(e.name!==v.UNKNOWN_ROUTE&&!n.hasRoute(e.name)){let t=new U(g.ROUTE_NOT_FOUND,{routeName:e.name});return n.emitTransitionError(void 0,n.getState(),t),Promise.reject(t)}let i=a(e.params,n.getQueryParams(e.name));if(i!==void 0){let t=new U(g.WRONG_CHANNEL,{routeName:e.name,message:`[router.navigateToState] ${r(e.name,i,"`state.params`")}`});return n.emitTransitionError(void 0,n.getState(),t),Promise.reject(t)}let o;try{o=this.#o(e)}catch(e){return Promise.reject(e)}return Ri(this.#e,o,t)}#o(e){return{name:e.name,params:D(void 0,e.params,x),search:D(void 0,e.search,S),path:e.path,context:{...e.context}}}#s(e){let t=this.#e;if(!t.getOptions().defaultRoute)return Promise.reject(new U(g.ROUTE_NOT_FOUND,{routeName:`defaultRoute not configured`}));let n,r,i;this.#n++;try{({route:n,params:r,search:i}=t.resolveDefault())}catch(e){return Promise.reject(e)}finally{this.#n--}return n?typeof n==`string`?this.#i(n,r,i,e):Promise.reject(new U(g.ROUTE_NOT_FOUND,{routeName:`defaultRoute did not resolve to a route name`})):Promise.reject(new U(g.ROUTE_NOT_FOUND,{routeName:`defaultRoute resolved to empty`}))}};const qi={},Ji=Object.freeze({replace:!0});function Yi(e){return[e,e?.reason].some(e=>e instanceof U&&e.code===g.ROUTE_NOT_FOUND)}var Xi=class{#e;setDependencies(e){this.#e=e}async start(e){let t=this.#e;if(t.isIdle())throw new U(g.TRANSITION_CANCELLED);let n=t.getOptions();if(typeof e!=`string`)throw TypeError(`[router.start] path must be a string, got ${typeof e}`);let r=t.matchPath(e);if(!r&&!n.allowNotFound)throw new U(g.ROUTE_NOT_FOUND,{path:e});if(t.completeStart(),r)try{return await t.navigateToState(r,Ji)}catch(r){if(!n.allowNotFound||!Yi(r))throw r;return t.navigateToNotFound(e)}return t.navigateToNotFound(e)}};const Zi={},Qi=new WeakMap;function $i(e,t,n){if(typeof n==`string`)return{target:n,when:void 0,update:void 0};if(n.when!==void 0&&typeof n.when!=`function`)throw Error(`[FSM.constructor] transitions["${e}"]["${t}"].when is not a function`);if(n.update!==void 0&&typeof n.update!=`function`)throw Error(`[FSM.constructor] transitions["${e}"]["${t}"].update is not a function`);return{target:n.target,when:n.when,update:n.update}}function ea(e){let t=Qi.get(e);if(t!==void 0)return t;let n=e,r=Object.create(null);for(let[e,t]of Object.entries(n)){let n=Object.create(null);for(let[r,i]of Object.entries(t))i!==void 0&&(n[r]=$i(e,r,i));r[e]=n}for(let e of Object.values(r))for(let t of Object.values(e))if(t!==void 0&&r[t.target]===void 0)throw Error(`[FSM.constructor] state "${t.target}" is not declared in config.transitions`);return Qi.set(e,r),r}var ta=class{#e;#t;#n=0;#r=null;#i;#a;#o=[];constructor(e){if(this.#e=e.initial,this.#i=e.context,this.#a=ea(e.transitions),this.#a[e.initial]===void 0)throw Error(`[FSM.constructor] state "${e.initial}" is not declared in config.transitions`);this.#t=this.#a[e.initial]}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(!Object.hasOwn(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 q={IDLE:`IDLE`,STARTING:`STARTING`,READY:`READY`,TRANSITION_STARTED:`TRANSITION_STARTED`,LEAVE_APPROVED:`LEAVE_APPROVED`,DISPOSED:`DISPOSED`},J={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 na(){return{inflight:void 0,current:void 0,previous:void 0}}const ra=(e,t)=>t?.nav===void 0||t.nav===e.inflight,ia=(e,t)=>t!==void 0&&t===e.inflight&&t.externalSignal?.aborted!==!0,aa=(e,t)=>{e.previous=e.current,e.current=ye(t)},oa=(e,t)=>{aa(e,t.toState),e.inflight=void 0},sa=(e,t)=>{aa(e,t.toState)},ca=e=>{e.previous=e.current,e.current=void 0},Y=e=>{e.current=void 0,e.previous=void 0,e.inflight=void 0},la=(e,t)=>{e.inflight=t},ua={[q.IDLE]:{[J.START]:q.STARTING,[J.DISPOSE]:{target:q.DISPOSED,update:Y}},[q.STARTING]:{[J.STARTED]:q.READY,[J.FAIL]:q.IDLE,[J.STOP]:{target:q.IDLE,update:ca},[J.DISPOSE]:{target:q.DISPOSED,update:Y}},[q.READY]:{[J.NAVIGATE]:{target:q.TRANSITION_STARTED,update:la},[J.SYSTEM_COMMIT]:{target:q.READY,update:sa},[J.STOP]:{target:q.IDLE,update:ca},[J.DISPOSE]:{target:q.DISPOSED,update:Y}},[q.TRANSITION_STARTED]:{[J.NAVIGATE]:{target:q.TRANSITION_STARTED,update:la},[J.LEAVE_APPROVE]:q.LEAVE_APPROVED,[J.CANCEL]:q.READY,[J.FAIL]:{target:q.READY,when:ra},[J.DISPOSE]:{target:q.DISPOSED,update:Y}},[q.LEAVE_APPROVED]:{[J.NAVIGATE]:{target:q.TRANSITION_STARTED,update:la},[J.COMPLETE]:{target:q.READY,when:ia,update:oa},[J.CANCEL]:q.READY,[J.FAIL]:{target:q.READY,when:ra},[J.DISPOSE]:{target:q.DISPOSED,update:Y}},[q.DISPOSED]:{}};function da(){return new ta({initial:q.IDLE,context:na(),transitions:ua})}const X=`TREE_CHANGED`;function fa(e){return e instanceof Error?e:Error(String(e))}function pa(e,t,n){return new Promise((r,i)=>{let a=()=>{let e=n.reason;i(e instanceof U&&e.code===g.TRANSITION_CANCELLED?e:new U(g.TRANSITION_CANCELLED,{reason:e}))};if(n.aborted){a();return}n.addEventListener(`abort`,a,{once:!0}),Promise.allSettled(e).then(e=>{if(n.removeEventListener(`abort`,a),n.aborted)return;if(t!==void 0){i(fa(t));return}let o=e.find(e=>e.status===`rejected`);if(o!==void 0){i(fa(o.reason));return}r()})})}function ma(e,t,n){return e.addEventListener(`abort`,t,{once:!0}),()=>{n(),e.removeEventListener(`abort`,t)}}function ha({signal:e,...t}){return t}var ga=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(b.ROUTER_START)}finally{this.#i--}}emitRouterStop(){this.#t.emit(b.ROUTER_STOP)}emitTransitionStart(e,t,n){this.#i++;try{this.#t.emit(b.TRANSITION_START,e,t)}finally{this.#i--}}emitTransitionSuccess(e,t,n){this.#i++;try{this.#t.emit(b.TRANSITION_SUCCESS,e,t,n)}finally{this.#i--}}emitTransitionError(e,t,n){this.#i++;try{this.#t.emit(b.TRANSITION_ERROR,e,t,n)}finally{this.#i--}}emitTransitionCancel(e,t){this.#i++;try{this.#t.emit(b.TRANSITION_CANCEL,e,t)}finally{this.#i--}}emitTransitionLeaveApprove(e,t){this.#i++;try{this.#t.emit(b.TRANSITION_LEAVE_APPROVE,e,t)}finally{this.#i--}}isProcessing(){return this.#i>0}emitTreeChanged(e){this.#t.emit(X,e)}isEmittingTreeChanged(){return this.#t.isDispatching(X)}subscribeTreeChanged(e){if(this.isDisposed())throw new U(g.ROUTER_DISPOSED);return this.#t.on(X,t=>{e(t)})}treeChangedListenerCount(){return this.#t.listenerCount(X)}sendStart(){this.#e.send(J.START)}sendStop(){this.#e.send(J.STOP)}sendDispose(){this.#e.send(J.DISPOSE)}sendStarted(){this.#e.send(J.STARTED)}sendNavigate(e){return this.#e.send(J.NAVIGATE,e)===q.TRANSITION_STARTED}canCommitTransition(e){return this.#e.canSend(J.COMPLETE,e)}sendComplete(e){this.#e.send(J.COMPLETE,e)}sendLeaveApprove(e){this.#e.send(J.LEAVE_APPROVE,e)}sendFail(e,t,n){this.#e.send(J.FAIL,{nav:n,fromState:e,error:t})}sendCancel(e,t){this.#e.send(J.CANCEL,{fromState:e,reason:t})}systemCommit(e){let{toState:t}=e,n={name:t.name,params:D(void 0,t.params,x),search:D(void 0,t.search,S),path:t.path,context:{...t.context},...t.transition!==void 0&&{transition:D(void 0,t.transition,x)}};if(!this.#e.canSend(J.SYSTEM_COMMIT))throw this.#o();return this.#e.send(J.SYSTEM_COMMIT,{...e,toState:n}),n}canBeginTransition(){return this.#e.canSend(J.NAVIGATE)}canStart(){return this.#e.canSend(J.START)}canCancel(){return this.#e.canSend(J.CANCEL)}isActive(){let e=this.#e.getState();return e!==q.IDLE&&e!==q.DISPOSED}isDisposed(){return this.#e.getState()===q.DISPOSED}isTransitioning(){let e=this.#e.getState();return e===q.TRANSITION_STARTED||e===q.LEAVE_APPROVED}isLeaveApproved(){return this.#e.getState()===q.LEAVE_APPROVED}isReady(){return this.#e.getState()===q.READY}isStarting(){return this.#e.getState()===q.STARTING}isIdle(){return this.#e.getState()===q.IDLE}addEventListener(e,t){return this.#a(e,`addEventListener`),this.#t.on(e,t)}subscribe(e){if(this.isDisposed())throw new U(g.ROUTER_DISPOSED);return this.#a(b.TRANSITION_SUCCESS,`subscribe`),this.#t.on(b.TRANSITION_SUCCESS,(t,n)=>e({route:t,previousRoute:n}))}subscribeLeave(e){if(this.isDisposed())throw new U(g.ROUTER_DISPOSED);this.#r.push(e);let t=!1;return()=>{if(t)return;t=!0;let n=this.#r.indexOf(e);n!==-1&&this.#r.splice(n,1)}}hasLeaveListeners(){return this.#r.length>0}hasPreCommitListeners(){return this.#t.listenerCount(b.TRANSITION_START)>0||this.#t.listenerCount(b.TRANSITION_LEAVE_APPROVE)>0}awaitLeaveListeners(e,t,n){if(t===void 0)return;let r=Object.freeze({route:t,nextRoute:e,signal:n}),i,a,o=[...this.#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 fa(a);return}return pa(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=ma(t,()=>{this.sendCancelIfPossible(this.#e.getContext().current,t.reason)},()=>{e.detachExternalBridge=void 0})),Zi}#a(e,t){let n=this.#n?.();n&&n.eventBus.validateCountThresholds(this.#t.listenerCount(e)+1,e,t)}#o(){if(this.isDisposed())return new U(g.ROUTER_DISPOSED);let e;return e=this.isTransitioning()?`[router] cannot commit a state while a transition is in flight — the navigation in progress commits its own`:this.isStarting()?`[router] cannot commit before the start navigation does — the boot would overwrite it; await start() first`:`[router] cannot commit a state before the router has started`,new U(g.ROUTER_NOT_STARTED,{message:e})}#s(){let e=this.#e;e.on(q.STARTING,J.STARTED,()=>{this.emitRouterStart()}),e.on(q.READY,J.STOP,()=>{this.emitRouterStop()});let t=e=>{let t=e.externalSignal!==void 0&&(this.hasLeaveListeners()||this.hasPreCommitListeners())?this.bridgeExternalSignal(e):Zi;this.emitTransitionStart(e.toState,e.fromState,t)};e.on(q.READY,J.NAVIGATE,t),e.on(q.TRANSITION_STARTED,J.NAVIGATE,t),e.on(q.LEAVE_APPROVED,J.NAVIGATE,t),e.on(q.TRANSITION_STARTED,J.LEAVE_APPROVE,e=>{this.emitTransitionLeaveApprove(e.toState,e.fromState)}),e.on(q.LEAVE_APPROVED,J.COMPLETE,e=>{e.detachExternalBridge?.(),this.emitTransitionSuccess(e.toState,e.fromState,e.externalSignal===void 0?e.opts:ha(e.opts))});let n=e=>{let{fromState:t,reason:n}=e,r=this.#e.getContext().inflight,i=n??new U(g.TRANSITION_CANCELLED);r.cancelReason=i,r.controller?.abort(i),r.detachExternalBridge?.(),this.emitTransitionCancel(r.toState,t)};e.on(q.TRANSITION_STARTED,J.CANCEL,n),e.on(q.LEAVE_APPROVED,J.CANCEL,n),e.on(q.READY,J.SYSTEM_COMMIT,e=>{this.emitTransitionSuccess(e.toState,e.fromState,e.opts)});let r=e=>{let t=this.#e.getContext().inflight;t?.detachExternalBridge?.(),this.emitTransitionError(t?.toState,e.fromState,e.error)};e.on(q.LEAVE_APPROVED,J.FAIL,r),e.on(q.TRANSITION_STARTED,J.FAIL,r),e.on(q.STARTING,J.FAIL,e=>{this.emitTransitionError(void 0,e.fromState,e.error)})}};const _a=new U(g.ROUTER_ALREADY_STARTED),va={maxListeners:0,warnListeners:0};var ya=class{#e=new Map;#t=new Set;#n=null;#r=va;#i;#a;constructor(e){e?.limits&&(this.#r=e.limits),this.#i=e?.onListenerError??null,this.#a=e?.onListenerWarn??null}static validateCallback(e,t){if(typeof e!=`function`)throw TypeError(`Expected callback to be a function for event ${t}`)}setLimits(e){this.#r=e}on(e,t){let n=this.#e.get(e),r=n?.size??0;if(n?.has(t))throw Error(`Duplicate listener for "${e}"`);let{maxListeners:i,warnListeners:a}=this.#r;if(i!==0&&r>=i)throw Error(`Listener limit (${i}) reached for "${e}"`);a!==0&&r===a&&this.#a!==null&&(this.#n??=new Set,this.#n.has(e)||(this.#a(e,a),this.#n.add(e)));let o=n;return o===void 0&&(o=new Set,this.#e.set(e,o)),o.add(t),()=>{this.off(e,t)}}off(e,t){let n=this.#e.get(e);n&&(n.delete(t),n.size===0&&(this.#e.delete(e),this.#n?.delete(e)))}emit(e,t,n,r,i){let a=this.#e.get(e);if(!a||a.size===0||this.#t.has(e))return;let o=arguments.length-1;this.#t.add(e);try{if(a.size===1){let[s]=a;this.#o(e,s,o,t,n,r,i)}else{let s=[...a];for(let a of s)this.#o(e,a,o,t,n,r,i)}}finally{this.#t.delete(e)}}clearAll(){this.#e.clear(),this.#n=null}listenerCount(e){return this.#e.get(e)?.size??0}isDispatching(e){return this.#t.has(e)}#o(e,t,n,r,i,a,o){try{let s=this.#s(t,n,r,i,a,o);s!=null&&typeof s.then==`function`&&Promise.resolve(s).catch(t=>{this.#i?.(e,t)})}catch(t){this.#i?.(e,t)}}#s(e,t,n,r,i,a){switch(t){case 0:return e();case 1:return e(n);case 2:return e(n,r);case 3:return e(n,r,i);default:return e(n,r,i,a)}}};const ba=Object.freeze({log:0,warn:1,error:2}),xa=Object.freeze({all:0,"warn-error":1,"error-only":2,none:3}),Sa=Object.hasOwn;var Ca=class{#e={level:`all`,callbackIgnoresLevel:!1};#t=0;#n=!1;constructor(e){e&&this.configure(e)}configure(e){let t=e.level;if(t!==void 0){if(!Sa(xa,t))throw Error(`Invalid log level: "${t}". Valid levels are: ${Object.keys(xa).join(`, `)}`);this.#e.level=t,this.#t=xa[t]}Sa(e,`callback`)&&(this.#e.callback=e.callback);let n=e.callbackIgnoresLevel;n!==void 0&&(this.#e.callbackIgnoresLevel=n)}getConfig(){return{level:this.#e.level,callback:this.#e.callback,callbackIgnoresLevel:this.#e.callbackIgnoresLevel}}log(e,t,...n){this.#r(`log`,e,t,n)}warn(e,t,...n){this.#r(`warn`,e,t,n)}error(e,t,...n){this.#r(`error`,e,t,n)}#r(e,t,n,r){if(this.#e.level===`none`&&!this.#e.callbackIgnoresLevel)return;let i=ba[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 wa(e){let t=Ta(e),n=ja(e),r=()=>f(e.router).validator;Ea(e),Da(e,r),Oa(e,t,r),ka(e,n,r),Aa(e,t,r),Ma(e,n),Na(e),Pa(e,n)}function Ta(e){let{router:t,dependenciesStore:n}=e,r=e=>n.dependencies[e];return e=>e(t,r)}function Ea(e){e.dependenciesStore.limits=e.limits,e.eventBus.setLimits({maxListeners:e.limits.maxListeners,warnListeners:e.limits.warnListeners})}function Da(e,t){e.eventBus.setValidatorAccessor(t)}function Oa(e,t,n){let r={logger:f(e.router).logger,compileFactory:t,getValidator:n};e.routeLifecycle.setDependencies(r)}function ka(e,t,n){let r={logger:f(e.router).logger,getValidator:n,port:t,addActivateGuard:(t,n,r)=>{e.routeLifecycle.addCanActivate(t,n,!0,r)},addDeactivateGuard:(t,n,r)=>{e.routeLifecycle.addCanDeactivate(t,n,!0,r)},compileGuard:(t,n)=>e.routeLifecycle.compileGuardFactory(t,n),getState:()=>e.state.get(),areStatesEqual:(t,n,r)=>e.state.areStatesEqual(t,n,r),getDependency:t=>e.dependenciesStore.dependencies[t]};e.routes.setDependencies(r),e.routes.setLifecycleNamespace(e.routeLifecycle)}function Aa(e,t,n){let r={logger:f(e.router).logger,addEventListener:(t,n)=>e.eventBus.addEventListener(t,n),canNavigate:()=>e.eventBus.canBeginTransition(),compileFactory:t,getValidator:n};e.plugins.setDependencies(r)}function ja(e){let t=f(e.router),n=e.routes.getStore(),r=(e,n)=>{t.validator?.state.reportUndeclaredParamKey(e,n)},i=(e,n)=>{t.validator?.state.reportDroppedQueryKey(e,n)};return{resolveForward:(e,n,r)=>t.forwardState(e,n,r),defaultParams:e=>n.config.defaultParams[e],defaultSearch:e=>n.config.defaultSearch[e],buildPath:(e,n,r)=>t.buildPath(e,n,r),queryNames:t=>e.routes.getQueryParams(t),pathNames:t=>e.routes.hasRoute(t)?e.routes.getUrlParams(t):void 0,admitsUndeclaredQuery:()=>e.options.get().queryParamsMode===`loose`,get reportDroppedQueryKey(){return t.validator?i:void 0},get reportUndeclaredParamKey(){return t.validator?r:void 0}}}function Ma(e,t){let n={logger:f(e.router).logger,getOptions:()=>e.options.get(),hasRoute:t=>e.routes.hasRoute(t),getQueryParams:t=>e.routes.getQueryParams(t),getMetaForState:t=>e.routes.getMetaForState(t),getState:()=>e.state.get(),buildNavigateState:(n,r,i)=>{f(e.router).validator?.routes.validateStateBuilderArgs(n,r,`navigate`);let a=P(t,n,r,i,{diagnoseUndeclared:!0});if(e.routes.getMetaForState(a.name)!==void 0)return I(a,{path:F(a,t),skipFreeze:!0})},resolveDefault:()=>{let t=e.options.get(),n=f(e.router),r=Tn(t.defaultRoute,t=>e.dependenciesStore.dependencies[t]),i=Tn(t.defaultParams,t=>e.dependenciesStore.dependencies[t]),a=Tn(t.defaultSearch,t=>e.dependenciesStore.dependencies[t]);return typeof t.defaultRoute==`function`&&n.validator?.options.validateResolvedDefaultRoute(r,n.routeGetStore()),{route:r,params:i,search:a}},startTransition:t=>e.eventBus.sendNavigate(t),systemCommit:(t,n,r)=>e.eventBus.systemCommit({toState:t,fromState:n,opts:r}),cancelNavigation:t=>{e.eventBus.sendCancelIfPossible(e.state.get(),t)},bridgeExternalSignal:t=>{e.eventBus.bridgeExternalSignal(t)},canCommitTransition:t=>e.eventBus.canCommitTransition(t)?qi:void 0,sendTransitionDone:t=>{e.eventBus.sendComplete(t)},sendTransitionFail:(t,n,r)=>{e.eventBus.sendFail(t,n,r)},emitTransitionError:(t,n,r)=>{e.eventBus.emitTransitionError(t,n,r)},sendLeaveApprove:t=>{e.eventBus.sendLeaveApprove(t)},canNavigate:()=>e.eventBus.canBeginTransition(),isStarting:()=>e.eventBus.isStarting(),getLifecycleFunctions:()=>e.routeLifecycle.getFunctions(),canDeactivateCurrent:(t,n,r)=>e.routeLifecycle.canNavigateTo(t,[],n,r),isTransitioning:()=>e.eventBus.isTransitioning(),clearCanDeactivate:(t,n)=>{e.routeLifecycle.clearCanDeactivate(t,`external`)},hasLeaveListeners:()=>e.eventBus.hasLeaveListeners(),hasPreCommitListeners:()=>e.eventBus.hasPreCommitListeners(),awaitLeaveListeners:(t,n,r)=>e.eventBus.awaitLeaveListeners(t,n,r)};e.navigation.setDependencies(n)}function Na(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 Pa(e,t){e.state.setDependencies({port:()=>t,getUrlParams:t=>e.routes.getUrlParams(t)})}const Z=Object.freeze({});var Fa=class r{#e;#t;#n;#r;#i;#a;#o;#s;#c;#l;#u;constructor(n=[],a={},o={}){let{logger:s,...l}=a;s&&me(s);let u=new Ca(s);this.#u=e=>{fi(e)||u.error(`router.start`,`Unexpected start error`,e)},Dn.validateOptionsIsObject(a),le(o),n.length>0&&ue(n),this.#e=new Dn(l),this.#t=xe(l.limits),this.#n=Ce(o),this.#r=new kn,this.#i=new ti(n,za(this.#e.get()),u),this.#a=new Hn,this.#o=new Fn,this.#s=new Ki,this.#c=new Xi;let d=da();this.#r.setContext(d.getContext());let f=new ya({onListenerError:(e,t)=>{u.error(`Router`,`Error in listener for ${e}:`,t)},onListenerWarn:(e,t)=>{u.warn(`router.addEventListener`,`Event "${e}" has ${t} listeners — possible memory leak`)}});this.#l=new ga({routerFSM:d,emitter:f});let p=new Map,m=i(`forwardState`,(e,t,n)=>this.#i.forwardState(e,t,n),p);t(this,{logger:u,makeState:(e,t,n,r)=>this.#r.makeState(e,t,n,r),getMetaForState:e=>this.#i.getMetaForState(e),getQueryParams:e=>this.#i.getQueryParams(e),forwardState:((e,t,n)=>{let r=m(e,t,n),i=r.name,a=r.params;return c(`forwardState`,i,a,this.#i.getQueryParams(i),()=>i===e?"the `params` bag leaving the forwardState chain":`the \`params\` bag leaving the forwardState chain (forwarded here from "${e}")`),{name:i,params:a??x,search:r.search}}),buildStateResolved:(e,t)=>this.#i.buildStateResolved(e,t),port:()=>this.#i.getPort(),matchPath:(e,t)=>this.#i.matchPath(e,t),getOptions:()=>this.#e.get(),addEventListener:(e,t)=>this.#l.addEventListener(e,t),treeChanged:{emit:e=>{this.#l.emitTreeChanged(e)},subscribe:e=>this.#l.subscribeTreeChanged(e),listenerCount:()=>this.#l.treeChangedListenerCount(),isEmitting:()=>this.#l.isEmittingTreeChanged()},buildPath:i(`buildPath`,(e,t,n)=>this.#i.buildPath(e,t??x,n,this.#e.get()),p),emitTransitionError:e=>{this.#l.emitTransitionError(void 0,this.#r.get(),e)},navigateToNotFound:(e,t)=>this.#s.navigateToNotFound(e,t),start:e(`start`,e=>this.#c.start(e),p),navigateToState:(e,t)=>(this.#p(),r.#d(this.#s.navigateToState(e,t??Z))),interceptors:p,setRootPath:e=>{this.#i.setRootPath(e)},getRootPath:()=>this.#i.getStore().rootPath,getTree:()=>this.#i.getStore().tree,isDisposed:()=>this.#l.isDisposed(),validator:null,dependenciesGetStore:()=>this.#n,getCloneState:()=>({options:{...this.#e.get()},dependencies:{...this.#n.dependencies},pluginFactories:this.#o.getAll(),loggerConfig:u.getConfig(),limits:this.#t}),routeGetStore:()=>this.#i.getStore(),getStateName:()=>this.#r.get()?.name,isTransitioning:()=>this.#l.isTransitioning(),systemCommit:(e,t,n)=>this.#l.systemCommit({toState:e,fromState:t,opts:n}),routerExtensions:[],contextClaimRecords:new Set,hydrationState:null}),wa({router:this,options:this.#e,limits:this.#t,dependenciesStore:this.#n,state:this.#r,routes:this.#i,routeLifecycle:this.#a,plugins:this.#o,navigation:this.#s,lifecycle:this.#c,eventBus:this.#l}),this.isActiveRoute=this.isActiveRoute.bind(this),this.buildPath=this.buildPath.bind(this),this.getState=this.getState.bind(this),this.getPreviousState=this.getPreviousState.bind(this),this.areStatesEqual=this.areStatesEqual.bind(this),this.shouldUpdateNode=this.shouldUpdateNode.bind(this),this.isActive=this.isActive.bind(this),this.start=this.start.bind(this),this.stop=this.stop.bind(this),this.dispose=this.dispose.bind(this),this.canNavigateTo=this.canNavigateTo.bind(this),this.usePlugin=this.usePlugin.bind(this),this.navigate=this.navigate.bind(this),this.navigateToDefault=this.navigateToDefault.bind(this),this.navigateToNotFound=this.navigateToNotFound.bind(this),this.subscribe=this.subscribe.bind(this),this.subscribeLeave=this.subscribeLeave.bind(this),this.isLeaveApproved=this.isLeaveApproved.bind(this);try{this.#i.flushPendingGuards()}catch(e){throw this.dispose(),e}}isActiveRoute(e,t,n,r,i){return f(this).validator?.routes.validateIsActiveRouteArgs(e,t,r,i),f(this).validator?.routes.validateRouteName(e,`isActiveRoute`),e===``?(f(this).logger.warn(`real-router`,`isActiveRoute("") called with empty string. Root node is not considered a parent of any route.`),!1):this.#i.isActiveRoute(e,t,n,r,i)}buildPath(e,t,n){let r=f(this);return r.validator?.routes.validateBuildPathArgs(e),r.validator?.navigation.validateParams(t,`buildPath`),r.buildPath(e,be(t,x),n)}getState(){return this.#r.get()}getPreviousState(){return this.#r.getPrevious()}areStatesEqual(e,t,n=!0){return f(this).validator?.state.validateAreStatesEqualArgs(e,t,n),this.#r.areStatesEqual(e,t,n)}shouldUpdateNode(e){return f(this).validator?.routes.validateShouldUpdateNodeArgs(e),ti.shouldUpdateNode(e,e=>this.#i.getMetaForState(e))}isActive(){return this.#l.isActive()}start(e){let t=this.#f(e);return t.catch(this.#u),t}stop(){return this.#l.sendCancelIfPossible(this.#r.get()),!this.#l.isReady()&&!this.#l.isTransitioning()&&!this.#l.isStarting()||this.#l.sendStop(),this}dispose(){if(this.#l.isDisposed())return;this.#l.sendCancelIfPossible(this.#r.get()),(this.#l.isReady()||this.#l.isTransitioning())&&this.#l.sendStop(),this.#l.sendDispose(),this.#l.clearAll(),this.#o.disposeAll();let e=f(this);for(let t of e.routerExtensions)for(let e of t.keys)delete this[e];e.routerExtensions.length=0,e.contextClaimRecords.clear(),e.interceptors.clear(),this.#i.clearRoutes(),this.#a.clearAll(),this.#n.dependencies=Object.create(null),this.#h()}canNavigateTo(e,t,n){let r=f(this);if(r.validator?.routes.validateRouteName(e,`canNavigateTo`),r.validator?.navigation.validateParams(t,`canNavigateTo`),!this.#i.hasRoute(e)||a(t,this.#i.getQueryParams(e))!==void 0)return!1;let i=this.#i.getPort(),o;try{o=P(i,e,t??x,n)}catch(t){return r.logger.warn(`router.canNavigateTo`,`Resolving route "${e}" threw while answering the predicate; treating the route as unreachable.`,t),!1}let s;try{s=I(o,{path:F(o,i),skipFreeze:!0})}catch{return!1}let c=this.#r.get(),{toDeactivate:l,toActivate:u}=H(s,c,e=>this.#i.getMetaForState(e));return this.#a.canNavigateTo(l,u,s,c)}usePlugin(...e){if(this.#l.isDisposed())throw new U(g.ROUTER_DISPOSED);let t=e.filter(Boolean);if(t.length===0)return()=>{};let n=f(this);n.validator?.plugins.validatePluginLimit(this.#o.count(),this.#t);for(let e of t)n.validator?.plugins.validateNoDuplicatePlugins(e,this.#o.getAll());return this.#o.use(...t)}subscribe(e){return ga.validateSubscribeListener(e),this.#l.subscribe(e)}subscribeLeave(e){return ga.validateSubscribeLeaveListener(e),this.#l.subscribeLeave(e)}isLeaveApproved(){return this.#l.isLeaveApproved()}navigate(e,t,i,a){this.#p();let o=f(this),s,c,l,u;return typeof e==`object`&&e?(s=e.name,c=e.params,l=e.search,u=t??Z):(s=e,c=t,l=i,u=a??Z),n(o,`navigate`,s,c),o.validator?.navigation.validateNavigateArgs(s),o.validator?.navigation.validateParams(c,`navigate`),o.validator?.navigation.validateNavigationOptions(u,`navigate`),r.#d(this.#s.navigate(s,c??x,l,u))}navigateToDefault(e){this.#p();let t=f(this);t.validator?.navigation.validateNavigateToDefaultArgs(e);let n=e??Z;return t.validator?.navigation.validateNavigationOptions(n,`navigateToDefault`),r.#d(this.#s.navigateToDefault(n))}navigateToNotFound(e){if(this.#p(),!this.#l.isActive())throw new U(g.ROUTER_NOT_STARTED);if(e!==void 0&&typeof e!=`string`)throw TypeError(`[router.navigateToNotFound] path must be a string, got ${typeof e}`);if(e!==void 0)return this.#s.navigateToNotFound(e);let t=this.#r.get();if(t===void 0)throw new U(g.ROUTER_NOT_STARTED,{message:`[router.navigateToNotFound] cannot derive the path before the start navigation commits — pass an explicit path`});return this.#s.navigateToNotFound(t.path)}static#d(e){return e instanceof Promise?e:Promise.resolve(e)}#f(e){if(!this.#l.canStart())return Promise.reject(_a);f(this).validator?.navigation.validateStartArgs(e),this.#l.sendStart();let t;try{let n=f(this).start(e);t=typeof n?.then==`function`?n:Promise.reject(TypeError("[router.start] a `start` interceptor returned without calling next(). Every start interceptor must return `next(path)`."))}catch(e){t=Promise.reject(e)}return t.catch(e=>this.#m(e))}#p(){if(this.#l.isProcessing())throw new U(g.REENTRANT_NAVIGATION,{message:`[router] cannot start a navigation from inside a router event listener — the nested navigation would commit a state the outer one overwrites. Defer it: queueMicrotask(() => router.navigate(...)), await the current transition, or use an async listener.`});if(this.#s.isPreparing())throw new U(g.REENTRANT_NAVIGATION,{message:`[router] cannot start a navigation from inside a forwardState/buildPath 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(...)).`})}#m(e){throw this.#l.isReady()&&this.#r.get()===void 0?this.#l.sendStop():this.#l.isStarting()&&this.#l.sendFail(void 0,e),e}#h(){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 new U(g.ROUTER_DISPOSED)}const Ia=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 La(e){if(e==null)return`default`;try{return String(e)}catch(e){throw TypeError(`[router.constructor] Invalid "urlParamsEncoding": coercing it threw.`,{cause:e})}}function Ra(e){if(!e)return Ia;let t=$(`arrayFormat`,e),n=$(`booleanFormat`,e),r=$(`nullFormat`,e),i=$(`numberFormat`,e);return Object.freeze({...t!==void 0&&{arrayFormat:t},...n!==void 0&&{booleanFormat:n},...r!==void 0&&{nullFormat:r},...i!==void 0&&{numberFormat:i}})}function za(e){return Object.freeze({strictTrailingSlash:e.trailingSlash===`strict`,caseSensitive:e.caseSensitive,strictQueryParams:e.queryParamsMode===`strict`,urlParamsEncoding:La(e.urlParamsEncoding),queryParams:Ra(e.queryParams)})}export{ee as A,I as C,Vt as D,Bt as E,g as M,b as N,ue as O,Xn as S,P as T,fr as _,Mr as a,Kn as b,Sr as c,Cr as d,Or as f,jr as g,dr as h,L as i,v as j,_ as k,Tr as l,Nr as m,U as n,Er as o,kr as p,H as r,z as s,Fa as t,R as u,ar as v,F as w,Zn as x,ir as y};
2
+ //# sourceMappingURL=Router-Cjo2yj_L.mjs.map