diff --git a/dist/es6-module-loader-sans-promises.js b/dist/es6-module-loader-sans-promises.js index ab9911f..a81f7c1 100644 --- a/dist/es6-module-loader-sans-promises.js +++ b/dist/es6-module-loader-sans-promises.js @@ -406,9 +406,6 @@ function logloads(loads) { load.status = 'failed'; load.exception = exc; - loader.loaderObj.failed = loader.loaderObj.failed || []; - loader.loaderObj.failed.push(load); - var linkSets = load.linkSets.concat([]); for (var i = 0, l = linkSets.length; i < l; i++) linkSetFailed(linkSets[i], exc); @@ -529,7 +526,8 @@ function logloads(loads) { var startingLoad = linkSet.loads[0]; // non-executing link variation for loader tracing - // on the server + // on the server. Not in spec. + /***/ if (linkSet.loader.loaderObj.execute === false) { var loads = [].concat(linkSet.loads); for (var i = 0; i < loads.length; i++) { @@ -546,6 +544,7 @@ function logloads(loads) { } return linkSet.resolve(startingLoad); } + /***/ try { link(linkSet); @@ -561,9 +560,16 @@ function logloads(loads) { // 15.2.5.2.4 function linkSetFailed(linkSet, exc) { + var loader = linkSet.loader; var loads = linkSet.loads.concat([]); for (var i = 0, l = loads.length; i < l; i++) { var load = loads[i]; + + // store all failed load records + loader.loaderObj.failed = loader.loaderObj.failed || []; + if (loader.loaderObj.failed.indexOf(load) == -1) + loader.loaderObj.failed.push(load); + var linkIndex = indexOf.call(load.linkSets, linkSet); console.assert(linkIndex != -1, 'link not present'); load.linkSets.splice(linkIndex, 1); diff --git a/dist/es6-module-loader-sans-promises.min.js b/dist/es6-module-loader-sans-promises.min.js index 8729da2..88d01b4 100644 --- a/dist/es6-module-loader-sans-promises.min.js +++ b/dist/es6-module-loader-sans-promises.min.js @@ -3,4 +3,4 @@ * https://github.com/ModuleLoader/es6-module-loader * Copyright (c) 2014 Guy Bedford, Luke Hoban, Addy Osmani; Licensed MIT */ -!function(__global){function __eval(__source,__global,__moduleName){eval('var __moduleName = "'+(__moduleName||"").replace('"','"')+'"; with(__global) { (function() { '+__source+" \n }).call(__global); }")}!function(){function a(a){return{status:"loading",name:a,linkSets:[],dependencies:[],metadata:{}}}function b(a,b,c){return new x(g({step:c.address?"fetch":"locate",loader:a,moduleName:b,moduleMetadata:{},moduleSource:c.source,moduleAddress:c.address}))}function c(b,c,e,f){return new x(function(a){a(b.loaderObj.normalize(c,e,f))}).then(function(c){var e;if(b.modules[c])return{name:c};for(var f=0,g=b.loads.length;g>f;f++)if(e=b.loads[f],e.name==c)return e;return e=a(c),b.loads.push(e),d(b,e),e})}function d(a,b){e(a,b,x.resolve().then(function(){return a.loaderObj.locate({name:b.name,metadata:b.metadata})}))}function e(a,b,c){f(a,b,c.then(function(c){return"loading"==b.status?(b.address=c,a.loaderObj.fetch({name:b.name,metadata:b.metadata,address:c})):void 0}))}function f(a,b,d){d.then(function(c){return"loading"==b.status?a.loaderObj.translate({name:b.name,metadata:b.metadata,address:b.address,source:c}):void 0}).then(function(c){return"loading"==b.status?(b.source=c,a.loaderObj.instantiate({name:b.name,metadata:b.metadata,address:b.address,source:c})):void 0}).then(function(d){if("loading"==b.status){var e;if(void 0===d){if(!__global.traceur)throw new TypeError("Include Traceur for module syntax support");v=v||__global.traceur,b.address=b.address||"anon"+ ++B;try{var f=new v.syntax.Parser(new v.syntax.SourceFile(b.address,b.source)),g=f.parseModule();b.kind="declarative",e=t(g);var h=v.options.sourceMaps,j=v.options.modules;v.options.sourceMaps=!0,v.options.modules="instantiate";var k=new v.util.ErrorReporter;k.reportMessageInternal=function(a,b){throw new SyntaxError(b,a.start&&a.start.line_,a.start&&a.start.column_)};var l=__global.System;__global.System=__global.traceurSystem;var m=new v.codegeneration.module.AttachModuleNameTransformer(b.name).transformAny(g);m=new v.codegeneration.FromOptionsTransformer(k).transform(m);var n=new v.outputgeneration.SourceMapGenerator({file:b.address}),o={sourceMapGenerator:n},p=v.outputgeneration.TreeWriter.write(m,o);__global.btoa&&(p+="\n//# sourceMappingURL=data:application/json;base64,"+btoa(unescape(encodeURIComponent(o.sourceMap)))+"\n");var q=System.register;System.register=function(a,c,d){b.declare="string"==typeof a?d:c},__eval(p,__global,b.name)}catch(r){throw("SyntaxError"==r.name||"TypeError"==r.name)&&(r.message="Evaluating "+(b.name||b.address)+"\n "+r.message),q&&(System.register=q),l&&(__global.System=l),h&&(v.options.sourceMaps=h),j&&(v.options.modules=j),r}System.register=q,__global.System=l,v.options.sourceMaps=h,v.options.modules=j}else{if("object"!=typeof d)throw TypeError("Invalid instantiate return value");e=d.deps||[],b.execute=d.execute,b.kind="dynamic"}b.dependencies=[],b.depsList=e;for(var s=[],u=0,w=e.length;w>u;u++)(function(d){s.push(c(a,d,b.name,b.address).then(function(a){if(b.dependencies.push({key:d,value:a.name}),a.status&&"linked"!=a.status)for(var c=b.linkSets.concat([]),e=0,f=c.length;f>e;e++)i(c[e],a)}))})(e[u]);return x.all(s)}}).then(function(){b.status="loaded";for(var a=b.linkSets.concat([]),c=0,d=a.length;d>c;c++)j(a[c],b)})["catch"](function(c){b.status="failed",b.exception=c,a.loaderObj.failed=a.loaderObj.failed||[],a.loaderObj.failed.push(b);for(var d=b.linkSets.concat([]),e=0,f=d.length;f>e;e++)k(d[e],c)})}function g(b){return function(c){var g=b.loader,i=b.moduleName,j=b.step;if(g.modules[i])throw new TypeError('"'+i+'" already exists in the module table');for(var k=0,l=g.loads.length;l>k;k++)if(g.loads[k].name==i)throw new TypeError('"'+i+'" already loading');var m=a(i);m.metadata=b.moduleMetadata;var n=h(g,m);g.loads.push(m),c(n.done),"locate"==j?d(g,m):"fetch"==j?e(g,m,x.resolve(b.moduleAddress)):(m.address=b.moduleAddress,f(g,m,x.resolve(b.moduleSource)))}}function h(a,b){var c={loader:a,loads:[],loadingCount:0};return c.done=new x(function(a,b){c.resolve=a,c.reject=b}),i(c,b),c}function i(a,b){for(var c=0,d=a.loads.length;d>c;c++)if(a.loads[c]==b)return;a.loads.push(b),b.linkSets.push(a),"loaded"!=b.status&&a.loadingCount++;for(var e=a.loader,c=0,d=b.dependencies.length;d>c;c++){var f=b.dependencies[c].value;if(!e.modules[f])for(var g=0,h=e.loads.length;h>g;g++)if(e.loads[g].name==f){i(a,e.loads[g]);break}}}function j(a,b){if(a.loadingCount--,!(a.loadingCount>0)){var c=a.loads[0];if(a.loader.loaderObj.execute===!1){for(var d=[].concat(a.loads),e=0;ed;d++){var f=c[d],g=z.call(f.linkSets,a);if(f.linkSets.splice(g,1),0==f.linkSets.length){var h=z.call(a.loader.loads,f);-1!=h&&a.loader.loads.splice(h,1)}}a.reject(b)}function l(a,b){a.loaderObj.trace&&(a.loaderObj.loads||(a.loaderObj.loads={}),a.loaderObj.loads[b.name]={name:b.name,dependencies:b.dependencies,address:b.address,metadata:b.metadata,source:b.source,kind:b.kind}),b.name&&(a.modules[b.name]=b.module);var c=z.call(a.loads,b);-1!=c&&a.loads.splice(c,1);for(var d=0,e=b.linkSets.length;e>d;d++)c=z.call(b.linkSets[d].loads,b),-1!=c&&b.linkSets[d].loads.splice(c,1);b.linkSets.splice(0,b.linkSets.length)}function m(a,b,c,d){if(c[a.groupIndex]=c[a.groupIndex]||[],-1==z.call(c[a.groupIndex],a)){c[a.groupIndex].push(a);for(var e=0;e=0;f--){for(var g=c[f],h=0;hb;b++)if(this[b]===a)return b;return-1},A={};r.prototype={define:function(a,b,c){if(A[a])throw new TypeError("Module is already loading.");return A[a]=new x(g({step:c&&c.address?"fetch":"translate",loader:this._loader,moduleName:a,moduleMetadata:c&&c.metadata||{},moduleSource:b,moduleAddress:c&&c.address})),A[a].then(function(){delete A[a]})},load:function(a){return this._loader.modules[a]?(q(this._loader.modules[a],[],this._loader),x.resolve(this._loader.modules[a].module)):A[a]?A[a]:(A[a]=b(this._loader,a,{}),A[a].then(function(){delete A[a]}))},module:function(b,c){var d=a();d.address=c&&c.address;var e=h(this._loader,d),g=x.resolve(b),i=this._loader,j=e.done.then(function(){return p(i,d)});return f(i,d,g),j},"import":function(a,c){var d=this;return x.resolve(d.normalize(a,c&&c.name,c&&c.address)).then(function(a){var e=d._loader;return e.modules[a]?(q(e.modules[a],[],e._loader),x.resolve(e.modules[a].module)):(A[a]||(A[a]=b(e,a,c||{}))).then(function(b){return delete A[a],p(e,b)})})},eval:function(){throw new TypeError("Eval not implemented in polyfill")},get:function(a){return this._loader.modules[a]?(q(this._loader.modules[a],[],this),this._loader.modules[a].module):void 0},has:function(a){return!!this._loader.modules[a]},set:function(a,b){if(!b.__esModule)throw new TypeError("Set must be a module");this._loader.modules[a]={module:b}},"delete":function(a){return this._loader.modules[a]?delete this._loader.modules[a]:!1},entries:function(){throw new TypeError("Iteration not yet implemented in the polyfill")},keys:function(){throw new TypeError("Iteration not yet implemented in the polyfill")},values:function(){throw new TypeError("Iteration not yet implemented in the polyfill")},normalize:function(a){return a},locate:function(a){return a.name},fetch:function(){throw new TypeError("Fetch not implemented")},translate:function(a){return a.source},instantiate:function(){}};var B=0;"object"==typeof exports&&(module.exports=r),__global.Reflect=__global.Reflect||{},__global.Reflect.Loader=__global.Reflect.Loader||r,__global.LoaderPolyfill=r,__global.Module=u}()}("undefined"!=typeof global?global:this),function(a){function b(a){var b=String(a).replace(/^\s+|\s+$/g,"").match(/^([^:\/?#]+:)?(\/\/(?:[^:@]*(?::[^:@]*)?@)?(([^:\/?#]*)(?::(\d*))?))?([^?#]*)(\?[^#]*)?(#[\s\S]*)?/);return b?{href:b[0]||"",protocol:b[1]||"",authority:b[2]||"",host:b[3]||"",hostname:b[4]||"",port:b[5]||"",pathname:b[6]||"",search:b[7]||"",hash:b[8]||""}:null}function c(a,c){function d(a){var b=[];return a.replace(/^(\.\.?(\/|$))+/,"").replace(/\/(\.(\/|$))+/g,"/").replace(/\/\.\.$/,"/../").replace(/\/?[^\/]*/g,function(a){"/.."===a?b.pop():b.push(a)}),b.join("").replace(/^\//,"/"===a.charAt(0)?"/":"")}return c=b(c||""),a=b(a||""),c&&a?(c.protocol||a.protocol)+(c.protocol||c.authority?c.authority:a.authority)+d(c.protocol||c.authority||"/"===c.pathname.charAt(0)?c.pathname:c.pathname?(a.authority&&!a.pathname?"/":"")+a.pathname.slice(0,a.pathname.lastIndexOf("/")+1)+c.pathname:a.pathname)+(c.protocol||c.authority||c.pathname?c.search:c.search||a.search)+c.hash:null}function d(){document.removeEventListener("DOMContentLoaded",d,!1),window.removeEventListener("load",d,!1),e()}function e(){for(var a=document.getElementsByTagName("script"),b=0;b2)throw new TypeError("Only one wildcard in a path is permitted");1==g.length?d==f&&f.length>e.length&&(e=f):d.substr(0,g[0].length)==g[0]&&d.substr(d.length-g[1].length)==g[1]&&(e=f,b=d.substr(g[0].length,d.length-g[1].length-g[0].length))}var h=this.paths[e];return b&&(h=h.replace("*",b)),c(this.baseURL,h)},fetch:function(a){return new i(function(b,d){f(c(this.baseURL,a.address),function(a){b(a)},d)})}});if(g){var l=window.location.href.split("#")[0].split("?")[0];k.baseURL=l.substring(0,l.lastIndexOf("/")+1)}else k.baseURL="./";if(k.paths={"*":"*.js"},a.System&&a.traceur&&(a.traceurSystem=a.System),g&&(a.System=k),g){var m=document.getElementsByTagName("script");m=m[m.length-1],"complete"===document.readyState?setTimeout(e):document.addEventListener&&(document.addEventListener("DOMContentLoaded",d,!1),window.addEventListener("load",d,!1)),m.getAttribute("data-init")&&window[m.getAttribute("data-init")]()}"object"==typeof exports&&(module.exports=k)}("undefined"!=typeof global?global:this); \ No newline at end of file +!function(__global){function __eval(__source,__global,__moduleName){eval('var __moduleName = "'+(__moduleName||"").replace('"','"')+'"; with(__global) { (function() { '+__source+" \n }).call(__global); }")}!function(){function a(a){return{status:"loading",name:a,linkSets:[],dependencies:[],metadata:{}}}function b(a,b,c){return new x(g({step:c.address?"fetch":"locate",loader:a,moduleName:b,moduleMetadata:{},moduleSource:c.source,moduleAddress:c.address}))}function c(b,c,e,f){return new x(function(a){a(b.loaderObj.normalize(c,e,f))}).then(function(c){var e;if(b.modules[c])return{name:c};for(var f=0,g=b.loads.length;g>f;f++)if(e=b.loads[f],e.name==c)return e;return e=a(c),b.loads.push(e),d(b,e),e})}function d(a,b){e(a,b,x.resolve().then(function(){return a.loaderObj.locate({name:b.name,metadata:b.metadata})}))}function e(a,b,c){f(a,b,c.then(function(c){return"loading"==b.status?(b.address=c,a.loaderObj.fetch({name:b.name,metadata:b.metadata,address:c})):void 0}))}function f(a,b,d){d.then(function(c){return"loading"==b.status?a.loaderObj.translate({name:b.name,metadata:b.metadata,address:b.address,source:c}):void 0}).then(function(c){return"loading"==b.status?(b.source=c,a.loaderObj.instantiate({name:b.name,metadata:b.metadata,address:b.address,source:c})):void 0}).then(function(d){if("loading"==b.status){var e;if(void 0===d){if(!__global.traceur)throw new TypeError("Include Traceur for module syntax support");v=v||__global.traceur,b.address=b.address||"anon"+ ++B;try{var f=new v.syntax.Parser(new v.syntax.SourceFile(b.address,b.source)),g=f.parseModule();b.kind="declarative",e=t(g);var h=v.options.sourceMaps,j=v.options.modules;v.options.sourceMaps=!0,v.options.modules="instantiate";var k=new v.util.ErrorReporter;k.reportMessageInternal=function(a,b){throw new SyntaxError(b,a.start&&a.start.line_,a.start&&a.start.column_)};var l=__global.System;__global.System=__global.traceurSystem;var m=new v.codegeneration.module.AttachModuleNameTransformer(b.name).transformAny(g);m=new v.codegeneration.FromOptionsTransformer(k).transform(m);var n=new v.outputgeneration.SourceMapGenerator({file:b.address}),o={sourceMapGenerator:n},p=v.outputgeneration.TreeWriter.write(m,o);__global.btoa&&(p+="\n//# sourceMappingURL=data:application/json;base64,"+btoa(unescape(encodeURIComponent(o.sourceMap)))+"\n");var q=System.register;System.register=function(a,c,d){b.declare="string"==typeof a?d:c},__eval(p,__global,b.name)}catch(r){throw("SyntaxError"==r.name||"TypeError"==r.name)&&(r.message="Evaluating "+(b.name||b.address)+"\n "+r.message),q&&(System.register=q),l&&(__global.System=l),h&&(v.options.sourceMaps=h),j&&(v.options.modules=j),r}System.register=q,__global.System=l,v.options.sourceMaps=h,v.options.modules=j}else{if("object"!=typeof d)throw TypeError("Invalid instantiate return value");e=d.deps||[],b.execute=d.execute,b.kind="dynamic"}b.dependencies=[],b.depsList=e;for(var s=[],u=0,w=e.length;w>u;u++)(function(d){s.push(c(a,d,b.name,b.address).then(function(a){if(b.dependencies.push({key:d,value:a.name}),a.status&&"linked"!=a.status)for(var c=b.linkSets.concat([]),e=0,f=c.length;f>e;e++)i(c[e],a)}))})(e[u]);return x.all(s)}}).then(function(){b.status="loaded";for(var a=b.linkSets.concat([]),c=0,d=a.length;d>c;c++)j(a[c],b)})["catch"](function(a){b.status="failed",b.exception=a;for(var c=b.linkSets.concat([]),d=0,e=c.length;e>d;d++)k(c[d],a)})}function g(b){return function(c){var g=b.loader,i=b.moduleName,j=b.step;if(g.modules[i])throw new TypeError('"'+i+'" already exists in the module table');for(var k=0,l=g.loads.length;l>k;k++)if(g.loads[k].name==i)throw new TypeError('"'+i+'" already loading');var m=a(i);m.metadata=b.moduleMetadata;var n=h(g,m);g.loads.push(m),c(n.done),"locate"==j?d(g,m):"fetch"==j?e(g,m,x.resolve(b.moduleAddress)):(m.address=b.moduleAddress,f(g,m,x.resolve(b.moduleSource)))}}function h(a,b){var c={loader:a,loads:[],loadingCount:0};return c.done=new x(function(a,b){c.resolve=a,c.reject=b}),i(c,b),c}function i(a,b){for(var c=0,d=a.loads.length;d>c;c++)if(a.loads[c]==b)return;a.loads.push(b),b.linkSets.push(a),"loaded"!=b.status&&a.loadingCount++;for(var e=a.loader,c=0,d=b.dependencies.length;d>c;c++){var f=b.dependencies[c].value;if(!e.modules[f])for(var g=0,h=e.loads.length;h>g;g++)if(e.loads[g].name==f){i(a,e.loads[g]);break}}}function j(a,b){if(a.loadingCount--,!(a.loadingCount>0)){var c=a.loads[0];if(a.loader.loaderObj.execute===!1){for(var d=[].concat(a.loads),e=0;ee;e++){var g=d[e];c.loaderObj.failed=c.loaderObj.failed||[],-1==c.loaderObj.failed.indexOf(g)&&c.loaderObj.failed.push(g);var h=z.call(g.linkSets,a);if(g.linkSets.splice(h,1),0==g.linkSets.length){var i=z.call(a.loader.loads,g);-1!=i&&a.loader.loads.splice(i,1)}}a.reject(b)}function l(a,b){a.loaderObj.trace&&(a.loaderObj.loads||(a.loaderObj.loads={}),a.loaderObj.loads[b.name]={name:b.name,dependencies:b.dependencies,address:b.address,metadata:b.metadata,source:b.source,kind:b.kind}),b.name&&(a.modules[b.name]=b.module);var c=z.call(a.loads,b);-1!=c&&a.loads.splice(c,1);for(var d=0,e=b.linkSets.length;e>d;d++)c=z.call(b.linkSets[d].loads,b),-1!=c&&b.linkSets[d].loads.splice(c,1);b.linkSets.splice(0,b.linkSets.length)}function m(a,b,c,d){if(c[a.groupIndex]=c[a.groupIndex]||[],-1==z.call(c[a.groupIndex],a)){c[a.groupIndex].push(a);for(var e=0;e=0;f--){for(var g=c[f],h=0;hb;b++)if(this[b]===a)return b;return-1},A={};r.prototype={define:function(a,b,c){if(A[a])throw new TypeError("Module is already loading.");return A[a]=new x(g({step:c&&c.address?"fetch":"translate",loader:this._loader,moduleName:a,moduleMetadata:c&&c.metadata||{},moduleSource:b,moduleAddress:c&&c.address})),A[a].then(function(){delete A[a]})},load:function(a){return this._loader.modules[a]?(q(this._loader.modules[a],[],this._loader),x.resolve(this._loader.modules[a].module)):A[a]?A[a]:(A[a]=b(this._loader,a,{}),A[a].then(function(){delete A[a]}))},module:function(b,c){var d=a();d.address=c&&c.address;var e=h(this._loader,d),g=x.resolve(b),i=this._loader,j=e.done.then(function(){return p(i,d)});return f(i,d,g),j},"import":function(a,c){var d=this;return x.resolve(d.normalize(a,c&&c.name,c&&c.address)).then(function(a){var e=d._loader;return e.modules[a]?(q(e.modules[a],[],e._loader),x.resolve(e.modules[a].module)):(A[a]||(A[a]=b(e,a,c||{}))).then(function(b){return delete A[a],p(e,b)})})},eval:function(){throw new TypeError("Eval not implemented in polyfill")},get:function(a){return this._loader.modules[a]?(q(this._loader.modules[a],[],this),this._loader.modules[a].module):void 0},has:function(a){return!!this._loader.modules[a]},set:function(a,b){if(!b.__esModule)throw new TypeError("Set must be a module");this._loader.modules[a]={module:b}},"delete":function(a){return this._loader.modules[a]?delete this._loader.modules[a]:!1},entries:function(){throw new TypeError("Iteration not yet implemented in the polyfill")},keys:function(){throw new TypeError("Iteration not yet implemented in the polyfill")},values:function(){throw new TypeError("Iteration not yet implemented in the polyfill")},normalize:function(a){return a},locate:function(a){return a.name},fetch:function(){throw new TypeError("Fetch not implemented")},translate:function(a){return a.source},instantiate:function(){}};var B=0;"object"==typeof exports&&(module.exports=r),__global.Reflect=__global.Reflect||{},__global.Reflect.Loader=__global.Reflect.Loader||r,__global.LoaderPolyfill=r,__global.Module=u}()}("undefined"!=typeof global?global:this),function(a){function b(a){var b=String(a).replace(/^\s+|\s+$/g,"").match(/^([^:\/?#]+:)?(\/\/(?:[^:@]*(?::[^:@]*)?@)?(([^:\/?#]*)(?::(\d*))?))?([^?#]*)(\?[^#]*)?(#[\s\S]*)?/);return b?{href:b[0]||"",protocol:b[1]||"",authority:b[2]||"",host:b[3]||"",hostname:b[4]||"",port:b[5]||"",pathname:b[6]||"",search:b[7]||"",hash:b[8]||""}:null}function c(a,c){function d(a){var b=[];return a.replace(/^(\.\.?(\/|$))+/,"").replace(/\/(\.(\/|$))+/g,"/").replace(/\/\.\.$/,"/../").replace(/\/?[^\/]*/g,function(a){"/.."===a?b.pop():b.push(a)}),b.join("").replace(/^\//,"/"===a.charAt(0)?"/":"")}return c=b(c||""),a=b(a||""),c&&a?(c.protocol||a.protocol)+(c.protocol||c.authority?c.authority:a.authority)+d(c.protocol||c.authority||"/"===c.pathname.charAt(0)?c.pathname:c.pathname?(a.authority&&!a.pathname?"/":"")+a.pathname.slice(0,a.pathname.lastIndexOf("/")+1)+c.pathname:a.pathname)+(c.protocol||c.authority||c.pathname?c.search:c.search||a.search)+c.hash:null}function d(){document.removeEventListener("DOMContentLoaded",d,!1),window.removeEventListener("load",d,!1),e()}function e(){for(var a=document.getElementsByTagName("script"),b=0;b2)throw new TypeError("Only one wildcard in a path is permitted");1==g.length?d==f&&f.length>e.length&&(e=f):d.substr(0,g[0].length)==g[0]&&d.substr(d.length-g[1].length)==g[1]&&(e=f,b=d.substr(g[0].length,d.length-g[1].length-g[0].length))}var h=this.paths[e];return b&&(h=h.replace("*",b)),c(this.baseURL,h)},fetch:function(a){return new i(function(b,d){f(c(this.baseURL,a.address),function(a){b(a)},d)})}});if(g){var l=window.location.href.split("#")[0].split("?")[0];k.baseURL=l.substring(0,l.lastIndexOf("/")+1)}else k.baseURL="./";if(k.paths={"*":"*.js"},a.System&&a.traceur&&(a.traceurSystem=a.System),g&&(a.System=k),g){var m=document.getElementsByTagName("script");m=m[m.length-1],"complete"===document.readyState?setTimeout(e):document.addEventListener&&(document.addEventListener("DOMContentLoaded",d,!1),window.addEventListener("load",d,!1)),m.getAttribute("data-init")&&window[m.getAttribute("data-init")]()}"object"==typeof exports&&(module.exports=k)}("undefined"!=typeof global?global:this); \ No newline at end of file diff --git a/dist/es6-module-loader.js b/dist/es6-module-loader.js index 68f8265..95029b2 100644 --- a/dist/es6-module-loader.js +++ b/dist/es6-module-loader.js @@ -1090,9 +1090,6 @@ function logloads(loads) { load.status = 'failed'; load.exception = exc; - loader.loaderObj.failed = loader.loaderObj.failed || []; - loader.loaderObj.failed.push(load); - var linkSets = load.linkSets.concat([]); for (var i = 0, l = linkSets.length; i < l; i++) linkSetFailed(linkSets[i], exc); @@ -1213,7 +1210,8 @@ function logloads(loads) { var startingLoad = linkSet.loads[0]; // non-executing link variation for loader tracing - // on the server + // on the server. Not in spec. + /***/ if (linkSet.loader.loaderObj.execute === false) { var loads = [].concat(linkSet.loads); for (var i = 0; i < loads.length; i++) { @@ -1230,6 +1228,7 @@ function logloads(loads) { } return linkSet.resolve(startingLoad); } + /***/ try { link(linkSet); @@ -1245,9 +1244,16 @@ function logloads(loads) { // 15.2.5.2.4 function linkSetFailed(linkSet, exc) { + var loader = linkSet.loader; var loads = linkSet.loads.concat([]); for (var i = 0, l = loads.length; i < l; i++) { var load = loads[i]; + + // store all failed load records + loader.loaderObj.failed = loader.loaderObj.failed || []; + if (loader.loaderObj.failed.indexOf(load) == -1) + loader.loaderObj.failed.push(load); + var linkIndex = indexOf.call(load.linkSets, linkSet); console.assert(linkIndex != -1, 'link not present'); load.linkSets.splice(linkIndex, 1); diff --git a/dist/es6-module-loader.min.js b/dist/es6-module-loader.min.js index c889ac4..af19460 100644 --- a/dist/es6-module-loader.min.js +++ b/dist/es6-module-loader.min.js @@ -3,4 +3,4 @@ * https://github.com/ModuleLoader/es6-module-loader * Copyright (c) 2014 Guy Bedford, Luke Hoban, Addy Osmani; Licensed MIT */ -!function(){var a,b,c,d;!function(){var e={},f={};a=function(a,b,c){e[a]={deps:b,callback:c}},d=c=b=function(a){function c(b){if("."!==b.charAt(0))return b;for(var c=b.split("/"),d=a.split("/").slice(0,-1),e=0,f=c.length;f>e;e++){var g=c[e];if(".."===g)d.pop();else{if("."===g)continue;d.push(g)}}return d.join("/")}if(d._eak_seen=e,f[a])return f[a];if(f[a]={},!e[a])throw new Error("Could not find module "+a);for(var g,h=e[a],i=h.deps,j=h.callback,k=[],l=0,m=i.length;m>l;l++)"exports"===i[l]?k.push(g={}):k.push(b(c(i[l])));var n=j.apply(this,k);return f[a]=g||n}}(),a("promise/all",["./utils","exports"],function(a,b){"use strict";function c(a){var b=this;if(!d(a))throw new TypeError("You must pass an array to all.");return new b(function(b,c){function d(a){return function(b){f(a,b)}}function f(a,c){h[a]=c,0===--i&&b(h)}var g,h=[],i=a.length;0===i&&b([]);for(var j=0;jf;f++)if(e=b.loads[f],e.name==c)return e;return e=a(c),b.loads.push(e),d(b,e),e})}function d(a,b){e(a,b,x.resolve().then(function(){return a.loaderObj.locate({name:b.name,metadata:b.metadata})}))}function e(a,b,c){f(a,b,c.then(function(c){return"loading"==b.status?(b.address=c,a.loaderObj.fetch({name:b.name,metadata:b.metadata,address:c})):void 0}))}function f(a,b,d){d.then(function(c){return"loading"==b.status?a.loaderObj.translate({name:b.name,metadata:b.metadata,address:b.address,source:c}):void 0}).then(function(c){return"loading"==b.status?(b.source=c,a.loaderObj.instantiate({name:b.name,metadata:b.metadata,address:b.address,source:c})):void 0}).then(function(d){if("loading"==b.status){var e;if(void 0===d){if(!__global.traceur)throw new TypeError("Include Traceur for module syntax support");v=v||__global.traceur,b.address=b.address||"anon"+ ++B;try{var f=new v.syntax.Parser(new v.syntax.SourceFile(b.address,b.source)),g=f.parseModule();b.kind="declarative",e=t(g);var h=v.options.sourceMaps,j=v.options.modules;v.options.sourceMaps=!0,v.options.modules="instantiate";var k=new v.util.ErrorReporter;k.reportMessageInternal=function(a,b){throw new SyntaxError(b,a.start&&a.start.line_,a.start&&a.start.column_)};var l=__global.System;__global.System=__global.traceurSystem;var m=new v.codegeneration.module.AttachModuleNameTransformer(b.name).transformAny(g);m=new v.codegeneration.FromOptionsTransformer(k).transform(m);var n=new v.outputgeneration.SourceMapGenerator({file:b.address}),o={sourceMapGenerator:n},p=v.outputgeneration.TreeWriter.write(m,o);__global.btoa&&(p+="\n//# sourceMappingURL=data:application/json;base64,"+btoa(unescape(encodeURIComponent(o.sourceMap)))+"\n");var q=System.register;System.register=function(a,c,d){b.declare="string"==typeof a?d:c},__eval(p,__global,b.name)}catch(r){throw("SyntaxError"==r.name||"TypeError"==r.name)&&(r.message="Evaluating "+(b.name||b.address)+"\n "+r.message),q&&(System.register=q),l&&(__global.System=l),h&&(v.options.sourceMaps=h),j&&(v.options.modules=j),r}System.register=q,__global.System=l,v.options.sourceMaps=h,v.options.modules=j}else{if("object"!=typeof d)throw TypeError("Invalid instantiate return value");e=d.deps||[],b.execute=d.execute,b.kind="dynamic"}b.dependencies=[],b.depsList=e;for(var s=[],u=0,w=e.length;w>u;u++)(function(d){s.push(c(a,d,b.name,b.address).then(function(a){if(b.dependencies.push({key:d,value:a.name}),a.status&&"linked"!=a.status)for(var c=b.linkSets.concat([]),e=0,f=c.length;f>e;e++)i(c[e],a)}))})(e[u]);return x.all(s)}}).then(function(){b.status="loaded";for(var a=b.linkSets.concat([]),c=0,d=a.length;d>c;c++)j(a[c],b)})["catch"](function(c){b.status="failed",b.exception=c,a.loaderObj.failed=a.loaderObj.failed||[],a.loaderObj.failed.push(b);for(var d=b.linkSets.concat([]),e=0,f=d.length;f>e;e++)k(d[e],c)})}function g(b){return function(c){var g=b.loader,i=b.moduleName,j=b.step;if(g.modules[i])throw new TypeError('"'+i+'" already exists in the module table');for(var k=0,l=g.loads.length;l>k;k++)if(g.loads[k].name==i)throw new TypeError('"'+i+'" already loading');var m=a(i);m.metadata=b.moduleMetadata;var n=h(g,m);g.loads.push(m),c(n.done),"locate"==j?d(g,m):"fetch"==j?e(g,m,x.resolve(b.moduleAddress)):(m.address=b.moduleAddress,f(g,m,x.resolve(b.moduleSource)))}}function h(a,b){var c={loader:a,loads:[],loadingCount:0};return c.done=new x(function(a,b){c.resolve=a,c.reject=b}),i(c,b),c}function i(a,b){for(var c=0,d=a.loads.length;d>c;c++)if(a.loads[c]==b)return;a.loads.push(b),b.linkSets.push(a),"loaded"!=b.status&&a.loadingCount++;for(var e=a.loader,c=0,d=b.dependencies.length;d>c;c++){var f=b.dependencies[c].value;if(!e.modules[f])for(var g=0,h=e.loads.length;h>g;g++)if(e.loads[g].name==f){i(a,e.loads[g]);break}}}function j(a,b){if(a.loadingCount--,!(a.loadingCount>0)){var c=a.loads[0];if(a.loader.loaderObj.execute===!1){for(var d=[].concat(a.loads),e=0;ed;d++){var f=c[d],g=z.call(f.linkSets,a);if(f.linkSets.splice(g,1),0==f.linkSets.length){var h=z.call(a.loader.loads,f);-1!=h&&a.loader.loads.splice(h,1)}}a.reject(b)}function l(a,b){a.loaderObj.trace&&(a.loaderObj.loads||(a.loaderObj.loads={}),a.loaderObj.loads[b.name]={name:b.name,dependencies:b.dependencies,address:b.address,metadata:b.metadata,source:b.source,kind:b.kind}),b.name&&(a.modules[b.name]=b.module);var c=z.call(a.loads,b);-1!=c&&a.loads.splice(c,1);for(var d=0,e=b.linkSets.length;e>d;d++)c=z.call(b.linkSets[d].loads,b),-1!=c&&b.linkSets[d].loads.splice(c,1);b.linkSets.splice(0,b.linkSets.length)}function m(a,b,c,d){if(c[a.groupIndex]=c[a.groupIndex]||[],-1==z.call(c[a.groupIndex],a)){c[a.groupIndex].push(a);for(var e=0;e=0;f--){for(var g=c[f],h=0;hb;b++)if(this[b]===a)return b;return-1},A={};r.prototype={define:function(a,b,c){if(A[a])throw new TypeError("Module is already loading.");return A[a]=new x(g({step:c&&c.address?"fetch":"translate",loader:this._loader,moduleName:a,moduleMetadata:c&&c.metadata||{},moduleSource:b,moduleAddress:c&&c.address})),A[a].then(function(){delete A[a]})},load:function(a){return this._loader.modules[a]?(q(this._loader.modules[a],[],this._loader),x.resolve(this._loader.modules[a].module)):A[a]?A[a]:(A[a]=b(this._loader,a,{}),A[a].then(function(){delete A[a]}))},module:function(b,c){var d=a();d.address=c&&c.address;var e=h(this._loader,d),g=x.resolve(b),i=this._loader,j=e.done.then(function(){return p(i,d)});return f(i,d,g),j},"import":function(a,c){var d=this;return x.resolve(d.normalize(a,c&&c.name,c&&c.address)).then(function(a){var e=d._loader;return e.modules[a]?(q(e.modules[a],[],e._loader),x.resolve(e.modules[a].module)):(A[a]||(A[a]=b(e,a,c||{}))).then(function(b){return delete A[a],p(e,b)})})},eval:function(){throw new TypeError("Eval not implemented in polyfill")},get:function(a){return this._loader.modules[a]?(q(this._loader.modules[a],[],this),this._loader.modules[a].module):void 0},has:function(a){return!!this._loader.modules[a]},set:function(a,b){if(!b.__esModule)throw new TypeError("Set must be a module");this._loader.modules[a]={module:b}},"delete":function(a){return this._loader.modules[a]?delete this._loader.modules[a]:!1},entries:function(){throw new TypeError("Iteration not yet implemented in the polyfill")},keys:function(){throw new TypeError("Iteration not yet implemented in the polyfill")},values:function(){throw new TypeError("Iteration not yet implemented in the polyfill")},normalize:function(a){return a},locate:function(a){return a.name},fetch:function(){throw new TypeError("Fetch not implemented")},translate:function(a){return a.source},instantiate:function(){}};var B=0;"object"==typeof exports&&(module.exports=r),__global.Reflect=__global.Reflect||{},__global.Reflect.Loader=__global.Reflect.Loader||r,__global.LoaderPolyfill=r,__global.Module=u}()}("undefined"!=typeof global?global:this),function(a){function b(a){var b=String(a).replace(/^\s+|\s+$/g,"").match(/^([^:\/?#]+:)?(\/\/(?:[^:@]*(?::[^:@]*)?@)?(([^:\/?#]*)(?::(\d*))?))?([^?#]*)(\?[^#]*)?(#[\s\S]*)?/);return b?{href:b[0]||"",protocol:b[1]||"",authority:b[2]||"",host:b[3]||"",hostname:b[4]||"",port:b[5]||"",pathname:b[6]||"",search:b[7]||"",hash:b[8]||""}:null}function c(a,c){function d(a){var b=[];return a.replace(/^(\.\.?(\/|$))+/,"").replace(/\/(\.(\/|$))+/g,"/").replace(/\/\.\.$/,"/../").replace(/\/?[^\/]*/g,function(a){"/.."===a?b.pop():b.push(a)}),b.join("").replace(/^\//,"/"===a.charAt(0)?"/":"")}return c=b(c||""),a=b(a||""),c&&a?(c.protocol||a.protocol)+(c.protocol||c.authority?c.authority:a.authority)+d(c.protocol||c.authority||"/"===c.pathname.charAt(0)?c.pathname:c.pathname?(a.authority&&!a.pathname?"/":"")+a.pathname.slice(0,a.pathname.lastIndexOf("/")+1)+c.pathname:a.pathname)+(c.protocol||c.authority||c.pathname?c.search:c.search||a.search)+c.hash:null}function d(){document.removeEventListener("DOMContentLoaded",d,!1),window.removeEventListener("load",d,!1),e()}function e(){for(var a=document.getElementsByTagName("script"),b=0;b2)throw new TypeError("Only one wildcard in a path is permitted");1==g.length?d==f&&f.length>e.length&&(e=f):d.substr(0,g[0].length)==g[0]&&d.substr(d.length-g[1].length)==g[1]&&(e=f,b=d.substr(g[0].length,d.length-g[1].length-g[0].length))}var h=this.paths[e];return b&&(h=h.replace("*",b)),c(this.baseURL,h)},fetch:function(a){return new i(function(b,d){f(c(this.baseURL,a.address),function(a){b(a)},d)})}});if(g){var l=window.location.href.split("#")[0].split("?")[0];k.baseURL=l.substring(0,l.lastIndexOf("/")+1)}else k.baseURL="./";if(k.paths={"*":"*.js"},a.System&&a.traceur&&(a.traceurSystem=a.System),g&&(a.System=k),g){var m=document.getElementsByTagName("script");m=m[m.length-1],"complete"===document.readyState?setTimeout(e):document.addEventListener&&(document.addEventListener("DOMContentLoaded",d,!1),window.addEventListener("load",d,!1)),m.getAttribute("data-init")&&window[m.getAttribute("data-init")]()}"object"==typeof exports&&(module.exports=k)}("undefined"!=typeof global?global:this); \ No newline at end of file +!function(){var a,b,c,d;!function(){var e={},f={};a=function(a,b,c){e[a]={deps:b,callback:c}},d=c=b=function(a){function c(b){if("."!==b.charAt(0))return b;for(var c=b.split("/"),d=a.split("/").slice(0,-1),e=0,f=c.length;f>e;e++){var g=c[e];if(".."===g)d.pop();else{if("."===g)continue;d.push(g)}}return d.join("/")}if(d._eak_seen=e,f[a])return f[a];if(f[a]={},!e[a])throw new Error("Could not find module "+a);for(var g,h=e[a],i=h.deps,j=h.callback,k=[],l=0,m=i.length;m>l;l++)"exports"===i[l]?k.push(g={}):k.push(b(c(i[l])));var n=j.apply(this,k);return f[a]=g||n}}(),a("promise/all",["./utils","exports"],function(a,b){"use strict";function c(a){var b=this;if(!d(a))throw new TypeError("You must pass an array to all.");return new b(function(b,c){function d(a){return function(b){f(a,b)}}function f(a,c){h[a]=c,0===--i&&b(h)}var g,h=[],i=a.length;0===i&&b([]);for(var j=0;jf;f++)if(e=b.loads[f],e.name==c)return e;return e=a(c),b.loads.push(e),d(b,e),e})}function d(a,b){e(a,b,x.resolve().then(function(){return a.loaderObj.locate({name:b.name,metadata:b.metadata})}))}function e(a,b,c){f(a,b,c.then(function(c){return"loading"==b.status?(b.address=c,a.loaderObj.fetch({name:b.name,metadata:b.metadata,address:c})):void 0}))}function f(a,b,d){d.then(function(c){return"loading"==b.status?a.loaderObj.translate({name:b.name,metadata:b.metadata,address:b.address,source:c}):void 0}).then(function(c){return"loading"==b.status?(b.source=c,a.loaderObj.instantiate({name:b.name,metadata:b.metadata,address:b.address,source:c})):void 0}).then(function(d){if("loading"==b.status){var e;if(void 0===d){if(!__global.traceur)throw new TypeError("Include Traceur for module syntax support");v=v||__global.traceur,b.address=b.address||"anon"+ ++B;try{var f=new v.syntax.Parser(new v.syntax.SourceFile(b.address,b.source)),g=f.parseModule();b.kind="declarative",e=t(g);var h=v.options.sourceMaps,j=v.options.modules;v.options.sourceMaps=!0,v.options.modules="instantiate";var k=new v.util.ErrorReporter;k.reportMessageInternal=function(a,b){throw new SyntaxError(b,a.start&&a.start.line_,a.start&&a.start.column_)};var l=__global.System;__global.System=__global.traceurSystem;var m=new v.codegeneration.module.AttachModuleNameTransformer(b.name).transformAny(g);m=new v.codegeneration.FromOptionsTransformer(k).transform(m);var n=new v.outputgeneration.SourceMapGenerator({file:b.address}),o={sourceMapGenerator:n},p=v.outputgeneration.TreeWriter.write(m,o);__global.btoa&&(p+="\n//# sourceMappingURL=data:application/json;base64,"+btoa(unescape(encodeURIComponent(o.sourceMap)))+"\n");var q=System.register;System.register=function(a,c,d){b.declare="string"==typeof a?d:c},__eval(p,__global,b.name)}catch(r){throw("SyntaxError"==r.name||"TypeError"==r.name)&&(r.message="Evaluating "+(b.name||b.address)+"\n "+r.message),q&&(System.register=q),l&&(__global.System=l),h&&(v.options.sourceMaps=h),j&&(v.options.modules=j),r}System.register=q,__global.System=l,v.options.sourceMaps=h,v.options.modules=j}else{if("object"!=typeof d)throw TypeError("Invalid instantiate return value");e=d.deps||[],b.execute=d.execute,b.kind="dynamic"}b.dependencies=[],b.depsList=e;for(var s=[],u=0,w=e.length;w>u;u++)(function(d){s.push(c(a,d,b.name,b.address).then(function(a){if(b.dependencies.push({key:d,value:a.name}),a.status&&"linked"!=a.status)for(var c=b.linkSets.concat([]),e=0,f=c.length;f>e;e++)i(c[e],a)}))})(e[u]);return x.all(s)}}).then(function(){b.status="loaded";for(var a=b.linkSets.concat([]),c=0,d=a.length;d>c;c++)j(a[c],b)})["catch"](function(a){b.status="failed",b.exception=a;for(var c=b.linkSets.concat([]),d=0,e=c.length;e>d;d++)k(c[d],a)})}function g(b){return function(c){var g=b.loader,i=b.moduleName,j=b.step;if(g.modules[i])throw new TypeError('"'+i+'" already exists in the module table');for(var k=0,l=g.loads.length;l>k;k++)if(g.loads[k].name==i)throw new TypeError('"'+i+'" already loading');var m=a(i);m.metadata=b.moduleMetadata;var n=h(g,m);g.loads.push(m),c(n.done),"locate"==j?d(g,m):"fetch"==j?e(g,m,x.resolve(b.moduleAddress)):(m.address=b.moduleAddress,f(g,m,x.resolve(b.moduleSource)))}}function h(a,b){var c={loader:a,loads:[],loadingCount:0};return c.done=new x(function(a,b){c.resolve=a,c.reject=b}),i(c,b),c}function i(a,b){for(var c=0,d=a.loads.length;d>c;c++)if(a.loads[c]==b)return;a.loads.push(b),b.linkSets.push(a),"loaded"!=b.status&&a.loadingCount++;for(var e=a.loader,c=0,d=b.dependencies.length;d>c;c++){var f=b.dependencies[c].value;if(!e.modules[f])for(var g=0,h=e.loads.length;h>g;g++)if(e.loads[g].name==f){i(a,e.loads[g]);break}}}function j(a,b){if(a.loadingCount--,!(a.loadingCount>0)){var c=a.loads[0];if(a.loader.loaderObj.execute===!1){for(var d=[].concat(a.loads),e=0;ee;e++){var g=d[e];c.loaderObj.failed=c.loaderObj.failed||[],-1==c.loaderObj.failed.indexOf(g)&&c.loaderObj.failed.push(g);var h=z.call(g.linkSets,a);if(g.linkSets.splice(h,1),0==g.linkSets.length){var i=z.call(a.loader.loads,g);-1!=i&&a.loader.loads.splice(i,1)}}a.reject(b)}function l(a,b){a.loaderObj.trace&&(a.loaderObj.loads||(a.loaderObj.loads={}),a.loaderObj.loads[b.name]={name:b.name,dependencies:b.dependencies,address:b.address,metadata:b.metadata,source:b.source,kind:b.kind}),b.name&&(a.modules[b.name]=b.module);var c=z.call(a.loads,b);-1!=c&&a.loads.splice(c,1);for(var d=0,e=b.linkSets.length;e>d;d++)c=z.call(b.linkSets[d].loads,b),-1!=c&&b.linkSets[d].loads.splice(c,1);b.linkSets.splice(0,b.linkSets.length)}function m(a,b,c,d){if(c[a.groupIndex]=c[a.groupIndex]||[],-1==z.call(c[a.groupIndex],a)){c[a.groupIndex].push(a);for(var e=0;e=0;f--){for(var g=c[f],h=0;hb;b++)if(this[b]===a)return b;return-1},A={};r.prototype={define:function(a,b,c){if(A[a])throw new TypeError("Module is already loading.");return A[a]=new x(g({step:c&&c.address?"fetch":"translate",loader:this._loader,moduleName:a,moduleMetadata:c&&c.metadata||{},moduleSource:b,moduleAddress:c&&c.address})),A[a].then(function(){delete A[a]})},load:function(a){return this._loader.modules[a]?(q(this._loader.modules[a],[],this._loader),x.resolve(this._loader.modules[a].module)):A[a]?A[a]:(A[a]=b(this._loader,a,{}),A[a].then(function(){delete A[a]}))},module:function(b,c){var d=a();d.address=c&&c.address;var e=h(this._loader,d),g=x.resolve(b),i=this._loader,j=e.done.then(function(){return p(i,d)});return f(i,d,g),j},"import":function(a,c){var d=this;return x.resolve(d.normalize(a,c&&c.name,c&&c.address)).then(function(a){var e=d._loader;return e.modules[a]?(q(e.modules[a],[],e._loader),x.resolve(e.modules[a].module)):(A[a]||(A[a]=b(e,a,c||{}))).then(function(b){return delete A[a],p(e,b)})})},eval:function(){throw new TypeError("Eval not implemented in polyfill")},get:function(a){return this._loader.modules[a]?(q(this._loader.modules[a],[],this),this._loader.modules[a].module):void 0},has:function(a){return!!this._loader.modules[a]},set:function(a,b){if(!b.__esModule)throw new TypeError("Set must be a module");this._loader.modules[a]={module:b}},"delete":function(a){return this._loader.modules[a]?delete this._loader.modules[a]:!1},entries:function(){throw new TypeError("Iteration not yet implemented in the polyfill")},keys:function(){throw new TypeError("Iteration not yet implemented in the polyfill")},values:function(){throw new TypeError("Iteration not yet implemented in the polyfill")},normalize:function(a){return a},locate:function(a){return a.name},fetch:function(){throw new TypeError("Fetch not implemented")},translate:function(a){return a.source},instantiate:function(){}};var B=0;"object"==typeof exports&&(module.exports=r),__global.Reflect=__global.Reflect||{},__global.Reflect.Loader=__global.Reflect.Loader||r,__global.LoaderPolyfill=r,__global.Module=u}()}("undefined"!=typeof global?global:this),function(a){function b(a){var b=String(a).replace(/^\s+|\s+$/g,"").match(/^([^:\/?#]+:)?(\/\/(?:[^:@]*(?::[^:@]*)?@)?(([^:\/?#]*)(?::(\d*))?))?([^?#]*)(\?[^#]*)?(#[\s\S]*)?/);return b?{href:b[0]||"",protocol:b[1]||"",authority:b[2]||"",host:b[3]||"",hostname:b[4]||"",port:b[5]||"",pathname:b[6]||"",search:b[7]||"",hash:b[8]||""}:null}function c(a,c){function d(a){var b=[];return a.replace(/^(\.\.?(\/|$))+/,"").replace(/\/(\.(\/|$))+/g,"/").replace(/\/\.\.$/,"/../").replace(/\/?[^\/]*/g,function(a){"/.."===a?b.pop():b.push(a)}),b.join("").replace(/^\//,"/"===a.charAt(0)?"/":"")}return c=b(c||""),a=b(a||""),c&&a?(c.protocol||a.protocol)+(c.protocol||c.authority?c.authority:a.authority)+d(c.protocol||c.authority||"/"===c.pathname.charAt(0)?c.pathname:c.pathname?(a.authority&&!a.pathname?"/":"")+a.pathname.slice(0,a.pathname.lastIndexOf("/")+1)+c.pathname:a.pathname)+(c.protocol||c.authority||c.pathname?c.search:c.search||a.search)+c.hash:null}function d(){document.removeEventListener("DOMContentLoaded",d,!1),window.removeEventListener("load",d,!1),e()}function e(){for(var a=document.getElementsByTagName("script"),b=0;b2)throw new TypeError("Only one wildcard in a path is permitted");1==g.length?d==f&&f.length>e.length&&(e=f):d.substr(0,g[0].length)==g[0]&&d.substr(d.length-g[1].length)==g[1]&&(e=f,b=d.substr(g[0].length,d.length-g[1].length-g[0].length))}var h=this.paths[e];return b&&(h=h.replace("*",b)),c(this.baseURL,h)},fetch:function(a){return new i(function(b,d){f(c(this.baseURL,a.address),function(a){b(a)},d)})}});if(g){var l=window.location.href.split("#")[0].split("?")[0];k.baseURL=l.substring(0,l.lastIndexOf("/")+1)}else k.baseURL="./";if(k.paths={"*":"*.js"},a.System&&a.traceur&&(a.traceurSystem=a.System),g&&(a.System=k),g){var m=document.getElementsByTagName("script");m=m[m.length-1],"complete"===document.readyState?setTimeout(e):document.addEventListener&&(document.addEventListener("DOMContentLoaded",d,!1),window.addEventListener("load",d,!1)),m.getAttribute("data-init")&&window[m.getAttribute("data-init")]()}"object"==typeof exports&&(module.exports=k)}("undefined"!=typeof global?global:this); \ No newline at end of file diff --git a/lib/loader.js b/lib/loader.js index 589c2fc..aa0095e 100644 --- a/lib/loader.js +++ b/lib/loader.js @@ -406,9 +406,6 @@ function logloads(loads) { load.status = 'failed'; load.exception = exc; - loader.loaderObj.failed = loader.loaderObj.failed || []; - loader.loaderObj.failed.push(load); - var linkSets = load.linkSets.concat([]); for (var i = 0, l = linkSets.length; i < l; i++) linkSetFailed(linkSets[i], exc); @@ -529,7 +526,8 @@ function logloads(loads) { var startingLoad = linkSet.loads[0]; // non-executing link variation for loader tracing - // on the server + // on the server. Not in spec. + /***/ if (linkSet.loader.loaderObj.execute === false) { var loads = [].concat(linkSet.loads); for (var i = 0; i < loads.length; i++) { @@ -546,6 +544,7 @@ function logloads(loads) { } return linkSet.resolve(startingLoad); } + /***/ try { link(linkSet); @@ -561,9 +560,16 @@ function logloads(loads) { // 15.2.5.2.4 function linkSetFailed(linkSet, exc) { + var loader = linkSet.loader; var loads = linkSet.loads.concat([]); for (var i = 0, l = loads.length; i < l; i++) { var load = loads[i]; + + // store all failed load records + loader.loaderObj.failed = loader.loaderObj.failed || []; + if (loader.loaderObj.failed.indexOf(load) == -1) + loader.loaderObj.failed.push(load); + var linkIndex = indexOf.call(load.linkSets, linkSet); console.assert(linkIndex != -1, 'link not present'); load.linkSets.splice(linkIndex, 1); diff --git a/test/loads/deperror.js b/test/loads/deperror.js new file mode 100644 index 0000000..f2776f7 --- /dev/null +++ b/test/loads/deperror.js @@ -0,0 +1 @@ +throw 'dep error'; diff --git a/test/loads/main.js b/test/loads/main.js new file mode 100644 index 0000000..9608723 --- /dev/null +++ b/test/loads/main.js @@ -0,0 +1 @@ +import "./deperror"; diff --git a/test/test.js b/test/test.js index fde322f..931e2f4 100644 --- a/test/test.js +++ b/test/test.js @@ -296,6 +296,21 @@ function runTests() { }) }); + test('Dependency race error check (fix pending)', function(assert) { + var systemNormalize = System.normalize; + System.normalize = function(name) { + if (name == 'loadmain') + return 'loads/main'; + return systemNormalize.apply(this, arguments); + } + System['import']('loadmain').then(function(m) { + assert('Module returned despite error'); + }, function(e) { + assert(!!e, true); + }); + System['import']('loads/deperror'); + }); + test('Export Syntax', function(assert) { System['import']('syntax/export').then(function(m) { assert(