webpack 5.78.0 → 5.80.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 (35) hide show
  1. package/README.md +3 -0
  2. package/lib/CompatibilityPlugin.js +27 -10
  3. package/lib/Compiler.js +7 -4
  4. package/lib/DefinePlugin.js +18 -6
  5. package/lib/LibManifestPlugin.js +2 -1
  6. package/lib/NormalModuleFactory.js +11 -1
  7. package/lib/NormalModuleReplacementPlugin.js +1 -1
  8. package/lib/WarnCaseSensitiveModulesPlugin.js +12 -0
  9. package/lib/asset/AssetGenerator.js +11 -3
  10. package/lib/css/CssLoadingRuntimeModule.js +1 -1
  11. package/lib/css/CssParser.js +113 -18
  12. package/lib/css/walkCssTokens.js +134 -74
  13. package/lib/dependencies/CssUrlDependency.js +30 -18
  14. package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +4 -0
  15. package/lib/dependencies/HarmonyImportSpecifierDependency.js +28 -3
  16. package/lib/dependencies/ImportMetaPlugin.js +56 -26
  17. package/lib/dependencies/ImportParserPlugin.js +17 -1
  18. package/lib/ids/OccurrenceModuleIdsPlugin.js +1 -1
  19. package/lib/index.js +5 -0
  20. package/lib/javascript/JavascriptParser.js +99 -1
  21. package/lib/schemes/DataUriPlugin.js +12 -3
  22. package/lib/stats/DefaultStatsFactoryPlugin.js +98 -25
  23. package/lib/stats/DefaultStatsPresetPlugin.js +9 -0
  24. package/lib/stats/DefaultStatsPrinterPlugin.js +18 -0
  25. package/lib/util/hash/md4.js +2 -2
  26. package/lib/util/hash/xxhash64.js +1 -1
  27. package/lib/webpack.js +1 -1
  28. package/package.json +54 -51
  29. package/schemas/WebpackOptions.check.js +1 -1
  30. package/schemas/WebpackOptions.json +8 -0
  31. package/schemas/plugins/ProgressPlugin.check.js +1 -1
  32. package/schemas/plugins/SourceMapDevToolPlugin.check.js +1 -1
  33. package/schemas/plugins/container/ModuleFederationPlugin.check.js +1 -1
  34. package/schemas/plugins/sharing/SharePlugin.check.js +1 -1
  35. package/types.d.ts +195 -139
@@ -27,6 +27,8 @@ class ImportParserPlugin {
27
27
  }
28
28
 
29
29
  apply(parser) {
30
+ const exportsFromEnumerable = enumerable =>
31
+ Array.from(enumerable, e => [e]);
30
32
  parser.hooks.importCall.tap("ImportParserPlugin", expr => {
31
33
  const param = parser.evaluateExpression(expr.source);
32
34
 
@@ -184,7 +186,7 @@ class ImportParserPlugin {
184
186
  if (typeof importOptions.webpackExports === "string") {
185
187
  exports = [[importOptions.webpackExports]];
186
188
  } else {
187
- exports = Array.from(importOptions.webpackExports, e => [e]);
189
+ exports = exportsFromEnumerable(importOptions.webpackExports);
188
190
  }
189
191
  }
190
192
  }
@@ -205,6 +207,20 @@ class ImportParserPlugin {
205
207
  mode = "lazy";
206
208
  }
207
209
 
210
+ const referencedPropertiesInDestructuring =
211
+ parser.destructuringAssignmentPropertiesFor(expr);
212
+ if (referencedPropertiesInDestructuring) {
213
+ if (exports) {
214
+ parser.state.module.addWarning(
215
+ new UnsupportedFeatureWarning(
216
+ `\`webpackExports\` could not be used with destructuring assignment.`,
217
+ expr.loc
218
+ )
219
+ );
220
+ }
221
+ exports = exportsFromEnumerable(referencedPropertiesInDestructuring);
222
+ }
223
+
208
224
  if (param.isString()) {
209
225
  if (mode === "eager") {
210
226
  const dep = new ImportEagerDependency(
@@ -81,7 +81,7 @@ class OccurrenceModuleIdsPlugin {
81
81
  ] of moduleGraph.getIncomingConnectionsByOriginModule(module)) {
82
82
  if (!originModule) continue;
83
83
  if (!connections.some(c => c.isTargetActive(undefined))) continue;
84
- sum += initialChunkChunkMap.get(originModule);
84
+ sum += initialChunkChunkMap.get(originModule) || 0;
85
85
  }
86
86
  return sum;
87
87
  };
package/lib/index.js CHANGED
@@ -11,6 +11,11 @@ const memoize = require("./util/memoize");
11
11
  /** @typedef {import("../declarations/WebpackOptions").Entry} Entry */
12
12
  /** @typedef {import("../declarations/WebpackOptions").EntryNormalized} EntryNormalized */
13
13
  /** @typedef {import("../declarations/WebpackOptions").EntryObject} EntryObject */
14
+ /** @typedef {import("../declarations/WebpackOptions").ExternalItemFunctionData} ExternalItemFunctionData */
15
+ /** @typedef {import("../declarations/WebpackOptions").ExternalItemObjectKnown} ExternalItemObjectKnown */
16
+ /** @typedef {import("../declarations/WebpackOptions").ExternalItemObjectUnknown} ExternalItemObjectUnknown */
17
+ /** @typedef {import("../declarations/WebpackOptions").ExternalItemValue} ExternalItemValue */
18
+ /** @typedef {import("../declarations/WebpackOptions").Externals} Externals */
14
19
  /** @typedef {import("../declarations/WebpackOptions").FileCacheOptions} FileCacheOptions */
15
20
  /** @typedef {import("../declarations/WebpackOptions").LibraryOptions} LibraryOptions */
16
21
  /** @typedef {import("../declarations/WebpackOptions").ModuleOptions} ModuleOptions */
@@ -331,6 +331,8 @@ class JavascriptParser extends Parser {
331
331
  /** @type {(StatementNode|ExpressionNode)[]} */
332
332
  this.statementPath = undefined;
333
333
  this.prevStatement = undefined;
334
+ /** @type {WeakMap<ExpressionNode, Set<string>>} */
335
+ this.destructuringAssignmentProperties = undefined;
334
336
  this.currentTagData = undefined;
335
337
  this._initializeEvaluating();
336
338
  }
@@ -1411,6 +1413,15 @@ class JavascriptParser extends Parser {
1411
1413
  });
1412
1414
  }
1413
1415
 
1416
+ /**
1417
+ * @param {ExpressionNode} node node
1418
+ * @returns {Set<string>|undefined} destructured identifiers
1419
+ */
1420
+ destructuringAssignmentPropertiesFor(node) {
1421
+ if (!this.destructuringAssignmentProperties) return undefined;
1422
+ return this.destructuringAssignmentProperties.get(node);
1423
+ }
1424
+
1414
1425
  getRenameIdentifier(expr) {
1415
1426
  const result = this.evaluateExpression(expr);
1416
1427
  if (result.isIdentifier()) {
@@ -1557,6 +1568,8 @@ class JavascriptParser extends Parser {
1557
1568
  case "ClassDeclaration":
1558
1569
  this.blockPreWalkClassDeclaration(statement);
1559
1570
  break;
1571
+ case "ExpressionStatement":
1572
+ this.blockPreWalkExpressionStatement(statement);
1560
1573
  }
1561
1574
  this.prevStatement = this.statementPath.pop();
1562
1575
  }
@@ -1730,7 +1743,7 @@ class JavascriptParser extends Parser {
1730
1743
  preWalkTryStatement(statement) {
1731
1744
  this.preWalkStatement(statement.block);
1732
1745
  if (statement.handler) this.preWalkCatchClause(statement.handler);
1733
- if (statement.finializer) this.preWalkStatement(statement.finializer);
1746
+ if (statement.finalizer) this.preWalkStatement(statement.finalizer);
1734
1747
  }
1735
1748
 
1736
1749
  walkTryStatement(statement) {
@@ -1890,6 +1903,42 @@ class JavascriptParser extends Parser {
1890
1903
  this.scope.topLevelScope = wasTopLevel;
1891
1904
  }
1892
1905
 
1906
+ blockPreWalkExpressionStatement(statement) {
1907
+ const expression = statement.expression;
1908
+ switch (expression.type) {
1909
+ case "AssignmentExpression":
1910
+ this.preWalkAssignmentExpression(expression);
1911
+ }
1912
+ }
1913
+
1914
+ preWalkAssignmentExpression(expression) {
1915
+ if (
1916
+ expression.left.type !== "ObjectPattern" ||
1917
+ !this.destructuringAssignmentProperties
1918
+ )
1919
+ return;
1920
+ const keys = this._preWalkObjectPattern(expression.left);
1921
+ if (!keys) return;
1922
+
1923
+ // check multiple assignments
1924
+ if (this.destructuringAssignmentProperties.has(expression)) {
1925
+ const set = this.destructuringAssignmentProperties.get(expression);
1926
+ this.destructuringAssignmentProperties.delete(expression);
1927
+ for (const id of set) keys.add(id);
1928
+ }
1929
+
1930
+ this.destructuringAssignmentProperties.set(
1931
+ expression.right.type === "AwaitExpression"
1932
+ ? expression.right.argument
1933
+ : expression.right,
1934
+ keys
1935
+ );
1936
+
1937
+ if (expression.right.type === "AssignmentExpression") {
1938
+ this.preWalkAssignmentExpression(expression.right);
1939
+ }
1940
+ }
1941
+
1893
1942
  blockPreWalkImportDeclaration(statement) {
1894
1943
  const source = statement.source.value;
1895
1944
  this.hooks.import.call(statement, source);
@@ -2087,6 +2136,7 @@ class JavascriptParser extends Parser {
2087
2136
  for (const declarator of statement.declarations) {
2088
2137
  switch (declarator.type) {
2089
2138
  case "VariableDeclarator": {
2139
+ this.preWalkVariableDeclarator(declarator);
2090
2140
  if (!this.hooks.preDeclarator.call(declarator, statement)) {
2091
2141
  this.enterPattern(declarator.id, (name, decl) => {
2092
2142
  let hook = hookMap.get(name);
@@ -2104,6 +2154,52 @@ class JavascriptParser extends Parser {
2104
2154
  }
2105
2155
  }
2106
2156
 
2157
+ _preWalkObjectPattern(objectPattern) {
2158
+ const ids = new Set();
2159
+ const properties = objectPattern.properties;
2160
+ for (let i = 0; i < properties.length; i++) {
2161
+ const property = properties[i];
2162
+ if (property.type !== "Property") return;
2163
+ const key = property.key;
2164
+ if (key.type === "Identifier") {
2165
+ ids.add(key.name);
2166
+ } else {
2167
+ const id = this.evaluateExpression(key);
2168
+ const str = id.asString();
2169
+ if (str) {
2170
+ ids.add(str);
2171
+ } else {
2172
+ // could not evaluate key
2173
+ return;
2174
+ }
2175
+ }
2176
+ }
2177
+
2178
+ return ids;
2179
+ }
2180
+
2181
+ preWalkVariableDeclarator(declarator) {
2182
+ if (
2183
+ !declarator.init ||
2184
+ declarator.id.type !== "ObjectPattern" ||
2185
+ !this.destructuringAssignmentProperties
2186
+ )
2187
+ return;
2188
+ const keys = this._preWalkObjectPattern(declarator.id);
2189
+
2190
+ if (!keys) return;
2191
+ this.destructuringAssignmentProperties.set(
2192
+ declarator.init.type === "AwaitExpression"
2193
+ ? declarator.init.argument
2194
+ : declarator.init,
2195
+ keys
2196
+ );
2197
+
2198
+ if (declarator.init.type === "AssignmentExpression") {
2199
+ this.preWalkAssignmentExpression(declarator.init);
2200
+ }
2201
+ }
2202
+
2107
2203
  walkVariableDeclaration(statement) {
2108
2204
  for (const declarator of statement.declarations) {
2109
2205
  switch (declarator.type) {
@@ -3367,12 +3463,14 @@ class JavascriptParser extends Parser {
3367
3463
  this.statementPath = [];
3368
3464
  this.prevStatement = undefined;
3369
3465
  if (this.hooks.program.call(ast, comments) === undefined) {
3466
+ this.destructuringAssignmentProperties = new WeakMap();
3370
3467
  this.detectMode(ast.body);
3371
3468
  this.preWalkStatements(ast.body);
3372
3469
  this.prevStatement = undefined;
3373
3470
  this.blockPreWalkStatements(ast.body);
3374
3471
  this.prevStatement = undefined;
3375
3472
  this.walkStatements(ast.body);
3473
+ this.destructuringAssignmentProperties = undefined;
3376
3474
  }
3377
3475
  this.hooks.finish.call(ast, comments);
3378
3476
  this.scope = oldScope;
@@ -19,9 +19,18 @@ const decodeDataURI = uri => {
19
19
 
20
20
  const isBase64 = match[3];
21
21
  const body = match[4];
22
- return isBase64
23
- ? Buffer.from(body, "base64")
24
- : Buffer.from(decodeURIComponent(body), "ascii");
22
+
23
+ if (isBase64) {
24
+ return Buffer.from(body, "base64");
25
+ }
26
+
27
+ // CSS allows to use `data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg"><rect width="100%" height="100%" style="stroke: rgb(223,224,225); stroke-width: 2px; fill: none; stroke-dasharray: 6px 3px" /></svg>`
28
+ // so we return original body if we can't `decodeURIComponent`
29
+ try {
30
+ return Buffer.from(decodeURIComponent(body), "ascii");
31
+ } catch (_) {
32
+ return Buffer.from(body, "ascii");
33
+ }
25
34
  };
26
35
 
27
36
  class DataUriPlugin {
@@ -811,11 +811,32 @@ const SIMPLE_EXTRACTORS = {
811
811
  },
812
812
  errors: (object, compilation, context, options, factory) => {
813
813
  const { type, cachedGetErrors } = context;
814
- object.errors = factory.create(
814
+ const rawErrors = cachedGetErrors(compilation);
815
+ const factorizedErrors = factory.create(
815
816
  `${type}.errors`,
816
817
  cachedGetErrors(compilation),
817
818
  context
818
819
  );
820
+ let filtered = 0;
821
+ if (options.errorDetails === "auto" && rawErrors.length >= 3) {
822
+ filtered = rawErrors
823
+ .map(e => typeof e !== "string" && e.details)
824
+ .filter(Boolean).length;
825
+ }
826
+ if (
827
+ options.errorDetails === true ||
828
+ !Number.isFinite(options.errorsSpace)
829
+ ) {
830
+ object.errors = factorizedErrors;
831
+ if (filtered) object.filteredErrorDetailsCount = filtered;
832
+ return;
833
+ }
834
+ const [errors, filteredBySpace] = errorsSpaceLimit(
835
+ factorizedErrors,
836
+ options.errorsSpace
837
+ );
838
+ object.filteredErrorDetailsCount = filtered + filteredBySpace;
839
+ object.errors = errors;
819
840
  },
820
841
  errorsCount: (object, compilation, { cachedGetErrors }) => {
821
842
  object.errorsCount = countWithChildren(compilation, c =>
@@ -824,11 +845,31 @@ const SIMPLE_EXTRACTORS = {
824
845
  },
825
846
  warnings: (object, compilation, context, options, factory) => {
826
847
  const { type, cachedGetWarnings } = context;
827
- object.warnings = factory.create(
848
+ const rawWarnings = factory.create(
828
849
  `${type}.warnings`,
829
850
  cachedGetWarnings(compilation),
830
851
  context
831
852
  );
853
+ let filtered = 0;
854
+ if (options.errorDetails === "auto") {
855
+ filtered = cachedGetWarnings(compilation)
856
+ .map(e => typeof e !== "string" && e.details)
857
+ .filter(Boolean).length;
858
+ }
859
+ if (
860
+ options.errorDetails === true ||
861
+ !Number.isFinite(options.warningsSpace)
862
+ ) {
863
+ object.warnings = rawWarnings;
864
+ if (filtered) object.filteredWarningDetailsCount = filtered;
865
+ return;
866
+ }
867
+ const [warnings, filteredBySpace] = errorsSpaceLimit(
868
+ rawWarnings,
869
+ options.warningsSpace
870
+ );
871
+ object.filteredWarningDetailsCount = filtered + filteredBySpace;
872
+ object.warnings = warnings;
832
873
  },
833
874
  warningsCount: (
834
875
  object,
@@ -853,29 +894,6 @@ const SIMPLE_EXTRACTORS = {
853
894
  });
854
895
  });
855
896
  },
856
- errorDetails: (
857
- object,
858
- compilation,
859
- { cachedGetErrors, cachedGetWarnings },
860
- { errorDetails, errors, warnings }
861
- ) => {
862
- if (errorDetails === "auto") {
863
- if (warnings) {
864
- const warnings = cachedGetWarnings(compilation);
865
- object.filteredWarningDetailsCount = warnings
866
- .map(e => typeof e !== "string" && e.details)
867
- .filter(Boolean).length;
868
- }
869
- if (errors) {
870
- const errors = cachedGetErrors(compilation);
871
- if (errors.length >= 3) {
872
- object.filteredErrorDetailsCount = errors
873
- .map(e => typeof e !== "string" && e.details)
874
- .filter(Boolean).length;
875
- }
876
- }
877
- }
878
- },
879
897
  children: (object, compilation, context, options, factory) => {
880
898
  const { type } = context;
881
899
  object.children = factory.create(
@@ -1779,6 +1797,61 @@ const spaceLimited = (
1779
1797
  };
1780
1798
  };
1781
1799
 
1800
+ const errorsSpaceLimit = (errors, max) => {
1801
+ let filtered = 0;
1802
+ // Can not fit into limit
1803
+ // print only messages
1804
+ if (errors.length + 1 >= max)
1805
+ return [
1806
+ errors.map(error => {
1807
+ if (typeof error === "string" || !error.details) return error;
1808
+ filtered++;
1809
+ return { ...error, details: "" };
1810
+ }),
1811
+ filtered
1812
+ ];
1813
+ let fullLength = errors.length;
1814
+ let result = errors;
1815
+
1816
+ let i = 0;
1817
+ for (; i < errors.length; i++) {
1818
+ const error = errors[i];
1819
+ if (typeof error !== "string" && error.details) {
1820
+ const splitted = error.details.split("\n");
1821
+ const len = splitted.length;
1822
+ fullLength += len;
1823
+ if (fullLength > max) {
1824
+ result = i > 0 ? errors.slice(0, i) : [];
1825
+ const overLimit = fullLength - max + 1;
1826
+ const error = errors[i++];
1827
+ result.push({
1828
+ ...error,
1829
+ details: error.details.split("\n").slice(0, -overLimit).join("\n"),
1830
+ filteredDetails: overLimit
1831
+ });
1832
+ filtered = errors.length - i;
1833
+ for (; i < errors.length; i++) {
1834
+ const error = errors[i];
1835
+ if (typeof error === "string" || !error.details) result.push(error);
1836
+ result.push({ ...error, details: "" });
1837
+ }
1838
+ break;
1839
+ } else if (fullLength === max) {
1840
+ result = errors.slice(0, ++i);
1841
+ filtered = errors.length - i;
1842
+ for (; i < errors.length; i++) {
1843
+ const error = errors[i];
1844
+ if (typeof error === "string" || !error.details) result.push(error);
1845
+ result.push({ ...error, details: "" });
1846
+ }
1847
+ break;
1848
+ }
1849
+ }
1850
+ }
1851
+
1852
+ return [result, filtered];
1853
+ };
1854
+
1782
1855
  const assetGroup = (children, assets) => {
1783
1856
  let size = 0;
1784
1857
  for (const asset of children) {
@@ -47,6 +47,8 @@ const NAMED_PRESETS = {
47
47
  orphanModules: true,
48
48
  runtimeModules: true,
49
49
  exclude: false,
50
+ errorsSpace: Infinity,
51
+ warningsSpace: Infinity,
50
52
  modulesSpace: Infinity,
51
53
  chunkModulesSpace: Infinity,
52
54
  assetsSpace: Infinity,
@@ -73,6 +75,8 @@ const NAMED_PRESETS = {
73
75
  logging: true,
74
76
  runtimeModules: true,
75
77
  exclude: false,
78
+ errorsSpace: 1000,
79
+ warningsSpace: 1000,
76
80
  modulesSpace: 1000,
77
81
  assetsSpace: 1000,
78
82
  reasonsSpace: 1000
@@ -82,6 +86,8 @@ const NAMED_PRESETS = {
82
86
  version: true,
83
87
  timings: true,
84
88
  modules: true,
89
+ errorsSpace: 0,
90
+ warningsSpace: 0,
85
91
  modulesSpace: 0,
86
92
  assets: true,
87
93
  assetsSpace: 0,
@@ -95,6 +101,7 @@ const NAMED_PRESETS = {
95
101
  all: false,
96
102
  errors: true,
97
103
  errorsCount: true,
104
+ errorsSpace: Infinity,
98
105
  moduleTrace: true,
99
106
  logging: "error"
100
107
  },
@@ -102,8 +109,10 @@ const NAMED_PRESETS = {
102
109
  all: false,
103
110
  errors: true,
104
111
  errorsCount: true,
112
+ errorsSpace: Infinity,
105
113
  warnings: true,
106
114
  warningsCount: true,
115
+ warningsSpace: Infinity,
107
116
  logging: "warn"
108
117
  },
109
118
  summary: {
@@ -10,6 +10,7 @@
10
10
  /** @typedef {import("./StatsPrinter").StatsPrinterContext} StatsPrinterContext */
11
11
 
12
12
  const DATA_URI_CONTENT_LENGTH = 16;
13
+ const MAX_MODULE_IDENTIFIER_LENGTH = 80;
13
14
 
14
15
  const plural = (n, singular, plural) => (n === 1 ? singular : plural);
15
16
 
@@ -42,6 +43,19 @@ const getResourceName = resource => {
42
43
 
43
44
  const getModuleName = name => {
44
45
  const [, prefix, resource] = /^(.*!)?([^!]*)$/.exec(name);
46
+
47
+ if (resource.length > MAX_MODULE_IDENTIFIER_LENGTH) {
48
+ const truncatedResource = `${resource.slice(
49
+ 0,
50
+ Math.min(
51
+ resource.length - /* '...(truncated)'.length */ 14,
52
+ MAX_MODULE_IDENTIFIER_LENGTH
53
+ )
54
+ )}...(truncated)`;
55
+
56
+ return [prefix, getResourceName(truncatedResource)];
57
+ }
58
+
45
59
  return [prefix, getResourceName(resource)];
46
60
  };
47
61
 
@@ -589,6 +603,8 @@ const SIMPLE_PRINTERS = {
589
603
  "error.message": (message, { bold, formatError }) =>
590
604
  message.includes("\u001b[") ? message : bold(formatError(message)),
591
605
  "error.details": (details, { formatError }) => formatError(details),
606
+ "error.filteredDetails": filteredDetails =>
607
+ filteredDetails ? `+ ${filteredDetails} hidden lines` : undefined,
592
608
  "error.stack": stack => stack,
593
609
  "error.moduleTrace": moduleTrace => undefined,
594
610
  "error.separator!": () => "\n",
@@ -689,6 +705,8 @@ const ERROR_PREFERRED_ORDER = [
689
705
  "separator!",
690
706
  "details",
691
707
  "separator!",
708
+ "filteredDetails",
709
+ "separator!",
692
710
  "stack",
693
711
  "separator!",
694
712
  "missing",
@@ -10,8 +10,8 @@ const create = require("./wasm-hash");
10
10
  //#region wasm code: md4 (../../../assembly/hash/md4.asm.ts) --initialMemory 1
11
11
  const md4 = new WebAssembly.Module(
12
12
  Buffer.from(
13
- // 2156 bytes
14
- "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",
13
+ // 2154 bytes
14
+ "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",
15
15
  "base64"
16
16
  )
17
17
  );
@@ -11,7 +11,7 @@ const create = require("./wasm-hash");
11
11
  const xxhash64 = new WebAssembly.Module(
12
12
  Buffer.from(
13
13
  // 1170 bytes
14
- "AGFzbQEAAAABCAJgAX8AYAAAAwQDAQAABQMBAAEGGgV+AUIAC34BQgALfgFCAAt+AUIAC34BQgALByIEBGluaXQAAAZ1cGRhdGUAAQVmaW5hbAACBm1lbW9yeQIACrIIAzAAQtbrgu7q/Yn14AAkAELP1tO+0ser2UIkAUIAJAJC+erQ0OfJoeThACQDQgAkBAvUAQIBfwR+IABFBEAPCyMEIACtfCQEIwAhAiMBIQMjAiEEIwMhBQNAIAIgASkDAELP1tO+0ser2UJ+fEIfiUKHla+vmLbem55/fiECIAMgASkDCELP1tO+0ser2UJ+fEIfiUKHla+vmLbem55/fiEDIAQgASkDEELP1tO+0ser2UJ+fEIfiUKHla+vmLbem55/fiEEIAUgASkDGELP1tO+0ser2UJ+fEIfiUKHla+vmLbem55/fiEFIAAgAUEgaiIBSw0ACyACJAAgAyQBIAQkAiAFJAMLqAYCAX8EfiMEQgBSBH4jACICQgGJIwEiA0IHiXwjAiIEQgyJfCMDIgVCEol8IAJCz9bTvtLHq9lCfkIfiUKHla+vmLbem55/foVCh5Wvr5i23puef35CnaO16oOxjYr6AH0gA0LP1tO+0ser2UJ+Qh+JQoeVr6+Ytt6bnn9+hUKHla+vmLbem55/fkKdo7Xqg7GNivoAfSAEQs/W077Sx6vZQn5CH4lCh5Wvr5i23puef36FQoeVr6+Ytt6bnn9+Qp2jteqDsY2K+gB9IAVCz9bTvtLHq9lCfkIfiUKHla+vmLbem55/foVCh5Wvr5i23puef35CnaO16oOxjYr6AH0FQsXP2bLx5brqJwsjBCAArXx8IQIDQCABQQhqIABNBEAgAiABKQMAQs/W077Sx6vZQn5CH4lCh5Wvr5i23puef36FQhuJQoeVr6+Ytt6bnn9+Qp2jteqDsY2K+gB9IQIgAUEIaiEBDAELCyABQQRqIABNBEAgAiABNQIAQoeVr6+Ytt6bnn9+hUIXiULP1tO+0ser2UJ+Qvnz3fGZ9pmrFnwhAiABQQRqIQELA0AgACABRwRAIAIgATEAAELFz9my8eW66id+hUILiUKHla+vmLbem55/fiECIAFBAWohAQwBCwtBACACIAJCIYiFQs/W077Sx6vZQn4iAkIdiCAChUL5893xmfaZqxZ+IgJCIIggAoUiAkIgiCIDQv//A4NCIIYgA0KAgPz/D4NCEIiEIgNC/4GAgPAfg0IQhiADQoD+g4CA4D+DQgiIhCIDQo+AvIDwgcAHg0IIhiADQvCBwIeAnoD4AINCBIiEIgNChoyYsODAgYMGfEIEiEKBgoSIkKDAgAGDQid+IANCsODAgYOGjJgwhHw3AwBBCCACQv////8PgyICQv//A4NCIIYgAkKAgPz/D4NCEIiEIgJC/4GAgPAfg0IQhiACQoD+g4CA4D+DQgiIhCICQo+AvIDwgcAHg0IIhiACQvCBwIeAnoD4AINCBIiEIgJChoyYsODAgYMGfEIEiEKBgoSIkKDAgAGDQid+IAJCsODAgYOGjJgwhHw3AwAL",
14
+ "AGFzbQEAAAABCAJgAX8AYAAAAwQDAQAABQMBAAEGGgV+AUIAC34BQgALfgFCAAt+AUIAC34BQgALByIEBGluaXQAAAZ1cGRhdGUAAQVmaW5hbAACBm1lbW9yeQIACrIIAzAAQtbrgu7q/Yn14AAkAELP1tO+0ser2UIkAUIAJAJC+erQ0OfJoeThACQDQgAkBAvUAQIBfwR+IABFBEAPCyMEIACtfCQEIwAhAiMBIQMjAiEEIwMhBQNAIAIgASkDAELP1tO+0ser2UJ+fEIfiUKHla+vmLbem55/fiECIAMgASkDCELP1tO+0ser2UJ+fEIfiUKHla+vmLbem55/fiEDIAQgASkDEELP1tO+0ser2UJ+fEIfiUKHla+vmLbem55/fiEEIAUgASkDGELP1tO+0ser2UJ+fEIfiUKHla+vmLbem55/fiEFIAFBIGoiASAASQ0ACyACJAAgAyQBIAQkAiAFJAMLqAYCAX8EfiMEQgBSBH4jACICQgGJIwEiA0IHiXwjAiIEQgyJfCMDIgVCEol8IAJCz9bTvtLHq9lCfkIfiUKHla+vmLbem55/foVCh5Wvr5i23puef35CnaO16oOxjYr6AH0gA0LP1tO+0ser2UJ+Qh+JQoeVr6+Ytt6bnn9+hUKHla+vmLbem55/fkKdo7Xqg7GNivoAfSAEQs/W077Sx6vZQn5CH4lCh5Wvr5i23puef36FQoeVr6+Ytt6bnn9+Qp2jteqDsY2K+gB9IAVCz9bTvtLHq9lCfkIfiUKHla+vmLbem55/foVCh5Wvr5i23puef35CnaO16oOxjYr6AH0FQsXP2bLx5brqJwsjBCAArXx8IQIDQCABQQhqIABNBEAgAiABKQMAQs/W077Sx6vZQn5CH4lCh5Wvr5i23puef36FQhuJQoeVr6+Ytt6bnn9+Qp2jteqDsY2K+gB9IQIgAUEIaiEBDAELCyABQQRqIABNBEAgAiABNQIAQoeVr6+Ytt6bnn9+hUIXiULP1tO+0ser2UJ+Qvnz3fGZ9pmrFnwhAiABQQRqIQELA0AgACABRwRAIAIgATEAAELFz9my8eW66id+hUILiUKHla+vmLbem55/fiECIAFBAWohAQwBCwtBACACIAJCIYiFQs/W077Sx6vZQn4iAkIdiCAChUL5893xmfaZqxZ+IgJCIIggAoUiAkIgiCIDQv//A4NCIIYgA0KAgPz/D4NCEIiEIgNC/4GAgPAfg0IQhiADQoD+g4CA4D+DQgiIhCIDQo+AvIDwgcAHg0IIhiADQvCBwIeAnoD4AINCBIiEIgNChoyYsODAgYMGfEIEiEKBgoSIkKDAgAGDQid+IANCsODAgYOGjJgwhHw3AwBBCCACQv////8PgyICQv//A4NCIIYgAkKAgPz/D4NCEIiEIgJC/4GAgPAfg0IQhiACQoD+g4CA4D+DQgiIhCICQo+AvIDwgcAHg0IIhiACQvCBwIeAnoD4AINCBIiEIgJChoyYsODAgYMGfEIEiEKBgoSIkKDAgAGDQid+IAJCsODAgYOGjJgwhHw3AwAL",
15
15
  "base64"
16
16
  )
17
17
  );
package/lib/webpack.js CHANGED
@@ -103,7 +103,7 @@ const webpack = /** @type {WebpackFunctionSingle & WebpackFunctionMulti} */ (
103
103
  /**
104
104
  * @param {WebpackOptions | (ReadonlyArray<WebpackOptions> & MultiCompilerOptions)} options options
105
105
  * @param {Callback<Stats> & Callback<MultiStats>=} callback callback
106
- * @returns {Compiler | MultiCompiler}
106
+ * @returns {Compiler | MultiCompiler} Compiler or MultiCompiler
107
107
  */
108
108
  (options, callback) => {
109
109
  const create = () => {