68 lines
1.7 KiB
JavaScript
68 lines
1.7 KiB
JavaScript
/*
|
|
MIT License http://www.opensource.org/licenses/mit-license.php
|
|
Author Tobias Koppers @sokra
|
|
*/
|
|
var loaderUtils = require("loader-utils");
|
|
|
|
module.exports = function() {};
|
|
module.exports.pitch = function(remainingRequest) {
|
|
this.cacheable && this.cacheable();
|
|
var query = loaderUtils.getOptions(this) || {};
|
|
if(query.name) {
|
|
var options = {
|
|
context: query.context || this.rootContext || this.options && this.options.context,
|
|
regExp: query.regExp
|
|
};
|
|
var chunkName = loaderUtils.interpolateName(this, query.name, options);
|
|
var chunkNameParam = ", " + JSON.stringify(chunkName);
|
|
} else {
|
|
var chunkNameParam = '';
|
|
}
|
|
var result;
|
|
if(query.lazy) {
|
|
result = [
|
|
"module.exports = function(cb) {\n",
|
|
" require.ensure([], function(require) {\n",
|
|
" cb(require(", loaderUtils.stringifyRequest(this, "!!" + remainingRequest), "));\n",
|
|
" }" + chunkNameParam + ");\n",
|
|
"}"];
|
|
} else {
|
|
result = [
|
|
"var cbs = [], \n",
|
|
" data;\n",
|
|
"module.exports = function(cb) {\n",
|
|
" if(cbs) cbs.push(cb);\n",
|
|
" else cb(data);\n",
|
|
"}\n",
|
|
"require.ensure([], function(require) {\n",
|
|
" data = require(", loaderUtils.stringifyRequest(this, "!!" + remainingRequest), ");\n",
|
|
" var callbacks = cbs;\n",
|
|
" cbs = null;\n",
|
|
" for(var i = 0, l = callbacks.length; i < l; i++) {\n",
|
|
" callbacks[i](data);\n",
|
|
" }\n",
|
|
"}" + chunkNameParam + ");"];
|
|
}
|
|
return result.join("");
|
|
}
|
|
|
|
/*
|
|
Output format:
|
|
|
|
var cbs = [],
|
|
data;
|
|
module.exports = function(cb) {
|
|
if(cbs) cbs.push(cb);
|
|
else cb(data);
|
|
}
|
|
require.ensure([], function(require) {
|
|
data = require("xxx");
|
|
var callbacks = cbs;
|
|
cbs = null;
|
|
for(var i = 0, l = callbacks.length; i < l; i++) {
|
|
callbacks[i](data);
|
|
}
|
|
});
|
|
|
|
*/
|