@argon-router/core 0.6.0 → 0.6.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 CHANGED
@@ -3,7 +3,7 @@
3
3
  Router without a headache
4
4
 
5
5
  > [!WARNING]
6
- > argon-router is extermely unstable & maybe buggy. DO NOT USE IN PRODUCTION!
6
+ > argon-router is not production ready yet and still may have bugs and unstable API. If you found bug — please report it on GitHub.
7
7
 
8
8
  ## Documentation
9
9
 
@@ -13,6 +13,7 @@ For additional information, guides and api reference visit [documentation site](
13
13
 
14
14
  - [@argon-router/core](https://www.npmjs.com/package/@argon-router/core)
15
15
  - [@argon-router/react](https://www.npmjs.com/package/@argon-router/react)
16
+ - [@argon-router/paths](https://www.npmjs.com/package/@argon-router/paths)
16
17
 
17
18
  ## Installation
18
19
 
package/dist/index.cjs CHANGED
@@ -1 +1 @@
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;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const i=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=i.createEffect(()=>{var b;return(b=t)===null||b===void 0?void 0:b()},{name:"waitForAsyncBundleFx",sid:"-au0m0h"}),n=i.createEffect(async()=>{for(const f of(b=e.beforeOpen)!==null&&b!==void 0?b:[]){var b;await f()}},{name:"beforeOpenFx",sid:"-iy13uf"}),a=i.createEffect(async b=>{await r(),await n();const f=e.parent;return f&&await f.internal.openFx(E(E({},b??{params:{}}),{},{navigate:!1})),b},{name:"openFx",sid:"cbmc2y"}),o=i.createStore({},{name:"$params",sid:"-cxehz9"}),s=i.createStore(!1,{name:"$isOpened",sid:"-561dht"}),c=a.pending,u=i.createEvent({name:"open",sid:"hyxmmx"}),m=i.createEvent({name:"close",sid:"-wvbr5n"}),O=i.createEvent({name:"opened",sid:"-qni80y"}),l=i.createEvent({name:"openedOnServer",sid:"eh9oki"}),h=i.createEvent({name:"openedOnClient",sid:"eet6mh"}),d=i.createEvent({name:"navigated",sid:"-rnvpuc"}),j=i.createEvent({name:"closed",sid:"w9iziz"});i.sample({and:[{clock:u,target:a}],or:{sid:"u86cfp"}});const S={};return i.sample({and:[{clock:d,fn:b=>b&&"params"in b?E({},b.params):S,target:o}],or:{sid:"ymu9q6"}}),i.split({and:[{source:d,match:()=>typeof window>"u"?"server":"client",cases:{server:l,client:h}}],or:{sid:"z4zhb3"}}),i.sample({and:[{clock:[h,l],target:O}],or:{sid:"-zf2y9u"}}),i.sample({and:[{clock:m,target:j}],or:{sid:"-z0saug"}}),i.sample({and:[{clock:[O.map(()=>!0),j.map(()=>!1)],target:s}],or:{sid:"-yy1bvn"}}),E(E({$params:o,$isOpened:s,$isPending:c,open:u,closed:j,opened:O,openedOnClient:h,openedOnServer:l},e),{},{internal:{navigated:d,close:m,openFx:a,setAsyncImport:b=>t=b},"@@unitShape":()=>({params:o,isPending:c,isOpened:s,onOpen:u})})}const ae=Symbol("any"),oe=Symbol("number"),se=Symbol("string"),ie=Symbol("array"),ce=Symbol("boolean"),F={any:ae,number:oe,string:se,array:ie,boolean:ce};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,c=i.createStore(!1,{name:"$entered",sid:"lde75p"}),u=i.createEvent({name:"entered",sid:"-ggrer9"}),m=i.createEvent({name:"exited",sid:"xzl0hy"}),O=i.createEvent({name:"exit",sid:"-9k6g49"}),l=i.createEvent({name:"changeEntered",sid:"-ibka8"});return i.sample({and:[{clock:l,target:c}],or:{sid:"-hadp7p"}}),i.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"}}),i.sample({and:[{source:{activeRoutes:t,query:r,entered:c},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"}}),i.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,be=e=>encodeURIComponent(e).replaceAll(/[!'()*]/g,t=>`%${t.charCodeAt(0).toString(16).toUpperCase()}`),A=Symbol("encodeFragmentIdentifier");function ge(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,[g(t,e),"[",a,"]"].join("")]:[...r,[g(t,e),"[",g(a,e),"]=",g(n,e)].join("")]};case"bracket":return t=>(r,n)=>n===void 0||e.skipNull&&n===null||e.skipEmptyString&&n===""?r:n===null?[...r,[g(t,e),"[]"].join("")]:[...r,[g(t,e),"[]=",g(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,[g(t,e),":list="].join("")]:[...r,[g(t,e),":list=",g(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?[[g(r,e),t,g(a,e)].join("")]:[[n,g(a,e)].join(e.arrayFormatSeparator)])}default:return t=>(r,n)=>n===void 0||e.skipNull&&n===null||e.skipEmptyString&&n===""?r:n===null?[...r,g(t,e)]:[...r,[g(t,e),"=",g(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 c=o||s?n.split(e.arrayFormatSeparator).map(u=>v(u,e)):n===null?n:v(n,e);a[r]=c};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 g(e,t){return t.encode?t.strict?be(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,c]=K(o,"=");s===void 0&&(s=o),c=c===void 0?null:["comma","separator","bracket-separator"].includes(t.arrayFormat)?c:v(c,t),r(v(s,t),c,n)}for(const[a,o]of Object.entries(n))if(typeof o=="object"&&o!==null&&t.types[a]!=="string")for(const[s,c]of Object.entries(o)){const u=t.types[a]?t.types[a].replace("[]",""):void 0;o[s]=q(c,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=ge(t),a={};for(const[s,c]of Object.entries(e))r(s)||(a[s]=c);const o=Object.keys(a);return t.sort!==!1&&o.sort(t.sort),o.map(s=>{const c=e[s];return c===void 0?"":c===null?g(s,t):Array.isArray(c)?c.length===0&&t.arrayFormat==="bracket-separator"?g(s,t)+"[]":c.reduce(n(s),[]).join("&"):g(s,t)+"="+g(c,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 c=new URL(r);c.hash=e.fragmentIdentifier,s=t[A]?c.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(c,u){n||(n={}),n[c]=u}if(e.length===0)return r.length===0?{path:t,params:null}:null;for(let c=0;c<e.length;c++){let u=r[c];const m=e[c];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[c+d.length]}if(d.length<((o=O.min)!==null&&o!==void 0?o:0)||r[c+d.length]&&!e[c+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:c,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}}c&&(l.payload.arrayProps=T(T({},l.payload.arrayProps),{},{min:c[0],max:c[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=i.createStore(null,{and:{serialize:"ignore"},name:"$history",sid:"-c46cwg"}),a=i.createStore({query:{},path:null},{name:"$locationState",sid:"-xif7zo"}),o=a.map(f=>f.query),s=a.map(f=>f.path),c=i.createEvent({name:"setHistory",sid:"5o2aum"}),u=i.createEvent({name:"navigate",sid:"-kee8mo"}),m=i.createEvent({name:"back",sid:"-uo6kro"}),O=i.createEvent({name:"forward",sid:"-je6ypy"}),l=i.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=i.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=i.createEffect(f=>{const y=i.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"}),b=i.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]=[i.scopeBind(w.internal.close),i.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)i.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 i.sample({and:[{clock:c,target:n}],or:{sid:"sn7fxn"}}),i.sample({and:[{clock:n,filter:Boolean,target:S}],or:{sid:"spyewg"}}),i.sample({and:[{clock:l,fn:f=>({path:f.pathname,query:f.query}),target:a}],or:{sid:"t4sux7"}}),i.sample({and:[{clock:l,fn:f=>({path:f.pathname,query:f.query}),target:b}],or:{sid:"tlaoq1"}}),i.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:c,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=i.createStore(null,{name:"$params",sid:"-ui6zqo"}),r=i.createStore(!1,{name:"$isOpened",sid:"p6gokr"}),n=e,a=i.createEvent({name:"open",sid:"55xtzu"}),o=i.createEvent({name:"opened",sid:"tidivr"}),s=i.createEvent({name:"openedOnServer",sid:"8drh93"}),c=i.createEvent({name:"openedOnClient",sid:"-pj4ssy"}),u=i.createEvent({name:"close",sid:"-9osjjv"}),m=i.createEvent({name:"closed",sid:"hnb5jj"});return i.sample({and:[{clock:a,target:o}],or:{sid:"-v1zz6f"}}),i.split({and:[{source:o,match:()=>typeof window>"u"?"server":"client",cases:{server:s,client:c}}],or:{sid:"-unpbr1"}}),i.sample({and:[{clock:u,target:m}],or:{sid:"-u77hy7"}}),i.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:c,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=i.createEffect(async c=>{for(const u of[].concat(r))await u(c)},{name:"openFx",sid:"x22os2"}),s=Re(o.pending);return i.sample({and:[{clock:t.open,target:o}],or:{sid:"2j17t"}}),i.sample({and:[{clock:t.opened,fn:c=>c&&"params"in c?c.params:null,target:s.$params}],or:{sid:"5a06m"}}),n&&i.sample({and:[{clock:n,source:{params:s.$params},fn:c=>{let{params:u}=c;return{params:u}},target:s.open}],or:{sid:"lru16"}}),a&&i.sample({and:[{clock:[t.closed].concat(a),target:s.close}],or:{sid:"129nu0"}}),s}exports.chainRoute=Ie;exports.createRoute=ne;exports.createRouter=Ae;exports.parameters=F;
package/dist/index.d.ts CHANGED
@@ -23,6 +23,47 @@ declare type BooleanParameter = typeof booleanSymbol;
23
23
 
24
24
  declare const booleanSymbol: unique symbol;
25
25
 
26
+ /**
27
+ * @link https://movpushmov.dev/argon-router/core/chain-route.html
28
+ * @param props Chain route props
29
+ * @returns `Virtual route`
30
+ * @example ```ts
31
+ * import { createRoute, chainRoute } from '@argon-router/core';
32
+ * import { createEvent, createEffect } from 'effector';
33
+ *
34
+ * // base example
35
+ * const route = createRoute({ path: '/profile' });
36
+ *
37
+ * const authorized = createEvent();
38
+ * const rejected = createEvent();
39
+ *
40
+ * const checkAuthorizationFx = createEffect(async ({ params }) => {
41
+ * // some logic
42
+ * });
43
+ *
44
+ * sample({
45
+ * clock: checkAuthorizationFx.doneData,
46
+ * target: authorized,
47
+ * });
48
+ *
49
+ * sample({
50
+ * clock: checkAuthorizationFx.failData,
51
+ * target: rejected,
52
+ * });
53
+ *
54
+ * const virtual = chainRoute({
55
+ * route,
56
+ * beforeOpen: checkAuthorizationFx,
57
+ * openOn: authorized,
58
+ * cancelOn: rejected,
59
+ * });
60
+ *
61
+ * // chain already chained routes
62
+ * const postRoute = createRoute({ path: '/post/:id' });
63
+ * const authorizedRoute = chainRoute({ route: postRoute, ... });
64
+ * const postLoadedRoute = chainRoute({ route: authorizedRoute, ... });
65
+ * ```
66
+ */
26
67
  export declare function chainRoute<T>(props: ChainRouteProps<T>): VirtualRoute<T>;
27
68
 
28
69
  declare interface ChainRouteProps<T> {
package/dist/index.js CHANGED
@@ -1,5 +1,5 @@
1
- import { createEffect as A, createStore as v, createEvent as m, sample as y, split as Q, attach as q, scopeBind as E } from "effector";
2
- function B(e, t) {
1
+ import { createEffect as A, createStore as v, createEvent as m, sample as y, split as Q, attach as B, scopeBind as E } from "effector";
2
+ function _(e, t) {
3
3
  var r = Object.keys(e);
4
4
  if (Object.getOwnPropertySymbols) {
5
5
  var n = Object.getOwnPropertySymbols(e);
@@ -12,9 +12,9 @@ function B(e, t) {
12
12
  function $(e) {
13
13
  for (var t = 1; t < arguments.length; t++) {
14
14
  var r = arguments[t] != null ? arguments[t] : {};
15
- t % 2 ? B(Object(r), !0).forEach(function(n) {
15
+ t % 2 ? _(Object(r), !0).forEach(function(n) {
16
16
  ie(e, n, r[n]);
17
- }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(r)) : B(Object(r)).forEach(function(n) {
17
+ }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(r)) : _(Object(r)).forEach(function(n) {
18
18
  Object.defineProperty(e, n, Object.getOwnPropertyDescriptor(r, n));
19
19
  });
20
20
  }
@@ -37,30 +37,30 @@ function ce(e, t) {
37
37
  }
38
38
  return (t === "string" ? String : Number)(e);
39
39
  }
40
- function qe(e) {
40
+ function Be(e) {
41
41
  let t;
42
42
  const r = A(() => {
43
- var b;
44
- return (b = t) === null || b === void 0 ? void 0 : b();
43
+ var g;
44
+ return (g = t) === null || g === void 0 ? void 0 : g();
45
45
  }, {
46
46
  name: "waitForAsyncBundleFx",
47
47
  sid: "-au0m0h"
48
48
  }), n = A(async () => {
49
- for (const u of (b = e.beforeOpen) !== null && b !== void 0 ? b : []) {
50
- var b;
49
+ for (const u of (g = e.beforeOpen) !== null && g !== void 0 ? g : []) {
50
+ var g;
51
51
  await u();
52
52
  }
53
53
  }, {
54
54
  name: "beforeOpenFx",
55
55
  sid: "-iy13uf"
56
- }), a = A(async (b) => {
56
+ }), a = A(async (g) => {
57
57
  await r(), await n();
58
58
  const u = e.parent;
59
- return u && await u.internal.openFx($($({}, b ?? {
59
+ return u && await u.internal.openFx($($({}, g ?? {
60
60
  params: {}
61
61
  }), {}, {
62
62
  navigate: !1
63
- })), b;
63
+ })), g;
64
64
  }, {
65
65
  name: "openFx",
66
66
  sid: "cbmc2y"
@@ -105,7 +105,7 @@ function qe(e) {
105
105
  return y({
106
106
  and: [{
107
107
  clock: l,
108
- fn: (b) => b && "params" in b ? $({}, b.params) : S,
108
+ fn: (g) => g && "params" in g ? $({}, g.params) : S,
109
109
  target: o
110
110
  }],
111
111
  or: {
@@ -161,7 +161,7 @@ function qe(e) {
161
161
  navigated: l,
162
162
  close: p,
163
163
  openFx: a,
164
- setAsyncImport: (b) => t = b
164
+ setAsyncImport: (g) => t = g
165
165
  },
166
166
  "@@unitShape": () => ({
167
167
  params: o,
@@ -178,7 +178,7 @@ const ue = Symbol("any"), fe = Symbol("number"), le = Symbol("string"), de = Sym
178
178
  array: de,
179
179
  boolean: pe
180
180
  };
181
- function _(e, t) {
181
+ function q(e, t) {
182
182
  for (const r of e)
183
183
  if (t.includes(r))
184
184
  return !0;
@@ -332,7 +332,7 @@ function ye(e) {
332
332
  activeRoutes: l,
333
333
  query: F
334
334
  } = O;
335
- return (!i || _(i, l)) && T(F, o);
335
+ return (!i || q(i, l)) && T(F, o);
336
336
  },
337
337
  fn: (O) => {
338
338
  let {
@@ -358,7 +358,7 @@ function ye(e) {
358
358
  query: F,
359
359
  entered: S
360
360
  } = O;
361
- return S && !((!i || _(i, l)) && T(F, o));
361
+ return S && !((!i || q(i, l)) && T(F, o));
362
362
  },
363
363
  target: [p.prepend(() => {
364
364
  }), f.prepend(() => !1)]
@@ -407,7 +407,7 @@ function D(e, t) {
407
407
  const r = e.slice(0, t), n = e.slice(t);
408
408
  return Array.prototype.concat.call([], D(r), D(n));
409
409
  }
410
- function ge(e) {
410
+ function be(e) {
411
411
  try {
412
412
  return decodeURIComponent(e);
413
413
  } catch {
@@ -417,7 +417,7 @@ function ge(e) {
417
417
  return e;
418
418
  }
419
419
  }
420
- function be(e) {
420
+ function ge(e) {
421
421
  const t = {
422
422
  "%FE%FF": "��",
423
423
  "%FF%FE": "��"
@@ -427,7 +427,7 @@ function be(e) {
427
427
  try {
428
428
  t[r[0]] = decodeURIComponent(r[0]);
429
429
  } catch {
430
- const a = ge(r[0]);
430
+ const a = be(r[0]);
431
431
  a !== r[0] && (t[r[0]] = a);
432
432
  }
433
433
  r = V.exec(e);
@@ -444,7 +444,7 @@ function he(e) {
444
444
  try {
445
445
  return decodeURIComponent(e);
446
446
  } catch {
447
- return be(e);
447
+ return ge(e);
448
448
  }
449
449
  }
450
450
  function Oe(e, t) {
@@ -981,7 +981,7 @@ function Ce(e, t) {
981
981
  }
982
982
  return (t === "string" ? String : Number)(e);
983
983
  }
984
- function Be(e) {
984
+ function _e(e) {
985
985
  const {
986
986
  base: t = "/",
987
987
  routes: r
@@ -1013,10 +1013,10 @@ function Be(e) {
1013
1013
  name: "locationUpdated",
1014
1014
  sid: "x2x22"
1015
1015
  }), O = r.map((u) => {
1016
- let g = u;
1016
+ let b = u;
1017
1017
  const d = [];
1018
- for (d.unshift(g.path); g.parent; )
1019
- g = g.parent, g.path !== "/" && d.unshift(g.path);
1018
+ for (d.unshift(b.path); b.parent; )
1019
+ b = b.parent, b.path !== "/" && d.unshift(b.path);
1020
1020
  const j = t === "/" ? d.join("") : [t, ...d].join(""), {
1021
1021
  build: N,
1022
1022
  parse: x
@@ -1028,24 +1028,24 @@ function Be(e) {
1028
1028
  parse: x
1029
1029
  };
1030
1030
  }), l = i.map((u) => {
1031
- const g = [];
1031
+ const b = [];
1032
1032
  if (!u)
1033
- return g;
1033
+ return b;
1034
1034
  for (const {
1035
1035
  route: d,
1036
1036
  parse: j
1037
1037
  } of O)
1038
- j(u) && g.push(d);
1039
- return g;
1040
- }), F = q({
1038
+ j(u) && b.push(d);
1039
+ return b;
1040
+ }), F = B({
1041
1041
  and: {
1042
1042
  source: n,
1043
- effect: (u, g) => {
1043
+ effect: (u, b) => {
1044
1044
  let {
1045
1045
  path: d,
1046
1046
  query: j,
1047
1047
  replace: N
1048
- } = g;
1048
+ } = b;
1049
1049
  if (!u)
1050
1050
  throw new Error("history not found");
1051
1051
  const x = {
@@ -1060,8 +1060,8 @@ function Be(e) {
1060
1060
  sid: "9h4a5f"
1061
1061
  }
1062
1062
  }), S = A((u) => {
1063
- const g = E(f);
1064
- if (g({
1063
+ const b = E(f);
1064
+ if (b({
1065
1065
  pathname: u.location.pathname,
1066
1066
  query: I({}, R.parse(u.location.search))
1067
1067
  }), !u)
@@ -1070,7 +1070,7 @@ function Be(e) {
1070
1070
  let {
1071
1071
  location: j
1072
1072
  } = d;
1073
- g({
1073
+ b({
1074
1074
  pathname: j.pathname,
1075
1075
  query: I({}, R.parse(j.search))
1076
1076
  });
@@ -1078,7 +1078,7 @@ function Be(e) {
1078
1078
  }, {
1079
1079
  name: "subscribeHistoryFx",
1080
1080
  sid: "-o0gyju"
1081
- }), b = q({
1081
+ }), g = B({
1082
1082
  and: {
1083
1083
  source: {
1084
1084
  query: o,
@@ -1086,7 +1086,7 @@ function Be(e) {
1086
1086
  },
1087
1087
  effect: async (u) => {
1088
1088
  let {
1089
- query: g,
1089
+ query: b,
1090
1090
  path: d
1091
1091
  } = u;
1092
1092
  for (const {
@@ -1095,7 +1095,7 @@ function Be(e) {
1095
1095
  } of O) {
1096
1096
  const x = N(d), [ae, oe] = [E(j.internal.close), E(j.internal.navigated)];
1097
1097
  x ? oe({
1098
- query: g,
1098
+ query: b,
1099
1099
  params: x.params
1100
1100
  }) : ae();
1101
1101
  }
@@ -1108,7 +1108,7 @@ function Be(e) {
1108
1108
  });
1109
1109
  for (const {
1110
1110
  route: u,
1111
- build: g
1111
+ build: b
1112
1112
  } of O)
1113
1113
  y({
1114
1114
  and: [{
@@ -1117,7 +1117,7 @@ function Be(e) {
1117
1117
  fn: (d) => {
1118
1118
  var j;
1119
1119
  return {
1120
- path: g(d && "params" in d ? d.params : void 0),
1120
+ path: b(d && "params" in d ? d.params : void 0),
1121
1121
  query: (j = d == null ? void 0 : d.query) !== null && j !== void 0 ? j : {},
1122
1122
  replace: d == null ? void 0 : d.replace
1123
1123
  };
@@ -1164,7 +1164,7 @@ function Be(e) {
1164
1164
  path: u.pathname,
1165
1165
  query: u.query
1166
1166
  }),
1167
- target: b
1167
+ target: g
1168
1168
  }],
1169
1169
  or: {
1170
1170
  sid: "tlaoq1"
@@ -1173,9 +1173,9 @@ function Be(e) {
1173
1173
  and: [{
1174
1174
  clock: c,
1175
1175
  source: i,
1176
- fn: (u, g) => I({
1176
+ fn: (u, b) => I({
1177
1177
  path: u
1178
- }, g),
1178
+ }, b),
1179
1179
  target: F
1180
1180
  }],
1181
1181
  or: {
@@ -1288,7 +1288,7 @@ function ze(e) {
1288
1288
  })
1289
1289
  };
1290
1290
  }
1291
- function _e(e) {
1291
+ function qe(e) {
1292
1292
  const {
1293
1293
  route: t,
1294
1294
  beforeOpen: r,
@@ -1299,7 +1299,7 @@ function _e(e) {
1299
1299
  await c(s);
1300
1300
  }, {
1301
1301
  name: "openFx",
1302
- sid: "ci1hwq"
1302
+ sid: "x22os2"
1303
1303
  }), i = ze(o.pending);
1304
1304
  return y({
1305
1305
  and: [{
@@ -1307,7 +1307,7 @@ function _e(e) {
1307
1307
  target: o
1308
1308
  }],
1309
1309
  or: {
1310
- sid: "-1u78yc"
1310
+ sid: "2j17t"
1311
1311
  }
1312
1312
  }), y({
1313
1313
  and: [{
@@ -1316,7 +1316,7 @@ function _e(e) {
1316
1316
  target: i.$params
1317
1317
  }],
1318
1318
  or: {
1319
- sid: "-1rg9zj"
1319
+ sid: "5a06m"
1320
1320
  }
1321
1321
  }), n && y({
1322
1322
  and: [{
@@ -1335,7 +1335,7 @@ function _e(e) {
1335
1335
  target: i.open
1336
1336
  }],
1337
1337
  or: {
1338
- sid: "-1ayg4z"
1338
+ sid: "lru16"
1339
1339
  }
1340
1340
  }), a && y({
1341
1341
  and: [{
@@ -1343,13 +1343,13 @@ function _e(e) {
1343
1343
  target: i.close
1344
1344
  }],
1345
1345
  or: {
1346
- sid: "-ugmc5"
1346
+ sid: "129nu0"
1347
1347
  }
1348
1348
  }), i;
1349
1349
  }
1350
1350
  export {
1351
- _e as chainRoute,
1352
- qe as createRoute,
1353
- Be as createRouter,
1351
+ qe as chainRoute,
1352
+ Be as createRoute,
1353
+ _e as createRouter,
1354
1354
  P as parameters
1355
1355
  };
package/package.json CHANGED
@@ -5,7 +5,7 @@
5
5
  "registry": "https://registry.npmjs.org/"
6
6
  },
7
7
  "private": false,
8
- "version": "0.6.0",
8
+ "version": "0.6.1",
9
9
  "description": "Router with power of effector",
10
10
  "keywords": [
11
11
  "effector",
@@ -50,8 +50,8 @@
50
50
  "@types/history": "^4.7.11"
51
51
  },
52
52
  "dependencies": {
53
- "@argon-router/paths": "^0.6.0",
53
+ "@argon-router/paths": "^0.6.1",
54
54
  "query-string": "^9.1.1"
55
55
  },
56
- "gitHead": "02a833234ffa6ca8a6d4704634f73d2451e573d0"
56
+ "gitHead": "7f4fbed2048af77d3087cc608fb2fe30c9991d9b"
57
57
  }