mirror of
https://github.com/systemjs/systemjs.git
synced 2026-02-01 15:59:54 +00:00
Merge branch 'require-alias' of github.com:bitovi/systemjs into cjs-require-alias
Includes adjustments of alias detection code to separate AMD and CommonJS extensions.
This commit is contained in:
commit
f2157f1e11
61
dist/system-production-csp.js
vendored
61
dist/system-production-csp.js
vendored
@ -984,6 +984,7 @@ function global(loader) {
|
||||
},
|
||||
retrieveGlobal: function(moduleName, exportName, init) {
|
||||
var singleGlobal;
|
||||
var multipleExports;
|
||||
var exports = {};
|
||||
|
||||
// run init
|
||||
@ -997,7 +998,7 @@ function global(loader) {
|
||||
// check for global changes, creating the globalObject for the module
|
||||
// if many globals, then a module object for those is created
|
||||
// if one global, then that is the module directly
|
||||
if (exportName && !singleGlobal) {
|
||||
else if (exportName) {
|
||||
var firstPart = exportName.split('.')[0];
|
||||
singleGlobal = eval.call(loader.global, exportName);
|
||||
exports[firstPart] = loader.global[firstPart];
|
||||
@ -1005,13 +1006,13 @@ function global(loader) {
|
||||
|
||||
else {
|
||||
for (var g in loader.global) {
|
||||
if (~ignoredGlobalProps.indexOf(g))
|
||||
if (ignoredGlobalProps.indexOf(g) != -1)
|
||||
continue;
|
||||
if ((!hasOwnProperty || loader.global.hasOwnProperty(g)) && g != loader.global && curGlobalObj[g] != loader.global[g]) {
|
||||
exports[g] = loader.global[g];
|
||||
if (singleGlobal) {
|
||||
if (singleGlobal !== loader.global[g])
|
||||
singleGlobal = undefined;
|
||||
multipleExports = true;
|
||||
}
|
||||
else if (singleGlobal !== false) {
|
||||
singleGlobal = loader.global[g];
|
||||
@ -1022,7 +1023,7 @@ function global(loader) {
|
||||
|
||||
moduleGlobals[moduleName] = exports;
|
||||
|
||||
return typeof singleGlobal != 'undefined' ? singleGlobal : exports;
|
||||
return multipleExports ? exports : singleGlobal;
|
||||
}
|
||||
}));
|
||||
}
|
||||
@ -1110,8 +1111,6 @@ function cjs(loader) {
|
||||
cwd: function() { return '/' }
|
||||
};
|
||||
|
||||
loader._getCJSDeps = getCJSDeps;
|
||||
|
||||
if (!loader.has('@@nodeProcess'))
|
||||
loader.set('@@nodeProcess', loader.newModule({ 'default': nodeProcess, __useDefault: true }));
|
||||
|
||||
@ -1120,8 +1119,6 @@ function cjs(loader) {
|
||||
var loader = this;
|
||||
if (!loader.has('@@nodeProcess'))
|
||||
loader.set('@@nodeProcess', loader.newModule({ 'default': nodeProcess, __useDefault: true }));
|
||||
if (!loader._getCJSDeps)
|
||||
loader._getCJSDeps = getCJSDeps;
|
||||
return loaderTranslate.call(loader, load);
|
||||
}
|
||||
|
||||
@ -1190,6 +1187,37 @@ function amd(loader) {
|
||||
// define([.., .., ..], ...)
|
||||
// define(varName); || define(function(require, exports) {}); || define({})
|
||||
var amdRegEx = /(?:^\s*|[}{\(\);,\n\?\&]\s*)define\s*\(\s*("[^"]+"\s*,\s*|'[^']+'\s*,\s*)?\s*(\[(\s*(("[^"]+"|'[^']+')\s*,|\/\/.*\n|\/\*(.|\s)*?\*\/))*(\s*("[^"]+"|'[^']+')\s*,?\s*)?(\s*(\/\/.*\n|\/\*(.|\s)*?\*\/)\s*)*\]|function\s*|{|[_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*\))/;
|
||||
var commentRegEx = /(\/\*([\s\S]*?)\*\/|([^:]|^)\/\/(.*)$)/mg;
|
||||
|
||||
var cjsRequirePre = "(?:^\\s*|[}{\\(\\);,\\n=:\\?\\&]\\s*)";
|
||||
var cjsRequirePost = "\\s*\\(\\s*(\"([^\"]+)\"|'([^']+)')\\s*\\)";
|
||||
|
||||
var fnBracketRegEx = /\(([^\)]*)\)/;
|
||||
|
||||
var requireRegExs = {};
|
||||
|
||||
function getCJSDeps(source, requireIndex) {
|
||||
|
||||
// remove comments
|
||||
source = source.replace(commentRegEx, '');
|
||||
|
||||
// determine the require alias
|
||||
var params = source.match(fnBracketRegEx);
|
||||
var requireAlias = (params[1].split(',')[requireIndex] || 'require').trim();
|
||||
|
||||
// find or generate the regex for this requireAlias
|
||||
var requireRegEx = requireRegExs[requireAlias] || (requireRegExs[requireAlias] = new RegExp(cjsRequirePre + requireAlias + cjsRequirePost, 'g'));
|
||||
|
||||
requireRegEx.lastIndex = 0;
|
||||
|
||||
var deps = [];
|
||||
|
||||
var match;
|
||||
while (match = requireRegEx.exec(source))
|
||||
deps.push(match[2] || match[3]);
|
||||
|
||||
return deps;
|
||||
}
|
||||
|
||||
/*
|
||||
AMD-compatible require
|
||||
@ -1265,10 +1293,7 @@ function amd(loader) {
|
||||
}
|
||||
if (!(deps instanceof Array)) {
|
||||
factory = deps;
|
||||
// CommonJS AMD form
|
||||
if (!loader._getCJSDeps)
|
||||
throw "AMD extension needs CJS extension for AMD CJS support";
|
||||
deps = ['require', 'exports', 'module'].concat(loader._getCJSDeps(factory.toString()));
|
||||
deps = ['require','exports','module']
|
||||
}
|
||||
|
||||
if (typeof factory != 'function')
|
||||
@ -1278,8 +1303,16 @@ function amd(loader) {
|
||||
|
||||
// remove system dependencies
|
||||
var requireIndex, exportsIndex, moduleIndex
|
||||
if ((requireIndex = indexOf.call(deps, 'require')) != -1)
|
||||
deps.splice(requireIndex, 1);
|
||||
|
||||
if ((requireIndex = indexOf.call(deps, 'require')) != -1) {
|
||||
|
||||
deps.splice(requireIndex, 1);
|
||||
|
||||
var factoryText = factory.toString();
|
||||
|
||||
deps = deps.concat(getCJSDeps(factoryText, requireIndex));
|
||||
}
|
||||
|
||||
|
||||
if ((exportsIndex = indexOf.call(deps, 'exports')) != -1)
|
||||
deps.splice(exportsIndex, 1);
|
||||
|
||||
2
dist/system-production-csp.min.js
vendored
2
dist/system-production-csp.min.js
vendored
File diff suppressed because one or more lines are too long
61
dist/system.js
vendored
61
dist/system.js
vendored
@ -925,6 +925,7 @@ function global(loader) {
|
||||
},
|
||||
retrieveGlobal: function(moduleName, exportName, init) {
|
||||
var singleGlobal;
|
||||
var multipleExports;
|
||||
var exports = {};
|
||||
|
||||
// run init
|
||||
@ -938,7 +939,7 @@ function global(loader) {
|
||||
// check for global changes, creating the globalObject for the module
|
||||
// if many globals, then a module object for those is created
|
||||
// if one global, then that is the module directly
|
||||
if (exportName && !singleGlobal) {
|
||||
else if (exportName) {
|
||||
var firstPart = exportName.split('.')[0];
|
||||
singleGlobal = eval.call(loader.global, exportName);
|
||||
exports[firstPart] = loader.global[firstPart];
|
||||
@ -946,13 +947,13 @@ function global(loader) {
|
||||
|
||||
else {
|
||||
for (var g in loader.global) {
|
||||
if (~ignoredGlobalProps.indexOf(g))
|
||||
if (ignoredGlobalProps.indexOf(g) != -1)
|
||||
continue;
|
||||
if ((!hasOwnProperty || loader.global.hasOwnProperty(g)) && g != loader.global && curGlobalObj[g] != loader.global[g]) {
|
||||
exports[g] = loader.global[g];
|
||||
if (singleGlobal) {
|
||||
if (singleGlobal !== loader.global[g])
|
||||
singleGlobal = undefined;
|
||||
multipleExports = true;
|
||||
}
|
||||
else if (singleGlobal !== false) {
|
||||
singleGlobal = loader.global[g];
|
||||
@ -963,7 +964,7 @@ function global(loader) {
|
||||
|
||||
moduleGlobals[moduleName] = exports;
|
||||
|
||||
return typeof singleGlobal != 'undefined' ? singleGlobal : exports;
|
||||
return multipleExports ? exports : singleGlobal;
|
||||
}
|
||||
}));
|
||||
}
|
||||
@ -1051,8 +1052,6 @@ function cjs(loader) {
|
||||
cwd: function() { return '/' }
|
||||
};
|
||||
|
||||
loader._getCJSDeps = getCJSDeps;
|
||||
|
||||
if (!loader.has('@@nodeProcess'))
|
||||
loader.set('@@nodeProcess', loader.newModule({ 'default': nodeProcess, __useDefault: true }));
|
||||
|
||||
@ -1061,8 +1060,6 @@ function cjs(loader) {
|
||||
var loader = this;
|
||||
if (!loader.has('@@nodeProcess'))
|
||||
loader.set('@@nodeProcess', loader.newModule({ 'default': nodeProcess, __useDefault: true }));
|
||||
if (!loader._getCJSDeps)
|
||||
loader._getCJSDeps = getCJSDeps;
|
||||
return loaderTranslate.call(loader, load);
|
||||
}
|
||||
|
||||
@ -1131,6 +1128,37 @@ function amd(loader) {
|
||||
// define([.., .., ..], ...)
|
||||
// define(varName); || define(function(require, exports) {}); || define({})
|
||||
var amdRegEx = /(?:^\s*|[}{\(\);,\n\?\&]\s*)define\s*\(\s*("[^"]+"\s*,\s*|'[^']+'\s*,\s*)?\s*(\[(\s*(("[^"]+"|'[^']+')\s*,|\/\/.*\n|\/\*(.|\s)*?\*\/))*(\s*("[^"]+"|'[^']+')\s*,?\s*)?(\s*(\/\/.*\n|\/\*(.|\s)*?\*\/)\s*)*\]|function\s*|{|[_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*\))/;
|
||||
var commentRegEx = /(\/\*([\s\S]*?)\*\/|([^:]|^)\/\/(.*)$)/mg;
|
||||
|
||||
var cjsRequirePre = "(?:^\\s*|[}{\\(\\);,\\n=:\\?\\&]\\s*)";
|
||||
var cjsRequirePost = "\\s*\\(\\s*(\"([^\"]+)\"|'([^']+)')\\s*\\)";
|
||||
|
||||
var fnBracketRegEx = /\(([^\)]*)\)/;
|
||||
|
||||
var requireRegExs = {};
|
||||
|
||||
function getCJSDeps(source, requireIndex) {
|
||||
|
||||
// remove comments
|
||||
source = source.replace(commentRegEx, '');
|
||||
|
||||
// determine the require alias
|
||||
var params = source.match(fnBracketRegEx);
|
||||
var requireAlias = (params[1].split(',')[requireIndex] || 'require').trim();
|
||||
|
||||
// find or generate the regex for this requireAlias
|
||||
var requireRegEx = requireRegExs[requireAlias] || (requireRegExs[requireAlias] = new RegExp(cjsRequirePre + requireAlias + cjsRequirePost, 'g'));
|
||||
|
||||
requireRegEx.lastIndex = 0;
|
||||
|
||||
var deps = [];
|
||||
|
||||
var match;
|
||||
while (match = requireRegEx.exec(source))
|
||||
deps.push(match[2] || match[3]);
|
||||
|
||||
return deps;
|
||||
}
|
||||
|
||||
/*
|
||||
AMD-compatible require
|
||||
@ -1206,10 +1234,7 @@ function amd(loader) {
|
||||
}
|
||||
if (!(deps instanceof Array)) {
|
||||
factory = deps;
|
||||
// CommonJS AMD form
|
||||
if (!loader._getCJSDeps)
|
||||
throw "AMD extension needs CJS extension for AMD CJS support";
|
||||
deps = ['require', 'exports', 'module'].concat(loader._getCJSDeps(factory.toString()));
|
||||
deps = ['require','exports','module']
|
||||
}
|
||||
|
||||
if (typeof factory != 'function')
|
||||
@ -1219,8 +1244,16 @@ function amd(loader) {
|
||||
|
||||
// remove system dependencies
|
||||
var requireIndex, exportsIndex, moduleIndex
|
||||
if ((requireIndex = indexOf.call(deps, 'require')) != -1)
|
||||
deps.splice(requireIndex, 1);
|
||||
|
||||
if ((requireIndex = indexOf.call(deps, 'require')) != -1) {
|
||||
|
||||
deps.splice(requireIndex, 1);
|
||||
|
||||
var factoryText = factory.toString();
|
||||
|
||||
deps = deps.concat(getCJSDeps(factoryText, requireIndex));
|
||||
}
|
||||
|
||||
|
||||
if ((exportsIndex = indexOf.call(deps, 'exports')) != -1)
|
||||
deps.splice(exportsIndex, 1);
|
||||
|
||||
2
dist/system.min.js
vendored
2
dist/system.min.js
vendored
File diff suppressed because one or more lines are too long
@ -11,6 +11,37 @@ function amd(loader) {
|
||||
// define([.., .., ..], ...)
|
||||
// define(varName); || define(function(require, exports) {}); || define({})
|
||||
var amdRegEx = /(?:^\s*|[}{\(\);,\n\?\&]\s*)define\s*\(\s*("[^"]+"\s*,\s*|'[^']+'\s*,\s*)?\s*(\[(\s*(("[^"]+"|'[^']+')\s*,|\/\/.*\n|\/\*(.|\s)*?\*\/))*(\s*("[^"]+"|'[^']+')\s*,?\s*)?(\s*(\/\/.*\n|\/\*(.|\s)*?\*\/)\s*)*\]|function\s*|{|[_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*\))/;
|
||||
var commentRegEx = /(\/\*([\s\S]*?)\*\/|([^:]|^)\/\/(.*)$)/mg;
|
||||
|
||||
var cjsRequirePre = "(?:^\\s*|[}{\\(\\);,\\n=:\\?\\&]\\s*)";
|
||||
var cjsRequirePost = "\\s*\\(\\s*(\"([^\"]+)\"|'([^']+)')\\s*\\)";
|
||||
|
||||
var fnBracketRegEx = /\(([^\)]*)\)/;
|
||||
|
||||
var requireRegExs = {};
|
||||
|
||||
function getCJSDeps(source, requireIndex) {
|
||||
|
||||
// remove comments
|
||||
source = source.replace(commentRegEx, '');
|
||||
|
||||
// determine the require alias
|
||||
var params = source.match(fnBracketRegEx);
|
||||
var requireAlias = (params[1].split(',')[requireIndex] || 'require').trim();
|
||||
|
||||
// find or generate the regex for this requireAlias
|
||||
var requireRegEx = requireRegExs[requireAlias] || (requireRegExs[requireAlias] = new RegExp(cjsRequirePre + requireAlias + cjsRequirePost, 'g'));
|
||||
|
||||
requireRegEx.lastIndex = 0;
|
||||
|
||||
var deps = [];
|
||||
|
||||
var match;
|
||||
while (match = requireRegEx.exec(source))
|
||||
deps.push(match[2] || match[3]);
|
||||
|
||||
return deps;
|
||||
}
|
||||
|
||||
/*
|
||||
AMD-compatible require
|
||||
@ -86,10 +117,7 @@ function amd(loader) {
|
||||
}
|
||||
if (!(deps instanceof Array)) {
|
||||
factory = deps;
|
||||
// CommonJS AMD form
|
||||
if (!loader._getCJSDeps)
|
||||
throw "AMD extension needs CJS extension for AMD CJS support";
|
||||
deps = ['require', 'exports', 'module'].concat(loader._getCJSDeps(factory.toString()));
|
||||
deps = ['require','exports','module']
|
||||
}
|
||||
|
||||
if (typeof factory != 'function')
|
||||
@ -99,8 +127,16 @@ function amd(loader) {
|
||||
|
||||
// remove system dependencies
|
||||
var requireIndex, exportsIndex, moduleIndex
|
||||
if ((requireIndex = indexOf.call(deps, 'require')) != -1)
|
||||
deps.splice(requireIndex, 1);
|
||||
|
||||
if ((requireIndex = indexOf.call(deps, 'require')) != -1) {
|
||||
|
||||
deps.splice(requireIndex, 1);
|
||||
|
||||
var factoryText = factory.toString();
|
||||
|
||||
deps = deps.concat(getCJSDeps(factoryText, requireIndex));
|
||||
}
|
||||
|
||||
|
||||
if ((exportsIndex = indexOf.call(deps, 'exports')) != -1)
|
||||
deps.splice(exportsIndex, 1);
|
||||
|
||||
@ -41,8 +41,6 @@ function cjs(loader) {
|
||||
cwd: function() { return '/' }
|
||||
};
|
||||
|
||||
loader._getCJSDeps = getCJSDeps;
|
||||
|
||||
if (!loader.has('@@nodeProcess'))
|
||||
loader.set('@@nodeProcess', loader.newModule({ 'default': nodeProcess, __useDefault: true }));
|
||||
|
||||
@ -51,8 +49,6 @@ function cjs(loader) {
|
||||
var loader = this;
|
||||
if (!loader.has('@@nodeProcess'))
|
||||
loader.set('@@nodeProcess', loader.newModule({ 'default': nodeProcess, __useDefault: true }));
|
||||
if (!loader._getCJSDeps)
|
||||
loader._getCJSDeps = getCJSDeps;
|
||||
return loaderTranslate.call(loader, load);
|
||||
}
|
||||
|
||||
|
||||
@ -530,3 +530,10 @@ asyncTest('AMD -> System.register circular -> ES6', function() {
|
||||
}, err);
|
||||
});
|
||||
|
||||
asyncTest('AMD simplified CommonJS wrapping with an aliased require', function() {
|
||||
System['import']('tests/amd-simplified-cjs-aliased-require1').then(function(m) {
|
||||
ok(m.require2,"got dependency from aliased require");
|
||||
ok(m.require2.amdCJS,"got dependency from aliased require listed as a dependency");
|
||||
start();
|
||||
}, err);
|
||||
});
|
||||
|
||||
7
test/tests/amd-simplified-cjs-aliased-require1.js
Normal file
7
test/tests/amd-simplified-cjs-aliased-require1.js
Normal file
@ -0,0 +1,7 @@
|
||||
define(function(req){
|
||||
var r2 = req("./amd-simplified-cjs-aliased-require2");
|
||||
return {
|
||||
name: "require1",
|
||||
require2: r2
|
||||
};
|
||||
});
|
||||
8
test/tests/amd-simplified-cjs-aliased-require2.js
Normal file
8
test/tests/amd-simplified-cjs-aliased-require2.js
Normal file
@ -0,0 +1,8 @@
|
||||
define(["./amd-dep","require"],function(amdDep, req){
|
||||
var amdCJS = req("./amd-cjs-module");
|
||||
return {
|
||||
name: "require2",
|
||||
amdCJS: amdCJS,
|
||||
amdDep: amdDep
|
||||
};
|
||||
});
|
||||
Loading…
x
Reference in New Issue
Block a user