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
@@ -26,7 +26,7 @@ const COMMON_LIBRARY_NAME_MESSAGE =
|
|
26
26
|
|
27
27
|
/**
|
28
28
|
* @template T
|
29
|
-
* @typedef {
|
29
|
+
* @typedef {object} LibraryContext
|
30
30
|
* @property {Compilation} compilation
|
31
31
|
* @property {ChunkGraph} chunkGraph
|
32
32
|
* @property {T} options
|
@@ -37,7 +37,7 @@ const COMMON_LIBRARY_NAME_MESSAGE =
|
|
37
37
|
*/
|
38
38
|
class AbstractLibraryPlugin {
|
39
39
|
/**
|
40
|
-
* @param {
|
40
|
+
* @param {object} options options
|
41
41
|
* @param {string} options.pluginName name of the plugin
|
42
42
|
* @param {LibraryType} options.type used library type
|
43
43
|
*/
|
@@ -87,6 +87,10 @@ class AbstractLibraryPlugin {
|
|
87
87
|
}
|
88
88
|
);
|
89
89
|
|
90
|
+
/**
|
91
|
+
* @param {Chunk} chunk chunk
|
92
|
+
* @returns {TODO} options for the chunk
|
93
|
+
*/
|
90
94
|
const getOptionsForChunk = chunk => {
|
91
95
|
if (compilation.chunkGraph.getNumberOfEntryModules(chunk) === 0)
|
92
96
|
return false;
|
@@ -21,14 +21,15 @@ const AbstractLibraryPlugin = require("./AbstractLibraryPlugin");
|
|
21
21
|
/** @template T @typedef {import("./AbstractLibraryPlugin").LibraryContext<T>} LibraryContext<T> */
|
22
22
|
|
23
23
|
/**
|
24
|
-
* @typedef {
|
24
|
+
* @typedef {object} AmdLibraryPluginOptions
|
25
25
|
* @property {LibraryType} type
|
26
26
|
* @property {boolean=} requireAsWrapper
|
27
27
|
*/
|
28
28
|
|
29
29
|
/**
|
30
|
-
* @typedef {
|
30
|
+
* @typedef {object} AmdLibraryPluginParsed
|
31
31
|
* @property {string} name
|
32
|
+
* @property {string} amdContainer
|
32
33
|
*/
|
33
34
|
|
34
35
|
/**
|
@@ -52,23 +53,21 @@ class AmdLibraryPlugin extends AbstractLibraryPlugin {
|
|
52
53
|
* @returns {T | false} preprocess as needed by overriding
|
53
54
|
*/
|
54
55
|
parseOptions(library) {
|
55
|
-
const { name } = library;
|
56
|
+
const { name, amdContainer } = library;
|
56
57
|
if (this.requireAsWrapper) {
|
57
58
|
if (name) {
|
58
59
|
throw new Error(
|
59
60
|
`AMD library name must be unset. ${AbstractLibraryPlugin.COMMON_LIBRARY_NAME_MESSAGE}`
|
60
61
|
);
|
61
62
|
}
|
62
|
-
} else {
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
);
|
67
|
-
}
|
63
|
+
} else if (name && typeof name !== "string") {
|
64
|
+
throw new Error(
|
65
|
+
`AMD library name must be a simple string or unset. ${AbstractLibraryPlugin.COMMON_LIBRARY_NAME_MESSAGE}`
|
66
|
+
);
|
68
67
|
}
|
69
|
-
|
70
|
-
|
71
|
-
};
|
68
|
+
const _name = /** @type {string} */ (name);
|
69
|
+
const _amdContainer = /** @type {string} */ (amdContainer);
|
70
|
+
return { name: _name, amdContainer: _amdContainer };
|
72
71
|
}
|
73
72
|
|
74
73
|
/**
|
@@ -85,7 +84,11 @@ class AmdLibraryPlugin extends AbstractLibraryPlugin {
|
|
85
84
|
const modern = runtimeTemplate.supportsArrowFunction();
|
86
85
|
const modules = chunkGraph
|
87
86
|
.getChunkModules(chunk)
|
88
|
-
.filter(
|
87
|
+
.filter(
|
88
|
+
m =>
|
89
|
+
m instanceof ExternalModule &&
|
90
|
+
(m.externalType === "amd" || m.externalType === "amd-require")
|
91
|
+
);
|
89
92
|
const externals = /** @type {ExternalModule[]} */ (modules);
|
90
93
|
const externalsDepsArray = JSON.stringify(
|
91
94
|
externals.map(m =>
|
@@ -111,9 +114,14 @@ class AmdLibraryPlugin extends AbstractLibraryPlugin {
|
|
111
114
|
(iife || !chunk.hasRuntime() ? " return " : "\n");
|
112
115
|
const fnEnd = iife ? ";\n}" : "\n}";
|
113
116
|
|
117
|
+
let amdContainerPrefix = "";
|
118
|
+
if (options.amdContainer) {
|
119
|
+
amdContainerPrefix = `${options.amdContainer}.`;
|
120
|
+
}
|
121
|
+
|
114
122
|
if (this.requireAsWrapper) {
|
115
123
|
return new ConcatSource(
|
116
|
-
|
124
|
+
`${amdContainerPrefix}require(${externalsDepsArray}, ${fnStart}`,
|
117
125
|
source,
|
118
126
|
`${fnEnd});`
|
119
127
|
);
|
@@ -123,19 +131,24 @@ class AmdLibraryPlugin extends AbstractLibraryPlugin {
|
|
123
131
|
});
|
124
132
|
|
125
133
|
return new ConcatSource(
|
126
|
-
|
134
|
+
`${amdContainerPrefix}define(${JSON.stringify(
|
135
|
+
name
|
136
|
+
)}, ${externalsDepsArray}, ${fnStart}`,
|
127
137
|
source,
|
128
138
|
`${fnEnd});`
|
129
139
|
);
|
130
140
|
} else if (externalsArguments) {
|
131
141
|
return new ConcatSource(
|
132
|
-
|
142
|
+
`${amdContainerPrefix}define(${externalsDepsArray}, ${fnStart}`,
|
133
143
|
source,
|
134
144
|
`${fnEnd});`
|
135
145
|
);
|
136
|
-
} else {
|
137
|
-
return new ConcatSource(`define(${fnStart}`, source, `${fnEnd});`);
|
138
146
|
}
|
147
|
+
return new ConcatSource(
|
148
|
+
`${amdContainerPrefix}define(${fnStart}`,
|
149
|
+
source,
|
150
|
+
`${fnEnd});`
|
151
|
+
);
|
139
152
|
}
|
140
153
|
|
141
154
|
/**
|
@@ -155,6 +168,9 @@ class AmdLibraryPlugin extends AbstractLibraryPlugin {
|
|
155
168
|
chunk
|
156
169
|
});
|
157
170
|
hash.update(name);
|
171
|
+
} else if (options.amdContainer) {
|
172
|
+
hash.update("amdContainer");
|
173
|
+
hash.update(options.amdContainer);
|
158
174
|
}
|
159
175
|
}
|
160
176
|
}
|
@@ -7,6 +7,7 @@
|
|
7
7
|
|
8
8
|
const { ConcatSource } = require("webpack-sources");
|
9
9
|
const { UsageState } = require("../ExportsInfo");
|
10
|
+
const RuntimeGlobals = require("../RuntimeGlobals");
|
10
11
|
const Template = require("../Template");
|
11
12
|
const propertyAccess = require("../util/propertyAccess");
|
12
13
|
const { getEntryRuntime } = require("../util/runtime");
|
@@ -16,6 +17,7 @@ const AbstractLibraryPlugin = require("./AbstractLibraryPlugin");
|
|
16
17
|
/** @typedef {import("../../declarations/WebpackOptions").LibraryOptions} LibraryOptions */
|
17
18
|
/** @typedef {import("../../declarations/WebpackOptions").LibraryType} LibraryType */
|
18
19
|
/** @typedef {import("../Chunk")} Chunk */
|
20
|
+
/** @typedef {import("../Compilation")} Compilation */
|
19
21
|
/** @typedef {import("../Compilation").ChunkHashContext} ChunkHashContext */
|
20
22
|
/** @typedef {import("../Compiler")} Compiler */
|
21
23
|
/** @typedef {import("../Module")} Module */
|
@@ -34,9 +36,8 @@ const IDENTIFIER_REGEX =
|
|
34
36
|
* @param {string} name name to be validated
|
35
37
|
* @returns {boolean} true, when valid
|
36
38
|
*/
|
37
|
-
const isNameValid = name =>
|
38
|
-
|
39
|
-
};
|
39
|
+
const isNameValid = name =>
|
40
|
+
!KEYWORD_REGEX.test(name) && IDENTIFIER_REGEX.test(name);
|
40
41
|
|
41
42
|
/**
|
42
43
|
* @param {string[]} accessor variable plus properties
|
@@ -58,6 +59,7 @@ const accessWithInit = (accessor, existingLength, initLast = false) => {
|
|
58
59
|
let i = 1;
|
59
60
|
|
60
61
|
// all properties printed so far (excluding base)
|
62
|
+
/** @type {string[] | undefined} */
|
61
63
|
let propsSoFar;
|
62
64
|
|
63
65
|
// if there is existingLength, print all properties until this position as property access
|
@@ -88,16 +90,16 @@ const accessWithInit = (accessor, existingLength, initLast = false) => {
|
|
88
90
|
};
|
89
91
|
|
90
92
|
/**
|
91
|
-
* @typedef {
|
93
|
+
* @typedef {object} AssignLibraryPluginOptions
|
92
94
|
* @property {LibraryType} type
|
93
95
|
* @property {string[] | "global"} prefix name prefix
|
94
96
|
* @property {string | false} declare declare name as variable
|
95
|
-
* @property {"error"|"copy"|"assign"} unnamed behavior for unnamed library name
|
97
|
+
* @property {"error"|"static"|"copy"|"assign"} unnamed behavior for unnamed library name
|
96
98
|
* @property {"copy"|"assign"=} named behavior for named library name
|
97
99
|
*/
|
98
100
|
|
99
101
|
/**
|
100
|
-
* @typedef {
|
102
|
+
* @typedef {object} AssignLibraryPluginParsed
|
101
103
|
* @property {string | string[]} name
|
102
104
|
* @property {string | string[] | undefined} export
|
103
105
|
*/
|
@@ -133,15 +135,14 @@ class AssignLibraryPlugin extends AbstractLibraryPlugin {
|
|
133
135
|
`Library name must be a string or string array. ${AbstractLibraryPlugin.COMMON_LIBRARY_NAME_MESSAGE}`
|
134
136
|
);
|
135
137
|
}
|
136
|
-
} else {
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
);
|
141
|
-
}
|
138
|
+
} else if (name && typeof name !== "string" && !Array.isArray(name)) {
|
139
|
+
throw new Error(
|
140
|
+
`Library name must be a string, string array or unset. ${AbstractLibraryPlugin.COMMON_LIBRARY_NAME_MESSAGE}`
|
141
|
+
);
|
142
142
|
}
|
143
|
+
const _name = /** @type {string | string[]} */ (name);
|
143
144
|
return {
|
144
|
-
name:
|
145
|
+
name: _name,
|
145
146
|
export: library.export
|
146
147
|
};
|
147
148
|
}
|
@@ -172,12 +173,22 @@ class AssignLibraryPlugin extends AbstractLibraryPlugin {
|
|
172
173
|
moduleGraph.addExtraReason(module, "used as library export");
|
173
174
|
}
|
174
175
|
|
176
|
+
/**
|
177
|
+
* @param {Compilation} compilation the compilation
|
178
|
+
* @returns {string[]} the prefix
|
179
|
+
*/
|
175
180
|
_getPrefix(compilation) {
|
176
181
|
return this.prefix === "global"
|
177
|
-
? [compilation.
|
182
|
+
? [compilation.runtimeTemplate.globalObject]
|
178
183
|
: this.prefix;
|
179
184
|
}
|
180
185
|
|
186
|
+
/**
|
187
|
+
* @param {AssignLibraryPluginParsed} options the library options
|
188
|
+
* @param {Chunk} chunk the chunk
|
189
|
+
* @param {Compilation} compilation the compilation
|
190
|
+
* @returns {Array<string>} the resolved full name
|
191
|
+
*/
|
181
192
|
_getResolvedFullName(options, chunk, compilation) {
|
182
193
|
const prefix = this._getPrefix(compilation);
|
183
194
|
const fullName = options.name ? prefix.concat(options.name) : prefix;
|
@@ -222,9 +233,15 @@ class AssignLibraryPlugin extends AbstractLibraryPlugin {
|
|
222
233
|
* @param {LibraryContext<T>} libraryContext context
|
223
234
|
* @returns {string | undefined} bailout reason
|
224
235
|
*/
|
225
|
-
embedInRuntimeBailout(
|
236
|
+
embedInRuntimeBailout(
|
237
|
+
module,
|
238
|
+
{ chunk, codeGenerationResults },
|
239
|
+
{ options, compilation }
|
240
|
+
) {
|
241
|
+
const { data } = codeGenerationResults.get(module, chunk.runtime);
|
226
242
|
const topLevelDeclarations =
|
227
|
-
|
243
|
+
(data && data.get("topLevelDeclarations")) ||
|
244
|
+
(module.buildInfo && module.buildInfo.topLevelDeclarations);
|
228
245
|
if (!topLevelDeclarations)
|
229
246
|
return "it doesn't tell about top level declarations.";
|
230
247
|
const fullNameResolved = this._getResolvedFullName(
|
@@ -261,19 +278,42 @@ class AssignLibraryPlugin extends AbstractLibraryPlugin {
|
|
261
278
|
* @param {LibraryContext<T>} libraryContext context
|
262
279
|
* @returns {Source} source with library export
|
263
280
|
*/
|
264
|
-
renderStartup(
|
281
|
+
renderStartup(
|
282
|
+
source,
|
283
|
+
module,
|
284
|
+
{ moduleGraph, chunk },
|
285
|
+
{ options, compilation }
|
286
|
+
) {
|
265
287
|
const fullNameResolved = this._getResolvedFullName(
|
266
288
|
options,
|
267
289
|
chunk,
|
268
290
|
compilation
|
269
291
|
);
|
292
|
+
const staticExports = this.unnamed === "static";
|
270
293
|
const exportAccess = options.export
|
271
294
|
? propertyAccess(
|
272
295
|
Array.isArray(options.export) ? options.export : [options.export]
|
273
|
-
|
296
|
+
)
|
274
297
|
: "";
|
275
298
|
const result = new ConcatSource(source);
|
276
|
-
if (
|
299
|
+
if (staticExports) {
|
300
|
+
const exportsInfo = moduleGraph.getExportsInfo(module);
|
301
|
+
const exportTarget = accessWithInit(
|
302
|
+
fullNameResolved,
|
303
|
+
this._getPrefix(compilation).length,
|
304
|
+
true
|
305
|
+
);
|
306
|
+
for (const exportInfo of exportsInfo.orderedExports) {
|
307
|
+
if (!exportInfo.provided) continue;
|
308
|
+
const nameAccess = propertyAccess([exportInfo.name]);
|
309
|
+
result.add(
|
310
|
+
`${exportTarget}${nameAccess} = ${RuntimeGlobals.exports}${exportAccess}${nameAccess};\n`
|
311
|
+
);
|
312
|
+
}
|
313
|
+
result.add(
|
314
|
+
`Object.defineProperty(${exportTarget}, "__esModule", { value: true });\n`
|
315
|
+
);
|
316
|
+
} else if (options.name ? this.named === "copy" : this.unnamed === "copy") {
|
277
317
|
result.add(
|
278
318
|
`var __webpack_export_target__ = ${accessWithInit(
|
279
319
|
fullNameResolved,
|
@@ -281,10 +321,11 @@ class AssignLibraryPlugin extends AbstractLibraryPlugin {
|
|
281
321
|
true
|
282
322
|
)};\n`
|
283
323
|
);
|
284
|
-
|
324
|
+
/** @type {string} */
|
325
|
+
let exports = RuntimeGlobals.exports;
|
285
326
|
if (exportAccess) {
|
286
327
|
result.add(
|
287
|
-
`var __webpack_exports_export__ =
|
328
|
+
`var __webpack_exports_export__ = ${RuntimeGlobals.exports}${exportAccess};\n`
|
288
329
|
);
|
289
330
|
exports = "__webpack_exports_export__";
|
290
331
|
}
|
@@ -300,7 +341,7 @@ class AssignLibraryPlugin extends AbstractLibraryPlugin {
|
|
300
341
|
fullNameResolved,
|
301
342
|
this._getPrefix(compilation).length,
|
302
343
|
false
|
303
|
-
)} =
|
344
|
+
)} = ${RuntimeGlobals.exports}${exportAccess};\n`
|
304
345
|
);
|
305
346
|
}
|
306
347
|
return result;
|
@@ -313,7 +354,7 @@ class AssignLibraryPlugin extends AbstractLibraryPlugin {
|
|
313
354
|
* @returns {void}
|
314
355
|
*/
|
315
356
|
runtimeRequirements(chunk, set, libraryContext) {
|
316
|
-
|
357
|
+
set.add(RuntimeGlobals.exports);
|
317
358
|
}
|
318
359
|
|
319
360
|
/**
|
@@ -325,15 +366,10 @@ class AssignLibraryPlugin extends AbstractLibraryPlugin {
|
|
325
366
|
*/
|
326
367
|
chunkHash(chunk, hash, chunkHashContext, { options, compilation }) {
|
327
368
|
hash.update("AssignLibraryPlugin");
|
328
|
-
const
|
329
|
-
|
330
|
-
|
331
|
-
|
332
|
-
const fullName = options.name ? prefix.concat(options.name) : prefix;
|
333
|
-
const fullNameResolved = fullName.map(n =>
|
334
|
-
compilation.getPath(n, {
|
335
|
-
chunk
|
336
|
-
})
|
369
|
+
const fullNameResolved = this._getResolvedFullName(
|
370
|
+
options,
|
371
|
+
chunk,
|
372
|
+
compilation
|
337
373
|
);
|
338
374
|
if (options.name ? this.named === "copy" : this.unnamed === "copy") {
|
339
375
|
hash.update("copy");
|
@@ -12,6 +12,10 @@
|
|
12
12
|
/** @type {WeakMap<Compiler, Set<LibraryType>>} */
|
13
13
|
const enabledTypes = new WeakMap();
|
14
14
|
|
15
|
+
/**
|
16
|
+
* @param {Compiler} compiler the compiler instance
|
17
|
+
* @returns {Set<LibraryType>} enabled types
|
18
|
+
*/
|
15
19
|
const getEnabledTypes = compiler => {
|
16
20
|
let set = enabledTypes.get(compiler);
|
17
21
|
if (set === undefined) {
|
@@ -48,10 +52,11 @@ class EnableLibraryPlugin {
|
|
48
52
|
throw new Error(
|
49
53
|
`Library type "${type}" is not enabled. ` +
|
50
54
|
"EnableLibraryPlugin need to be used to enable this type of library. " +
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
+
`This usually happens through the "output.enabledLibraryTypes" option. ` +
|
56
|
+
`If you are using a function as entry which sets "library", you need to add all potential library types to "output.enabledLibraryTypes". ` +
|
57
|
+
`These types are enabled: ${Array.from(
|
58
|
+
getEnabledTypes(compiler)
|
59
|
+
).join(", ")}`
|
55
60
|
);
|
56
61
|
}
|
57
62
|
}
|
@@ -74,12 +79,13 @@ class EnableLibraryPlugin {
|
|
74
79
|
const ExportPropertyTemplatePlugin = require("./ExportPropertyLibraryPlugin");
|
75
80
|
new ExportPropertyTemplatePlugin({
|
76
81
|
type,
|
77
|
-
nsObjectUsed:
|
82
|
+
nsObjectUsed: !["module", "modern-module"].includes(type),
|
83
|
+
runtimeExportsUsed: type !== "modern-module"
|
78
84
|
}).apply(compiler);
|
79
85
|
};
|
80
86
|
switch (type) {
|
81
87
|
case "var": {
|
82
|
-
|
88
|
+
// @ts-expect-error https://github.com/microsoft/TypeScript/issues/41697
|
83
89
|
const AssignLibraryPlugin = require("./AssignLibraryPlugin");
|
84
90
|
new AssignLibraryPlugin({
|
85
91
|
type,
|
@@ -90,7 +96,7 @@ class EnableLibraryPlugin {
|
|
90
96
|
break;
|
91
97
|
}
|
92
98
|
case "assign-properties": {
|
93
|
-
|
99
|
+
// @ts-expect-error https://github.com/microsoft/TypeScript/issues/41697
|
94
100
|
const AssignLibraryPlugin = require("./AssignLibraryPlugin");
|
95
101
|
new AssignLibraryPlugin({
|
96
102
|
type,
|
@@ -102,7 +108,7 @@ class EnableLibraryPlugin {
|
|
102
108
|
break;
|
103
109
|
}
|
104
110
|
case "assign": {
|
105
|
-
|
111
|
+
// @ts-expect-error https://github.com/microsoft/TypeScript/issues/41697
|
106
112
|
const AssignLibraryPlugin = require("./AssignLibraryPlugin");
|
107
113
|
new AssignLibraryPlugin({
|
108
114
|
type,
|
@@ -113,7 +119,7 @@ class EnableLibraryPlugin {
|
|
113
119
|
break;
|
114
120
|
}
|
115
121
|
case "this": {
|
116
|
-
|
122
|
+
// @ts-expect-error https://github.com/microsoft/TypeScript/issues/41697
|
117
123
|
const AssignLibraryPlugin = require("./AssignLibraryPlugin");
|
118
124
|
new AssignLibraryPlugin({
|
119
125
|
type,
|
@@ -124,7 +130,7 @@ class EnableLibraryPlugin {
|
|
124
130
|
break;
|
125
131
|
}
|
126
132
|
case "window": {
|
127
|
-
|
133
|
+
// @ts-expect-error https://github.com/microsoft/TypeScript/issues/41697
|
128
134
|
const AssignLibraryPlugin = require("./AssignLibraryPlugin");
|
129
135
|
new AssignLibraryPlugin({
|
130
136
|
type,
|
@@ -135,7 +141,7 @@ class EnableLibraryPlugin {
|
|
135
141
|
break;
|
136
142
|
}
|
137
143
|
case "self": {
|
138
|
-
|
144
|
+
// @ts-expect-error https://github.com/microsoft/TypeScript/issues/41697
|
139
145
|
const AssignLibraryPlugin = require("./AssignLibraryPlugin");
|
140
146
|
new AssignLibraryPlugin({
|
141
147
|
type,
|
@@ -146,7 +152,7 @@ class EnableLibraryPlugin {
|
|
146
152
|
break;
|
147
153
|
}
|
148
154
|
case "global": {
|
149
|
-
|
155
|
+
// @ts-expect-error https://github.com/microsoft/TypeScript/issues/41697
|
150
156
|
const AssignLibraryPlugin = require("./AssignLibraryPlugin");
|
151
157
|
new AssignLibraryPlugin({
|
152
158
|
type,
|
@@ -157,7 +163,7 @@ class EnableLibraryPlugin {
|
|
157
163
|
break;
|
158
164
|
}
|
159
165
|
case "commonjs": {
|
160
|
-
|
166
|
+
// @ts-expect-error https://github.com/microsoft/TypeScript/issues/41697
|
161
167
|
const AssignLibraryPlugin = require("./AssignLibraryPlugin");
|
162
168
|
new AssignLibraryPlugin({
|
163
169
|
type,
|
@@ -167,9 +173,20 @@ class EnableLibraryPlugin {
|
|
167
173
|
}).apply(compiler);
|
168
174
|
break;
|
169
175
|
}
|
176
|
+
case "commonjs-static": {
|
177
|
+
// @ts-expect-error https://github.com/microsoft/TypeScript/issues/41697
|
178
|
+
const AssignLibraryPlugin = require("./AssignLibraryPlugin");
|
179
|
+
new AssignLibraryPlugin({
|
180
|
+
type,
|
181
|
+
prefix: ["exports"],
|
182
|
+
declare: false,
|
183
|
+
unnamed: "static"
|
184
|
+
}).apply(compiler);
|
185
|
+
break;
|
186
|
+
}
|
170
187
|
case "commonjs2":
|
171
188
|
case "commonjs-module": {
|
172
|
-
|
189
|
+
// @ts-expect-error https://github.com/microsoft/TypeScript/issues/41697
|
173
190
|
const AssignLibraryPlugin = require("./AssignLibraryPlugin");
|
174
191
|
new AssignLibraryPlugin({
|
175
192
|
type,
|
@@ -223,6 +240,14 @@ class EnableLibraryPlugin {
|
|
223
240
|
}).apply(compiler);
|
224
241
|
break;
|
225
242
|
}
|
243
|
+
case "modern-module": {
|
244
|
+
enableExportProperty();
|
245
|
+
const ModernModuleLibraryPlugin = require("./ModernModuleLibraryPlugin");
|
246
|
+
new ModernModuleLibraryPlugin({
|
247
|
+
type
|
248
|
+
}).apply(compiler);
|
249
|
+
break;
|
250
|
+
}
|
226
251
|
default:
|
227
252
|
throw new Error(`Unsupported library type ${type}.
|
228
253
|
Plugins which provide custom library types must call EnableLibraryPlugin.setEnabled(compiler, type) to disable this error.`);
|
@@ -7,6 +7,7 @@
|
|
7
7
|
|
8
8
|
const { ConcatSource } = require("webpack-sources");
|
9
9
|
const { UsageState } = require("../ExportsInfo");
|
10
|
+
const RuntimeGlobals = require("../RuntimeGlobals");
|
10
11
|
const propertyAccess = require("../util/propertyAccess");
|
11
12
|
const { getEntryRuntime } = require("../util/runtime");
|
12
13
|
const AbstractLibraryPlugin = require("./AbstractLibraryPlugin");
|
@@ -21,14 +22,15 @@ const AbstractLibraryPlugin = require("./AbstractLibraryPlugin");
|
|
21
22
|
/** @template T @typedef {import("./AbstractLibraryPlugin").LibraryContext<T>} LibraryContext<T> */
|
22
23
|
|
23
24
|
/**
|
24
|
-
* @typedef {
|
25
|
+
* @typedef {object} ExportPropertyLibraryPluginParsed
|
25
26
|
* @property {string | string[]} export
|
26
27
|
*/
|
27
28
|
|
28
29
|
/**
|
29
|
-
* @typedef {
|
30
|
+
* @typedef {object} ExportPropertyLibraryPluginOptions
|
30
31
|
* @property {LibraryType} type
|
31
32
|
* @property {boolean} nsObjectUsed the namespace object is used
|
33
|
+
* @property {boolean} runtimeExportsUsed runtime exports are used
|
32
34
|
*/
|
33
35
|
/**
|
34
36
|
* @typedef {ExportPropertyLibraryPluginParsed} T
|
@@ -38,12 +40,13 @@ class ExportPropertyLibraryPlugin extends AbstractLibraryPlugin {
|
|
38
40
|
/**
|
39
41
|
* @param {ExportPropertyLibraryPluginOptions} options options
|
40
42
|
*/
|
41
|
-
constructor({ type, nsObjectUsed }) {
|
43
|
+
constructor({ type, nsObjectUsed, runtimeExportsUsed }) {
|
42
44
|
super({
|
43
45
|
pluginName: "ExportPropertyLibraryPlugin",
|
44
46
|
type
|
45
47
|
});
|
46
48
|
this.nsObjectUsed = nsObjectUsed;
|
49
|
+
this.runtimeExportsUsed = runtimeExportsUsed;
|
47
50
|
}
|
48
51
|
|
49
52
|
/**
|
@@ -92,7 +95,11 @@ class ExportPropertyLibraryPlugin extends AbstractLibraryPlugin {
|
|
92
95
|
* @param {LibraryContext<T>} libraryContext context
|
93
96
|
* @returns {void}
|
94
97
|
*/
|
95
|
-
runtimeRequirements(chunk, set, libraryContext) {
|
98
|
+
runtimeRequirements(chunk, set, libraryContext) {
|
99
|
+
if (this.runtimeExportsUsed) {
|
100
|
+
set.add(RuntimeGlobals.exports);
|
101
|
+
}
|
102
|
+
}
|
96
103
|
|
97
104
|
/**
|
98
105
|
* @param {Source} source source
|
@@ -103,7 +110,9 @@ class ExportPropertyLibraryPlugin extends AbstractLibraryPlugin {
|
|
103
110
|
*/
|
104
111
|
renderStartup(source, module, renderContext, { options }) {
|
105
112
|
if (!options.export) return source;
|
106
|
-
const postfix =
|
113
|
+
const postfix = `${RuntimeGlobals.exports} = ${
|
114
|
+
RuntimeGlobals.exports
|
115
|
+
}${propertyAccess(
|
107
116
|
Array.isArray(options.export) ? options.export : [options.export]
|
108
117
|
)};\n`;
|
109
118
|
return new ConcatSource(source, postfix);
|
@@ -19,12 +19,12 @@ const AbstractLibraryPlugin = require("./AbstractLibraryPlugin");
|
|
19
19
|
/** @template T @typedef {import("./AbstractLibraryPlugin").LibraryContext<T>} LibraryContext<T> */
|
20
20
|
|
21
21
|
/**
|
22
|
-
* @typedef {
|
22
|
+
* @typedef {object} JsonpLibraryPluginOptions
|
23
23
|
* @property {LibraryType} type
|
24
24
|
*/
|
25
25
|
|
26
26
|
/**
|
27
|
-
* @typedef {
|
27
|
+
* @typedef {object} JsonpLibraryPluginParsed
|
28
28
|
* @property {string} name
|
29
29
|
*/
|
30
30
|
|
@@ -54,8 +54,9 @@ class JsonpLibraryPlugin extends AbstractLibraryPlugin {
|
|
54
54
|
`Jsonp library name must be a simple string. ${AbstractLibraryPlugin.COMMON_LIBRARY_NAME_MESSAGE}`
|
55
55
|
);
|
56
56
|
}
|
57
|
+
const _name = /** @type {string} */ (name);
|
57
58
|
return {
|
58
|
-
name:
|
59
|
+
name: _name
|
59
60
|
};
|
60
61
|
}
|
61
62
|
|