@argon-router/core 0.5.0 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs CHANGED
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const u=require("effector"),ye=require("patronum");function W(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(a){return Object.getOwnPropertyDescriptor(e,a).enumerable})),r.push.apply(r,n)}return r}function L(e){for(var t=1;t<arguments.length;t++){var r=arguments[t]!=null?arguments[t]:{};t%2?W(Object(r),!0).forEach(function(n){ge(e,n,r[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):W(Object(r)).forEach(function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(r,n))})}return e}function ge(e,t,r){return(t=he(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function he(e){var t=be(e,"string");return typeof t=="symbol"?t:t+""}function be(e,t){if(typeof e!="object"||!e)return e;var r=e[Symbol.toPrimitive];if(r!==void 0){var n=r.call(e,t);if(typeof n!="object")return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}function we(e){let t;const r=u.createEffect(()=>{var g;return(g=t)===null||g===void 0?void 0:g()},{name:"waitForAsyncBundleFx",sid:"tw7mq7"}),n=u.createEffect(async()=>{for(const A of(g=e.beforeOpen)!==null&&g!==void 0?g:[]){var g;await A()}},{name:"beforeOpenFx",sid:"ls74w9"}),a=u.createEffect(async g=>{await r(),await n();const A=e.parent;return A&&await A.internal.openFx(L(L({},g??{params:{}}),{},{historyIgnore:!0})),g},{name:"openFx",sid:"-hz9h5i"}),f=u.createStore({},{name:"$params",sid:"rstqrf"}),s=u.createStore(!1,{name:"$isOpened",sid:"-zgx6q9"}),l=a.pending,O=u.createEvent({name:"open",sid:"-cby6lj"}),F=u.createEvent({name:"close",sid:"7uwhl1"}),j=u.createEvent({name:"opened",sid:"44ryfn"}),k=u.createEvent({name:"openedOnServer",sid:"-prk6y1"}),P=u.createEvent({name:"openedOnClient",sid:"-fw2mlz"}),v=u.createEvent({name:"closed",sid:"10jxi5"});u.sample({and:[{clock:O,target:a}],or:{sid:"t7vx9v"}});const E={};return u.sample({and:[{clock:a.doneData,fn:g=>g&&"params"in g?L({},g.params):E,target:f}],or:{sid:"tna5vz"}}),u.split({and:[{source:a.doneData,match:()=>typeof window>"u"?"server":"client",cases:{server:k,client:P}}],or:{sid:"u5fdgw"}}),u.sample({and:[{clock:[P,k],target:j}],or:{sid:"ylqojg"}}),u.sample({and:[{clock:j,fn:()=>!0,target:s}],or:{sid:"yohni9"}}),u.sample({and:[{clock:F,target:v}],or:{sid:"z3c3j0"}}),u.sample({and:[{clock:v,fn:()=>!1,target:s}],or:{sid:"z632ht"}}),{$params:f,$isOpened:s,$isPending:l,open:O,closed:v,opened:j,openedOnClient:P,openedOnServer:k,internal:L({close:F,openFx:a,setAsyncImport:g=>t=g},e),"@@unitShape":()=>({params:f,isPending:l,isOpened:s,onOpen:O})}}var C={},G;function Oe(){if(G)return C;G=1,Object.defineProperty(C,"__esModule",{value:!0}),C.TokenData=void 0,C.parse=k,C.compile=P,C.match=g,C.pathToRegexp=A,C.stringify=x;const e="/",t=c=>c,r=/^[$_\p{ID_Start}]$/u,n=/^[$\u200c\u200d\p{ID_Continue}]$/u,a="https://git.new/pathToRegexpError",f={"{":"{","}":"}","(":"(",")":")","[":"[","]":"]","+":"+","?":"?","!":"!"};function s(c){return c.replace(/[{}()\[\]+?!:*]/g,"\\$&")}function l(c){return c.replace(/[.+*?^${}()[\]|/\\]/g,"\\$&")}function*O(c){const i=[...c];let o=0;function m(){let d="";if(r.test(i[++o]))for(d+=i[o];n.test(i[++o]);)d+=i[o];else if(i[o]==='"'){let p=o;for(;o<i.length;){if(i[++o]==='"'){o++,p=0;break}i[o]==="\\"?d+=i[++o]:d+=i[o]}if(p)throw new TypeError(`Unterminated quote at ${p}: ${a}`)}if(!d)throw new TypeError(`Missing parameter name at ${o}: ${a}`);return d}for(;o<i.length;){const d=i[o],p=f[d];if(p)yield{type:p,index:o++,value:d};else if(d==="\\")yield{type:"ESCAPED",index:o++,value:i[o++]};else if(d===":"){const $=m();yield{type:"PARAM",index:o,value:$}}else if(d==="*"){const $=m();yield{type:"WILDCARD",index:o,value:$}}else yield{type:"CHAR",index:o,value:i[o++]}}return{type:"END",index:o,value:""}}class F{constructor(i){this.tokens=i}peek(){if(!this._peek){const i=this.tokens.next();this._peek=i.value}return this._peek}tryConsume(i){const o=this.peek();if(o.type===i)return this._peek=void 0,o.value}consume(i){const o=this.tryConsume(i);if(o!==void 0)return o;const{type:m,index:d}=this.peek();throw new TypeError(`Unexpected ${m} at ${d}, expected ${i}: ${a}`)}text(){let i="",o;for(;o=this.tryConsume("CHAR")||this.tryConsume("ESCAPED");)i+=o;return i}}class j{constructor(i){this.tokens=i}}C.TokenData=j;function k(c,i={}){const{encodePath:o=t}=i,m=new F(O(c));function d($){const h=[];for(;;){const R=m.text();R&&h.push({type:"text",value:o(R)});const N=m.tryConsume("PARAM");if(N){h.push({type:"param",name:N});continue}const M=m.tryConsume("WILDCARD");if(M){h.push({type:"wildcard",name:M});continue}if(m.tryConsume("{")){h.push({type:"group",tokens:d("}")});continue}return m.consume($),h}}const p=d("END");return new j(p)}function P(c,i={}){const{encode:o=encodeURIComponent,delimiter:m=e}=i,d=c instanceof j?c:k(c,i),p=v(d.tokens,m,o);return function(h={}){const[R,...N]=p(h);if(N.length)throw new TypeError(`Missing parameters: ${N.join(", ")}`);return R}}function v(c,i,o){const m=c.map(d=>E(d,i,o));return d=>{const p=[""];for(const $ of m){const[h,...R]=$(d);p[0]+=h,p.push(...R)}return p}}function E(c,i,o){if(c.type==="text")return()=>[c.value];if(c.type==="group"){const d=v(c.tokens,i,o);return p=>{const[$,...h]=d(p);return h.length?[""]:[$]}}const m=o||t;return c.type==="wildcard"&&o!==!1?d=>{const p=d[c.name];if(p==null)return["",c.name];if(!Array.isArray(p)||p.length===0)throw new TypeError(`Expected "${c.name}" to be a non-empty array`);return[p.map(($,h)=>{if(typeof $!="string")throw new TypeError(`Expected "${c.name}/${h}" to be a string`);return m($)}).join(i)]}:d=>{const p=d[c.name];if(p==null)return["",c.name];if(typeof p!="string")throw new TypeError(`Expected "${c.name}" to be a string`);return[m(p)]}}function g(c,i={}){const{decode:o=decodeURIComponent,delimiter:m=e}=i,{regexp:d,keys:p}=A(c,i),$=p.map(h=>o===!1?t:h.type==="param"?o:R=>R.split(m).map(o));return function(R){const N=d.exec(R);if(!N)return!1;const M=N[0],_=Object.create(null);for(let q=1;q<N.length;q++){if(N[q]===void 0)continue;const z=p[q-1],B=$[q-1];_[z.name]=B(N[q])}return{path:M,params:_}}}function A(c,i={}){const{delimiter:o=e,end:m=!0,sensitive:d=!1,trailing:p=!0}=i,$=[],h=[],R=d?"":"i",M=(Array.isArray(c)?c:[c]).map(z=>z instanceof j?z:k(z,i));for(const{tokens:z}of M)for(const B of b(z,0,[])){const me=w(B,o,$);h.push(me)}let _=`^(?:${h.join("|")})`;return p&&(_+=`(?:${l(o)}$)?`),_+=m?"$":`(?=${l(o)}|$)`,{regexp:new RegExp(_,R),keys:$}}function*b(c,i,o){if(i===c.length)return yield o;const m=c[i];if(m.type==="group"){const d=o.slice();for(const p of b(m.tokens,0,d))yield*b(c,i+1,p)}else o.push(m);yield*b(c,i+1,o)}function w(c,i,o){let m="",d="",p=!0;for(let $=0;$<c.length;$++){const h=c[$];if(h.type==="text"){m+=l(h.value),d+=h.value,p||(p=h.value.includes(i));continue}if(h.type==="param"||h.type==="wildcard"){if(!p&&!d)throw new TypeError(`Missing text after "${h.name}": ${a}`);h.type==="param"?m+=`(${y(i,p?"":d)}+)`:m+="([\\s\\S]+)",o.push(h),d="",p=!1;continue}}return m}function y(c,i){return i.length<2?c.length<2?`[^${l(c+i)}]`:`(?:(?!${l(c)})[^${l(i)}])`:c.length<2?`(?:(?!${l(i)})[^${l(c)}])`:`(?:(?!${l(i)}|${l(c)})[\\s\\S])`}function x(c){return c.tokens.map(function i(o,m,d){if(o.type==="text")return s(o.value);if(o.type==="group")return`{${o.tokens.map(i).join("")}}`;const $=U(o.name)&&I(d[m+1])?o.name:JSON.stringify(o.name);if(o.type==="param")return`:${$}`;if(o.type==="wildcard")return`*${$}`;throw new TypeError(`Unexpected token: ${o}`)}).join("")}function U(c){const[i,...o]=c;return r.test(i)?o.every(m=>n.test(m)):!1}function I(c){return(c==null?void 0:c.type)!=="text"?!0:!n.test(c.value[0])}return C}var X=Oe();const $e=Symbol("any"),xe=Symbol("number"),Se=Symbol("string"),ve=Symbol("array"),Ee=Symbol("boolean"),D={any:$e,number:xe,string:Se,array:ve,boolean:Ee};function Y(e,t){for(const r of e)if(t.includes(r))return!0;return!1}function Z(e,t){for(const r in t){const n=t[r];if(Array.isArray(n)&&(!e[r]||JSON.stringify(n)!==e[r]))return!1;switch(typeof n){case"number":{if(!e[r]||n.toString()!==e[r])return!1;break}case"object":{if(!e[r]||JSON.stringify(n)!==e[r])return!1;break}case"string":{if(!e[r]||n!==e[r])return!1;break}case"boolean":{if(!e[r]||!["0","1","false","true"].includes(e[r]))return!1;break}}switch(n){case D.any:{if(!e[r])return!1;break}case D.string:{if(!e[r]||Array.isArray(e[r]))return!1;break}case D.array:{if(!e[r]||!Array.isArray(e[r]))return!1;break}case D.number:{if(!e[r]||Array.isArray(e[r])||isNaN(parseInt(e[r]))&&isNaN(parseFloat(e[r])))return!1;break}case D.boolean:{if(!e[r]||Array.isArray(e[r])||!["0","1","false","true"].includes(e[r]))return!1;break}}}return!0}function Fe(e,t){const r={};for(const n in t){const a=t[n],f=e[n];if(Array.isArray(a)){const s=e[n];r[n]=s;continue}switch(typeof a){case"number":{r[n]=isNaN(parseInt(f))?parseFloat(f):parseInt(f);break}case"object":{r[n]=JSON.parse(f);break}case"string":r[n]=f;case"boolean":{r[n]=f==="1"||f==="true";break}}switch(a){case D.any:case D.string:case D.array:{r[n]=e[n];break}case D.number:{const s=e[n];r[n]=isNaN(parseInt(s))?parseFloat(s):parseInt(s);break}case D.boolean:{const s=e[n];r[n]=s==="1"||s==="true";break}}}return r}function je(e){let{$activeRoutes:t,$path:r,$query:n,navigateFx:a}=e;return f=>{const{parameters:s,forRoutes:l}=f,O=u.createStore(!1,{name:"$entered",sid:"jh7pkx"}),F=u.createEvent({name:"entered",sid:"-savym4"}),j=u.createEvent({name:"exited",sid:"m5ggn3"}),k=u.createEvent({name:"exit",sid:"-bgcxp1"}),P=u.createEvent({name:"changeEntered",sid:"-2ei1v0"});return u.sample({and:[{clock:P,target:O}],or:{sid:"-hckvl5"}}),u.sample({and:[{source:{activeRoutes:t,query:n},filter:v=>{let{activeRoutes:E,query:g}=v;return(!l||Y(l,E))&&Z(g,s)},fn:v=>{let{query:E}=v;return Fe(E,s)},target:[F,P.prepend(()=>!0)]}],or:{sid:"-h9twmc"}}),u.sample({and:[{source:{activeRoutes:t,query:n,entered:O},filter:v=>{let{activeRoutes:E,query:g,entered:A}=v;return A&&!((!l||Y(l,E))&&Z(g,s))},target:[j.prepend(()=>{}),P.prepend(()=>!1)]}],or:{sid:"-gtc2ti"}}),u.sample({and:[{clock:k,source:{path:r,query:n},fn:(v,E)=>{let{path:g,query:A}=v;if(E&&E.ignoreParams){const b={};for(const w of E.ignoreParams)A[w]&&(b[w]=A[w]);return{query:b,path:g}}return{query:{},path:g}},target:a}],or:{sid:"-fyjlla"}}),{entered:F,exited:j,exit:k}}}const se="%[a-f0-9]{2}",ee=new RegExp("("+se+")|([^%]+?)","gi"),re=new RegExp("("+se+")+","gi");function V(e,t){try{return[decodeURIComponent(e.join(""))]}catch{}if(e.length===1)return e;t=t||1;const r=e.slice(0,t),n=e.slice(t);return Array.prototype.concat.call([],V(r),V(n))}function ke(e){try{return decodeURIComponent(e)}catch{let t=e.match(ee)||[];for(let r=1;r<t.length;r++)e=V(t,r).join(""),t=e.match(ee)||[];return e}}function Pe(e){const t={"%FE%FF":"��","%FF%FE":"��"};let r=re.exec(e);for(;r;){try{t[r[0]]=decodeURIComponent(r[0])}catch{const a=ke(r[0]);a!==r[0]&&(t[r[0]]=a)}r=re.exec(e)}t["%C2"]="�";const n=Object.keys(t);for(const a of n)e=e.replace(new RegExp(a,"g"),t[a]);return e}function Ae(e){if(typeof e!="string")throw new TypeError("Expected `encodedURI` to be of type `string`, got `"+typeof e+"`");try{return decodeURIComponent(e)}catch{return Pe(e)}}function Re(e,t){const r={};if(Array.isArray(t))for(const n of t){const a=Object.getOwnPropertyDescriptor(e,n);a!=null&&a.enumerable&&Object.defineProperty(r,n,a)}else for(const n of Reflect.ownKeys(e)){const a=Object.getOwnPropertyDescriptor(e,n);if(a.enumerable){const f=e[n];t(n,f,e)&&Object.defineProperty(r,n,a)}}return r}function oe(e,t){if(!(typeof e=="string"&&typeof t=="string"))throw new TypeError("Expected the arguments to be of type `string`");if(e===""||t==="")return[];const r=e.indexOf(t);return r===-1?[]:[e.slice(0,r),e.slice(r+t.length)]}const Ne=e=>e==null,De=e=>encodeURIComponent(e).replaceAll(/[!'()*]/g,t=>`%${t.charCodeAt(0).toString(16).toUpperCase()}`),K=Symbol("encodeFragmentIdentifier");function Ie(e){switch(e.arrayFormat){case"index":return t=>(r,n)=>{const a=r.length;return n===void 0||e.skipNull&&n===null||e.skipEmptyString&&n===""?r:n===null?[...r,[S(t,e),"[",a,"]"].join("")]:[...r,[S(t,e),"[",S(a,e),"]=",S(n,e)].join("")]};case"bracket":return t=>(r,n)=>n===void 0||e.skipNull&&n===null||e.skipEmptyString&&n===""?r:n===null?[...r,[S(t,e),"[]"].join("")]:[...r,[S(t,e),"[]=",S(n,e)].join("")];case"colon-list-separator":return t=>(r,n)=>n===void 0||e.skipNull&&n===null||e.skipEmptyString&&n===""?r:n===null?[...r,[S(t,e),":list="].join("")]:[...r,[S(t,e),":list=",S(n,e)].join("")];case"comma":case"separator":case"bracket-separator":{const t=e.arrayFormat==="bracket-separator"?"[]=":"=";return r=>(n,a)=>a===void 0||e.skipNull&&a===null||e.skipEmptyString&&a===""?n:(a=a===null?"":a,n.length===0?[[S(r,e),t,S(a,e)].join("")]:[[n,S(a,e)].join(e.arrayFormatSeparator)])}default:return t=>(r,n)=>n===void 0||e.skipNull&&n===null||e.skipEmptyString&&n===""?r:n===null?[...r,S(t,e)]:[...r,[S(t,e),"=",S(n,e)].join("")]}}function Ce(e){let t;switch(e.arrayFormat){case"index":return(r,n,a)=>{if(t=/\[(\d*)]$/.exec(r),r=r.replace(/\[\d*]$/,""),!t){a[r]=n;return}a[r]===void 0&&(a[r]={}),a[r][t[1]]=n};case"bracket":return(r,n,a)=>{if(t=/(\[])$/.exec(r),r=r.replace(/\[]$/,""),!t){a[r]=n;return}if(a[r]===void 0){a[r]=[n];return}a[r]=[...a[r],n]};case"colon-list-separator":return(r,n,a)=>{if(t=/(:list)$/.exec(r),r=r.replace(/:list$/,""),!t){a[r]=n;return}if(a[r]===void 0){a[r]=[n];return}a[r]=[...a[r],n]};case"comma":case"separator":return(r,n,a)=>{const f=typeof n=="string"&&n.includes(e.arrayFormatSeparator),s=typeof n=="string"&&!f&&T(n,e).includes(e.arrayFormatSeparator);n=s?T(n,e):n;const l=f||s?n.split(e.arrayFormatSeparator).map(O=>T(O,e)):n===null?n:T(n,e);a[r]=l};case"bracket-separator":return(r,n,a)=>{const f=/(\[])$/.test(r);if(r=r.replace(/\[]$/,""),!f){a[r]=n&&T(n,e);return}const s=n===null?[]:T(n,e).split(e.arrayFormatSeparator);if(a[r]===void 0){a[r]=s;return}a[r]=[...a[r],...s]};default:return(r,n,a)=>{if(a[r]===void 0){a[r]=n;return}a[r]=[...[a[r]].flat(),n]}}}function ie(e){if(typeof e!="string"||e.length!==1)throw new TypeError("arrayFormatSeparator must be single character string")}function S(e,t){return t.encode?t.strict?De(e):encodeURIComponent(e):e}function T(e,t){return t.decode?Ae(e):e}function ce(e){return Array.isArray(e)?e.sort():typeof e=="object"?ce(Object.keys(e)).sort((t,r)=>Number(t)-Number(r)).map(t=>e[t]):e}function ue(e){const t=e.indexOf("#");return t!==-1&&(e=e.slice(0,t)),e}function Te(e){let t="";const r=e.indexOf("#");return r!==-1&&(t=e.slice(r)),t}function te(e,t,r){return r==="string"&&typeof e=="string"?e:typeof r=="function"&&typeof e=="string"?r(e):t.parseBooleans&&e!==null&&(e.toLowerCase()==="true"||e.toLowerCase()==="false")?e.toLowerCase()==="true":r==="number"&&!Number.isNaN(Number(e))&&typeof e=="string"&&e.trim()!==""||t.parseNumbers&&!Number.isNaN(Number(e))&&typeof e=="string"&&e.trim()!==""?Number(e):e}function J(e){e=ue(e);const t=e.indexOf("?");return t===-1?"":e.slice(t+1)}function Q(e,t){t={decode:!0,sort:!0,arrayFormat:"none",arrayFormatSeparator:",",parseNumbers:!1,parseBooleans:!1,types:Object.create(null),...t},ie(t.arrayFormatSeparator);const r=Ce(t),n=Object.create(null);if(typeof e!="string"||(e=e.trim().replace(/^[?#&]/,""),!e))return n;for(const a of e.split("&")){if(a==="")continue;const f=t.decode?a.replaceAll("+"," "):a;let[s,l]=oe(f,"=");s===void 0&&(s=f),l=l===void 0?null:["comma","separator","bracket-separator"].includes(t.arrayFormat)?l:T(l,t),r(T(s,t),l,n)}for(const[a,f]of Object.entries(n))if(typeof f=="object"&&f!==null&&t.types[a]!=="string")for(const[s,l]of Object.entries(f)){const O=t.types[a]?t.types[a].replace("[]",""):void 0;f[s]=te(l,t,O)}else typeof f=="object"&&f!==null&&t.types[a]==="string"?n[a]=Object.values(f).join(t.arrayFormatSeparator):n[a]=te(f,t,t.types[a]);return t.sort===!1?n:(t.sort===!0?Object.keys(n).sort():Object.keys(n).sort(t.sort)).reduce((a,f)=>{const s=n[f];return a[f]=s&&typeof s=="object"&&!Array.isArray(s)?ce(s):s,a},Object.create(null))}function fe(e,t){if(!e)return"";t={encode:!0,strict:!0,arrayFormat:"none",arrayFormatSeparator:",",...t},ie(t.arrayFormatSeparator);const r=s=>t.skipNull&&Ne(e[s])||t.skipEmptyString&&e[s]==="",n=Ie(t),a={};for(const[s,l]of Object.entries(e))r(s)||(a[s]=l);const f=Object.keys(a);return t.sort!==!1&&f.sort(t.sort),f.map(s=>{const l=e[s];return l===void 0?"":l===null?S(s,t):Array.isArray(l)?l.length===0&&t.arrayFormat==="bracket-separator"?S(s,t)+"[]":l.reduce(n(s),[]).join("&"):S(s,t)+"="+S(l,t)}).filter(s=>s.length>0).join("&")}function le(e,t){var a;t={decode:!0,...t};let[r,n]=oe(e,"#");return r===void 0&&(r=e),{url:((a=r==null?void 0:r.split("?"))==null?void 0:a[0])??"",query:Q(J(e),t),...t&&t.parseFragmentIdentifier&&n?{fragmentIdentifier:T(n,t)}:{}}}function de(e,t){t={encode:!0,strict:!0,[K]:!0,...t};const r=ue(e.url).split("?")[0]||"",n=J(e.url),a={...Q(n,{sort:!1}),...e.query};let f=fe(a,t);f&&(f=`?${f}`);let s=Te(e.url);if(typeof e.fragmentIdentifier=="string"){const l=new URL(r);l.hash=e.fragmentIdentifier,s=t[K]?l.hash:`#${e.fragmentIdentifier}`}return`${r}${f}${s}`}function pe(e,t,r){r={parseFragmentIdentifier:!0,[K]:!1,...r};const{url:n,query:a,fragmentIdentifier:f}=le(e,r);return de({url:n,query:Re(a,t),fragmentIdentifier:f},r)}function Ue(e,t,r){const n=Array.isArray(t)?a=>!t.includes(a):(a,f)=>!t(a,f);return pe(e,n,r)}const H=Object.freeze(Object.defineProperty({__proto__:null,exclude:Ue,extract:J,parse:Q,parseUrl:le,pick:pe,stringify:fe,stringifyUrl:de},Symbol.toStringTag,{value:"Module"}));function ne(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(a){return Object.getOwnPropertyDescriptor(e,a).enumerable})),r.push.apply(r,n)}return r}function ae(e){for(var t=1;t<arguments.length;t++){var r=arguments[t]!=null?arguments[t]:{};t%2?ne(Object(r),!0).forEach(function(n){_e(e,n,r[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):ne(Object(r)).forEach(function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(r,n))})}return e}function _e(e,t,r){return(t=qe(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function qe(e){var t=ze(e,"string");return typeof t=="symbol"?t:t+""}function ze(e,t){if(typeof e!="object"||!e)return e;var r=e[Symbol.toPrimitive];if(r!==void 0){var n=r.call(e,t);if(typeof n!="object")return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}function Me(e){const{base:t="/",routes:r}=e,n=u.createStore({skipUpdate:!1},{name:"$meta",sid:"ku65ys"}),a=u.createStore(null,{and:{serialize:"ignore"},name:"$history",sid:"23j1rc"}),f=u.createStore({},{name:"$query",sid:"3deub8"}),s=u.createStore(null,{name:"$path",sid:"ld3nhr"}),l=u.createEvent({name:"setHistory",sid:"hzl7xm"}),O=u.createEvent({name:"navigate",sid:"-82vbjo"}),F=u.createEvent({name:"back",sid:"-icnnoo"}),j=u.createEvent({name:"forward",sid:"-72o1my"}),k=u.createEvent({name:"locationUpdated",sid:"d8lu52"}),P=r.map(b=>{let w=b;const y=[];for(y.unshift(w.internal.path);w.internal.parent;)w=w.internal.parent,w.internal.path!=="/"&&y.unshift(w.internal.path);const x=t==="/"?y.join(""):[t,...y].join("");return{route:b,path:x,toPath:X.compile(x),fromPath:X.match(x)}}),v=s.map(b=>{const w=[];for(const{route:y,fromPath:x}of P)x(b)&&w.push(y);return w}),E=u.attach({and:{source:{history:a,meta:n},effect:async(b,w)=>{let{history:y,meta:x}=b,{path:U,query:I,replace:c}=w;if(!y)throw new Error("history not found");if(x.skipUpdate){x.skipUpdate=!1;return}const i={pathname:U,search:"?".concat(H.stringify(I))};c?y.replace(i):y.push(i,{skipUpdate:!0})}},or:{name:"navigateFx",sid:"sry1hc"}}),g=u.attach({and:{source:n,effect:(b,w)=>{var y;const x=u.scopeBind(k);if(x({pathname:w.location.pathname,query:ae({},H.parse(w.location.search)),state:(y=w.location.state)!==null&&y!==void 0?y:{}}),!w)throw new Error;w.listen(U=>{var I;let{location:c}=U;const i=(I=c.state)!==null&&I!==void 0?I:{};i.skipUpdate&&(b.skipUpdate=!0),x({pathname:c.pathname,query:ae({},H.parse(c.search)),state:i})})}},or:{name:"subscribeHistoryFx",sid:"-9srjw2"}}),A=u.attach({and:{source:{query:f,path:s},effect:async b=>{let{query:w,path:y}=b;for(const{route:x,fromPath:U}of P){const I=U(y);if(I)await x.internal.openFx({query:w,params:I.params,historyIgnore:!0});else{x.internal.close();continue}}}},or:{name:"openRoutesByPathFx",sid:"-ro72fe"}});for(const{route:b,toPath:w}of P)u.sample({and:[{clock:b.opened,filter:y=>!(y!=null&&y.historyIgnore),fn:y=>{var x;return{path:w(y&&"params"in y?y.params:void 0),query:(x=y==null?void 0:y.query)!==null&&x!==void 0?x:{},replace:y==null?void 0:y.replace}},target:O}],or:{sid:"gfvtvu"}});return u.sample({and:[{clock:l,target:a}],or:{sid:"hbrw92"}}),u.sample({and:[{clock:a,filter:Boolean,target:g}],or:{sid:"heiv7v"}}),u.sample({and:[{clock:k,fn:b=>({path:b.pathname,query:b.query}),target:u.withFactory({sid:"-f70n8p",fn:()=>ye.spread({targets:{path:s,query:f}}),name:"target",method:"spread"})}],or:{sid:"htdb8m"}}),u.sample({and:[{clock:k,fn:b=>({path:b.pathname,query:b.query}),target:A}],or:{sid:"icm409"}}),u.sample({and:[{clock:O,target:E}],or:{sid:"sr2036"}}),u.sample({and:[{clock:[f,s],source:{query:f,path:s},fn:b=>b,target:O}],or:{sid:"t5cnik"}}),{$query:f,$path:s,$activeRoutes:v,back:F,forward:j,navigate:O,routes:r,setHistory:l,mappedRoutes:P,trackQuery:je({$activeRoutes:v,$path:s,$query:f,navigateFx:E}),"@@unitShape":()=>({query:f,path:s,activeRoutes:v,onBack:F,onForward:j,onNavigate:O})}}function Le(e){const t=u.createStore(null,{name:"$params",sid:"-ui6zqo"}),r=u.createStore(!1,{name:"$isOpened",sid:"p6gokr"}),n=e,a=u.createEvent({name:"open",sid:"55xtzu"}),f=u.createEvent({name:"opened",sid:"tidivr"}),s=u.createEvent({name:"openedOnServer",sid:"8drh93"}),l=u.createEvent({name:"openedOnClient",sid:"-pj4ssy"}),O=u.createEvent({name:"close",sid:"-9osjjv"}),F=u.createEvent({name:"closed",sid:"hnb5jj"});return u.sample({and:[{clock:a,target:f}],or:{sid:"-v1zz6f"}}),u.split({and:[{source:f,match:()=>typeof window>"u"?"server":"client",cases:{server:s,client:l}}],or:{sid:"-unpbr1"}}),u.sample({and:[{clock:O,target:F}],or:{sid:"-u77hy7"}}),u.sample({and:[{clock:[f.map(()=>!0),F.map(()=>!1)],target:r}],or:{sid:"-u4gize"}}),{$params:t,$isOpened:r,$isPending:n,open:a,opened:f,openedOnClient:l,openedOnServer:s,close:O,closed:F,"@@unitShape":()=>({params:t,isOpened:r,isPending:n,onOpen:a})}}function Be(e){const{route:t,beforeOpen:r,openOn:n,cancelOn:a}=e,f=u.createEffect(async l=>{for(const O of[].concat(r))await O(l)},{name:"openFx",sid:"14ykg2"}),s=Le(f.pending);return u.sample({and:[{clock:t.opened,target:f}],or:{sid:"-s8ttzz"}}),u.sample({and:[{clock:t.opened,fn:l=>l&&"params"in l?l.params:null,target:s.$params}],or:{sid:"-1t3nrm"}}),n&&u.sample({and:[{clock:n,source:{params:s.$params},fn:l=>{let{params:O}=l;return{params:O}},target:s.open}],or:{sid:"-1cltx2"}}),a&&u.sample({and:[{clock:[t.closed].concat(a),target:s.close}],or:{sid:"-w4048"}}),s}exports.chainRoute=Be;exports.createRoute=we;exports.createRouter=Me;exports.parameters=D;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const c=require("effector");function D(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(a){return Object.getOwnPropertyDescriptor(e,a).enumerable})),r.push.apply(r,n)}return r}function E(e){for(var t=1;t<arguments.length;t++){var r=arguments[t]!=null?arguments[t]:{};t%2?D(Object(r),!0).forEach(function(n){ee(e,n,r[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):D(Object(r)).forEach(function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(r,n))})}return e}function ee(e,t,r){return(t=re(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function re(e){var t=te(e,"string");return typeof t=="symbol"?t:t+""}function te(e,t){if(typeof e!="object"||!e)return e;var r=e[Symbol.toPrimitive];if(r!==void 0){var n=r.call(e,t);if(typeof n!="object")return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}function ne(e){let t;const r=c.createEffect(()=>{var g;return(g=t)===null||g===void 0?void 0:g()},{name:"waitForAsyncBundleFx",sid:"-au0m0h"}),n=c.createEffect(async()=>{for(const f of(g=e.beforeOpen)!==null&&g!==void 0?g:[]){var g;await f()}},{name:"beforeOpenFx",sid:"-iy13uf"}),a=c.createEffect(async g=>{await r(),await n();const f=e.parent;return f&&await f.internal.openFx(E(E({},g??{params:{}}),{},{navigate:!1})),g},{name:"openFx",sid:"cbmc2y"}),o=c.createStore({},{name:"$params",sid:"-cxehz9"}),s=c.createStore(!1,{name:"$isOpened",sid:"-561dht"}),i=a.pending,u=c.createEvent({name:"open",sid:"hyxmmx"}),m=c.createEvent({name:"close",sid:"-wvbr5n"}),O=c.createEvent({name:"opened",sid:"-qni80y"}),l=c.createEvent({name:"openedOnServer",sid:"eh9oki"}),h=c.createEvent({name:"openedOnClient",sid:"eet6mh"}),d=c.createEvent({name:"navigated",sid:"-rnvpuc"}),j=c.createEvent({name:"closed",sid:"w9iziz"});c.sample({and:[{clock:u,target:a}],or:{sid:"u86cfp"}});const S={};return c.sample({and:[{clock:d,fn:g=>g&&"params"in g?E({},g.params):S,target:o}],or:{sid:"ymu9q6"}}),c.split({and:[{source:d,match:()=>typeof window>"u"?"server":"client",cases:{server:l,client:h}}],or:{sid:"z4zhb3"}}),c.sample({and:[{clock:[h,l],target:O}],or:{sid:"-zf2y9u"}}),c.sample({and:[{clock:m,target:j}],or:{sid:"-z0saug"}}),c.sample({and:[{clock:[O.map(()=>!0),j.map(()=>!1)],target:s}],or:{sid:"-yy1bvn"}}),E(E({$params:o,$isOpened:s,$isPending:i,open:u,closed:j,opened:O,openedOnClient:h,openedOnServer:l},e),{},{internal:{navigated:d,close:m,openFx:a,setAsyncImport:g=>t=g},"@@unitShape":()=>({params:o,isPending:i,isOpened:s,onOpen:u})})}const ae=Symbol("any"),oe=Symbol("number"),se=Symbol("string"),ce=Symbol("array"),ie=Symbol("boolean"),F={any:ae,number:oe,string:se,array:ce,boolean:ie};function C(e,t){for(const r of e)if(t.includes(r))return!0;return!1}function z(e,t){for(const r in t){const n=t[r];if(Array.isArray(n)&&(!e[r]||JSON.stringify(n)!==e[r]))return!1;switch(typeof n){case"number":{if(!e[r]||n.toString()!==e[r])return!1;break}case"object":{if(!e[r]||JSON.stringify(n)!==e[r])return!1;break}case"string":{if(!e[r]||n!==e[r])return!1;break}case"boolean":{if(!e[r]||!["0","1","false","true"].includes(e[r]))return!1;break}}switch(n){case F.any:{if(!e[r])return!1;break}case F.string:{if(!e[r]||Array.isArray(e[r]))return!1;break}case F.array:{if(!e[r]||!Array.isArray(e[r]))return!1;break}case F.number:{if(!e[r]||Array.isArray(e[r])||isNaN(parseInt(e[r]))&&isNaN(parseFloat(e[r])))return!1;break}case F.boolean:{if(!e[r]||Array.isArray(e[r])||!["0","1","false","true"].includes(e[r]))return!1;break}}}return!0}function ue(e,t){const r={};for(const n in t){const a=t[n],o=e[n];if(Array.isArray(a)){const s=e[n];r[n]=s;continue}switch(typeof a){case"number":{r[n]=isNaN(parseInt(o))?parseFloat(o):parseInt(o);break}case"object":{r[n]=JSON.parse(o);break}case"string":r[n]=o;case"boolean":{r[n]=o==="1"||o==="true";break}}switch(a){case F.any:case F.string:case F.array:{r[n]=e[n];break}case F.number:{const s=e[n];r[n]=isNaN(parseInt(s))?parseFloat(s):parseInt(s);break}case F.boolean:{const s=e[n];r[n]=s==="1"||s==="true";break}}}return r}function fe(e){let{$activeRoutes:t,$query:r,navigate:n}=e;return a=>{const{parameters:o,forRoutes:s}=a,i=c.createStore(!1,{name:"$entered",sid:"lde75p"}),u=c.createEvent({name:"entered",sid:"-ggrer9"}),m=c.createEvent({name:"exited",sid:"xzl0hy"}),O=c.createEvent({name:"exit",sid:"-9k6g49"}),l=c.createEvent({name:"changeEntered",sid:"-ibka8"});return c.sample({and:[{clock:l,target:i}],or:{sid:"-hadp7p"}}),c.sample({and:[{source:{activeRoutes:t,query:r},filter:h=>{let{activeRoutes:d,query:j}=h;return(!s||C(s,d))&&z(j,o)},fn:h=>{let{query:d}=h;return ue(d,o)},target:[u,l.prepend(()=>!0)]}],or:{sid:"-gw31sb"}}),c.sample({and:[{source:{activeRoutes:t,query:r,entered:i},filter:h=>{let{activeRoutes:d,query:j,entered:S}=h;return S&&!((!s||C(s,d))&&z(j,o))},target:[m.prepend(()=>{}),l.prepend(()=>!1)]}],or:{sid:"-gfl7zh"}}),c.sample({and:[{clock:O,source:r,fn:(h,d)=>{if(d&&d.ignoreParams){const j={};for(const S of d.ignoreParams)h[S]&&(j[S]=h[S]);return{query:j}}return{query:{}}},target:n}],or:{sid:"-fwcf7u"}}),{entered:u,exited:m,exit:O}}}const V="%[a-f0-9]{2}",U=new RegExp("("+V+")|([^%]+?)","gi"),B=new RegExp("("+V+")+","gi");function $(e,t){try{return[decodeURIComponent(e.join(""))]}catch{}if(e.length===1)return e;t=t||1;const r=e.slice(0,t),n=e.slice(t);return Array.prototype.concat.call([],$(r),$(n))}function le(e){try{return decodeURIComponent(e)}catch{let t=e.match(U)||[];for(let r=1;r<t.length;r++)e=$(t,r).join(""),t=e.match(U)||[];return e}}function de(e){const t={"%FE%FF":"��","%FF%FE":"��"};let r=B.exec(e);for(;r;){try{t[r[0]]=decodeURIComponent(r[0])}catch{const a=le(r[0]);a!==r[0]&&(t[r[0]]=a)}r=B.exec(e)}t["%C2"]="�";const n=Object.keys(t);for(const a of n)e=e.replace(new RegExp(a,"g"),t[a]);return e}function pe(e){if(typeof e!="string")throw new TypeError("Expected `encodedURI` to be of type `string`, got `"+typeof e+"`");try{return decodeURIComponent(e)}catch{return de(e)}}function me(e,t){const r={};if(Array.isArray(t))for(const n of t){const a=Object.getOwnPropertyDescriptor(e,n);a!=null&&a.enumerable&&Object.defineProperty(r,n,a)}else for(const n of Reflect.ownKeys(e)){const a=Object.getOwnPropertyDescriptor(e,n);if(a.enumerable){const o=e[n];t(n,o,e)&&Object.defineProperty(r,n,a)}}return r}function K(e,t){if(!(typeof e=="string"&&typeof t=="string"))throw new TypeError("Expected the arguments to be of type `string`");if(e===""||t==="")return[];const r=e.indexOf(t);return r===-1?[]:[e.slice(0,r),e.slice(r+t.length)]}const ye=e=>e==null,ge=e=>encodeURIComponent(e).replaceAll(/[!'()*]/g,t=>`%${t.charCodeAt(0).toString(16).toUpperCase()}`),A=Symbol("encodeFragmentIdentifier");function be(e){switch(e.arrayFormat){case"index":return t=>(r,n)=>{const a=r.length;return n===void 0||e.skipNull&&n===null||e.skipEmptyString&&n===""?r:n===null?[...r,[b(t,e),"[",a,"]"].join("")]:[...r,[b(t,e),"[",b(a,e),"]=",b(n,e)].join("")]};case"bracket":return t=>(r,n)=>n===void 0||e.skipNull&&n===null||e.skipEmptyString&&n===""?r:n===null?[...r,[b(t,e),"[]"].join("")]:[...r,[b(t,e),"[]=",b(n,e)].join("")];case"colon-list-separator":return t=>(r,n)=>n===void 0||e.skipNull&&n===null||e.skipEmptyString&&n===""?r:n===null?[...r,[b(t,e),":list="].join("")]:[...r,[b(t,e),":list=",b(n,e)].join("")];case"comma":case"separator":case"bracket-separator":{const t=e.arrayFormat==="bracket-separator"?"[]=":"=";return r=>(n,a)=>a===void 0||e.skipNull&&a===null||e.skipEmptyString&&a===""?n:(a=a===null?"":a,n.length===0?[[b(r,e),t,b(a,e)].join("")]:[[n,b(a,e)].join(e.arrayFormatSeparator)])}default:return t=>(r,n)=>n===void 0||e.skipNull&&n===null||e.skipEmptyString&&n===""?r:n===null?[...r,b(t,e)]:[...r,[b(t,e),"=",b(n,e)].join("")]}}function he(e){let t;switch(e.arrayFormat){case"index":return(r,n,a)=>{if(t=/\[(\d*)]$/.exec(r),r=r.replace(/\[\d*]$/,""),!t){a[r]=n;return}a[r]===void 0&&(a[r]={}),a[r][t[1]]=n};case"bracket":return(r,n,a)=>{if(t=/(\[])$/.exec(r),r=r.replace(/\[]$/,""),!t){a[r]=n;return}if(a[r]===void 0){a[r]=[n];return}a[r]=[...a[r],n]};case"colon-list-separator":return(r,n,a)=>{if(t=/(:list)$/.exec(r),r=r.replace(/:list$/,""),!t){a[r]=n;return}if(a[r]===void 0){a[r]=[n];return}a[r]=[...a[r],n]};case"comma":case"separator":return(r,n,a)=>{const o=typeof n=="string"&&n.includes(e.arrayFormatSeparator),s=typeof n=="string"&&!o&&v(n,e).includes(e.arrayFormatSeparator);n=s?v(n,e):n;const i=o||s?n.split(e.arrayFormatSeparator).map(u=>v(u,e)):n===null?n:v(n,e);a[r]=i};case"bracket-separator":return(r,n,a)=>{const o=/(\[])$/.test(r);if(r=r.replace(/\[]$/,""),!o){a[r]=n&&v(n,e);return}const s=n===null?[]:v(n,e).split(e.arrayFormatSeparator);if(a[r]===void 0){a[r]=s;return}a[r]=[...a[r],...s]};default:return(r,n,a)=>{if(a[r]===void 0){a[r]=n;return}a[r]=[...[a[r]].flat(),n]}}}function L(e){if(typeof e!="string"||e.length!==1)throw new TypeError("arrayFormatSeparator must be single character string")}function b(e,t){return t.encode?t.strict?ge(e):encodeURIComponent(e):e}function v(e,t){return t.decode?pe(e):e}function M(e){return Array.isArray(e)?e.sort():typeof e=="object"?M(Object.keys(e)).sort((t,r)=>Number(t)-Number(r)).map(t=>e[t]):e}function J(e){const t=e.indexOf("#");return t!==-1&&(e=e.slice(0,t)),e}function Oe(e){let t="";const r=e.indexOf("#");return r!==-1&&(t=e.slice(r)),t}function q(e,t,r){return r==="string"&&typeof e=="string"?e:typeof r=="function"&&typeof e=="string"?r(e):t.parseBooleans&&e!==null&&(e.toLowerCase()==="true"||e.toLowerCase()==="false")?e.toLowerCase()==="true":r==="number"&&!Number.isNaN(Number(e))&&typeof e=="string"&&e.trim()!==""||t.parseNumbers&&!Number.isNaN(Number(e))&&typeof e=="string"&&e.trim()!==""?Number(e):e}function R(e){e=J(e);const t=e.indexOf("?");return t===-1?"":e.slice(t+1)}function I(e,t){t={decode:!0,sort:!0,arrayFormat:"none",arrayFormatSeparator:",",parseNumbers:!1,parseBooleans:!1,types:Object.create(null),...t},L(t.arrayFormatSeparator);const r=he(t),n=Object.create(null);if(typeof e!="string"||(e=e.trim().replace(/^[?#&]/,""),!e))return n;for(const a of e.split("&")){if(a==="")continue;const o=t.decode?a.replaceAll("+"," "):a;let[s,i]=K(o,"=");s===void 0&&(s=o),i=i===void 0?null:["comma","separator","bracket-separator"].includes(t.arrayFormat)?i:v(i,t),r(v(s,t),i,n)}for(const[a,o]of Object.entries(n))if(typeof o=="object"&&o!==null&&t.types[a]!=="string")for(const[s,i]of Object.entries(o)){const u=t.types[a]?t.types[a].replace("[]",""):void 0;o[s]=q(i,t,u)}else typeof o=="object"&&o!==null&&t.types[a]==="string"?n[a]=Object.values(o).join(t.arrayFormatSeparator):n[a]=q(o,t,t.types[a]);return t.sort===!1?n:(t.sort===!0?Object.keys(n).sort():Object.keys(n).sort(t.sort)).reduce((a,o)=>{const s=n[o];return a[o]=s&&typeof s=="object"&&!Array.isArray(s)?M(s):s,a},Object.create(null))}function Q(e,t){if(!e)return"";t={encode:!0,strict:!0,arrayFormat:"none",arrayFormatSeparator:",",...t},L(t.arrayFormatSeparator);const r=s=>t.skipNull&&ye(e[s])||t.skipEmptyString&&e[s]==="",n=be(t),a={};for(const[s,i]of Object.entries(e))r(s)||(a[s]=i);const o=Object.keys(a);return t.sort!==!1&&o.sort(t.sort),o.map(s=>{const i=e[s];return i===void 0?"":i===null?b(s,t):Array.isArray(i)?i.length===0&&t.arrayFormat==="bracket-separator"?b(s,t)+"[]":i.reduce(n(s),[]).join("&"):b(s,t)+"="+b(i,t)}).filter(s=>s.length>0).join("&")}function G(e,t){var a;t={decode:!0,...t};let[r,n]=K(e,"#");return r===void 0&&(r=e),{url:((a=r==null?void 0:r.split("?"))==null?void 0:a[0])??"",query:I(R(e),t),...t&&t.parseFragmentIdentifier&&n?{fragmentIdentifier:v(n,t)}:{}}}function W(e,t){t={encode:!0,strict:!0,[A]:!0,...t};const r=J(e.url).split("?")[0]||"",n=R(e.url),a={...I(n,{sort:!1}),...e.query};let o=Q(a,t);o&&(o=`?${o}`);let s=Oe(e.url);if(typeof e.fragmentIdentifier=="string"){const i=new URL(r);i.hash=e.fragmentIdentifier,s=t[A]?i.hash:`#${e.fragmentIdentifier}`}return`${r}${o}${s}`}function X(e,t,r){r={parseFragmentIdentifier:!0,[A]:!1,...r};const{url:n,query:a,fragmentIdentifier:o}=G(e,r);return W({url:n,query:me(a,t),fragmentIdentifier:o},r)}function we(e,t,r){const n=Array.isArray(t)?a=>!t.includes(a):(a,o)=>!t(a,o);return X(e,n,r)}const x=Object.freeze(Object.defineProperty({__proto__:null,exclude:we,extract:R,parse:I,parseUrl:G,pick:X,stringify:Q,stringifyUrl:W},Symbol.toStringTag,{value:"Module"}));function je(e){return t=>{const r=t.split("/").filter(Boolean);let n=null;function a(i,u){n||(n={}),n[i]=u}if(e.length===0)return r.length===0?{path:t,params:null}:null;for(let i=0;i<e.length;i++){let u=r[i];const m=e[i];switch(m.type){case"const":{if(u!==m.name)return null;continue}case"parameter":{const{arrayProps:O,genericProps:l,required:h}=m.payload;if(O){var o;const d=[];for(;u&&d.length<((s=O.max)!==null&&s!==void 0?s:1/0);){var s;switch(l==null?void 0:l.type){case"number":{if(isNaN(+u))return null;d.push(+u);break}case"union":{if(!l.items.includes(u))return null;d.push(u);break}default:{d.push(u);break}}u=r[i+d.length]}if(d.length<((o=O.min)!==null&&o!==void 0?o:0)||r[i+d.length]&&!e[i+1])return null;a(m.name,d);break}if(h&&!u)return null;if(!u){a(m.name,void 0);continue}switch(l==null?void 0:l.type){case"number":{if(isNaN(+u))return null;a(m.name,+u);break}case"union":{if(!l.items.includes(u))return null;a(m.name,u);break}default:{a(m.name,u);break}}}}}return{path:t,params:n}}}function Fe(e){if(!e)return null;const t=e[1];let r,n,a;for(const o of e.slice(2))if(o){if(o.includes("<")){r=o.replace("<","").replace(">","");continue}if(o.includes("{")&&(n=o.replace("{","").replace("}","").split(",").map(s=>parseInt(s))),["*","?","+"].includes(o)){a=o;continue}}return{name:t,genericProps:r,arrayProps:n,modificator:a}}function Se(e){return t=>{const r=[];if(e.length===0)return"/";for(const n of e)switch(n.type){case"const":{r.push(n.name);break}case"parameter":{if(!t[n.name])continue;if(Array.isArray(t[n.name]))for(const a of t[n.name])r.push(a.toString());else r.push(t[n.name].toString());break}}return"/".concat(r.join("/"))}}function _(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(a){return Object.getOwnPropertyDescriptor(e,a).enumerable})),r.push.apply(r,n)}return r}function T(e){for(var t=1;t<arguments.length;t++){var r=arguments[t]!=null?arguments[t]:{};t%2?_(Object(r),!0).forEach(function(n){ve(e,n,r[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):_(Object(r)).forEach(function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(r,n))})}return e}function ve(e,t,r){return(t=Pe(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function Pe(e){var t=ke(e,"string");return typeof t=="symbol"?t:t+""}function ke(e,t){if(typeof e!="object"||!e)return e;var r=e[Symbol.toPrimitive];if(r!==void 0){var n=r.call(e,t);if(typeof n!="object")return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}function Ee(e){const t=[],r=/:(\w+)(<[\w|]+>)?({\d+\,\d+})?([+*?])?/,n=e.split("/").filter(Boolean);for(let a=0;a<n.length;a++){const o=n[a];if(!o)continue;const s=Fe(o.match(r));if(!s){t.push({type:"const",name:o,payload:void 0});continue}const{arrayProps:i,genericProps:u,modificator:m,name:O}=s;if(!O)throw new Error('Invalid path: "'.concat(e,'". Name for argument must be provided'));const l={type:"parameter",name:O,payload:{required:!0}};switch(u&&u==="number"&&(l.payload.genericProps={type:"number"}),u&&u.includes("|")&&(l.payload.genericProps={type:"union",items:u.split("|")}),m){case"*":{l.payload.arrayProps={};break}case"+":{l.payload.arrayProps={min:1};break}case"?":{l.payload.required=!1;break}}i&&(l.payload.arrayProps=T(T({},l.payload.arrayProps),{},{min:i[0],max:i[1]})),t.push(l)}return{parse:je(t),build:Se(t)}}function H(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(a){return Object.getOwnPropertyDescriptor(e,a).enumerable})),r.push.apply(r,n)}return r}function N(e){for(var t=1;t<arguments.length;t++){var r=arguments[t]!=null?arguments[t]:{};t%2?H(Object(r),!0).forEach(function(n){xe(e,n,r[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):H(Object(r)).forEach(function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(r,n))})}return e}function xe(e,t,r){return(t=Ne(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function Ne(e){var t=$e(e,"string");return typeof t=="symbol"?t:t+""}function $e(e,t){if(typeof e!="object"||!e)return e;var r=e[Symbol.toPrimitive];if(r!==void 0){var n=r.call(e,t);if(typeof n!="object")return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}function Ae(e){const{base:t="/",routes:r}=e,n=c.createStore(null,{and:{serialize:"ignore"},name:"$history",sid:"-c46cwg"}),a=c.createStore({query:{},path:null},{name:"$locationState",sid:"-xif7zo"}),o=a.map(f=>f.query),s=a.map(f=>f.path),i=c.createEvent({name:"setHistory",sid:"5o2aum"}),u=c.createEvent({name:"navigate",sid:"-kee8mo"}),m=c.createEvent({name:"back",sid:"-uo6kro"}),O=c.createEvent({name:"forward",sid:"-je6ypy"}),l=c.createEvent({name:"locationUpdated",sid:"x2x22"}),h=r.map(f=>{let y=f;const p=[];for(p.unshift(y.path);y.parent;)y=y.parent,y.path!=="/"&&p.unshift(y.path);const w=t==="/"?p.join(""):[t,...p].join(""),{build:k,parse:P}=Ee(w);return{route:f,path:w,build:k,parse:P}}),d=s.map(f=>{const y=[];if(!f)return y;for(const{route:p,parse:w}of h)w(f)&&y.push(p);return y}),j=c.attach({and:{source:n,effect:(f,y)=>{let{path:p,query:w,replace:k}=y;if(!f)throw new Error("history not found");const P={pathname:p,search:"?".concat(x.stringify(w))};k?f.replace(P):f.push(P)}},or:{name:"navigateFx",sid:"9h4a5f"}}),S=c.createEffect(f=>{const y=c.scopeBind(l);if(y({pathname:f.location.pathname,query:N({},x.parse(f.location.search))}),!f)throw new Error;f.listen(p=>{let{location:w}=p;y({pathname:w.pathname,query:N({},x.parse(w.search))})})},{name:"subscribeHistoryFx",sid:"-o0gyju"}),g=c.attach({and:{source:{query:o,path:s},effect:async f=>{let{query:y,path:p}=f;for(const{route:w,parse:k}of h){const P=k(p),[Y,Z]=[c.scopeBind(w.internal.close),c.scopeBind(w.internal.navigated)];P?Z({query:y,params:P.params}):Y()}}},or:{name:"openRoutesByPathFx",sid:"dzro9q"}});for(const{route:f,build:y}of h)c.sample({and:[{clock:f.internal.openFx.doneData,filter:p=>(p==null?void 0:p.navigate)!==!1,fn:p=>{var w;return{path:y(p&&"params"in p?p.params:void 0),query:(w=p==null?void 0:p.query)!==null&&w!==void 0?w:{},replace:p==null?void 0:p.replace}},target:u}],or:{sid:"htdbac"}});return c.sample({and:[{clock:i,target:n}],or:{sid:"sn7fxn"}}),c.sample({and:[{clock:n,filter:Boolean,target:S}],or:{sid:"spyewg"}}),c.sample({and:[{clock:l,fn:f=>({path:f.pathname,query:f.query}),target:a}],or:{sid:"t4sux7"}}),c.sample({and:[{clock:l,fn:f=>({path:f.pathname,query:f.query}),target:g}],or:{sid:"tlaoq1"}}),c.sample({and:[{clock:u,source:s,fn:(f,y)=>N({path:f},y),target:j}],or:{sid:"u1siiv"}}),{$query:o,$path:s,$activeRoutes:d,back:m,forward:O,navigate:u,routes:r,setHistory:i,mappedRoutes:h,trackQuery:fe({$activeRoutes:d,$query:o,navigate:u}),"@@unitShape":()=>({query:o,path:s,activeRoutes:d,onBack:m,onForward:O,onNavigate:u})}}function Re(e){const t=c.createStore(null,{name:"$params",sid:"-ui6zqo"}),r=c.createStore(!1,{name:"$isOpened",sid:"p6gokr"}),n=e,a=c.createEvent({name:"open",sid:"55xtzu"}),o=c.createEvent({name:"opened",sid:"tidivr"}),s=c.createEvent({name:"openedOnServer",sid:"8drh93"}),i=c.createEvent({name:"openedOnClient",sid:"-pj4ssy"}),u=c.createEvent({name:"close",sid:"-9osjjv"}),m=c.createEvent({name:"closed",sid:"hnb5jj"});return c.sample({and:[{clock:a,target:o}],or:{sid:"-v1zz6f"}}),c.split({and:[{source:o,match:()=>typeof window>"u"?"server":"client",cases:{server:s,client:i}}],or:{sid:"-unpbr1"}}),c.sample({and:[{clock:u,target:m}],or:{sid:"-u77hy7"}}),c.sample({and:[{clock:[o.map(()=>!0),m.map(()=>!1)],target:r}],or:{sid:"-u4gize"}}),{$params:t,$isOpened:r,$isPending:n,open:a,opened:o,openedOnClient:i,openedOnServer:s,close:u,closed:m,path:null,"@@unitShape":()=>({params:t,isOpened:r,isPending:n,onOpen:a})}}function Ie(e){const{route:t,beforeOpen:r,openOn:n,cancelOn:a}=e,o=c.createEffect(async i=>{for(const u of[].concat(r))await u(i)},{name:"openFx",sid:"ci1hwq"}),s=Re(o.pending);return c.sample({and:[{clock:t.open,target:o}],or:{sid:"-1u78yc"}}),c.sample({and:[{clock:t.opened,fn:i=>i&&"params"in i?i.params:null,target:s.$params}],or:{sid:"-1rg9zj"}}),n&&c.sample({and:[{clock:n,source:{params:s.$params},fn:i=>{let{params:u}=i;return{params:u}},target:s.open}],or:{sid:"-1ayg4z"}}),a&&c.sample({and:[{clock:[t.closed].concat(a),target:s.close}],or:{sid:"-ugmc5"}}),s}exports.chainRoute=Ie;exports.createRoute=ne;exports.createRouter=Ae;exports.parameters=F;
package/dist/index.d.ts CHANGED
@@ -1,9 +1,10 @@
1
+ import { Builder } from '@argon-router/paths';
1
2
  import { Effect } from 'effector';
2
3
  import { Event as Event_2 } from 'effector';
3
4
  import { EventCallable } from 'effector';
4
5
  import { History as History_2 } from 'history';
5
- import { MatchFunction } from 'path-to-regexp';
6
- import { ParseUrlParams } from 'typed-url-params';
6
+ import { Parser } from '@argon-router/paths';
7
+ import { ParseUrlParams } from '@argon-router/paths';
7
8
  import { Store } from 'effector';
8
9
  import { StoreWritable } from 'effector';
9
10
  import { Unit } from 'effector';
@@ -37,13 +38,71 @@ declare interface Config<T> {
37
38
  beforeOpen?: Effect<void, any, any>[];
38
39
  }
39
40
 
40
- export declare function createRoute<T extends string, Params = SafeParams<ParseUrlParams<T>>>(config: Config<T>): Route<Params>;
41
-
41
+ /**
42
+ * @description Creates argon route
43
+ * @param config Route config
44
+ * @returns `Route\<Params\>`
45
+ * @link https://movpushmov.dev/argon-router/core/create-route.html
46
+ * @example ```ts
47
+ * import { createRoute } from '@argon-router/core';
48
+ *
49
+ * // basic
50
+ * const route = createRoute({ path: '/route' });
51
+ * route.open();
52
+ *
53
+ * // with params
54
+ * const postRoute = createRoute({ path: '/post/:id' });
55
+ * // ^--- Route<{ id: string }>
56
+ *
57
+ * // with parent
58
+ * const profile = createRoute({ path: '/profile/:id' });
59
+ *
60
+ * const friends = createRoute({ path: '/friends', parent: profile });
61
+ * const posts = createRoute({ path: '/posts', parent: profile });
62
+ *
63
+ * posts.open(); // profile.$isOpened -> true, posts.$isOpened -> true
64
+ * ```
65
+ */
66
+ export declare function createRoute<T extends string, Params = ParseUrlParams<T>>(config: Config<T>): Route<Params>;
67
+
68
+ /**
69
+ * @description Creates argon router
70
+ * @param config Router config
71
+ * @returns `Router`
72
+ * @link https://movpushmov.dev/argon-router/core/create-router.html
73
+ *
74
+ * `be careful! router need to be initialzed with setHistory event,
75
+ * which requires memory or browser history from history package.`
76
+ *
77
+ * @example ```ts
78
+ * import { createRouter } from '@argon-router/core';
79
+ * import { routes } from './routes';
80
+ *
81
+ * // create router
82
+ * const router = createRouter({
83
+ * routes: [routes.route1, routes.route2],
84
+ * });
85
+ *
86
+ * // override path or query
87
+ * sample({
88
+ * clock: goToPage,
89
+ * fn: () => ({ path: '/page' }),
90
+ * target: router.navigate,
91
+ * });
92
+ *
93
+ * sample({
94
+ * clock: addQuery,
95
+ * fn: () => ({ query: { param1: 'hello', params2: [1, 2] } }),
96
+ * target: router.navigate,
97
+ * });
98
+ *
99
+ * ```
100
+ */
42
101
  export declare function createRouter(config: RouterConfig): Router;
43
102
 
44
103
  export declare type NavigatePayload = {
45
- path: string;
46
104
  query: Query;
105
+ path?: string;
47
106
  replace?: boolean;
48
107
  };
49
108
 
@@ -96,6 +155,9 @@ export declare interface Route<T = void> {
96
155
  openedOnServer: Event_2<RouteOpenedPayload<T>>;
97
156
  openedOnClient: Event_2<RouteOpenedPayload<T>>;
98
157
  closed: Event_2<void>;
158
+ path: string;
159
+ parent?: Route<any>;
160
+ beforeOpen?: Effect<any, any, any>[];
99
161
  '@@unitShape': () => {
100
162
  params: Store<T>;
101
163
  isOpened: Store<boolean>;
@@ -117,12 +179,37 @@ export declare interface Router {
117
179
  navigate: EventCallable<NavigatePayload>;
118
180
  setHistory: EventCallable<History_2>;
119
181
  routes: Route<any>[];
182
+ /**
183
+ * @description Creates query params tracker
184
+ * @param config Query tacker config
185
+ * @link https://movpushmov.dev/argon-router/core/track-query.html
186
+ * @example ```ts
187
+ * import { parameters } from '@argon-router/core';
188
+ * import { router } from '@shared/router';
189
+ * import { createDialog } from '...';
190
+ *
191
+ * const dialog = createDialog();
192
+ * const tracker = router.trackQuery({
193
+ * dialog: 'team-member',
194
+ * id: parameters.number,
195
+ * });
196
+ *
197
+ * // triggered for:
198
+ * // /team?dialog=team-member&id=1
199
+ * // /team?dialog=team-member&id=10000
200
+ *
201
+ * // not triggered for:
202
+ * // /team?dialog=team&id=1
203
+ * // /team?id=10000
204
+ * // /team?dialog=team&id=not_number
205
+ * ```
206
+ */
120
207
  trackQuery: <ParametersConfig extends RawConfig>(config: QueryTrackerConfig<ParametersConfig>) => QueryTracker<ParametersConfig>;
121
208
  mappedRoutes: {
122
209
  route: Route<any>;
123
210
  path: string;
124
- toPath: (data?: Partial<Record<string, string | string[]>> | undefined) => string;
125
- fromPath: MatchFunction<Partial<Record<string, string | string[]>>>;
211
+ build: Builder<any>;
212
+ parse: Parser<any>;
126
213
  }[];
127
214
  '@@unitShape': () => {
128
215
  query: Store<Query>;
@@ -139,8 +226,6 @@ declare interface RouterConfig {
139
226
  routes: Route<any>[];
140
227
  }
141
228
 
142
- declare type SafeParams<T> = T extends Record<string, never> ? void : T;
143
-
144
229
  declare type StringParameter = typeof stringSymbol;
145
230
 
146
231
  declare const stringSymbol: unique symbol;