aboutsummaryrefslogtreecommitdiff
path: root/node_modules/webpack/lib/ExternalModule.js
diff options
context:
space:
mode:
authorFlorian Dold <florian.dold@gmail.com>2018-09-20 02:56:13 +0200
committerFlorian Dold <florian.dold@gmail.com>2018-09-20 02:56:13 +0200
commitbbff7403fbf46f9ad92240ac213df8d30ef31b64 (patch)
treec58400ec5124da1c7d56b01aea83309f80a56c3b /node_modules/webpack/lib/ExternalModule.js
parent003fb34971cf63466184351b4db5f7c67df4f444 (diff)
update packages
Diffstat (limited to 'node_modules/webpack/lib/ExternalModule.js')
-rw-r--r--node_modules/webpack/lib/ExternalModule.js305
1 files changed, 177 insertions, 128 deletions
diff --git a/node_modules/webpack/lib/ExternalModule.js b/node_modules/webpack/lib/ExternalModule.js
index 45c183b1a..8cb5e071c 100644
--- a/node_modules/webpack/lib/ExternalModule.js
+++ b/node_modules/webpack/lib/ExternalModule.js
@@ -1,128 +1,177 @@
-/*
- 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, userRequest) {
- super();
- this.request = request;
- this.userRequest = userRequest;
- this.type = type;
- this.built = false;
- this.external = true;
- }
-
- libIdent() {
- return this.userRequest;
- }
-
- 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 = Date.now();
- 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;
- }
-
- updateHash(hash) {
- hash.update(this.type);
- hash.update(JSON.stringify(this.request));
- hash.update(JSON.stringify(Boolean(this.optional)));
- super.updateHash(hash);
- }
-}
-
-module.exports = ExternalModule;
+/*
+ MIT License http://www.opensource.org/licenses/mit-license.php
+ Author Tobias Koppers @sokra
+*/
+"use strict";
+
+const { OriginalSource, RawSource } = require("webpack-sources");
+const Module = require("./Module");
+const WebpackMissingModule = require("./dependencies/WebpackMissingModule");
+const Template = require("./Template");
+
+/** @typedef {import("./util/createHash").Hash} Hash */
+
+class ExternalModule extends Module {
+ constructor(request, type, userRequest) {
+ super("javascript/dynamic", null);
+
+ // Info from Factory
+ this.request = request;
+ this.externalType = type;
+ this.userRequest = userRequest;
+ this.external = true;
+ }
+
+ libIdent() {
+ return this.userRequest;
+ }
+
+ 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.built = true;
+ this.buildMeta = {};
+ this.buildInfo = {};
+ 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(${JSON.stringify(
+ moduleName
+ )})${objectLookup};`;
+ }
+
+ checkExternalVariable(variableToCheck, request) {
+ return `if(typeof ${variableToCheck} === 'undefined') {${WebpackMissingModule.moduleCode(
+ request
+ )}}\n`;
+ }
+
+ getSourceForAmdOrUmdExternal(id, optional, request) {
+ const externalVariable = `__WEBPACK_EXTERNAL_MODULE_${Template.toIdentifier(
+ `${id}`
+ )}__`;
+ const missingModuleError = optional
+ ? this.checkExternalVariable(externalVariable, request)
+ : "";
+ return `${missingModuleError}module.exports = ${externalVariable};`;
+ }
+
+ getSourceForDefaultCase(optional, request) {
+ if (!Array.isArray(request)) {
+ // make it an array as the look up works the same basically
+ request = [request];
+ }
+
+ const variableName = request[0];
+ const missingModuleError = optional
+ ? this.checkExternalVariable(variableName, request.join("."))
+ : "";
+ const objectLookup = request
+ .slice(1)
+ .map(r => `[${JSON.stringify(r)}]`)
+ .join("");
+ return `${missingModuleError}module.exports = ${variableName}${objectLookup};`;
+ }
+
+ getSourceString(runtime) {
+ const request =
+ typeof this.request === "object" && !Array.isArray(this.request)
+ ? this.request[this.externalType]
+ : this.request;
+ switch (this.externalType) {
+ case "this":
+ case "window":
+ case "self":
+ return this.getSourceForGlobalVariableExternal(
+ request,
+ this.externalType
+ );
+ case "global":
+ return this.getSourceForGlobalVariableExternal(
+ runtime.outputOptions.globalObject,
+ this.externalType
+ );
+ 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(dependencyTemplates, runtime) {
+ return this.getSource(this.getSourceString(runtime));
+ }
+
+ size() {
+ return 42;
+ }
+
+ /**
+ * @param {Hash} hash the hash used to track dependencies
+ * @returns {void}
+ */
+ updateHash(hash) {
+ hash.update(this.externalType);
+ hash.update(JSON.stringify(this.request));
+ hash.update(JSON.stringify(Boolean(this.optional)));
+ super.updateHash(hash);
+ }
+}
+
+module.exports = ExternalModule;