webpack 5.93.0 → 5.95.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 (344) hide show
  1. package/README.md +8 -5
  2. package/bin/webpack.js +6 -7
  3. package/hot/log.js +1 -2
  4. package/hot/only-dev-server.js +1 -1
  5. package/hot/poll.js +1 -1
  6. package/hot/signal.js +1 -1
  7. package/lib/APIPlugin.js +4 -3
  8. package/lib/AbstractMethodError.js +10 -5
  9. package/lib/AutomaticPrefetchPlugin.js +1 -1
  10. package/lib/BannerPlugin.js +12 -6
  11. package/lib/Cache.js +8 -10
  12. package/lib/CacheFacade.js +3 -3
  13. package/lib/CaseSensitiveModulesWarning.js +5 -7
  14. package/lib/Chunk.js +14 -11
  15. package/lib/ChunkGraph.js +58 -36
  16. package/lib/ChunkGroup.js +2 -3
  17. package/lib/ChunkTemplate.js +43 -0
  18. package/lib/CleanPlugin.js +10 -11
  19. package/lib/CodeGenerationResults.js +6 -5
  20. package/lib/CommentCompilationWarning.js +0 -1
  21. package/lib/Compilation.js +223 -191
  22. package/lib/Compiler.js +81 -82
  23. package/lib/ConcatenationScope.js +3 -6
  24. package/lib/ConditionalInitFragment.js +6 -7
  25. package/lib/ConstPlugin.js +7 -15
  26. package/lib/ContextExclusionPlugin.js +3 -3
  27. package/lib/ContextModule.js +33 -20
  28. package/lib/ContextModuleFactory.js +89 -44
  29. package/lib/ContextReplacementPlugin.js +10 -9
  30. package/lib/DefinePlugin.js +75 -68
  31. package/lib/DelegatedModule.js +7 -3
  32. package/lib/DelegatedModuleFactoryPlugin.js +36 -22
  33. package/lib/DelegatedPlugin.js +4 -0
  34. package/lib/DependenciesBlock.js +0 -1
  35. package/lib/Dependency.js +10 -14
  36. package/lib/DllEntryPlugin.js +4 -2
  37. package/lib/DllModuleFactory.js +1 -0
  38. package/lib/DllPlugin.js +9 -7
  39. package/lib/DllReferencePlugin.js +30 -15
  40. package/lib/EntryPlugin.js +1 -3
  41. package/lib/EnvironmentPlugin.js +6 -2
  42. package/lib/ErrorHelpers.js +11 -12
  43. package/lib/EvalDevToolModulePlugin.js +10 -12
  44. package/lib/EvalSourceMapDevToolPlugin.js +15 -13
  45. package/lib/ExportsInfo.js +185 -120
  46. package/lib/ExternalModule.js +41 -15
  47. package/lib/ExternalModuleFactoryPlugin.js +23 -10
  48. package/lib/FileSystemInfo.js +791 -422
  49. package/lib/FlagAllModulesAsUsedPlugin.js +1 -1
  50. package/lib/FlagDependencyExportsPlugin.js +12 -11
  51. package/lib/FlagDependencyUsagePlugin.js +1 -1
  52. package/lib/Generator.js +2 -5
  53. package/lib/GraphHelpers.js +3 -2
  54. package/lib/HookWebpackError.js +8 -10
  55. package/lib/HotModuleReplacementPlugin.js +78 -64
  56. package/lib/IgnoreErrorModuleFactory.js +3 -3
  57. package/lib/IgnorePlugin.js +1 -3
  58. package/lib/IgnoreWarningsPlugin.js +6 -9
  59. package/lib/InitFragment.js +2 -3
  60. package/lib/LibManifestPlugin.js +4 -3
  61. package/lib/MainTemplate.js +72 -19
  62. package/lib/Module.js +25 -9
  63. package/lib/ModuleBuildError.js +4 -11
  64. package/lib/ModuleDependencyError.js +5 -5
  65. package/lib/ModuleDependencyWarning.js +5 -5
  66. package/lib/ModuleError.js +1 -5
  67. package/lib/ModuleFilenameHelpers.js +29 -46
  68. package/lib/ModuleGraph.js +7 -6
  69. package/lib/ModuleGraphConnection.js +6 -6
  70. package/lib/ModuleInfoHeaderPlugin.js +82 -30
  71. package/lib/ModuleParseError.js +8 -9
  72. package/lib/ModuleRestoreError.js +1 -1
  73. package/lib/ModuleStoreError.js +1 -1
  74. package/lib/ModuleTemplate.js +33 -1
  75. package/lib/ModuleTypeConstants.js +21 -22
  76. package/lib/ModuleWarning.js +1 -5
  77. package/lib/MultiCompiler.js +24 -26
  78. package/lib/MultiStats.js +73 -31
  79. package/lib/MultiWatching.js +1 -1
  80. package/lib/NormalModule.js +130 -69
  81. package/lib/NormalModuleFactory.js +53 -49
  82. package/lib/OptimizationStages.js +3 -3
  83. package/lib/ProgressPlugin.js +9 -9
  84. package/lib/ProvidePlugin.js +4 -4
  85. package/lib/RuntimeGlobals.js +71 -70
  86. package/lib/RuntimeModule.js +1 -1
  87. package/lib/RuntimePlugin.js +24 -12
  88. package/lib/RuntimeTemplate.js +40 -44
  89. package/lib/SizeFormatHelpers.js +2 -4
  90. package/lib/SourceMapDevToolPlugin.js +42 -34
  91. package/lib/Stats.js +5 -11
  92. package/lib/Template.js +18 -24
  93. package/lib/TemplatedPathPlugin.js +21 -13
  94. package/lib/WarnDeprecatedOptionPlugin.js +0 -1
  95. package/lib/WatchIgnorePlugin.js +26 -9
  96. package/lib/Watching.js +10 -5
  97. package/lib/WebpackOptionsApply.js +84 -62
  98. package/lib/asset/AssetGenerator.js +107 -42
  99. package/lib/asset/AssetModulesPlugin.js +29 -23
  100. package/lib/asset/AssetSourceGenerator.js +2 -7
  101. package/lib/async-modules/AwaitDependenciesInitFragment.js +6 -7
  102. package/lib/buildChunkGraph.js +93 -81
  103. package/lib/cache/IdleFileCachePlugin.js +4 -4
  104. package/lib/cache/MemoryWithGcCachePlugin.js +5 -5
  105. package/lib/cache/PackFileCacheStrategy.js +51 -50
  106. package/lib/cache/ResolverCachePlugin.js +6 -6
  107. package/lib/cache/mergeEtags.js +16 -21
  108. package/lib/cli.js +148 -104
  109. package/lib/config/browserslistTargetHandler.js +16 -13
  110. package/lib/config/defaults.js +32 -28
  111. package/lib/config/normalization.js +335 -344
  112. package/lib/config/target.js +42 -52
  113. package/lib/container/ContainerEntryModule.js +2 -2
  114. package/lib/container/ContainerPlugin.js +1 -1
  115. package/lib/container/RemoteRuntimeModule.js +11 -8
  116. package/lib/container/options.js +18 -4
  117. package/lib/css/CssExportsGenerator.js +26 -24
  118. package/lib/css/CssGenerator.js +9 -4
  119. package/lib/css/CssLoadingRuntimeModule.js +10 -10
  120. package/lib/css/CssModulesPlugin.js +127 -47
  121. package/lib/css/CssParser.js +20 -18
  122. package/lib/css/walkCssTokens.js +80 -95
  123. package/lib/debug/ProfilingPlugin.js +19 -20
  124. package/lib/dependencies/AMDDefineDependency.js +1 -1
  125. package/lib/dependencies/AMDDefineDependencyParserPlugin.js +83 -47
  126. package/lib/dependencies/AMDRequireArrayDependency.js +9 -10
  127. package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +22 -16
  128. package/lib/dependencies/AMDRuntimeModules.js +2 -2
  129. package/lib/dependencies/CommonJsDependencyHelpers.js +6 -2
  130. package/lib/dependencies/CommonJsExportRequireDependency.js +37 -41
  131. package/lib/dependencies/CommonJsExportsDependency.js +0 -1
  132. package/lib/dependencies/CommonJsExportsParserPlugin.js +19 -23
  133. package/lib/dependencies/CommonJsFullRequireDependency.js +1 -1
  134. package/lib/dependencies/CommonJsImportsParserPlugin.js +52 -61
  135. package/lib/dependencies/CommonJsSelfReferenceDependency.js +6 -8
  136. package/lib/dependencies/ConstDependency.js +1 -1
  137. package/lib/dependencies/ContextDependency.js +7 -2
  138. package/lib/dependencies/ContextDependencyHelpers.js +31 -34
  139. package/lib/dependencies/ContextElementDependency.js +35 -8
  140. package/lib/dependencies/CriticalDependencyWarning.js +1 -1
  141. package/lib/dependencies/CssExportDependency.js +7 -7
  142. package/lib/dependencies/CssImportDependency.js +0 -2
  143. package/lib/dependencies/CssLocalIdentifierDependency.js +3 -3
  144. package/lib/dependencies/CssSelfLocalIdentifierDependency.js +2 -1
  145. package/lib/dependencies/CssUrlDependency.js +4 -5
  146. package/lib/dependencies/DynamicExports.js +5 -5
  147. package/lib/dependencies/ExportsInfoDependency.js +1 -2
  148. package/lib/dependencies/HarmonyAcceptImportDependency.js +1 -1
  149. package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +4 -5
  150. package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +27 -16
  151. package/lib/dependencies/HarmonyExportExpressionDependency.js +1 -1
  152. package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +107 -64
  153. package/lib/dependencies/HarmonyExports.js +2 -2
  154. package/lib/dependencies/HarmonyImportDependency.js +2 -4
  155. package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +19 -4
  156. package/lib/dependencies/HarmonyImportSpecifierDependency.js +40 -15
  157. package/lib/dependencies/ImportDependency.js +1 -1
  158. package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +5 -5
  159. package/lib/dependencies/ImportMetaPlugin.js +11 -13
  160. package/lib/dependencies/ImportParserPlugin.js +39 -44
  161. package/lib/dependencies/JsonExportsDependency.js +22 -18
  162. package/lib/dependencies/LoaderPlugin.js +47 -36
  163. package/lib/dependencies/LocalModule.js +1 -1
  164. package/lib/dependencies/LocalModulesHelpers.js +4 -4
  165. package/lib/dependencies/ModuleDecoratorDependency.js +1 -1
  166. package/lib/dependencies/ProvidedDependency.js +1 -1
  167. package/lib/dependencies/PureExpressionDependency.js +6 -6
  168. package/lib/dependencies/RequireContextDependencyParserPlugin.js +1 -1
  169. package/lib/dependencies/RuntimeRequirementsDependency.js +1 -1
  170. package/lib/dependencies/SystemPlugin.js +1 -1
  171. package/lib/dependencies/URLDependency.js +3 -3
  172. package/lib/dependencies/URLPlugin.js +66 -12
  173. package/lib/dependencies/WorkerPlugin.js +25 -24
  174. package/lib/dependencies/processExportInfo.js +3 -1
  175. package/lib/electron/ElectronTargetPlugin.js +1 -0
  176. package/lib/esm/ModuleChunkFormatPlugin.js +3 -3
  177. package/lib/esm/ModuleChunkLoadingRuntimeModule.js +7 -3
  178. package/lib/formatLocation.js +1 -2
  179. package/lib/hmr/HotModuleReplacement.runtime.js +4 -5
  180. package/lib/hmr/HotModuleReplacementRuntimeModule.js +1 -0
  181. package/lib/hmr/JavascriptHotModuleReplacement.runtime.js +9 -12
  182. package/lib/hmr/LazyCompilationPlugin.js +27 -12
  183. package/lib/hmr/lazyCompilationBackend.js +64 -40
  184. package/lib/ids/ChunkModuleIdRangePlugin.js +1 -3
  185. package/lib/ids/DeterministicChunkIdsPlugin.js +2 -4
  186. package/lib/ids/DeterministicModuleIdsPlugin.js +1 -1
  187. package/lib/ids/HashedModuleIdsPlugin.js +5 -1
  188. package/lib/ids/IdHelpers.js +29 -39
  189. package/lib/ids/SyncModuleIdsPlugin.js +7 -2
  190. package/lib/index.js +1 -5
  191. package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +5 -4
  192. package/lib/javascript/BasicEvaluatedExpression.js +4 -19
  193. package/lib/javascript/ChunkHelpers.js +1 -1
  194. package/lib/javascript/CommonJsChunkFormatPlugin.js +3 -2
  195. package/lib/javascript/EnableChunkLoadingPlugin.js +7 -6
  196. package/lib/javascript/JavascriptGenerator.js +23 -7
  197. package/lib/javascript/JavascriptModulesPlugin.js +133 -86
  198. package/lib/javascript/JavascriptParser.js +179 -200
  199. package/lib/javascript/JavascriptParserHelpers.js +20 -21
  200. package/lib/javascript/StartupHelpers.js +41 -13
  201. package/lib/json/JsonGenerator.js +7 -13
  202. package/lib/json/JsonModulesPlugin.js +1 -4
  203. package/lib/json/JsonParser.js +5 -3
  204. package/lib/library/AmdLibraryPlugin.js +12 -16
  205. package/lib/library/AssignLibraryPlugin.js +8 -10
  206. package/lib/library/EnableLibraryPlugin.js +15 -14
  207. package/lib/library/JsonpLibraryPlugin.js +2 -1
  208. package/lib/library/ModernModuleLibraryPlugin.js +8 -6
  209. package/lib/library/ModuleLibraryPlugin.js +2 -1
  210. package/lib/library/SystemLibraryPlugin.js +2 -1
  211. package/lib/library/UmdLibraryPlugin.js +66 -92
  212. package/lib/logging/Logger.js +32 -4
  213. package/lib/logging/createConsoleLogger.js +12 -13
  214. package/lib/logging/runtime.js +7 -8
  215. package/lib/logging/truncateArgs.js +5 -8
  216. package/lib/node/NodeWatchFileSystem.js +3 -18
  217. package/lib/node/ReadFileChunkLoadingRuntimeModule.js +2 -2
  218. package/lib/node/ReadFileCompileAsyncWasmPlugin.js +1 -0
  219. package/lib/node/RequireChunkLoadingRuntimeModule.js +2 -2
  220. package/lib/node/nodeConsole.js +22 -22
  221. package/lib/optimize/AggressiveMergingPlugin.js +2 -4
  222. package/lib/optimize/AggressiveSplittingPlugin.js +16 -19
  223. package/lib/optimize/ConcatenatedModule.js +81 -51
  224. package/lib/optimize/EnsureChunkConditionsPlugin.js +1 -1
  225. package/lib/optimize/FlagIncludedChunksPlugin.js +3 -3
  226. package/lib/optimize/InnerGraph.js +17 -17
  227. package/lib/optimize/InnerGraphPlugin.js +8 -7
  228. package/lib/optimize/LimitChunkCountPlugin.js +2 -3
  229. package/lib/optimize/MangleExportsPlugin.js +1 -0
  230. package/lib/optimize/MergeDuplicateChunksPlugin.js +2 -2
  231. package/lib/optimize/MinMaxSizeWarning.js +1 -1
  232. package/lib/optimize/ModuleConcatenationPlugin.js +54 -78
  233. package/lib/optimize/RealContentHashPlugin.js +7 -10
  234. package/lib/optimize/RemoveParentModulesPlugin.js +3 -3
  235. package/lib/optimize/SideEffectsFlagPlugin.js +6 -2
  236. package/lib/optimize/SplitChunksPlugin.js +34 -30
  237. package/lib/performance/SizeLimitsPlugin.js +2 -2
  238. package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +1 -1
  239. package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +1 -1
  240. package/lib/rules/BasicEffectRulePlugin.js +3 -1
  241. package/lib/rules/BasicMatcherRulePlugin.js +3 -1
  242. package/lib/rules/ObjectMatcherRulePlugin.js +4 -1
  243. package/lib/rules/RuleSetCompiler.js +41 -22
  244. package/lib/rules/UseEffectRulePlugin.js +36 -32
  245. package/lib/runtime/AsyncModuleRuntimeModule.js +1 -1
  246. package/lib/runtime/AutoPublicPathRuntimeModule.js +8 -3
  247. package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +2 -2
  248. package/lib/runtime/DefinePropertyGettersRuntimeModule.js +1 -1
  249. package/lib/runtime/EnsureChunkRuntimeModule.js +10 -11
  250. package/lib/runtime/GetChunkFilenameRuntimeModule.js +11 -17
  251. package/lib/runtime/LoadScriptRuntimeModule.js +17 -18
  252. package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +1 -3
  253. package/lib/schemes/DataUriPlugin.js +1 -1
  254. package/lib/schemes/HttpUriPlugin.js +241 -126
  255. package/lib/serialization/BinaryMiddleware.js +44 -28
  256. package/lib/serialization/DateObjectSerializer.js +1 -0
  257. package/lib/serialization/ErrorObjectSerializer.js +2 -0
  258. package/lib/serialization/FileMiddleware.js +154 -106
  259. package/lib/serialization/MapObjectSerializer.js +2 -1
  260. package/lib/serialization/NullPrototypeObjectSerializer.js +3 -2
  261. package/lib/serialization/ObjectMiddleware.js +52 -56
  262. package/lib/serialization/PlainObjectSerializer.js +32 -6
  263. package/lib/serialization/RegExpObjectSerializer.js +1 -0
  264. package/lib/serialization/Serializer.js +4 -5
  265. package/lib/serialization/SerializerMiddleware.js +6 -6
  266. package/lib/serialization/SetObjectSerializer.js +2 -1
  267. package/lib/sharing/ConsumeSharedPlugin.js +116 -97
  268. package/lib/sharing/ConsumeSharedRuntimeModule.js +4 -4
  269. package/lib/sharing/ProvideForSharedDependency.js +0 -1
  270. package/lib/sharing/ProvideSharedPlugin.js +2 -2
  271. package/lib/sharing/resolveMatchedConfigs.js +2 -1
  272. package/lib/sharing/utils.js +15 -27
  273. package/lib/stats/DefaultStatsFactoryPlugin.js +424 -281
  274. package/lib/stats/DefaultStatsPresetPlugin.js +73 -18
  275. package/lib/stats/DefaultStatsPrinterPlugin.js +370 -101
  276. package/lib/stats/StatsFactory.js +127 -56
  277. package/lib/stats/StatsPrinter.js +75 -44
  278. package/lib/util/ArrayHelpers.js +8 -4
  279. package/lib/util/ArrayQueue.js +1 -1
  280. package/lib/util/AsyncQueue.js +31 -12
  281. package/lib/util/IterableHelpers.js +3 -4
  282. package/lib/util/LazyBucketSortedSet.js +60 -44
  283. package/lib/util/LazySet.js +13 -0
  284. package/lib/util/MapHelpers.js +1 -3
  285. package/lib/util/ParallelismFactorCalculator.js +1 -1
  286. package/lib/util/Queue.js +1 -1
  287. package/lib/util/Semaphore.js +4 -7
  288. package/lib/util/SetHelpers.js +5 -5
  289. package/lib/util/SortableSet.js +4 -3
  290. package/lib/util/StackedCacheMap.js +4 -6
  291. package/lib/util/StackedMap.js +1 -3
  292. package/lib/util/StringXor.js +0 -5
  293. package/lib/util/TupleQueue.js +1 -1
  294. package/lib/util/TupleSet.js +15 -5
  295. package/lib/util/URLAbsoluteSpecifier.js +7 -7
  296. package/lib/util/WeakTupleMap.js +19 -21
  297. package/lib/util/binarySearchBounds.js +5 -12
  298. package/lib/util/chainedImports.js +1 -1
  299. package/lib/util/cleverMerge.js +21 -19
  300. package/lib/util/comparators.js +57 -52
  301. package/lib/util/compileBooleanMatcher.js +3 -6
  302. package/lib/util/conventions.js +8 -11
  303. package/lib/util/createHash.js +9 -6
  304. package/lib/util/deprecation.js +22 -12
  305. package/lib/util/deterministicGrouping.js +19 -26
  306. package/lib/util/findGraphRoots.js +2 -2
  307. package/lib/util/fs.js +32 -32
  308. package/lib/util/hash/md4.js +2 -2
  309. package/lib/util/hash/wasm-hash.js +7 -7
  310. package/lib/util/hash/xxhash64.js +2 -2
  311. package/lib/util/identifier.js +81 -59
  312. package/lib/util/memoize.js +8 -10
  313. package/lib/util/mergeScope.js +6 -9
  314. package/lib/util/nonNumericOnlyHash.js +2 -2
  315. package/lib/util/numberHash.js +1 -6
  316. package/lib/util/objectToMap.js +0 -1
  317. package/lib/util/propertyAccess.js +2 -5
  318. package/lib/util/propertyName.js +1 -3
  319. package/lib/util/registerExternalSerializer.js +1 -1
  320. package/lib/util/runtime.js +109 -113
  321. package/lib/util/semver.js +29 -27
  322. package/lib/util/serialization.js +16 -1
  323. package/lib/util/smartGrouping.js +5 -5
  324. package/lib/util/source.js +1 -1
  325. package/lib/wasm/EnableWasmLoadingPlugin.js +5 -4
  326. package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +3 -3
  327. package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +5 -6
  328. package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +3 -3
  329. package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +20 -19
  330. package/lib/wasm-sync/WebAssemblyGenerator.js +14 -29
  331. package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +1 -1
  332. package/lib/wasm-sync/WebAssemblyUtils.js +2 -2
  333. package/lib/web/JsonpChunkLoadingRuntimeModule.js +2 -3
  334. package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +3 -1
  335. package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +1 -1
  336. package/package.json +18 -17
  337. package/schemas/WebpackOptions.check.js +1 -1
  338. package/schemas/WebpackOptions.json +5 -0
  339. package/schemas/plugins/container/ContainerReferencePlugin.check.js +1 -1
  340. package/schemas/plugins/container/ContainerReferencePlugin.json +1 -0
  341. package/schemas/plugins/container/ExternalsType.check.js +1 -1
  342. package/schemas/plugins/container/ModuleFederationPlugin.check.js +1 -1
  343. package/schemas/plugins/container/ModuleFederationPlugin.json +1 -0
  344. package/types.d.ts +681 -355
@@ -30,9 +30,8 @@ const AbstractLibraryPlugin = require("./AbstractLibraryPlugin");
30
30
  * @param {string[]} accessor the accessor to convert to path
31
31
  * @returns {string} the path
32
32
  */
33
- const accessorToObjectAccess = accessor => {
34
- return accessor.map(a => `[${JSON.stringify(a)}]`).join("");
35
- };
33
+ const accessorToObjectAccess = accessor =>
34
+ accessor.map(a => `[${JSON.stringify(a)}]`).join("");
36
35
 
37
36
  /**
38
37
  * @param {string|undefined} base the path prefix
@@ -157,18 +156,17 @@ class UmdLibraryPlugin extends AbstractLibraryPlugin {
157
156
  * @param {string} str the string to replace
158
157
  * @returns {string} the replaced keys
159
158
  */
160
- const replaceKeys = str => {
161
- return compilation.getPath(str, {
159
+ const replaceKeys = str =>
160
+ compilation.getPath(str, {
162
161
  chunk
163
162
  });
164
- };
165
163
 
166
164
  /**
167
165
  * @param {ExternalModule[]} modules external modules
168
166
  * @returns {string} result
169
167
  */
170
- const externalsDepsArray = modules => {
171
- return `[${replaceKeys(
168
+ const externalsDepsArray = modules =>
169
+ `[${replaceKeys(
172
170
  modules
173
171
  .map(m =>
174
172
  JSON.stringify(
@@ -180,14 +178,13 @@ class UmdLibraryPlugin extends AbstractLibraryPlugin {
180
178
  )
181
179
  .join(", ")
182
180
  )}]`;
183
- };
184
181
 
185
182
  /**
186
183
  * @param {ExternalModule[]} modules external modules
187
184
  * @returns {string} result
188
185
  */
189
- const externalsRootArray = modules => {
190
- return replaceKeys(
186
+ const externalsRootArray = modules =>
187
+ replaceKeys(
191
188
  modules
192
189
  .map(m => {
193
190
  let request = m.request;
@@ -199,14 +196,13 @@ class UmdLibraryPlugin extends AbstractLibraryPlugin {
199
196
  })
200
197
  .join(", ")
201
198
  );
202
- };
203
199
 
204
200
  /**
205
201
  * @param {string} type the type
206
202
  * @returns {string} external require array
207
203
  */
208
- const externalsRequireArray = type => {
209
- return replaceKeys(
204
+ const externalsRequireArray = type =>
205
+ replaceKeys(
210
206
  externals
211
207
  .map(m => {
212
208
  let expr;
@@ -218,16 +214,14 @@ class UmdLibraryPlugin extends AbstractLibraryPlugin {
218
214
  }
219
215
  if (request === undefined) {
220
216
  throw new Error(
221
- "Missing external configuration for type:" + type
217
+ `Missing external configuration for type:${type}`
222
218
  );
223
219
  }
224
- if (Array.isArray(request)) {
225
- expr = `require(${JSON.stringify(
226
- request[0]
227
- )})${accessorToObjectAccess(request.slice(1))}`;
228
- } else {
229
- expr = `require(${JSON.stringify(request)})`;
230
- }
220
+ expr = Array.isArray(request)
221
+ ? `require(${JSON.stringify(
222
+ request[0]
223
+ )})${accessorToObjectAccess(request.slice(1))}`
224
+ : `require(${JSON.stringify(request)})`;
231
225
  if (m.isOptional(moduleGraph)) {
232
226
  expr = `(function webpackLoadOptionalExternalModule() { try { return ${expr}; } catch(e) {} }())`;
233
227
  }
@@ -235,14 +229,13 @@ class UmdLibraryPlugin extends AbstractLibraryPlugin {
235
229
  })
236
230
  .join(", ")
237
231
  );
238
- };
239
232
 
240
233
  /**
241
234
  * @param {ExternalModule[]} modules external modules
242
235
  * @returns {string} arguments
243
236
  */
244
- const externalsArguments = modules => {
245
- return modules
237
+ const externalsArguments = modules =>
238
+ modules
246
239
  .map(
247
240
  m =>
248
241
  `__WEBPACK_EXTERNAL_MODULE_${Template.toIdentifier(
@@ -250,26 +243,24 @@ class UmdLibraryPlugin extends AbstractLibraryPlugin {
250
243
  )}__`
251
244
  )
252
245
  .join(", ");
253
- };
254
246
 
255
247
  /**
256
248
  * @param {string| string[]} library library name
257
249
  * @returns {string} stringified library name
258
250
  */
259
- const libraryName = library => {
260
- return JSON.stringify(
251
+ const libraryName = library =>
252
+ JSON.stringify(
261
253
  replaceKeys(/** @type {string[]} */ ([]).concat(library).pop())
262
254
  );
263
- };
264
255
 
265
256
  let amdFactory;
266
257
  if (optionalExternals.length > 0) {
267
258
  const wrapperArguments = externalsArguments(requiredExternals);
268
259
  const factoryArguments =
269
260
  requiredExternals.length > 0
270
- ? externalsArguments(requiredExternals) +
271
- ", " +
272
- externalsRootArray(optionalExternals)
261
+ ? `${externalsArguments(requiredExternals)}, ${externalsRootArray(
262
+ optionalExternals
263
+ )}`
273
264
  : externalsRootArray(optionalExternals);
274
265
  amdFactory =
275
266
  `function webpackLoadOptionalExternalModuleAmd(${wrapperArguments}) {\n` +
@@ -288,72 +279,55 @@ class UmdLibraryPlugin extends AbstractLibraryPlugin {
288
279
  const getAuxiliaryComment = type => {
289
280
  if (auxiliaryComment) {
290
281
  if (typeof auxiliaryComment === "string")
291
- return "\t//" + auxiliaryComment + "\n";
292
- if (auxiliaryComment[type])
293
- return "\t//" + auxiliaryComment[type] + "\n";
282
+ return `\t//${auxiliaryComment}\n`;
283
+ if (auxiliaryComment[type]) return `\t//${auxiliaryComment[type]}\n`;
294
284
  }
295
285
  return "";
296
286
  };
297
287
 
298
288
  return new ConcatSource(
299
289
  new OriginalSource(
300
- "(function webpackUniversalModuleDefinition(root, factory) {\n" +
301
- getAuxiliaryComment("commonjs2") +
302
- " if(typeof exports === 'object' && typeof module === 'object')\n" +
303
- " module.exports = factory(" +
304
- externalsRequireArray("commonjs2") +
305
- ");\n" +
306
- getAuxiliaryComment("amd") +
307
- " else if(typeof define === 'function' && define.amd)\n" +
308
- (requiredExternals.length > 0
309
- ? names.amd && namedDefine === true
310
- ? " define(" +
311
- libraryName(names.amd) +
312
- ", " +
313
- externalsDepsArray(requiredExternals) +
314
- ", " +
315
- amdFactory +
316
- ");\n"
317
- : " define(" +
318
- externalsDepsArray(requiredExternals) +
319
- ", " +
320
- amdFactory +
321
- ");\n"
322
- : names.amd && namedDefine === true
323
- ? " define(" +
324
- libraryName(names.amd) +
325
- ", [], " +
326
- amdFactory +
327
- ");\n"
328
- : " define([], " + amdFactory + ");\n") +
329
- (names.root || names.commonjs
330
- ? getAuxiliaryComment("commonjs") +
331
- " else if(typeof exports === 'object')\n" +
332
- " exports[" +
333
- libraryName(names.commonjs || names.root) +
334
- "] = factory(" +
335
- externalsRequireArray("commonjs") +
336
- ");\n" +
337
- getAuxiliaryComment("root") +
338
- " else\n" +
339
- " " +
340
- replaceKeys(
341
- accessorAccess("root", names.root || names.commonjs)
342
- ) +
343
- " = factory(" +
344
- externalsRootArray(externals) +
345
- ");\n"
346
- : " else {\n" +
347
- (externals.length > 0
348
- ? " var a = typeof exports === 'object' ? factory(" +
349
- externalsRequireArray("commonjs") +
350
- ") : factory(" +
351
- externalsRootArray(externals) +
352
- ");\n"
353
- : " var a = factory();\n") +
354
- " for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n" +
355
- " }\n") +
356
- `})(${runtimeTemplate.outputOptions.globalObject}, ${
290
+ `(function webpackUniversalModuleDefinition(root, factory) {\n${getAuxiliaryComment(
291
+ "commonjs2"
292
+ )} if(typeof exports === 'object' && typeof module === 'object')\n` +
293
+ ` module.exports = factory(${externalsRequireArray(
294
+ "commonjs2"
295
+ )});\n${getAuxiliaryComment(
296
+ "amd"
297
+ )} else if(typeof define === 'function' && define.amd)\n${
298
+ requiredExternals.length > 0
299
+ ? names.amd && namedDefine === true
300
+ ? ` define(${libraryName(names.amd)}, ${externalsDepsArray(
301
+ requiredExternals
302
+ )}, ${amdFactory});\n`
303
+ : ` define(${externalsDepsArray(requiredExternals)}, ${
304
+ amdFactory
305
+ });\n`
306
+ : names.amd && namedDefine === true
307
+ ? ` define(${libraryName(names.amd)}, [], ${amdFactory});\n`
308
+ : ` define([], ${amdFactory});\n`
309
+ }${
310
+ names.root || names.commonjs
311
+ ? `${getAuxiliaryComment(
312
+ "commonjs"
313
+ )} else if(typeof exports === 'object')\n` +
314
+ ` exports[${libraryName(
315
+ names.commonjs || names.root
316
+ )}] = factory(${externalsRequireArray(
317
+ "commonjs"
318
+ )});\n${getAuxiliaryComment("root")} else\n` +
319
+ ` ${replaceKeys(
320
+ accessorAccess("root", names.root || names.commonjs)
321
+ )} = factory(${externalsRootArray(externals)});\n`
322
+ : ` else {\n${
323
+ externals.length > 0
324
+ ? ` var a = typeof exports === 'object' ? factory(${externalsRequireArray(
325
+ "commonjs"
326
+ )}) : factory(${externalsRootArray(externals)});\n`
327
+ : " var a = factory();\n"
328
+ } for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n` +
329
+ " }\n"
330
+ }})(${runtimeTemplate.outputOptions.globalObject}, ${
357
331
  runtimeTemplate.supportsArrowFunction()
358
332
  ? `(${externalsArguments(externals)}) =>`
359
333
  : `function(${externalsArguments(externals)})`
@@ -27,7 +27,7 @@ const LogType = Object.freeze({
27
27
  status: /** @type {"status"} */ ("status") // message, arguments
28
28
  });
29
29
 
30
- exports.LogType = LogType;
30
+ module.exports.LogType = LogType;
31
31
 
32
32
  /** @typedef {typeof LogType[keyof typeof LogType]} LogTypeEnum */
33
33
 
@@ -45,26 +45,45 @@ class WebpackLogger {
45
45
  this.getChildLogger = getChildLogger;
46
46
  }
47
47
 
48
+ /**
49
+ * @param {...any} args args
50
+ */
48
51
  error(...args) {
49
52
  this[LOG_SYMBOL](LogType.error, args);
50
53
  }
51
54
 
55
+ /**
56
+ * @param {...any} args args
57
+ */
52
58
  warn(...args) {
53
59
  this[LOG_SYMBOL](LogType.warn, args);
54
60
  }
55
61
 
62
+ /**
63
+ * @param {...any} args args
64
+ */
56
65
  info(...args) {
57
66
  this[LOG_SYMBOL](LogType.info, args);
58
67
  }
59
68
 
69
+ /**
70
+ * @param {...any} args args
71
+ */
60
72
  log(...args) {
61
73
  this[LOG_SYMBOL](LogType.log, args);
62
74
  }
63
75
 
76
+ /**
77
+ * @param {...any} args args
78
+ */
64
79
  debug(...args) {
65
80
  this[LOG_SYMBOL](LogType.debug, args);
66
81
  }
67
82
 
83
+ /**
84
+ * @param {any} assertion assertion
85
+ * @param {...any} args args
86
+ */
68
87
  assert(assertion, ...args) {
69
88
  if (!assertion) {
70
89
  this[LOG_SYMBOL](LogType.error, args);
@@ -79,20 +98,29 @@ class WebpackLogger {
79
98
  this[LOG_SYMBOL](LogType.clear);
80
99
  }
81
100
 
101
+ /**
102
+ * @param {...any} args args
103
+ */
82
104
  status(...args) {
83
105
  this[LOG_SYMBOL](LogType.status, args);
84
106
  }
85
107
 
108
+ /**
109
+ * @param {...any} args args
110
+ */
86
111
  group(...args) {
87
112
  this[LOG_SYMBOL](LogType.group, args);
88
113
  }
89
114
 
115
+ /**
116
+ * @param {...any} args args
117
+ */
90
118
  groupCollapsed(...args) {
91
119
  this[LOG_SYMBOL](LogType.groupCollapsed, args);
92
120
  }
93
121
 
94
- groupEnd(...args) {
95
- this[LOG_SYMBOL](LogType.groupEnd, args);
122
+ groupEnd() {
123
+ this[LOG_SYMBOL](LogType.groupEnd);
96
124
  }
97
125
 
98
126
  /**
@@ -185,4 +213,4 @@ class WebpackLogger {
185
213
  }
186
214
  }
187
215
 
188
- exports.Logger = WebpackLogger;
216
+ module.exports.Logger = WebpackLogger;
@@ -12,7 +12,7 @@ const { LogType } = require("./Logger");
12
12
  /** @typedef {import("./Logger").LogTypeEnum} LogTypeEnum */
13
13
 
14
14
  /** @typedef {function(string): boolean} FilterFunction */
15
- /** @typedef {function(string, LogTypeEnum, any[]): void} LoggingFunction */
15
+ /** @typedef {function(string, LogTypeEnum, any[]=): void} LoggingFunction */
16
16
 
17
17
  /**
18
18
  * @typedef {object} LoggerConsole
@@ -95,7 +95,7 @@ module.exports = ({ level = "info", debug = false, console }) => {
95
95
  /**
96
96
  * @param {string} name name of the logger
97
97
  * @param {LogTypeEnum} type type of the log entry
98
- * @param {any[]} args arguments of the log entry
98
+ * @param {any[]=} args arguments of the log entry
99
99
  * @returns {void}
100
100
  */
101
101
  const logger = (name, type, args) => {
@@ -103,12 +103,10 @@ module.exports = ({ level = "info", debug = false, console }) => {
103
103
  if (Array.isArray(args)) {
104
104
  if (args.length > 0 && typeof args[0] === "string") {
105
105
  return [`[${name}] ${args[0]}`, ...args.slice(1)];
106
- } else {
107
- return [`[${name}]`, ...args];
108
106
  }
109
- } else {
110
- return [];
107
+ return [`[${name}]`, ...args];
111
108
  }
109
+ return [];
112
110
  };
113
111
  const debug = debugFilters.some(f => f(name));
114
112
  switch (type) {
@@ -167,8 +165,11 @@ module.exports = ({ level = "info", debug = false, console }) => {
167
165
  break;
168
166
  case LogType.time: {
169
167
  if (!debug && loglevel > LogLevel.log) return;
170
- const ms = args[1] * 1000 + args[2] / 1000000;
171
- const msg = `[${name}] ${args[0]}: ${ms} ms`;
168
+ const [label, start, end] =
169
+ /** @type {[string, number, number]} */
170
+ (args);
171
+ const ms = start * 1000 + end / 1000000;
172
+ const msg = `[${name}] ${label}: ${ms} ms`;
172
173
  if (typeof console.logTime === "function") {
173
174
  console.logTime(msg);
174
175
  } else {
@@ -195,15 +196,13 @@ module.exports = ({ level = "info", debug = false, console }) => {
195
196
  case LogType.status:
196
197
  if (!debug && loglevel > LogLevel.info) return;
197
198
  if (typeof console.status === "function") {
198
- if (args.length === 0) {
199
+ if (!args || args.length === 0) {
199
200
  console.status();
200
201
  } else {
201
202
  console.status(...labeledArgs());
202
203
  }
203
- } else {
204
- if (args.length !== 0) {
205
- console.info(...labeledArgs());
206
- }
204
+ } else if (args && args.length !== 0) {
205
+ console.info(...labeledArgs());
207
206
  }
208
207
  break;
209
208
  default:
@@ -10,7 +10,7 @@ const { Logger } = require("./Logger");
10
10
  const createConsoleLogger = require("./createConsoleLogger");
11
11
 
12
12
  /** @type {createConsoleLogger.LoggerOptions} */
13
- let currentDefaultLoggerOptions = {
13
+ const currentDefaultLoggerOptions = {
14
14
  level: "info",
15
15
  debug: false,
16
16
  console
@@ -21,26 +21,25 @@ let currentDefaultLogger = createConsoleLogger(currentDefaultLoggerOptions);
21
21
  * @param {string} name name of the logger
22
22
  * @returns {Logger} a logger
23
23
  */
24
- exports.getLogger = name => {
25
- return new Logger(
24
+ module.exports.getLogger = name =>
25
+ new Logger(
26
26
  (type, args) => {
27
- if (exports.hooks.log.call(name, type, args) === undefined) {
27
+ if (module.exports.hooks.log.call(name, type, args) === undefined) {
28
28
  currentDefaultLogger(name, type, args);
29
29
  }
30
30
  },
31
- childName => exports.getLogger(`${name}/${childName}`)
31
+ childName => module.exports.getLogger(`${name}/${childName}`)
32
32
  );
33
- };
34
33
 
35
34
  /**
36
35
  * @param {createConsoleLogger.LoggerOptions} options new options, merge with old options
37
36
  * @returns {void}
38
37
  */
39
- exports.configureDefaultLogger = options => {
38
+ module.exports.configureDefaultLogger = options => {
40
39
  Object.assign(currentDefaultLoggerOptions, options);
41
40
  currentDefaultLogger = createConsoleLogger(currentDefaultLoggerOptions);
42
41
  };
43
42
 
44
- exports.hooks = {
43
+ module.exports.hooks = {
45
44
  log: new SyncBailHook(["origin", "type", "args"])
46
45
  };
@@ -28,17 +28,15 @@ const truncateArgs = (args, maxLength) => {
28
28
  if (availableLength >= args[0].length) {
29
29
  return args;
30
30
  } else if (availableLength > 3) {
31
- return ["..." + args[0].slice(-availableLength + 3)];
32
- } else {
33
- return [args[0].slice(-availableLength)];
31
+ return [`...${args[0].slice(-availableLength + 3)}`];
34
32
  }
33
+ return [args[0].slice(-availableLength)];
35
34
  }
36
35
 
37
36
  // Check if there is space for at least 4 chars per arg
38
37
  if (availableLength < arraySum(lengths.map(i => Math.min(i, 6)))) {
39
38
  // remove args
40
- if (args.length > 1)
41
- return truncateArgs(args.slice(0, args.length - 1), maxLength);
39
+ if (args.length > 1) return truncateArgs(args.slice(0, -1), maxLength);
42
40
  return [];
43
41
  }
44
42
 
@@ -74,12 +72,11 @@ const truncateArgs = (args, maxLength) => {
74
72
  if (str.length === length) {
75
73
  return str;
76
74
  } else if (length > 5) {
77
- return "..." + str.slice(-length + 3);
75
+ return `...${str.slice(-length + 3)}`;
78
76
  } else if (length > 0) {
79
77
  return str.slice(-length);
80
- } else {
81
- return "";
82
78
  }
79
+ return "";
83
80
  });
84
81
  };
85
82
 
@@ -11,9 +11,7 @@ const Watchpack = require("watchpack");
11
11
  /** @typedef {import("../../declarations/WebpackOptions").WatchOptions} WatchOptions */
12
12
  /** @typedef {import("../FileSystemInfo").FileSystemInfoEntry} FileSystemInfoEntry */
13
13
  /** @typedef {import("../util/fs").InputFileSystem} InputFileSystem */
14
- /** @typedef {import("../util/fs").WatchFileSystem} WatchFileSystem */
15
14
  /** @typedef {import("../util/fs").WatchMethod} WatchMethod */
16
- /** @typedef {import("../util/fs").Watcher} Watcher */
17
15
 
18
16
  class NodeWatchFileSystem {
19
17
  /**
@@ -27,16 +25,7 @@ class NodeWatchFileSystem {
27
25
  this.watcher = new Watchpack(this.watcherOptions);
28
26
  }
29
27
 
30
- /**
31
- * @param {Iterable<string>} files watched files
32
- * @param {Iterable<string>} directories watched directories
33
- * @param {Iterable<string>} missing watched existence entries
34
- * @param {number} startTime timestamp of start time
35
- * @param {WatchOptions} options options object
36
- * @param {function(Error | null, Map<string, FileSystemInfoEntry>, Map<string, FileSystemInfoEntry>, Set<string>, Set<string>): void} callback aggregated callback
37
- * @param {function(string, number): void} callbackUndelayed callback when the first change was detected
38
- * @returns {Watcher} a watcher
39
- */
28
+ /** @type {WatchMethod} */
40
29
  watch(
41
30
  files,
42
31
  directories,
@@ -161,16 +150,12 @@ class NodeWatchFileSystem {
161
150
  "DEP_WEBPACK_WATCHER_GET_AGGREGATED_CHANGES"
162
151
  ),
163
152
  getFileTimeInfoEntries: util.deprecate(
164
- () => {
165
- return fetchTimeInfo().fileTimeInfoEntries;
166
- },
153
+ () => fetchTimeInfo().fileTimeInfoEntries,
167
154
  "Watcher.getFileTimeInfoEntries is deprecated in favor of Watcher.getInfo since that's more performant.",
168
155
  "DEP_WEBPACK_WATCHER_FILE_TIME_INFO_ENTRIES"
169
156
  ),
170
157
  getContextTimeInfoEntries: util.deprecate(
171
- () => {
172
- return fetchTimeInfo().contextTimeInfoEntries;
173
- },
158
+ () => fetchTimeInfo().contextTimeInfoEntries,
174
159
  "Watcher.getContextTimeInfoEntries is deprecated in favor of Watcher.getInfo since that's more performant.",
175
160
  "DEP_WEBPACK_WATCHER_CONTEXT_TIME_INFO_ENTRIES"
176
161
  ),
@@ -43,7 +43,7 @@ class ReadFileChunkLoadingRuntimeModule extends RuntimeModule {
43
43
 
44
44
  return `${RuntimeGlobals.baseURI} = require("url").pathToFileURL(${
45
45
  rootOutputDir
46
- ? `__dirname + ${JSON.stringify("/" + rootOutputDir)}`
46
+ ? `__dirname + ${JSON.stringify(`/${rootOutputDir}`)}`
47
47
  : "__filename"
48
48
  });`;
49
49
  }
@@ -227,7 +227,7 @@ class ReadFileChunkLoadingRuntimeModule extends RuntimeModule {
227
227
  Template.indent([
228
228
  `if(${RuntimeGlobals.hasOwnProperty}(updatedModules, moduleId)) {`,
229
229
  Template.indent([
230
- `currentUpdate[moduleId] = updatedModules[moduleId];`,
230
+ "currentUpdate[moduleId] = updatedModules[moduleId];",
231
231
  "if(updatedModulesList) updatedModulesList.push(moduleId);"
232
232
  ]),
233
233
  "}"
@@ -18,6 +18,7 @@ class ReadFileCompileAsyncWasmPlugin {
18
18
  this._type = type;
19
19
  this._import = useImport;
20
20
  }
21
+
21
22
  /**
22
23
  * Apply the plugin
23
24
  * @param {Compiler} compiler the compiler instance
@@ -43,7 +43,7 @@ class RequireChunkLoadingRuntimeModule extends RuntimeModule {
43
43
 
44
44
  return `${RuntimeGlobals.baseURI} = require("url").pathToFileURL(${
45
45
  rootOutputDir !== "./"
46
- ? `__dirname + ${JSON.stringify("/" + rootOutputDir)}`
46
+ ? `__dirname + ${JSON.stringify(`/${rootOutputDir}`)}`
47
47
  : "__filename"
48
48
  });`;
49
49
  }
@@ -189,7 +189,7 @@ class RequireChunkLoadingRuntimeModule extends RuntimeModule {
189
189
  Template.indent([
190
190
  `if(${RuntimeGlobals.hasOwnProperty}(updatedModules, moduleId)) {`,
191
191
  Template.indent([
192
- `currentUpdate[moduleId] = updatedModules[moduleId];`,
192
+ "currentUpdate[moduleId] = updatedModules[moduleId];",
193
193
  "if(updatedModulesList) updatedModulesList.push(moduleId);"
194
194
  ]),
195
195
  "}"