webpack 5.83.1 → 5.85.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 (232) hide show
  1. package/README.md +2 -2
  2. package/lib/AsyncDependenciesBlock.js +2 -2
  3. package/lib/AutomaticPrefetchPlugin.js +1 -0
  4. package/lib/BannerPlugin.js +4 -0
  5. package/lib/CacheFacade.js +4 -0
  6. package/lib/ChunkGroup.js +5 -1
  7. package/lib/CleanPlugin.js +30 -7
  8. package/lib/CompatibilityPlugin.js +4 -3
  9. package/lib/Compilation.js +3 -3
  10. package/lib/Compiler.js +1 -1
  11. package/lib/ContextModule.js +3 -3
  12. package/lib/ContextModuleFactory.js +1 -1
  13. package/lib/DefinePlugin.js +11 -2
  14. package/lib/DllEntryPlugin.js +5 -0
  15. package/lib/DllModule.js +1 -1
  16. package/lib/DllModuleFactory.js +1 -1
  17. package/lib/EvalSourceMapDevToolPlugin.js +3 -1
  18. package/lib/HookWebpackError.js +1 -1
  19. package/lib/IgnoreErrorModuleFactory.js +1 -1
  20. package/lib/MainTemplate.js +2 -2
  21. package/lib/Module.js +21 -9
  22. package/lib/ModuleFactory.js +1 -1
  23. package/lib/ModuleTypeConstants.js +2 -1
  24. package/lib/NormalModuleFactory.js +1 -1
  25. package/lib/NormalModuleReplacementPlugin.js +4 -2
  26. package/lib/NullFactory.js +1 -1
  27. package/lib/PrefetchPlugin.js +4 -0
  28. package/lib/RecordIdsPlugin.js +4 -4
  29. package/lib/RuntimeModule.js +5 -5
  30. package/lib/RuntimePlugin.js +4 -0
  31. package/lib/RuntimeTemplate.js +7 -7
  32. package/lib/SelfModuleFactory.js +12 -0
  33. package/lib/SourceMapDevToolPlugin.js +9 -2
  34. package/lib/Template.js +3 -2
  35. package/lib/UseStrictPlugin.js +4 -0
  36. package/lib/WarnDeprecatedOptionPlugin.js +7 -0
  37. package/lib/WatchIgnorePlugin.js +4 -0
  38. package/lib/WebpackOptionsApply.js +2 -1
  39. package/lib/asset/AssetGenerator.js +7 -2
  40. package/lib/asset/AssetModulesPlugin.js +7 -1
  41. package/lib/asset/AssetParser.js +4 -1
  42. package/lib/asset/RawDataUrlModule.js +5 -3
  43. package/lib/async-modules/InferAsyncModulesPlugin.js +1 -1
  44. package/lib/cache/PackFileCacheStrategy.js +7 -1
  45. package/lib/config/browserslistTargetHandler.js +3 -3
  46. package/lib/config/defaults.js +240 -73
  47. package/lib/config/normalization.js +104 -71
  48. package/lib/config/target.js +37 -10
  49. package/lib/container/ContainerEntryModule.js +4 -0
  50. package/lib/container/ContainerEntryModuleFactory.js +1 -1
  51. package/lib/container/FallbackDependency.js +7 -0
  52. package/lib/container/FallbackItemDependency.js +3 -0
  53. package/lib/container/FallbackModule.js +5 -1
  54. package/lib/container/FallbackModuleFactory.js +1 -1
  55. package/lib/container/RemoteModule.js +4 -0
  56. package/lib/container/RemoteRuntimeModule.js +2 -1
  57. package/lib/container/RemoteToExternalDependency.js +3 -0
  58. package/lib/css/CssParser.js +168 -73
  59. package/lib/debug/ProfilingPlugin.js +11 -0
  60. package/lib/dependencies/AMDDefineDependency.js +12 -6
  61. package/lib/dependencies/AMDDefineDependencyParserPlugin.js +8 -2
  62. package/lib/dependencies/AMDPlugin.js +7 -0
  63. package/lib/dependencies/AMDRequireArrayDependency.js +5 -0
  64. package/lib/dependencies/AMDRequireContextDependency.js +6 -0
  65. package/lib/dependencies/AMDRequireDependenciesBlock.js +6 -0
  66. package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +8 -2
  67. package/lib/dependencies/AMDRequireDependency.js +8 -1
  68. package/lib/dependencies/AMDRequireItemDependency.js +6 -0
  69. package/lib/dependencies/CachedConstDependency.js +6 -0
  70. package/lib/dependencies/CommonJsExportRequireDependency.js +11 -0
  71. package/lib/dependencies/CommonJsExportsDependency.js +8 -0
  72. package/lib/dependencies/CommonJsExportsParserPlugin.js +2 -2
  73. package/lib/dependencies/CommonJsFullRequireDependency.js +2 -1
  74. package/lib/dependencies/CommonJsPlugin.js +28 -12
  75. package/lib/dependencies/CommonJsRequireContextDependency.js +8 -0
  76. package/lib/dependencies/CommonJsRequireDependency.js +7 -0
  77. package/lib/dependencies/CommonJsSelfReferenceDependency.js +8 -0
  78. package/lib/dependencies/ConstDependency.js +2 -1
  79. package/lib/dependencies/ContextDependencyHelpers.js +3 -3
  80. package/lib/dependencies/CreateScriptUrlDependency.js +2 -1
  81. package/lib/dependencies/CriticalDependencyWarning.js +3 -0
  82. package/lib/dependencies/CssImportDependency.js +2 -1
  83. package/lib/dependencies/CssLocalIdentifierDependency.js +2 -1
  84. package/lib/dependencies/CssSelfLocalIdentifierDependency.js +2 -1
  85. package/lib/dependencies/CssUrlDependency.js +12 -2
  86. package/lib/dependencies/DelegatedSourceDependency.js +3 -0
  87. package/lib/dependencies/ExportsInfoDependency.js +6 -0
  88. package/lib/dependencies/HarmonyAcceptDependency.js +2 -1
  89. package/lib/dependencies/HarmonyAcceptImportDependency.js +3 -0
  90. package/lib/dependencies/HarmonyDetectionParserPlugin.js +16 -0
  91. package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +12 -1
  92. package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +3 -0
  93. package/lib/dependencies/HarmonyExportExpressionDependency.js +8 -0
  94. package/lib/dependencies/HarmonyExportHeaderDependency.js +5 -0
  95. package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +2 -1
  96. package/lib/dependencies/HarmonyExportSpecifierDependency.js +4 -0
  97. package/lib/dependencies/HarmonyExports.js +3 -1
  98. package/lib/dependencies/HarmonyImportDependency.js +2 -1
  99. package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +18 -5
  100. package/lib/dependencies/HarmonyImportSideEffectDependency.js +6 -0
  101. package/lib/dependencies/HarmonyImportSpecifierDependency.js +86 -6
  102. package/lib/dependencies/HarmonyModulesPlugin.js +12 -0
  103. package/lib/dependencies/ImportContextDependency.js +6 -0
  104. package/lib/dependencies/ImportDependency.js +2 -1
  105. package/lib/dependencies/ImportEagerDependency.js +2 -1
  106. package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +32 -13
  107. package/lib/dependencies/ImportMetaContextPlugin.js +7 -0
  108. package/lib/dependencies/ImportMetaHotAcceptDependency.js +6 -0
  109. package/lib/dependencies/ImportMetaHotDeclineDependency.js +6 -0
  110. package/lib/dependencies/ImportParserPlugin.js +5 -0
  111. package/lib/dependencies/ImportPlugin.js +7 -0
  112. package/lib/dependencies/ImportWeakDependency.js +2 -1
  113. package/lib/dependencies/LocalModule.js +16 -0
  114. package/lib/dependencies/LocalModuleDependency.js +7 -0
  115. package/lib/dependencies/LocalModulesHelpers.js +18 -0
  116. package/lib/dependencies/ModuleHotAcceptDependency.js +6 -0
  117. package/lib/dependencies/ModuleHotDeclineDependency.js +6 -0
  118. package/lib/dependencies/PrefetchDependency.js +3 -0
  119. package/lib/dependencies/ProvidedDependency.js +2 -1
  120. package/lib/dependencies/PureExpressionDependency.js +2 -1
  121. package/lib/dependencies/RequireContextDependency.js +6 -0
  122. package/lib/dependencies/RequireContextPlugin.js +7 -0
  123. package/lib/dependencies/RequireEnsureDependenciesBlock.js +4 -0
  124. package/lib/dependencies/RequireEnsureDependency.js +8 -2
  125. package/lib/dependencies/RequireEnsureItemDependency.js +3 -0
  126. package/lib/dependencies/RequireEnsurePlugin.js +14 -0
  127. package/lib/dependencies/RequireHeaderDependency.js +5 -1
  128. package/lib/dependencies/RequireIncludeDependency.js +5 -0
  129. package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +3 -0
  130. package/lib/dependencies/RequireIncludePlugin.js +14 -0
  131. package/lib/dependencies/RequireResolveContextDependency.js +8 -0
  132. package/lib/dependencies/RequireResolveDependency.js +6 -0
  133. package/lib/dependencies/RequireResolveHeaderDependency.js +4 -0
  134. package/lib/dependencies/SystemPlugin.js +10 -1
  135. package/lib/dependencies/URLDependency.js +3 -2
  136. package/lib/dependencies/URLPlugin.js +7 -5
  137. package/lib/dependencies/UnsupportedDependency.js +5 -0
  138. package/lib/dependencies/WebAssemblyExportImportedDependency.js +6 -0
  139. package/lib/dependencies/WebpackIsIncludedDependency.js +5 -0
  140. package/lib/dependencies/WorkerDependency.js +2 -1
  141. package/lib/dependencies/WorkerPlugin.js +30 -3
  142. package/lib/dependencies/getFunctionExpression.js +7 -0
  143. package/lib/esm/ExportWebpackRequireRuntimeModule.js +2 -1
  144. package/lib/esm/ModuleChunkFormatPlugin.js +15 -7
  145. package/lib/esm/ModuleChunkLoadingPlugin.js +9 -0
  146. package/lib/esm/ModuleChunkLoadingRuntimeModule.js +14 -9
  147. package/lib/hmr/LazyCompilationPlugin.js +1 -1
  148. package/lib/ids/ChunkModuleIdRangePlugin.js +11 -0
  149. package/lib/ids/DeterministicChunkIdsPlugin.js +11 -2
  150. package/lib/ids/DeterministicModuleIdsPlugin.js +11 -7
  151. package/lib/ids/HashedModuleIdsPlugin.js +8 -1
  152. package/lib/ids/IdHelpers.js +6 -0
  153. package/lib/ids/NamedChunkIdsPlugin.js +13 -1
  154. package/lib/ids/NamedModuleIdsPlugin.js +14 -3
  155. package/lib/ids/OccurrenceChunkIdsPlugin.js +6 -2
  156. package/lib/ids/SyncModuleIdsPlugin.js +2 -2
  157. package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +3 -3
  158. package/lib/javascript/BasicEvaluatedExpression.js +11 -1
  159. package/lib/javascript/ChunkHelpers.js +2 -2
  160. package/lib/javascript/CommonJsChunkFormatPlugin.js +1 -1
  161. package/lib/javascript/EnableChunkLoadingPlugin.js +4 -0
  162. package/lib/javascript/JavascriptModulesPlugin.js +36 -31
  163. package/lib/javascript/JavascriptParser.js +586 -192
  164. package/lib/javascript/StartupHelpers.js +2 -2
  165. package/lib/json/JsonGenerator.js +7 -5
  166. package/lib/json/JsonParser.js +1 -1
  167. package/lib/library/AbstractLibraryPlugin.js +4 -0
  168. package/lib/library/AssignLibraryPlugin.js +6 -4
  169. package/lib/library/ExportPropertyLibraryPlugin.js +4 -1
  170. package/lib/library/ModuleLibraryPlugin.js +6 -3
  171. package/lib/library/SystemLibraryPlugin.js +1 -0
  172. package/lib/library/UmdLibraryPlugin.js +4 -0
  173. package/lib/node/CommonJsChunkLoadingPlugin.js +17 -2
  174. package/lib/node/NodeTemplatePlugin.js +10 -2
  175. package/lib/node/NodeWatchFileSystem.js +1 -1
  176. package/lib/node/ReadFileChunkLoadingRuntimeModule.js +6 -3
  177. package/lib/node/ReadFileCompileAsyncWasmPlugin.js +8 -0
  178. package/lib/node/ReadFileCompileWasmPlugin.js +19 -2
  179. package/lib/node/RequireChunkLoadingRuntimeModule.js +6 -3
  180. package/lib/optimize/ConcatenatedModule.js +1 -1
  181. package/lib/optimize/InnerGraphPlugin.js +11 -4
  182. package/lib/runtime/AsyncModuleRuntimeModule.js +1 -1
  183. package/lib/runtime/AutoPublicPathRuntimeModule.js +5 -1
  184. package/lib/runtime/BaseUriRuntimeModule.js +5 -1
  185. package/lib/runtime/EnsureChunkRuntimeModule.js +3 -0
  186. package/lib/runtime/GetChunkFilenameRuntimeModule.js +35 -16
  187. package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +1 -1
  188. package/lib/runtime/LoadScriptRuntimeModule.js +1 -1
  189. package/lib/runtime/PublicPathRuntimeModule.js +5 -0
  190. package/lib/runtime/StartupChunkDependenciesPlugin.js +15 -0
  191. package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +4 -1
  192. package/lib/runtime/StartupEntrypointRuntimeModule.js +8 -5
  193. package/lib/serialization/ArraySerializer.js +22 -6
  194. package/lib/serialization/BinaryMiddleware.js +21 -0
  195. package/lib/serialization/DateObjectSerializer.js +15 -4
  196. package/lib/serialization/ErrorObjectSerializer.js +20 -8
  197. package/lib/serialization/FileMiddleware.js +17 -0
  198. package/lib/serialization/MapObjectSerializer.js +24 -8
  199. package/lib/serialization/NullPrototypeObjectSerializer.js +25 -8
  200. package/lib/serialization/ObjectMiddleware.js +23 -0
  201. package/lib/serialization/PlainObjectSerializer.js +23 -12
  202. package/lib/serialization/RegExpObjectSerializer.js +16 -5
  203. package/lib/serialization/SetObjectSerializer.js +21 -6
  204. package/lib/sharing/ProvideSharedModuleFactory.js +1 -1
  205. package/lib/sharing/ShareRuntimeModule.js +1 -1
  206. package/lib/util/createHash.js +1 -1
  207. package/lib/util/makeSerializable.js +7 -0
  208. package/lib/util/serialization.js +10 -0
  209. package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +9 -0
  210. package/lib/wasm-async/AsyncWebAssemblyGenerator.js +9 -1
  211. package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +13 -3
  212. package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +19 -2
  213. package/lib/wasm-async/AsyncWebAssemblyParser.js +3 -0
  214. package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +25 -1
  215. package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +14 -5
  216. package/lib/wasm-sync/WebAssemblyGenerator.js +18 -5
  217. package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +1 -1
  218. package/lib/wasm-sync/WebAssemblyModulesPlugin.js +12 -1
  219. package/lib/wasm-sync/WebAssemblyParser.js +9 -2
  220. package/lib/wasm-sync/WebAssemblyUtils.js +1 -1
  221. package/lib/web/FetchCompileAsyncWasmPlugin.js +9 -0
  222. package/lib/web/FetchCompileWasmPlugin.js +19 -2
  223. package/lib/web/JsonpChunkLoadingPlugin.js +9 -0
  224. package/lib/web/JsonpChunkLoadingRuntimeModule.js +4 -1
  225. package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +9 -0
  226. package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +6 -2
  227. package/package.json +3 -3
  228. package/schemas/WebpackOptions.check.js +1 -1
  229. package/schemas/WebpackOptions.json +12 -0
  230. package/schemas/plugins/SourceMapDevToolPlugin.check.js +1 -1
  231. package/schemas/plugins/SourceMapDevToolPlugin.json +4 -0
  232. package/types.d.ts +655 -290
@@ -9,7 +9,13 @@ const makeSerializable = require("../util/makeSerializable");
9
9
  const ModuleDependency = require("./ModuleDependency");
10
10
  const ModuleDependencyTemplateAsId = require("./ModuleDependencyTemplateAsId");
11
11
 
12
+ /** @typedef {import("../javascript/JavascriptParser").Range} Range */
13
+
12
14
  class ModuleHotAcceptDependency extends ModuleDependency {
15
+ /**
16
+ * @param {string} request the request string
17
+ * @param {Range} range location in source code
18
+ */
13
19
  constructor(request, range) {
14
20
  super(request);
15
21
  this.range = range;
@@ -9,7 +9,13 @@ const makeSerializable = require("../util/makeSerializable");
9
9
  const ModuleDependency = require("./ModuleDependency");
10
10
  const ModuleDependencyTemplateAsId = require("./ModuleDependencyTemplateAsId");
11
11
 
12
+ /** @typedef {import("../javascript/JavascriptParser").Range} Range */
13
+
12
14
  class ModuleHotDeclineDependency extends ModuleDependency {
15
+ /**
16
+ * @param {string} request the request string
17
+ * @param {Range} range location in source code
18
+ */
13
19
  constructor(request, range) {
14
20
  super(request);
15
21
 
@@ -8,6 +8,9 @@
8
8
  const ModuleDependency = require("./ModuleDependency");
9
9
 
10
10
  class PrefetchDependency extends ModuleDependency {
11
+ /**
12
+ * @param {string} request the request string
13
+ */
11
14
  constructor(request) {
12
15
  super(request);
13
16
  }
@@ -18,6 +18,7 @@ const ModuleDependency = require("./ModuleDependency");
18
18
  /** @typedef {import("../DependencyTemplates")} DependencyTemplates */
19
19
  /** @typedef {import("../ModuleGraph")} ModuleGraph */
20
20
  /** @typedef {import("../RuntimeTemplate")} RuntimeTemplate */
21
+ /** @typedef {import("../javascript/JavascriptParser").Range} Range */
21
22
  /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
22
23
  /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
23
24
  /** @typedef {import("../util/Hash")} Hash */
@@ -37,7 +38,7 @@ class ProvidedDependency extends ModuleDependency {
37
38
  * @param {string} request request
38
39
  * @param {string} identifier identifier
39
40
  * @param {string[]} ids ids
40
- * @param {[number, number]} range range
41
+ * @param {Range} range range
41
42
  */
42
43
  constructor(request, identifier, ids, range) {
43
44
  super(request);
@@ -17,13 +17,14 @@ const NullDependency = require("./NullDependency");
17
17
  /** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */
18
18
  /** @typedef {import("../ModuleGraph")} ModuleGraph */
19
19
  /** @typedef {import("../ModuleGraphConnection").ConnectionState} ConnectionState */
20
+ /** @typedef {import("../javascript/JavascriptParser").Range} Range */
20
21
  /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
21
22
  /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
22
23
  /** @typedef {import("../util/Hash")} Hash */
23
24
 
24
25
  class PureExpressionDependency extends NullDependency {
25
26
  /**
26
- * @param {[number, number]} range the source range
27
+ * @param {Range} range the source range
27
28
  */
28
29
  constructor(range) {
29
30
  super();
@@ -9,7 +9,13 @@ const makeSerializable = require("../util/makeSerializable");
9
9
  const ContextDependency = require("./ContextDependency");
10
10
  const ModuleDependencyTemplateAsRequireId = require("./ModuleDependencyTemplateAsRequireId");
11
11
 
12
+ /** @typedef {import("../javascript/JavascriptParser").Range} Range */
13
+
12
14
  class RequireContextDependency extends ContextDependency {
15
+ /**
16
+ * @param {TODO} options options
17
+ * @param {Range} range range
18
+ */
13
19
  constructor(options, range) {
14
20
  super(options);
15
21
 
@@ -14,8 +14,10 @@ const ContextElementDependency = require("./ContextElementDependency");
14
14
  const RequireContextDependency = require("./RequireContextDependency");
15
15
  const RequireContextDependencyParserPlugin = require("./RequireContextDependencyParserPlugin");
16
16
 
17
+ /** @typedef {import("../../declarations/WebpackOptions").JavascriptParserOptions} JavascriptParserOptions */
17
18
  /** @typedef {import("../../declarations/WebpackOptions").ResolveOptions} ResolveOptions */
18
19
  /** @typedef {import("../Compiler")} Compiler */
20
+ /** @typedef {import("../javascript/JavascriptParser")} Parser */
19
21
 
20
22
  /** @type {ResolveOptions} */
21
23
  const EMPTY_RESOLVE_OPTIONS = {};
@@ -46,6 +48,11 @@ class RequireContextPlugin {
46
48
  normalModuleFactory
47
49
  );
48
50
 
51
+ /**
52
+ * @param {Parser} parser parser parser
53
+ * @param {JavascriptParserOptions} parserOptions parserOptions
54
+ * @returns {void}
55
+ */
49
56
  const handler = (parser, parserOptions) => {
50
57
  if (
51
58
  parserOptions.requireContext !== undefined &&
@@ -9,6 +9,10 @@ const AsyncDependenciesBlock = require("../AsyncDependenciesBlock");
9
9
  const makeSerializable = require("../util/makeSerializable");
10
10
 
11
11
  class RequireEnsureDependenciesBlock extends AsyncDependenciesBlock {
12
+ /**
13
+ * @param {TODO} chunkName chunk name
14
+ * @param {TODO} loc location info
15
+ */
12
16
  constructor(chunkName, loc) {
13
17
  super(chunkName, loc, null);
14
18
  }
@@ -13,10 +13,16 @@ const NullDependency = require("./NullDependency");
13
13
  /** @typedef {import("../AsyncDependenciesBlock")} AsyncDependenciesBlock */
14
14
  /** @typedef {import("../Dependency")} Dependency */
15
15
  /** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */
16
+ /** @typedef {import("../javascript/JavascriptParser").Range} Range */
16
17
  /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
17
18
  /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
18
19
 
19
20
  class RequireEnsureDependency extends NullDependency {
21
+ /**
22
+ * @param {Range} range range
23
+ * @param {Range} contentRange content range
24
+ * @param {Range} errorHandlerRange error handler range
25
+ */
20
26
  constructor(range, contentRange, errorHandlerRange) {
21
27
  super();
22
28
 
@@ -93,14 +99,14 @@ RequireEnsureDependency.Template = class RequireEnsureDependencyTemplate extends
93
99
  source.replace(
94
100
  contentRange[1],
95
101
  errorHandlerRange[0] - 1,
96
- ").bind(null, __webpack_require__))['catch']("
102
+ `).bind(null, ${RuntimeGlobals.require}))['catch'](`
97
103
  );
98
104
  source.replace(errorHandlerRange[1], range[1] - 1, ")");
99
105
  } else {
100
106
  source.replace(
101
107
  contentRange[1],
102
108
  range[1] - 1,
103
- `).bind(null, __webpack_require__))['catch'](${RuntimeGlobals.uncaughtErrorHandler})`
109
+ `).bind(null, ${RuntimeGlobals.require}))['catch'](${RuntimeGlobals.uncaughtErrorHandler})`
104
110
  );
105
111
  }
106
112
  }
@@ -10,6 +10,9 @@ const ModuleDependency = require("./ModuleDependency");
10
10
  const NullDependency = require("./NullDependency");
11
11
 
12
12
  class RequireEnsureItemDependency extends ModuleDependency {
13
+ /**
14
+ * @param {string} request the request string
15
+ */
13
16
  constructor(request) {
14
17
  super(request);
15
18
  }
@@ -19,9 +19,18 @@ const {
19
19
  toConstantDependency
20
20
  } = require("../javascript/JavascriptParserHelpers");
21
21
 
22
+ /** @typedef {import("../../declarations/WebpackOptions").JavascriptParserOptions} JavascriptParserOptions */
23
+ /** @typedef {import("../Compiler")} Compiler */
24
+ /** @typedef {import("../javascript/JavascriptParser")} Parser */
25
+
22
26
  const PLUGIN_NAME = "RequireEnsurePlugin";
23
27
 
24
28
  class RequireEnsurePlugin {
29
+ /**
30
+ * Apply the plugin
31
+ * @param {Compiler} compiler the compiler instance
32
+ * @returns {void}
33
+ */
25
34
  apply(compiler) {
26
35
  compiler.hooks.compilation.tap(
27
36
  PLUGIN_NAME,
@@ -40,6 +49,11 @@ class RequireEnsurePlugin {
40
49
  new RequireEnsureDependency.Template()
41
50
  );
42
51
 
52
+ /**
53
+ * @param {Parser} parser parser parser
54
+ * @param {JavascriptParserOptions} parserOptions parserOptions
55
+ * @returns {void}
56
+ */
43
57
  const handler = (parser, parserOptions) => {
44
58
  if (
45
59
  parserOptions.requireEnsure !== undefined &&
@@ -12,10 +12,14 @@ const NullDependency = require("./NullDependency");
12
12
  /** @typedef {import("webpack-sources").ReplaceSource} ReplaceSource */
13
13
  /** @typedef {import("../Dependency")} Dependency */
14
14
  /** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */
15
+ /** @typedef {import("../javascript/JavascriptParser").Range} Range */
15
16
  /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
16
17
  /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
17
18
 
18
19
  class RequireHeaderDependency extends NullDependency {
20
+ /**
21
+ * @param {Range} range range
22
+ */
19
23
  constructor(range) {
20
24
  super();
21
25
  if (!Array.isArray(range)) throw new Error("range must be valid");
@@ -55,7 +59,7 @@ RequireHeaderDependency.Template = class RequireHeaderDependencyTemplate extends
55
59
  apply(dependency, source, { runtimeRequirements }) {
56
60
  const dep = /** @type {RequireHeaderDependency} */ (dependency);
57
61
  runtimeRequirements.add(RuntimeGlobals.require);
58
- source.replace(dep.range[0], dep.range[1] - 1, "__webpack_require__");
62
+ source.replace(dep.range[0], dep.range[1] - 1, RuntimeGlobals.require);
59
63
  }
60
64
  };
61
65
 
@@ -14,9 +14,14 @@ const ModuleDependency = require("./ModuleDependency");
14
14
  /** @typedef {import("../Dependency").ReferencedExport} ReferencedExport */
15
15
  /** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */
16
16
  /** @typedef {import("../ModuleGraph")} ModuleGraph */
17
+ /** @typedef {import("../javascript/JavascriptParser").Range} Range */
17
18
  /** @typedef {import("../util/runtime").RuntimeSpec} RuntimeSpec */
18
19
 
19
20
  class RequireIncludeDependency extends ModuleDependency {
21
+ /**
22
+ * @param {string} request the request string
23
+ * @param {Range} range location in source code
24
+ */
20
25
  constructor(request, range) {
21
26
  super(request);
22
27
 
@@ -14,6 +14,9 @@ const makeSerializable = require("../util/makeSerializable");
14
14
  const RequireIncludeDependency = require("./RequireIncludeDependency");
15
15
 
16
16
  module.exports = class RequireIncludeDependencyParserPlugin {
17
+ /**
18
+ * @param {boolean} warn true: warn about deprecation, false: don't warn
19
+ */
17
20
  constructor(warn) {
18
21
  this.warn = warn;
19
22
  }
@@ -12,9 +12,18 @@ const {
12
12
  const RequireIncludeDependency = require("./RequireIncludeDependency");
13
13
  const RequireIncludeDependencyParserPlugin = require("./RequireIncludeDependencyParserPlugin");
14
14
 
15
+ /** @typedef {import("../../declarations/WebpackOptions").JavascriptParserOptions} JavascriptParserOptions */
16
+ /** @typedef {import("../Compiler")} Compiler */
17
+ /** @typedef {import("../javascript/JavascriptParser")} Parser */
18
+
15
19
  const PLUGIN_NAME = "RequireIncludePlugin";
16
20
 
17
21
  class RequireIncludePlugin {
22
+ /**
23
+ * Apply the plugin
24
+ * @param {Compiler} compiler the compiler instance
25
+ * @returns {void}
26
+ */
18
27
  apply(compiler) {
19
28
  compiler.hooks.compilation.tap(
20
29
  PLUGIN_NAME,
@@ -28,6 +37,11 @@ class RequireIncludePlugin {
28
37
  new RequireIncludeDependency.Template()
29
38
  );
30
39
 
40
+ /**
41
+ * @param {Parser} parser parser parser
42
+ * @param {JavascriptParserOptions} parserOptions parserOptions
43
+ * @returns {void}
44
+ */
31
45
  const handler = (parser, parserOptions) => {
32
46
  if (parserOptions.requireInclude === false) return;
33
47
  const warn = parserOptions.requireInclude === undefined;
@@ -9,10 +9,18 @@ const makeSerializable = require("../util/makeSerializable");
9
9
  const ContextDependency = require("./ContextDependency");
10
10
  const ContextDependencyTemplateAsId = require("./ContextDependencyTemplateAsId");
11
11
 
12
+ /** @typedef {import("../javascript/JavascriptParser").Range} Range */
12
13
  /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
13
14
  /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
15
+ /** @typedef {import("./ContextDependency").ContextDependencyOptions} ContextDependencyOptions */
14
16
 
15
17
  class RequireResolveContextDependency extends ContextDependency {
18
+ /**
19
+ * @param {ContextDependencyOptions} options options
20
+ * @param {Range} range range
21
+ * @param {Range} valueRange value range
22
+ * @param {TODO} context context
23
+ */
16
24
  constructor(options, range, valueRange, context) {
17
25
  super(options, context);
18
26
 
@@ -12,9 +12,15 @@ const ModuleDependencyAsId = require("./ModuleDependencyTemplateAsId");
12
12
 
13
13
  /** @typedef {import("../Dependency").ReferencedExport} ReferencedExport */
14
14
  /** @typedef {import("../ModuleGraph")} ModuleGraph */
15
+ /** @typedef {import("../javascript/JavascriptParser").Range} Range */
15
16
  /** @typedef {import("../util/runtime").RuntimeSpec} RuntimeSpec */
16
17
 
17
18
  class RequireResolveDependency extends ModuleDependency {
19
+ /**
20
+ * @param {string} request the request string
21
+ * @param {Range} range location in source code
22
+ * @param {string} [context] context
23
+ */
18
24
  constructor(request, range, context) {
19
25
  super(request);
20
26
 
@@ -11,10 +11,14 @@ const NullDependency = require("./NullDependency");
11
11
  /** @typedef {import("webpack-sources").ReplaceSource} ReplaceSource */
12
12
  /** @typedef {import("../Dependency")} Dependency */
13
13
  /** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */
14
+ /** @typedef {import("../javascript/JavascriptParser").Range} Range */
14
15
  /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
15
16
  /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
16
17
 
17
18
  class RequireResolveHeaderDependency extends NullDependency {
19
+ /**
20
+ * @param {Range} range range
21
+ */
18
22
  constructor(range) {
19
23
  super();
20
24
 
@@ -20,7 +20,9 @@ const makeSerializable = require("../util/makeSerializable");
20
20
  const ConstDependency = require("./ConstDependency");
21
21
  const SystemRuntimeModule = require("./SystemRuntimeModule");
22
22
 
23
+ /** @typedef {import("../../declarations/WebpackOptions").JavascriptParserOptions} JavascriptParserOptions */
23
24
  /** @typedef {import("../Compiler")} Compiler */
25
+ /** @typedef {import("../javascript/JavascriptParser")} Parser */
24
26
 
25
27
  const PLUGIN_NAME = "SystemPlugin";
26
28
 
@@ -46,6 +48,11 @@ class SystemPlugin {
46
48
  compilation.addRuntimeModule(chunk, new SystemRuntimeModule());
47
49
  });
48
50
 
51
+ /**
52
+ * @param {Parser} parser parser parser
53
+ * @param {JavascriptParserOptions} parserOptions parserOptions
54
+ * @returns {void}
55
+ */
49
56
  const handler = (parser, parserOptions) => {
50
57
  if (parserOptions.system === undefined || !parserOptions.system) {
51
58
  return;
@@ -105,7 +112,9 @@ class SystemPlugin {
105
112
 
106
113
  return parser.hooks.importCall.call({
107
114
  type: "ImportExpression",
108
- source: expr.arguments[0],
115
+ source:
116
+ /** @type {import("estree").Literal} */
117
+ (expr.arguments[0]),
109
118
  loc: expr.loc,
110
119
  range: expr.range
111
120
  });
@@ -22,6 +22,7 @@ const ModuleDependency = require("./ModuleDependency");
22
22
  /** @typedef {import("../ModuleGraph")} ModuleGraph */
23
23
  /** @typedef {import("../ModuleGraphConnection")} ModuleGraphConnection */
24
24
  /** @typedef {import("../ModuleGraphConnection").ConnectionState} ConnectionState */
25
+ /** @typedef {import("../javascript/JavascriptParser").Range} Range */
25
26
  /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
26
27
  /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
27
28
  /** @typedef {import("../util/Hash")} Hash */
@@ -32,8 +33,8 @@ const getRawDataUrlModule = memoize(() => require("../asset/RawDataUrlModule"));
32
33
  class URLDependency extends ModuleDependency {
33
34
  /**
34
35
  * @param {string} request request
35
- * @param {[number, number]} range range of the arguments of new URL( |> ... <| )
36
- * @param {[number, number]} outerRange range of the full |> new URL(...) <|
36
+ * @param {Range} range range of the arguments of new URL( |> ... <| )
37
+ * @param {Range} outerRange range of the full |> new URL(...) <|
37
38
  * @param {boolean=} relative use relative urls instead of absolute with base uri
38
39
  */
39
40
  constructor(request, range, outerRange, relative) {
@@ -16,9 +16,11 @@ const InnerGraph = require("../optimize/InnerGraph");
16
16
  const URLDependency = require("./URLDependency");
17
17
 
18
18
  /** @typedef {import("estree").NewExpression} NewExpressionNode */
19
+ /** @typedef {import("../../declarations/WebpackOptions").JavascriptParserOptions} JavascriptParserOptions */
19
20
  /** @typedef {import("../Compiler")} Compiler */
20
21
  /** @typedef {import("../NormalModule")} NormalModule */
21
22
  /** @typedef {import("../javascript/JavascriptParser")} JavascriptParser */
23
+ /** @typedef {import("../javascript/JavascriptParser")} Parser */
22
24
 
23
25
  const PLUGIN_NAME = "URLPlugin";
24
26
 
@@ -43,9 +45,11 @@ class URLPlugin {
43
45
  const getUrl = module => {
44
46
  return pathToFileURL(module.resource);
45
47
  };
48
+
46
49
  /**
47
- * @param {JavascriptParser} parser parser
48
- * @param {object} parserOptions options
50
+ * @param {Parser} parser parser parser
51
+ * @param {JavascriptParserOptions} parserOptions parserOptions
52
+ * @returns {void}
49
53
  */
50
54
  const parserCallback = (parser, parserOptions) => {
51
55
  if (parserOptions.url === false) return;
@@ -77,9 +81,7 @@ class URLPlugin {
77
81
  )
78
82
  return;
79
83
 
80
- const request = parser.evaluateExpression(arg1).asString();
81
-
82
- return request;
84
+ return parser.evaluateExpression(arg1).asString();
83
85
  };
84
86
 
85
87
  parser.hooks.canRename.for("URL").tap(PLUGIN_NAME, approve);
@@ -11,10 +11,15 @@ const NullDependency = require("./NullDependency");
11
11
  /** @typedef {import("webpack-sources").ReplaceSource} ReplaceSource */
12
12
  /** @typedef {import("../Dependency")} Dependency */
13
13
  /** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */
14
+ /** @typedef {import("../javascript/JavascriptParser").Range} Range */
14
15
  /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
15
16
  /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
16
17
 
17
18
  class UnsupportedDependency extends NullDependency {
19
+ /**
20
+ * @param {string} request the request string
21
+ * @param {Range} range location in source code
22
+ */
18
23
  constructor(request, range) {
19
24
  super();
20
25
 
@@ -17,6 +17,12 @@ const ModuleDependency = require("./ModuleDependency");
17
17
  /** @typedef {import("../util/runtime").RuntimeSpec} RuntimeSpec */
18
18
 
19
19
  class WebAssemblyExportImportedDependency extends ModuleDependency {
20
+ /**
21
+ * @param {string} exportName export name
22
+ * @param {string} request request
23
+ * @param {string} name name
24
+ * @param {TODO} valueType value type
25
+ */
20
26
  constructor(exportName, request, name, valueType) {
21
27
  super(request);
22
28
  /** @type {string} */
@@ -15,9 +15,14 @@ const ModuleDependency = require("./ModuleDependency");
15
15
  /** @typedef {import("../Dependency").ReferencedExport} ReferencedExport */
16
16
  /** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */
17
17
  /** @typedef {import("../ModuleGraph")} ModuleGraph */
18
+ /** @typedef {import("../javascript/JavascriptParser").Range} Range */
18
19
  /** @typedef {import("../util/runtime").RuntimeSpec} RuntimeSpec */
19
20
 
20
21
  class WebpackIsIncludedDependency extends ModuleDependency {
22
+ /**
23
+ * @param {string} request the request string
24
+ * @param {Range} range location in source code
25
+ */
21
26
  constructor(request, range) {
22
27
  super(request);
23
28
 
@@ -18,6 +18,7 @@ const ModuleDependency = require("./ModuleDependency");
18
18
  /** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */
19
19
  /** @typedef {import("../Entrypoint")} Entrypoint */
20
20
  /** @typedef {import("../ModuleGraph")} ModuleGraph */
21
+ /** @typedef {import("../javascript/JavascriptParser").Range} Range */
21
22
  /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
22
23
  /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
23
24
  /** @typedef {import("../util/Hash")} Hash */
@@ -26,7 +27,7 @@ const ModuleDependency = require("./ModuleDependency");
26
27
  class WorkerDependency extends ModuleDependency {
27
28
  /**
28
29
  * @param {string} request request
29
- * @param {[number, number]} range range
30
+ * @param {Range} range range
30
31
  * @param {Object} workerDependencyOptions options
31
32
  * @param {string} workerDependencyOptions.publicPath public path for the worker
32
33
  */
@@ -30,17 +30,21 @@ const WorkerDependency = require("./WorkerDependency");
30
30
  /** @typedef {import("estree").Pattern} Pattern */
31
31
  /** @typedef {import("estree").Property} Property */
32
32
  /** @typedef {import("estree").SpreadElement} SpreadElement */
33
+ /** @typedef {import("../../declarations/WebpackOptions").JavascriptParserOptions} JavascriptParserOptions */
33
34
  /** @typedef {import("../Compiler")} Compiler */
34
35
  /** @typedef {import("../Entrypoint").EntryOptions} EntryOptions */
35
36
  /** @typedef {import("../Parser").ParserState} ParserState */
36
37
  /** @typedef {import("../javascript/BasicEvaluatedExpression")} BasicEvaluatedExpression */
37
38
  /** @typedef {import("../javascript/JavascriptParser")} JavascriptParser */
39
+ /** @typedef {import("../javascript/JavascriptParser")} Parser */
38
40
  /** @typedef {import("./HarmonyImportDependencyParserPlugin").HarmonySettings} HarmonySettings */
39
41
 
40
42
  const getUrl = module => {
41
43
  return pathToFileURL(module.resource).toString();
42
44
  };
43
45
 
46
+ const WorkerSpecifierTag = Symbol("worker specifier tag");
47
+
44
48
  const DEFAULT_SYNTAX = [
45
49
  "Worker",
46
50
  "SharedWorker",
@@ -169,8 +173,9 @@ class WorkerPlugin {
169
173
  };
170
174
 
171
175
  /**
172
- * @param {JavascriptParser} parser the parser
173
- * @param {object} parserOptions options
176
+ * @param {Parser} parser parser parser
177
+ * @param {JavascriptParserOptions} parserOptions parserOptions
178
+ * @returns {void}
174
179
  */
175
180
  const parserPlugin = (parser, parserOptions) => {
176
181
  if (parserOptions.worker === false) return;
@@ -378,7 +383,29 @@ class WorkerPlugin {
378
383
  return true;
379
384
  };
380
385
  const processItem = item => {
381
- if (item.endsWith("()")) {
386
+ if (
387
+ item.startsWith("*") &&
388
+ item.includes(".") &&
389
+ item.endsWith("()")
390
+ ) {
391
+ const firstDot = item.indexOf(".");
392
+ const pattern = item.slice(1, firstDot);
393
+ const itemMembers = item.slice(firstDot + 1, -2);
394
+
395
+ parser.hooks.pattern.for(pattern).tap(PLUGIN_NAME, pattern => {
396
+ parser.tagVariable(pattern.name, WorkerSpecifierTag);
397
+ return true;
398
+ });
399
+ parser.hooks.callMemberChain
400
+ .for(WorkerSpecifierTag)
401
+ .tap(PLUGIN_NAME, (expression, members) => {
402
+ if (itemMembers !== members.join(".")) {
403
+ return;
404
+ }
405
+
406
+ return handleNewWorker(expression);
407
+ });
408
+ } else if (item.endsWith("()")) {
382
409
  parser.hooks.call
383
410
  .for(item.slice(0, -2))
384
411
  .tap(PLUGIN_NAME, handleNewWorker);
@@ -5,6 +5,13 @@
5
5
 
6
6
  "use strict";
7
7
 
8
+ /** @typedef {import("estree").Expression} Expression */
9
+ /** @typedef {import("estree").SpreadElement} SpreadElement */
10
+
11
+ /**
12
+ * @param {Expression} expr expressions
13
+ * @returns {{fn: TODO, expressions: (Expression | SpreadElement)[], needThis: boolean | undefined }} function expression with additional information
14
+ */
8
15
  module.exports = expr => {
9
16
  // <FunctionExpression>
10
17
  if (
@@ -4,6 +4,7 @@
4
4
 
5
5
  "use strict";
6
6
 
7
+ const RuntimeGlobals = require("../RuntimeGlobals");
7
8
  const RuntimeModule = require("../RuntimeModule");
8
9
 
9
10
  class ExportWebpackRequireRuntimeModule extends RuntimeModule {
@@ -22,7 +23,7 @@ class ExportWebpackRequireRuntimeModule extends RuntimeModule {
22
23
  * @returns {string} runtime code
23
24
  */
24
25
  generate() {
25
- return "export default __webpack_require__;";
26
+ return `export default ${RuntimeGlobals.require};`;
26
27
  }
27
28
  }
28
29