@curi/core
Advanced tools
Comparing version 1.0.0-beta.17 to 1.0.0-beta.18
@@ -0,1 +1,5 @@ | ||
## 1.0.0-beta.18 | ||
* Call one time subscribers (`config.subscribe(fn, { once: true })`) **after** regular subscribers. This allows for subscribers to be setup prior to registering the one time function. This also means that a subscriber registered after the one time function will be called before it. This should be fine because one time functions essentially serve as a ready check. If a subscriber shouldn't be called before the one time function, it should be registered _in_ the one time function. | ||
## 1.0.0-beta.17 | ||
@@ -2,0 +6,0 @@ |
@@ -338,6 +338,2 @@ 'use strict'; | ||
}); | ||
while (oneTimers.length) { | ||
var fn = oneTimers.pop(); | ||
fn(response, action); | ||
} | ||
subscribers.forEach(function (fn) { | ||
@@ -348,2 +344,8 @@ if (fn != null) { | ||
}); | ||
// calling one time subscribers after regular subscribers | ||
// ensures that those are called prior to the one time fns | ||
while (oneTimers.length) { | ||
var fn = oneTimers.pop(); | ||
fn(response, action); | ||
} | ||
afterSideEffects.forEach(function (fn) { | ||
@@ -350,0 +352,0 @@ fn(response, action); |
@@ -334,6 +334,2 @@ import PathToRegexp from 'path-to-regexp'; | ||
}); | ||
while (oneTimers.length) { | ||
var fn = oneTimers.pop(); | ||
fn(response, action); | ||
} | ||
subscribers.forEach(function (fn) { | ||
@@ -344,2 +340,8 @@ if (fn != null) { | ||
}); | ||
// calling one time subscribers after regular subscribers | ||
// ensures that those are called prior to the one time fns | ||
while (oneTimers.length) { | ||
var fn = oneTimers.pop(); | ||
fn(response, action); | ||
} | ||
afterSideEffects.forEach(function (fn) { | ||
@@ -346,0 +348,0 @@ fn(response, action); |
@@ -712,6 +712,2 @@ var Curi = (function () { | ||
}); | ||
while (oneTimers.length) { | ||
var fn = oneTimers.pop(); | ||
fn(response, action); | ||
} | ||
subscribers.forEach(function (fn) { | ||
@@ -722,2 +718,8 @@ if (fn != null) { | ||
}); | ||
// calling one time subscribers after regular subscribers | ||
// ensures that those are called prior to the one time fns | ||
while (oneTimers.length) { | ||
var fn = oneTimers.pop(); | ||
fn(response, action); | ||
} | ||
afterSideEffects.forEach(function (fn) { | ||
@@ -724,0 +726,0 @@ fn(response, action); |
@@ -1,2 +0,2 @@ | ||
var Curi=function(){"use strict";function e(n,r,t){n.forEach(function(n){var a=r.register(n.public,t);e(n.children,r,a)})}function n(e,n){for(var r,o=[],i=0,u=0,c="",l=n&&n.delimiter||k,f=n&&n.delimiters||$,p=!1;null!==(r=j.exec(e));){var s=r[0],h=r[1],d=r.index;if(c+=e.slice(u,d),u=d+s.length,h)c+=h[1],p=!0;else{var m="",v=e[u],g=r[2],y=r[3],b=r[4],x=r[5];if(!p&&c.length){var E=c.length-1;f.indexOf(c[E])>-1&&(m=c[E],c=c.slice(0,E))}c&&(o.push(c),c="",p=!1);var w=""!==m&&void 0!==v&&v!==m,T="+"===x||"*"===x,A="?"===x||"*"===x,P=m||l,O=y||b;o.push({name:g||i++,prefix:m,delimiter:P,optional:A,repeat:T,partial:w,pattern:O?a(O):"[^"+t(P)+"]+?"})}}return(c||u<e.length)&&o.push(c+e.substr(u)),o}function r(e){for(var n=new Array(e.length),r=0;r<e.length;r++)"object"==typeof e[r]&&(n[r]=new RegExp("^(?:"+e[r].pattern+")$"));return function(r,t){for(var a="",o=t&&t.encode||encodeURIComponent,i=0;i<e.length;i++){var u=e[i];if("string"!=typeof u){var c,l=r?r[u.name]:void 0;if(Array.isArray(l)){if(!u.repeat)throw new TypeError('Expected "'+u.name+'" to not repeat, but got array');if(0===l.length){if(u.optional)continue;throw new TypeError('Expected "'+u.name+'" to not be empty')}for(var f=0;f<l.length;f++){if(c=o(l[f]),!n[i].test(c))throw new TypeError('Expected all "'+u.name+'" to match "'+u.pattern+'"');a+=(0===f?u.prefix:u.delimiter)+c}}else if("string"!=typeof l&&"number"!=typeof l&&"boolean"!=typeof l){if(!u.optional)throw new TypeError('Expected "'+u.name+'" to be '+(u.repeat?"an array":"a string"));u.partial&&(a+=u.prefix)}else{if(c=o(String(l)),!n[i].test(c))throw new TypeError('Expected "'+u.name+'" to match "'+u.pattern+'", but got "'+c+'"');a+=u.prefix+c}}else a+=u}return a}}function t(e){return e.replace(/([.+*?=^!:${}()[\]|/\\])/g,"\\$1")}function a(e){return e.replace(/([=!:$/()])/g,"\\$1")}function o(e){return e&&e.sensitive?"":"i"}function i(e,n){if(!n)return e;var r=e.source.match(/\((?!\?)/g);if(r)for(var t=0;t<r.length;t++)n.push({name:t,prefix:null,delimiter:null,optional:!1,repeat:!1,partial:!1,pattern:null});return e}function u(e,n,r){for(var t=[],a=0;a<e.length;a++)t.push(f(e[a],n,r).source);return new RegExp("(?:"+t.join("|")+")",o(r))}function c(e,r,t){return l(n(e,t),r,t)}function l(e,n,r){for(var a=(r=r||{}).strict,i=!1!==r.end,u=t(r.delimiter||k),c=r.delimiters||$,l=[].concat(r.endsWith||[]).map(t).concat("$").join("|"),f="",p=!1,s=0;s<e.length;s++){var h=e[s];if("string"==typeof h)f+=t(h),p=s===e.length-1&&c.indexOf(h[h.length-1])>-1;else{var d=t(h.prefix),m=h.repeat?"(?:"+h.pattern+")(?:"+d+"(?:"+h.pattern+"))*":h.pattern;n&&n.push(h),h.optional?h.partial?f+=d+"("+m+")?":f+="(?:"+d+"("+m+"))?":f+=d+"("+m+")"}}return i?(a||(f+="(?:"+u+")?"),f+="$"===l?"$":"(?="+l+")"):(a||(f+="(?:"+u+"(?="+l+"))?"),p||(f+="(?="+u+"|"+l+")")),new RegExp("^"+f,o(r))}function f(e,n,r){return e instanceof RegExp?i(e,n):Array.isArray(e)?u(e,n,r):c(e,n,r)}function p(e){var n={},r={};return{name:"pathname",register:function(e,r){var t=e.name,a=e.path;void 0!==n[t]&&console.warn('A pathname with the name "'+t+'" already exists. Each route shouldhave a unique name. By registering a pathname with a name that already exists, you are overwriting the existing pathname. This may break your application.');var o;return r&&n[r]&&(o=n[r]),n[t]=o?C(o,a):a,t},get:function(t,a){if(null!=n[t]){var o=r[t]?r[t]:r[t]=w.compile(n[t]);return O(o(a,e))}console.error("Could not generate pathname for "+t+" because it is not registered.")},reset:function(){n={},r={}}}}function s(e,n,r,t){var a=R(n),o=e.match,i=o.re,u=o.keys,c=o.mustBeExact,l=e.children,f=i.exec(a);if(!f)return!1;var p=f[0],h=f.slice(1),d={};u.forEach(function(e,n){d[e.name]=h[n]});var m=null!=t?C(t,p):O(p);if(r.push({route:e,params:d}),!l||!l.length)return!0;var v=a.slice(p.length),g=!!v.length,y=l.some(function(e){return s(e,v,r,m)});return!(c&&g&&!y)||(r.pop(),!1)}function h(e,n){if(!n)return e;var r={};for(var t in e){var a=e[t],o=n[t];if(o)try{a=o(a)}catch(n){console.error(n),a=e[t]}r[t]=a}return r}function d(e,n,r){var t,a=[],o=[],i={};if(n.some(function(n){return s(n,e.pathname,a)}),a.length){var u=a.pop();a.forEach(function(e){o.push(e.route.public.name),Object.assign(i,h(e.params,e.route.paramParsers))}),t=u.route,Object.assign(i,h(u.params,t.paramParsers))}return m(t,{location:e,params:i,partials:o,status:null!=t?200:404,data:void 0},r).then(function(e){return b(t,e)})}function m(e,n,r){return e?Promise.all([e.public.preload?e.public.preload():null,e.public.load?e.public.load(g(e,n),v(n),r):null]).then(function(){return n},function(e){return n.error=e,n}):Promise.resolve(n)}function v(e){return{redirect:function(n,r){void 0===r&&(r=301),e.status=r,e.redirectTo=n},fail:function(n){e.error=n},setStatus:function(n){e.status=n},setData:function(n){e.data=n}}}function g(e,n){return{params:n.params,location:n.location,name:e.public.name}}function y(){return{body:void 0,title:""}}function b(e,n){var r=Object.assign({},n,{key:n.location.key},e?e.responseProps(n):y());return Promise.resolve(r)}function x(e){var n=null,r=!1;return function(){return r?n:(n=e(),r=!0,n)}}function E(e,n){return e?"function"==typeof e?e(n.params,n.data):e:""}var w=f,T=n,A=r,P=l,k="/",$="./",j=new RegExp(["(\\\\.)","(?:\\:(\\w+)(?:\\(((?:\\\\.|[^\\\\()])+)\\))?|\\(((?:\\\\.|[^\\\\()])+)\\))([+*?])?"].join("|"),"g");w.parse=T,w.compile=function(e,t){return r(n(e,t))},w.tokensToFunction=A,w.tokensToRegExp=P;var O=function(e){return"/"===e.charAt(0)?e:"/"+e},R=function(e){return"/"===e.charAt(0)?e.slice(1):e},B=function(e){return"/"===e.charAt(e.length-1)?e:e+"/"},C=function(e,n){return B(e)+n},S=function(e){var n=e.name,r=e.path,t=e.pathOptions,a=void 0===t?{}:t,o=e.body,i=e.children,u=void 0===i?[]:i,c=e.preload,l=e.load,f=e.title,p=e.extra,s=e.params,h=null==a.end||a.end,d=[];u.length&&(a.end=!1,d=u.map(S));var m=[],v=w(r,m,a);return{public:{name:n,path:r,body:o,keys:m.map(function(e){return e.name}),preload:c&&x(c),load:l,extra:p},match:{re:v,keys:m,mustBeExact:h},children:d,paramParsers:s,responseProps:function(e){return{name:n,body:this.public.body&&this.public.body(),title:E(f,e)}}}};return function(n,r,t){function a(n){b=n.map(S);for(var r in x)delete x[r];E.forEach(function(n){n.reset(),x[n.name]=n.get,e(b,n)})}function o(e){if(h){var n=h.get(e);if(null!=n)return Promise.resolve(n)}return d(e,b,x).then(function(e){return h&&h.set(e),e})}function i(e,n){for(v.forEach(function(r){r(e,n)});T.length;)T.pop()(e,n);w.forEach(function(r){null!=r&&r(e,n)}),g.forEach(function(r){r(e,n)})}void 0===t&&(t={});var u=t,c=u.addons,l=void 0===c?[]:c,f=u.sideEffects,s=void 0===f?[]:f,h=u.cache,m=u.pathnameOptions,v=[],g=[];s.forEach(function(e){e.after?g.push(e.fn):v.push(e.fn)});var y,b=[],x={},E=l.concat(p(m)),w=[],T=[],A=[];return a(r),n.respondWith(function(e){y&&(y.cancel(e.action),y.cancelled=!0),y=e,o(e.location).then(function(r){if(!e.cancelled)return e.finish(),y=void 0,i(r,e.action),A=[r,e.action],r.redirectTo&&n.replace(r.redirectTo),r})}),{addons:x,history:n,subscribe:function(e,n){if("function"!=typeof e)throw new Error("The argument passed to subscribe must be a function");var r=(n||{}).once;if(void 0===r||!r){A.length&&e.apply(null,A);var t=w.push(e);return function(){w[t-1]=null}}A.length?e.apply(null,A):T.push(e)},refresh:a}}}(); | ||
var Curi=function(){"use strict";function e(n,r,t){n.forEach(function(n){var a=r.register(n.public,t);e(n.children,r,a)})}function n(e,n){for(var r,o=[],i=0,u=0,c="",l=n&&n.delimiter||k,f=n&&n.delimiters||$,p=!1;null!==(r=j.exec(e));){var s=r[0],h=r[1],d=r.index;if(c+=e.slice(u,d),u=d+s.length,h)c+=h[1],p=!0;else{var m="",v=e[u],g=r[2],y=r[3],b=r[4],x=r[5];if(!p&&c.length){var E=c.length-1;f.indexOf(c[E])>-1&&(m=c[E],c=c.slice(0,E))}c&&(o.push(c),c="",p=!1);var w=""!==m&&void 0!==v&&v!==m,T="+"===x||"*"===x,A="?"===x||"*"===x,P=m||l,O=y||b;o.push({name:g||i++,prefix:m,delimiter:P,optional:A,repeat:T,partial:w,pattern:O?a(O):"[^"+t(P)+"]+?"})}}return(c||u<e.length)&&o.push(c+e.substr(u)),o}function r(e){for(var n=new Array(e.length),r=0;r<e.length;r++)"object"==typeof e[r]&&(n[r]=new RegExp("^(?:"+e[r].pattern+")$"));return function(r,t){for(var a="",o=t&&t.encode||encodeURIComponent,i=0;i<e.length;i++){var u=e[i];if("string"!=typeof u){var c,l=r?r[u.name]:void 0;if(Array.isArray(l)){if(!u.repeat)throw new TypeError('Expected "'+u.name+'" to not repeat, but got array');if(0===l.length){if(u.optional)continue;throw new TypeError('Expected "'+u.name+'" to not be empty')}for(var f=0;f<l.length;f++){if(c=o(l[f]),!n[i].test(c))throw new TypeError('Expected all "'+u.name+'" to match "'+u.pattern+'"');a+=(0===f?u.prefix:u.delimiter)+c}}else if("string"!=typeof l&&"number"!=typeof l&&"boolean"!=typeof l){if(!u.optional)throw new TypeError('Expected "'+u.name+'" to be '+(u.repeat?"an array":"a string"));u.partial&&(a+=u.prefix)}else{if(c=o(String(l)),!n[i].test(c))throw new TypeError('Expected "'+u.name+'" to match "'+u.pattern+'", but got "'+c+'"');a+=u.prefix+c}}else a+=u}return a}}function t(e){return e.replace(/([.+*?=^!:${}()[\]|/\\])/g,"\\$1")}function a(e){return e.replace(/([=!:$/()])/g,"\\$1")}function o(e){return e&&e.sensitive?"":"i"}function i(e,n){if(!n)return e;var r=e.source.match(/\((?!\?)/g);if(r)for(var t=0;t<r.length;t++)n.push({name:t,prefix:null,delimiter:null,optional:!1,repeat:!1,partial:!1,pattern:null});return e}function u(e,n,r){for(var t=[],a=0;a<e.length;a++)t.push(f(e[a],n,r).source);return new RegExp("(?:"+t.join("|")+")",o(r))}function c(e,r,t){return l(n(e,t),r,t)}function l(e,n,r){for(var a=(r=r||{}).strict,i=!1!==r.end,u=t(r.delimiter||k),c=r.delimiters||$,l=[].concat(r.endsWith||[]).map(t).concat("$").join("|"),f="",p=!1,s=0;s<e.length;s++){var h=e[s];if("string"==typeof h)f+=t(h),p=s===e.length-1&&c.indexOf(h[h.length-1])>-1;else{var d=t(h.prefix),m=h.repeat?"(?:"+h.pattern+")(?:"+d+"(?:"+h.pattern+"))*":h.pattern;n&&n.push(h),h.optional?h.partial?f+=d+"("+m+")?":f+="(?:"+d+"("+m+"))?":f+=d+"("+m+")"}}return i?(a||(f+="(?:"+u+")?"),f+="$"===l?"$":"(?="+l+")"):(a||(f+="(?:"+u+"(?="+l+"))?"),p||(f+="(?="+u+"|"+l+")")),new RegExp("^"+f,o(r))}function f(e,n,r){return e instanceof RegExp?i(e,n):Array.isArray(e)?u(e,n,r):c(e,n,r)}function p(e){var n={},r={};return{name:"pathname",register:function(e,r){var t=e.name,a=e.path;void 0!==n[t]&&console.warn('A pathname with the name "'+t+'" already exists. Each route shouldhave a unique name. By registering a pathname with a name that already exists, you are overwriting the existing pathname. This may break your application.');var o;return r&&n[r]&&(o=n[r]),n[t]=o?C(o,a):a,t},get:function(t,a){if(null!=n[t]){var o=r[t]?r[t]:r[t]=w.compile(n[t]);return O(o(a,e))}console.error("Could not generate pathname for "+t+" because it is not registered.")},reset:function(){n={},r={}}}}function s(e,n,r,t){var a=R(n),o=e.match,i=o.re,u=o.keys,c=o.mustBeExact,l=e.children,f=i.exec(a);if(!f)return!1;var p=f[0],h=f.slice(1),d={};u.forEach(function(e,n){d[e.name]=h[n]});var m=null!=t?C(t,p):O(p);if(r.push({route:e,params:d}),!l||!l.length)return!0;var v=a.slice(p.length),g=!!v.length,y=l.some(function(e){return s(e,v,r,m)});return!(c&&g&&!y)||(r.pop(),!1)}function h(e,n){if(!n)return e;var r={};for(var t in e){var a=e[t],o=n[t];if(o)try{a=o(a)}catch(n){console.error(n),a=e[t]}r[t]=a}return r}function d(e,n,r){var t,a=[],o=[],i={};if(n.some(function(n){return s(n,e.pathname,a)}),a.length){var u=a.pop();a.forEach(function(e){o.push(e.route.public.name),Object.assign(i,h(e.params,e.route.paramParsers))}),t=u.route,Object.assign(i,h(u.params,t.paramParsers))}return m(t,{location:e,params:i,partials:o,status:null!=t?200:404,data:void 0},r).then(function(e){return b(t,e)})}function m(e,n,r){return e?Promise.all([e.public.preload?e.public.preload():null,e.public.load?e.public.load(g(e,n),v(n),r):null]).then(function(){return n},function(e){return n.error=e,n}):Promise.resolve(n)}function v(e){return{redirect:function(n,r){void 0===r&&(r=301),e.status=r,e.redirectTo=n},fail:function(n){e.error=n},setStatus:function(n){e.status=n},setData:function(n){e.data=n}}}function g(e,n){return{params:n.params,location:n.location,name:e.public.name}}function y(){return{body:void 0,title:""}}function b(e,n){var r=Object.assign({},n,{key:n.location.key},e?e.responseProps(n):y());return Promise.resolve(r)}function x(e){var n=null,r=!1;return function(){return r?n:(n=e(),r=!0,n)}}function E(e,n){return e?"function"==typeof e?e(n.params,n.data):e:""}var w=f,T=n,A=r,P=l,k="/",$="./",j=new RegExp(["(\\\\.)","(?:\\:(\\w+)(?:\\(((?:\\\\.|[^\\\\()])+)\\))?|\\(((?:\\\\.|[^\\\\()])+)\\))([+*?])?"].join("|"),"g");w.parse=T,w.compile=function(e,t){return r(n(e,t))},w.tokensToFunction=A,w.tokensToRegExp=P;var O=function(e){return"/"===e.charAt(0)?e:"/"+e},R=function(e){return"/"===e.charAt(0)?e.slice(1):e},B=function(e){return"/"===e.charAt(e.length-1)?e:e+"/"},C=function(e,n){return B(e)+n},S=function(e){var n=e.name,r=e.path,t=e.pathOptions,a=void 0===t?{}:t,o=e.body,i=e.children,u=void 0===i?[]:i,c=e.preload,l=e.load,f=e.title,p=e.extra,s=e.params,h=null==a.end||a.end,d=[];u.length&&(a.end=!1,d=u.map(S));var m=[],v=w(r,m,a);return{public:{name:n,path:r,body:o,keys:m.map(function(e){return e.name}),preload:c&&x(c),load:l,extra:p},match:{re:v,keys:m,mustBeExact:h},children:d,paramParsers:s,responseProps:function(e){return{name:n,body:this.public.body&&this.public.body(),title:E(f,e)}}}};return function(n,r,t){function a(n){b=n.map(S);for(var r in x)delete x[r];E.forEach(function(n){n.reset(),x[n.name]=n.get,e(b,n)})}function o(e){if(h){var n=h.get(e);if(null!=n)return Promise.resolve(n)}return d(e,b,x).then(function(e){return h&&h.set(e),e})}function i(e,n){for(v.forEach(function(r){r(e,n)}),w.forEach(function(r){null!=r&&r(e,n)});T.length;)T.pop()(e,n);g.forEach(function(r){r(e,n)})}void 0===t&&(t={});var u=t,c=u.addons,l=void 0===c?[]:c,f=u.sideEffects,s=void 0===f?[]:f,h=u.cache,m=u.pathnameOptions,v=[],g=[];s.forEach(function(e){e.after?g.push(e.fn):v.push(e.fn)});var y,b=[],x={},E=l.concat(p(m)),w=[],T=[],A=[];return a(r),n.respondWith(function(e){y&&(y.cancel(e.action),y.cancelled=!0),y=e,o(e.location).then(function(r){if(!e.cancelled)return e.finish(),y=void 0,i(r,e.action),A=[r,e.action],r.redirectTo&&n.replace(r.redirectTo),r})}),{addons:x,history:n,subscribe:function(e,n){if("function"!=typeof e)throw new Error("The argument passed to subscribe must be a function");var r=(n||{}).once;if(void 0===r||!r){A.length&&e.apply(null,A);var t=w.push(e);return function(){w[t-1]=null}}A.length?e.apply(null,A):T.push(e)},refresh:a}}}(); | ||
//# sourceMappingURL=curi.min.js.map |
{ | ||
"name": "@curi/core", | ||
"version": "1.0.0-beta.17", | ||
"version": "1.0.0-beta.18", | ||
"description": "A JavaScript router you can use with anywhere", | ||
@@ -5,0 +5,0 @@ "main": "dist/curi.common.js", |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
106860
1640