@argon-router/core 0.6.1 → 0.7.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 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;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const i=require("effector");function N(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 v(e){for(var t=1;t<arguments.length;t++){var r=arguments[t]!=null?arguments[t]:{};t%2?N(Object(r),!0).forEach(function(n){Y(e,n,r[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):N(Object(r)).forEach(function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(r,n))})}return e}function Y(e,t,r){return(t=Z(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function Z(e){var t=ee(e,"string");return typeof t=="symbol"?t:t+""}function ee(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 re(e){let t;const r=i.createEffect(()=>{var m;return(m=t)===null||m===void 0?void 0:m()},{name:"waitForAsyncBundleFx",sid:"-au0m0h"}),n=i.createEffect(async()=>{for(const j of(m=e.beforeOpen)!==null&&m!==void 0?m:[]){var m;await j()}},{name:"beforeOpenFx",sid:"-iy13uf"}),a=i.createEffect(async m=>{await r(),await n();const j=e.parent;return j&&await j.internal.openFx(v(v({},m??{params:{}}),{},{navigate:!1})),m},{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"}),h=i.createEvent({name:"close",sid:"-wvbr5n"}),b=i.createEvent({name:"opened",sid:"-qni80y"}),f=i.createEvent({name:"openedOnServer",sid:"eh9oki"}),y=i.createEvent({name:"openedOnClient",sid:"eet6mh"}),d=i.createEvent({name:"navigated",sid:"-rnvpuc"}),l=i.createEvent({name:"closed",sid:"w9iziz"});i.sample({and:[{clock:u,target:a}],or:{sid:"u86cfp"}});const p={};return i.sample({and:[{clock:d,fn:m=>m&&"params"in m?v({},m.params):p,target:o}],or:{sid:"ymu9q6"}}),i.split({and:[{source:d,match:()=>typeof window>"u"?"server":"client",cases:{server:f,client:y}}],or:{sid:"z4zhb3"}}),i.sample({and:[{clock:[y,f],target:b}],or:{sid:"-zf2y9u"}}),i.sample({and:[{clock:h,target:l}],or:{sid:"-z0saug"}}),i.sample({and:[{clock:[b.map(()=>!0),l.map(()=>!1)],target:s}],or:{sid:"-yy1bvn"}}),v(v({$params:o,$isOpened:s,$isPending:c,open:u,closed:l,opened:b,openedOnClient:y,openedOnServer:f},e),{},{internal:{navigated:d,close:h,openFx:a,setAsyncImport:m=>t=m},"@@unitShape":()=>({params:o,isPending:c,isOpened:s,onOpen:u})})}const te=Symbol("any"),ne=Symbol("number"),ae=Symbol("string"),oe=Symbol("array"),se=Symbol("boolean"),O={any:te,number:ne,string:ae,array:oe,boolean:se};function A(e,t){for(const r of e)if(t.includes(r))return!0;return!1}function R(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 O.any:{if(!e[r])return!1;break}case O.string:{if(!e[r]||Array.isArray(e[r]))return!1;break}case O.array:{if(!e[r]||!Array.isArray(e[r]))return!1;break}case O.number:{if(!e[r]||Array.isArray(e[r])||isNaN(parseInt(e[r]))&&isNaN(parseFloat(e[r])))return!1;break}case O.boolean:{if(!e[r]||Array.isArray(e[r])||!["0","1","false","true"].includes(e[r]))return!1;break}}}return!0}function ie(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 O.any:case O.string:case O.array:{r[n]=e[n];break}case O.number:{const s=e[n];r[n]=isNaN(parseInt(s))?parseFloat(s):parseInt(s);break}case O.boolean:{const s=e[n];r[n]=s==="1"||s==="true";break}}}return r}function ce(e){let{$query:t,navigate:r}=e;return B({$activeRoutes:i.createStore([],{name:"$activeRoutes",sid:"7ol7tr"}),$query:t,navigate:r})}function B(e){let{$activeRoutes:t,$query:r,navigate:n}=e;return a=>{const{parameters:o,forRoutes:s}=a,c=i.createStore(!1,{name:"$entered",sid:"-okbvx4"}),u=i.createEvent({name:"entered",sid:"-1bbi51"}),h=i.createEvent({name:"exited",sid:"-lw34uy"}),b=i.createEvent({name:"exit",sid:"5l9ghz"}),f=i.createEvent({name:"changeEntered",sid:"en4cc0"});return i.sample({and:[{clock:f,target:c}],or:{sid:"-gssa85"}}),i.sample({and:[{source:{activeRoutes:t,query:r},filter:y=>{let{activeRoutes:d,query:l}=y;return(!s||A(s,d))&&R(l,o)},fn:y=>{let{query:d}=y;return ie(d,o)},target:[u,f.prepend(()=>!0)]}],or:{sid:"-gehmsr"}}),i.sample({and:[{source:{activeRoutes:t,query:r,entered:c},filter:y=>{let{activeRoutes:d,query:l,entered:p}=y;return p&&!((!s||A(s,d))&&R(l,o))},target:[h.prepend(()=>{}),f.prepend(()=>!1)]}],or:{sid:"-fxzszx"}}),i.sample({and:[{clock:b,source:r,fn:(y,d)=>{if(d&&d.ignoreParams){const l={};for(const p of d.ignoreParams)y[p]&&(l[p]=y[p]);return{query:l}}return{query:{}}},target:n}],or:{sid:"-fer08a"}}),{entered:u,exited:h,exit:b}}}function ue(e){return t=>{const r=t.split("/").map(c=>c.trim()).filter(c=>c!=="");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++){const u=e[c];switch(u.type){case"const":{if(u.name!==r.shift())return null;continue}case"parameter":{const{arrayProps:h,genericProps:b,required:f}=u.payload;if(h){var o;const d=[];let l;for(;;){var s;if(l=r.shift(),!l)break;switch(b==null?void 0:b.type){case"number":{if(isNaN(+l))return null;d.push(+l);break}case"union":{if(!b.items.includes(l))return null;d.push(l);break}default:{d.push(l);break}}if(d.length>=((s=h.max)!==null&&s!==void 0?s:1/0))break}if(d.length<((o=h.min)!==null&&o!==void 0?o:0)||r.length>0&&!e[c+1])return null;a(u.name,d);break}const y=r.shift();if(f&&!y)return null;if(!y){a(u.name,void 0);continue}switch(b==null?void 0:b.type){case"number":{if(isNaN(+y))return null;a(u.name,+y);break}case"union":{if(!b.items.includes(y))return null;a(u.name,y);break}default:{a(u.name,y);break}}}}}return r.length>0?null:{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 le(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 I(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 C(e){for(var t=1;t<arguments.length;t++){var r=arguments[t]!=null?arguments[t]:{};t%2?I(Object(r),!0).forEach(function(n){de(e,n,r[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):I(Object(r)).forEach(function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(r,n))})}return e}function de(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=me(e,"string");return typeof t=="symbol"?t:t+""}function me(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 ye(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:h,name:b}=s;if(!b)throw new Error('Invalid path: "'.concat(e,'". Name for argument must be provided'));const f={type:"parameter",name:b,payload:{required:!0}};switch(u&&u==="number"&&(f.payload.genericProps={type:"number"}),u&&u.includes("|")&&(f.payload.genericProps={type:"union",items:u.split("|")}),h){case"*":{f.payload.arrayProps={};break}case"+":{f.payload.arrayProps={min:1};break}case"?":{f.payload.required=!1;break}}c&&(f.payload.arrayProps=C(C({},f.payload.arrayProps),{},{min:c[0],max:c[1]})),t.push(f)}return{parse:ue(t),build:le(t)}}const _="%[a-f0-9]{2}",D=new RegExp("("+_+")|([^%]+?)","gi"),z=new RegExp("("+_+")+","gi");function P(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([],P(r),P(n))}function be(e){try{return decodeURIComponent(e)}catch{let t=e.match(D)||[];for(let r=1;r<t.length;r++)e=P(t,r).join(""),t=e.match(D)||[];return e}}function ge(e){const t={"%FE%FF":"��","%FF%FE":"��"};let r=z.exec(e);for(;r;){try{t[r[0]]=decodeURIComponent(r[0])}catch{const a=be(r[0]);a!==r[0]&&(t[r[0]]=a)}r=z.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 he(e){if(typeof e!="string")throw new TypeError("Expected `encodedURI` to be of type `string`, got `"+typeof e+"`");try{return decodeURIComponent(e)}catch{return ge(e)}}function Oe(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 T(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 we=e=>e==null,je=e=>encodeURIComponent(e).replaceAll(/[!'()*]/g,t=>`%${t.charCodeAt(0).toString(16).toUpperCase()}`),E=Symbol("encodeFragmentIdentifier");function ve(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 Fe(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&&w(n,e).includes(e.arrayFormatSeparator);n=s?w(n,e):n;const c=o||s?n.split(e.arrayFormatSeparator).map(u=>w(u,e)):n===null?n:w(n,e);a[r]=c};case"bracket-separator":return(r,n,a)=>{const o=/(\[])$/.test(r);if(r=r.replace(/\[]$/,""),!o){a[r]=n&&w(n,e);return}const s=n===null?[]:w(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 H(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?je(e):encodeURIComponent(e):e}function w(e,t){return t.decode?he(e):e}function V(e){return Array.isArray(e)?e.sort():typeof e=="object"?V(Object.keys(e)).sort((t,r)=>Number(t)-Number(r)).map(t=>e[t]):e}function K(e){const t=e.indexOf("#");return t!==-1&&(e=e.slice(0,t)),e}function Se(e){let t="";const r=e.indexOf("#");return r!==-1&&(t=e.slice(r)),t}function U(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 x(e){e=K(e);const t=e.indexOf("?");return t===-1?"":e.slice(t+1)}function $(e,t){t={decode:!0,sort:!0,arrayFormat:"none",arrayFormatSeparator:",",parseNumbers:!1,parseBooleans:!1,types:Object.create(null),...t},H(t.arrayFormatSeparator);const r=Fe(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]=T(o,"=");s===void 0&&(s=o),c=c===void 0?null:["comma","separator","bracket-separator"].includes(t.arrayFormat)?c:w(c,t),r(w(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]=U(c,t,u)}else typeof o=="object"&&o!==null&&t.types[a]==="string"?n[a]=Object.values(o).join(t.arrayFormatSeparator):n[a]=U(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)?V(s):s,a},Object.create(null))}function L(e,t){if(!e)return"";t={encode:!0,strict:!0,arrayFormat:"none",arrayFormatSeparator:",",...t},H(t.arrayFormatSeparator);const r=s=>t.skipNull&&we(e[s])||t.skipEmptyString&&e[s]==="",n=ve(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 M(e,t){var a;t={decode:!0,...t};let[r,n]=T(e,"#");return r===void 0&&(r=e),{url:((a=r==null?void 0:r.split("?"))==null?void 0:a[0])??"",query:$(x(e),t),...t&&t.parseFragmentIdentifier&&n?{fragmentIdentifier:w(n,t)}:{}}}function Q(e,t){t={encode:!0,strict:!0,[E]:!0,...t};const r=K(e.url).split("?")[0]||"",n=x(e.url),a={...$(n,{sort:!1}),...e.query};let o=L(a,t);o&&(o=`?${o}`);let s=Se(e.url);if(typeof e.fragmentIdentifier=="string"){const c=new URL(r);c.hash=e.fragmentIdentifier,s=t[E]?c.hash:`#${e.fragmentIdentifier}`}return`${r}${o}${s}`}function J(e,t,r){r={parseFragmentIdentifier:!0,[E]:!1,...r};const{url:n,query:a,fragmentIdentifier:o}=M(e,r);return Q({url:n,query:Oe(a,t),fragmentIdentifier:o},r)}function ke(e,t,r){const n=Array.isArray(t)?a=>!t.includes(a):(a,o)=>!t(a,o);return J(e,n,r)}const S=Object.freeze(Object.defineProperty({__proto__:null,exclude:ke,extract:x,parse:$,parseUrl:M,pick:J,stringify:L,stringifyUrl:Q},Symbol.toStringTag,{value:"Module"}));function q(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 k(e){for(var t=1;t<arguments.length;t++){var r=arguments[t]!=null?arguments[t]:{};t%2?q(Object(r),!0).forEach(function(n){Pe(e,n,r[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):q(Object(r)).forEach(function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(r,n))})}return e}function Pe(e,t,r){return(t=Ee(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function Ee(e){var t=xe(e,"string");return typeof t=="symbol"?t:t+""}function xe(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 G(){const e=i.createStore(null,{and:{serialize:"ignore"},name:"$history",sid:"o3gup1"}),t=i.createStore({query:{},path:null},{name:"$locationState",sid:"-kglf8k"}),r=t.map(f=>f.query),n=t.map(f=>f.path),a=i.createEvent({name:"setHistory",sid:"kp1u42"}),o=i.createEvent({name:"navigate",sid:"3qh547"}),s=i.createEvent({name:"back",sid:"-3oja8m"}),c=i.createEvent({name:"forward",sid:"-rc4ibg"}),u=i.createEvent({name:"locationUpdated",sid:"5yi2di"}),h=i.attach({and:{source:e,effect:(f,y)=>{let{path:d,query:l,replace:p}=y;if(!f)throw new Error("history not found");const m={pathname:d,search:"?".concat(S.stringify(l))};p?f.replace(m):f.push(m)}},or:{name:"navigateFx",sid:"klmj1f"}}),b=i.createEffect(f=>{const y=i.scopeBind(u);if(y({pathname:f.location.pathname,query:k({},S.parse(f.location.search))}),!f)throw new Error;f.listen(d=>{let{location:l}=d;y({pathname:l.pathname,query:k({},S.parse(l.search))})})},{name:"subscribeHistoryFx",sid:"xpn9z4"});return i.sample({and:[{clock:a,target:e}],or:{sid:"-h2wuu"}}),i.sample({and:[{clock:e,filter:Boolean,target:b}],or:{sid:"-ebxw1"}}),i.sample({and:[{clock:u,fn:f=>({path:f.pathname,query:f.query}),target:t}],or:{sid:"ii4q"}}),i.sample({and:[{clock:o,source:n,fn:(f,y)=>k({path:f},y),target:h}],or:{sid:"h0bxk"}}),{$history:e,$locationState:t,$query:r,$path:n,setHistory:a,navigate:o,back:s,forward:c,locationUpdated:u,trackQuery:ce({$query:r,navigate:o})}}function $e(e){const{base:t="/",routes:r}=e,{$path:n,$query:a,back:o,forward:s,navigate:c,setHistory:u,locationUpdated:h}=G(),b=r.map(d=>{let l=d;const p=[];for(p.unshift(l.path);l.parent;)l=l.parent,l.path!=="/"&&p.unshift(l.path);const m=t==="/"?p.join(""):[t,...p].join(""),{build:j,parse:F}=ye(m);return{route:d,path:m,build:j,parse:F}}),f=n.map(d=>{const l=[];if(!d)return l;for(const{route:p,parse:m}of b)m(d)&&l.push(p);return l}),y=i.attach({and:{source:{query:a,path:n},effect:async d=>{let{query:l,path:p}=d;for(const{route:m,parse:j}of b){const F=j(p),[W,X]=[i.scopeBind(m.internal.close),i.scopeBind(m.internal.navigated)];F?X({query:l,params:F.params}):W()}}},or:{name:"openRoutesByPathFx",sid:"zadfp8"}});for(const{route:d,build:l}of b)i.sample({and:[{clock:d.internal.openFx.doneData,filter:p=>(p==null?void 0:p.navigate)!==!1,fn:p=>{var m;return{path:l(p&&"params"in p?p.params:void 0),query:(m=p==null?void 0:p.query)!==null&&m!==void 0?m:{},replace:p==null?void 0:p.replace}},target:c}],or:{sid:"ek94wf"}});return i.sample({and:[{clock:h,fn:d=>({path:d.pathname,query:d.query}),target:y}],or:{sid:"fg579n"}}),{$query:a,$path:n,$activeRoutes:f,back:o,forward:s,navigate:c,routes:r,setHistory:u,mappedRoutes:b,trackQuery:B({$activeRoutes:f,$query:a,navigate:c}),"@@unitShape":()=>({query:a,path:n,activeRoutes:f,onBack:o,onForward:s,onNavigate:c})}}function Ne(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"}),h=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:h}],or:{sid:"-u77hy7"}}),i.sample({and:[{clock:[o.map(()=>!0),h.map(()=>!1)],target:r}],or:{sid:"-u4gize"}}),{$params:t,$isOpened:r,$isPending:n,open:a,opened:o,openedOnClient:c,openedOnServer:s,close:u,closed:h,path:null,"@@unitShape":()=>({params:t,isOpened:r,isPending:n,onOpen:a})}}function Ae(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=Ne(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=Ae;exports.createRoute=re;exports.createRouter=$e;exports.createRouterControls=G;exports.parameters=O;
package/dist/index.d.ts CHANGED
@@ -141,6 +141,42 @@ export declare function createRoute<T extends string, Params = ParseUrlParams<T>
141
141
  */
142
142
  export declare function createRouter(config: RouterConfig): Router;
143
143
 
144
+ /**
145
+ * @description Creates argon router controls
146
+ * @returns `RouterControls`
147
+ * @link https://movpushmov.dev/argon-router/core/create-router-controls.html
148
+ *
149
+ * `be careful! router controls need to be initialzed with setHistory event,
150
+ * which requires memory or browser history from history package.`
151
+ *
152
+ * @example ```ts
153
+ * import { createRouterControls } from '@argon-router/core';
154
+ *
155
+ * // create controls
156
+ * const controls = createRouterControls();
157
+ *
158
+ * // override path or query
159
+ * sample({
160
+ * clock: goToPage,
161
+ * fn: () => ({ path: '/page' }),
162
+ * target: controls.navigate,
163
+ * });
164
+ *
165
+ * sample({
166
+ * clock: addQuery,
167
+ * fn: () => ({ query: { param1: 'hello', params2: [1, 2] } }),
168
+ * target: controls.navigate,
169
+ * });
170
+ *
171
+ * ```
172
+ */
173
+ export declare function createRouterControls(): RouterControls;
174
+
175
+ declare type LocationState = {
176
+ path: string;
177
+ query: Query;
178
+ };
179
+
144
180
  export declare type NavigatePayload = {
145
181
  query: Query;
146
182
  path?: string;
@@ -267,6 +303,47 @@ declare interface RouterConfig {
267
303
  routes: Route<any>[];
268
304
  }
269
305
 
306
+ declare interface RouterControls {
307
+ $history: StoreWritable<History_2 | null>;
308
+ $locationState: StoreWritable<LocationState>;
309
+ $query: Store<Query>;
310
+ $path: Store<string>;
311
+ setHistory: EventCallable<History_2>;
312
+ navigate: EventCallable<NavigatePayload>;
313
+ back: EventCallable<void>;
314
+ forward: EventCallable<void>;
315
+ locationUpdated: EventCallable<{
316
+ pathname: string;
317
+ query: Query;
318
+ }>;
319
+ /**
320
+ * @description Creates query params tracker
321
+ * @param config Query tacker config
322
+ * @link https://movpushmov.dev/argon-router/core/track-query.html
323
+ * @example ```ts
324
+ * import { parameters } from '@argon-router/core';
325
+ * import { router } from '@shared/router';
326
+ * import { createDialog } from '...';
327
+ *
328
+ * const dialog = createDialog();
329
+ * const tracker = router.trackQuery({
330
+ * dialog: 'team-member',
331
+ * id: parameters.number,
332
+ * });
333
+ *
334
+ * // triggered for:
335
+ * // /team?dialog=team-member&id=1
336
+ * // /team?dialog=team-member&id=10000
337
+ *
338
+ * // not triggered for:
339
+ * // /team?dialog=team&id=1
340
+ * // /team?id=10000
341
+ * // /team?dialog=team&id=not_number
342
+ * ```
343
+ */
344
+ trackQuery: <T extends RawConfig>(config: Omit<QueryTrackerConfig<T>, 'forRoutes'>) => QueryTracker<T>;
345
+ }
346
+
270
347
  declare type StringParameter = typeof stringSymbol;
271
348
 
272
349
  declare const stringSymbol: unique symbol;