webpack 5.106.2 → 5.107.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.
Files changed (220) hide show
  1. package/README.md +2 -2
  2. package/lib/APIPlugin.js +1 -1
  3. package/lib/Cache.js +3 -6
  4. package/lib/CompatibilityPlugin.js +8 -7
  5. package/lib/Compilation.js +34 -26
  6. package/lib/Compiler.js +4 -13
  7. package/lib/ContextModule.js +2 -2
  8. package/lib/DefinePlugin.js +2 -2
  9. package/lib/Dependency.js +22 -1
  10. package/lib/DependencyTemplate.js +2 -1
  11. package/lib/EnvironmentPlugin.js +1 -1
  12. package/lib/EvalSourceMapDevToolPlugin.js +8 -9
  13. package/lib/ExternalModule.js +76 -15
  14. package/lib/ExternalModuleFactoryPlugin.js +5 -0
  15. package/lib/FileSystemInfo.js +187 -72
  16. package/lib/Generator.js +3 -3
  17. package/lib/HotModuleReplacementPlugin.js +26 -8
  18. package/lib/IgnorePlugin.js +2 -1
  19. package/lib/Module.js +19 -18
  20. package/lib/ModuleFactory.js +1 -1
  21. package/lib/ModuleSourceTypeConstants.js +31 -1
  22. package/lib/ModuleTypeConstants.js +12 -3
  23. package/lib/MultiCompiler.js +2 -2
  24. package/lib/NodeStuffPlugin.js +1 -1
  25. package/lib/NormalModule.js +13 -31
  26. package/lib/NormalModuleFactory.js +10 -2
  27. package/lib/Parser.js +1 -1
  28. package/lib/ProgressPlugin.js +129 -56
  29. package/lib/RuntimeGlobals.js +5 -5
  30. package/lib/RuntimeModule.js +9 -7
  31. package/lib/RuntimePlugin.js +11 -0
  32. package/lib/WarnCaseSensitiveModulesPlugin.js +70 -2
  33. package/lib/WarnDeprecatedOptionPlugin.js +1 -1
  34. package/lib/WarnNoModeSetPlugin.js +16 -1
  35. package/lib/Watching.js +2 -3
  36. package/lib/WebpackError.js +3 -77
  37. package/lib/WebpackIsIncludedPlugin.js +1 -1
  38. package/lib/WebpackOptionsApply.js +13 -1
  39. package/lib/asset/AssetBytesGenerator.js +6 -2
  40. package/lib/asset/AssetGenerator.js +22 -8
  41. package/lib/asset/AssetModulesPlugin.js +3 -1
  42. package/lib/asset/AssetSourceGenerator.js +6 -2
  43. package/lib/buildChunkGraph.js +4 -6
  44. package/lib/cache/PackFileCacheStrategy.js +4 -4
  45. package/lib/cli.js +3 -1
  46. package/lib/config/defaults.js +197 -10
  47. package/lib/config/normalization.js +3 -1
  48. package/lib/css/CssGenerator.js +320 -105
  49. package/lib/css/CssInjectStyleRuntimeModule.js +44 -42
  50. package/lib/css/CssLoadingRuntimeModule.js +22 -4
  51. package/lib/{CssModule.js → css/CssModule.js} +15 -15
  52. package/lib/css/CssModulesPlugin.js +166 -86
  53. package/lib/css/CssParser.js +566 -269
  54. package/lib/css/walkCssTokens.js +148 -2
  55. package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +1 -1
  56. package/lib/dependencies/CommonJsDependencyHelpers.js +63 -0
  57. package/lib/dependencies/CommonJsExportRequireDependency.js +54 -10
  58. package/lib/dependencies/CommonJsExportsParserPlugin.js +1 -1
  59. package/lib/dependencies/CommonJsFullRequireDependency.js +32 -9
  60. package/lib/dependencies/CommonJsImportsParserPlugin.js +4 -3
  61. package/lib/dependencies/CommonJsRequireDependency.js +67 -4
  62. package/lib/dependencies/ContextDependency.js +1 -1
  63. package/lib/dependencies/ContextDependencyHelpers.js +1 -1
  64. package/lib/dependencies/CreateRequireParserPlugin.js +1 -1
  65. package/lib/dependencies/CriticalDependencyWarning.js +1 -1
  66. package/lib/dependencies/CssIcssExportDependency.js +332 -67
  67. package/lib/dependencies/CssIcssImportDependency.js +49 -7
  68. package/lib/dependencies/CssIcssSymbolDependency.js +11 -3
  69. package/lib/dependencies/CssImportDependency.js +8 -0
  70. package/lib/dependencies/CssUrlDependency.js +25 -0
  71. package/lib/dependencies/HarmonyDetectionParserPlugin.js +1 -1
  72. package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +8 -7
  73. package/lib/dependencies/HarmonyExportExpressionDependency.js +22 -14
  74. package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +110 -3
  75. package/lib/dependencies/HarmonyImportDependency.js +10 -2
  76. package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +22 -1
  77. package/lib/dependencies/HarmonyImportSpecifierDependency.js +1 -1
  78. package/lib/{HarmonyLinkingError.js → dependencies/HarmonyLinkingError.js} +5 -3
  79. package/lib/dependencies/HtmlInlineScriptDependency.js +133 -0
  80. package/lib/dependencies/HtmlInlineStyleDependency.js +101 -0
  81. package/lib/dependencies/HtmlScriptSrcDependency.js +318 -0
  82. package/lib/dependencies/HtmlSourceDependency.js +127 -0
  83. package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +1 -1
  84. package/lib/dependencies/ImportParserPlugin.js +2 -2
  85. package/lib/dependencies/ImportPhase.js +1 -1
  86. package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +1 -1
  87. package/lib/{RequireJsStuffPlugin.js → dependencies/RequireJsStuffPlugin.js} +7 -7
  88. package/lib/dependencies/SystemPlugin.js +1 -1
  89. package/lib/dependencies/WebAssemblyImportDependency.js +1 -1
  90. package/lib/dependencies/WorkerPlugin.js +2 -2
  91. package/lib/{DelegatedModule.js → dll/DelegatedModule.js} +31 -31
  92. package/lib/{DelegatedModuleFactoryPlugin.js → dll/DelegatedModuleFactoryPlugin.js} +4 -4
  93. package/lib/{DelegatedPlugin.js → dll/DelegatedPlugin.js} +2 -2
  94. package/lib/{DllEntryPlugin.js → dll/DllEntryPlugin.js} +4 -4
  95. package/lib/{DllModule.js → dll/DllModule.js} +24 -24
  96. package/lib/{DllModuleFactory.js → dll/DllModuleFactory.js} +4 -4
  97. package/lib/{DllPlugin.js → dll/DllPlugin.js} +6 -5
  98. package/lib/{DllReferencePlugin.js → dll/DllReferencePlugin.js} +14 -14
  99. package/lib/{LibManifestPlugin.js → dll/LibManifestPlugin.js} +9 -9
  100. package/lib/{AsyncDependencyToInitialChunkError.js → errors/AsyncDependencyToInitialChunkError.js} +2 -2
  101. package/lib/errors/BuildCycleError.js +1 -1
  102. package/lib/{ChunkRenderError.js → errors/ChunkRenderError.js} +1 -1
  103. package/lib/{CodeGenerationError.js → errors/CodeGenerationError.js} +1 -1
  104. package/lib/{CommentCompilationWarning.js → errors/CommentCompilationWarning.js} +3 -3
  105. package/lib/{ConcurrentCompilationError.js → errors/ConcurrentCompilationError.js} +4 -2
  106. package/lib/{EnvironmentNotSupportAsyncWarning.js → errors/EnvironmentNotSupportAsyncWarning.js} +4 -4
  107. package/lib/{HookWebpackError.js → errors/HookWebpackError.js} +5 -5
  108. package/lib/{IgnoreErrorModuleFactory.js → errors/IgnoreErrorModuleFactory.js} +4 -4
  109. package/lib/{InvalidDependenciesModuleWarning.js → errors/InvalidDependenciesModuleWarning.js} +3 -3
  110. package/lib/errors/JSONParseError.js +114 -0
  111. package/lib/{ModuleBuildError.js → errors/ModuleBuildError.js} +5 -5
  112. package/lib/{ModuleDependencyError.js → errors/ModuleDependencyError.js} +2 -2
  113. package/lib/{ModuleDependencyWarning.js → errors/ModuleDependencyWarning.js} +4 -4
  114. package/lib/{ModuleError.js → errors/ModuleError.js} +5 -5
  115. package/lib/{ModuleHashingError.js → errors/ModuleHashingError.js} +1 -1
  116. package/lib/{ModuleNotFoundError.js → errors/ModuleNotFoundError.js} +2 -2
  117. package/lib/{ModuleParseError.js → errors/ModuleParseError.js} +8 -6
  118. package/lib/{ModuleRestoreError.js → errors/ModuleRestoreError.js} +1 -1
  119. package/lib/{ModuleStoreError.js → errors/ModuleStoreError.js} +1 -1
  120. package/lib/{ModuleWarning.js → errors/ModuleWarning.js} +5 -5
  121. package/lib/{NodeStuffInWebError.js → errors/NodeStuffInWebError.js} +4 -4
  122. package/lib/errors/NonErrorEmittedError.js +28 -0
  123. package/lib/{UnhandledSchemeError.js → errors/UnhandledSchemeError.js} +2 -2
  124. package/lib/{UnsupportedFeatureWarning.js → errors/UnsupportedFeatureWarning.js} +3 -3
  125. package/lib/errors/WebpackError.js +84 -0
  126. package/lib/html/HtmlGenerator.js +379 -0
  127. package/lib/html/HtmlModulesPlugin.js +433 -0
  128. package/lib/html/HtmlParser.js +1489 -0
  129. package/lib/html/walkHtmlTokens.js +2733 -0
  130. package/lib/ids/IdHelpers.js +2 -1
  131. package/lib/index.js +34 -15
  132. package/lib/javascript/JavascriptModulesPlugin.js +89 -8
  133. package/lib/javascript/JavascriptParser.js +197 -16
  134. package/lib/javascript/JavascriptParserHelpers.js +1 -1
  135. package/lib/json/JsonParser.js +7 -16
  136. package/lib/library/AbstractLibraryPlugin.js +1 -1
  137. package/lib/library/EnableLibraryPlugin.js +1 -1
  138. package/lib/{FalseIIFEUmdWarning.js → library/FalseIIFEUmdWarning.js} +1 -1
  139. package/lib/library/ModuleLibraryPlugin.js +74 -0
  140. package/lib/node/NodeEnvironmentPlugin.js +4 -2
  141. package/lib/node/nodeConsole.js +113 -64
  142. package/lib/optimize/ConcatenatedModule.js +51 -6
  143. package/lib/optimize/InnerGraph.js +1 -1
  144. package/lib/optimize/InnerGraphPlugin.js +11 -1
  145. package/lib/optimize/MinMaxSizeWarning.js +4 -4
  146. package/lib/optimize/ModuleConcatenationPlugin.js +15 -7
  147. package/lib/optimize/RealContentHashPlugin.js +89 -26
  148. package/lib/optimize/SideEffectsFlagPlugin.js +111 -3
  149. package/lib/optimize/SplitChunksPlugin.js +1 -1
  150. package/lib/performance/AssetsOverSizeLimitWarning.js +2 -2
  151. package/lib/performance/EntrypointsOverSizeLimitWarning.js +2 -2
  152. package/lib/performance/NoAsyncChunksWarning.js +5 -3
  153. package/lib/performance/SizeLimitsPlugin.js +1 -1
  154. package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +4 -1
  155. package/lib/rules/UseEffectRulePlugin.js +4 -3
  156. package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +119 -13
  157. package/lib/runtime/SetAnonymousDefaultNameRuntimeModule.js +35 -0
  158. package/lib/schemes/DataUriPlugin.js +13 -1
  159. package/lib/schemes/VirtualUrlPlugin.js +1 -1
  160. package/lib/serialization/SerializerMiddleware.js +2 -2
  161. package/lib/sharing/ConsumeSharedPlugin.js +2 -2
  162. package/lib/sharing/ConsumeSharedRuntimeModule.js +8 -4
  163. package/lib/sharing/ProvideSharedModule.js +1 -1
  164. package/lib/sharing/ProvideSharedPlugin.js +1 -1
  165. package/lib/sharing/resolveMatchedConfigs.js +1 -1
  166. package/lib/stats/DefaultStatsFactoryPlugin.js +2 -2
  167. package/lib/stats/DefaultStatsPresetPlugin.js +1 -1
  168. package/lib/stats/DefaultStatsPrinterPlugin.js +1 -1
  169. package/lib/stats/StatsFactory.js +1 -1
  170. package/lib/typescript/TypeScriptPlugin.js +210 -0
  171. package/lib/url/URLParserPlugin.js +2 -2
  172. package/lib/util/AsyncQueue.js +2 -2
  173. package/lib/util/Hash.js +2 -2
  174. package/lib/util/LocConverter.js +53 -0
  175. package/lib/util/SortableSet.js +1 -1
  176. package/lib/util/cleverMerge.js +2 -2
  177. package/lib/util/comparators.js +3 -3
  178. package/lib/util/concatenate.js +3 -3
  179. package/lib/util/conventions.js +42 -1
  180. package/lib/util/createMappings.js +118 -0
  181. package/lib/{formatLocation.js → util/formatLocation.js} +2 -2
  182. package/lib/{SizeFormatHelpers.js → util/formatSize.js} +3 -1
  183. package/lib/util/fs.js +8 -8
  184. package/lib/util/hash/md4.js +1 -1
  185. package/lib/util/hash/xxhash64.js +1 -1
  186. package/lib/util/identifier.js +48 -0
  187. package/lib/util/internalSerializables.js +35 -19
  188. package/lib/util/magicComment.js +10 -7
  189. package/lib/util/parseJson.js +2 -73
  190. package/lib/util/source.js +21 -0
  191. package/lib/util/topologicalSort.js +69 -0
  192. package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +2 -2
  193. package/lib/wasm-async/AsyncWebAssemblyParser.js +1 -1
  194. package/lib/wasm-sync/UnsupportedWebAssemblyFeatureError.js +5 -3
  195. package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +1 -1
  196. package/lib/wasm-sync/WebAssemblyInInitialChunkError.js +5 -3
  197. package/lib/webpack.js +3 -1
  198. package/package.json +22 -20
  199. package/schemas/WebpackOptions.check.js +1 -1
  200. package/schemas/WebpackOptions.json +118 -3
  201. package/schemas/plugins/{DllPlugin.check.d.ts → HtmlGeneratorOptions.check.d.ts} +1 -1
  202. package/schemas/plugins/HtmlGeneratorOptions.check.js +6 -0
  203. package/schemas/plugins/HtmlGeneratorOptions.json +3 -0
  204. package/schemas/plugins/ProgressPlugin.check.js +1 -1
  205. package/schemas/plugins/ProgressPlugin.json +22 -0
  206. package/schemas/plugins/{DllReferencePlugin.check.d.ts → css/CssAutoOrModuleParserOptions.check.d.ts} +1 -1
  207. package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.js +6 -0
  208. package/schemas/plugins/css/CssAutoOrModuleParserOptions.json +3 -0
  209. package/schemas/plugins/dll/DllPlugin.check.d.ts +7 -0
  210. package/schemas/plugins/dll/DllReferencePlugin.check.d.ts +7 -0
  211. package/types.d.ts +810 -101
  212. package/lib/CaseSensitiveModulesWarning.js +0 -80
  213. package/lib/GraphHelpers.js +0 -49
  214. package/lib/NoModeWarning.js +0 -23
  215. package/lib/css/CssMergeStyleSheetsRuntimeModule.js +0 -57
  216. /package/lib/{AbstractMethodError.js → errors/AbstractMethodError.js} +0 -0
  217. /package/schemas/plugins/{DllPlugin.check.js → dll/DllPlugin.check.js} +0 -0
  218. /package/schemas/plugins/{DllPlugin.json → dll/DllPlugin.json} +0 -0
  219. /package/schemas/plugins/{DllReferencePlugin.check.js → dll/DllReferencePlugin.check.js} +0 -0
  220. /package/schemas/plugins/{DllReferencePlugin.json → dll/DllReferencePlugin.json} +0 -0
package/lib/Module.js CHANGED
@@ -51,7 +51,7 @@ const makeSerializable = require("./util/makeSerializable");
51
51
  * @template T
52
52
  * @typedef {import("./InitFragment")<T>} InitFragment
53
53
  */
54
- /** @typedef {import("./WebpackError")} WebpackError */
54
+ /** @typedef {import("./errors/WebpackError")} WebpackError */
55
55
  /** @typedef {import("./json/JsonData")} JsonData */
56
56
  /** @typedef {import("./serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
57
57
  /** @typedef {import("./serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
@@ -129,7 +129,7 @@ const makeSerializable = require("./util/makeSerializable");
129
129
  /**
130
130
  * Defines the code gen value type used by this module.
131
131
  * @template {string} K
132
- * @typedef {K extends keyof AllCodeGenerationSchemas ? AllCodeGenerationSchemas[K] : EXPECTED_ANY} CodeGenValue
132
+ * @typedef {K extends (keyof AllCodeGenerationSchemas) ? AllCodeGenerationSchemas[K] : EXPECTED_ANY} CodeGenValue
133
133
  */
134
134
 
135
135
  /**
@@ -173,7 +173,8 @@ const makeSerializable = require("./util/makeSerializable");
173
173
  * @property {boolean=} treatAsCommonJs
174
174
  * @property {boolean=} async
175
175
  * @property {boolean=} sideEffectFree
176
- * @property {boolean=} isCSSModule
176
+ * @property {boolean=} isCssModule
177
+ * @property {boolean=} needIdInConcatenation
177
178
  * @property {Record<string, string>=} jsIncompatibleExports
178
179
  * @property {Map<string, Record<string, string>>=} exportsFinalNameByRuntime
179
180
  * @property {Map<string, string>=} exportsSourceByRuntime
@@ -303,9 +304,9 @@ class Module extends DependenciesBlock {
303
304
  /** @type {boolean} */
304
305
  this.hot = false;
305
306
  // Info from Build
306
- /** @type {WebpackError[] | undefined} */
307
+ /** @type {Error[] | undefined} */
307
308
  this._warnings = undefined;
308
- /** @type {WebpackError[] | undefined} */
309
+ /** @type {Error[] | undefined} */
309
310
  this._errors = undefined;
310
311
  /** @type {BuildMeta | undefined} */
311
312
  this.buildMeta = undefined;
@@ -782,7 +783,7 @@ class Module extends DependenciesBlock {
782
783
 
783
784
  /**
784
785
  * Adds the provided warning to the module.
785
- * @param {WebpackError} warning the warning
786
+ * @param {Error} warning the warning
786
787
  * @returns {void}
787
788
  */
788
789
  addWarning(warning) {
@@ -794,7 +795,7 @@ class Module extends DependenciesBlock {
794
795
 
795
796
  /**
796
797
  * Returns list of warnings if any.
797
- * @returns {Iterable<WebpackError> | undefined} list of warnings if any
798
+ * @returns {Error[] | undefined} list of warnings if any
798
799
  */
799
800
  getWarnings() {
800
801
  return this._warnings;
@@ -810,7 +811,7 @@ class Module extends DependenciesBlock {
810
811
 
811
812
  /**
812
813
  * Adds the provided error to the module.
813
- * @param {WebpackError} error the error
814
+ * @param {Error} error the error
814
815
  * @returns {void}
815
816
  */
816
817
  addError(error) {
@@ -822,7 +823,7 @@ class Module extends DependenciesBlock {
822
823
 
823
824
  /**
824
825
  * Returns list of errors if any.
825
- * @returns {Iterable<WebpackError> | undefined} list of errors if any
826
+ * @returns {Error[] | undefined} list of errors if any
826
827
  */
827
828
  getErrors() {
828
829
  return this._errors;
@@ -1027,7 +1028,7 @@ class Module extends DependenciesBlock {
1027
1028
  * @returns {string} a unique identifier of the module
1028
1029
  */
1029
1030
  identifier() {
1030
- const AbstractMethodError = require("./AbstractMethodError");
1031
+ const AbstractMethodError = require("./errors/AbstractMethodError");
1031
1032
 
1032
1033
  throw new AbstractMethodError();
1033
1034
  }
@@ -1040,7 +1041,7 @@ class Module extends DependenciesBlock {
1040
1041
  * @returns {string} a user readable identifier of the module
1041
1042
  */
1042
1043
  readableIdentifier(requestShortener) {
1043
- const AbstractMethodError = require("./AbstractMethodError");
1044
+ const AbstractMethodError = require("./errors/AbstractMethodError");
1044
1045
 
1045
1046
  throw new AbstractMethodError();
1046
1047
  }
@@ -1057,7 +1058,7 @@ class Module extends DependenciesBlock {
1057
1058
  * @returns {void}
1058
1059
  */
1059
1060
  build(options, compilation, resolver, fs, callback) {
1060
- const AbstractMethodError = require("./AbstractMethodError");
1061
+ const AbstractMethodError = require("./errors/AbstractMethodError");
1061
1062
 
1062
1063
  throw new AbstractMethodError();
1063
1064
  }
@@ -1099,7 +1100,7 @@ class Module extends DependenciesBlock {
1099
1100
  */
1100
1101
  source(dependencyTemplates, runtimeTemplate, type = JAVASCRIPT_TYPE) {
1101
1102
  if (this.codeGeneration === Module.prototype.codeGeneration) {
1102
- const AbstractMethodError = require("./AbstractMethodError");
1103
+ const AbstractMethodError = require("./errors/AbstractMethodError");
1103
1104
 
1104
1105
  throw new AbstractMethodError();
1105
1106
  }
@@ -1135,7 +1136,7 @@ class Module extends DependenciesBlock {
1135
1136
  * @returns {number} the estimated size of the module (must be non-zero)
1136
1137
  */
1137
1138
  size(type) {
1138
- const AbstractMethodError = require("./AbstractMethodError");
1139
+ const AbstractMethodError = require("./errors/AbstractMethodError");
1139
1140
 
1140
1141
  throw new AbstractMethodError();
1141
1142
  }
@@ -1393,13 +1394,13 @@ Object.defineProperty(Module.prototype, "errors", {
1393
1394
  /**
1394
1395
  * Returns errors.
1395
1396
  * @deprecated
1396
- * @returns {WebpackError[]} errors
1397
+ * @returns {Error[]} errors
1397
1398
  */
1398
1399
  get: util.deprecate(
1399
1400
  /**
1400
1401
  * Returns errors.
1401
1402
  * @this {Module}
1402
- * @returns {WebpackError[]} errors
1403
+ * @returns {Error[]} errors
1403
1404
  */
1404
1405
  function errors() {
1405
1406
  if (this._errors === undefined) {
@@ -1417,13 +1418,13 @@ Object.defineProperty(Module.prototype, "warnings", {
1417
1418
  /**
1418
1419
  * Returns warnings.
1419
1420
  * @deprecated
1420
- * @returns {WebpackError[]} warnings
1421
+ * @returns {Error[]} warnings
1421
1422
  */
1422
1423
  get: util.deprecate(
1423
1424
  /**
1424
1425
  * Returns warnings.
1425
1426
  * @this {Module}
1426
- * @returns {WebpackError[]} warnings
1427
+ * @returns {Error[]} warnings
1427
1428
  */
1428
1429
  function warnings() {
1429
1430
  if (this._warnings === undefined) {
@@ -53,7 +53,7 @@ class ModuleFactory {
53
53
  * @returns {void}
54
54
  */
55
55
  create(data, callback) {
56
- const AbstractMethodError = require("./AbstractMethodError");
56
+ const AbstractMethodError = require("./errors/AbstractMethodError");
57
57
 
58
58
  throw new AbstractMethodError();
59
59
  }
@@ -40,6 +40,16 @@ const CSS_IMPORT_TYPE = "css-import";
40
40
  */
41
41
  const CSS_URL_TYPE = "css-url";
42
42
 
43
+ /**
44
+ * @type {Readonly<"css-text">}
45
+ */
46
+ const CSS_TEXT_TYPE = "css-text";
47
+
48
+ /**
49
+ * @type {Readonly<"html">}
50
+ */
51
+ const HTML_TYPE = "html";
52
+
43
53
  /**
44
54
  * @type {Readonly<"share-init">}
45
55
  */
@@ -62,7 +72,7 @@ const UNKNOWN_TYPE = "unknown";
62
72
 
63
73
  /**
64
74
  * Defines the all types type used by this module.
65
- * @typedef {JAVASCRIPT_TYPE | RUNTIME_TYPE | WEBASSEMBLY_TYPE | ASSET_TYPE | CSS_TYPE | CSS_IMPORT_TYPE | CSS_URL_TYPE | SHARED_INIT_TYPE | REMOTE_GENERATOR_TYPE | CONSUME_SHARED_GENERATOR_TYPE | UNKNOWN_TYPE} AllTypes
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
66
76
  */
67
77
 
68
78
  /**
@@ -118,11 +128,26 @@ const CSS_TYPES = new Set([CSS_TYPE]);
118
128
  * @type {ReadonlySet<"css-url">}
119
129
  */
120
130
  const CSS_URL_TYPES = new Set([CSS_URL_TYPE]);
131
+
132
+ /**
133
+ * @type {ReadonlySet<"css-text">}
134
+ */
135
+ const CSS_TEXT_TYPES = new Set([CSS_TEXT_TYPE]);
136
+
137
+ /**
138
+ * @type {ReadonlySet<"javascript" | "css-text">}
139
+ */
140
+ const JAVASCRIPT_AND_CSS_TEXT_TYPES = new Set([JAVASCRIPT_TYPE, CSS_TEXT_TYPE]);
121
141
  /**
122
142
  * @type {ReadonlySet<"css-import">}
123
143
  */
124
144
  const CSS_IMPORT_TYPES = new Set([CSS_IMPORT_TYPE]);
125
145
 
146
+ /**
147
+ * @type {ReadonlySet<"html">}
148
+ */
149
+ const HTML_TYPES = new Set([HTML_TYPE]);
150
+
126
151
  /**
127
152
  * @type {ReadonlySet<"webassembly">}
128
153
  */
@@ -160,11 +185,16 @@ module.exports.ASSET_TYPES = ASSET_TYPES;
160
185
  module.exports.CONSUME_SHARED_TYPES = CONSUME_SHARED_TYPES;
161
186
  module.exports.CSS_IMPORT_TYPE = CSS_IMPORT_TYPE;
162
187
  module.exports.CSS_IMPORT_TYPES = CSS_IMPORT_TYPES;
188
+ module.exports.CSS_TEXT_TYPE = CSS_TEXT_TYPE;
189
+ module.exports.CSS_TEXT_TYPES = CSS_TEXT_TYPES;
163
190
  module.exports.CSS_TYPE = CSS_TYPE;
164
191
  module.exports.CSS_TYPE = CSS_TYPE;
165
192
  module.exports.CSS_TYPES = CSS_TYPES;
166
193
  module.exports.CSS_URL_TYPE = CSS_URL_TYPE;
167
194
  module.exports.CSS_URL_TYPES = CSS_URL_TYPES;
195
+ module.exports.HTML_TYPE = HTML_TYPE;
196
+ module.exports.HTML_TYPES = HTML_TYPES;
197
+ module.exports.JAVASCRIPT_AND_CSS_TEXT_TYPES = JAVASCRIPT_AND_CSS_TEXT_TYPES;
168
198
  module.exports.JAVASCRIPT_AND_CSS_TYPES = JAVASCRIPT_AND_CSS_TYPES;
169
199
  module.exports.JAVASCRIPT_AND_CSS_URL_TYPES = JAVASCRIPT_AND_CSS_URL_TYPES;
170
200
  module.exports.JAVASCRIPT_TYPE = JAVASCRIPT_TYPE;
@@ -65,6 +65,13 @@ const CSS_MODULE_TYPE_MODULE = "css/module";
65
65
  */
66
66
  const CSS_MODULE_TYPE_AUTO = "css/auto";
67
67
 
68
+ /**
69
+ * @type {Readonly<"html">}
70
+ * This is the module type used for HTML files when `experiments.html` is enabled.
71
+ * HTML modules are emitted as HTML assets and can be used as entry points.
72
+ */
73
+ const HTML_MODULE_TYPE = "html";
74
+
68
75
  /**
69
76
  * @type {Readonly<"asset">}
70
77
  * This is the module type used for automatically choosing between `asset/inline`, `asset/resource` based on asset size limit (8096).
@@ -140,11 +147,12 @@ const WEBPACK_MODULE_TYPE_LAZY_COMPILATION_PROXY = "lazy-compilation-proxy";
140
147
  /** @typedef {"javascript/auto" | "javascript/dynamic" | "javascript/esm"} JavaScriptModuleTypes */
141
148
  /** @typedef {"json"} JSONModuleType */
142
149
  /** @typedef {"webassembly/async" | "webassembly/sync"} WebAssemblyModuleTypes */
143
- /** @typedef {"css" | "css/global" | "css/module" | "css/auto"} CSSModuleTypes */
150
+ /** @typedef {"css" | "css/global" | "css/module" | "css/auto"} CssModuleTypes */
151
+ /** @typedef {"html"} HTMLModuleType */
144
152
  /** @typedef {"asset" | "asset/inline" | "asset/resource" | "asset/source" | "asset/raw-data-url"} AssetModuleTypes */
145
153
  /** @typedef {"runtime" | "fallback-module" | "remote-module" | "provide-module" | "consume-shared-module" | "lazy-compilation-proxy"} WebpackModuleTypes */
146
154
  /** @typedef {string} UnknownModuleTypes */
147
- /** @typedef {JavaScriptModuleTypes | JSONModuleType | WebAssemblyModuleTypes | CSSModuleTypes | AssetModuleTypes | WebpackModuleTypes | UnknownModuleTypes} ModuleTypes */
155
+ /** @typedef {JavaScriptModuleTypes | JSONModuleType | WebAssemblyModuleTypes | CssModuleTypes | HTMLModuleType | AssetModuleTypes | WebpackModuleTypes | UnknownModuleTypes} ModuleTypes */
148
156
 
149
157
  module.exports.ASSET_MODULE_TYPE = ASSET_MODULE_TYPE;
150
158
  module.exports.ASSET_MODULE_TYPE_BYTES = ASSET_MODULE_TYPE_BYTES;
@@ -152,7 +160,7 @@ module.exports.ASSET_MODULE_TYPE_INLINE = ASSET_MODULE_TYPE_INLINE;
152
160
  module.exports.ASSET_MODULE_TYPE_RAW_DATA_URL = ASSET_MODULE_TYPE_RAW_DATA_URL;
153
161
  module.exports.ASSET_MODULE_TYPE_RESOURCE = ASSET_MODULE_TYPE_RESOURCE;
154
162
  module.exports.ASSET_MODULE_TYPE_SOURCE = ASSET_MODULE_TYPE_SOURCE;
155
- /** @type {CSSModuleTypes[]} */
163
+ /** @type {CssModuleTypes[]} */
156
164
  module.exports.CSS_MODULES = [
157
165
  CSS_MODULE_TYPE,
158
166
  CSS_MODULE_TYPE_GLOBAL,
@@ -163,6 +171,7 @@ module.exports.CSS_MODULE_TYPE = CSS_MODULE_TYPE;
163
171
  module.exports.CSS_MODULE_TYPE_AUTO = CSS_MODULE_TYPE_AUTO;
164
172
  module.exports.CSS_MODULE_TYPE_GLOBAL = CSS_MODULE_TYPE_GLOBAL;
165
173
  module.exports.CSS_MODULE_TYPE_MODULE = CSS_MODULE_TYPE_MODULE;
174
+ module.exports.HTML_MODULE_TYPE = HTML_MODULE_TYPE;
166
175
  /** @type {JavaScriptModuleTypes[]} */
167
176
  module.exports.JAVASCRIPT_MODULES = [
168
177
  JAVASCRIPT_MODULE_TYPE_AUTO,
@@ -8,10 +8,10 @@
8
8
  const asyncLib = require("neo-async");
9
9
  const { MultiHook, SyncHook } = require("tapable");
10
10
 
11
- const ConcurrentCompilationError = require("./ConcurrentCompilationError");
12
11
  const MultiStats = require("./MultiStats");
13
12
  const MultiWatching = require("./MultiWatching");
14
- const WebpackError = require("./WebpackError");
13
+ const ConcurrentCompilationError = require("./errors/ConcurrentCompilationError");
14
+ const WebpackError = require("./errors/WebpackError");
15
15
  const ArrayQueue = require("./util/ArrayQueue");
16
16
 
17
17
  /**
@@ -10,13 +10,13 @@ const {
10
10
  JAVASCRIPT_MODULE_TYPE_DYNAMIC,
11
11
  JAVASCRIPT_MODULE_TYPE_ESM
12
12
  } = require("./ModuleTypeConstants");
13
- const NodeStuffInWebError = require("./NodeStuffInWebError");
14
13
  const RuntimeGlobals = require("./RuntimeGlobals");
15
14
  const CachedConstDependency = require("./dependencies/CachedConstDependency");
16
15
  const ConstDependency = require("./dependencies/ConstDependency");
17
16
  const ExternalModuleDependency = require("./dependencies/ExternalModuleDependency");
18
17
  const ExternalModuleInitFragmentDependency = require("./dependencies/ExternalModuleInitFragmentDependency");
19
18
  const ImportMetaPlugin = require("./dependencies/ImportMetaPlugin");
19
+ const NodeStuffInWebError = require("./errors/NodeStuffInWebError");
20
20
  const { evaluateToString } = require("./javascript/JavascriptParserHelpers");
21
21
  const { relative } = require("./util/fs");
22
22
  const { parseResource } = require("./util/identifier");
@@ -20,18 +20,17 @@ const {
20
20
  SourceMapSource
21
21
  } = require("webpack-sources");
22
22
  const Compilation = require("./Compilation");
23
- const HookWebpackError = require("./HookWebpackError");
24
23
  const Module = require("./Module");
25
- const ModuleBuildError = require("./ModuleBuildError");
26
- const ModuleError = require("./ModuleError");
27
24
  const ModuleGraphConnection = require("./ModuleGraphConnection");
28
- const ModuleParseError = require("./ModuleParseError");
29
25
  const { JAVASCRIPT_MODULE_TYPE_AUTO } = require("./ModuleTypeConstants");
30
- const ModuleWarning = require("./ModuleWarning");
31
26
  const RuntimeGlobals = require("./RuntimeGlobals");
32
- const UnhandledSchemeError = require("./UnhandledSchemeError");
33
- const WebpackError = require("./WebpackError");
34
- const formatLocation = require("./formatLocation");
27
+ const HookWebpackError = require("./errors/HookWebpackError");
28
+ const ModuleBuildError = require("./errors/ModuleBuildError");
29
+ const ModuleError = require("./errors/ModuleError");
30
+ const ModuleParseError = require("./errors/ModuleParseError");
31
+ const ModuleWarning = require("./errors/ModuleWarning");
32
+ const NonErrorEmittedError = require("./errors/NonErrorEmittedError");
33
+ const UnhandledSchemeError = require("./errors/UnhandledSchemeError");
35
34
  const LazySet = require("./util/LazySet");
36
35
  const { isSubset } = require("./util/SetHelpers");
37
36
  const { getScheme } = require("./util/URLAbsoluteSpecifier");
@@ -44,6 +43,7 @@ const {
44
43
  } = require("./util/comparators");
45
44
  const createHash = require("./util/createHash");
46
45
  const { createFakeHook } = require("./util/deprecation");
46
+ const formatLocation = require("./util/formatLocation");
47
47
  const { join } = require("./util/fs");
48
48
  const {
49
49
  absolutify,
@@ -119,7 +119,7 @@ const parseJson = require("./util/parseJson");
119
119
  /** @typedef {(content: string) => boolean} NoParseFn */
120
120
 
121
121
  const getInvalidDependenciesModuleWarning = memoize(() =>
122
- require("./InvalidDependenciesModuleWarning")
122
+ require("./errors/InvalidDependenciesModuleWarning")
123
123
  );
124
124
 
125
125
  const getExtractSourceMap = memoize(() => require("./util/extractSourceMap"));
@@ -207,24 +207,6 @@ const asBuffer = (input) => {
207
207
  return input;
208
208
  };
209
209
 
210
- class NonErrorEmittedError extends WebpackError {
211
- /**
212
- * @param {EXPECTED_ANY} error value which is not an instance of Error
213
- */
214
- constructor(error) {
215
- super();
216
-
217
- this.name = "NonErrorEmittedError";
218
- this.message = `(Emitted value instead of an instance of Error) ${error}`;
219
- }
220
- }
221
-
222
- makeSerializable(
223
- NonErrorEmittedError,
224
- "webpack/lib/NormalModule",
225
- "NonErrorEmittedError"
226
- );
227
-
228
210
  /** @typedef {[string | Buffer, string | RawSourceMap | undefined, PreparsedAst | undefined]} Result */
229
211
 
230
212
  /** @typedef {LoaderContext<EXPECTED_ANY>} AnyLoaderContext */
@@ -394,7 +376,7 @@ class NormalModule extends Module {
394
376
  this.extractSourceMap = extractSourceMap;
395
377
 
396
378
  // Info from Build
397
- /** @type {WebpackError | null} */
379
+ /** @type {Error | null} */
398
380
  this.error = null;
399
381
  /**
400
382
  * @private
@@ -1176,7 +1158,7 @@ class NormalModule extends Module {
1176
1158
  }
1177
1159
 
1178
1160
  /**
1179
- * @param {WebpackError} error the error
1161
+ * @param {Error} error the error
1180
1162
  * @returns {void}
1181
1163
  */
1182
1164
  markModuleAsErrored(error) {
@@ -1328,7 +1310,7 @@ class NormalModule extends Module {
1328
1310
  try {
1329
1311
  hooks.beforeSnapshot.call(this);
1330
1312
  } catch (err) {
1331
- this.markModuleAsErrored(/** @type {WebpackError} */ (err));
1313
+ this.markModuleAsErrored(/** @type {Error} */ (err));
1332
1314
  return callback();
1333
1315
  }
1334
1316
 
@@ -1420,7 +1402,7 @@ class NormalModule extends Module {
1420
1402
  try {
1421
1403
  hooks.beforeParse.call(this);
1422
1404
  } catch (err) {
1423
- this.markModuleAsErrored(/** @type {WebpackError} */ (err));
1405
+ this.markModuleAsErrored(/** @type {Error} */ (err));
1424
1406
  this._initBuildHash(compilation);
1425
1407
  return callback();
1426
1408
  }
@@ -31,6 +31,7 @@ const { getScheme } = require("./util/URLAbsoluteSpecifier");
31
31
  const { cachedCleverMerge, cachedSetProperty } = require("./util/cleverMerge");
32
32
  const { join } = require("./util/fs");
33
33
  const {
34
+ escapeHashInPathRequest,
34
35
  parseResource,
35
36
  parseResourceWithoutFragment
36
37
  } = require("./util/identifier");
@@ -132,8 +133,9 @@ const {
132
133
  /** @typedef {import("./ModuleTypeConstants").CSS_MODULE_TYPE_GLOBAL} CSS_MODULE_TYPE_GLOBAL */
133
134
  /** @typedef {import("./ModuleTypeConstants").CSS_MODULE_TYPE_MODULE} CSS_MODULE_TYPE_MODULE */
134
135
  /** @typedef {import("./ModuleTypeConstants").CSS_MODULE_TYPE_AUTO} CSS_MODULE_TYPE_AUTO */
136
+ /** @typedef {import("./ModuleTypeConstants").HTML_MODULE_TYPE} HTML_MODULE_TYPE */
135
137
 
136
- /** @typedef {JAVASCRIPT_MODULE_TYPE_AUTO | JAVASCRIPT_MODULE_TYPE_DYNAMIC | JAVASCRIPT_MODULE_TYPE_ESM | JSON_MODULE_TYPE | ASSET_MODULE_TYPE | ASSET_MODULE_TYPE_INLINE | ASSET_MODULE_TYPE_RESOURCE | ASSET_MODULE_TYPE_SOURCE | WEBASSEMBLY_MODULE_TYPE_ASYNC | WEBASSEMBLY_MODULE_TYPE_SYNC | CSS_MODULE_TYPE | CSS_MODULE_TYPE_GLOBAL | CSS_MODULE_TYPE_MODULE | CSS_MODULE_TYPE_AUTO} KnownNormalModuleTypes */
138
+ /** @typedef {JAVASCRIPT_MODULE_TYPE_AUTO | JAVASCRIPT_MODULE_TYPE_DYNAMIC | JAVASCRIPT_MODULE_TYPE_ESM | JSON_MODULE_TYPE | ASSET_MODULE_TYPE | ASSET_MODULE_TYPE_INLINE | ASSET_MODULE_TYPE_RESOURCE | ASSET_MODULE_TYPE_SOURCE | WEBASSEMBLY_MODULE_TYPE_ASYNC | WEBASSEMBLY_MODULE_TYPE_SYNC | CSS_MODULE_TYPE | CSS_MODULE_TYPE_GLOBAL | CSS_MODULE_TYPE_MODULE | CSS_MODULE_TYPE_AUTO | HTML_MODULE_TYPE} KnownNormalModuleTypes */
137
139
  /** @typedef {KnownNormalModuleTypes | string} NormalModuleTypes */
138
140
 
139
141
  const EMPTY_RESOLVE_OPTIONS = {};
@@ -319,6 +321,11 @@ const ruleSetCompiler = new RuleSetCompiler([
319
321
  /** @typedef {import("../declarations/WebpackOptions").CssGeneratorOptions} CssGeneratorOptions */
320
322
  /** @typedef {import("../declarations/WebpackOptions").CssModuleGeneratorOptions} CssModuleGeneratorOptions */
321
323
 
324
+ /** @typedef {import("./html/HtmlParser")} HtmlParser */
325
+ /** @typedef {import("../declarations/WebpackOptions").EmptyParserOptions} HtmlParserOptions */
326
+ /** @typedef {import("./html/HtmlGenerator")} HtmlGenerator */
327
+ /** @typedef {import("../declarations/WebpackOptions").EmptyGeneratorOptions} HtmlGeneratorOptions */
328
+
322
329
  /* eslint-disable jsdoc/type-formatting */
323
330
  /**
324
331
  * Defines the shared type used by this module.
@@ -338,6 +345,7 @@ const ruleSetCompiler = new RuleSetCompiler([
338
345
  * [CSS_MODULE_TYPE_AUTO, CssParser, CssModuleParserOptions, CssGenerator, CssModuleGeneratorOptions],
339
346
  * [CSS_MODULE_TYPE_MODULE, CssParser, CssModuleParserOptions, CssGenerator, CssModuleGeneratorOptions],
340
347
  * [CSS_MODULE_TYPE_GLOBAL, CssParser, CssModuleParserOptions, CssGenerator, CssModuleGeneratorOptions],
348
+ * [HTML_MODULE_TYPE, HtmlParser, HtmlParserOptions, HtmlGenerator, HtmlGeneratorOptions],
341
349
  * [string, Parser, ParserOptions, Generator, GeneratorOptions],
342
350
  * ]} ParsersAndGeneratorsByTypes
343
351
  */
@@ -910,7 +918,7 @@ class NormalModuleFactory extends ModuleFactory {
910
918
  this.resolveResource(
911
919
  contextInfo,
912
920
  context,
913
- unresolvedResource,
921
+ escapeHashInPathRequest(unresolvedResource),
914
922
  normalResolver,
915
923
  resolveContext,
916
924
  (err, _resolvedResource, resolvedResourceResolveData) => {
package/lib/Parser.js CHANGED
@@ -33,7 +33,7 @@ class Parser {
33
33
  * @returns {ParserState} the parser state
34
34
  */
35
35
  parse(source, state) {
36
- const AbstractMethodError = require("./AbstractMethodError");
36
+ const AbstractMethodError = require("./errors/AbstractMethodError");
37
37
 
38
38
  throw new AbstractMethodError();
39
39
  }