webpack 5.107.0 → 5.107.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.
Files changed (64) hide show
  1. package/lib/BannerPlugin.js +3 -4
  2. package/lib/Chunk.js +21 -25
  3. package/lib/ChunkGroup.js +57 -15
  4. package/lib/Compilation.js +33 -11
  5. package/lib/Compiler.js +27 -3
  6. package/lib/ContextModuleFactory.js +45 -38
  7. package/lib/EvalSourceMapDevToolPlugin.js +0 -1
  8. package/lib/ExportsInfo.js +30 -34
  9. package/lib/ExternalModule.js +15 -11
  10. package/lib/ExternalModuleFactoryPlugin.js +2 -1
  11. package/lib/Module.js +1 -1
  12. package/lib/ModuleNotFoundError.js +10 -0
  13. package/lib/ModuleSourceTypeConstants.js +24 -22
  14. package/lib/MultiCompiler.js +14 -0
  15. package/lib/NormalModule.js +531 -53
  16. package/lib/NormalModuleFactory.js +38 -26
  17. package/lib/ProgressPlugin.js +1 -1
  18. package/lib/RuntimePlugin.js +1 -1
  19. package/lib/SourceMapDevToolPlugin.js +335 -57
  20. package/lib/Template.js +1 -1
  21. package/lib/TemplatedPathPlugin.js +22 -4
  22. package/lib/asset/AssetBytesGenerator.js +6 -6
  23. package/lib/asset/AssetGenerator.js +14 -14
  24. package/lib/asset/AssetModulesPlugin.js +3 -7
  25. package/lib/asset/AssetSourceGenerator.js +6 -6
  26. package/lib/buildChunkGraph.js +24 -2
  27. package/lib/cache/getLazyHashedEtag.js +9 -2
  28. package/lib/css/CssModulesPlugin.js +2 -2
  29. package/lib/dependencies/CommonJsImportsParserPlugin.js +108 -1
  30. package/lib/dependencies/CssUrlDependency.js +3 -2
  31. package/lib/dependencies/HarmonyDetectionParserPlugin.js +21 -1
  32. package/lib/dependencies/HarmonyExportInitFragment.js +8 -9
  33. package/lib/dependencies/HtmlInlineScriptDependency.js +3 -14
  34. package/lib/dependencies/HtmlInlineStyleDependency.js +17 -0
  35. package/lib/dependencies/HtmlScriptSrcDependency.js +265 -65
  36. package/lib/dependencies/HtmlSourceDependency.js +21 -2
  37. package/lib/dependencies/WorkerPlugin.js +18 -4
  38. package/lib/hmr/LazyCompilationPlugin.js +104 -0
  39. package/lib/html/HtmlGenerator.js +81 -33
  40. package/lib/html/HtmlModulesPlugin.js +87 -28
  41. package/lib/html/walkHtmlTokens.js +641 -125
  42. package/lib/index.js +2 -0
  43. package/lib/javascript/JavascriptModulesPlugin.js +2 -2
  44. package/lib/javascript/JavascriptParser.js +1 -1
  45. package/lib/library/ModuleLibraryPlugin.js +30 -24
  46. package/lib/node/NodeWatchFileSystem.js +37 -22
  47. package/lib/optimize/ConcatenatedModule.js +3 -2
  48. package/lib/optimize/SideEffectsFlagPlugin.js +1 -2
  49. package/lib/optimize/SplitChunksPlugin.js +4 -4
  50. package/lib/runtime/AutoPublicPathRuntimeModule.js +3 -3
  51. package/lib/runtime/GetChunkFilenameRuntimeModule.js +5 -5
  52. package/lib/sharing/ConsumeSharedPlugin.js +2 -8
  53. package/lib/sharing/ProvideSharedPlugin.js +4 -4
  54. package/lib/util/fs.js +6 -1
  55. package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +1 -2
  56. package/package.json +5 -5
  57. package/schemas/WebpackOptions.check.js +1 -1
  58. package/schemas/WebpackOptions.json +11 -9
  59. package/schemas/plugins/container/ContainerReferencePlugin.check.js +1 -1
  60. package/schemas/plugins/container/ContainerReferencePlugin.json +1 -0
  61. package/schemas/plugins/container/ExternalsType.check.js +1 -1
  62. package/schemas/plugins/container/ModuleFederationPlugin.check.js +1 -1
  63. package/schemas/plugins/container/ModuleFederationPlugin.json +1 -0
  64. package/types.d.ts +472 -149
@@ -25,6 +25,11 @@ const WEBASSEMBLY_TYPE = "webassembly";
25
25
  */
26
26
  const ASSET_TYPE = "asset";
27
27
 
28
+ /**
29
+ * @type {Readonly<"asset-url">}
30
+ */
31
+ const ASSET_URL_TYPE = "asset-url";
32
+
28
33
  /**
29
34
  * @type {Readonly<"css">}
30
35
  */
@@ -35,11 +40,6 @@ const CSS_TYPE = "css";
35
40
  */
36
41
  const CSS_IMPORT_TYPE = "css-import";
37
42
 
38
- /**
39
- * @type {Readonly<"css-url">}
40
- */
41
- const CSS_URL_TYPE = "css-url";
42
-
43
43
  /**
44
44
  * @type {Readonly<"css-text">}
45
45
  */
@@ -72,7 +72,7 @@ const UNKNOWN_TYPE = "unknown";
72
72
 
73
73
  /**
74
74
  * Defines the all types type used by this module.
75
- * @typedef {JAVASCRIPT_TYPE | RUNTIME_TYPE | WEBASSEMBLY_TYPE | ASSET_TYPE | CSS_TYPE | CSS_IMPORT_TYPE | CSS_URL_TYPE | CSS_TEXT_TYPE | HTML_TYPE | SHARED_INIT_TYPE | REMOTE_GENERATOR_TYPE | CONSUME_SHARED_GENERATOR_TYPE | UNKNOWN_TYPE} AllTypes
75
+ * @typedef {JAVASCRIPT_TYPE | RUNTIME_TYPE | WEBASSEMBLY_TYPE | ASSET_TYPE | ASSET_URL_TYPE | CSS_TYPE | CSS_IMPORT_TYPE | CSS_TEXT_TYPE | HTML_TYPE | SHARED_INIT_TYPE | REMOTE_GENERATOR_TYPE | CONSUME_SHARED_GENERATOR_TYPE | UNKNOWN_TYPE} AllTypes
76
76
  */
77
77
 
78
78
  /**
@@ -91,17 +91,17 @@ const ASSET_TYPES = new Set([ASSET_TYPE]);
91
91
  const ASSET_AND_JAVASCRIPT_TYPES = new Set([ASSET_TYPE, JAVASCRIPT_TYPE]);
92
92
 
93
93
  /**
94
- * @type {ReadonlySet<"css-url" | "asset">}
94
+ * @type {ReadonlySet<"asset-url" | "asset">}
95
95
  */
96
- const ASSET_AND_CSS_URL_TYPES = new Set([ASSET_TYPE, CSS_URL_TYPE]);
96
+ const ASSET_AND_ASSET_URL_TYPES = new Set([ASSET_TYPE, ASSET_URL_TYPE]);
97
97
 
98
98
  /**
99
- * @type {ReadonlySet<"javascript" | "css-url" | "asset">}
99
+ * @type {ReadonlySet<"javascript" | "asset-url" | "asset">}
100
100
  */
101
- const ASSET_AND_JAVASCRIPT_AND_CSS_URL_TYPES = new Set([
101
+ const ASSET_AND_JAVASCRIPT_AND_ASSET_URL_TYPES = new Set([
102
102
  ASSET_TYPE,
103
103
  JAVASCRIPT_TYPE,
104
- CSS_URL_TYPE
104
+ ASSET_URL_TYPE
105
105
  ]);
106
106
 
107
107
  /**
@@ -110,9 +110,12 @@ const ASSET_AND_JAVASCRIPT_AND_CSS_URL_TYPES = new Set([
110
110
  const JAVASCRIPT_TYPES = new Set([JAVASCRIPT_TYPE]);
111
111
 
112
112
  /**
113
- * @type {ReadonlySet<"javascript" | "css-url">}
113
+ * @type {ReadonlySet<"javascript" | "asset-url">}
114
114
  */
115
- const JAVASCRIPT_AND_CSS_URL_TYPES = new Set([JAVASCRIPT_TYPE, CSS_URL_TYPE]);
115
+ const JAVASCRIPT_AND_ASSET_URL_TYPES = new Set([
116
+ JAVASCRIPT_TYPE,
117
+ ASSET_URL_TYPE
118
+ ]);
116
119
 
117
120
  /**
118
121
  * @type {ReadonlySet<"javascript" | "css">}
@@ -125,9 +128,9 @@ const JAVASCRIPT_AND_CSS_TYPES = new Set([JAVASCRIPT_TYPE, CSS_TYPE]);
125
128
  const CSS_TYPES = new Set([CSS_TYPE]);
126
129
 
127
130
  /**
128
- * @type {ReadonlySet<"css-url">}
131
+ * @type {ReadonlySet<"asset-url">}
129
132
  */
130
- const CSS_URL_TYPES = new Set([CSS_URL_TYPE]);
133
+ const ASSET_URL_TYPES = new Set([ASSET_URL_TYPE]);
131
134
 
132
135
  /**
133
136
  * @type {ReadonlySet<"css-text">}
@@ -176,27 +179,26 @@ const CONSUME_SHARED_TYPES = new Set([CONSUME_SHARED_GENERATOR_TYPE]);
176
179
  */
177
180
  const SHARED_INIT_TYPES = new Set([SHARED_INIT_TYPE]);
178
181
 
179
- module.exports.ASSET_AND_CSS_URL_TYPES = ASSET_AND_CSS_URL_TYPES;
180
- module.exports.ASSET_AND_JAVASCRIPT_AND_CSS_URL_TYPES =
181
- ASSET_AND_JAVASCRIPT_AND_CSS_URL_TYPES;
182
+ module.exports.ASSET_AND_ASSET_URL_TYPES = ASSET_AND_ASSET_URL_TYPES;
183
+ module.exports.ASSET_AND_JAVASCRIPT_AND_ASSET_URL_TYPES =
184
+ ASSET_AND_JAVASCRIPT_AND_ASSET_URL_TYPES;
182
185
  module.exports.ASSET_AND_JAVASCRIPT_TYPES = ASSET_AND_JAVASCRIPT_TYPES;
183
186
  module.exports.ASSET_TYPE = ASSET_TYPE;
184
187
  module.exports.ASSET_TYPES = ASSET_TYPES;
188
+ module.exports.ASSET_URL_TYPE = ASSET_URL_TYPE;
189
+ module.exports.ASSET_URL_TYPES = ASSET_URL_TYPES;
185
190
  module.exports.CONSUME_SHARED_TYPES = CONSUME_SHARED_TYPES;
186
191
  module.exports.CSS_IMPORT_TYPE = CSS_IMPORT_TYPE;
187
192
  module.exports.CSS_IMPORT_TYPES = CSS_IMPORT_TYPES;
188
193
  module.exports.CSS_TEXT_TYPE = CSS_TEXT_TYPE;
189
194
  module.exports.CSS_TEXT_TYPES = CSS_TEXT_TYPES;
190
195
  module.exports.CSS_TYPE = CSS_TYPE;
191
- module.exports.CSS_TYPE = CSS_TYPE;
192
196
  module.exports.CSS_TYPES = CSS_TYPES;
193
- module.exports.CSS_URL_TYPE = CSS_URL_TYPE;
194
- module.exports.CSS_URL_TYPES = CSS_URL_TYPES;
195
197
  module.exports.HTML_TYPE = HTML_TYPE;
196
198
  module.exports.HTML_TYPES = HTML_TYPES;
199
+ module.exports.JAVASCRIPT_AND_ASSET_URL_TYPES = JAVASCRIPT_AND_ASSET_URL_TYPES;
197
200
  module.exports.JAVASCRIPT_AND_CSS_TEXT_TYPES = JAVASCRIPT_AND_CSS_TEXT_TYPES;
198
201
  module.exports.JAVASCRIPT_AND_CSS_TYPES = JAVASCRIPT_AND_CSS_TYPES;
199
- module.exports.JAVASCRIPT_AND_CSS_URL_TYPES = JAVASCRIPT_AND_CSS_URL_TYPES;
200
202
  module.exports.JAVASCRIPT_TYPE = JAVASCRIPT_TYPE;
201
203
  module.exports.JAVASCRIPT_TYPES = JAVASCRIPT_TYPES;
202
204
  module.exports.NO_TYPES = NO_TYPES;
@@ -128,6 +128,20 @@ module.exports = class MultiCompiler {
128
128
  doneCompilers--;
129
129
  }
130
130
  });
131
+ // Release fields on this child's Compilation once it's done. The
132
+ // stage: Infinity tap runs after every afterDone tap at a lower
133
+ // stage, so plugins observing compilation state in afterDone still
134
+ // see it intact. Stats remains usable; only fields Stats never reads
135
+ // (and that the persistent cache never serializes) are dropped.
136
+
137
+ compiler.hooks.afterDone.tap(
138
+ { name: CLASS_NAME, stage: Infinity },
139
+ (stats) => {
140
+ if (stats !== undefined) {
141
+ compiler._releaseUnusedCompilationData(stats.compilation);
142
+ }
143
+ }
144
+ );
131
145
  }
132
146
  this._validateCompilersOptions();
133
147
  }