@depup/webpack 5.106.1-depup.0 → 5.109.2-depup.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 (669) hide show
  1. package/README.md +9 -11
  2. package/bin/webpack.js +12 -0
  3. package/changes.json +16 -24
  4. package/hot/dev-server.js +2 -0
  5. package/lib/APIPlugin.js +60 -35
  6. package/lib/AsyncDependenciesBlock.js +3 -0
  7. package/lib/AutomaticPrefetchPlugin.js +6 -1
  8. package/lib/BannerPlugin.js +13 -5
  9. package/lib/Cache.js +27 -5
  10. package/lib/CacheFacade.js +41 -0
  11. package/lib/Chunk.js +71 -25
  12. package/lib/ChunkGraph.js +153 -19
  13. package/lib/ChunkGroup.js +115 -28
  14. package/lib/ChunkTemplate.js +9 -0
  15. package/lib/CircularModulesPlugin.js +190 -0
  16. package/lib/CleanPlugin.js +27 -28
  17. package/lib/CodeGenerationResults.js +19 -0
  18. package/lib/CompatibilityPlugin.js +85 -37
  19. package/lib/Compilation.js +656 -112
  20. package/lib/Compiler.js +109 -35
  21. package/lib/ConcatenationScope.js +34 -4
  22. package/lib/ConditionalInitFragment.js +6 -0
  23. package/lib/ConstPlugin.js +15 -12
  24. package/lib/ContextExclusionPlugin.js +3 -1
  25. package/lib/ContextModule.js +345 -55
  26. package/lib/ContextModuleFactory.js +193 -51
  27. package/lib/ContextReplacementPlugin.js +8 -1
  28. package/lib/DefinePlugin.js +537 -139
  29. package/lib/DependenciesBlock.js +6 -1
  30. package/lib/Dependency.js +159 -11
  31. package/lib/DependencyTemplate.js +7 -1
  32. package/lib/DependencyTemplates.js +4 -0
  33. package/lib/DotenvPlugin.js +3 -0
  34. package/lib/DynamicEntryPlugin.js +3 -1
  35. package/lib/EntryOptionPlugin.js +42 -2
  36. package/lib/EntryPlugin.js +4 -1
  37. package/lib/Entrypoint.js +5 -1
  38. package/lib/EnvironmentPlugin.js +3 -2
  39. package/lib/ErrorHelpers.js +7 -0
  40. package/lib/EvalDevToolModulePlugin.js +3 -1
  41. package/lib/EvalSourceMapDevToolPlugin.js +11 -11
  42. package/lib/ExportsInfo.js +421 -113
  43. package/lib/ExportsInfoApiPlugin.js +4 -3
  44. package/lib/ExternalModule.js +381 -80
  45. package/lib/ExternalModuleFactoryPlugin.js +75 -3
  46. package/lib/ExternalsPlugin.js +3 -1
  47. package/lib/FileSystemInfo.js +701 -175
  48. package/lib/FlagAllModulesAsUsedPlugin.js +3 -6
  49. package/lib/FlagDependencyExportsPlugin.js +82 -9
  50. package/lib/FlagDependencyUsagePlugin.js +115 -8
  51. package/lib/FlagEntryExportAsUsedPlugin.js +4 -1
  52. package/lib/Generator.js +24 -3
  53. package/lib/HotModuleReplacementPlugin.js +110 -44
  54. package/lib/IgnorePlugin.js +5 -2
  55. package/lib/IgnoreWarningsPlugin.js +2 -1
  56. package/lib/InitFragment.js +33 -30
  57. package/lib/JavascriptMetaInfoPlugin.js +9 -6
  58. package/lib/LazyBarrel.js +389 -0
  59. package/lib/LibraryTemplatePlugin.js +2 -1
  60. package/lib/LoaderOptionsPlugin.js +3 -1
  61. package/lib/LoaderTargetPlugin.js +3 -1
  62. package/lib/MainTemplate.js +15 -0
  63. package/lib/ManifestPlugin.js +9 -2
  64. package/lib/Module.js +121 -57
  65. package/lib/ModuleFactory.js +6 -1
  66. package/lib/ModuleFilenameHelpers.js +18 -4
  67. package/lib/ModuleGraph.js +69 -2
  68. package/lib/ModuleGraphConnection.js +9 -0
  69. package/lib/ModuleInfoHeaderPlugin.js +5 -0
  70. package/lib/ModuleNotFoundError.js +3 -83
  71. package/lib/ModuleProfile.js +27 -1
  72. package/lib/ModuleSourceTypeConstants.js +52 -19
  73. package/lib/ModuleTemplate.js +10 -0
  74. package/lib/ModuleTypeConstants.js +20 -4
  75. package/lib/MultiCompiler.js +59 -4
  76. package/lib/MultiStats.js +9 -0
  77. package/lib/MultiWatching.js +6 -0
  78. package/lib/NoEmitOnErrorsPlugin.js +1 -1
  79. package/lib/NodeStuffPlugin.js +78 -46
  80. package/lib/NormalModule.js +519 -206
  81. package/lib/NormalModuleFactory.js +156 -31
  82. package/lib/NormalModuleReplacementPlugin.js +3 -1
  83. package/lib/NullFactory.js +1 -0
  84. package/lib/OptionsApply.js +1 -0
  85. package/lib/Parser.js +3 -1
  86. package/lib/PlatformPlugin.js +2 -1
  87. package/lib/PrefetchPlugin.js +4 -1
  88. package/lib/ProgressPlugin.js +351 -161
  89. package/lib/ProvidePlugin.js +6 -3
  90. package/lib/RawModule.js +32 -16
  91. package/lib/RecordIdsPlugin.js +9 -0
  92. package/lib/RequestShortener.js +8 -0
  93. package/lib/ResolverFactory.js +5 -0
  94. package/lib/RuntimeGlobals.js +58 -5
  95. package/lib/RuntimeModule.js +22 -7
  96. package/lib/RuntimePlugin.js +123 -118
  97. package/lib/RuntimeTemplate.js +616 -37
  98. package/lib/SelfModuleFactory.js +3 -0
  99. package/lib/SourceMapDevToolModuleOptionsPlugin.js +2 -0
  100. package/lib/SourceMapDevToolPlugin.js +341 -63
  101. package/lib/Stats.js +6 -0
  102. package/lib/Template.js +52 -6
  103. package/lib/TemplatedPathPlugin.js +505 -138
  104. package/lib/UseStrictPlugin.js +3 -2
  105. package/lib/WarnCaseSensitiveModulesPlugin.js +72 -3
  106. package/lib/WarnDeprecatedOptionPlugin.js +6 -2
  107. package/lib/WarnNoModeSetPlugin.js +18 -2
  108. package/lib/WatchIgnorePlugin.js +5 -1
  109. package/lib/Watching.js +25 -3
  110. package/lib/WebpackError.js +3 -74
  111. package/lib/WebpackIsIncludedPlugin.js +4 -2
  112. package/lib/WebpackOptionsApply.js +88 -25
  113. package/lib/WebpackOptionsDefaulter.js +1 -0
  114. package/lib/asset/AssetBytesGenerator.js +28 -10
  115. package/lib/asset/AssetBytesParser.js +1 -0
  116. package/lib/asset/AssetGenerator.js +199 -60
  117. package/lib/asset/AssetModule.js +47 -0
  118. package/lib/asset/AssetModulesPlugin.js +115 -24
  119. package/lib/asset/AssetParser.js +4 -2
  120. package/lib/asset/AssetSourceGenerator.js +26 -8
  121. package/lib/asset/AssetSourceParser.js +1 -0
  122. package/lib/asset/RawDataUrlModule.js +23 -13
  123. package/lib/asset/WebManifestGenerator.js +164 -0
  124. package/lib/asset/WebManifestParser.js +130 -0
  125. package/lib/async-modules/AsyncModuleHelpers.js +1 -0
  126. package/lib/async-modules/AwaitDependenciesInitFragment.js +18 -4
  127. package/lib/async-modules/InferAsyncModulesPlugin.js +1 -1
  128. package/lib/async-modules/isGeneratorLowered.js +26 -0
  129. package/lib/buildChunkGraph.js +107 -15
  130. package/lib/bun/BunTargetPlugin.js +42 -0
  131. package/lib/cache/AddBuildDependenciesPlugin.js +3 -1
  132. package/lib/cache/AddManagedPathsPlugin.js +5 -1
  133. package/lib/cache/IdleFileCachePlugin.js +6 -1
  134. package/lib/cache/MemoryCachePlugin.js +1 -1
  135. package/lib/cache/MemoryWithGcCachePlugin.js +4 -1
  136. package/lib/cache/PackFileCacheStrategy.js +302 -12
  137. package/lib/cache/ResolverCachePlugin.js +12 -1
  138. package/lib/cache/getLazyHashedEtag.js +13 -2
  139. package/lib/cache/mergeEtags.js +4 -0
  140. package/lib/cli.js +142 -20
  141. package/lib/config/browserslistTargetHandler.js +141 -0
  142. package/lib/config/defaults.js +612 -43
  143. package/lib/config/defineConfig.js +31 -0
  144. package/lib/config/normalization.js +46 -1
  145. package/lib/config/target.js +200 -2
  146. package/lib/container/ContainerEntryDependency.js +2 -0
  147. package/lib/container/ContainerEntryModule.js +27 -14
  148. package/lib/container/ContainerEntryModuleFactory.js +1 -0
  149. package/lib/container/ContainerExposedDependency.js +6 -2
  150. package/lib/container/ContainerPlugin.js +2 -1
  151. package/lib/container/ContainerReferencePlugin.js +3 -2
  152. package/lib/container/FallbackDependency.js +9 -7
  153. package/lib/container/FallbackItemDependency.js +1 -0
  154. package/lib/container/FallbackModule.js +22 -9
  155. package/lib/container/FallbackModuleFactory.js +1 -0
  156. package/lib/container/HoistContainerReferencesPlugin.js +47 -55
  157. package/lib/container/ModuleFederationPlugin.js +21 -29
  158. package/lib/container/RemoteModule.js +33 -10
  159. package/lib/container/RemoteRuntimeModule.js +15 -12
  160. package/lib/container/RemoteToExternalDependency.js +1 -0
  161. package/lib/container/options.js +7 -0
  162. package/lib/css/CssGenerator.js +540 -272
  163. package/lib/css/CssInjectStyleRuntimeModule.js +86 -70
  164. package/lib/css/CssLoadingRuntimeModule.js +173 -81
  165. package/lib/{CssModule.js → css/CssModule.js} +72 -37
  166. package/lib/css/CssModulesPlugin.js +371 -208
  167. package/lib/css/CssParser.js +3538 -1963
  168. package/lib/css/syntax.js +4155 -0
  169. package/lib/debug/ProfilingPlugin.js +33 -2
  170. package/lib/deno/DenoTargetPlugin.js +41 -0
  171. package/lib/dependencies/AMDDefineDependency.js +29 -17
  172. package/lib/dependencies/AMDDefineDependencyParserPlugin.js +19 -6
  173. package/lib/dependencies/AMDPlugin.js +6 -3
  174. package/lib/dependencies/AMDRequireArrayDependency.js +13 -11
  175. package/lib/dependencies/AMDRequireContextDependency.js +10 -11
  176. package/lib/dependencies/AMDRequireDependenciesBlock.js +1 -0
  177. package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +28 -14
  178. package/lib/dependencies/AMDRequireDependency.js +28 -20
  179. package/lib/dependencies/AMDRequireItemDependency.js +1 -0
  180. package/lib/dependencies/AMDRuntimeModules.js +3 -0
  181. package/lib/dependencies/CachedConstDependency.js +9 -1
  182. package/lib/dependencies/CommonJsDependencyHelpers.js +104 -0
  183. package/lib/dependencies/CommonJsExportRequireDependency.js +157 -38
  184. package/lib/dependencies/CommonJsExportsDependency.js +74 -20
  185. package/lib/dependencies/CommonJsExportsParserPlugin.js +246 -15
  186. package/lib/dependencies/CommonJsFullRequireDependency.js +91 -27
  187. package/lib/dependencies/CommonJsImportsParserPlugin.js +189 -24
  188. package/lib/dependencies/CommonJsPlugin.js +7 -4
  189. package/lib/dependencies/CommonJsRequireContextDependency.js +13 -13
  190. package/lib/dependencies/CommonJsRequireDependency.js +135 -13
  191. package/lib/dependencies/CommonJsSelfReferenceDependency.js +60 -16
  192. package/lib/dependencies/ConstDependency.js +22 -12
  193. package/lib/dependencies/ContextDependency.js +13 -2
  194. package/lib/dependencies/ContextDependencyHelpers.js +7 -4
  195. package/lib/dependencies/ContextDependencyTemplateAsId.js +2 -1
  196. package/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +1 -0
  197. package/lib/dependencies/ContextElementDependency.js +27 -14
  198. package/lib/dependencies/CreateRequireParserPlugin.js +14 -7
  199. package/lib/dependencies/CreateScriptUrlDependency.js +9 -7
  200. package/lib/dependencies/CriticalDependencyWarning.js +3 -1
  201. package/lib/dependencies/CssIcssExportDependency.js +681 -367
  202. package/lib/dependencies/CssIcssImportDependency.js +62 -17
  203. package/lib/dependencies/CssIcssSymbolDependency.js +36 -17
  204. package/lib/dependencies/CssImportDependency.js +37 -1
  205. package/lib/dependencies/CssUrlDependency.js +87 -14
  206. package/lib/dependencies/DelegatedSourceDependency.js +1 -0
  207. package/lib/dependencies/DllEntryDependency.js +12 -13
  208. package/lib/dependencies/DynamicExports.js +5 -0
  209. package/lib/dependencies/EntryDependency.js +1 -0
  210. package/lib/dependencies/ExportBindingInitFragment.js +164 -0
  211. package/lib/dependencies/ExportsInfoDependency.js +18 -12
  212. package/lib/dependencies/ExternalModuleDependency.js +13 -5
  213. package/lib/dependencies/ExternalModuleInitFragment.js +10 -5
  214. package/lib/dependencies/ExternalModuleInitFragmentDependency.js +19 -12
  215. package/lib/dependencies/HarmonyAcceptDependency.js +24 -26
  216. package/lib/dependencies/HarmonyAcceptImportDependency.js +2 -0
  217. package/lib/dependencies/HarmonyCompatibilityDependency.js +33 -14
  218. package/lib/dependencies/HarmonyDetectionParserPlugin.js +108 -30
  219. package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +34 -3
  220. package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +70 -33
  221. package/lib/dependencies/HarmonyExportExpressionDependency.js +133 -43
  222. package/lib/dependencies/HarmonyExportHeaderDependency.js +11 -9
  223. package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +268 -44
  224. package/lib/dependencies/HarmonyExportInitFragment.js +28 -20
  225. package/lib/dependencies/HarmonyExportSpecifierDependency.js +88 -18
  226. package/lib/dependencies/HarmonyExports.js +6 -1
  227. package/lib/dependencies/HarmonyImportDependency.js +60 -4
  228. package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +139 -146
  229. package/lib/dependencies/HarmonyImportGuard.js +427 -0
  230. package/lib/dependencies/HarmonyImportSideEffectDependency.js +22 -1
  231. package/lib/dependencies/HarmonyImportSpecifierDependency.js +146 -24
  232. package/lib/{HarmonyLinkingError.js → dependencies/HarmonyLinkingError.js} +6 -3
  233. package/lib/dependencies/HarmonyModulesPlugin.js +11 -1
  234. package/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +2 -1
  235. package/lib/dependencies/HtmlEntryDependency.js +1295 -0
  236. package/lib/dependencies/HtmlInlineHtmlDependency.js +107 -0
  237. package/lib/dependencies/HtmlInlineScriptDependency.js +126 -0
  238. package/lib/dependencies/HtmlInlineStyleDependency.js +152 -0
  239. package/lib/dependencies/HtmlSourceDependency.js +172 -0
  240. package/lib/dependencies/ImportContextDependency.js +9 -9
  241. package/lib/dependencies/ImportDependency.js +92 -3
  242. package/lib/dependencies/ImportEagerDependency.js +2 -0
  243. package/lib/dependencies/ImportMetaContextDependency.js +1 -0
  244. package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +35 -19
  245. package/lib/dependencies/ImportMetaContextPlugin.js +40 -8
  246. package/lib/dependencies/ImportMetaGlobDependency.js +81 -0
  247. package/lib/dependencies/ImportMetaGlobDependencyParserPlugin.js +78 -0
  248. package/lib/dependencies/ImportMetaGlobHelpers.js +660 -0
  249. package/lib/dependencies/ImportMetaHotAcceptDependency.js +2 -0
  250. package/lib/dependencies/ImportMetaHotDeclineDependency.js +2 -0
  251. package/lib/dependencies/ImportMetaPlugin.js +595 -209
  252. package/lib/dependencies/ImportMetaResolveDependency.js +90 -0
  253. package/lib/dependencies/ImportParserPlugin.js +114 -27
  254. package/lib/dependencies/ImportPhase.js +17 -11
  255. package/lib/dependencies/ImportPlugin.js +2 -1
  256. package/lib/dependencies/ImportWeakDependency.js +3 -0
  257. package/lib/dependencies/JsonExportsDependency.js +15 -10
  258. package/lib/dependencies/LoaderDependency.js +2 -0
  259. package/lib/dependencies/LoaderImportDependency.js +3 -0
  260. package/lib/dependencies/LoaderPlugin.js +9 -2
  261. package/lib/dependencies/LocalModule.js +15 -12
  262. package/lib/dependencies/LocalModuleDependency.js +15 -13
  263. package/lib/dependencies/LocalModulesHelpers.js +3 -0
  264. package/lib/dependencies/ModuleDecoratorDependency.js +16 -10
  265. package/lib/dependencies/ModuleDependency.js +14 -0
  266. package/lib/dependencies/ModuleDependencyTemplateAsId.js +1 -0
  267. package/lib/dependencies/ModuleDependencyTemplateAsRequireId.js +1 -0
  268. package/lib/dependencies/ModuleHotAcceptDependency.js +2 -0
  269. package/lib/dependencies/ModuleHotDeclineDependency.js +2 -0
  270. package/lib/dependencies/ModuleInitFragmentDependency.js +19 -11
  271. package/lib/dependencies/NullDependency.js +2 -0
  272. package/lib/dependencies/PrefetchDependency.js +1 -0
  273. package/lib/dependencies/ProvidedDependency.js +36 -27
  274. package/lib/dependencies/PureExpressionDependency.js +14 -10
  275. package/lib/dependencies/RequireContextDependency.js +1 -0
  276. package/lib/dependencies/RequireContextDependencyParserPlugin.js +2 -1
  277. package/lib/dependencies/RequireContextPlugin.js +2 -1
  278. package/lib/dependencies/RequireEnsureDependenciesBlock.js +1 -0
  279. package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +4 -6
  280. package/lib/dependencies/RequireEnsureDependency.js +16 -13
  281. package/lib/dependencies/RequireEnsureItemDependency.js +1 -0
  282. package/lib/dependencies/RequireEnsurePlugin.js +2 -1
  283. package/lib/dependencies/RequireHeaderDependency.js +7 -4
  284. package/lib/dependencies/RequireIncludeDependency.js +2 -0
  285. package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +11 -12
  286. package/lib/dependencies/RequireIncludePlugin.js +2 -1
  287. package/lib/{RequireJsStuffPlugin.js → dependencies/RequireJsStuffPlugin.js} +9 -8
  288. package/lib/dependencies/RequireResolveContextDependency.js +10 -11
  289. package/lib/dependencies/RequireResolveDependency.js +2 -0
  290. package/lib/dependencies/RequireResolveHeaderDependency.js +8 -5
  291. package/lib/dependencies/RuntimeRequirementsDependency.js +11 -8
  292. package/lib/dependencies/StaticExportsDependency.js +13 -10
  293. package/lib/dependencies/SystemPlugin.js +9 -6
  294. package/lib/dependencies/SystemRuntimeModule.js +1 -0
  295. package/lib/dependencies/TopLevelAwaitDependency.js +93 -0
  296. package/lib/dependencies/URLContextDependency.js +8 -7
  297. package/lib/dependencies/URLDependency.js +157 -33
  298. package/lib/dependencies/URLPlugin.js +2 -0
  299. package/lib/dependencies/UnsupportedDependency.js +12 -13
  300. package/lib/dependencies/WebAssemblyExportImportedDependency.js +15 -16
  301. package/lib/dependencies/WebAssemblyImportDependency.js +19 -18
  302. package/lib/dependencies/WebpackIsIncludedDependency.js +3 -0
  303. package/lib/dependencies/{WorkerPlugin.js → WorkerAndWorkletPlugin.js} +364 -114
  304. package/lib/dependencies/WorkerDependency.js +111 -27
  305. package/lib/dependencies/WorkletDependency.js +278 -0
  306. package/lib/dependencies/getFunctionExpression.js +1 -0
  307. package/lib/dependencies/processExportInfo.js +14 -11
  308. package/lib/{DelegatedModule.js → dll/DelegatedModule.js} +71 -44
  309. package/lib/{DelegatedModuleFactoryPlugin.js → dll/DelegatedModuleFactoryPlugin.js} +27 -4
  310. package/lib/{DelegatedPlugin.js → dll/DelegatedPlugin.js} +5 -3
  311. package/lib/{DllEntryPlugin.js → dll/DllEntryPlugin.js} +9 -5
  312. package/lib/{DllModule.js → dll/DllModule.js} +36 -24
  313. package/lib/{DllModuleFactory.js → dll/DllModuleFactory.js} +5 -4
  314. package/lib/{DllPlugin.js → dll/DllPlugin.js} +24 -6
  315. package/lib/{DllReferencePlugin.js → dll/DllReferencePlugin.js} +26 -18
  316. package/lib/{LibManifestPlugin.js → dll/LibManifestPlugin.js} +14 -10
  317. package/lib/electron/ElectronTargetPlugin.js +24 -5
  318. package/lib/{AbstractMethodError.js → errors/AbstractMethodError.js} +10 -1
  319. package/lib/{AsyncDependencyToInitialChunkError.js → errors/AsyncDependencyToInitialChunkError.js} +8 -3
  320. package/lib/errors/BuildCycleError.js +1 -1
  321. package/lib/{ChunkRenderError.js → errors/ChunkRenderError.js} +1 -1
  322. package/lib/{CodeGenerationError.js → errors/CodeGenerationError.js} +1 -1
  323. package/lib/{CommentCompilationWarning.js → errors/CommentCompilationWarning.js} +9 -3
  324. package/lib/{ConcurrentCompilationError.js → errors/ConcurrentCompilationError.js} +5 -2
  325. package/lib/{EnvironmentNotSupportAsyncWarning.js → errors/EnvironmentNotSupportAsyncWarning.js} +5 -5
  326. package/lib/{HookWebpackError.js → errors/HookWebpackError.js} +20 -16
  327. package/lib/{IgnoreErrorModuleFactory.js → errors/IgnoreErrorModuleFactory.js} +7 -4
  328. package/lib/{InvalidDependenciesModuleWarning.js → errors/InvalidDependenciesModuleWarning.js} +6 -3
  329. package/lib/errors/JSONParseError.js +115 -0
  330. package/lib/errors/LoaderLoadingError.js +20 -0
  331. package/lib/{ModuleBuildError.js → errors/ModuleBuildError.js} +22 -16
  332. package/lib/{ModuleDependencyError.js → errors/ModuleDependencyError.js} +10 -3
  333. package/lib/{ModuleDependencyWarning.js → errors/ModuleDependencyWarning.js} +13 -5
  334. package/lib/{ModuleError.js → errors/ModuleError.js} +10 -14
  335. package/lib/{ModuleHashingError.js → errors/ModuleHashingError.js} +5 -1
  336. package/lib/errors/ModuleNotFoundError.js +94 -0
  337. package/lib/errors/ModuleParseError.js +141 -0
  338. package/lib/{ModuleRestoreError.js → errors/ModuleRestoreError.js} +4 -1
  339. package/lib/{ModuleStoreError.js → errors/ModuleStoreError.js} +5 -1
  340. package/lib/{ModuleWarning.js → errors/ModuleWarning.js} +13 -14
  341. package/lib/{NodeStuffInWebError.js → errors/NodeStuffInWebError.js} +7 -5
  342. package/lib/errors/NonErrorEmittedError.js +30 -0
  343. package/lib/{UnhandledSchemeError.js → errors/UnhandledSchemeError.js} +9 -2
  344. package/lib/{UnsupportedFeatureWarning.js → errors/UnsupportedFeatureWarning.js} +4 -3
  345. package/lib/errors/WebpackError.js +84 -0
  346. package/lib/esm/ExportWebpackRequireRuntimeModule.js +2 -0
  347. package/lib/esm/ModuleChunkFormatPlugin.js +52 -15
  348. package/lib/esm/ModuleChunkLoadingPlugin.js +11 -3
  349. package/lib/esm/ModuleChunkLoadingRuntimeModule.js +80 -52
  350. package/lib/hmr/HotModuleReplacement.runtime.js +175 -30
  351. package/lib/hmr/HotModuleReplacementRuntimeModule.js +8 -0
  352. package/lib/hmr/JavascriptHotModuleReplacement.runtime.js +173 -26
  353. package/lib/hmr/JavascriptHotModuleReplacementHelper.js +1 -0
  354. package/lib/hmr/LazyCompilationPlugin.js +154 -7
  355. package/lib/hmr/lazyCompilationBackend.js +53 -12
  356. package/lib/html/HtmlGenerator.js +1490 -0
  357. package/lib/html/HtmlModule.js +41 -0
  358. package/lib/html/HtmlModulesPlugin.js +1129 -0
  359. package/lib/html/HtmlParser.js +1970 -0
  360. package/lib/html/favicon.svg +1 -0
  361. package/lib/html/syntax.js +9106 -0
  362. package/lib/ids/ChunkModuleIdRangePlugin.js +3 -1
  363. package/lib/ids/DeterministicChunkIdsPlugin.js +3 -1
  364. package/lib/ids/DeterministicModuleIdsPlugin.js +3 -1
  365. package/lib/ids/HashedModuleIdsPlugin.js +2 -1
  366. package/lib/ids/IdHelpers.js +49 -12
  367. package/lib/ids/NamedChunkIdsPlugin.js +3 -1
  368. package/lib/ids/NamedModuleIdsPlugin.js +3 -1
  369. package/lib/ids/NaturalChunkIdsPlugin.js +1 -1
  370. package/lib/ids/NaturalModuleIdsPlugin.js +1 -1
  371. package/lib/ids/OccurrenceChunkIdsPlugin.js +2 -1
  372. package/lib/ids/OccurrenceModuleIdsPlugin.js +4 -1
  373. package/lib/ids/SyncModuleIdsPlugin.js +3 -1
  374. package/lib/index.js +66 -15
  375. package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +5 -6
  376. package/lib/javascript/BasicEvaluatedExpression.js +370 -49
  377. package/lib/javascript/ChunkFormatHelpers.js +2 -1
  378. package/lib/javascript/ChunkHelpers.js +1 -0
  379. package/lib/javascript/CommonJsChunkFormatPlugin.js +1 -1
  380. package/lib/javascript/EnableChunkLoadingPlugin.js +6 -1
  381. package/lib/javascript/JavascriptGenerator.js +213 -51
  382. package/lib/javascript/JavascriptModule.js +54 -0
  383. package/lib/javascript/JavascriptModulesPlugin.js +628 -198
  384. package/lib/javascript/JavascriptParser.js +1334 -471
  385. package/lib/javascript/JavascriptParserHelpers.js +10 -7
  386. package/lib/javascript/StartupHelpers.js +5 -0
  387. package/lib/javascript/syntax.js +5037 -0
  388. package/lib/json/JsonData.js +5 -0
  389. package/lib/json/JsonGenerator.js +21 -0
  390. package/lib/json/JsonModule.js +40 -0
  391. package/lib/json/JsonModulesPlugin.js +8 -1
  392. package/lib/json/JsonParser.js +18 -27
  393. package/lib/library/AbstractLibraryPlugin.js +17 -2
  394. package/lib/library/AmdLibraryPlugin.js +8 -0
  395. package/lib/library/AssignLibraryPlugin.js +21 -3
  396. package/lib/library/EnableLibraryPlugin.js +8 -2
  397. package/lib/library/ExportPropertyLibraryPlugin.js +10 -0
  398. package/lib/{FalseIIFEUmdWarning.js → library/FalseIIFEUmdWarning.js} +2 -1
  399. package/lib/library/JsonpLibraryPlugin.js +8 -0
  400. package/lib/library/ModuleLibraryPlugin.js +154 -7
  401. package/lib/library/SystemLibraryPlugin.js +11 -3
  402. package/lib/library/UmdLibraryPlugin.js +16 -0
  403. package/lib/loaders/LoaderRunner.js +714 -0
  404. package/lib/loaders/loadLoader.js +100 -0
  405. package/lib/logging/Logger.js +17 -0
  406. package/lib/logging/createConsoleLogger.js +7 -0
  407. package/lib/logging/runtime.js +2 -0
  408. package/lib/logging/truncateArgs.js +2 -0
  409. package/lib/node/CommonJsChunkLoadingPlugin.js +5 -1
  410. package/lib/node/NodeEnvironmentPlugin.js +7 -3
  411. package/lib/node/NodeSourcePlugin.js +1 -1
  412. package/lib/node/NodeTargetPlugin.js +4 -63
  413. package/lib/node/NodeTemplatePlugin.js +3 -1
  414. package/lib/node/NodeWatchFileSystem.js +40 -22
  415. package/lib/node/ReadFileChunkLoadingRuntimeModule.js +13 -9
  416. package/lib/node/ReadFileCompileAsyncWasmPlugin.js +33 -3
  417. package/lib/node/ReadFileCompileWasmPlugin.js +28 -3
  418. package/lib/node/RequireChunkLoadingRuntimeModule.js +21 -16
  419. package/lib/node/nodeBuiltins.js +80 -0
  420. package/lib/node/nodeConsole.js +116 -64
  421. package/lib/optimize/AggressiveMergingPlugin.js +22 -16
  422. package/lib/optimize/AggressiveSplittingPlugin.js +6 -1
  423. package/lib/optimize/ConcatenatedModule.js +603 -130
  424. package/lib/optimize/ConstExportsPlugin.js +211 -0
  425. package/lib/optimize/EnsureChunkConditionsPlugin.js +2 -1
  426. package/lib/optimize/FlagIncludedChunksPlugin.js +15 -4
  427. package/lib/optimize/InlineExports.js +178 -0
  428. package/lib/optimize/InnerGraph.js +374 -262
  429. package/lib/optimize/InnerGraphPlugin.js +246 -117
  430. package/lib/optimize/LimitChunkCountPlugin.js +9 -0
  431. package/lib/optimize/MangleExportsPlugin.js +5 -1
  432. package/lib/optimize/MergeDuplicateChunksPlugin.js +2 -0
  433. package/lib/optimize/MinChunkSizePlugin.js +2 -1
  434. package/lib/optimize/MinMaxSizeWarning.js +5 -4
  435. package/lib/optimize/ModuleConcatenationPlugin.js +229 -55
  436. package/lib/optimize/RealContentHashPlugin.js +130 -52
  437. package/lib/optimize/RemoveEmptyChunksPlugin.js +2 -1
  438. package/lib/optimize/RemoveParentModulesPlugin.js +3 -1
  439. package/lib/optimize/RuntimeChunkPlugin.js +2 -1
  440. package/lib/optimize/SideEffectsFlagPlugin.js +381 -55
  441. package/lib/optimize/SplitChunksPlugin.js +200 -50
  442. package/lib/performance/AssetsOverSizeLimitWarning.js +3 -2
  443. package/lib/performance/EntrypointsOverSizeLimitWarning.js +3 -2
  444. package/lib/performance/NoAsyncChunksWarning.js +5 -3
  445. package/lib/performance/SizeLimitsPlugin.js +8 -2
  446. package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +1 -0
  447. package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +21 -0
  448. package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +1 -0
  449. package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +5 -1
  450. package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +25 -13
  451. package/lib/prefetch/ResourceHintPlugin.js +687 -0
  452. package/lib/prefetch/ResourceHintRuntimeModule.js +149 -0
  453. package/lib/prefetch/StartupAssetHintRuntimeModule.js +210 -0
  454. package/lib/prefetch/parseResourceHintOptions.js +103 -0
  455. package/lib/rules/BasicEffectRulePlugin.js +3 -0
  456. package/lib/rules/BasicMatcherRulePlugin.js +3 -0
  457. package/lib/rules/ObjectMatcherRulePlugin.js +3 -0
  458. package/lib/rules/RuleSetCompiler.js +132 -0
  459. package/lib/rules/UseEffectRulePlugin.js +10 -3
  460. package/lib/runtime/AsyncModuleGeneratorRuntimeModule.js +56 -0
  461. package/lib/runtime/AsyncModuleRuntimeModule.js +52 -33
  462. package/lib/runtime/AutoPublicPathRuntimeModule.js +22 -9
  463. package/lib/runtime/BaseUriRuntimeModule.js +1 -0
  464. package/lib/runtime/ChunkNameRuntimeModule.js +1 -0
  465. package/lib/runtime/CommonJsWrapRuntimeModule.js +37 -0
  466. package/lib/runtime/CompatGetDefaultExportRuntimeModule.js +2 -1
  467. package/lib/runtime/CompatRuntimeModule.js +2 -0
  468. package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +7 -4
  469. package/lib/runtime/CreateScriptRuntimeModule.js +1 -0
  470. package/lib/runtime/CreateScriptUrlRuntimeModule.js +1 -0
  471. package/lib/runtime/DefinePropertyGettersRuntimeModule.js +34 -4
  472. package/lib/runtime/EnsureChunkRuntimeModule.js +1 -0
  473. package/lib/runtime/GetChunkFilenameRuntimeModule.js +88 -8
  474. package/lib/runtime/GetFullHashRuntimeModule.js +1 -0
  475. package/lib/runtime/GetMainFilenameRuntimeModule.js +1 -0
  476. package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +2 -1
  477. package/lib/runtime/GetWorkletBootstrapRuntimeModule.js +59 -0
  478. package/lib/runtime/GlobalRuntimeModule.js +1 -0
  479. package/lib/runtime/HasOwnPropertyRuntimeModule.js +2 -1
  480. package/lib/runtime/HelperRuntimeModule.js +5 -0
  481. package/lib/runtime/LoadScriptRuntimeModule.js +28 -37
  482. package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +354 -37
  483. package/lib/runtime/MakeNamespaceObjectRuntimeModule.js +2 -1
  484. package/lib/runtime/NonceRuntimeModule.js +1 -0
  485. package/lib/runtime/OnChunksLoadedRuntimeModule.js +5 -4
  486. package/lib/runtime/PublicPathRuntimeModule.js +1 -0
  487. package/lib/runtime/RelativeUrlRuntimeModule.js +4 -2
  488. package/lib/runtime/RuntimeIdRuntimeModule.js +1 -0
  489. package/lib/runtime/SetAnonymousDefaultNameRuntimeModule.js +38 -0
  490. package/lib/runtime/StartupChunkDependenciesPlugin.js +13 -1
  491. package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +2 -1
  492. package/lib/runtime/StartupEntrypointRuntimeModule.js +5 -3
  493. package/lib/runtime/SystemContextRuntimeModule.js +1 -0
  494. package/lib/runtime/ToBinaryRuntimeModule.js +1 -0
  495. package/lib/runtime/WorkerRuntimeModule.js +33 -0
  496. package/lib/schemes/DataUriPlugin.js +14 -2
  497. package/lib/schemes/FileUriPlugin.js +1 -1
  498. package/lib/schemes/HttpUriPlugin.js +86 -4
  499. package/lib/schemes/VirtualUrlPlugin.js +8 -4
  500. package/lib/serialization/AggregateErrorSerializer.js +9 -6
  501. package/lib/serialization/ArraySerializer.js +6 -8
  502. package/lib/serialization/BinaryMiddleware.js +427 -1006
  503. package/lib/serialization/DateObjectSerializer.js +4 -2
  504. package/lib/serialization/ErrorObjectSerializer.js +10 -6
  505. package/lib/serialization/FileMiddleware.js +345 -59
  506. package/lib/serialization/MapObjectSerializer.js +7 -9
  507. package/lib/serialization/NullPrototypeObjectSerializer.js +9 -9
  508. package/lib/serialization/ObjectMiddleware.js +73 -13
  509. package/lib/serialization/PlainObjectSerializer.js +16 -8
  510. package/lib/serialization/RegExpObjectSerializer.js +4 -2
  511. package/lib/serialization/Serializer.js +6 -0
  512. package/lib/serialization/SerializerMiddleware.js +14 -2
  513. package/lib/serialization/SetObjectSerializer.js +6 -8
  514. package/lib/serialization/SingleItemMiddleware.js +3 -0
  515. package/lib/sharing/ConsumeSharedFallbackDependency.js +1 -0
  516. package/lib/sharing/ConsumeSharedModule.js +21 -7
  517. package/lib/sharing/ConsumeSharedPlugin.js +11 -11
  518. package/lib/sharing/ConsumeSharedRuntimeModule.js +55 -45
  519. package/lib/sharing/ProvideForSharedDependency.js +1 -0
  520. package/lib/sharing/ProvideSharedDependency.js +34 -15
  521. package/lib/sharing/ProvideSharedModule.js +42 -12
  522. package/lib/sharing/ProvideSharedModuleFactory.js +1 -0
  523. package/lib/sharing/ProvideSharedPlugin.js +13 -8
  524. package/lib/sharing/SharePlugin.js +5 -1
  525. package/lib/sharing/ShareRuntimeModule.js +19 -16
  526. package/lib/sharing/resolveMatchedConfigs.js +6 -2
  527. package/lib/sharing/utils.js +9 -1
  528. package/lib/stats/DefaultStatsFactoryPlugin.js +289 -201
  529. package/lib/stats/DefaultStatsPresetPlugin.js +14 -2
  530. package/lib/stats/DefaultStatsPrinterPlugin.js +74 -170
  531. package/lib/stats/StatsFactory.js +70 -27
  532. package/lib/stats/StatsPrinter.js +16 -2
  533. package/lib/typescript/TypeScriptPlugin.js +210 -0
  534. package/lib/url/URLParserPlugin.js +111 -23
  535. package/lib/util/ArrayHelpers.js +1 -0
  536. package/lib/util/ArrayQueue.js +10 -5
  537. package/lib/util/AsyncQueue.js +154 -74
  538. package/lib/util/Hash.js +2 -2
  539. package/lib/util/IterableHelpers.js +3 -0
  540. package/lib/util/LazyBucketSortedSet.js +26 -0
  541. package/lib/util/LazySet.js +45 -4
  542. package/lib/util/LocConverter.js +64 -0
  543. package/lib/util/ParallelismFactorCalculator.js +1 -0
  544. package/lib/util/Queue.js +6 -3
  545. package/lib/util/Semaphore.js +15 -1
  546. package/lib/util/SetHelpers.js +4 -1
  547. package/lib/util/SortableSet.js +7 -1
  548. package/lib/util/SourceProcessor.js +119 -0
  549. package/lib/util/StackedCacheMap.js +20 -3
  550. package/lib/util/StackedMap.js +162 -43
  551. package/lib/util/StringXor.js +1 -1
  552. package/lib/util/TupleQueue.js +7 -3
  553. package/lib/util/TupleSet.js +14 -0
  554. package/lib/util/URLAbsoluteSpecifier.js +1 -0
  555. package/lib/util/WeakTupleMap.js +60 -1
  556. package/lib/util/binarySearchBounds.js +3 -2
  557. package/lib/util/chainedImports.js +3 -3
  558. package/lib/util/cleverMerge.js +19 -2
  559. package/lib/util/comparators.js +35 -4
  560. package/lib/util/compileBooleanMatcher.js +9 -0
  561. package/lib/util/concatenate.js +80 -24
  562. package/lib/util/conventions.js +46 -1
  563. package/lib/util/createHash.js +0 -1
  564. package/lib/util/createHooksRegistry.js +43 -0
  565. package/lib/util/createMappings.js +118 -0
  566. package/lib/util/dataURL.js +3 -2
  567. package/lib/util/deprecation.js +19 -0
  568. package/lib/util/deterministicGrouping.js +46 -17
  569. package/lib/util/extractSourceMap.js +2 -1
  570. package/lib/util/extractUrlAndGlobal.js +1 -0
  571. package/lib/util/findGraphRoots.js +7 -0
  572. package/lib/{formatLocation.js → util/formatLocation.js} +4 -2
  573. package/lib/{SizeFormatHelpers.js → util/formatSize.js} +10 -3
  574. package/lib/util/fs.js +87 -14
  575. package/lib/util/generateDebugId.js +1 -0
  576. package/lib/util/globUtils.js +710 -0
  577. package/lib/util/hash/BatchedHash.js +1 -0
  578. package/lib/util/hash/BulkUpdateHash.js +1 -0
  579. package/lib/util/hash/DebugHash.js +1 -0
  580. package/lib/util/hash/hash-digest.js +32 -15
  581. package/lib/util/hash/md4.js +1 -1
  582. package/lib/util/hash/wasm-hash.js +5 -0
  583. package/lib/util/hash/xxhash64.js +1 -1
  584. package/lib/util/identifier.js +118 -7
  585. package/lib/util/implicitTypeLoaderFallback.js +62 -0
  586. package/lib/util/internalSerializables.js +102 -60
  587. package/lib/util/magicComment.js +149 -7
  588. package/lib/util/makeSerializable.js +7 -0
  589. package/lib/util/memoize.js +2 -0
  590. package/lib/util/mimeTypes.js +176 -0
  591. package/lib/util/nonNumericOnlyHash.js +31 -1
  592. package/lib/util/numberHash.js +2 -2
  593. package/lib/util/parseJson.js +41 -0
  594. package/lib/util/processAsyncTree.js +8 -0
  595. package/lib/util/property.js +9 -2
  596. package/lib/util/publicPathPlaceholder.js +64 -0
  597. package/lib/util/registerExternalSerializer.js +24 -4
  598. package/lib/util/removeBOM.js +1 -0
  599. package/lib/util/runtime.js +32 -0
  600. package/lib/util/semver.js +15 -0
  601. package/lib/util/serialization.js +2 -0
  602. package/lib/util/smartGrouping.js +8 -0
  603. package/lib/util/source.js +23 -0
  604. package/lib/util/topologicalSort.js +69 -0
  605. package/lib/validateSchema.js +1 -0
  606. package/lib/wasm/EnableWasmLoadingPlugin.js +15 -1
  607. package/lib/wasm-async/AsyncWasmCompileRuntimeModule.js +25 -18
  608. package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +34 -22
  609. package/lib/wasm-async/AsyncWasmModule.js +77 -0
  610. package/lib/wasm-async/AsyncWebAssemblyGenerator.js +6 -0
  611. package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +6 -1
  612. package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +22 -126
  613. package/lib/wasm-async/AsyncWebAssemblyParser.js +3 -2
  614. package/lib/wasm-async/UniversalCompileAsyncWasmPlugin.js +13 -2
  615. package/lib/wasm-sync/SyncWasmModule.js +39 -0
  616. package/lib/wasm-sync/UnsupportedWebAssemblyFeatureError.js +7 -3
  617. package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +86 -19
  618. package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +4 -3
  619. package/lib/wasm-sync/WebAssemblyGenerator.js +27 -1
  620. package/lib/wasm-sync/WebAssemblyInInitialChunkError.js +9 -3
  621. package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +4 -0
  622. package/lib/wasm-sync/WebAssemblyModulesPlugin.js +20 -1
  623. package/lib/wasm-sync/WebAssemblyParser.js +9 -3
  624. package/lib/wasm-sync/WebAssemblyUtils.js +2 -0
  625. package/lib/web/FetchCompileAsyncWasmPlugin.js +29 -1
  626. package/lib/web/FetchCompileWasmPlugin.js +27 -1
  627. package/lib/web/JsonpChunkLoadingPlugin.js +11 -1
  628. package/lib/web/JsonpChunkLoadingRuntimeModule.js +58 -64
  629. package/lib/web/JsonpTemplatePlugin.js +2 -1
  630. package/lib/webpack.js +78 -1
  631. package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +10 -1
  632. package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +15 -10
  633. package/lib/webworker/WebWorkerTemplatePlugin.js +1 -1
  634. package/module.d.ts +21 -0
  635. package/package.json +79 -77
  636. package/schemas/WebpackOptions.check.js +1 -1
  637. package/schemas/WebpackOptions.json +1173 -80
  638. package/schemas/plugins/{DllPlugin.check.d.ts → HtmlGeneratorOptions.check.d.ts} +1 -1
  639. package/schemas/plugins/HtmlGeneratorOptions.check.js +6 -0
  640. package/schemas/plugins/HtmlGeneratorOptions.json +3 -0
  641. package/schemas/plugins/{DllReferencePlugin.check.d.ts → HtmlParserOptions.check.d.ts} +1 -1
  642. package/schemas/plugins/HtmlParserOptions.check.js +6 -0
  643. package/schemas/plugins/HtmlParserOptions.json +3 -0
  644. package/schemas/plugins/ProgressPlugin.check.js +1 -1
  645. package/schemas/plugins/ProgressPlugin.json +38 -0
  646. package/schemas/plugins/container/ContainerReferencePlugin.check.js +1 -1
  647. package/schemas/plugins/container/ContainerReferencePlugin.json +2 -0
  648. package/schemas/plugins/container/ExternalsType.check.js +1 -1
  649. package/schemas/plugins/container/ModuleFederationPlugin.check.js +1 -1
  650. package/schemas/plugins/container/ModuleFederationPlugin.json +2 -0
  651. package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.d.ts +7 -0
  652. package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.js +6 -0
  653. package/schemas/plugins/css/CssAutoOrModuleParserOptions.json +3 -0
  654. package/schemas/plugins/css/CssModuleParserOptions.check.js +1 -1
  655. package/schemas/plugins/css/CssParserOptions.check.js +1 -1
  656. package/schemas/plugins/dll/DllPlugin.check.d.ts +7 -0
  657. package/schemas/plugins/dll/DllReferencePlugin.check.d.ts +7 -0
  658. package/types.d.ts +11053 -3019
  659. package/lib/CaseSensitiveModulesWarning.js +0 -72
  660. package/lib/GraphHelpers.js +0 -46
  661. package/lib/ModuleParseError.js +0 -125
  662. package/lib/NoModeWarning.js +0 -23
  663. package/lib/css/CssMergeStyleSheetsRuntimeModule.js +0 -56
  664. package/lib/css/walkCssTokens.js +0 -1843
  665. package/lib/util/AppendOnlyStackedSet.js +0 -78
  666. /package/schemas/plugins/{DllPlugin.check.js → dll/DllPlugin.check.js} +0 -0
  667. /package/schemas/plugins/{DllPlugin.json → dll/DllPlugin.json} +0 -0
  668. /package/schemas/plugins/{DllReferencePlugin.check.js → dll/DllReferencePlugin.check.js} +0 -0
  669. /package/schemas/plugins/{DllReferencePlugin.json → dll/DllReferencePlugin.json} +0 -0
@@ -0,0 +1,710 @@
1
+ /*
2
+ MIT License http://www.opensource.org/licenses/mit-license.php
3
+ Author Natsu @xiaoxiaojx
4
+ */
5
+
6
+ "use strict";
7
+
8
+ const path = require("path");
9
+ const { join: joinPath } = require("./fs");
10
+ const memoize = require("./memoize");
11
+
12
+ // watchpack is only needed at watch time otherwise; load its glob core lazily
13
+ const getGlobToRegExpSource = memoize(
14
+ () =>
15
+ /** @type {{ util: { globToRegExp: (glob: string) => string } }} */ (
16
+ /** @type {unknown} */ (require("watchpack"))
17
+ ).util.globToRegExp
18
+ );
19
+
20
+ /** @typedef {{ caseSensitive?: boolean, requireLiteralLeadingDot?: boolean }} GlobMatchOptions */
21
+
22
+ /**
23
+ * @param {string} s string
24
+ * @returns {string} escaped glob pattern
25
+ */
26
+ const escapeGlobPattern = (s) => {
27
+ let result = "";
28
+ for (const c of s) {
29
+ result +=
30
+ c === "*" || c === "?" || c === "[" || c === "]" || c === "{" || c === "}"
31
+ ? `\\${c}`
32
+ : c;
33
+ }
34
+ return result;
35
+ };
36
+
37
+ /**
38
+ * @param {string} s string
39
+ * @returns {string} normalized path separators for glob patterns
40
+ */
41
+ const normalizePathSeparators = (s) => {
42
+ let result = "";
43
+ const chars = [...s];
44
+ for (let i = 0; i < chars.length; i++) {
45
+ const c = chars[i];
46
+ if (c === "\\") {
47
+ const next = chars[i + 1];
48
+ if (
49
+ next === "*" ||
50
+ next === "?" ||
51
+ next === "[" ||
52
+ next === "]" ||
53
+ next === "{" ||
54
+ next === "}"
55
+ ) {
56
+ result += c;
57
+ } else {
58
+ result += "/";
59
+ }
60
+ } else {
61
+ result += c;
62
+ }
63
+ }
64
+ return result;
65
+ };
66
+
67
+ /**
68
+ * @param {string} s string
69
+ * @returns {string} normalized path separators for filesystem paths
70
+ */
71
+ const normalizePathSeparatorsForPath = (s) => s.replace(/\\/g, "/");
72
+
73
+ /**
74
+ * @param {string} s string
75
+ * @returns {string} unescaped glob path
76
+ */
77
+ const unescapeGlobPath = (s) => {
78
+ let result = "";
79
+ const chars = [...s];
80
+ for (let i = 0; i < chars.length; i++) {
81
+ const c = chars[i];
82
+ if (c === "\\") {
83
+ const next = chars[i + 1];
84
+ if (
85
+ next === "*" ||
86
+ next === "?" ||
87
+ next === "[" ||
88
+ next === "]" ||
89
+ next === "{" ||
90
+ next === "}"
91
+ ) {
92
+ result += next;
93
+ i++;
94
+ } else {
95
+ result += c;
96
+ }
97
+ } else {
98
+ result += c;
99
+ }
100
+ }
101
+ return result;
102
+ };
103
+
104
+ /**
105
+ * @param {string} c character
106
+ * @returns {boolean} is glob metacharacter
107
+ */
108
+ const isGlobMetacharacter = (c) =>
109
+ c === "*" || c === "?" || c === "[" || c === "{";
110
+
111
+ /**
112
+ * @param {string} pattern pattern
113
+ * @returns {number} end index of base directory
114
+ */
115
+ const globBaseDirEnd = (pattern) => {
116
+ let escaped = false;
117
+ let idx = pattern.length;
118
+ for (let byteIdx = 0; byteIdx < pattern.length; byteIdx++) {
119
+ const c = pattern[byteIdx];
120
+ if (escaped) {
121
+ escaped = false;
122
+ continue;
123
+ }
124
+ if (c === "\\") {
125
+ escaped = true;
126
+ continue;
127
+ }
128
+ if (isGlobMetacharacter(c)) {
129
+ idx = byteIdx;
130
+ break;
131
+ }
132
+ }
133
+ const slashIdx = pattern.lastIndexOf("/", idx - 1);
134
+ return slashIdx === -1 ? 0 : slashIdx + 1;
135
+ };
136
+
137
+ /**
138
+ * @param {string} pattern pattern
139
+ * @returns {string} base directory
140
+ */
141
+ const extractGlobBaseDir = (pattern) => {
142
+ const end = globBaseDirEnd(pattern);
143
+ return end === 0 ? "./" : pattern.slice(0, end);
144
+ };
145
+
146
+ /**
147
+ * @param {string} c character
148
+ * @returns {string} regexp-escaped character
149
+ */
150
+ const quoteRegExpChar = (c) => (/[$()*+\-./?[\\\]^{|}]/.test(c) ? `\\${c}` : c);
151
+
152
+ /**
153
+ * Expands `{a,b}` alternations (escape- and class-aware, nested) into
154
+ * brace-free globs; unmatched braces are kept as literal characters.
155
+ * @param {string} glob glob
156
+ * @returns {string[]} brace-free globs
157
+ */
158
+ const expandGlobBraces = (glob) => {
159
+ let braceStart = -1;
160
+ let braceEnd = -1;
161
+ let depth = 0;
162
+ for (let i = 0; i < glob.length; i++) {
163
+ const c = glob[i];
164
+ if (c === "\\") {
165
+ i++;
166
+ } else if (c === "[") {
167
+ while (i + 1 < glob.length && glob[i + 1] !== "]") {
168
+ i += glob[i + 1] === "\\" ? 2 : 1;
169
+ }
170
+ i++;
171
+ } else if (c === "{") {
172
+ if (depth === 0) braceStart = i;
173
+ depth++;
174
+ } else if (c === "}") {
175
+ if (depth === 0) {
176
+ return expandGlobBraces(`${glob.slice(0, i)}\\}${glob.slice(i + 1)}`);
177
+ }
178
+ if (--depth === 0) {
179
+ braceEnd = i;
180
+ break;
181
+ }
182
+ }
183
+ }
184
+ if (braceStart === -1) return [glob];
185
+ if (braceEnd === -1) {
186
+ return expandGlobBraces(
187
+ `${glob.slice(0, braceStart)}\\{${glob.slice(braceStart + 1)}`
188
+ );
189
+ }
190
+ const prefix = glob.slice(0, braceStart);
191
+ const suffix = glob.slice(braceEnd + 1);
192
+ const inner = glob.slice(braceStart + 1, braceEnd);
193
+ /** @type {string[]} */
194
+ const alternatives = [];
195
+ let altStart = 0;
196
+ let altDepth = 0;
197
+ for (let i = 0; i < inner.length; i++) {
198
+ const c = inner[i];
199
+ if (c === "\\") {
200
+ i++;
201
+ } else if (c === "[") {
202
+ while (i + 1 < inner.length && inner[i + 1] !== "]") {
203
+ i += inner[i + 1] === "\\" ? 2 : 1;
204
+ }
205
+ i++;
206
+ } else if (c === "{") {
207
+ altDepth++;
208
+ } else if (c === "}") {
209
+ altDepth--;
210
+ } else if (c === "," && altDepth === 0) {
211
+ alternatives.push(inner.slice(altStart, i));
212
+ altStart = i + 1;
213
+ }
214
+ }
215
+ alternatives.push(inner.slice(altStart));
216
+ /** @type {string[]} */
217
+ const result = [];
218
+ for (const alt of alternatives) {
219
+ for (const expanded of expandGlobBraces(`${prefix}${alt}${suffix}`)) {
220
+ result.push(expanded);
221
+ }
222
+ }
223
+ return result;
224
+ };
225
+
226
+ /**
227
+ * watchpack compiles `?` to a bare `.` (its only unescaped dot in runs
228
+ * without classes); restrict it to a single non-separator character.
229
+ * @param {string} source regexp source
230
+ * @returns {string} fixed regexp source
231
+ */
232
+ const fixupGlobRegExpSource = (source) =>
233
+ source.replace(/\\[\s\S]|\./g, (m) => (m === "." ? "[^/]" : m));
234
+
235
+ /**
236
+ * Converts a brace-free glob into a regexp source. Escapes and character
237
+ * classes are translated here (watchpack mishandles `?`/`!` inside classes);
238
+ * remaining runs go through watchpack's glob-to-regexp core.
239
+ * @param {string} glob brace-free glob
240
+ * @returns {string} regexp source without anchors
241
+ */
242
+ const braceFreeGlobToRegExpSource = (glob) => {
243
+ const globToRegExpSource = getGlobToRegExpSource();
244
+ let source = "";
245
+ let runStart = 0;
246
+ /**
247
+ * @param {number} end run end index
248
+ */
249
+ const flushRun = (end) => {
250
+ if (runStart < end) {
251
+ source += fixupGlobRegExpSource(
252
+ globToRegExpSource(glob.slice(runStart, end))
253
+ );
254
+ }
255
+ };
256
+ for (let i = 0; i < glob.length; i++) {
257
+ const c = glob[i];
258
+ if (c === "\\") {
259
+ flushRun(i);
260
+ source += quoteRegExpChar(i + 1 < glob.length ? glob[i + 1] : "\\");
261
+ i++;
262
+ runStart = i + 1;
263
+ } else if (c === "[") {
264
+ let end = i + 1;
265
+ let negated = false;
266
+ if (glob[end] === "!" || glob[end] === "^") {
267
+ negated = true;
268
+ end++;
269
+ }
270
+ const bodyStart = end;
271
+ while (end < glob.length && glob[end] !== "]") {
272
+ end += glob[end] === "\\" ? 2 : 1;
273
+ }
274
+ flushRun(i);
275
+ if (end >= glob.length) {
276
+ // unterminated class: literal `[`
277
+ source += "\\[";
278
+ runStart = i + 1;
279
+ continue;
280
+ }
281
+ let body = "";
282
+ for (let j = bodyStart; j < end; j++) {
283
+ const bc = glob[j];
284
+ if (bc === "\\" && j + 1 < end) {
285
+ body += quoteRegExpChar(glob[j + 1]);
286
+ j++;
287
+ } else if (bc === "]" || bc === "\\" || bc === "[") {
288
+ body += `\\${bc}`;
289
+ } else {
290
+ body += bc;
291
+ }
292
+ }
293
+ // negated glob classes must not cross a path separator
294
+ source += `[${negated ? "^/" : ""}${body}]`;
295
+ i = end;
296
+ runStart = end + 1;
297
+ }
298
+ }
299
+ flushRun(glob.length);
300
+ return source;
301
+ };
302
+
303
+ /**
304
+ * @param {string} pattern glob pattern
305
+ * @param {boolean} caseSensitive case sensitive
306
+ * @returns {RegExp | null} anchored regexp, null for un-compilable patterns
307
+ */
308
+ const globToRegExp = (pattern, caseSensitive) => {
309
+ const sources = expandGlobBraces(pattern).map(braceFreeGlobToRegExpSource);
310
+ const source = sources.length === 1 ? sources[0] : `(?:${sources.join("|")})`;
311
+ try {
312
+ return new RegExp(`^${source}$`, caseSensitive ? "" : "i");
313
+ } catch (_err) {
314
+ return null;
315
+ }
316
+ };
317
+
318
+ /**
319
+ * @param {string} pattern pattern
320
+ * @param {string} str path
321
+ * @param {GlobMatchOptions=} options options
322
+ * @returns {boolean} matches
323
+ */
324
+ const globMatchWithOptions = (pattern, str, options = {}) => {
325
+ const regexp = globToRegExp(pattern, options.caseSensitive !== false);
326
+ return regexp !== null && regexp.test(str);
327
+ };
328
+
329
+ /**
330
+ * @param {string} path path
331
+ * @param {string} baseDir base directory
332
+ * @returns {boolean} has dot component
333
+ */
334
+ const pathHasDotComponent = (path, baseDir) => {
335
+ const relative = path.startsWith(baseDir) ? path.slice(baseDir.length) : path;
336
+ for (const segment of relative.split("/").filter(Boolean)) {
337
+ if (segment.startsWith(".")) return true;
338
+ }
339
+ return false;
340
+ };
341
+
342
+ /**
343
+ * @param {string[]} patterns pattern segments
344
+ * @param {string[]} paths path segments
345
+ * @param {GlobMatchOptions} options options
346
+ * @returns {boolean} matches
347
+ */
348
+ const matchesExplicitDotSegments = (patterns, paths, options) => {
349
+ if (patterns.length === 0) return paths.length === 0;
350
+ if (paths.length === 0) return false;
351
+ const [patternHead, ...patternRest] = patterns;
352
+ const [pathHead, ...pathRest] = paths;
353
+ if (patternHead === "**") {
354
+ return (
355
+ matchesExplicitDotSegments(patternRest, paths, options) ||
356
+ (!pathHead.startsWith(".") &&
357
+ matchesExplicitDotSegments(patterns, pathRest, options))
358
+ );
359
+ }
360
+ if (pathHead.startsWith(".") && !patternHead.startsWith(".")) {
361
+ return false;
362
+ }
363
+ return (
364
+ globMatchWithOptions(patternHead, pathHead, options) &&
365
+ matchesExplicitDotSegments(patternRest, pathRest, options)
366
+ );
367
+ };
368
+
369
+ /**
370
+ * @param {string} pattern pattern
371
+ * @param {string} baseDir base directory
372
+ * @param {string} path path
373
+ * @param {GlobMatchOptions} options options
374
+ * @returns {boolean} has explicit dot
375
+ */
376
+ const patternHasExplicitDotFor = (pattern, baseDir, path, options) => {
377
+ const escapedBaseDir = escapeGlobPattern(baseDir);
378
+ const patternSuffix =
379
+ (pattern.startsWith(baseDir) && pattern.slice(baseDir.length)) ||
380
+ (pattern.startsWith(escapedBaseDir) &&
381
+ pattern.slice(escapedBaseDir.length)) ||
382
+ pattern;
383
+ const relative = path.startsWith(baseDir) ? path.slice(baseDir.length) : path;
384
+ const patternSegments = patternSuffix.split("/").filter(Boolean);
385
+ const pathSegments = relative.split("/").filter(Boolean);
386
+ return matchesExplicitDotSegments(patternSegments, pathSegments, options);
387
+ };
388
+
389
+ /**
390
+ * @param {string} pattern pattern
391
+ * @param {string} path path
392
+ * @param {string} baseDir base directory
393
+ * @param {GlobMatchOptions=} options options
394
+ * @returns {boolean} matches
395
+ */
396
+ const globMatchWithExplicitDot = (pattern, path, baseDir, options = {}) => {
397
+ const normalizedPattern = normalizePathSeparators(pattern);
398
+ const normalizedPath = normalizePathSeparatorsForPath(path);
399
+ const normalizedBaseDir = normalizePathSeparatorsForPath(baseDir);
400
+ return globMatchNormalizedWithExplicitDot(
401
+ normalizedPattern,
402
+ normalizedPath,
403
+ normalizedBaseDir,
404
+ options
405
+ );
406
+ };
407
+
408
+ /**
409
+ * @param {string} normalizedPattern pattern
410
+ * @param {string} normalizedPath path
411
+ * @param {string} normalizedBaseDir base directory
412
+ * @param {GlobMatchOptions=} options options
413
+ * @returns {boolean} matches
414
+ */
415
+ const globMatchNormalizedWithExplicitDot = (
416
+ normalizedPattern,
417
+ normalizedPath,
418
+ normalizedBaseDir,
419
+ options = {}
420
+ ) => {
421
+ const requireLiteralLeadingDot = options.requireLiteralLeadingDot !== false;
422
+ if (
423
+ requireLiteralLeadingDot &&
424
+ pathHasDotComponent(normalizedPath, normalizedBaseDir) &&
425
+ !patternHasExplicitDotFor(
426
+ normalizedPattern,
427
+ normalizedBaseDir,
428
+ normalizedPath,
429
+ options
430
+ )
431
+ ) {
432
+ return false;
433
+ }
434
+ return globMatchWithOptions(normalizedPattern, normalizedPath, options);
435
+ };
436
+
437
+ /**
438
+ * @param {string} base base path
439
+ * @param {string} subPath sub path
440
+ * @returns {string} joined path
441
+ */
442
+ const joinImportMetaGlobPath = (base, subPath) => {
443
+ let normalizedSubPath = normalizePathSeparators(subPath);
444
+ if (normalizedSubPath.startsWith("./")) {
445
+ normalizedSubPath = normalizedSubPath.slice(2);
446
+ }
447
+ if (base.endsWith("/")) {
448
+ return normalizePathSeparators(`${base}${normalizedSubPath}`);
449
+ }
450
+ return normalizePathSeparators(`${base}/${normalizedSubPath}`);
451
+ };
452
+
453
+ /**
454
+ * @param {string} base base path
455
+ * @param {string} subPath sub path
456
+ * @returns {string} joined filesystem path
457
+ */
458
+ const joinImportMetaGlobFsPath = (base, subPath) =>
459
+ normalizePathSeparatorsForPath(joinPath(undefined, base, subPath));
460
+
461
+ /**
462
+ * @param {string} context context
463
+ * @param {string} compilerContext compiler context
464
+ * @param {string} globPath path
465
+ * @returns {[string, string]} base and path parts
466
+ */
467
+ const importMetaGlobPathParts = (context, compilerContext, globPath) => {
468
+ if (globPath.startsWith("/")) {
469
+ return [compilerContext, globPath.slice(1)];
470
+ }
471
+ return [context, globPath];
472
+ };
473
+
474
+ /**
475
+ * @typedef {object} ResolvedContextModuleGlobPattern
476
+ * @property {string} absolutePattern
477
+ * @property {string} base
478
+ * @property {string} absoluteBase
479
+ * @property {boolean} negative
480
+ */
481
+
482
+ /**
483
+ * @param {string} pattern pattern
484
+ * @param {string} context context
485
+ * @param {string} commonBase common base
486
+ * @returns {ResolvedContextModuleGlobPattern} resolved pattern
487
+ */
488
+ const resolveContextModuleGlobPattern = (pattern, context, commonBase) => {
489
+ let negative = false;
490
+ let normalizedPattern = pattern;
491
+ if (normalizedPattern.startsWith("!")) {
492
+ negative = true;
493
+ normalizedPattern = normalizedPattern.slice(1);
494
+ }
495
+ normalizedPattern = normalizePathSeparators(normalizedPattern);
496
+ /** @type {string} */
497
+ let base;
498
+ /** @type {string} */
499
+ let patternToJoin;
500
+ if (normalizedPattern.startsWith("/")) {
501
+ base = inferGlobRootContext(
502
+ commonBase,
503
+ extractGlobBaseDir(normalizedPattern.slice(1))
504
+ );
505
+ patternToJoin = normalizedPattern.slice(1);
506
+ } else {
507
+ base = context || commonBase;
508
+ patternToJoin = normalizedPattern;
509
+ }
510
+ base = normalizePathSeparatorsForPath(base);
511
+ const escapedBase = escapeGlobPattern(base);
512
+ const absolutePattern = normalizePathSeparators(
513
+ path.posix.normalize(path.posix.join(escapedBase, patternToJoin))
514
+ );
515
+ const patternBase = extractGlobBaseDir(normalizedPattern);
516
+ const absoluteBase = unescapeGlobPath(extractGlobBaseDir(absolutePattern));
517
+ return {
518
+ absolutePattern,
519
+ base: patternBase,
520
+ absoluteBase,
521
+ negative
522
+ };
523
+ };
524
+
525
+ /**
526
+ * @param {string} commonBase common base
527
+ * @param {string} patternBase pattern base
528
+ * @returns {string} inferred root context
529
+ */
530
+ const inferGlobRootContext = (commonBase, patternBase) => {
531
+ let normalizedCommonBase = normalizePathSeparatorsForPath(commonBase);
532
+ if (!normalizedCommonBase.endsWith("/")) {
533
+ normalizedCommonBase += "/";
534
+ }
535
+ const trimmedPatternBase = patternBase.replace(/^\/+/, "");
536
+ let matchedLen = 0;
537
+ const indices = [];
538
+ for (let i = 0; i <= trimmedPatternBase.length; i++) {
539
+ indices.push(i);
540
+ }
541
+ for (const idx of indices) {
542
+ if (
543
+ !trimmedPatternBase.slice(0, idx).endsWith("/") &&
544
+ idx !== trimmedPatternBase.length
545
+ ) {
546
+ continue;
547
+ }
548
+ if (normalizedCommonBase.endsWith(trimmedPatternBase.slice(0, idx))) {
549
+ matchedLen = idx;
550
+ }
551
+ }
552
+ return normalizedCommonBase.slice(
553
+ 0,
554
+ normalizedCommonBase.length - matchedLen
555
+ );
556
+ };
557
+
558
+ /**
559
+ * @param {ResolvedContextModuleGlobPattern[]} patterns patterns
560
+ * @param {string} fallback fallback
561
+ * @returns {string} common base directory
562
+ */
563
+ const commonGlobBaseDir = (patterns, fallback) => {
564
+ const positivePatterns = patterns.filter((p) => !p.negative);
565
+ if (positivePatterns.length === 0) return fallback;
566
+ let commonBase = positivePatterns[0].absoluteBase;
567
+ for (const pattern of positivePatterns.slice(1)) {
568
+ const base = pattern.absoluteBase;
569
+ while (!base.startsWith(commonBase)) {
570
+ const parent = path.posix.dirname(commonBase);
571
+ if (parent === commonBase) return fallback;
572
+ commonBase = parent.endsWith("/") ? parent : `${parent}/`;
573
+ }
574
+ }
575
+ return commonBase.endsWith("/")
576
+ ? normalizePathSeparatorsForPath(commonBase)
577
+ : normalizePathSeparatorsForPath(`${commonBase}/`);
578
+ };
579
+
580
+ /**
581
+ * @param {ResolvedContextModuleGlobPattern} pattern pattern
582
+ * @param {string} normalizedPath path
583
+ * @param {boolean} exhaustive exhaustive
584
+ * @param {boolean} caseSensitive case sensitive
585
+ * @returns {boolean} matches
586
+ */
587
+ const globPatternMatches = (
588
+ pattern,
589
+ normalizedPath,
590
+ exhaustive,
591
+ caseSensitive
592
+ ) =>
593
+ globMatchNormalizedWithExplicitDot(
594
+ pattern.absolutePattern,
595
+ normalizedPath,
596
+ pattern.absoluteBase,
597
+ { requireLiteralLeadingDot: !exhaustive, caseSensitive }
598
+ );
599
+
600
+ /**
601
+ * @param {ResolvedContextModuleGlobPattern[]} patterns patterns
602
+ * @param {string} filePath path
603
+ * @param {boolean} exhaustive exhaustive
604
+ * @param {boolean=} caseSensitive case sensitive (default true)
605
+ * @returns {string | undefined} user request
606
+ */
607
+ const globUserRequest = (
608
+ patterns,
609
+ filePath,
610
+ exhaustive,
611
+ caseSensitive = true
612
+ ) => {
613
+ const normalizedPath = normalizePathSeparatorsForPath(filePath);
614
+ const matched = patterns
615
+ .filter((pattern) => !pattern.negative)
616
+ .find((pattern) =>
617
+ globPatternMatches(pattern, normalizedPath, exhaustive, caseSensitive)
618
+ );
619
+ if (!matched) return;
620
+ if (
621
+ patterns
622
+ .filter((pattern) => pattern.negative)
623
+ .some((pattern) =>
624
+ globPatternMatches(pattern, normalizedPath, exhaustive, caseSensitive)
625
+ )
626
+ ) {
627
+ return;
628
+ }
629
+ const suffix = (
630
+ normalizedPath.startsWith(matched.absoluteBase)
631
+ ? normalizedPath.slice(matched.absoluteBase.length)
632
+ : normalizedPath
633
+ ).replace(/^\/+/, "");
634
+ return joinImportMetaGlobPath(matched.base, suffix);
635
+ };
636
+
637
+ /**
638
+ * @param {ResolvedContextModuleGlobPattern[]} patterns patterns
639
+ * @param {string} commonBaseDir common base
640
+ * @returns {boolean} recursive
641
+ */
642
+ const globPatternsAreRecursive = (patterns, commonBaseDir) => {
643
+ const normalizedCommonBase = normalizePathSeparatorsForPath(commonBaseDir);
644
+ const normalizedBase = normalizedCommonBase.endsWith("/")
645
+ ? normalizedCommonBase
646
+ : `${normalizedCommonBase}/`;
647
+ return patterns
648
+ .filter((pattern) => !pattern.negative)
649
+ .some((pattern) => {
650
+ const unescapedPattern = unescapeGlobPath(pattern.absolutePattern);
651
+ if (unescapedPattern.includes("**")) return true;
652
+ const suffix = unescapedPattern.startsWith(normalizedBase)
653
+ ? unescapedPattern.slice(normalizedBase.length)
654
+ : unescapedPattern.startsWith(normalizedCommonBase)
655
+ ? unescapedPattern.slice(normalizedCommonBase.length)
656
+ : unescapedPattern;
657
+ return suffix.includes("/");
658
+ });
659
+ };
660
+
661
+ /**
662
+ * @param {string} dirname directory name
663
+ * @returns {boolean} skipped in non-exhaustive mode
664
+ */
665
+ const isNonExhaustiveImportMetaGlobSkippedDir = (dirname) =>
666
+ dirname === "node_modules" || dirname.startsWith(".");
667
+
668
+ /**
669
+ * A dot/node_modules directory is still traversed in non-exhaustive mode when
670
+ * it lies within the literal base of some positive pattern — the user named it
671
+ * explicitly — so combined patterns behave like that pattern used alone.
672
+ * @param {ResolvedContextModuleGlobPattern[]} patterns patterns
673
+ * @param {string} dirPath absolute directory path
674
+ * @returns {boolean} directory is within a positive pattern's literal base
675
+ */
676
+ const globPatternBaseReachesDir = (patterns, dirPath) => {
677
+ const normalizedDir = normalizePathSeparatorsForPath(dirPath);
678
+ const dirWithSlash = normalizedDir.endsWith("/")
679
+ ? normalizedDir
680
+ : `${normalizedDir}/`;
681
+ return patterns.some((pattern) => {
682
+ if (pattern.negative) return false;
683
+ const base = pattern.absoluteBase.endsWith("/")
684
+ ? pattern.absoluteBase
685
+ : `${pattern.absoluteBase}/`;
686
+ return base.startsWith(dirWithSlash);
687
+ });
688
+ };
689
+
690
+ module.exports = {
691
+ commonGlobBaseDir,
692
+ escapeGlobPattern,
693
+ extractGlobBaseDir,
694
+ globMatchNormalizedWithExplicitDot,
695
+ globMatchWithExplicitDot,
696
+ globMatchWithOptions,
697
+ globPatternBaseReachesDir,
698
+ globPatternsAreRecursive,
699
+ globUserRequest,
700
+ importMetaGlobPathParts,
701
+ inferGlobRootContext,
702
+ isNonExhaustiveImportMetaGlobSkippedDir,
703
+ joinImportMetaGlobFsPath,
704
+ joinImportMetaGlobPath,
705
+ normalizePathSeparators,
706
+ normalizePathSeparatorsForPath,
707
+ patternHasExplicitDotFor,
708
+ resolveContextModuleGlobPattern,
709
+ unescapeGlobPath
710
+ };
@@ -14,6 +14,7 @@ const MAX_SHORT_STRING = require("./wasm-hash").MAX_SHORT_STRING;
14
14
 
15
15
  class BatchedHash extends Hash {
16
16
  /**
17
+ * Creates an instance of BatchedHash.
17
18
  * @param {Hash} hash hash
18
19
  */
19
20
  constructor(hash) {