webpack 5.80.0 → 5.82.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of webpack might be problematic. Click here for more details.
- package/bin/webpack.js +13 -2
- package/lib/AsyncDependenciesBlock.js +8 -0
- package/lib/CodeGenerationResults.js +2 -2
- package/lib/Compilation.js +4 -2
- package/lib/ContextModule.js +8 -0
- package/lib/CssModule.js +169 -0
- package/lib/DefinePlugin.js +81 -44
- package/lib/DelegatedModule.js +5 -0
- package/lib/DependenciesBlock.js +8 -0
- package/lib/Dependency.js +8 -0
- package/lib/DllModule.js +8 -0
- package/lib/ExportsInfo.js +3 -0
- package/lib/ExternalModule.js +8 -0
- package/lib/FileSystemInfo.js +8 -0
- package/lib/LoaderOptionsPlugin.js +12 -2
- package/lib/Module.js +8 -0
- package/lib/ModuleBuildError.js +9 -0
- package/lib/ModuleError.js +9 -0
- package/lib/ModuleFilenameHelpers.js +113 -4
- package/lib/ModuleParseError.js +9 -0
- package/lib/ModuleTypeConstants.js +21 -0
- package/lib/ModuleWarning.js +9 -0
- package/lib/NormalModule.js +8 -0
- package/lib/NormalModuleFactory.js +15 -3
- package/lib/RawModule.js +8 -0
- package/lib/WebpackError.js +8 -0
- package/lib/WebpackOptionsApply.js +33 -40
- package/lib/asset/RawDataUrlModule.js +8 -0
- package/lib/cache/MemoryWithGcCachePlugin.js +2 -0
- package/lib/cache/ResolverCachePlugin.js +3 -0
- package/lib/config/defaults.js +1 -0
- package/lib/config/normalization.js +1 -0
- package/lib/container/ContainerEntryModule.js +5 -0
- package/lib/container/ContainerExposedDependency.js +9 -0
- package/lib/container/FallbackDependency.js +6 -0
- package/lib/container/FallbackModule.js +5 -0
- package/lib/container/RemoteModule.js +5 -0
- package/lib/css/CssGenerator.js +4 -0
- package/lib/css/CssLoadingRuntimeModule.js +9 -2
- package/lib/css/CssModulesPlugin.js +201 -57
- package/lib/css/CssParser.js +270 -147
- package/lib/css/walkCssTokens.js +121 -65
- package/lib/debug/ProfilingPlugin.js +2 -0
- package/lib/dependencies/AMDDefineDependency.js +8 -0
- package/lib/dependencies/AMDRequireArrayDependency.js +8 -0
- package/lib/dependencies/AMDRequireContextDependency.js +9 -0
- package/lib/dependencies/AMDRequireDependency.js +8 -0
- package/lib/dependencies/CachedConstDependency.js +8 -0
- package/lib/dependencies/CommonJsDependencyHelpers.js +9 -0
- package/lib/dependencies/CommonJsExportRequireDependency.js +8 -0
- package/lib/dependencies/CommonJsExportsDependency.js +8 -0
- package/lib/dependencies/CommonJsExportsParserPlugin.js +65 -3
- package/lib/dependencies/CommonJsFullRequireDependency.js +8 -0
- package/lib/dependencies/CommonJsRequireContextDependency.js +9 -0
- package/lib/dependencies/CommonJsSelfReferenceDependency.js +8 -0
- package/lib/dependencies/ConstDependency.js +8 -0
- package/lib/dependencies/ContextDependency.js +8 -0
- package/lib/dependencies/ContextElementDependency.js +8 -0
- package/lib/dependencies/CreateScriptUrlDependency.js +8 -0
- package/lib/dependencies/CssExportDependency.js +8 -0
- package/lib/dependencies/CssImportDependency.js +52 -1
- package/lib/dependencies/CssLocalIdentifierDependency.js +8 -0
- package/lib/dependencies/CssSelfLocalIdentifierDependency.js +8 -0
- package/lib/dependencies/CssUrlDependency.js +8 -0
- package/lib/dependencies/DllEntryDependency.js +9 -0
- package/lib/dependencies/ExportsInfoDependency.js +5 -0
- package/lib/dependencies/HarmonyAcceptDependency.js +8 -0
- package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +8 -0
- package/lib/dependencies/HarmonyExportExpressionDependency.js +8 -0
- package/lib/dependencies/HarmonyExportHeaderDependency.js +8 -0
- package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +14 -0
- package/lib/dependencies/HarmonyExportSpecifierDependency.js +8 -0
- package/lib/dependencies/HarmonyImportDependency.js +8 -0
- package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +1 -0
- package/lib/dependencies/HarmonyImportSpecifierDependency.js +8 -0
- package/lib/dependencies/ImportContextDependency.js +9 -0
- package/lib/dependencies/ImportDependency.js +8 -0
- package/lib/dependencies/JsonExportsDependency.js +8 -0
- package/lib/dependencies/LocalModuleDependency.js +8 -0
- package/lib/dependencies/ModuleDecoratorDependency.js +8 -0
- package/lib/dependencies/ModuleDependency.js +8 -0
- package/lib/dependencies/ProvidedDependency.js +8 -0
- package/lib/dependencies/PureExpressionDependency.js +8 -0
- package/lib/dependencies/RequireEnsureDependency.js +8 -0
- package/lib/dependencies/RequireHeaderDependency.js +5 -0
- package/lib/dependencies/RequireResolveContextDependency.js +9 -0
- package/lib/dependencies/RequireResolveHeaderDependency.js +5 -0
- package/lib/dependencies/RuntimeRequirementsDependency.js +8 -0
- package/lib/dependencies/StaticExportsDependency.js +8 -0
- package/lib/dependencies/URLDependency.js +8 -0
- package/lib/dependencies/UnsupportedDependency.js +8 -0
- package/lib/dependencies/WebAssemblyExportImportedDependency.js +8 -0
- package/lib/dependencies/WebAssemblyImportDependency.js +8 -0
- package/lib/dependencies/WorkerDependency.js +8 -0
- package/lib/index.js +1 -0
- package/lib/javascript/BasicEvaluatedExpression.js +108 -1
- package/lib/javascript/JavascriptParser.js +133 -12
- package/lib/json/JsonData.js +25 -0
- package/lib/json/JsonGenerator.js +15 -3
- package/lib/json/JsonModulesPlugin.js +1 -0
- package/lib/json/JsonParser.js +2 -1
- package/lib/library/ModuleLibraryPlugin.js +2 -1
- package/lib/optimize/RealContentHashPlugin.js +6 -0
- package/lib/runtime/AutoPublicPathRuntimeModule.js +6 -1
- package/lib/runtime/GetChunkFilenameRuntimeModule.js +4 -0
- package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +22 -3
- package/lib/schemes/DataUriPlugin.js +4 -0
- package/lib/schemes/HttpUriPlugin.js +38 -0
- package/lib/serialization/ObjectMiddleware.js +2 -0
- package/lib/sharing/ConsumeSharedModule.js +8 -0
- package/lib/sharing/ConsumeSharedRuntimeModule.js +9 -3
- package/lib/sharing/ProvideSharedDependency.js +6 -0
- package/lib/sharing/ProvideSharedModule.js +5 -0
- package/lib/sharing/ShareRuntimeModule.js +7 -4
- package/lib/sharing/utils.js +293 -7
- package/lib/stats/DefaultStatsPrinterPlugin.js +25 -0
- package/lib/util/LazySet.js +10 -2
- package/lib/util/MapHelpers.js +19 -5
- package/lib/util/StackedCacheMap.js +6 -0
- package/lib/util/StringXor.js +51 -0
- package/lib/util/binarySearchBounds.js +49 -0
- package/lib/util/compileBooleanMatcher.js +31 -0
- package/lib/util/deprecation.js +8 -0
- package/lib/util/identifier.js +4 -0
- package/lib/util/internalSerializables.js +1 -0
- package/lib/util/numberHash.js +75 -21
- package/lib/util/propertyAccess.js +5 -0
- package/lib/util/semver.js +1 -1
- package/lib/wasm/EnableWasmLoadingPlugin.js +4 -0
- package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +1 -0
- package/lib/wasm-async/AsyncWebAssemblyParser.js +1 -1
- package/package.json +4 -5
- package/schemas/WebpackOptions.check.js +1 -1
- package/schemas/WebpackOptions.json +33 -0
- package/types.d.ts +176 -48
package/lib/json/JsonParser.js
CHANGED
@@ -13,6 +13,7 @@ const JsonData = require("./JsonData");
|
|
13
13
|
/** @typedef {import("../../declarations/plugins/JsonModulesPluginParser").JsonModulesPluginParserOptions} JsonModulesPluginParserOptions */
|
14
14
|
/** @typedef {import("../Parser").ParserState} ParserState */
|
15
15
|
/** @typedef {import("../Parser").PreparsedAst} PreparsedAst */
|
16
|
+
/** @typedef {import("./JsonModulesPlugin").RawJsonData} RawJsonData */
|
16
17
|
|
17
18
|
class JsonParser extends Parser {
|
18
19
|
/**
|
@@ -36,7 +37,7 @@ class JsonParser extends Parser {
|
|
36
37
|
/** @type {JsonModulesPluginParserOptions["parse"]} */
|
37
38
|
const parseFn =
|
38
39
|
typeof this.options.parse === "function" ? this.options.parse : parseJson;
|
39
|
-
|
40
|
+
/** @type {Buffer | RawJsonData} */
|
40
41
|
const data =
|
41
42
|
typeof source === "object"
|
42
43
|
? source
|
@@ -89,7 +89,8 @@ class ModuleLibraryPlugin extends AbstractLibraryPlugin {
|
|
89
89
|
)}`;
|
90
90
|
result.add(
|
91
91
|
`var ${varName} = __webpack_exports__${propertyAccess([
|
92
|
-
|
92
|
+
/** @type {string} */
|
93
|
+
(exportInfo.getUsedName(exportInfo.name, chunk.runtime))
|
93
94
|
])};\n`
|
94
95
|
);
|
95
96
|
exports.push(`${varName} as ${exportInfo.name}`);
|
@@ -15,6 +15,7 @@ const createHash = require("../util/createHash");
|
|
15
15
|
/** @typedef {import("webpack-sources").Source} Source */
|
16
16
|
/** @typedef {import("../Compilation").AssetInfo} AssetInfo */
|
17
17
|
/** @typedef {import("../Compiler")} Compiler */
|
18
|
+
/** @typedef {typeof import("../util/Hash")} Hash */
|
18
19
|
|
19
20
|
const EMPTY_SET = new Set();
|
20
21
|
|
@@ -115,6 +116,11 @@ class RealContentHashPlugin {
|
|
115
116
|
return hooks;
|
116
117
|
}
|
117
118
|
|
119
|
+
/**
|
120
|
+
* @param {Object} options options object
|
121
|
+
* @param {string | Hash} options.hashFunction the hash function to use
|
122
|
+
* @param {string} options.hashDigest the hash digest to use
|
123
|
+
*/
|
118
124
|
constructor({ hashFunction, hashDigest }) {
|
119
125
|
this._hashFunction = hashFunction;
|
120
126
|
this._hashDigest = hashDigest;
|
@@ -47,7 +47,12 @@ class AutoPublicPathRuntimeModule extends RuntimeModule {
|
|
47
47
|
"if (!scriptUrl) {",
|
48
48
|
Template.indent([
|
49
49
|
'var scripts = document.getElementsByTagName("script");',
|
50
|
-
"if(scripts.length)
|
50
|
+
"if(scripts.length) {",
|
51
|
+
Template.indent([
|
52
|
+
"var i = scripts.length - 1;",
|
53
|
+
"while (i > -1 && !scriptUrl) scriptUrl = scripts[i--].src;"
|
54
|
+
]),
|
55
|
+
"}"
|
51
56
|
]),
|
52
57
|
"}"
|
53
58
|
]),
|
@@ -132,6 +132,10 @@ class GetChunkFilenameRuntimeModule extends RuntimeModule {
|
|
132
132
|
const s = JSON.stringify(str);
|
133
133
|
return s.slice(1, s.length - 1);
|
134
134
|
};
|
135
|
+
/**
|
136
|
+
* @param {string} value string
|
137
|
+
* @returns {function(number): string} string to put in quotes with length
|
138
|
+
*/
|
135
139
|
const unquotedStringifyWithLength = value => length =>
|
136
140
|
unquotedStringify(`${value}`.slice(0, length));
|
137
141
|
const chunkFilenameValue =
|
@@ -25,6 +25,9 @@ class GetTrustedTypesPolicyRuntimeModule extends HelperRuntimeModule {
|
|
25
25
|
const { runtimeTemplate, outputOptions } = compilation;
|
26
26
|
const { trustedTypes } = outputOptions;
|
27
27
|
const fn = RuntimeGlobals.getTrustedTypesPolicy;
|
28
|
+
const wrapPolicyCreationInTryCatch = trustedTypes
|
29
|
+
? trustedTypes.onPolicyCreationFailure === "continue"
|
30
|
+
: false;
|
28
31
|
|
29
32
|
return Template.asString([
|
30
33
|
"var policy;",
|
@@ -58,9 +61,25 @@ class GetTrustedTypesPolicyRuntimeModule extends HelperRuntimeModule {
|
|
58
61
|
? [
|
59
62
|
'if (typeof trustedTypes !== "undefined" && trustedTypes.createPolicy) {',
|
60
63
|
Template.indent([
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
+
...(wrapPolicyCreationInTryCatch ? ["try {"] : []),
|
65
|
+
...[
|
66
|
+
`policy = trustedTypes.createPolicy(${JSON.stringify(
|
67
|
+
trustedTypes.policyName
|
68
|
+
)}, policy);`
|
69
|
+
].map(line =>
|
70
|
+
wrapPolicyCreationInTryCatch ? Template.indent(line) : line
|
71
|
+
),
|
72
|
+
...(wrapPolicyCreationInTryCatch
|
73
|
+
? [
|
74
|
+
"} catch (e) {",
|
75
|
+
Template.indent([
|
76
|
+
`console.warn('Could not create trusted-types policy ${JSON.stringify(
|
77
|
+
trustedTypes.policyName
|
78
|
+
)}');`
|
79
|
+
]),
|
80
|
+
"}"
|
81
|
+
]
|
82
|
+
: [])
|
64
83
|
]),
|
65
84
|
"}"
|
66
85
|
]
|
@@ -13,6 +13,10 @@ const NormalModule = require("../NormalModule");
|
|
13
13
|
// http://www.ietf.org/rfc/rfc2397.txt
|
14
14
|
const URIRegEx = /^data:([^;,]+)?((?:;[^;,]+)*?)(?:;(base64))?,(.*)$/i;
|
15
15
|
|
16
|
+
/**
|
17
|
+
* @param {string} uri data URI
|
18
|
+
* @returns {Buffer|null} decoded data
|
19
|
+
*/
|
16
20
|
const decodeDataURI = uri => {
|
17
21
|
const match = URIRegEx.exec(uri);
|
18
22
|
if (!match) return null;
|
@@ -71,11 +71,19 @@ const validate = createSchemaValidation(
|
|
71
71
|
}
|
72
72
|
);
|
73
73
|
|
74
|
+
/**
|
75
|
+
* @param {string} str path
|
76
|
+
* @returns {string} safe path
|
77
|
+
*/
|
74
78
|
const toSafePath = str =>
|
75
79
|
str
|
76
80
|
.replace(/^[^a-zA-Z0-9]+|[^a-zA-Z0-9]+$/g, "")
|
77
81
|
.replace(/[^a-zA-Z0-9._-]+/g, "_");
|
78
82
|
|
83
|
+
/**
|
84
|
+
* @param {Buffer} content content
|
85
|
+
* @returns {string} integrity
|
86
|
+
*/
|
79
87
|
const computeIntegrity = content => {
|
80
88
|
const hash = createHash("sha512");
|
81
89
|
hash.update(content);
|
@@ -83,6 +91,11 @@ const computeIntegrity = content => {
|
|
83
91
|
return integrity;
|
84
92
|
};
|
85
93
|
|
94
|
+
/**
|
95
|
+
* @param {Buffer} content content
|
96
|
+
* @param {string} integrity integrity
|
97
|
+
* @returns {boolean} true, if integrity matches
|
98
|
+
*/
|
86
99
|
const verifyIntegrity = (content, integrity) => {
|
87
100
|
if (integrity === "ignore") return true;
|
88
101
|
return computeIntegrity(content) === integrity;
|
@@ -110,6 +123,11 @@ const parseKeyValuePairs = str => {
|
|
110
123
|
return result;
|
111
124
|
};
|
112
125
|
|
126
|
+
/**
|
127
|
+
* @param {string | undefined} cacheControl Cache-Control header
|
128
|
+
* @param {number} requestTime timestamp of request
|
129
|
+
* @returns {{storeCache: boolean, storeLock: boolean, validUntil: number}} Logic for storing in cache and lockfile cache
|
130
|
+
*/
|
113
131
|
const parseCacheControl = (cacheControl, requestTime) => {
|
114
132
|
// When false resource is not stored in cache
|
115
133
|
let storeCache = true;
|
@@ -147,6 +165,10 @@ const areLockfileEntriesEqual = (a, b) => {
|
|
147
165
|
);
|
148
166
|
};
|
149
167
|
|
168
|
+
/**
|
169
|
+
* @param {LockfileEntry} entry lockfile entry
|
170
|
+
* @returns {`resolved: ${string}, integrity: ${string}, contentType: ${*}`} stringified entry
|
171
|
+
*/
|
150
172
|
const entryToString = entry => {
|
151
173
|
return `resolved: ${entry.resolved}, integrity: ${entry.integrity}, contentType: ${entry.contentType}`;
|
152
174
|
};
|
@@ -158,6 +180,10 @@ class Lockfile {
|
|
158
180
|
this.entries = new Map();
|
159
181
|
}
|
160
182
|
|
183
|
+
/**
|
184
|
+
* @param {string} content content of the lockfile
|
185
|
+
* @returns {Lockfile} lockfile
|
186
|
+
*/
|
161
187
|
static parse(content) {
|
162
188
|
// TODO handle merge conflicts
|
163
189
|
const data = JSON.parse(content);
|
@@ -180,6 +206,9 @@ class Lockfile {
|
|
180
206
|
return lockfile;
|
181
207
|
}
|
182
208
|
|
209
|
+
/**
|
210
|
+
* @returns {string} stringified lockfile
|
211
|
+
*/
|
183
212
|
toString() {
|
184
213
|
let str = "{\n";
|
185
214
|
const entries = Array.from(this.entries).sort(([a], [b]) =>
|
@@ -342,6 +371,7 @@ class HttpUriPlugin {
|
|
342
371
|
const fs = compilation.inputFileSystem;
|
343
372
|
const cache = compilation.getCache("webpack.HttpUriPlugin");
|
344
373
|
const logger = compilation.getLogger("webpack.HttpUriPlugin");
|
374
|
+
/** @type {string} */
|
345
375
|
const lockfileLocation =
|
346
376
|
this._lockfileLocation ||
|
347
377
|
join(
|
@@ -351,6 +381,7 @@ class HttpUriPlugin {
|
|
351
381
|
? `${toSafePath(compiler.name)}.webpack.lock`
|
352
382
|
: "webpack.lock"
|
353
383
|
);
|
384
|
+
/** @type {string | false} */
|
354
385
|
const cacheLocation =
|
355
386
|
this._cacheLocation !== undefined
|
356
387
|
? this._cacheLocation
|
@@ -364,6 +395,7 @@ class HttpUriPlugin {
|
|
364
395
|
|
365
396
|
let warnedAboutEol = false;
|
366
397
|
|
398
|
+
/** @type {Map<string, string>} */
|
367
399
|
const cacheKeyCache = new Map();
|
368
400
|
/**
|
369
401
|
* @param {string} url the url
|
@@ -447,6 +479,12 @@ class HttpUriPlugin {
|
|
447
479
|
|
448
480
|
/** @type {Map<string, LockfileEntry | "ignore" | "no-cache"> | undefined} */
|
449
481
|
let lockfileUpdates = undefined;
|
482
|
+
|
483
|
+
/**
|
484
|
+
* @param {Lockfile} lockfile lockfile instance
|
485
|
+
* @param {string} url url to store
|
486
|
+
* @param {LockfileEntry | "ignore" | "no-cache"} entry lockfile entry
|
487
|
+
*/
|
450
488
|
const storeLockEntry = (lockfile, url, entry) => {
|
451
489
|
const oldEntry = lockfile.entries.get(url);
|
452
490
|
if (lockfileUpdates === undefined) lockfileUpdates = new Map();
|
@@ -46,11 +46,13 @@ Technically any value can be used.
|
|
46
46
|
/**
|
47
47
|
* @typedef {Object} ObjectSerializerContext
|
48
48
|
* @property {function(any): void} write
|
49
|
+
* @property {function(any): void} setCircularReference
|
49
50
|
*/
|
50
51
|
|
51
52
|
/**
|
52
53
|
* @typedef {Object} ObjectDeserializerContext
|
53
54
|
* @property {function(): any} read
|
55
|
+
* @property {function(any): void} setCircularReference
|
54
56
|
*/
|
55
57
|
|
56
58
|
/**
|
@@ -25,6 +25,8 @@ const ConsumeSharedFallbackDependency = require("./ConsumeSharedFallbackDependen
|
|
25
25
|
/** @typedef {import("../RequestShortener")} RequestShortener */
|
26
26
|
/** @typedef {import("../ResolverFactory").ResolverWithOptions} ResolverWithOptions */
|
27
27
|
/** @typedef {import("../WebpackError")} WebpackError */
|
28
|
+
/** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
|
29
|
+
/** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
|
28
30
|
/** @typedef {import("../util/Hash")} Hash */
|
29
31
|
/** @typedef {import("../util/fs").InputFileSystem} InputFileSystem */
|
30
32
|
/** @typedef {import("../util/semver").SemVerRange} SemVerRange */
|
@@ -230,12 +232,18 @@ class ConsumeSharedModule extends Module {
|
|
230
232
|
};
|
231
233
|
}
|
232
234
|
|
235
|
+
/**
|
236
|
+
* @param {ObjectSerializerContext} context context
|
237
|
+
*/
|
233
238
|
serialize(context) {
|
234
239
|
const { write } = context;
|
235
240
|
write(this.options);
|
236
241
|
super.serialize(context);
|
237
242
|
}
|
238
243
|
|
244
|
+
/**
|
245
|
+
* @param {ObjectDeserializerContext} context context
|
246
|
+
*/
|
239
247
|
deserialize(context) {
|
240
248
|
const { read } = context;
|
241
249
|
this.options = read();
|
@@ -119,8 +119,7 @@ class ConsumeSharedRuntimeModule extends RuntimeModule {
|
|
119
119
|
"scope, scopeName, key, requiredVersion",
|
120
120
|
[
|
121
121
|
"var version = findSingletonVersionKey(scope, key);",
|
122
|
-
"if (!satisfy(requiredVersion, version)) "
|
123
|
-
'typeof console !== "undefined" && console.warn && console.warn(getInvalidSingletonVersionMessage(scope, key, version, requiredVersion));',
|
122
|
+
"if (!satisfy(requiredVersion, version)) warn(getInvalidSingletonVersionMessage(scope, key, version, requiredVersion));",
|
124
123
|
"return get(scope[key][version]);"
|
125
124
|
]
|
126
125
|
)};`,
|
@@ -166,10 +165,17 @@ class ConsumeSharedRuntimeModule extends RuntimeModule {
|
|
166
165
|
"throw new Error(getInvalidVersionMessage(scope, scopeName, key, requiredVersion));"
|
167
166
|
]
|
168
167
|
)};`,
|
168
|
+
`var warn = ${
|
169
|
+
this.compilation.options.output.ignoreBrowserWarnings
|
170
|
+
? runtimeTemplate.basicFunction("", "")
|
171
|
+
: runtimeTemplate.basicFunction("msg", [
|
172
|
+
'if (typeof console !== "undefined" && console.warn) console.warn(msg);'
|
173
|
+
])
|
174
|
+
};`,
|
169
175
|
`var warnInvalidVersion = ${runtimeTemplate.basicFunction(
|
170
176
|
"scope, scopeName, key, requiredVersion",
|
171
177
|
[
|
172
|
-
|
178
|
+
"warn(getInvalidVersionMessage(scope, scopeName, key, requiredVersion));"
|
173
179
|
]
|
174
180
|
)};`,
|
175
181
|
`var get = ${runtimeTemplate.basicFunction("entry", [
|
@@ -8,6 +8,9 @@
|
|
8
8
|
const Dependency = require("../Dependency");
|
9
9
|
const makeSerializable = require("../util/makeSerializable");
|
10
10
|
|
11
|
+
/** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
|
12
|
+
/** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
|
13
|
+
|
11
14
|
class ProvideSharedDependency extends Dependency {
|
12
15
|
constructor(shareScope, name, version, request, eager) {
|
13
16
|
super();
|
@@ -31,6 +34,9 @@ class ProvideSharedDependency extends Dependency {
|
|
31
34
|
} @ ${this.version}${this.eager ? " (eager)" : ""}`;
|
32
35
|
}
|
33
36
|
|
37
|
+
/**
|
38
|
+
* @param {ObjectSerializerContext} context context
|
39
|
+
*/
|
34
40
|
serialize(context) {
|
35
41
|
context.write(this.shareScope);
|
36
42
|
context.write(this.name);
|
@@ -23,6 +23,8 @@ const ProvideForSharedDependency = require("./ProvideForSharedDependency");
|
|
23
23
|
/** @typedef {import("../RequestShortener")} RequestShortener */
|
24
24
|
/** @typedef {import("../ResolverFactory").ResolverWithOptions} ResolverWithOptions */
|
25
25
|
/** @typedef {import("../WebpackError")} WebpackError */
|
26
|
+
/** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
|
27
|
+
/** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
|
26
28
|
/** @typedef {import("../util/Hash")} Hash */
|
27
29
|
/** @typedef {import("../util/fs").InputFileSystem} InputFileSystem */
|
28
30
|
|
@@ -158,6 +160,9 @@ class ProvideSharedModule extends Module {
|
|
158
160
|
return { sources, data, runtimeRequirements };
|
159
161
|
}
|
160
162
|
|
163
|
+
/**
|
164
|
+
* @param {ObjectSerializerContext} context context
|
165
|
+
*/
|
161
166
|
serialize(context) {
|
162
167
|
const { write } = context;
|
163
168
|
write(this._shareScope);
|
@@ -77,10 +77,13 @@ class ShareRuntimeModule extends RuntimeModule {
|
|
77
77
|
`if(!${RuntimeGlobals.hasOwnProperty}(${RuntimeGlobals.shareScopeMap}, name)) ${RuntimeGlobals.shareScopeMap}[name] = {};`,
|
78
78
|
"// runs all init snippets from all modules reachable",
|
79
79
|
`var scope = ${RuntimeGlobals.shareScopeMap}[name];`,
|
80
|
-
`var warn = ${
|
81
|
-
|
82
|
-
|
83
|
-
|
80
|
+
`var warn = ${
|
81
|
+
this.compilation.options.output.ignoreBrowserWarnings
|
82
|
+
? runtimeTemplate.basicFunction("", "")
|
83
|
+
: runtimeTemplate.basicFunction("msg", [
|
84
|
+
'if (typeof console !== "undefined" && console.warn) console.warn(msg);'
|
85
|
+
])
|
86
|
+
};`,
|
84
87
|
`var uniqueName = ${JSON.stringify(uniqueName || undefined)};`,
|
85
88
|
`var register = ${runtimeTemplate.basicFunction(
|
86
89
|
"name, version, factory, eager",
|