webpack 5.97.1 → 5.104.1
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 +368 -434
- package/bin/webpack.js +15 -9
- package/hot/dev-server.js +18 -3
- package/hot/emitter-event-target.js +7 -0
- package/hot/lazy-compilation-node.js +45 -29
- package/hot/lazy-compilation-universal.js +18 -0
- package/hot/lazy-compilation-web.js +15 -5
- package/hot/load-http.js +7 -0
- package/hot/log.js +15 -15
- package/hot/only-dev-server.js +19 -4
- package/hot/poll.js +1 -0
- package/lib/APIPlugin.js +48 -50
- package/lib/AbstractMethodError.js +1 -0
- package/lib/AsyncDependenciesBlock.js +4 -5
- package/lib/AutomaticPrefetchPlugin.js +22 -22
- package/lib/BannerPlugin.js +35 -40
- package/lib/Cache.js +12 -9
- package/lib/CacheFacade.js +13 -13
- package/lib/CaseSensitiveModulesWarning.js +6 -6
- package/lib/Chunk.js +68 -47
- package/lib/ChunkGraph.js +174 -95
- package/lib/ChunkGroup.js +32 -24
- package/lib/ChunkTemplate.js +8 -8
- package/lib/CleanPlugin.js +90 -42
- package/lib/CodeGenerationResults.js +12 -9
- package/lib/CompatibilityPlugin.js +70 -21
- package/lib/Compilation.js +827 -550
- package/lib/Compiler.js +137 -109
- package/lib/ConcatenationScope.js +45 -8
- package/lib/ConditionalInitFragment.js +1 -1
- package/lib/ConstPlugin.js +89 -59
- package/lib/ContextExclusionPlugin.js +5 -4
- package/lib/ContextModule.js +66 -51
- package/lib/ContextModuleFactory.js +51 -30
- package/lib/ContextReplacementPlugin.js +89 -34
- package/lib/CssModule.js +8 -4
- package/lib/DefinePlugin.js +209 -57
- package/lib/DelegatedModule.js +34 -23
- package/lib/DelegatedModuleFactoryPlugin.js +27 -24
- package/lib/DelegatedPlugin.js +4 -2
- package/lib/DependenciesBlock.js +0 -2
- package/lib/Dependency.js +37 -19
- package/lib/DependencyTemplate.js +2 -0
- package/lib/DependencyTemplates.js +5 -6
- package/lib/DllEntryPlugin.js +8 -4
- package/lib/DllModule.js +11 -12
- package/lib/DllModuleFactory.js +2 -2
- package/lib/DllPlugin.js +9 -6
- package/lib/DllReferencePlugin.js +60 -65
- package/lib/DotenvPlugin.js +462 -0
- package/lib/DynamicEntryPlugin.js +8 -8
- package/lib/EntryOptionPlugin.js +8 -6
- package/lib/EntryPlugin.js +5 -3
- package/lib/Entrypoint.js +19 -0
- package/lib/EnvironmentNotSupportAsyncWarning.js +0 -3
- package/lib/EnvironmentPlugin.js +26 -19
- package/lib/ErrorHelpers.js +6 -6
- package/lib/EvalDevToolModulePlugin.js +17 -14
- package/lib/EvalSourceMapDevToolPlugin.js +156 -142
- package/lib/ExportsInfo.js +180 -115
- package/lib/ExportsInfoApiPlugin.js +2 -2
- package/lib/ExternalModule.js +256 -102
- package/lib/ExternalModuleFactoryPlugin.js +66 -29
- package/lib/ExternalsPlugin.js +57 -2
- package/lib/FileSystemInfo.js +313 -247
- package/lib/FlagAllModulesAsUsedPlugin.js +2 -2
- package/lib/FlagDependencyExportsPlugin.js +29 -19
- package/lib/FlagDependencyUsagePlugin.js +9 -10
- package/lib/FlagEntryExportAsUsedPlugin.js +1 -1
- package/lib/Generator.js +43 -10
- package/lib/GraphHelpers.js +11 -3
- package/lib/HookWebpackError.js +35 -7
- package/lib/HotModuleReplacementPlugin.js +149 -108
- package/lib/HotUpdateChunk.js +0 -3
- package/lib/IgnoreErrorModuleFactory.js +2 -2
- package/lib/IgnorePlugin.js +16 -13
- package/lib/IgnoreWarningsPlugin.js +6 -4
- package/lib/InitFragment.js +41 -23
- package/lib/InvalidDependenciesModuleWarning.js +2 -3
- package/lib/JavascriptMetaInfoPlugin.js +2 -4
- package/lib/LibManifestPlugin.js +12 -13
- package/lib/LoaderOptionsPlugin.js +12 -14
- package/lib/LoaderTargetPlugin.js +5 -3
- package/lib/MainTemplate.js +18 -29
- package/lib/ManifestPlugin.js +235 -0
- package/lib/Module.js +138 -60
- package/lib/ModuleBuildError.js +4 -2
- package/lib/ModuleDependencyError.js +4 -3
- package/lib/ModuleDependencyWarning.js +4 -3
- package/lib/ModuleError.js +1 -1
- package/lib/ModuleFactory.js +10 -3
- package/lib/ModuleFilenameHelpers.js +63 -60
- package/lib/ModuleGraph.js +195 -70
- package/lib/ModuleGraphConnection.js +14 -20
- package/lib/ModuleInfoHeaderPlugin.js +15 -16
- package/lib/ModuleNotFoundError.js +1 -1
- package/lib/ModuleParseError.js +8 -4
- package/lib/ModuleSourceTypeConstants.js +189 -0
- package/lib/ModuleTemplate.js +7 -8
- package/lib/ModuleTypeConstants.js +37 -15
- package/lib/ModuleWarning.js +1 -1
- package/lib/MultiCompiler.js +64 -49
- package/lib/MultiStats.js +19 -14
- package/lib/MultiWatching.js +7 -11
- package/lib/NoEmitOnErrorsPlugin.js +5 -3
- package/lib/NodeStuffPlugin.js +438 -126
- package/lib/NormalModule.js +322 -201
- package/lib/NormalModuleFactory.js +230 -117
- package/lib/NormalModuleReplacementPlugin.js +37 -39
- package/lib/NullFactory.js +3 -2
- package/lib/OptimizationStages.js +1 -1
- package/lib/OptionsApply.js +1 -1
- package/lib/Parser.js +5 -3
- package/lib/PlatformPlugin.js +3 -1
- package/lib/PrefetchPlugin.js +6 -4
- package/lib/ProgressPlugin.js +48 -49
- package/lib/ProvidePlugin.js +7 -5
- package/lib/RawModule.js +26 -12
- package/lib/RecordIdsPlugin.js +88 -110
- package/lib/RequestShortener.js +3 -1
- package/lib/ResolverFactory.js +15 -14
- package/lib/RuntimeGlobals.js +216 -153
- package/lib/RuntimeModule.js +7 -6
- package/lib/RuntimePlugin.js +115 -62
- package/lib/RuntimeTemplate.js +248 -76
- package/lib/SelfModuleFactory.js +2 -2
- package/lib/SizeFormatHelpers.js +2 -2
- package/lib/SourceMapDevToolModuleOptionsPlugin.js +17 -27
- package/lib/SourceMapDevToolPlugin.js +72 -59
- package/lib/Stats.js +2 -3
- package/lib/Template.js +31 -24
- package/lib/TemplatedPathPlugin.js +24 -21
- package/lib/UseStrictPlugin.js +1 -1
- package/lib/WarnCaseSensitiveModulesPlugin.js +36 -37
- package/lib/WarnDeprecatedOptionPlugin.js +7 -8
- package/lib/WarnNoModeSetPlugin.js +3 -1
- package/lib/WatchIgnorePlugin.js +11 -9
- package/lib/Watching.js +27 -29
- package/lib/WebpackError.js +10 -3
- package/lib/WebpackIsIncludedPlugin.js +4 -5
- package/lib/WebpackOptionsApply.js +263 -135
- package/lib/asset/AssetBytesGenerator.js +171 -0
- package/lib/asset/AssetBytesParser.js +37 -0
- package/lib/asset/AssetGenerator.js +285 -223
- package/lib/asset/AssetModulesPlugin.js +103 -41
- package/lib/asset/AssetParser.js +7 -3
- package/lib/asset/AssetSourceGenerator.js +41 -17
- package/lib/asset/RawDataUrlModule.js +17 -9
- package/lib/async-modules/AsyncModuleHelpers.js +52 -0
- package/lib/async-modules/AwaitDependenciesInitFragment.js +39 -24
- package/lib/async-modules/InferAsyncModulesPlugin.js +25 -26
- package/lib/buildChunkGraph.js +36 -17
- package/lib/cache/AddBuildDependenciesPlugin.js +5 -6
- package/lib/cache/IdleFileCachePlugin.js +22 -20
- package/lib/cache/MemoryCachePlugin.js +3 -3
- package/lib/cache/MemoryWithGcCachePlugin.js +17 -11
- package/lib/cache/PackFileCacheStrategy.js +198 -170
- package/lib/cache/ResolverCachePlugin.js +58 -48
- package/lib/cache/getLazyHashedEtag.js +5 -4
- package/lib/cli.js +197 -39
- package/lib/config/browserslistTargetHandler.js +110 -85
- package/lib/config/defaults.js +514 -113
- package/lib/config/normalization.js +91 -64
- package/lib/config/target.js +30 -18
- package/lib/container/ContainerEntryDependency.js +0 -1
- package/lib/container/ContainerEntryModule.js +16 -15
- package/lib/container/ContainerEntryModuleFactory.js +2 -2
- package/lib/container/ContainerPlugin.js +5 -6
- package/lib/container/ContainerReferencePlugin.js +27 -30
- package/lib/container/FallbackDependency.js +2 -1
- package/lib/container/FallbackModule.js +19 -14
- package/lib/container/FallbackModuleFactory.js +2 -2
- package/lib/container/HoistContainerReferencesPlugin.js +7 -7
- package/lib/container/ModuleFederationPlugin.js +4 -4
- package/lib/container/RemoteModule.js +14 -14
- package/lib/container/RemoteRuntimeModule.js +2 -2
- package/lib/container/options.js +9 -9
- package/lib/css/CssGenerator.js +366 -74
- package/lib/css/CssLoadingRuntimeModule.js +26 -16
- package/lib/css/CssMergeStyleSheetsRuntimeModule.js +56 -0
- package/lib/css/CssModulesPlugin.js +191 -142
- package/lib/css/CssParser.js +1756 -740
- package/lib/css/walkCssTokens.js +180 -67
- package/lib/debug/ProfilingPlugin.js +135 -51
- package/lib/dependencies/AMDDefineDependencyParserPlugin.js +29 -28
- package/lib/dependencies/AMDPlugin.js +18 -11
- package/lib/dependencies/AMDRequireArrayDependency.js +5 -4
- package/lib/dependencies/AMDRequireContextDependency.js +2 -1
- package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +35 -26
- package/lib/dependencies/AMDRuntimeModules.js +3 -1
- package/lib/dependencies/CachedConstDependency.js +24 -18
- package/lib/dependencies/CommonJsExportRequireDependency.js +31 -24
- package/lib/dependencies/CommonJsExportsDependency.js +2 -1
- package/lib/dependencies/CommonJsExportsParserPlugin.js +50 -36
- package/lib/dependencies/CommonJsFullRequireDependency.js +7 -13
- package/lib/dependencies/CommonJsImportsParserPlugin.js +146 -127
- package/lib/dependencies/CommonJsPlugin.js +29 -18
- package/lib/dependencies/CommonJsRequireContextDependency.js +4 -3
- package/lib/dependencies/CommonJsSelfReferenceDependency.js +4 -4
- package/lib/dependencies/ConstDependency.js +2 -2
- package/lib/dependencies/ContextDependency.js +10 -5
- package/lib/dependencies/ContextDependencyHelpers.js +21 -13
- package/lib/dependencies/ContextDependencyTemplateAsId.js +10 -9
- package/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +13 -10
- package/lib/dependencies/ContextElementDependency.js +23 -12
- package/lib/dependencies/CssIcssExportDependency.js +402 -22
- package/lib/dependencies/CssIcssImportDependency.js +116 -51
- package/lib/dependencies/CssIcssSymbolDependency.js +33 -35
- package/lib/dependencies/CssImportDependency.js +17 -14
- package/lib/dependencies/CssUrlDependency.js +8 -13
- package/lib/dependencies/DynamicExports.js +19 -19
- package/lib/dependencies/ExportsInfoDependency.js +13 -10
- package/lib/dependencies/ExternalModuleDependency.js +7 -7
- package/lib/dependencies/ExternalModuleInitFragment.js +3 -2
- package/lib/dependencies/ExternalModuleInitFragmentDependency.js +96 -0
- package/lib/dependencies/HarmonyAcceptDependency.js +96 -5
- package/lib/dependencies/HarmonyAcceptImportDependency.js +2 -5
- package/lib/dependencies/HarmonyCompatibilityDependency.js +0 -1
- package/lib/dependencies/HarmonyDetectionParserPlugin.js +10 -30
- package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +19 -8
- package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +136 -99
- package/lib/dependencies/HarmonyExportExpressionDependency.js +1 -1
- package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +152 -61
- package/lib/dependencies/HarmonyExportInitFragment.js +2 -2
- package/lib/dependencies/HarmonyExportSpecifierDependency.js +2 -2
- package/lib/dependencies/HarmonyExports.js +5 -5
- package/lib/dependencies/HarmonyImportDependency.js +92 -45
- package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +201 -163
- package/lib/dependencies/HarmonyImportSideEffectDependency.js +5 -6
- package/lib/dependencies/HarmonyImportSpecifierDependency.js +69 -42
- package/lib/dependencies/HarmonyModulesPlugin.js +16 -11
- package/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +15 -15
- package/lib/dependencies/ImportContextDependency.js +15 -1
- package/lib/dependencies/ImportDependency.js +25 -7
- package/lib/dependencies/ImportEagerDependency.js +7 -5
- package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +23 -13
- package/lib/dependencies/ImportMetaContextPlugin.js +2 -2
- package/lib/dependencies/ImportMetaPlugin.js +172 -20
- package/lib/dependencies/ImportParserPlugin.js +327 -49
- package/lib/dependencies/ImportPhase.js +121 -0
- package/lib/dependencies/ImportPlugin.js +3 -1
- package/lib/dependencies/ImportWeakDependency.js +7 -5
- package/lib/dependencies/JsonExportsDependency.js +54 -28
- package/lib/dependencies/LoaderDependency.js +0 -3
- package/lib/dependencies/LoaderImportDependency.js +0 -3
- package/lib/dependencies/LoaderPlugin.js +24 -25
- package/lib/dependencies/LocalModulesHelpers.js +4 -4
- package/lib/dependencies/ModuleDecoratorDependency.js +2 -4
- package/lib/dependencies/ModuleDependency.js +14 -13
- package/lib/dependencies/ModuleDependencyTemplateAsRequireId.js +1 -0
- package/lib/dependencies/ModuleHotAcceptDependency.js +1 -1
- package/lib/dependencies/NullDependency.js +2 -0
- package/lib/dependencies/ProvidedDependency.js +8 -10
- package/lib/dependencies/PureExpressionDependency.js +1 -2
- package/lib/dependencies/RequireContextDependency.js +2 -1
- package/lib/dependencies/RequireContextDependencyParserPlugin.js +47 -44
- package/lib/dependencies/RequireContextPlugin.js +5 -2
- package/lib/dependencies/RequireEnsureDependenciesBlock.js +3 -3
- package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +101 -99
- package/lib/dependencies/RequireEnsurePlugin.js +6 -6
- package/lib/dependencies/RequireIncludeDependency.js +2 -2
- package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +33 -34
- package/lib/dependencies/RequireIncludePlugin.js +1 -0
- package/lib/dependencies/RequireResolveContextDependency.js +1 -1
- package/lib/dependencies/RequireResolveDependency.js +3 -3
- package/lib/dependencies/RuntimeRequirementsDependency.js +3 -4
- package/lib/dependencies/StaticExportsDependency.js +3 -5
- package/lib/dependencies/SystemPlugin.js +4 -4
- package/lib/dependencies/URLContextDependency.js +65 -0
- package/lib/dependencies/URLDependency.js +3 -8
- package/lib/dependencies/URLPlugin.js +18 -159
- package/lib/dependencies/WebAssemblyExportImportedDependency.js +3 -3
- package/lib/dependencies/WebAssemblyImportDependency.js +2 -2
- package/lib/dependencies/WebpackIsIncludedDependency.js +2 -3
- package/lib/dependencies/WorkerDependency.js +8 -6
- package/lib/dependencies/WorkerPlugin.js +131 -67
- package/lib/dependencies/getFunctionExpression.js +2 -2
- package/lib/dependencies/processExportInfo.js +4 -4
- package/lib/esm/ExportWebpackRequireRuntimeModule.js +1 -1
- package/lib/esm/ModuleChunkFormatPlugin.js +232 -179
- package/lib/esm/ModuleChunkLoadingPlugin.js +112 -57
- package/lib/esm/ModuleChunkLoadingRuntimeModule.js +102 -28
- package/lib/formatLocation.js +2 -2
- package/lib/hmr/HotModuleReplacement.runtime.js +41 -29
- package/lib/hmr/HotModuleReplacementRuntimeModule.js +1 -1
- package/lib/hmr/JavascriptHotModuleReplacement.runtime.js +43 -33
- package/lib/hmr/JavascriptHotModuleReplacementHelper.js +37 -0
- package/lib/hmr/LazyCompilationPlugin.js +67 -54
- package/lib/hmr/lazyCompilationBackend.js +23 -18
- package/lib/ids/ChunkModuleIdRangePlugin.js +14 -11
- package/lib/ids/DeterministicChunkIdsPlugin.js +32 -37
- package/lib/ids/DeterministicModuleIdsPlugin.js +52 -52
- package/lib/ids/HashedModuleIdsPlugin.js +15 -13
- package/lib/ids/IdHelpers.js +66 -49
- package/lib/ids/NamedChunkIdsPlugin.js +14 -17
- package/lib/ids/NamedModuleIdsPlugin.js +12 -14
- package/lib/ids/NaturalChunkIdsPlugin.js +6 -4
- package/lib/ids/NaturalModuleIdsPlugin.js +4 -3
- package/lib/ids/OccurrenceChunkIdsPlugin.js +7 -5
- package/lib/ids/OccurrenceModuleIdsPlugin.js +8 -7
- package/lib/ids/SyncModuleIdsPlugin.js +18 -13
- package/lib/index.js +54 -14
- package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +116 -119
- package/lib/javascript/BasicEvaluatedExpression.js +26 -18
- package/lib/javascript/ChunkFormatHelpers.js +70 -0
- package/lib/javascript/ChunkHelpers.js +17 -5
- package/lib/javascript/CommonJsChunkFormatPlugin.js +114 -141
- package/lib/javascript/EnableChunkLoadingPlugin.js +7 -4
- package/lib/javascript/JavascriptGenerator.js +122 -100
- package/lib/javascript/JavascriptModulesPlugin.js +332 -152
- package/lib/javascript/JavascriptParser.js +1488 -1052
- package/lib/javascript/JavascriptParserHelpers.js +48 -47
- package/lib/javascript/StartupHelpers.js +23 -22
- package/lib/json/JsonData.js +4 -4
- package/lib/json/JsonGenerator.js +66 -32
- package/lib/json/JsonModulesPlugin.js +16 -6
- package/lib/json/JsonParser.js +23 -8
- package/lib/library/AbstractLibraryPlugin.js +45 -10
- package/lib/library/AmdLibraryPlugin.js +7 -5
- package/lib/library/AssignLibraryPlugin.js +71 -17
- package/lib/library/EnableLibraryPlugin.js +51 -25
- package/lib/library/ExportPropertyLibraryPlugin.js +12 -18
- package/lib/library/JsonpLibraryPlugin.js +5 -2
- package/lib/library/ModuleLibraryPlugin.js +230 -18
- package/lib/library/SystemLibraryPlugin.js +29 -11
- package/lib/library/UmdLibraryPlugin.js +35 -32
- package/lib/logging/Logger.js +18 -15
- package/lib/logging/createConsoleLogger.js +27 -27
- package/lib/logging/runtime.js +11 -11
- package/lib/logging/truncateArgs.js +5 -5
- package/lib/node/CommonJsChunkLoadingPlugin.js +72 -75
- package/lib/node/NodeEnvironmentPlugin.js +9 -3
- package/lib/node/NodeTargetPlugin.js +9 -1
- package/lib/node/NodeTemplatePlugin.js +2 -2
- package/lib/node/NodeWatchFileSystem.js +4 -4
- package/lib/node/ReadFileChunkLoadingRuntimeModule.js +22 -38
- package/lib/node/ReadFileCompileAsyncWasmPlugin.js +10 -11
- package/lib/node/ReadFileCompileWasmPlugin.js +11 -14
- package/lib/node/RequireChunkLoadingRuntimeModule.js +22 -30
- package/lib/node/nodeConsole.js +12 -7
- package/lib/optimize/AggressiveMergingPlugin.js +46 -47
- package/lib/optimize/AggressiveSplittingPlugin.js +233 -238
- package/lib/optimize/ConcatenatedModule.js +620 -251
- package/lib/optimize/EnsureChunkConditionsPlugin.js +58 -58
- package/lib/optimize/FlagIncludedChunksPlugin.js +93 -96
- package/lib/optimize/InnerGraph.js +139 -124
- package/lib/optimize/InnerGraphPlugin.js +29 -24
- package/lib/optimize/LimitChunkCountPlugin.js +32 -8
- package/lib/optimize/MangleExportsPlugin.js +22 -22
- package/lib/optimize/MergeDuplicateChunksPlugin.js +80 -81
- package/lib/optimize/MinChunkSizePlugin.js +12 -7
- package/lib/optimize/ModuleConcatenationPlugin.js +92 -71
- package/lib/optimize/RealContentHashPlugin.js +58 -44
- package/lib/optimize/RemoveEmptyChunksPlugin.js +8 -5
- package/lib/optimize/RemoveParentModulesPlugin.js +7 -4
- package/lib/optimize/RuntimeChunkPlugin.js +22 -25
- package/lib/optimize/SideEffectsFlagPlugin.js +44 -26
- package/lib/optimize/SplitChunksPlugin.js +209 -158
- package/lib/performance/AssetsOverSizeLimitWarning.js +1 -1
- package/lib/performance/EntrypointsOverSizeLimitWarning.js +2 -2
- package/lib/performance/SizeLimitsPlugin.js +8 -5
- package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +5 -7
- package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +61 -64
- package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +3 -4
- package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +2 -2
- package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +2 -2
- package/lib/rules/BasicEffectRulePlugin.js +14 -5
- package/lib/rules/BasicMatcherRulePlugin.js +18 -7
- package/lib/rules/ObjectMatcherRulePlugin.js +17 -6
- package/lib/rules/RuleSetCompiler.js +73 -32
- package/lib/rules/UseEffectRulePlugin.js +61 -25
- package/lib/runtime/AsyncModuleRuntimeModule.js +74 -9
- package/lib/runtime/AutoPublicPathRuntimeModule.js +9 -4
- package/lib/runtime/BaseUriRuntimeModule.js +2 -2
- package/lib/runtime/CompatRuntimeModule.js +0 -1
- package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +1 -1
- package/lib/runtime/GetChunkFilenameRuntimeModule.js +34 -35
- package/lib/runtime/GetMainFilenameRuntimeModule.js +1 -1
- package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +1 -1
- package/lib/runtime/LoadScriptRuntimeModule.js +0 -2
- package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +248 -0
- package/lib/runtime/PublicPathRuntimeModule.js +2 -2
- package/lib/runtime/RuntimeIdRuntimeModule.js +2 -1
- package/lib/runtime/StartupChunkDependenciesPlugin.js +39 -42
- package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +10 -9
- package/lib/runtime/StartupEntrypointRuntimeModule.js +0 -1
- package/lib/runtime/SystemContextRuntimeModule.js +0 -2
- package/lib/runtime/ToBinaryRuntimeModule.js +64 -0
- package/lib/schemes/DataUriPlugin.js +9 -31
- package/lib/schemes/FileUriPlugin.js +11 -6
- package/lib/schemes/HttpUriPlugin.js +381 -261
- package/lib/schemes/VirtualUrlPlugin.js +222 -0
- package/lib/serialization/AggregateErrorSerializer.js +41 -0
- package/lib/serialization/BinaryMiddleware.js +51 -33
- package/lib/serialization/ErrorObjectSerializer.js +7 -2
- package/lib/serialization/FileMiddleware.js +101 -71
- package/lib/serialization/NullPrototypeObjectSerializer.js +5 -3
- package/lib/serialization/ObjectMiddleware.js +130 -54
- package/lib/serialization/PlainObjectSerializer.js +1 -1
- package/lib/serialization/Serializer.js +38 -20
- package/lib/serialization/SerializerMiddleware.js +121 -49
- package/lib/serialization/SingleItemMiddleware.js +9 -7
- package/lib/serialization/types.js +1 -1
- package/lib/sharing/ConsumeSharedModule.js +9 -9
- package/lib/sharing/ConsumeSharedPlugin.js +14 -14
- package/lib/sharing/ConsumeSharedRuntimeModule.js +11 -8
- package/lib/sharing/ProvideSharedModule.js +9 -11
- package/lib/sharing/ProvideSharedModuleFactory.js +5 -3
- package/lib/sharing/ProvideSharedPlugin.js +15 -10
- package/lib/sharing/SharePlugin.js +3 -4
- package/lib/sharing/ShareRuntimeModule.js +7 -6
- package/lib/sharing/resolveMatchedConfigs.js +27 -13
- package/lib/sharing/utils.js +37 -43
- package/lib/stats/DefaultStatsFactoryPlugin.js +455 -286
- package/lib/stats/DefaultStatsPresetPlugin.js +77 -46
- package/lib/stats/DefaultStatsPrinterPlugin.js +583 -419
- package/lib/stats/StatsFactory.js +75 -32
- package/lib/stats/StatsPrinter.js +71 -51
- package/lib/url/URLParserPlugin.js +264 -0
- package/lib/util/ArrayHelpers.js +6 -8
- package/lib/util/ArrayQueue.js +1 -1
- package/lib/util/AsyncQueue.js +11 -10
- package/lib/util/Hash.js +37 -5
- package/lib/util/IterableHelpers.js +4 -4
- package/lib/util/LazyBucketSortedSet.js +46 -27
- package/lib/util/LazySet.js +16 -10
- package/lib/util/MapHelpers.js +1 -1
- package/lib/util/ParallelismFactorCalculator.js +2 -2
- package/lib/util/Semaphore.js +3 -3
- package/lib/util/SetHelpers.js +6 -6
- package/lib/util/SortableSet.js +11 -9
- package/lib/util/StackedCacheMap.js +2 -2
- package/lib/util/StackedMap.js +3 -3
- package/lib/util/StringXor.js +2 -1
- package/lib/util/TupleQueue.js +11 -8
- package/lib/util/TupleSet.js +44 -19
- package/lib/util/URLAbsoluteSpecifier.js +3 -4
- package/lib/util/WeakTupleMap.js +56 -42
- package/lib/util/binarySearchBounds.js +4 -3
- package/lib/util/chainedImports.js +3 -1
- package/lib/util/cleverMerge.js +171 -107
- package/lib/util/comparators.js +265 -162
- package/lib/util/compileBooleanMatcher.js +120 -41
- package/lib/util/concatenate.js +20 -16
- package/lib/util/conventions.js +73 -74
- package/lib/util/create-schema-validation.js +8 -8
- package/lib/util/createHash.js +32 -135
- package/lib/util/dataURL.js +39 -0
- package/lib/util/deprecation.js +119 -116
- package/lib/util/deterministicGrouping.js +56 -47
- package/lib/util/extractSourceMap.js +319 -0
- package/lib/util/extractUrlAndGlobal.js +1 -1
- package/lib/util/findGraphRoots.js +19 -9
- package/lib/util/fs.js +169 -141
- package/lib/util/hash/BatchedHash.js +50 -10
- package/lib/util/hash/BulkUpdateHash.js +138 -0
- package/lib/util/hash/DebugHash.js +75 -0
- package/lib/util/hash/hash-digest.js +216 -0
- package/lib/util/hash/md4.js +2 -2
- package/lib/util/hash/wasm-hash.js +59 -17
- package/lib/util/identifier.js +124 -61
- package/lib/util/internalSerializables.js +4 -6
- package/lib/util/magicComment.js +9 -5
- package/lib/util/makeSerializable.js +2 -2
- package/lib/util/memoize.js +5 -2
- package/lib/util/objectToMap.js +3 -2
- package/lib/util/processAsyncTree.js +5 -5
- package/lib/util/propertyAccess.js +1 -1
- package/lib/util/propertyName.js +2 -3
- package/lib/util/registerExternalSerializer.js +16 -20
- package/lib/util/removeBOM.js +25 -0
- package/lib/util/runtime.js +72 -56
- package/lib/util/semver.js +44 -33
- package/lib/util/serialization.js +56 -56
- package/lib/util/smartGrouping.js +42 -27
- package/lib/util/source.js +5 -4
- package/lib/util/traverseDestructuringAssignmentProperties.js +45 -0
- package/lib/validateSchema.js +7 -9
- package/lib/wasm/EnableWasmLoadingPlugin.js +22 -12
- package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +9 -5
- package/lib/wasm-async/AsyncWebAssemblyGenerator.js +15 -3
- package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +28 -22
- package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +47 -57
- package/lib/wasm-async/AsyncWebAssemblyParser.js +2 -10
- package/lib/wasm-async/UniversalCompileAsyncWasmPlugin.js +8 -4
- package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +23 -17
- package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +55 -57
- package/lib/wasm-sync/WebAssemblyGenerator.js +56 -41
- package/lib/wasm-sync/WebAssemblyInInitialChunkError.js +6 -3
- package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +25 -10
- package/lib/wasm-sync/WebAssemblyModulesPlugin.js +11 -12
- package/lib/wasm-sync/WebAssemblyParser.js +10 -17
- package/lib/wasm-sync/WebAssemblyUtils.js +1 -1
- package/lib/web/FetchCompileAsyncWasmPlugin.js +4 -4
- package/lib/web/FetchCompileWasmPlugin.js +6 -8
- package/lib/web/JsonpChunkLoadingPlugin.js +74 -74
- package/lib/web/JsonpChunkLoadingRuntimeModule.js +10 -26
- package/lib/web/JsonpTemplatePlugin.js +0 -1
- package/lib/webpack.js +107 -87
- package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +79 -75
- package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +38 -51
- package/lib/webworker/WebWorkerTemplatePlugin.js +1 -0
- package/module.d.ts +5 -0
- package/package.json +149 -129
- package/schemas/WebpackOptions.check.d.ts +1 -1
- package/schemas/WebpackOptions.check.js +2 -2
- package/schemas/WebpackOptions.json +543 -190
- package/schemas/plugins/BannerPlugin.check.d.ts +1 -1
- package/schemas/plugins/BannerPlugin.check.js +2 -2
- package/schemas/plugins/BannerPlugin.json +4 -0
- package/schemas/plugins/DllPlugin.check.d.ts +1 -1
- package/schemas/plugins/DllPlugin.check.js +1 -1
- package/schemas/plugins/DllReferencePlugin.check.d.ts +1 -1
- package/schemas/plugins/DllReferencePlugin.check.js +1 -1
- package/schemas/plugins/IgnorePlugin.check.d.ts +1 -1
- package/schemas/plugins/IgnorePlugin.check.js +1 -1
- package/schemas/plugins/IgnorePlugin.json +1 -1
- package/schemas/plugins/LoaderOptionsPlugin.check.d.ts +1 -1
- package/schemas/plugins/LoaderOptionsPlugin.check.js +1 -1
- package/schemas/plugins/{HashedModuleIdsPlugin.check.d.ts → ManifestPlugin.check.d.ts} +2 -2
- package/schemas/plugins/ManifestPlugin.check.js +6 -0
- package/schemas/plugins/ManifestPlugin.json +98 -0
- package/schemas/plugins/ProgressPlugin.check.d.ts +1 -1
- package/schemas/plugins/ProgressPlugin.check.js +1 -1
- package/schemas/plugins/ProgressPlugin.json +1 -1
- package/schemas/plugins/SourceMapDevToolPlugin.check.d.ts +1 -1
- package/schemas/plugins/SourceMapDevToolPlugin.check.js +2 -2
- package/schemas/plugins/SourceMapDevToolPlugin.json +23 -6
- package/schemas/plugins/WatchIgnorePlugin.check.d.ts +1 -1
- package/schemas/plugins/WatchIgnorePlugin.check.js +1 -1
- package/schemas/plugins/asset/AssetGeneratorOptions.check.d.ts +1 -1
- package/schemas/plugins/asset/AssetGeneratorOptions.check.js +1 -1
- package/schemas/plugins/asset/AssetInlineGeneratorOptions.check.d.ts +1 -1
- package/schemas/plugins/asset/AssetInlineGeneratorOptions.check.js +1 -1
- package/schemas/plugins/asset/AssetParserOptions.check.d.ts +1 -1
- package/schemas/plugins/asset/AssetParserOptions.check.js +1 -1
- package/schemas/plugins/asset/AssetResourceGeneratorOptions.check.d.ts +1 -1
- package/schemas/plugins/asset/AssetResourceGeneratorOptions.check.js +1 -1
- package/schemas/plugins/container/ContainerPlugin.check.d.ts +1 -1
- package/schemas/plugins/container/ContainerPlugin.check.js +1 -1
- package/schemas/plugins/container/ContainerReferencePlugin.check.d.ts +1 -1
- package/schemas/plugins/container/ContainerReferencePlugin.check.js +2 -2
- package/schemas/plugins/container/ContainerReferencePlugin.json +4 -1
- package/schemas/plugins/container/ExternalsType.check.d.ts +1 -1
- package/schemas/plugins/container/ExternalsType.check.js +2 -2
- package/schemas/plugins/container/ModuleFederationPlugin.check.d.ts +1 -1
- package/schemas/plugins/container/ModuleFederationPlugin.check.js +2 -2
- package/schemas/plugins/container/ModuleFederationPlugin.json +4 -1
- package/schemas/plugins/css/CssGeneratorOptions.check.d.ts +1 -1
- package/schemas/plugins/css/CssGeneratorOptions.check.js +1 -1
- package/schemas/plugins/css/CssModuleGeneratorOptions.check.d.ts +1 -1
- package/schemas/plugins/css/CssModuleGeneratorOptions.check.js +2 -2
- package/schemas/plugins/css/CssModuleParserOptions.check.d.ts +1 -1
- package/schemas/plugins/css/CssModuleParserOptions.check.js +2 -2
- package/schemas/plugins/css/CssParserOptions.check.d.ts +1 -1
- package/schemas/plugins/css/CssParserOptions.check.js +2 -2
- package/schemas/plugins/debug/ProfilingPlugin.check.d.ts +1 -1
- package/schemas/plugins/debug/ProfilingPlugin.check.js +1 -1
- package/schemas/plugins/ids/HashedModuleIdsPlugin.check.d.ts +7 -0
- package/schemas/plugins/ids/HashedModuleIdsPlugin.check.js +6 -0
- package/schemas/plugins/{HashedModuleIdsPlugin.json → ids/HashedModuleIdsPlugin.json} +15 -2
- package/schemas/plugins/ids/OccurrenceChunkIdsPlugin.check.d.ts +1 -1
- package/schemas/plugins/ids/OccurrenceChunkIdsPlugin.check.js +1 -1
- package/schemas/plugins/ids/OccurrenceModuleIdsPlugin.check.d.ts +1 -1
- package/schemas/plugins/ids/OccurrenceModuleIdsPlugin.check.js +1 -1
- package/schemas/plugins/{css/CssGlobalParserOptions.check.d.ts → json/JsonModulesPluginGenerator.check.d.ts} +1 -1
- package/schemas/plugins/json/JsonModulesPluginGenerator.check.js +6 -0
- package/schemas/plugins/json/JsonModulesPluginGenerator.json +3 -0
- package/schemas/plugins/{css/CssGlobalGeneratorOptions.check.d.ts → json/JsonModulesPluginParser.check.d.ts} +1 -1
- package/schemas/plugins/json/JsonModulesPluginParser.check.js +6 -0
- package/schemas/plugins/json/JsonModulesPluginParser.json +3 -0
- package/schemas/plugins/optimize/AggressiveSplittingPlugin.check.d.ts +1 -1
- package/schemas/plugins/optimize/AggressiveSplittingPlugin.check.js +1 -1
- package/schemas/plugins/optimize/LimitChunkCountPlugin.check.d.ts +1 -1
- package/schemas/plugins/optimize/LimitChunkCountPlugin.check.js +1 -1
- package/schemas/plugins/optimize/MergeDuplicateChunksPlugin.check.d.ts +1 -1
- package/schemas/plugins/optimize/MergeDuplicateChunksPlugin.check.js +1 -1
- package/schemas/plugins/optimize/MinChunkSizePlugin.check.d.ts +1 -1
- package/schemas/plugins/optimize/MinChunkSizePlugin.check.js +1 -1
- package/schemas/plugins/schemes/HttpUriPlugin.check.d.ts +1 -1
- package/schemas/plugins/schemes/HttpUriPlugin.check.js +1 -1
- package/schemas/plugins/schemes/VirtualUrlPlugin.check.d.ts +7 -0
- package/schemas/plugins/schemes/VirtualUrlPlugin.check.js +6 -0
- package/schemas/plugins/schemes/VirtualUrlPlugin.json +77 -0
- package/schemas/plugins/sharing/ConsumeSharedPlugin.check.d.ts +1 -1
- package/schemas/plugins/sharing/ConsumeSharedPlugin.check.js +1 -1
- package/schemas/plugins/sharing/ProvideSharedPlugin.check.d.ts +1 -1
- package/schemas/plugins/sharing/ProvideSharedPlugin.check.js +1 -1
- package/schemas/plugins/sharing/SharePlugin.check.d.ts +1 -1
- package/schemas/plugins/sharing/SharePlugin.check.js +1 -1
- package/types.d.ts +5115 -1863
- package/SECURITY.md +0 -9
- package/lib/ModuleSourceTypesConstants.js +0 -112
- package/lib/dependencies/CssLocalIdentifierDependency.js +0 -250
- package/lib/dependencies/CssSelfLocalIdentifierDependency.js +0 -111
- package/lib/library/ModernModuleLibraryPlugin.js +0 -144
- package/schemas/plugins/HashedModuleIdsPlugin.check.js +0 -6
- package/schemas/plugins/JsonModulesPluginParser.check.d.ts +0 -7
- package/schemas/plugins/JsonModulesPluginParser.check.js +0 -6
- package/schemas/plugins/JsonModulesPluginParser.json +0 -12
- package/schemas/plugins/css/CssAutoGeneratorOptions.check.d.ts +0 -7
- package/schemas/plugins/css/CssAutoGeneratorOptions.check.js +0 -6
- package/schemas/plugins/css/CssAutoGeneratorOptions.json +0 -3
- package/schemas/plugins/css/CssAutoParserOptions.check.d.ts +0 -7
- package/schemas/plugins/css/CssAutoParserOptions.check.js +0 -6
- package/schemas/plugins/css/CssAutoParserOptions.json +0 -3
- package/schemas/plugins/css/CssGlobalGeneratorOptions.check.js +0 -6
- package/schemas/plugins/css/CssGlobalGeneratorOptions.json +0 -3
- package/schemas/plugins/css/CssGlobalParserOptions.check.js +0 -6
- package/schemas/plugins/css/CssGlobalParserOptions.json +0 -3
|
@@ -17,8 +17,10 @@ const JavascriptModulesPlugin = require("../javascript/JavascriptModulesPlugin")
|
|
|
17
17
|
/** @typedef {import("../Compilation").ChunkHashContext} ChunkHashContext */
|
|
18
18
|
/** @typedef {import("../Compiler")} Compiler */
|
|
19
19
|
/** @typedef {import("../Module")} Module */
|
|
20
|
+
/** @typedef {import("../Module").RuntimeRequirements} RuntimeRequirements */
|
|
20
21
|
/** @typedef {import("../javascript/JavascriptModulesPlugin").RenderContext} RenderContext */
|
|
21
22
|
/** @typedef {import("../javascript/JavascriptModulesPlugin").StartupRenderContext} StartupRenderContext */
|
|
23
|
+
/** @typedef {import("../javascript/JavascriptModulesPlugin").ModuleRenderContext} ModuleRenderContext */
|
|
22
24
|
/** @typedef {import("../util/Hash")} Hash */
|
|
23
25
|
|
|
24
26
|
const COMMON_LIBRARY_NAME_MESSAGE =
|
|
@@ -32,14 +34,18 @@ const COMMON_LIBRARY_NAME_MESSAGE =
|
|
|
32
34
|
* @property {T} options
|
|
33
35
|
*/
|
|
34
36
|
|
|
37
|
+
/**
|
|
38
|
+
* @typedef {object} AbstractLibraryPluginOptions
|
|
39
|
+
* @property {string} pluginName name of the plugin
|
|
40
|
+
* @property {LibraryType} type used library type
|
|
41
|
+
*/
|
|
42
|
+
|
|
35
43
|
/**
|
|
36
44
|
* @template T
|
|
37
45
|
*/
|
|
38
46
|
class AbstractLibraryPlugin {
|
|
39
47
|
/**
|
|
40
|
-
* @param {
|
|
41
|
-
* @param {string} options.pluginName name of the plugin
|
|
42
|
-
* @param {LibraryType} options.type used library type
|
|
48
|
+
* @param {AbstractLibraryPluginOptions} options options
|
|
43
49
|
*/
|
|
44
50
|
constructor({ pluginName, type }) {
|
|
45
51
|
this._pluginName = pluginName;
|
|
@@ -54,7 +60,7 @@ class AbstractLibraryPlugin {
|
|
|
54
60
|
*/
|
|
55
61
|
apply(compiler) {
|
|
56
62
|
const { _pluginName } = this;
|
|
57
|
-
compiler.hooks.thisCompilation.tap(_pluginName, compilation => {
|
|
63
|
+
compiler.hooks.thisCompilation.tap(_pluginName, (compilation) => {
|
|
58
64
|
compilation.hooks.finishModules.tap(
|
|
59
65
|
{ name: _pluginName, stage: 10 },
|
|
60
66
|
() => {
|
|
@@ -89,11 +95,12 @@ class AbstractLibraryPlugin {
|
|
|
89
95
|
|
|
90
96
|
/**
|
|
91
97
|
* @param {Chunk} chunk chunk
|
|
92
|
-
* @returns {
|
|
98
|
+
* @returns {T | false} options for the chunk
|
|
93
99
|
*/
|
|
94
|
-
const getOptionsForChunk = chunk => {
|
|
95
|
-
if (compilation.chunkGraph.getNumberOfEntryModules(chunk) === 0)
|
|
100
|
+
const getOptionsForChunk = (chunk) => {
|
|
101
|
+
if (compilation.chunkGraph.getNumberOfEntryModules(chunk) === 0) {
|
|
96
102
|
return false;
|
|
103
|
+
}
|
|
97
104
|
const options = chunk.getEntryOptions();
|
|
98
105
|
const library = options && options.library;
|
|
99
106
|
return this._parseOptionsCached(
|
|
@@ -157,7 +164,7 @@ class AbstractLibraryPlugin {
|
|
|
157
164
|
this.strictRuntimeBailout !==
|
|
158
165
|
AbstractLibraryPlugin.prototype.strictRuntimeBailout
|
|
159
166
|
) {
|
|
160
|
-
hooks.strictRuntimeBailout.tap(_pluginName, renderContext => {
|
|
167
|
+
hooks.strictRuntimeBailout.tap(_pluginName, (renderContext) => {
|
|
161
168
|
const options = getOptionsForChunk(renderContext.chunk);
|
|
162
169
|
if (options === false) return;
|
|
163
170
|
return this.strictRuntimeBailout(renderContext, {
|
|
@@ -168,6 +175,20 @@ class AbstractLibraryPlugin {
|
|
|
168
175
|
});
|
|
169
176
|
}
|
|
170
177
|
|
|
178
|
+
if (
|
|
179
|
+
this.renderModuleContent !==
|
|
180
|
+
AbstractLibraryPlugin.prototype.renderModuleContent
|
|
181
|
+
) {
|
|
182
|
+
hooks.renderModuleContent.tap(
|
|
183
|
+
_pluginName,
|
|
184
|
+
(source, module, renderContext) =>
|
|
185
|
+
this.renderModuleContent(source, module, renderContext, {
|
|
186
|
+
compilation,
|
|
187
|
+
chunkGraph: compilation.chunkGraph
|
|
188
|
+
})
|
|
189
|
+
);
|
|
190
|
+
}
|
|
191
|
+
|
|
171
192
|
if (
|
|
172
193
|
this.renderStartup !== AbstractLibraryPlugin.prototype.renderStartup
|
|
173
194
|
) {
|
|
@@ -219,6 +240,7 @@ class AbstractLibraryPlugin {
|
|
|
219
240
|
*/
|
|
220
241
|
parseOptions(library) {
|
|
221
242
|
const AbstractMethodError = require("../AbstractMethodError");
|
|
243
|
+
|
|
222
244
|
throw new AbstractMethodError();
|
|
223
245
|
}
|
|
224
246
|
|
|
@@ -251,13 +273,14 @@ class AbstractLibraryPlugin {
|
|
|
251
273
|
|
|
252
274
|
/**
|
|
253
275
|
* @param {Chunk} chunk the chunk
|
|
254
|
-
* @param {
|
|
276
|
+
* @param {RuntimeRequirements} set runtime requirements
|
|
255
277
|
* @param {LibraryContext<T>} libraryContext context
|
|
256
278
|
* @returns {void}
|
|
257
279
|
*/
|
|
258
280
|
runtimeRequirements(chunk, set, libraryContext) {
|
|
259
|
-
if (this.render !== AbstractLibraryPlugin.prototype.render)
|
|
281
|
+
if (this.render !== AbstractLibraryPlugin.prototype.render) {
|
|
260
282
|
set.add(RuntimeGlobals.returnExportsFromRuntime);
|
|
283
|
+
}
|
|
261
284
|
}
|
|
262
285
|
|
|
263
286
|
/**
|
|
@@ -281,6 +304,17 @@ class AbstractLibraryPlugin {
|
|
|
281
304
|
return source;
|
|
282
305
|
}
|
|
283
306
|
|
|
307
|
+
/**
|
|
308
|
+
* @param {Source} source source
|
|
309
|
+
* @param {Module} module module
|
|
310
|
+
* @param {ModuleRenderContext} renderContext render context
|
|
311
|
+
* @param {Omit<LibraryContext<T>, "options">} libraryContext context
|
|
312
|
+
* @returns {Source} source with library export
|
|
313
|
+
*/
|
|
314
|
+
renderModuleContent(source, module, renderContext, libraryContext) {
|
|
315
|
+
return source;
|
|
316
|
+
}
|
|
317
|
+
|
|
284
318
|
/**
|
|
285
319
|
* @param {Chunk} chunk the chunk
|
|
286
320
|
* @param {Hash} hash hash
|
|
@@ -298,4 +332,5 @@ class AbstractLibraryPlugin {
|
|
|
298
332
|
}
|
|
299
333
|
|
|
300
334
|
AbstractLibraryPlugin.COMMON_LIBRARY_NAME_MESSAGE = COMMON_LIBRARY_NAME_MESSAGE;
|
|
335
|
+
|
|
301
336
|
module.exports = AbstractLibraryPlugin;
|
|
@@ -15,10 +15,12 @@ const AbstractLibraryPlugin = require("./AbstractLibraryPlugin");
|
|
|
15
15
|
/** @typedef {import("../../declarations/WebpackOptions").LibraryType} LibraryType */
|
|
16
16
|
/** @typedef {import("../Chunk")} Chunk */
|
|
17
17
|
/** @typedef {import("../Compilation").ChunkHashContext} ChunkHashContext */
|
|
18
|
-
/** @typedef {import("../Compiler")} Compiler */
|
|
19
18
|
/** @typedef {import("../javascript/JavascriptModulesPlugin").RenderContext} RenderContext */
|
|
20
19
|
/** @typedef {import("../util/Hash")} Hash */
|
|
21
|
-
/**
|
|
20
|
+
/**
|
|
21
|
+
* @template T
|
|
22
|
+
* @typedef {import("./AbstractLibraryPlugin").LibraryContext<T>} LibraryContext<T>
|
|
23
|
+
*/
|
|
22
24
|
|
|
23
25
|
/**
|
|
24
26
|
* @typedef {object} AmdLibraryPluginOptions
|
|
@@ -85,13 +87,13 @@ class AmdLibraryPlugin extends AbstractLibraryPlugin {
|
|
|
85
87
|
const modules = chunkGraph
|
|
86
88
|
.getChunkModules(chunk)
|
|
87
89
|
.filter(
|
|
88
|
-
m =>
|
|
90
|
+
(m) =>
|
|
89
91
|
m instanceof ExternalModule &&
|
|
90
92
|
(m.externalType === "amd" || m.externalType === "amd-require")
|
|
91
93
|
);
|
|
92
94
|
const externals = /** @type {ExternalModule[]} */ (modules);
|
|
93
95
|
const externalsDepsArray = JSON.stringify(
|
|
94
|
-
externals.map(m =>
|
|
96
|
+
externals.map((m) =>
|
|
95
97
|
typeof m.request === "object" && !Array.isArray(m.request)
|
|
96
98
|
? m.request.amd
|
|
97
99
|
: m.request
|
|
@@ -99,7 +101,7 @@ class AmdLibraryPlugin extends AbstractLibraryPlugin {
|
|
|
99
101
|
);
|
|
100
102
|
const externalsArguments = externals
|
|
101
103
|
.map(
|
|
102
|
-
m =>
|
|
104
|
+
(m) =>
|
|
103
105
|
`__WEBPACK_EXTERNAL_MODULE_${Template.toIdentifier(
|
|
104
106
|
`${chunkGraph.getModuleId(m)}`
|
|
105
107
|
)}__`
|
|
@@ -16,15 +16,21 @@ const AbstractLibraryPlugin = require("./AbstractLibraryPlugin");
|
|
|
16
16
|
/** @typedef {import("webpack-sources").Source} Source */
|
|
17
17
|
/** @typedef {import("../../declarations/WebpackOptions").LibraryOptions} LibraryOptions */
|
|
18
18
|
/** @typedef {import("../../declarations/WebpackOptions").LibraryType} LibraryType */
|
|
19
|
+
/** @typedef {import("../../declarations/WebpackOptions").LibraryExport} LibraryExport */
|
|
19
20
|
/** @typedef {import("../Chunk")} Chunk */
|
|
20
21
|
/** @typedef {import("../Compilation")} Compilation */
|
|
21
22
|
/** @typedef {import("../Compilation").ChunkHashContext} ChunkHashContext */
|
|
22
|
-
/** @typedef {import("../Compiler")} Compiler */
|
|
23
23
|
/** @typedef {import("../Module")} Module */
|
|
24
|
+
/** @typedef {import("../Module").RuntimeRequirements} RuntimeRequirements */
|
|
25
|
+
/** @typedef {import("../ExportsInfo").ExportInfoName} ExportInfoName */
|
|
24
26
|
/** @typedef {import("../javascript/JavascriptModulesPlugin").RenderContext} RenderContext */
|
|
25
27
|
/** @typedef {import("../javascript/JavascriptModulesPlugin").StartupRenderContext} StartupRenderContext */
|
|
26
28
|
/** @typedef {import("../util/Hash")} Hash */
|
|
27
|
-
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* @template T
|
|
32
|
+
* @typedef {import("./AbstractLibraryPlugin").LibraryContext<T>} LibraryContext<T>
|
|
33
|
+
*/
|
|
28
34
|
|
|
29
35
|
const KEYWORD_REGEX =
|
|
30
36
|
/^(await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|false|finally|for|function|if|implements|import|in|instanceof|interface|let|new|null|package|private|protected|public|return|super|switch|static|this|throw|try|true|typeof|var|void|while|with|yield)$/;
|
|
@@ -36,7 +42,7 @@ const IDENTIFIER_REGEX =
|
|
|
36
42
|
* @param {string} name name to be validated
|
|
37
43
|
* @returns {boolean} true, when valid
|
|
38
44
|
*/
|
|
39
|
-
const isNameValid = name =>
|
|
45
|
+
const isNameValid = (name) =>
|
|
40
46
|
!KEYWORD_REGEX.test(name) && IDENTIFIER_REGEX.test(name);
|
|
41
47
|
|
|
42
48
|
/**
|
|
@@ -83,25 +89,30 @@ const accessWithInit = (accessor, existingLength, initLast = false) => {
|
|
|
83
89
|
}
|
|
84
90
|
|
|
85
91
|
// print the last property as property access if not yet printed
|
|
86
|
-
if (i < accessor.length)
|
|
92
|
+
if (i < accessor.length) {
|
|
87
93
|
current = `${current}${propertyAccess([accessor[accessor.length - 1]])}`;
|
|
94
|
+
}
|
|
88
95
|
|
|
89
96
|
return current;
|
|
90
97
|
};
|
|
91
98
|
|
|
99
|
+
/** @typedef {string[] | "global"} LibraryPrefix */
|
|
100
|
+
|
|
92
101
|
/**
|
|
93
102
|
* @typedef {object} AssignLibraryPluginOptions
|
|
94
103
|
* @property {LibraryType} type
|
|
95
|
-
* @property {
|
|
104
|
+
* @property {LibraryPrefix} prefix name prefix
|
|
96
105
|
* @property {string | false} declare declare name as variable
|
|
97
|
-
* @property {"error"|"static"|"copy"|"assign"} unnamed behavior for unnamed library name
|
|
98
|
-
* @property {"copy"|"assign"=} named behavior for named library name
|
|
106
|
+
* @property {"error" | "static" | "copy" | "assign"} unnamed behavior for unnamed library name
|
|
107
|
+
* @property {"copy" | "assign"=} named behavior for named library name
|
|
99
108
|
*/
|
|
100
109
|
|
|
110
|
+
/** @typedef {string | string[]} LibraryName */
|
|
111
|
+
|
|
101
112
|
/**
|
|
102
113
|
* @typedef {object} AssignLibraryPluginParsed
|
|
103
|
-
* @property {
|
|
104
|
-
* @property {
|
|
114
|
+
* @property {LibraryName} name
|
|
115
|
+
* @property {LibraryExport=} export
|
|
105
116
|
*/
|
|
106
117
|
|
|
107
118
|
/**
|
|
@@ -140,7 +151,7 @@ class AssignLibraryPlugin extends AbstractLibraryPlugin {
|
|
|
140
151
|
`Library name must be a string, string array or unset. ${AbstractLibraryPlugin.COMMON_LIBRARY_NAME_MESSAGE}`
|
|
141
152
|
);
|
|
142
153
|
}
|
|
143
|
-
const _name = /** @type {
|
|
154
|
+
const _name = /** @type {LibraryName} */ (name);
|
|
144
155
|
return {
|
|
145
156
|
name: _name,
|
|
146
157
|
export: library.export
|
|
@@ -175,7 +186,7 @@ class AssignLibraryPlugin extends AbstractLibraryPlugin {
|
|
|
175
186
|
|
|
176
187
|
/**
|
|
177
188
|
* @param {Compilation} compilation the compilation
|
|
178
|
-
* @returns {
|
|
189
|
+
* @returns {LibraryPrefix} the prefix
|
|
179
190
|
*/
|
|
180
191
|
_getPrefix(compilation) {
|
|
181
192
|
return this.prefix === "global"
|
|
@@ -187,12 +198,17 @@ class AssignLibraryPlugin extends AbstractLibraryPlugin {
|
|
|
187
198
|
* @param {AssignLibraryPluginParsed} options the library options
|
|
188
199
|
* @param {Chunk} chunk the chunk
|
|
189
200
|
* @param {Compilation} compilation the compilation
|
|
190
|
-
* @returns {
|
|
201
|
+
* @returns {string[]} the resolved full name
|
|
191
202
|
*/
|
|
192
203
|
_getResolvedFullName(options, chunk, compilation) {
|
|
193
204
|
const prefix = this._getPrefix(compilation);
|
|
194
|
-
const fullName = options.name
|
|
195
|
-
|
|
205
|
+
const fullName = options.name
|
|
206
|
+
? [
|
|
207
|
+
...prefix,
|
|
208
|
+
...(Array.isArray(options.name) ? options.name : [options.name])
|
|
209
|
+
]
|
|
210
|
+
: /** @type {string[]} */ (prefix);
|
|
211
|
+
return fullName.map((n) =>
|
|
196
212
|
compilation.getPath(n, {
|
|
197
213
|
chunk
|
|
198
214
|
})
|
|
@@ -242,16 +258,18 @@ class AssignLibraryPlugin extends AbstractLibraryPlugin {
|
|
|
242
258
|
const topLevelDeclarations =
|
|
243
259
|
(data && data.get("topLevelDeclarations")) ||
|
|
244
260
|
(module.buildInfo && module.buildInfo.topLevelDeclarations);
|
|
245
|
-
if (!topLevelDeclarations)
|
|
261
|
+
if (!topLevelDeclarations) {
|
|
246
262
|
return "it doesn't tell about top level declarations.";
|
|
263
|
+
}
|
|
247
264
|
const fullNameResolved = this._getResolvedFullName(
|
|
248
265
|
options,
|
|
249
266
|
chunk,
|
|
250
267
|
compilation
|
|
251
268
|
);
|
|
252
269
|
const base = fullNameResolved[0];
|
|
253
|
-
if (topLevelDeclarations.has(base))
|
|
270
|
+
if (topLevelDeclarations.has(base)) {
|
|
254
271
|
return `it declares '${base}' on top-level, which conflicts with the current library output.`;
|
|
272
|
+
}
|
|
255
273
|
}
|
|
256
274
|
|
|
257
275
|
/**
|
|
@@ -303,13 +321,48 @@ class AssignLibraryPlugin extends AbstractLibraryPlugin {
|
|
|
303
321
|
this._getPrefix(compilation).length,
|
|
304
322
|
true
|
|
305
323
|
);
|
|
324
|
+
|
|
325
|
+
/** @type {ExportInfoName[]} */
|
|
326
|
+
const provided = [];
|
|
306
327
|
for (const exportInfo of exportsInfo.orderedExports) {
|
|
307
328
|
if (!exportInfo.provided) continue;
|
|
308
329
|
const nameAccess = propertyAccess([exportInfo.name]);
|
|
309
330
|
result.add(
|
|
310
331
|
`${exportTarget}${nameAccess} = ${RuntimeGlobals.exports}${exportAccess}${nameAccess};\n`
|
|
311
332
|
);
|
|
333
|
+
provided.push(exportInfo.name);
|
|
334
|
+
}
|
|
335
|
+
|
|
336
|
+
const webpackExportTarget = accessWithInit(
|
|
337
|
+
fullNameResolved,
|
|
338
|
+
this._getPrefix(compilation).length,
|
|
339
|
+
true
|
|
340
|
+
);
|
|
341
|
+
/** @type {string} */
|
|
342
|
+
let exports = RuntimeGlobals.exports;
|
|
343
|
+
if (exportAccess) {
|
|
344
|
+
result.add(
|
|
345
|
+
`var __webpack_exports_export__ = ${RuntimeGlobals.exports}${exportAccess};\n`
|
|
346
|
+
);
|
|
347
|
+
|
|
348
|
+
exports = "__webpack_exports_export__";
|
|
349
|
+
}
|
|
350
|
+
result.add(`for(var __webpack_i__ in ${exports}) {\n`);
|
|
351
|
+
const hasProvided = provided.length > 0;
|
|
352
|
+
if (hasProvided) {
|
|
353
|
+
result.add(
|
|
354
|
+
` if (${JSON.stringify(provided)}.indexOf(__webpack_i__) === -1) {\n`
|
|
355
|
+
);
|
|
312
356
|
}
|
|
357
|
+
result.add(
|
|
358
|
+
` ${
|
|
359
|
+
hasProvided ? " " : ""
|
|
360
|
+
}${webpackExportTarget}[__webpack_i__] = ${exports}[__webpack_i__];\n`
|
|
361
|
+
);
|
|
362
|
+
if (hasProvided) {
|
|
363
|
+
result.add(" }\n");
|
|
364
|
+
}
|
|
365
|
+
result.add("}\n");
|
|
313
366
|
result.add(
|
|
314
367
|
`Object.defineProperty(${exportTarget}, "__esModule", { value: true });\n`
|
|
315
368
|
);
|
|
@@ -327,6 +380,7 @@ class AssignLibraryPlugin extends AbstractLibraryPlugin {
|
|
|
327
380
|
result.add(
|
|
328
381
|
`var __webpack_exports_export__ = ${RuntimeGlobals.exports}${exportAccess};\n`
|
|
329
382
|
);
|
|
383
|
+
|
|
330
384
|
exports = "__webpack_exports_export__";
|
|
331
385
|
}
|
|
332
386
|
result.add(
|
|
@@ -349,7 +403,7 @@ class AssignLibraryPlugin extends AbstractLibraryPlugin {
|
|
|
349
403
|
|
|
350
404
|
/**
|
|
351
405
|
* @param {Chunk} chunk the chunk
|
|
352
|
-
* @param {
|
|
406
|
+
* @param {RuntimeRequirements} set runtime requirements
|
|
353
407
|
* @param {LibraryContext<T>} libraryContext context
|
|
354
408
|
* @returns {void}
|
|
355
409
|
*/
|
|
@@ -5,18 +5,24 @@
|
|
|
5
5
|
|
|
6
6
|
"use strict";
|
|
7
7
|
|
|
8
|
-
/** @typedef {import("../../declarations/WebpackOptions").LibraryOptions} LibraryOptions */
|
|
9
8
|
/** @typedef {import("../../declarations/WebpackOptions").LibraryType} LibraryType */
|
|
10
9
|
/** @typedef {import("../Compiler")} Compiler */
|
|
11
10
|
|
|
12
|
-
/** @
|
|
11
|
+
/** @typedef {Set<LibraryType>} LibraryTypes */
|
|
12
|
+
|
|
13
|
+
/** @type {WeakMap<Compiler, LibraryTypes>} */
|
|
13
14
|
const enabledTypes = new WeakMap();
|
|
14
15
|
|
|
16
|
+
/**
|
|
17
|
+
* @typedef {object} EnableLibraryPluginOptions
|
|
18
|
+
* @property {() => void=} additionalApply function that runs when applying the current plugin.
|
|
19
|
+
*/
|
|
20
|
+
|
|
15
21
|
/**
|
|
16
22
|
* @param {Compiler} compiler the compiler instance
|
|
17
|
-
* @returns {
|
|
23
|
+
* @returns {LibraryTypes} enabled types
|
|
18
24
|
*/
|
|
19
|
-
const getEnabledTypes = compiler => {
|
|
25
|
+
const getEnabledTypes = (compiler) => {
|
|
20
26
|
let set = enabledTypes.get(compiler);
|
|
21
27
|
if (set === undefined) {
|
|
22
28
|
set = new Set();
|
|
@@ -28,9 +34,13 @@ const getEnabledTypes = compiler => {
|
|
|
28
34
|
class EnableLibraryPlugin {
|
|
29
35
|
/**
|
|
30
36
|
* @param {LibraryType} type library type that should be available
|
|
37
|
+
* @param {EnableLibraryPluginOptions} options options of EnableLibraryPlugin
|
|
31
38
|
*/
|
|
32
|
-
constructor(type) {
|
|
39
|
+
constructor(type, options = {}) {
|
|
40
|
+
/** @type {LibraryType} */
|
|
33
41
|
this.type = type;
|
|
42
|
+
/** @type {EnableLibraryPluginOptions} */
|
|
43
|
+
this.options = options;
|
|
34
44
|
}
|
|
35
45
|
|
|
36
46
|
/**
|
|
@@ -54,9 +64,7 @@ class EnableLibraryPlugin {
|
|
|
54
64
|
"EnableLibraryPlugin need to be used to enable this type of library. " +
|
|
55
65
|
'This usually happens through the "output.enabledLibraryTypes" option. ' +
|
|
56
66
|
'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: ${
|
|
58
|
-
getEnabledTypes(compiler)
|
|
59
|
-
).join(", ")}`
|
|
67
|
+
`These types are enabled: ${[...getEnabledTypes(compiler)].join(", ")}`
|
|
60
68
|
);
|
|
61
69
|
}
|
|
62
70
|
}
|
|
@@ -67,26 +75,30 @@ class EnableLibraryPlugin {
|
|
|
67
75
|
* @returns {void}
|
|
68
76
|
*/
|
|
69
77
|
apply(compiler) {
|
|
70
|
-
const { type } = this;
|
|
78
|
+
const { type, options } = this;
|
|
71
79
|
|
|
72
80
|
// Only enable once
|
|
73
81
|
const enabled = getEnabledTypes(compiler);
|
|
74
82
|
if (enabled.has(type)) return;
|
|
75
83
|
enabled.add(type);
|
|
76
84
|
|
|
85
|
+
if (typeof options.additionalApply === "function") {
|
|
86
|
+
options.additionalApply();
|
|
87
|
+
}
|
|
88
|
+
|
|
77
89
|
if (typeof type === "string") {
|
|
78
90
|
const enableExportProperty = () => {
|
|
79
|
-
const
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
runtimeExportsUsed: type !== "modern-module"
|
|
91
|
+
const ExportPropertyLibraryPlugin = require("./ExportPropertyLibraryPlugin");
|
|
92
|
+
|
|
93
|
+
new ExportPropertyLibraryPlugin({
|
|
94
|
+
type
|
|
84
95
|
}).apply(compiler);
|
|
85
96
|
};
|
|
86
97
|
switch (type) {
|
|
87
98
|
case "var": {
|
|
88
99
|
// @ts-expect-error https://github.com/microsoft/TypeScript/issues/41697
|
|
89
100
|
const AssignLibraryPlugin = require("./AssignLibraryPlugin");
|
|
101
|
+
|
|
90
102
|
new AssignLibraryPlugin({
|
|
91
103
|
type,
|
|
92
104
|
prefix: [],
|
|
@@ -98,6 +110,7 @@ class EnableLibraryPlugin {
|
|
|
98
110
|
case "assign-properties": {
|
|
99
111
|
// @ts-expect-error https://github.com/microsoft/TypeScript/issues/41697
|
|
100
112
|
const AssignLibraryPlugin = require("./AssignLibraryPlugin");
|
|
113
|
+
|
|
101
114
|
new AssignLibraryPlugin({
|
|
102
115
|
type,
|
|
103
116
|
prefix: [],
|
|
@@ -110,6 +123,7 @@ class EnableLibraryPlugin {
|
|
|
110
123
|
case "assign": {
|
|
111
124
|
// @ts-expect-error https://github.com/microsoft/TypeScript/issues/41697
|
|
112
125
|
const AssignLibraryPlugin = require("./AssignLibraryPlugin");
|
|
126
|
+
|
|
113
127
|
new AssignLibraryPlugin({
|
|
114
128
|
type,
|
|
115
129
|
prefix: [],
|
|
@@ -121,6 +135,7 @@ class EnableLibraryPlugin {
|
|
|
121
135
|
case "this": {
|
|
122
136
|
// @ts-expect-error https://github.com/microsoft/TypeScript/issues/41697
|
|
123
137
|
const AssignLibraryPlugin = require("./AssignLibraryPlugin");
|
|
138
|
+
|
|
124
139
|
new AssignLibraryPlugin({
|
|
125
140
|
type,
|
|
126
141
|
prefix: ["this"],
|
|
@@ -132,6 +147,7 @@ class EnableLibraryPlugin {
|
|
|
132
147
|
case "window": {
|
|
133
148
|
// @ts-expect-error https://github.com/microsoft/TypeScript/issues/41697
|
|
134
149
|
const AssignLibraryPlugin = require("./AssignLibraryPlugin");
|
|
150
|
+
|
|
135
151
|
new AssignLibraryPlugin({
|
|
136
152
|
type,
|
|
137
153
|
prefix: ["window"],
|
|
@@ -143,6 +159,7 @@ class EnableLibraryPlugin {
|
|
|
143
159
|
case "self": {
|
|
144
160
|
// @ts-expect-error https://github.com/microsoft/TypeScript/issues/41697
|
|
145
161
|
const AssignLibraryPlugin = require("./AssignLibraryPlugin");
|
|
162
|
+
|
|
146
163
|
new AssignLibraryPlugin({
|
|
147
164
|
type,
|
|
148
165
|
prefix: ["self"],
|
|
@@ -154,6 +171,7 @@ class EnableLibraryPlugin {
|
|
|
154
171
|
case "global": {
|
|
155
172
|
// @ts-expect-error https://github.com/microsoft/TypeScript/issues/41697
|
|
156
173
|
const AssignLibraryPlugin = require("./AssignLibraryPlugin");
|
|
174
|
+
|
|
157
175
|
new AssignLibraryPlugin({
|
|
158
176
|
type,
|
|
159
177
|
prefix: "global",
|
|
@@ -165,6 +183,7 @@ class EnableLibraryPlugin {
|
|
|
165
183
|
case "commonjs": {
|
|
166
184
|
// @ts-expect-error https://github.com/microsoft/TypeScript/issues/41697
|
|
167
185
|
const AssignLibraryPlugin = require("./AssignLibraryPlugin");
|
|
186
|
+
|
|
168
187
|
new AssignLibraryPlugin({
|
|
169
188
|
type,
|
|
170
189
|
prefix: ["exports"],
|
|
@@ -176,6 +195,7 @@ class EnableLibraryPlugin {
|
|
|
176
195
|
case "commonjs-static": {
|
|
177
196
|
// @ts-expect-error https://github.com/microsoft/TypeScript/issues/41697
|
|
178
197
|
const AssignLibraryPlugin = require("./AssignLibraryPlugin");
|
|
198
|
+
|
|
179
199
|
new AssignLibraryPlugin({
|
|
180
200
|
type,
|
|
181
201
|
prefix: ["exports"],
|
|
@@ -188,6 +208,7 @@ class EnableLibraryPlugin {
|
|
|
188
208
|
case "commonjs-module": {
|
|
189
209
|
// @ts-expect-error https://github.com/microsoft/TypeScript/issues/41697
|
|
190
210
|
const AssignLibraryPlugin = require("./AssignLibraryPlugin");
|
|
211
|
+
|
|
191
212
|
new AssignLibraryPlugin({
|
|
192
213
|
type,
|
|
193
214
|
prefix: ["module", "exports"],
|
|
@@ -199,7 +220,9 @@ class EnableLibraryPlugin {
|
|
|
199
220
|
case "amd":
|
|
200
221
|
case "amd-require": {
|
|
201
222
|
enableExportProperty();
|
|
223
|
+
|
|
202
224
|
const AmdLibraryPlugin = require("./AmdLibraryPlugin");
|
|
225
|
+
|
|
203
226
|
new AmdLibraryPlugin({
|
|
204
227
|
type,
|
|
205
228
|
requireAsWrapper: type === "amd-require"
|
|
@@ -212,11 +235,15 @@ class EnableLibraryPlugin {
|
|
|
212
235
|
compiler.options.output.iife = true;
|
|
213
236
|
|
|
214
237
|
class WarnFalseIifeUmdPlugin {
|
|
238
|
+
/**
|
|
239
|
+
* @param {Compiler} compiler the compiler instance
|
|
240
|
+
*/
|
|
215
241
|
apply(compiler) {
|
|
216
242
|
compiler.hooks.thisCompilation.tap(
|
|
217
243
|
"WarnFalseIifeUmdPlugin",
|
|
218
|
-
compilation => {
|
|
244
|
+
(compilation) => {
|
|
219
245
|
const FalseIIFEUmdWarning = require("../FalseIIFEUmdWarning");
|
|
246
|
+
|
|
220
247
|
compilation.warnings.push(new FalseIIFEUmdWarning());
|
|
221
248
|
}
|
|
222
249
|
);
|
|
@@ -226,7 +253,9 @@ class EnableLibraryPlugin {
|
|
|
226
253
|
new WarnFalseIifeUmdPlugin().apply(compiler);
|
|
227
254
|
}
|
|
228
255
|
enableExportProperty();
|
|
256
|
+
|
|
229
257
|
const UmdLibraryPlugin = require("./UmdLibraryPlugin");
|
|
258
|
+
|
|
230
259
|
new UmdLibraryPlugin({
|
|
231
260
|
type,
|
|
232
261
|
optionalAmdExternalAsGlobal: type === "umd2"
|
|
@@ -235,7 +264,9 @@ class EnableLibraryPlugin {
|
|
|
235
264
|
}
|
|
236
265
|
case "system": {
|
|
237
266
|
enableExportProperty();
|
|
267
|
+
|
|
238
268
|
const SystemLibraryPlugin = require("./SystemLibraryPlugin");
|
|
269
|
+
|
|
239
270
|
new SystemLibraryPlugin({
|
|
240
271
|
type
|
|
241
272
|
}).apply(compiler);
|
|
@@ -243,28 +274,23 @@ class EnableLibraryPlugin {
|
|
|
243
274
|
}
|
|
244
275
|
case "jsonp": {
|
|
245
276
|
enableExportProperty();
|
|
277
|
+
|
|
246
278
|
const JsonpLibraryPlugin = require("./JsonpLibraryPlugin");
|
|
279
|
+
|
|
247
280
|
new JsonpLibraryPlugin({
|
|
248
281
|
type
|
|
249
282
|
}).apply(compiler);
|
|
250
283
|
break;
|
|
251
284
|
}
|
|
252
|
-
case "module":
|
|
253
|
-
|
|
285
|
+
case "module":
|
|
286
|
+
case "modern-module": {
|
|
254
287
|
const ModuleLibraryPlugin = require("./ModuleLibraryPlugin");
|
|
288
|
+
|
|
255
289
|
new ModuleLibraryPlugin({
|
|
256
290
|
type
|
|
257
291
|
}).apply(compiler);
|
|
258
292
|
break;
|
|
259
293
|
}
|
|
260
|
-
case "modern-module": {
|
|
261
|
-
enableExportProperty();
|
|
262
|
-
const ModernModuleLibraryPlugin = require("./ModernModuleLibraryPlugin");
|
|
263
|
-
new ModernModuleLibraryPlugin({
|
|
264
|
-
type
|
|
265
|
-
}).apply(compiler);
|
|
266
|
-
break;
|
|
267
|
-
}
|
|
268
294
|
default:
|
|
269
295
|
throw new Error(`Unsupported library type ${type}.
|
|
270
296
|
Plugins which provide custom library types must call EnableLibraryPlugin.setEnabled(compiler, type) to disable this error.`);
|
|
@@ -15,22 +15,24 @@ const AbstractLibraryPlugin = require("./AbstractLibraryPlugin");
|
|
|
15
15
|
/** @typedef {import("webpack-sources").Source} Source */
|
|
16
16
|
/** @typedef {import("../../declarations/WebpackOptions").LibraryOptions} LibraryOptions */
|
|
17
17
|
/** @typedef {import("../../declarations/WebpackOptions").LibraryType} LibraryType */
|
|
18
|
+
/** @typedef {import("../../declarations/WebpackOptions").LibraryExport} LibraryExport */
|
|
18
19
|
/** @typedef {import("../Chunk")} Chunk */
|
|
19
|
-
/** @typedef {import("../Compiler")} Compiler */
|
|
20
20
|
/** @typedef {import("../Module")} Module */
|
|
21
|
+
/** @typedef {import("../Module").RuntimeRequirements} RuntimeRequirements */
|
|
21
22
|
/** @typedef {import("../javascript/JavascriptModulesPlugin").StartupRenderContext} StartupRenderContext */
|
|
22
|
-
/**
|
|
23
|
+
/**
|
|
24
|
+
* @template T
|
|
25
|
+
* @typedef {import("./AbstractLibraryPlugin").LibraryContext<T>} LibraryContext<T>
|
|
26
|
+
*/
|
|
23
27
|
|
|
24
28
|
/**
|
|
25
29
|
* @typedef {object} ExportPropertyLibraryPluginParsed
|
|
26
|
-
* @property {
|
|
30
|
+
* @property {LibraryExport=} export
|
|
27
31
|
*/
|
|
28
32
|
|
|
29
33
|
/**
|
|
30
34
|
* @typedef {object} ExportPropertyLibraryPluginOptions
|
|
31
35
|
* @property {LibraryType} type
|
|
32
|
-
* @property {boolean} nsObjectUsed the namespace object is used
|
|
33
|
-
* @property {boolean} runtimeExportsUsed runtime exports are used
|
|
34
36
|
*/
|
|
35
37
|
/**
|
|
36
38
|
* @typedef {ExportPropertyLibraryPluginParsed} T
|
|
@@ -40,13 +42,11 @@ class ExportPropertyLibraryPlugin extends AbstractLibraryPlugin {
|
|
|
40
42
|
/**
|
|
41
43
|
* @param {ExportPropertyLibraryPluginOptions} options options
|
|
42
44
|
*/
|
|
43
|
-
constructor({ type
|
|
45
|
+
constructor({ type }) {
|
|
44
46
|
super({
|
|
45
47
|
pluginName: "ExportPropertyLibraryPlugin",
|
|
46
48
|
type
|
|
47
49
|
});
|
|
48
|
-
this.nsObjectUsed = nsObjectUsed;
|
|
49
|
-
this.runtimeExportsUsed = runtimeExportsUsed;
|
|
50
50
|
}
|
|
51
51
|
|
|
52
52
|
/**
|
|
@@ -55,7 +55,7 @@ class ExportPropertyLibraryPlugin extends AbstractLibraryPlugin {
|
|
|
55
55
|
*/
|
|
56
56
|
parseOptions(library) {
|
|
57
57
|
return {
|
|
58
|
-
export:
|
|
58
|
+
export: library.export
|
|
59
59
|
};
|
|
60
60
|
}
|
|
61
61
|
|
|
@@ -80,25 +80,19 @@ class ExportPropertyLibraryPlugin extends AbstractLibraryPlugin {
|
|
|
80
80
|
exportsInfo.canMangleUse = false;
|
|
81
81
|
} else {
|
|
82
82
|
const exportsInfo = moduleGraph.getExportsInfo(module);
|
|
83
|
-
|
|
84
|
-
exportsInfo.setUsedInUnknownWay(runtime);
|
|
85
|
-
} else {
|
|
86
|
-
exportsInfo.setAllKnownExportsUsed(runtime);
|
|
87
|
-
}
|
|
83
|
+
exportsInfo.setUsedInUnknownWay(runtime);
|
|
88
84
|
}
|
|
89
85
|
moduleGraph.addExtraReason(module, "used as library export");
|
|
90
86
|
}
|
|
91
87
|
|
|
92
88
|
/**
|
|
93
89
|
* @param {Chunk} chunk the chunk
|
|
94
|
-
* @param {
|
|
90
|
+
* @param {RuntimeRequirements} set runtime requirements
|
|
95
91
|
* @param {LibraryContext<T>} libraryContext context
|
|
96
92
|
* @returns {void}
|
|
97
93
|
*/
|
|
98
94
|
runtimeRequirements(chunk, set, libraryContext) {
|
|
99
|
-
|
|
100
|
-
set.add(RuntimeGlobals.exports);
|
|
101
|
-
}
|
|
95
|
+
set.add(RuntimeGlobals.exports);
|
|
102
96
|
}
|
|
103
97
|
|
|
104
98
|
/**
|