2013-01-31 01:49:25 +08:00
|
|
|
/*
|
|
|
|
MIT License http://www.opensource.org/licenses/mit-license.php
|
|
|
|
Author Tobias Koppers @sokra
|
|
|
|
*/
|
|
|
|
var NullDependency = require("./NullDependency");
|
|
|
|
|
2013-12-29 19:11:03 +08:00
|
|
|
function AMDDefineDependency(range, arrayRange, functionRange, objectRange) {
|
2013-01-31 01:49:25 +08:00
|
|
|
NullDependency.call(this);
|
|
|
|
this.Class = AMDDefineDependency;
|
|
|
|
this.range = range;
|
|
|
|
this.arrayRange = arrayRange;
|
|
|
|
this.functionRange = functionRange;
|
2013-12-29 19:11:03 +08:00
|
|
|
this.objectRange = objectRange;
|
2013-01-31 01:49:25 +08:00
|
|
|
}
|
|
|
|
module.exports = AMDDefineDependency;
|
|
|
|
|
|
|
|
AMDDefineDependency.prototype = Object.create(NullDependency.prototype);
|
|
|
|
AMDDefineDependency.prototype.type = "amd define";
|
|
|
|
|
|
|
|
AMDDefineDependency.Template = function AMDRequireDependencyTemplate() {};
|
|
|
|
|
|
|
|
AMDDefineDependency.Template.prototype.apply = function(dep, source, outputOptions, requestShortener) {
|
2014-01-24 01:35:56 +08:00
|
|
|
var localModuleVar = dep.localModule && dep.localModule.used && dep.localModule.variableName();
|
|
|
|
if(localModuleVar) {
|
|
|
|
if(dep.objectRange && !dep.functionRange) {
|
2014-03-13 05:30:21 +08:00
|
|
|
// define("name", {...})
|
|
|
|
// => var XXX; !(XXX = {...})
|
2014-02-12 21:53:33 +08:00
|
|
|
source.insert(0, "var " + localModuleVar + ";");
|
2014-01-24 01:35:56 +08:00
|
|
|
source.replace(dep.range[0], dep.objectRange[0]-1,
|
2014-01-24 20:14:59 +08:00
|
|
|
"!(" + localModuleVar + " = ");
|
2014-01-24 01:35:56 +08:00
|
|
|
source.replace(dep.objectRange[1], dep.range[1]-1, ")");
|
|
|
|
} else if(!dep.arrayRange && dep.functionRange && !dep.objectRange) {
|
2014-03-13 05:30:21 +08:00
|
|
|
// define("name", function() {...})
|
|
|
|
// => var XXX; !(XXX = (function() {...}.call(exports, __webpack_require__, exports, module)))
|
2014-02-12 21:53:33 +08:00
|
|
|
source.insert(0, "var " + localModuleVar + ";");
|
2014-01-24 01:35:56 +08:00
|
|
|
source.replace(dep.range[0], dep.functionRange[0]-1,
|
2014-01-24 20:14:59 +08:00
|
|
|
"!(" + localModuleVar + " = (");
|
2014-03-03 21:56:17 +08:00
|
|
|
source.replace(dep.functionRange[1], dep.range[1]-1, ".call(exports, __webpack_require__, exports, module)))");
|
2014-01-24 01:35:56 +08:00
|
|
|
} else if(dep.arrayRange && dep.functionRange && !dep.objectRange) {
|
2014-03-13 05:30:21 +08:00
|
|
|
// define("name", [], function() {...})
|
|
|
|
// => var __WEBPACK_AMD_DEFINE_ARRAY__, XXX; !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], XXX = (function() {...}.apply(null, __WEBPACK_AMD_DEFINE_ARRAY__)))
|
2014-02-12 21:53:33 +08:00
|
|
|
source.insert(0, "var __WEBPACK_AMD_DEFINE_ARRAY__, " + localModuleVar + ";");
|
2014-01-24 01:35:56 +08:00
|
|
|
source.replace(dep.range[0], dep.arrayRange[0]-1,
|
2014-03-13 05:30:21 +08:00
|
|
|
"!(__WEBPACK_AMD_DEFINE_ARRAY__ = ");
|
|
|
|
source.replace(dep.arrayRange[1], dep.functionRange[0]-1, ", " + localModuleVar + " = (");
|
2014-01-24 01:35:56 +08:00
|
|
|
source.replace(dep.functionRange[1], dep.range[1]-1, ".apply(null, __WEBPACK_AMD_DEFINE_ARRAY__)))");
|
|
|
|
} else if(dep.functionRange && dep.objectRange) {
|
2014-03-13 05:30:21 +08:00
|
|
|
// define("name", abc)
|
|
|
|
// => var __WEBPACK_AMD_DEFINE_FACTORY__, XXX; !(__WEBPACK_AMD_DEFINE_FACTORY__ = (abc), XXX = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ? (__WEBPACK_AMD_DEFINE_FACTORY__.call(exports, __webpack_require__, exports, module)) : __WEBPACK_AMD_DEFINE_FACTORY__))
|
2014-02-12 21:53:33 +08:00
|
|
|
source.insert(0, "var __WEBPACK_AMD_DEFINE_FACTORY__, " + localModuleVar + ";");
|
2014-01-24 01:35:56 +08:00
|
|
|
source.replace(dep.range[0], dep.functionRange[0]-1,
|
2014-01-24 20:14:59 +08:00
|
|
|
"!(__WEBPACK_AMD_DEFINE_FACTORY__ = (");
|
2014-03-13 05:30:21 +08:00
|
|
|
source.replace(dep.functionRange[1], dep.range[1]-1, "), " + localModuleVar + " = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ? (__WEBPACK_AMD_DEFINE_FACTORY__.call(exports, __webpack_require__, exports, module)) : __WEBPACK_AMD_DEFINE_FACTORY__))");
|
2014-01-24 01:35:56 +08:00
|
|
|
}
|
|
|
|
} else {
|
|
|
|
if(dep.objectRange && !dep.functionRange) {
|
2014-03-13 05:30:21 +08:00
|
|
|
// define(["name", ]{...})
|
|
|
|
// => !(module.exports = {...})
|
2014-01-24 01:35:56 +08:00
|
|
|
source.replace(dep.range[0], dep.objectRange[0]-1,
|
2014-01-24 20:14:59 +08:00
|
|
|
"!(module.exports = ");
|
2014-01-24 01:35:56 +08:00
|
|
|
source.replace(dep.objectRange[1], dep.range[1]-1, ")");
|
|
|
|
} else if(!dep.arrayRange && dep.functionRange && !dep.objectRange) {
|
2014-03-13 05:30:21 +08:00
|
|
|
// define(["name", ]function() {...})
|
|
|
|
// => var __WEBPACK_AMD_DEFINE_RESULT__; !(__WEBPACK_AMD_DEFINE_RESULT__ = (function() {...}.call(exports, __webpack_require__, exports, module)), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__))
|
2014-02-12 21:53:33 +08:00
|
|
|
source.insert(0, "var __WEBPACK_AMD_DEFINE_RESULT__;");
|
2014-01-24 01:35:56 +08:00
|
|
|
source.replace(dep.range[0], dep.functionRange[0]-1,
|
2014-01-24 20:14:59 +08:00
|
|
|
"!(__WEBPACK_AMD_DEFINE_RESULT__ = (");
|
2014-03-03 21:56:17 +08:00
|
|
|
source.replace(dep.functionRange[1], dep.range[1]-1, ".call(exports, __webpack_require__, exports, module)), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__))");
|
2014-01-24 01:35:56 +08:00
|
|
|
} else if(dep.arrayRange && dep.functionRange && !dep.objectRange) {
|
2014-03-13 05:30:21 +08:00
|
|
|
// define(["name", ][], function() {...})
|
|
|
|
// => var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__; !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = (function() {...}.apply(null, __WEBPACK_AMD_DEFINE_ARRAY__)), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__))
|
2014-02-12 21:53:33 +08:00
|
|
|
source.insert(0, "var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;");
|
2014-01-24 01:35:56 +08:00
|
|
|
source.replace(dep.range[0], dep.arrayRange[0]-1,
|
2014-01-24 20:14:59 +08:00
|
|
|
"!(__WEBPACK_AMD_DEFINE_ARRAY__ = ");
|
2014-01-24 01:35:56 +08:00
|
|
|
source.replace(dep.arrayRange[1], dep.functionRange[0]-1, ", __WEBPACK_AMD_DEFINE_RESULT__ = (");
|
|
|
|
source.replace(dep.functionRange[1], dep.range[1]-1, ".apply(null, __WEBPACK_AMD_DEFINE_ARRAY__)), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__))");
|
|
|
|
} else if(dep.functionRange && dep.objectRange) {
|
2014-03-13 05:30:21 +08:00
|
|
|
// define(["name", ]abc)
|
|
|
|
// => var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_RESULT__; !(__WEBPACK_AMD_DEFINE_FACTORY__ = (abc), (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ? (__WEBPACK_AMD_DEFINE_RESULT__ = __WEBPACK_AMD_DEFINE_FACTORY__.call(exports, __webpack_require__, exports, module), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)) : module.exports = __WEBPACK_AMD_DEFINE_FACTORY__))
|
2014-02-12 21:53:33 +08:00
|
|
|
source.insert(0, "var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_RESULT__;");
|
2014-01-24 01:35:56 +08:00
|
|
|
source.replace(dep.range[0], dep.functionRange[0]-1,
|
2014-01-24 20:14:59 +08:00
|
|
|
"!(__WEBPACK_AMD_DEFINE_FACTORY__ = (");
|
2014-03-03 21:56:17 +08:00
|
|
|
source.replace(dep.functionRange[1], dep.range[1]-1, "), (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ? (__WEBPACK_AMD_DEFINE_RESULT__ = __WEBPACK_AMD_DEFINE_FACTORY__.call(exports, __webpack_require__, exports, module), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)) : module.exports = __WEBPACK_AMD_DEFINE_FACTORY__))");
|
2014-01-24 01:35:56 +08:00
|
|
|
}
|
2013-01-31 01:49:25 +08:00
|
|
|
}
|
|
|
|
};
|