@depup/webpack 5.109.2-depup.0 → 5.110.3-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 +5 -5
- package/changes.json +7 -7
- 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 +46 -35
- package/lib/ChunkGroup.js +7 -7
- package/lib/ChunkTemplate.js +35 -44
- package/lib/CircularModulesPlugin.js +205 -28
- package/lib/CleanPlugin.js +4 -7
- package/lib/CodeGenerationResults.js +11 -8
- package/lib/CompatibilityPlugin.js +7 -7
- package/lib/Compilation.js +688 -409
- package/lib/Compiler.js +53 -38
- package/lib/ConcatenationScope.js +107 -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 +121 -37
- 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 +91 -26
- 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 +111 -14
- package/lib/ExportsInfoApiPlugin.js +2 -4
- package/lib/ExternalModule.js +232 -77
- package/lib/ExternalModuleFactoryPlugin.js +97 -38
- package/lib/ExternalsPlugin.js +10 -6
- package/lib/FileSystemInfo.js +44 -70
- package/lib/FlagAllModulesAsUsedPlugin.js +2 -3
- package/lib/FlagDependencyExportsPlugin.js +76 -19
- package/lib/FlagDependencyUsagePlugin.js +40 -49
- 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 +8 -4
- 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 +9 -4
- 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 +152 -103
- package/lib/NormalModuleFactory.js +555 -110
- 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 +335 -169
- package/lib/RuntimeTemplate.js +2761 -316
- 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 +32 -22
- 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 +12 -6
- 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 +30 -23
- 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 +270 -78
- package/lib/config/defineConfig.js +10 -2
- package/lib/config/getClaimedAssetTypes.js +65 -0
- package/lib/config/normalization.js +46 -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 +6 -11
- package/lib/container/ModuleFederationPlugin.js +7 -24
- 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 +171 -43
- package/lib/css/CssInjectStyleRuntimeModule.js +7 -5
- package/lib/css/CssLoadingRuntimeModule.js +84 -32
- package/lib/css/CssModule.js +10 -7
- package/lib/css/CssModulesPlugin.js +172 -100
- package/lib/css/CssParser.js +1113 -568
- package/lib/css/CssServerStylesRuntimeModule.js +54 -0
- package/lib/css/cssMinify.js +168 -0
- package/lib/css/data.js +5334 -0
- package/lib/css/syntax.js +9647 -232
- 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 +121 -45
- package/lib/dependencies/CommonJsExportsDependency.js +53 -49
- package/lib/dependencies/CommonJsExportsParserPlugin.js +207 -25
- package/lib/dependencies/CommonJsFullRequireDependency.js +119 -34
- package/lib/dependencies/CommonJsImportsParserPlugin.js +100 -50
- 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 +170 -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 +24 -11
- 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 +23 -14
- package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +80 -12
- package/lib/dependencies/HarmonyExportExpressionDependency.js +23 -18
- package/lib/dependencies/HarmonyExportHeaderDependency.js +7 -7
- package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +286 -80
- 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 +121 -60
- package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +124 -38
- package/lib/dependencies/HarmonyImportGuard.js +20 -30
- package/lib/dependencies/HarmonyImportSideEffectDependency.js +152 -9
- package/lib/dependencies/HarmonyImportSpecifierDependency.js +97 -49
- package/lib/dependencies/HarmonyModulesPlugin.js +7 -3
- package/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +1 -3
- package/lib/dependencies/HtmlEntryDependency.js +49 -31
- 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 +45 -5
- package/lib/dependencies/ImportDependency.js +33 -50
- 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 +73 -49
- 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 +50 -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 +47 -28
- package/lib/dependencies/WorkerDependency.js +22 -22
- package/lib/dependencies/WorkletDependency.js +18 -21
- package/lib/dependencies/getFunctionExpression.js +8 -4
- package/lib/dependencies/importOptionsCheck.js +47 -0
- 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/DotenvFileError.js +29 -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/ImportedBindingAssignmentError.js +30 -0
- 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 +86 -51
- package/lib/esm/ModuleChunkLoadingRuntimeModule.js +161 -62
- 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 +9 -6
- package/lib/hmr/parserHooks.js +56 -0
- package/lib/html/HtmlGenerator.js +277 -77
- package/lib/html/HtmlModule.js +7 -3
- package/lib/html/HtmlModulesPlugin.js +366 -200
- 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 +6034 -1384
- 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 +7 -8
- 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 +103 -123
- package/lib/javascript/JavascriptParser.js +242 -99
- 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 +2678 -232
- 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 +47 -6
- 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 +65 -19
- package/lib/node/ReadFileCompileWasmPlugin.js +28 -16
- package/lib/node/RequireChunkLoadingRuntimeModule.js +35 -38
- package/lib/node/nodeConsole.js +7 -3
- package/lib/optimize/AggressiveMergingPlugin.js +2 -2
- package/lib/optimize/AggressiveSplittingPlugin.js +9 -6
- package/lib/optimize/ConcatenatedModule.js +1030 -476
- package/lib/optimize/ConstExportsPlugin.js +16 -7
- package/lib/optimize/EnsureChunkConditionsPlugin.js +3 -3
- package/lib/optimize/FlagIncludedChunksPlugin.js +3 -4
- package/lib/optimize/InlineExports.js +130 -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 +51 -35
- package/lib/optimize/RealContentHashPlugin.js +121 -41
- 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 +86 -24
- 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 +295 -79
- 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 +6 -2
- 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 +34 -7
- 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 +46 -20
- package/lib/schemes/VirtualUrlPlugin.js +13 -7
- package/lib/serialization/AggregateErrorSerializer.js +1 -1
- package/lib/serialization/BinaryMiddleware.js +4 -4
- package/lib/serialization/ErrorObjectSerializer.js +1 -1
- package/lib/serialization/FileMiddleware.js +22 -9
- 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 +50 -29
- package/lib/stats/DefaultStatsPresetPlugin.js +17 -8
- package/lib/stats/DefaultStatsPrinterPlugin.js +36 -26
- package/lib/stats/StatsFactory.js +25 -26
- package/lib/stats/StatsPrinter.js +16 -12
- package/lib/typescript/TypeScriptPlugin.js +20 -24
- package/lib/url/URLParserPlugin.js +26 -13
- package/lib/util/ArrayQueue.js +3 -3
- 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 +1066 -24
- package/lib/util/StringXor.js +1 -1
- package/lib/util/URLAbsoluteSpecifier.js +3 -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 +10 -2
- package/lib/util/createHash.js +2 -2
- package/lib/util/createHooksRegistry.js +8 -10
- package/lib/util/createMappings.js +25 -3
- 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 +4 -0
- package/lib/util/implicitTypeLoaderFallback.js +1 -1
- package/lib/util/internalSerializables.js +8 -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/removeBOM.js +82 -1
- 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 +43 -21
- package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +45 -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 +29 -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 +105 -19
- package/lib/web/FetchCompileWasmPlugin.js +48 -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 +32 -25
- package/schemas/WebpackOptions.check.js +1 -1
- package/schemas/WebpackOptions.json +667 -34
- 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 +3223 -465
- package/lib/runtime/CommonJsWrapRuntimeModule.js +0 -37
|
@@ -7,20 +7,13 @@
|
|
|
7
7
|
|
|
8
8
|
const { WEBASSEMBLY_MODULE_TYPE_ASYNC } = require("../ModuleTypeConstants");
|
|
9
9
|
const RuntimeGlobals = require("../RuntimeGlobals");
|
|
10
|
-
const {
|
|
10
|
+
const { usesFullHashDigest } = require("../TemplatedPathPlugin");
|
|
11
|
+
const { needsRuntimeFullHash } = require("../wasm/wasmModuleFilename");
|
|
11
12
|
const AsyncWasmCompileRuntimeModule = require("../wasm-async/AsyncWasmCompileRuntimeModule");
|
|
12
13
|
const AsyncWasmLoadingRuntimeModule = require("../wasm-async/AsyncWasmLoadingRuntimeModule");
|
|
13
14
|
|
|
14
|
-
/** @
|
|
15
|
-
/** @
|
|
16
|
-
|
|
17
|
-
/**
|
|
18
|
-
* The wasm runtime inlines `[fullhash]` as a runtime `getFullHash()` call, so
|
|
19
|
-
* that runtime module must be requested (`[hash]` is the per-module hash here).
|
|
20
|
-
* @param {string} filename `output.webassemblyModuleFilename`
|
|
21
|
-
* @returns {boolean} whether it references the compilation `[fullhash]`
|
|
22
|
-
*/
|
|
23
|
-
const usesFullHash = (filename) => getPresentKinds(filename).has("fullhash");
|
|
15
|
+
/** @import Chunk from "../Chunk" */
|
|
16
|
+
/** @import Compiler from "../Compiler" */
|
|
24
17
|
|
|
25
18
|
const PLUGIN_NAME = "FetchCompileAsyncWasmPlugin";
|
|
26
19
|
|
|
@@ -53,13 +46,36 @@ class FetchCompileAsyncWasmPlugin {
|
|
|
53
46
|
return wasmLoading === "fetch";
|
|
54
47
|
};
|
|
55
48
|
/**
|
|
56
|
-
*
|
|
57
|
-
*
|
|
49
|
+
* Downloads the emitted wasm binary through the runtime
|
|
50
|
+
* `__webpack_require__.p` public path.
|
|
58
51
|
* @param {string} path path to the wasm file
|
|
59
52
|
* @returns {string} code to load the wasm file
|
|
60
53
|
*/
|
|
61
54
|
const generateLoadBinaryCode = (path) =>
|
|
62
55
|
`fetch(${RuntimeGlobals.publicPath} + ${path})`;
|
|
56
|
+
/**
|
|
57
|
+
* ESM-output variant: the analyzable `fetch(new URL(path, import.meta.url))`
|
|
58
|
+
* form (relative to the chunk, no runtime public-path global) that other
|
|
59
|
+
* bundlers and webpack itself can statically follow to the emitted wasm.
|
|
60
|
+
* @param {string} path path to the wasm file
|
|
61
|
+
* @returns {string} code to load the wasm file
|
|
62
|
+
*/
|
|
63
|
+
const generateAnalyzableLoadBinaryCode = (path) =>
|
|
64
|
+
`fetch(${compilation.runtimeTemplate.importMetaUrl(path)})`;
|
|
65
|
+
/**
|
|
66
|
+
* The call site already passes a complete `URL`, so no base is applied here.
|
|
67
|
+
* @param {string} path the wasm binary's URL expression
|
|
68
|
+
* @returns {string} code to load the wasm file
|
|
69
|
+
*/
|
|
70
|
+
const generateBakedLoadBinaryCode = (path) => `fetch(${path})`;
|
|
71
|
+
/**
|
|
72
|
+
* A settled public path is the same string the global would hold, and `fetch`
|
|
73
|
+
* reads both against the document, so the runtime module is not needed.
|
|
74
|
+
* @param {string} constant the settled public path
|
|
75
|
+
* @returns {(path: string) => string} code to load the wasm file
|
|
76
|
+
*/
|
|
77
|
+
const generateConstantLoadBinaryCode = (constant) => (path) =>
|
|
78
|
+
`fetch(${JSON.stringify(constant)} + ${path})`;
|
|
63
79
|
|
|
64
80
|
compilation.hooks.runtimeRequirementInTree
|
|
65
81
|
.for(RuntimeGlobals.instantiateWasm)
|
|
@@ -73,16 +89,51 @@ class FetchCompileAsyncWasmPlugin {
|
|
|
73
89
|
) {
|
|
74
90
|
return;
|
|
75
91
|
}
|
|
76
|
-
|
|
92
|
+
const baked = compilation.runtimeTemplate.supportsAnalyzable(
|
|
93
|
+
"wasm",
|
|
94
|
+
chunkGraph,
|
|
95
|
+
undefined,
|
|
96
|
+
chunk.runtime
|
|
97
|
+
);
|
|
98
|
+
const analyzable = compilation.runtimeTemplate.supportsAnalyzable(
|
|
99
|
+
"wasm-relative",
|
|
100
|
+
chunkGraph
|
|
101
|
+
);
|
|
102
|
+
// A baked URL carries the public path already, and a settled one is written
|
|
103
|
+
// out below; only a path nothing but the global knows asks for it.
|
|
104
|
+
const constant =
|
|
105
|
+
baked || analyzable
|
|
106
|
+
? undefined
|
|
107
|
+
: compilation.runtimeTemplate.constantPublicPath();
|
|
108
|
+
if (!baked && !analyzable && constant === undefined) {
|
|
109
|
+
set.add(RuntimeGlobals.publicPath);
|
|
110
|
+
}
|
|
111
|
+
// A baked URL is already a literal, so nothing interpolates the name.
|
|
77
112
|
if (
|
|
78
|
-
|
|
113
|
+
!baked &&
|
|
114
|
+
needsRuntimeFullHash(
|
|
115
|
+
/** @type {string} */ (
|
|
116
|
+
compilation.outputOptions.webassemblyModuleFilename
|
|
117
|
+
)
|
|
118
|
+
)
|
|
79
119
|
) {
|
|
80
120
|
set.add(RuntimeGlobals.getFullHash);
|
|
81
121
|
}
|
|
82
122
|
compilation.addRuntimeModule(
|
|
83
123
|
chunk,
|
|
84
124
|
new AsyncWasmLoadingRuntimeModule({
|
|
85
|
-
|
|
125
|
+
fullHashDigest: usesFullHashDigest(
|
|
126
|
+
/** @type {string} */ (
|
|
127
|
+
compilation.outputOptions.webassemblyModuleFilename
|
|
128
|
+
)
|
|
129
|
+
),
|
|
130
|
+
generateLoadBinaryCode: baked
|
|
131
|
+
? generateBakedLoadBinaryCode
|
|
132
|
+
: analyzable
|
|
133
|
+
? generateAnalyzableLoadBinaryCode
|
|
134
|
+
: constant === undefined
|
|
135
|
+
? generateLoadBinaryCode
|
|
136
|
+
: generateConstantLoadBinaryCode(constant),
|
|
86
137
|
supportsStreaming: true
|
|
87
138
|
})
|
|
88
139
|
);
|
|
@@ -100,16 +151,51 @@ class FetchCompileAsyncWasmPlugin {
|
|
|
100
151
|
) {
|
|
101
152
|
return;
|
|
102
153
|
}
|
|
103
|
-
|
|
154
|
+
const baked = compilation.runtimeTemplate.supportsAnalyzable(
|
|
155
|
+
"wasm",
|
|
156
|
+
chunkGraph,
|
|
157
|
+
undefined,
|
|
158
|
+
chunk.runtime
|
|
159
|
+
);
|
|
160
|
+
const analyzable = compilation.runtimeTemplate.supportsAnalyzable(
|
|
161
|
+
"wasm-relative",
|
|
162
|
+
chunkGraph
|
|
163
|
+
);
|
|
164
|
+
// A baked URL carries the public path already, and a settled one is written
|
|
165
|
+
// out below; only a path nothing but the global knows asks for it.
|
|
166
|
+
const constant =
|
|
167
|
+
baked || analyzable
|
|
168
|
+
? undefined
|
|
169
|
+
: compilation.runtimeTemplate.constantPublicPath();
|
|
170
|
+
if (!baked && !analyzable && constant === undefined) {
|
|
171
|
+
set.add(RuntimeGlobals.publicPath);
|
|
172
|
+
}
|
|
173
|
+
// A baked URL is already a literal, so nothing interpolates the name.
|
|
104
174
|
if (
|
|
105
|
-
|
|
175
|
+
!baked &&
|
|
176
|
+
needsRuntimeFullHash(
|
|
177
|
+
/** @type {string} */ (
|
|
178
|
+
compilation.outputOptions.webassemblyModuleFilename
|
|
179
|
+
)
|
|
180
|
+
)
|
|
106
181
|
) {
|
|
107
182
|
set.add(RuntimeGlobals.getFullHash);
|
|
108
183
|
}
|
|
109
184
|
compilation.addRuntimeModule(
|
|
110
185
|
chunk,
|
|
111
186
|
new AsyncWasmCompileRuntimeModule({
|
|
112
|
-
|
|
187
|
+
fullHashDigest: usesFullHashDigest(
|
|
188
|
+
/** @type {string} */ (
|
|
189
|
+
compilation.outputOptions.webassemblyModuleFilename
|
|
190
|
+
)
|
|
191
|
+
),
|
|
192
|
+
generateLoadBinaryCode: baked
|
|
193
|
+
? generateBakedLoadBinaryCode
|
|
194
|
+
: analyzable
|
|
195
|
+
? generateAnalyzableLoadBinaryCode
|
|
196
|
+
: constant === undefined
|
|
197
|
+
? generateLoadBinaryCode
|
|
198
|
+
: generateConstantLoadBinaryCode(constant),
|
|
113
199
|
supportsStreaming: true
|
|
114
200
|
})
|
|
115
201
|
);
|
|
@@ -7,19 +7,12 @@
|
|
|
7
7
|
|
|
8
8
|
const { WEBASSEMBLY_MODULE_TYPE_SYNC } = require("../ModuleTypeConstants");
|
|
9
9
|
const RuntimeGlobals = require("../RuntimeGlobals");
|
|
10
|
-
const {
|
|
10
|
+
const { usesFullHashDigest } = require("../TemplatedPathPlugin");
|
|
11
|
+
const { needsRuntimeFullHash } = require("../wasm/wasmModuleFilename");
|
|
11
12
|
const WasmChunkLoadingRuntimeModule = require("../wasm-sync/WasmChunkLoadingRuntimeModule");
|
|
12
13
|
|
|
13
|
-
/** @
|
|
14
|
-
/** @
|
|
15
|
-
|
|
16
|
-
/**
|
|
17
|
-
* The wasm runtime inlines `[fullhash]` as a runtime `getFullHash()` call, so
|
|
18
|
-
* that runtime module must be requested (`[hash]` is the per-module hash here).
|
|
19
|
-
* @param {string} filename `output.webassemblyModuleFilename`
|
|
20
|
-
* @returns {boolean} whether it references the compilation `[fullhash]`
|
|
21
|
-
*/
|
|
22
|
-
const usesFullHash = (filename) => getPresentKinds(filename).has("fullhash");
|
|
14
|
+
/** @import Chunk from "../Chunk" */
|
|
15
|
+
/** @import Compiler from "../Compiler" */
|
|
23
16
|
|
|
24
17
|
/**
|
|
25
18
|
* Options that influence how synchronous WebAssembly modules are emitted for
|
|
@@ -68,13 +61,30 @@ class FetchCompileWasmPlugin {
|
|
|
68
61
|
return wasmLoading === "fetch";
|
|
69
62
|
};
|
|
70
63
|
/**
|
|
71
|
-
*
|
|
72
|
-
*
|
|
64
|
+
* Downloads the emitted wasm binary through the runtime
|
|
65
|
+
* `__webpack_require__.p` public path.
|
|
73
66
|
* @param {string} path path to the wasm file
|
|
74
67
|
* @returns {string} code to load the wasm file
|
|
75
68
|
*/
|
|
76
69
|
const generateLoadBinaryCode = (path) =>
|
|
77
70
|
`fetch(${RuntimeGlobals.publicPath} + ${path})`;
|
|
71
|
+
/**
|
|
72
|
+
* ESM-output variant: the analyzable `fetch(new URL(path, import.meta.url))`
|
|
73
|
+
* form (relative to the chunk, no runtime public-path global) that other
|
|
74
|
+
* bundlers and webpack itself can statically follow to the emitted wasm.
|
|
75
|
+
* @param {string} path path to the wasm file
|
|
76
|
+
* @returns {string} code to load the wasm file
|
|
77
|
+
*/
|
|
78
|
+
const generateAnalyzableLoadBinaryCode = (path) =>
|
|
79
|
+
`fetch(${compilation.runtimeTemplate.importMetaUrl(path)})`;
|
|
80
|
+
/**
|
|
81
|
+
* A public path that never changes is the same string the global would hold,
|
|
82
|
+
* so it is inlined and the runtime module that sets it is not needed.
|
|
83
|
+
* @param {string} constant the settled public path
|
|
84
|
+
* @returns {(path: string) => string} code to load the wasm file
|
|
85
|
+
*/
|
|
86
|
+
const generateConstantLoadBinaryCode = (constant) => (path) =>
|
|
87
|
+
`fetch(${JSON.stringify(constant)} + ${path})`;
|
|
78
88
|
|
|
79
89
|
compilation.hooks.runtimeRequirementInTree
|
|
80
90
|
.for(RuntimeGlobals.ensureChunkHandlers)
|
|
@@ -89,16 +99,38 @@ class FetchCompileWasmPlugin {
|
|
|
89
99
|
return;
|
|
90
100
|
}
|
|
91
101
|
set.add(RuntimeGlobals.moduleCache);
|
|
92
|
-
|
|
102
|
+
const analyzable = compilation.runtimeTemplate.supportsAnalyzable(
|
|
103
|
+
"wasm-relative",
|
|
104
|
+
chunkGraph
|
|
105
|
+
);
|
|
106
|
+
const constant = analyzable
|
|
107
|
+
? undefined
|
|
108
|
+
: compilation.runtimeTemplate.constantPublicPath();
|
|
109
|
+
if (!analyzable && constant === undefined) {
|
|
110
|
+
set.add(RuntimeGlobals.publicPath);
|
|
111
|
+
}
|
|
93
112
|
if (
|
|
94
|
-
|
|
113
|
+
needsRuntimeFullHash(
|
|
114
|
+
/** @type {string} */ (
|
|
115
|
+
compilation.outputOptions.webassemblyModuleFilename
|
|
116
|
+
)
|
|
117
|
+
)
|
|
95
118
|
) {
|
|
96
119
|
set.add(RuntimeGlobals.getFullHash);
|
|
97
120
|
}
|
|
98
121
|
compilation.addRuntimeModule(
|
|
99
122
|
chunk,
|
|
100
123
|
new WasmChunkLoadingRuntimeModule({
|
|
101
|
-
|
|
124
|
+
fullHashDigest: usesFullHashDigest(
|
|
125
|
+
/** @type {string} */ (
|
|
126
|
+
compilation.outputOptions.webassemblyModuleFilename
|
|
127
|
+
)
|
|
128
|
+
),
|
|
129
|
+
generateLoadBinaryCode: analyzable
|
|
130
|
+
? generateAnalyzableLoadBinaryCode
|
|
131
|
+
: constant === undefined
|
|
132
|
+
? generateLoadBinaryCode
|
|
133
|
+
: generateConstantLoadBinaryCode(constant),
|
|
102
134
|
supportsStreaming: true,
|
|
103
135
|
mangleImports: this.options.mangleImports,
|
|
104
136
|
runtimeRequirements: set
|
|
@@ -6,11 +6,16 @@
|
|
|
6
6
|
"use strict";
|
|
7
7
|
|
|
8
8
|
const RuntimeGlobals = require("../RuntimeGlobals");
|
|
9
|
-
const
|
|
9
|
+
const lazyModule = require("../util/lazyModule");
|
|
10
10
|
|
|
11
|
-
/** @
|
|
12
|
-
/** @
|
|
13
|
-
/** @
|
|
11
|
+
/** @import Chunk from "../Chunk" */
|
|
12
|
+
/** @import Compiler from "../Compiler" */
|
|
13
|
+
/** @import { RuntimeRequirements } from "../Module" */
|
|
14
|
+
|
|
15
|
+
// only a chunk that loads other chunks at runtime emits this
|
|
16
|
+
const getJsonpChunkLoadingRuntimeModule = lazyModule(() =>
|
|
17
|
+
require("./JsonpChunkLoadingRuntimeModule")
|
|
18
|
+
);
|
|
14
19
|
|
|
15
20
|
const PLUGIN_NAME = "JsonpChunkLoadingPlugin";
|
|
16
21
|
|
|
@@ -55,28 +60,47 @@ class JsonpChunkLoadingPlugin {
|
|
|
55
60
|
if (onceForChunkSet.has(chunk)) return;
|
|
56
61
|
onceForChunkSet.add(chunk);
|
|
57
62
|
if (!isEnabledForChunk(chunk)) return;
|
|
58
|
-
|
|
59
|
-
set.add(RuntimeGlobals.hasOwnProperty);
|
|
60
|
-
compilation.addRuntimeModule(
|
|
63
|
+
compilation.addLazyRuntimeModule(
|
|
61
64
|
chunk,
|
|
62
|
-
|
|
65
|
+
getJsonpChunkLoadingRuntimeModule,
|
|
66
|
+
(Ctor) => new Ctor(set)
|
|
63
67
|
);
|
|
64
68
|
};
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
.
|
|
76
|
-
.
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
.
|
|
69
|
+
/**
|
|
70
|
+
* Installing a chunk, on load or on a hot update, is the only part that writes
|
|
71
|
+
* the module factories and looks a chunk id up; a base uri or `onChunksLoaded`
|
|
72
|
+
* comes without either. Kept off `handler`, which runs once per chunk and so
|
|
73
|
+
* cannot see which of the requirements below the chunk ends up with.
|
|
74
|
+
* @param {Chunk} chunk chunk to check
|
|
75
|
+
* @param {RuntimeRequirements} set runtime requirements
|
|
76
|
+
*/
|
|
77
|
+
const installHandler = (chunk, set) => {
|
|
78
|
+
if (!isEnabledForChunk(chunk)) return;
|
|
79
|
+
set.add(RuntimeGlobals.moduleFactoriesAddOnly);
|
|
80
|
+
set.add(RuntimeGlobals.hasOwnProperty);
|
|
81
|
+
};
|
|
82
|
+
for (const requirement of [
|
|
83
|
+
RuntimeGlobals.ensureChunkHandlers,
|
|
84
|
+
RuntimeGlobals.hmrDownloadUpdateHandlers,
|
|
85
|
+
RuntimeGlobals.hmrDownloadManifest,
|
|
86
|
+
RuntimeGlobals.baseURI,
|
|
87
|
+
RuntimeGlobals.onChunksLoaded
|
|
88
|
+
]) {
|
|
89
|
+
compilation.hooks.runtimeRequirementInTree
|
|
90
|
+
.for(requirement)
|
|
91
|
+
.tap(PLUGIN_NAME, handler);
|
|
92
|
+
}
|
|
93
|
+
for (const requirement of [
|
|
94
|
+
RuntimeGlobals.ensureChunkHandlers,
|
|
95
|
+
RuntimeGlobals.chunkCallback,
|
|
96
|
+
RuntimeGlobals.hmrDownloadUpdateHandlers,
|
|
97
|
+
RuntimeGlobals.prefetchChunkHandlers,
|
|
98
|
+
RuntimeGlobals.preloadChunkHandlers
|
|
99
|
+
]) {
|
|
100
|
+
compilation.hooks.runtimeRequirementInTree
|
|
101
|
+
.for(requirement)
|
|
102
|
+
.tap(PLUGIN_NAME, installHandler);
|
|
103
|
+
}
|
|
80
104
|
|
|
81
105
|
compilation.hooks.runtimeRequirementInTree
|
|
82
106
|
.for(RuntimeGlobals.ensureChunkHandlers)
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
"use strict";
|
|
6
6
|
|
|
7
7
|
const { SyncWaterfallHook } = require("tapable");
|
|
8
|
-
/** @
|
|
8
|
+
/** @import Compilation from "../Compilation" */
|
|
9
9
|
const RuntimeGlobals = require("../RuntimeGlobals");
|
|
10
10
|
const RuntimeModule = require("../RuntimeModule");
|
|
11
11
|
const Template = require("../Template");
|
|
@@ -14,12 +14,13 @@ const {
|
|
|
14
14
|
} = require("../hmr/JavascriptHotModuleReplacementHelper");
|
|
15
15
|
const chunkHasJs = require("../javascript/JavascriptModulesPlugin").chunkHasJs;
|
|
16
16
|
const { getInitialChunkIds } = require("../javascript/StartupHelpers");
|
|
17
|
+
const { renderBaseUri } = require("../runtime/baseUri");
|
|
17
18
|
const compileBooleanMatcher = require("../util/compileBooleanMatcher");
|
|
18
19
|
const createHooksRegistry = require("../util/createHooksRegistry");
|
|
19
20
|
|
|
20
|
-
/** @
|
|
21
|
-
/** @
|
|
22
|
-
/** @
|
|
21
|
+
/** @import Chunk from "../Chunk" */
|
|
22
|
+
/** @import ChunkGraph from "../ChunkGraph" */
|
|
23
|
+
/** @import { ReadOnlyRuntimeRequirements } from "../Module" */
|
|
23
24
|
|
|
24
25
|
/**
|
|
25
26
|
* @typedef {object} JsonpCompilationPluginHooks
|
|
@@ -44,10 +45,10 @@ class JsonpChunkLoadingRuntimeModule extends RuntimeModule {
|
|
|
44
45
|
*/
|
|
45
46
|
_generateBaseUri(chunk) {
|
|
46
47
|
const options = chunk.getEntryOptions();
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
48
|
+
return renderBaseUri(
|
|
49
|
+
options ? options.baseUri : undefined,
|
|
50
|
+
"(typeof document !== 'undefined' && document.baseURI) || self.location.href"
|
|
51
|
+
);
|
|
51
52
|
}
|
|
52
53
|
|
|
53
54
|
/**
|
|
@@ -63,9 +64,11 @@ class JsonpChunkLoadingRuntimeModule extends RuntimeModule {
|
|
|
63
64
|
hotUpdateGlobal,
|
|
64
65
|
crossOriginLoading,
|
|
65
66
|
scriptType,
|
|
66
|
-
charset
|
|
67
|
+
charset,
|
|
68
|
+
resourceHints
|
|
67
69
|
}
|
|
68
70
|
} = compilation;
|
|
71
|
+
const dedupePrefetch = Boolean(resourceHints && resourceHints.dedupe);
|
|
69
72
|
const globalObject = runtimeTemplate.globalObject;
|
|
70
73
|
const { linkPreload, linkPrefetch } =
|
|
71
74
|
JsonpChunkLoadingRuntimeModule.getCompilationHooks(compilation);
|
|
@@ -115,17 +118,33 @@ class JsonpChunkLoadingRuntimeModule extends RuntimeModule {
|
|
|
115
118
|
",\n"
|
|
116
119
|
)
|
|
117
120
|
)}\n}`;
|
|
121
|
+
// Every part below that reads the table. A chunk asking only for `.b` gets this
|
|
122
|
+
// module for the base uri alone, and then has nothing to look up.
|
|
123
|
+
const withInstalledChunks =
|
|
124
|
+
withLoading ||
|
|
125
|
+
withCallback ||
|
|
126
|
+
withOnChunkLoad ||
|
|
127
|
+
withHmr ||
|
|
128
|
+
withPrefetch ||
|
|
129
|
+
withPreload;
|
|
118
130
|
return Template.asString([
|
|
119
131
|
withBaseURI ? this._generateBaseUri(chunk) : "// no baseURI",
|
|
120
132
|
"",
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
133
|
+
withInstalledChunks
|
|
134
|
+
? Template.asString([
|
|
135
|
+
"// object to store loaded and loading chunks",
|
|
136
|
+
"// undefined = chunk not loaded, null = chunk preloaded/prefetched",
|
|
137
|
+
"// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded",
|
|
138
|
+
`${cst} installedChunks = ${
|
|
139
|
+
stateExpression
|
|
140
|
+
? runtimeTemplate.assignOr(
|
|
141
|
+
stateExpression,
|
|
142
|
+
installedChunksObject
|
|
143
|
+
)
|
|
144
|
+
: installedChunksObject
|
|
145
|
+
};`
|
|
146
|
+
])
|
|
147
|
+
: "// no installed chunks",
|
|
129
148
|
"",
|
|
130
149
|
withLoading
|
|
131
150
|
? Template.asString([
|
|
@@ -156,8 +175,6 @@ class JsonpChunkLoadingRuntimeModule extends RuntimeModule {
|
|
|
156
175
|
)});`,
|
|
157
176
|
"promises.push(installedChunkData[2] = promise);",
|
|
158
177
|
"",
|
|
159
|
-
"// start chunk loading",
|
|
160
|
-
`${cst} url = ${RuntimeGlobals.publicPath} + ${RuntimeGlobals.getChunkScriptFilename}(chunkId);`,
|
|
161
178
|
"// create error before stack unwound to get useful stacktrace later",
|
|
162
179
|
`${cst} error = new Error();`,
|
|
163
180
|
`${cst} loadingEnded = ${runtimeTemplate.basicFunction(
|
|
@@ -185,7 +202,7 @@ class JsonpChunkLoadingRuntimeModule extends RuntimeModule {
|
|
|
185
202
|
)};`,
|
|
186
203
|
`${
|
|
187
204
|
RuntimeGlobals.loadScript
|
|
188
|
-
}(
|
|
205
|
+
}(${RuntimeGlobals.publicPath} + ${RuntimeGlobals.getChunkScriptFilename}(chunkId), loadingEnded, "chunk-" + chunkId, chunkId${
|
|
189
206
|
withFetchPriority ? ", fetchPriority" : ""
|
|
190
207
|
});`
|
|
191
208
|
]),
|
|
@@ -233,6 +250,19 @@ class JsonpChunkLoadingRuntimeModule extends RuntimeModule {
|
|
|
233
250
|
]),
|
|
234
251
|
chunk
|
|
235
252
|
),
|
|
253
|
+
dedupePrefetch
|
|
254
|
+
? Template.asString([
|
|
255
|
+
// Chrome re-requests a resource when a prefetch link is added
|
|
256
|
+
// after it was already (pre)loaded via markup; skip in that case.
|
|
257
|
+
`${cst} links = document.getElementsByTagName("link");`,
|
|
258
|
+
`for(${lt} i = 0; i < links.length; i++) {`,
|
|
259
|
+
Template.indent([
|
|
260
|
+
`${cst} l = links[i];`,
|
|
261
|
+
'if(l.href === link.href && (l.rel === "prefetch" || l.rel === "preload" || l.rel === "modulepreload")) return;'
|
|
262
|
+
]),
|
|
263
|
+
"}"
|
|
264
|
+
])
|
|
265
|
+
: "",
|
|
236
266
|
"document.head.appendChild(link);"
|
|
237
267
|
]),
|
|
238
268
|
"}"
|
|
@@ -9,8 +9,8 @@ const ArrayPushCallbackChunkFormatPlugin = require("../javascript/ArrayPushCallb
|
|
|
9
9
|
const EnableChunkLoadingPlugin = require("../javascript/EnableChunkLoadingPlugin");
|
|
10
10
|
const JsonpChunkLoadingRuntimeModule = require("./JsonpChunkLoadingRuntimeModule");
|
|
11
11
|
|
|
12
|
-
/** @
|
|
13
|
-
/** @
|
|
12
|
+
/** @import Compilation from "../Compilation" */
|
|
13
|
+
/** @import Compiler from "../Compiler" */
|
|
14
14
|
|
|
15
15
|
// TODO webpack 6 remove this class
|
|
16
16
|
class JsonpTemplatePlugin {
|
package/lib/webpack.js
CHANGED
|
@@ -11,7 +11,6 @@ const webpackOptionsSchema =
|
|
|
11
11
|
/** @type {EXPECTED_ANY} */
|
|
12
12
|
(require("../schemas/WebpackOptions.json"));
|
|
13
13
|
const Compiler = require("./Compiler");
|
|
14
|
-
const MultiCompiler = require("./MultiCompiler");
|
|
15
14
|
const WebpackOptionsApply = require("./WebpackOptionsApply");
|
|
16
15
|
const {
|
|
17
16
|
applyWebpackOptionsBaseDefaults,
|
|
@@ -24,20 +23,31 @@ const {
|
|
|
24
23
|
const NodeEnvironmentPlugin = require("./node/NodeEnvironmentPlugin");
|
|
25
24
|
const memoize = require("./util/memoize");
|
|
26
25
|
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
/**
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
26
|
+
const getValidateSchema = memoize(() => require("./validateSchema"));
|
|
27
|
+
const getMultiCompiler = memoize(() => require("./MultiCompiler"));
|
|
28
|
+
const getProgressPlugin = memoize(() => require("./ProgressPlugin"));
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* @import {
|
|
32
|
+
* WebpackOptions,
|
|
33
|
+
* WatchOptions
|
|
34
|
+
* } from "../declarations/WebpackOptions"
|
|
35
|
+
*/
|
|
36
|
+
/** @import { WebpackOptionsNormalizedWithDefaults } from "./config/defaults" */
|
|
37
|
+
/** @import { WebpackOptionsInterception } from "./config/normalization" */
|
|
38
|
+
/**
|
|
39
|
+
* @import MultiCompiler, {
|
|
40
|
+
* MultiCompilerOptions,
|
|
41
|
+
* MultiWebpackOptions
|
|
42
|
+
* } from "./MultiCompiler"
|
|
43
|
+
*/
|
|
44
|
+
/** @import MultiStats from "./MultiStats" */
|
|
45
|
+
/** @import Stats from "./Stats" */
|
|
35
46
|
|
|
36
47
|
/** @typedef {(this: Compiler, compiler: Compiler) => void} WebpackPluginFunction */
|
|
37
48
|
/** @typedef {(compiler: Compiler) => void} WebpackPluginInstanceApplyFunction */
|
|
38
49
|
|
|
39
|
-
|
|
40
|
-
const getProgressPlugin = memoize(() => require("./ProgressPlugin"));
|
|
50
|
+
// only an array config reaches the multi compiler
|
|
41
51
|
|
|
42
52
|
/**
|
|
43
53
|
* Whether core should auto-apply progress, from `infrastructureLogging.progress`.
|
|
@@ -102,6 +112,7 @@ const applyDefaultProgressPlugin = (compiler, options, hasUserPlugin) => {
|
|
|
102
112
|
* @returns {MultiCompiler} a multi-compiler
|
|
103
113
|
*/
|
|
104
114
|
const createMultiCompiler = (childOptions, options) => {
|
|
115
|
+
const MultiCompiler = getMultiCompiler();
|
|
105
116
|
const compilers = childOptions.map((options, index) =>
|
|
106
117
|
createCompiler(options, index)
|
|
107
118
|
);
|
|
@@ -7,11 +7,16 @@
|
|
|
7
7
|
|
|
8
8
|
const RuntimeGlobals = require("../RuntimeGlobals");
|
|
9
9
|
const StartupChunkDependenciesPlugin = require("../runtime/StartupChunkDependenciesPlugin");
|
|
10
|
-
const
|
|
10
|
+
const lazyModule = require("../util/lazyModule");
|
|
11
11
|
|
|
12
|
-
/** @
|
|
13
|
-
/** @
|
|
14
|
-
/** @
|
|
12
|
+
/** @import Chunk from "../Chunk" */
|
|
13
|
+
/** @import Compiler from "../Compiler" */
|
|
14
|
+
/** @import { RuntimeRequirements } from "../Module" */
|
|
15
|
+
|
|
16
|
+
// only a chunk that loads other chunks at runtime emits this
|
|
17
|
+
const getImportScriptsChunkLoadingRuntimeModule = lazyModule(() =>
|
|
18
|
+
require("./ImportScriptsChunkLoadingRuntimeModule")
|
|
19
|
+
);
|
|
15
20
|
|
|
16
21
|
const PLUGIN_NAME = "ImportScriptsChunkLoadingPlugin";
|
|
17
22
|
|
|
@@ -62,31 +67,60 @@ class ImportScriptsChunkLoadingPlugin {
|
|
|
62
67
|
const withCreateScriptUrl = Boolean(
|
|
63
68
|
compilation.outputOptions.trustedTypes
|
|
64
69
|
);
|
|
65
|
-
|
|
66
|
-
set.add(RuntimeGlobals.hasOwnProperty);
|
|
67
|
-
if (withCreateScriptUrl) {
|
|
68
|
-
set.add(RuntimeGlobals.createScriptUrl);
|
|
69
|
-
}
|
|
70
|
-
compilation.addRuntimeModule(
|
|
70
|
+
compilation.addLazyRuntimeModule(
|
|
71
71
|
chunk,
|
|
72
|
-
|
|
72
|
+
getImportScriptsChunkLoadingRuntimeModule,
|
|
73
|
+
(Ctor) => new Ctor(set, withCreateScriptUrl)
|
|
73
74
|
);
|
|
74
75
|
};
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
.
|
|
86
|
-
.
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
.
|
|
76
|
+
/**
|
|
77
|
+
* Installing a chunk is the only part that writes the module factories and
|
|
78
|
+
* looks a chunk id up; a base uri or `onChunksLoaded` comes without either.
|
|
79
|
+
* Kept off `handler`, which runs once per chunk and so cannot see which of the
|
|
80
|
+
* requirements below the chunk ends up with.
|
|
81
|
+
* @param {Chunk} chunk chunk
|
|
82
|
+
* @param {RuntimeRequirements} set runtime requirements
|
|
83
|
+
*/
|
|
84
|
+
const installHandler = (chunk, set) => {
|
|
85
|
+
if (!isEnabledForChunk(chunk)) return;
|
|
86
|
+
set.add(RuntimeGlobals.moduleFactoriesAddOnly);
|
|
87
|
+
set.add(RuntimeGlobals.hasOwnProperty);
|
|
88
|
+
};
|
|
89
|
+
for (const requirement of [
|
|
90
|
+
RuntimeGlobals.ensureChunkHandlers,
|
|
91
|
+
RuntimeGlobals.hmrDownloadUpdateHandlers,
|
|
92
|
+
RuntimeGlobals.hmrDownloadManifest,
|
|
93
|
+
RuntimeGlobals.baseURI,
|
|
94
|
+
RuntimeGlobals.onChunksLoaded
|
|
95
|
+
]) {
|
|
96
|
+
compilation.hooks.runtimeRequirementInTree
|
|
97
|
+
.for(requirement)
|
|
98
|
+
.tap(PLUGIN_NAME, handler);
|
|
99
|
+
}
|
|
100
|
+
for (const requirement of [
|
|
101
|
+
RuntimeGlobals.ensureChunkHandlers,
|
|
102
|
+
RuntimeGlobals.chunkCallback,
|
|
103
|
+
RuntimeGlobals.hmrDownloadUpdateHandlers
|
|
104
|
+
]) {
|
|
105
|
+
compilation.hooks.runtimeRequirementInTree
|
|
106
|
+
.for(requirement)
|
|
107
|
+
.tap(PLUGIN_NAME, installHandler);
|
|
108
|
+
}
|
|
109
|
+
// Both `importScripts` calls the module emits — loading a chunk and loading a
|
|
110
|
+
// hot update — are wrapped under trusted types.
|
|
111
|
+
for (const requirement of [
|
|
112
|
+
RuntimeGlobals.ensureChunkHandlers,
|
|
113
|
+
RuntimeGlobals.hmrDownloadUpdateHandlers
|
|
114
|
+
]) {
|
|
115
|
+
compilation.hooks.runtimeRequirementInTree
|
|
116
|
+
.for(requirement)
|
|
117
|
+
.tap(PLUGIN_NAME, (chunk, set) => {
|
|
118
|
+
if (!isEnabledForChunk(chunk)) return;
|
|
119
|
+
if (compilation.outputOptions.trustedTypes) {
|
|
120
|
+
set.add(RuntimeGlobals.createScriptUrl);
|
|
121
|
+
}
|
|
122
|
+
});
|
|
123
|
+
}
|
|
90
124
|
|
|
91
125
|
compilation.hooks.runtimeRequirementInTree
|
|
92
126
|
.for(RuntimeGlobals.ensureChunkHandlers)
|