mirror of
https://github.com/systemjs/systemjs.git
synced 2026-01-18 14:53:14 +00:00
* Supporting multiple define variations for named modules. Resolves #2118. * Self review
This commit is contained in:
parent
2ff58c9e88
commit
dfdba67f65
@ -115,39 +115,43 @@
|
||||
global.define = function (name, deps, execute) {
|
||||
// define('', [], function () {})
|
||||
if (typeof name === 'string') {
|
||||
const depsAndExec = getDepsAndExec(deps, execute);
|
||||
if (amdDefineDeps) {
|
||||
if (!System.registerRegistry)
|
||||
throw Error('Include the named register extension for SystemJS named AMD support.');
|
||||
addToRegisterRegistry(name, createAMDRegister(deps, execute));
|
||||
addToRegisterRegistry(name, createAMDRegister(depsAndExec[0], depsAndExec[1]));
|
||||
amdDefineDeps = [];
|
||||
amdDefineExec = emptyFn;
|
||||
return;
|
||||
}
|
||||
else {
|
||||
if (System.registerRegistry)
|
||||
addToRegisterRegistry(name, createAMDRegister([].concat(deps), execute));
|
||||
addToRegisterRegistry(name, createAMDRegister([].concat(depsAndExec[0]), depsAndExec[1]));
|
||||
name = deps;
|
||||
deps = execute;
|
||||
}
|
||||
}
|
||||
// define([], function () {})
|
||||
if (name instanceof Array) {
|
||||
amdDefineDeps = name;
|
||||
amdDefineExec = deps;
|
||||
}
|
||||
// define({})
|
||||
else if (typeof name === 'object') {
|
||||
amdDefineDeps = [];
|
||||
amdDefineExec = function () { return name };
|
||||
}
|
||||
// define(function () {})
|
||||
else if (typeof name === 'function') {
|
||||
amdDefineDeps = requireExportsModule;
|
||||
amdDefineExec = name;
|
||||
}
|
||||
const depsAndExec = getDepsAndExec(name, deps);
|
||||
amdDefineDeps = depsAndExec[0];
|
||||
amdDefineExec = depsAndExec[1];
|
||||
};
|
||||
global.define.amd = {};
|
||||
|
||||
function getDepsAndExec(arg1, arg2) {
|
||||
// define([], function () {})
|
||||
if (arg1 instanceof Array) {
|
||||
return [arg1, arg2];
|
||||
}
|
||||
// define({})
|
||||
else if (typeof arg1 === 'object') {
|
||||
return [[], function () { return arg1 }];
|
||||
}
|
||||
// define(function () {})
|
||||
else if (typeof arg1 === 'function') {
|
||||
return [requireExportsModule, arg1];
|
||||
}
|
||||
}
|
||||
|
||||
function addToRegisterRegistry(name, define) {
|
||||
if (!firstNamedDefine) {
|
||||
firstNamedDefine = define;
|
||||
|
||||
@ -88,4 +88,24 @@ suite('Named System.register', function() {
|
||||
assert.equal(m.default, 'The module depending on the named thing');
|
||||
});
|
||||
});
|
||||
|
||||
// https://github.com/systemjs/systemjs/issues/2118
|
||||
test('named define without dependencies specified', function () {
|
||||
define('named-define-no-deps', function () {
|
||||
return 'The named-define-no-deps module';
|
||||
});
|
||||
|
||||
return System.import('named-define-no-deps').then(function (m) {
|
||||
assert.equal(m.default, 'The named-define-no-deps module');
|
||||
});
|
||||
});
|
||||
|
||||
// https://github.com/systemjs/systemjs/issues/2118
|
||||
test('named define with object', function () {
|
||||
define('named-define-object', { hello: 'there' });
|
||||
|
||||
return System.import('named-define-object').then(function (m) {
|
||||
assert.equal(m.hello, 'there');
|
||||
});
|
||||
});
|
||||
});
|
||||
Loading…
x
Reference in New Issue
Block a user