node-cube
Advanced tools
Comparing version 3.1.26 to 3.1.27
@@ -5,3 +5,3 @@ { | ||
"description": "a new way to write js in browser", | ||
"version": "3.1.26", | ||
"version": "3.1.27", | ||
"homepage": "https://github.com/fishbar/cube", | ||
@@ -8,0 +8,0 @@ "repository": { |
@@ -25,3 +25,3 @@ /*! | ||
var debug = true; | ||
var entrances = {}; // Cube.use's cb | ||
var entrances = new Map(); // Cube.use's cb | ||
// 兼容请求 key 带入参,返回 key 不带入参的情况。eg. 请求 /xxx?env=xx 返回 Cube('/xxx',), requireMap 缓存了 { '/xxx': '/xxx?env=xx' } | ||
@@ -238,21 +238,20 @@ // 此兼容是在业务方已知的情况,后期会改造返回的代码头。 | ||
function startAppAndCallback() { | ||
var key, arr; | ||
debug && console.time('cube exec'); | ||
for (key in entrances) { | ||
if (entrances.hasOwnProperty(key)) { | ||
arr = key.split(','); | ||
arr.forEach(function (entrance) { | ||
var count = 0; | ||
fireModule(entrance); | ||
entrances[key].forEach(function (fn) { | ||
var called = fn(installedModules[entrance].exports); | ||
if (called) { | ||
count++; | ||
} | ||
}); | ||
if (entrances[key].length === count) { // 回调函数都执行完后删除 | ||
delete entrances[key]; | ||
for (let [key, value] of entrances) { | ||
key.length && key.forEach(function (entrance) { | ||
// 出现多次 startAppAndCallback, 在某次 startAppAndCallback 未结束时,entrances 增加了,但其实 loading 并未结束 | ||
// 严格检查 | ||
if (loading[entrance]) return; | ||
var count = 0; | ||
fireModule(entrance); | ||
value.length && value.forEach(function (fn) { | ||
var called = fn(installedModules[entrance].exports); | ||
if (called) { | ||
count++; | ||
} | ||
}); | ||
} | ||
if (value.length === count) { // 回调函数都执行完后删除 | ||
entrances.delete(key); | ||
} | ||
}); | ||
} | ||
@@ -368,6 +367,7 @@ debug && console.timeEnd('cube exec'); | ||
if (!entrances[mods]) { | ||
entrances[mods] = []; | ||
// WARN: mods 是数组,会被自然的用 , 拼接,但 query 入参也可能带 , 所以这边 entrances 用 Map | ||
if (!entrances.has(mods)) { | ||
entrances.set(mods, []); | ||
} | ||
entrances[mods].push(function () { | ||
entrances.get(mods).push(function () { | ||
var apps = []; | ||
@@ -374,0 +374,0 @@ var length = mods.length; |
/*! | ||
* Cube v3.1.26 | ||
* Cube v3.1.27 | ||
*/ | ||
(function(a,b){function c(){}function d(a,b){if(1===arguments.length)return j(a);var c=j(a);return l.css(c,b,a),a}function e(a){return function(b,c,d){2===arguments.length&&'function'===typeof c?(d=c,c=null,l.use(b,a,d)):l.use(b,a,function(a){a=l.css(a,c,b),d&&d(a)})}}function f(a){var b=a.indexOf?a.indexOf(t):0;if(0>=b)return'';var c=a.substr(0,b);return s[c]?s[c]+a.substr(b+1):''}function g(a){for(var b,c=a.length,d=0;d<c;d++)b=a[d],-1===b.indexOf(t)&&(0===b.indexOf('./')?a[d]=b.substr(1):'/'!==b[0]&&(a[d]='/'+b));return a}function h(){if(F.length)return!1;for(var a in C)if(C.hasOwnProperty(a))return!1;w&&console.timeEnd('cube load'),k()}function i(a,b){return'string'===typeof a&&(a=[a]),E?void(a.forEach(function(a){if(!B[a]){const[h,i]=a.split('?');var c=p.createElement('script');c.type='text/javascript',c.async='true',c.charset=u,c.onerror=()=>{l(a,[],()=>{console.error(`load module: ${a} failed.`)})};var d=f(h),e=d||r+h,g=[];if(n&&g.push(n),w&&(g.push('m'),g.push('ref='+b)),i){const a=m(i);Array.prototype.push.apply(g,Object.keys(a).map((b)=>`${b}=${a[b]}`))}c.src=g.length?e+'?'+g.join('&'):e,D.appendChild(c),B[a]={exports:{},loaded:!1,fired:!1},y[h]=a,C[a]=!0}}),h()):void F.push([a,b])}function j(b){var c=B[b];if(!c){const a=new Error('Cube Error: Cannot find module \''+b+'\'');if(v)throw a;else return q.error(a),{}}if(!c.fired)if(c.fired=!0,v)c.exports=c.fn.apply(a,[c,c.exports,d,e(b),z,A]);else try{c.exports=c.fn.apply(a,[c,c.exports,d,e(b),z,A])}catch(a){q.error(a),c.exports={}}return c.exports}function k(){var a,b;for(a in w&&console.time('cube exec'),x)x.hasOwnProperty(a)&&(b=a.split(','),b.forEach(function(b){var c=0;j(b),x[a].forEach(function(a){var d=a(B[b].exports);d&&c++}),x[a].length===c&&delete x[a]}));w&&console.timeEnd('cube exec')}function l(a,b,c){a=y[a]||a;var d=B[a];d||(d=B[a]={exports:{},fired:!1}),d.loaded=!0,d.fn=c,y[a]&&delete y[a],C[a]?(delete C[a],i(b,a)):b.length&&i(b,a)}function m(a){let b=a.split('&'),c={};return b.forEach((a)=>{let b=a.split('=');c[b[0]]=b[1]}),c}var n,o=window,p=document,q=console,r='',s={},t=':',u='utf-8',v=!0,w=!0,x={},y={},z={env:{NODE_ENV:'production'}},A=void 0,B={},C={},D=p.querySelector('head'),E=!1,F=[];w&&console.time('cube load'),l.setRemoteBase=function(a){Object.assign(s,a)},l.toString=function(){return'Cube:v3.1.26'},l.init=function(a){if(a.base&&'/'!==a.base&&(r=a.base.replace(/\/$/,'')),a.remoteBase)for(var b in a.remoteBase)a.remoteBase.hasOwnProperty(b)&&(s[b]=a.remoteBase[b].replace(/\/$/,''));for(a.charset&&(u=a.charset),a.version&&(n=a.version),void 0!==a.debug&&(w=a.debug),void 0!==a.strict&&(v=a.strict),a.env&&(z.env.NODE_ENV=a.env),a.global&&(A=a.global),E=!0;F.length;){var c=F.shift();i(c[0],c[1])}return this},l.use=function(b,d,e,f){if(!b)throw new Error('Cube.use(moduleName) moduleName is undefined!');return'function'===typeof d&&(f=e,e=d,d=void 0),d||(d='Cube.use'),e=e||c,'string'===typeof b&&(b=[b]),f||(b=g(b)),x[b]||(x[b]=[]),x[b].push(function(){var c=[],d=b.length,f=!1;return function(b){if(!f)return(c.push(b),c.length===d)?(f=!0,e.apply(a,c),!0):void 0}}()),i(b,d),this},l.register=function(a,b){return B[a]?q.warn('Cube Warning: Module \''+a+'\' already registered'):(B[a]={exports:b,fn:c,loaded:!0,fired:!0},this)};var G=/([^};]+)(\{[^}]+\})/g,H={};l.css=function(a,b,c){if(a){var d=c+'@'+b;if(!H[d]){H[d]=!0,b&&(a=a.replace(G,function(a,c,d){var e=c.split(',').map(function(a){return b+' '+a.trim()});return e.join(',')+d}));var e=p.createElement('style');return e.setAttribute('type','text/css'),e.setAttribute('mod',c),b&&e.setAttribute('ns',b),D.appendChild(e),e.innerHTML=a,a}}},l.debug=function(){o.localStorage&&o.addEventListener?(localStorage.cube='debug',location.reload()):q.error('Cube Error: Cannot debug, your browser does not support localStorage or addEventListener')},l.cache=function(){var a,b,c={},d={};for(a in B)B.hasOwnProperty(a)&&(b=B[a],b.loaded||(c[a]=b),b.fired||(d[a]=b));q.info('modules:',B),q.info('unloaded:',c),q.info('unfired:',d)},o.localStorage&&'debug'===localStorage.cube&&(w=!0,o.addEventListener('load',l.cache)),b=b||'Cube',a[b]?q.error('Cube Error: window.'+b+' already in using, replace the last "null" param in cube.js'):a[b]=l;var I=p.currentScript;if(I){var J=I.dataset;J.base&&(l.init(J),l.use(J.main||'index.js',function(a){a.run&&a.run()}))}})(window,null); | ||
(function(a,b){function c(){}function d(a,b){if(1===arguments.length)return j(a);var c=j(a);return l.css(c,b,a),a}function e(a){return function(b,c,d){2===arguments.length&&'function'===typeof c?(d=c,c=null,l.use(b,a,d)):l.use(b,a,function(a){a=l.css(a,c,b),d&&d(a)})}}function f(a){var b=a.indexOf?a.indexOf(t):0;if(0>=b)return'';var c=a.substr(0,b);return s[c]?s[c]+a.substr(b+1):''}function g(a){for(var b,c=a.length,d=0;d<c;d++)b=a[d],-1===b.indexOf(t)&&(0===b.indexOf('./')?a[d]=b.substr(1):'/'!==b[0]&&(a[d]='/'+b));return a}function h(){if(F.length)return!1;for(var a in C)if(C.hasOwnProperty(a))return!1;w&&console.timeEnd('cube load'),k()}function i(a,b){return'string'===typeof a&&(a=[a]),E?void(a.forEach(function(a){if(!B[a]){const[h,i]=a.split('?');var c=p.createElement('script');c.type='text/javascript',c.async='true',c.charset=u,c.onerror=()=>{l(a,[],()=>{console.error(`load module: ${a} failed.`)})};var d=f(h),e=d||r+h,g=[];if(n&&g.push(n),w&&(g.push('m'),g.push('ref='+b)),i){const a=m(i);Array.prototype.push.apply(g,Object.keys(a).map((b)=>`${b}=${a[b]}`))}c.src=g.length?e+'?'+g.join('&'):e,D.appendChild(c),B[a]={exports:{},loaded:!1,fired:!1},y[h]=a,C[a]=!0}}),h()):void F.push([a,b])}function j(b){var c=B[b];if(!c){const a=new Error('Cube Error: Cannot find module \''+b+'\'');if(v)throw a;else return q.error(a),{}}if(!c.fired)if(c.fired=!0,v)c.exports=c.fn.apply(a,[c,c.exports,d,e(b),z,A]);else try{c.exports=c.fn.apply(a,[c,c.exports,d,e(b),z,A])}catch(a){q.error(a),c.exports={}}return c.exports}function k(){w&&console.time('cube exec');for(let[a,b]of x)a.length&&a.forEach(function(c){if(!C[c]){var d=0;j(c),b.length&&b.forEach(function(a){var b=a(B[c].exports);b&&d++}),b.length===d&&x.delete(a)}});w&&console.timeEnd('cube exec')}function l(a,b,c){a=y[a]||a;var d=B[a];d||(d=B[a]={exports:{},fired:!1}),d.loaded=!0,d.fn=c,y[a]&&delete y[a],C[a]?(delete C[a],i(b,a)):b.length&&i(b,a)}function m(a){let b=a.split('&'),c={};return b.forEach((a)=>{let b=a.split('=');c[b[0]]=b[1]}),c}var n,o=window,p=document,q=console,r='',s={},t=':',u='utf-8',v=!0,w=!0,x=new Map,y={},z={env:{NODE_ENV:'production'}},A=void 0,B={},C={},D=p.querySelector('head'),E=!1,F=[];w&&console.time('cube load'),l.setRemoteBase=function(a){Object.assign(s,a)},l.toString=function(){return'Cube:v3.1.27'},l.init=function(a){if(a.base&&'/'!==a.base&&(r=a.base.replace(/\/$/,'')),a.remoteBase)for(var b in a.remoteBase)a.remoteBase.hasOwnProperty(b)&&(s[b]=a.remoteBase[b].replace(/\/$/,''));for(a.charset&&(u=a.charset),a.version&&(n=a.version),void 0!==a.debug&&(w=a.debug),void 0!==a.strict&&(v=a.strict),a.env&&(z.env.NODE_ENV=a.env),a.global&&(A=a.global),E=!0;F.length;){var c=F.shift();i(c[0],c[1])}return this},l.use=function(b,d,e,f){if(!b)throw new Error('Cube.use(moduleName) moduleName is undefined!');return'function'===typeof d&&(f=e,e=d,d=void 0),d||(d='Cube.use'),e=e||c,'string'===typeof b&&(b=[b]),f||(b=g(b)),x.has(b)||x.set(b,[]),x.get(b).push(function(){var c=[],d=b.length,f=!1;return function(b){if(!f)return(c.push(b),c.length===d)?(f=!0,e.apply(a,c),!0):void 0}}()),i(b,d),this},l.register=function(a,b){return B[a]?q.warn('Cube Warning: Module \''+a+'\' already registered'):(B[a]={exports:b,fn:c,loaded:!0,fired:!0},this)};var G=/([^};]+)(\{[^}]+\})/g,H={};l.css=function(a,b,c){if(a){var d=c+'@'+b;if(!H[d]){H[d]=!0,b&&(a=a.replace(G,function(a,c,d){var e=c.split(',').map(function(a){return b+' '+a.trim()});return e.join(',')+d}));var e=p.createElement('style');return e.setAttribute('type','text/css'),e.setAttribute('mod',c),b&&e.setAttribute('ns',b),D.appendChild(e),e.innerHTML=a,a}}},l.debug=function(){o.localStorage&&o.addEventListener?(localStorage.cube='debug',location.reload()):q.error('Cube Error: Cannot debug, your browser does not support localStorage or addEventListener')},l.cache=function(){var a,b,c={},d={};for(a in B)B.hasOwnProperty(a)&&(b=B[a],b.loaded||(c[a]=b),b.fired||(d[a]=b));q.info('modules:',B),q.info('unloaded:',c),q.info('unfired:',d)},o.localStorage&&'debug'===localStorage.cube&&(w=!0,o.addEventListener('load',l.cache)),b=b||'Cube',a[b]?q.error('Cube Error: window.'+b+' already in using, replace the last "null" param in cube.js'):a[b]=l;var I=p.currentScript;if(I){var J=I.dataset;J.base&&(l.init(J),l.use(J.main||'index.js',function(a){a.run&&a.run()}))}})(window,null); |
377676