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.

Files changed (135) hide show
  1. package/bin/webpack.js +13 -2
  2. package/lib/AsyncDependenciesBlock.js +8 -0
  3. package/lib/CodeGenerationResults.js +2 -2
  4. package/lib/Compilation.js +4 -2
  5. package/lib/ContextModule.js +8 -0
  6. package/lib/CssModule.js +169 -0
  7. package/lib/DefinePlugin.js +81 -44
  8. package/lib/DelegatedModule.js +5 -0
  9. package/lib/DependenciesBlock.js +8 -0
  10. package/lib/Dependency.js +8 -0
  11. package/lib/DllModule.js +8 -0
  12. package/lib/ExportsInfo.js +3 -0
  13. package/lib/ExternalModule.js +8 -0
  14. package/lib/FileSystemInfo.js +8 -0
  15. package/lib/LoaderOptionsPlugin.js +12 -2
  16. package/lib/Module.js +8 -0
  17. package/lib/ModuleBuildError.js +9 -0
  18. package/lib/ModuleError.js +9 -0
  19. package/lib/ModuleFilenameHelpers.js +113 -4
  20. package/lib/ModuleParseError.js +9 -0
  21. package/lib/ModuleTypeConstants.js +21 -0
  22. package/lib/ModuleWarning.js +9 -0
  23. package/lib/NormalModule.js +8 -0
  24. package/lib/NormalModuleFactory.js +15 -3
  25. package/lib/RawModule.js +8 -0
  26. package/lib/WebpackError.js +8 -0
  27. package/lib/WebpackOptionsApply.js +33 -40
  28. package/lib/asset/RawDataUrlModule.js +8 -0
  29. package/lib/cache/MemoryWithGcCachePlugin.js +2 -0
  30. package/lib/cache/ResolverCachePlugin.js +3 -0
  31. package/lib/config/defaults.js +1 -0
  32. package/lib/config/normalization.js +1 -0
  33. package/lib/container/ContainerEntryModule.js +5 -0
  34. package/lib/container/ContainerExposedDependency.js +9 -0
  35. package/lib/container/FallbackDependency.js +6 -0
  36. package/lib/container/FallbackModule.js +5 -0
  37. package/lib/container/RemoteModule.js +5 -0
  38. package/lib/css/CssGenerator.js +4 -0
  39. package/lib/css/CssLoadingRuntimeModule.js +9 -2
  40. package/lib/css/CssModulesPlugin.js +201 -57
  41. package/lib/css/CssParser.js +270 -147
  42. package/lib/css/walkCssTokens.js +121 -65
  43. package/lib/debug/ProfilingPlugin.js +2 -0
  44. package/lib/dependencies/AMDDefineDependency.js +8 -0
  45. package/lib/dependencies/AMDRequireArrayDependency.js +8 -0
  46. package/lib/dependencies/AMDRequireContextDependency.js +9 -0
  47. package/lib/dependencies/AMDRequireDependency.js +8 -0
  48. package/lib/dependencies/CachedConstDependency.js +8 -0
  49. package/lib/dependencies/CommonJsDependencyHelpers.js +9 -0
  50. package/lib/dependencies/CommonJsExportRequireDependency.js +8 -0
  51. package/lib/dependencies/CommonJsExportsDependency.js +8 -0
  52. package/lib/dependencies/CommonJsExportsParserPlugin.js +65 -3
  53. package/lib/dependencies/CommonJsFullRequireDependency.js +8 -0
  54. package/lib/dependencies/CommonJsRequireContextDependency.js +9 -0
  55. package/lib/dependencies/CommonJsSelfReferenceDependency.js +8 -0
  56. package/lib/dependencies/ConstDependency.js +8 -0
  57. package/lib/dependencies/ContextDependency.js +8 -0
  58. package/lib/dependencies/ContextElementDependency.js +8 -0
  59. package/lib/dependencies/CreateScriptUrlDependency.js +8 -0
  60. package/lib/dependencies/CssExportDependency.js +8 -0
  61. package/lib/dependencies/CssImportDependency.js +52 -1
  62. package/lib/dependencies/CssLocalIdentifierDependency.js +8 -0
  63. package/lib/dependencies/CssSelfLocalIdentifierDependency.js +8 -0
  64. package/lib/dependencies/CssUrlDependency.js +8 -0
  65. package/lib/dependencies/DllEntryDependency.js +9 -0
  66. package/lib/dependencies/ExportsInfoDependency.js +5 -0
  67. package/lib/dependencies/HarmonyAcceptDependency.js +8 -0
  68. package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +8 -0
  69. package/lib/dependencies/HarmonyExportExpressionDependency.js +8 -0
  70. package/lib/dependencies/HarmonyExportHeaderDependency.js +8 -0
  71. package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +14 -0
  72. package/lib/dependencies/HarmonyExportSpecifierDependency.js +8 -0
  73. package/lib/dependencies/HarmonyImportDependency.js +8 -0
  74. package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +1 -0
  75. package/lib/dependencies/HarmonyImportSpecifierDependency.js +8 -0
  76. package/lib/dependencies/ImportContextDependency.js +9 -0
  77. package/lib/dependencies/ImportDependency.js +8 -0
  78. package/lib/dependencies/JsonExportsDependency.js +8 -0
  79. package/lib/dependencies/LocalModuleDependency.js +8 -0
  80. package/lib/dependencies/ModuleDecoratorDependency.js +8 -0
  81. package/lib/dependencies/ModuleDependency.js +8 -0
  82. package/lib/dependencies/ProvidedDependency.js +8 -0
  83. package/lib/dependencies/PureExpressionDependency.js +8 -0
  84. package/lib/dependencies/RequireEnsureDependency.js +8 -0
  85. package/lib/dependencies/RequireHeaderDependency.js +5 -0
  86. package/lib/dependencies/RequireResolveContextDependency.js +9 -0
  87. package/lib/dependencies/RequireResolveHeaderDependency.js +5 -0
  88. package/lib/dependencies/RuntimeRequirementsDependency.js +8 -0
  89. package/lib/dependencies/StaticExportsDependency.js +8 -0
  90. package/lib/dependencies/URLDependency.js +8 -0
  91. package/lib/dependencies/UnsupportedDependency.js +8 -0
  92. package/lib/dependencies/WebAssemblyExportImportedDependency.js +8 -0
  93. package/lib/dependencies/WebAssemblyImportDependency.js +8 -0
  94. package/lib/dependencies/WorkerDependency.js +8 -0
  95. package/lib/index.js +1 -0
  96. package/lib/javascript/BasicEvaluatedExpression.js +108 -1
  97. package/lib/javascript/JavascriptParser.js +133 -12
  98. package/lib/json/JsonData.js +25 -0
  99. package/lib/json/JsonGenerator.js +15 -3
  100. package/lib/json/JsonModulesPlugin.js +1 -0
  101. package/lib/json/JsonParser.js +2 -1
  102. package/lib/library/ModuleLibraryPlugin.js +2 -1
  103. package/lib/optimize/RealContentHashPlugin.js +6 -0
  104. package/lib/runtime/AutoPublicPathRuntimeModule.js +6 -1
  105. package/lib/runtime/GetChunkFilenameRuntimeModule.js +4 -0
  106. package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +22 -3
  107. package/lib/schemes/DataUriPlugin.js +4 -0
  108. package/lib/schemes/HttpUriPlugin.js +38 -0
  109. package/lib/serialization/ObjectMiddleware.js +2 -0
  110. package/lib/sharing/ConsumeSharedModule.js +8 -0
  111. package/lib/sharing/ConsumeSharedRuntimeModule.js +9 -3
  112. package/lib/sharing/ProvideSharedDependency.js +6 -0
  113. package/lib/sharing/ProvideSharedModule.js +5 -0
  114. package/lib/sharing/ShareRuntimeModule.js +7 -4
  115. package/lib/sharing/utils.js +293 -7
  116. package/lib/stats/DefaultStatsPrinterPlugin.js +25 -0
  117. package/lib/util/LazySet.js +10 -2
  118. package/lib/util/MapHelpers.js +19 -5
  119. package/lib/util/StackedCacheMap.js +6 -0
  120. package/lib/util/StringXor.js +51 -0
  121. package/lib/util/binarySearchBounds.js +49 -0
  122. package/lib/util/compileBooleanMatcher.js +31 -0
  123. package/lib/util/deprecation.js +8 -0
  124. package/lib/util/identifier.js +4 -0
  125. package/lib/util/internalSerializables.js +1 -0
  126. package/lib/util/numberHash.js +75 -21
  127. package/lib/util/propertyAccess.js +5 -0
  128. package/lib/util/semver.js +1 -1
  129. package/lib/wasm/EnableWasmLoadingPlugin.js +4 -0
  130. package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +1 -0
  131. package/lib/wasm-async/AsyncWebAssemblyParser.js +1 -1
  132. package/package.json +4 -5
  133. package/schemas/WebpackOptions.check.js +1 -1
  134. package/schemas/WebpackOptions.json +33 -0
  135. package/types.d.ts +176 -48
@@ -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
- exportInfo.getUsedName(exportInfo.name, chunk.runtime)
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) scriptUrl = scripts[scripts.length - 1].src"
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
- `policy = trustedTypes.createPolicy(${JSON.stringify(
62
- trustedTypes.policyName
63
- )}, policy);`
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
- 'typeof console !== "undefined" && console.warn && console.warn(getInvalidVersionMessage(scope, scopeName, key, requiredVersion));'
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 = ${runtimeTemplate.returningFunction(
81
- 'typeof console !== "undefined" && console.warn && console.warn(msg)',
82
- "msg"
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",