@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
package/lib/config/target.js
CHANGED
|
@@ -7,6 +7,7 @@
|
|
|
7
7
|
|
|
8
8
|
const memoize = require("../util/memoize");
|
|
9
9
|
|
|
10
|
+
// browserslist pulls in caniuse-lite; only a browserslist target needs it
|
|
10
11
|
const getBrowserslistTargetHandler = memoize(() =>
|
|
11
12
|
require("./browserslistTargetHandler")
|
|
12
13
|
);
|
|
@@ -81,6 +82,8 @@ const getDefaultTarget = (context) => {
|
|
|
81
82
|
* @property {boolean | null} templateLiteral template literal is available
|
|
82
83
|
* @property {boolean | null} asyncFunction async functions and await are available
|
|
83
84
|
* @property {boolean | null} generator generator functions and yield are available
|
|
85
|
+
* @property {(boolean | null)=} deferImport deferred evaluation (`import defer`, `import.defer()`) is available (optional; absent means "assume unavailable")
|
|
86
|
+
* @property {(boolean | null)=} sourceImport source phase imports (`import source`, `import.source()`) are available (optional; absent means "assume unavailable")
|
|
84
87
|
*/
|
|
85
88
|
|
|
86
89
|
/**
|
|
@@ -116,12 +119,16 @@ const versionDependent = (major, minor) => {
|
|
|
116
119
|
nMajor > vMajor || (nMajor === vMajor && nMinor >= vMinor);
|
|
117
120
|
};
|
|
118
121
|
|
|
122
|
+
// A `browserslist` target, with an optional `:env` / `:query` / config path
|
|
123
|
+
// after the keyword that `browserslistTargetHandler.load` reads.
|
|
124
|
+
const BROWSERSLIST_TARGET = /^browserslist(?::(.+))?$/;
|
|
125
|
+
|
|
119
126
|
/** @type {[string, string, RegExp, (...args: string[]) => Partial<TargetProperties>][]} */
|
|
120
127
|
const TARGETS = [
|
|
121
128
|
[
|
|
122
129
|
"browserslist / browserslist:env / browserslist:query / browserslist:path-to-config / browserslist:path-to-config:env",
|
|
123
130
|
"Resolve features from browserslist. Will resolve browserslist config automatically. Only browser or node queries are supported (electron is not supported). Examples: 'browserslist:modern' to use 'modern' environment from browserslist config",
|
|
124
|
-
|
|
131
|
+
BROWSERSLIST_TARGET,
|
|
125
132
|
(rest, context) => {
|
|
126
133
|
const browserslistTargetHandler = getBrowserslistTargetHandler();
|
|
127
134
|
const browsers = browserslistTargetHandler.load(
|
|
@@ -267,7 +274,9 @@ You can also more options via the 'target' option: 'browserslist' / 'browserslis
|
|
|
267
274
|
bigIntLiteral: v(10, 4),
|
|
268
275
|
dynamicImport: v(12, 17),
|
|
269
276
|
dynamicImportInWorker: v(12, 17),
|
|
270
|
-
module: v(12, 17)
|
|
277
|
+
module: v(12, 17),
|
|
278
|
+
// v24.5.0, for WebAssembly only; `import defer` is not implemented
|
|
279
|
+
sourceImport: v(24, 5)
|
|
271
280
|
};
|
|
272
281
|
}
|
|
273
282
|
],
|
|
@@ -319,7 +328,11 @@ You can also more options via the 'target' option: 'browserslist' / 'browserslis
|
|
|
319
328
|
spread: true,
|
|
320
329
|
templateLiteral: true,
|
|
321
330
|
asyncFunction: true,
|
|
322
|
-
generator: true
|
|
331
|
+
generator: true,
|
|
332
|
+
// import defer - v2.8.0
|
|
333
|
+
deferImport: v(2, 8),
|
|
334
|
+
// import source - v2.6.0
|
|
335
|
+
sourceImport: v(2, 6)
|
|
323
336
|
};
|
|
324
337
|
}
|
|
325
338
|
],
|
|
@@ -536,6 +549,10 @@ const getTargetProperties = (target, context) => {
|
|
|
536
549
|
);
|
|
537
550
|
};
|
|
538
551
|
|
|
552
|
+
// Absence means "cannot read it" here, so a target omitting one votes against rather
|
|
553
|
+
// than letting another's `true` stand — `["web", "deno2.8"]` reads neither phase.
|
|
554
|
+
const UNSUPPORTED_WHEN_ABSENT = new Set(["deferImport", "sourceImport"]);
|
|
555
|
+
|
|
539
556
|
/**
|
|
540
557
|
* Merges target properties.
|
|
541
558
|
* @param {TargetProperties[]} targetProperties array of target properties
|
|
@@ -563,6 +580,10 @@ const mergeTargetProperties = (targetProperties) => {
|
|
|
563
580
|
case false:
|
|
564
581
|
hasFalse = true;
|
|
565
582
|
break;
|
|
583
|
+
default:
|
|
584
|
+
if (value === undefined && UNSUPPORTED_WHEN_ABSENT.has(key)) {
|
|
585
|
+
hasFalse = true;
|
|
586
|
+
}
|
|
566
587
|
}
|
|
567
588
|
}
|
|
568
589
|
if (hasTrue || hasFalse) {
|
|
@@ -582,6 +603,28 @@ const mergeTargetProperties = (targetProperties) => {
|
|
|
582
603
|
const getTargetsProperties = (targets, context) =>
|
|
583
604
|
mergeTargetProperties(targets.map((t) => getTargetProperties(t, context)));
|
|
584
605
|
|
|
606
|
+
/**
|
|
607
|
+
* The raw browserslist selection behind the targets (`["chrome 100", …]`), merged
|
|
608
|
+
* across every `browserslist` target and deduplicated — undefined when none is
|
|
609
|
+
* one, and prefixing stays off with no browser list to prefix for.
|
|
610
|
+
* @param {string[]} targets the targets
|
|
611
|
+
* @param {string} context the context directory
|
|
612
|
+
* @returns {string[] | undefined} the selected browsers, or undefined
|
|
613
|
+
*/
|
|
614
|
+
const getTargetsBrowsers = (targets, context) => {
|
|
615
|
+
const { load } = getBrowserslistTargetHandler();
|
|
616
|
+
/** @type {Set<string>} */
|
|
617
|
+
const browsers = new Set();
|
|
618
|
+
for (const target of targets) {
|
|
619
|
+
const match = BROWSERSLIST_TARGET.exec(target);
|
|
620
|
+
if (!match) continue;
|
|
621
|
+
const selected = load(match[1] ? match[1].trim() : null, context);
|
|
622
|
+
if (selected) for (const browser of selected) browsers.add(browser);
|
|
623
|
+
}
|
|
624
|
+
return browsers.size === 0 ? undefined : [...browsers];
|
|
625
|
+
};
|
|
626
|
+
|
|
585
627
|
module.exports.getDefaultTarget = getDefaultTarget;
|
|
586
628
|
module.exports.getTargetProperties = getTargetProperties;
|
|
629
|
+
module.exports.getTargetsBrowsers = getTargetsBrowsers;
|
|
587
630
|
module.exports.getTargetsProperties = getTargetsProperties;
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
const Dependency = require("../Dependency");
|
|
9
9
|
const makeSerializable = require("../util/makeSerializable");
|
|
10
10
|
|
|
11
|
-
/** @
|
|
11
|
+
/** @import { ExposesList } from "./ContainerEntryModule" */
|
|
12
12
|
|
|
13
13
|
class ContainerEntryDependency extends Dependency {
|
|
14
14
|
/**
|
|
@@ -19,22 +19,30 @@ const StaticExportsDependency = require("../dependencies/StaticExportsDependency
|
|
|
19
19
|
const makeSerializable = require("../util/makeSerializable");
|
|
20
20
|
const ContainerExposedDependency = require("./ContainerExposedDependency");
|
|
21
21
|
|
|
22
|
-
/**
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
/** @
|
|
28
|
-
/**
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
22
|
+
/**
|
|
23
|
+
* @import {
|
|
24
|
+
* WebpackOptionsNormalizedWithDefaults as WebpackOptions
|
|
25
|
+
* } from "../config/defaults"
|
|
26
|
+
*/
|
|
27
|
+
/** @import Compilation from "../Compilation" */
|
|
28
|
+
/**
|
|
29
|
+
* @import {
|
|
30
|
+
* BuildCallback,
|
|
31
|
+
* CodeGenerationContext,
|
|
32
|
+
* CodeGenerationResult,
|
|
33
|
+
* LibIdentOptions,
|
|
34
|
+
* LibIdent,
|
|
35
|
+
* NeedBuildCallback,
|
|
36
|
+
* NeedBuildContext,
|
|
37
|
+
* Sources,
|
|
38
|
+
* SourceTypes
|
|
39
|
+
* } from "../Module"
|
|
40
|
+
*/
|
|
41
|
+
/** @import RequestShortener from "../RequestShortener" */
|
|
42
|
+
/** @import { ResolverWithOptions } from "../ResolverFactory" */
|
|
35
43
|
/** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext<[string, ExposesList, string]>} ObjectDeserializerContext */
|
|
36
44
|
/** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext<[string, ExposesList, string]>} ObjectSerializerContext */
|
|
37
|
-
/** @
|
|
45
|
+
/** @import { InputFileSystem } from "../util/fs" */
|
|
38
46
|
|
|
39
47
|
/**
|
|
40
48
|
* Defines the expose options type used by this module.
|
|
@@ -194,7 +202,8 @@ class ContainerEntryModule extends Module {
|
|
|
194
202
|
block,
|
|
195
203
|
message: "",
|
|
196
204
|
chunkGraph,
|
|
197
|
-
runtimeRequirements
|
|
205
|
+
runtimeRequirements,
|
|
206
|
+
originModule: this
|
|
198
207
|
})}.then(${runtimeTemplate.returningFunction(
|
|
199
208
|
runtimeTemplate.returningFunction(
|
|
200
209
|
`(${modules
|
|
@@ -8,9 +8,13 @@
|
|
|
8
8
|
const ModuleFactory = require("../ModuleFactory");
|
|
9
9
|
const ContainerEntryModule = require("./ContainerEntryModule");
|
|
10
10
|
|
|
11
|
-
/**
|
|
12
|
-
|
|
13
|
-
|
|
11
|
+
/**
|
|
12
|
+
* @import {
|
|
13
|
+
* ModuleFactoryCallback,
|
|
14
|
+
* ModuleFactoryCreateData
|
|
15
|
+
* } from "../ModuleFactory"
|
|
16
|
+
*/
|
|
17
|
+
/** @import ContainerEntryDependency from "./ContainerEntryDependency" */
|
|
14
18
|
|
|
15
19
|
module.exports = class ContainerEntryModuleFactory extends ModuleFactory {
|
|
16
20
|
/**
|
|
@@ -5,19 +5,19 @@
|
|
|
5
5
|
|
|
6
6
|
"use strict";
|
|
7
7
|
|
|
8
|
-
const memoize = require("../util/memoize");
|
|
9
8
|
const ContainerEntryDependency = require("./ContainerEntryDependency");
|
|
10
9
|
const ContainerEntryModuleFactory = require("./ContainerEntryModuleFactory");
|
|
11
10
|
const ContainerExposedDependency = require("./ContainerExposedDependency");
|
|
11
|
+
const getModuleFederationCompilationHooks = require("./moduleFederationHooks");
|
|
12
12
|
const { parseOptions } = require("./options");
|
|
13
13
|
|
|
14
|
-
/**
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
14
|
+
/**
|
|
15
|
+
* @import {
|
|
16
|
+
* ContainerPluginOptions
|
|
17
|
+
* } from "../../declarations/plugins/container/ContainerPlugin"
|
|
18
|
+
*/
|
|
19
|
+
/** @import Compiler from "../Compiler" */
|
|
20
|
+
/** @import { ExposesList } from "./ContainerEntryModule" */
|
|
21
21
|
|
|
22
22
|
const PLUGIN_NAME = "ContainerPlugin";
|
|
23
23
|
|
|
@@ -78,8 +78,7 @@ class ContainerPlugin {
|
|
|
78
78
|
const shareScope = this.options.shareScope || "default";
|
|
79
79
|
|
|
80
80
|
compiler.hooks.make.tapAsync(PLUGIN_NAME, (compilation, callback) => {
|
|
81
|
-
const hooks =
|
|
82
|
-
getModuleFederationPlugin().getCompilationHooks(compilation);
|
|
81
|
+
const hooks = getModuleFederationCompilationHooks(compilation);
|
|
83
82
|
const dep = new ContainerEntryDependency(
|
|
84
83
|
this.options.name,
|
|
85
84
|
exposes,
|
|
@@ -16,8 +16,12 @@ const RemoteRuntimeModule = require("./RemoteRuntimeModule");
|
|
|
16
16
|
const RemoteToExternalDependency = require("./RemoteToExternalDependency");
|
|
17
17
|
const { parseOptions } = require("./options");
|
|
18
18
|
|
|
19
|
-
/**
|
|
20
|
-
|
|
19
|
+
/**
|
|
20
|
+
* @import {
|
|
21
|
+
* ContainerReferencePluginOptions
|
|
22
|
+
* } from "../../declarations/plugins/container/ContainerReferencePlugin"
|
|
23
|
+
*/
|
|
24
|
+
/** @import Compiler from "../Compiler" */
|
|
21
25
|
|
|
22
26
|
const slashCode = "/".charCodeAt(0);
|
|
23
27
|
const PLUGIN_NAME = "ContainerReferencePlugin";
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
const Dependency = require("../Dependency");
|
|
9
9
|
const makeSerializable = require("../util/makeSerializable");
|
|
10
10
|
|
|
11
|
-
/** @
|
|
11
|
+
/** @import { ExternalRequests } from "./RemoteModule" */
|
|
12
12
|
/** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext<[ExternalRequests]>} ObjectDeserializerContext */
|
|
13
13
|
/** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext<[ExternalRequests]>} ObjectSerializerContext */
|
|
14
14
|
|
|
@@ -17,25 +17,32 @@ const Template = require("../Template");
|
|
|
17
17
|
const makeSerializable = require("../util/makeSerializable");
|
|
18
18
|
const FallbackItemDependency = require("./FallbackItemDependency");
|
|
19
19
|
|
|
20
|
-
/**
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
/** @
|
|
26
|
-
/** @
|
|
27
|
-
/**
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
20
|
+
/**
|
|
21
|
+
* @import {
|
|
22
|
+
* WebpackOptionsNormalizedWithDefaults as WebpackOptions
|
|
23
|
+
* } from "../config/defaults"
|
|
24
|
+
*/
|
|
25
|
+
/** @import Chunk from "../Chunk" */
|
|
26
|
+
/** @import Compilation from "../Compilation" */
|
|
27
|
+
/**
|
|
28
|
+
* @import {
|
|
29
|
+
* BuildCallback,
|
|
30
|
+
* CodeGenerationContext,
|
|
31
|
+
* CodeGenerationResult,
|
|
32
|
+
* LibIdentOptions,
|
|
33
|
+
* LibIdent,
|
|
34
|
+
* NeedBuildCallback,
|
|
35
|
+
* NeedBuildContext,
|
|
36
|
+
* Sources,
|
|
37
|
+
* SourceTypes
|
|
38
|
+
* } from "../Module"
|
|
39
|
+
*/
|
|
40
|
+
/** @import RequestShortener from "../RequestShortener" */
|
|
41
|
+
/** @import { ResolverWithOptions } from "../ResolverFactory" */
|
|
35
42
|
/** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext<[ExternalRequests]>} ObjectDeserializerContext */
|
|
36
43
|
/** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext<[ExternalRequests]>} ObjectSerializerContext */
|
|
37
|
-
/** @
|
|
38
|
-
/** @
|
|
44
|
+
/** @import { InputFileSystem } from "../util/fs" */
|
|
45
|
+
/** @import { ExternalRequests } from "./RemoteModule" */
|
|
39
46
|
|
|
40
47
|
const RUNTIME_REQUIREMENTS = new Set([RuntimeGlobals.module]);
|
|
41
48
|
|
|
@@ -8,9 +8,13 @@
|
|
|
8
8
|
const ModuleFactory = require("../ModuleFactory");
|
|
9
9
|
const FallbackModule = require("./FallbackModule");
|
|
10
10
|
|
|
11
|
-
/**
|
|
12
|
-
|
|
13
|
-
|
|
11
|
+
/**
|
|
12
|
+
* @import {
|
|
13
|
+
* ModuleFactoryCallback,
|
|
14
|
+
* ModuleFactoryCreateData
|
|
15
|
+
* } from "../ModuleFactory"
|
|
16
|
+
*/
|
|
17
|
+
/** @import FallbackDependency from "./FallbackDependency" */
|
|
14
18
|
|
|
15
19
|
module.exports = class FallbackModuleFactory extends ModuleFactory {
|
|
16
20
|
/**
|
|
@@ -8,17 +8,13 @@
|
|
|
8
8
|
const AsyncDependenciesBlock = require("../AsyncDependenciesBlock");
|
|
9
9
|
const ExternalModule = require("../ExternalModule");
|
|
10
10
|
const { STAGE_ADVANCED } = require("../OptimizationStages");
|
|
11
|
-
const memoize = require("../util/memoize");
|
|
12
11
|
const { forEachRuntime } = require("../util/runtime");
|
|
12
|
+
const getModuleFederationCompilationHooks = require("./moduleFederationHooks");
|
|
13
13
|
|
|
14
|
-
/** @
|
|
15
|
-
/** @
|
|
16
|
-
/** @
|
|
17
|
-
/** @
|
|
18
|
-
|
|
19
|
-
const getModuleFederationPlugin = memoize(() =>
|
|
20
|
-
require("./ModuleFederationPlugin")
|
|
21
|
-
);
|
|
14
|
+
/** @import Compilation from "../Compilation" */
|
|
15
|
+
/** @import Compiler from "../Compiler" */
|
|
16
|
+
/** @import Dependency from "../Dependency" */
|
|
17
|
+
/** @import Module from "../Module" */
|
|
22
18
|
|
|
23
19
|
const PLUGIN_NAME = "HoistContainerReferences";
|
|
24
20
|
|
|
@@ -32,18 +28,18 @@ class HoistContainerReferences {
|
|
|
32
28
|
*/
|
|
33
29
|
apply(compiler) {
|
|
34
30
|
compiler.hooks.thisCompilation.tap(PLUGIN_NAME, (compilation) => {
|
|
35
|
-
const hooks =
|
|
36
|
-
getModuleFederationPlugin().getCompilationHooks(compilation);
|
|
31
|
+
const hooks = getModuleFederationCompilationHooks(compilation);
|
|
37
32
|
/** @type {Set<Dependency>} */
|
|
38
33
|
const depsToTrace = new Set();
|
|
39
34
|
/** @type {Set<Dependency>} */
|
|
40
35
|
const entryExternalsToHoist = new Set();
|
|
41
|
-
hooks
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
hooks.addFederationRuntimeDependency.tap(PLUGIN_NAME, (dep) => {
|
|
36
|
+
// Both hooks feed the same trace set, so they share one callback.
|
|
37
|
+
/** @type {(dep: Dependency) => void} */
|
|
38
|
+
const traceDep = (dep) => {
|
|
45
39
|
depsToTrace.add(dep);
|
|
46
|
-
}
|
|
40
|
+
};
|
|
41
|
+
hooks.addContainerEntryDependency.tap(PLUGIN_NAME, traceDep);
|
|
42
|
+
hooks.addFederationRuntimeDependency.tap(PLUGIN_NAME, traceDep);
|
|
47
43
|
|
|
48
44
|
compilation.hooks.addEntry.tap(PLUGIN_NAME, (entryDep) => {
|
|
49
45
|
if (entryDep.type === "entry") {
|
|
@@ -76,46 +72,26 @@ class HoistContainerReferences {
|
|
|
76
72
|
* @param {Set<Dependency>} entryExternalsToHoist Set of container entry dependencies to hoist.
|
|
77
73
|
*/
|
|
78
74
|
hoistModulesInChunks(compilation, depsToTrace, entryExternalsToHoist) {
|
|
79
|
-
const {
|
|
75
|
+
const { moduleGraph } = compilation;
|
|
80
76
|
|
|
81
|
-
//
|
|
77
|
+
// Entry externals: hoist the external modules (e.g. RemoteModule) they reference.
|
|
82
78
|
for (const dep of entryExternalsToHoist) {
|
|
83
79
|
const entryModule = moduleGraph.getModule(dep);
|
|
84
80
|
if (!entryModule) continue;
|
|
85
|
-
// get all the external module types and hoist them to the runtime chunk, this will get RemoteModule externals
|
|
86
81
|
const allReferencedModules = getAllReferencedModules(
|
|
87
82
|
compilation,
|
|
88
83
|
entryModule,
|
|
89
84
|
"external",
|
|
90
85
|
false
|
|
91
86
|
);
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
for (const runtimeSpec of containerRuntimes) {
|
|
98
|
-
forEachRuntime(runtimeSpec, (runtimeKey) => {
|
|
99
|
-
if (runtimeKey) {
|
|
100
|
-
runtimes.add(runtimeKey);
|
|
101
|
-
}
|
|
102
|
-
});
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
for (const runtime of runtimes) {
|
|
106
|
-
const runtimeChunk = compilation.namedChunks.get(runtime);
|
|
107
|
-
if (!runtimeChunk) continue;
|
|
108
|
-
|
|
109
|
-
for (const module of allReferencedModules) {
|
|
110
|
-
if (!chunkGraph.isModuleInChunk(module, runtimeChunk)) {
|
|
111
|
-
chunkGraph.connectChunkAndModule(runtimeChunk, module);
|
|
112
|
-
}
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
this.cleanUpChunks(compilation, allReferencedModules);
|
|
87
|
+
this.hoistReferencedModules(
|
|
88
|
+
compilation,
|
|
89
|
+
entryModule,
|
|
90
|
+
allReferencedModules
|
|
91
|
+
);
|
|
116
92
|
}
|
|
117
93
|
|
|
118
|
-
//
|
|
94
|
+
// Container entries: hoist the initial graph plus its external references.
|
|
119
95
|
for (const dep of depsToTrace) {
|
|
120
96
|
const containerEntryModule = moduleGraph.getModule(dep);
|
|
121
97
|
if (!containerEntryModule) continue;
|
|
@@ -125,43 +101,54 @@ class HoistContainerReferences {
|
|
|
125
101
|
"initial",
|
|
126
102
|
false
|
|
127
103
|
);
|
|
128
|
-
|
|
129
104
|
const allRemoteReferences = getAllReferencedModules(
|
|
130
105
|
compilation,
|
|
131
106
|
containerEntryModule,
|
|
132
107
|
"external",
|
|
133
108
|
false
|
|
134
109
|
);
|
|
135
|
-
|
|
136
110
|
for (const remote of allRemoteReferences) {
|
|
137
111
|
allReferencedModules.add(remote);
|
|
138
112
|
}
|
|
113
|
+
this.hoistReferencedModules(
|
|
114
|
+
compilation,
|
|
115
|
+
containerEntryModule,
|
|
116
|
+
allReferencedModules
|
|
117
|
+
);
|
|
118
|
+
}
|
|
119
|
+
}
|
|
139
120
|
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
121
|
+
/**
|
|
122
|
+
* Connect `referencedModules` into each runtime chunk of `entryModule`, then
|
|
123
|
+
* prune the chunks they were hoisted out of. The two passes above build
|
|
124
|
+
* `referencedModules` differently but hoist them identically.
|
|
125
|
+
* @param {Compilation} compilation The webpack compilation instance.
|
|
126
|
+
* @param {Module} entryModule The module whose runtimes receive the modules.
|
|
127
|
+
* @param {Set<Module>} referencedModules The modules to hoist.
|
|
128
|
+
*/
|
|
129
|
+
hoistReferencedModules(compilation, entryModule, referencedModules) {
|
|
130
|
+
const { chunkGraph } = compilation;
|
|
131
|
+
/** @type {Set<string>} */
|
|
132
|
+
const runtimes = new Set();
|
|
133
|
+
for (const runtimeSpec of chunkGraph.getModuleRuntimes(entryModule)) {
|
|
134
|
+
forEachRuntime(runtimeSpec, (runtimeKey) => {
|
|
135
|
+
if (runtimeKey) {
|
|
136
|
+
runtimes.add(runtimeKey);
|
|
137
|
+
}
|
|
138
|
+
});
|
|
139
|
+
}
|
|
152
140
|
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
141
|
+
for (const runtime of runtimes) {
|
|
142
|
+
const runtimeChunk = compilation.namedChunks.get(runtime);
|
|
143
|
+
if (!runtimeChunk) continue;
|
|
156
144
|
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
}
|
|
145
|
+
for (const module of referencedModules) {
|
|
146
|
+
if (!chunkGraph.isModuleInChunk(module, runtimeChunk)) {
|
|
147
|
+
chunkGraph.connectChunkAndModule(runtimeChunk, module);
|
|
161
148
|
}
|
|
162
149
|
}
|
|
163
|
-
this.cleanUpChunks(compilation, allReferencedModules);
|
|
164
150
|
}
|
|
151
|
+
this.cleanUpChunks(compilation, referencedModules);
|
|
165
152
|
}
|
|
166
153
|
|
|
167
154
|
/**
|
|
@@ -5,25 +5,20 @@
|
|
|
5
5
|
|
|
6
6
|
"use strict";
|
|
7
7
|
|
|
8
|
-
const { SyncHook } = require("tapable");
|
|
9
8
|
const isValidExternalsType = require("../../schemas/plugins/container/ExternalsType.check");
|
|
10
9
|
const SharePlugin = require("../sharing/SharePlugin");
|
|
11
|
-
const createHooksRegistry = require("../util/createHooksRegistry");
|
|
12
10
|
const ContainerPlugin = require("./ContainerPlugin");
|
|
13
11
|
const ContainerReferencePlugin = require("./ContainerReferencePlugin");
|
|
14
12
|
const HoistContainerReferences = require("./HoistContainerReferencesPlugin");
|
|
15
|
-
|
|
16
|
-
/** @typedef {import("../../declarations/plugins/container/ModuleFederationPlugin").ExternalsType} ExternalsType */
|
|
17
|
-
/** @typedef {import("../../declarations/plugins/container/ModuleFederationPlugin").ModuleFederationPluginOptions} ModuleFederationPluginOptions */
|
|
18
|
-
/** @typedef {import("../Compiler")} Compiler */
|
|
19
|
-
/** @typedef {import("../Dependency")} Dependency */
|
|
13
|
+
const getCompilationHooks = require("./moduleFederationHooks");
|
|
20
14
|
|
|
21
15
|
/**
|
|
22
|
-
*
|
|
23
|
-
*
|
|
24
|
-
*
|
|
25
|
-
*
|
|
16
|
+
* @import {
|
|
17
|
+
* ExternalsType,
|
|
18
|
+
* ModuleFederationPluginOptions
|
|
19
|
+
* } from "../../declarations/plugins/container/ModuleFederationPlugin"
|
|
26
20
|
*/
|
|
21
|
+
/** @import Compiler from "../Compiler" */
|
|
27
22
|
|
|
28
23
|
const PLUGIN_NAME = "ModuleFederationPlugin";
|
|
29
24
|
|
|
@@ -110,12 +105,6 @@ class ModuleFederationPlugin {
|
|
|
110
105
|
}
|
|
111
106
|
}
|
|
112
107
|
|
|
113
|
-
ModuleFederationPlugin.getCompilationHooks =
|
|
114
|
-
() =>
|
|
115
|
-
/** @type {CompilationHooks} */ ({
|
|
116
|
-
addContainerEntryDependency: new SyncHook(["dependency"]),
|
|
117
|
-
addFederationRuntimeDependency: new SyncHook(["dependency"])
|
|
118
|
-
})
|
|
119
|
-
);
|
|
108
|
+
ModuleFederationPlugin.getCompilationHooks = getCompilationHooks;
|
|
120
109
|
|
|
121
110
|
module.exports = ModuleFederationPlugin;
|
|
@@ -17,27 +17,35 @@ const makeSerializable = require("../util/makeSerializable");
|
|
|
17
17
|
const FallbackDependency = require("./FallbackDependency");
|
|
18
18
|
const RemoteToExternalDependency = require("./RemoteToExternalDependency");
|
|
19
19
|
|
|
20
|
-
/**
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
/** @
|
|
26
|
-
/**
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
20
|
+
/**
|
|
21
|
+
* @import {
|
|
22
|
+
* WebpackOptionsNormalizedWithDefaults as WebpackOptions
|
|
23
|
+
* } from "../config/defaults"
|
|
24
|
+
*/
|
|
25
|
+
/** @import Compilation from "../Compilation" */
|
|
26
|
+
/**
|
|
27
|
+
* @import {
|
|
28
|
+
* BuildCallback,
|
|
29
|
+
* CodeGenerationContext,
|
|
30
|
+
* CodeGenerationResultData,
|
|
31
|
+
* CodeGenerationResult,
|
|
32
|
+
* LibIdentOptions,
|
|
33
|
+
* LibIdent,
|
|
34
|
+
* NameForCondition,
|
|
35
|
+
* NeedBuildCallback,
|
|
36
|
+
* NeedBuildContext,
|
|
37
|
+
* Sources,
|
|
38
|
+
* SourceTypes,
|
|
39
|
+
* ExportsType,
|
|
40
|
+
* BasicSourceTypes
|
|
41
|
+
* } from "../Module"
|
|
42
|
+
*/
|
|
43
|
+
/** @import ModuleGraph from "../ModuleGraph" */
|
|
44
|
+
/** @import RequestShortener from "../RequestShortener" */
|
|
45
|
+
/** @import { ResolverWithOptions } from "../ResolverFactory" */
|
|
37
46
|
/** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext<[string, ExternalRequests, string, string]>} ObjectDeserializerContext */
|
|
38
47
|
/** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext<[string, ExternalRequests, string, string]>} ObjectSerializerContext */
|
|
39
|
-
/** @
|
|
40
|
-
/** @typedef {import("../Module").BasicSourceTypes} BasicSourceTypes */
|
|
48
|
+
/** @import { InputFileSystem } from "../util/fs" */
|
|
41
49
|
|
|
42
50
|
const RUNTIME_REQUIREMENTS = new Set([RuntimeGlobals.module]);
|
|
43
51
|
|
|
@@ -8,13 +8,12 @@
|
|
|
8
8
|
const RuntimeGlobals = require("../RuntimeGlobals");
|
|
9
9
|
const RuntimeModule = require("../RuntimeModule");
|
|
10
10
|
const Template = require("../Template");
|
|
11
|
+
const { compareModulesByIdentifier } = require("../util/comparators");
|
|
11
12
|
|
|
12
|
-
/** @
|
|
13
|
-
/** @
|
|
14
|
-
/** @
|
|
15
|
-
/** @
|
|
16
|
-
/** @typedef {import("../Compilation")} Compilation */
|
|
17
|
-
/** @typedef {import("./RemoteModule")} RemoteModule */
|
|
13
|
+
/** @import Chunk, { ChunkId } from "../Chunk" */
|
|
14
|
+
/** @import ChunkGraph, { ModuleId } from "../ChunkGraph" */
|
|
15
|
+
/** @import Compilation from "../Compilation" */
|
|
16
|
+
/** @import RemoteModule from "./RemoteModule" */
|
|
18
17
|
|
|
19
18
|
class RemoteRuntimeModule extends RuntimeModule {
|
|
20
19
|
constructor() {
|
|
@@ -36,9 +35,12 @@ class RemoteRuntimeModule extends RuntimeModule {
|
|
|
36
35
|
for (const chunk of /** @type {Chunk} */ (
|
|
37
36
|
this.chunk
|
|
38
37
|
).getAllReferencedChunks()) {
|
|
39
|
-
|
|
38
|
+
// ordered explicitly: an unordered read reflects whichever comparator
|
|
39
|
+
// last sorted the chunk's modules, which is not ours to depend on
|
|
40
|
+
const modules = chunkGraph.getOrderedChunkModulesIterableBySourceType(
|
|
40
41
|
chunk,
|
|
41
|
-
"remote"
|
|
42
|
+
"remote",
|
|
43
|
+
compareModulesByIdentifier
|
|
42
44
|
);
|
|
43
45
|
if (!modules) continue;
|
|
44
46
|
/** @type {ModuleId[]} */
|