@real-router/core 0.74.9 → 0.76.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,2 +1,2 @@
1
- import{a as e,c as t,l as n,o as r,r as i,s as a,t as o,u as s}from"./esm-CLeBo4Hk.mjs";import{logger as c}from"@real-router/logger";import{FSM as l}from"@real-router/fsm";const u={maxListeners:0,warnListeners:0};var d=class{#e=new Map;#t=new Set;#n=null;#r=u;#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;try{this.#o(s,o,t,n,r,i)}catch(t){this.#i?.(e,t)}}else{let s=[...a];for(let a of s)try{this.#o(a,o,t,n,r,i)}catch(t){this.#i?.(e,t)}}}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){switch(t){case 0:e();break;case 1:e(n);break;case 2:e(n,r);break;case 3:e(n,r,i);break;default:e(n,r,i,a)}}};const f=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`}),p=`@@router/UNKNOWN_ROUTE`,m={UNKNOWN_ROUTE:p},h={ROUTER_START:`onStart`,ROUTER_STOP:`onStop`,TRANSITION_START:`onTransitionStart`,TRANSITION_LEAVE_APPROVE:`onTransitionLeaveApprove`,TRANSITION_CANCEL:`onTransitionCancel`,TRANSITION_SUCCESS:`onTransitionSuccess`,TRANSITION_ERROR:`onTransitionError`},g={ROUTER_START:`$start`,ROUTER_STOP:`$stop`,TRANSITION_START:`$$start`,TRANSITION_LEAVE_APPROVE:`$$leaveApprove`,TRANSITION_CANCEL:`$$cancel`,TRANSITION_SUCCESS:`$$success`,TRANSITION_ERROR:`$$error`},_={maxDependencies:100,maxPlugins:50,maxListeners:1e4,warnListeners:1e3,maxLifecycleHandlers:200},v=Object.freeze({}),y=Object.freeze({deactivated:Object.freeze([]),activated:Object.freeze([]),intersection:``}),b=Object.freeze({phase:`activating`,reason:`success`,segments:y}),x={IDLE:`IDLE`,STARTING:`STARTING`,READY:`READY`,TRANSITION_STARTED:`TRANSITION_STARTED`,LEAVE_APPROVED:`LEAVE_APPROVED`,DISPOSED:`DISPOSED`},S={START:`START`,STARTED:`STARTED`,NAVIGATE:`NAVIGATE`,LEAVE_APPROVE:`LEAVE_APPROVE`,COMPLETE:`COMPLETE`,FAIL:`FAIL`,CANCEL:`CANCEL`,STOP:`STOP`,DISPOSE:`DISPOSE`},ee={initial:x.IDLE,context:null,transitions:{[x.IDLE]:{[S.START]:x.STARTING,[S.DISPOSE]:x.DISPOSED},[x.STARTING]:{[S.STARTED]:x.READY,[S.FAIL]:x.IDLE,[S.STOP]:x.IDLE,[S.DISPOSE]:x.DISPOSED},[x.READY]:{[S.NAVIGATE]:x.TRANSITION_STARTED,[S.FAIL]:x.READY,[S.STOP]:x.IDLE,[S.DISPOSE]:x.DISPOSED},[x.TRANSITION_STARTED]:{[S.NAVIGATE]:x.TRANSITION_STARTED,[S.LEAVE_APPROVE]:x.LEAVE_APPROVED,[S.CANCEL]:x.READY,[S.FAIL]:x.READY,[S.DISPOSE]:x.DISPOSED},[x.LEAVE_APPROVED]:{[S.NAVIGATE]:x.TRANSITION_STARTED,[S.COMPLETE]:x.READY,[S.CANCEL]:x.READY,[S.FAIL]:x.READY,[S.DISPOSE]:x.DISPOSED},[x.DISPOSED]:{}}};function te(){return new l(ee)}function ne(e){if(!e||typeof e!=`object`||e.constructor!==Object)throw TypeError(`dependencies must be a plain object`);for(let t in e)if(Object.getOwnPropertyDescriptor(e,t)?.get)throw TypeError(`dependencies cannot contain getters: "${t}"`)}function C(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&&C(r,t)}}function re(e){return Object.freeze(e)}function ie(e={}){return{..._,...e}}function w(e){if(e===void 0)return e;let t;for(let n in e){if(!Object.hasOwn(e,n))continue;let r=e[n];r!==void 0&&(t??={},t[n]=r)}return t??v}function ae(e={}){let t=Object.create(null);for(let n in e)e[n]!==void 0&&(t[n]=e[n]);return{dependencies:t,limits:_}}const oe={defaultRoute:``,defaultParams:{},trailingSlash:`preserve`,caseSensitive:!0,queryParamsMode:`loose`,queryParams:r,urlParamsEncoding:`default`,allowNotFound:!0,rewritePathOnMatch:!0};function se(e){Object.freeze(e);for(let t of Object.values(e))t&&typeof t==`object`&&t.constructor===Object&&se(t);return e}function ce(e,t){return typeof e==`function`?e(t):e}function le(e){if(!e||typeof e!=`object`||Array.isArray(e))throw TypeError(`[router.constructor] options must be a plain object`)}var ue=class{#e;constructor(e={}){this.#e=se({...oe,...e})}static validateOptionsIsObject(e){le(e)}get(){return this.#e}};function T(e,t){if(e===t)return!0;if(Array.isArray(e)&&Array.isArray(t)){if(e.length!==t.length)return!1;for(let n=0;n<e.length;n++)if(!T(e[n],t[n]))return!1;return!0}return!1}const de=new WeakMap;function E(e){return de.get(e)}function fe(e,t){de.set(e,t)}var pe=class{#e=void 0;#t=void 0;#n;get(){return this.#e}set(e){this.#t=this.#e,this.#e=e?re(e):void 0}getPrevious(){return this.#t}reset(){this.#e=void 0,this.#t=void 0}setDependencies(e){this.#n=e}makeState(e,t,n,r,i){let a=this.#n.getDefaultParams(),o=Object.hasOwn(a,e),s;s=o?Object.freeze({...a[e],...t}):!t||t===v?v:Object.freeze({...t});let c={name:e,params:s,path:n??this.#n.buildPath(e,t),context:{},...!i&&{transition:b}};return r&&fe(c,r),i?c:re(c)}areStatesEqual(e,t,n=!0){if(!e||!t)return!!e==!!t;if(e.name!==t.name)return!1;if(n){let n=this.#n.getUrlParams(e.name);for(let r of n)if(!T(e.params[r],t.params[r]))return!1;return!0}let r=Object.keys(e.params),i=Object.keys(t.params);if(r.length!==i.length)return!1;for(let n of r)if(!(n in t.params)||!T(e.params[n],t.params[n]))return!1;return!0}};const me={[h.ROUTER_START]:g.ROUTER_START,[h.ROUTER_STOP]:g.ROUTER_STOP,[h.TRANSITION_SUCCESS]:g.TRANSITION_SUCCESS,[h.TRANSITION_START]:g.TRANSITION_START,[h.TRANSITION_LEAVE_APPROVE]:g.TRANSITION_LEAVE_APPROVE,[h.TRANSITION_ERROR]:g.TRANSITION_ERROR,[h.TRANSITION_CANCEL]:g.TRANSITION_CANCEL},he=Object.keys(me),D=`router.usePlugin`;function ge(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 _e=class e{#e=new Set;#t=new Set;#n;static validatePlugin(e){ge(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){c.error(D,`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){c.error(D,`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){c.error(D,`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 he)e in n&&(typeof n[e]==`function`?(r.push(this.#n.addEventListener(me[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 ve=()=>!0,ye=()=>!1,be=()=>ve,xe=()=>ye;function Se(e){return e?be:xe}var Ce=class{#e=new Map;#t=new Map;#n=new Map;#r=new Map;#i=new Map;#a=new Map;#o=[this.#i,this.#a];#s;setDependencies(e){this.#s=e}getHandlerCount(e){let t=e===`activate`?this.#e:this.#n,n=e===`activate`?this.#t:this.#r;if(t.size===0)return n.size;if(n.size===0)return t.size;let r=new Set(t.keys());for(let e of n.keys())r.add(e);return r.size}preflightHandlerLimit(e,t,n){let r=this.#s.getValidator();if(!r)return;let i=(e,t,i)=>{let{definition:a,external:o}=this.#d(e),s=0;for(let e of t)(n?o.has(e):a.has(e)||o.has(e))||s++;if(s===0)return;let c=n?o.size:this.getHandlerCount(e);r.lifecycle.validateHandlerLimit(c+s-1,i)};i(`activate`,e,`canActivate`),i(`deactivate`,t,`canDeactivate`)}addCanActivate(e,t,n=!1,r){this.#c(`activate`,e,t,n,`canActivate`,r)}addCanDeactivate(e,t,n=!1,r){this.#c(`deactivate`,e,t,n,`canDeactivate`,r)}clearCanActivate(e,t){this.#l(`activate`,e,t)}clearCanDeactivate(e,t){this.#l(`deactivate`,e,t)}clearAll(){this.#e.clear(),this.#t.clear(),this.#n.clear(),this.#r.clear(),this.#a.clear(),this.#i.clear()}clearDefinitionGuards(){for(let e of this.#e.keys())this.#t.has(e)?this.#u(`activate`,e):this.#a.delete(e);for(let e of this.#n.keys())this.#r.has(e)?this.#u(`deactivate`,e):this.#i.delete(e);this.#e.clear(),this.#n.clear()}getFactories(){let e={},t={};for(let[t,n]of this.#n)e[t]=n;for(let[t,n]of this.#r)e[t]=n;for(let[e,n]of this.#e)t[e]=n;for(let[e,n]of this.#t)t[e]=n;return[e,t]}getFactoriesByOrigin(){let e={},t={},n={},r={};for(let[t,n]of this.#n)e[t]=n;for(let[e,n]of this.#e)t[e]=n;for(let[e,t]of this.#r)n[e]=t;for(let[e,t]of this.#t)r[e]=t;return{definition:[e,t],external:[n,r]}}getFunctions(){return this.#o}canNavigateTo(e,t,n,r){for(let t of e)if(!this.#f(this.#i,t,n,r,`canNavigateTo`))return!1;for(let e of t)if(!this.#f(this.#a,e,n,r,`canNavigateTo`))return!1;return!0}compileGuardFactory(e,t){let n=typeof e==`boolean`?Se(e):e,r=this.#s.compileFactory(n);if(typeof r!=`function`)throw TypeError(`[router.${t}] Factory must return a function, got ${typeof r}`);return r}#c(e,t,n,r,i,a){let o=this.#d(e),s=e===`activate`?this.#a:this.#i,c=r?o.definition:o.external,l=r?o.external:o.definition;if(c.has(t)||l.has(t))this.#s.getValidator()?.lifecycle.warnOverwrite(t,e,i);else{let t=this.#s.getValidator();if(t){let n=this.getHandlerCount(e);t.lifecycle.validateHandlerLimit(n,i),t.lifecycle.validateCountThresholds(n+1,i)}}let u=typeof n==`boolean`?Se(n):n,d=c.get(t);c.set(t,u);let f=r&&l.has(t);try{let e=a??this.compileGuardFactory(u,i);f||s.set(t,e)}catch(n){throw d===void 0?c.delete(t):c.set(t,d),this.#u(e,t),n}}#l(e,t,n){let{definition:r,external:i}=this.#d(e),a=n===`external`?!1:r.delete(t),o=n===`definition`?!1:i.delete(t);(a||o)&&this.#u(e,t)}#u(e,t){let n=this.#d(e),r=e===`activate`?this.#a:this.#i,i=n.external.get(t)??n.definition.get(t);if(!i){r.delete(t);return}try{let e=this.#s.compileFactory(i);if(typeof e!=`function`){r.delete(t);return}r.set(t,e)}catch{r.delete(t)}}#d(e){return e===`activate`?{definition:this.#e,external:this.#t}:{definition:this.#n,external:this.#r}}#f(e,t,n,r,i){let a=e.get(t);if(!a)return!0;try{let e=a(n,r);return typeof e==`boolean`?e:(this.#s.getValidator()?.lifecycle.warnAsyncGuardSync(t,i),!1)}catch(e){return c.warn(`router.${i}`,`Guard for "${t}" threw — treated as navigation-blocking (returned false)`,e),!1}}};const we=new Set([`name`,`path`,`children`,`canActivate`,`canDeactivate`,`forwardTo`,`encodeParams`,`decodeParams`,`defaultParams`]);function O(){return{decoders:Object.create(null),encoders:Object.create(null),defaultParams:Object.create(null),forwardMap:Object.create(null),forwardFnMap:Object.create(null)}}function k(e,t){for(let n of Object.keys(t))Object.assign(e[n],t[n])}function Te(e,t){for(let n in e)if(e[n]!==t[n])return!1;return!0}function Ee(e,t,n){for(let r in e)if(!(r in n)&&e[r]!==t[r])return!1;return!0}function De(e,t){if(!t||!Oe(e,t))return e;let n={};for(let r in e)t[r]!==`query`&&(n[r]=e[r]);return n}function Oe(e,t){for(let n in e)if(t[n]===`query`)return!0;return!1}function A(e){let t={name:e.name,path:e.path};return e.children&&(t.children=e.children.map(e=>A(e))),t}function j(e,t,n=``){for(let r=0;r<e.length;r++){let i=e[r],a=n?`${n}.${i.name}`:i.name;if(a===t)return e.splice(r,1),!0;if(i.children&&t.startsWith(`${a}.`)&&j(i.children,t,a))return!0}return!1}function ke(e,t){for(let n of Object.keys(e))t(n)&&delete e[n]}function Ae(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 je(e,t,n=100){let r=new Set,i=[e],a=e;for(;t[a];){let e=t[a];if(r.has(e)){let t=i.indexOf(e),n=[...i.slice(t),e];throw Error(`Circular forwardTo: ${n.join(` → `)}`)}if(r.add(a),i.push(e),a=e,i.length>n)throw Error(`forwardTo chain exceeds maximum depth (${n}): ${i.join(` → `)}`)}return a}function Me(t,n,r){let i=e(``,n,t),a=o(r);return a.registerTree(i),{tree:i,matcher:a}}function M(e,t=e.definitions){let n=Me(t,e.rootPath,e.matcherOptions);e.tree=n.tree,e.matcher=n.matcher,e.urlParamsCache.clear()}function Ne(e,t){M(e,t),e.resolvedForwardMap=N(e.config)}function Pe(e){Fe(e),M(e,[])}function Fe(e){Object.assign(e.config,O()),e.resolvedForwardMap=Object.create(null),e.routeCustomFields=Object.create(null)}function N(e){let t=Object.create(null);for(let n of Object.keys(e.forwardMap))t[n]=je(n,e.forwardMap);return t}function Ie(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 Le(e,t,n){if(e.canActivate){let n=typeof e.forwardTo==`string`?e.forwardTo:`[dynamic]`;c.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]`;c.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}".`)}Ie(e.forwardTo,t),typeof e.forwardTo==`string`?n.forwardMap[t]=e.forwardTo:n.forwardFnMap[t]=e.forwardTo}function Re(e,t,n,r,i,a){let o=Object.fromEntries(Object.entries(e).filter(([e])=>!we.has(e)));Object.keys(o).length>0&&(r[t]=o),e.canActivate&&i.set(t,e.canActivate),e.canDeactivate&&a.set(t,e.canDeactivate),e.forwardTo&&Le(e,t,n),e.decodeParams&&(n.decoders[t]=t=>e.decodeParams?.(t)??t),e.encodeParams&&(n.encoders[t]=t=>e.encodeParams?.(t)??t),e.defaultParams&&(n.defaultParams[t]=e.defaultParams)}function ze(e,t,n,r,i,a=``){for(let o of e){let e=a?`${a}.${o.name}`:o.name;Re(o,e,t,n,r,i),o.children&&ze(o.children,t,n,r,i,e)}}function Be(e){let t=O();return k(t,e),t}function Ve(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]:Ve(n,t,i)}})}function P(e,t,n){for(let r of e){let e=t?`${t}.${r.name}`:r.name;n(e),r.children&&P(r.children,e,n)}}function F(e,t,n){let r=new Set;P(e,t,e=>{if(r.has(e))throw Error(`[router.${n}] Duplicate route "${e}" in batch`);r.add(e)})}function He(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 I(e,t){for(let n of e)He(n.name,t),n.children&&I(n.children,t)}function Ue(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 We(e,t,n){if(I(t,`addRoute`),n!==void 0&&!e.matcher.hasRoute(n))throw Error(`[router.addRoute] Parent route "${n}" does not exist`);P(t,n??``,t=>{if(e.matcher.hasRoute(t))throw Error(`[router.addRoute] Route "${t}" already exists`)}),F(t,n??``,`addRoute`),Ue(t,n??``,`addRoute`)}function Ge(e,t,n,r,i,a,o){let s=new Map,c=new Map;ze(t,n,r,s,c,i);let l=N(n),{tree:u,matcher:d}=Me(e,a,o);return{config:n,routeCustomFields:r,pendingCanActivate:s,pendingCanDeactivate:c,tree:u,matcher:d,resolvedForwardMap:l}}function Ke(e,t,n){return Ge(Ve(e.definitions,t.map(e=>A(e)),n===void 0?[]:n.split(`.`)),t,Be(e.config),Object.assign(Object.create(null),e.routeCustomFields),n??``,e.rootPath,e.matcherOptions)}function L(e,t,n){return Ge(e.map(e=>A(e)),e,O(),Object.create(null),``,t,n)}function qe(e,t,n){let r=[];for(let[i,a]of e)r.push([i,a,t(a,n)]);return r}function Je(e,t){return{activate:qe(e.pendingCanActivate,t.compileGuard,`canActivate`),deactivate:qe(e.pendingCanDeactivate,t.compileGuard,`canDeactivate`)}}function Ye(e,t,n){let r=e.depsStore,{activate:i,deactivate:a}=n??Je(t,r);Object.assign(e.config,t.config),e.routeCustomFields=t.routeCustomFields,e.tree=t.tree,e.matcher=t.matcher,e.urlParamsCache.clear(),e.resolvedForwardMap=t.resolvedForwardMap;for(let[e,t,n]of i)r.addActivateGuard(e,t,n);for(let[e,t,n]of a)r.addDeactivateGuard(e,t,n)}function Xe(e,t,n,r){let{forwardTo:i,defaultParams:a,decodeParams:o,encodeParams:s,canActivate:c,canDeactivate:l}=r,u=i===void 0?void 0:Ze(n,i,e.config),d=Qe(e,n,r),f=c==null?void 0:t.compileGuardFactory(c,`canActivate`),p=l==null?void 0:t.compileGuardFactory(l,`canDeactivate`);return t.preflightHandlerLimit(f===void 0?[]:[n],p===void 0?[]:[n],!1),d!==void 0&&(Object.keys(d).length>0?e.routeCustomFields[n]=d:delete e.routeCustomFields[n]),u!==void 0&&(e.config.forwardMap=u.forwardMap,e.config.forwardFnMap=u.forwardFnMap,e.resolvedForwardMap=u.resolved),$e(e,n,{defaultParams:a,decodeParams:o,encodeParams:s}),et(t,`activate`,n,c,f),et(t,`deactivate`,n,l,p),{forwardTo:i,defaultParams:a,decodeParams:o,encodeParams:s}}function Ze(e,t,n){Ie(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:N({...n,forwardMap:r})}}function Qe(e,t,n){let r;for(let i of Object.keys(n)){if(we.has(i))continue;let a=n[i];a!==void 0&&(r??={...e.routeCustomFields[t]},a===null?delete r[i]:r[i]=a)}return r}function $e(e,t,n){if(n.defaultParams!==void 0&&(n.defaultParams===null?delete e.config.defaultParams[t]:e.config.defaultParams[t]=n.defaultParams),n.decodeParams!==void 0)if(n.decodeParams===null)delete e.config.decoders[t];else{let r=n.decodeParams;e.config.decoders[t]=e=>r(e)??e}if(n.encodeParams!==void 0)if(n.encodeParams===null)delete e.config.encoders[t];else{let r=n.encodeParams;e.config.encoders[t]=e=>r(e)??e}}function et(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 tt(e,t){I(e,`addRoute`),F(e,``,`addRoute`);let n=L(e,``,t),r={get definitions(){return i(r.tree)},config:n.config,tree:n.tree,matcher:n.matcher,urlParamsCache:new Map,resolvedForwardMap:n.resolvedForwardMap,routeCustomFields:n.routeCustomFields,rootPath:``,matcherOptions:t,depsStore:void 0,lifecycleNamespace:void 0,pendingCanActivate:n.pendingCanActivate,pendingCanDeactivate:n.pendingCanDeactivate};return r}const R=[];Object.freeze(R);function nt(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 rt=new Set([`string`,`number`,`boolean`]);function it(e){return rt.has(typeof e)}function at(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(it(t)&&it(i)&&String(t)!==String(i))return!1}return!0}function ot(e,t,n,r,i,a){for(let o=0;o<a;o++){let a=r[o];if(a!==i[o]||!at(a,e,t,n))return o}return a}const st=new Map;function z(e){let t=st.get(e);if(t)return t;let n=ct(e);return Object.freeze(n),st.set(e,n),n}function ct(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]:nt(e)}let B,V,H=null,lt,ut,U=null;function dt(e,t){if(!t)return{intersection:``,toActivate:z(e.name),toDeactivate:R};let n=E(e),r=E(t);if(!n&&!r)return{intersection:``,toActivate:z(e.name),toDeactivate:z(t.name)};let i=z(e.name),a=z(t.name),o=Math.min(a.length,i.length),s=ot(n??r,e,t,i,a,o),c;if(s>=a.length)c=R;else if(s===0&&a.length===1)c=a;else{c=[];for(let e=a.length-1;e>=s;e--)c.push(a[e])}let l=s===0?i:i.slice(s);return{intersection:s>0?a[s-1]:``,toDeactivate:c,toActivate:l}}function W(e,t){if(H!==null&&e===B&&t===V)return H;if(U!==null&&e===lt&&t===ut)return U;let n=dt(e,t);return lt=B,ut=V,U=H,B=e,V=t,H=n,n}function ft(e){let t=[];for(let n of e)for(let e of n.paramMeta.urlParams)t.push(e);return t}function pt(e,t){return{name:t??e.segments.at(-1).fullName,params:e.params,meta:e.meta}}var mt=class{#e;#t;#n;get#r(){return this.#e.depsStore}constructor(e=[],t){this.#e=tt(e,t)}static shouldUpdateNode(e){return(t,n)=>{if(!(t&&typeof t==`object`&&`name`in t))throw TypeError(`[router.shouldUpdateNode] toState must be valid State object`);if(t.transition.reload||e===``)return!0;let{intersection:r,toActivate:i,toDeactivate:a}=W(t,n);return e===r||i.includes(e)?!0:a.includes(e)}}setDependencies(e){this.#e.depsStore=e}flushPendingGuards(){let e=this.#r;for(let[t,n]of this.#e.pendingCanActivate)e.addActivateGuard(t,n);this.#e.pendingCanActivate.clear();for(let[t,n]of this.#e.pendingCanDeactivate)e.addDeactivateGuard(t,n);this.#e.pendingCanDeactivate.clear()}setLifecycleNamespace(e){this.#e.lifecycleNamespace=e}setRootPath(e){this.#e.rootPath=e,M(this.#e)}hasRoute(e){return this.#e.matcher.hasRoute(e)}clearRoutes(){Pe(this.#e)}buildPath(e,t,n){if(e===m.UNKNOWN_ROUTE)return typeof t?.path==`string`?t.path:``;let r=Object.hasOwn(this.#e.config.defaultParams,e)?{...this.#e.config.defaultParams[e],...t}:t??{},i=typeof this.#e.config.encoders[e]==`function`?this.#e.config.encoders[e]({...r}):r;return this.#e.matcher.buildPath(e,i,this.#a(n))}matchPath(e,t){let n=t,r=this.#e.matcher.match(e);if(!r)return;let{name:i,params:a,meta:o}=pt(r),s=typeof this.#e.config.decoders[i]==`function`?this.#e.config.decoders[i](a):a,{name:c,params:l}=this.#r.forwardState(i,s),u=e;if(n.rewritePathOnMatch){let t=typeof this.#e.config.encoders[c]==`function`?this.#e.config.encoders[c]({...l}):l,r=n.trailingSlash;try{u=this.#e.matcher.buildPath(c,t,{trailingSlash:r===`never`||r===`always`?r:void 0,queryParamsMode:n.queryParamsMode}),r===`preserve`&&(u=Ae(e,u))}catch{u=e}}return this.#r.makeState(c,l,u,o)}forwardState(e,t){if(Object.hasOwn(this.#e.config.forwardFnMap,e)){let n=this.#i(e,t),r=this.#e.config.forwardFnMap[e],i=this.#o(e,r,t);return{name:i,params:this.#i(i,n)}}let n=this.#e.resolvedForwardMap[e]??e;if(n!==e&&Object.hasOwn(this.#e.config.forwardFnMap,n)){let r=this.#i(e,t),i=this.#e.config.forwardFnMap[n],a=this.#o(n,i,t);return{name:a,params:this.#i(a,r)}}if(n!==e){let r=this.#i(e,t);return{name:n,params:this.#i(n,r)}}return{name:e,params:this.#i(e,t)}}buildStateResolved(e,t){let n=this.#e.matcher.getSegmentsByName(e);if(n)return pt({segments:n,params:t,meta:this.#e.matcher.getMetaByName(e)},e)}isActiveRoute(e,t={},n=!1,r=!0){let i=this.#r.getState();if(!i)return!1;let a=i.name;if(a!==e&&!a.startsWith(`${e}.`)&&!e.startsWith(`${a}.`))return!1;let o=this.#e.config.defaultParams[e];if(n||a===e){let n={name:e,params:o?{...o,...t}:t,path:``,transition:b,context:{}};return this.#r.areStatesEqual(n,i,r)}if(!a.startsWith(`${e}.`))return!1;let s=i.params;return Te(t,s)?o?Ee(r?De(o,this.#e.matcher.getMetaByName(e)?.[e]):o,s,t):!0:!1}getMetaForState(e){return this.#e.matcher.hasRoute(e)?this.#e.matcher.getMetaByName(e):void 0}getUrlParams(e){let t=this.#e.urlParamsCache.get(e);if(t!==void 0)return t;let n=this.#e.matcher.getSegmentsByName(e),r=n?ft(n):[];return this.#e.urlParamsCache.set(e,r),r}getStore(){return this.#e}#i(e,t){return Object.hasOwn(this.#e.config.defaultParams,e)?{...this.#e.config.defaultParams[e],...t}:t}#a(e){if(this.#t)return e!==this.#n&&c.warn(`router.buildPath`,"`options` differs from the cached source reference; router options are immutable per router instance, so the first-cached buildPath options are reused (#957)."),this.#t;this.#n=e;let t=e?.trailingSlash;return this.#t=Object.freeze({trailingSlash:t===`never`||t===`always`?t:void 0,queryParamsMode:e?.queryParamsMode}),this.#t}#o(e,t,n){let r=new Set([e]),i=t(this.#r.getDependency,n),a=0;if(typeof i!=`string`)throw TypeError(`forwardTo callback must return a string, got ${typeof i}`);for(;a<100;){if(this.#e.matcher.getSegmentsByName(i)===void 0)throw Error(`Route "${i}" does not exist`);if(r.has(i)){let e=[...r,i].join(` → `);throw Error(`Circular forwardTo: ${e}`)}if(r.add(i),Object.hasOwn(this.#e.config.forwardFnMap,i)){let e=this.#e.config.forwardFnMap[i];i=e(this.#r.getDependency,n),a++;continue}let e=this.#e.config.forwardMap[i];if(e!==void 0){i=e,a++;continue}return i}throw Error(`forwardTo exceeds maximum depth of 100`)}};const ht=new Set(Object.values(f)),gt=new Set([`code`,`segment`,`path`]),_t=new Set([`setCode`,`setErrorInstance`,`setAdditionalFields`,`hasField`,`getField`,`toJSON`]);var G=class extends Error{segment;path;code;constructor(e,{message:t,segment:n,path:r,...i}={}){super(t??e),this.name=`RouterError`,this.code=e,this.segment=n,this.path=r;for(let[e,t]of Object.entries(i)){if(gt.has(e))throw TypeError(`[RouterError] Cannot set reserved property "${e}"`);_t.has(e)||(this[e]=t)}}setCode(e){this.code=e,ht.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(gt.has(t))throw TypeError(`[RouterError.setAdditionalFields] Cannot set reserved property "${t}"`);_t.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 vt=new G(f.ROUTER_NOT_STARTED),yt=new G(f.ROUTE_NOT_FOUND),bt=new G(f.SAME_STATES),K=Promise.reject(vt),xt=Promise.reject(yt),St=Promise.reject(bt);K.catch(()=>{}),xt.catch(()=>{}),St.catch(()=>{});function Ct(e,t,n,r,i){Object.freeze(n),Object.freeze(r);let a={phase:`activating`,reason:`success`,segments:Object.freeze({deactivated:n,activated:r,intersection:i})};return e?.name!==void 0&&(a.from=e.name),t.reload!==void 0&&(a.reload=t.reload),t.replace!==void 0&&(a.replace=t.replace),t.redirected!==void 0&&(a.redirected=t.redirected),Object.freeze(a)}function wt({signal:e,...t}){return t}function Tt(e,t){let{toState:n,fromState:r,opts:i,toDeactivate:a,toActivate:o,intersection:s}=t;if(n.name!==m.UNKNOWN_ROUTE&&!e.hasRoute(n.name)){let t=new G(f.ROUTE_NOT_FOUND,{routeName:n.name});throw e.sendTransitionFail(n,r,t),t}if(r)for(let n of a)!o.includes(n)&&t.canDeactivateFunctions.has(n)&&e.clearCanDeactivate(n);n.transition=Ct(r,i,a,o,s);let c=Object.freeze(n);e.setState(c);let l=i.signal===void 0?i:wt(i);return e.sendTransitionDone(c,r,l),c}function Et(e,t,n,r){let i=t;i.code===f.TRANSITION_CANCELLED||i.code===f.ROUTE_NOT_FOUND||e.sendTransitionFail(n,r,i)}function q(e,t,n){if(e instanceof DOMException&&e.name===`AbortError`)throw new G(f.TRANSITION_CANCELLED);if(e instanceof G&&e.code===f.TRANSITION_CANCELLED)throw e;Dt(e,t,n)}function Dt(e,t,n){throw e instanceof G?(e.setCode(t),e):new G(t,kt(e,n))}const Ot=new Set([`code`,`segment`,`path`,`then`]);function kt(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))Ot.has(n)||(t[n]=r);return{...n,...t}}return n}async function At(e,t,n){let r;try{r=await e}catch(e){q(e,t,n);return}if(!r)throw new G(t,{segment:n})}async function jt(e,t,n,r,i,a,o,s,c,l){await At(c,n,l);for(let c=s;c<t.length;c++){if(!o())throw new G(f.TRANSITION_CANCELLED);let s=t[c],l=e.get(s);if(!l)continue;let u=!1;try{u=l(r,i,a)}catch(e){q(e,n,s)}if(u instanceof Promise){await At(u,n,s);continue}if(!u)throw new G(n,{segment:s})}}async function Mt(e,t,n,r,i,a,o,s,c){if(await e,!s())throw new G(f.TRANSITION_CANCELLED);let l=c();if(l!==void 0&&(await l,!s()))throw new G(f.TRANSITION_CANCELLED);if(r){let e=J(t,n,f.CANNOT_ACTIVATE,i,a,o,s);if(e!==void 0&&await e,!s())throw new G(f.TRANSITION_CANCELLED)}}function Nt(e,t,n,r,i,a,o,s,c,l,u){if(i){let i=J(e,n,f.CANNOT_DEACTIVATE,o,s,c,l);if(i!==void 0)return Mt(i,t,r,a,o,s,c,l,u)}if(!l())throw new G(f.TRANSITION_CANCELLED);let d=u();if(d!==void 0)return Pt(d,a?t:void 0,r,o,s,c,l);if(a)return J(t,r,f.CANNOT_ACTIVATE,o,s,c,l)}async function Pt(e,t,n,r,i,a,o){if(await e,!o())throw new G(f.TRANSITION_CANCELLED);if(t!==void 0){let e=J(t,n,f.CANNOT_ACTIVATE,r,i,a,o);if(e!==void 0&&await e,!o())throw new G(f.TRANSITION_CANCELLED)}}function J(e,t,n,r,i,a,o){for(let[s,c]of t.entries()){if(!o())throw new G(f.TRANSITION_CANCELLED);let l=e.get(c);if(!l)continue;let u=!1;try{u=l(r,i,a)}catch(e){q(e,n,c)}if(u instanceof Promise)return jt(e,t,n,r,i,a,o,s+1,u,c);if(!u)throw new G(n,{segment:c})}}const Ft=Object.freeze([m.UNKNOWN_ROUTE]),It=Object.freeze({replace:!0});function Lt(e,t){return t?.name===m.UNKNOWN_ROUTE&&!e.replace?{...e,replace:!0}:e}function Rt(e,t,n){return!!e&&!t.reload&&!t.force&&e.path===n.path}var zt=class{lastSyncResolved=!1;lastSyncRejected=!1;#e;#t=null;#n=0;setDependencies(e){this.#e=e}navigate(e,t,n){this.lastSyncResolved=!1;let r=this.#e;if(!r.canNavigate())return this.lastSyncRejected=!0,K;let i;try{i=r.buildNavigateState(e,t)}catch(e){return Promise.reject(e)}return i?this.#r(i,n):(r.emitTransitionError(void 0,r.getState(),yt),this.lastSyncRejected=!0,xt)}navigateToState(e,t){this.lastSyncResolved=!1;let n=this.#e;if(!n.canNavigate())return this.lastSyncRejected=!0,K;if(e.name!==m.UNKNOWN_ROUTE&&!n.hasRoute(e.name)){let t=new G(f.ROUTE_NOT_FOUND,{routeName:e.name});return n.emitTransitionError(void 0,n.getState(),t),Promise.reject(t)}let r={name:e.name,params:e.params,path:e.path,context:{...e.context}},i=E(e);return i!==void 0&&fe(r,i),this.#r(r,t)}navigateToDefault(e){this.lastSyncResolved=!1;let t=this.#e;if(!t.getOptions().defaultRoute)return Promise.reject(new G(f.ROUTE_NOT_FOUND,{routeName:`defaultRoute not configured`}));let n,r;try{({route:n,params:r}=t.resolveDefault())}catch(e){return Promise.reject(e)}return n?this.navigate(n,r,e):Promise.reject(new G(f.ROUTE_NOT_FOUND,{routeName:`defaultRoute resolved to empty`}))}navigateToNotFound(e){if(!this.#e.isActive())throw new G(f.ROUTER_DISPOSED);this.#c();let t=this.#e.getState(),n=t?z(t.name).toReversed():[];Object.freeze(n);let r={deactivated:n,activated:Ft,intersection:``};Object.freeze(r);let i={phase:`activating`,...t&&{from:t.name},reason:`success`,replace:!0,segments:r};Object.freeze(i);let a={name:m.UNKNOWN_ROUTE,params:v,path:e,transition:i,context:{}};return Object.freeze(a),this.#e.setState(a),this.#e.emitTransitionSuccess(a,t,It),a}abortCurrentController(e){this.#t?.abort(e??new G(f.TRANSITION_CANCELLED)),this.#t=null}#r(e,t){let n=this.#e,r,i=!1,a=null;try{if(r=n.getState(),t=Lt(t,r),Rt(r,t,e))return n.emitTransitionError(e,r,bt),this.lastSyncRejected=!0,St;this.#c(t.signal);let o=++this.#n,s=t.signal!==void 0||n.hasLeaveListeners()||n.hasPreCommitListeners();n.startTransition(e,r),i=!0;let[c,l]=n.getLifecycleFunctions(),u=e.name===m.UNKNOWN_ROUTE,d=W(e,r),{toDeactivate:p,toActivate:h,intersection:g}=d,_=r&&!t.forceDeactivate&&p.length>0,v=!u&&h.length>0,y=c.size>0||l.size>0,b=e;if(!y){let e=this.#o(b,r,o,t,d,c);if(e!==void 0)return e}if(y){a=new AbortController,this.#t=a;let i=()=>this.#n===o&&n.isActive(),s=a.signal,u=Nt(c,l,p,h,!!_,v,e,r,s,i,()=>{if(n.sendLeaveApprove(b,r),n.hasLeaveListeners())return n.awaitLeaveListeners(b,r,s)});if(u!==void 0)return this.#i(u,{toState:e,fromState:r,opts:t,toDeactivate:p,toActivate:h,intersection:g,canDeactivateFunctions:c},a,o);if(!i())throw new G(f.TRANSITION_CANCELLED);this.#s(a,!1)}if(s&&(!n.isActive()||t.signal?.aborted===!0))throw new G(f.TRANSITION_CANCELLED);let x=Tt(n,{toState:e,fromState:r,opts:t,toDeactivate:p,toActivate:h,intersection:g,canDeactivateFunctions:c});return this.lastSyncResolved=!0,Promise.resolve(x)}catch(t){return this.#a(t,a,i,e,r),Promise.reject(t)}}async#i(e,t,n,r){let i=this.#e,a=()=>this.#n===r&&!n.signal.aborted&&i.isActive(),o=t.opts.signal,s,c,l=!1,u,d=new Promise(e=>{if(n.signal.aborted){e();return}c=()=>{e()},n.signal.addEventListener(`abort`,c,{once:!0})});e.catch(()=>{});try{if(o){if(o.aborted)throw new G(f.TRANSITION_CANCELLED,{reason:o.reason});s=()=>{i.cancelNavigation(o.reason)},o.addEventListener(`abort`,s,{once:!0})}if(await Promise.race([e,d]),!a())throw new G(f.TRANSITION_CANCELLED);let n=Tt(i,t);return l=!0,n}catch(e){throw u=e,Et(i,e,t.toState,t.fromState),e}finally{s&&o?.removeEventListener(`abort`,s),c&&n.signal.removeEventListener(`abort`,c),this.#s(n,!l,u)}}#a(e,t,n,r,i){t&&this.#s(t,!0,e),n&&r&&Et(this.#e,e,r,i)}#o(e,t,n,r,i,a){let o=this.#e;if(o.sendLeaveApprove(e,t),o.hasLeaveListeners()){let s=new AbortController;this.#t=s;let c;try{c=o.awaitLeaveListeners(e,t,s.signal)}catch(e){throw this.#s(s,!0,e),e}if(c!==void 0)return this.#i(c,{toState:e,fromState:t,opts:r,toDeactivate:i.toDeactivate,toActivate:i.toActivate,intersection:i.intersection,canDeactivateFunctions:a},s,n);this.#s(s,!1);return}}#s(e,t,n){t&&e.abort(n),this.#t===e&&(this.#t=null)}#c(e){if(this.#e.isTransitioning()&&(c.warn(`router.navigate`,`Concurrent navigation detected on shared router instance. For SSR, use cloneRouter() to create isolated instance per request.`),this.#e.cancelNavigation()),e?.aborted)throw new G(f.TRANSITION_CANCELLED,{reason:e.reason})}};const Bt=Object.freeze({replace:!0});var Vt=class{#e;setDependencies(e){this.#e=e}async start(e){let t=this.#e;if(t.isIdle())throw new G(f.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){let n=new G(f.ROUTE_NOT_FOUND,{path:e});throw t.emitTransitionError(void 0,void 0,n),n}return t.completeStart(),r?t.navigateToState(r,Bt):t.navigateToNotFound(e)}stop(){this.#e.clearState()}};const Y=`TREE_CHANGED`;function X(e){return e instanceof Error?e:Error(String(e))}function Ht(e,t,n){return new Promise((r,i)=>{let a=()=>{let e=n.reason;i(e instanceof G&&e.code===f.TRANSITION_CANCELLED?e:new G(f.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(X(t));return}let o=e.find(e=>e.status===`rejected`);if(o!==void 0){i(X(o.reason));return}r()})})}var Z=class{#e;#t;#n;#r;#i=[];#a=0;#o;#s;#c;#l;#u;constructor(e){this.#e=e.routerFSM,this.#t=e.emitter,this.#n=e.onListenerError,this.#r=e.abortController,this.#o=void 0,this.#f()}static validateSubscribeListener(e){if(typeof e!=`function`)throw TypeError(`[router.subscribe] Expected a function. For Observable pattern use observable(router) from @real-router/rx`)}static validateSubscribeLeaveListener(e){if(typeof e!=`function`)throw TypeError(`[router.subscribeLeave] Expected a function`)}emitRouterStart(){this.#t.emit(g.ROUTER_START)}emitRouterStop(){this.#t.emit(g.ROUTER_STOP)}emitTransitionStart(e,t){this.#a++;try{this.#t.emit(g.TRANSITION_START,e,t)}finally{this.#a--}}emitTransitionSuccess(e,t,n){this.#a++;try{this.#t.emit(g.TRANSITION_SUCCESS,e,t,n)}finally{this.#a--}}emitTransitionError(e,t,n){this.#a++;try{this.#t.emit(g.TRANSITION_ERROR,e,t,n)}finally{this.#a--}}emitTransitionCancel(e,t){this.#a++;try{this.#t.emit(g.TRANSITION_CANCEL,e,t)}finally{this.#a--}}emitTransitionLeaveApprove(e,t){this.#a++;try{this.#t.emit(g.TRANSITION_LEAVE_APPROVE,e,t)}finally{this.#a--}}isProcessing(){return this.#a>0}emitTreeChanged(e){this.#t.emit(Y,e)}isEmittingTreeChanged(){return this.#t.isDispatching(Y)}subscribeTreeChanged(e){if(this.isDisposed())throw new G(f.ROUTER_DISPOSED);return this.#t.on(Y,t=>{e(t)})}treeChangedListenerCount(){return this.#t.listenerCount(Y)}sendStart(){this.#e.send(S.START)}sendStop(){this.#e.send(S.STOP)}sendDispose(){this.#e.send(S.DISPOSE)}sendStarted(){this.#e.send(S.STARTED)}sendNavigate(e,t){this.#o=e,this.#e.send(S.NAVIGATE,{toState:e,fromState:t})}sendComplete(e,t,n={}){this.#e.send(S.COMPLETE,{toState:e,fromState:t,opts:n}),this.#o=void 0}sendLeaveApprove(e,t){this.#e.send(S.LEAVE_APPROVE,{toState:e,fromState:t})}sendFail(e,t,n){this.#s=e,this.#c=t,this.#l=n,this.#e.send(S.FAIL),this.#o=void 0}sendFailSafe(e,t,n){this.isReady()?this.sendFail(e,t,n):this.emitTransitionError(e,t,n)}sendCancel(e,t,n){this.#s=e,this.#c=t,this.#u=n,this.#e.send(S.CANCEL),this.#o=void 0}canBeginTransition(){return this.#e.canSend(S.NAVIGATE)}canStart(){return this.#e.canSend(S.START)}canCancel(){return this.#e.canSend(S.CANCEL)}isActive(){let e=this.#e.getState();return e!==x.IDLE&&e!==x.DISPOSED}isDisposed(){return this.#e.getState()===x.DISPOSED}isTransitioning(){let e=this.#e.getState();return e===x.TRANSITION_STARTED||e===x.LEAVE_APPROVED}isLeaveApproved(){return this.#e.getState()===x.LEAVE_APPROVED}isReady(){return this.#e.getState()===x.READY}isStarting(){return this.#e.getState()===x.STARTING}isIdle(){return this.#e.getState()===x.IDLE}addEventListener(e,t){return this.#t.on(e,t)}subscribe(e){if(this.isDisposed())throw new G(f.ROUTER_DISPOSED);return this.#t.on(g.TRANSITION_SUCCESS,(t,n)=>{let r=e({route:t,previousRoute:n});r!=null&&typeof r.then==`function`&&Promise.resolve(r).catch(e=>{this.#n(g.TRANSITION_SUCCESS,e)})})}subscribeLeave(e){if(this.isDisposed())throw new G(f.ROUTER_DISPOSED);this.#i.push(e);let t=!1;return()=>{if(t)return;t=!0;let n=this.#i.indexOf(e);n!==-1&&this.#i.splice(n,1)}}hasLeaveListeners(){return this.#i.length>0}hasPreCommitListeners(){return this.#t.listenerCount(g.TRANSITION_START)>0||this.#t.listenerCount(g.TRANSITION_LEAVE_APPROVE)>0}awaitLeaveListeners(e,t,n){if(t===void 0)return;let r=Object.freeze({route:t,nextRoute:e,signal:n}),i,a,o=[...this.#i];this.#a++;try{for(let e of o)try{let t=e(r);t!==void 0&&typeof t.then==`function`&&(i??=[],i.push(t))}catch(e){a===void 0&&(a=e)}}finally{this.#a--}if(i===void 0){if(a!==void 0)throw X(a);return}return Ht(i,a,n)}clearAll(){this.#t.clearAll(),this.#i.length=0}setLimits(e){this.#t.setLimits(e)}sendCancelIfPossible(e,t){let n=this.#o;!this.canCancel()||n===void 0||this.sendCancel(n,e,t)}#d(){this.emitTransitionError(this.#s,this.#c,this.#l),this.#s=void 0,this.#c=void 0,this.#l=void 0}#f(){let e=this.#e;e.on(x.STARTING,S.STARTED,()=>{this.emitRouterStart()}),e.on(x.READY,S.STOP,()=>{this.emitRouterStop()});let t=e=>{this.emitTransitionStart(e.toState,e.fromState)};e.on(x.READY,S.NAVIGATE,t),e.on(x.TRANSITION_STARTED,S.NAVIGATE,t),e.on(x.LEAVE_APPROVED,S.NAVIGATE,t),e.on(x.TRANSITION_STARTED,S.LEAVE_APPROVE,e=>{this.emitTransitionLeaveApprove(e.toState,e.fromState)}),e.on(x.LEAVE_APPROVED,S.COMPLETE,e=>{this.emitTransitionSuccess(e.toState,e.fromState,e.opts)});let n=()=>{let e=this.#s,t=this.#u;this.#u=void 0,this.#r(t),e!==void 0&&this.emitTransitionCancel(e,this.#c)};e.on(x.TRANSITION_STARTED,S.CANCEL,n),e.on(x.LEAVE_APPROVED,S.CANCEL,n),e.on(x.LEAVE_APPROVED,S.FAIL,()=>{this.#d()}),e.on(x.STARTING,S.FAIL,()=>{this.#d()}),e.on(x.READY,S.FAIL,()=>{this.#d()}),e.on(x.TRANSITION_STARTED,S.FAIL,()=>{this.#d()})}};const Ut=new G(f.ROUTER_ALREADY_STARTED),Wt=new Set([`all`,`warn-error`,`error-only`,`none`]);function Gt(e){return typeof e==`string`&&Wt.has(e)}function Kt(e){return typeof e==`string`?`"${e}"`:typeof e==`object`?JSON.stringify(e):String(e)}function qt(e){if(typeof e!=`object`)throw TypeError(`Logger config must be an object`);let t=e;for(let e of Object.keys(t))if(e!==`level`&&e!==`callback`&&e!==`callbackIgnoresLevel`)throw TypeError(`Unknown logger config property: "${e}"`);if(`level`in t&&t.level!==void 0&&!Gt(t.level))throw TypeError(`Invalid logger level: ${Kt(t.level)}. Expected: "all" | "warn-error" | "error-only" | "none"`);if(`callback`in t&&t.callback!==void 0&&typeof t.callback!=`function`)throw TypeError(`Logger callback must be a function, got ${typeof t.callback}`);if(`callbackIgnoresLevel`in t&&t.callbackIgnoresLevel!==void 0&&typeof t.callbackIgnoresLevel!=`boolean`)throw TypeError(`Logger callbackIgnoresLevel must be a boolean, got ${typeof t.callbackIgnoresLevel}`)}function Jt(e){let t=Yt(e),r=()=>n(e.router).validator;Xt(e),Zt(e,t,r),Qt(e),$t(e,t,r),en(e),tn(e),nn(e)}function Yt(e){let{router:t,dependenciesStore:n}=e,r=e=>n.dependencies[e];return e=>e(t,r)}function Xt(e){e.dependenciesStore.limits=e.limits,e.eventBus.setLimits({maxListeners:e.limits.maxListeners,warnListeners:e.limits.warnListeners})}function Zt(e,t,n){let r={compileFactory:t,getValidator:n};e.routeLifecycle.setDependencies(r)}function Qt(e){e.routes.setDependencies({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),makeState:(t,n,r,i)=>e.state.makeState(t,n,r,i),getState:()=>e.state.get(),areStatesEqual:(t,n,r)=>e.state.areStatesEqual(t,n,r),getDependency:t=>e.dependenciesStore.dependencies[t],forwardState:(t,r)=>{let i=n(e.router);return i.validator?.routes.validateStateBuilderArgs(t,r,`forwardState`),i.forwardState(t,r)}}),e.routes.setLifecycleNamespace(e.routeLifecycle)}function $t(e,t,n){let r={addEventListener:(t,n)=>e.eventBus.addEventListener(t,n),canNavigate:()=>e.eventBus.canBeginTransition(),compileFactory:t,getValidator:n};e.plugins.setDependencies(r)}function en(e){e.navigation.setDependencies({getOptions:()=>e.options.get(),hasRoute:t=>e.routes.hasRoute(t),getState:()=>e.state.get(),setState:t=>{e.state.set(t)},buildNavigateState:(t,r)=>{let i=n(e.router);i.validator?.routes.validateStateBuilderArgs(t,r,`navigate`);let a=i.forwardState(t,r),o=a.name,s=w(a.params),c=e.routes.getMetaForState(o);if(c===void 0)return;let l=i.buildPath(o,s);return e.state.makeState(o,s,l,c,!0)},resolveDefault:()=>{let t=e.options.get(),r=n(e.router),i=ce(t.defaultRoute,t=>e.dependenciesStore.dependencies[t]),a=ce(t.defaultParams,t=>e.dependenciesStore.dependencies[t]);return typeof t.defaultRoute==`function`&&r.validator?.options.validateResolvedDefaultRoute(i,r.routeGetStore()),{route:i,params:a}},startTransition:(t,n)=>{e.eventBus.sendNavigate(t,n)},cancelNavigation:t=>{e.eventBus.sendCancelIfPossible(e.state.get(),t)},sendTransitionDone:(t,n,r)=>{e.eventBus.sendComplete(t,n,r)},sendTransitionFail:(t,n,r)=>{e.eventBus.sendFail(t,n,r)},emitTransitionError:(t,n,r)=>{e.eventBus.sendFailSafe(t,n,r)},emitTransitionSuccess:(t,n,r)=>{e.eventBus.emitTransitionSuccess(t,n,r)},sendLeaveApprove:(t,n)=>{e.eventBus.sendLeaveApprove(t,n)},canNavigate:()=>e.eventBus.canBeginTransition(),getLifecycleFunctions:()=>e.routeLifecycle.getFunctions(),isActive:()=>e.router.isActive(),isTransitioning:()=>e.eventBus.isTransitioning(),clearCanDeactivate:t=>{e.routeLifecycle.clearCanDeactivate(t,`external`)},hasLeaveListeners:()=>e.eventBus.hasLeaveListeners(),hasPreCommitListeners:()=>e.eventBus.hasPreCommitListeners(),awaitLeaveListeners:(t,n,r)=>e.eventBus.awaitLeaveListeners(t,n,r)})}function tn(e){e.lifecycle.setDependencies({getOptions:()=>e.options.get(),navigateToState:(t,n)=>e.navigation.navigateToState(t,n),navigateToNotFound:t=>e.navigation.navigateToNotFound(t),clearState:()=>{e.state.set(void 0)},matchPath:t=>e.routes.matchPath(t,e.options.get()),completeStart:()=>{e.eventBus.sendStarted()},isIdle:()=>e.eventBus.isIdle(),emitTransitionError:(t,n,r)=>{e.eventBus.sendFail(t,n,r)}})}function nn(e){e.state.setDependencies({getDefaultParams:()=>e.routes.getStore().config.defaultParams,buildPath:(t,r)=>n(e.router).buildPath(t,r),getUrlParams:t=>e.routes.getUrlParams(t)})}const Q=Object.freeze({}),rn=new Set([f.SAME_STATES,f.TRANSITION_CANCELLED,f.ROUTER_NOT_STARTED,f.ROUTE_NOT_FOUND,f.CANNOT_ACTIVATE,f.CANNOT_DEACTIVATE]);function an(e,t){c.error(`Router`,`Error in listener for ${e}:`,t)}var on=class e{#e;#t;#n;#r;#i;#a;#o;#s;#c;#l;constructor(n=[],r={},i={}){let{logger:o,...l}=r;o&&(qt(o),c.configure(o)),ue.validateOptionsIsObject(r),ne(i),n.length>0&&C(n),this.#e=new ue(l),this.#t=ie(l.limits),this.#n=ae(i),this.#r=new pe,this.#i=new mt(n,sn(this.#e.get())),this.#a=new Ce,this.#o=new _e,this.#s=new zt,this.#c=new Vt;let u=te(),f=new d({onListenerError:an,onListenerWarn:(e,t)=>{c.warn(`router.addEventListener`,`Event "${e}" has ${t} listeners — possible memory leak`)}});this.#l=new Z({routerFSM:u,emitter:f,onListenerError:an,abortController:e=>{this.#s.abortCurrentController(e)}});let p=new Map;s(this,{makeState:(e,t,n,r)=>this.#r.makeState(e,t,n,r),forwardState:a(`forwardState`,(e,t)=>this.#i.forwardState(e,t),p),buildStateResolved:(e,t)=>this.#i.buildStateResolved(e,t),matchPath:(e,t)=>this.#i.matchPath(e,t),getOptions:()=>this.#e.get(),addEventListener:(e,t)=>this.#l.addEventListener(e,t),treeChanged:{emit:e=>{this.#l.emitTreeChanged(e)},subscribe:e=>this.#l.subscribeTreeChanged(e),listenerCount:()=>this.#l.treeChangedListenerCount(),isEmitting:()=>this.#l.isEmittingTreeChanged()},buildPath:a(`buildPath`,(e,t)=>this.#i.buildPath(e,t??v,this.#e.get()),p),emitTransitionError:e=>{this.#l.sendFailSafe(void 0,this.#r.get(),e)},emitTransitionSuccess:(e,t,n)=>{this.#l.emitTransitionSuccess(e,t,n)},navigateToNotFound:e=>this.#s.navigateToNotFound(e),start:t(`start`,e=>this.#c.start(e),p),navigateToState:(t,n)=>{this.#m();let r=this.#s.navigateToState(t,n??Q);return this.#s.lastSyncResolved?this.#s.lastSyncResolved=!1:this.#s.lastSyncRejected?this.#s.lastSyncRejected=!1:e.#p(r),r},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()}),routeGetStore:()=>this.#i.getStore(),getStateName:()=>this.#r.get()?.name,isTransitioning:()=>this.#l.isTransitioning(),clearState:()=>{this.#r.set(void 0)},setState:e=>{this.#r.set(e)},routerExtensions:[],contextClaimRecords:new Set,hydrationState:null}),Jt({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,r,i){return n(this).validator?.routes.validateIsActiveRouteArgs(e,t,r,i),n(this).validator?.routes.validateRouteName(e,`isActiveRoute`),e===``?(c.warn(`real-router`,`isActiveRoute("") called with empty string. Root node is not considered a parent of any route.`),!1):this.#i.isActiveRoute(e,t,r,i)}buildPath(e,t){let r=n(this);return r.validator?.routes.validateBuildPathArgs(e),r.validator?.navigation.validateParams(t,`buildPath`),r.buildPath(e,w(t))}getState(){return this.#r.get()}getPreviousState(){return this.#r.getPrevious()}areStatesEqual(e,t,r=!0){return n(this).validator?.state.validateAreStatesEqualArgs(e,t,r),this.#r.areStatesEqual(e,t,r)}shouldUpdateNode(e){return n(this).validator?.routes.validateShouldUpdateNodeArgs(e),mt.shouldUpdateNode(e)}isActive(){return this.#l.isActive()}start(t){if(!this.#l.canStart())return Promise.reject(Ut);n(this).validator?.navigation.validateStartArgs(t),this.#l.sendStart();let r;try{r=n(this).start(t)}catch(e){r=Promise.reject(e)}let i=r.catch(e=>this.#h(e));return e.#p(i,e.#f),i}stop(){return this.#l.sendCancelIfPossible(this.#r.get()),!this.#l.isReady()&&!this.#l.isTransitioning()&&!this.#l.isStarting()?this:(this.#c.stop(),this.#l.sendStop(),this)}dispose(){if(this.#l.isDisposed())return;this.#l.sendCancelIfPossible(this.#r.get()),(this.#l.isReady()||this.#l.isTransitioning())&&(this.#c.stop(),this.#l.sendStop()),this.#l.sendDispose(),this.#l.clearAll(),this.#o.disposeAll();let e=n(this);for(let t of e.routerExtensions)for(let e of t.keys)delete this[e];e.routerExtensions.length=0,e.contextClaimRecords.clear(),e.interceptors.clear(),this.#i.clearRoutes(),this.#a.clearAll(),this.#r.reset(),this.#n.dependencies=Object.create(null),this.#g()}canNavigateTo(e,t){let r=n(this);if(r.validator?.routes.validateRouteName(e,`canNavigateTo`),r.validator?.navigation.validateParams(t,`canNavigateTo`),!this.#i.hasRoute(e))return!1;let{name:i,params:a}=r.forwardState(e,t??{}),o;try{let e=w(a),t=this.#i.getMetaForState(i),n=r.buildPath(i,e);o=this.#r.makeState(i,e,n,t,!0)}catch{return!1}let s=this.#r.get(),{toDeactivate:c,toActivate:l}=W(o,s);return this.#a.canNavigateTo(c,l,o,s)}usePlugin(...e){if(this.#l.isDisposed())throw new G(f.ROUTER_DISPOSED);let t=e.filter(Boolean);if(t.length===0)return()=>{};let r=n(this);r.validator?.plugins.validatePluginLimit(this.#o.count(),this.#t);for(let e of t)r.validator?.plugins.validateNoDuplicatePlugins(e,this.#o.getAll());return this.#o.use(...t)}subscribe(e){return Z.validateSubscribeListener(e),this.#l.subscribe(e)}subscribeLeave(e){return Z.validateSubscribeLeaveListener(e),this.#l.subscribeLeave(e)}isLeaveApproved(){return this.#l.isLeaveApproved()}navigate(t,r,i){this.#m();let a=n(this);a.validator?.navigation.validateNavigateArgs(t),a.validator?.navigation.validateParams(r,`navigate`);let o=i??Q;a.validator?.navigation.validateNavigationOptions(o,`navigate`);let s=this.#s.navigate(t,r??v,o);return this.#s.lastSyncResolved?this.#s.lastSyncResolved=!1:this.#s.lastSyncRejected?this.#s.lastSyncRejected=!1:e.#p(s),s}navigateToDefault(t){this.#m();let r=n(this);r.validator?.navigation.validateNavigateToDefaultArgs(t);let i=t??Q;r.validator?.navigation.validateNavigationOptions(i,`navigateToDefault`);let a=this.#s.navigateToDefault(i);return this.#s.lastSyncResolved?this.#s.lastSyncResolved=!1:this.#s.lastSyncRejected?this.#s.lastSyncRejected=!1:e.#p(a),a}navigateToNotFound(e){if(this.#m(),!this.#l.isActive())throw new G(f.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 G(f.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#u(e){return e instanceof G&&rn.has(e.code)}static#d=t=>{e.#u(t)||c.error(`router.navigate`,`Unexpected navigation error`,t)};static#f=t=>{e.#u(t)||c.error(`router.start`,`Unexpected start error`,t)};static#p(t,n=e.#d){t.catch(n)}#m(){if(this.#l.isProcessing())throw new G(f.REENTRANT_NAVIGATION)}#h(e){throw this.#l.isReady()&&this.#r.get()===void 0?(this.#c.stop(),this.#l.sendStop()):this.#l.isStarting()&&this.#l.sendFail(void 0,void 0,e),e}#g(){this.navigate=$,this.navigateToDefault=$,this.navigateToNotFound=$,this.start=$,this.stop=$,this.usePlugin=$,this.subscribe=$,this.subscribeLeave=$,this.canNavigateTo=$}};function $(){throw new G(f.ROUTER_DISPOSED)}function sn(e){return{strictTrailingSlash:e.trailingSlash===`strict`,caseSensitive:e.caseSensitive,strictQueryParams:e.queryParamsMode===`strict`,urlParamsEncoding:e.urlParamsEncoding,queryParams:e.queryParams}}export{f as C,m as S,k as _,We as a,C as b,I as c,L as d,Xe as f,je as g,Pe as h,Ye as i,He as l,Je as m,G as n,F as o,Ne as p,W as r,Ue as s,on as t,Ke as u,ke as v,g as w,p as x,j as y};
2
- //# sourceMappingURL=Router-Y89LqL20.mjs.map
1
+ import{a as e,c as t,l as n,o as r,r as i,s as a,t as o,u as s}from"./esm-CLeBo4Hk.mjs";import{logger as c}from"@real-router/logger";import{FSM as l}from"@real-router/fsm";const u={maxListeners:0,warnListeners:0};var d=class{#e=new Map;#t=new Set;#n=null;#r=u;#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;try{this.#o(s,o,t,n,r,i)}catch(t){this.#i?.(e,t)}}else{let s=[...a];for(let a of s)try{this.#o(a,o,t,n,r,i)}catch(t){this.#i?.(e,t)}}}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){switch(t){case 0:e();break;case 1:e(n);break;case 2:e(n,r);break;case 3:e(n,r,i);break;default:e(n,r,i,a)}}};const f=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`}),p=`@@router/UNKNOWN_ROUTE`,m={UNKNOWN_ROUTE:p},h={ROUTER_START:`onStart`,ROUTER_STOP:`onStop`,TRANSITION_START:`onTransitionStart`,TRANSITION_LEAVE_APPROVE:`onTransitionLeaveApprove`,TRANSITION_CANCEL:`onTransitionCancel`,TRANSITION_SUCCESS:`onTransitionSuccess`,TRANSITION_ERROR:`onTransitionError`},g={ROUTER_START:`$start`,ROUTER_STOP:`$stop`,TRANSITION_START:`$$start`,TRANSITION_LEAVE_APPROVE:`$$leaveApprove`,TRANSITION_CANCEL:`$$cancel`,TRANSITION_SUCCESS:`$$success`,TRANSITION_ERROR:`$$error`},_={maxDependencies:100,maxPlugins:50,maxListeners:1e4,warnListeners:1e3,maxLifecycleHandlers:200},v=Object.freeze({}),y=Object.freeze({deactivated:Object.freeze([]),activated:Object.freeze([]),intersection:``}),b=Object.freeze({phase:`activating`,reason:`success`,segments:y}),x={IDLE:`IDLE`,STARTING:`STARTING`,READY:`READY`,TRANSITION_STARTED:`TRANSITION_STARTED`,LEAVE_APPROVED:`LEAVE_APPROVED`,DISPOSED:`DISPOSED`},S={START:`START`,STARTED:`STARTED`,NAVIGATE:`NAVIGATE`,LEAVE_APPROVE:`LEAVE_APPROVE`,COMPLETE:`COMPLETE`,FAIL:`FAIL`,CANCEL:`CANCEL`,STOP:`STOP`,DISPOSE:`DISPOSE`},ee={initial:x.IDLE,context:null,transitions:{[x.IDLE]:{[S.START]:x.STARTING,[S.DISPOSE]:x.DISPOSED},[x.STARTING]:{[S.STARTED]:x.READY,[S.FAIL]:x.IDLE,[S.STOP]:x.IDLE,[S.DISPOSE]:x.DISPOSED},[x.READY]:{[S.NAVIGATE]:x.TRANSITION_STARTED,[S.FAIL]:x.READY,[S.STOP]:x.IDLE,[S.DISPOSE]:x.DISPOSED},[x.TRANSITION_STARTED]:{[S.NAVIGATE]:x.TRANSITION_STARTED,[S.LEAVE_APPROVE]:x.LEAVE_APPROVED,[S.CANCEL]:x.READY,[S.FAIL]:x.READY,[S.DISPOSE]:x.DISPOSED},[x.LEAVE_APPROVED]:{[S.NAVIGATE]:x.TRANSITION_STARTED,[S.COMPLETE]:x.READY,[S.CANCEL]:x.READY,[S.FAIL]:x.READY,[S.DISPOSE]:x.DISPOSED},[x.DISPOSED]:{}}};function te(){return new l(ee)}function ne(e){if(!e||typeof e!=`object`||e.constructor!==Object)throw TypeError(`dependencies must be a plain object`);for(let t in e)if(Object.getOwnPropertyDescriptor(e,t)?.get)throw TypeError(`dependencies cannot contain getters: "${t}"`)}function C(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&&C(r,t)}}function re(e){return Object.freeze(e)}function ie(e={}){return{..._,...e}}function w(e){if(e===void 0)return e;let t;for(let n in e){if(!Object.hasOwn(e,n))continue;let r=e[n];r!==void 0&&(t??={},t[n]=r)}return t??v}function ae(e={}){let t=Object.create(null);for(let n in e)e[n]!==void 0&&(t[n]=e[n]);return{dependencies:t,limits:_}}const oe={defaultRoute:``,defaultParams:{},trailingSlash:`preserve`,caseSensitive:!0,queryParamsMode:`loose`,queryParams:r,urlParamsEncoding:`default`,allowNotFound:!0,rewritePathOnMatch:!0};function se(e){Object.freeze(e);for(let t of Object.values(e))t&&typeof t==`object`&&t.constructor===Object&&se(t);return e}function ce(e,t){return typeof e==`function`?e(t):e}function le(e){if(!e||typeof e!=`object`||Array.isArray(e))throw TypeError(`[router.constructor] options must be a plain object`)}var ue=class{#e;constructor(e={}){this.#e=se({...oe,...e})}static validateOptionsIsObject(e){le(e)}get(){return this.#e}};function T(e,t){if(e===t)return!0;if(Array.isArray(e)&&Array.isArray(t)){if(e.length!==t.length)return!1;for(let n=0;n<e.length;n++)if(!T(e[n],t[n]))return!1;return!0}return!1}const de=new WeakMap;function E(e){return de.get(e)}function fe(e,t){de.set(e,t)}var pe=class{#e=void 0;#t=void 0;#n;get(){return this.#e}set(e){this.#t=this.#e,this.#e=e?re(e):void 0}getPrevious(){return this.#t}reset(){this.#e=void 0,this.#t=void 0}setDependencies(e){this.#n=e}makeState(e,t,n,r,i){let a=this.#n.getDefaultParams(),o=Object.hasOwn(a,e),s;s=o?Object.freeze({...a[e],...t}):!t||t===v?v:Object.freeze({...t});let c={name:e,params:s,path:n??this.#n.buildPath(e,t),context:{},...!i&&{transition:b}};return r&&fe(c,r),i?c:re(c)}areStatesEqual(e,t,n=!0){if(!e||!t)return!!e==!!t;if(e.name!==t.name)return!1;if(n){let n=this.#n.getUrlParams(e.name);for(let r of n)if(!T(e.params[r],t.params[r]))return!1;return!0}let r=Object.keys(e.params),i=Object.keys(t.params);if(r.length!==i.length)return!1;for(let n of r)if(!(n in t.params)||!T(e.params[n],t.params[n]))return!1;return!0}};const me={[h.ROUTER_START]:g.ROUTER_START,[h.ROUTER_STOP]:g.ROUTER_STOP,[h.TRANSITION_SUCCESS]:g.TRANSITION_SUCCESS,[h.TRANSITION_START]:g.TRANSITION_START,[h.TRANSITION_LEAVE_APPROVE]:g.TRANSITION_LEAVE_APPROVE,[h.TRANSITION_ERROR]:g.TRANSITION_ERROR,[h.TRANSITION_CANCEL]:g.TRANSITION_CANCEL},he=Object.keys(me),D=`router.usePlugin`;function ge(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 _e=class e{#e=new Set;#t=new Set;#n;static validatePlugin(e){ge(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){c.error(D,`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){c.error(D,`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){c.error(D,`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 he)e in n&&(typeof n[e]==`function`?(r.push(this.#n.addEventListener(me[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 ve=()=>!0,ye=()=>!1,be=()=>ve,xe=()=>ye;function Se(e){return e?be:xe}var Ce=class{#e=new Map;#t=new Map;#n=new Map;#r=new Map;#i=new Map;#a=new Map;#o=[this.#i,this.#a];#s;setDependencies(e){this.#s=e}getHandlerCount(e){let t=e===`activate`?this.#e:this.#n,n=e===`activate`?this.#t:this.#r;if(t.size===0)return n.size;if(n.size===0)return t.size;let r=new Set(t.keys());for(let e of n.keys())r.add(e);return r.size}preflightHandlerLimit(e,t,n){let r=this.#s.getValidator();if(!r)return;let i=(e,t,i)=>{let{definition:a,external:o}=this.#d(e),s=0;for(let e of t)(n?o.has(e):a.has(e)||o.has(e))||s++;if(s===0)return;let c=n?o.size:this.getHandlerCount(e);r.lifecycle.validateHandlerLimit(c+s-1,i)};i(`activate`,e,`canActivate`),i(`deactivate`,t,`canDeactivate`)}addCanActivate(e,t,n=!1,r){this.#c(`activate`,e,t,n,`canActivate`,r)}addCanDeactivate(e,t,n=!1,r){this.#c(`deactivate`,e,t,n,`canDeactivate`,r)}clearCanActivate(e,t){this.#l(`activate`,e,t)}clearCanDeactivate(e,t){this.#l(`deactivate`,e,t)}clearAll(){this.#e.clear(),this.#t.clear(),this.#n.clear(),this.#r.clear(),this.#a.clear(),this.#i.clear()}clearDefinitionGuards(){for(let e of this.#e.keys())this.#t.has(e)?this.#u(`activate`,e):this.#a.delete(e);for(let e of this.#n.keys())this.#r.has(e)?this.#u(`deactivate`,e):this.#i.delete(e);this.#e.clear(),this.#n.clear()}getFactories(){let e={},t={};for(let[t,n]of this.#n)e[t]=n;for(let[t,n]of this.#r)e[t]=n;for(let[e,n]of this.#e)t[e]=n;for(let[e,n]of this.#t)t[e]=n;return[e,t]}getFactoriesByOrigin(){let e={},t={},n={},r={};for(let[t,n]of this.#n)e[t]=n;for(let[e,n]of this.#e)t[e]=n;for(let[e,t]of this.#r)n[e]=t;for(let[e,t]of this.#t)r[e]=t;return{definition:[e,t],external:[n,r]}}getFunctions(){return this.#o}canNavigateTo(e,t,n,r){for(let t of e)if(!this.#f(this.#i,t,n,r,`canNavigateTo`))return!1;for(let e of t)if(!this.#f(this.#a,e,n,r,`canNavigateTo`))return!1;return!0}compileGuardFactory(e,t){let n=typeof e==`boolean`?Se(e):e,r=this.#s.compileFactory(n);if(typeof r!=`function`)throw TypeError(`[router.${t}] Factory must return a function, got ${typeof r}`);return r}#c(e,t,n,r,i,a){let o=this.#d(e),s=e===`activate`?this.#a:this.#i,c=r?o.definition:o.external,l=r?o.external:o.definition;if(c.has(t)||l.has(t))this.#s.getValidator()?.lifecycle.warnOverwrite(t,e,i);else{let t=this.#s.getValidator();if(t){let n=this.getHandlerCount(e);t.lifecycle.validateHandlerLimit(n,i),t.lifecycle.validateCountThresholds(n+1,i)}}let u=typeof n==`boolean`?Se(n):n,d=c.get(t);c.set(t,u);let f=r&&l.has(t);try{let e=a??this.compileGuardFactory(u,i);f||s.set(t,e)}catch(n){throw d===void 0?c.delete(t):c.set(t,d),this.#u(e,t),n}}#l(e,t,n){let{definition:r,external:i}=this.#d(e),a=n===`external`?!1:r.delete(t),o=n===`definition`?!1:i.delete(t);(a||o)&&this.#u(e,t)}#u(e,t){let n=this.#d(e),r=e===`activate`?this.#a:this.#i,i=n.external.get(t)??n.definition.get(t);if(!i){r.delete(t);return}try{let e=this.#s.compileFactory(i);if(typeof e!=`function`){r.delete(t);return}r.set(t,e)}catch{r.delete(t)}}#d(e){return e===`activate`?{definition:this.#e,external:this.#t}:{definition:this.#n,external:this.#r}}#f(e,t,n,r,i){let a=e.get(t);if(!a)return!0;try{let e=a(n,r);return typeof e==`boolean`?e:(this.#s.getValidator()?.lifecycle.warnAsyncGuardSync(t,i),!1)}catch(e){return c.warn(`router.${i}`,`Guard for "${t}" threw — treated as navigation-blocking (returned false)`,e),!1}}};const we=new Set([`name`,`path`,`children`,`canActivate`,`canDeactivate`,`forwardTo`,`encodeParams`,`decodeParams`,`defaultParams`]);function O(){return{decoders:Object.create(null),encoders:Object.create(null),defaultParams:Object.create(null),forwardMap:Object.create(null),forwardFnMap:Object.create(null)}}function k(e,t){for(let n of Object.keys(t))Object.assign(e[n],t[n])}function Te(e,t){for(let n in e)if(e[n]!==t[n])return!1;return!0}function Ee(e,t,n){for(let r in e)if(!(r in n)&&e[r]!==t[r])return!1;return!0}function De(e,t){if(!t||!Oe(e,t))return e;let n={};for(let r in e)t[r]!==`query`&&(n[r]=e[r]);return n}function Oe(e,t){for(let n in e)if(t[n]===`query`)return!0;return!1}function A(e){let t={name:e.name,path:e.path};return e.children&&(t.children=e.children.map(e=>A(e))),t}function j(e,t,n=``){for(let r=0;r<e.length;r++){let i=e[r],a=n?`${n}.${i.name}`:i.name;if(a===t)return e.splice(r,1),!0;if(i.children&&t.startsWith(`${a}.`)&&j(i.children,t,a))return!0}return!1}function ke(e,t){for(let n of Object.keys(e))t(n)&&delete e[n]}function Ae(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 je(e,t,n=100){let r=new Set,i=[e],a=e;for(;t[a];){let e=t[a];if(r.has(e)){let t=i.indexOf(e),n=[...i.slice(t),e];throw Error(`Circular forwardTo: ${n.join(` → `)}`)}if(r.add(a),i.push(e),a=e,i.length>n)throw Error(`forwardTo chain exceeds maximum depth (${n}): ${i.join(` → `)}`)}return a}function Me(t,n,r){let i=e(``,n,t),a=o(r);return a.registerTree(i),{tree:i,matcher:a}}function M(e,t=e.definitions){let n=Me(t,e.rootPath,e.matcherOptions);e.tree=n.tree,e.matcher=n.matcher,e.urlParamsCache.clear()}function Ne(e,t){M(e,t),e.resolvedForwardMap=N(e.config)}function Pe(e){Fe(e),M(e,[])}function Fe(e){Object.assign(e.config,O()),e.resolvedForwardMap=Object.create(null),e.routeCustomFields=Object.create(null)}function N(e){let t=Object.create(null);for(let n of Object.keys(e.forwardMap))t[n]=je(n,e.forwardMap);return t}function Ie(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 Le(e,t,n){if(e.canActivate){let n=typeof e.forwardTo==`string`?e.forwardTo:`[dynamic]`;c.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]`;c.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}".`)}Ie(e.forwardTo,t),typeof e.forwardTo==`string`?n.forwardMap[t]=e.forwardTo:n.forwardFnMap[t]=e.forwardTo}function Re(e,t,n,r,i,a){let o=Object.fromEntries(Object.entries(e).filter(([e])=>!we.has(e)));Object.keys(o).length>0&&(r[t]=o),e.canActivate&&i.set(t,e.canActivate),e.canDeactivate&&a.set(t,e.canDeactivate),e.forwardTo&&Le(e,t,n),e.decodeParams&&(n.decoders[t]=t=>e.decodeParams?.(t)??t),e.encodeParams&&(n.encoders[t]=t=>e.encodeParams?.(t)??t),e.defaultParams&&(n.defaultParams[t]=e.defaultParams)}function ze(e,t,n,r,i,a=``){for(let o of e){let e=a?`${a}.${o.name}`:o.name;Re(o,e,t,n,r,i),o.children&&ze(o.children,t,n,r,i,e)}}function Be(e){let t=O();return k(t,e),t}function Ve(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]:Ve(n,t,i)}})}function P(e,t,n){for(let r of e){let e=t?`${t}.${r.name}`:r.name;n(e),r.children&&P(r.children,e,n)}}function F(e,t,n){let r=new Set;P(e,t,e=>{if(r.has(e))throw Error(`[router.${n}] Duplicate route "${e}" in batch`);r.add(e)})}function He(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 I(e,t){for(let n of e)He(n.name,t),n.children&&I(n.children,t)}function Ue(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 We(e,t,n){if(I(t,`addRoute`),n!==void 0&&!e.matcher.hasRoute(n))throw Error(`[router.addRoute] Parent route "${n}" does not exist`);P(t,n??``,t=>{if(e.matcher.hasRoute(t))throw Error(`[router.addRoute] Route "${t}" already exists`)}),F(t,n??``,`addRoute`),Ue(t,n??``,`addRoute`)}function Ge(e,t,n,r,i,a,o){let s=new Map,c=new Map;ze(t,n,r,s,c,i);let l=N(n),{tree:u,matcher:d}=Me(e,a,o);return{config:n,routeCustomFields:r,pendingCanActivate:s,pendingCanDeactivate:c,tree:u,matcher:d,resolvedForwardMap:l}}function Ke(e,t,n){return Ge(Ve(e.definitions,t.map(e=>A(e)),n===void 0?[]:n.split(`.`)),t,Be(e.config),Object.assign(Object.create(null),e.routeCustomFields),n??``,e.rootPath,e.matcherOptions)}function L(e,t,n){return Ge(e.map(e=>A(e)),e,O(),Object.create(null),``,t,n)}function qe(e,t,n){let r=[];for(let[i,a]of e)r.push([i,a,t(a,n)]);return r}function Je(e,t){return{activate:qe(e.pendingCanActivate,t.compileGuard,`canActivate`),deactivate:qe(e.pendingCanDeactivate,t.compileGuard,`canDeactivate`)}}function Ye(e,t,n){let r=e.depsStore,{activate:i,deactivate:a}=n??Je(t,r);Object.assign(e.config,t.config),e.routeCustomFields=t.routeCustomFields,e.tree=t.tree,e.matcher=t.matcher,e.urlParamsCache.clear(),e.resolvedForwardMap=t.resolvedForwardMap;for(let[e,t,n]of i)r.addActivateGuard(e,t,n);for(let[e,t,n]of a)r.addDeactivateGuard(e,t,n)}function Xe(e,t,n,r){let{forwardTo:i,defaultParams:a,decodeParams:o,encodeParams:s,canActivate:c,canDeactivate:l}=r,u=i===void 0?void 0:Ze(n,i,e.config),d=Qe(e,n,r),f=c==null?void 0:t.compileGuardFactory(c,`canActivate`),p=l==null?void 0:t.compileGuardFactory(l,`canDeactivate`);return t.preflightHandlerLimit(f===void 0?[]:[n],p===void 0?[]:[n],!1),d!==void 0&&(Object.keys(d).length>0?e.routeCustomFields[n]=d:delete e.routeCustomFields[n]),u!==void 0&&(e.config.forwardMap=u.forwardMap,e.config.forwardFnMap=u.forwardFnMap,e.resolvedForwardMap=u.resolved),$e(e,n,{defaultParams:a,decodeParams:o,encodeParams:s}),et(t,`activate`,n,c,f),et(t,`deactivate`,n,l,p),{forwardTo:i,defaultParams:a,decodeParams:o,encodeParams:s}}function Ze(e,t,n){Ie(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:N({...n,forwardMap:r})}}function Qe(e,t,n){let r;for(let i of Object.keys(n)){if(we.has(i))continue;let a=n[i];a!==void 0&&(r??={...e.routeCustomFields[t]},a===null?delete r[i]:r[i]=a)}return r}function $e(e,t,n){if(n.defaultParams!==void 0&&(n.defaultParams===null?delete e.config.defaultParams[t]:e.config.defaultParams[t]=n.defaultParams),n.decodeParams!==void 0)if(n.decodeParams===null)delete e.config.decoders[t];else{let r=n.decodeParams;e.config.decoders[t]=e=>r(e)??e}if(n.encodeParams!==void 0)if(n.encodeParams===null)delete e.config.encoders[t];else{let r=n.encodeParams;e.config.encoders[t]=e=>r(e)??e}}function et(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 tt(e,t){I(e,`addRoute`),F(e,``,`addRoute`);let n=L(e,``,t),r={get definitions(){return i(r.tree)},config:n.config,tree:n.tree,matcher:n.matcher,urlParamsCache:new Map,resolvedForwardMap:n.resolvedForwardMap,routeCustomFields:n.routeCustomFields,rootPath:``,matcherOptions:t,depsStore:void 0,lifecycleNamespace:void 0,pendingCanActivate:n.pendingCanActivate,pendingCanDeactivate:n.pendingCanDeactivate};return r}const R=[];Object.freeze(R);function nt(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 rt=new Set([`string`,`number`,`boolean`]);function it(e){return rt.has(typeof e)}function at(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(it(t)&&it(i)&&String(t)!==String(i))return!1}return!0}function ot(e,t,n,r,i,a){for(let o=0;o<a;o++){let a=r[o];if(a!==i[o]||!at(a,e,t,n))return o}return a}const st=new Map;function z(e){let t=st.get(e);if(t)return t;let n=ct(e);return Object.freeze(n),st.set(e,n),n}function ct(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]:nt(e)}let B,V,H=null,lt,ut,U=null;function dt(e,t){if(!t)return{intersection:``,toActivate:z(e.name),toDeactivate:R};let n=E(e),r=E(t);if(!n&&!r)return{intersection:``,toActivate:z(e.name),toDeactivate:z(t.name)};let i=z(e.name),a=z(t.name),o=Math.min(a.length,i.length),s=ot(n??r,e,t,i,a,o),c;if(s>=a.length)c=R;else if(s===0&&a.length===1)c=a;else{c=[];for(let e=a.length-1;e>=s;e--)c.push(a[e])}let l=s===0?i:i.slice(s);return{intersection:s>0?a[s-1]:``,toDeactivate:c,toActivate:l}}function W(e,t){if(H!==null&&e===B&&t===V)return H;if(U!==null&&e===lt&&t===ut)return U;let n=dt(e,t);return lt=B,ut=V,U=H,B=e,V=t,H=n,n}function ft(e){let t=[];for(let n of e)for(let e of n.paramMeta.urlParams)t.push(e);return t}function pt(e,t){return{name:t??e.segments.at(-1).fullName,params:e.params,meta:e.meta}}var mt=class{#e;#t;#n;get#r(){return this.#e.depsStore}constructor(e=[],t){this.#e=tt(e,t)}static shouldUpdateNode(e){return(t,n)=>{if(!(t&&typeof t==`object`&&`name`in t))throw TypeError(`[router.shouldUpdateNode] toState must be valid State object`);if(t.transition.reload||e===``)return!0;let{intersection:r,toActivate:i,toDeactivate:a}=W(t,n);return e===r||i.includes(e)?!0:a.includes(e)}}setDependencies(e){this.#e.depsStore=e}flushPendingGuards(){let e=this.#r;for(let[t,n]of this.#e.pendingCanActivate)e.addActivateGuard(t,n);this.#e.pendingCanActivate.clear();for(let[t,n]of this.#e.pendingCanDeactivate)e.addDeactivateGuard(t,n);this.#e.pendingCanDeactivate.clear()}setLifecycleNamespace(e){this.#e.lifecycleNamespace=e}setRootPath(e){this.#e.rootPath=e,M(this.#e)}hasRoute(e){return this.#e.matcher.hasRoute(e)}clearRoutes(){Pe(this.#e)}buildPath(e,t,n){if(e===m.UNKNOWN_ROUTE)return typeof t?.path==`string`?t.path:``;let r=Object.hasOwn(this.#e.config.defaultParams,e)?{...this.#e.config.defaultParams[e],...t}:t??{},i=typeof this.#e.config.encoders[e]==`function`?this.#e.config.encoders[e]({...r}):r;return this.#e.matcher.buildPath(e,i,this.#a(n))}matchPath(e,t){let n=t,r=this.#e.matcher.match(e);if(!r)return;let{name:i,params:a,meta:o}=pt(r),s=typeof this.#e.config.decoders[i]==`function`?this.#e.config.decoders[i](a):a,{name:c,params:l}=this.#r.forwardState(i,s),u=e;if(n.rewritePathOnMatch){let t=typeof this.#e.config.encoders[c]==`function`?this.#e.config.encoders[c]({...l}):l,r=n.trailingSlash;try{u=this.#e.matcher.buildPath(c,t,{trailingSlash:r===`never`||r===`always`?r:void 0,queryParamsMode:n.queryParamsMode}),r===`preserve`&&(u=Ae(e,u))}catch{u=e}}return this.#r.makeState(c,l,u,o)}forwardState(e,t){if(Object.hasOwn(this.#e.config.forwardFnMap,e)){let n=this.#i(e,t),r=this.#e.config.forwardFnMap[e],i=this.#o(e,r,t);return{name:i,params:this.#i(i,n)}}let n=this.#e.resolvedForwardMap[e]??e;if(n!==e&&Object.hasOwn(this.#e.config.forwardFnMap,n)){let r=this.#i(e,t),i=this.#e.config.forwardFnMap[n],a=this.#o(n,i,t);return{name:a,params:this.#i(a,r)}}if(n!==e){let r=this.#i(e,t);return{name:n,params:this.#i(n,r)}}return{name:e,params:this.#i(e,t)}}buildStateResolved(e,t){let n=this.#e.matcher.getSegmentsByName(e);if(n)return pt({segments:n,params:t,meta:this.#e.matcher.getMetaByName(e)},e)}isActiveRoute(e,t={},n=!1,r=!0){let i=this.#r.getState();if(!i)return!1;let a=i.name;if(a!==e&&!a.startsWith(`${e}.`)&&!e.startsWith(`${a}.`))return!1;let o=this.#e.config.defaultParams[e];if(n||a===e){let n={name:e,params:o?{...o,...t}:t,path:``,transition:b,context:{}};return this.#r.areStatesEqual(n,i,r)}if(!a.startsWith(`${e}.`))return!1;let s=i.params;return Te(t,s)?o?Ee(r?De(o,this.#e.matcher.getMetaByName(e)?.[e]):o,s,t):!0:!1}getMetaForState(e){return this.#e.matcher.hasRoute(e)?this.#e.matcher.getMetaByName(e):void 0}getUrlParams(e){let t=this.#e.urlParamsCache.get(e);if(t!==void 0)return t;let n=this.#e.matcher.getSegmentsByName(e),r=n?ft(n):[];return this.#e.urlParamsCache.set(e,r),r}getStore(){return this.#e}#i(e,t){return Object.hasOwn(this.#e.config.defaultParams,e)?{...this.#e.config.defaultParams[e],...t}:t}#a(e){if(this.#t)return e!==this.#n&&c.warn(`router.buildPath`,"`options` differs from the cached source reference; router options are immutable per router instance, so the first-cached buildPath options are reused (#957)."),this.#t;this.#n=e;let t=e?.trailingSlash;return this.#t=Object.freeze({trailingSlash:t===`never`||t===`always`?t:void 0,queryParamsMode:e?.queryParamsMode}),this.#t}#o(e,t,n){let r=new Set([e]),i=t(this.#r.getDependency,n),a=0;if(typeof i!=`string`)throw TypeError(`forwardTo callback must return a string, got ${typeof i}`);for(;a<100;){if(this.#e.matcher.getSegmentsByName(i)===void 0)throw Error(`Route "${i}" does not exist`);if(r.has(i)){let e=[...r,i].join(` → `);throw Error(`Circular forwardTo: ${e}`)}if(r.add(i),Object.hasOwn(this.#e.config.forwardFnMap,i)){let e=this.#e.config.forwardFnMap[i];i=e(this.#r.getDependency,n),a++;continue}let e=this.#e.config.forwardMap[i];if(e!==void 0){i=e,a++;continue}return i}throw Error(`forwardTo exceeds maximum depth of 100`)}};const ht=new Set(Object.values(f)),gt=new Set([`code`,`segment`,`path`]),_t=new Set([`setCode`,`setErrorInstance`,`setAdditionalFields`,`hasField`,`getField`,`toJSON`]);var G=class extends Error{segment;path;code;constructor(e,{message:t,segment:n,path:r,...i}={}){super(t??e),this.name=`RouterError`,this.code=e,this.segment=n,this.path=r;for(let[e,t]of Object.entries(i)){if(gt.has(e))throw TypeError(`[RouterError] Cannot set reserved property "${e}"`);_t.has(e)||(this[e]=t)}}setCode(e){this.code=e,ht.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(gt.has(t))throw TypeError(`[RouterError.setAdditionalFields] Cannot set reserved property "${t}"`);_t.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 vt=new G(f.ROUTER_NOT_STARTED),yt=new G(f.ROUTE_NOT_FOUND),bt=new G(f.SAME_STATES),K=Promise.reject(vt),xt=Promise.reject(yt),St=Promise.reject(bt);K.catch(()=>{}),xt.catch(()=>{}),St.catch(()=>{});function Ct(e,t,n,r,i){Object.freeze(n),Object.freeze(r);let a={phase:`activating`,reason:`success`,segments:Object.freeze({deactivated:n,activated:r,intersection:i})};return e?.name!==void 0&&(a.from=e.name),t.reload!==void 0&&(a.reload=t.reload),t.replace!==void 0&&(a.replace=t.replace),t.redirected!==void 0&&(a.redirected=t.redirected),Object.freeze(a)}function wt({signal:e,...t}){return t}function Tt(e,t){let{toState:n,fromState:r,opts:i,toDeactivate:a,toActivate:o,intersection:s}=t;if(n.name!==m.UNKNOWN_ROUTE&&!e.hasRoute(n.name)){let t=new G(f.ROUTE_NOT_FOUND,{routeName:n.name});throw e.sendTransitionFail(n,r,t),t}if(r)for(let n of a)!o.includes(n)&&t.canDeactivateFunctions.has(n)&&e.clearCanDeactivate(n);n.transition=Ct(r,i,a,o,s);let c=Object.freeze(n);e.setState(c);let l=i.signal===void 0?i:wt(i);return e.sendTransitionDone(c,r,l),c}function Et(e,t,n,r){let i=t;i.code===f.TRANSITION_CANCELLED||i.code===f.ROUTE_NOT_FOUND||e.sendTransitionFail(n,r,i)}function q(e,t,n){if(e instanceof DOMException&&e.name===`AbortError`)throw new G(f.TRANSITION_CANCELLED);if(e instanceof G&&e.code===f.TRANSITION_CANCELLED)throw e;Dt(e,t,n)}function Dt(e,t,n){throw e instanceof G?(e.setCode(t),e):new G(t,kt(e,n))}const Ot=new Set([`code`,`segment`,`path`,`then`]);function kt(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))Ot.has(n)||(t[n]=r);return{...n,...t}}return n}async function At(e,t,n){let r;try{r=await e}catch(e){q(e,t,n);return}if(!r)throw new G(t,{segment:n})}async function jt(e,t,n,r,i,a,o,s,c,l){await At(c,n,l);for(let c=s;c<t.length;c++){if(!o())throw new G(f.TRANSITION_CANCELLED);let s=t[c],l=e.get(s);if(!l)continue;let u=!1;try{u=l(r,i,a)}catch(e){q(e,n,s)}if(u instanceof Promise){await At(u,n,s);continue}if(!u)throw new G(n,{segment:s})}}async function Mt(e,t,n,r,i,a,o,s,c){if(await e,!s())throw new G(f.TRANSITION_CANCELLED);let l=c();if(l!==void 0&&(await l,!s()))throw new G(f.TRANSITION_CANCELLED);if(r){let e=J(t,n,f.CANNOT_ACTIVATE,i,a,o,s);if(e!==void 0&&await e,!s())throw new G(f.TRANSITION_CANCELLED)}}function Nt(e,t,n,r,i,a,o,s,c,l,u){if(i){let i=J(e,n,f.CANNOT_DEACTIVATE,o,s,c,l);if(i!==void 0)return Mt(i,t,r,a,o,s,c,l,u)}if(!l())throw new G(f.TRANSITION_CANCELLED);let d=u();if(d!==void 0)return Pt(d,a?t:void 0,r,o,s,c,l);if(a)return J(t,r,f.CANNOT_ACTIVATE,o,s,c,l)}async function Pt(e,t,n,r,i,a,o){if(await e,!o())throw new G(f.TRANSITION_CANCELLED);if(t!==void 0){let e=J(t,n,f.CANNOT_ACTIVATE,r,i,a,o);if(e!==void 0&&await e,!o())throw new G(f.TRANSITION_CANCELLED)}}function J(e,t,n,r,i,a,o){for(let[s,c]of t.entries()){if(!o())throw new G(f.TRANSITION_CANCELLED);let l=e.get(c);if(!l)continue;let u=!1;try{u=l(r,i,a)}catch(e){q(e,n,c)}if(u instanceof Promise)return jt(e,t,n,r,i,a,o,s+1,u,c);if(!u)throw new G(n,{segment:c})}}const Ft=Object.freeze([m.UNKNOWN_ROUTE]),It=Object.freeze({replace:!0});function Lt(e,t){return t?.name===m.UNKNOWN_ROUTE&&!e.replace?{...e,replace:!0}:e}function Rt(e,t,n){return!!e&&!t.reload&&!t.force&&e.path===n.path}var zt=class{lastSyncResolved=!1;lastSyncRejected=!1;#e;#t=null;#n=0;setDependencies(e){this.#e=e}navigate(e,t,n){this.lastSyncResolved=!1;let r=this.#e;if(!r.canNavigate())return this.lastSyncRejected=!0,K;let i;try{i=r.buildNavigateState(e,t)}catch(e){return Promise.reject(e)}return i?this.#r(i,n):(r.emitTransitionError(void 0,r.getState(),yt),this.lastSyncRejected=!0,xt)}navigateToState(e,t){this.lastSyncResolved=!1;let n=this.#e;if(!n.canNavigate())return this.lastSyncRejected=!0,K;if(e.name!==m.UNKNOWN_ROUTE&&!n.hasRoute(e.name)){let t=new G(f.ROUTE_NOT_FOUND,{routeName:e.name});return n.emitTransitionError(void 0,n.getState(),t),Promise.reject(t)}let r={name:e.name,params:e.params,path:e.path,context:{...e.context}},i=E(e);return i!==void 0&&fe(r,i),this.#r(r,t)}navigateToDefault(e){this.lastSyncResolved=!1;let t=this.#e;if(!t.getOptions().defaultRoute)return Promise.reject(new G(f.ROUTE_NOT_FOUND,{routeName:`defaultRoute not configured`}));let n,r;try{({route:n,params:r}=t.resolveDefault())}catch(e){return Promise.reject(e)}return n?this.navigate(n,r,e):Promise.reject(new G(f.ROUTE_NOT_FOUND,{routeName:`defaultRoute resolved to empty`}))}navigateToNotFound(e){if(!this.#e.isActive())throw new G(f.ROUTER_DISPOSED);this.#c();let t=this.#e.getState(),n=t?z(t.name).toReversed():[];Object.freeze(n);let r={deactivated:n,activated:Ft,intersection:``};Object.freeze(r);let i={phase:`activating`,...t&&{from:t.name},reason:`success`,replace:!0,segments:r};Object.freeze(i);let a={name:m.UNKNOWN_ROUTE,params:v,path:e,transition:i,context:{}};return Object.freeze(a),this.#e.setState(a),this.#e.emitTransitionSuccess(a,t,It),a}abortCurrentController(e){this.#t?.abort(e??new G(f.TRANSITION_CANCELLED)),this.#t=null}#r(e,t){let n=this.#e,r,i=!1,a=null;try{if(r=n.getState(),t=Lt(t,r),Rt(r,t,e))return n.emitTransitionError(e,r,bt),this.lastSyncRejected=!0,St;this.#c(t.signal);let o=++this.#n,s=t.signal!==void 0||n.hasLeaveListeners()||n.hasPreCommitListeners();n.startTransition(e,r),i=!0;let[c,l]=n.getLifecycleFunctions(),u=e.name===m.UNKNOWN_ROUTE,d=W(e,r),{toDeactivate:p,toActivate:h,intersection:g}=d,_=r&&!t.forceDeactivate&&p.length>0,v=!u&&h.length>0,y=c.size>0||l.size>0,b=e;if(!y){let e=this.#o(b,r,o,t,d,c);if(e!==void 0)return e}if(y){a=new AbortController,this.#t=a;let i=()=>this.#n===o&&n.isActive(),s=a.signal,u=Nt(c,l,p,h,!!_,v,e,r,s,i,()=>{if(n.sendLeaveApprove(b,r),n.hasLeaveListeners())return n.awaitLeaveListeners(b,r,s)});if(u!==void 0)return this.#i(u,{toState:e,fromState:r,opts:t,toDeactivate:p,toActivate:h,intersection:g,canDeactivateFunctions:c},a,o);if(!i())throw new G(f.TRANSITION_CANCELLED);this.#s(a,!1)}if(s&&(!n.isActive()||t.signal?.aborted===!0))throw new G(f.TRANSITION_CANCELLED);let x=Tt(n,{toState:e,fromState:r,opts:t,toDeactivate:p,toActivate:h,intersection:g,canDeactivateFunctions:c});return this.lastSyncResolved=!0,Promise.resolve(x)}catch(t){return this.#a(t,a,i,e,r),Promise.reject(t)}}async#i(e,t,n,r){let i=this.#e,a=()=>this.#n===r&&!n.signal.aborted&&i.isActive(),o=t.opts.signal,s,c,l=!1,u,d=new Promise(e=>{if(n.signal.aborted){e();return}c=()=>{e()},n.signal.addEventListener(`abort`,c,{once:!0})});e.catch(()=>{});try{if(o){if(o.aborted)throw new G(f.TRANSITION_CANCELLED,{reason:o.reason});s=()=>{i.cancelNavigation(o.reason)},o.addEventListener(`abort`,s,{once:!0})}if(await Promise.race([e,d]),!a())throw new G(f.TRANSITION_CANCELLED);let n=Tt(i,t);return l=!0,n}catch(e){throw u=e,Et(i,e,t.toState,t.fromState),e}finally{s&&o?.removeEventListener(`abort`,s),c&&n.signal.removeEventListener(`abort`,c),this.#s(n,!l,u)}}#a(e,t,n,r,i){t&&this.#s(t,!0,e),n&&r&&Et(this.#e,e,r,i)}#o(e,t,n,r,i,a){let o=this.#e;if(o.sendLeaveApprove(e,t),o.hasLeaveListeners()){let s=new AbortController;this.#t=s;let c;try{c=o.awaitLeaveListeners(e,t,s.signal)}catch(e){throw this.#s(s,!0,e),e}if(c!==void 0)return this.#i(c,{toState:e,fromState:t,opts:r,toDeactivate:i.toDeactivate,toActivate:i.toActivate,intersection:i.intersection,canDeactivateFunctions:a},s,n);this.#s(s,!1);return}}#s(e,t,n){t&&e.abort(n),this.#t===e&&(this.#t=null)}#c(e){if(this.#e.isTransitioning()&&(c.warn(`router.navigate`,`Concurrent navigation detected on shared router instance. For SSR, use cloneRouter() to create isolated instance per request.`),this.#e.cancelNavigation()),e?.aborted)throw new G(f.TRANSITION_CANCELLED,{reason:e.reason})}};const Bt=Object.freeze({replace:!0});var Vt=class{#e;setDependencies(e){this.#e=e}async start(e){let t=this.#e;if(t.isIdle())throw new G(f.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){let n=new G(f.ROUTE_NOT_FOUND,{path:e});throw t.emitTransitionError(void 0,void 0,n),n}return t.completeStart(),r?t.navigateToState(r,Bt):t.navigateToNotFound(e)}stop(){this.#e.clearState()}};const Y=`TREE_CHANGED`;function X(e){return e instanceof Error?e:Error(String(e))}function Ht(e,t,n){return new Promise((r,i)=>{let a=()=>{let e=n.reason;i(e instanceof G&&e.code===f.TRANSITION_CANCELLED?e:new G(f.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(X(t));return}let o=e.find(e=>e.status===`rejected`);if(o!==void 0){i(X(o.reason));return}r()})})}var Z=class{#e;#t;#n;#r;#i;#a=[];#o=0;#s;#c;#l;#u;#d;constructor(e){this.#e=e.routerFSM,this.#t=e.emitter,this.#n=e.onListenerError,this.#r=e.abortController,this.#s=void 0,this.#m()}static validateSubscribeListener(e){if(typeof e!=`function`)throw TypeError(`[router.subscribe] Expected a function. For Observable pattern use observable(router) from @real-router/rx`)}static validateSubscribeLeaveListener(e){if(typeof e!=`function`)throw TypeError(`[router.subscribeLeave] Expected a function`)}emitRouterStart(){this.#t.emit(g.ROUTER_START)}emitRouterStop(){this.#t.emit(g.ROUTER_STOP)}emitTransitionStart(e,t){this.#o++;try{this.#t.emit(g.TRANSITION_START,e,t)}finally{this.#o--}}emitTransitionSuccess(e,t,n){this.#o++;try{this.#t.emit(g.TRANSITION_SUCCESS,e,t,n)}finally{this.#o--}}emitTransitionError(e,t,n){this.#o++;try{this.#t.emit(g.TRANSITION_ERROR,e,t,n)}finally{this.#o--}}emitTransitionCancel(e,t){this.#o++;try{this.#t.emit(g.TRANSITION_CANCEL,e,t)}finally{this.#o--}}emitTransitionLeaveApprove(e,t){this.#o++;try{this.#t.emit(g.TRANSITION_LEAVE_APPROVE,e,t)}finally{this.#o--}}isProcessing(){return this.#o>0}emitTreeChanged(e){this.#t.emit(Y,e)}isEmittingTreeChanged(){return this.#t.isDispatching(Y)}subscribeTreeChanged(e){if(this.isDisposed())throw new G(f.ROUTER_DISPOSED);return this.#t.on(Y,t=>{e(t)})}treeChangedListenerCount(){return this.#t.listenerCount(Y)}sendStart(){this.#e.send(S.START)}sendStop(){this.#e.send(S.STOP)}sendDispose(){this.#e.send(S.DISPOSE)}sendStarted(){this.#e.send(S.STARTED)}sendNavigate(e,t){this.#s=e,this.#e.send(S.NAVIGATE,{toState:e,fromState:t})}sendComplete(e,t,n={}){this.#e.send(S.COMPLETE,{toState:e,fromState:t,opts:n}),this.#s=void 0}sendLeaveApprove(e,t){this.#e.send(S.LEAVE_APPROVE,{toState:e,fromState:t})}sendFail(e,t,n){this.#c=e,this.#l=t,this.#u=n,this.#e.send(S.FAIL),this.#s=void 0}sendFailSafe(e,t,n){this.isReady()?this.sendFail(e,t,n):this.emitTransitionError(e,t,n)}sendCancel(e,t,n){this.#c=e,this.#l=t,this.#d=n,this.#e.send(S.CANCEL),this.#s=void 0}canBeginTransition(){return this.#e.canSend(S.NAVIGATE)}canStart(){return this.#e.canSend(S.START)}canCancel(){return this.#e.canSend(S.CANCEL)}isActive(){let e=this.#e.getState();return e!==x.IDLE&&e!==x.DISPOSED}isDisposed(){return this.#e.getState()===x.DISPOSED}isTransitioning(){let e=this.#e.getState();return e===x.TRANSITION_STARTED||e===x.LEAVE_APPROVED}isLeaveApproved(){return this.#e.getState()===x.LEAVE_APPROVED}isReady(){return this.#e.getState()===x.READY}isStarting(){return this.#e.getState()===x.STARTING}isIdle(){return this.#e.getState()===x.IDLE}addEventListener(e,t){return this.#f(e,`addEventListener`),this.#t.on(e,t)}subscribe(e){if(this.isDisposed())throw new G(f.ROUTER_DISPOSED);return this.#f(g.TRANSITION_SUCCESS,`subscribe`),this.#t.on(g.TRANSITION_SUCCESS,(t,n)=>{let r=e({route:t,previousRoute:n});r!=null&&typeof r.then==`function`&&Promise.resolve(r).catch(e=>{this.#n(g.TRANSITION_SUCCESS,e)})})}subscribeLeave(e){if(this.isDisposed())throw new G(f.ROUTER_DISPOSED);this.#a.push(e);let t=!1;return()=>{if(t)return;t=!0;let n=this.#a.indexOf(e);n!==-1&&this.#a.splice(n,1)}}hasLeaveListeners(){return this.#a.length>0}hasPreCommitListeners(){return this.#t.listenerCount(g.TRANSITION_START)>0||this.#t.listenerCount(g.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.#a];this.#o++;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.#o--}if(i===void 0){if(a!==void 0)throw X(a);return}return Ht(i,a,n)}clearAll(){this.#t.clearAll(),this.#a.length=0}setLimits(e){this.#t.setLimits(e)}setValidatorAccessor(e){this.#i=e}sendCancelIfPossible(e,t){let n=this.#s;!this.canCancel()||n===void 0||this.sendCancel(n,e,t)}#f(e,t){let n=this.#i?.();n&&n.eventBus.validateCountThresholds(this.#t.listenerCount(e)+1,e,t)}#p(){this.emitTransitionError(this.#c,this.#l,this.#u),this.#c=void 0,this.#l=void 0,this.#u=void 0}#m(){let e=this.#e;e.on(x.STARTING,S.STARTED,()=>{this.emitRouterStart()}),e.on(x.READY,S.STOP,()=>{this.emitRouterStop()});let t=e=>{this.emitTransitionStart(e.toState,e.fromState)};e.on(x.READY,S.NAVIGATE,t),e.on(x.TRANSITION_STARTED,S.NAVIGATE,t),e.on(x.LEAVE_APPROVED,S.NAVIGATE,t),e.on(x.TRANSITION_STARTED,S.LEAVE_APPROVE,e=>{this.emitTransitionLeaveApprove(e.toState,e.fromState)}),e.on(x.LEAVE_APPROVED,S.COMPLETE,e=>{this.emitTransitionSuccess(e.toState,e.fromState,e.opts)});let n=()=>{let e=this.#c,t=this.#d;this.#d=void 0,this.#r(t),e!==void 0&&this.emitTransitionCancel(e,this.#l)};e.on(x.TRANSITION_STARTED,S.CANCEL,n),e.on(x.LEAVE_APPROVED,S.CANCEL,n),e.on(x.LEAVE_APPROVED,S.FAIL,()=>{this.#p()}),e.on(x.STARTING,S.FAIL,()=>{this.#p()}),e.on(x.READY,S.FAIL,()=>{this.#p()}),e.on(x.TRANSITION_STARTED,S.FAIL,()=>{this.#p()})}};const Ut=new G(f.ROUTER_ALREADY_STARTED),Wt=new Set([`all`,`warn-error`,`error-only`,`none`]);function Gt(e){return typeof e==`string`&&Wt.has(e)}function Kt(e){return typeof e==`string`?`"${e}"`:typeof e==`object`?JSON.stringify(e):String(e)}function qt(e){if(typeof e!=`object`)throw TypeError(`Logger config must be an object`);let t=e;for(let e of Object.keys(t))if(e!==`level`&&e!==`callback`&&e!==`callbackIgnoresLevel`)throw TypeError(`Unknown logger config property: "${e}"`);if(`level`in t&&t.level!==void 0&&!Gt(t.level))throw TypeError(`Invalid logger level: ${Kt(t.level)}. Expected: "all" | "warn-error" | "error-only" | "none"`);if(`callback`in t&&t.callback!==void 0&&typeof t.callback!=`function`)throw TypeError(`Logger callback must be a function, got ${typeof t.callback}`);if(`callbackIgnoresLevel`in t&&t.callbackIgnoresLevel!==void 0&&typeof t.callbackIgnoresLevel!=`boolean`)throw TypeError(`Logger callbackIgnoresLevel must be a boolean, got ${typeof t.callbackIgnoresLevel}`)}function Jt(e){let t=Yt(e),r=()=>n(e.router).validator;Xt(e),Zt(e,r),Qt(e,t,r),$t(e),en(e,t,r),tn(e),nn(e),rn(e)}function Yt(e){let{router:t,dependenciesStore:n}=e,r=e=>n.dependencies[e];return e=>e(t,r)}function Xt(e){e.dependenciesStore.limits=e.limits,e.eventBus.setLimits({maxListeners:e.limits.maxListeners,warnListeners:e.limits.warnListeners})}function Zt(e,t){e.eventBus.setValidatorAccessor(t)}function Qt(e,t,n){let r={compileFactory:t,getValidator:n};e.routeLifecycle.setDependencies(r)}function $t(e){e.routes.setDependencies({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),makeState:(t,n,r,i)=>e.state.makeState(t,n,r,i),getState:()=>e.state.get(),areStatesEqual:(t,n,r)=>e.state.areStatesEqual(t,n,r),getDependency:t=>e.dependenciesStore.dependencies[t],forwardState:(t,r)=>{let i=n(e.router);return i.validator?.routes.validateStateBuilderArgs(t,r,`forwardState`),i.forwardState(t,r)}}),e.routes.setLifecycleNamespace(e.routeLifecycle)}function en(e,t,n){let r={addEventListener:(t,n)=>e.eventBus.addEventListener(t,n),canNavigate:()=>e.eventBus.canBeginTransition(),compileFactory:t,getValidator:n};e.plugins.setDependencies(r)}function tn(e){e.navigation.setDependencies({getOptions:()=>e.options.get(),hasRoute:t=>e.routes.hasRoute(t),getState:()=>e.state.get(),setState:t=>{e.state.set(t)},buildNavigateState:(t,r)=>{let i=n(e.router);i.validator?.routes.validateStateBuilderArgs(t,r,`navigate`);let a=i.forwardState(t,r),o=a.name,s=w(a.params),c=e.routes.getMetaForState(o);if(c===void 0)return;let l=i.buildPath(o,s);return e.state.makeState(o,s,l,c,!0)},resolveDefault:()=>{let t=e.options.get(),r=n(e.router),i=ce(t.defaultRoute,t=>e.dependenciesStore.dependencies[t]),a=ce(t.defaultParams,t=>e.dependenciesStore.dependencies[t]);return typeof t.defaultRoute==`function`&&r.validator?.options.validateResolvedDefaultRoute(i,r.routeGetStore()),{route:i,params:a}},startTransition:(t,n)=>{e.eventBus.sendNavigate(t,n)},cancelNavigation:t=>{e.eventBus.sendCancelIfPossible(e.state.get(),t)},sendTransitionDone:(t,n,r)=>{e.eventBus.sendComplete(t,n,r)},sendTransitionFail:(t,n,r)=>{e.eventBus.sendFail(t,n,r)},emitTransitionError:(t,n,r)=>{e.eventBus.sendFailSafe(t,n,r)},emitTransitionSuccess:(t,n,r)=>{e.eventBus.emitTransitionSuccess(t,n,r)},sendLeaveApprove:(t,n)=>{e.eventBus.sendLeaveApprove(t,n)},canNavigate:()=>e.eventBus.canBeginTransition(),getLifecycleFunctions:()=>e.routeLifecycle.getFunctions(),isActive:()=>e.router.isActive(),isTransitioning:()=>e.eventBus.isTransitioning(),clearCanDeactivate:t=>{e.routeLifecycle.clearCanDeactivate(t,`external`)},hasLeaveListeners:()=>e.eventBus.hasLeaveListeners(),hasPreCommitListeners:()=>e.eventBus.hasPreCommitListeners(),awaitLeaveListeners:(t,n,r)=>e.eventBus.awaitLeaveListeners(t,n,r)})}function nn(e){e.lifecycle.setDependencies({getOptions:()=>e.options.get(),navigateToState:(t,n)=>e.navigation.navigateToState(t,n),navigateToNotFound:t=>e.navigation.navigateToNotFound(t),clearState:()=>{e.state.set(void 0)},matchPath:t=>e.routes.matchPath(t,e.options.get()),completeStart:()=>{e.eventBus.sendStarted()},isIdle:()=>e.eventBus.isIdle(),emitTransitionError:(t,n,r)=>{e.eventBus.sendFail(t,n,r)}})}function rn(e){e.state.setDependencies({getDefaultParams:()=>e.routes.getStore().config.defaultParams,buildPath:(t,r)=>n(e.router).buildPath(t,r),getUrlParams:t=>e.routes.getUrlParams(t)})}const Q=Object.freeze({}),an=new Set([f.SAME_STATES,f.TRANSITION_CANCELLED,f.ROUTER_NOT_STARTED,f.ROUTE_NOT_FOUND,f.CANNOT_ACTIVATE,f.CANNOT_DEACTIVATE]);function on(e,t){c.error(`Router`,`Error in listener for ${e}:`,t)}var sn=class e{#e;#t;#n;#r;#i;#a;#o;#s;#c;#l;constructor(n=[],r={},i={}){let{logger:o,...l}=r;o&&(qt(o),c.configure(o)),ue.validateOptionsIsObject(r),ne(i),n.length>0&&C(n),this.#e=new ue(l),this.#t=ie(l.limits),this.#n=ae(i),this.#r=new pe,this.#i=new mt(n,cn(this.#e.get())),this.#a=new Ce,this.#o=new _e,this.#s=new zt,this.#c=new Vt;let u=te(),f=new d({onListenerError:on,onListenerWarn:(e,t)=>{c.warn(`router.addEventListener`,`Event "${e}" has ${t} listeners — possible memory leak`)}});this.#l=new Z({routerFSM:u,emitter:f,onListenerError:on,abortController:e=>{this.#s.abortCurrentController(e)}});let p=new Map;s(this,{makeState:(e,t,n,r)=>this.#r.makeState(e,t,n,r),forwardState:a(`forwardState`,(e,t)=>this.#i.forwardState(e,t),p),buildStateResolved:(e,t)=>this.#i.buildStateResolved(e,t),matchPath:(e,t)=>this.#i.matchPath(e,t),getOptions:()=>this.#e.get(),addEventListener:(e,t)=>this.#l.addEventListener(e,t),treeChanged:{emit:e=>{this.#l.emitTreeChanged(e)},subscribe:e=>this.#l.subscribeTreeChanged(e),listenerCount:()=>this.#l.treeChangedListenerCount(),isEmitting:()=>this.#l.isEmittingTreeChanged()},buildPath:a(`buildPath`,(e,t)=>this.#i.buildPath(e,t??v,this.#e.get()),p),emitTransitionError:e=>{this.#l.sendFailSafe(void 0,this.#r.get(),e)},emitTransitionSuccess:(e,t,n)=>{this.#l.emitTransitionSuccess(e,t,n)},navigateToNotFound:e=>this.#s.navigateToNotFound(e),start:t(`start`,e=>this.#c.start(e),p),navigateToState:(t,n)=>{this.#m();let r=this.#s.navigateToState(t,n??Q);return this.#s.lastSyncResolved?this.#s.lastSyncResolved=!1:this.#s.lastSyncRejected?this.#s.lastSyncRejected=!1:e.#p(r),r},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()}),routeGetStore:()=>this.#i.getStore(),getStateName:()=>this.#r.get()?.name,isTransitioning:()=>this.#l.isTransitioning(),clearState:()=>{this.#r.set(void 0)},setState:e=>{this.#r.set(e)},routerExtensions:[],contextClaimRecords:new Set,hydrationState:null}),Jt({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,r,i){return n(this).validator?.routes.validateIsActiveRouteArgs(e,t,r,i),n(this).validator?.routes.validateRouteName(e,`isActiveRoute`),e===``?(c.warn(`real-router`,`isActiveRoute("") called with empty string. Root node is not considered a parent of any route.`),!1):this.#i.isActiveRoute(e,t,r,i)}buildPath(e,t){let r=n(this);return r.validator?.routes.validateBuildPathArgs(e),r.validator?.navigation.validateParams(t,`buildPath`),r.buildPath(e,w(t))}getState(){return this.#r.get()}getPreviousState(){return this.#r.getPrevious()}areStatesEqual(e,t,r=!0){return n(this).validator?.state.validateAreStatesEqualArgs(e,t,r),this.#r.areStatesEqual(e,t,r)}shouldUpdateNode(e){return n(this).validator?.routes.validateShouldUpdateNodeArgs(e),mt.shouldUpdateNode(e)}isActive(){return this.#l.isActive()}start(t){if(!this.#l.canStart())return Promise.reject(Ut);n(this).validator?.navigation.validateStartArgs(t),this.#l.sendStart();let r;try{r=n(this).start(t)}catch(e){r=Promise.reject(e)}let i=r.catch(e=>this.#h(e));return e.#p(i,e.#f),i}stop(){return this.#l.sendCancelIfPossible(this.#r.get()),!this.#l.isReady()&&!this.#l.isTransitioning()&&!this.#l.isStarting()?this:(this.#c.stop(),this.#l.sendStop(),this)}dispose(){if(this.#l.isDisposed())return;this.#l.sendCancelIfPossible(this.#r.get()),(this.#l.isReady()||this.#l.isTransitioning())&&(this.#c.stop(),this.#l.sendStop()),this.#l.sendDispose(),this.#l.clearAll(),this.#o.disposeAll();let e=n(this);for(let t of e.routerExtensions)for(let e of t.keys)delete this[e];e.routerExtensions.length=0,e.contextClaimRecords.clear(),e.interceptors.clear(),this.#i.clearRoutes(),this.#a.clearAll(),this.#r.reset(),this.#n.dependencies=Object.create(null),this.#g()}canNavigateTo(e,t){let r=n(this);if(r.validator?.routes.validateRouteName(e,`canNavigateTo`),r.validator?.navigation.validateParams(t,`canNavigateTo`),!this.#i.hasRoute(e))return!1;let{name:i,params:a}=r.forwardState(e,t??{}),o;try{let e=w(a),t=this.#i.getMetaForState(i),n=r.buildPath(i,e);o=this.#r.makeState(i,e,n,t,!0)}catch{return!1}let s=this.#r.get(),{toDeactivate:c,toActivate:l}=W(o,s);return this.#a.canNavigateTo(c,l,o,s)}usePlugin(...e){if(this.#l.isDisposed())throw new G(f.ROUTER_DISPOSED);let t=e.filter(Boolean);if(t.length===0)return()=>{};let r=n(this);r.validator?.plugins.validatePluginLimit(this.#o.count(),this.#t);for(let e of t)r.validator?.plugins.validateNoDuplicatePlugins(e,this.#o.getAll());return this.#o.use(...t)}subscribe(e){return Z.validateSubscribeListener(e),this.#l.subscribe(e)}subscribeLeave(e){return Z.validateSubscribeLeaveListener(e),this.#l.subscribeLeave(e)}isLeaveApproved(){return this.#l.isLeaveApproved()}navigate(t,r,i){this.#m();let a=n(this);a.validator?.navigation.validateNavigateArgs(t),a.validator?.navigation.validateParams(r,`navigate`);let o=i??Q;a.validator?.navigation.validateNavigationOptions(o,`navigate`);let s=this.#s.navigate(t,r??v,o);return this.#s.lastSyncResolved?this.#s.lastSyncResolved=!1:this.#s.lastSyncRejected?this.#s.lastSyncRejected=!1:e.#p(s),s}navigateToDefault(t){this.#m();let r=n(this);r.validator?.navigation.validateNavigateToDefaultArgs(t);let i=t??Q;r.validator?.navigation.validateNavigationOptions(i,`navigateToDefault`);let a=this.#s.navigateToDefault(i);return this.#s.lastSyncResolved?this.#s.lastSyncResolved=!1:this.#s.lastSyncRejected?this.#s.lastSyncRejected=!1:e.#p(a),a}navigateToNotFound(e){if(this.#m(),!this.#l.isActive())throw new G(f.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 G(f.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#u(e){return e instanceof G&&an.has(e.code)}static#d=t=>{e.#u(t)||c.error(`router.navigate`,`Unexpected navigation error`,t)};static#f=t=>{e.#u(t)||c.error(`router.start`,`Unexpected start error`,t)};static#p(t,n=e.#d){t.catch(n)}#m(){if(this.#l.isProcessing())throw new G(f.REENTRANT_NAVIGATION)}#h(e){throw this.#l.isReady()&&this.#r.get()===void 0?(this.#c.stop(),this.#l.sendStop()):this.#l.isStarting()&&this.#l.sendFail(void 0,void 0,e),e}#g(){this.navigate=$,this.navigateToDefault=$,this.navigateToNotFound=$,this.start=$,this.stop=$,this.usePlugin=$,this.subscribe=$,this.subscribeLeave=$,this.canNavigateTo=$}};function $(){throw new G(f.ROUTER_DISPOSED)}function cn(e){return{strictTrailingSlash:e.trailingSlash===`strict`,caseSensitive:e.caseSensitive,strictQueryParams:e.queryParamsMode===`strict`,urlParamsEncoding:e.urlParamsEncoding,queryParams:e.queryParams}}export{f as C,m as S,k as _,We as a,C as b,I as c,L as d,Xe as f,je as g,Pe as h,Ye as i,He as l,Je as m,G as n,F as o,Ne as p,W as r,Ue as s,sn as t,Ke as u,ke as v,g as w,p as x,j as y};
2
+ //# sourceMappingURL=Router-07LbiPS7.mjs.map