mirror of https://github.com/webpack/webpack.git
64 lines
4.2 KiB
JavaScript
64 lines
4.2 KiB
JavaScript
/*
|
|
MIT License http://www.opensource.org/licenses/mit-license.php
|
|
Author Tobias Koppers @sokra
|
|
*/
|
|
var NullDependency = require("./NullDependency");
|
|
|
|
function AMDDefineDependency(range, arrayRange, functionRange, objectRange) {
|
|
NullDependency.call(this);
|
|
this.range = range;
|
|
this.arrayRange = arrayRange;
|
|
this.functionRange = functionRange;
|
|
this.objectRange = objectRange;
|
|
}
|
|
module.exports = AMDDefineDependency;
|
|
|
|
AMDDefineDependency.prototype = Object.create(NullDependency.prototype);
|
|
AMDDefineDependency.prototype.constructor = AMDDefineDependency;
|
|
AMDDefineDependency.prototype.type = "amd define";
|
|
|
|
AMDDefineDependency.Template = function AMDDefineDependencyTemplate() {};
|
|
|
|
AMDDefineDependency.Template.prototype.apply = function(dep, source) {
|
|
var localModuleVar = dep.localModule && dep.localModule.used && dep.localModule.variableName();
|
|
|
|
function replace(def, text) {
|
|
if(localModuleVar) text = text.replace(/XXX/g, localModuleVar.replace(/\$/g, "$$$$"));
|
|
if(localModuleVar) def = def.replace(/XXX/g, localModuleVar.replace(/\$/g, "$$$$"));
|
|
var texts = text.split("#");
|
|
if(def)
|
|
source.insert(0, def);
|
|
var current = dep.range[0];
|
|
if(dep.arrayRange) {
|
|
source.replace(current, dep.arrayRange[0] - 1, texts.shift());
|
|
current = dep.arrayRange[1];
|
|
}
|
|
if(dep.objectRange) {
|
|
source.replace(current, dep.objectRange[0] - 1, texts.shift());
|
|
current = dep.objectRange[1];
|
|
} else if(dep.functionRange) {
|
|
source.replace(current, dep.functionRange[0] - 1, texts.shift());
|
|
current = dep.functionRange[1];
|
|
}
|
|
source.replace(current, dep.range[1] - 1, texts.shift());
|
|
if(texts.length > 0)
|
|
throw new Error("Implementation error");
|
|
}
|
|
var branch = (localModuleVar ? "l" : "") + (dep.arrayRange ? "a" : "") + (dep.objectRange ? "o" : "") + (dep.functionRange ? "f" : "");
|
|
var defs = {
|
|
f: ["var __WEBPACK_AMD_DEFINE_RESULT__;", "!(__WEBPACK_AMD_DEFINE_RESULT__ = #.call(exports, __webpack_require__, exports, module), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__))"],
|
|
o: ["", "!(module.exports = #)"],
|
|
of: ["var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_RESULT__;", "!(__WEBPACK_AMD_DEFINE_FACTORY__ = (#), __WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ? (__WEBPACK_AMD_DEFINE_FACTORY__.call(exports, __webpack_require__, exports, module)) : __WEBPACK_AMD_DEFINE_FACTORY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__))"],
|
|
af: ["var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;", "!(__WEBPACK_AMD_DEFINE_ARRAY__ = #, __WEBPACK_AMD_DEFINE_RESULT__ = #.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__))"],
|
|
ao: ["", "!(#, module.exports = #)"],
|
|
aof: ["var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;", "!(__WEBPACK_AMD_DEFINE_ARRAY__ = #, __WEBPACK_AMD_DEFINE_FACTORY__ = (#), __WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ? (__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__))"],
|
|
lf: ["var XXX;", "!(XXX = #.call(exports, __webpack_require__, exports, module))"],
|
|
lo: ["var XXX;", "!(XXX = #)"],
|
|
lof: ["var __WEBPACK_AMD_DEFINE_FACTORY__, XXX;", "!(__WEBPACK_AMD_DEFINE_FACTORY__ = (#), XXX = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ? (__WEBPACK_AMD_DEFINE_FACTORY__.call(exports, __webpack_require__, exports, module)) : __WEBPACK_AMD_DEFINE_FACTORY__))"],
|
|
laf: ["var __WEBPACK_AMD_DEFINE_ARRAY__, XXX;", "!(__WEBPACK_AMD_DEFINE_ARRAY__ = #, XXX = (#.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)))"],
|
|
lao: ["var XXX;", "!(#, XXX = #)"],
|
|
laof: ["var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_FACTORY__, XXX;", "!(__WEBPACK_AMD_DEFINE_ARRAY__ = #, __WEBPACK_AMD_DEFINE_FACTORY__ = (#), XXX = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ? (__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__))"]
|
|
};
|
|
replace.apply(null, defs[branch]);
|
|
};
|