From de98e0b232509d5f40c135d540a70e415272ff85 Mon Sep 17 00:00:00 2001 From: Florian Dold Date: Wed, 3 May 2017 15:35:00 +0200 Subject: node_modules --- node_modules/webpack/lib/ExternalModule.js | 116 +++++++++++++++++++++++++++++ 1 file changed, 116 insertions(+) create mode 100644 node_modules/webpack/lib/ExternalModule.js (limited to 'node_modules/webpack/lib/ExternalModule.js') diff --git a/node_modules/webpack/lib/ExternalModule.js b/node_modules/webpack/lib/ExternalModule.js new file mode 100644 index 000000000..225d3c448 --- /dev/null +++ b/node_modules/webpack/lib/ExternalModule.js @@ -0,0 +1,116 @@ +/* + MIT License http://www.opensource.org/licenses/mit-license.php + Author Tobias Koppers @sokra +*/ +"use strict"; +const Module = require("./Module"); +const OriginalSource = require("webpack-sources").OriginalSource; +const RawSource = require("webpack-sources").RawSource; +const WebpackMissingModule = require("./dependencies/WebpackMissingModule"); +const Template = require("./Template"); + +class ExternalModule extends Module { + constructor(request, type) { + super(); + this.request = request; + this.type = type; + this.built = false; + this.external = true; + } + + chunkCondition(chunk) { + return chunk.hasEntryModule(); + } + + identifier() { + return "external " + JSON.stringify(this.request); + } + + readableIdentifier() { + return "external " + JSON.stringify(this.request); + } + + needRebuild() { + return false; + } + + build(options, compilation, resolver, fs, callback) { + this.builtTime = new Date().getTime(); + callback(); + } + + getSourceForGlobalVariableExternal(variableName, type) { + if(!Array.isArray(variableName)) { + // make it an array as the look up works the same basically + variableName = [variableName]; + } + + // needed for e.g. window["some"]["thing"] + const objectLookup = variableName.map(r => `[${JSON.stringify(r)}]`).join(""); + return `(function() { module.exports = ${type}${objectLookup}; }());`; + } + + getSourceForCommonJsExternal(moduleAndSpecifiers) { + if(!Array.isArray(moduleAndSpecifiers)) { + return `module.exports = require(${JSON.stringify(moduleAndSpecifiers)});`; + } + + const moduleName = moduleAndSpecifiers[0]; + const objectLookup = moduleAndSpecifiers.slice(1).map(r => `[${JSON.stringify(r)}]`).join(""); + return `module.exports = require(${moduleName})${objectLookup};`; + } + + checkExternalVariable(variableToCheck, request) { + return `if(typeof ${variableToCheck} === 'undefined') {${WebpackMissingModule.moduleCode(request)}}\n`; + } + + getSourceForAmdOrUmdExternal(id, optional, request) { + const externalVariable = Template.toIdentifier(`__WEBPACK_EXTERNAL_MODULE_${id}__`); + const missingModuleError = optional ? this.checkExternalVariable(externalVariable, request) : ""; + return `${missingModuleError}module.exports = ${externalVariable};`; + } + + getSourceForDefaultCase(optional, request) { + const missingModuleError = optional ? this.checkExternalVariable(request, request) : ""; + return `${missingModuleError}module.exports = ${request};`; + } + + getSourceString() { + const request = typeof this.request === "object" ? this.request[this.type] : this.request; + switch(this.type) { + case "this": + case "window": + case "global": + return this.getSourceForGlobalVariableExternal(request, this.type); + case "commonjs": + case "commonjs2": + return this.getSourceForCommonJsExternal(request); + case "amd": + case "umd": + case "umd2": + return this.getSourceForAmdOrUmdExternal(this.id, this.optional, request); + default: + return this.getSourceForDefaultCase(this.optional, request); + } + } + + getSource(sourceString) { + if(this.useSourceMap) { + return new OriginalSource(sourceString, this.identifier()); + } + + return new RawSource(sourceString); + } + + source() { + return this.getSource( + this.getSourceString() + ); + } + + size() { + return 42; + } +} + +module.exports = ExternalModule; -- cgit v1.2.3