webpack 5.59.0 → 5.94.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +48 -38
- package/bin/webpack.js +34 -10
- package/hot/dev-server.js +19 -5
- package/hot/lazy-compilation-node.js +13 -1
- package/hot/lazy-compilation-web.js +9 -0
- package/hot/log-apply-result.js +5 -0
- package/hot/log.js +23 -4
- package/hot/only-dev-server.js +3 -2
- package/hot/poll.js +5 -2
- package/hot/signal.js +6 -2
- package/lib/APIPlugin.js +226 -122
- package/lib/AbstractMethodError.js +10 -5
- package/lib/AsyncDependenciesBlock.js +13 -5
- package/lib/AutomaticPrefetchPlugin.js +2 -1
- package/lib/BannerPlugin.js +33 -12
- package/lib/Cache.js +16 -12
- package/lib/CacheFacade.js +13 -16
- package/lib/CaseSensitiveModulesWarning.js +8 -8
- package/lib/Chunk.js +60 -33
- package/lib/ChunkGraph.js +207 -72
- package/lib/ChunkGroup.js +40 -20
- package/lib/ChunkTemplate.js +43 -0
- package/lib/CleanPlugin.js +117 -32
- package/lib/CodeGenerationResults.js +8 -7
- package/lib/CommentCompilationWarning.js +0 -1
- package/lib/CompatibilityPlugin.js +85 -46
- package/lib/Compilation.js +712 -392
- package/lib/Compiler.js +393 -172
- package/lib/ConcatenationScope.js +10 -13
- package/lib/ConditionalInitFragment.js +22 -14
- package/lib/ConstPlugin.js +104 -64
- package/lib/ContextExclusionPlugin.js +3 -3
- package/lib/ContextModule.js +283 -108
- package/lib/ContextModuleFactory.js +151 -63
- package/lib/ContextReplacementPlugin.js +25 -10
- package/lib/CssModule.js +166 -0
- package/lib/DefinePlugin.js +254 -148
- package/lib/DelegatedModule.js +29 -6
- package/lib/DelegatedModuleFactoryPlugin.js +42 -22
- package/lib/DelegatedPlugin.js +4 -0
- package/lib/DependenciesBlock.js +17 -2
- package/lib/Dependency.js +58 -29
- package/lib/DependencyTemplate.js +24 -3
- package/lib/DependencyTemplates.js +2 -2
- package/lib/DllEntryPlugin.js +18 -1
- package/lib/DllModule.js +21 -4
- package/lib/DllModuleFactory.js +2 -1
- package/lib/DllPlugin.js +9 -7
- package/lib/DllReferencePlugin.js +50 -19
- package/lib/EntryOptionPlugin.js +6 -1
- package/lib/EntryPlugin.js +7 -4
- package/lib/Entrypoint.js +2 -2
- package/lib/EnvironmentNotSupportAsyncWarning.js +52 -0
- package/lib/EnvironmentPlugin.js +5 -2
- package/lib/ErrorHelpers.js +65 -26
- package/lib/EvalDevToolModulePlugin.js +37 -13
- package/lib/EvalSourceMapDevToolPlugin.js +50 -20
- package/lib/ExportsInfo.js +234 -133
- package/lib/ExportsInfoApiPlugin.js +31 -15
- package/lib/ExternalModule.js +391 -129
- package/lib/ExternalModuleFactoryPlugin.js +65 -17
- package/lib/FileSystemInfo.js +1038 -523
- package/lib/FlagAllModulesAsUsedPlugin.js +27 -27
- package/lib/FlagDependencyExportsPlugin.js +352 -349
- package/lib/FlagDependencyUsagePlugin.js +10 -10
- package/lib/FlagEntryExportAsUsedPlugin.js +26 -23
- package/lib/Generator.js +16 -8
- package/lib/GraphHelpers.js +3 -2
- package/lib/HookWebpackError.js +11 -13
- package/lib/HotModuleReplacementPlugin.js +221 -128
- package/lib/IgnoreErrorModuleFactory.js +4 -4
- package/lib/IgnorePlugin.js +5 -4
- package/lib/IgnoreWarningsPlugin.js +6 -9
- package/lib/InitFragment.js +39 -15
- package/lib/JavascriptMetaInfoPlugin.js +27 -15
- package/lib/LibManifestPlugin.js +45 -16
- package/lib/LoaderOptionsPlugin.js +13 -3
- package/lib/MainTemplate.js +74 -21
- package/lib/Module.js +155 -34
- package/lib/ModuleBuildError.js +13 -11
- package/lib/ModuleDependencyError.js +6 -4
- package/lib/ModuleDependencyWarning.js +6 -4
- package/lib/ModuleError.js +10 -5
- package/lib/ModuleFactory.js +4 -4
- package/lib/ModuleFilenameHelpers.js +164 -54
- package/lib/ModuleGraph.js +93 -53
- package/lib/ModuleGraphConnection.js +27 -13
- package/lib/ModuleHashingError.js +29 -0
- package/lib/ModuleInfoHeaderPlugin.js +92 -33
- package/lib/ModuleNotFoundError.js +5 -2
- package/lib/ModuleParseError.js +17 -9
- package/lib/ModuleProfile.js +1 -0
- package/lib/ModuleRestoreError.js +3 -1
- package/lib/ModuleStoreError.js +3 -2
- package/lib/ModuleTemplate.js +33 -1
- package/lib/ModuleTypeConstants.js +168 -0
- package/lib/ModuleWarning.js +10 -5
- package/lib/MultiCompiler.js +115 -38
- package/lib/MultiStats.js +75 -33
- package/lib/MultiWatching.js +6 -2
- package/lib/NodeStuffPlugin.js +136 -37
- package/lib/NormalModule.js +437 -194
- package/lib/NormalModuleFactory.js +313 -116
- package/lib/NormalModuleReplacementPlugin.js +10 -4
- package/lib/NullFactory.js +1 -1
- package/lib/OptimizationStages.js +3 -3
- package/lib/Parser.js +1 -1
- package/lib/PlatformPlugin.js +39 -0
- package/lib/PrefetchPlugin.js +4 -0
- package/lib/ProgressPlugin.js +83 -28
- package/lib/ProvidePlugin.js +37 -19
- package/lib/RawModule.js +18 -5
- package/lib/RecordIdsPlugin.js +8 -8
- package/lib/RequireJsStuffPlugin.js +22 -15
- package/lib/ResolverFactory.js +8 -4
- package/lib/RuntimeGlobals.js +99 -65
- package/lib/RuntimeModule.js +17 -15
- package/lib/RuntimePlugin.js +116 -13
- package/lib/RuntimeTemplate.js +304 -102
- package/lib/SelfModuleFactory.js +12 -0
- package/lib/SizeFormatHelpers.js +2 -4
- package/lib/SourceMapDevToolModuleOptionsPlugin.js +4 -0
- package/lib/SourceMapDevToolPlugin.js +89 -42
- package/lib/Stats.js +12 -7
- package/lib/Template.js +30 -33
- package/lib/TemplatedPathPlugin.js +102 -34
- package/lib/UseStrictPlugin.js +37 -12
- package/lib/WarnCaseSensitiveModulesPlugin.js +12 -0
- package/lib/WarnDeprecatedOptionPlugin.js +6 -0
- package/lib/WatchIgnorePlugin.js +46 -13
- package/lib/Watching.js +139 -76
- package/lib/WebpackError.js +14 -5
- package/lib/WebpackIsIncludedPlugin.js +22 -13
- package/lib/WebpackOptionsApply.js +162 -56
- package/lib/WebpackOptionsDefaulter.js +10 -3
- package/lib/asset/AssetGenerator.js +351 -99
- package/lib/asset/AssetModulesPlugin.js +57 -33
- package/lib/asset/AssetParser.js +15 -6
- package/lib/asset/AssetSourceGenerator.js +30 -10
- package/lib/asset/AssetSourceParser.js +8 -2
- package/lib/asset/RawDataUrlModule.js +162 -0
- package/lib/async-modules/AwaitDependenciesInitFragment.js +16 -13
- package/lib/async-modules/InferAsyncModulesPlugin.js +1 -1
- package/lib/buildChunkGraph.js +376 -420
- package/lib/cache/AddManagedPathsPlugin.js +6 -1
- package/lib/cache/IdleFileCachePlugin.js +26 -13
- package/lib/cache/MemoryCachePlugin.js +1 -1
- package/lib/cache/MemoryWithGcCachePlugin.js +13 -7
- package/lib/cache/PackFileCacheStrategy.js +172 -94
- package/lib/cache/ResolverCachePlugin.js +115 -43
- package/lib/cache/getLazyHashedEtag.js +2 -2
- package/lib/cache/mergeEtags.js +16 -21
- package/lib/cli.js +195 -110
- package/lib/config/browserslistTargetHandler.js +106 -41
- package/lib/config/defaults.js +572 -154
- package/lib/config/normalization.js +361 -322
- package/lib/config/target.js +105 -66
- package/lib/container/ContainerEntryDependency.js +2 -1
- package/lib/container/ContainerEntryModule.js +27 -11
- package/lib/container/ContainerEntryModuleFactory.js +1 -1
- package/lib/container/ContainerExposedDependency.js +9 -0
- package/lib/container/ContainerPlugin.js +18 -12
- package/lib/container/ContainerReferencePlugin.js +1 -1
- package/lib/container/FallbackDependency.js +13 -0
- package/lib/container/FallbackItemDependency.js +3 -0
- package/lib/container/FallbackModule.js +19 -8
- package/lib/container/FallbackModuleFactory.js +1 -1
- package/lib/container/ModuleFederationPlugin.js +2 -0
- package/lib/container/RemoteModule.js +17 -4
- package/lib/container/RemoteRuntimeModule.js +31 -17
- package/lib/container/RemoteToExternalDependency.js +3 -0
- package/lib/container/options.js +18 -4
- package/lib/css/CssExportsGenerator.js +203 -0
- package/lib/css/CssGenerator.js +151 -0
- package/lib/css/CssLoadingRuntimeModule.js +592 -0
- package/lib/css/CssModulesPlugin.js +888 -0
- package/lib/css/CssParser.js +1049 -0
- package/lib/css/walkCssTokens.js +775 -0
- package/lib/debug/ProfilingPlugin.js +102 -54
- package/lib/dependencies/AMDDefineDependency.js +54 -10
- package/lib/dependencies/AMDDefineDependencyParserPlugin.js +204 -61
- package/lib/dependencies/AMDPlugin.js +44 -24
- package/lib/dependencies/AMDRequireArrayDependency.js +34 -10
- package/lib/dependencies/AMDRequireContextDependency.js +15 -0
- package/lib/dependencies/AMDRequireDependenciesBlock.js +6 -0
- package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +185 -54
- package/lib/dependencies/AMDRequireDependency.js +21 -6
- package/lib/dependencies/AMDRequireItemDependency.js +6 -0
- package/lib/dependencies/AMDRuntimeModules.js +4 -4
- package/lib/dependencies/CachedConstDependency.js +22 -1
- package/lib/dependencies/CommonJsDependencyHelpers.js +16 -2
- package/lib/dependencies/CommonJsExportRequireDependency.js +77 -47
- package/lib/dependencies/CommonJsExportsDependency.js +28 -5
- package/lib/dependencies/CommonJsExportsParserPlugin.js +111 -39
- package/lib/dependencies/CommonJsFullRequireDependency.js +42 -8
- package/lib/dependencies/CommonJsImportsParserPlugin.js +530 -130
- package/lib/dependencies/CommonJsPlugin.js +51 -26
- package/lib/dependencies/CommonJsRequireContextDependency.js +23 -2
- package/lib/dependencies/CommonJsRequireDependency.js +9 -1
- package/lib/dependencies/CommonJsSelfReferenceDependency.js +22 -8
- package/lib/dependencies/ConstDependency.js +12 -3
- package/lib/dependencies/ContextDependency.js +32 -5
- package/lib/dependencies/ContextDependencyHelpers.js +92 -62
- package/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +4 -1
- package/lib/dependencies/ContextElementDependency.js +41 -4
- package/lib/dependencies/CreateScriptUrlDependency.js +22 -1
- package/lib/dependencies/CriticalDependencyWarning.js +4 -1
- package/lib/dependencies/CssExportDependency.js +156 -0
- package/lib/dependencies/CssImportDependency.js +125 -0
- package/lib/dependencies/CssLocalIdentifierDependency.js +245 -0
- package/lib/dependencies/CssSelfLocalIdentifierDependency.js +111 -0
- package/lib/dependencies/CssUrlDependency.js +164 -0
- package/lib/dependencies/DelegatedSourceDependency.js +3 -0
- package/lib/dependencies/DllEntryDependency.js +14 -0
- package/lib/dependencies/DynamicExports.js +15 -11
- package/lib/dependencies/ExportsInfoDependency.js +26 -5
- package/lib/dependencies/ExternalModuleDependency.js +109 -0
- package/lib/dependencies/ExternalModuleInitFragment.js +133 -0
- package/lib/dependencies/HarmonyAcceptDependency.js +11 -2
- package/lib/dependencies/HarmonyAcceptImportDependency.js +9 -4
- package/lib/dependencies/HarmonyCompatibilityDependency.js +6 -5
- package/lib/dependencies/HarmonyDetectionParserPlugin.js +29 -3
- package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +152 -0
- package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +96 -51
- package/lib/dependencies/HarmonyExportExpressionDependency.js +21 -4
- package/lib/dependencies/HarmonyExportHeaderDependency.js +13 -0
- package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +216 -108
- package/lib/dependencies/HarmonyExportInitFragment.js +21 -9
- package/lib/dependencies/HarmonyExportSpecifierDependency.js +12 -0
- package/lib/dependencies/HarmonyExports.js +13 -7
- package/lib/dependencies/HarmonyImportDependency.js +65 -19
- package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +268 -74
- package/lib/dependencies/HarmonyImportSideEffectDependency.js +11 -5
- package/lib/dependencies/HarmonyImportSpecifierDependency.js +180 -36
- package/lib/dependencies/HarmonyModulesPlugin.js +33 -5
- package/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +15 -3
- package/lib/dependencies/ImportContextDependency.js +15 -2
- package/lib/dependencies/ImportDependency.js +50 -12
- package/lib/dependencies/ImportEagerDependency.js +11 -6
- package/lib/dependencies/ImportMetaContextDependency.js +42 -0
- package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +301 -0
- package/lib/dependencies/ImportMetaContextPlugin.js +72 -0
- package/lib/dependencies/ImportMetaHotAcceptDependency.js +6 -0
- package/lib/dependencies/ImportMetaHotDeclineDependency.js +6 -0
- package/lib/dependencies/ImportMetaPlugin.js +128 -59
- package/lib/dependencies/ImportParserPlugin.js +153 -83
- package/lib/dependencies/ImportPlugin.js +21 -7
- package/lib/dependencies/ImportWeakDependency.js +11 -6
- package/lib/dependencies/JsonExportsDependency.js +38 -30
- package/lib/dependencies/LoaderDependency.js +14 -0
- package/lib/dependencies/LoaderImportDependency.js +14 -0
- package/lib/dependencies/LoaderPlugin.js +54 -40
- package/lib/dependencies/LocalModule.js +17 -1
- package/lib/dependencies/LocalModuleDependency.js +15 -0
- package/lib/dependencies/LocalModulesHelpers.js +22 -4
- package/lib/dependencies/ModuleDecoratorDependency.js +9 -1
- package/lib/dependencies/ModuleDependency.js +24 -7
- package/lib/dependencies/ModuleDependencyTemplateAsId.js +2 -1
- package/lib/dependencies/ModuleHotAcceptDependency.js +6 -0
- package/lib/dependencies/ModuleHotDeclineDependency.js +6 -0
- package/lib/dependencies/PrefetchDependency.js +3 -0
- package/lib/dependencies/ProvidedDependency.js +43 -8
- package/lib/dependencies/PureExpressionDependency.js +73 -39
- package/lib/dependencies/RequireContextDependency.js +6 -16
- package/lib/dependencies/RequireContextDependencyParserPlugin.js +14 -6
- package/lib/dependencies/RequireContextPlugin.js +20 -7
- package/lib/dependencies/RequireEnsureDependenciesBlock.js +7 -0
- package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +29 -12
- package/lib/dependencies/RequireEnsureDependency.js +16 -2
- package/lib/dependencies/RequireEnsureItemDependency.js +3 -0
- package/lib/dependencies/RequireEnsurePlugin.js +27 -7
- package/lib/dependencies/RequireHeaderDependency.js +14 -1
- package/lib/dependencies/RequireIncludeDependency.js +6 -1
- package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +29 -5
- package/lib/dependencies/RequireIncludePlugin.js +25 -5
- package/lib/dependencies/RequireResolveContextDependency.js +19 -2
- package/lib/dependencies/RequireResolveDependency.js +8 -1
- package/lib/dependencies/RequireResolveHeaderDependency.js +18 -0
- package/lib/dependencies/RuntimeRequirementsDependency.js +9 -1
- package/lib/dependencies/StaticExportsDependency.js +8 -0
- package/lib/dependencies/SystemPlugin.js +49 -22
- package/lib/dependencies/SystemRuntimeModule.js +1 -1
- package/lib/dependencies/URLDependency.js +20 -13
- package/lib/dependencies/URLPlugin.js +115 -27
- package/lib/dependencies/UnsupportedDependency.js +13 -0
- package/lib/dependencies/WebAssemblyExportImportedDependency.js +14 -0
- package/lib/dependencies/WebAssemblyImportDependency.js +9 -1
- package/lib/dependencies/WebpackIsIncludedDependency.js +6 -1
- package/lib/dependencies/WorkerDependency.js +47 -3
- package/lib/dependencies/WorkerPlugin.js +143 -59
- package/lib/dependencies/getFunctionExpression.js +9 -0
- package/lib/dependencies/processExportInfo.js +3 -1
- package/lib/electron/ElectronTargetPlugin.js +1 -0
- package/lib/esm/ExportWebpackRequireRuntimeModule.js +3 -2
- package/lib/esm/ModuleChunkFormatPlugin.js +92 -55
- package/lib/esm/ModuleChunkLoadingPlugin.js +12 -1
- package/lib/esm/ModuleChunkLoadingRuntimeModule.js +141 -25
- package/lib/formatLocation.js +1 -2
- package/lib/hmr/HotModuleReplacement.runtime.js +37 -25
- package/lib/hmr/HotModuleReplacementRuntimeModule.js +2 -1
- package/lib/hmr/JavascriptHotModuleReplacement.runtime.js +13 -15
- package/lib/hmr/LazyCompilationPlugin.js +94 -41
- package/lib/hmr/lazyCompilationBackend.js +107 -44
- package/lib/ids/ChunkModuleIdRangePlugin.js +12 -3
- package/lib/ids/DeterministicChunkIdsPlugin.js +13 -6
- package/lib/ids/DeterministicModuleIdsPlugin.js +59 -35
- package/lib/ids/HashedModuleIdsPlugin.js +24 -16
- package/lib/ids/IdHelpers.js +59 -49
- package/lib/ids/NamedChunkIdsPlugin.js +13 -1
- package/lib/ids/NamedModuleIdsPlugin.js +20 -12
- package/lib/ids/NaturalModuleIdsPlugin.js +10 -13
- package/lib/ids/OccurrenceChunkIdsPlugin.js +6 -2
- package/lib/ids/OccurrenceModuleIdsPlugin.js +14 -11
- package/lib/ids/SyncModuleIdsPlugin.js +146 -0
- package/lib/index.js +44 -5
- package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +9 -7
- package/lib/javascript/BasicEvaluatedExpression.js +133 -19
- package/lib/javascript/ChunkHelpers.js +33 -0
- package/lib/javascript/CommonJsChunkFormatPlugin.js +18 -15
- package/lib/javascript/EnableChunkLoadingPlugin.js +11 -6
- package/lib/javascript/JavascriptGenerator.js +37 -6
- package/lib/javascript/JavascriptModulesPlugin.js +523 -295
- package/lib/javascript/JavascriptParser.js +1591 -574
- package/lib/javascript/JavascriptParserHelpers.js +58 -37
- package/lib/javascript/StartupHelpers.js +69 -47
- package/lib/json/JsonData.js +33 -0
- package/lib/json/JsonGenerator.js +29 -21
- package/lib/json/JsonModulesPlugin.js +13 -7
- package/lib/json/JsonParser.js +30 -16
- package/lib/library/AbstractLibraryPlugin.js +6 -2
- package/lib/library/AmdLibraryPlugin.js +34 -18
- package/lib/library/AssignLibraryPlugin.js +68 -32
- package/lib/library/EnableLibraryPlugin.js +39 -14
- package/lib/library/ExportPropertyLibraryPlugin.js +14 -5
- package/lib/library/JsonpLibraryPlugin.js +4 -3
- package/lib/library/ModernModuleLibraryPlugin.js +144 -0
- package/lib/library/ModuleLibraryPlugin.js +12 -7
- package/lib/library/SystemLibraryPlugin.js +6 -4
- package/lib/library/UmdLibraryPlugin.js +119 -100
- package/lib/logging/Logger.js +59 -6
- package/lib/logging/createConsoleLogger.js +25 -40
- package/lib/logging/runtime.js +8 -9
- package/lib/logging/truncateArgs.js +9 -8
- package/lib/node/CommonJsChunkLoadingPlugin.js +18 -2
- package/lib/node/NodeEnvironmentPlugin.js +14 -8
- package/lib/node/NodeTargetPlugin.js +7 -0
- package/lib/node/NodeTemplatePlugin.js +10 -2
- package/lib/node/NodeWatchFileSystem.js +100 -50
- package/lib/node/ReadFileChunkLoadingRuntimeModule.js +51 -26
- package/lib/node/ReadFileCompileAsyncWasmPlugin.js +13 -2
- package/lib/node/ReadFileCompileWasmPlugin.js +21 -3
- package/lib/node/RequireChunkLoadingRuntimeModule.js +49 -26
- package/lib/node/nodeConsole.js +48 -31
- package/lib/optimize/AggressiveMergingPlugin.js +10 -4
- package/lib/optimize/AggressiveSplittingPlugin.js +26 -21
- package/lib/optimize/ConcatenatedModule.js +353 -212
- package/lib/optimize/EnsureChunkConditionsPlugin.js +4 -1
- package/lib/optimize/FlagIncludedChunksPlugin.js +14 -8
- package/lib/optimize/InnerGraph.js +30 -25
- package/lib/optimize/InnerGraphPlugin.js +105 -64
- package/lib/optimize/LimitChunkCountPlugin.js +32 -9
- package/lib/optimize/MangleExportsPlugin.js +7 -2
- package/lib/optimize/MinMaxSizeWarning.js +6 -1
- package/lib/optimize/ModuleConcatenationPlugin.js +150 -83
- package/lib/optimize/RealContentHashPlugin.js +99 -43
- package/lib/optimize/RemoveParentModulesPlugin.js +131 -48
- package/lib/optimize/RuntimeChunkPlugin.js +15 -2
- package/lib/optimize/SideEffectsFlagPlugin.js +119 -63
- package/lib/optimize/SplitChunksPlugin.js +129 -78
- package/lib/performance/SizeLimitsPlugin.js +22 -8
- package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +4 -2
- package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +4 -1
- package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +8 -5
- package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +5 -3
- package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +5 -3
- package/lib/rules/BasicEffectRulePlugin.js +7 -1
- package/lib/rules/BasicMatcherRulePlugin.js +8 -1
- package/lib/rules/ObjectMatcherRulePlugin.js +19 -2
- package/lib/rules/RuleSetCompiler.js +53 -32
- package/lib/rules/UseEffectRulePlugin.js +42 -36
- package/lib/runtime/AsyncModuleRuntimeModule.js +56 -69
- package/lib/runtime/AutoPublicPathRuntimeModule.js +25 -9
- package/lib/runtime/BaseUriRuntimeModule.js +35 -0
- package/lib/runtime/ChunkNameRuntimeModule.js +1 -1
- package/lib/runtime/CompatGetDefaultExportRuntimeModule.js +5 -2
- package/lib/runtime/CompatRuntimeModule.js +7 -2
- package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +7 -4
- package/lib/runtime/CreateScriptRuntimeModule.js +38 -0
- package/lib/runtime/CreateScriptUrlRuntimeModule.js +13 -36
- package/lib/runtime/DefinePropertyGettersRuntimeModule.js +6 -3
- package/lib/runtime/EnsureChunkRuntimeModule.js +29 -15
- package/lib/runtime/GetChunkFilenameRuntimeModule.js +56 -43
- package/lib/runtime/GetFullHashRuntimeModule.js +4 -3
- package/lib/runtime/GetMainFilenameRuntimeModule.js +5 -2
- package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +98 -0
- package/lib/runtime/GlobalRuntimeModule.js +1 -1
- package/lib/runtime/HasOwnPropertyRuntimeModule.js +5 -2
- package/lib/runtime/LoadScriptRuntimeModule.js +61 -45
- package/lib/runtime/MakeNamespaceObjectRuntimeModule.js +5 -2
- package/lib/runtime/NonceRuntimeModule.js +24 -0
- package/lib/runtime/OnChunksLoadedRuntimeModule.js +4 -2
- package/lib/runtime/PublicPathRuntimeModule.js +9 -2
- package/lib/runtime/RelativeUrlRuntimeModule.js +5 -2
- package/lib/runtime/RuntimeIdRuntimeModule.js +6 -2
- package/lib/runtime/StartupChunkDependenciesPlugin.js +15 -0
- package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +36 -28
- package/lib/runtime/StartupEntrypointRuntimeModule.js +13 -9
- package/lib/runtime/SystemContextRuntimeModule.js +1 -1
- package/lib/schemes/DataUriPlugin.js +16 -3
- package/lib/schemes/HttpUriPlugin.js +336 -120
- package/lib/serialization/ArraySerializer.js +22 -6
- package/lib/serialization/BinaryMiddleware.js +212 -33
- package/lib/serialization/DateObjectSerializer.js +16 -4
- package/lib/serialization/ErrorObjectSerializer.js +23 -6
- package/lib/serialization/FileMiddleware.js +187 -86
- package/lib/serialization/MapObjectSerializer.js +25 -8
- package/lib/serialization/NullPrototypeObjectSerializer.js +26 -8
- package/lib/serialization/ObjectMiddleware.js +96 -66
- package/lib/serialization/PlainObjectSerializer.js +51 -14
- package/lib/serialization/RegExpObjectSerializer.js +17 -5
- package/lib/serialization/Serializer.js +23 -5
- package/lib/serialization/SerializerMiddleware.js +8 -8
- package/lib/serialization/SetObjectSerializer.js +22 -6
- package/lib/serialization/SingleItemMiddleware.js +2 -2
- package/lib/serialization/types.js +2 -2
- package/lib/sharing/ConsumeSharedFallbackDependency.js +3 -0
- package/lib/sharing/ConsumeSharedModule.js +40 -17
- package/lib/sharing/ConsumeSharedPlugin.js +139 -102
- package/lib/sharing/ConsumeSharedRuntimeModule.js +144 -130
- package/lib/sharing/ProvideForSharedDependency.js +0 -1
- package/lib/sharing/ProvideSharedDependency.js +17 -0
- package/lib/sharing/ProvideSharedModule.js +19 -6
- package/lib/sharing/ProvideSharedModuleFactory.js +1 -1
- package/lib/sharing/ProvideSharedPlugin.js +37 -30
- package/lib/sharing/SharePlugin.js +2 -2
- package/lib/sharing/ShareRuntimeModule.js +20 -10
- package/lib/sharing/resolveMatchedConfigs.js +6 -5
- package/lib/sharing/utils.js +338 -34
- package/lib/stats/DefaultStatsFactoryPlugin.js +660 -396
- package/lib/stats/DefaultStatsPresetPlugin.js +85 -25
- package/lib/stats/DefaultStatsPrinterPlugin.js +525 -145
- package/lib/stats/StatsFactory.js +128 -57
- package/lib/stats/StatsPrinter.js +77 -46
- package/lib/util/ArrayHelpers.js +35 -1
- package/lib/util/ArrayQueue.js +15 -22
- package/lib/util/AsyncQueue.js +37 -16
- package/lib/util/IterableHelpers.js +3 -4
- package/lib/util/LazyBucketSortedSet.js +60 -44
- package/lib/util/LazySet.js +11 -2
- package/lib/util/MapHelpers.js +17 -5
- package/lib/util/ParallelismFactorCalculator.js +11 -1
- package/lib/util/Queue.js +9 -3
- package/lib/util/Semaphore.js +4 -7
- package/lib/util/SetHelpers.js +5 -5
- package/lib/util/SortableSet.js +19 -6
- package/lib/util/StackedCacheMap.js +33 -3
- package/lib/util/StackedMap.js +1 -3
- package/lib/util/StringXor.js +46 -0
- package/lib/util/TupleQueue.js +9 -3
- package/lib/util/TupleSet.js +15 -5
- package/lib/util/URLAbsoluteSpecifier.js +8 -8
- package/lib/util/WeakTupleMap.js +70 -28
- package/lib/util/binarySearchBounds.js +51 -9
- package/lib/util/chainedImports.js +97 -0
- package/lib/util/cleverMerge.js +51 -36
- package/lib/util/comparators.js +146 -83
- package/lib/util/compileBooleanMatcher.js +35 -7
- package/lib/util/conventions.js +126 -0
- package/lib/util/create-schema-validation.js +9 -2
- package/lib/util/createHash.js +49 -14
- package/lib/util/deprecation.js +48 -15
- package/lib/util/deterministicGrouping.js +71 -39
- package/lib/util/extractUrlAndGlobal.js +3 -0
- package/lib/util/findGraphRoots.js +7 -5
- package/lib/util/fs.js +419 -94
- package/lib/util/hash/BatchedHash.js +10 -4
- package/lib/util/hash/md4.js +20 -0
- package/lib/util/hash/wasm-hash.js +163 -0
- package/lib/util/hash/xxhash64.js +7 -141
- package/lib/util/identifier.js +140 -93
- package/lib/util/internalSerializables.js +22 -0
- package/lib/util/makeSerializable.js +7 -0
- package/lib/util/memoize.js +10 -10
- package/lib/util/mergeScope.js +76 -0
- package/lib/util/nonNumericOnlyHash.js +22 -0
- package/lib/util/numberHash.js +84 -34
- package/lib/util/objectToMap.js +0 -1
- package/lib/util/processAsyncTree.js +7 -1
- package/lib/util/propertyAccess.js +7 -55
- package/lib/util/propertyName.js +77 -0
- package/lib/util/registerExternalSerializer.js +2 -2
- package/lib/util/runtime.js +188 -133
- package/lib/util/semver.js +64 -56
- package/lib/util/serialization.js +26 -1
- package/lib/util/smartGrouping.js +10 -10
- package/lib/util/source.js +1 -1
- package/lib/validateSchema.js +6 -2
- package/lib/wasm/EnableWasmLoadingPlugin.js +9 -4
- package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +70 -30
- package/lib/wasm-async/AsyncWebAssemblyGenerator.js +9 -1
- package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +34 -16
- package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +32 -12
- package/lib/wasm-async/AsyncWebAssemblyParser.js +17 -4
- package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +72 -31
- package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +17 -6
- package/lib/wasm-sync/WebAssemblyGenerator.js +72 -52
- package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +5 -4
- package/lib/wasm-sync/WebAssemblyModulesPlugin.js +53 -43
- package/lib/wasm-sync/WebAssemblyParser.js +23 -9
- package/lib/wasm-sync/WebAssemblyUtils.js +5 -4
- package/lib/web/FetchCompileAsyncWasmPlugin.js +11 -1
- package/lib/web/FetchCompileWasmPlugin.js +59 -42
- package/lib/web/JsonpChunkLoadingPlugin.js +9 -0
- package/lib/web/JsonpChunkLoadingRuntimeModule.js +71 -41
- package/lib/webpack.js +43 -12
- package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +15 -12
- package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +55 -40
- package/module.d.ts +233 -0
- package/package.json +85 -139
- package/schemas/WebpackOptions.check.js +1 -1
- package/schemas/WebpackOptions.json +679 -47
- package/schemas/plugins/BannerPlugin.check.js +1 -1
- package/schemas/plugins/BannerPlugin.json +9 -1
- package/schemas/plugins/DllReferencePlugin.check.js +1 -1
- package/schemas/plugins/HashedModuleIdsPlugin.check.js +1 -1
- package/schemas/plugins/ProgressPlugin.check.js +1 -1
- package/schemas/plugins/SourceMapDevToolPlugin.check.js +1 -1
- package/schemas/plugins/SourceMapDevToolPlugin.json +4 -0
- package/schemas/plugins/asset/AssetGeneratorOptions.check.js +1 -1
- package/schemas/plugins/asset/AssetInlineGeneratorOptions.check.js +1 -1
- package/schemas/plugins/asset/AssetParserOptions.check.js +1 -1
- package/schemas/plugins/asset/AssetResourceGeneratorOptions.check.js +1 -1
- package/schemas/plugins/container/ContainerPlugin.check.js +1 -1
- package/schemas/plugins/container/ContainerPlugin.json +10 -1
- package/schemas/plugins/container/ContainerReferencePlugin.check.js +1 -1
- package/schemas/plugins/container/ContainerReferencePlugin.json +2 -0
- package/schemas/plugins/container/ExternalsType.check.js +1 -1
- package/schemas/plugins/container/ModuleFederationPlugin.check.js +1 -1
- package/schemas/plugins/container/ModuleFederationPlugin.json +12 -1
- package/schemas/plugins/css/CssAutoGeneratorOptions.check.d.ts +7 -0
- package/schemas/plugins/css/CssAutoGeneratorOptions.check.js +6 -0
- package/schemas/plugins/css/CssAutoGeneratorOptions.json +3 -0
- package/schemas/plugins/css/CssAutoParserOptions.check.d.ts +7 -0
- package/schemas/plugins/css/CssAutoParserOptions.check.js +6 -0
- package/schemas/plugins/css/CssAutoParserOptions.json +3 -0
- package/schemas/plugins/css/CssGeneratorOptions.check.d.ts +7 -0
- package/schemas/plugins/css/CssGeneratorOptions.check.js +6 -0
- package/schemas/plugins/css/CssGeneratorOptions.json +3 -0
- package/schemas/plugins/css/CssGlobalGeneratorOptions.check.d.ts +7 -0
- package/schemas/plugins/css/CssGlobalGeneratorOptions.check.js +6 -0
- package/schemas/plugins/css/CssGlobalGeneratorOptions.json +3 -0
- package/schemas/plugins/css/CssGlobalParserOptions.check.d.ts +7 -0
- package/schemas/plugins/css/CssGlobalParserOptions.check.js +6 -0
- package/schemas/plugins/css/CssGlobalParserOptions.json +3 -0
- package/schemas/plugins/css/CssModuleGeneratorOptions.check.d.ts +7 -0
- package/schemas/plugins/css/CssModuleGeneratorOptions.check.js +6 -0
- package/schemas/plugins/css/CssModuleGeneratorOptions.json +3 -0
- package/schemas/plugins/css/CssModuleParserOptions.check.d.ts +7 -0
- package/schemas/plugins/css/CssModuleParserOptions.check.js +6 -0
- package/schemas/plugins/css/CssModuleParserOptions.json +3 -0
- package/schemas/plugins/css/CssParserOptions.check.d.ts +7 -0
- package/schemas/plugins/css/CssParserOptions.check.js +6 -0
- package/schemas/plugins/css/CssParserOptions.json +3 -0
- package/schemas/plugins/optimize/AggressiveSplittingPlugin.check.js +1 -1
- package/schemas/plugins/optimize/LimitChunkCountPlugin.check.js +1 -1
- package/schemas/plugins/optimize/MinChunkSizePlugin.check.js +1 -1
- package/schemas/plugins/schemes/HttpUriPlugin.check.js +1 -1
- package/schemas/plugins/schemes/HttpUriPlugin.json +4 -0
- package/schemas/plugins/sharing/SharePlugin.check.js +1 -1
- package/types.d.ts +5026 -1756
package/lib/DllModule.js
CHANGED
@@ -7,6 +7,7 @@
|
|
7
7
|
|
8
8
|
const { RawSource } = require("webpack-sources");
|
9
9
|
const Module = require("./Module");
|
10
|
+
const { JAVASCRIPT_MODULE_TYPE_DYNAMIC } = require("./ModuleTypeConstants");
|
10
11
|
const RuntimeGlobals = require("./RuntimeGlobals");
|
11
12
|
const makeSerializable = require("./util/makeSerializable");
|
12
13
|
|
@@ -14,16 +15,20 @@ const makeSerializable = require("./util/makeSerializable");
|
|
14
15
|
/** @typedef {import("../declarations/WebpackOptions").WebpackOptionsNormalized} WebpackOptions */
|
15
16
|
/** @typedef {import("./ChunkGraph")} ChunkGraph */
|
16
17
|
/** @typedef {import("./Compilation")} Compilation */
|
18
|
+
/** @typedef {import("./Dependency")} Dependency */
|
17
19
|
/** @typedef {import("./Dependency").UpdateHashContext} UpdateHashContext */
|
18
20
|
/** @typedef {import("./DependencyTemplates")} DependencyTemplates */
|
19
21
|
/** @typedef {import("./Module").CodeGenerationContext} CodeGenerationContext */
|
20
22
|
/** @typedef {import("./Module").CodeGenerationResult} CodeGenerationResult */
|
21
23
|
/** @typedef {import("./Module").NeedBuildContext} NeedBuildContext */
|
22
24
|
/** @typedef {import("./Module").SourceContext} SourceContext */
|
25
|
+
/** @typedef {import("./Module").SourceTypes} SourceTypes */
|
23
26
|
/** @typedef {import("./RequestShortener")} RequestShortener */
|
24
27
|
/** @typedef {import("./ResolverFactory").ResolverWithOptions} ResolverWithOptions */
|
25
28
|
/** @typedef {import("./RuntimeTemplate")} RuntimeTemplate */
|
26
29
|
/** @typedef {import("./WebpackError")} WebpackError */
|
30
|
+
/** @typedef {import("./serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
|
31
|
+
/** @typedef {import("./serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
|
27
32
|
/** @typedef {import("./util/Hash")} Hash */
|
28
33
|
/** @typedef {import("./util/fs").InputFileSystem} InputFileSystem */
|
29
34
|
|
@@ -34,16 +39,22 @@ const RUNTIME_REQUIREMENTS = new Set([
|
|
34
39
|
]);
|
35
40
|
|
36
41
|
class DllModule extends Module {
|
42
|
+
/**
|
43
|
+
* @param {string} context context path
|
44
|
+
* @param {Dependency[]} dependencies dependencies
|
45
|
+
* @param {string} name name
|
46
|
+
*/
|
37
47
|
constructor(context, dependencies, name) {
|
38
|
-
super(
|
48
|
+
super(JAVASCRIPT_MODULE_TYPE_DYNAMIC, context);
|
39
49
|
|
40
50
|
// Info from Factory
|
51
|
+
/** @type {Dependency[]} */
|
41
52
|
this.dependencies = dependencies;
|
42
53
|
this.name = name;
|
43
54
|
}
|
44
55
|
|
45
56
|
/**
|
46
|
-
* @returns {
|
57
|
+
* @returns {SourceTypes} types available (do not mutate)
|
47
58
|
*/
|
48
59
|
getSourceTypes() {
|
49
60
|
return TYPES;
|
@@ -86,7 +97,7 @@ class DllModule extends Module {
|
|
86
97
|
const sources = new Map();
|
87
98
|
sources.set(
|
88
99
|
"javascript",
|
89
|
-
new RawSource(
|
100
|
+
new RawSource(`module.exports = ${RuntimeGlobals.require};`)
|
90
101
|
);
|
91
102
|
return {
|
92
103
|
sources,
|
@@ -96,7 +107,7 @@ class DllModule extends Module {
|
|
96
107
|
|
97
108
|
/**
|
98
109
|
* @param {NeedBuildContext} context context info
|
99
|
-
* @param {function(WebpackError=, boolean=): void} callback callback function, returns true, if the module needs a rebuild
|
110
|
+
* @param {function((WebpackError | null)=, boolean=): void} callback callback function, returns true, if the module needs a rebuild
|
100
111
|
* @returns {void}
|
101
112
|
*/
|
102
113
|
needBuild(context, callback) {
|
@@ -121,11 +132,17 @@ class DllModule extends Module {
|
|
121
132
|
super.updateHash(hash, context);
|
122
133
|
}
|
123
134
|
|
135
|
+
/**
|
136
|
+
* @param {ObjectSerializerContext} context context
|
137
|
+
*/
|
124
138
|
serialize(context) {
|
125
139
|
context.write(this.name);
|
126
140
|
super.serialize(context);
|
127
141
|
}
|
128
142
|
|
143
|
+
/**
|
144
|
+
* @param {ObjectDeserializerContext} context context
|
145
|
+
*/
|
129
146
|
deserialize(context) {
|
130
147
|
this.name = context.read();
|
131
148
|
super.deserialize(context);
|
package/lib/DllModuleFactory.js
CHANGED
@@ -17,9 +17,10 @@ class DllModuleFactory extends ModuleFactory {
|
|
17
17
|
super();
|
18
18
|
this.hooks = Object.freeze({});
|
19
19
|
}
|
20
|
+
|
20
21
|
/**
|
21
22
|
* @param {ModuleFactoryCreateData} data data object
|
22
|
-
* @param {function(Error=, ModuleFactoryResult=): void} callback callback
|
23
|
+
* @param {function((Error | null)=, ModuleFactoryResult=): void} callback callback
|
23
24
|
* @returns {void}
|
24
25
|
*/
|
25
26
|
create(data, callback) {
|
package/lib/DllPlugin.js
CHANGED
@@ -12,6 +12,8 @@ const createSchemaValidation = require("./util/create-schema-validation");
|
|
12
12
|
|
13
13
|
/** @typedef {import("../declarations/plugins/DllPlugin").DllPluginOptions} DllPluginOptions */
|
14
14
|
/** @typedef {import("./Compiler")} Compiler */
|
15
|
+
/** @typedef {import("./DllEntryPlugin").Entries} Entries */
|
16
|
+
/** @typedef {import("./DllEntryPlugin").Options} Options */
|
15
17
|
|
16
18
|
const validate = createSchemaValidation(
|
17
19
|
require("../schemas/plugins/DllPlugin.check.js"),
|
@@ -43,13 +45,13 @@ class DllPlugin {
|
|
43
45
|
compiler.hooks.entryOption.tap("DllPlugin", (context, entry) => {
|
44
46
|
if (typeof entry !== "function") {
|
45
47
|
for (const name of Object.keys(entry)) {
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
);
|
48
|
+
/** @type {Options} */
|
49
|
+
const options = { name, filename: entry.filename };
|
50
|
+
new DllEntryPlugin(
|
51
|
+
context,
|
52
|
+
/** @type {Entries} */ (entry[name].import),
|
53
|
+
options
|
54
|
+
).apply(compiler);
|
53
55
|
}
|
54
56
|
} else {
|
55
57
|
throw new Error(
|
@@ -5,7 +5,7 @@
|
|
5
5
|
|
6
6
|
"use strict";
|
7
7
|
|
8
|
-
const parseJson = require("json-parse-better-errors");
|
8
|
+
const parseJson = require("json-parse-even-better-errors");
|
9
9
|
const DelegatedModuleFactoryPlugin = require("./DelegatedModuleFactoryPlugin");
|
10
10
|
const ExternalModuleFactoryPlugin = require("./ExternalModuleFactoryPlugin");
|
11
11
|
const WebpackError = require("./WebpackError");
|
@@ -15,7 +15,10 @@ const makePathsRelative = require("./util/identifier").makePathsRelative;
|
|
15
15
|
|
16
16
|
/** @typedef {import("../declarations/WebpackOptions").Externals} Externals */
|
17
17
|
/** @typedef {import("../declarations/plugins/DllReferencePlugin").DllReferencePluginOptions} DllReferencePluginOptions */
|
18
|
+
/** @typedef {import("../declarations/plugins/DllReferencePlugin").DllReferencePluginOptionsContent} DllReferencePluginOptionsContent */
|
18
19
|
/** @typedef {import("../declarations/plugins/DllReferencePlugin").DllReferencePluginOptionsManifest} DllReferencePluginOptionsManifest */
|
20
|
+
/** @typedef {import("./Compiler")} Compiler */
|
21
|
+
/** @typedef {import("./util/fs").InputFileSystem} InputFileSystem */
|
19
22
|
|
20
23
|
const validate = createSchemaValidation(
|
21
24
|
require("../schemas/plugins/DllReferencePlugin.check.js"),
|
@@ -26,6 +29,8 @@ const validate = createSchemaValidation(
|
|
26
29
|
}
|
27
30
|
);
|
28
31
|
|
32
|
+
/** @typedef {{ path: string, data: DllReferencePluginOptionsManifest | undefined, error: Error | undefined }} CompilationDataItem */
|
33
|
+
|
29
34
|
class DllReferencePlugin {
|
30
35
|
/**
|
31
36
|
* @param {DllReferencePluginOptions} options options object
|
@@ -33,10 +38,15 @@ class DllReferencePlugin {
|
|
33
38
|
constructor(options) {
|
34
39
|
validate(options);
|
35
40
|
this.options = options;
|
36
|
-
/** @type {WeakMap<
|
41
|
+
/** @type {WeakMap<object, CompilationDataItem>} */
|
37
42
|
this._compilationData = new WeakMap();
|
38
43
|
}
|
39
44
|
|
45
|
+
/**
|
46
|
+
* Apply the plugin
|
47
|
+
* @param {Compiler} compiler the compiler instance
|
48
|
+
* @returns {void}
|
49
|
+
*/
|
40
50
|
apply(compiler) {
|
41
51
|
compiler.hooks.compilation.tap(
|
42
52
|
"DllReferencePlugin",
|
@@ -54,8 +64,10 @@ class DllReferencePlugin {
|
|
54
64
|
if ("manifest" in this.options) {
|
55
65
|
const manifest = this.options.manifest;
|
56
66
|
if (typeof manifest === "string") {
|
57
|
-
|
67
|
+
/** @type {InputFileSystem} */
|
68
|
+
(compiler.inputFileSystem).readFile(manifest, (err, result) => {
|
58
69
|
if (err) return callback(err);
|
70
|
+
/** @type {CompilationDataItem} */
|
59
71
|
const data = {
|
60
72
|
path: manifest,
|
61
73
|
data: undefined,
|
@@ -64,16 +76,21 @@ class DllReferencePlugin {
|
|
64
76
|
// Catch errors parsing the manifest so that blank
|
65
77
|
// or malformed manifest files don't kill the process.
|
66
78
|
try {
|
67
|
-
data.data = parseJson(
|
68
|
-
|
79
|
+
data.data = parseJson(
|
80
|
+
/** @type {Buffer} */ (result).toString("utf-8")
|
81
|
+
);
|
82
|
+
} catch (parseErr) {
|
69
83
|
// Store the error in the params so that it can
|
70
84
|
// be added as a compilation error later on.
|
71
85
|
const manifestPath = makePathsRelative(
|
72
|
-
compiler.options.context,
|
86
|
+
/** @type {string} */ (compiler.options.context),
|
73
87
|
manifest,
|
74
88
|
compiler.root
|
75
89
|
);
|
76
|
-
data.error = new DllManifestError(
|
90
|
+
data.error = new DllManifestError(
|
91
|
+
manifestPath,
|
92
|
+
/** @type {Error} */ (parseErr).message
|
93
|
+
);
|
77
94
|
}
|
78
95
|
this._compilationData.set(params, data);
|
79
96
|
return callback();
|
@@ -88,13 +105,15 @@ class DllReferencePlugin {
|
|
88
105
|
compiler.hooks.compile.tap("DllReferencePlugin", params => {
|
89
106
|
let name = this.options.name;
|
90
107
|
let sourceType = this.options.sourceType;
|
91
|
-
let
|
108
|
+
let resolvedContent =
|
92
109
|
"content" in this.options ? this.options.content : undefined;
|
93
110
|
if ("manifest" in this.options) {
|
94
|
-
|
111
|
+
const manifestParameter = this.options.manifest;
|
95
112
|
let manifest;
|
96
113
|
if (typeof manifestParameter === "string") {
|
97
|
-
const data =
|
114
|
+
const data =
|
115
|
+
/** @type {CompilationDataItem} */
|
116
|
+
(this._compilationData.get(params));
|
98
117
|
// If there was an error parsing the manifest
|
99
118
|
// file, exit now because the error will be added
|
100
119
|
// as a compilation error in the "compilation" hook.
|
@@ -108,23 +127,27 @@ class DllReferencePlugin {
|
|
108
127
|
if (manifest) {
|
109
128
|
if (!name) name = manifest.name;
|
110
129
|
if (!sourceType) sourceType = manifest.type;
|
111
|
-
if (!
|
130
|
+
if (!resolvedContent) resolvedContent = manifest.content;
|
112
131
|
}
|
113
132
|
}
|
114
133
|
/** @type {Externals} */
|
115
134
|
const externals = {};
|
116
|
-
const source =
|
117
|
-
externals[source] = name;
|
135
|
+
const source = `dll-reference ${name}`;
|
136
|
+
externals[source] = /** @type {string} */ (name);
|
118
137
|
const normalModuleFactory = params.normalModuleFactory;
|
119
138
|
new ExternalModuleFactoryPlugin(sourceType || "var", externals).apply(
|
120
139
|
normalModuleFactory
|
121
140
|
);
|
122
141
|
new DelegatedModuleFactoryPlugin({
|
123
|
-
source
|
142
|
+
source,
|
124
143
|
type: this.options.type,
|
125
144
|
scope: this.options.scope,
|
126
|
-
context:
|
127
|
-
|
145
|
+
context:
|
146
|
+
/** @type {string} */
|
147
|
+
(this.options.context || compiler.options.context),
|
148
|
+
content:
|
149
|
+
/** @type {DllReferencePluginOptionsContent} */
|
150
|
+
(resolvedContent),
|
128
151
|
extensions: this.options.extensions,
|
129
152
|
associatedObjectForCache: compiler.root
|
130
153
|
}).apply(normalModuleFactory);
|
@@ -134,13 +157,17 @@ class DllReferencePlugin {
|
|
134
157
|
"DllReferencePlugin",
|
135
158
|
(compilation, params) => {
|
136
159
|
if ("manifest" in this.options) {
|
137
|
-
|
160
|
+
const manifest = this.options.manifest;
|
138
161
|
if (typeof manifest === "string") {
|
139
|
-
const data =
|
162
|
+
const data = /** @type {CompilationDataItem} */ (
|
163
|
+
this._compilationData.get(params)
|
164
|
+
);
|
140
165
|
// If there was an error parsing the manifest file, add the
|
141
166
|
// error as a compilation error to make the compilation fail.
|
142
167
|
if (data.error) {
|
143
|
-
compilation.errors.push(
|
168
|
+
compilation.errors.push(
|
169
|
+
/** @type {DllManifestError} */ (data.error)
|
170
|
+
);
|
144
171
|
}
|
145
172
|
compilation.fileDependencies.add(manifest);
|
146
173
|
}
|
@@ -151,6 +178,10 @@ class DllReferencePlugin {
|
|
151
178
|
}
|
152
179
|
|
153
180
|
class DllManifestError extends WebpackError {
|
181
|
+
/**
|
182
|
+
* @param {string} filename filename of the manifest
|
183
|
+
* @param {string} message error message
|
184
|
+
*/
|
154
185
|
constructor(filename, message) {
|
155
186
|
super();
|
156
187
|
|
package/lib/EntryOptionPlugin.js
CHANGED
@@ -41,7 +41,10 @@ class EntryOptionPlugin {
|
|
41
41
|
name,
|
42
42
|
desc
|
43
43
|
);
|
44
|
-
|
44
|
+
const descImport =
|
45
|
+
/** @type {Exclude<EntryDescription["import"], undefined>} */
|
46
|
+
(desc.import);
|
47
|
+
for (const entry of descImport) {
|
45
48
|
new EntryPlugin(context, entry, options).apply(compiler);
|
46
49
|
}
|
47
50
|
}
|
@@ -62,8 +65,10 @@ class EntryOptionPlugin {
|
|
62
65
|
runtime: desc.runtime,
|
63
66
|
layer: desc.layer,
|
64
67
|
dependOn: desc.dependOn,
|
68
|
+
baseUri: desc.baseUri,
|
65
69
|
publicPath: desc.publicPath,
|
66
70
|
chunkLoading: desc.chunkLoading,
|
71
|
+
asyncChunks: desc.asyncChunks,
|
67
72
|
wasmLoading: desc.wasmLoading,
|
68
73
|
library: desc.library
|
69
74
|
};
|
package/lib/EntryPlugin.js
CHANGED
@@ -12,9 +12,7 @@ const EntryDependency = require("./dependencies/EntryDependency");
|
|
12
12
|
|
13
13
|
class EntryPlugin {
|
14
14
|
/**
|
15
|
-
* An entry plugin which will handle
|
16
|
-
* creation of the EntryDependency
|
17
|
-
*
|
15
|
+
* An entry plugin which will handle creation of the EntryDependency
|
18
16
|
* @param {string} context context path
|
19
17
|
* @param {string} entry entry path
|
20
18
|
* @param {EntryOptions | string=} options entry options (passing a string is deprecated)
|
@@ -59,7 +57,12 @@ class EntryPlugin {
|
|
59
57
|
static createDependency(entry, options) {
|
60
58
|
const dep = new EntryDependency(entry);
|
61
59
|
// TODO webpack 6 remove string option
|
62
|
-
dep.loc = {
|
60
|
+
dep.loc = {
|
61
|
+
name:
|
62
|
+
typeof options === "object"
|
63
|
+
? /** @type {string} */ (options.name)
|
64
|
+
: options
|
65
|
+
};
|
63
66
|
return dep;
|
64
67
|
}
|
65
68
|
}
|
package/lib/Entrypoint.js
CHANGED
@@ -83,13 +83,13 @@ class Entrypoint extends ChunkGroup {
|
|
83
83
|
* @returns {Chunk} chunk
|
84
84
|
*/
|
85
85
|
getEntrypointChunk() {
|
86
|
-
return this._entrypointChunk;
|
86
|
+
return /** @type {Chunk} */ (this._entrypointChunk);
|
87
87
|
}
|
88
88
|
|
89
89
|
/**
|
90
90
|
* @param {Chunk} oldChunk chunk to be replaced
|
91
91
|
* @param {Chunk} newChunk New chunk that will be replaced with
|
92
|
-
* @returns {boolean} returns true if the replacement was successful
|
92
|
+
* @returns {boolean | undefined} returns true if the replacement was successful
|
93
93
|
*/
|
94
94
|
replaceChunk(oldChunk, newChunk) {
|
95
95
|
if (this._runtimeChunk === oldChunk) this._runtimeChunk = newChunk;
|
@@ -0,0 +1,52 @@
|
|
1
|
+
/*
|
2
|
+
MIT License http://www.opensource.org/licenses/mit-license.php
|
3
|
+
Author Gengkun He @ahabhgk
|
4
|
+
*/
|
5
|
+
|
6
|
+
"use strict";
|
7
|
+
|
8
|
+
const WebpackError = require("./WebpackError");
|
9
|
+
const makeSerializable = require("./util/makeSerializable");
|
10
|
+
|
11
|
+
/** @typedef {import("./Module")} Module */
|
12
|
+
/** @typedef {import("./Compilation")} Compilation */
|
13
|
+
/** @typedef {import("./RuntimeTemplate")} RuntimeTemplate */
|
14
|
+
/** @typedef {import("./serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
|
15
|
+
/** @typedef {import("./serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
|
16
|
+
/** @typedef {"asyncWebAssembly" | "topLevelAwait" | "external promise" | "external script" | "external import" | "external module"} Feature */
|
17
|
+
|
18
|
+
class EnvironmentNotSupportAsyncWarning extends WebpackError {
|
19
|
+
/**
|
20
|
+
* Creates an instance of EnvironmentNotSupportAsyncWarning.
|
21
|
+
* @param {Module} module module
|
22
|
+
* @param {Feature} feature feature
|
23
|
+
*/
|
24
|
+
constructor(module, feature) {
|
25
|
+
const message = `The generated code contains 'async/await' because this module is using "${feature}".
|
26
|
+
However, your target environment does not appear to support 'async/await'.
|
27
|
+
As a result, the code may not run as expected or may cause runtime errors.`;
|
28
|
+
super(message);
|
29
|
+
|
30
|
+
this.name = "EnvironmentNotSupportAsyncWarning";
|
31
|
+
this.module = module;
|
32
|
+
}
|
33
|
+
|
34
|
+
/**
|
35
|
+
* Creates an instance of EnvironmentNotSupportAsyncWarning.
|
36
|
+
* @param {Module} module module
|
37
|
+
* @param {RuntimeTemplate} runtimeTemplate compilation
|
38
|
+
* @param {Feature} feature feature
|
39
|
+
*/
|
40
|
+
static check(module, runtimeTemplate, feature) {
|
41
|
+
if (!runtimeTemplate.supportsAsyncFunction()) {
|
42
|
+
module.addWarning(new EnvironmentNotSupportAsyncWarning(module, feature));
|
43
|
+
}
|
44
|
+
}
|
45
|
+
}
|
46
|
+
|
47
|
+
makeSerializable(
|
48
|
+
EnvironmentNotSupportAsyncWarning,
|
49
|
+
"webpack/lib/EnvironmentNotSupportAsyncWarning"
|
50
|
+
);
|
51
|
+
|
52
|
+
module.exports = EnvironmentNotSupportAsyncWarning;
|
package/lib/EnvironmentPlugin.js
CHANGED
@@ -12,15 +12,18 @@ const WebpackError = require("./WebpackError");
|
|
12
12
|
/** @typedef {import("./DefinePlugin").CodeValue} CodeValue */
|
13
13
|
|
14
14
|
class EnvironmentPlugin {
|
15
|
+
/**
|
16
|
+
* @param {(string | string[] | Record<string, string>)[]} keys keys
|
17
|
+
*/
|
15
18
|
constructor(...keys) {
|
16
19
|
if (keys.length === 1 && Array.isArray(keys[0])) {
|
17
20
|
this.keys = keys[0];
|
18
21
|
this.defaultValues = {};
|
19
22
|
} else if (keys.length === 1 && keys[0] && typeof keys[0] === "object") {
|
20
23
|
this.keys = Object.keys(keys[0]);
|
21
|
-
this.defaultValues = keys[0];
|
24
|
+
this.defaultValues = /** @type {Record<string, string>} */ (keys[0]);
|
22
25
|
} else {
|
23
|
-
this.keys = keys;
|
26
|
+
this.keys = /** @type {string[]} */ (keys);
|
24
27
|
this.defaultValues = {};
|
25
28
|
}
|
26
29
|
}
|
package/lib/ErrorHelpers.js
CHANGED
@@ -9,53 +9,92 @@ const loaderFlag = "LOADER_EXECUTION";
|
|
9
9
|
|
10
10
|
const webpackOptionsFlag = "WEBPACK_OPTIONS";
|
11
11
|
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
12
|
+
/**
|
13
|
+
* @param {string} stack stack trace
|
14
|
+
* @param {string} flag flag to cut off
|
15
|
+
* @returns {string} stack trace without the specified flag included
|
16
|
+
*/
|
17
|
+
const cutOffByFlag = (stack, flag) => {
|
18
|
+
const errorStack = stack.split("\n");
|
19
|
+
for (let i = 0; i < errorStack.length; i++) {
|
20
|
+
if (errorStack[i].includes(flag)) {
|
21
|
+
errorStack.length = i;
|
17
22
|
}
|
18
23
|
}
|
19
|
-
return
|
24
|
+
return errorStack.join("\n");
|
20
25
|
};
|
21
26
|
|
22
|
-
|
23
|
-
|
27
|
+
/**
|
28
|
+
* @param {string} stack stack trace
|
29
|
+
* @returns {string} stack trace without the loader execution flag included
|
30
|
+
*/
|
31
|
+
const cutOffLoaderExecution = stack => cutOffByFlag(stack, loaderFlag);
|
24
32
|
|
25
|
-
|
26
|
-
|
33
|
+
/**
|
34
|
+
* @param {string} stack stack trace
|
35
|
+
* @returns {string} stack trace without the webpack options flag included
|
36
|
+
*/
|
37
|
+
const cutOffWebpackOptions = stack => cutOffByFlag(stack, webpackOptionsFlag);
|
27
38
|
|
28
|
-
|
29
|
-
|
30
|
-
|
39
|
+
/**
|
40
|
+
* @param {string} stack stack trace
|
41
|
+
* @param {string} message error message
|
42
|
+
* @returns {string} stack trace without the message included
|
43
|
+
*/
|
44
|
+
const cutOffMultilineMessage = (stack, message) => {
|
45
|
+
const stackSplitByLines = stack.split("\n");
|
46
|
+
const messageSplitByLines = message.split("\n");
|
31
47
|
|
48
|
+
/** @type {string[]} */
|
32
49
|
const result = [];
|
33
50
|
|
34
|
-
|
35
|
-
if (!line.includes(
|
36
|
-
}
|
51
|
+
for (const [idx, line] of stackSplitByLines.entries()) {
|
52
|
+
if (!line.includes(messageSplitByLines[idx])) result.push(line);
|
53
|
+
}
|
37
54
|
|
38
55
|
return result.join("\n");
|
39
56
|
};
|
40
57
|
|
41
|
-
|
58
|
+
/**
|
59
|
+
* @param {string} stack stack trace
|
60
|
+
* @param {string} message error message
|
61
|
+
* @returns {string} stack trace without the message included
|
62
|
+
*/
|
63
|
+
const cutOffMessage = (stack, message) => {
|
42
64
|
const nextLine = stack.indexOf("\n");
|
43
65
|
if (nextLine === -1) {
|
44
66
|
return stack === message ? "" : stack;
|
45
|
-
} else {
|
46
|
-
const firstLine = stack.substr(0, nextLine);
|
47
|
-
return firstLine === message ? stack.substr(nextLine + 1) : stack;
|
48
67
|
}
|
68
|
+
const firstLine = stack.slice(0, nextLine);
|
69
|
+
return firstLine === message ? stack.slice(nextLine + 1) : stack;
|
49
70
|
};
|
50
71
|
|
51
|
-
|
52
|
-
|
53
|
-
|
72
|
+
/**
|
73
|
+
* @param {string} stack stack trace
|
74
|
+
* @param {string} message error message
|
75
|
+
* @returns {string} stack trace without the loader execution flag and message included
|
76
|
+
*/
|
77
|
+
const cleanUp = (stack, message) => {
|
78
|
+
stack = cutOffLoaderExecution(stack);
|
79
|
+
stack = cutOffMessage(stack, message);
|
54
80
|
return stack;
|
55
81
|
};
|
56
82
|
|
57
|
-
|
58
|
-
|
59
|
-
|
83
|
+
/**
|
84
|
+
* @param {string} stack stack trace
|
85
|
+
* @param {string} message error message
|
86
|
+
* @returns {string} stack trace without the webpack options flag and message included
|
87
|
+
*/
|
88
|
+
const cleanUpWebpackOptions = (stack, message) => {
|
89
|
+
stack = cutOffWebpackOptions(stack);
|
90
|
+
stack = cutOffMultilineMessage(stack, message);
|
60
91
|
return stack;
|
61
92
|
};
|
93
|
+
|
94
|
+
module.exports.cutOffByFlag = cutOffByFlag;
|
95
|
+
module.exports.cutOffLoaderExecution = cutOffLoaderExecution;
|
96
|
+
module.exports.cutOffWebpackOptions = cutOffWebpackOptions;
|
97
|
+
module.exports.cutOffMultilineMessage = cutOffMultilineMessage;
|
98
|
+
module.exports.cutOffMessage = cutOffMessage;
|
99
|
+
module.exports.cleanUp = cleanUp;
|
100
|
+
module.exports.cleanUpWebpackOptions = cleanUpWebpackOptions;
|
@@ -8,9 +8,11 @@
|
|
8
8
|
const { ConcatSource, RawSource } = require("webpack-sources");
|
9
9
|
const ExternalModule = require("./ExternalModule");
|
10
10
|
const ModuleFilenameHelpers = require("./ModuleFilenameHelpers");
|
11
|
+
const RuntimeGlobals = require("./RuntimeGlobals");
|
11
12
|
const JavascriptModulesPlugin = require("./javascript/JavascriptModulesPlugin");
|
12
13
|
|
13
14
|
/** @typedef {import("webpack-sources").Source} Source */
|
15
|
+
/** @typedef {import("../declarations/WebpackOptions").OutputNormalized} OutputOptions */
|
14
16
|
/** @typedef {import("./Compiler")} Compiler */
|
15
17
|
|
16
18
|
/** @type {WeakMap<Source, Source>} */
|
@@ -26,8 +28,18 @@ const devtoolWarning = new RawSource(`/*
|
|
26
28
|
*/
|
27
29
|
`);
|
28
30
|
|
31
|
+
/**
|
32
|
+
* @typedef {object} EvalDevToolModulePluginOptions
|
33
|
+
* @property {OutputOptions["devtoolNamespace"]=} namespace namespace
|
34
|
+
* @property {string=} sourceUrlComment source url comment
|
35
|
+
* @property {OutputOptions["devtoolModuleFilenameTemplate"]=} moduleFilenameTemplate module filename template
|
36
|
+
*/
|
37
|
+
|
29
38
|
class EvalDevToolModulePlugin {
|
30
|
-
|
39
|
+
/**
|
40
|
+
* @param {EvalDevToolModulePluginOptions=} options options
|
41
|
+
*/
|
42
|
+
constructor(options = {}) {
|
31
43
|
this.namespace = options.namespace || "";
|
32
44
|
this.sourceUrlComment = options.sourceUrlComment || "\n//# sourceURL=[url]";
|
33
45
|
this.moduleFilenameTemplate =
|
@@ -65,19 +77,23 @@ class EvalDevToolModulePlugin {
|
|
65
77
|
hashFunction: compilation.outputOptions.hashFunction
|
66
78
|
}
|
67
79
|
);
|
68
|
-
const footer =
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
.replace(/^\//, "")
|
78
|
-
);
|
80
|
+
const footer = `\n${this.sourceUrlComment.replace(
|
81
|
+
/\[url\]/g,
|
82
|
+
encodeURI(str)
|
83
|
+
.replace(/%2F/g, "/")
|
84
|
+
.replace(/%20/g, "_")
|
85
|
+
.replace(/%5E/g, "^")
|
86
|
+
.replace(/%5C/g, "\\")
|
87
|
+
.replace(/^\//, "")
|
88
|
+
)}`;
|
79
89
|
const result = new RawSource(
|
80
|
-
`eval(${
|
90
|
+
`eval(${
|
91
|
+
compilation.outputOptions.trustedTypes
|
92
|
+
? `${RuntimeGlobals.createScript}(${JSON.stringify(
|
93
|
+
content + footer
|
94
|
+
)})`
|
95
|
+
: JSON.stringify(content + footer)
|
96
|
+
});`
|
81
97
|
);
|
82
98
|
cache.set(source, result);
|
83
99
|
return result;
|
@@ -95,6 +111,14 @@ class EvalDevToolModulePlugin {
|
|
95
111
|
hash.update("EvalDevToolModulePlugin");
|
96
112
|
hash.update("2");
|
97
113
|
});
|
114
|
+
if (compilation.outputOptions.trustedTypes) {
|
115
|
+
compilation.hooks.additionalModuleRuntimeRequirements.tap(
|
116
|
+
"EvalDevToolModulePlugin",
|
117
|
+
(module, set, context) => {
|
118
|
+
set.add(RuntimeGlobals.createScript);
|
119
|
+
}
|
120
|
+
);
|
121
|
+
}
|
98
122
|
});
|
99
123
|
}
|
100
124
|
}
|