@depup/webpack 5.109.0-depup.0 → 5.110.1-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.
- package/README.md +7 -7
- package/bin/webpack.js +12 -0
- package/changes.json +10 -10
- package/lib/APIPlugin.js +123 -17
- package/lib/AsyncDependenciesBlock.js +10 -7
- package/lib/AutomaticPrefetchPlugin.js +1 -1
- package/lib/BannerPlugin.js +10 -6
- package/lib/CacheFacade.js +6 -6
- package/lib/Chunk.js +14 -11
- package/lib/ChunkGraph.js +43 -32
- package/lib/ChunkGroup.js +7 -7
- package/lib/ChunkTemplate.js +35 -44
- package/lib/CircularModulesPlugin.js +205 -28
- package/lib/CleanPlugin.js +15 -16
- package/lib/CodeGenerationResults.js +11 -8
- package/lib/CompatibilityPlugin.js +38 -7
- package/lib/Compilation.js +709 -414
- package/lib/Compiler.js +69 -42
- package/lib/ConcatenationScope.js +117 -8
- package/lib/ConditionalInitFragment.js +3 -3
- package/lib/ConstPlugin.js +13 -11
- package/lib/ContextExclusionPlugin.js +1 -1
- package/lib/ContextModule.js +146 -54
- package/lib/ContextModuleFactory.js +46 -14
- package/lib/ContextReplacementPlugin.js +12 -14
- package/lib/DefinePlugin.js +168 -57
- package/lib/DependenciesBlock.js +9 -6
- package/lib/Dependency.js +36 -16
- package/lib/DependencyTemplate.js +11 -12
- package/lib/DependencyTemplates.js +3 -3
- package/lib/DotenvPlugin.js +50 -13
- package/lib/DynamicEntryPlugin.js +8 -4
- package/lib/EntryOptionPlugin.js +8 -4
- package/lib/EntryPlugin.js +2 -2
- package/lib/Entrypoint.js +6 -2
- package/lib/EnvironmentPlugin.js +2 -2
- package/lib/EvalDevToolModulePlugin.js +8 -4
- package/lib/EvalSourceMapDevToolPlugin.js +15 -8
- package/lib/ExportsInfo.js +123 -19
- package/lib/ExportsInfoApiPlugin.js +2 -4
- package/lib/ExternalModule.js +242 -84
- package/lib/ExternalModuleFactoryPlugin.js +97 -38
- package/lib/ExternalsPlugin.js +10 -6
- package/lib/FileSystemInfo.js +116 -42
- package/lib/FlagAllModulesAsUsedPlugin.js +2 -3
- package/lib/FlagDependencyExportsPlugin.js +76 -19
- package/lib/FlagDependencyUsagePlugin.js +63 -57
- package/lib/FlagEntryExportAsUsedPlugin.js +1 -1
- package/lib/Generator.js +36 -15
- package/lib/HotModuleReplacementPlugin.js +16 -44
- package/lib/IgnorePlugin.js +8 -4
- package/lib/IgnoreWarningsPlugin.js +2 -2
- package/lib/InitFragment.js +28 -36
- package/lib/JavascriptMetaInfoPlugin.js +35 -4
- package/lib/LazyBarrel.js +3 -4
- package/lib/LibraryTemplatePlugin.js +10 -6
- package/lib/LoaderOptionsPlugin.js +7 -3
- package/lib/LoaderTargetPlugin.js +1 -1
- package/lib/MainTemplate.js +49 -42
- package/lib/ManifestPlugin.js +12 -11
- package/lib/Module.js +62 -33
- package/lib/ModuleFactory.js +3 -3
- package/lib/ModuleFilenameHelpers.js +22 -6
- package/lib/ModuleGraph.js +195 -21
- package/lib/ModuleGraphConnection.js +6 -13
- package/lib/ModuleInfoHeaderPlugin.js +8 -10
- package/lib/ModuleTemplate.js +62 -63
- package/lib/MultiCompiler.js +130 -64
- package/lib/MultiStats.js +40 -9
- package/lib/MultiWatching.js +3 -3
- package/lib/NoEmitOnErrorsPlugin.js +1 -1
- package/lib/NodeStuffPlugin.js +29 -19
- package/lib/NormalModule.js +221 -156
- package/lib/NormalModuleFactory.js +563 -112
- package/lib/NormalModuleReplacementPlugin.js +5 -8
- package/lib/NullFactory.js +6 -2
- package/lib/OptionsApply.js +7 -3
- package/lib/Parser.js +7 -3
- package/lib/PlatformPlugin.js +2 -2
- package/lib/PrefetchPlugin.js +1 -1
- package/lib/ProgressPlugin.js +16 -13
- package/lib/ProvidePlugin.js +3 -5
- package/lib/RawModule.js +25 -17
- package/lib/RecordIdsPlugin.js +3 -3
- package/lib/RequestShortener.js +1 -1
- package/lib/ResolverFactory.js +2 -2
- package/lib/RuntimeGlobals.js +22 -10
- package/lib/RuntimeModule.js +29 -19
- package/lib/RuntimePlugin.js +346 -256
- package/lib/RuntimeTemplate.js +2792 -352
- package/lib/SelfModuleFactory.js +7 -3
- package/lib/SourceMapDevToolModuleOptionsPlugin.js +6 -2
- package/lib/SourceMapDevToolPlugin.js +30 -20
- package/lib/Stats.js +3 -4
- package/lib/Template.js +55 -25
- package/lib/TemplatedPathPlugin.js +96 -14
- package/lib/UseStrictPlugin.js +4 -6
- package/lib/WarnCaseSensitiveModulesPlugin.js +4 -4
- package/lib/WarnDeprecatedOptionPlugin.js +1 -1
- package/lib/WarnNoModeSetPlugin.js +1 -1
- package/lib/WatchIgnorePlugin.js +8 -6
- package/lib/Watching.js +8 -8
- package/lib/WebpackIsIncludedPlugin.js +2 -4
- package/lib/WebpackOptionsApply.js +308 -18
- package/lib/WebpackOptionsDefaulter.js +6 -2
- package/lib/asset/AssetBytesGenerator.js +12 -10
- package/lib/asset/AssetBytesParser.js +2 -4
- package/lib/asset/AssetGenerator.js +188 -95
- package/lib/asset/AssetModule.js +7 -3
- package/lib/asset/AssetModulesPlugin.js +110 -38
- package/lib/asset/AssetParser.js +9 -7
- package/lib/asset/AssetSourceGenerator.js +60 -13
- package/lib/asset/AssetSourceParser.js +2 -4
- package/lib/asset/RawDataUrlModule.js +24 -16
- package/lib/asset/WebManifestGenerator.js +8 -10
- package/lib/asset/WebManifestParser.js +24 -10
- package/lib/async-modules/AsyncModuleHelpers.js +2 -2
- package/lib/async-modules/AwaitDependenciesInitFragment.js +2 -2
- package/lib/async-modules/InferAsyncModulesPlugin.js +2 -2
- package/lib/async-modules/isGeneratorLowered.js +4 -4
- package/lib/buildChunkGraph.js +36 -27
- package/lib/bun/BunTargetPlugin.js +1 -1
- package/lib/cache/AddBuildDependenciesPlugin.js +1 -1
- package/lib/cache/AddManagedPathsPlugin.js +1 -1
- package/lib/cache/IdleFileCachePlugin.js +2 -2
- package/lib/cache/MemoryCachePlugin.js +18 -10
- package/lib/cache/MemoryWithGcCachePlugin.js +34 -22
- package/lib/cache/PackFileCacheStrategy.js +289 -28
- package/lib/cache/ResolverCachePlugin.js +38 -18
- package/lib/cache/getLazyHashedEtag.js +1 -2
- package/lib/cache/mergeEtags.js +1 -1
- package/lib/cli.js +1 -3
- package/lib/config/browserslistTargetHandler.js +41 -5
- package/lib/config/defaults.js +282 -81
- package/lib/config/defineConfig.js +10 -2
- package/lib/config/getClaimedAssetTypes.js +65 -0
- package/lib/config/normalization.js +36 -16
- package/lib/config/target.js +46 -3
- package/lib/container/ContainerEntryDependency.js +1 -1
- package/lib/container/ContainerEntryModule.js +24 -15
- package/lib/container/ContainerEntryModuleFactory.js +7 -3
- package/lib/container/ContainerPlugin.js +9 -10
- package/lib/container/ContainerReferencePlugin.js +6 -2
- package/lib/container/FallbackDependency.js +1 -1
- package/lib/container/FallbackModule.js +24 -17
- package/lib/container/FallbackModuleFactory.js +7 -3
- package/lib/container/HoistContainerReferencesPlugin.js +53 -66
- package/lib/container/ModuleFederationPlugin.js +7 -18
- package/lib/container/RemoteModule.js +27 -19
- package/lib/container/RemoteRuntimeModule.js +10 -8
- package/lib/container/moduleFederationHooks.js +32 -0
- package/lib/css/CssGenerator.js +178 -44
- package/lib/css/CssInjectStyleRuntimeModule.js +7 -5
- package/lib/css/CssLoadingRuntimeModule.js +82 -36
- package/lib/css/CssModule.js +10 -7
- package/lib/css/CssModulesPlugin.js +197 -106
- package/lib/css/CssParser.js +1248 -618
- package/lib/css/CssServerStylesRuntimeModule.js +54 -0
- package/lib/css/cssMinify.js +168 -0
- package/lib/css/data.js +5324 -0
- package/lib/css/syntax.js +10396 -952
- package/lib/debug/ProfilingPlugin.js +14 -9
- package/lib/deno/DenoTargetPlugin.js +1 -1
- package/lib/dependencies/AMDDefineDependency.js +112 -87
- package/lib/dependencies/AMDDefineDependencyParserPlugin.js +30 -17
- package/lib/dependencies/AMDPlugin.js +9 -7
- package/lib/dependencies/AMDRequireArrayDependency.js +5 -5
- package/lib/dependencies/AMDRequireContextDependency.js +2 -2
- package/lib/dependencies/AMDRequireDependenciesBlock.js +1 -1
- package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +25 -14
- package/lib/dependencies/AMDRequireDependency.js +8 -7
- package/lib/dependencies/AMDRequireItemDependency.js +1 -1
- package/lib/dependencies/AMDRuntimeModules.js +21 -1
- package/lib/dependencies/BuildTimeConstDependency.js +102 -0
- package/lib/dependencies/CachedConstDependency.js +11 -8
- package/lib/dependencies/CommonJsDependencyHelpers.js +67 -46
- package/lib/dependencies/CommonJsExportRequireDependency.js +140 -45
- package/lib/dependencies/CommonJsExportsDependency.js +53 -49
- package/lib/dependencies/CommonJsExportsParserPlugin.js +207 -25
- package/lib/dependencies/CommonJsFullRequireDependency.js +140 -26
- package/lib/dependencies/CommonJsImportsParserPlugin.js +100 -48
- package/lib/dependencies/CommonJsObjectExportDependency.js +188 -0
- package/lib/dependencies/CommonJsPlugin.js +35 -6
- package/lib/dependencies/CommonJsRequireContextDependency.js +5 -6
- package/lib/dependencies/CommonJsRequireDependency.js +156 -27
- package/lib/dependencies/CommonJsSelfReferenceDependency.js +63 -38
- package/lib/dependencies/ConstDependency.js +8 -9
- package/lib/dependencies/ContextDependency.js +12 -8
- package/lib/dependencies/ContextDependencyHelpers.js +14 -9
- package/lib/dependencies/ContextDependencyTemplateAsId.js +4 -4
- package/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +4 -4
- package/lib/dependencies/ContextElementDependency.js +31 -12
- package/lib/dependencies/CreateRequireParserPlugin.js +12 -7
- package/lib/dependencies/CreateScriptUrlDependency.js +4 -4
- package/lib/dependencies/CssIcssExportDependency.js +56 -28
- package/lib/dependencies/CssIcssImportDependency.js +17 -13
- package/lib/dependencies/CssIcssSymbolDependency.js +9 -10
- package/lib/dependencies/CssImportDependency.js +18 -9
- package/lib/dependencies/CssUrlDependency.js +17 -13
- package/lib/dependencies/DllEntryDependency.js +1 -1
- package/lib/dependencies/DynamicExports.js +2 -2
- package/lib/dependencies/ExportBindingInitFragment.js +36 -9
- package/lib/dependencies/ExportsInfoDependency.js +7 -8
- package/lib/dependencies/ExternalModuleDependency.js +9 -5
- package/lib/dependencies/ExternalModuleInitFragment.js +2 -2
- package/lib/dependencies/ExternalModuleInitFragmentDependency.js +8 -5
- package/lib/dependencies/HarmonyAcceptDependency.js +5 -5
- package/lib/dependencies/HarmonyCompatibilityDependency.js +52 -17
- package/lib/dependencies/HarmonyDetectionParserPlugin.js +11 -7
- package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +15 -11
- package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +78 -12
- package/lib/dependencies/HarmonyExportExpressionDependency.js +23 -18
- package/lib/dependencies/HarmonyExportHeaderDependency.js +7 -7
- package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +159 -71
- package/lib/dependencies/HarmonyExportInitFragment.js +18 -6
- package/lib/dependencies/HarmonyExportSpecifierDependency.js +51 -14
- package/lib/dependencies/HarmonyExports.js +7 -4
- package/lib/dependencies/HarmonyImportDependency.js +28 -20
- package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +31 -24
- package/lib/dependencies/HarmonyImportGuard.js +21 -30
- package/lib/dependencies/HarmonyImportSideEffectDependency.js +38 -9
- package/lib/dependencies/HarmonyImportSpecifierDependency.js +106 -55
- package/lib/dependencies/HarmonyModulesPlugin.js +7 -3
- package/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +1 -3
- package/lib/dependencies/HtmlEntryDependency.js +37 -29
- package/lib/dependencies/HtmlInlineHtmlDependency.js +7 -8
- package/lib/dependencies/HtmlInlineScriptDependency.js +11 -8
- package/lib/dependencies/HtmlInlineStyleDependency.js +7 -10
- package/lib/dependencies/HtmlSourceDependency.js +22 -14
- package/lib/dependencies/ImportContextDependency.js +2 -2
- package/lib/dependencies/ImportDependency.js +24 -20
- package/lib/dependencies/ImportEagerDependency.js +6 -9
- package/lib/dependencies/ImportMetaContextDependency.js +2 -2
- package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +14 -13
- package/lib/dependencies/ImportMetaContextPlugin.js +7 -3
- package/lib/dependencies/ImportMetaGlobDependency.js +2 -2
- package/lib/dependencies/ImportMetaGlobDependencyParserPlugin.js +2 -3
- package/lib/dependencies/ImportMetaGlobHelpers.js +19 -22
- package/lib/dependencies/ImportMetaHotAcceptDependency.js +1 -1
- package/lib/dependencies/ImportMetaHotDeclineDependency.js +1 -1
- package/lib/dependencies/ImportMetaPlugin.js +154 -71
- package/lib/dependencies/ImportMetaResolveDependency.js +3 -4
- package/lib/dependencies/ImportParserPlugin.js +49 -35
- package/lib/dependencies/ImportPhase.js +12 -5
- package/lib/dependencies/ImportPlugin.js +7 -3
- package/lib/dependencies/ImportWeakDependency.js +6 -9
- package/lib/dependencies/JsonExportsDependency.js +11 -7
- package/lib/dependencies/LoaderDependency.js +2 -2
- package/lib/dependencies/LoaderImportDependency.js +2 -2
- package/lib/dependencies/LoaderPlugin.js +11 -7
- package/lib/dependencies/LocalModuleDependency.js +5 -5
- package/lib/dependencies/LocalModulesHelpers.js +1 -1
- package/lib/dependencies/ModuleDecoratorDependency.js +6 -7
- package/lib/dependencies/ModuleDependency.js +9 -6
- package/lib/dependencies/ModuleDependencyTemplateAsId.js +4 -4
- package/lib/dependencies/ModuleDependencyTemplateAsRequireId.js +3 -3
- package/lib/dependencies/ModuleHotAcceptDependency.js +1 -1
- package/lib/dependencies/ModuleHotDeclineDependency.js +1 -1
- package/lib/dependencies/ModuleInitFragmentDependency.js +24 -10
- package/lib/dependencies/NullDependency.js +3 -3
- package/lib/dependencies/ProvidedDependency.js +14 -10
- package/lib/dependencies/PureExpressionDependency.js +9 -10
- package/lib/dependencies/RequireContextDependency.js +2 -2
- package/lib/dependencies/RequireContextDependencyParserPlugin.js +2 -4
- package/lib/dependencies/RequireContextPlugin.js +8 -4
- package/lib/dependencies/RequireEnsureDependenciesBlock.js +2 -2
- package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +5 -8
- package/lib/dependencies/RequireEnsureDependency.js +8 -7
- package/lib/dependencies/RequireEnsurePlugin.js +7 -3
- package/lib/dependencies/RequireHeaderDependency.js +51 -12
- package/lib/dependencies/RequireIncludeDependency.js +6 -6
- package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +2 -3
- package/lib/dependencies/RequireIncludePlugin.js +7 -3
- package/lib/dependencies/RequireJsStuffPlugin.js +7 -3
- package/lib/dependencies/RequireResolveContextDependency.js +2 -2
- package/lib/dependencies/RequireResolveDependency.js +4 -4
- package/lib/dependencies/RequireResolveHeaderDependency.js +4 -4
- package/lib/dependencies/RuntimeRequirementsDependency.js +5 -6
- package/lib/dependencies/StaticExportsDependency.js +2 -2
- package/lib/dependencies/SystemPlugin.js +10 -6
- package/lib/dependencies/SystemRuntimeModule.js +10 -0
- package/lib/dependencies/TopLevelAwaitDependency.js +11 -7
- package/lib/dependencies/URLContextDependency.js +2 -2
- package/lib/dependencies/URLDependency.js +110 -64
- package/lib/dependencies/URLPlugin.js +7 -3
- package/lib/dependencies/UnsupportedDependency.js +4 -4
- package/lib/dependencies/WebAssemblyExportImportedDependency.js +3 -4
- package/lib/dependencies/WebAssemblyImportDependency.js +5 -5
- package/lib/dependencies/WebpackIsIncludedDependency.js +6 -6
- package/lib/dependencies/WorkerAndWorkletPlugin.js +46 -28
- package/lib/dependencies/WorkerDependency.js +28 -22
- package/lib/dependencies/WorkletDependency.js +15 -14
- package/lib/dependencies/getFunctionExpression.js +8 -4
- package/lib/dependencies/processExportInfo.js +5 -5
- package/lib/dll/DelegatedModule.js +34 -22
- package/lib/dll/DelegatedModuleFactoryPlugin.js +15 -7
- package/lib/dll/DelegatedPlugin.js +2 -2
- package/lib/dll/DllEntryPlugin.js +2 -2
- package/lib/dll/DllModule.js +22 -15
- package/lib/dll/DllModuleFactory.js +7 -3
- package/lib/dll/DllPlugin.js +7 -5
- package/lib/dll/DllReferencePlugin.js +10 -7
- package/lib/dll/LibManifestPlugin.js +5 -5
- package/lib/electron/ElectronTargetPlugin.js +53 -49
- package/lib/errors/AsyncChunkWaterfallWarning.js +36 -0
- package/lib/errors/AsyncDependencyToInitialChunkError.js +2 -2
- package/lib/errors/BroadContextsWarning.js +43 -0
- package/lib/errors/BuildCycleError.js +1 -1
- package/lib/errors/CacheEffectivenessWarning.js +55 -0
- package/lib/errors/ChunkRenderError.js +1 -1
- package/lib/errors/CircularDependenciesWarning.js +38 -0
- package/lib/errors/CodeGenerationError.js +1 -1
- package/lib/errors/CommentCompilationWarning.js +1 -1
- package/lib/errors/ConflictingResourceHintsWarning.js +35 -0
- package/lib/errors/DuplicateModulesWarning.js +45 -0
- package/lib/errors/DynamicExportsWarning.js +30 -0
- package/lib/errors/EmbeddedSourceMapsWarning.js +25 -0
- package/lib/errors/EntrypointOverlapWarning.js +45 -0
- package/lib/errors/EnvironmentNotSupportAsyncWarning.js +2 -2
- package/lib/errors/EvalUsageWarning.js +28 -0
- package/lib/errors/HookWebpackError.js +5 -5
- package/lib/errors/HotspotsWarning.js +57 -0
- package/lib/errors/IgnoreErrorModuleFactory.js +7 -3
- package/lib/errors/InlinedAssetsWarning.js +36 -0
- package/lib/errors/InvalidDependenciesModuleWarning.js +1 -1
- package/lib/errors/LargeModulesWarning.js +45 -0
- package/lib/errors/LegacyJavascriptWarning.js +48 -0
- package/lib/errors/MissingSideEffectsWarning.js +36 -0
- package/lib/errors/MixedExportsWarning.js +41 -0
- package/lib/errors/ModuleDependencyError.js +13 -16
- package/lib/errors/ModuleDependencyWarning.js +5 -15
- package/lib/errors/ModuleHashingError.js +1 -1
- package/lib/errors/ModuleNotFoundError.js +2 -2
- package/lib/errors/ModuleParseError.js +1 -2
- package/lib/errors/ModuleRestoreError.js +1 -1
- package/lib/errors/ModuleStoreError.js +1 -1
- package/lib/errors/NodeStuffInWebError.js +1 -1
- package/lib/errors/OsDependentRuleWarning.js +31 -0
- package/lib/errors/PureAnnotationsWarning.js +36 -0
- package/lib/errors/RedundantDynamicImportWarning.js +31 -0
- package/lib/errors/ScopeHoistingBailoutsWarning.js +41 -0
- package/lib/errors/SplitChunksCappedWarning.js +41 -0
- package/lib/errors/TinyChunksWarning.js +40 -0
- package/lib/errors/TopLevelThisWarning.js +34 -0
- package/lib/errors/UnsplitVendorsWarning.js +42 -0
- package/lib/errors/UnsupportedFeatureWarning.js +1 -1
- package/lib/errors/UnusedAliasesWarning.js +29 -0
- package/lib/errors/UnusedDefinesWarning.js +29 -0
- package/lib/errors/UnusedExternalsWarning.js +29 -0
- package/lib/errors/UnusedReexportsWarning.js +42 -0
- package/lib/errors/UnusedRuleWarning.js +29 -0
- package/lib/errors/WebpackError.js +9 -5
- package/lib/errors/deriveStackFromNestedError.js +90 -0
- package/lib/esm/ExportWebpackRequireRuntimeModule.js +2 -0
- package/lib/esm/ModuleChunkFormatPlugin.js +37 -19
- package/lib/esm/ModuleChunkLoadingPlugin.js +89 -51
- package/lib/esm/ModuleChunkLoadingRuntimeModule.js +170 -71
- package/lib/hmr/HotModuleReplacement.runtime.js +24 -5
- package/lib/hmr/HotModuleReplacementRuntimeModule.js +1 -1
- package/lib/hmr/LazyCompilationPlugin.js +45 -24
- package/lib/hmr/lazyCompilationBackend.js +28 -10
- package/lib/hmr/parserHooks.js +56 -0
- package/lib/html/HtmlGenerator.js +299 -79
- package/lib/html/HtmlModule.js +7 -3
- package/lib/html/HtmlModulesPlugin.js +312 -174
- package/lib/html/HtmlParser.js +31 -86
- package/lib/html/data.js +1928 -0
- package/lib/html/htmlMinify.js +288 -0
- package/lib/html/syntax.js +7819 -3331
- package/lib/ids/ChunkModuleIdRangePlugin.js +3 -3
- package/lib/ids/DeterministicChunkIdsPlugin.js +1 -1
- package/lib/ids/DeterministicModuleIdsPlugin.js +2 -2
- package/lib/ids/HashedModuleIdsPlugin.js +6 -2
- package/lib/ids/IdHelpers.js +31 -18
- package/lib/ids/NamedChunkIdsPlugin.js +1 -1
- package/lib/ids/NamedModuleIdsPlugin.js +1 -1
- package/lib/ids/NaturalChunkIdsPlugin.js +2 -2
- package/lib/ids/NaturalModuleIdsPlugin.js +1 -1
- package/lib/ids/OccurrenceChunkIdsPlugin.js +7 -3
- package/lib/ids/OccurrenceModuleIdsPlugin.js +7 -3
- package/lib/ids/SyncModuleIdsPlugin.js +4 -4
- package/lib/index.js +10 -0
- package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +3 -3
- package/lib/javascript/BasicEvaluatedExpression.js +18 -14
- package/lib/javascript/ChunkFormatHelpers.js +6 -6
- package/lib/javascript/ChunkHelpers.js +1 -1
- package/lib/javascript/CommonJsChunkFormatPlugin.js +11 -5
- package/lib/javascript/EnableChunkLoadingPlugin.js +2 -2
- package/lib/javascript/JavascriptGenerator.js +65 -165
- package/lib/javascript/JavascriptModule.js +9 -3
- package/lib/javascript/JavascriptModulesPlugin.js +181 -162
- package/lib/javascript/JavascriptParser.js +291 -112
- package/lib/javascript/JavascriptParserHelpers.js +10 -7
- package/lib/javascript/ScopeAnalyzer.js +1094 -0
- package/lib/javascript/StartupHelpers.js +55 -9
- package/lib/javascript/syntax.js +3403 -300
- package/lib/json/JsonData.js +8 -4
- package/lib/json/JsonGenerator.js +38 -16
- package/lib/json/JsonModule.js +7 -3
- package/lib/json/JsonModulesPlugin.js +1 -1
- package/lib/json/JsonParser.js +5 -6
- package/lib/library/AbstractLibraryPlugin.js +20 -14
- package/lib/library/AmdLibraryPlugin.js +11 -7
- package/lib/library/AssignLibraryPlugin.js +19 -13
- package/lib/library/EnableLibraryPlugin.js +2 -2
- package/lib/library/ExportPropertyLibraryPlugin.js +15 -8
- package/lib/library/JsonpLibraryPlugin.js +11 -7
- package/lib/library/ModuleLibraryPlugin.js +256 -64
- package/lib/library/SystemLibraryPlugin.js +12 -8
- package/lib/library/UmdLibraryPlugin.js +62 -25
- package/lib/loaders/LoaderRunner.js +14 -1
- package/lib/loaders/loadLoader.js +8 -4
- package/lib/logging/createConsoleLogger.js +7 -4
- package/lib/node/CommonJsChunkLoadingPlugin.js +36 -22
- package/lib/node/NodeEnvironmentPlugin.js +17 -3
- package/lib/node/NodeSourcePlugin.js +1 -1
- package/lib/node/NodeTargetPlugin.js +4 -3
- package/lib/node/NodeTemplatePlugin.js +1 -1
- package/lib/node/NodeWatchFileSystem.js +70 -9
- package/lib/node/ReadFileChunkLoadingRuntimeModule.js +35 -38
- package/lib/node/ReadFileCompileAsyncWasmPlugin.js +81 -20
- package/lib/node/ReadFileCompileWasmPlugin.js +37 -17
- package/lib/node/RequireChunkLoadingRuntimeModule.js +35 -38
- package/lib/node/nodeConsole.js +7 -3
- package/lib/optimize/AggressiveMergingPlugin.js +21 -17
- package/lib/optimize/AggressiveSplittingPlugin.js +9 -6
- package/lib/optimize/ConcatenatedModule.js +996 -477
- package/lib/optimize/ConstExportsPlugin.js +11 -7
- package/lib/optimize/EnsureChunkConditionsPlugin.js +3 -3
- package/lib/optimize/FlagIncludedChunksPlugin.js +3 -4
- package/lib/optimize/InlineExports.js +9 -5
- package/lib/optimize/InnerGraph.js +28 -12
- package/lib/optimize/InnerGraphPlugin.js +23 -18
- package/lib/optimize/LimitChunkCountPlugin.js +7 -3
- package/lib/optimize/MangleExportsPlugin.js +7 -8
- package/lib/optimize/MergeDuplicateChunksPlugin.js +7 -3
- package/lib/optimize/MinChunkSizePlugin.js +7 -3
- package/lib/optimize/ModuleConcatenationPlugin.js +124 -59
- package/lib/optimize/RealContentHashPlugin.js +20 -13
- package/lib/optimize/RemoveEmptyChunksPlugin.js +2 -2
- package/lib/optimize/RemoveParentModulesPlugin.js +4 -4
- package/lib/optimize/RuntimeChunkPlugin.js +2 -2
- package/lib/optimize/SideEffectsFlagPlugin.js +262 -39
- package/lib/optimize/SplitChunksPlugin.js +232 -68
- package/lib/performance/AssetsOverSizeLimitWarning.js +10 -2
- package/lib/performance/AsyncChunkWaterfallsPlugin.js +136 -0
- package/lib/performance/BroadContextsPlugin.js +142 -0
- package/lib/performance/CacheEffectivenessPlugin.js +125 -0
- package/lib/performance/ConflictingResourceHintsPlugin.js +99 -0
- package/lib/performance/DuplicateModulesPlugin.js +93 -0
- package/lib/performance/DuplicatePackagesPlugin.js +119 -0
- package/lib/performance/DuplicatePackagesWarning.js +84 -0
- package/lib/performance/DynamicExportsPlugin.js +120 -0
- package/lib/performance/EmbeddedSourceMapsPlugin.js +71 -0
- package/lib/performance/EntrypointOverlapPlugin.js +122 -0
- package/lib/performance/EntrypointsOverSizeLimitWarning.js +1 -1
- package/lib/performance/EvalUsagePlugin.js +115 -0
- package/lib/performance/HotspotsPlugin.js +296 -0
- package/lib/performance/InlinedAssetsPlugin.js +99 -0
- package/lib/performance/LargeModulesPlugin.js +126 -0
- package/lib/performance/LegacyJavascriptPlugin.js +139 -0
- package/lib/performance/MissingSideEffectsPlugin.js +138 -0
- package/lib/performance/MixedExportsPlugin.js +136 -0
- package/lib/performance/OsDependentRuleWarningPlugin.js +178 -0
- package/lib/performance/PureAnnotationsPlugin.js +219 -0
- package/lib/performance/RedundantDynamicImportsPlugin.js +225 -0
- package/lib/performance/RuntimeInLargeChunkWarning.js +27 -0
- package/lib/performance/ScopeHoistingBailoutsPlugin.js +164 -0
- package/lib/performance/SizeLimitsPlugin.js +139 -7
- package/lib/performance/SplitChunksCappedPlugin.js +99 -0
- package/lib/performance/TinyChunksPlugin.js +128 -0
- package/lib/performance/TopLevelThisPlugin.js +208 -0
- package/lib/performance/UnsplitVendorsPlugin.js +112 -0
- package/lib/performance/UnusedAliasesPlugin.js +253 -0
- package/lib/performance/UnusedDefinesPlugin.js +87 -0
- package/lib/performance/UnusedExternalsPlugin.js +110 -0
- package/lib/performance/UnusedReexportsPlugin.js +159 -0
- package/lib/performance/UnusedRuleWarningPlugin.js +105 -0
- package/lib/performance/getModuleSize.js +22 -0
- package/lib/performance/getSourceModules.js +22 -0
- package/lib/performance/hasOnlyUnusedExports.js +40 -0
- package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +24 -10
- package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +63 -46
- package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +2 -3
- package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +2 -2
- package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +2 -2
- package/lib/prefetch/ResourceHintPlugin.js +377 -136
- package/lib/prefetch/ResourceHintRuntimeModule.js +1 -21
- package/lib/prefetch/StartupAssetHintRuntimeModule.js +10 -133
- package/lib/prefetch/parseResourceHintOptions.js +31 -4
- package/lib/rules/BasicEffectRulePlugin.js +2 -2
- package/lib/rules/BasicMatcherRulePlugin.js +8 -4
- package/lib/rules/GlobMatcherRulePlugin.js +68 -0
- package/lib/rules/ObjectMatcherRulePlugin.js +12 -5
- package/lib/rules/RuleSetCompiler.js +146 -12
- package/lib/rules/UseEffectRulePlugin.js +18 -11
- package/lib/runtime/AsyncModuleGeneratorRuntimeModule.js +11 -1
- package/lib/runtime/AsyncModuleRuntimeModule.js +1 -1
- package/lib/runtime/AutoPublicPathRuntimeModule.js +15 -20
- package/lib/runtime/BaseUriRuntimeModule.js +33 -7
- package/lib/runtime/ChunkNameRuntimeModule.js +10 -0
- package/lib/runtime/CompatGetDefaultExportRuntimeModule.js +11 -1
- package/lib/runtime/CompatRuntimeModule.js +5 -3
- package/lib/runtime/ConcatenationWrapRuntimeModule.js +90 -0
- package/lib/runtime/ConstructRequireRuntimeModule.js +52 -0
- package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +8 -6
- package/lib/runtime/CreateScriptRuntimeModule.js +11 -1
- package/lib/runtime/CreateScriptUrlRuntimeModule.js +11 -1
- package/lib/runtime/DefinePropertyGettersRuntimeModule.js +56 -38
- package/lib/runtime/EnsureChunkRuntimeModule.js +18 -2
- package/lib/runtime/GetChunkFilenameRuntimeModule.js +62 -37
- package/lib/runtime/GetFullHashRuntimeModule.js +12 -2
- package/lib/runtime/GetMainFilenameRuntimeModule.js +12 -2
- package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +2 -2
- package/lib/runtime/GetWorkletBootstrapRuntimeModule.js +16 -3
- package/lib/runtime/GlobalRuntimeModule.js +18 -0
- package/lib/runtime/HasOwnPropertyRuntimeModule.js +12 -2
- package/lib/runtime/LoadScriptRuntimeModule.js +2 -2
- package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +23 -6
- package/lib/runtime/MakeNamespaceObjectRuntimeModule.js +22 -6
- package/lib/runtime/NonceRuntimeModule.js +10 -0
- package/lib/runtime/OnChunksLoadedRuntimeModule.js +5 -3
- package/lib/runtime/PublicPathRuntimeModule.js +12 -2
- package/lib/runtime/RelativeUrlRuntimeModule.js +11 -1
- package/lib/runtime/RuntimeIdRuntimeModule.js +12 -2
- package/lib/runtime/SetAnonymousDefaultNameRuntimeModule.js +11 -1
- package/lib/runtime/StartupChunkDependenciesPlugin.js +18 -9
- package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +3 -3
- package/lib/runtime/StartupEntrypointRuntimeModule.js +21 -4
- package/lib/runtime/SystemContextRuntimeModule.js +10 -0
- package/lib/runtime/ToBinaryRuntimeModule.js +1 -1
- package/lib/runtime/WorkerRuntimeModule.js +11 -1
- package/lib/runtime/baseUri.js +63 -0
- package/lib/schemes/DataUriPlugin.js +1 -1
- package/lib/schemes/FileUriPlugin.js +1 -1
- package/lib/schemes/HttpUriPlugin.js +24 -15
- package/lib/schemes/VirtualUrlPlugin.js +13 -7
- package/lib/serialization/AggregateErrorSerializer.js +1 -1
- package/lib/serialization/BinaryMiddleware.js +274 -942
- package/lib/serialization/ErrorObjectSerializer.js +1 -1
- package/lib/serialization/FileMiddleware.js +305 -66
- package/lib/serialization/ObjectMiddleware.js +139 -114
- package/lib/serialization/PlainObjectSerializer.js +19 -16
- package/lib/sharing/ConsumeSharedModule.js +30 -21
- package/lib/sharing/ConsumeSharedPlugin.js +18 -10
- package/lib/sharing/ConsumeSharedRuntimeModule.js +6 -9
- package/lib/sharing/ProvideSharedModule.js +25 -16
- package/lib/sharing/ProvideSharedModuleFactory.js +7 -3
- package/lib/sharing/ProvideSharedPlugin.js +8 -4
- package/lib/sharing/SharePlugin.js +17 -5
- package/lib/sharing/ShareRuntimeModule.js +4 -4
- package/lib/sharing/resolveMatchedConfigs.js +9 -6
- package/lib/sharing/utils.js +1 -3
- package/lib/stats/DefaultStatsFactoryPlugin.js +253 -226
- package/lib/stats/DefaultStatsPresetPlugin.js +17 -8
- package/lib/stats/DefaultStatsPrinterPlugin.js +60 -192
- package/lib/stats/StatsFactory.js +56 -35
- package/lib/stats/StatsPrinter.js +16 -12
- package/lib/typescript/TypeScriptPlugin.js +12 -14
- package/lib/url/URLParserPlugin.js +26 -13
- package/lib/util/AsyncQueue.js +4 -3
- package/lib/util/Hash.js +5 -1
- package/lib/util/LazySet.js +35 -22
- package/lib/util/LocConverter.js +36 -13
- package/lib/util/SourceProcessor.js +1050 -24
- package/lib/util/StringXor.js +1 -1
- package/lib/util/chainedImports.js +9 -5
- package/lib/util/cleverMerge.js +1 -1
- package/lib/util/comparators.js +45 -14
- package/lib/util/concatenate.js +203 -77
- package/lib/util/conventions.js +5 -1
- package/lib/util/createHash.js +2 -2
- package/lib/util/createHooksRegistry.js +8 -10
- package/lib/util/dataURL.js +225 -1
- package/lib/util/extractSourceMap.js +4 -3
- package/lib/util/findCaseMismatch.js +139 -0
- package/lib/util/formatLocation.js +1 -2
- package/lib/util/fs.js +22 -5
- package/lib/util/globUtils.js +298 -24
- package/lib/util/hash/BatchedHash.js +5 -1
- package/lib/util/hash/BulkUpdateHash.js +5 -1
- package/lib/util/hash/DebugHash.js +5 -1
- package/lib/util/hash/hash-digest.js +6 -2
- package/lib/util/identifier.js +25 -1
- package/lib/util/implicitTypeLoaderFallback.js +1 -1
- package/lib/util/internalSerializables.js +6 -0
- package/lib/util/lazyModule.js +56 -0
- package/lib/util/makeSerializable.js +7 -3
- package/lib/util/matchAlias.js +25 -0
- package/lib/util/mimeTypes.js +11 -5
- package/lib/util/nonNumericOnlyHash.js +4 -3
- package/lib/util/parseJson.js +5 -3
- package/lib/util/preloadModuleType.js +32 -0
- package/lib/util/registerExternalSerializer.js +7 -5
- package/lib/util/runtime.js +2 -2
- package/lib/util/semver.js +1 -1
- package/lib/util/serialization.js +28 -28
- package/lib/util/source.js +2 -2
- package/lib/util/traverseDestructuringAssignmentProperties.js +6 -2
- package/lib/wasm/EnableWasmLoadingPlugin.js +10 -8
- package/lib/wasm/wasmModuleFilename.js +54 -0
- package/lib/wasm-async/AsyncWasmCompileRuntimeModule.js +41 -21
- package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +43 -21
- package/lib/wasm-async/AsyncWasmModule.js +3 -3
- package/lib/wasm-async/AsyncWebAssemblyGenerator.js +4 -5
- package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +57 -17
- package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +34 -18
- package/lib/wasm-async/AsyncWebAssemblyParser.js +9 -8
- package/lib/wasm-async/UniversalCompileAsyncWasmPlugin.js +34 -8
- package/lib/wasm-sync/SyncWasmModule.js +2 -2
- package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +18 -13
- package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +4 -5
- package/lib/wasm-sync/WebAssemblyGenerator.js +18 -17
- package/lib/wasm-sync/WebAssemblyInInitialChunkError.js +4 -4
- package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +7 -7
- package/lib/wasm-sync/WebAssemblyModulesPlugin.js +24 -11
- package/lib/wasm-sync/WebAssemblyParser.js +4 -6
- package/lib/wasm-sync/WebAssemblyUtils.js +2 -2
- package/lib/web/FetchCompileAsyncWasmPlugin.js +101 -19
- package/lib/web/FetchCompileWasmPlugin.js +46 -16
- package/lib/web/JsonpChunkLoadingPlugin.js +47 -23
- package/lib/web/JsonpChunkLoadingRuntimeModule.js +50 -20
- package/lib/web/JsonpTemplatePlugin.js +2 -2
- package/lib/webpack.js +22 -11
- package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +60 -26
- package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +30 -32
- package/lib/webworker/WebWorkerTemplatePlugin.js +1 -1
- package/module.d.ts +1 -0
- package/package.json +37 -30
- package/schemas/WebpackOptions.check.js +1 -1
- package/schemas/WebpackOptions.json +780 -91
- package/schemas/plugins/HtmlParserOptions.check.js +1 -1
- package/schemas/plugins/container/ContainerPlugin.check.js +1 -1
- package/schemas/plugins/container/ContainerPlugin.json +10 -0
- package/schemas/plugins/container/ModuleFederationPlugin.check.js +1 -1
- package/schemas/plugins/container/ModuleFederationPlugin.json +10 -0
- package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.js +1 -1
- package/schemas/plugins/css/CssModuleParserOptions.check.js +1 -1
- package/schemas/plugins/css/CssParserOptions.check.js +1 -1
- package/types.d.ts +4013 -738
- package/lib/runtime/CommonJsWrapRuntimeModule.js +0 -37
|
@@ -16,20 +16,28 @@ const ImportDependency = require("./dependencies/ImportDependency");
|
|
|
16
16
|
const { coreModules } = require("./node/nodeBuiltins");
|
|
17
17
|
const { cachedSetProperty, resolveByProperty } = require("./util/cleverMerge");
|
|
18
18
|
|
|
19
|
-
/** @
|
|
20
|
-
/**
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
/** @
|
|
19
|
+
/** @import { ResolveContext } from "enhanced-resolve" */
|
|
20
|
+
/**
|
|
21
|
+
* @import {
|
|
22
|
+
* ResolveOptions,
|
|
23
|
+
* ExternalsType,
|
|
24
|
+
* ExternalItem,
|
|
25
|
+
* ExternalItemValue,
|
|
26
|
+
* ExternalItemObjectKnown,
|
|
27
|
+
* ExternalItemObjectUnknown,
|
|
28
|
+
* ExternalItemInterop,
|
|
29
|
+
* Externals
|
|
30
|
+
* } from "../declarations/WebpackOptions"
|
|
31
|
+
*/
|
|
32
|
+
/** @import Dependency from "./Dependency" */
|
|
33
|
+
/** @import { DependencyMeta, ExternalModuleRequest } from "./ExternalModule" */
|
|
34
|
+
/**
|
|
35
|
+
* @import {
|
|
36
|
+
* IssuerLayer,
|
|
37
|
+
* ModuleFactoryCreateDataContextInfo
|
|
38
|
+
* } from "./ModuleFactory"
|
|
39
|
+
*/
|
|
40
|
+
/** @import NormalModuleFactory from "./NormalModuleFactory" */
|
|
33
41
|
|
|
34
42
|
/** @typedef {((context: string, request: string, callback: (err?: Error | null, result?: string | false, resolveRequest?: import("enhanced-resolve").ResolveRequest) => void) => void)} ExternalItemFunctionDataGetResolveCallbackResult */
|
|
35
43
|
/** @typedef {((context: string, request: string) => Promise<string>)} ExternalItemFunctionDataGetResolveResult */
|
|
@@ -43,6 +51,7 @@ const { cachedSetProperty, resolveByProperty } = require("./util/cleverMerge");
|
|
|
43
51
|
* @property {string} dependencyType the category of the referencing dependency
|
|
44
52
|
* @property {ExternalItemFunctionDataGetResolve} getResolve get a resolve function with the current resolver options
|
|
45
53
|
* @property {string} request the request as written by the user in the require/import expression/statement
|
|
54
|
+
* @property {string} originalRequest same as `request`, except for an element of a context module (a request containing an expression), where it is the request as written by the user instead of the one relative to the resolved context directory
|
|
46
55
|
*/
|
|
47
56
|
|
|
48
57
|
/** @typedef {((data: ExternalItemFunctionData, callback: (err?: (Error | null), result?: ExternalItemValue) => void) => void)} ExternalItemFunctionCallback */
|
|
@@ -115,7 +124,12 @@ const resolveLayer = (obj, layer) => {
|
|
|
115
124
|
return result;
|
|
116
125
|
};
|
|
117
126
|
|
|
118
|
-
|
|
127
|
+
// the keys `ExternalItemValueWithOptions` allows, mirroring the schema
|
|
128
|
+
const OPTIONS_FORM_KEYS = new Set(["external", "sideEffects"]);
|
|
129
|
+
|
|
130
|
+
/** @typedef {string | string[] | boolean | Record<string, string | string[]>} ExternalTargetValue */
|
|
131
|
+
/** @typedef {{ external: ExternalTargetValue, sideEffects?: boolean }} ExternalValueWithOptions */
|
|
132
|
+
/** @typedef {ExternalTargetValue | ExternalValueWithOptions} ExternalValue */
|
|
119
133
|
|
|
120
134
|
const PLUGIN_NAME = "ExternalModuleFactoryPlugin";
|
|
121
135
|
|
|
@@ -145,6 +159,14 @@ class ExternalModuleFactoryPlugin {
|
|
|
145
159
|
const contextInfo = data.contextInfo;
|
|
146
160
|
const dependency = data.dependencies[0];
|
|
147
161
|
const dependencyType = data.dependencyType;
|
|
162
|
+
const request = dependency.request;
|
|
163
|
+
// a context element's request is relative to the resolved directory
|
|
164
|
+
// (`./file.mjs`), externals are written against what the user wrote
|
|
165
|
+
const originalRequest =
|
|
166
|
+
dependency instanceof ContextElementDependency
|
|
167
|
+
? dependency.originalRequest
|
|
168
|
+
: request;
|
|
169
|
+
const hasOriginalRequest = originalRequest !== request;
|
|
148
170
|
|
|
149
171
|
/** @typedef {(err?: Error | null, externalModule?: ExternalModule) => void} HandleExternalCallback */
|
|
150
172
|
|
|
@@ -156,12 +178,33 @@ class ExternalModuleFactoryPlugin {
|
|
|
156
178
|
* @returns {void}
|
|
157
179
|
*/
|
|
158
180
|
const handleExternal = (value, type, callback) => {
|
|
159
|
-
|
|
181
|
+
/** @type {boolean | undefined} */
|
|
182
|
+
let sideEffects;
|
|
183
|
+
/** @type {ExternalTargetValue} */
|
|
184
|
+
let target;
|
|
185
|
+
// the options form carries the target under `external`; a target
|
|
186
|
+
// map holding an `external` type key keeps its own meaning
|
|
187
|
+
if (
|
|
188
|
+
typeof value === "object" &&
|
|
189
|
+
value !== null &&
|
|
190
|
+
!Array.isArray(value) &&
|
|
191
|
+
Object.prototype.hasOwnProperty.call(value, "external") &&
|
|
192
|
+
Object.keys(value).every((key) => OPTIONS_FORM_KEYS.has(key))
|
|
193
|
+
) {
|
|
194
|
+
const withOptions =
|
|
195
|
+
/** @type {ExternalValueWithOptions} */
|
|
196
|
+
(value);
|
|
197
|
+
sideEffects = withOptions.sideEffects;
|
|
198
|
+
target = withOptions.external;
|
|
199
|
+
} else {
|
|
200
|
+
target = /** @type {ExternalTargetValue} */ (value);
|
|
201
|
+
}
|
|
202
|
+
if (target === false) {
|
|
160
203
|
// Not externals, fallback to original factory
|
|
161
204
|
return callback();
|
|
162
205
|
}
|
|
163
|
-
/** @type {
|
|
164
|
-
let externalConfig =
|
|
206
|
+
/** @type {ExternalModuleRequest} */
|
|
207
|
+
let externalConfig = target === true ? originalRequest : target;
|
|
165
208
|
// `interop` is a reserved key on the object form, not a target;
|
|
166
209
|
// pull it out so the rest stays a pure externalsType->request map.
|
|
167
210
|
/** @type {ExternalItemInterop | undefined} */
|
|
@@ -244,8 +287,12 @@ class ExternalModuleFactoryPlugin {
|
|
|
244
287
|
};
|
|
245
288
|
}
|
|
246
289
|
|
|
290
|
+
// a css `url()` reads the url out of the external: no js wrapper
|
|
291
|
+
// TODO webpack 6 drop "css-url" once the alias is removed
|
|
247
292
|
if (
|
|
248
|
-
resolvedType === "asset"
|
|
293
|
+
(resolvedType === "asset" ||
|
|
294
|
+
resolvedType === ASSET_URL_TYPE ||
|
|
295
|
+
resolvedType === "css-url") &&
|
|
249
296
|
dependency instanceof CssUrlDependency
|
|
250
297
|
) {
|
|
251
298
|
dependencyMeta = { sourceType: ASSET_URL_TYPE };
|
|
@@ -256,9 +303,10 @@ class ExternalModuleFactoryPlugin {
|
|
|
256
303
|
new ExternalModule(
|
|
257
304
|
externalConfig,
|
|
258
305
|
resolvedType,
|
|
259
|
-
|
|
306
|
+
originalRequest,
|
|
260
307
|
dependencyMeta,
|
|
261
|
-
interop
|
|
308
|
+
interop,
|
|
309
|
+
sideEffects
|
|
262
310
|
)
|
|
263
311
|
);
|
|
264
312
|
};
|
|
@@ -272,10 +320,11 @@ class ExternalModuleFactoryPlugin {
|
|
|
272
320
|
const handleExternals = (externals, callback) => {
|
|
273
321
|
if (typeof externals === "string") {
|
|
274
322
|
if (
|
|
275
|
-
externals ===
|
|
276
|
-
externals ===
|
|
323
|
+
externals === request ||
|
|
324
|
+
(hasOriginalRequest && externals === originalRequest) ||
|
|
325
|
+
externals === getAlternateCoreModuleRequest(request)
|
|
277
326
|
) {
|
|
278
|
-
return handleExternal(
|
|
327
|
+
return handleExternal(originalRequest, undefined, callback);
|
|
279
328
|
}
|
|
280
329
|
} else if (Array.isArray(externals)) {
|
|
281
330
|
let i = 0;
|
|
@@ -311,8 +360,11 @@ class ExternalModuleFactoryPlugin {
|
|
|
311
360
|
next();
|
|
312
361
|
return;
|
|
313
362
|
} else if (externals instanceof RegExp) {
|
|
314
|
-
if (
|
|
315
|
-
|
|
363
|
+
if (
|
|
364
|
+
externals.test(request) ||
|
|
365
|
+
(hasOriginalRequest && externals.test(originalRequest))
|
|
366
|
+
) {
|
|
367
|
+
return handleExternal(originalRequest, undefined, callback);
|
|
316
368
|
}
|
|
317
369
|
} else if (typeof externals === "function") {
|
|
318
370
|
/**
|
|
@@ -332,17 +384,13 @@ class ExternalModuleFactoryPlugin {
|
|
|
332
384
|
};
|
|
333
385
|
if (externals.length === 3) {
|
|
334
386
|
// TODO webpack 6 remove this
|
|
335
|
-
callDeprecatedExternals(
|
|
336
|
-
externals,
|
|
337
|
-
context,
|
|
338
|
-
dependency.request,
|
|
339
|
-
cb
|
|
340
|
-
);
|
|
387
|
+
callDeprecatedExternals(externals, context, request, cb);
|
|
341
388
|
} else {
|
|
342
389
|
const promise = externals(
|
|
343
390
|
{
|
|
344
391
|
context,
|
|
345
|
-
request
|
|
392
|
+
request,
|
|
393
|
+
originalRequest,
|
|
346
394
|
dependencyType,
|
|
347
395
|
contextInfo,
|
|
348
396
|
getResolve: (options) => (context, request, callback) => {
|
|
@@ -401,21 +449,29 @@ class ExternalModuleFactoryPlugin {
|
|
|
401
449
|
(contextInfo.issuerLayer)
|
|
402
450
|
);
|
|
403
451
|
if (
|
|
452
|
+
Object.prototype.hasOwnProperty.call(resolvedExternals, request)
|
|
453
|
+
) {
|
|
454
|
+
return handleExternal(
|
|
455
|
+
resolvedExternals[request],
|
|
456
|
+
undefined,
|
|
457
|
+
callback
|
|
458
|
+
);
|
|
459
|
+
}
|
|
460
|
+
if (
|
|
461
|
+
hasOriginalRequest &&
|
|
404
462
|
Object.prototype.hasOwnProperty.call(
|
|
405
463
|
resolvedExternals,
|
|
406
|
-
|
|
464
|
+
originalRequest
|
|
407
465
|
)
|
|
408
466
|
) {
|
|
409
467
|
return handleExternal(
|
|
410
|
-
resolvedExternals[
|
|
468
|
+
resolvedExternals[originalRequest],
|
|
411
469
|
undefined,
|
|
412
470
|
callback
|
|
413
471
|
);
|
|
414
472
|
}
|
|
415
473
|
// Fall back to the `node:`-prefixed/unprefixed core module form.
|
|
416
|
-
const alternateRequest = getAlternateCoreModuleRequest(
|
|
417
|
-
dependency.request
|
|
418
|
-
);
|
|
474
|
+
const alternateRequest = getAlternateCoreModuleRequest(request);
|
|
419
475
|
if (
|
|
420
476
|
alternateRequest !== undefined &&
|
|
421
477
|
Object.prototype.hasOwnProperty.call(
|
|
@@ -439,4 +495,7 @@ class ExternalModuleFactoryPlugin {
|
|
|
439
495
|
}
|
|
440
496
|
}
|
|
441
497
|
|
|
498
|
+
ExternalModuleFactoryPlugin.getAlternateCoreModuleRequest =
|
|
499
|
+
getAlternateCoreModuleRequest;
|
|
500
|
+
|
|
442
501
|
module.exports = ExternalModuleFactoryPlugin;
|
package/lib/ExternalsPlugin.js
CHANGED
|
@@ -9,11 +9,15 @@ const { ModuleExternalInitFragment } = require("./ExternalModule");
|
|
|
9
9
|
const ExternalModuleFactoryPlugin = require("./ExternalModuleFactoryPlugin");
|
|
10
10
|
const ConcatenatedModule = require("./optimize/ConcatenatedModule");
|
|
11
11
|
|
|
12
|
-
/**
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
12
|
+
/**
|
|
13
|
+
* @import {
|
|
14
|
+
* ExternalsType,
|
|
15
|
+
* Externals
|
|
16
|
+
* } from "../declarations/WebpackOptions"
|
|
17
|
+
*/
|
|
18
|
+
/** @import Compiler from "./Compiler" */
|
|
19
|
+
/** @import { Imported } from "./ExternalModule" */
|
|
20
|
+
/** @import Dependency from "./Dependency" */
|
|
17
21
|
|
|
18
22
|
const PLUGIN_NAME = "ExternalsPlugin";
|
|
19
23
|
|
|
@@ -53,7 +57,7 @@ class ExternalsPlugin {
|
|
|
53
57
|
|
|
54
58
|
const chunkInitFragments = moduleInfo.chunkInitFragments;
|
|
55
59
|
const moduleExternalInitFragments =
|
|
56
|
-
/** @type {ModuleExternalInitFragment[]} */
|
|
60
|
+
/** @type {InstanceType<ModuleExternalInitFragment>[]} */
|
|
57
61
|
(
|
|
58
62
|
chunkInitFragments
|
|
59
63
|
? /** @type {unknown[]} */
|
package/lib/FileSystemInfo.js
CHANGED
|
@@ -10,6 +10,7 @@ const { isAbsolute } = require("path");
|
|
|
10
10
|
const { create: createResolver } = require("enhanced-resolve");
|
|
11
11
|
const asyncLib = require("neo-async");
|
|
12
12
|
const { DEFAULTS } = require("./config/defaults");
|
|
13
|
+
const { collectCjsRequireSpecifiers } = require("./javascript/syntax");
|
|
13
14
|
const AsyncQueue = require("./util/AsyncQueue");
|
|
14
15
|
const StackedCacheMap = require("./util/StackedCacheMap");
|
|
15
16
|
const createHash = require("./util/createHash");
|
|
@@ -18,16 +19,20 @@ const makeSerializable = require("./util/makeSerializable");
|
|
|
18
19
|
const memoize = require("./util/memoize");
|
|
19
20
|
const processAsyncTree = require("./util/processAsyncTree");
|
|
20
21
|
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
/** @
|
|
25
|
-
/** @
|
|
26
|
-
/** @
|
|
27
|
-
/** @
|
|
28
|
-
/** @
|
|
29
|
-
/**
|
|
30
|
-
|
|
22
|
+
// only the mjs build-dependency walk needs it
|
|
23
|
+
const getEsModuleLexer = memoize(() => require("es-module-lexer"));
|
|
24
|
+
|
|
25
|
+
/** @import { ResolveRequest, ResolveFunctionAsync } from "enhanced-resolve" */
|
|
26
|
+
/** @import { HashFunction } from "../declarations/WebpackOptions" */
|
|
27
|
+
/** @import { Logger } from "./logging/Logger" */
|
|
28
|
+
/** @import WebpackError from "./errors/WebpackError" */
|
|
29
|
+
/** @import { JsonObject, IStats, InputFileSystem } from "./util/fs" */
|
|
30
|
+
/**
|
|
31
|
+
* @import {
|
|
32
|
+
* ObjectDeserializerContext,
|
|
33
|
+
* ObjectSerializerContext
|
|
34
|
+
* } from "./serialization/ObjectMiddleware"
|
|
35
|
+
*/
|
|
31
36
|
/**
|
|
32
37
|
* Defines the processor callback type used by this module.
|
|
33
38
|
* @template T
|
|
@@ -297,6 +302,22 @@ class SnapshotIterable {
|
|
|
297
302
|
/** @typedef {Set<string>} ManagedMissing */
|
|
298
303
|
/** @typedef {Set<Snapshot>} Children */
|
|
299
304
|
|
|
305
|
+
// `Snapshot._flags` bit for each optional field. Serialized as a whole integer,
|
|
306
|
+
// so these values are a persisted-cache format contract — never renumber them.
|
|
307
|
+
const SNAPSHOT_FLAG_START_TIME = 1;
|
|
308
|
+
const SNAPSHOT_FLAG_FILE_TIMESTAMPS = 2;
|
|
309
|
+
const SNAPSHOT_FLAG_FILE_HASHES = 4;
|
|
310
|
+
const SNAPSHOT_FLAG_FILE_TSHS = 8;
|
|
311
|
+
const SNAPSHOT_FLAG_CONTEXT_TIMESTAMPS = 0x10;
|
|
312
|
+
const SNAPSHOT_FLAG_CONTEXT_HASHES = 0x20;
|
|
313
|
+
const SNAPSHOT_FLAG_CONTEXT_TSHS = 0x40;
|
|
314
|
+
const SNAPSHOT_FLAG_MISSING_EXISTENCE = 0x80;
|
|
315
|
+
const SNAPSHOT_FLAG_MANAGED_ITEM_INFO = 0x100;
|
|
316
|
+
const SNAPSHOT_FLAG_MANAGED_FILES = 0x200;
|
|
317
|
+
const SNAPSHOT_FLAG_MANAGED_CONTEXTS = 0x400;
|
|
318
|
+
const SNAPSHOT_FLAG_MANAGED_MISSING = 0x800;
|
|
319
|
+
const SNAPSHOT_FLAG_CHILDREN = 0x1000;
|
|
320
|
+
|
|
300
321
|
class Snapshot {
|
|
301
322
|
constructor() {
|
|
302
323
|
/** @type {number} */
|
|
@@ -336,7 +357,7 @@ class Snapshot {
|
|
|
336
357
|
}
|
|
337
358
|
|
|
338
359
|
hasStartTime() {
|
|
339
|
-
return (this._flags &
|
|
360
|
+
return (this._flags & SNAPSHOT_FLAG_START_TIME) !== 0;
|
|
340
361
|
}
|
|
341
362
|
|
|
342
363
|
/**
|
|
@@ -344,7 +365,7 @@ class Snapshot {
|
|
|
344
365
|
* @param {number} value start value
|
|
345
366
|
*/
|
|
346
367
|
setStartTime(value) {
|
|
347
|
-
this._flags |=
|
|
368
|
+
this._flags |= SNAPSHOT_FLAG_START_TIME;
|
|
348
369
|
this.startTime = value;
|
|
349
370
|
}
|
|
350
371
|
|
|
@@ -375,7 +396,7 @@ class Snapshot {
|
|
|
375
396
|
}
|
|
376
397
|
|
|
377
398
|
hasFileTimestamps() {
|
|
378
|
-
return (this._flags &
|
|
399
|
+
return (this._flags & SNAPSHOT_FLAG_FILE_TIMESTAMPS) !== 0;
|
|
379
400
|
}
|
|
380
401
|
|
|
381
402
|
/**
|
|
@@ -383,12 +404,12 @@ class Snapshot {
|
|
|
383
404
|
* @param {FileTimestamps} value file timestamps
|
|
384
405
|
*/
|
|
385
406
|
setFileTimestamps(value) {
|
|
386
|
-
this._flags |=
|
|
407
|
+
this._flags |= SNAPSHOT_FLAG_FILE_TIMESTAMPS;
|
|
387
408
|
this.fileTimestamps = value;
|
|
388
409
|
}
|
|
389
410
|
|
|
390
411
|
hasFileHashes() {
|
|
391
|
-
return (this._flags &
|
|
412
|
+
return (this._flags & SNAPSHOT_FLAG_FILE_HASHES) !== 0;
|
|
392
413
|
}
|
|
393
414
|
|
|
394
415
|
/**
|
|
@@ -396,12 +417,12 @@ class Snapshot {
|
|
|
396
417
|
* @param {FileHashes} value file hashes
|
|
397
418
|
*/
|
|
398
419
|
setFileHashes(value) {
|
|
399
|
-
this._flags |=
|
|
420
|
+
this._flags |= SNAPSHOT_FLAG_FILE_HASHES;
|
|
400
421
|
this.fileHashes = value;
|
|
401
422
|
}
|
|
402
423
|
|
|
403
424
|
hasFileTshs() {
|
|
404
|
-
return (this._flags &
|
|
425
|
+
return (this._flags & SNAPSHOT_FLAG_FILE_TSHS) !== 0;
|
|
405
426
|
}
|
|
406
427
|
|
|
407
428
|
/**
|
|
@@ -409,12 +430,12 @@ class Snapshot {
|
|
|
409
430
|
* @param {FileTshs} value file tshs
|
|
410
431
|
*/
|
|
411
432
|
setFileTshs(value) {
|
|
412
|
-
this._flags |=
|
|
433
|
+
this._flags |= SNAPSHOT_FLAG_FILE_TSHS;
|
|
413
434
|
this.fileTshs = value;
|
|
414
435
|
}
|
|
415
436
|
|
|
416
437
|
hasContextTimestamps() {
|
|
417
|
-
return (this._flags &
|
|
438
|
+
return (this._flags & SNAPSHOT_FLAG_CONTEXT_TIMESTAMPS) !== 0;
|
|
418
439
|
}
|
|
419
440
|
|
|
420
441
|
/**
|
|
@@ -422,12 +443,12 @@ class Snapshot {
|
|
|
422
443
|
* @param {ContextTimestamps} value context timestamps
|
|
423
444
|
*/
|
|
424
445
|
setContextTimestamps(value) {
|
|
425
|
-
this._flags |=
|
|
446
|
+
this._flags |= SNAPSHOT_FLAG_CONTEXT_TIMESTAMPS;
|
|
426
447
|
this.contextTimestamps = value;
|
|
427
448
|
}
|
|
428
449
|
|
|
429
450
|
hasContextHashes() {
|
|
430
|
-
return (this._flags &
|
|
451
|
+
return (this._flags & SNAPSHOT_FLAG_CONTEXT_HASHES) !== 0;
|
|
431
452
|
}
|
|
432
453
|
|
|
433
454
|
/**
|
|
@@ -435,12 +456,12 @@ class Snapshot {
|
|
|
435
456
|
* @param {ContextHashes} value context hashes
|
|
436
457
|
*/
|
|
437
458
|
setContextHashes(value) {
|
|
438
|
-
this._flags |=
|
|
459
|
+
this._flags |= SNAPSHOT_FLAG_CONTEXT_HASHES;
|
|
439
460
|
this.contextHashes = value;
|
|
440
461
|
}
|
|
441
462
|
|
|
442
463
|
hasContextTshs() {
|
|
443
|
-
return (this._flags &
|
|
464
|
+
return (this._flags & SNAPSHOT_FLAG_CONTEXT_TSHS) !== 0;
|
|
444
465
|
}
|
|
445
466
|
|
|
446
467
|
/**
|
|
@@ -448,12 +469,12 @@ class Snapshot {
|
|
|
448
469
|
* @param {ContextTshs} value context tshs
|
|
449
470
|
*/
|
|
450
471
|
setContextTshs(value) {
|
|
451
|
-
this._flags |=
|
|
472
|
+
this._flags |= SNAPSHOT_FLAG_CONTEXT_TSHS;
|
|
452
473
|
this.contextTshs = value;
|
|
453
474
|
}
|
|
454
475
|
|
|
455
476
|
hasMissingExistence() {
|
|
456
|
-
return (this._flags &
|
|
477
|
+
return (this._flags & SNAPSHOT_FLAG_MISSING_EXISTENCE) !== 0;
|
|
457
478
|
}
|
|
458
479
|
|
|
459
480
|
/**
|
|
@@ -461,12 +482,12 @@ class Snapshot {
|
|
|
461
482
|
* @param {MissingExistence} value context tshs
|
|
462
483
|
*/
|
|
463
484
|
setMissingExistence(value) {
|
|
464
|
-
this._flags |=
|
|
485
|
+
this._flags |= SNAPSHOT_FLAG_MISSING_EXISTENCE;
|
|
465
486
|
this.missingExistence = value;
|
|
466
487
|
}
|
|
467
488
|
|
|
468
489
|
hasManagedItemInfo() {
|
|
469
|
-
return (this._flags &
|
|
490
|
+
return (this._flags & SNAPSHOT_FLAG_MANAGED_ITEM_INFO) !== 0;
|
|
470
491
|
}
|
|
471
492
|
|
|
472
493
|
/**
|
|
@@ -474,12 +495,12 @@ class Snapshot {
|
|
|
474
495
|
* @param {ManagedItemInfo} value managed item info
|
|
475
496
|
*/
|
|
476
497
|
setManagedItemInfo(value) {
|
|
477
|
-
this._flags |=
|
|
498
|
+
this._flags |= SNAPSHOT_FLAG_MANAGED_ITEM_INFO;
|
|
478
499
|
this.managedItemInfo = value;
|
|
479
500
|
}
|
|
480
501
|
|
|
481
502
|
hasManagedFiles() {
|
|
482
|
-
return (this._flags &
|
|
503
|
+
return (this._flags & SNAPSHOT_FLAG_MANAGED_FILES) !== 0;
|
|
483
504
|
}
|
|
484
505
|
|
|
485
506
|
/**
|
|
@@ -487,12 +508,12 @@ class Snapshot {
|
|
|
487
508
|
* @param {ManagedFiles} value managed files
|
|
488
509
|
*/
|
|
489
510
|
setManagedFiles(value) {
|
|
490
|
-
this._flags |=
|
|
511
|
+
this._flags |= SNAPSHOT_FLAG_MANAGED_FILES;
|
|
491
512
|
this.managedFiles = value;
|
|
492
513
|
}
|
|
493
514
|
|
|
494
515
|
hasManagedContexts() {
|
|
495
|
-
return (this._flags &
|
|
516
|
+
return (this._flags & SNAPSHOT_FLAG_MANAGED_CONTEXTS) !== 0;
|
|
496
517
|
}
|
|
497
518
|
|
|
498
519
|
/**
|
|
@@ -500,12 +521,12 @@ class Snapshot {
|
|
|
500
521
|
* @param {ManagedContexts} value managed contexts
|
|
501
522
|
*/
|
|
502
523
|
setManagedContexts(value) {
|
|
503
|
-
this._flags |=
|
|
524
|
+
this._flags |= SNAPSHOT_FLAG_MANAGED_CONTEXTS;
|
|
504
525
|
this.managedContexts = value;
|
|
505
526
|
}
|
|
506
527
|
|
|
507
528
|
hasManagedMissing() {
|
|
508
|
-
return (this._flags &
|
|
529
|
+
return (this._flags & SNAPSHOT_FLAG_MANAGED_MISSING) !== 0;
|
|
509
530
|
}
|
|
510
531
|
|
|
511
532
|
/**
|
|
@@ -513,12 +534,12 @@ class Snapshot {
|
|
|
513
534
|
* @param {ManagedMissing} value managed missing
|
|
514
535
|
*/
|
|
515
536
|
setManagedMissing(value) {
|
|
516
|
-
this._flags |=
|
|
537
|
+
this._flags |= SNAPSHOT_FLAG_MANAGED_MISSING;
|
|
517
538
|
this.managedMissing = value;
|
|
518
539
|
}
|
|
519
540
|
|
|
520
541
|
hasChildren() {
|
|
521
|
-
return (this._flags &
|
|
542
|
+
return (this._flags & SNAPSHOT_FLAG_CHILDREN) !== 0;
|
|
522
543
|
}
|
|
523
544
|
|
|
524
545
|
/**
|
|
@@ -526,7 +547,7 @@ class Snapshot {
|
|
|
526
547
|
* @param {Children} value children
|
|
527
548
|
*/
|
|
528
549
|
setChildren(value) {
|
|
529
|
-
this._flags |=
|
|
550
|
+
this._flags |= SNAPSHOT_FLAG_CHILDREN;
|
|
530
551
|
this.children = value;
|
|
531
552
|
}
|
|
532
553
|
|
|
@@ -1186,6 +1207,15 @@ const getManagedItem = (managedPath, path) => {
|
|
|
1186
1207
|
return path.slice(0, i);
|
|
1187
1208
|
};
|
|
1188
1209
|
|
|
1210
|
+
/**
|
|
1211
|
+
* The managed directory a `snapshot.managedPaths` RegExp matched. The schema
|
|
1212
|
+
* documents it as matching that directory, so a capture-less pattern is it.
|
|
1213
|
+
* @param {RegExpExecArray} match a match of a managed path RegExp
|
|
1214
|
+
* @returns {string} the managed directory
|
|
1215
|
+
*/
|
|
1216
|
+
const getManagedPathFromMatch = (match) =>
|
|
1217
|
+
match[1] === undefined ? match[0] : match[1];
|
|
1218
|
+
|
|
1189
1219
|
/**
|
|
1190
1220
|
* Gets resolved timestamp.
|
|
1191
1221
|
* @template {ContextFileSystemInfoEntry | ContextTimestampAndHash} T
|
|
@@ -1219,7 +1249,9 @@ const addAll = (source, target) => {
|
|
|
1219
1249
|
for (const key of source) target.add(key);
|
|
1220
1250
|
};
|
|
1221
1251
|
|
|
1222
|
-
|
|
1252
|
+
// Bun doesn't populate `require.cache` `module.children`, so the CJS build-dependency
|
|
1253
|
+
// walk needs a source-parsing fallback there. Node/Deno populate it — never pay for it.
|
|
1254
|
+
const IS_BUN = Boolean(process.versions.bun);
|
|
1223
1255
|
|
|
1224
1256
|
/** @typedef {Set<string>} LoggedPaths */
|
|
1225
1257
|
|
|
@@ -2213,6 +2245,36 @@ class FileSystemInfo {
|
|
|
2213
2245
|
});
|
|
2214
2246
|
}
|
|
2215
2247
|
}
|
|
2248
|
+
// On Bun the children array is empty (unpopulated), so recover the
|
|
2249
|
+
// static require() specifiers by parsing the source; Node/Deno don't.
|
|
2250
|
+
/* istanbul ignore next */
|
|
2251
|
+
if (IS_BUN && module.children.length === 0) {
|
|
2252
|
+
this.fs.readFile(path, (err, content) => {
|
|
2253
|
+
if (err) return callback(err);
|
|
2254
|
+
try {
|
|
2255
|
+
const context = dirname(this.fs, path);
|
|
2256
|
+
const source = /** @type {Buffer} */ (content).toString();
|
|
2257
|
+
for (const dependency of collectCjsRequireSpecifiers(
|
|
2258
|
+
source
|
|
2259
|
+
)) {
|
|
2260
|
+
if (dependency.startsWith("node:")) continue;
|
|
2261
|
+
if (builtinModules.has(dependency)) continue;
|
|
2262
|
+
push({
|
|
2263
|
+
type: RBDT_RESOLVE_CJS_FILE,
|
|
2264
|
+
context,
|
|
2265
|
+
path: dependency,
|
|
2266
|
+
// Best effort: tolerate specifiers that don't resolve.
|
|
2267
|
+
expected: false,
|
|
2268
|
+
issuer: job
|
|
2269
|
+
});
|
|
2270
|
+
}
|
|
2271
|
+
} catch (_err) {
|
|
2272
|
+
// Source we can't parse as CommonJS — ignore its dependencies.
|
|
2273
|
+
}
|
|
2274
|
+
process.nextTick(callback);
|
|
2275
|
+
});
|
|
2276
|
+
break;
|
|
2277
|
+
}
|
|
2216
2278
|
} else if (supportsEsm && /\.m?js$/.test(path)) {
|
|
2217
2279
|
if (!this._warnAboutExperimentalEsmTracking) {
|
|
2218
2280
|
logger.log(
|
|
@@ -2610,7 +2672,10 @@ class FileSystemInfo {
|
|
|
2610
2672
|
for (const managedPath of this.managedPathsRegExps) {
|
|
2611
2673
|
const match = managedPath.exec(path);
|
|
2612
2674
|
if (match) {
|
|
2613
|
-
const managedItem = getManagedItem(
|
|
2675
|
+
const managedItem = getManagedItem(
|
|
2676
|
+
getManagedPathFromMatch(match),
|
|
2677
|
+
path
|
|
2678
|
+
);
|
|
2614
2679
|
if (managedItem) {
|
|
2615
2680
|
classificationCache.set(path, managedItem);
|
|
2616
2681
|
managedItems.add(managedItem);
|
|
@@ -3868,7 +3933,10 @@ class FileSystemInfo {
|
|
|
3868
3933
|
for (const managedPath of this.managedPathsRegExps) {
|
|
3869
3934
|
const match = managedPath.exec(path);
|
|
3870
3935
|
if (match) {
|
|
3871
|
-
const managedItem = getManagedItem(
|
|
3936
|
+
const managedItem = getManagedItem(
|
|
3937
|
+
getManagedPathFromMatch(match),
|
|
3938
|
+
path
|
|
3939
|
+
);
|
|
3872
3940
|
if (managedItem) {
|
|
3873
3941
|
// construct timestampHash from managed info
|
|
3874
3942
|
return this.managedItemQueue.add(managedItem, (err, info) => {
|
|
@@ -4232,12 +4300,17 @@ class FileSystemInfo {
|
|
|
4232
4300
|
/**
|
|
4233
4301
|
* Processes the provided timestamp.
|
|
4234
4302
|
* @param {ContextTimestamp} timestamp timestamp
|
|
4235
|
-
* @param {ContextHash} hash hash
|
|
4303
|
+
* @param {ContextHash | null} hash hash
|
|
4236
4304
|
*/
|
|
4237
4305
|
const finalize = (timestamp, hash) => {
|
|
4306
|
+
// Merging two `null` reads yields `{}`, which reads as "exists, no hash" (#21636)
|
|
4238
4307
|
const result =
|
|
4239
4308
|
/** @type {ContextTimestampAndHash} */
|
|
4240
|
-
(
|
|
4309
|
+
(
|
|
4310
|
+
hash === null || timestamp === "ignore"
|
|
4311
|
+
? hash
|
|
4312
|
+
: { ...timestamp, ...hash }
|
|
4313
|
+
);
|
|
4241
4314
|
this._contextTshs.set(path, result);
|
|
4242
4315
|
callback(null, result);
|
|
4243
4316
|
};
|
|
@@ -4555,5 +4628,6 @@ class FileSystemInfo {
|
|
|
4555
4628
|
}
|
|
4556
4629
|
}
|
|
4557
4630
|
|
|
4631
|
+
FileSystemInfo.Snapshot = Snapshot;
|
|
4632
|
+
|
|
4558
4633
|
module.exports = FileSystemInfo;
|
|
4559
|
-
module.exports.Snapshot = Snapshot;
|
|
@@ -7,9 +7,8 @@
|
|
|
7
7
|
|
|
8
8
|
const { getEntryRuntime, mergeRuntimeOwned } = require("./util/runtime");
|
|
9
9
|
|
|
10
|
-
/** @
|
|
11
|
-
/** @
|
|
12
|
-
/** @typedef {import("./util/runtime").RuntimeSpec} RuntimeSpec */
|
|
10
|
+
/** @import Compiler from "./Compiler" */
|
|
11
|
+
/** @import { RuntimeSpec } from "./util/runtime" */
|
|
13
12
|
|
|
14
13
|
const PLUGIN_NAME = "FlagAllModulesAsUsedPlugin";
|
|
15
14
|
class FlagAllModulesAsUsedPlugin {
|