webpack 5.76.1 → 5.76.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.

@@ -128,6 +128,9 @@ class ModuleGraph {
128
128
 
129
129
  /** @type {Map<Module, WeakTupleMap<any, any>>} */
130
130
  this._moduleMemCaches = undefined;
131
+
132
+ /** @type {string} */
133
+ this._cacheStage = undefined;
131
134
  }
132
135
 
133
136
  /**
@@ -47,13 +47,32 @@ const validate = createSchemaValidation(
47
47
  * @property {ItemCacheFacade} cacheItem cache item
48
48
  */
49
49
 
50
+ const METACHARACTERS_REGEXP = /[-[\]\\/{}()*+?.^$|]/g;
51
+ const CONTENT_HASH_DETECT_REGEXP = /\[contenthash(:\w+)?\]/;
52
+ const CSS_AND_JS_MODULE_EXTENSIONS_REGEXP = /\.((c|m)?js|css)($|\?)/i;
53
+ const CSS_EXTENSION_DETECT_REGEXP = /\.css($|\?)/i;
54
+ const MAP_URL_COMMENT_REGEXP = /\[map\]/g;
55
+ const URL_COMMENT_REGEXP = /\[url\]/g;
56
+ const URL_FORMATTING_REGEXP = /^\n\/\/(.*)$/;
57
+
58
+ /**
59
+ * Reset's .lastIndex of stateful Regular Expressions
60
+ * For when `test` or `exec` is called on them
61
+ * @param {RegExp} regexp Stateful Regular Expression to be reset
62
+ * @returns {void}
63
+ *
64
+ */
65
+ const resetRegexpState = regexp => {
66
+ regexp.lastIndex = -1;
67
+ };
68
+
50
69
  /**
51
70
  * Escapes regular expression metacharacters
52
71
  * @param {string} str String to quote
53
72
  * @returns {string} Escaped string
54
73
  */
55
74
  const quoteMeta = str => {
56
- return str.replace(/[-[\]\\/{}()*+?.^$|]/g, "\\$&");
75
+ return str.replace(METACHARACTERS_REGEXP, "\\$&");
57
76
  };
58
77
 
59
78
  /**
@@ -152,7 +171,7 @@ class SourceMapDevToolPlugin {
152
171
  const fallbackModuleFilenameTemplate = this.fallbackModuleFilenameTemplate;
153
172
  const requestShortener = compiler.requestShortener;
154
173
  const options = this.options;
155
- options.test = options.test || /\.((c|m)?js|css)($|\?)/i;
174
+ options.test = options.test || CSS_AND_JS_MODULE_EXTENSIONS_REGEXP;
156
175
 
157
176
  const matchObject = ModuleFilenameHelpers.matchObject.bind(
158
177
  undefined,
@@ -409,7 +428,9 @@ class SourceMapDevToolPlugin {
409
428
  sourceMap.file = file;
410
429
  const usesContentHash =
411
430
  sourceMapFilename &&
412
- /\[contenthash(:\w+)?\]/.test(sourceMapFilename);
431
+ CONTENT_HASH_DETECT_REGEXP.test(sourceMapFilename);
432
+
433
+ resetRegexpState(CONTENT_HASH_DETECT_REGEXP);
413
434
 
414
435
  // If SourceMap and asset uses contenthash, avoid a circular dependency by hiding hash in `file`
415
436
  if (usesContentHash && task.assetInfo.contenthash) {
@@ -428,13 +449,16 @@ class SourceMapDevToolPlugin {
428
449
 
429
450
  /** @type {string | false} */
430
451
  let currentSourceMappingURLComment = sourceMappingURLComment;
452
+ let cssExtensionDetected =
453
+ CSS_EXTENSION_DETECT_REGEXP.test(file);
454
+ resetRegexpState(CSS_EXTENSION_DETECT_REGEXP);
431
455
  if (
432
456
  currentSourceMappingURLComment !== false &&
433
- /\.css($|\?)/i.test(file)
457
+ cssExtensionDetected
434
458
  ) {
435
459
  currentSourceMappingURLComment =
436
460
  currentSourceMappingURLComment.replace(
437
- /^\n\/\/(.*)$/,
461
+ URL_FORMATTING_REGEXP,
438
462
  "\n/*$1*/"
439
463
  );
440
464
  }
@@ -516,9 +540,9 @@ class SourceMapDevToolPlugin {
516
540
  const asset = new ConcatSource(
517
541
  new RawSource(source),
518
542
  currentSourceMappingURLComment
519
- .replace(/\[map\]/g, () => sourceMapString)
543
+ .replace(MAP_URL_COMMENT_REGEXP, () => sourceMapString)
520
544
  .replace(
521
- /\[url\]/g,
545
+ URL_COMMENT_REGEXP,
522
546
  () =>
523
547
  `data:application/json;charset=utf-8;base64,${Buffer.from(
524
548
  sourceMapString,
@@ -43,7 +43,7 @@ class AutoPublicPathRuntimeModule extends RuntimeModule {
43
43
  "if (!scriptUrl && document) {",
44
44
  Template.indent([
45
45
  `if (document.currentScript)`,
46
- Template.indent(`scriptUrl = document.currentScript.src`),
46
+ Template.indent(`scriptUrl = document.currentScript.src;`),
47
47
  "if (!scriptUrl) {",
48
48
  Template.indent([
49
49
  'var scripts = document.getElementsByTagName("script");',
@@ -146,8 +146,7 @@ class LoadScriptRuntimeModule extends HelperRuntimeModule {
146
146
  )});`,
147
147
  "if(prev) return prev(event);"
148
148
  ])
149
- ) +
150
- ";",
149
+ ),
151
150
  `var timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), ${loadTimeout});`,
152
151
  "script.onerror = onScriptComplete.bind(null, script.onerror);",
153
152
  "script.onload = onScriptComplete.bind(null, script.onload);",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "webpack",
3
- "version": "5.76.1",
3
+ "version": "5.76.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",
package/types.d.ts CHANGED
@@ -9358,6 +9358,15 @@ declare class RawSource extends Source {
9358
9358
  constructor(source: string | Buffer, convertToString?: boolean);
9359
9359
  isBuffer(): boolean;
9360
9360
  }
9361
+ declare interface RawSourceMap {
9362
+ version: number;
9363
+ sources: string[];
9364
+ names: string[];
9365
+ sourceRoot?: string;
9366
+ sourcesContent?: string[];
9367
+ mappings: string;
9368
+ file: string;
9369
+ }
9361
9370
  declare class ReadFileCompileWasmPlugin {
9362
9371
  constructor(options?: any);
9363
9372
  options: any;
@@ -11104,7 +11113,7 @@ declare abstract class SortableSet<T> extends Set<T> {
11104
11113
  declare class Source {
11105
11114
  constructor();
11106
11115
  size(): number;
11107
- map(options?: MapOptions): Object;
11116
+ map(options?: MapOptions): null | RawSourceMap;
11108
11117
  sourceAndMap(options?: MapOptions): { source: string | Buffer; map: Object };
11109
11118
  updateHash(hash: Hash): void;
11110
11119
  source(): string | Buffer;