webpack 5.80.0 → 5.81.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 (105) hide show
  1. package/lib/AsyncDependenciesBlock.js +8 -0
  2. package/lib/CodeGenerationResults.js +2 -2
  3. package/lib/Compilation.js +2 -2
  4. package/lib/ContextModule.js +8 -0
  5. package/lib/CssModule.js +137 -0
  6. package/lib/DefinePlugin.js +81 -44
  7. package/lib/DelegatedModule.js +5 -0
  8. package/lib/DependenciesBlock.js +8 -0
  9. package/lib/Dependency.js +8 -0
  10. package/lib/DllModule.js +8 -0
  11. package/lib/ExportsInfo.js +3 -0
  12. package/lib/ExternalModule.js +8 -0
  13. package/lib/FileSystemInfo.js +8 -0
  14. package/lib/LoaderOptionsPlugin.js +12 -2
  15. package/lib/Module.js +8 -0
  16. package/lib/ModuleBuildError.js +9 -0
  17. package/lib/ModuleError.js +9 -0
  18. package/lib/ModuleFilenameHelpers.js +113 -4
  19. package/lib/ModuleParseError.js +9 -0
  20. package/lib/ModuleTypeConstants.js +21 -0
  21. package/lib/ModuleWarning.js +9 -0
  22. package/lib/NormalModule.js +8 -0
  23. package/lib/NormalModuleFactory.js +15 -3
  24. package/lib/RawModule.js +8 -0
  25. package/lib/WebpackError.js +8 -0
  26. package/lib/asset/RawDataUrlModule.js +8 -0
  27. package/lib/cache/ResolverCachePlugin.js +3 -0
  28. package/lib/config/normalization.js +1 -0
  29. package/lib/container/ContainerEntryModule.js +5 -0
  30. package/lib/container/ContainerExposedDependency.js +9 -0
  31. package/lib/container/FallbackDependency.js +6 -0
  32. package/lib/container/FallbackModule.js +5 -0
  33. package/lib/container/RemoteModule.js +5 -0
  34. package/lib/css/CssModulesPlugin.js +91 -50
  35. package/lib/css/CssParser.js +132 -73
  36. package/lib/css/walkCssTokens.js +27 -47
  37. package/lib/dependencies/AMDDefineDependency.js +8 -0
  38. package/lib/dependencies/AMDRequireArrayDependency.js +8 -0
  39. package/lib/dependencies/AMDRequireContextDependency.js +9 -0
  40. package/lib/dependencies/AMDRequireDependency.js +8 -0
  41. package/lib/dependencies/CachedConstDependency.js +8 -0
  42. package/lib/dependencies/CommonJsDependencyHelpers.js +9 -0
  43. package/lib/dependencies/CommonJsExportRequireDependency.js +8 -0
  44. package/lib/dependencies/CommonJsExportsDependency.js +8 -0
  45. package/lib/dependencies/CommonJsExportsParserPlugin.js +65 -3
  46. package/lib/dependencies/CommonJsFullRequireDependency.js +8 -0
  47. package/lib/dependencies/CommonJsRequireContextDependency.js +9 -0
  48. package/lib/dependencies/CommonJsSelfReferenceDependency.js +8 -0
  49. package/lib/dependencies/ConstDependency.js +8 -0
  50. package/lib/dependencies/ContextDependency.js +8 -0
  51. package/lib/dependencies/ContextElementDependency.js +8 -0
  52. package/lib/dependencies/CreateScriptUrlDependency.js +8 -0
  53. package/lib/dependencies/CssExportDependency.js +8 -0
  54. package/lib/dependencies/CssImportDependency.js +52 -1
  55. package/lib/dependencies/CssLocalIdentifierDependency.js +8 -0
  56. package/lib/dependencies/CssSelfLocalIdentifierDependency.js +8 -0
  57. package/lib/dependencies/CssUrlDependency.js +8 -0
  58. package/lib/dependencies/DllEntryDependency.js +9 -0
  59. package/lib/dependencies/ExportsInfoDependency.js +5 -0
  60. package/lib/dependencies/HarmonyAcceptDependency.js +8 -0
  61. package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +8 -0
  62. package/lib/dependencies/HarmonyExportExpressionDependency.js +8 -0
  63. package/lib/dependencies/HarmonyExportHeaderDependency.js +8 -0
  64. package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +14 -0
  65. package/lib/dependencies/HarmonyExportSpecifierDependency.js +8 -0
  66. package/lib/dependencies/HarmonyImportDependency.js +8 -0
  67. package/lib/dependencies/HarmonyImportSpecifierDependency.js +8 -0
  68. package/lib/dependencies/ImportContextDependency.js +9 -0
  69. package/lib/dependencies/ImportDependency.js +8 -0
  70. package/lib/dependencies/JsonExportsDependency.js +8 -0
  71. package/lib/dependencies/LocalModuleDependency.js +8 -0
  72. package/lib/dependencies/ModuleDecoratorDependency.js +8 -0
  73. package/lib/dependencies/ModuleDependency.js +8 -0
  74. package/lib/dependencies/ProvidedDependency.js +8 -0
  75. package/lib/dependencies/PureExpressionDependency.js +8 -0
  76. package/lib/dependencies/RequireEnsureDependency.js +8 -0
  77. package/lib/dependencies/RequireHeaderDependency.js +5 -0
  78. package/lib/dependencies/RequireResolveContextDependency.js +9 -0
  79. package/lib/dependencies/RequireResolveHeaderDependency.js +5 -0
  80. package/lib/dependencies/RuntimeRequirementsDependency.js +8 -0
  81. package/lib/dependencies/StaticExportsDependency.js +8 -0
  82. package/lib/dependencies/URLDependency.js +8 -0
  83. package/lib/dependencies/UnsupportedDependency.js +8 -0
  84. package/lib/dependencies/WebAssemblyExportImportedDependency.js +8 -0
  85. package/lib/dependencies/WebAssemblyImportDependency.js +8 -0
  86. package/lib/dependencies/WorkerDependency.js +8 -0
  87. package/lib/index.js +1 -0
  88. package/lib/javascript/JavascriptParser.js +1 -1
  89. package/lib/optimize/RealContentHashPlugin.js +6 -0
  90. package/lib/runtime/AutoPublicPathRuntimeModule.js +6 -1
  91. package/lib/serialization/ObjectMiddleware.js +2 -0
  92. package/lib/sharing/ConsumeSharedModule.js +8 -0
  93. package/lib/sharing/ConsumeSharedRuntimeModule.js +9 -3
  94. package/lib/sharing/ProvideSharedDependency.js +6 -0
  95. package/lib/sharing/ProvideSharedModule.js +5 -0
  96. package/lib/sharing/ShareRuntimeModule.js +7 -4
  97. package/lib/util/LazySet.js +10 -2
  98. package/lib/util/MapHelpers.js +19 -5
  99. package/lib/util/binarySearchBounds.js +49 -0
  100. package/lib/util/internalSerializables.js +1 -0
  101. package/lib/util/semver.js +1 -1
  102. package/package.json +4 -5
  103. package/schemas/WebpackOptions.check.js +1 -1
  104. package/schemas/WebpackOptions.json +8 -0
  105. package/types.d.ts +55 -22
@@ -14,6 +14,8 @@ const NullDependency = require("./NullDependency");
14
14
  /** @typedef {import("../Dependency").UpdateHashContext} UpdateHashContext */
15
15
  /** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */
16
16
  /** @typedef {import("../ModuleGraph")} ModuleGraph */
17
+ /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
18
+ /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
17
19
  /** @typedef {import("../util/Hash")} Hash */
18
20
 
19
21
  class RuntimeRequirementsDependency extends NullDependency {
@@ -39,12 +41,18 @@ class RuntimeRequirementsDependency extends NullDependency {
39
41
  hash.update(this._hashUpdate);
40
42
  }
41
43
 
44
+ /**
45
+ * @param {ObjectSerializerContext} context context
46
+ */
42
47
  serialize(context) {
43
48
  const { write } = context;
44
49
  write(this.runtimeRequirements);
45
50
  super.serialize(context);
46
51
  }
47
52
 
53
+ /**
54
+ * @param {ObjectDeserializerContext} context context
55
+ */
48
56
  deserialize(context) {
49
57
  const { read } = context;
50
58
  this.runtimeRequirements = read();
@@ -13,6 +13,8 @@ const NullDependency = require("./NullDependency");
13
13
  /** @typedef {import("../Dependency").ExportsSpec} ExportsSpec */
14
14
  /** @typedef {import("../Dependency").UpdateHashContext} UpdateHashContext */
15
15
  /** @typedef {import("../ModuleGraph")} ModuleGraph */
16
+ /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
17
+ /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
16
18
  /** @typedef {import("../util/Hash")} Hash */
17
19
 
18
20
  class StaticExportsDependency extends NullDependency {
@@ -43,6 +45,9 @@ class StaticExportsDependency extends NullDependency {
43
45
  };
44
46
  }
45
47
 
48
+ /**
49
+ * @param {ObjectSerializerContext} context context
50
+ */
46
51
  serialize(context) {
47
52
  const { write } = context;
48
53
  write(this.exports);
@@ -50,6 +55,9 @@ class StaticExportsDependency extends NullDependency {
50
55
  super.serialize(context);
51
56
  }
52
57
 
58
+ /**
59
+ * @param {ObjectDeserializerContext} context context
60
+ */
53
61
  deserialize(context) {
54
62
  const { read } = context;
55
63
  this.exports = read();
@@ -22,6 +22,8 @@ const ModuleDependency = require("./ModuleDependency");
22
22
  /** @typedef {import("../ModuleGraph")} ModuleGraph */
23
23
  /** @typedef {import("../ModuleGraphConnection")} ModuleGraphConnection */
24
24
  /** @typedef {import("../ModuleGraphConnection").ConnectionState} ConnectionState */
25
+ /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
26
+ /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
25
27
  /** @typedef {import("../util/Hash")} Hash */
26
28
  /** @typedef {import("../util/runtime").RuntimeSpec} RuntimeSpec */
27
29
 
@@ -72,6 +74,9 @@ class URLDependency extends ModuleDependency {
72
74
  return new RawDataUrlModule("data:,", `ignored-asset`, `(ignored asset)`);
73
75
  }
74
76
 
77
+ /**
78
+ * @param {ObjectSerializerContext} context context
79
+ */
75
80
  serialize(context) {
76
81
  const { write } = context;
77
82
  write(this.outerRange);
@@ -80,6 +85,9 @@ class URLDependency extends ModuleDependency {
80
85
  super.serialize(context);
81
86
  }
82
87
 
88
+ /**
89
+ * @param {ObjectDeserializerContext} context context
90
+ */
83
91
  deserialize(context) {
84
92
  const { read } = context;
85
93
  this.outerRange = read();
@@ -11,6 +11,8 @@ const NullDependency = require("./NullDependency");
11
11
  /** @typedef {import("webpack-sources").ReplaceSource} ReplaceSource */
12
12
  /** @typedef {import("../Dependency")} Dependency */
13
13
  /** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */
14
+ /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
15
+ /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
14
16
 
15
17
  class UnsupportedDependency extends NullDependency {
16
18
  constructor(request, range) {
@@ -20,6 +22,9 @@ class UnsupportedDependency extends NullDependency {
20
22
  this.range = range;
21
23
  }
22
24
 
25
+ /**
26
+ * @param {ObjectSerializerContext} context context
27
+ */
23
28
  serialize(context) {
24
29
  const { write } = context;
25
30
 
@@ -29,6 +34,9 @@ class UnsupportedDependency extends NullDependency {
29
34
  super.serialize(context);
30
35
  }
31
36
 
37
+ /**
38
+ * @param {ObjectDeserializerContext} context context
39
+ */
32
40
  deserialize(context) {
33
41
  const { read } = context;
34
42
 
@@ -12,6 +12,8 @@ const ModuleDependency = require("./ModuleDependency");
12
12
  /** @typedef {import("../Dependency").ReferencedExport} ReferencedExport */
13
13
  /** @typedef {import("../Dependency").TRANSITIVE} TRANSITIVE */
14
14
  /** @typedef {import("../ModuleGraph")} ModuleGraph */
15
+ /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
16
+ /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
15
17
  /** @typedef {import("../util/runtime").RuntimeSpec} RuntimeSpec */
16
18
 
17
19
  class WebAssemblyExportImportedDependency extends ModuleDependency {
@@ -50,6 +52,9 @@ class WebAssemblyExportImportedDependency extends ModuleDependency {
50
52
  return "wasm";
51
53
  }
52
54
 
55
+ /**
56
+ * @param {ObjectSerializerContext} context context
57
+ */
53
58
  serialize(context) {
54
59
  const { write } = context;
55
60
 
@@ -60,6 +65,9 @@ class WebAssemblyExportImportedDependency extends ModuleDependency {
60
65
  super.serialize(context);
61
66
  }
62
67
 
68
+ /**
69
+ * @param {ObjectDeserializerContext} context context
70
+ */
63
71
  deserialize(context) {
64
72
  const { read } = context;
65
73
 
@@ -13,6 +13,8 @@ const ModuleDependency = require("./ModuleDependency");
13
13
  /** @typedef {import("../Dependency").ReferencedExport} ReferencedExport */
14
14
  /** @typedef {import("../ModuleGraph")} ModuleGraph */
15
15
  /** @typedef {import("../WebpackError")} WebpackError */
16
+ /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
17
+ /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
16
18
  /** @typedef {import("../util/runtime").RuntimeSpec} RuntimeSpec */
17
19
 
18
20
  class WebAssemblyImportDependency extends ModuleDependency {
@@ -71,6 +73,9 @@ class WebAssemblyImportDependency extends ModuleDependency {
71
73
  }
72
74
  }
73
75
 
76
+ /**
77
+ * @param {ObjectSerializerContext} context context
78
+ */
74
79
  serialize(context) {
75
80
  const { write } = context;
76
81
 
@@ -81,6 +86,9 @@ class WebAssemblyImportDependency extends ModuleDependency {
81
86
  super.serialize(context);
82
87
  }
83
88
 
89
+ /**
90
+ * @param {ObjectDeserializerContext} context context
91
+ */
84
92
  deserialize(context) {
85
93
  const { read } = context;
86
94
 
@@ -18,6 +18,8 @@ const ModuleDependency = require("./ModuleDependency");
18
18
  /** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */
19
19
  /** @typedef {import("../Entrypoint")} Entrypoint */
20
20
  /** @typedef {import("../ModuleGraph")} ModuleGraph */
21
+ /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
22
+ /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
21
23
  /** @typedef {import("../util/Hash")} Hash */
22
24
  /** @typedef {import("../util/runtime").RuntimeSpec} RuntimeSpec */
23
25
 
@@ -68,12 +70,18 @@ class WorkerDependency extends ModuleDependency {
68
70
  hash.update(this._hashUpdate);
69
71
  }
70
72
 
73
+ /**
74
+ * @param {ObjectSerializerContext} context context
75
+ */
71
76
  serialize(context) {
72
77
  const { write } = context;
73
78
  write(this.options);
74
79
  super.serialize(context);
75
80
  }
76
81
 
82
+ /**
83
+ * @param {ObjectDeserializerContext} context context
84
+ */
77
85
  deserialize(context) {
78
86
  const { read } = context;
79
87
  this.options = read();
package/lib/index.js CHANGED
@@ -18,6 +18,7 @@ const memoize = require("./util/memoize");
18
18
  /** @typedef {import("../declarations/WebpackOptions").Externals} Externals */
19
19
  /** @typedef {import("../declarations/WebpackOptions").FileCacheOptions} FileCacheOptions */
20
20
  /** @typedef {import("../declarations/WebpackOptions").LibraryOptions} LibraryOptions */
21
+ /** @typedef {import("../declarations/WebpackOptions").MemoryCacheOptions} MemoryCacheOptions */
21
22
  /** @typedef {import("../declarations/WebpackOptions").ModuleOptions} ModuleOptions */
22
23
  /** @typedef {import("../declarations/WebpackOptions").ResolveOptions} ResolveOptions */
23
24
  /** @typedef {import("../declarations/WebpackOptions").RuleSetCondition} RuleSetCondition */
@@ -2482,7 +2482,7 @@ class JavascriptParser extends Parser {
2482
2482
  walkFunctionExpression(expression) {
2483
2483
  const wasTopLevel = this.scope.topLevelScope;
2484
2484
  this.scope.topLevelScope = false;
2485
- const scopeParams = expression.params;
2485
+ const scopeParams = [...expression.params];
2486
2486
 
2487
2487
  // Add function name in scope for recursive calls
2488
2488
  if (expression.id) {
@@ -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
  ]),
@@ -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",
@@ -87,7 +87,7 @@ class LazySet {
87
87
 
88
88
  /**
89
89
  * @param {T} item an item
90
- * @returns {this} itself
90
+ * @returns {LazySet<T>} itself
91
91
  */
92
92
  add(item) {
93
93
  this._set.add(item);
@@ -96,7 +96,7 @@ class LazySet {
96
96
 
97
97
  /**
98
98
  * @param {Iterable<T> | LazySet<T>} iterable a immutable iterable or another immutable LazySet which will eventually be merged into the Set
99
- * @returns {this} itself
99
+ * @returns {LazySet<T>} itself
100
100
  */
101
101
  addAll(iterable) {
102
102
  if (this._deopt) {
@@ -187,12 +187,20 @@ class LazySet {
187
187
  return "LazySet";
188
188
  }
189
189
 
190
+ /**
191
+ * @param {import("../serialization/ObjectMiddleware").ObjectSerializerContext} context context
192
+ */
190
193
  serialize({ write }) {
191
194
  if (this._needMerge) this._merge();
192
195
  write(this._set.size);
193
196
  for (const item of this._set) write(item);
194
197
  }
195
198
 
199
+ /**
200
+ * @template T
201
+ * @param {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} context context
202
+ * @returns {LazySet<T>} lazy set
203
+ */
196
204
  static deserialize({ read }) {
197
205
  const count = read();
198
206
  const items = [];
@@ -6,16 +6,30 @@
6
6
  "use strict";
7
7
 
8
8
  /**
9
+ * getOrInsert is a helper function for maps that allows you to get a value
10
+ * from a map if it exists, or insert a new value if it doesn't. If it value doesn't
11
+ * exist, it will be computed by the provided function.
12
+ *
9
13
  * @template K
10
14
  * @template V
11
- * @param {Map<K, V>} map a map
12
- * @param {K} key the key
13
- * @param {function(): V} computer compute value
14
- * @returns {V} value
15
+ * @param {Map<K, V>} map The map object to check
16
+ * @param {K} key The key to check
17
+ * @param {function(): V} computer function which will compute the value if it doesn't exist
18
+ * @returns {V} The value from the map, or the computed value
19
+ *
20
+ * @example
21
+ * ```js
22
+ * const map = new Map();
23
+ * const value = getOrInsert(map, "key", () => "value");
24
+ * console.log(value); // "value"
25
+ * ```
15
26
  */
16
- exports.provide = (map, key, computer) => {
27
+ exports.getOrInsert = (map, key, computer) => {
28
+ // Grab key from map
17
29
  const value = map.get(key);
30
+ // If the value already exists, return it
18
31
  if (value !== undefined) return value;
32
+ // Otherwise compute the value, set it in the map, and return it
19
33
  const newValue = computer();
20
34
  map.set(key, newValue);
21
35
  return newValue;
@@ -8,6 +8,28 @@
8
8
  /* cspell:disable-next-line */
9
9
  // Refactor: Peter Somogyvari @petermetz
10
10
 
11
+ /** @typedef {">=" | "<=" | "<" | ">" | "-" } BinarySearchPredicate */
12
+ /** @typedef {"GE" | "GT" | "LT" | "LE" | "EQ" } SearchPredicateSuffix */
13
+
14
+ /**
15
+ * Helper function for compiling binary search functions.
16
+ *
17
+ * The generated code uses a while loop to repeatedly divide the search interval
18
+ * in half until the desired element is found, or the search interval is empty.
19
+ *
20
+ * The following is an example of a generated function for calling `compileSearch("P", "c(x,y)<=0", true, ["y", "c"], false)`:
21
+ *
22
+ * ```js
23
+ * function P(a,l,h,y,c){var i=l-1;while(l<=h){var m=(l+h)>>>1,x=a[m];if(c(x,y)<=0){i=m;l=m+1}else{h=m-1}}return i};
24
+ * ```
25
+ *
26
+ * @param {string} funcName The name of the function to be compiled.
27
+ * @param {string} predicate The predicate / comparison operator to be used in the binary search.
28
+ * @param {boolean} reversed Whether the search should be reversed.
29
+ * @param {string[]} extraArgs Extra arguments to be passed to the function.
30
+ * @param {boolean=} earlyOut Whether the search should return as soon as a match is found.
31
+ * @returns {string} The compiled binary search function.
32
+ */
11
33
  const compileSearch = (funcName, predicate, reversed, extraArgs, earlyOut) => {
12
34
  const code = [
13
35
  "function ",
@@ -43,6 +65,18 @@ const compileSearch = (funcName, predicate, reversed, extraArgs, earlyOut) => {
43
65
  return code.join("");
44
66
  };
45
67
 
68
+ /**
69
+ * This helper functions generate code for two binary search functions:
70
+ * A(): Performs a binary search on an array using the comparison operator specified.
71
+ * P(): Performs a binary search on an array using a _custom comparison function_
72
+ * `c(x,y)` **and** comparison operator specified by `predicate`.
73
+ *
74
+ * @param {BinarySearchPredicate} predicate The predicate / comparison operator to be used in the binary search.
75
+ * @param {boolean} reversed Whether the search should be reversed.
76
+ * @param {SearchPredicateSuffix} suffix The suffix to be used in the function name.
77
+ * @param {boolean=} earlyOut Whether the search should return as soon as a match is found.
78
+ * @returns {function} The compiled binary search function.
79
+ */
46
80
  const compileBoundsSearch = (predicate, reversed, suffix, earlyOut) => {
47
81
  const arg1 = compileSearch(
48
82
  "A",
@@ -77,6 +111,21 @@ return dispatchBinarySearch";
77
111
  return result();
78
112
  };
79
113
 
114
+ /**
115
+ * These functions are used to perform binary searches on arrays.
116
+ *
117
+ * @example
118
+ * ```js
119
+ * const { gt, le} = require("./binarySearchBounds");
120
+ * const arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];
121
+ *
122
+ * // Find the index of the first element greater than 5
123
+ * const index1 = gt(arr, 5); // index1 === 3
124
+ *
125
+ * // Find the index of the first element less than or equal to 5
126
+ * const index2 = le(arr, 5); // index2 === 4
127
+ * ```
128
+ */
80
129
  module.exports = {
81
130
  ge: compileBoundsSearch(">=", false, "GE"),
82
131
  gt: compileBoundsSearch(">", false, "GT"),
@@ -189,6 +189,7 @@ module.exports = {
189
189
  ModuleParseError: () => require("../ModuleParseError"),
190
190
  ModuleWarning: () => require("../ModuleWarning"),
191
191
  NormalModule: () => require("../NormalModule"),
192
+ CssModule: () => require("../CssModule"),
192
193
  RawDataUrlModule: () => require("../asset/RawDataUrlModule"),
193
194
  RawModule: () => require("../RawModule"),
194
195
  "sharing/ConsumeSharedModule": () =>
@@ -288,7 +288,7 @@ const satisfy = (range, version) => {
288
288
  if (0 in range) {
289
289
  // @ts-expect-error
290
290
  version = parseVersion(version);
291
- var fixCount = range[0];
291
+ var fixCount = /** @type {number} */ (range[0]);
292
292
  // when negated is set it swill set for < instead of >=
293
293
  var negated = fixCount < 0;
294
294
  if (negated) fixCount = -fixCount - 1;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "webpack",
3
- "version": "5.80.0",
3
+ "version": "5.81.0",
4
4
  "author": "Tobias Koppers @sokra",
5
5
  "description": "Packs CommonJs/AMD modules for the browser. Allows to split your codebase into multiple bundles, which can be loaded on demand. Support loaders to preprocess files, i.e. json, jsx, es7, css, less, ... and your custom stuff.",
6
6
  "license": "MIT",
@@ -56,7 +56,7 @@
56
56
  "eslint": "^8.38.0",
57
57
  "eslint-config-prettier": "^8.1.0",
58
58
  "eslint-plugin-jest": "^27.2.1",
59
- "eslint-plugin-jsdoc": "^41.1.1",
59
+ "eslint-plugin-jsdoc": "^43.0.5",
60
60
  "eslint-plugin-node": "^11.0.0",
61
61
  "eslint-plugin-prettier": "^4.2.1",
62
62
  "file-loader": "^6.0.0",
@@ -76,7 +76,6 @@
76
76
  "less": "^4.0.0",
77
77
  "less-loader": "^8.0.0",
78
78
  "lint-staged": "^13.2.1",
79
- "loader-utils": "^2.0.3",
80
79
  "lodash": "^4.17.19",
81
80
  "lodash-es": "^4.17.15",
82
81
  "memfs": "^3.5.0",
@@ -96,11 +95,11 @@
96
95
  "simple-git": "^3.17.0",
97
96
  "strip-ansi": "^6.0.0",
98
97
  "style-loader": "^2.0.0",
99
- "terser": "^5.16.9",
98
+ "terser": "^5.17.0",
100
99
  "toml": "^3.0.0",
101
100
  "tooling": "webpack/tooling#v1.22.1",
102
101
  "ts-loader": "^9.4.2",
103
- "typescript": "^4.8.4",
102
+ "typescript": "^5.0.4",
104
103
  "url-loader": "^4.1.0",
105
104
  "wast-loader": "^1.11.5",
106
105
  "webassembly-feature": "1.3.0",