webpack/lib/dependencies/AMDDefineDependency.js

87 lines
6.0 KiB
JavaScript
Raw Normal View History

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");
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;
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 = {...})
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)))
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 + " = (");
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__)))
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__))
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__))
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__ = (");
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__))
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__))
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__ = (");
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
}
};