@argon-router/core 0.9.0 → 0.10.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/dist/index.cjs +1 -1
- package/dist/index.d.ts +22 -0
- package/dist/index.js +152 -62
- package/package.json +3 -3
package/dist/index.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("effector"),a=require("query-string");const r={any:Symbol("any"),number:Symbol("number"),string:Symbol("string"),array:Symbol("array"),boolean:Symbol("boolean")};function t(e,a){for(const r of e)if(a.includes(r))return!0;return!1}function n(e,a){for(const t in a){const n=a[t];if(Array.isArray(n)&&(!e[t]||JSON.stringify(n)!==e[t]))return!1;switch(typeof n){case"number":if(!e[t]||n.toString()!==e[t])return!1;break;case"object":if(!e[t]||JSON.stringify(n)!==e[t])return!1;break;case"string":if(!e[t]||n!==e[t])return!1;break;case"boolean":if(!e[t]||!["0","1","false","true"].includes(e[t]))return!1}switch(n){case r.any:if(!e[t])return!1;break;case r.string:if(!e[t]||Array.isArray(e[t]))return!1;break;case r.array:if(!e[t]||!Array.isArray(e[t]))return!1;break;case r.number:if(!e[t]||Array.isArray(e[t])||isNaN(parseInt(e[t]))&&isNaN(parseFloat(e[t])))return!1;break;case r.boolean:if(!e[t]||Array.isArray(e[t])||!["0","1","false","true"].includes(e[t]))return!1}}return!0}function s(a){let{$query:r,navigate:t}=a;return o({$activeRoutes:e.createStore([],{name:"$activeRoutes",sid:"7ol7tr"}),$query:r,navigate:t})}function o(a){let{$activeRoutes:s,$query:o,navigate:i}=a;return a=>{const{parameters:c,forRoutes:l}=a,p=e.createStore(!1,{name:"$entered",sid:"-okbvx4"}),u=e.createEvent({name:"entered",sid:"-1bbi51"}),d=e.createEvent({name:"exited",sid:"-lw34uy"}),m=e.createEvent({name:"exit",sid:"5l9ghz"}),f=e.createEvent({name:"changeEntered",sid:"en4cc0"});return e.sample({and:[{clock:f,target:p}],or:{sid:"-gssa85"}}),e.sample({and:[{source:{activeRoutes:s,query:o},filter:e=>{let{activeRoutes:a,query:r}=e;return(!l||t(l,a))&&n(r,c)},fn:e=>{let{query:a}=e;return function(e,a){const t={};for(const n in a){const s=a[n],o=e[n];if(Array.isArray(s)){const a=e[n];t[n]=a;continue}switch(typeof s){case"number":t[n]=isNaN(parseInt(o))?parseFloat(o):parseInt(o);break;case"object":t[n]=JSON.parse(o);break;case"string":t[n]=o;case"boolean":t[n]="1"===o||"true"===o}switch(s){case r.any:case r.string:case r.array:t[n]=e[n];break;case r.number:{const a=e[n];t[n]=isNaN(parseInt(a))?parseFloat(a):parseInt(a);break}case r.boolean:{const a=e[n];t[n]="1"===a||"true"===a;break}}}return t}(a,c)},target:[u,f.prepend(()=>!0)]}],or:{sid:"-gehmsr"}}),e.sample({and:[{source:{activeRoutes:s,query:o,entered:p},filter:e=>{let{activeRoutes:a,query:r,entered:s}=e;return s&&!((!l||t(l,a))&&n(r,c))},target:[d.prepend(()=>{}),f.prepend(()=>!1)]}],or:{sid:"-fxzszx"}}),e.sample({and:[{clock:m,source:o,fn:(e,a)=>{if(a&&a.ignoreParams){const r={};for(const t of a.ignoreParams)e[t]&&(r[t]=e[t]);return{query:r}}return{query:{}}},target:i}],or:{sid:"-fer08a"}}),{entered:u,exited:d,exit:m}}}function i(e){return a=>{const r=a.split("/").map(e=>e.trim()).filter(e=>""!==e);let t=null;function n(e,a){t||(t={}),t[e]=a}if(0===e.length)return 0===r.length?{path:a,params:null}:null;for(let s=0;s<e.length;s++){const a=e[s];switch(a.type){case"const":if(a.name!==r.shift())return null;continue;case"parameter":{const{arrayProps:t,genericProps:o,required:i}=a.payload;if(t){const i=[];let c;for(;c=r.shift(),c;){switch(null==o?void 0:o.type){case"number":if(isNaN(+c))return null;i.push(+c);break;case"union":if(!o.items.includes(c))return null;i.push(c);break;default:i.push(c)}if(i.length>=(t.max??1/0))break}if(i.length<(t.min??0))return null;if(r.length>0&&!e[s+1])return null;n(a.name,i);break}const c=r.shift();if(i&&!c)return null;if(!c){n(a.name,void 0);continue}switch(null==o?void 0:o.type){case"number":if(isNaN(+c))return null;n(a.name,+c);break;case"union":if(!o.items.includes(c))return null;n(a.name,c);break;default:n(a.name,c)}}}}return r.length>0?null:{path:a,params:t}}}function c(e){if(!e)return null;const a=e[1];let r,t,n;for(const s of e.slice(2))s&&(s.includes("<")?r=s.replaceAll(/\s/g,"").replace("<","").replace(">",""):(s.includes("{")&&(t=s.replace("{","").replace("}","").split(",").map(e=>parseInt(e))),["*","?","+"].includes(s)&&(n=s)));return{name:a,genericProps:r,arrayProps:t,modificator:n}}function l(e){return a=>{const r=[];if(0===e.length)return"/";for(const t of e)switch(t.type){case"const":r.push(t.name);break;case"parameter":if(!a[t.name])continue;if(Array.isArray(a[t.name]))for(const e of a[t.name])r.push(e.toString());else r.push(a[t.name].toString())}return`/${r.join("/")}`}}function p(){const r=e.createStore(null,{and:{serialize:"ignore"},name:"$history",sid:"-ld7lzl"}),t=e.createStore({query:{},path:null},{name:"$locationState",sid:"-4u3w85"}),n=t.map(e=>e.query),o=t.map(e=>e.path),i=e.createEvent({name:"setHistory",sid:"-ormmkk"}),c=e.createEvent({name:"navigate",sid:"tawqep"}),l=e.createEvent({name:"back",sid:"bxy8rt"}),p=e.createEvent({name:"forward",sid:"-bpmzb1"}),u=e.createEvent({name:"locationUpdated",sid:"lkzldx"}),d=e.attach({and:{source:r,effect:(e,r)=>{let{path:t,query:n,replace:s}=r;if(!e)throw new Error("history not found");const o={pathname:t,search:`?${a.stringify(n)}`};s?e.replace(o):e.push(o)}},or:{name:"navigateFx",sid:"-ov1xn7"}}),m=e.createEffect(r=>{const t=e.scopeBind(u);if(t({pathname:r.location.pathname,query:{...a.parse(r.location.search)}}),!r)throw new Error;r.listen(e=>{let{location:r}=e;t({pathname:r.pathname,query:{...a.parse(r.search)}})})},{name:"subscribeHistoryFx",sid:"-m60vds"});return e.sample({and:[{clock:i,target:r}],or:{sid:"ii4q"}}),e.sample({and:[{clock:r,filter:Boolean,target:m}],or:{sid:"39h3j"}}),e.sample({and:[{clock:u,fn:e=>({path:e.pathname,query:e.query}),target:t}],or:{sid:"i3x4a"}}),e.sample({and:[{clock:c,source:o,fn:(e,a)=>({path:e,...a}),target:d}],or:{sid:"ylqx4"}}),{$history:r,$locationState:t,$query:n,$path:o,setHistory:i,navigate:c,back:l,forward:p,locationUpdated:u,trackQuery:s({$query:n,navigate:c})}}exports.chainRoute=function(a){const{route:r,beforeOpen:t,openOn:n,cancelOn:s}=a;let o;const i=e.createEffect(()=>null==o?void 0:o(),{name:"waitForAsyncBundleFx",sid:"-utsi21"}),c=e.createEffect(async e=>{await i();for(const a of[].concat(t))await a(e)},{name:"openFx",sid:"-kgdclv"}),l=function(a){const r=e.createStore(null,{name:"$params",sid:"-grvyb1"}),t=e.createStore(!1,{name:"$isOpened",sid:"-w4cbyq"}),n=a,s=e.createEvent({name:"open",sid:"8yat5e"}),o=e.createEvent({name:"opened",sid:"-rsfhnq"}),i=e.createEvent({name:"openedOnServer",sid:"m42ioq"}),c=e.createEvent({name:"openedOnClient",sid:"-bstrdb"}),l=e.createEvent({name:"close",sid:"41ihvs"}),p=e.createEvent({name:"closed",sid:"vdm6z6"}),u=e.createEvent({name:"cancelled",sid:"-r20ekt"});return e.sample({and:[{clock:s,target:o}],or:{sid:"-ukycs8"}}),e.split({and:[{source:o,match:()=>"undefined"==typeof window?"server":"client",cases:{server:i,client:c}}],or:{sid:"-u6npcu"}}),e.sample({and:[{clock:l,target:p}],or:{sid:"-tq5vk0"}}),e.sample({and:[{clock:[o.map(()=>!0),p.map(()=>!1)],target:t}],or:{sid:"-tnewl7"}}),{$params:r,$isOpened:t,$isPending:n,open:s,opened:o,openedOnClient:c,openedOnServer:i,close:l,closed:p,cancelled:u,path:null,"@@unitShape":()=>({params:r,isOpened:t,isPending:n,onOpen:s})}}(c.pending);return e.sample({and:[{clock:r.opened,target:c}],or:{sid:"102heu"}}),e.sample({and:[{clock:r.opened,fn:e=>e&&"params"in e?e.params:null,target:l.$params}],or:{sid:"12tgdn"}}),n&&e.sample({and:[{clock:n,source:{params:l.$params},fn:e=>{let{params:a}=e;return{params:a}},target:l.open}],or:{sid:"1jba87"}}),s&&(e.sample({and:[{clock:[r.closed].concat(s),target:l.close}],or:{sid:"1zt411"}}),e.sample({and:[{clock:[].concat(s),target:l.cancelled}],or:{sid:"22k2zu"}})),Object.assign(l,{internal:{setAsyncImport:e=>o=e}})},exports.createRoute=function(a){let r;const t=e.createEffect(()=>null==r?void 0:r(),{name:"waitForAsyncBundleFx",sid:"1y76ms"}),n=e.createEffect(async()=>{for(const e of a.beforeOpen??[])await e()},{name:"beforeOpenFx",sid:"-65tb76"}),s=e.createEffect(async e=>{await t(),await n();const r=a.parent;return r&&await r.internal.openFx({...e??{params:{}},navigate:!1}),e},{name:"openFx",sid:"p3u4q7"}),o=e.createStore({},{name:"$params",sid:"-a34rm3"}),i=e.createStore(!1,{name:"$isOpened",sid:"7m6f5g"}),c=s.pending,l=e.createEvent({name:"open",sid:"ur5fa6"}),p=e.createEvent({name:"close",sid:"-k33yie"}),u=e.createEvent({name:"opened",sid:"-nt8hns"}),d=e.createEvent({name:"openedOnServer",sid:"hbjexo"}),m=e.createEvent({name:"openedOnClient",sid:"h92wzn"}),f=e.createEvent({name:"navigated",sid:"-8amrhe"}),y=e.createEvent({name:"closed",sid:"-pql6th"});e.sample({and:[{clock:l,target:s}],or:{sid:"ymah4t"}});const h={};return e.sample({and:[{clock:f,fn:e=>e&&"params"in e?{...e.params}:h,target:o}],or:{sid:"z1opqx"}}),e.split({and:[{source:f,match:()=>"undefined"==typeof window?"server":"client",cases:{server:d,client:m}}],or:{sid:"-zha4na"}}),e.sample({and:[{clock:[m,d],target:u}],or:{sid:"-z08i93"}}),e.sample({and:[{clock:p,target:y}],or:{sid:"-yxhjaa"}}),e.sample({and:[{clock:[u.map(()=>!0),y.map(()=>!1)],target:i}],or:{sid:"-yj6vuw"}}),{$params:o,$isOpened:i,$isPending:c,open:l,closed:y,opened:u,openedOnClient:m,openedOnServer:d,...a,internal:{navigated:f,close:p,openFx:s,setAsyncImport:e=>r=e},"@@unitShape":()=>({params:o,isPending:c,isOpened:i,onOpen:l})}},exports.createRouter=function(a){const{base:r="/",routes:t}=a,{$path:n,$query:s,back:u,forward:d,navigate:m,setHistory:f,locationUpdated:y}=p(),h=t.map(e=>{let a=e;const t=[];for(t.unshift(a.path);a.parent;)a=a.parent,"/"!==a.path&&t.unshift(a.path);const n="/"===r?t.join(""):[r,...t].join(""),{build:s,parse:o}=function(e){const a=[],r=/:(\w+)(<[\s?\w|]+>)?({\d+\,\d+})?([+*?])?/,t=e.split("/").filter(Boolean);for(let n=0;n<t.length;n++){const s=t[n];if(!s)continue;const o=c(s.match(r));if(!o){a.push({type:"const",name:s,payload:void 0});continue}const{arrayProps:i,genericProps:l,modificator:p,name:u}=o;if(!u)throw new Error(`Invalid path: "${e}". Name for argument must be provided`);const d={type:"parameter",name:u,payload:{required:!0}};switch(l&&"number"===l&&(d.payload.genericProps={type:"number"}),l&&l.includes("|")&&(d.payload.genericProps={type:"union",items:l.split("|")}),p){case"*":d.payload.arrayProps={};break;case"+":d.payload.arrayProps={min:1};break;case"?":d.payload.required=!1}i&&(d.payload.arrayProps={...d.payload.arrayProps,min:i[0],max:i[1]}),a.push(d)}return{parse:i(a),build:l(a)}}(n);return{route:e,path:n,build:s,parse:o}}),g=n.map(e=>{const a=[];if(!e)return a;for(const{route:r,parse:t}of h)t(e)&&a.push(r);return a}),v=e.attach({and:{source:{query:s,path:n},effect:async a=>{let{query:r,path:t}=a;for(const{route:n,parse:s}of h){const a=s(t),[o,i]=[e.scopeBind(n.internal.close),e.scopeBind(n.internal.navigated)];a?i({query:r,params:a.params}):o()}}},or:{name:"openRoutesByPathFx",sid:"-3zl7vq"}});for(const{route:o,build:i}of h)e.sample({and:[{clock:o.internal.openFx.doneData,filter:e=>!1!==(null==e?void 0:e.navigate),fn:e=>({path:i(e&&"params"in e?e.params:void 0),query:(null==e?void 0:e.query)??{},replace:null==e?void 0:e.replace}),target:m}],or:{sid:"exzzqg"}});return e.sample({and:[{clock:y,fn:e=>({path:e.pathname,query:e.query}),target:v}],or:{sid:"ficdn3"}}),{$query:s,$path:n,$activeRoutes:g,back:u,forward:d,navigate:m,routes:t,setHistory:f,mappedRoutes:h,trackQuery:o({$activeRoutes:g,$query:s,navigate:m}),"@@unitShape":()=>({query:s,path:n,activeRoutes:g,onBack:u,onForward:d,onNavigate:m})}},exports.createRouterControls=p,exports.parameters=r;
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("effector"),a=require("query-string"),r=require("patronum");const n={any:Symbol("any"),number:Symbol("number"),string:Symbol("string"),array:Symbol("array"),boolean:Symbol("boolean")};function t(e,a){for(const r of e)if(a.includes(r))return!0;return!1}function s(e,a){for(const r in a){const t=a[r];if(Array.isArray(t)&&(!e[r]||JSON.stringify(t)!==e[r]))return!1;switch(typeof t){case"number":if(!e[r]||t.toString()!==e[r])return!1;break;case"object":if(!e[r]||JSON.stringify(t)!==e[r])return!1;break;case"string":if(!e[r]||t!==e[r])return!1;break;case"boolean":if(!e[r]||!["0","1","false","true"].includes(e[r]))return!1}switch(t){case n.any:if(!e[r])return!1;break;case n.string:if(!e[r]||Array.isArray(e[r]))return!1;break;case n.array:if(!e[r]||!Array.isArray(e[r]))return!1;break;case n.number:if(!e[r]||Array.isArray(e[r])||isNaN(parseInt(e[r]))&&isNaN(parseFloat(e[r])))return!1;break;case n.boolean:if(!e[r]||Array.isArray(e[r])||!["0","1","false","true"].includes(e[r]))return!1}}return!0}function o(a){let{$query:r,navigate:n}=a;return i({$activeRoutes:e.createStore([],{name:"$activeRoutes",sid:"85ms46"}),$query:r,navigate:n})}function i(a){let{$activeRoutes:r,$query:o,navigate:i}=a;return a=>{const{parameters:c,forRoutes:l}=a,p=e.createStore(!1,{name:"$entered",sid:"-mo5ecc"}),d=e.createEvent({name:"entered",sid:"kuzfr"}),u=e.createEvent({name:"exited",sid:"-jzwna6"}),m=e.createEvent({name:"exit",sid:"7hfy2r"}),f=e.createEvent({name:"changeEntered",sid:"qh8w6v"});return e.sample({and:[{clock:f,target:p}],or:{sid:"-gf1fe4"}}),e.sample({and:[{source:{activeRoutes:r,query:o},filter:e=>{let{activeRoutes:a,query:r}=e;return(!l||t(l,a))&&s(r,c)},fn:e=>{let{query:a}=e;return function(e,a){const r={};for(const t in a){const s=a[t],o=e[t];if(Array.isArray(s)){const a=e[t];r[t]=a;continue}switch(typeof s){case"number":r[t]=isNaN(parseInt(o))?parseFloat(o):parseInt(o);break;case"object":r[t]=JSON.parse(o);break;case"string":r[t]=o;case"boolean":r[t]="1"===o||"true"===o}switch(s){case n.any:case n.string:case n.array:r[t]=e[t];break;case n.number:{const a=e[t];r[t]=isNaN(parseInt(a))?parseFloat(a):parseInt(a);break}case n.boolean:{const a=e[t];r[t]="1"===a||"true"===a;break}}}return r}(a,c)},target:[d,f.prepend(()=>!0)]}],or:{sid:"-gcagfb"}}),e.sample({and:[{source:{activeRoutes:r,query:o,entered:p},filter:e=>{let{activeRoutes:a,query:r,entered:n}=e;return n&&!((!l||t(l,a))&&s(r,c))},target:[u.prepend(()=>{}),f.prepend(()=>!1)]}],or:{sid:"-fvsmmh"}}),e.sample({and:[{clock:m,source:o,fn:(e,a)=>{if(a&&a.ignoreParams){const r={};for(const n of a.ignoreParams)e[n]&&(r[n]=e[n]);return{query:r}}return{query:{}}},target:i}],or:{sid:"-f105e9"}}),{entered:d,exited:u,exit:m}}}function c(e){return a=>{const r=a.split("/").map(e=>e.trim()).filter(e=>""!==e);let n=null;function t(e,a){n||(n={}),n[e]=a}if(0===e.length)return 0===r.length?{path:a,params:null}:null;for(let s=0;s<e.length;s++){const a=e[s];switch(a.type){case"const":if(a.name!==r.shift())return null;continue;case"parameter":{const{arrayProps:n,genericProps:o,required:i}=a.payload;if(n){const i=[];let c;for(;c=r.shift(),c;){switch(null==o?void 0:o.type){case"number":if(isNaN(+c))return null;i.push(+c);break;case"union":if(!o.items.includes(c))return null;i.push(c);break;default:i.push(c)}if(i.length>=(n.max??1/0))break}if(i.length<(n.min??0))return null;if(r.length>0&&!e[s+1])return null;t(a.name,i);break}const c=r.shift();if(i&&!c)return null;if(!c){t(a.name,void 0);continue}switch(null==o?void 0:o.type){case"number":if(isNaN(+c))return null;t(a.name,+c);break;case"union":if(!o.items.includes(c))return null;t(a.name,c);break;default:t(a.name,c)}}}}return r.length>0?null:{path:a,params:n}}}function l(e){if(!e)return null;const a=e[1];let r,n,t;for(const s of e.slice(2))s&&(s.includes("<")?r=s.replaceAll(/\s/g,"").replace("<","").replace(">",""):(s.includes("{")&&(n=s.replace("{","").replace("}","").split(",").map(e=>parseInt(e))),["*","?","+"].includes(s)&&(t=s)));return{name:a,genericProps:r,arrayProps:n,modificator:t}}function p(e){return a=>{const r=[];if(0===e.length)return"/";for(const n of e)switch(n.type){case"const":r.push(n.name);break;case"parameter":if(!a[n.name])continue;if(Array.isArray(a[n.name]))for(const e of a[n.name])r.push(e.toString());else r.push(a[n.name].toString())}return`/${r.join("/")}`}}function d(){const r=e.createStore(null,{and:{serialize:"ignore"},name:"$history",sid:"-ld7lzl"}),n=e.createStore({query:{},path:null},{name:"$locationState",sid:"-4u3w85"}),t=n.map(e=>e.query),s=n.map(e=>e.path),i=e.createEvent({name:"setHistory",sid:"-ormmkk"}),c=e.createEvent({name:"navigate",sid:"tawqep"}),l=e.createEvent({name:"back",sid:"bxy8rt"}),p=e.createEvent({name:"forward",sid:"-bpmzb1"}),d=e.createEvent({name:"locationUpdated",sid:"lkzldx"}),u=e.attach({and:{source:r,effect:(e,r)=>{let{path:n,query:t,replace:s}=r;if(!e)throw new Error("history not found");const o={pathname:n,search:`?${a.stringify(t)}`};s?e.replace(o):e.push(o)}},or:{name:"navigateFx",sid:"-ov1xn7"}}),m=e.createEffect(r=>{const n=e.scopeBind(d);if(n({pathname:r.location.pathname,query:{...a.parse(r.location.search)}}),!r)throw new Error;r.listen(e=>{let{location:r}=e;n({pathname:r.pathname,query:{...a.parse(r.search)}})})},{name:"subscribeHistoryFx",sid:"-m60vds"});return e.sample({and:[{clock:i,target:r}],or:{sid:"ii4q"}}),e.sample({and:[{clock:r,filter:Boolean,target:m}],or:{sid:"39h3j"}}),e.sample({and:[{clock:d,fn:e=>({path:e.pathname,query:e.query}),target:n}],or:{sid:"i3x4a"}}),e.sample({and:[{clock:c,source:s,fn:(e,a)=>({path:e,...a}),target:u}],or:{sid:"ylqx4"}}),{$history:r,$locationState:n,$query:t,$path:s,setHistory:i,navigate:c,back:l,forward:p,locationUpdated:d,trackQuery:o({$query:t,navigate:c})}}function u(){let a=arguments.length>0&&void 0!==arguments[0]?arguments[0]:e.createStore(!1,{and:{name:"pending",sid:"r89aiv"},name:"pending",sid:"r89aiv"});const r=e.createStore(null,{name:"$params",sid:"-ftspin"}),n=e.createStore(!1,{name:"$isOpened",sid:"-v6936c"}),t=a,s=e.createEvent({name:"open",sid:"juc47v"}),o=e.createEvent({name:"opened",sid:"-quc8vc"}),i=e.createEvent({name:"openedOnServer",sid:"n25rh4"}),c=e.createEvent({name:"openedOnClient",sid:"-auqikx"}),l=e.createEvent({name:"close",sid:"4zlqo6"}),p=e.createEvent({name:"closed",sid:"wbpfrk"}),d=e.createEvent({name:"cancelled",sid:"-q3x5sf"});return e.sample({and:[{clock:s,target:o}],or:{sid:"-u8b34x"}}),e.split({and:[{source:o,match:()=>"undefined"==typeof window?"server":"client",cases:{server:i,client:c}}],or:{sid:"-u5k464"}}),e.sample({and:[{clock:l,target:p}],or:{sid:"-tp2ada"}}),e.sample({and:[{clock:[o.map(()=>!0),p.map(()=>!1)],target:n}],or:{sid:"-tarmxw"}}),{$params:r,$isOpened:n,$isPending:t,open:s,opened:o,openedOnClient:c,openedOnServer:i,close:l,closed:p,cancelled:d,path:null,"@@unitShape":()=>({params:r,isOpened:n,isPending:t,onOpen:s})}}exports.chainRoute=function(a){const{route:r,beforeOpen:n,openOn:t,cancelOn:s}=a;let o;const i=e.createEffect(()=>null==o?void 0:o(),{name:"waitForAsyncBundleFx",sid:"-tvp99n"}),c=e.createEffect(async e=>{await i();for(const a of[].concat(n))await a(e)},{name:"openFx",sid:"-9kc1je"}),l=u(c.pending);return e.sample({and:[{clock:r.opened,target:c}],or:{sid:"1162lk"}}),e.sample({and:[{clock:r.opened,fn:e=>e&&"params"in e?e.params:null,target:l.$params}],or:{sid:"13x1kd"}}),t&&e.sample({and:[{clock:t,source:{params:l.$params},fn:e=>{let{params:a}=e;return{params:a}},target:l.open}],or:{sid:"1kevex"}}),s&&(e.sample({and:[{clock:[r.closed].concat(s),target:l.close}],or:{sid:"20wp7r"}}),e.sample({and:[{clock:[].concat(s),target:l.cancelled}],or:{sid:"2f7cn5"}})),Object.assign(l,{internal:{setAsyncImport:e=>o=e}})},exports.createRoute=function(a){let r;const n=e.createEffect(async e=>{await f(),await y();const r=a.parent;return r&&await r.internal.openFx({...e??{params:{}},navigate:!1}),e},{name:"openFx",sid:"awhgwd"}),t=e.createStore({},{name:"$params",sid:"-oahffx"}),s=e.createStore(!1,{name:"$isOpened",sid:"-6l68oe"}),o=n.pending,i=e.createEvent({name:"open",sid:"gjsrgc"}),c=e.createEvent({name:"close",sid:"-yagmc8"}),l=e.createEvent({name:"opened",sid:"x0iwhi"}),p=e.createEvent({name:"openedOnServer",sid:"346r3u"}),d=e.createEvent({name:"openedOnClient",sid:"31q95t"}),u=e.createEvent({name:"navigated",sid:"-t30l0x"}),m=e.createEvent({name:"closed",sid:"uue4ce"}),f=e.createEffect(()=>null==r?void 0:r(),{name:"waitForAsyncBundleFx",sid:"-nml5ho"}),y=e.createEffect(async()=>{for(const e of a.beforeOpen??[])await e()},{name:"beforeOpenFx",sid:"-vqlnbm"}),g=e.attach({and:{effect:n},or:{name:"navigatedFx",sid:"a4yadj"}}),h={};return e.sample({and:[{clock:i,target:n}],or:{sid:"ynxuww"}}),e.sample({and:[{clock:u,fn:e=>({navigate:!1,...e}),target:g}],or:{sid:"z28ica"}}),e.sample({and:[{clock:g.doneData,fn:e=>e&&"params"in e?{...e.params}:h,target:t}],or:{sid:"z5j9wg"}}),e.sample({and:[{clock:g.failData,fn:()=>h,target:t}],or:{sid:"-z1vw16"}}),e.split({and:[{source:g.doneData,match:()=>"undefined"==typeof window?"server":"client",cases:{server:p,client:d}}],or:{sid:"-yyl4h0"}}),e.sample({and:[{clock:[d,p],target:l}],or:{sid:"-yhji2t"}}),e.sample({and:[{clock:c,target:m}],or:{sid:"-y38unf"}}),e.sample({and:[{clock:[l.map(()=>!0),m.map(()=>!1)],target:s}],or:{sid:"-y0hvom"}}),{$params:t,$isOpened:s,$isPending:o,open:i,closed:m,opened:l,openedOnClient:d,openedOnServer:p,...a,internal:{navigated:u,close:c,openFx:n,setAsyncImport:e=>r=e},"@@unitShape":()=>({params:t,isPending:o,isOpened:s,onOpen:i})}},exports.createRouter=function(a){const{base:r="/",routes:n}=a,{$path:t,$query:s,back:o,forward:u,navigate:m,setHistory:f,locationUpdated:y}=d(),g=n.map(e=>{let a=e;const n=[];for(n.unshift(a.path);a.parent;)a=a.parent,"/"!==a.path&&n.unshift(a.path);const t="/"===r?n.join(""):[r,...n].join(""),{build:s,parse:o}=function(e){const a=[],r=/:(\w+)(<[\s?\w|]+>)?({\d+\,\d+})?([+*?])?/,n=e.split("/").filter(Boolean);for(let t=0;t<n.length;t++){const s=n[t];if(!s)continue;const o=l(s.match(r));if(!o){a.push({type:"const",name:s,payload:void 0});continue}const{arrayProps:i,genericProps:c,modificator:p,name:d}=o;if(!d)throw new Error(`Invalid path: "${e}". Name for argument must be provided`);const u={type:"parameter",name:d,payload:{required:!0}};switch(c&&"number"===c&&(u.payload.genericProps={type:"number"}),c&&c.includes("|")&&(u.payload.genericProps={type:"union",items:c.split("|")}),p){case"*":u.payload.arrayProps={};break;case"+":u.payload.arrayProps={min:1};break;case"?":u.payload.required=!1}i&&(u.payload.arrayProps={...u.payload.arrayProps,min:i[0],max:i[1]}),a.push(u)}return{parse:c(a),build:p(a)}}(t);return{route:e,path:t,build:s,parse:o}}),h=t.map(e=>{const a=[];if(!e)return a;for(const{route:r,parse:n}of g)n(e)&&a.push(r);return a}),v=e.attach({and:{source:{query:s,path:t},effect:async a=>{let{query:r,path:n}=a;for(const{route:t,parse:s}of g){const a=s(n),[o,i]=[e.scopeBind(t.internal.close),e.scopeBind(t.internal.navigated)];a?i({query:r,params:a.params}):o()}}},or:{name:"openRoutesByPathFx",sid:"-3zl7vq"}});for(const{route:i,build:c}of g)e.sample({and:[{clock:i.internal.openFx.doneData,filter:e=>!1!==(null==e?void 0:e.navigate),fn:e=>({path:c(e&&"params"in e?e.params:void 0),query:(null==e?void 0:e.query)??{},replace:null==e?void 0:e.replace}),target:m}],or:{sid:"exzzqg"}});return e.sample({and:[{clock:y,fn:e=>({path:e.pathname,query:e.query}),target:v}],or:{sid:"ficdn3"}}),{$query:s,$path:t,$activeRoutes:h,back:o,forward:u,navigate:m,routes:n,setHistory:f,mappedRoutes:g,trackQuery:i({$activeRoutes:h,$query:s,navigate:m}),"@@unitShape":()=>({query:s,path:t,activeRoutes:h,onBack:o,onForward:u,onNavigate:m})}},exports.createRouterControls=d,exports.createVirtualRoute=u,exports.group=function(a){const n=u(e.withFactory({sid:"-uirglg",fn:()=>r.or(...a.map(e=>e.$isPending)),name:"$isPending",method:"or"}));return e.sample({and:[{clock:a.map(e=>e.$isOpened),filter:e.withFactory({sid:"6pispd",fn:()=>r.or(...a.map(e=>e.$isOpened)),name:"filter",method:"or"}),fn:()=>{},target:n.open}],or:{sid:"-xn8czd"}}),e.sample({and:[{clock:a.map(e=>e.$isOpened),filter:e.withFactory({sid:"a0u5gq",fn:()=>r.not(e.withFactory({sid:"xb4bx2",fn:()=>r.or(...a.map(e=>e.$isOpened)),name:"fn",method:"or"})),name:"filter",method:"not"}),fn:()=>{},target:n.close}],or:{sid:"-x7u4d9"}}),n},exports.parameters=n;
|
package/dist/index.d.ts
CHANGED
|
@@ -179,6 +179,28 @@ export declare function createRouter(config: RouterConfig): Router;
|
|
|
179
179
|
*/
|
|
180
180
|
export declare function createRouterControls(): RouterControls;
|
|
181
181
|
|
|
182
|
+
export declare function createVirtualRoute<T>(pending?: Store<boolean>): VirtualRoute<T>;
|
|
183
|
+
|
|
184
|
+
/**
|
|
185
|
+
* @description Create virtual route which opens when some passed routes is opened. Closes if all passed routes are closed.
|
|
186
|
+
* @link https://movpushmov.dev/argon-router/core/group.html
|
|
187
|
+
* @returns VirtualRoute
|
|
188
|
+
* @example ```ts
|
|
189
|
+
* import { group, createRoute } from '@argon-router/core';
|
|
190
|
+
* import { createEvent, createEffect } from 'effector';
|
|
191
|
+
*
|
|
192
|
+
* const signInRoute = createRoute({ path: '/auth/sign-in' });
|
|
193
|
+
* const signUpRoute = createRoute({ path: '/auth/sign-up' });
|
|
194
|
+
* const authorizationRoute = group([signInRoute, signUpRoute]);
|
|
195
|
+
*
|
|
196
|
+
* signInRoute.open(); // authorizationRoute.$isOpened —> true
|
|
197
|
+
* signUpRoute.open(); // authorizationRoute.$isOpened —> true
|
|
198
|
+
* signInRoute.close(); // authorizationRoute.$isOpened —> true
|
|
199
|
+
* signUpRoute.close(); // authorizationRoute.$isOpened —> false
|
|
200
|
+
* ```
|
|
201
|
+
*/
|
|
202
|
+
export declare function group(routes: Route<any>[]): VirtualRoute<void>;
|
|
203
|
+
|
|
182
204
|
declare type LocationState = {
|
|
183
205
|
path: string;
|
|
184
206
|
query: Query;
|
package/dist/index.js
CHANGED
|
@@ -1,19 +1,8 @@
|
|
|
1
|
-
import { createEffect, createStore, createEvent, sample, split,
|
|
1
|
+
import { createEffect, createStore, createEvent, attach, sample, split, scopeBind, withFactory } from "effector";
|
|
2
2
|
import queryString from "query-string";
|
|
3
|
+
import { or, not } from "patronum";
|
|
3
4
|
function createRoute(config) {
|
|
4
5
|
let asyncImport;
|
|
5
|
-
const waitForAsyncBundleFx = createEffect(() => asyncImport == null ? void 0 : asyncImport(), {
|
|
6
|
-
name: "waitForAsyncBundleFx",
|
|
7
|
-
sid: "1y76ms"
|
|
8
|
-
});
|
|
9
|
-
const beforeOpenFx = createEffect(async () => {
|
|
10
|
-
for (const fx of config.beforeOpen ?? []) {
|
|
11
|
-
await fx();
|
|
12
|
-
}
|
|
13
|
-
}, {
|
|
14
|
-
name: "beforeOpenFx",
|
|
15
|
-
sid: "-65tb76"
|
|
16
|
-
});
|
|
17
6
|
const openFx = createEffect(async (payload) => {
|
|
18
7
|
await waitForAsyncBundleFx();
|
|
19
8
|
await beforeOpenFx();
|
|
@@ -29,58 +18,92 @@ function createRoute(config) {
|
|
|
29
18
|
return payload;
|
|
30
19
|
}, {
|
|
31
20
|
name: "openFx",
|
|
32
|
-
sid: "
|
|
21
|
+
sid: "awhgwd"
|
|
33
22
|
});
|
|
34
23
|
const $params = createStore({}, {
|
|
35
24
|
name: "$params",
|
|
36
|
-
sid: "-
|
|
25
|
+
sid: "-oahffx"
|
|
37
26
|
});
|
|
38
27
|
const $isOpened = createStore(false, {
|
|
39
28
|
name: "$isOpened",
|
|
40
|
-
sid: "
|
|
29
|
+
sid: "-6l68oe"
|
|
41
30
|
});
|
|
42
31
|
const $isPending = openFx.pending;
|
|
43
32
|
const open = createEvent({
|
|
44
33
|
name: "open",
|
|
45
|
-
sid: "
|
|
34
|
+
sid: "gjsrgc"
|
|
46
35
|
});
|
|
47
36
|
const close = createEvent({
|
|
48
37
|
name: "close",
|
|
49
|
-
sid: "-
|
|
38
|
+
sid: "-yagmc8"
|
|
50
39
|
});
|
|
51
40
|
const opened = createEvent({
|
|
52
41
|
name: "opened",
|
|
53
|
-
sid: "
|
|
42
|
+
sid: "x0iwhi"
|
|
54
43
|
});
|
|
55
44
|
const openedOnServer = createEvent({
|
|
56
45
|
name: "openedOnServer",
|
|
57
|
-
sid: "
|
|
46
|
+
sid: "346r3u"
|
|
58
47
|
});
|
|
59
48
|
const openedOnClient = createEvent({
|
|
60
49
|
name: "openedOnClient",
|
|
61
|
-
sid: "
|
|
50
|
+
sid: "31q95t"
|
|
62
51
|
});
|
|
63
52
|
const navigated = createEvent({
|
|
64
53
|
name: "navigated",
|
|
65
|
-
sid: "-
|
|
54
|
+
sid: "-t30l0x"
|
|
66
55
|
});
|
|
67
56
|
const closed = createEvent({
|
|
68
57
|
name: "closed",
|
|
69
|
-
sid: "
|
|
58
|
+
sid: "uue4ce"
|
|
59
|
+
});
|
|
60
|
+
const waitForAsyncBundleFx = createEffect(() => asyncImport == null ? void 0 : asyncImport(), {
|
|
61
|
+
name: "waitForAsyncBundleFx",
|
|
62
|
+
sid: "-nml5ho"
|
|
70
63
|
});
|
|
64
|
+
const beforeOpenFx = createEffect(async () => {
|
|
65
|
+
for (const fx of config.beforeOpen ?? []) {
|
|
66
|
+
await fx();
|
|
67
|
+
}
|
|
68
|
+
}, {
|
|
69
|
+
name: "beforeOpenFx",
|
|
70
|
+
sid: "-vqlnbm"
|
|
71
|
+
});
|
|
72
|
+
const navigatedFx = attach({
|
|
73
|
+
and: {
|
|
74
|
+
effect: openFx
|
|
75
|
+
},
|
|
76
|
+
or: {
|
|
77
|
+
name: "navigatedFx",
|
|
78
|
+
sid: "a4yadj"
|
|
79
|
+
}
|
|
80
|
+
});
|
|
81
|
+
const defaultParams = {};
|
|
71
82
|
sample({
|
|
72
83
|
and: [{
|
|
73
84
|
clock: open,
|
|
74
85
|
target: openFx
|
|
75
86
|
}],
|
|
76
87
|
or: {
|
|
77
|
-
sid: "
|
|
88
|
+
sid: "ynxuww"
|
|
78
89
|
}
|
|
79
90
|
});
|
|
80
|
-
const defaultParams = {};
|
|
81
91
|
sample({
|
|
82
92
|
and: [{
|
|
83
93
|
clock: navigated,
|
|
94
|
+
fn: (payload) => ({
|
|
95
|
+
navigate: false,
|
|
96
|
+
...payload
|
|
97
|
+
}),
|
|
98
|
+
target: navigatedFx
|
|
99
|
+
}],
|
|
100
|
+
or: {
|
|
101
|
+
sid: "z28ica"
|
|
102
|
+
}
|
|
103
|
+
});
|
|
104
|
+
sample({
|
|
105
|
+
and: [{
|
|
106
|
+
clock: navigatedFx.doneData,
|
|
84
107
|
fn: (payload) => {
|
|
85
108
|
if (!payload) {
|
|
86
109
|
return defaultParams;
|
|
@@ -92,12 +115,22 @@ function createRoute(config) {
|
|
|
92
115
|
target: $params
|
|
93
116
|
}],
|
|
94
117
|
or: {
|
|
95
|
-
sid: "
|
|
118
|
+
sid: "z5j9wg"
|
|
119
|
+
}
|
|
120
|
+
});
|
|
121
|
+
sample({
|
|
122
|
+
and: [{
|
|
123
|
+
clock: navigatedFx.failData,
|
|
124
|
+
fn: () => defaultParams,
|
|
125
|
+
target: $params
|
|
126
|
+
}],
|
|
127
|
+
or: {
|
|
128
|
+
sid: "-z1vw16"
|
|
96
129
|
}
|
|
97
130
|
});
|
|
98
131
|
split({
|
|
99
132
|
and: [{
|
|
100
|
-
source:
|
|
133
|
+
source: navigatedFx.doneData,
|
|
101
134
|
match: () => typeof window === "undefined" ? "server" : "client",
|
|
102
135
|
cases: {
|
|
103
136
|
server: openedOnServer,
|
|
@@ -105,7 +138,7 @@ function createRoute(config) {
|
|
|
105
138
|
}
|
|
106
139
|
}],
|
|
107
140
|
or: {
|
|
108
|
-
sid: "-
|
|
141
|
+
sid: "-yyl4h0"
|
|
109
142
|
}
|
|
110
143
|
});
|
|
111
144
|
sample({
|
|
@@ -114,7 +147,7 @@ function createRoute(config) {
|
|
|
114
147
|
target: opened
|
|
115
148
|
}],
|
|
116
149
|
or: {
|
|
117
|
-
sid: "-
|
|
150
|
+
sid: "-yhji2t"
|
|
118
151
|
}
|
|
119
152
|
});
|
|
120
153
|
sample({
|
|
@@ -123,7 +156,7 @@ function createRoute(config) {
|
|
|
123
156
|
target: closed
|
|
124
157
|
}],
|
|
125
158
|
or: {
|
|
126
|
-
sid: "-
|
|
159
|
+
sid: "-y38unf"
|
|
127
160
|
}
|
|
128
161
|
});
|
|
129
162
|
sample({
|
|
@@ -132,7 +165,7 @@ function createRoute(config) {
|
|
|
132
165
|
target: $isOpened
|
|
133
166
|
}],
|
|
134
167
|
or: {
|
|
135
|
-
sid: "-
|
|
168
|
+
sid: "-y0hvom"
|
|
136
169
|
}
|
|
137
170
|
});
|
|
138
171
|
return {
|
|
@@ -302,7 +335,7 @@ function trackQueryControlsFactory(_ref) {
|
|
|
302
335
|
return trackQueryFactory({
|
|
303
336
|
$activeRoutes: createStore([], {
|
|
304
337
|
name: "$activeRoutes",
|
|
305
|
-
sid: "
|
|
338
|
+
sid: "85ms46"
|
|
306
339
|
}),
|
|
307
340
|
$query,
|
|
308
341
|
navigate
|
|
@@ -321,23 +354,23 @@ function trackQueryFactory(_ref2) {
|
|
|
321
354
|
} = config;
|
|
322
355
|
const $entered = createStore(false, {
|
|
323
356
|
name: "$entered",
|
|
324
|
-
sid: "-
|
|
357
|
+
sid: "-mo5ecc"
|
|
325
358
|
});
|
|
326
359
|
const entered = createEvent({
|
|
327
360
|
name: "entered",
|
|
328
|
-
sid: "
|
|
361
|
+
sid: "kuzfr"
|
|
329
362
|
});
|
|
330
363
|
const exited = createEvent({
|
|
331
364
|
name: "exited",
|
|
332
|
-
sid: "-
|
|
365
|
+
sid: "-jzwna6"
|
|
333
366
|
});
|
|
334
367
|
const exit = createEvent({
|
|
335
368
|
name: "exit",
|
|
336
|
-
sid: "
|
|
369
|
+
sid: "7hfy2r"
|
|
337
370
|
});
|
|
338
371
|
const changeEntered = createEvent({
|
|
339
372
|
name: "changeEntered",
|
|
340
|
-
sid: "
|
|
373
|
+
sid: "qh8w6v"
|
|
341
374
|
});
|
|
342
375
|
sample({
|
|
343
376
|
and: [{
|
|
@@ -345,7 +378,7 @@ function trackQueryFactory(_ref2) {
|
|
|
345
378
|
target: $entered
|
|
346
379
|
}],
|
|
347
380
|
or: {
|
|
348
|
-
sid: "-
|
|
381
|
+
sid: "-gf1fe4"
|
|
349
382
|
}
|
|
350
383
|
});
|
|
351
384
|
sample({
|
|
@@ -370,7 +403,7 @@ function trackQueryFactory(_ref2) {
|
|
|
370
403
|
target: [entered, changeEntered.prepend(() => true)]
|
|
371
404
|
}],
|
|
372
405
|
or: {
|
|
373
|
-
sid: "-
|
|
406
|
+
sid: "-gcagfb"
|
|
374
407
|
}
|
|
375
408
|
});
|
|
376
409
|
sample({
|
|
@@ -391,7 +424,7 @@ function trackQueryFactory(_ref2) {
|
|
|
391
424
|
target: [exited.prepend(() => void 0), changeEntered.prepend(() => false)]
|
|
392
425
|
}],
|
|
393
426
|
or: {
|
|
394
|
-
sid: "-
|
|
427
|
+
sid: "-fvsmmh"
|
|
395
428
|
}
|
|
396
429
|
});
|
|
397
430
|
sample({
|
|
@@ -417,7 +450,7 @@ function trackQueryFactory(_ref2) {
|
|
|
417
450
|
target: navigate
|
|
418
451
|
}],
|
|
419
452
|
or: {
|
|
420
|
-
sid: "-
|
|
453
|
+
sid: "-f105e9"
|
|
421
454
|
}
|
|
422
455
|
});
|
|
423
456
|
return {
|
|
@@ -980,43 +1013,51 @@ function createRouter(config) {
|
|
|
980
1013
|
})
|
|
981
1014
|
};
|
|
982
1015
|
}
|
|
983
|
-
function createVirtualRoute(
|
|
1016
|
+
function createVirtualRoute() {
|
|
1017
|
+
let pending = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : createStore(false, {
|
|
1018
|
+
and: {
|
|
1019
|
+
name: "pending",
|
|
1020
|
+
sid: "r89aiv"
|
|
1021
|
+
},
|
|
1022
|
+
name: "pending",
|
|
1023
|
+
sid: "r89aiv"
|
|
1024
|
+
});
|
|
984
1025
|
const $params = createStore(null, {
|
|
985
1026
|
name: "$params",
|
|
986
|
-
sid: "-
|
|
1027
|
+
sid: "-ftspin"
|
|
987
1028
|
});
|
|
988
1029
|
const $isOpened = createStore(false, {
|
|
989
1030
|
name: "$isOpened",
|
|
990
|
-
sid: "-
|
|
1031
|
+
sid: "-v6936c"
|
|
991
1032
|
});
|
|
992
1033
|
const $isPending = pending;
|
|
993
1034
|
const open = createEvent({
|
|
994
1035
|
name: "open",
|
|
995
|
-
sid: "
|
|
1036
|
+
sid: "juc47v"
|
|
996
1037
|
});
|
|
997
1038
|
const opened = createEvent({
|
|
998
1039
|
name: "opened",
|
|
999
|
-
sid: "-
|
|
1040
|
+
sid: "-quc8vc"
|
|
1000
1041
|
});
|
|
1001
1042
|
const openedOnServer = createEvent({
|
|
1002
1043
|
name: "openedOnServer",
|
|
1003
|
-
sid: "
|
|
1044
|
+
sid: "n25rh4"
|
|
1004
1045
|
});
|
|
1005
1046
|
const openedOnClient = createEvent({
|
|
1006
1047
|
name: "openedOnClient",
|
|
1007
|
-
sid: "-
|
|
1048
|
+
sid: "-auqikx"
|
|
1008
1049
|
});
|
|
1009
1050
|
const close = createEvent({
|
|
1010
1051
|
name: "close",
|
|
1011
|
-
sid: "
|
|
1052
|
+
sid: "4zlqo6"
|
|
1012
1053
|
});
|
|
1013
1054
|
const closed = createEvent({
|
|
1014
1055
|
name: "closed",
|
|
1015
|
-
sid: "
|
|
1056
|
+
sid: "wbpfrk"
|
|
1016
1057
|
});
|
|
1017
1058
|
const cancelled = createEvent({
|
|
1018
1059
|
name: "cancelled",
|
|
1019
|
-
sid: "-
|
|
1060
|
+
sid: "-q3x5sf"
|
|
1020
1061
|
});
|
|
1021
1062
|
sample({
|
|
1022
1063
|
and: [{
|
|
@@ -1024,7 +1065,7 @@ function createVirtualRoute(pending) {
|
|
|
1024
1065
|
target: opened
|
|
1025
1066
|
}],
|
|
1026
1067
|
or: {
|
|
1027
|
-
sid: "-
|
|
1068
|
+
sid: "-u8b34x"
|
|
1028
1069
|
}
|
|
1029
1070
|
});
|
|
1030
1071
|
split({
|
|
@@ -1037,7 +1078,7 @@ function createVirtualRoute(pending) {
|
|
|
1037
1078
|
}
|
|
1038
1079
|
}],
|
|
1039
1080
|
or: {
|
|
1040
|
-
sid: "-
|
|
1081
|
+
sid: "-u5k464"
|
|
1041
1082
|
}
|
|
1042
1083
|
});
|
|
1043
1084
|
sample({
|
|
@@ -1046,7 +1087,7 @@ function createVirtualRoute(pending) {
|
|
|
1046
1087
|
target: closed
|
|
1047
1088
|
}],
|
|
1048
1089
|
or: {
|
|
1049
|
-
sid: "-
|
|
1090
|
+
sid: "-tp2ada"
|
|
1050
1091
|
}
|
|
1051
1092
|
});
|
|
1052
1093
|
sample({
|
|
@@ -1055,7 +1096,7 @@ function createVirtualRoute(pending) {
|
|
|
1055
1096
|
target: $isOpened
|
|
1056
1097
|
}],
|
|
1057
1098
|
or: {
|
|
1058
|
-
sid: "-
|
|
1099
|
+
sid: "-tarmxw"
|
|
1059
1100
|
}
|
|
1060
1101
|
});
|
|
1061
1102
|
return {
|
|
@@ -1089,7 +1130,7 @@ function chainRoute(props) {
|
|
|
1089
1130
|
let asyncImport;
|
|
1090
1131
|
const waitForAsyncBundleFx = createEffect(() => asyncImport == null ? void 0 : asyncImport(), {
|
|
1091
1132
|
name: "waitForAsyncBundleFx",
|
|
1092
|
-
sid: "-
|
|
1133
|
+
sid: "-tvp99n"
|
|
1093
1134
|
});
|
|
1094
1135
|
const openFx = createEffect(async (payload) => {
|
|
1095
1136
|
await waitForAsyncBundleFx();
|
|
@@ -1098,7 +1139,7 @@ function chainRoute(props) {
|
|
|
1098
1139
|
}
|
|
1099
1140
|
}, {
|
|
1100
1141
|
name: "openFx",
|
|
1101
|
-
sid: "-
|
|
1142
|
+
sid: "-9kc1je"
|
|
1102
1143
|
});
|
|
1103
1144
|
const virtualRoute = createVirtualRoute(openFx.pending);
|
|
1104
1145
|
sample({
|
|
@@ -1107,7 +1148,7 @@ function chainRoute(props) {
|
|
|
1107
1148
|
target: openFx
|
|
1108
1149
|
}],
|
|
1109
1150
|
or: {
|
|
1110
|
-
sid: "
|
|
1151
|
+
sid: "1162lk"
|
|
1111
1152
|
}
|
|
1112
1153
|
});
|
|
1113
1154
|
sample({
|
|
@@ -1117,7 +1158,7 @@ function chainRoute(props) {
|
|
|
1117
1158
|
target: virtualRoute.$params
|
|
1118
1159
|
}],
|
|
1119
1160
|
or: {
|
|
1120
|
-
sid: "
|
|
1161
|
+
sid: "13x1kd"
|
|
1121
1162
|
}
|
|
1122
1163
|
});
|
|
1123
1164
|
if (openOn) {
|
|
@@ -1138,7 +1179,7 @@ function chainRoute(props) {
|
|
|
1138
1179
|
target: virtualRoute.open
|
|
1139
1180
|
}],
|
|
1140
1181
|
or: {
|
|
1141
|
-
sid: "
|
|
1182
|
+
sid: "1kevex"
|
|
1142
1183
|
}
|
|
1143
1184
|
});
|
|
1144
1185
|
}
|
|
@@ -1149,7 +1190,7 @@ function chainRoute(props) {
|
|
|
1149
1190
|
target: virtualRoute.close
|
|
1150
1191
|
}],
|
|
1151
1192
|
or: {
|
|
1152
|
-
sid: "
|
|
1193
|
+
sid: "20wp7r"
|
|
1153
1194
|
}
|
|
1154
1195
|
});
|
|
1155
1196
|
sample({
|
|
@@ -1158,7 +1199,7 @@ function chainRoute(props) {
|
|
|
1158
1199
|
target: virtualRoute.cancelled
|
|
1159
1200
|
}],
|
|
1160
1201
|
or: {
|
|
1161
|
-
sid: "
|
|
1202
|
+
sid: "2f7cn5"
|
|
1162
1203
|
}
|
|
1163
1204
|
});
|
|
1164
1205
|
}
|
|
@@ -1168,10 +1209,59 @@ function chainRoute(props) {
|
|
|
1168
1209
|
}
|
|
1169
1210
|
});
|
|
1170
1211
|
}
|
|
1212
|
+
function group(routes) {
|
|
1213
|
+
const $isPending = withFactory({
|
|
1214
|
+
sid: "-uirglg",
|
|
1215
|
+
fn: () => or(...routes.map((route) => route.$isPending)),
|
|
1216
|
+
name: "$isPending",
|
|
1217
|
+
method: "or"
|
|
1218
|
+
});
|
|
1219
|
+
const virtual = createVirtualRoute($isPending);
|
|
1220
|
+
sample({
|
|
1221
|
+
and: [{
|
|
1222
|
+
clock: routes.map((route) => route.$isOpened),
|
|
1223
|
+
filter: withFactory({
|
|
1224
|
+
sid: "6pispd",
|
|
1225
|
+
fn: () => or(...routes.map((route) => route.$isOpened)),
|
|
1226
|
+
name: "filter",
|
|
1227
|
+
method: "or"
|
|
1228
|
+
}),
|
|
1229
|
+
fn: () => void 0,
|
|
1230
|
+
target: virtual.open
|
|
1231
|
+
}],
|
|
1232
|
+
or: {
|
|
1233
|
+
sid: "-xn8czd"
|
|
1234
|
+
}
|
|
1235
|
+
});
|
|
1236
|
+
sample({
|
|
1237
|
+
and: [{
|
|
1238
|
+
clock: routes.map((route) => route.$isOpened),
|
|
1239
|
+
filter: withFactory({
|
|
1240
|
+
sid: "a0u5gq",
|
|
1241
|
+
fn: () => not(withFactory({
|
|
1242
|
+
sid: "xb4bx2",
|
|
1243
|
+
fn: () => or(...routes.map((route) => route.$isOpened)),
|
|
1244
|
+
name: "fn",
|
|
1245
|
+
method: "or"
|
|
1246
|
+
})),
|
|
1247
|
+
name: "filter",
|
|
1248
|
+
method: "not"
|
|
1249
|
+
}),
|
|
1250
|
+
fn: () => void 0,
|
|
1251
|
+
target: virtual.close
|
|
1252
|
+
}],
|
|
1253
|
+
or: {
|
|
1254
|
+
sid: "-x7u4d9"
|
|
1255
|
+
}
|
|
1256
|
+
});
|
|
1257
|
+
return virtual;
|
|
1258
|
+
}
|
|
1171
1259
|
export {
|
|
1172
1260
|
chainRoute,
|
|
1173
1261
|
createRoute,
|
|
1174
1262
|
createRouter,
|
|
1175
1263
|
createRouterControls,
|
|
1264
|
+
createVirtualRoute,
|
|
1265
|
+
group,
|
|
1176
1266
|
parameters
|
|
1177
1267
|
};
|
package/package.json
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
"registry": "https://registry.npmjs.org/"
|
|
6
6
|
},
|
|
7
7
|
"private": false,
|
|
8
|
-
"version": "0.
|
|
8
|
+
"version": "0.10.1",
|
|
9
9
|
"description": "Router with power of effector",
|
|
10
10
|
"keywords": [
|
|
11
11
|
"effector",
|
|
@@ -52,7 +52,7 @@
|
|
|
52
52
|
"query-string": "^9.1.1"
|
|
53
53
|
},
|
|
54
54
|
"dependencies": {
|
|
55
|
-
"@argon-router/paths": "^0.
|
|
55
|
+
"@argon-router/paths": "^0.10.0"
|
|
56
56
|
},
|
|
57
|
-
"gitHead": "
|
|
57
|
+
"gitHead": "aacf3ea0642e3c732e2721bc409ed9fba3a4b8a1"
|
|
58
58
|
}
|