amdld
Version:
AMD module loader with deterministic and just-in time module initialization
3 lines (2 loc) • 2.48 kB
JavaScript
(function(a,b){'use strict';function d(u){let w=q.get(u);if(!w){if(b)return b(u);throw new Error(`unknown module "${u}"`)}return w.init?void 0:w.exports}function e(u,w,x,y){this.id=u,this.exports=w,this.deps=x,this.fn=y,this.init=null,this.waitdeps=null}function f(u,w){if(u.waitdeps)for(let x of u.waitdeps){if(x==w)return[u.id];let y=q.get(x);if(y){let z=f(y,w);if(z)return[u.id].concat(z)}}return null}function g(u){u.init=null;let w=r.get(u.id);if(r.delete(u.id),u.fn){let x=u.fn.apply(u.exports,u.deps);x&&(u.exports=x),u.fn=null}if(u.deps=null,u.waitdeps=null,w)for(let x of w){let y=q.get(x);y.init&&(1==y.waitdeps.size?y.init():y.waitdeps.delete(u.id))}else'symbol'==typeof u.id&&q.delete(u.id)}function*h(u,w){for(;!0;){for(let x=0,y=w.length;x!=y;++x){let z=w[x];if(void 0===u.deps[x])if('require'==z)u.deps[x]=d;else if('exports'==z)u.deps[x]=u.exports;else if('module'==z)u.deps[x]=u;else{let A=q.get(z);if(A&&!A.init)u.deps[x]=A.exports,u.waitdeps&&u.waitdeps.delete(z);else{if(!u.waitdeps)u.waitdeps=new Set([z]);else if(!u.waitdeps.has(z))u.waitdeps.add(z);else continue;if(A){let B=f(A,u.id);if(B)throw B[B.length-1]!=u.id&&B.push(u.id),new Error(`Cyclic module dependency: ${u.id} -> ${B.join(' -> ')}`)}}}}if(!u.waitdeps||0==u.waitdeps.size)break;yield u.waitdeps}g(u)}function j(u,w){let x=h(u,w);return function(){let z=x.next();if(z.done)return!0;for(let A of z.value){let B=r.get(A);B?B.add(u.id):r.set(A,new Set([u.id]))}return!1}}function k(){if(clearTimeout(s),s=null,t=!0,r&&0<r.size){let u=[];for(let w of r.keys())q.has(w)||u.push(w);if(u.length)throw new Error(`Module load timeout -- still waiting on "${u.join('", "')}"`)}}function l(u,w,x){if(l.timeout&&0<l.timeout){if(t)return;clearTimeout(s),s=setTimeout(k,l.timeout)}let y=1;switch(typeof u){case'function':{x=u,u=null,w=[],y=0;break}case'object':{if(x=w,w=u,u=null,'function'!=typeof x)throw new Error('object module without id');break}default:{y=0,'function'==typeof w?(x=w,w=[]):!x&&(x=w,w=[],y=2);break}}if(!w||0==w.length){y=1==y&&'function'!=typeof x?2:y;let A=new e(u,y?x:{},null,y?null:x);return u?(q.set(u,A),g(A)):(x.apply(A.exports),A.fn=null),!0}if('function'!=typeof x)throw new Error('object module with dependencies');let z=new e(u||Symbol(''),{},Array(w.length),x);return q.set(z.id,z),z.init=j(z,w),z.init()}let q=new Map,r=new Map,s=null,t=!1;l.timeout=0,l.require=d,l.amd={},a.define=l})(this,'function'==typeof require?require:null);
//# sourceMappingURL=amdld.es6.min.js.map