webpack 5.62.2 → 5.64.2

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/README.md CHANGED
@@ -9,8 +9,6 @@
9
9
 
10
10
  [![node][node]][node-url]
11
11
  [![deps][deps]][deps-url]
12
- [![tests][tests]][tests-url]
13
- [![builds][builds]][builds-url]
14
12
  [![builds2][builds2]][builds2-url]
15
13
  [![coverage][cover]][cover-url]
16
14
  [![licenses][licenses]][licenses-url]
@@ -703,12 +701,8 @@ src="https://static.monei.net/monei-logo.svg" height="30" alt="MONEI"></a>
703
701
  [node-url]: https://nodejs.org
704
702
  [deps]: https://img.shields.io/david/webpack/webpack.svg
705
703
  [deps-url]: https://david-dm.org/webpack/webpack
706
- [tests]: https://img.shields.io/travis/webpack/webpack/main.svg
707
- [tests-url]: https://travis-ci.org/webpack/webpack
708
704
  [prs]: https://img.shields.io/badge/PRs-welcome-brightgreen.svg
709
705
  [prs-url]: https://webpack.js.org/contribute/
710
- [builds-url]: https://ci.appveyor.com/project/sokra/webpack/branch/main
711
- [builds]: https://ci.appveyor.com/api/projects/status/github/webpack/webpack?svg=true
712
706
  [builds2]: https://dev.azure.com/webpack/webpack/_apis/build/status/webpack.webpack
713
707
  [builds2-url]: https://dev.azure.com/webpack/webpack/_build/latest?definitionId=3
714
708
  [licenses-url]: https://app.fossa.io/projects/git%2Bhttps%3A%2F%2Fgithub.com%2Fwebpack%2Fwebpack?ref=badge_shield
@@ -16,6 +16,7 @@ const processAsyncTree = require("./util/processAsyncTree");
16
16
  /** @typedef {import("./Compiler")} Compiler */
17
17
  /** @typedef {import("./logging/Logger").Logger} Logger */
18
18
  /** @typedef {import("./util/fs").OutputFileSystem} OutputFileSystem */
19
+ /** @typedef {import("./util/fs").StatsCallback} StatsCallback */
19
20
 
20
21
  /** @typedef {(function(string):boolean)|RegExp} IgnoreItem */
21
22
  /** @typedef {function(IgnoreItem): void} AddToIgnoreCallback */
@@ -102,6 +103,20 @@ const getDiffToOldAssets = (currentAssets, oldAssets) => {
102
103
  return diff;
103
104
  };
104
105
 
106
+ /**
107
+ * @param {OutputFileSystem} fs filesystem
108
+ * @param {string} filename path to file
109
+ * @param {StatsCallback} callback callback for provided filename
110
+ * @returns {void}
111
+ */
112
+ const doStat = (fs, filename, callback) => {
113
+ if ("lstat" in fs) {
114
+ fs.lstat(filename, callback);
115
+ } else {
116
+ fs.stat(filename, callback);
117
+ }
118
+ };
119
+
105
120
  /**
106
121
  * @param {OutputFileSystem} fs filesystem
107
122
  * @param {string} outputPath output path
@@ -150,7 +165,7 @@ const applyDiff = (fs, outputPath, dry, logger, diff, isKept, callback) => {
150
165
  log(`${filename} will be kept`);
151
166
  return process.nextTick(callback);
152
167
  }
153
- fs.stat(path, (err, stats) => {
168
+ doStat(fs, path, (err, stats) => {
154
169
  if (err) return handleError(err);
155
170
  if (!stats.isDirectory()) {
156
171
  push({
@@ -64,6 +64,7 @@ class EntryOptionPlugin {
64
64
  dependOn: desc.dependOn,
65
65
  publicPath: desc.publicPath,
66
66
  chunkLoading: desc.chunkLoading,
67
+ asyncChunks: desc.asyncChunks,
67
68
  wasmLoading: desc.wasmLoading,
68
69
  library: desc.library
69
70
  };
@@ -692,6 +692,11 @@ class SnapshotOptimization {
692
692
  }
693
693
  }
694
694
 
695
+ const parseString = str => {
696
+ if (str[0] === "'") str = `"${str.slice(1, -1).replace(/"/g, '\\"')}"`;
697
+ return JSON.parse(str);
698
+ };
699
+
695
700
  /* istanbul ignore next */
696
701
  /**
697
702
  * @param {number} mtime mtime
@@ -1657,17 +1662,13 @@ class FileSystemInfo {
1657
1662
  let dependency;
1658
1663
  if (imp.d === -1) {
1659
1664
  // import ... from "..."
1660
- dependency = JSON.parse(
1665
+ dependency = parseString(
1661
1666
  source.substring(imp.s - 1, imp.e + 1)
1662
1667
  );
1663
1668
  } else if (imp.d > -1) {
1664
1669
  // import()
1665
1670
  let expr = source.substring(imp.s, imp.e).trim();
1666
- if (expr[0] === "'")
1667
- expr = `"${expr
1668
- .slice(1, -1)
1669
- .replace(/"/g, '\\"')}"`;
1670
- dependency = JSON.parse(expr);
1671
+ dependency = parseString(expr);
1671
1672
  } else {
1672
1673
  // e.g. import.meta
1673
1674
  continue;
@@ -2015,8 +2016,7 @@ class FileSystemInfo {
2015
2016
  }
2016
2017
  return capturedItems;
2017
2018
  };
2018
- if (files) {
2019
- const capturedFiles = captureNonManaged(files, managedFiles);
2019
+ const processCapturedFiles = capturedFiles => {
2020
2020
  switch (mode) {
2021
2021
  case 3:
2022
2022
  this._fileTshsOptimization.optimize(snapshot, capturedFiles);
@@ -2093,12 +2093,11 @@ class FileSystemInfo {
2093
2093
  }
2094
2094
  break;
2095
2095
  }
2096
+ };
2097
+ if (files) {
2098
+ processCapturedFiles(captureNonManaged(files, managedFiles));
2096
2099
  }
2097
- if (directories) {
2098
- const capturedDirectories = captureNonManaged(
2099
- directories,
2100
- managedContexts
2101
- );
2100
+ const processCapturedDirectories = capturedDirectories => {
2102
2101
  switch (mode) {
2103
2102
  case 3:
2104
2103
  this._contextTshsOptimization.optimize(snapshot, capturedDirectories);
@@ -2218,9 +2217,13 @@ class FileSystemInfo {
2218
2217
  }
2219
2218
  break;
2220
2219
  }
2220
+ };
2221
+ if (directories) {
2222
+ processCapturedDirectories(
2223
+ captureNonManaged(directories, managedContexts)
2224
+ );
2221
2225
  }
2222
- if (missing) {
2223
- const capturedMissing = captureNonManaged(missing, managedMissing);
2226
+ const processCapturedMissing = capturedMissing => {
2224
2227
  this._missingExistenceOptimization.optimize(snapshot, capturedMissing);
2225
2228
  for (const path of capturedMissing) {
2226
2229
  const cache = this._fileTimestamps.get(path);
@@ -2245,11 +2248,17 @@ class FileSystemInfo {
2245
2248
  });
2246
2249
  }
2247
2250
  }
2251
+ };
2252
+ if (missing) {
2253
+ processCapturedMissing(captureNonManaged(missing, managedMissing));
2248
2254
  }
2249
2255
  this._managedItemInfoOptimization.optimize(snapshot, managedItems);
2250
2256
  for (const path of managedItems) {
2251
2257
  const cache = this._managedItems.get(path);
2252
2258
  if (cache !== undefined) {
2259
+ if (cache !== "missing") {
2260
+ managedFiles.add(join(this.fs, path, "package.json"));
2261
+ }
2253
2262
  managedItemInfo.set(path, cache);
2254
2263
  } else {
2255
2264
  jobs++;
@@ -2261,9 +2270,26 @@ class FileSystemInfo {
2261
2270
  );
2262
2271
  }
2263
2272
  jobError();
2264
- } else {
2273
+ } else if (entry) {
2274
+ if (entry !== "missing") {
2275
+ managedFiles.add(join(this.fs, path, "package.json"));
2276
+ }
2265
2277
  managedItemInfo.set(path, entry);
2266
2278
  jobDone();
2279
+ } else {
2280
+ // Fallback to normal snapshotting
2281
+ const process = (set, fn) => {
2282
+ if (set.size === 0) return;
2283
+ const captured = new Set();
2284
+ for (const file of set) {
2285
+ if (file.startsWith(path)) captured.add(file);
2286
+ }
2287
+ if (captured.size > 0) fn(captured);
2288
+ };
2289
+ process(managedFiles, processCapturedFiles);
2290
+ process(managedContexts, processCapturedDirectories);
2291
+ process(managedMissing, processCapturedMissing);
2292
+ jobDone();
2267
2293
  }
2268
2294
  });
2269
2295
  }
@@ -3476,9 +3502,10 @@ class FileSystemInfo {
3476
3502
  this._managedItems.set(path, "nested");
3477
3503
  return callback(null, "nested");
3478
3504
  }
3479
- const problem = `Managed item ${path} isn't a directory or doesn't contain a package.json`;
3480
- this.logger.warn(problem);
3481
- return callback(new Error(problem));
3505
+ this.logger.warn(
3506
+ `Managed item ${path} isn't a directory or doesn't contain a package.json (see snapshot.managedPaths option)`
3507
+ );
3508
+ return callback();
3482
3509
  });
3483
3510
  return;
3484
3511
  }
@@ -3490,6 +3517,12 @@ class FileSystemInfo {
3490
3517
  } catch (e) {
3491
3518
  return callback(e);
3492
3519
  }
3520
+ if (!data.name) {
3521
+ this.logger.warn(
3522
+ `${packageJsonPath} doesn't contain a "name" property (see snapshot.managedPaths option)`
3523
+ );
3524
+ return callback();
3525
+ }
3493
3526
  const info = `${data.name || ""}@${data.version || ""}`;
3494
3527
  this._managedItems.set(path, info);
3495
3528
  callback(null, info);
@@ -5,6 +5,7 @@
5
5
 
6
6
  "use strict";
7
7
 
8
+ const { groupBy } = require("./util/ArrayHelpers");
8
9
  const createSchemaValidation = require("./util/create-schema-validation");
9
10
 
10
11
  /** @typedef {import("../declarations/plugins/WatchIgnorePlugin").WatchIgnorePluginOptions} WatchIgnorePluginOptions */
@@ -40,14 +41,12 @@ class IgnoringWatchFileSystem {
40
41
  p instanceof RegExp ? p.test(path) : path.indexOf(p) === 0
41
42
  );
42
43
 
43
- const notIgnored = path => !ignored(path);
44
-
45
- const ignoredFiles = files.filter(ignored);
46
- const ignoredDirs = dirs.filter(ignored);
44
+ const [ignoredFiles, notIgnoredFiles] = groupBy(files, ignored);
45
+ const [ignoredDirs, notIgnoredDirs] = groupBy(dirs, ignored);
47
46
 
48
47
  const watcher = this.wfs.watch(
49
- files.filter(notIgnored),
50
- dirs.filter(notIgnored),
48
+ notIgnoredFiles,
49
+ notIgnoredDirs,
51
50
  missing,
52
51
  startTime,
53
52
  options,
@@ -50,6 +50,8 @@ const { getEntryRuntime, mergeRuntime } = require("./util/runtime");
50
50
  * @property {Set<ChunkGroupInfo>} availableChildren set of chunk groups which depend on the this chunk group as availableSource
51
51
  * @property {number} preOrderIndex next pre order index
52
52
  * @property {number} postOrderIndex next post order index
53
+ * @property {boolean} chunkLoading has a chunk loading mechanism
54
+ * @property {boolean} asyncChunks create async chunks
53
55
  */
54
56
 
55
57
  /**
@@ -304,7 +306,15 @@ const visitModules = (
304
306
  availableSources: undefined,
305
307
  availableChildren: undefined,
306
308
  preOrderIndex: 0,
307
- postOrderIndex: 0
309
+ postOrderIndex: 0,
310
+ chunkLoading:
311
+ chunkGroup.options.chunkLoading !== undefined
312
+ ? chunkGroup.options.chunkLoading !== false
313
+ : compilation.outputOptions.chunkLoading !== false,
314
+ asyncChunks:
315
+ chunkGroup.options.asyncChunks !== undefined
316
+ ? chunkGroup.options.asyncChunks
317
+ : compilation.outputOptions.asyncChunks !== false
308
318
  };
309
319
  chunkGroup.index = nextChunkGroupIndex++;
310
320
  if (chunkGroup.getNumberOfParents() > 0) {
@@ -418,7 +428,15 @@ const visitModules = (
418
428
  availableSources: undefined,
419
429
  availableChildren: undefined,
420
430
  preOrderIndex: 0,
421
- postOrderIndex: 0
431
+ postOrderIndex: 0,
432
+ chunkLoading:
433
+ entryOptions.chunkLoading !== undefined
434
+ ? entryOptions.chunkLoading !== false
435
+ : chunkGroupInfo.chunkLoading,
436
+ asyncChunks:
437
+ entryOptions.asyncChunks !== undefined
438
+ ? entryOptions.asyncChunks
439
+ : chunkGroupInfo.asyncChunks
422
440
  };
423
441
  chunkGroupInfoMap.set(entrypoint, cgi);
424
442
 
@@ -442,8 +460,18 @@ const visitModules = (
442
460
  chunkGroup: entrypoint,
443
461
  chunkGroupInfo: cgi
444
462
  });
463
+ } else if (!chunkGroupInfo.asyncChunks || !chunkGroupInfo.chunkLoading) {
464
+ // Just queue the block into the current chunk group
465
+ queue.push({
466
+ action: PROCESS_BLOCK,
467
+ block: b,
468
+ module: module,
469
+ chunk,
470
+ chunkGroup,
471
+ chunkGroupInfo
472
+ });
445
473
  } else {
446
- cgi = namedChunkGroups.get(chunkName);
474
+ cgi = chunkName && namedChunkGroups.get(chunkName);
447
475
  if (!cgi) {
448
476
  c = compilation.addChunkInGroup(
449
477
  b.groupOptions || b.chunkName,
@@ -464,7 +492,9 @@ const visitModules = (
464
492
  availableSources: undefined,
465
493
  availableChildren: undefined,
466
494
  preOrderIndex: 0,
467
- postOrderIndex: 0
495
+ postOrderIndex: 0,
496
+ chunkLoading: chunkGroupInfo.chunkLoading,
497
+ asyncChunks: chunkGroupInfo.asyncChunks
468
498
  };
469
499
  allCreatedChunkGroups.add(c);
470
500
  chunkGroupInfoMap.set(c, cgi);
@@ -518,7 +548,7 @@ const visitModules = (
518
548
  chunkGroup: c,
519
549
  chunkGroupInfo: cgi
520
550
  });
521
- } else {
551
+ } else if (entrypoint !== undefined) {
522
552
  chunkGroupInfo.chunkGroup.addAsyncEntrypoint(entrypoint);
523
553
  }
524
554
  };
@@ -383,7 +383,7 @@ const applySnapshotDefaults = (snapshot, { production, futureDefaults }) => {
383
383
  return [path.resolve(match[1], "unplugged")];
384
384
  }
385
385
  } else {
386
- const match = /^(.+?[\\/]node_modules)[\\/]/.exec(
386
+ const match = /^(.+?[\\/]node_modules[\\/])/.exec(
387
387
  // eslint-disable-next-line node/no-extraneous-require
388
388
  require.resolve("watchpack")
389
389
  );
@@ -744,6 +744,7 @@ const applyOutputDefaults = (
744
744
  "Chunk format can't be selected by default when no target is specified"
745
745
  );
746
746
  });
747
+ D(output, "asyncChunks", true);
747
748
  F(output, "chunkLoading", () => {
748
749
  if (tp) {
749
750
  switch (output.chunkFormat) {
@@ -290,6 +290,7 @@ const getNormalizedWebpackOptions = config => {
290
290
  /** @type {OutputNormalized} */
291
291
  const result = {
292
292
  assetModuleFilename: output.assetModuleFilename,
293
+ asyncChunks: output.asyncChunks,
293
294
  charset: output.charset,
294
295
  chunkFilename: output.chunkFilename,
295
296
  chunkFormat: output.chunkFormat,
@@ -484,6 +485,7 @@ const getNormalizedEntryStatic = entry => {
484
485
  runtime: value.runtime,
485
486
  publicPath: value.publicPath,
486
487
  chunkLoading: value.chunkLoading,
488
+ asyncChunks: value.asyncChunks,
487
489
  wasmLoading: value.wasmLoading,
488
490
  dependOn:
489
491
  value.dependOn &&
@@ -203,15 +203,17 @@ class ProfilingPlugin {
203
203
 
204
204
  // Compiler Hooks
205
205
  Object.keys(compiler.hooks).forEach(hookName => {
206
- compiler.hooks[hookName].intercept(
207
- makeInterceptorFor("Compiler", tracer)(hookName)
208
- );
206
+ const hook = compiler.hooks[hookName];
207
+ if (hook) {
208
+ hook.intercept(makeInterceptorFor("Compiler", tracer)(hookName));
209
+ }
209
210
  });
210
211
 
211
212
  Object.keys(compiler.resolverFactory.hooks).forEach(hookName => {
212
- compiler.resolverFactory.hooks[hookName].intercept(
213
- makeInterceptorFor("Resolver", tracer)(hookName)
214
- );
213
+ const hook = compiler.resolverFactory.hooks[hookName];
214
+ if (hook) {
215
+ hook.intercept(makeInterceptorFor("Resolver", tracer)(hookName));
216
+ }
215
217
  });
216
218
 
217
219
  compiler.hooks.compilation.tap(
@@ -303,7 +305,7 @@ const interceptAllHooksFor = (instance, tracer, logLabel) => {
303
305
  if (Reflect.has(instance, "hooks")) {
304
306
  Object.keys(instance.hooks).forEach(hookName => {
305
307
  const hook = instance.hooks[hookName];
306
- if (!hook._fakeHook) {
308
+ if (hook && !hook._fakeHook) {
307
309
  hook.intercept(makeInterceptorFor(logLabel, tracer)(hookName));
308
310
  }
309
311
  });
@@ -282,7 +282,7 @@ class CommonJsImportsParserPlugin {
282
282
  dep.asiSafe = !parser.isAsiPosition(expr.range[0]);
283
283
  dep.optional = !!parser.scope.inTry;
284
284
  dep.loc = expr.loc;
285
- parser.state.module.addDependency(dep);
285
+ parser.state.current.addDependency(dep);
286
286
  return true;
287
287
  }
288
288
  };
@@ -299,7 +299,7 @@ class CommonJsImportsParserPlugin {
299
299
  dep.asiSafe = !parser.isAsiPosition(expr.range[0]);
300
300
  dep.optional = !!parser.scope.inTry;
301
301
  dep.loc = expr.callee.loc;
302
- parser.state.module.addDependency(dep);
302
+ parser.state.current.addDependency(dep);
303
303
  parser.walkExpressions(expr.arguments);
304
304
  return true;
305
305
  }
@@ -82,7 +82,7 @@ class URLPlugin {
82
82
  relative
83
83
  );
84
84
  dep.loc = expr.loc;
85
- parser.state.module.addDependency(dep);
85
+ parser.state.current.addDependency(dep);
86
86
  InnerGraph.onUsage(parser.state, e => (dep.usedByExports = e));
87
87
  return true;
88
88
  });
@@ -12,3 +12,19 @@ exports.equals = (a, b) => {
12
12
  }
13
13
  return true;
14
14
  };
15
+
16
+ /**
17
+ *
18
+ * @param {Array} arr Array of values to be partitioned
19
+ * @param {(value: any) => boolean} fn Partition function which partitions based on truthiness of result.
20
+ * @returns {[Array, Array]} returns the values of `arr` partitioned into two new arrays based on fn predicate.
21
+ */
22
+ exports.groupBy = (arr = [], fn) => {
23
+ return arr.reduce(
24
+ (groups, value) => {
25
+ groups[fn(value) ? 0 : 1].push(value);
26
+ return groups;
27
+ },
28
+ [[], []]
29
+ );
30
+ };
package/lib/util/fs.js CHANGED
@@ -93,6 +93,7 @@ const path = require("path");
93
93
  * @property {function(string, Callback): void=} rmdir
94
94
  * @property {function(string, Callback): void=} unlink
95
95
  * @property {function(string, StatsCallback): void} stat
96
+ * @property {function(string, StatsCallback): void=} lstat
96
97
  * @property {function(string, BufferOrStringCallback): void} readFile
97
98
  * @property {(function(string, string): string)=} join
98
99
  * @property {(function(string, string): string)=} relative
@@ -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
- // 2150 bytes
14
- "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",
13
+ // 2156 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
  // 1173 bytes
14
- "AGFzbQEAAAABCAJgAX8AYAAAAwQDAQAABQMBAAEGGgV+AUIAC34BQgALfgFCAAt+AUIAC34BQgALByIEBGluaXQAAAZ1cGRhdGUAAQVmaW5hbAACBm1lbW9yeQIACrUIAzAAQtbrgu7q/Yn14AAkAELP1tO+0ser2UIkAUIAJAJC+erQ0OfJoeThACQDQgAkBAvUAQIBfwR+IABFBEAPCyMEIACtfCQEIwAhAiMBIQMjAiEEIwMhBQNAIAIgASkDAELP1tO+0ser2UJ+fEIfiUKHla+vmLbem55/fiECIAMgASkDCELP1tO+0ser2UJ+fEIfiUKHla+vmLbem55/fiEDIAQgASkDEELP1tO+0ser2UJ+fEIfiUKHla+vmLbem55/fiEEIAUgASkDGELP1tO+0ser2UJ+fEIfiUKHla+vmLbem55/fiEFIAAgAUEgaiIBSw0ACyACJAAgAyQBIAQkAiAFJAMLqwYCAX8EfiMEQgBSBH4jACICQgGJIwEiA0IHiXwjAiIEQgyJfCMDIgVCEol8IAJCz9bTvtLHq9lCfkIfiUKHla+vmLbem55/foVCh5Wvr5i23puef35CnaO16oOxjYr6AH0gA0LP1tO+0ser2UJ+Qh+JQoeVr6+Ytt6bnn9+hUKHla+vmLbem55/fkKdo7Xqg7GNivoAfSAEQs/W077Sx6vZQn5CH4lCh5Wvr5i23puef36FQoeVr6+Ytt6bnn9+Qp2jteqDsY2K+gB9IAVCz9bTvtLHq9lCfkIfiUKHla+vmLbem55/foVCh5Wvr5i23puef35CnaO16oOxjYr6AH0FQsXP2bLx5brqJwsjBCAArXx8IQIDQCABQQhqIABNBEAgAiABKQMAQs/W077Sx6vZQn5CH4lCh5Wvr5i23puef36FQhuJQoeVr6+Ytt6bnn9+Qp2jteqDsY2K+gB9IQIgAUEIaiEBDAELCyABQQRqIABNBEACfyACIAE1AgBCh5Wvr5i23puef36FQheJQs/W077Sx6vZQn5C+fPd8Zn2masWfCECIAFBBGoLIQELA0AgACABRwRAIAIgATEAAELFz9my8eW66id+hUILiUKHla+vmLbem55/fiECIAFBAWohAQwBCwtBACACIAJCIYiFQs/W077Sx6vZQn4iAiACQh2IhUL5893xmfaZqxZ+IgIgAkIgiIUiAkIgiCIDQv//A4NCIIYgA0KAgPz/D4NCEIiEIgNC/4GAgPAfg0IQhiADQoD+g4CA4D+DQgiIhCIDQo+AvIDwgcAHg0IIhiADQvCBwIeAnoD4AINCBIiEIgNChoyYsODAgYMGfEIEiEKBgoSIkKDAgAGDQid+IANCsODAgYOGjJgwhHw3AwBBCCACQv////8PgyICQv//A4NCIIYgAkKAgPz/D4NCEIiEIgJC/4GAgPAfg0IQhiACQoD+g4CA4D+DQgiIhCICQo+AvIDwgcAHg0IIhiACQvCBwIeAnoD4AINCBIiEIgJChoyYsODAgYMGfEIEiEKBgoSIkKDAgAGDQid+IAJCsODAgYOGjJgwhHw3AwAL",
14
+ "AGFzbQEAAAABCAJgAX8AYAAAAwQDAQAABQMBAAEGGgV+AUIAC34BQgALfgFCAAt+AUIAC34BQgALByIEBGluaXQAAAZ1cGRhdGUAAQVmaW5hbAACBm1lbW9yeQIACrUIAzAAQtbrgu7q/Yn14AAkAELP1tO+0ser2UIkAUIAJAJC+erQ0OfJoeThACQDQgAkBAvUAQIBfwR+IABFBEAPCyMEIACtfCQEIwAhAiMBIQMjAiEEIwMhBQNAIAIgASkDAELP1tO+0ser2UJ+fEIfiUKHla+vmLbem55/fiECIAMgASkDCELP1tO+0ser2UJ+fEIfiUKHla+vmLbem55/fiEDIAQgASkDEELP1tO+0ser2UJ+fEIfiUKHla+vmLbem55/fiEEIAUgASkDGELP1tO+0ser2UJ+fEIfiUKHla+vmLbem55/fiEFIAAgAUEgaiIBSw0ACyACJAAgAyQBIAQkAiAFJAMLqwYCAX8EfiMEQgBSBH4jACICQgGJIwEiA0IHiXwjAiIEQgyJfCMDIgVCEol8IAJCz9bTvtLHq9lCfkIfiUKHla+vmLbem55/foVCh5Wvr5i23puef35CnaO16oOxjYr6AH0gA0LP1tO+0ser2UJ+Qh+JQoeVr6+Ytt6bnn9+hUKHla+vmLbem55/fkKdo7Xqg7GNivoAfSAEQs/W077Sx6vZQn5CH4lCh5Wvr5i23puef36FQoeVr6+Ytt6bnn9+Qp2jteqDsY2K+gB9IAVCz9bTvtLHq9lCfkIfiUKHla+vmLbem55/foVCh5Wvr5i23puef35CnaO16oOxjYr6AH0FQsXP2bLx5brqJwsjBCAArXx8IQIDQCABQQhqIABNBEAgAiABKQMAQs/W077Sx6vZQn5CH4lCh5Wvr5i23puef36FQhuJQoeVr6+Ytt6bnn9+Qp2jteqDsY2K+gB9IQIgAUEIaiEBDAELCyABQQRqIABNBEACfyACIAE1AgBCh5Wvr5i23puef36FQheJQs/W077Sx6vZQn5C+fPd8Zn2masWfCECIAFBBGoLIQELA0AgACABRwRAIAIgATEAAELFz9my8eW66id+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/module.d.ts CHANGED
@@ -104,7 +104,7 @@ declare namespace webpack {
104
104
  ) => void
105
105
  ): void;
106
106
  (
107
- errorHandler: (
107
+ errorHandler?: (
108
108
  err: Error,
109
109
  ids: { moduleId: string | number; module: NodeJS.Module }
110
110
  ) => void
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "webpack",
3
- "version": "5.62.2",
3
+ "version": "5.64.2",
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",
@@ -28,7 +28,7 @@
28
28
  "tapable": "^2.1.1",
29
29
  "terser-webpack-plugin": "^5.1.3",
30
30
  "watchpack": "^2.2.0",
31
- "webpack-sources": "^3.2.0"
31
+ "webpack-sources": "^3.2.2"
32
32
  },
33
33
  "peerDependenciesMeta": {
34
34
  "webpack-cli": {