From 363723fc84f7b8477592e0105aeb331ec9a017af Mon Sep 17 00:00:00 2001 From: Florian Dold Date: Mon, 14 Aug 2017 05:01:11 +0200 Subject: node_modules --- .../webpack/lib/node/NodeMainTemplatePlugin.js | 332 ++++++++++----------- 1 file changed, 162 insertions(+), 170 deletions(-) (limited to 'node_modules/webpack/lib/node/NodeMainTemplatePlugin.js') diff --git a/node_modules/webpack/lib/node/NodeMainTemplatePlugin.js b/node_modules/webpack/lib/node/NodeMainTemplatePlugin.js index d4660dac1..9a64b57b5 100644 --- a/node_modules/webpack/lib/node/NodeMainTemplatePlugin.js +++ b/node_modules/webpack/lib/node/NodeMainTemplatePlugin.js @@ -2,190 +2,182 @@ MIT License http://www.opensource.org/licenses/mit-license.php Author Tobias Koppers @sokra */ -var Template = require("../Template"); +"use strict"; -function NodeMainTemplatePlugin(asyncChunkLoading) { - this.asyncChunkLoading = asyncChunkLoading; -} -module.exports = NodeMainTemplatePlugin; -NodeMainTemplatePlugin.prototype.apply = function(mainTemplate) { - var self = this; - mainTemplate.plugin("local-vars", function(source, chunk) { - if(chunk.chunks.length > 0) { - return this.asString([ - source, - "", - "// object to store loaded chunks", - "// \"0\" means \"already loaded\"", - "var installedChunks = {", - this.indent( - chunk.ids.map(function(id) { - return id + ": 0"; - }).join(",\n") - ), - "};" - ]); - } - return source; - }); - mainTemplate.plugin("require-extensions", function(source, chunk) { - if(chunk.chunks.length > 0) { - return this.asString([ - source, - "", - "// uncatched error handler for webpack runtime", - this.requireFn + ".oe = function(err) {", - this.indent([ - "process.nextTick(function() {", - this.indent("throw err; // catch this error by using System.import().catch()"), - "});" - ]), - "};" - ]); - } - return source; - }); - mainTemplate.plugin("require-ensure", function(_, chunk, hash) { - var chunkFilename = this.outputOptions.chunkFilename; - var chunkMaps = chunk.getChunkMaps(); - var insertMoreModules = [ - "var moreModules = chunk.modules, chunkIds = chunk.ids;", - "for(var moduleId in moreModules) {", - this.indent(this.renderAddModule(hash, chunk, "moduleId", "moreModules[moduleId]")), - "}" - ]; - if(self.asyncChunkLoading) { - return this.asString([ - "// \"0\" is the signal for \"already loaded\"", - "if(installedChunks[chunkId] === 0)", - this.indent([ - "return Promise.resolve();" - ]), - "// array of [resolve, reject, promise] means \"currently loading\"", - "if(installedChunks[chunkId])", - this.indent([ - "return installedChunks[chunkId][2];" - ]), - "// load the chunk and return promise to it", - "var promise = new Promise(function(resolve, reject) {", - this.indent([ - "installedChunks[chunkId] = [resolve, reject];", - "var filename = __dirname + " + this.applyPluginsWaterfall("asset-path", JSON.stringify("/" + chunkFilename), { - hash: "\" + " + this.renderCurrentHashCode(hash) + " + \"", - hashWithLength: function(length) { - return "\" + " + this.renderCurrentHashCode(hash, length) + " + \""; - }.bind(this), - chunk: { - id: "\" + chunkId + \"", - hash: "\" + " + JSON.stringify(chunkMaps.hash) + "[chunkId] + \"", - hashWithLength: function(length) { - var shortChunkHashMap = {}; - Object.keys(chunkMaps.hash).forEach(function(chunkId) { - if(typeof chunkMaps.hash[chunkId] === "string") - shortChunkHashMap[chunkId] = chunkMaps.hash[chunkId].substr(0, length); - }); - return "\" + " + JSON.stringify(shortChunkHashMap) + "[chunkId] + \""; - }, - name: "\" + (" + JSON.stringify(chunkMaps.name) + "[chunkId]||chunkId) + \"" - } - }) + ";", - "require('fs').readFile(filename, 'utf-8', function(err, content) {", +const Template = require("../Template"); + +module.exports = class NodeMainTemplatePlugin { + constructor(asyncChunkLoading) { + this.asyncChunkLoading = asyncChunkLoading; + } + + apply(mainTemplate) { + const asyncChunkLoading = this.asyncChunkLoading; + mainTemplate.plugin("local-vars", function(source, chunk) { + if(chunk.chunks.length > 0) { + return this.asString([ + source, + "", + "// object to store loaded chunks", + "// \"0\" means \"already loaded\"", + "var installedChunks = {", + this.indent(chunk.ids.map((id) => `${id}: 0`).join(",\n")), + "};" + ]); + } + return source; + }); + mainTemplate.plugin("require-extensions", function(source, chunk) { + if(chunk.chunks.length > 0) { + return this.asString([ + source, + "", + "// uncatched error handler for webpack runtime", + `${this.requireFn}.oe = function(err) {`, this.indent([ - "if(err) return reject(err);", - "var chunk = {};", - "require('vm').runInThisContext('(function(exports, require, __dirname, __filename) {' + content + '\\n})', filename)" + - "(chunk, require, require('path').dirname(filename), filename);" - ].concat(insertMoreModules).concat([ - "var callbacks = [];", - "for(var i = 0; i < chunkIds.length; i++) {", + "process.nextTick(function() {", + this.indent("throw err; // catch this error by using System.import().catch()"), + "});" + ]), + "};" + ]); + } + return source; + }); + mainTemplate.plugin("require-ensure", function(_, chunk, hash) { + const chunkFilename = this.outputOptions.chunkFilename; + const chunkMaps = chunk.getChunkMaps(); + const insertMoreModules = [ + "var moreModules = chunk.modules, chunkIds = chunk.ids;", + "for(var moduleId in moreModules) {", + this.indent(this.renderAddModule(hash, chunk, "moduleId", "moreModules[moduleId]")), + "}" + ]; + if(asyncChunkLoading) { + return this.asString([ + "// \"0\" is the signal for \"already loaded\"", + "if(installedChunks[chunkId] === 0)", + this.indent([ + "return Promise.resolve();" + ]), + "// array of [resolve, reject, promise] means \"currently loading\"", + "if(installedChunks[chunkId])", + this.indent([ + "return installedChunks[chunkId][2];" + ]), + "// load the chunk and return promise to it", + "var promise = new Promise(function(resolve, reject) {", + this.indent([ + "installedChunks[chunkId] = [resolve, reject];", + "var filename = __dirname + " + this.applyPluginsWaterfall("asset-path", JSON.stringify(`/${chunkFilename}`), { + hash: `" + ${this.renderCurrentHashCode(hash)} + "`, + hashWithLength: (length) => `" + ${this.renderCurrentHashCode(hash, length)} + "`, + chunk: { + id: "\" + chunkId + \"", + hash: `" + ${JSON.stringify(chunkMaps.hash)}[chunkId] + "`, + hashWithLength: (length) => { + const shortChunkHashMap = {}; + Object.keys(chunkMaps.hash).forEach((chunkId) => { + if(typeof chunkMaps.hash[chunkId] === "string") + shortChunkHashMap[chunkId] = chunkMaps.hash[chunkId].substr(0, length); + }); + return `" + ${JSON.stringify(shortChunkHashMap)}[chunkId] + "`; + }, + name: `" + (${JSON.stringify(chunkMaps.name)}[chunkId]||chunkId) + "` + } + }) + ";", + "require('fs').readFile(filename, 'utf-8', function(err, content) {", this.indent([ - "if(installedChunks[chunkIds[i]])", + "if(err) return reject(err);", + "var chunk = {};", + "require('vm').runInThisContext('(function(exports, require, __dirname, __filename) {' + content + '\\n})', filename)" + + "(chunk, require, require('path').dirname(filename), filename);" + ].concat(insertMoreModules).concat([ + "var callbacks = [];", + "for(var i = 0; i < chunkIds.length; i++) {", this.indent([ - "callbacks = callbacks.concat(installedChunks[chunkIds[i]][0]);" + "if(installedChunks[chunkIds[i]])", + this.indent([ + "callbacks = callbacks.concat(installedChunks[chunkIds[i]][0]);" + ]), + "installedChunks[chunkIds[i]] = 0;" ]), - "installedChunks[chunkIds[i]] = 0;" - ]), - "}", - "for(i = 0; i < callbacks.length; i++)", - this.indent("callbacks[i]();") + "}", + "for(i = 0; i < callbacks.length; i++)", + this.indent("callbacks[i]();") + ])), + "});" + ]), + "});", + "return installedChunks[chunkId][2] = promise;" + ]); + } else { + const request = this.applyPluginsWaterfall("asset-path", JSON.stringify(`./${chunkFilename}`), { + hash: `" + ${this.renderCurrentHashCode(hash)} + "`, + hashWithLength: (length) => `" + ${this.renderCurrentHashCode(hash, length)} + "`, + chunk: { + id: "\" + chunkId + \"", + hash: `" + ${JSON.stringify(chunkMaps.hash)}[chunkId] + "`, + hashWithLength: (length) => { + const shortChunkHashMap = {}; + Object.keys(chunkMaps.hash).forEach((chunkId) => { + if(typeof chunkMaps.hash[chunkId] === "string") + shortChunkHashMap[chunkId] = chunkMaps.hash[chunkId].substr(0, length); + }); + return `" + ${JSON.stringify(shortChunkHashMap)}[chunkId] + "`; + }, + name: `" + (${JSON.stringify(chunkMaps.name)}[chunkId]||chunkId) + "` + } + }); + return this.asString([ + "// \"0\" is the signal for \"already loaded\"", + "if(installedChunks[chunkId] !== 0) {", + this.indent([ + `var chunk = require(${request});` + ].concat(insertMoreModules).concat([ + "for(var i = 0; i < chunkIds.length; i++)", + this.indent("installedChunks[chunkIds[i]] = 0;") ])), - "});" - ]), - "});", - "return installedChunks[chunkId][2] = promise;" - ]); - } else { - var request = this.applyPluginsWaterfall("asset-path", JSON.stringify("./" + chunkFilename), { - hash: "\" + " + this.renderCurrentHashCode(hash) + " + \"", - hashWithLength: function(length) { - return "\" + " + this.renderCurrentHashCode(hash, length) + " + \""; - }.bind(this), + "}", + "return Promise.resolve();" + ]); + } + }); + mainTemplate.plugin("hot-bootstrap", function(source, chunk, hash) { + const hotUpdateChunkFilename = this.outputOptions.hotUpdateChunkFilename; + const hotUpdateMainFilename = this.outputOptions.hotUpdateMainFilename; + const chunkMaps = chunk.getChunkMaps(); + const currentHotUpdateChunkFilename = this.applyPluginsWaterfall("asset-path", JSON.stringify(hotUpdateChunkFilename), { + hash: `" + ${this.renderCurrentHashCode(hash)} + "`, + hashWithLength: (length) => `" + ${this.renderCurrentHashCode(hash, length)} + "`, chunk: { id: "\" + chunkId + \"", - hash: "\" + " + JSON.stringify(chunkMaps.hash) + "[chunkId] + \"", - hashWithLength: function(length) { - var shortChunkHashMap = {}; - Object.keys(chunkMaps.hash).forEach(function(chunkId) { + hash: `" + ${JSON.stringify(chunkMaps.hash)}[chunkId] + "`, + hashWithLength: (length) => { + const shortChunkHashMap = {}; + Object.keys(chunkMaps.hash).forEach((chunkId) => { if(typeof chunkMaps.hash[chunkId] === "string") shortChunkHashMap[chunkId] = chunkMaps.hash[chunkId].substr(0, length); }); - return "\" + " + JSON.stringify(shortChunkHashMap) + "[chunkId] + \""; + return `" + ${JSON.stringify(shortChunkHashMap)}[chunkId] + "`; }, - name: "\" + (" + JSON.stringify(chunkMaps.name) + "[chunkId]||chunkId) + \"" + name: `" + (${JSON.stringify(chunkMaps.name)}[chunkId]||chunkId) + "` } }); - return this.asString([ - "// \"0\" is the signal for \"already loaded\"", - "if(installedChunks[chunkId] !== 0) {", - this.indent([ - "var chunk = require(" + request + ");" - ].concat(insertMoreModules).concat([ - "for(var i = 0; i < chunkIds.length; i++)", - this.indent("installedChunks[chunkIds[i]] = 0;") - ])), - "}", - "return Promise.resolve();" - ]); - } - }); - mainTemplate.plugin("hot-bootstrap", function(source, chunk, hash) { - var hotUpdateChunkFilename = this.outputOptions.hotUpdateChunkFilename; - var hotUpdateMainFilename = this.outputOptions.hotUpdateMainFilename; - var chunkMaps = chunk.getChunkMaps(); - var currentHotUpdateChunkFilename = this.applyPluginsWaterfall("asset-path", JSON.stringify(hotUpdateChunkFilename), { - hash: "\" + " + this.renderCurrentHashCode(hash) + " + \"", - hashWithLength: function(length) { - return "\" + " + this.renderCurrentHashCode(hash, length) + " + \""; - }.bind(this), - chunk: { - id: "\" + chunkId + \"", - hash: "\" + " + JSON.stringify(chunkMaps.hash) + "[chunkId] + \"", - hashWithLength: function(length) { - var shortChunkHashMap = {}; - Object.keys(chunkMaps.hash).forEach(function(chunkId) { - if(typeof chunkMaps.hash[chunkId] === "string") - shortChunkHashMap[chunkId] = chunkMaps.hash[chunkId].substr(0, length); - }); - return "\" + " + JSON.stringify(shortChunkHashMap) + "[chunkId] + \""; - }, - name: "\" + (" + JSON.stringify(chunkMaps.name) + "[chunkId]||chunkId) + \"" - } + const currentHotUpdateMainFilename = this.applyPluginsWaterfall("asset-path", JSON.stringify(hotUpdateMainFilename), { + hash: `" + ${this.renderCurrentHashCode(hash)} + "`, + hashWithLength: (length) => `" + ${this.renderCurrentHashCode(hash, length)} + "` + }); + return Template.getFunctionContent(asyncChunkLoading ? require("./NodeMainTemplateAsync.runtime.js") : require("./NodeMainTemplate.runtime.js")) + .replace(/\$require\$/g, this.requireFn) + .replace(/\$hotMainFilename\$/g, currentHotUpdateMainFilename) + .replace(/\$hotChunkFilename\$/g, currentHotUpdateChunkFilename); }); - var currentHotUpdateMainFilename = this.applyPluginsWaterfall("asset-path", JSON.stringify(hotUpdateMainFilename), { - hash: "\" + " + this.renderCurrentHashCode(hash) + " + \"", - hashWithLength: function(length) { - return "\" + " + this.renderCurrentHashCode(hash, length) + " + \""; - }.bind(this) + mainTemplate.plugin("hash", function(hash) { + hash.update("node"); + hash.update("3"); + hash.update(this.outputOptions.filename + ""); + hash.update(this.outputOptions.chunkFilename + ""); }); - return Template.getFunctionContent(self.asyncChunkLoading ? require("./NodeMainTemplateAsync.runtime.js") : require("./NodeMainTemplate.runtime.js")) - .replace(/\$require\$/g, this.requireFn) - .replace(/\$hotMainFilename\$/g, currentHotUpdateMainFilename) - .replace(/\$hotChunkFilename\$/g, currentHotUpdateChunkFilename); - }); - mainTemplate.plugin("hash", function(hash) { - hash.update("node"); - hash.update("3"); - hash.update(this.outputOptions.filename + ""); - hash.update(this.outputOptions.chunkFilename + ""); - }); + } }; -- cgit v1.2.3