@real-router/core 0.47.0 → 0.48.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +64 -0
- package/dist/cjs/{Router-Dh1xgFLI.d.ts → Router-DrBkBdZ5.d.ts} +4 -4
- package/dist/cjs/{Router-Dh1xgFLI.d.ts.map → Router-DrBkBdZ5.d.ts.map} +1 -1
- package/dist/cjs/Router-ct1eZOO8.js +6 -0
- package/dist/cjs/Router-ct1eZOO8.js.map +1 -0
- package/dist/cjs/RouterError-BmvAyBlx.js +2 -0
- package/dist/cjs/RouterError-BmvAyBlx.js.map +1 -0
- package/dist/cjs/api.d.ts +1 -1
- package/dist/cjs/api.d.ts.map +1 -1
- package/dist/cjs/api.js +1 -1
- package/dist/cjs/api.js.map +1 -1
- package/dist/cjs/{getPluginApi-1VcDVGjf.js → getPluginApi-B_dUJgg4.js} +2 -2
- package/dist/cjs/getPluginApi-B_dUJgg4.js.map +1 -0
- package/dist/cjs/index.d.ts +1 -1
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +1 -1
- package/dist/cjs/internals-na15rxo_.js.map +1 -1
- package/dist/cjs/utils.js +1 -1
- package/dist/cjs/validation.d.ts +2 -1
- package/dist/cjs/validation.d.ts.map +1 -1
- package/dist/esm/{Router-BPkXwb1J.d.mts → Router-BeXr2zW4.d.mts} +4 -4
- package/dist/esm/{Router-BPkXwb1J.d.mts.map → Router-BeXr2zW4.d.mts.map} +1 -1
- package/dist/esm/Router-DXGRP4Vr.mjs +6 -0
- package/dist/esm/Router-DXGRP4Vr.mjs.map +1 -0
- package/dist/esm/RouterError-D-Zjbdv9.mjs +2 -0
- package/dist/esm/RouterError-D-Zjbdv9.mjs.map +1 -0
- package/dist/esm/api.d.mts +1 -1
- package/dist/esm/api.d.mts.map +1 -1
- package/dist/esm/api.mjs +1 -1
- package/dist/esm/api.mjs.map +1 -1
- package/dist/esm/getPluginApi-BJAaa-tI.mjs +2 -0
- package/dist/esm/getPluginApi-BJAaa-tI.mjs.map +1 -0
- package/dist/esm/index.d.mts +1 -1
- package/dist/esm/index.d.mts.map +1 -1
- package/dist/esm/index.mjs +1 -1
- package/dist/esm/internals-CCymabFj.mjs.map +1 -1
- package/dist/esm/utils.mjs +1 -1
- package/dist/esm/validation.d.mts +2 -1
- package/dist/esm/validation.d.mts.map +1 -1
- package/package.json +4 -4
- package/src/Router.ts +6 -2
- package/src/api/getPluginApi.ts +27 -1
- package/src/api/getRoutesApi.ts +16 -4
- package/src/constants.ts +14 -0
- package/src/helpers.ts +68 -50
- package/src/internals.ts +1 -0
- package/src/namespaces/NavigationNamespace/NavigationNamespace.ts +3 -2
- package/src/namespaces/NavigationNamespace/transition/completeTransition.ts +12 -8
- package/src/namespaces/RoutesNamespace/RoutesNamespace.ts +4 -2
- package/src/namespaces/StateNamespace/StateNamespace.ts +19 -6
- package/src/wiring/RouterWiringBuilder.ts +4 -1
- package/dist/cjs/Router-BtWR1xO-.js +0 -6
- package/dist/cjs/Router-BtWR1xO-.js.map +0 -1
- package/dist/cjs/RouterError-AQUx-VLW.js +0 -2
- package/dist/cjs/RouterError-AQUx-VLW.js.map +0 -1
- package/dist/cjs/getPluginApi-1VcDVGjf.js.map +0 -1
- package/dist/esm/Router-DmPynezS.mjs +0 -6
- package/dist/esm/Router-DmPynezS.mjs.map +0 -1
- package/dist/esm/RouterError-BOUkCIgf.mjs +0 -2
- package/dist/esm/RouterError-BOUkCIgf.mjs.map +0 -1
- package/dist/esm/getPluginApi-BvOUPp3g.mjs +0 -2
- package/dist/esm/getPluginApi-BvOUPp3g.mjs.map +0 -1
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import{a as e,d as t,f as n,i as r,l as i,n as a,o,r as s,s as c,t as l,u}from"./RouterError-D-Zjbdv9.mjs";import{i as d,n as f,r as p,t as m}from"./internals-CCymabFj.mjs";import{logger as h}from"@real-router/logger";import{FSM as g}from"@real-router/fsm";const _={maxListeners:0,warnListeners:0,maxEventDepth:0};var v=class extends Error{},y=class{#e=new Map;#t=null;#n=_;#r;#i;constructor(e){e?.limits&&(this.#n=e.limits),this.#r=e?.onListenerError??null,this.#i=e?.onListenerWarn??null}static validateCallback(e,t){if(typeof e!=`function`)throw TypeError(`Expected callback to be a function for event ${t}`)}setLimits(e){this.#n=e}on(e,t){let n=this.#c(e);if(n.has(t))throw Error(`Duplicate listener for "${e}"`);let{maxListeners:r,warnListeners:i}=this.#n;if(i!==0&&n.size===i&&this.#i?.(e,i),r!==0&&n.size>=r)throw Error(`Listener limit (${r}) reached for "${e}"`);return n.add(t),()=>{this.off(e,t)}}off(e,t){this.#e.get(e)?.delete(t)}emit(e,t,n,r,i){let a=this.#e.get(e);if(!a||a.size===0)return;let o=arguments.length-1;if(this.#n.maxEventDepth===0){this.#a(a,e,o,t,n,r,i);return}this.#s(a,e,o,t,n,r,i)}clearAll(){this.#e.clear(),this.#t=null}listenerCount(e){return this.#e.get(e)?.size??0}#a(e,t,n,r,i,a,o){if(e.size===1){let[s]=e;try{this.#o(s,n,r,i,a,o)}catch(e){this.#r?.(t,e)}return}let s=[...e];for(let e of s)try{this.#o(e,n,r,i,a,o)}catch(e){this.#r?.(t,e)}}#o(e,t,n,r,i,a){switch(t){case 0:e();break;case 1:e(n);break;case 2:e(n,r);break;case 3:e(n,r,i);break;default:e(n,r,i,a)}}#s(e,t,n,r,i,a,o){this.#t??=new Map;let s=this.#t,c=s.get(t)??0;if(c>=this.#n.maxEventDepth)throw new v(`Maximum recursion depth (${this.#n.maxEventDepth}) exceeded for event: ${t}`);try{s.set(t,c+1);let l=e.size===1?e:[...e];for(let e of l)try{this.#o(e,n,r,i,a,o)}catch(e){if(e instanceof v)throw e;this.#r?.(t,e)}}finally{s.set(t,s.get(t)-1)}}#c(e){let t=this.#e.get(e);if(t)return t;let n=new Set;return this.#e.set(e,n),n}};const b={IDLE:`IDLE`,STARTING:`STARTING`,READY:`READY`,TRANSITION_STARTED:`TRANSITION_STARTED`,LEAVE_APPROVED:`LEAVE_APPROVED`,DISPOSED:`DISPOSED`},x={START:`START`,STARTED:`STARTED`,NAVIGATE:`NAVIGATE`,LEAVE_APPROVE:`LEAVE_APPROVE`,COMPLETE:`COMPLETE`,FAIL:`FAIL`,CANCEL:`CANCEL`,STOP:`STOP`,DISPOSE:`DISPOSE`},S={initial:b.IDLE,context:null,transitions:{[b.IDLE]:{[x.START]:b.STARTING,[x.DISPOSE]:b.DISPOSED},[b.STARTING]:{[x.STARTED]:b.READY,[x.FAIL]:b.IDLE},[b.READY]:{[x.NAVIGATE]:b.TRANSITION_STARTED,[x.FAIL]:b.READY,[x.STOP]:b.IDLE},[b.TRANSITION_STARTED]:{[x.NAVIGATE]:b.TRANSITION_STARTED,[x.LEAVE_APPROVE]:b.LEAVE_APPROVED,[x.CANCEL]:b.READY,[x.FAIL]:b.READY},[b.LEAVE_APPROVED]:{[x.NAVIGATE]:b.TRANSITION_STARTED,[x.COMPLETE]:b.READY,[x.CANCEL]:b.READY,[x.FAIL]:b.READY},[b.DISPOSED]:{}}};function ee(){return new g(S)}function te(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 ne(t={}){let n=Object.create(null);for(let e in t)t[e]!==void 0&&(n[e]=t[e]);return{dependencies:n,limits:e}}function re(e){return`(${e.replaceAll(/(^<|>$)/g,``)})`}const ie=/([:*])([^/?<]+)(<[^>]+>)?(\?)?/g,ae=/([:*][^/?<]+(?:<[^>]+>)?)\?(?=\/|$)/g,oe=/\?(.+)$/;function se(e){let t=[],n=[],r=[],i={},a=new Map,o=e.replaceAll(ae,`$1`),s=oe.exec(o);if(s!==null){let t=s[1].split(`&`);for(let e of t){let t=e.trim();t.length>0&&(n.push(t),i[t]=`query`)}e=e.slice(0,s.index)}let c;for(;(c=ie.exec(e))!==null;){let e=c[1],n=c[2],o=c[3];if(e===`*`)r.push(n),t.push(n),i[n]=`url`;else if(t.push(n),i[n]=`url`,o){let e=`^${re(o)}$`;a.set(n,{pattern:new RegExp(e),constraint:o})}}return{urlParams:t,queryParams:n,spatParams:r,paramTypeMap:i,constraintPatterns:a,pathPattern:e}}const ce=/[^\w!$'()*+,.:;|~-]/gu,le=/[^\w!$'()*+,.:;|~-]/u,ue={default:e=>le.test(e)?e.replaceAll(ce,e=>encodeURIComponent(e)):e,uri:encodeURI,uriComponent:encodeURIComponent,none:e=>e},de={default:decodeURIComponent,uri:decodeURI,uriComponent:decodeURIComponent,none:e=>e};function w(){return{staticChildren:Object.create(null),hasChildren:!1,paramChild:void 0,splatChild:void 0,route:void 0,slashChildRoute:void 0}}function T(e){return e.length>1&&e.endsWith(`/`)?e.slice(0,-1):e}function fe(e,t){return e===``?t:t===``?e:e+t}function pe(e){return e>=48&&e<=57||e>=65&&e<=70||e>=97&&e<=102}function me(e){let t=0;for(;t<e.length;)if(e.codePointAt(t)===37){if(t+2>=e.length)return!1;let n=e.codePointAt(t+1)??0,r=e.codePointAt(t+2)??0;if(!pe(n)||!pe(r))return!1;t+=3}else t++;return!0}const E=/<[^>]*>/g;function he(e,t,n,r,i){let a=t.fullName===``;a||r.push(t);let o=t.absolute,s=t.paramMeta.pathPattern,c=o&&s.startsWith(`~`)?s.slice(1):s,l=(o?c:s).replaceAll(E,``),u=o?l:fe(n,l),d=i;a||(d=ge(e,t,u,o?``:n,r,i));for(let n of t.children.values())he(e,n,u,r,d);a||r.pop()}function ge(e,t,n,r,i,a){let o=be(n,r),s=Object.freeze([...i]),c=_e(s),l=T(n),u=De(e.rootQueryParams,i),d=Oe(i),{buildStaticParts:f,buildParamSlots:p}=Ee(o?T(r):l,o?i.slice(0,-1):i,e.options.urlParamsEncoding),m={name:t.fullName,parent:a,depth:i.length-1,matchSegments:s,meta:c,declaredQueryParams:u,declaredQueryParamsSet:new Set(u),hasTrailingSlash:n.length>1&&n.endsWith(`/`),constraintPatterns:d,hasConstraints:d.size>0,buildStaticParts:f,buildParamSlots:p,buildParamNamesSet:new Set(p.map(e=>e.paramName))};return t.paramMeta.urlParams.length===0&&(m.cachedResult=Object.freeze({segments:m.matchSegments,params:Object.freeze({}),meta:m.meta})),e.routesByName.set(t.fullName,m),e.segmentsByName.set(t.fullName,s),e.metaByName.set(t.fullName,c),o?ve(e,m,r):ye(e,m,n,l,t),m}function _e(e){let t={};for(let n of e)t[n.fullName]=n.paramTypeMap;return Object.freeze(t)}function ve(e,t,n){Se(e,t,n);let r=T(n),i=e.options.caseSensitive?r:r.toLowerCase();e.staticCache.has(i)&&e.staticCache.set(i,t)}function ye(e,t,n,r,i){if(xe(e,t,n),i.paramMeta.urlParams.length===0){let n=e.options.caseSensitive?r:r.toLowerCase();e.staticCache.set(n,t)}}function be(e,t){return T(e)===T(t)}function xe(e,t,n){let r=T(n);if(r===`/`){e.root.route=t;return}D(e,e.root,r,1,t)}function D(e,t,n,r,i){let a=n.length;for(;r<=a;){let o=n.indexOf(`/`,r),s=o===-1?a:o,c=n.slice(r,s);if(c.endsWith(`?`)){let r=c.slice(1).replaceAll(E,``).replace(/\?$/,``);t.paramChild??={node:w(),name:r},D(e,t.paramChild.node,n,s+1,i),s>=a?t.route??=i:D(e,t,n,s+1,i);return}t=Te(e,t,c),r=s+1}t.route=i}function Se(e,t,n){let r=Ce(e,n);r.slashChildRoute=t}function Ce(e,t){return we(e,e.root,t)}function we(e,t,n){let r=T(n);if(r===`/`||r===``)return t;let i=t,a=1,o=r.length;for(;a<=o;){let t=r.indexOf(`/`,a),n=t===-1?o:t;if(n<=a)break;let s=r.slice(a,n);i=Te(e,i,s),a=n+1}return i}function Te(e,t,n){if(n.startsWith(`*`)){let e=n.slice(1);return t.splatChild??={node:w(),name:e},t.hasChildren=!0,t.splatChild.node}if(n.startsWith(`:`)){let e=n.slice(1).replaceAll(E,``).replace(/\?$/,``);return t.paramChild??={node:w(),name:e},t.hasChildren=!0,t.paramChild.node}let r=e.options.caseSensitive?n:n.toLowerCase();return r in t.staticChildren||(t.staticChildren[r]=w(),t.hasChildren=!0),t.staticChildren[r]}function Ee(e,t,n){let r=new Set,i=new Set;for(let e of t){for(let t of e.paramMeta.urlParams)r.add(t);for(let t of e.paramMeta.spatParams)i.add(t)}if(r.size===0)return{buildStaticParts:[e],buildParamSlots:[]};let a=[],o=[],s=/[:*]([\w]+)(?:<[^>]*>)?(\?)?/gu,c=0,l;for(;(l=s.exec(e))!==null;){let t=l[1],r=l[2]===`?`;a.push(e.slice(c,l.index));let s=i.has(t)?e=>{let t=ue[n],r=e.split(`/`),i=t(r[0]);for(let e=1;e<r.length;e++)i+=`/${t(r[e])}`;return i}:ue[n];o.push({paramName:t,isOptional:r,encoder:s}),c=l.index+l[0].length}return a.push(e.slice(c)),{buildStaticParts:a,buildParamSlots:o}}function De(e,t){let n=[];e.length>0&&n.push(...e);for(let e of t)e.paramMeta.queryParams.length>0&&n.push(...e.paramMeta.queryParams);return n}function Oe(e){let t=new Map;for(let n of e)for(let[e,r]of n.paramMeta.constraintPatterns)t.set(e,r);return t}var ke=class{get options(){return this.#e}#e;#t=w();#n=new Map;#r=new Map;#i=new Map;#a=new Map;#o={cleanPath:``,normalized:``,queryString:void 0};#s=``;#c=[];#l=``;#u;#d;constructor(e){this.#e={caseSensitive:e.caseSensitive??!0,strictTrailingSlash:e.strictTrailingSlash??!1,strictQueryParams:e.strictQueryParams??!1,urlParamsEncoding:e.urlParamsEncoding??`default`,parseQueryString:e.parseQueryString,buildQueryString:e.buildQueryString},this.#u=this.#e.caseSensitive,this.#d=this.#e.urlParamsEncoding===`none`?null:de[this.#e.urlParamsEncoding]}registerTree(e){this.#c=e.paramMeta.queryParams,he({root:this.#t,options:this.#e,routesByName:this.#n,segmentsByName:this.#r,metaByName:this.#i,staticCache:this.#a,rootQueryParams:this.#c},e,``,[],null)}match(e){if(!this.#g(e))return;let{cleanPath:t,normalized:n,queryString:r}=this.#o,i=this.#u?n:n.toLowerCase(),a=this.#a.get(i);if(a)return this.#e.strictTrailingSlash&&!this.#y(t,a)?void 0:r===void 0&&a.cachedResult?a.cachedResult:this.#v(a,{},r);let o={},s=this.#b(n,o);if(s&&!(this.#e.strictTrailingSlash&&!this.#y(t,s))&&!(s.hasConstraints&&!this.#w(o,s))&&this.#C(o))return this.#v(s,o,r)}buildPath(e,t,n){let r=this.#n.get(e);if(!r)throw Error(`[SegmentMatcher.buildPath] '${e}' is not defined`);r.hasConstraints&&t&&this.#f(r,e,t);let i=this.#p(r,t),a=this.#m(i,n?.trailingSlash),o=this.#h(r,t,n?.queryParamsMode);return a+(o?`?${o}`:``)}getSegmentsByName(e){return this.#r.get(e)}getMetaByName(e){return this.#i.get(e)}hasRoute(e){return this.#n.has(e)}setRootPath(e){this.#s=e}#f(e,t,n){for(let[r,i]of e.constraintPatterns){let e=n[r];if(e!=null){let n=typeof e==`object`?JSON.stringify(e):String(e);if(!i.pattern.test(n))throw Error(`[SegmentMatcher.buildPath] '${t}' — param '${r}' value '${n}' does not match constraint '${i.constraint}'`)}}}#p(e,t){let n=e.buildStaticParts,r=e.buildParamSlots;if(r.length===0)return this.#s+n[0];let i=this.#s+n[0];for(let[e,a]of r.entries()){let r=t?.[a.paramName];if(r==null){if(!a.isOptional)throw Error(`[SegmentMatcher.buildPath] Missing required param '${a.paramName}'`);i.length>1&&i.endsWith(`/`)&&(i=i.slice(0,-1)),i+=n[e+1];continue}let o;o=typeof r==`string`?r:typeof r==`object`?JSON.stringify(r):String(r);let s=a.encoder(o);i+=s+n[e+1]}return i}#m(e,t){return t===`always`&&!e.endsWith(`/`)?`${e}/`:t===`never`&&e!==`/`&&e.endsWith(`/`)?e.slice(0,-1):e}#h(e,t,n){if(!t||e.declaredQueryParams.length===0&&n!==`loose`)return``;let r={},i=!1;for(let n of e.declaredQueryParams)n in t&&(r[n]=t[n],i=!0);if(n===`loose`)for(let n in t)Object.hasOwn(t,n)&&!e.declaredQueryParamsSet.has(n)&&!e.buildParamNamesSet.has(n)&&(r[n]=t[n],i=!0);return i?this.#e.buildQueryString(r):``}#g(e){if(e===``&&(e=`/`),e.codePointAt(0)!==47)return!1;let t=this.#s.length;if(t>0){if(e.length<t||!e.startsWith(this.#s))return!1;e=e.length===t?`/`:e.slice(t)}let n=this.#_(e);if(n===-2)return!1;n===-3&&(e=this.#l);let r=n>=0?e.slice(0,n):e,i=n>=0?e.slice(n+1):void 0,a=T(r);return this.#o.cleanPath=r,this.#o.normalized=a,this.#o.queryString=i,!0}#_(e){let t=!1;for(let n=0;n<e.length;n++){let r=e.codePointAt(n);if(r===35)return this.#l=e.slice(0,n),-3;if(r===63)return n;if(r>=128)return-2;if(r===47){if(t)return-2;t=!0}else t=!1}return-1}#v(e,t,n){if(n!==void 0){let r=this.#e.parseQueryString(n);if(this.#e.strictQueryParams){let n=e.declaredQueryParamsSet;for(let e in r){if(!n.has(e))return;t[e]=r[e]}}else for(let e in r)t[e]=r[e]}return{segments:e.matchSegments,params:t,meta:e.meta}}#y(e,t){return(e.length>1&&e.endsWith(`/`))===t.hasTrailingSlash}#b(e,t){return e.length===1?this.#t.slashChildRoute??this.#t.route:this.#x(this.#t,e,1,t)}#x(e,t,n,r){let i=e,a=t.length,o=this.#u;for(;n<=a;){let e=t.indexOf(`/`,n),s=e===-1?a:e,c=t.slice(n,s),l=o?c:c.toLowerCase(),u;if(l in i.staticChildren)u=i.staticChildren[l];else if(i.paramChild)u=i.paramChild.node,r[i.paramChild.name]=c;else if(i.splatChild)return this.#S(i.splatChild,t,n,r);else return;i=u,n=s+1}return i.slashChildRoute??i.route}#S(e,t,n,r){let i=e.node;if(!i.hasChildren)return r[e.name]=t.slice(n),i.route;let a={},o=this.#x(i,t,n,a);return o?(Object.assign(r,a),o):(r[e.name]=t.slice(n),i.route)}#C(e){let t=this.#d;if(!t)return!0;for(let n in e){let r=e[n];if(r.includes(`%`)){if(!me(r))return!1;e[n]=t(r)}}return!0}#w(e,t){for(let[n,r]of t.constraintPatterns)if(!r.pattern.test(e[n]))return!1;return!0}};const O=e=>{let t=e.indexOf(`%`),n=e.indexOf(`+`);if(t===-1&&n===-1)return e;let r=n===-1?e:e.replaceAll(`+`,` `);return t===-1?r:decodeURIComponent(r)},Ae=(e,t)=>{if(e===void 0)return t.boolean.decodeUndefined();let n=t.boolean.decodeRaw(e);if(n!==null)return n;let r=O(e),i=t.number.decode(r);return i===null?t.boolean.decodeValue(r):i},k=e=>{let t=typeof e;if(t!==`string`&&t!==`number`&&t!==`boolean`)throw TypeError(`[search-params] Array element must be a string, number, or boolean — received ${t===`object`&&e===null?`null`:t}`);return encodeURIComponent(e)},je={none:{encodeArray:(e,t)=>{if(t.length===0)return``;let n=`${e}=${k(t[0])}`;for(let r=1;r<t.length;r++)n+=`&${e}=${k(t[r])}`;return n}},brackets:{encodeArray:(e,t)=>{if(t.length===0)return``;let n=`${e}[]=${k(t[0])}`;for(let r=1;r<t.length;r++)n+=`&${e}[]=${k(t[r])}`;return n}},index:{encodeArray:(e,t)=>{if(t.length===0)return``;let n=`${e}[0]=${k(t[0])}`;for(let r=1;r<t.length;r++)n+=`&${e}[${r}]=${k(t[r])}`;return n}},comma:{encodeArray:(e,t)=>{if(t.length===0)return``;let n=`${e}=${k(t[0])}`;for(let e=1;e<t.length;e++)n+=`,${k(t[e])}`;return n},decodeValue:e=>e.includes(`,`)?e.split(`,`):null}},Me={encode:(e,t)=>`${e}=${t}`,decodeUndefined:()=>null,decodeRaw:()=>null,decodeValue:e=>e},Ne={encode:(e,t)=>`${e}=${t}`,decodeUndefined:()=>null,decodeRaw:e=>e===`true`?!0:e===`false`?!1:null,decodeValue:e=>e},Pe={encode:(e,t)=>t?e:`${e}=false`,decodeUndefined:()=>!0,decodeRaw:()=>null,decodeValue:e=>e},Fe={none:Me,auto:Ne,"empty-true":Pe},Ie={default:{encode:e=>e},hidden:{encode:()=>``}},Le={auto:{decode:e=>{let t=e.length;if(t===0||t>1&&e.codePointAt(0)===48&&e.codePointAt(1)!==46)return null;let n=!1;for(let r=0;r<t;r++){let i=e.codePointAt(r);if(!(i!==void 0&&i>=48&&i<=57)){if(i===46&&!n&&r!==0&&r!==t-1){n=!0;continue}return null}}let r=Number(e);return!Number.isSafeInteger(r)&&!n?null:r}},none:{decode:()=>null}},Re=(e,t,n,r)=>({boolean:Fe[t],null:Ie[n],number:Le[r],array:je[e]}),ze={boolean:Fe.auto,null:Ie.default,number:Le.auto,array:je.none},A={arrayFormat:`none`,booleanFormat:`auto`,nullFormat:`default`,numberFormat:`auto`},Be={...A,strategies:ze},Ve=e=>{if(!e||e.arrayFormat===void 0&&e.booleanFormat===void 0&&e.nullFormat===void 0&&e.numberFormat===void 0)return Be;let t=e.arrayFormat??A.arrayFormat,n=e.booleanFormat??A.booleanFormat,r=e.nullFormat??A.nullFormat,i=e.numberFormat??A.numberFormat;return{arrayFormat:t,booleanFormat:n,nullFormat:r,numberFormat:i,strategies:Re(t,n,r,i)}},j=e=>encodeURIComponent(e),He=(e,t,n)=>{let r=j(e);switch(typeof t){case`string`:case`number`:return`${r}=${j(t)}`;case`boolean`:return n.strategies.boolean.encode(r,t);case`object`:return t===null?n.strategies.null.encode(r):Array.isArray(t)?n.strategies.array.encodeArray(r,t):`${r}=${j(t)}`;default:return`${r}=${j(t)}`}},Ue=e=>{let t=e.indexOf(`?`);return t===-1?e:e.slice(t+1)};function We(e,t,n,r){let i=e[t];i===void 0?e[t]=r?[n]:n:Array.isArray(i)?i.push(n):e[t]=[i,n]}function Ge(e,t,n,r,i){return i?Ae(r?e.slice(t+1,n):void 0,i):r?O(e.slice(t+1,n)):null}function Ke(e,t,n,r,i){let a=e.indexOf(`=`,t),o=a!==-1&&a<n,s=o?a:n,c=s,l=!1;for(let n=t;n<s;n++)if(e.codePointAt(n)===91){c=n,l=!0;break}let u=O(e.slice(t,c));if(!l&&o&&i?.array.decodeValue){let t=e.slice(a+1,n),o=i.array.decodeValue(t);if(o){for(let e of o)We(r,u,Ae(e,i),!0);return}}We(r,u,Ge(e,a,n,o,i),l)}const qe=(e,t)=>{let n=Ue(e);if(n===``||n===`?`)return{};if(!t)return Je(n);let r=Ve(t),i={},a=0,o=n.length;for(;a<o;){let e=n.indexOf(`&`,a);e===-1&&(e=o),Ke(n,a,e,i,r.strategies),a=e+1}return i};function Je(e){let t={};return Ye(e,t),t}function Ye(e,t){let n=0,r=e.length;for(;n<r;){let i=e.indexOf(`&`,n);i===-1&&(i=r),Ke(e,n,i,t),n=i+1}}const Xe=(e,t)=>{let n=Object.keys(e);if(n.length===0)return``;let r=Ve(t),i=[];for(let t of n){let n=e[t];if(n===void 0)continue;let a=He(t,n,r);a&&i.push(a)}return i.join(`&`)};function M(e,t){let n=e.path,r=n.startsWith(`~`),i=r?n.slice(1):n,a={name:e.name,path:i,absolute:r,children:[],parent:t,nonAbsoluteChildren:[],fullName:``};if(e.children)for(let t of e.children){let e=M(t,a);a.children.push(e)}return a}function Ze(e,t,n){let r=M({name:e,path:t},null);for(let e of n){let t=M(e,r);r.children.push(t)}return r}const Qe=Object.freeze(new Map),$e=Object.freeze([]);function et(e){return e.parent?.name?`${e.parent.fullName}.${e.name}`:e.name}function tt(e,t){return e.endsWith(`/`)&&t.startsWith(`/`)?e+t.slice(1):e+t}function nt(e){if(!e.path)return null;let{urlParams:t,queryParams:n,spatParams:r}=e.paramMeta;if(t.length>0||n.length>0||r.length>0)return null;if(e.absolute)return e.path;let i=e.parent;return i?.path?i.staticPath===null?null:tt(i.staticPath,e.path):e.path}function rt(e){let t=new Map;for(let n of e)t.set(n.name,n);return t}function it(e,t,n){let r=[],i=[];for(let a of e){let e=at(a,t,n);r.push(e),e.absolute||i.push(e)}return{childrenMap:rt(r),nonAbsoluteChildren:i}}function at(e,t,n){let r=se(e.path),i=r.paramTypeMap,a={name:e.name,path:e.path,absolute:e.absolute,parent:t,children:void 0,paramMeta:r,nonAbsoluteChildren:void 0,fullName:``,staticPath:null,paramTypeMap:i};if(a.fullName=et(a),a.staticPath=nt(a),e.children.length===0)a.children=Qe,a.nonAbsoluteChildren=$e;else{let{childrenMap:t,nonAbsoluteChildren:r}=it(e.children,a,n);a.children=t,a.nonAbsoluteChildren=r}return n&&(e.children.length>0&&(Object.freeze(a.nonAbsoluteChildren),Object.freeze(a.children)),Object.freeze(i),Object.freeze(a)),a}function ot(e,t=!0){return at(e,null,t)}function st(e,t){let n=[];return{add(e){return n.push(e),this},addMany(e){return n.push(...e),this},build(r){return ot(Ze(e,t,n),!r?.skipFreeze)}}}function ct(e,t,n,r){return st(e,t).addMany(n).build(r)}function N(e){let t=e.absolute?`~${e.path}`:e.path,n={name:e.name,path:t};return e.children.size>0&&(n.children=Array.from(e.children.values(),N)),n}function lt(e){return Array.from(e.children.values(),N)}function ut(e){let t=e?.queryParams;return new ke({...e?.caseSensitive===void 0?void 0:{caseSensitive:e.caseSensitive},...e?.strictTrailingSlash===void 0?void 0:{strictTrailingSlash:e.strictTrailingSlash},...e?.strictQueryParams===void 0?void 0:{strictQueryParams:e.strictQueryParams},...e?.urlParamsEncoding===void 0?void 0:{urlParamsEncoding:e.urlParamsEncoding},parseQueryString:e=>qe(e,t),buildQueryString:e=>Xe(e,t)})}const dt={defaultRoute:``,defaultParams:{},trailingSlash:`preserve`,queryParamsMode:`loose`,queryParams:A,urlParamsEncoding:`default`,allowNotFound:!0,rewritePathOnMatch:!0};function ft(e){Object.freeze(e);for(let t of Object.keys(e)){let n=e[t];n&&typeof n==`object`&&n.constructor===Object&&ft(n)}return e}function pt(e,t){return typeof e==`function`?e(t):e}function mt(e){if(!e||typeof e!=`object`||Array.isArray(e))throw TypeError(`[router.constructor] options must be a plain object`)}var ht=class{#e;constructor(e={}){this.#e=ft({...dt,...e})}static validateOptionsIsObject(e){mt(e)}get(){return this.#e}};function P(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(!P(e[n],t[n]))return!1;return!0}return!1}const gt=new WeakMap;function _t(e){return gt.get(e)}function vt(e,t){gt.set(e,t)}var yt=class{#e=void 0;#t=void 0;#n;#r=new Map;get(){return this.#e}set(e){this.#t=this.#e,this.#e=e?s(e):void 0}getPrevious(){return this.#t}reset(){this.#e=void 0,this.#t=void 0,this.#r.clear()}setDependencies(e){this.#n=e}makeState(e,t,n,r,i){let a=this.#n.getDefaultParams(),l=Object.hasOwn(a,e),u;u=l?Object.freeze({...a[e],...t}):!t||t===c?c:Object.freeze({...t});let d={name:e,params:u,path:n??this.#n.buildPath(e,t),context:{},...!i&&{transition:o}};return r&&vt(d,r),i?d:s(d)}areStatesEqual(e,t,n=!0){if(!e||!t)return!!e==!!t;if(e.name!==t.name)return!1;if(n){let n=this.#i(e.name);for(let r of n)if(!P(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)||!P(e.params[n],t.params[n]))return!1;return!0}#i(e){let t=this.#r.get(e);if(t!==void 0)return t;let n=this.#n.getUrlParams(e);return this.#r.set(e,n),n}};const bt={[n.ROUTER_START]:t.ROUTER_START,[n.ROUTER_STOP]:t.ROUTER_STOP,[n.TRANSITION_SUCCESS]:t.TRANSITION_SUCCESS,[n.TRANSITION_START]:t.TRANSITION_START,[n.TRANSITION_LEAVE_APPROVE]:t.TRANSITION_LEAVE_APPROVE,[n.TRANSITION_ERROR]:t.TRANSITION_ERROR,[n.TRANSITION_CANCEL]:t.TRANSITION_CANCEL},xt=Object.keys(bt),F=`router.usePlugin`;function St(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 Ct=class t{#e=new Set;#t=new Set;#n;#r=e;#i=null;static validatePlugin(e){St(e)}static validateNoDuplicatePlugins(e,t){for(let n of e)if(t(n))throw Error(`[router.usePlugin] Plugin factory already registered. To re-register, first unsubscribe the existing plugin.`)}setDependencies(e){this.#n=e}setLimits(e){
|
|
2
|
+
// eslint-disable-next-line sonarjs/void-use -- @preserve: limits passed to validator via RouterInternals; void suppresses TS6133 until plugin implements validateCountThresholds
|
|
3
|
+
this.#r=e,this.#r}setValidatorGetter(e){this.#i=e}count(){return this.#e.size}use(...e){if(this.#i?.()?.plugins.validateCountThresholds(this.#e.size+e.length),e.length===1){let t=e[0],n=this.#o(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){h.error(F,`Error during cleanup:`,e)}}};return this.#t.add(i),i}let t=this.#a(e),n=[];try{for(let e of t){let t=this.#o(e);n.push({factory:e,cleanup:t})}}catch(e){for(let{cleanup:e}of n)try{e()}catch(e){h.error(F,`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){h.error(F,`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()}#a(e){let t=new Set;for(let n of e)t.has(n)?this.#i?.()?.plugins.warnBatchDuplicates(e):t.add(n);return t}#o(e){let n=this.#n.compileFactory(e);t.validatePlugin(n),this.#i?.()?.plugins.validatePluginKeys(n),Object.freeze(n);let r=[];for(let e of xt)e in n&&(typeof n[e]==`function`?(r.push(this.#n.addEventListener(bt[e],n[e])),e===`onStart`&&this.#n.canNavigate()&&this.#i?.()?.plugins.warnPluginAfterStart(e)):this.#i?.()?.plugins.warnPluginMethodType(e));return()=>{for(let e of r)e();typeof n.teardown==`function`&&n.teardown()}}};function wt(e){let t=()=>e;return()=>t}var Tt=class{#e=new Map;#t=new Map;#n=new Map;#r=new Map;#i=[this.#n,this.#r];#a=new Set;#o=new Set;#s=new Set;#c;#l=e;#u=null;setDependencies(e){this.#c=e}setLimits(e){
|
|
4
|
+
// eslint-disable-next-line sonarjs/void-use -- @preserve: Wave 3 validator reads limits via RouterInternals; void suppresses TS6133 until then
|
|
5
|
+
this.#l=e,this.#l}setValidatorGetter(e){this.#u=e}getHandlerCount(e){return e===`activate`?this.#t.size:this.#e.size}addCanActivate(e,t,n=!1){n?this.#o.add(e):this.#o.delete(e);let r=this.#t.has(e);this.#d(`activate`,e,t,this.#t,this.#r,`canActivate`,r)}addCanDeactivate(e,t,n=!1){n?this.#s.add(e):this.#s.delete(e);let r=this.#e.has(e);this.#d(`deactivate`,e,t,this.#e,this.#n,`canDeactivate`,r)}clearCanActivate(e){this.#t.delete(e),this.#r.delete(e),this.#o.delete(e)}clearCanDeactivate(e){this.#e.delete(e),this.#n.delete(e),this.#s.delete(e)}clearAll(){this.#t.clear(),this.#r.clear(),this.#e.clear(),this.#n.clear(),this.#o.clear(),this.#s.clear()}clearDefinitionGuards(){for(let e of this.#o)this.#t.delete(e),this.#r.delete(e);for(let e of this.#s)this.#e.delete(e),this.#n.delete(e);this.#o.clear(),this.#s.clear()}getFactories(){let e={},t={};for(let[t,n]of this.#e)e[t]=n;for(let[e,n]of this.#t)t[e]=n;return[e,t]}getFunctions(){return this.#i}canNavigateTo(e,t,n,r){for(let t of e)if(!this.#f(this.#n,t,n,r,`canNavigateTo`))return!1;for(let e of t)if(!this.#f(this.#r,e,n,r,`canNavigateTo`))return!1;return!0}#d(e,t,n,r,i,a,o){o?this.#u?.()?.lifecycle.warnOverwrite(t,e,a):this.#u?.()?.lifecycle.validateCountThresholds(r.size+1,a);let s=typeof n==`boolean`?wt(n):n;r.set(t,s),this.#a.add(t);try{let e=this.#c.compileFactory(s);if(typeof e!=`function`)throw TypeError(`[router.${a}] Factory must return a function, got ${typeof e}`);i.set(t,e)}catch(e){throw r.delete(t),e}finally{this.#a.delete(t)}}#f(e,t,n,r,i){let a=e.get(t);if(!a)return!0;try{let e=a(n,r);return typeof e==`boolean`?e:(this.#u?.()?.lifecycle.warnAsyncGuardSync(t,i),!1)}catch{return!1}}};function I(){return{decoders:Object.create(null),encoders:Object.create(null),defaultParams:Object.create(null),forwardMap:Object.create(null),forwardFnMap:Object.create(null)}}function Et(e,t){for(let n in e)if(e[n]!==t[n])return!1;return!0}function Dt(e,t,n){for(let r in e)if(!(r in n)&&e[r]!==t[r])return!1;return!0}function L(e){let t={name:e.name,path:e.path};return e.children&&(t.children=e.children.map(e=>L(e))),t}function Ot(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}.`)&&Ot(i.children,t,a))return!0}return!1}function kt(e,t){for(let n of Object.keys(e))t(n)&&delete e[n]}function At(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 jt(e,t,n){let r=ct(``,t,e),i=ut(n);return i.registerTree(r),{tree:r,matcher:i}}function R(e){let t=jt(e.definitions,e.rootPath,e.matcherOptions);e.tree=t.tree,e.matcher=t.matcher}function Mt(e){R(e),e.resolvedForwardMap=z(e.config)}function Nt(e){Pt(e),R(e)}function Pt(e){e.definitions.length=0,Object.assign(e.config,I()),e.resolvedForwardMap=Object.create(null),e.routeCustomFields=Object.create(null)}function z(e){let t=Object.create(null);for(let n of Object.keys(e.forwardMap))t[n]=At(n,e.forwardMap);return t}function Ft(e,t,n){if(e.canActivate){let n=typeof e.forwardTo==`string`?e.forwardTo:`[dynamic]`;h.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]`;h.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}".`)}if(typeof e.forwardTo==`function`){let n=e.forwardTo.constructor.name===`AsyncFunction`,r=e.forwardTo.toString().includes(`__awaiter`);if(n||r)throw TypeError(`forwardTo callback cannot be async for route "${t}". Async functions break matchPath/buildPath.`)}typeof e.forwardTo==`string`?n.forwardMap[t]=e.forwardTo:n.forwardFnMap[t]=e.forwardTo}function It(e,t,n,r,i,a,o){let s=new Set([`name`,`path`,`children`,`canActivate`,`canDeactivate`,`forwardTo`,`encodeParams`,`decodeParams`,`defaultParams`]),c=Object.fromEntries(Object.entries(e).filter(([e])=>!s.has(e)));Object.keys(c).length>0&&(r[t]=c),e.canActivate&&(o?o.addActivateGuard(t,e.canActivate):i.set(t,e.canActivate)),e.canDeactivate&&(o?o.addDeactivateGuard(t,e.canDeactivate):a.set(t,e.canDeactivate)),e.forwardTo&&Ft(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 B(e,t,n,r,i,a,o=``){for(let s of e){let e=o?`${o}.${s.name}`:s.name;It(s,e,t,n,r,i,a),s.children&&B(s.children,t,n,r,i,a,e)}}function Lt(e,t){let n=[],r=I(),i=Object.create(null),a=new Map,o=new Map;for(let t of e)n.push(L(t));let{tree:s,matcher:c}=jt(n,``,t);return B(e,r,i,a,o,void 0,``),{definitions:n,config:r,tree:s,matcher:c,resolvedForwardMap:z(r),routeCustomFields:i,rootPath:``,matcherOptions:t,depsStore:void 0,lifecycleNamespace:void 0,pendingCanActivate:a,pendingCanDeactivate:o,treeOperations:{commitTreeChanges:Mt,resetStore:Nt,nodeToDefinition:N}}}const V=[];Object.freeze(V);function Rt(e){let t=e.length,n=[];for(let r=t-1;r>=0;r--)n.push(e[r]);return n}function zt(e){let t=e.split(`.`),n=t.length,r=[t[0]],i=t[0].length;for(let a=1;a<n-1;a++)i+=1+t[a].length,r.push(e.slice(0,i));return r.push(e),r}function Bt(e){let t=typeof e;return t===`string`||t===`number`||t===`boolean`}function Vt(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(Bt(t)&&Bt(i)&&String(t)!==String(i))return!1}return!0}function Ht(e,t,n,r,i,a){for(let o=0;o<a;o++){let a=r[o];if(a!==i[o]||!Vt(a,e,t,n))return o}return a}const Ut=new Map;function H(e){let t=Ut.get(e);if(t)return t;let n=Wt(e);return Object.freeze(n),Ut.set(e,n),n}function Wt(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]:zt(e)}let U,W,G=null,Gt,Kt,K=null;function qt(e,t){if(!t)return{intersection:``,toActivate:H(e.name),toDeactivate:V};let n=_t(e),r=_t(t);if(!n&&!r)return{intersection:``,toActivate:H(e.name),toDeactivate:Rt(H(t.name))};let i=H(e.name),a=H(t.name),o=Math.min(a.length,i.length),s=Ht(n??r,e,t,i,a,o),c;if(s>=a.length)c=V;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 q(e,t){if(G!==null&&e===U&&t===W)return G;if(K!==null&&e===Gt&&t===Kt)return K;let n=qt(e,t);return Gt=U,Kt=W,K=G,U=e,W=t,G=n,n}function Jt(e){let t=[];for(let n of e)for(let e of n.paramMeta.urlParams)t.push(e);return t}function Yt(e){return e.at(-1)?.fullName??``}function Xt(e,t){return{name:t??Yt(e.segments),params:e.params,meta:e.meta}}var Zt=class{#e;#t;get#n(){return this.#e.depsStore}constructor(e=[],t){this.#e=Lt(e,t)}static shouldUpdateNode(e){return(t,n)=>{if(!(t&&typeof t==`object`&&`name`in t))throw TypeError(`[router.shouldUpdateNode] toState must be valid State object`);if(t.transition.reload||e===``&&!n)return!0;let{intersection:r,toActivate:i,toDeactivate:a}=q(t,n);return e===r||i.includes(e)?!0:a.includes(e)}}setDependencies(e){this.#e.depsStore=e;for(let[t,n]of this.#e.pendingCanActivate)e.addActivateGuard(t,n);this.#e.pendingCanActivate.clear();for(let[t,n]of this.#e.pendingCanDeactivate)e.addDeactivateGuard(t,n);this.#e.pendingCanDeactivate.clear()}setLifecycleNamespace(e){this.#e.lifecycleNamespace=e}setRootPath(e){this.#e.rootPath=e,R(this.#e)}hasRoute(e){return this.#e.matcher.hasRoute(e)}clearRoutes(){Nt(this.#e)}buildPath(e,t,n){if(e===i.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??{},a=typeof this.#e.config.encoders[e]==`function`?this.#e.config.encoders[e]({...r}):r;return this.#e.matcher.buildPath(e,a,this.#i(n))}matchPath(e,t){let n=t,r=this.#e.matcher.match(e);if(!r)return;let{name:i,params:a,meta:o}=Xt(r),s=typeof this.#e.config.decoders[i]==`function`?this.#e.config.decoders[i](a):a,{name:c,params:l}=this.#n.forwardState(i,s),u=e;if(n.rewritePathOnMatch){let e=typeof this.#e.config.encoders[c]==`function`?this.#e.config.encoders[c]({...l}):l,t=n.trailingSlash;u=this.#e.matcher.buildPath(c,e,{trailingSlash:t===`never`||t===`always`?t:void 0,queryParamsMode:n.queryParamsMode})}return this.#n.makeState(c,l,u,o)}forwardState(e,t){if(Object.hasOwn(this.#e.config.forwardFnMap,e)){let n=this.#r(e,t),r=this.#e.config.forwardFnMap[e],i=this.#a(e,r,t);return{name:i,params:this.#r(i,n)}}let n=this.#e.resolvedForwardMap[e]??e;if(n!==e&&Object.hasOwn(this.#e.config.forwardFnMap,n)){let r=this.#r(e,t),i=this.#e.config.forwardFnMap[n],a=this.#a(n,i,t);return{name:a,params:this.#r(a,r)}}if(n!==e){let r=this.#r(e,t);return{name:n,params:this.#r(n,r)}}return{name:e,params:this.#r(e,t)}}buildStateResolved(e,t){let n=this.#e.matcher.getSegmentsByName(e);if(n)return Xt({segments:n,params:t,meta:this.#e.matcher.getMetaByName(e)},e)}isActiveRoute(e,t={},n=!1,r=!0){let i=this.#n.getState();if(!i)return!1;let a=i.name;if(a!==e&&!a.startsWith(`${e}.`)&&!e.startsWith(`${a}.`))return!1;let s=this.#e.config.defaultParams[e];if(n||a===e){let n={name:e,params:s?{...s,...t}:t,path:``,transition:o,context:{}};return this.#n.areStatesEqual(n,i,r)}let c=i.params;return Et(t,c)?!s||Dt(s,c,t):!1}getMetaForState(e){return this.#e.matcher.hasRoute(e)?this.#e.matcher.getMetaByName(e):void 0}getUrlParams(e){let t=this.#e.matcher.getSegmentsByName(e);return t?Jt(t):[]}getStore(){return this.#e}#r(e,t){return Object.hasOwn(this.#e.config.defaultParams,e)?{...this.#e.config.defaultParams[e],...t}:t}#i(e){if(this.#t)return this.#t;let t=e?.trailingSlash;return this.#t=Object.freeze({trailingSlash:t===`never`||t===`always`?t:void 0,queryParamsMode:e?.queryParamsMode}),this.#t}#a(e,t,n){let r=new Set([e]),i=t(this.#n.getDependency,n),a=0;if(typeof i!=`string`)throw TypeError(`forwardTo callback must return a string, got ${typeof i}`);for(;a<100;){if(this.#e.matcher.getSegmentsByName(i)===void 0)throw Error(`Route "${i}" does not exist`);if(r.has(i)){let e=[...r,i].join(` → `);throw Error(`Circular forwardTo detected: ${e}`)}if(r.add(i),Object.hasOwn(this.#e.config.forwardFnMap,i)){let e=this.#e.config.forwardFnMap[i];i=e(this.#n.getDependency,n),a++;continue}let e=this.#e.config.forwardMap[i];if(e!==void 0){i=e,a++;continue}return i}throw Error(`forwardTo exceeds maximum depth of 100`)}};const Qt=new l(u.ROUTER_NOT_STARTED),$t=new l(u.ROUTE_NOT_FOUND),en=new l(u.SAME_STATES),tn=Promise.reject(Qt),nn=Promise.reject($t),J=Promise.reject(en);tn.catch(()=>{}),nn.catch(()=>{}),J.catch(()=>{});function rn(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.redirected!==void 0&&(a.redirected=t.redirected),Object.freeze(a)}function an({signal:e,...t}){return t}function on(e,t){let{toState:n,fromState:r,opts:a,toDeactivate:o,toActivate:s,intersection:c}=t;if(n.name!==i.UNKNOWN_ROUTE&&!e.hasRoute(n.name)){let t=new l(u.ROUTE_NOT_FOUND,{routeName:n.name});throw e.sendTransitionFail(n,r,t),t}if(r)for(let n of o)!s.includes(n)&&t.canDeactivateFunctions.has(n)&&e.clearCanDeactivate(n);n.transition=rn(r,a,o,s,c);let d=Object.freeze(n);e.setState(d);let f=a.signal===void 0?a:an(a);return e.sendTransitionDone(d,r,f),d}function sn(e,t,n,r){let i=t;i.code===u.TRANSITION_CANCELLED||i.code===u.ROUTE_NOT_FOUND||e.sendTransitionFail(n,r,i)}function Y(e,t,n){if(e instanceof DOMException&&e.name===`AbortError`)throw new l(u.TRANSITION_CANCELLED);cn(e,t,n)}function cn(e,t,n){throw e instanceof l?(e.setCode(t),e):new l(t,un(e,n))}const ln=new Set([`code`,`segment`,`path`,`redirect`]);function un(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))ln.has(n)||(t[n]=r);return{...n,...t}}return n}async function dn(e,t,n){let r;try{r=await e}catch(e){Y(e,t,n);return}if(!r)throw new l(t,{segment:n})}async function fn(e,t,n,r,i,a,o,s,c,d){await dn(c,n,d);for(let c=s;c<t.length;c++){if(!o())throw new l(u.TRANSITION_CANCELLED);let s=t[c],d=e.get(s);if(!d)continue;let f=!1;try{f=d(r,i,a)}catch(e){Y(e,n,s)}if(f instanceof Promise){await dn(f,n,s);continue}if(!f)throw new l(n,{segment:s})}}async function pn(e,t,n,r,i,a,o,s,c){if(await e,!s())throw new l(u.TRANSITION_CANCELLED);let d=c();if(d!==void 0&&(await d,!s()))throw new l(u.TRANSITION_CANCELLED);if(r){let e=X(t,n,u.CANNOT_ACTIVATE,i,a,o,s);if(e!==void 0&&await e,!s())throw new l(u.TRANSITION_CANCELLED)}}function mn(e,t,n,r,i,a,o,s,c,d,f){if(i){let i=X(e,n,u.CANNOT_DEACTIVATE,o,s,c,d);if(i!==void 0)return pn(i,t,r,a,o,s,c,d,f)}if(!d())throw new l(u.TRANSITION_CANCELLED);let p=f();if(p!==void 0)return hn(p,a?t:void 0,r,o,s,c,d);if(a)return X(t,r,u.CANNOT_ACTIVATE,o,s,c,d)}async function hn(e,t,n,r,i,a,o){if(await e,!o())throw new l(u.TRANSITION_CANCELLED);if(t!==void 0){let e=X(t,n,u.CANNOT_ACTIVATE,r,i,a,o);if(e!==void 0&&await e,!o())throw new l(u.TRANSITION_CANCELLED)}}function X(e,t,n,r,i,a,o){for(let[s,c]of t.entries()){if(!o())throw new l(u.TRANSITION_CANCELLED);let d=e.get(c);if(!d)continue;let f=!1;try{f=d(r,i,a)}catch(e){Y(e,n,c)}if(f instanceof Promise)return fn(e,t,n,r,i,a,o,s+1,f,c);if(!f)throw new l(n,{segment:c})}}const gn=[i.UNKNOWN_ROUTE];Object.freeze(gn);const _n={replace:!0};Object.freeze(_n);function vn(e,t){return t?.name===i.UNKNOWN_ROUTE&&!e.replace?{...e,replace:!0}:e}function yn(e,t,n){return!!e&&!t.reload&&!t.force&&e.path===n.path}var bn=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,tn;let a,o,s=!1,c=null;try{if(a=r.buildNavigateState(e,t),!a)return r.emitTransitionError(void 0,r.getState(),$t),this.lastSyncRejected=!0,nn;if(o=r.getState(),n=vn(n,o),yn(o,n,a))return r.emitTransitionError(a,o,en),this.lastSyncRejected=!0,J;this.#s(n.signal);let d=++this.#n;if(r.startTransition(a,o),s=!0,this.#n!==d)throw new l(u.TRANSITION_CANCELLED);let[f,p]=r.getLifecycleFunctions(),m=a.name===i.UNKNOWN_ROUTE,h=q(a,o),{toDeactivate:g,toActivate:_,intersection:v}=h,y=o&&!n.forceDeactivate&&g.length>0,b=!m&&_.length>0,x=f.size>0||p.size>0,S=a;if(!x){let e=this.#a(S,o,d,n,h,f);if(e!==void 0)return e}if(x){c=new AbortController,this.#t=c;let e=()=>this.#n===d&&r.isActive(),t=c.signal,i=mn(f,p,g,_,!!y,b,a,o,t,e,()=>{if(r.sendLeaveApprove(S,o),r.hasLeaveListeners())return r.awaitLeaveListeners(S,o,t)});if(i!==void 0)return this.#r(i,{toState:a,fromState:o,opts:n,toDeactivate:g,toActivate:_,intersection:v,canDeactivateFunctions:f},c,d);if(!e())throw new l(u.TRANSITION_CANCELLED);this.#o(c)}return this.lastSyncResolved=!0,Promise.resolve(on(r,{toState:a,fromState:o,opts:n,toDeactivate:g,toActivate:_,intersection:v,canDeactivateFunctions:f}))}catch(e){return this.#i(e,c,s,a,o),Promise.reject(e)}}navigateToDefault(e){let t=this.#e;if(!t.getOptions().defaultRoute)return Promise.reject(new l(u.ROUTE_NOT_FOUND,{routeName:`defaultRoute not configured`}));let{route:n,params:r}=t.resolveDefault();return n?this.navigate(n,r,e):Promise.reject(new l(u.ROUTE_NOT_FOUND,{routeName:`defaultRoute resolved to empty`}))}navigateToNotFound(e){this.#s();let t=this.#e.getState(),n=t?H(t.name).toReversed():[];Object.freeze(n);let r={deactivated:n,activated:gn,intersection:``};Object.freeze(r);let a={phase:`activating`,...t&&{from:t.name},reason:`success`,segments:r};Object.freeze(a);let o={name:i.UNKNOWN_ROUTE,params:c,path:e,transition:a,context:{}};return Object.freeze(o),this.#e.setState(o),this.#e.emitTransitionSuccess(o,t,_n),o}abortCurrentNavigation(){this.#t?.abort(new l(u.TRANSITION_CANCELLED)),this.#t=null}async#r(e,t,n,r){let i=this.#e,a=()=>this.#n===r&&!n.signal.aborted&&i.isActive();try{if(t.opts.signal){if(t.opts.signal.aborted)throw new l(u.TRANSITION_CANCELLED,{reason:t.opts.signal.reason});t.opts.signal.addEventListener(`abort`,()=>{n.abort(t.opts.signal?.reason)},{once:!0,signal:n.signal})}if(await e,!a())throw new l(u.TRANSITION_CANCELLED);return on(i,t)}catch(e){throw sn(i,e,t.toState,t.fromState),e}finally{this.#o(n)}}#i(e,t,n,r,i){t&&this.#o(t),n&&r&&sn(this.#e,e,r,i)}#a(e,t,n,r,i,a){let o=this.#e;if(o.sendLeaveApprove(e,t),o.hasLeaveListeners()){let s=new AbortController,c=o.awaitLeaveListeners(e,t,s.signal);if(c!==void 0)return this.#t=s,this.#r(c,{toState:e,fromState:t,opts:r,toDeactivate:i.toDeactivate,toActivate:i.toActivate,intersection:i.intersection,canDeactivateFunctions:a},s,n)}if(this.#n!==n)throw new l(u.TRANSITION_CANCELLED)}#o(e){e.abort(),this.#t===e&&(this.#t=null)}#s(e){if(this.#e.isTransitioning()&&(h.warn(`router.navigate`,`Concurrent navigation detected on shared router instance. For SSR, use cloneRouter() to create isolated instance per request.`),this.#t?.abort(new l(u.TRANSITION_CANCELLED)),this.#e.cancelNavigation()),e?.aborted)throw new l(u.TRANSITION_CANCELLED,{reason:e.reason})}};const xn={replace:!0};Object.freeze(xn);var Sn=class{#e;setDependencies(e){this.#e=e}async start(e){let t=this.#e,n=t.getOptions(),r=t.matchPath(e);if(!r&&!n.allowNotFound){let n=new l(u.ROUTE_NOT_FOUND,{path:e});throw t.emitTransitionError(void 0,void 0,n),n}return t.completeStart(),r?t.navigate(r.name,r.params,xn):t.navigateToNotFound(e)}stop(){this.#e.clearState()}};function Z(e){return e instanceof Error?e:Error(String(e))}function Cn(e,t){return Promise.allSettled(e).then(e=>{if(t!==void 0)throw Z(t);let n=e.find(e=>e.status===`rejected`);if(n!==void 0)throw Z(n.reason)})}var Q=class{#e;#t;#n=[];#r;#i;#a;#o;constructor(e){this.#e=e.routerFSM,this.#t=e.emitter,this.#r=void 0,this.#c()}static validateSubscribeListener(e){if(typeof e!=`function`)throw TypeError(`[router.subscribe] Expected a function. For Observable pattern use @real-router/rx package`)}static validateSubscribeLeaveListener(e){if(typeof e!=`function`)throw TypeError(`[router.subscribeLeave] Expected a function`)}emitRouterStart(){this.#t.emit(t.ROUTER_START)}emitRouterStop(){this.#t.emit(t.ROUTER_STOP)}emitTransitionStart(e,n){this.#t.emit(t.TRANSITION_START,e,n)}emitTransitionSuccess(e,n,r){this.#t.emit(t.TRANSITION_SUCCESS,e,n,r)}emitTransitionError(e,n,r){this.#t.emit(t.TRANSITION_ERROR,e,n,r)}emitTransitionCancel(e,n){this.#t.emit(t.TRANSITION_CANCEL,e,n)}emitTransitionLeaveApprove(e,n){this.#t.emit(t.TRANSITION_LEAVE_APPROVE,e,n)}sendStart(){this.#e.send(x.START)}sendStop(){this.#e.send(x.STOP)}sendDispose(){this.#e.send(x.DISPOSE)}sendStarted(){this.#e.send(x.STARTED)}sendNavigate(e,t){this.#r=e,this.#e.forceState(b.TRANSITION_STARTED),this.emitTransitionStart(e,t)}sendComplete(e,t,n={}){this.#e.forceState(b.READY),this.emitTransitionSuccess(e,t,n),this.#r===e&&(this.#r=void 0)}sendLeaveApprove(e,t){this.#e.forceState(b.LEAVE_APPROVED),this.emitTransitionLeaveApprove(e,t)}sendFail(e,t,n){let r=this.#r;this.#i=e,this.#a=t,this.#o=n,this.#e.send(x.FAIL),this.#r===r&&(this.#r=void 0)}sendFailSafe(e,t,n){this.isReady()?this.sendFail(e,t,n):this.emitTransitionError(e,t,n)}sendCancel(e,t){let n=this.#r;this.#i=e,this.#a=t,this.#e.send(x.CANCEL),this.#r===n&&(this.#r=void 0)}canBeginTransition(){return this.#e.canSend(x.NAVIGATE)}canStart(){return this.#e.canSend(x.START)}canCancel(){return this.#e.canSend(x.CANCEL)}isActive(){let e=this.#e.getState();return e!==b.IDLE&&e!==b.DISPOSED}isDisposed(){return this.#e.getState()===b.DISPOSED}isTransitioning(){let e=this.#e.getState();return e===b.TRANSITION_STARTED||e===b.LEAVE_APPROVED}isLeaveApproved(){return this.#e.getState()===b.LEAVE_APPROVED}isReady(){return this.#e.getState()===b.READY}getCurrentToState(){return this.#r}addEventListener(e,t){return this.#t.on(e,t)}subscribe(e){return this.#t.on(t.TRANSITION_SUCCESS,(t,n)=>{e({route:t,previousRoute:n})})}subscribeLeave(e){return this.#n.push(e),()=>{let t=this.#n.indexOf(e);t!==-1&&this.#n.splice(t,1)}}hasLeaveListeners(){return this.#n.length>0}awaitLeaveListeners(e,t,n){if(t===void 0)return;let r={route:t,nextRoute:e,signal:n},i,a;for(let e of this.#n)try{let t=e(r);t!==void 0&&typeof t.then==`function`&&(i??=[],i.push(t))}catch(e){a===void 0&&(a=e)}if(i===void 0){if(a!==void 0)throw Z(a);return}return Cn(i,a)}clearAll(){this.#t.clearAll(),this.#n.length=0}setLimits(e){this.#t.setLimits(e)}sendCancelIfPossible(e){let t=this.#r;!this.canCancel()||t===void 0||this.sendCancel(t,e)}#s(){this.emitTransitionError(this.#i,this.#a,this.#o)}#c(){let e=this.#e;e.on(b.STARTING,x.STARTED,()=>{this.emitRouterStart()}),e.on(b.READY,x.STOP,()=>{this.emitRouterStop()});let t=()=>{let e=this.#i;e!==void 0&&this.emitTransitionCancel(e,this.#a)};e.on(b.TRANSITION_STARTED,x.CANCEL,t),e.on(b.LEAVE_APPROVED,x.CANCEL,t),e.on(b.LEAVE_APPROVED,x.FAIL,()=>{this.#s()}),e.on(b.STARTING,x.FAIL,()=>{this.#s()}),e.on(b.READY,x.FAIL,()=>{this.#s()}),e.on(b.TRANSITION_STARTED,x.FAIL,()=>{this.#s()})}};const wn=new l(u.ROUTER_ALREADY_STARTED),Tn=new Set([`all`,`warn-error`,`error-only`]);function En(e){return typeof e==`string`&&Tn.has(e)}function Dn(e){return typeof e==`string`?`"${e}"`:typeof e==`object`?JSON.stringify(e):String(e)}function On(e){if(typeof e!=`object`||!e)throw TypeError(`Logger config must be an object`);let t=e;for(let e of Object.keys(t))if(e!==`level`&&e!==`callback`)throw TypeError(`Unknown logger config property: "${e}"`);if(`level`in t&&t.level!==void 0&&!En(t.level))throw TypeError(`Invalid logger level: ${Dn(t.level)}. Expected: "all" | "warn-error" | "error-only"`);if(`callback`in t&&t.callback!==void 0&&typeof t.callback!=`function`)throw TypeError(`Logger callback must be a function, got ${typeof t.callback}`);return!0}var kn=class{router;options;limits;dependenciesStore;state;routes;routeLifecycle;plugins;navigation;lifecycle;eventBus;constructor(e){this.router=e.router,this.options=e.options,this.limits=e.limits,this.dependenciesStore=e.dependenciesStore,this.state=e.state,this.routes=e.routes,this.routeLifecycle=e.routeLifecycle,this.plugins=e.plugins,this.navigation=e.navigation,this.lifecycle=e.lifecycle,this.eventBus=e.eventBus}wireLimits(){this.dependenciesStore.limits=this.limits,this.plugins.setLimits(this.limits),this.eventBus.setLimits({maxListeners:this.limits.maxListeners,warnListeners:this.limits.warnListeners,maxEventDepth:this.limits.maxEventDepth}),this.routeLifecycle.setLimits(this.limits)}wireRouteLifecycleDeps(){let e={compileFactory:this.createCompileFactory()};this.routeLifecycle.setDependencies(e),this.routeLifecycle.setValidatorGetter(()=>{try{return p(this.router).validator}catch{return null}})}wireRoutesDeps(){this.routes.setDependencies({addActivateGuard:(e,t)=>{this.routeLifecycle.addCanActivate(e,t,!0)},addDeactivateGuard:(e,t)=>{this.routeLifecycle.addCanDeactivate(e,t,!0)},makeState:(e,t,n,r)=>this.state.makeState(e,t,n,r),getState:()=>this.state.get(),areStatesEqual:(e,t,n)=>this.state.areStatesEqual(e,t,n),getDependency:e=>this.dependenciesStore.dependencies[e],forwardState:(e,t)=>{let n=p(this.router);return n.validator?.routes.validateStateBuilderArgs(e,t,`forwardState`),n.forwardState(e,t)}}),this.routes.setLifecycleNamespace(this.routeLifecycle)}wirePluginsDeps(){let e={addEventListener:(e,t)=>this.eventBus.addEventListener(e,t),canNavigate:()=>this.eventBus.canBeginTransition(),compileFactory:this.createCompileFactory()};this.plugins.setDependencies(e),this.plugins.setValidatorGetter(()=>{try{return p(this.router).validator}catch{return null}})}wireNavigationDeps(){this.navigation.setDependencies({getOptions:()=>this.options.get(),hasRoute:e=>this.routes.hasRoute(e),getState:()=>this.state.get(),setState:e=>{this.state.set(e)},buildNavigateState:(e,t)=>{let n=p(this.router);n.validator?.routes.validateStateBuilderArgs(e,t,`navigate`);let i=n.forwardState(e,t),a=i.name,o=r(i.params),s=this.routes.getMetaForState(a);if(s===void 0)return;let c=n.buildPath(a,o);return this.state.makeState(a,o,c,s,!0)},resolveDefault:()=>{let e=this.options.get();return{route:pt(e.defaultRoute,e=>this.dependenciesStore.dependencies[e]),params:pt(e.defaultParams,e=>this.dependenciesStore.dependencies[e])}},startTransition:(e,t)=>{this.eventBus.sendNavigate(e,t)},cancelNavigation:()=>{let e=this.eventBus.getCurrentToState();e!==void 0&&this.eventBus.sendCancel(e,this.state.get())},sendTransitionDone:(e,t,n)=>{this.eventBus.sendComplete(e,t,n)},sendTransitionFail:(e,t,n)=>{this.eventBus.sendFail(e,t,n)},emitTransitionError:(e,t,n)=>{this.eventBus.sendFailSafe(e,t,n)},emitTransitionSuccess:(e,t,n)=>{this.eventBus.emitTransitionSuccess(e,t,n)},sendLeaveApprove:(e,t)=>{this.eventBus.sendLeaveApprove(e,t)},canNavigate:()=>this.eventBus.canBeginTransition(),getLifecycleFunctions:()=>this.routeLifecycle.getFunctions(),isActive:()=>this.router.isActive(),isTransitioning:()=>this.eventBus.isTransitioning(),clearCanDeactivate:e=>{this.routeLifecycle.clearCanDeactivate(e)},hasLeaveListeners:()=>this.eventBus.hasLeaveListeners(),awaitLeaveListeners:(e,t,n)=>this.eventBus.awaitLeaveListeners(e,t,n)})}wireLifecycleDeps(){this.lifecycle.setDependencies({getOptions:()=>this.options.get(),navigate:(e,t,n)=>this.navigation.navigate(e,t,n),navigateToNotFound:e=>this.navigation.navigateToNotFound(e),clearState:()=>{this.state.set(void 0)},matchPath:e=>this.routes.matchPath(e,this.options.get()),completeStart:()=>{this.eventBus.sendStarted()},emitTransitionError:(e,t,n)=>{this.eventBus.sendFail(e,t,n)}})}wireStateDeps(){this.state.setDependencies({getDefaultParams:()=>this.routes.getStore().config.defaultParams,buildPath:(e,t)=>p(this.router).buildPath(e,t),getUrlParams:e=>this.routes.getUrlParams(e)})}createCompileFactory(){let{router:e,dependenciesStore:t}=this;return n=>n(e,e=>t.dependencies[e])}};function An(e){e.wireLimits(),e.wireRouteLifecycleDeps(),e.wireRoutesDeps(),e.wirePluginsDeps(),e.wireNavigationDeps(),e.wireLifecycleDeps(),e.wireStateDeps()}const jn=Object.freeze({});var Mn=class e{#e;#t;#n;#r;#i;#a;#o;#s;#c;#l;constructor(e=[],t={},n={}){t.logger&&On(t.logger)&&(h.configure(t.logger),delete t.logger),ht.validateOptionsIsObject(t),te(n),e.length>0&&C(e),this.#e=new ht(t),this.#t=a(t.limits),this.#n=ne(n),this.#r=new yt,this.#i=new Zt(e,Nn(this.#e.get())),this.#a=new Tt,this.#o=new Ct,this.#s=new bn,this.#c=new Sn,this.#l=new Q({routerFSM:ee(),emitter:new y({onListenerError:(e,t)=>{h.error(`Router`,`Error in listener for ${e}:`,t)},onListenerWarn:(e,t)=>{h.warn(`router.addEventListener`,`Event "${e}" has ${t} listeners — possible memory leak`)}})}),An(new kn({router:this,options:this.#e,limits:this.#t,dependenciesStore:this.#n,state:this.#r,routes:this.#i,routeLifecycle:this.#a,plugins:this.#o,navigation:this.#s,lifecycle:this.#c,eventBus:this.#l}));let r=new Map;d(this,{makeState:(e,t,n,r)=>this.#r.makeState(e,t,n,r),forwardState:f(`forwardState`,(e,t)=>this.#i.forwardState(e,t),r),buildStateResolved:(e,t)=>this.#i.buildStateResolved(e,t),matchPath:(e,t)=>this.#i.matchPath(e,t),getOptions:()=>this.#e.get(),addEventListener:(e,t)=>this.#l.addEventListener(e,t),buildPath:f(`buildPath`,(e,t)=>this.#i.buildPath(e,t??c,this.#e.get()),r),start:m(`start`,e=>this.#c.start(e),r),interceptors:r,setRootPath:e=>{this.#i.setRootPath(e)},getRootPath:()=>this.#i.getStore().rootPath,getTree:()=>this.#i.getStore().tree,isDisposed:()=>this.#l.isDisposed(),validator:null,dependenciesGetStore:()=>this.#n,cloneOptions:()=>({...this.#e.get()}),cloneDependencies:()=>({...this.#n.dependencies}),getLifecycleFactories:()=>this.#a.getFactories(),getPluginFactories:()=>this.#o.getAll(),routeGetStore:()=>this.#i.getStore(),getStateName:()=>this.#r.get()?.name,isTransitioning:()=>this.#l.isTransitioning(),clearState:()=>{this.#r.set(void 0)},setState:e=>{this.#r.set(e)},routerExtensions:[],contextClaimRecords:new Set}),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)}isActiveRoute(e,t,n,r){return p(this).validator?.routes.validateIsActiveRouteArgs(e,t,n,r),p(this).validator?.routes.validateRouteName(e,`isActiveRoute`),e===``?(h.warn(`real-router`,`isActiveRoute("") called with empty string. Root node is not considered a parent of any route.`),!1):this.#i.isActiveRoute(e,t,n,r)}buildPath(e,t){let n=p(this);return n.validator?.routes.validateBuildPathArgs(e),n.validator?.navigation.validateParams(t,`buildPath`),n.buildPath(e,r(t))}getState(){return this.#r.get()}getPreviousState(){return this.#r.getPrevious()}areStatesEqual(e,t,n=!0){return p(this).validator?.state.validateAreStatesEqualArgs(e,t,n),this.#r.areStatesEqual(e,t,n)}shouldUpdateNode(e){return p(this).validator?.routes.validateShouldUpdateNodeArgs(e),Zt.shouldUpdateNode(e)}isActive(){return this.#l.isActive()}start(t){if(!this.#l.canStart())return Promise.reject(wn);p(this).validator?.navigation.validateStartArgs(t),this.#l.sendStart();let n=p(this).start(t).catch(e=>{throw this.#l.isReady()&&(this.#c.stop(),this.#l.sendStop()),e});return e.#d(n),n}stop(){return this.#s.abortCurrentNavigation(),this.#l.sendCancelIfPossible(this.#r.get()),!this.#l.isReady()&&!this.#l.isTransitioning()?this:(this.#c.stop(),this.#l.sendStop(),this)}dispose(){if(this.#l.isDisposed())return;this.#s.abortCurrentNavigation(),this.#l.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=p(this);for(let t of e.routerExtensions)for(let e of t.keys)delete this[e];e.routerExtensions.length=0,e.contextClaimRecords.clear(),this.#i.clearRoutes(),this.#a.clearAll(),this.#r.reset(),this.#n.dependencies=Object.create(null),this.#f()}canNavigateTo(e,t){let n=p(this);if(n.validator?.routes.validateRouteName(e,`canNavigateTo`),n.validator?.navigation.validateParams(t,`canNavigateTo`),!this.#i.hasRoute(e))return!1;let{name:r,params:i}=n.forwardState(e,t??{}),a=this.#r.makeState(r,i),o=this.#r.get(),{toDeactivate:s,toActivate:c}=q(a,o);return this.#a.canNavigateTo(s,c,a,o)}usePlugin(...e){let t=e.filter(Boolean);if(t.length===0)return()=>{};let n=p(this);n.validator?.plugins.validatePluginLimit(this.#o.count(),this.#t);for(let e of t)n.validator?.plugins.validateNoDuplicatePlugins(e,this.#o.getAll());return this.#o.use(...t)}subscribe(e){return Q.validateSubscribeListener(e),this.#l.subscribe(e)}subscribeLeave(e){return Q.validateSubscribeLeaveListener(e),this.#l.subscribeLeave(e)}isLeaveApproved(){return this.#l.isLeaveApproved()}navigate(t,n,r){let i=p(this);i.validator?.navigation.validateNavigateArgs(t),i.validator?.navigation.validateParams(n,`navigate`);let a=r??jn;i.validator?.navigation.validateNavigationOptions(a,`navigate`);let o=this.#s.navigate(t,n??c,a);return this.#s.lastSyncResolved?this.#s.lastSyncResolved=!1:this.#s.lastSyncRejected?this.#s.lastSyncRejected=!1:e.#d(o),o}navigateToDefault(t){let n=p(this);n.validator?.navigation.validateNavigateToDefaultArgs(t);let r=t??jn;n.validator?.navigation.validateNavigationOptions(r,`navigateToDefault`);let i=this.#s.navigateToDefault(r);return this.#s.lastSyncResolved?this.#s.lastSyncResolved=!1:this.#s.lastSyncRejected?this.#s.lastSyncRejected=!1:e.#d(i),i}navigateToNotFound(e){if(!this.#l.isActive())throw new l(u.ROUTER_NOT_STARTED);if(e!==void 0&&typeof e!=`string`)throw TypeError(`[router.navigateToNotFound] path must be a string, got ${typeof e}`);let t=e??this.#r.get().path;return this.#s.navigateToNotFound(t)}static#u=e=>{e instanceof l&&(e.code===u.SAME_STATES||e.code===u.TRANSITION_CANCELLED||e.code===u.ROUTER_NOT_STARTED||e.code===u.ROUTE_NOT_FOUND)||h.error(`router.navigate`,`Unexpected navigation error`,e)};static#d(t){t.catch(e.#u)}#f(){this.navigate=$,this.navigateToDefault=$,this.navigateToNotFound=$,this.start=$,this.stop=$,this.usePlugin=$,this.subscribe=$,this.subscribeLeave=$,this.canNavigateTo=$}};function $(){throw new l(u.ROUTER_DISPOSED)}function Nn(e){return{strictTrailingSlash:e.trailingSlash===`strict`,strictQueryParams:e.queryParamsMode===`strict`,urlParamsEncoding:e.urlParamsEncoding,queryParams:e.queryParams}}export{At as a,L as c,B as i,lt as l,Pt as n,kt as o,z as r,Ot as s,Mn as t,C as u};
|
|
6
|
+
//# sourceMappingURL=Router-DXGRP4Vr.mjs.map
|