Skip to content
This repository was archived by the owner on Jul 13, 2020. It is now read-only.

Commit c48539c

Browse files
committed
v0.17.4
1 parent 56e3cf7 commit c48539c

9 files changed

+116
-42
lines changed

dist/es6-module-loader-dev.js

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/es6-module-loader-dev.js.map

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/es6-module-loader-dev.src.js

Lines changed: 57 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -182,6 +182,12 @@ global.URLPolyfill = URLPolyfill;
182182
*/
183183

184184
function Module() {}
185+
// http://www.ecma-international.org/ecma-262/6.0/#sec-@@tostringtag
186+
defineProperty(Module.prototype, 'toString', {
187+
value: function() {
188+
return 'Module';
189+
}
190+
});
185191
function Loader(options) {
186192
this._loader = {
187193
loaderObj: this,
@@ -580,6 +586,9 @@ function logloads(loads) {
580586
}
581587
// 15.2.5.2.2
582588
function addLoadToLinkSet(linkSet, load) {
589+
if (load.status == 'failed')
590+
return;
591+
583592
console.assert(load.status == 'loading' || load.status == 'loaded', 'loading or loaded on link set');
584593

585594
for (var i = 0, l = linkSet.loads.length; i < l; i++)
@@ -597,6 +606,9 @@ function logloads(loads) {
597606
var loader = linkSet.loader;
598607

599608
for (var i = 0, l = load.dependencies.length; i < l; i++) {
609+
if (!load.dependencies[i])
610+
continue;
611+
600612
var name = load.dependencies[i].value;
601613

602614
if (loader.modules[name])
@@ -680,13 +692,26 @@ function logloads(loads) {
680692
// 15.2.5.2.4
681693
function linkSetFailed(linkSet, load, exc) {
682694
var loader = linkSet.loader;
695+
var requests;
683696

697+
checkError:
684698
if (load) {
685-
if (load && linkSet.loads[0].name != load.name)
686-
exc = addToError(exc, 'Error loading ' + load.name + ' from ' + linkSet.loads[0].name);
687-
688-
if (load)
699+
if (linkSet.loads[0].name == load.name) {
689700
exc = addToError(exc, 'Error loading ' + load.name);
701+
}
702+
else {
703+
for (var i = 0; i < linkSet.loads.length; i++) {
704+
var pLoad = linkSet.loads[i];
705+
for (var j = 0; j < pLoad.dependencies.length; j++) {
706+
var dep = pLoad.dependencies[j];
707+
if (dep.value == load.name) {
708+
exc = addToError(exc, 'Error loading ' + load.name + ' as "' + dep.key + '" from ' + pLoad.name);
709+
break checkError;
710+
}
711+
}
712+
}
713+
exc = addToError(exc, 'Error loading ' + load.name + ' from ' + linkSet.loads[0].name);
714+
}
690715
}
691716
else {
692717
exc = addToError(exc, 'Error linking ' + linkSet.loads[0].name);
@@ -846,11 +871,17 @@ function logloads(loads) {
846871
// 26.3.3.9 keys not implemented
847872
// 26.3.3.10
848873
load: function(name, options) {
849-
if (this._loader.modules[name]) {
850-
doEnsureEvaluated(this._loader.modules[name], [], this._loader);
851-
return Promise.resolve(this._loader.modules[name].module);
874+
var loader = this._loader;
875+
if (loader.modules[name]) {
876+
doEnsureEvaluated(loader.modules[name], [], loader);
877+
return Promise.resolve(loader.modules[name].module);
852878
}
853-
return this._loader.importPromises[name] || createImportPromise(this, name, loadModule(this._loader, name, {}));
879+
return loader.importPromises[name] || createImportPromise(this, name,
880+
loadModule(loader, name, {})
881+
.then(function(load) {
882+
delete loader.importPromises[name];
883+
return evaluateLoadedModule(loader, load);
884+
}));
854885
},
855886
// 26.3.3.11
856887
module: function(source, options) {
@@ -1257,15 +1288,16 @@ var transpile = (function() {
12571288
transpileFunction = babelTranspile;
12581289

12591290
// note __moduleName will be part of the transformer meta in future when we have the spec for this
1260-
return 'var __moduleName = "' + load.name + '";' + transpileFunction.call(self, load, transpiler) + '\n//# sourceURL=' + load.address + '!transpiled';
1291+
return '(function(__moduleName){' + transpileFunction.call(self, load, transpiler) + '\n})("' + load.name + '");\n//# sourceURL=' + load.address + '!transpiled';
12611292
});
12621293
};
12631294

12641295
function traceurTranspile(load, traceur) {
12651296
var options = this.traceurOptions || {};
12661297
options.modules = 'instantiate';
12671298
options.script = false;
1268-
options.sourceMaps = 'inline';
1299+
if (options.sourceMaps === undefined)
1300+
options.sourceMaps = 'inline';
12691301
options.filename = load.address;
12701302
options.inputSourceMap = load.metadata.sourceMap;
12711303
options.moduleName = false;
@@ -1287,7 +1319,8 @@ var transpile = (function() {
12871319
function babelTranspile(load, babel) {
12881320
var options = this.babelOptions || {};
12891321
options.modules = 'system';
1290-
options.sourceMap = 'inline';
1322+
if (options.sourceMap === undefined)
1323+
options.sourceMap = 'inline';
12911324
options.inputSourceMap = load.metadata.sourceMap;
12921325
options.filename = load.address;
12931326
options.code = true;
@@ -1298,11 +1331,13 @@ var transpile = (function() {
12981331

12991332
function typescriptTranspile(load, ts) {
13001333
var options = this.typescriptOptions || {};
1301-
if (options.target === undefined) {
1302-
options.target = ts.ScriptTarget.ES5;
1303-
}
1334+
options.target = options.target || ts.ScriptTarget.ES5;
1335+
if (options.sourceMap === undefined)
1336+
options.sourceMap = true;
1337+
if (options.sourceMap)
1338+
options.inlineSourceMap = true;
1339+
13041340
options.module = ts.ModuleKind.System;
1305-
options.inlineSourceMap = true;
13061341

13071342
return ts.transpile(load.source, options, load.address);
13081343
}
@@ -1452,7 +1487,7 @@ SystemLoader.prototype.instantiate = function(load) {
14521487
fulfill(xhr.responseText);
14531488
}
14541489
function error() {
1455-
reject(xhr.statusText + ': ' + url || 'XHR error');
1490+
reject(new Error('XHR error' + (xhr.status ? ' (' + xhr.status + (xhr.statusText ? ' ' + xhr.statusText : '') + ')' : '') + ' loading ' + url));
14561491
}
14571492

14581493
xhr.onreadystatechange = function () {
@@ -1466,6 +1501,8 @@ SystemLoader.prototype.instantiate = function(load) {
14661501
};
14671502
xhr.open("GET", url, true);
14681503

1504+
xhr.setRequestHeader('Accept', 'application/x-es-module */*');
1505+
14691506
if (doTimeout)
14701507
setTimeout(function() {
14711508
xhr.send();
@@ -1478,15 +1515,16 @@ SystemLoader.prototype.instantiate = function(load) {
14781515
var fs;
14791516
fetchTextFromURL = function(url, fulfill, reject) {
14801517
if (url.substr(0, 8) != 'file:///')
1481-
throw 'Only file URLs of the form file:/// allowed running in Node.';
1518+
throw new Error('Unable to fetch "' + url + '". Only file URLs of the form file:/// allowed running in Node.');
14821519
fs = fs || require('fs');
14831520
if (isWindows)
14841521
url = url.replace(/\//g, '\\').substr(8);
14851522
else
14861523
url = url.substr(7);
14871524
return fs.readFile(url, function(err, data) {
1488-
if (err)
1525+
if (err) {
14891526
return reject(err);
1527+
}
14901528
else {
14911529
// Strip Byte Order Mark out if it's the leading char
14921530
var dataString = data + '';
@@ -1507,6 +1545,7 @@ SystemLoader.prototype.instantiate = function(load) {
15071545
fetchTextFromURL(load.address, resolve, reject);
15081546
});
15091547
};
1548+
15101549
(function() {
15111550
// <script type="module"> support
15121551
// allow a data-init function callback once loaded

dist/es6-module-loader.js

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/es6-module-loader.js.map

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/es6-module-loader.src.js

Lines changed: 46 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -182,6 +182,12 @@ global.URLPolyfill = URLPolyfill;
182182
*/
183183

184184
function Module() {}
185+
// http://www.ecma-international.org/ecma-262/6.0/#sec-@@tostringtag
186+
defineProperty(Module.prototype, 'toString', {
187+
value: function() {
188+
return 'Module';
189+
}
190+
});
185191
function Loader(options) {
186192
this._loader = {
187193
loaderObj: this,
@@ -580,6 +586,9 @@ function logloads(loads) {
580586
}
581587
// 15.2.5.2.2
582588
function addLoadToLinkSet(linkSet, load) {
589+
if (load.status == 'failed')
590+
return;
591+
583592
console.assert(load.status == 'loading' || load.status == 'loaded', 'loading or loaded on link set');
584593

585594
for (var i = 0, l = linkSet.loads.length; i < l; i++)
@@ -597,6 +606,9 @@ function logloads(loads) {
597606
var loader = linkSet.loader;
598607

599608
for (var i = 0, l = load.dependencies.length; i < l; i++) {
609+
if (!load.dependencies[i])
610+
continue;
611+
600612
var name = load.dependencies[i].value;
601613

602614
if (loader.modules[name])
@@ -680,13 +692,26 @@ function logloads(loads) {
680692
// 15.2.5.2.4
681693
function linkSetFailed(linkSet, load, exc) {
682694
var loader = linkSet.loader;
695+
var requests;
683696

697+
checkError:
684698
if (load) {
685-
if (load && linkSet.loads[0].name != load.name)
686-
exc = addToError(exc, 'Error loading ' + load.name + ' from ' + linkSet.loads[0].name);
687-
688-
if (load)
699+
if (linkSet.loads[0].name == load.name) {
689700
exc = addToError(exc, 'Error loading ' + load.name);
701+
}
702+
else {
703+
for (var i = 0; i < linkSet.loads.length; i++) {
704+
var pLoad = linkSet.loads[i];
705+
for (var j = 0; j < pLoad.dependencies.length; j++) {
706+
var dep = pLoad.dependencies[j];
707+
if (dep.value == load.name) {
708+
exc = addToError(exc, 'Error loading ' + load.name + ' as "' + dep.key + '" from ' + pLoad.name);
709+
break checkError;
710+
}
711+
}
712+
}
713+
exc = addToError(exc, 'Error loading ' + load.name + ' from ' + linkSet.loads[0].name);
714+
}
690715
}
691716
else {
692717
exc = addToError(exc, 'Error linking ' + linkSet.loads[0].name);
@@ -846,11 +871,17 @@ function logloads(loads) {
846871
// 26.3.3.9 keys not implemented
847872
// 26.3.3.10
848873
load: function(name, options) {
849-
if (this._loader.modules[name]) {
850-
doEnsureEvaluated(this._loader.modules[name], [], this._loader);
851-
return Promise.resolve(this._loader.modules[name].module);
874+
var loader = this._loader;
875+
if (loader.modules[name]) {
876+
doEnsureEvaluated(loader.modules[name], [], loader);
877+
return Promise.resolve(loader.modules[name].module);
852878
}
853-
return this._loader.importPromises[name] || createImportPromise(this, name, loadModule(this._loader, name, {}));
879+
return loader.importPromises[name] || createImportPromise(this, name,
880+
loadModule(loader, name, {})
881+
.then(function(load) {
882+
delete loader.importPromises[name];
883+
return evaluateLoadedModule(loader, load);
884+
}));
854885
},
855886
// 26.3.3.11
856887
module: function(source, options) {
@@ -1114,7 +1145,7 @@ SystemLoader.prototype.instantiate = function(load) {
11141145
fulfill(xhr.responseText);
11151146
}
11161147
function error() {
1117-
reject(xhr.statusText + ': ' + url || 'XHR error');
1148+
reject(new Error('XHR error' + (xhr.status ? ' (' + xhr.status + (xhr.statusText ? ' ' + xhr.statusText : '') + ')' : '') + ' loading ' + url));
11181149
}
11191150

11201151
xhr.onreadystatechange = function () {
@@ -1128,6 +1159,8 @@ SystemLoader.prototype.instantiate = function(load) {
11281159
};
11291160
xhr.open("GET", url, true);
11301161

1162+
xhr.setRequestHeader('Accept', 'application/x-es-module */*');
1163+
11311164
if (doTimeout)
11321165
setTimeout(function() {
11331166
xhr.send();
@@ -1140,15 +1173,16 @@ SystemLoader.prototype.instantiate = function(load) {
11401173
var fs;
11411174
fetchTextFromURL = function(url, fulfill, reject) {
11421175
if (url.substr(0, 8) != 'file:///')
1143-
throw 'Only file URLs of the form file:/// allowed running in Node.';
1176+
throw new Error('Unable to fetch "' + url + '". Only file URLs of the form file:/// allowed running in Node.');
11441177
fs = fs || require('fs');
11451178
if (isWindows)
11461179
url = url.replace(/\//g, '\\').substr(8);
11471180
else
11481181
url = url.substr(7);
11491182
return fs.readFile(url, function(err, data) {
1150-
if (err)
1183+
if (err) {
11511184
return reject(err);
1185+
}
11521186
else {
11531187
// Strip Byte Order Mark out if it's the leading char
11541188
var dataString = data + '';
@@ -1169,6 +1203,7 @@ SystemLoader.prototype.instantiate = function(load) {
11691203
fetchTextFromURL(load.address, resolve, reject);
11701204
});
11711205
};
1206+
11721207
// -- exporting --
11731208

11741209
if (typeof exports === 'object')

karma.conf.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ module.exports = function(config) {
4040
? (options['babel']
4141
? 'node_modules/babel-core/browser.js'
4242
: options['typescript']
43-
? 'node_modules/typescript/bin/typescript.js'
43+
? 'node_modules/typescript/lib/typescript.js'
4444
: 'node_modules/traceur/bin/traceur.js')
4545
: ''],
4646

@@ -56,7 +56,7 @@ module.exports = function(config) {
5656
{pattern: 'test/{loader,loads,syntax,worker}/**/*', included: false},
5757
{pattern: 'node_modules/traceur/bin/traceur.js', included: false},
5858
{pattern: 'node_modules/babel-core/browser.js', included: false},
59-
{pattern: 'node_modules/typescript/bin/typescript.js', included: false},
59+
{pattern: 'node_modules/typescript/lib/typescript.js', included: false},
6060
{pattern: 'node_modules/when/es6-shim/Promise.js', included: false},
6161
{pattern: 'dist/es6-module-loader*.js', included: false}
6262
];

package.json

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "es6-module-loader",
33
"description": "An ES6 Module Loader shim",
4-
"version": "0.17.3",
4+
"version": "0.17.4",
55
"homepage": "https://github.com/ModuleLoader/es6-module-loader",
66
"author": {
77
"name": "Guy Bedford, Luke Hoban, Addy Osmani",
@@ -22,7 +22,7 @@
2222
}
2323
],
2424
"devDependencies": {
25-
"babel-core": "^5.0.10",
25+
"babel-core": "^5.8.20",
2626
"expect.js": "^0.3.1",
2727
"gesalakacula": "^1.0.0",
2828
"grunt": "~0.4.1",
@@ -42,8 +42,8 @@
4242
"minimist": "^1.1.0",
4343
"mocha": "^2.0.1",
4444
"regenerator": "^0.8.9",
45-
"traceur": "0.0.87",
46-
"typescript": "1.5.3"
45+
"traceur": "0.0.91",
46+
"typescript": "next"
4747
},
4848
"keywords": [
4949
"script",

test/worker/worker-typescript.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
importScripts("../../node_modules/when/es6-shim/Promise.js",
22
"../../dist/es6-module-loader-dev.src.js",
3-
"../../node_modules/typescript/bin/typescript.js");
3+
"../../node_modules/typescript/lib/typescript.js");
44
System.transpiler = 'typescript';
55
System['import']('es6.js').then(function(m) {
66
postMessage(m.p);

0 commit comments

Comments
 (0)