webpack 5.59.0 → 5.94.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +48 -38
- package/bin/webpack.js +34 -10
- package/hot/dev-server.js +19 -5
- package/hot/lazy-compilation-node.js +13 -1
- package/hot/lazy-compilation-web.js +9 -0
- package/hot/log-apply-result.js +5 -0
- package/hot/log.js +23 -4
- package/hot/only-dev-server.js +3 -2
- package/hot/poll.js +5 -2
- package/hot/signal.js +6 -2
- package/lib/APIPlugin.js +226 -122
- package/lib/AbstractMethodError.js +10 -5
- package/lib/AsyncDependenciesBlock.js +13 -5
- package/lib/AutomaticPrefetchPlugin.js +2 -1
- package/lib/BannerPlugin.js +33 -12
- package/lib/Cache.js +16 -12
- package/lib/CacheFacade.js +13 -16
- package/lib/CaseSensitiveModulesWarning.js +8 -8
- package/lib/Chunk.js +60 -33
- package/lib/ChunkGraph.js +207 -72
- package/lib/ChunkGroup.js +40 -20
- package/lib/ChunkTemplate.js +43 -0
- package/lib/CleanPlugin.js +117 -32
- package/lib/CodeGenerationResults.js +8 -7
- package/lib/CommentCompilationWarning.js +0 -1
- package/lib/CompatibilityPlugin.js +85 -46
- package/lib/Compilation.js +712 -392
- package/lib/Compiler.js +393 -172
- package/lib/ConcatenationScope.js +10 -13
- package/lib/ConditionalInitFragment.js +22 -14
- package/lib/ConstPlugin.js +104 -64
- package/lib/ContextExclusionPlugin.js +3 -3
- package/lib/ContextModule.js +283 -108
- package/lib/ContextModuleFactory.js +151 -63
- package/lib/ContextReplacementPlugin.js +25 -10
- package/lib/CssModule.js +166 -0
- package/lib/DefinePlugin.js +254 -148
- package/lib/DelegatedModule.js +29 -6
- package/lib/DelegatedModuleFactoryPlugin.js +42 -22
- package/lib/DelegatedPlugin.js +4 -0
- package/lib/DependenciesBlock.js +17 -2
- package/lib/Dependency.js +58 -29
- package/lib/DependencyTemplate.js +24 -3
- package/lib/DependencyTemplates.js +2 -2
- package/lib/DllEntryPlugin.js +18 -1
- package/lib/DllModule.js +21 -4
- package/lib/DllModuleFactory.js +2 -1
- package/lib/DllPlugin.js +9 -7
- package/lib/DllReferencePlugin.js +50 -19
- package/lib/EntryOptionPlugin.js +6 -1
- package/lib/EntryPlugin.js +7 -4
- package/lib/Entrypoint.js +2 -2
- package/lib/EnvironmentNotSupportAsyncWarning.js +52 -0
- package/lib/EnvironmentPlugin.js +5 -2
- package/lib/ErrorHelpers.js +65 -26
- package/lib/EvalDevToolModulePlugin.js +37 -13
- package/lib/EvalSourceMapDevToolPlugin.js +50 -20
- package/lib/ExportsInfo.js +234 -133
- package/lib/ExportsInfoApiPlugin.js +31 -15
- package/lib/ExternalModule.js +391 -129
- package/lib/ExternalModuleFactoryPlugin.js +65 -17
- package/lib/FileSystemInfo.js +1038 -523
- package/lib/FlagAllModulesAsUsedPlugin.js +27 -27
- package/lib/FlagDependencyExportsPlugin.js +352 -349
- package/lib/FlagDependencyUsagePlugin.js +10 -10
- package/lib/FlagEntryExportAsUsedPlugin.js +26 -23
- package/lib/Generator.js +16 -8
- package/lib/GraphHelpers.js +3 -2
- package/lib/HookWebpackError.js +11 -13
- package/lib/HotModuleReplacementPlugin.js +221 -128
- package/lib/IgnoreErrorModuleFactory.js +4 -4
- package/lib/IgnorePlugin.js +5 -4
- package/lib/IgnoreWarningsPlugin.js +6 -9
- package/lib/InitFragment.js +39 -15
- package/lib/JavascriptMetaInfoPlugin.js +27 -15
- package/lib/LibManifestPlugin.js +45 -16
- package/lib/LoaderOptionsPlugin.js +13 -3
- package/lib/MainTemplate.js +74 -21
- package/lib/Module.js +155 -34
- package/lib/ModuleBuildError.js +13 -11
- package/lib/ModuleDependencyError.js +6 -4
- package/lib/ModuleDependencyWarning.js +6 -4
- package/lib/ModuleError.js +10 -5
- package/lib/ModuleFactory.js +4 -4
- package/lib/ModuleFilenameHelpers.js +164 -54
- package/lib/ModuleGraph.js +93 -53
- package/lib/ModuleGraphConnection.js +27 -13
- package/lib/ModuleHashingError.js +29 -0
- package/lib/ModuleInfoHeaderPlugin.js +92 -33
- package/lib/ModuleNotFoundError.js +5 -2
- package/lib/ModuleParseError.js +17 -9
- package/lib/ModuleProfile.js +1 -0
- package/lib/ModuleRestoreError.js +3 -1
- package/lib/ModuleStoreError.js +3 -2
- package/lib/ModuleTemplate.js +33 -1
- package/lib/ModuleTypeConstants.js +168 -0
- package/lib/ModuleWarning.js +10 -5
- package/lib/MultiCompiler.js +115 -38
- package/lib/MultiStats.js +75 -33
- package/lib/MultiWatching.js +6 -2
- package/lib/NodeStuffPlugin.js +136 -37
- package/lib/NormalModule.js +437 -194
- package/lib/NormalModuleFactory.js +313 -116
- package/lib/NormalModuleReplacementPlugin.js +10 -4
- package/lib/NullFactory.js +1 -1
- package/lib/OptimizationStages.js +3 -3
- package/lib/Parser.js +1 -1
- package/lib/PlatformPlugin.js +39 -0
- package/lib/PrefetchPlugin.js +4 -0
- package/lib/ProgressPlugin.js +83 -28
- package/lib/ProvidePlugin.js +37 -19
- package/lib/RawModule.js +18 -5
- package/lib/RecordIdsPlugin.js +8 -8
- package/lib/RequireJsStuffPlugin.js +22 -15
- package/lib/ResolverFactory.js +8 -4
- package/lib/RuntimeGlobals.js +99 -65
- package/lib/RuntimeModule.js +17 -15
- package/lib/RuntimePlugin.js +116 -13
- package/lib/RuntimeTemplate.js +304 -102
- package/lib/SelfModuleFactory.js +12 -0
- package/lib/SizeFormatHelpers.js +2 -4
- package/lib/SourceMapDevToolModuleOptionsPlugin.js +4 -0
- package/lib/SourceMapDevToolPlugin.js +89 -42
- package/lib/Stats.js +12 -7
- package/lib/Template.js +30 -33
- package/lib/TemplatedPathPlugin.js +102 -34
- package/lib/UseStrictPlugin.js +37 -12
- package/lib/WarnCaseSensitiveModulesPlugin.js +12 -0
- package/lib/WarnDeprecatedOptionPlugin.js +6 -0
- package/lib/WatchIgnorePlugin.js +46 -13
- package/lib/Watching.js +139 -76
- package/lib/WebpackError.js +14 -5
- package/lib/WebpackIsIncludedPlugin.js +22 -13
- package/lib/WebpackOptionsApply.js +162 -56
- package/lib/WebpackOptionsDefaulter.js +10 -3
- package/lib/asset/AssetGenerator.js +351 -99
- package/lib/asset/AssetModulesPlugin.js +57 -33
- package/lib/asset/AssetParser.js +15 -6
- package/lib/asset/AssetSourceGenerator.js +30 -10
- package/lib/asset/AssetSourceParser.js +8 -2
- package/lib/asset/RawDataUrlModule.js +162 -0
- package/lib/async-modules/AwaitDependenciesInitFragment.js +16 -13
- package/lib/async-modules/InferAsyncModulesPlugin.js +1 -1
- package/lib/buildChunkGraph.js +376 -420
- package/lib/cache/AddManagedPathsPlugin.js +6 -1
- package/lib/cache/IdleFileCachePlugin.js +26 -13
- package/lib/cache/MemoryCachePlugin.js +1 -1
- package/lib/cache/MemoryWithGcCachePlugin.js +13 -7
- package/lib/cache/PackFileCacheStrategy.js +172 -94
- package/lib/cache/ResolverCachePlugin.js +115 -43
- package/lib/cache/getLazyHashedEtag.js +2 -2
- package/lib/cache/mergeEtags.js +16 -21
- package/lib/cli.js +195 -110
- package/lib/config/browserslistTargetHandler.js +106 -41
- package/lib/config/defaults.js +572 -154
- package/lib/config/normalization.js +361 -322
- package/lib/config/target.js +105 -66
- package/lib/container/ContainerEntryDependency.js +2 -1
- package/lib/container/ContainerEntryModule.js +27 -11
- package/lib/container/ContainerEntryModuleFactory.js +1 -1
- package/lib/container/ContainerExposedDependency.js +9 -0
- package/lib/container/ContainerPlugin.js +18 -12
- package/lib/container/ContainerReferencePlugin.js +1 -1
- package/lib/container/FallbackDependency.js +13 -0
- package/lib/container/FallbackItemDependency.js +3 -0
- package/lib/container/FallbackModule.js +19 -8
- package/lib/container/FallbackModuleFactory.js +1 -1
- package/lib/container/ModuleFederationPlugin.js +2 -0
- package/lib/container/RemoteModule.js +17 -4
- package/lib/container/RemoteRuntimeModule.js +31 -17
- package/lib/container/RemoteToExternalDependency.js +3 -0
- package/lib/container/options.js +18 -4
- package/lib/css/CssExportsGenerator.js +203 -0
- package/lib/css/CssGenerator.js +151 -0
- package/lib/css/CssLoadingRuntimeModule.js +592 -0
- package/lib/css/CssModulesPlugin.js +888 -0
- package/lib/css/CssParser.js +1049 -0
- package/lib/css/walkCssTokens.js +775 -0
- package/lib/debug/ProfilingPlugin.js +102 -54
- package/lib/dependencies/AMDDefineDependency.js +54 -10
- package/lib/dependencies/AMDDefineDependencyParserPlugin.js +204 -61
- package/lib/dependencies/AMDPlugin.js +44 -24
- package/lib/dependencies/AMDRequireArrayDependency.js +34 -10
- package/lib/dependencies/AMDRequireContextDependency.js +15 -0
- package/lib/dependencies/AMDRequireDependenciesBlock.js +6 -0
- package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +185 -54
- package/lib/dependencies/AMDRequireDependency.js +21 -6
- package/lib/dependencies/AMDRequireItemDependency.js +6 -0
- package/lib/dependencies/AMDRuntimeModules.js +4 -4
- package/lib/dependencies/CachedConstDependency.js +22 -1
- package/lib/dependencies/CommonJsDependencyHelpers.js +16 -2
- package/lib/dependencies/CommonJsExportRequireDependency.js +77 -47
- package/lib/dependencies/CommonJsExportsDependency.js +28 -5
- package/lib/dependencies/CommonJsExportsParserPlugin.js +111 -39
- package/lib/dependencies/CommonJsFullRequireDependency.js +42 -8
- package/lib/dependencies/CommonJsImportsParserPlugin.js +530 -130
- package/lib/dependencies/CommonJsPlugin.js +51 -26
- package/lib/dependencies/CommonJsRequireContextDependency.js +23 -2
- package/lib/dependencies/CommonJsRequireDependency.js +9 -1
- package/lib/dependencies/CommonJsSelfReferenceDependency.js +22 -8
- package/lib/dependencies/ConstDependency.js +12 -3
- package/lib/dependencies/ContextDependency.js +32 -5
- package/lib/dependencies/ContextDependencyHelpers.js +92 -62
- package/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +4 -1
- package/lib/dependencies/ContextElementDependency.js +41 -4
- package/lib/dependencies/CreateScriptUrlDependency.js +22 -1
- package/lib/dependencies/CriticalDependencyWarning.js +4 -1
- package/lib/dependencies/CssExportDependency.js +156 -0
- package/lib/dependencies/CssImportDependency.js +125 -0
- package/lib/dependencies/CssLocalIdentifierDependency.js +245 -0
- package/lib/dependencies/CssSelfLocalIdentifierDependency.js +111 -0
- package/lib/dependencies/CssUrlDependency.js +164 -0
- package/lib/dependencies/DelegatedSourceDependency.js +3 -0
- package/lib/dependencies/DllEntryDependency.js +14 -0
- package/lib/dependencies/DynamicExports.js +15 -11
- package/lib/dependencies/ExportsInfoDependency.js +26 -5
- package/lib/dependencies/ExternalModuleDependency.js +109 -0
- package/lib/dependencies/ExternalModuleInitFragment.js +133 -0
- package/lib/dependencies/HarmonyAcceptDependency.js +11 -2
- package/lib/dependencies/HarmonyAcceptImportDependency.js +9 -4
- package/lib/dependencies/HarmonyCompatibilityDependency.js +6 -5
- package/lib/dependencies/HarmonyDetectionParserPlugin.js +29 -3
- package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +152 -0
- package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +96 -51
- package/lib/dependencies/HarmonyExportExpressionDependency.js +21 -4
- package/lib/dependencies/HarmonyExportHeaderDependency.js +13 -0
- package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +216 -108
- package/lib/dependencies/HarmonyExportInitFragment.js +21 -9
- package/lib/dependencies/HarmonyExportSpecifierDependency.js +12 -0
- package/lib/dependencies/HarmonyExports.js +13 -7
- package/lib/dependencies/HarmonyImportDependency.js +65 -19
- package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +268 -74
- package/lib/dependencies/HarmonyImportSideEffectDependency.js +11 -5
- package/lib/dependencies/HarmonyImportSpecifierDependency.js +180 -36
- package/lib/dependencies/HarmonyModulesPlugin.js +33 -5
- package/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +15 -3
- package/lib/dependencies/ImportContextDependency.js +15 -2
- package/lib/dependencies/ImportDependency.js +50 -12
- package/lib/dependencies/ImportEagerDependency.js +11 -6
- package/lib/dependencies/ImportMetaContextDependency.js +42 -0
- package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +301 -0
- package/lib/dependencies/ImportMetaContextPlugin.js +72 -0
- package/lib/dependencies/ImportMetaHotAcceptDependency.js +6 -0
- package/lib/dependencies/ImportMetaHotDeclineDependency.js +6 -0
- package/lib/dependencies/ImportMetaPlugin.js +128 -59
- package/lib/dependencies/ImportParserPlugin.js +153 -83
- package/lib/dependencies/ImportPlugin.js +21 -7
- package/lib/dependencies/ImportWeakDependency.js +11 -6
- package/lib/dependencies/JsonExportsDependency.js +38 -30
- package/lib/dependencies/LoaderDependency.js +14 -0
- package/lib/dependencies/LoaderImportDependency.js +14 -0
- package/lib/dependencies/LoaderPlugin.js +54 -40
- package/lib/dependencies/LocalModule.js +17 -1
- package/lib/dependencies/LocalModuleDependency.js +15 -0
- package/lib/dependencies/LocalModulesHelpers.js +22 -4
- package/lib/dependencies/ModuleDecoratorDependency.js +9 -1
- package/lib/dependencies/ModuleDependency.js +24 -7
- package/lib/dependencies/ModuleDependencyTemplateAsId.js +2 -1
- package/lib/dependencies/ModuleHotAcceptDependency.js +6 -0
- package/lib/dependencies/ModuleHotDeclineDependency.js +6 -0
- package/lib/dependencies/PrefetchDependency.js +3 -0
- package/lib/dependencies/ProvidedDependency.js +43 -8
- package/lib/dependencies/PureExpressionDependency.js +73 -39
- package/lib/dependencies/RequireContextDependency.js +6 -16
- package/lib/dependencies/RequireContextDependencyParserPlugin.js +14 -6
- package/lib/dependencies/RequireContextPlugin.js +20 -7
- package/lib/dependencies/RequireEnsureDependenciesBlock.js +7 -0
- package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +29 -12
- package/lib/dependencies/RequireEnsureDependency.js +16 -2
- package/lib/dependencies/RequireEnsureItemDependency.js +3 -0
- package/lib/dependencies/RequireEnsurePlugin.js +27 -7
- package/lib/dependencies/RequireHeaderDependency.js +14 -1
- package/lib/dependencies/RequireIncludeDependency.js +6 -1
- package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +29 -5
- package/lib/dependencies/RequireIncludePlugin.js +25 -5
- package/lib/dependencies/RequireResolveContextDependency.js +19 -2
- package/lib/dependencies/RequireResolveDependency.js +8 -1
- package/lib/dependencies/RequireResolveHeaderDependency.js +18 -0
- package/lib/dependencies/RuntimeRequirementsDependency.js +9 -1
- package/lib/dependencies/StaticExportsDependency.js +8 -0
- package/lib/dependencies/SystemPlugin.js +49 -22
- package/lib/dependencies/SystemRuntimeModule.js +1 -1
- package/lib/dependencies/URLDependency.js +20 -13
- package/lib/dependencies/URLPlugin.js +115 -27
- package/lib/dependencies/UnsupportedDependency.js +13 -0
- package/lib/dependencies/WebAssemblyExportImportedDependency.js +14 -0
- package/lib/dependencies/WebAssemblyImportDependency.js +9 -1
- package/lib/dependencies/WebpackIsIncludedDependency.js +6 -1
- package/lib/dependencies/WorkerDependency.js +47 -3
- package/lib/dependencies/WorkerPlugin.js +143 -59
- package/lib/dependencies/getFunctionExpression.js +9 -0
- package/lib/dependencies/processExportInfo.js +3 -1
- package/lib/electron/ElectronTargetPlugin.js +1 -0
- package/lib/esm/ExportWebpackRequireRuntimeModule.js +3 -2
- package/lib/esm/ModuleChunkFormatPlugin.js +92 -55
- package/lib/esm/ModuleChunkLoadingPlugin.js +12 -1
- package/lib/esm/ModuleChunkLoadingRuntimeModule.js +141 -25
- package/lib/formatLocation.js +1 -2
- package/lib/hmr/HotModuleReplacement.runtime.js +37 -25
- package/lib/hmr/HotModuleReplacementRuntimeModule.js +2 -1
- package/lib/hmr/JavascriptHotModuleReplacement.runtime.js +13 -15
- package/lib/hmr/LazyCompilationPlugin.js +94 -41
- package/lib/hmr/lazyCompilationBackend.js +107 -44
- package/lib/ids/ChunkModuleIdRangePlugin.js +12 -3
- package/lib/ids/DeterministicChunkIdsPlugin.js +13 -6
- package/lib/ids/DeterministicModuleIdsPlugin.js +59 -35
- package/lib/ids/HashedModuleIdsPlugin.js +24 -16
- package/lib/ids/IdHelpers.js +59 -49
- package/lib/ids/NamedChunkIdsPlugin.js +13 -1
- package/lib/ids/NamedModuleIdsPlugin.js +20 -12
- package/lib/ids/NaturalModuleIdsPlugin.js +10 -13
- package/lib/ids/OccurrenceChunkIdsPlugin.js +6 -2
- package/lib/ids/OccurrenceModuleIdsPlugin.js +14 -11
- package/lib/ids/SyncModuleIdsPlugin.js +146 -0
- package/lib/index.js +44 -5
- package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +9 -7
- package/lib/javascript/BasicEvaluatedExpression.js +133 -19
- package/lib/javascript/ChunkHelpers.js +33 -0
- package/lib/javascript/CommonJsChunkFormatPlugin.js +18 -15
- package/lib/javascript/EnableChunkLoadingPlugin.js +11 -6
- package/lib/javascript/JavascriptGenerator.js +37 -6
- package/lib/javascript/JavascriptModulesPlugin.js +523 -295
- package/lib/javascript/JavascriptParser.js +1591 -574
- package/lib/javascript/JavascriptParserHelpers.js +58 -37
- package/lib/javascript/StartupHelpers.js +69 -47
- package/lib/json/JsonData.js +33 -0
- package/lib/json/JsonGenerator.js +29 -21
- package/lib/json/JsonModulesPlugin.js +13 -7
- package/lib/json/JsonParser.js +30 -16
- package/lib/library/AbstractLibraryPlugin.js +6 -2
- package/lib/library/AmdLibraryPlugin.js +34 -18
- package/lib/library/AssignLibraryPlugin.js +68 -32
- package/lib/library/EnableLibraryPlugin.js +39 -14
- package/lib/library/ExportPropertyLibraryPlugin.js +14 -5
- package/lib/library/JsonpLibraryPlugin.js +4 -3
- package/lib/library/ModernModuleLibraryPlugin.js +144 -0
- package/lib/library/ModuleLibraryPlugin.js +12 -7
- package/lib/library/SystemLibraryPlugin.js +6 -4
- package/lib/library/UmdLibraryPlugin.js +119 -100
- package/lib/logging/Logger.js +59 -6
- package/lib/logging/createConsoleLogger.js +25 -40
- package/lib/logging/runtime.js +8 -9
- package/lib/logging/truncateArgs.js +9 -8
- package/lib/node/CommonJsChunkLoadingPlugin.js +18 -2
- package/lib/node/NodeEnvironmentPlugin.js +14 -8
- package/lib/node/NodeTargetPlugin.js +7 -0
- package/lib/node/NodeTemplatePlugin.js +10 -2
- package/lib/node/NodeWatchFileSystem.js +100 -50
- package/lib/node/ReadFileChunkLoadingRuntimeModule.js +51 -26
- package/lib/node/ReadFileCompileAsyncWasmPlugin.js +13 -2
- package/lib/node/ReadFileCompileWasmPlugin.js +21 -3
- package/lib/node/RequireChunkLoadingRuntimeModule.js +49 -26
- package/lib/node/nodeConsole.js +48 -31
- package/lib/optimize/AggressiveMergingPlugin.js +10 -4
- package/lib/optimize/AggressiveSplittingPlugin.js +26 -21
- package/lib/optimize/ConcatenatedModule.js +353 -212
- package/lib/optimize/EnsureChunkConditionsPlugin.js +4 -1
- package/lib/optimize/FlagIncludedChunksPlugin.js +14 -8
- package/lib/optimize/InnerGraph.js +30 -25
- package/lib/optimize/InnerGraphPlugin.js +105 -64
- package/lib/optimize/LimitChunkCountPlugin.js +32 -9
- package/lib/optimize/MangleExportsPlugin.js +7 -2
- package/lib/optimize/MinMaxSizeWarning.js +6 -1
- package/lib/optimize/ModuleConcatenationPlugin.js +150 -83
- package/lib/optimize/RealContentHashPlugin.js +99 -43
- package/lib/optimize/RemoveParentModulesPlugin.js +131 -48
- package/lib/optimize/RuntimeChunkPlugin.js +15 -2
- package/lib/optimize/SideEffectsFlagPlugin.js +119 -63
- package/lib/optimize/SplitChunksPlugin.js +129 -78
- package/lib/performance/SizeLimitsPlugin.js +22 -8
- package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +4 -2
- package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +4 -1
- package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +8 -5
- package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +5 -3
- package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +5 -3
- package/lib/rules/BasicEffectRulePlugin.js +7 -1
- package/lib/rules/BasicMatcherRulePlugin.js +8 -1
- package/lib/rules/ObjectMatcherRulePlugin.js +19 -2
- package/lib/rules/RuleSetCompiler.js +53 -32
- package/lib/rules/UseEffectRulePlugin.js +42 -36
- package/lib/runtime/AsyncModuleRuntimeModule.js +56 -69
- package/lib/runtime/AutoPublicPathRuntimeModule.js +25 -9
- package/lib/runtime/BaseUriRuntimeModule.js +35 -0
- package/lib/runtime/ChunkNameRuntimeModule.js +1 -1
- package/lib/runtime/CompatGetDefaultExportRuntimeModule.js +5 -2
- package/lib/runtime/CompatRuntimeModule.js +7 -2
- package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +7 -4
- package/lib/runtime/CreateScriptRuntimeModule.js +38 -0
- package/lib/runtime/CreateScriptUrlRuntimeModule.js +13 -36
- package/lib/runtime/DefinePropertyGettersRuntimeModule.js +6 -3
- package/lib/runtime/EnsureChunkRuntimeModule.js +29 -15
- package/lib/runtime/GetChunkFilenameRuntimeModule.js +56 -43
- package/lib/runtime/GetFullHashRuntimeModule.js +4 -3
- package/lib/runtime/GetMainFilenameRuntimeModule.js +5 -2
- package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +98 -0
- package/lib/runtime/GlobalRuntimeModule.js +1 -1
- package/lib/runtime/HasOwnPropertyRuntimeModule.js +5 -2
- package/lib/runtime/LoadScriptRuntimeModule.js +61 -45
- package/lib/runtime/MakeNamespaceObjectRuntimeModule.js +5 -2
- package/lib/runtime/NonceRuntimeModule.js +24 -0
- package/lib/runtime/OnChunksLoadedRuntimeModule.js +4 -2
- package/lib/runtime/PublicPathRuntimeModule.js +9 -2
- package/lib/runtime/RelativeUrlRuntimeModule.js +5 -2
- package/lib/runtime/RuntimeIdRuntimeModule.js +6 -2
- package/lib/runtime/StartupChunkDependenciesPlugin.js +15 -0
- package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +36 -28
- package/lib/runtime/StartupEntrypointRuntimeModule.js +13 -9
- package/lib/runtime/SystemContextRuntimeModule.js +1 -1
- package/lib/schemes/DataUriPlugin.js +16 -3
- package/lib/schemes/HttpUriPlugin.js +336 -120
- package/lib/serialization/ArraySerializer.js +22 -6
- package/lib/serialization/BinaryMiddleware.js +212 -33
- package/lib/serialization/DateObjectSerializer.js +16 -4
- package/lib/serialization/ErrorObjectSerializer.js +23 -6
- package/lib/serialization/FileMiddleware.js +187 -86
- package/lib/serialization/MapObjectSerializer.js +25 -8
- package/lib/serialization/NullPrototypeObjectSerializer.js +26 -8
- package/lib/serialization/ObjectMiddleware.js +96 -66
- package/lib/serialization/PlainObjectSerializer.js +51 -14
- package/lib/serialization/RegExpObjectSerializer.js +17 -5
- package/lib/serialization/Serializer.js +23 -5
- package/lib/serialization/SerializerMiddleware.js +8 -8
- package/lib/serialization/SetObjectSerializer.js +22 -6
- package/lib/serialization/SingleItemMiddleware.js +2 -2
- package/lib/serialization/types.js +2 -2
- package/lib/sharing/ConsumeSharedFallbackDependency.js +3 -0
- package/lib/sharing/ConsumeSharedModule.js +40 -17
- package/lib/sharing/ConsumeSharedPlugin.js +139 -102
- package/lib/sharing/ConsumeSharedRuntimeModule.js +144 -130
- package/lib/sharing/ProvideForSharedDependency.js +0 -1
- package/lib/sharing/ProvideSharedDependency.js +17 -0
- package/lib/sharing/ProvideSharedModule.js +19 -6
- package/lib/sharing/ProvideSharedModuleFactory.js +1 -1
- package/lib/sharing/ProvideSharedPlugin.js +37 -30
- package/lib/sharing/SharePlugin.js +2 -2
- package/lib/sharing/ShareRuntimeModule.js +20 -10
- package/lib/sharing/resolveMatchedConfigs.js +6 -5
- package/lib/sharing/utils.js +338 -34
- package/lib/stats/DefaultStatsFactoryPlugin.js +660 -396
- package/lib/stats/DefaultStatsPresetPlugin.js +85 -25
- package/lib/stats/DefaultStatsPrinterPlugin.js +525 -145
- package/lib/stats/StatsFactory.js +128 -57
- package/lib/stats/StatsPrinter.js +77 -46
- package/lib/util/ArrayHelpers.js +35 -1
- package/lib/util/ArrayQueue.js +15 -22
- package/lib/util/AsyncQueue.js +37 -16
- package/lib/util/IterableHelpers.js +3 -4
- package/lib/util/LazyBucketSortedSet.js +60 -44
- package/lib/util/LazySet.js +11 -2
- package/lib/util/MapHelpers.js +17 -5
- package/lib/util/ParallelismFactorCalculator.js +11 -1
- package/lib/util/Queue.js +9 -3
- package/lib/util/Semaphore.js +4 -7
- package/lib/util/SetHelpers.js +5 -5
- package/lib/util/SortableSet.js +19 -6
- package/lib/util/StackedCacheMap.js +33 -3
- package/lib/util/StackedMap.js +1 -3
- package/lib/util/StringXor.js +46 -0
- package/lib/util/TupleQueue.js +9 -3
- package/lib/util/TupleSet.js +15 -5
- package/lib/util/URLAbsoluteSpecifier.js +8 -8
- package/lib/util/WeakTupleMap.js +70 -28
- package/lib/util/binarySearchBounds.js +51 -9
- package/lib/util/chainedImports.js +97 -0
- package/lib/util/cleverMerge.js +51 -36
- package/lib/util/comparators.js +146 -83
- package/lib/util/compileBooleanMatcher.js +35 -7
- package/lib/util/conventions.js +126 -0
- package/lib/util/create-schema-validation.js +9 -2
- package/lib/util/createHash.js +49 -14
- package/lib/util/deprecation.js +48 -15
- package/lib/util/deterministicGrouping.js +71 -39
- package/lib/util/extractUrlAndGlobal.js +3 -0
- package/lib/util/findGraphRoots.js +7 -5
- package/lib/util/fs.js +419 -94
- package/lib/util/hash/BatchedHash.js +10 -4
- package/lib/util/hash/md4.js +20 -0
- package/lib/util/hash/wasm-hash.js +163 -0
- package/lib/util/hash/xxhash64.js +7 -141
- package/lib/util/identifier.js +140 -93
- package/lib/util/internalSerializables.js +22 -0
- package/lib/util/makeSerializable.js +7 -0
- package/lib/util/memoize.js +10 -10
- package/lib/util/mergeScope.js +76 -0
- package/lib/util/nonNumericOnlyHash.js +22 -0
- package/lib/util/numberHash.js +84 -34
- package/lib/util/objectToMap.js +0 -1
- package/lib/util/processAsyncTree.js +7 -1
- package/lib/util/propertyAccess.js +7 -55
- package/lib/util/propertyName.js +77 -0
- package/lib/util/registerExternalSerializer.js +2 -2
- package/lib/util/runtime.js +188 -133
- package/lib/util/semver.js +64 -56
- package/lib/util/serialization.js +26 -1
- package/lib/util/smartGrouping.js +10 -10
- package/lib/util/source.js +1 -1
- package/lib/validateSchema.js +6 -2
- package/lib/wasm/EnableWasmLoadingPlugin.js +9 -4
- package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +70 -30
- package/lib/wasm-async/AsyncWebAssemblyGenerator.js +9 -1
- package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +34 -16
- package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +32 -12
- package/lib/wasm-async/AsyncWebAssemblyParser.js +17 -4
- package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +72 -31
- package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +17 -6
- package/lib/wasm-sync/WebAssemblyGenerator.js +72 -52
- package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +5 -4
- package/lib/wasm-sync/WebAssemblyModulesPlugin.js +53 -43
- package/lib/wasm-sync/WebAssemblyParser.js +23 -9
- package/lib/wasm-sync/WebAssemblyUtils.js +5 -4
- package/lib/web/FetchCompileAsyncWasmPlugin.js +11 -1
- package/lib/web/FetchCompileWasmPlugin.js +59 -42
- package/lib/web/JsonpChunkLoadingPlugin.js +9 -0
- package/lib/web/JsonpChunkLoadingRuntimeModule.js +71 -41
- package/lib/webpack.js +43 -12
- package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +15 -12
- package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +55 -40
- package/module.d.ts +233 -0
- package/package.json +85 -139
- package/schemas/WebpackOptions.check.js +1 -1
- package/schemas/WebpackOptions.json +679 -47
- package/schemas/plugins/BannerPlugin.check.js +1 -1
- package/schemas/plugins/BannerPlugin.json +9 -1
- package/schemas/plugins/DllReferencePlugin.check.js +1 -1
- package/schemas/plugins/HashedModuleIdsPlugin.check.js +1 -1
- package/schemas/plugins/ProgressPlugin.check.js +1 -1
- package/schemas/plugins/SourceMapDevToolPlugin.check.js +1 -1
- package/schemas/plugins/SourceMapDevToolPlugin.json +4 -0
- package/schemas/plugins/asset/AssetGeneratorOptions.check.js +1 -1
- package/schemas/plugins/asset/AssetInlineGeneratorOptions.check.js +1 -1
- package/schemas/plugins/asset/AssetParserOptions.check.js +1 -1
- package/schemas/plugins/asset/AssetResourceGeneratorOptions.check.js +1 -1
- package/schemas/plugins/container/ContainerPlugin.check.js +1 -1
- package/schemas/plugins/container/ContainerPlugin.json +10 -1
- package/schemas/plugins/container/ContainerReferencePlugin.check.js +1 -1
- package/schemas/plugins/container/ContainerReferencePlugin.json +2 -0
- package/schemas/plugins/container/ExternalsType.check.js +1 -1
- package/schemas/plugins/container/ModuleFederationPlugin.check.js +1 -1
- package/schemas/plugins/container/ModuleFederationPlugin.json +12 -1
- package/schemas/plugins/css/CssAutoGeneratorOptions.check.d.ts +7 -0
- package/schemas/plugins/css/CssAutoGeneratorOptions.check.js +6 -0
- package/schemas/plugins/css/CssAutoGeneratorOptions.json +3 -0
- package/schemas/plugins/css/CssAutoParserOptions.check.d.ts +7 -0
- package/schemas/plugins/css/CssAutoParserOptions.check.js +6 -0
- package/schemas/plugins/css/CssAutoParserOptions.json +3 -0
- package/schemas/plugins/css/CssGeneratorOptions.check.d.ts +7 -0
- package/schemas/plugins/css/CssGeneratorOptions.check.js +6 -0
- package/schemas/plugins/css/CssGeneratorOptions.json +3 -0
- package/schemas/plugins/css/CssGlobalGeneratorOptions.check.d.ts +7 -0
- package/schemas/plugins/css/CssGlobalGeneratorOptions.check.js +6 -0
- package/schemas/plugins/css/CssGlobalGeneratorOptions.json +3 -0
- package/schemas/plugins/css/CssGlobalParserOptions.check.d.ts +7 -0
- package/schemas/plugins/css/CssGlobalParserOptions.check.js +6 -0
- package/schemas/plugins/css/CssGlobalParserOptions.json +3 -0
- package/schemas/plugins/css/CssModuleGeneratorOptions.check.d.ts +7 -0
- package/schemas/plugins/css/CssModuleGeneratorOptions.check.js +6 -0
- package/schemas/plugins/css/CssModuleGeneratorOptions.json +3 -0
- package/schemas/plugins/css/CssModuleParserOptions.check.d.ts +7 -0
- package/schemas/plugins/css/CssModuleParserOptions.check.js +6 -0
- package/schemas/plugins/css/CssModuleParserOptions.json +3 -0
- package/schemas/plugins/css/CssParserOptions.check.d.ts +7 -0
- package/schemas/plugins/css/CssParserOptions.check.js +6 -0
- package/schemas/plugins/css/CssParserOptions.json +3 -0
- package/schemas/plugins/optimize/AggressiveSplittingPlugin.check.js +1 -1
- package/schemas/plugins/optimize/LimitChunkCountPlugin.check.js +1 -1
- package/schemas/plugins/optimize/MinChunkSizePlugin.check.js +1 -1
- package/schemas/plugins/schemes/HttpUriPlugin.check.js +1 -1
- package/schemas/plugins/schemes/HttpUriPlugin.json +4 -0
- package/schemas/plugins/sharing/SharePlugin.check.js +1 -1
- package/types.d.ts +5026 -1756
package/lib/config/target.js
CHANGED
@@ -21,7 +21,7 @@ const getDefaultTarget = context => {
|
|
21
21
|
};
|
22
22
|
|
23
23
|
/**
|
24
|
-
* @typedef {
|
24
|
+
* @typedef {object} PlatformTargetProperties
|
25
25
|
* @property {boolean | null} web web platform, importing of http(s) and std: is available
|
26
26
|
* @property {boolean | null} browser browser platform, running in a normal web browser
|
27
27
|
* @property {boolean | null} webworker (Web)Worker platform, running in a web/shared/service worker
|
@@ -31,16 +31,17 @@ const getDefaultTarget = context => {
|
|
31
31
|
*/
|
32
32
|
|
33
33
|
/**
|
34
|
-
* @typedef {
|
34
|
+
* @typedef {object} ElectronContextTargetProperties
|
35
35
|
* @property {boolean | null} electronMain in main context
|
36
36
|
* @property {boolean | null} electronPreload in preload context
|
37
37
|
* @property {boolean | null} electronRenderer in renderer context with node integration
|
38
38
|
*/
|
39
39
|
|
40
40
|
/**
|
41
|
-
* @typedef {
|
41
|
+
* @typedef {object} ApiTargetProperties
|
42
42
|
* @property {boolean | null} require has require function available
|
43
43
|
* @property {boolean | null} nodeBuiltins has node.js built-in modules available
|
44
|
+
* @property {boolean | null} nodePrefixForCoreModules node.js allows to use `node:` prefix for core modules
|
44
45
|
* @property {boolean | null} document has document available (allows script tags)
|
45
46
|
* @property {boolean | null} importScripts has importScripts available
|
46
47
|
* @property {boolean | null} importScriptsInWorker has importScripts available when creating a worker
|
@@ -49,7 +50,7 @@ const getDefaultTarget = context => {
|
|
49
50
|
*/
|
50
51
|
|
51
52
|
/**
|
52
|
-
* @typedef {
|
53
|
+
* @typedef {object} EcmaTargetProperties
|
53
54
|
* @property {boolean | null} globalThis has globalThis variable available
|
54
55
|
* @property {boolean | null} bigIntLiteral big int literal syntax is available
|
55
56
|
* @property {boolean | null} const const and let variable declarations are available
|
@@ -59,23 +60,42 @@ const getDefaultTarget = context => {
|
|
59
60
|
* @property {boolean | null} dynamicImport async import() is available
|
60
61
|
* @property {boolean | null} dynamicImportInWorker async import() is available when creating a worker
|
61
62
|
* @property {boolean | null} module ESM syntax is available (when in module)
|
63
|
+
* @property {boolean | null} optionalChaining optional chaining is available
|
64
|
+
* @property {boolean | null} templateLiteral template literal is available
|
65
|
+
* @property {boolean | null} asyncFunction async functions and await are available
|
66
|
+
*/
|
67
|
+
|
68
|
+
/**
|
69
|
+
* @template T
|
70
|
+
* @typedef {{ [P in keyof T]?: never }} Never<T>
|
71
|
+
*/
|
72
|
+
|
73
|
+
/**
|
74
|
+
* @template A
|
75
|
+
* @template B
|
76
|
+
* @typedef {(A & Never<B>) | (Never<A> & B) | (A & B)} Mix<A, B>
|
62
77
|
*/
|
63
78
|
|
64
|
-
///** @typedef {PlatformTargetProperties | ApiTargetProperties | EcmaTargetProperties | PlatformTargetProperties & ApiTargetProperties | PlatformTargetProperties & EcmaTargetProperties | ApiTargetProperties & EcmaTargetProperties} TargetProperties */
|
65
|
-
/** @template T @typedef {{ [P in keyof T]?: never }} Never<T> */
|
66
|
-
/** @template A @template B @typedef {(A & Never<B>) | (Never<A> & B) | (A & B)} Mix<A,B> */
|
67
79
|
/** @typedef {Mix<Mix<PlatformTargetProperties, ElectronContextTargetProperties>, Mix<ApiTargetProperties, EcmaTargetProperties>>} TargetProperties */
|
68
80
|
|
81
|
+
/**
|
82
|
+
* @param {string} major major version
|
83
|
+
* @param {string | undefined} minor minor version
|
84
|
+
* @returns {(vMajor: number, vMinor?: number) => boolean | undefined} check if version is greater or equal
|
85
|
+
*/
|
69
86
|
const versionDependent = (major, minor) => {
|
70
|
-
if (!major)
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
}
|
87
|
+
if (!major) {
|
88
|
+
return () => /** @type {undefined} */ (undefined);
|
89
|
+
}
|
90
|
+
/** @type {number} */
|
91
|
+
const nMajor = Number(major);
|
92
|
+
/** @type {number} */
|
93
|
+
const nMinor = minor ? Number(minor) : 0;
|
94
|
+
return (vMajor, vMinor = 0) =>
|
95
|
+
nMajor > vMajor || (nMajor === vMajor && nMinor >= vMinor);
|
76
96
|
};
|
77
97
|
|
78
|
-
/** @type {[string, string, RegExp, (...args: string[]) => TargetProperties
|
98
|
+
/** @type {[string, string, RegExp, (...args: string[]) => Partial<TargetProperties>][]} */
|
79
99
|
const TARGETS = [
|
80
100
|
[
|
81
101
|
"browserslist / browserslist:env / browserslist:query / browserslist:path-to-config / browserslist:path-to-config:env",
|
@@ -93,6 +113,7 @@ See https://github.com/browserslist/browserslist#queries for possible ways to pr
|
|
93
113
|
The recommended way is to add a 'browserslist' key to your package.json and list supported browsers (resp. node.js versions).
|
94
114
|
You can also more options via the 'target' option: 'browserslist' / 'browserslist:env' / 'browserslist:query' / 'browserslist:path-to-config' / 'browserslist:path-to-config:env'`);
|
95
115
|
}
|
116
|
+
|
96
117
|
return browserslistTargetHandler.resolve(browsers);
|
97
118
|
}
|
98
119
|
],
|
@@ -100,53 +121,49 @@ You can also more options via the 'target' option: 'browserslist' / 'browserslis
|
|
100
121
|
"web",
|
101
122
|
"Web browser.",
|
102
123
|
/^web$/,
|
103
|
-
() => {
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
nwjs: false,
|
124
|
+
() => ({
|
125
|
+
web: true,
|
126
|
+
browser: true,
|
127
|
+
webworker: null,
|
128
|
+
node: false,
|
129
|
+
electron: false,
|
130
|
+
nwjs: false,
|
111
131
|
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
}
|
132
|
+
document: true,
|
133
|
+
importScriptsInWorker: true,
|
134
|
+
fetchWasm: true,
|
135
|
+
nodeBuiltins: false,
|
136
|
+
importScripts: false,
|
137
|
+
require: false,
|
138
|
+
global: false
|
139
|
+
})
|
121
140
|
],
|
122
141
|
[
|
123
142
|
"webworker",
|
124
143
|
"Web Worker, SharedWorker or Service Worker.",
|
125
144
|
/^webworker$/,
|
126
|
-
() => {
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
nwjs: false,
|
145
|
+
() => ({
|
146
|
+
web: true,
|
147
|
+
browser: true,
|
148
|
+
webworker: true,
|
149
|
+
node: false,
|
150
|
+
electron: false,
|
151
|
+
nwjs: false,
|
134
152
|
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
}
|
153
|
+
importScripts: true,
|
154
|
+
importScriptsInWorker: true,
|
155
|
+
fetchWasm: true,
|
156
|
+
nodeBuiltins: false,
|
157
|
+
require: false,
|
158
|
+
document: false,
|
159
|
+
global: false
|
160
|
+
})
|
144
161
|
],
|
145
162
|
[
|
146
163
|
"[async-]node[X[.Y]]",
|
147
164
|
"Node.js in version X.Y. The 'async-' prefix will load chunks asynchronously via 'fs' and 'vm' instead of 'require()'. Examples: node14.5, async-node10.",
|
148
|
-
/^(async-)?node(\d+(?:\.(\d+))?)?$/,
|
149
|
-
(asyncFlag, major, minor) => {
|
165
|
+
/^(async-)?node((\d+)(?:\.(\d+))?)?$/,
|
166
|
+
(asyncFlag, _, major, minor) => {
|
150
167
|
const v = versionDependent(major, minor);
|
151
168
|
// see https://node.green/
|
152
169
|
return {
|
@@ -159,6 +176,8 @@ You can also more options via the 'target' option: 'browserslist' / 'browserslis
|
|
159
176
|
|
160
177
|
require: !asyncFlag,
|
161
178
|
nodeBuiltins: true,
|
179
|
+
// v16.0.0, v14.18.0
|
180
|
+
nodePrefixForCoreModules: Number(major) < 15 ? v(14, 18) : v(16),
|
162
181
|
global: true,
|
163
182
|
document: false,
|
164
183
|
fetchWasm: false,
|
@@ -167,7 +186,10 @@ You can also more options via the 'target' option: 'browserslist' / 'browserslis
|
|
167
186
|
|
168
187
|
globalThis: v(12),
|
169
188
|
const: v(6),
|
189
|
+
templateLiteral: v(4),
|
190
|
+
optionalChaining: v(14),
|
170
191
|
arrowFunction: v(6),
|
192
|
+
asyncFunction: v(7, 6),
|
171
193
|
forOf: v(5),
|
172
194
|
destructuring: v(6),
|
173
195
|
bigIntLiteral: v(10, 4),
|
@@ -180,8 +202,8 @@ You can also more options via the 'target' option: 'browserslist' / 'browserslis
|
|
180
202
|
[
|
181
203
|
"electron[X[.Y]]-main/preload/renderer",
|
182
204
|
"Electron in version X.Y. Script is running in main, preload resp. renderer context.",
|
183
|
-
/^electron(\d+(?:\.(\d+))?)?-(main|preload|renderer)$/,
|
184
|
-
(major, minor, context) => {
|
205
|
+
/^electron((\d+)(?:\.(\d+))?)?-(main|preload|renderer)$/,
|
206
|
+
(_, major, minor, context) => {
|
185
207
|
const v = versionDependent(major, minor);
|
186
208
|
// see https://node.green/ + https://github.com/electron/releases
|
187
209
|
return {
|
@@ -198,6 +220,10 @@ You can also more options via the 'target' option: 'browserslist' / 'browserslis
|
|
198
220
|
|
199
221
|
global: true,
|
200
222
|
nodeBuiltins: true,
|
223
|
+
// 15.0.0 - Node.js v16.5
|
224
|
+
// 14.0.0 - Mode.js v14.17, but prefixes only since v14.18
|
225
|
+
nodePrefixForCoreModules: v(15),
|
226
|
+
|
201
227
|
require: true,
|
202
228
|
document: context === "renderer",
|
203
229
|
fetchWasm: context === "renderer",
|
@@ -206,7 +232,10 @@ You can also more options via the 'target' option: 'browserslist' / 'browserslis
|
|
206
232
|
|
207
233
|
globalThis: v(5),
|
208
234
|
const: v(1, 1),
|
235
|
+
templateLiteral: v(1, 1),
|
236
|
+
optionalChaining: v(8),
|
209
237
|
arrowFunction: v(1, 1),
|
238
|
+
asyncFunction: v(1, 7),
|
210
239
|
forOf: v(0, 36),
|
211
240
|
destructuring: v(1, 1),
|
212
241
|
bigIntLiteral: v(4),
|
@@ -219,8 +248,8 @@ You can also more options via the 'target' option: 'browserslist' / 'browserslis
|
|
219
248
|
[
|
220
249
|
"nwjs[X[.Y]] / node-webkit[X[.Y]]",
|
221
250
|
"NW.js in version X.Y.",
|
222
|
-
/^(?:nwjs|node-webkit)(\d+(?:\.(\d+))?)?$/,
|
223
|
-
(major, minor) => {
|
251
|
+
/^(?:nwjs|node-webkit)((\d+)(?:\.(\d+))?)?$/,
|
252
|
+
(_, major, minor) => {
|
224
253
|
const v = versionDependent(major, minor);
|
225
254
|
// see https://node.green/ + https://github.com/nwjs/nw.js/blob/nw48/CHANGELOG.md
|
226
255
|
return {
|
@@ -241,7 +270,10 @@ You can also more options via the 'target' option: 'browserslist' / 'browserslis
|
|
241
270
|
|
242
271
|
globalThis: v(0, 43),
|
243
272
|
const: v(0, 15),
|
273
|
+
templateLiteral: v(0, 13),
|
274
|
+
optionalChaining: v(0, 44),
|
244
275
|
arrowFunction: v(0, 15),
|
276
|
+
asyncFunction: v(0, 21),
|
245
277
|
forOf: v(0, 13),
|
246
278
|
destructuring: v(0, 15),
|
247
279
|
bigIntLiteral: v(0, 32),
|
@@ -256,14 +288,17 @@ You can also more options via the 'target' option: 'browserslist' / 'browserslis
|
|
256
288
|
"EcmaScript in this version. Examples: es2020, es5.",
|
257
289
|
/^es(\d+)$/,
|
258
290
|
version => {
|
259
|
-
let v =
|
291
|
+
let v = Number(version);
|
260
292
|
if (v < 1000) v = v + 2009;
|
261
293
|
return {
|
262
294
|
const: v >= 2015,
|
295
|
+
templateLiteral: v >= 2015,
|
296
|
+
optionalChaining: v >= 2020,
|
263
297
|
arrowFunction: v >= 2015,
|
264
298
|
forOf: v >= 2015,
|
265
299
|
destructuring: v >= 2015,
|
266
300
|
module: v >= 2015,
|
301
|
+
asyncFunction: v >= 2017,
|
267
302
|
globalThis: v >= 2020,
|
268
303
|
bigIntLiteral: v >= 2020,
|
269
304
|
dynamicImport: v >= 2020,
|
@@ -284,7 +319,7 @@ const getTargetProperties = (target, context) => {
|
|
284
319
|
if (match) {
|
285
320
|
const [, ...args] = match;
|
286
321
|
const result = handler(...args, context);
|
287
|
-
if (result) return result;
|
322
|
+
if (result) return /** @type {TargetProperties} */ (result);
|
288
323
|
}
|
289
324
|
}
|
290
325
|
throw new Error(
|
@@ -294,13 +329,19 @@ const getTargetProperties = (target, context) => {
|
|
294
329
|
);
|
295
330
|
};
|
296
331
|
|
332
|
+
/**
|
333
|
+
* @param {TargetProperties[]} targetProperties array of target properties
|
334
|
+
* @returns {TargetProperties} merged target properties
|
335
|
+
*/
|
297
336
|
const mergeTargetProperties = targetProperties => {
|
337
|
+
/** @type {Set<keyof TargetProperties>} */
|
298
338
|
const keys = new Set();
|
299
339
|
for (const tp of targetProperties) {
|
300
340
|
for (const key of Object.keys(tp)) {
|
301
|
-
keys.add(key);
|
341
|
+
keys.add(/** @type {keyof TargetProperties} */ (key));
|
302
342
|
}
|
303
343
|
}
|
344
|
+
/** @type {object} */
|
304
345
|
const result = {};
|
305
346
|
for (const key of keys) {
|
306
347
|
let hasTrue = false;
|
@@ -317,7 +358,8 @@ const mergeTargetProperties = targetProperties => {
|
|
317
358
|
}
|
318
359
|
}
|
319
360
|
if (hasTrue || hasFalse)
|
320
|
-
|
361
|
+
/** @type {TargetProperties} */
|
362
|
+
(result)[key] = hasFalse && hasTrue ? null : Boolean(hasTrue);
|
321
363
|
}
|
322
364
|
return /** @type {TargetProperties} */ (result);
|
323
365
|
};
|
@@ -327,12 +369,9 @@ const mergeTargetProperties = targetProperties => {
|
|
327
369
|
* @param {string} context the context directory
|
328
370
|
* @returns {TargetProperties} target properties
|
329
371
|
*/
|
330
|
-
const getTargetsProperties = (targets, context) =>
|
331
|
-
|
332
|
-
targets.map(t => getTargetProperties(t, context))
|
333
|
-
);
|
334
|
-
};
|
372
|
+
const getTargetsProperties = (targets, context) =>
|
373
|
+
mergeTargetProperties(targets.map(t => getTargetProperties(t, context)));
|
335
374
|
|
336
|
-
exports.getDefaultTarget = getDefaultTarget;
|
337
|
-
exports.getTargetProperties = getTargetProperties;
|
338
|
-
exports.getTargetsProperties = getTargetsProperties;
|
375
|
+
module.exports.getDefaultTarget = getDefaultTarget;
|
376
|
+
module.exports.getTargetProperties = getTargetProperties;
|
377
|
+
module.exports.getTargetsProperties = getTargetsProperties;
|
@@ -9,11 +9,12 @@ const Dependency = require("../Dependency");
|
|
9
9
|
const makeSerializable = require("../util/makeSerializable");
|
10
10
|
|
11
11
|
/** @typedef {import("./ContainerEntryModule").ExposeOptions} ExposeOptions */
|
12
|
+
/** @typedef {import("./ContainerEntryModule").ExposesList} ExposesList */
|
12
13
|
|
13
14
|
class ContainerEntryDependency extends Dependency {
|
14
15
|
/**
|
15
16
|
* @param {string} name entry name
|
16
|
-
* @param {
|
17
|
+
* @param {ExposesList} exposes list of exposed modules
|
17
18
|
* @param {string} shareScope name of the share scope
|
18
19
|
*/
|
19
20
|
constructor(name, exposes, shareScope) {
|
@@ -8,8 +8,10 @@
|
|
8
8
|
const { OriginalSource, RawSource } = require("webpack-sources");
|
9
9
|
const AsyncDependenciesBlock = require("../AsyncDependenciesBlock");
|
10
10
|
const Module = require("../Module");
|
11
|
+
const { JAVASCRIPT_MODULE_TYPE_DYNAMIC } = require("../ModuleTypeConstants");
|
11
12
|
const RuntimeGlobals = require("../RuntimeGlobals");
|
12
13
|
const Template = require("../Template");
|
14
|
+
const StaticExportsDependency = require("../dependencies/StaticExportsDependency");
|
13
15
|
const makeSerializable = require("../util/makeSerializable");
|
14
16
|
const ContainerExposedDependency = require("./ContainerExposedDependency");
|
15
17
|
|
@@ -21,36 +23,41 @@ const ContainerExposedDependency = require("./ContainerExposedDependency");
|
|
21
23
|
/** @typedef {import("../Module").CodeGenerationResult} CodeGenerationResult */
|
22
24
|
/** @typedef {import("../Module").LibIdentOptions} LibIdentOptions */
|
23
25
|
/** @typedef {import("../Module").NeedBuildContext} NeedBuildContext */
|
26
|
+
/** @typedef {import("../Module").SourceTypes} SourceTypes */
|
24
27
|
/** @typedef {import("../RequestShortener")} RequestShortener */
|
25
28
|
/** @typedef {import("../ResolverFactory").ResolverWithOptions} ResolverWithOptions */
|
26
29
|
/** @typedef {import("../WebpackError")} WebpackError */
|
30
|
+
/** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
|
31
|
+
/** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
|
27
32
|
/** @typedef {import("../util/Hash")} Hash */
|
28
33
|
/** @typedef {import("../util/fs").InputFileSystem} InputFileSystem */
|
29
34
|
/** @typedef {import("./ContainerEntryDependency")} ContainerEntryDependency */
|
30
35
|
|
31
36
|
/**
|
32
|
-
* @typedef {
|
37
|
+
* @typedef {object} ExposeOptions
|
33
38
|
* @property {string[]} import requests to exposed modules (last one is exported)
|
34
39
|
* @property {string} name custom chunk name for the exposed module
|
35
40
|
*/
|
36
41
|
|
42
|
+
/** @typedef {[string, ExposeOptions][]} ExposesList */
|
43
|
+
|
37
44
|
const SOURCE_TYPES = new Set(["javascript"]);
|
38
45
|
|
39
46
|
class ContainerEntryModule extends Module {
|
40
47
|
/**
|
41
48
|
* @param {string} name container entry name
|
42
|
-
* @param {
|
49
|
+
* @param {ExposesList} exposes list of exposed modules
|
43
50
|
* @param {string} shareScope name of the share scope
|
44
51
|
*/
|
45
52
|
constructor(name, exposes, shareScope) {
|
46
|
-
super(
|
53
|
+
super(JAVASCRIPT_MODULE_TYPE_DYNAMIC, null);
|
47
54
|
this._name = name;
|
48
55
|
this._exposes = exposes;
|
49
56
|
this._shareScope = shareScope;
|
50
57
|
}
|
51
58
|
|
52
59
|
/**
|
53
|
-
* @returns {
|
60
|
+
* @returns {SourceTypes} types available (do not mutate)
|
54
61
|
*/
|
55
62
|
getSourceTypes() {
|
56
63
|
return SOURCE_TYPES;
|
@@ -70,7 +77,7 @@ class ContainerEntryModule extends Module {
|
|
70
77
|
* @returns {string} a user readable identifier of the module
|
71
78
|
*/
|
72
79
|
readableIdentifier(requestShortener) {
|
73
|
-
return
|
80
|
+
return "container entry";
|
74
81
|
}
|
75
82
|
|
76
83
|
/**
|
@@ -78,12 +85,14 @@ class ContainerEntryModule extends Module {
|
|
78
85
|
* @returns {string | null} an identifier for library inclusion
|
79
86
|
*/
|
80
87
|
libIdent(options) {
|
81
|
-
return `webpack/container/entry/${
|
88
|
+
return `${this.layer ? `(${this.layer})/` : ""}webpack/container/entry/${
|
89
|
+
this._name
|
90
|
+
}`;
|
82
91
|
}
|
83
92
|
|
84
93
|
/**
|
85
94
|
* @param {NeedBuildContext} context context info
|
86
|
-
* @param {function(WebpackError=, boolean=): void} callback callback function, returns true, if the module needs a rebuild
|
95
|
+
* @param {function((WebpackError | null)=, boolean=): void} callback callback function, returns true, if the module needs a rebuild
|
87
96
|
* @returns {void}
|
88
97
|
*/
|
89
98
|
needBuild(context, callback) {
|
@@ -104,6 +113,7 @@ class ContainerEntryModule extends Module {
|
|
104
113
|
strict: true,
|
105
114
|
topLevelDeclarations: new Set(["moduleMap", "get", "init"])
|
106
115
|
};
|
116
|
+
this.buildMeta.exportsType = "namespace";
|
107
117
|
|
108
118
|
this.clearDependenciesAndBlocks();
|
109
119
|
|
@@ -127,6 +137,7 @@ class ContainerEntryModule extends Module {
|
|
127
137
|
}
|
128
138
|
this.addBlock(block);
|
129
139
|
}
|
140
|
+
this.addDependency(new StaticExportsDependency(["get", "init"], false));
|
130
141
|
|
131
142
|
callback();
|
132
143
|
}
|
@@ -194,7 +205,7 @@ class ContainerEntryModule extends Module {
|
|
194
205
|
}
|
195
206
|
|
196
207
|
const source = Template.asString([
|
197
|
-
|
208
|
+
"var moduleMap = {",
|
198
209
|
Template.indent(getters.join(",\n")),
|
199
210
|
"};",
|
200
211
|
`var get = ${runtimeTemplate.basicFunction("module, getScope", [
|
@@ -217,10 +228,8 @@ class ContainerEntryModule extends Module {
|
|
217
228
|
])};`,
|
218
229
|
`var init = ${runtimeTemplate.basicFunction("shareScope, initScope", [
|
219
230
|
`if (!${RuntimeGlobals.shareScopeMap}) return;`,
|
220
|
-
`var oldScope = ${RuntimeGlobals.shareScopeMap}[${JSON.stringify(
|
221
|
-
this._shareScope
|
222
|
-
)}];`,
|
223
231
|
`var name = ${JSON.stringify(this._shareScope)}`,
|
232
|
+
`var oldScope = ${RuntimeGlobals.shareScopeMap}[name];`,
|
224
233
|
`if(oldScope && oldScope !== shareScope) throw new Error("Container initialization failed as it has already been initialized with a different share scope");`,
|
225
234
|
`${RuntimeGlobals.shareScopeMap}[name] = shareScope;`,
|
226
235
|
`return ${RuntimeGlobals.initializeSharing}(name, initScope);`
|
@@ -256,6 +265,9 @@ class ContainerEntryModule extends Module {
|
|
256
265
|
return 42;
|
257
266
|
}
|
258
267
|
|
268
|
+
/**
|
269
|
+
* @param {ObjectSerializerContext} context context
|
270
|
+
*/
|
259
271
|
serialize(context) {
|
260
272
|
const { write } = context;
|
261
273
|
write(this._name);
|
@@ -264,6 +276,10 @@ class ContainerEntryModule extends Module {
|
|
264
276
|
super.serialize(context);
|
265
277
|
}
|
266
278
|
|
279
|
+
/**
|
280
|
+
* @param {ObjectDeserializerContext} context context
|
281
|
+
* @returns {ContainerEntryModule} deserialized container entry module
|
282
|
+
*/
|
267
283
|
static deserialize(context) {
|
268
284
|
const { read } = context;
|
269
285
|
const obj = new ContainerEntryModule(read(), read(), read());
|
@@ -15,7 +15,7 @@ const ContainerEntryModule = require("./ContainerEntryModule");
|
|
15
15
|
module.exports = class ContainerEntryModuleFactory extends ModuleFactory {
|
16
16
|
/**
|
17
17
|
* @param {ModuleFactoryCreateData} data data object
|
18
|
-
* @param {function(Error=, ModuleFactoryResult=): void} callback callback
|
18
|
+
* @param {function((Error | null)=, ModuleFactoryResult=): void} callback callback
|
19
19
|
* @returns {void}
|
20
20
|
*/
|
21
21
|
create({ dependencies: [dependency] }, callback) {
|
@@ -8,6 +8,9 @@
|
|
8
8
|
const ModuleDependency = require("../dependencies/ModuleDependency");
|
9
9
|
const makeSerializable = require("../util/makeSerializable");
|
10
10
|
|
11
|
+
/** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
|
12
|
+
/** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
|
13
|
+
|
11
14
|
class ContainerExposedDependency extends ModuleDependency {
|
12
15
|
/**
|
13
16
|
* @param {string} exposedName public name
|
@@ -33,11 +36,17 @@ class ContainerExposedDependency extends ModuleDependency {
|
|
33
36
|
return `exposed dependency ${this.exposedName}=${this.request}`;
|
34
37
|
}
|
35
38
|
|
39
|
+
/**
|
40
|
+
* @param {ObjectSerializerContext} context context
|
41
|
+
*/
|
36
42
|
serialize(context) {
|
37
43
|
context.write(this.exposedName);
|
38
44
|
super.serialize(context);
|
39
45
|
}
|
40
46
|
|
47
|
+
/**
|
48
|
+
* @param {ObjectDeserializerContext} context context
|
49
|
+
*/
|
41
50
|
deserialize(context) {
|
42
51
|
this.exposedName = context.read();
|
43
52
|
super.deserialize(context);
|
@@ -13,6 +13,8 @@ const { parseOptions } = require("./options");
|
|
13
13
|
|
14
14
|
/** @typedef {import("../../declarations/plugins/container/ContainerPlugin").ContainerPluginOptions} ContainerPluginOptions */
|
15
15
|
/** @typedef {import("../Compiler")} Compiler */
|
16
|
+
/** @typedef {import("./ContainerEntryModule").ExposeOptions} ExposeOptions */
|
17
|
+
/** @typedef {import("./ContainerEntryModule").ExposesList} ExposesList */
|
16
18
|
|
17
19
|
const validate = createSchemaValidation(
|
18
20
|
require("../../schemas/plugins/container/ContainerPlugin.check.js"),
|
@@ -41,16 +43,18 @@ class ContainerPlugin {
|
|
41
43
|
},
|
42
44
|
runtime: options.runtime,
|
43
45
|
filename: options.filename || undefined,
|
44
|
-
exposes:
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
46
|
+
exposes: /** @type {ExposesList} */ (
|
47
|
+
parseOptions(
|
48
|
+
options.exposes,
|
49
|
+
item => ({
|
50
|
+
import: Array.isArray(item) ? item : [item],
|
51
|
+
name: undefined
|
52
|
+
}),
|
53
|
+
item => ({
|
54
|
+
import: Array.isArray(item.import) ? item.import : [item.import],
|
55
|
+
name: item.name || undefined
|
56
|
+
})
|
57
|
+
)
|
54
58
|
)
|
55
59
|
};
|
56
60
|
}
|
@@ -64,13 +68,15 @@ class ContainerPlugin {
|
|
64
68
|
const { name, exposes, shareScope, filename, library, runtime } =
|
65
69
|
this._options;
|
66
70
|
|
67
|
-
compiler.options.output.enabledLibraryTypes.
|
71
|
+
if (!compiler.options.output.enabledLibraryTypes.includes(library.type)) {
|
72
|
+
compiler.options.output.enabledLibraryTypes.push(library.type);
|
73
|
+
}
|
68
74
|
|
69
75
|
compiler.hooks.make.tapAsync(PLUGIN_NAME, (compilation, callback) => {
|
70
76
|
const dep = new ContainerEntryDependency(name, exposes, shareScope);
|
71
77
|
dep.loc = { name };
|
72
78
|
compilation.addEntry(
|
73
|
-
compilation.options.context,
|
79
|
+
/** @type {string} */ (compilation.options.context),
|
74
80
|
dep,
|
75
81
|
{
|
76
82
|
name,
|
@@ -8,7 +8,13 @@
|
|
8
8
|
const Dependency = require("../Dependency");
|
9
9
|
const makeSerializable = require("../util/makeSerializable");
|
10
10
|
|
11
|
+
/** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
|
12
|
+
/** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
|
13
|
+
|
11
14
|
class FallbackDependency extends Dependency {
|
15
|
+
/**
|
16
|
+
* @param {string[]} requests requests
|
17
|
+
*/
|
12
18
|
constructor(requests) {
|
13
19
|
super();
|
14
20
|
this.requests = requests;
|
@@ -29,12 +35,19 @@ class FallbackDependency extends Dependency {
|
|
29
35
|
return "esm";
|
30
36
|
}
|
31
37
|
|
38
|
+
/**
|
39
|
+
* @param {ObjectSerializerContext} context context
|
40
|
+
*/
|
32
41
|
serialize(context) {
|
33
42
|
const { write } = context;
|
34
43
|
write(this.requests);
|
35
44
|
super.serialize(context);
|
36
45
|
}
|
37
46
|
|
47
|
+
/**
|
48
|
+
* @param {ObjectDeserializerContext} context context
|
49
|
+
* @returns {FallbackDependency} deserialize fallback dependency
|
50
|
+
*/
|
38
51
|
static deserialize(context) {
|
39
52
|
const { read } = context;
|
40
53
|
const obj = new FallbackDependency(read());
|
@@ -9,6 +9,9 @@ const ModuleDependency = require("../dependencies/ModuleDependency");
|
|
9
9
|
const makeSerializable = require("../util/makeSerializable");
|
10
10
|
|
11
11
|
class FallbackItemDependency extends ModuleDependency {
|
12
|
+
/**
|
13
|
+
* @param {string} request request
|
14
|
+
*/
|
12
15
|
constructor(request) {
|
13
16
|
super(request);
|
14
17
|
}
|