webpack/lib/EvalDevToolModuleTemplateDe...

39 lines
1.7 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 RawSource = require("webpack-core/lib/RawSource");
function EvalDevToolModuleTemplateDecorator(moduleTemplate, sourceUrlComment) {
2013-01-31 01:49:25 +08:00
this.moduleTemplate = moduleTemplate;
this.sourceUrlComment = sourceUrlComment || "//@ sourceURL=[url]";
2013-01-31 01:49:25 +08:00
}
module.exports = EvalDevToolModuleTemplateDecorator;
EvalDevToolModuleTemplateDecorator.prototype.render = function(module, dependencyTemplates) {
var sourceUrlComment = this.sourceUrlComment;
2013-01-31 01:49:25 +08:00
var fakeModule = {
source: function(dependencyTemplates, outputOptions, requestShortener) {
var source = module.source(dependencyTemplates, outputOptions, requestShortener);
var content = source.source();
2014-02-13 18:40:16 +08:00
var str = module.readableIdentifier(requestShortener);
str = str.split("!");
str = str.pop() + (str.length > 0 ? " " + str.join("!") : "");
2013-01-31 01:49:25 +08:00
var footer = ["\n",
"// WEBPACK FOOTER",
"// module.id = " + module.id,
"// module.readableIdentifier = " + module.readableIdentifier(requestShortener),
2014-02-13 18:40:16 +08:00
sourceUrlComment.replace(/\[url\]/g, "webpack-module:///" + encodeURI(str).replace(/%2F/g, "/").replace(/%20/g, "_").replace(/%5E/g, "^").replace(/%5C/g, "\\").replace(/\?/, "%3F").replace(/^\//, ""))
2013-01-31 01:49:25 +08:00
].join("\n");
return new RawSource("eval(" + JSON.stringify(content + footer) + ");" );
},
identifier: function() { return module.identifier() },
readableIdentifier: function(rs) { return module.readableIdentifier(rs) },
id: module.id
};
return this.moduleTemplate.render(fakeModule, dependencyTemplates);
};
EvalDevToolModuleTemplateDecorator.prototype.updateHash = function(hash) {
hash.update("1");
};