webpack 5.93.0 → 5.94.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 (343) 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 +5 -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 +104 -64
  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 +126 -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 +12 -10
  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 +14 -19
  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 +31 -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 +1 -1
  138. package/lib/dependencies/ContextDependencyHelpers.js +31 -34
  139. package/lib/dependencies/ContextElementDependency.js +2 -2
  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 +91 -69
  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 +80 -48
  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/MinMaxSizeWarning.js +1 -1
  231. package/lib/optimize/ModuleConcatenationPlugin.js +54 -78
  232. package/lib/optimize/RealContentHashPlugin.js +7 -10
  233. package/lib/optimize/RemoveParentModulesPlugin.js +3 -3
  234. package/lib/optimize/SideEffectsFlagPlugin.js +6 -2
  235. package/lib/optimize/SplitChunksPlugin.js +34 -30
  236. package/lib/performance/SizeLimitsPlugin.js +2 -2
  237. package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +1 -1
  238. package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +1 -1
  239. package/lib/rules/BasicEffectRulePlugin.js +3 -1
  240. package/lib/rules/BasicMatcherRulePlugin.js +3 -1
  241. package/lib/rules/ObjectMatcherRulePlugin.js +4 -1
  242. package/lib/rules/RuleSetCompiler.js +41 -22
  243. package/lib/rules/UseEffectRulePlugin.js +36 -32
  244. package/lib/runtime/AsyncModuleRuntimeModule.js +1 -1
  245. package/lib/runtime/AutoPublicPathRuntimeModule.js +8 -3
  246. package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +2 -2
  247. package/lib/runtime/DefinePropertyGettersRuntimeModule.js +1 -1
  248. package/lib/runtime/EnsureChunkRuntimeModule.js +10 -11
  249. package/lib/runtime/GetChunkFilenameRuntimeModule.js +11 -17
  250. package/lib/runtime/LoadScriptRuntimeModule.js +17 -18
  251. package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +1 -3
  252. package/lib/schemes/DataUriPlugin.js +1 -1
  253. package/lib/schemes/HttpUriPlugin.js +241 -126
  254. package/lib/serialization/BinaryMiddleware.js +44 -28
  255. package/lib/serialization/DateObjectSerializer.js +1 -0
  256. package/lib/serialization/ErrorObjectSerializer.js +2 -0
  257. package/lib/serialization/FileMiddleware.js +154 -106
  258. package/lib/serialization/MapObjectSerializer.js +2 -1
  259. package/lib/serialization/NullPrototypeObjectSerializer.js +3 -2
  260. package/lib/serialization/ObjectMiddleware.js +52 -56
  261. package/lib/serialization/PlainObjectSerializer.js +32 -6
  262. package/lib/serialization/RegExpObjectSerializer.js +1 -0
  263. package/lib/serialization/Serializer.js +4 -5
  264. package/lib/serialization/SerializerMiddleware.js +6 -6
  265. package/lib/serialization/SetObjectSerializer.js +2 -1
  266. package/lib/sharing/ConsumeSharedPlugin.js +116 -97
  267. package/lib/sharing/ConsumeSharedRuntimeModule.js +4 -4
  268. package/lib/sharing/ProvideForSharedDependency.js +0 -1
  269. package/lib/sharing/ProvideSharedPlugin.js +2 -2
  270. package/lib/sharing/resolveMatchedConfigs.js +2 -1
  271. package/lib/sharing/utils.js +15 -27
  272. package/lib/stats/DefaultStatsFactoryPlugin.js +424 -281
  273. package/lib/stats/DefaultStatsPresetPlugin.js +73 -18
  274. package/lib/stats/DefaultStatsPrinterPlugin.js +370 -101
  275. package/lib/stats/StatsFactory.js +127 -56
  276. package/lib/stats/StatsPrinter.js +75 -44
  277. package/lib/util/ArrayHelpers.js +8 -4
  278. package/lib/util/ArrayQueue.js +1 -1
  279. package/lib/util/AsyncQueue.js +31 -12
  280. package/lib/util/IterableHelpers.js +3 -4
  281. package/lib/util/LazyBucketSortedSet.js +60 -44
  282. package/lib/util/LazySet.js +1 -0
  283. package/lib/util/MapHelpers.js +1 -3
  284. package/lib/util/ParallelismFactorCalculator.js +1 -1
  285. package/lib/util/Queue.js +1 -1
  286. package/lib/util/Semaphore.js +4 -7
  287. package/lib/util/SetHelpers.js +5 -5
  288. package/lib/util/SortableSet.js +4 -3
  289. package/lib/util/StackedCacheMap.js +4 -6
  290. package/lib/util/StackedMap.js +1 -3
  291. package/lib/util/StringXor.js +0 -5
  292. package/lib/util/TupleQueue.js +1 -1
  293. package/lib/util/TupleSet.js +15 -5
  294. package/lib/util/URLAbsoluteSpecifier.js +7 -7
  295. package/lib/util/WeakTupleMap.js +19 -21
  296. package/lib/util/binarySearchBounds.js +5 -12
  297. package/lib/util/chainedImports.js +1 -1
  298. package/lib/util/cleverMerge.js +21 -19
  299. package/lib/util/comparators.js +57 -52
  300. package/lib/util/compileBooleanMatcher.js +3 -6
  301. package/lib/util/conventions.js +8 -11
  302. package/lib/util/createHash.js +9 -6
  303. package/lib/util/deprecation.js +22 -12
  304. package/lib/util/deterministicGrouping.js +19 -26
  305. package/lib/util/findGraphRoots.js +2 -2
  306. package/lib/util/fs.js +31 -31
  307. package/lib/util/hash/md4.js +2 -2
  308. package/lib/util/hash/wasm-hash.js +7 -7
  309. package/lib/util/hash/xxhash64.js +2 -2
  310. package/lib/util/identifier.js +81 -59
  311. package/lib/util/memoize.js +8 -10
  312. package/lib/util/mergeScope.js +6 -9
  313. package/lib/util/nonNumericOnlyHash.js +2 -2
  314. package/lib/util/numberHash.js +1 -6
  315. package/lib/util/objectToMap.js +0 -1
  316. package/lib/util/propertyAccess.js +2 -5
  317. package/lib/util/propertyName.js +1 -3
  318. package/lib/util/registerExternalSerializer.js +1 -1
  319. package/lib/util/runtime.js +103 -113
  320. package/lib/util/semver.js +29 -27
  321. package/lib/util/serialization.js +16 -1
  322. package/lib/util/smartGrouping.js +5 -5
  323. package/lib/util/source.js +1 -1
  324. package/lib/wasm/EnableWasmLoadingPlugin.js +5 -4
  325. package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +3 -3
  326. package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +5 -6
  327. package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +3 -3
  328. package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +20 -19
  329. package/lib/wasm-sync/WebAssemblyGenerator.js +14 -29
  330. package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +1 -1
  331. package/lib/wasm-sync/WebAssemblyUtils.js +2 -2
  332. package/lib/web/JsonpChunkLoadingRuntimeModule.js +2 -3
  333. package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +3 -1
  334. package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +1 -1
  335. package/package.json +15 -14
  336. package/schemas/WebpackOptions.check.js +1 -1
  337. package/schemas/WebpackOptions.json +1 -0
  338. package/schemas/plugins/container/ContainerReferencePlugin.check.js +1 -1
  339. package/schemas/plugins/container/ContainerReferencePlugin.json +1 -0
  340. package/schemas/plugins/container/ExternalsType.check.js +1 -1
  341. package/schemas/plugins/container/ModuleFederationPlugin.check.js +1 -1
  342. package/schemas/plugins/container/ModuleFederationPlugin.json +1 -0
  343. package/types.d.ts +667 -347
@@ -50,7 +50,7 @@ const harmonySpecifierTag = Symbol("harmony import");
50
50
 
51
51
  /**
52
52
  * @param {ImportDeclaration | ExportNamedDeclaration | ExportAllDeclaration | (ImportExpression & { arguments?: ObjectExpression[] })} node node with assertions
53
- * @returns {ImportAttributes} import attributes
53
+ * @returns {ImportAttributes | undefined} import attributes
54
54
  */
55
55
  function getAttributes(node) {
56
56
  if (
@@ -96,7 +96,7 @@ function getAttributes(node) {
96
96
  ? /** @type {{ assertions?: ImportAttributeNode[] }} */ (node).assertions
97
97
  : /** @type {{ attributes?: ImportAttributeNode[] }} */ (node).attributes;
98
98
  if (attributes === undefined) {
99
- return undefined;
99
+ return;
100
100
  }
101
101
  const result = /** @type {ImportAttributes} */ ({});
102
102
  for (const attribute of attributes) {
@@ -138,12 +138,22 @@ module.exports = class HarmonyImportDependencyParserPlugin {
138
138
  apply(parser) {
139
139
  const { exportPresenceMode } = this;
140
140
 
141
+ /**
142
+ * @param {string[]} members members
143
+ * @param {boolean[]} membersOptionals members Optionals
144
+ * @returns {string[]} a non optional part
145
+ */
141
146
  function getNonOptionalPart(members, membersOptionals) {
142
147
  let i = 0;
143
148
  while (i < members.length && membersOptionals[i] === false) i++;
144
149
  return i !== members.length ? members.slice(0, i) : members;
145
150
  }
146
151
 
152
+ /**
153
+ * @param {TODO} node member expression
154
+ * @param {number} count count
155
+ * @returns {TODO} member expression
156
+ */
147
157
  function getNonOptionalMemberChain(node, count) {
148
158
  while (count--) node = node.object;
149
159
  return node;
@@ -221,7 +231,9 @@ module.exports = class HarmonyImportDependencyParserPlugin {
221
231
  )
222
232
  return;
223
233
  const settings = rootInfo.tagInfo.data;
224
- const members = rightPart.getMembers();
234
+ const members =
235
+ /** @type {(() => string[])} */
236
+ (rightPart.getMembers)();
225
237
  const dep = new HarmonyEvaluatedImportSpecifierDependency(
226
238
  settings.source,
227
239
  settings.sourceOrder,
@@ -280,6 +292,7 @@ module.exports = class HarmonyImportDependencyParserPlugin {
280
292
  members,
281
293
  membersOptionals
282
294
  );
295
+ /** @type {Range[]} */
283
296
  const ranges = memberRanges.slice(
284
297
  0,
285
298
  memberRanges.length - (members.length - nonOptionalMembers.length)
@@ -326,6 +339,7 @@ module.exports = class HarmonyImportDependencyParserPlugin {
326
339
  members,
327
340
  membersOptionals
328
341
  );
342
+ /** @type {Range[]} */
329
343
  const ranges = memberRanges.slice(
330
344
  0,
331
345
  memberRanges.length - (members.length - nonOptionalMembers.length)
@@ -355,7 +369,8 @@ module.exports = class HarmonyImportDependencyParserPlugin {
355
369
  );
356
370
  // only in case when we strictly follow the spec we need a special case here
357
371
  dep.namespaceObjectAsContext =
358
- members.length > 0 && this.strictThisContextOnImports;
372
+ members.length > 0 &&
373
+ /** @type {boolean} */ (this.strictThisContextOnImports);
359
374
  dep.loc = /** @type {DependencyLocation} */ (expr.loc);
360
375
  parser.state.module.addDependency(dep);
361
376
  if (args) parser.walkExpressions(args);
@@ -42,7 +42,7 @@ const { ExportPresenceModes } = HarmonyImportDependency;
42
42
 
43
43
  class HarmonyImportSpecifierDependency extends HarmonyImportDependency {
44
44
  /**
45
- * @param {TODO} request request
45
+ * @param {string} request request
46
46
  * @param {number} sourceOrder source order
47
47
  * @param {string[]} ids ids
48
48
  * @param {string} name name
@@ -67,7 +67,6 @@ class HarmonyImportSpecifierDependency extends HarmonyImportDependency {
67
67
  this.range = range;
68
68
  this.idRanges = idRanges;
69
69
  this.exportPresenceMode = exportPresenceMode;
70
- /** @type {boolean | undefined} */
71
70
  this.namespaceObjectAsContext = false;
72
71
  this.call = undefined;
73
72
  this.directImport = undefined;
@@ -105,7 +104,7 @@ class HarmonyImportSpecifierDependency extends HarmonyImportDependency {
105
104
  getIds(moduleGraph) {
106
105
  const meta = moduleGraph.getMetaIfExisting(this);
107
106
  if (meta === undefined) return this.ids;
108
- const ids = meta[idsSymbol];
107
+ const ids = meta[/** @type {keyof object} */ (idsSymbol)];
109
108
  return ids !== undefined ? ids : this.ids;
110
109
  }
111
110
 
@@ -149,7 +148,9 @@ class HarmonyImportSpecifierDependency extends HarmonyImportDependency {
149
148
  if (ids.length === 0) return this._getReferencedExportsInDestructuring();
150
149
  let namespaceObjectAsContext = this.namespaceObjectAsContext;
151
150
  if (ids[0] === "default") {
152
- const selfModule = moduleGraph.getParentModule(this);
151
+ const selfModule =
152
+ /** @type {Module} */
153
+ (moduleGraph.getParentModule(this));
153
154
  const importedModule =
154
155
  /** @type {Module} */
155
156
  (moduleGraph.getModule(this));
@@ -196,9 +197,8 @@ class HarmonyImportSpecifierDependency extends HarmonyImportDependency {
196
197
  refs.push(ids ? ids.concat([id]) : [id]);
197
198
  }
198
199
  return refs;
199
- } else {
200
- return ids ? [ids] : Dependency.EXPORTS_OBJECT_REFERENCED;
201
200
  }
201
+ return ids ? [ids] : Dependency.EXPORTS_OBJECT_REFERENCED;
202
202
  }
203
203
 
204
204
  /**
@@ -208,9 +208,12 @@ class HarmonyImportSpecifierDependency extends HarmonyImportDependency {
208
208
  _getEffectiveExportPresenceLevel(moduleGraph) {
209
209
  if (this.exportPresenceMode !== ExportPresenceModes.AUTO)
210
210
  return this.exportPresenceMode;
211
- const buildMeta = /** @type {BuildMeta} */ (
212
- moduleGraph.getParentModule(this).buildMeta
213
- );
211
+ const buildMeta =
212
+ /** @type {BuildMeta} */
213
+ (
214
+ /** @type {Module} */
215
+ (moduleGraph.getParentModule(this)).buildMeta
216
+ );
214
217
  return buildMeta.strictHarmonyModule
215
218
  ? ExportPresenceModes.ERROR
216
219
  : ExportPresenceModes.WARN;
@@ -344,14 +347,34 @@ HarmonyImportSpecifierDependency.Template = class HarmonyImportSpecifierDependen
344
347
  }
345
348
 
346
349
  if (dep.referencedPropertiesInDestructuring) {
347
- const prefixedIds = ids[0] === "default" ? ids.slice(1) : ids;
348
- for (let {
350
+ let prefixedIds = ids;
351
+
352
+ if (ids[0] === "default") {
353
+ const selfModule = moduleGraph.getParentModule(dep);
354
+ const importedModule =
355
+ /** @type {Module} */
356
+ (moduleGraph.getModule(dep));
357
+ const exportsType = importedModule.getExportsType(
358
+ moduleGraph,
359
+ /** @type {BuildMeta} */
360
+ (selfModule.buildMeta).strictHarmonyModule
361
+ );
362
+ if (
363
+ (exportsType === "default-only" ||
364
+ exportsType === "default-with-named") &&
365
+ ids.length >= 1
366
+ ) {
367
+ prefixedIds = ids.slice(1);
368
+ }
369
+ }
370
+
371
+ for (const {
349
372
  id,
350
373
  shorthand,
351
374
  range
352
375
  } of dep.referencedPropertiesInDestructuring) {
353
376
  const concatedIds = prefixedIds.concat([id]);
354
- const module = moduleGraph.getModule(dep);
377
+ const module = /** @type {Module} */ (moduleGraph.getModule(dep));
355
378
  const used = moduleGraph
356
379
  .getExportsInfo(module)
357
380
  .getUsedName(concatedIds, runtime);
@@ -360,11 +383,13 @@ HarmonyImportSpecifierDependency.Template = class HarmonyImportSpecifierDependen
360
383
  const name = concatedIds[concatedIds.length - 1];
361
384
  if (newName === name) continue;
362
385
 
363
- const comment = Template.toNormalComment(name) + " ";
386
+ const comment = `${Template.toNormalComment(name)} `;
364
387
  const key = comment + JSON.stringify(newName);
365
388
  source.replace(
366
- range[0],
367
- range[1] - 1,
389
+ /** @type {Range} */
390
+ (range)[0],
391
+ /** @type {Range} */
392
+ (range)[1] - 1,
368
393
  shorthand ? `${key}: ${name}` : `${key}`
369
394
  );
370
395
  }
@@ -124,7 +124,7 @@ ImportDependency.Template = class ImportDependencyTemplate extends (
124
124
  );
125
125
  const content = runtimeTemplate.moduleNamespacePromise({
126
126
  chunkGraph,
127
- block: block,
127
+ block,
128
128
  module: /** @type {Module} */ (moduleGraph.getModule(dep)),
129
129
  request: dep.request,
130
130
  strict: /** @type {BuildMeta} */ (module.buildMeta).strictHarmonyModule,
@@ -57,14 +57,14 @@ module.exports = class ImportMetaContextDependencyParserPlugin {
57
57
  apply(parser) {
58
58
  parser.hooks.evaluateIdentifier
59
59
  .for("import.meta.webpackContext")
60
- .tap("ImportMetaContextDependencyParserPlugin", expr => {
61
- return evaluateToIdentifier(
60
+ .tap("ImportMetaContextDependencyParserPlugin", expr =>
61
+ evaluateToIdentifier(
62
62
  "import.meta.webpackContext",
63
63
  "import.meta",
64
64
  () => ["webpackContext"],
65
65
  true
66
- )(expr);
67
- });
66
+ )(expr)
67
+ );
68
68
  parser.hooks.call
69
69
  .for("import.meta.webpackContext")
70
70
  .tap("ImportMetaContextDependencyParserPlugin", expr => {
@@ -293,7 +293,7 @@ module.exports = class ImportMetaContextDependencyParserPlugin {
293
293
  /** @type {Range} */ (expr.range)
294
294
  );
295
295
  dep.loc = /** @type {DependencyLocation} */ (expr.loc);
296
- dep.optional = !!parser.scope.inTry;
296
+ dep.optional = Boolean(parser.scope.inTry);
297
297
  parser.state.current.addDependency(dep);
298
298
  return true;
299
299
  });
@@ -49,9 +49,7 @@ class ImportMetaPlugin {
49
49
  * @param {NormalModule} module module
50
50
  * @returns {string} file url
51
51
  */
52
- const getUrl = module => {
53
- return pathToFileURL(module.resource).toString();
54
- };
52
+ const getUrl = module => pathToFileURL(module.resource).toString();
55
53
  /**
56
54
  * @param {Parser} parser parser parser
57
55
  * @param {JavascriptParserOptions} parserOptions parserOptions
@@ -76,8 +74,8 @@ class ImportMetaPlugin {
76
74
  return;
77
75
  }
78
76
 
79
- /// import.meta direct ///
80
- const webpackVersion = parseInt(
77
+ // import.meta direct
78
+ const webpackVersion = Number.parseInt(
81
79
  require("../../package.json").version,
82
80
  10
83
81
  );
@@ -90,7 +88,7 @@ class ImportMetaPlugin {
90
88
  */
91
89
  const importMetaUnknownProperty = members =>
92
90
  `${Template.toNormalComment(
93
- "unsupported import.meta." + members.join(".")
91
+ `unsupported import.meta.${members.join(".")}`
94
92
  )} undefined${propertyAccess(members, 1)}`;
95
93
  parser.hooks.typeof
96
94
  .for("import.meta")
@@ -162,7 +160,7 @@ class ImportMetaPlugin {
162
160
  evaluateToIdentifier("import.meta", "import.meta", () => [], true)
163
161
  );
164
162
 
165
- /// import.meta.url ///
163
+ // import.meta.url
166
164
  parser.hooks.typeof
167
165
  .for("import.meta.url")
168
166
  .tap(
@@ -185,13 +183,13 @@ class ImportMetaPlugin {
185
183
  .tap(PLUGIN_NAME, evaluateToString("string"));
186
184
  parser.hooks.evaluateIdentifier
187
185
  .for("import.meta.url")
188
- .tap(PLUGIN_NAME, expr => {
189
- return new BasicEvaluatedExpression()
186
+ .tap(PLUGIN_NAME, expr =>
187
+ new BasicEvaluatedExpression()
190
188
  .setString(getUrl(parser.state.module))
191
- .setRange(/** @type {Range} */ (expr.range));
192
- });
189
+ .setRange(/** @type {Range} */ (expr.range))
190
+ );
193
191
 
194
- /// import.meta.webpack ///
192
+ // import.meta.webpack
195
193
  parser.hooks.typeof
196
194
  .for("import.meta.webpack")
197
195
  .tap(
@@ -211,7 +209,7 @@ class ImportMetaPlugin {
211
209
  .for("import.meta.webpack")
212
210
  .tap(PLUGIN_NAME, evaluateToNumber(webpackVersion));
213
211
 
214
- /// Unknown properties ///
212
+ // Unknown properties
215
213
  parser.hooks.unhandledExpressionMemberChain
216
214
  .for("import.meta")
217
215
  .tap(PLUGIN_NAME, (expr, members) => {
@@ -100,11 +100,9 @@ class ImportParserPlugin {
100
100
  /** @type {DependencyLocation} */ (expr.loc)
101
101
  )
102
102
  );
103
- } else {
103
+ } else if (importOptions.webpackIgnore) {
104
104
  // Do not instrument `import()` if `webpackIgnore` is `true`
105
- if (importOptions.webpackIgnore) {
106
- return false;
107
- }
105
+ return false;
108
106
  }
109
107
  }
110
108
  if (importOptions.webpackChunkName !== undefined) {
@@ -220,12 +218,10 @@ class ImportParserPlugin {
220
218
  /** @type {DependencyLocation} */ (expr.loc)
221
219
  )
222
220
  );
221
+ } else if (typeof importOptions.webpackExports === "string") {
222
+ exports = [[importOptions.webpackExports]];
223
223
  } else {
224
- if (typeof importOptions.webpackExports === "string") {
225
- exports = [[importOptions.webpackExports]];
226
- } else {
227
- exports = exportsFromEnumerable(importOptions.webpackExports);
228
- }
224
+ exports = exportsFromEnumerable(importOptions.webpackExports);
229
225
  }
230
226
  }
231
227
  }
@@ -251,7 +247,7 @@ class ImportParserPlugin {
251
247
  if (exports) {
252
248
  parser.state.module.addWarning(
253
249
  new UnsupportedFeatureWarning(
254
- `\`webpackExports\` could not be used with destructuring assignment.`,
250
+ "`webpackExports` could not be used with destructuring assignment.",
255
251
  /** @type {DependencyLocation} */ (expr.loc)
256
252
  )
257
253
  );
@@ -296,45 +292,44 @@ class ImportParserPlugin {
296
292
  attributes
297
293
  );
298
294
  dep.loc = /** @type {DependencyLocation} */ (expr.loc);
299
- dep.optional = !!parser.scope.inTry;
295
+ dep.optional = Boolean(parser.scope.inTry);
300
296
  depBlock.addDependency(dep);
301
297
  parser.state.current.addBlock(depBlock);
302
298
  }
303
299
  return true;
304
- } else {
305
- if (mode === "weak") {
306
- mode = "async-weak";
307
- }
308
- const dep = ContextDependencyHelpers.create(
309
- ImportContextDependency,
310
- /** @type {Range} */ (expr.range),
311
- param,
312
- expr,
313
- this.options,
314
- {
315
- chunkName,
316
- groupOptions,
317
- include,
318
- exclude,
319
- mode,
320
- namespaceObject: /** @type {BuildMeta} */ (
321
- parser.state.module.buildMeta
322
- ).strictHarmonyModule
323
- ? "strict"
324
- : true,
325
- typePrefix: "import()",
326
- category: "esm",
327
- referencedExports: exports,
328
- attributes: getAttributes(expr)
329
- },
330
- parser
331
- );
332
- if (!dep) return;
333
- dep.loc = /** @type {DependencyLocation} */ (expr.loc);
334
- dep.optional = !!parser.scope.inTry;
335
- parser.state.current.addDependency(dep);
336
- return true;
337
300
  }
301
+ if (mode === "weak") {
302
+ mode = "async-weak";
303
+ }
304
+ const dep = ContextDependencyHelpers.create(
305
+ ImportContextDependency,
306
+ /** @type {Range} */ (expr.range),
307
+ param,
308
+ expr,
309
+ this.options,
310
+ {
311
+ chunkName,
312
+ groupOptions,
313
+ include,
314
+ exclude,
315
+ mode,
316
+ namespaceObject: /** @type {BuildMeta} */ (
317
+ parser.state.module.buildMeta
318
+ ).strictHarmonyModule
319
+ ? "strict"
320
+ : true,
321
+ typePrefix: "import()",
322
+ category: "esm",
323
+ referencedExports: exports,
324
+ attributes: getAttributes(expr)
325
+ },
326
+ parser
327
+ );
328
+ if (!dep) return;
329
+ dep.loc = /** @type {DependencyLocation} */ (expr.loc);
330
+ dep.optional = Boolean(parser.scope.inTry);
331
+ parser.state.current.addDependency(dep);
332
+ return true;
338
333
  });
339
334
  }
340
335
  }
@@ -14,33 +14,35 @@ const NullDependency = require("./NullDependency");
14
14
  /** @typedef {import("../Dependency").UpdateHashContext} UpdateHashContext */
15
15
  /** @typedef {import("../ModuleGraph")} ModuleGraph */
16
16
  /** @typedef {import("../json/JsonData")} JsonData */
17
+ /** @typedef {import("../json/JsonData").RawJsonData} RawJsonData */
17
18
  /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
18
19
  /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
19
20
  /** @typedef {import("../util/Hash")} Hash */
20
21
 
22
+ /**
23
+ * @param {RawJsonData} data data
24
+ * @returns {TODO} value
25
+ */
21
26
  const getExportsFromData = data => {
22
27
  if (data && typeof data === "object") {
23
28
  if (Array.isArray(data)) {
24
29
  return data.length < 100
25
- ? data.map((item, idx) => {
26
- return {
27
- name: `${idx}`,
28
- canMangle: true,
29
- exports: getExportsFromData(item)
30
- };
31
- })
30
+ ? data.map((item, idx) => ({
31
+ name: `${idx}`,
32
+ canMangle: true,
33
+ exports: getExportsFromData(item)
34
+ }))
32
35
  : undefined;
33
- } else {
34
- const exports = [];
35
- for (const key of Object.keys(data)) {
36
- exports.push({
37
- name: key,
38
- canMangle: true,
39
- exports: getExportsFromData(data[key])
40
- });
41
- }
42
- return exports;
43
36
  }
37
+ const exports = [];
38
+ for (const key of Object.keys(data)) {
39
+ exports.push({
40
+ name: key,
41
+ canMangle: true,
42
+ exports: getExportsFromData(data[key])
43
+ });
44
+ }
45
+ return exports;
44
46
  }
45
47
  return undefined;
46
48
  };
@@ -65,7 +67,9 @@ class JsonExportsDependency extends NullDependency {
65
67
  */
66
68
  getExports(moduleGraph) {
67
69
  return {
68
- exports: getExportsFromData(this.data && this.data.get()),
70
+ exports: getExportsFromData(
71
+ this.data && /** @type {RawJsonData} */ (this.data.get())
72
+ ),
69
73
  dependencies: undefined
70
74
  };
71
75
  }
@@ -10,17 +10,12 @@ const LazySet = require("../util/LazySet");
10
10
  const LoaderDependency = require("./LoaderDependency");
11
11
  const LoaderImportDependency = require("./LoaderImportDependency");
12
12
 
13
+ /** @typedef {import("../../declarations/LoaderContext").LoaderPluginLoaderContext} LoaderPluginLoaderContext */
13
14
  /** @typedef {import("../Compilation").DepConstructor} DepConstructor */
15
+ /** @typedef {import("../Compilation").ExecuteModuleResult} ExecuteModuleResult */
14
16
  /** @typedef {import("../Compiler")} Compiler */
15
17
  /** @typedef {import("../Module")} Module */
16
-
17
- /**
18
- * @callback LoadModuleCallback
19
- * @param {(Error | null)=} err error object
20
- * @param {string | Buffer=} source source code
21
- * @param {object=} map source map
22
- * @param {Module=} module loaded module if successful
23
- */
18
+ /** @typedef {import("../Module").BuildInfo} BuildInfo */
24
19
 
25
20
  /**
26
21
  * @callback ImportModuleCallback
@@ -66,11 +61,6 @@ class LoaderPlugin {
66
61
  NormalModule.getCompilationHooks(compilation).loader.tap(
67
62
  "LoaderPlugin",
68
63
  loaderContext => {
69
- /**
70
- * @param {string} request the request string to load the module from
71
- * @param {LoadModuleCallback} callback callback returning the loaded module or error
72
- * @returns {void}
73
- */
74
64
  loaderContext.loadModule = (request, callback) => {
75
65
  const dep = new LoaderDependency(request);
76
66
  dep.loc = {
@@ -91,7 +81,9 @@ class LoaderPlugin {
91
81
  {
92
82
  factory,
93
83
  dependencies: [dep],
94
- originModule: loaderContext._module,
84
+ originModule:
85
+ /** @type {NormalModule} */
86
+ (loaderContext._module),
95
87
  context: loaderContext.context,
96
88
  recursive: false
97
89
  },
@@ -117,7 +109,8 @@ class LoaderPlugin {
117
109
  )
118
110
  );
119
111
  }
120
- let source, map;
112
+ let map;
113
+ let source;
121
114
  if (moduleSource.sourceAndMap) {
122
115
  const sourceAndMap = moduleSource.sourceAndMap();
123
116
  map = sourceAndMap.map;
@@ -149,15 +142,20 @@ class LoaderPlugin {
149
142
  for (const d of buildDependencies) {
150
143
  loaderContext.addBuildDependency(d);
151
144
  }
152
- return callback(null, source, map, referencedModule);
145
+ return callback(
146
+ null,
147
+ source,
148
+ /** @type {object | null} */ (map),
149
+ referencedModule
150
+ );
153
151
  }
154
152
  );
155
153
  };
156
154
 
157
155
  /**
158
156
  * @param {string} request the request string to load the module from
159
- * @param {ImportModuleOptions=} options options
160
- * @param {ImportModuleCallback=} callback callback returning the exports
157
+ * @param {ImportModuleOptions} options options
158
+ * @param {ImportModuleCallback} callback callback returning the exports
161
159
  * @returns {void}
162
160
  */
163
161
  const importModule = (request, options, callback) => {
@@ -180,7 +178,9 @@ class LoaderPlugin {
180
178
  {
181
179
  factory,
182
180
  dependencies: [dep],
183
- originModule: loaderContext._module,
181
+ originModule:
182
+ /** @type {NormalModule} */
183
+ (loaderContext._module),
184
184
  contextInfo: {
185
185
  issuerLayer: options.layer
186
186
  },
@@ -207,42 +207,53 @@ class LoaderPlugin {
207
207
  },
208
208
  (err, result) => {
209
209
  if (err) return callback(err);
210
- for (const d of result.fileDependencies) {
210
+ const {
211
+ fileDependencies,
212
+ contextDependencies,
213
+ missingDependencies,
214
+ buildDependencies,
215
+ cacheable,
216
+ assets,
217
+ exports
218
+ } = /** @type {ExecuteModuleResult} */ (result);
219
+ for (const d of fileDependencies) {
211
220
  loaderContext.addDependency(d);
212
221
  }
213
- for (const d of result.contextDependencies) {
222
+ for (const d of contextDependencies) {
214
223
  loaderContext.addContextDependency(d);
215
224
  }
216
- for (const d of result.missingDependencies) {
225
+ for (const d of missingDependencies) {
217
226
  loaderContext.addMissingDependency(d);
218
227
  }
219
- for (const d of result.buildDependencies) {
228
+ for (const d of buildDependencies) {
220
229
  loaderContext.addBuildDependency(d);
221
230
  }
222
- if (result.cacheable === false)
223
- loaderContext.cacheable(false);
224
- for (const [name, { source, info }] of result.assets) {
225
- const { buildInfo } = loaderContext._module;
231
+ if (cacheable === false) loaderContext.cacheable(false);
232
+ for (const [name, { source, info }] of assets) {
233
+ const buildInfo =
234
+ /** @type {BuildInfo} */
235
+ (
236
+ /** @type {NormalModule} */ (loaderContext._module)
237
+ .buildInfo
238
+ );
226
239
  if (!buildInfo.assets) {
227
240
  buildInfo.assets = Object.create(null);
228
241
  buildInfo.assetsInfo = new Map();
229
242
  }
230
- buildInfo.assets[name] = source;
231
- buildInfo.assetsInfo.set(name, info);
243
+ /** @type {NonNullable<BuildInfo["assets"]>} */
244
+ (buildInfo.assets)[name] = source;
245
+ /** @type {NonNullable<BuildInfo["assetsInfo"]>} */
246
+ (buildInfo.assetsInfo).set(name, info);
232
247
  }
233
- callback(null, result.exports);
248
+ callback(null, exports);
234
249
  }
235
250
  );
236
251
  }
237
252
  );
238
253
  };
239
254
 
240
- /**
241
- * @param {string} request the request string to load the module from
242
- * @param {ImportModuleOptions} options options
243
- * @param {ImportModuleCallback=} callback callback returning the exports
244
- * @returns {Promise<any> | void} exports
245
- */
255
+ // eslint-disable-next-line no-warning-comments
256
+ // @ts-ignore Overloading doesn't work
246
257
  loaderContext.importModule = (request, options, callback) => {
247
258
  if (!callback) {
248
259
  return new Promise((resolve, reject) => {
@@ -29,7 +29,7 @@ class LocalModule {
29
29
  * @returns {string} variable name
30
30
  */
31
31
  variableName() {
32
- return "__WEBPACK_LOCAL_MODULE_" + this.idx + "__";
32
+ return `__WEBPACK_LOCAL_MODULE_${this.idx}__`;
33
33
  }
34
34
 
35
35
  /**
@@ -17,8 +17,8 @@ const LocalModule = require("./LocalModule");
17
17
  const lookup = (parent, mod) => {
18
18
  if (mod.charAt(0) !== ".") return mod;
19
19
 
20
- var path = parent.split("/");
21
- var segments = mod.split("/");
20
+ const path = parent.split("/");
21
+ const segments = mod.split("/");
22
22
  path.pop();
23
23
 
24
24
  for (let i = 0; i < segments.length; i++) {
@@ -38,7 +38,7 @@ const lookup = (parent, mod) => {
38
38
  * @param {string} name name
39
39
  * @returns {LocalModule} local module
40
40
  */
41
- exports.addLocalModule = (state, name) => {
41
+ module.exports.addLocalModule = (state, name) => {
42
42
  if (!state.localModules) {
43
43
  state.localModules = [];
44
44
  }
@@ -53,7 +53,7 @@ exports.addLocalModule = (state, name) => {
53
53
  * @param {string} [namedModule] named module
54
54
  * @returns {LocalModule | null} local module or null
55
55
  */
56
- exports.getLocalModule = (state, name, namedModule) => {
56
+ module.exports.getLocalModule = (state, name, namedModule) => {
57
57
  if (!state.localModules) return null;
58
58
  if (namedModule) {
59
59
  // resolve dependency name relative to the defining named module
@@ -50,7 +50,7 @@ class ModuleDecoratorDependency extends NullDependency {
50
50
  * @returns {string | null} an identifier to merge equal requests
51
51
  */
52
52
  getResourceIdentifier() {
53
- return `self`;
53
+ return "self";
54
54
  }
55
55
 
56
56
  /**