mirror of
https://github.com/systemjs/systemjs.git
synced 2026-01-25 14:57:38 +00:00
44 lines
1.2 KiB
JavaScript
44 lines
1.2 KiB
JavaScript
/*
|
|
SystemJS Module Addon
|
|
|
|
Supports the import "@module" for any module, providing the module meta:
|
|
|
|
import { name } from "@module";
|
|
|
|
Where name is the name of the current module.
|
|
*/
|
|
(function() {
|
|
var systemNormalize = System.normalize;
|
|
System.normalize = function(name, parentName, parentAddress) {
|
|
if (name == '@module')
|
|
return '@module:' + parentName;
|
|
return systemNormalize.call(this, name, parentName, parentAddress);
|
|
}
|
|
var systemLocate = System.locate;
|
|
System.locate = function(load) {
|
|
if (load.name.substr(0, 7) == '@module') {
|
|
load.metadata.module = {
|
|
name: load.name.substr(8)
|
|
};
|
|
return '';
|
|
}
|
|
return systemLocate.call(this, load);
|
|
}
|
|
var systemFetch = System.fetch;
|
|
System.fetch = function(load) {
|
|
if (load.metadata.module)
|
|
return '';
|
|
return systemFetch.call(this, load);
|
|
}
|
|
var systemInstantiate = System.instantiate;
|
|
System.instantiate = function(load) {
|
|
if (load.metadata.module)
|
|
return {
|
|
deps: [],
|
|
execute: function() {
|
|
return new Module(load.metadata.module);
|
|
}
|
|
};
|
|
return systemInstantiate.call(this, load);
|
|
}
|
|
})(); |