webpack 5.76.1 → 5.88.2
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.
Potentially problematic release.
This version of webpack might be problematic. Click here for more details.
- package/README.md +10 -4
- package/bin/webpack.js +26 -2
- package/hot/dev-server.js +2 -1
- package/hot/lazy-compilation-node.js +10 -0
- package/hot/lazy-compilation-web.js +9 -0
- package/hot/log-apply-result.js +5 -0
- package/hot/log.js +22 -0
- package/hot/only-dev-server.js +2 -1
- package/hot/poll.js +3 -0
- package/hot/signal.js +4 -0
- package/lib/APIPlugin.js +174 -116
- package/lib/AsyncDependenciesBlock.js +13 -5
- package/lib/AutomaticPrefetchPlugin.js +1 -0
- package/lib/BannerPlugin.js +6 -1
- package/lib/CacheFacade.js +4 -0
- package/lib/CaseSensitiveModulesWarning.js +3 -1
- package/lib/Chunk.js +36 -18
- package/lib/ChunkGraph.js +4 -4
- package/lib/ChunkGroup.js +25 -10
- package/lib/CleanPlugin.js +30 -7
- package/lib/CodeGenerationResults.js +2 -2
- package/lib/CompatibilityPlugin.js +85 -46
- package/lib/Compilation.js +17 -8
- package/lib/Compiler.js +18 -14
- package/lib/ConcatenationScope.js +2 -2
- package/lib/ConditionalInitFragment.js +11 -1
- package/lib/ConstPlugin.js +95 -47
- package/lib/ContextModule.js +20 -6
- package/lib/ContextModuleFactory.js +2 -1
- package/lib/ContextReplacementPlugin.js +13 -0
- package/lib/CssModule.js +169 -0
- package/lib/DefinePlugin.js +152 -86
- package/lib/DelegatedModule.js +22 -4
- package/lib/DelegatedModuleFactoryPlugin.js +6 -0
- package/lib/DependenciesBlock.js +17 -1
- package/lib/Dependency.js +19 -5
- package/lib/DependencyTemplates.js +1 -1
- package/lib/DllEntryPlugin.js +16 -1
- package/lib/DllModule.js +17 -2
- package/lib/DllModuleFactory.js +1 -1
- package/lib/DllReferencePlugin.js +13 -1
- package/lib/Entrypoint.js +1 -1
- package/lib/ErrorHelpers.js +62 -22
- package/lib/EvalSourceMapDevToolPlugin.js +9 -2
- package/lib/ExportsInfo.js +25 -4
- package/lib/ExportsInfoApiPlugin.js +30 -14
- package/lib/ExternalModule.js +30 -9
- package/lib/FileSystemInfo.js +61 -25
- package/lib/FlagAllModulesAsUsedPlugin.js +27 -27
- package/lib/FlagDependencyExportsPlugin.js +336 -348
- package/lib/FlagDependencyUsagePlugin.js +9 -9
- package/lib/FlagEntryExportAsUsedPlugin.js +26 -23
- package/lib/Generator.js +7 -0
- package/lib/HookWebpackError.js +1 -1
- package/lib/HotModuleReplacementPlugin.js +60 -46
- package/lib/IgnoreErrorModuleFactory.js +1 -1
- package/lib/InitFragment.js +28 -5
- package/lib/JavascriptMetaInfoPlugin.js +27 -15
- package/lib/LibManifestPlugin.js +22 -5
- package/lib/LoaderOptionsPlugin.js +12 -2
- package/lib/MainTemplate.js +2 -2
- package/lib/Module.js +44 -12
- package/lib/ModuleBuildError.js +9 -0
- package/lib/ModuleDependencyError.js +4 -2
- package/lib/ModuleDependencyWarning.js +4 -2
- package/lib/ModuleError.js +9 -0
- package/lib/ModuleFactory.js +1 -1
- package/lib/ModuleFilenameHelpers.js +114 -4
- package/lib/ModuleGraph.js +33 -23
- package/lib/ModuleGraphConnection.js +19 -6
- package/lib/ModuleInfoHeaderPlugin.js +9 -2
- package/lib/ModuleNotFoundError.js +5 -2
- package/lib/ModuleParseError.js +9 -0
- package/lib/ModuleProfile.js +1 -0
- package/lib/ModuleRestoreError.js +2 -0
- package/lib/ModuleStoreError.js +2 -1
- package/lib/ModuleTypeConstants.js +169 -0
- package/lib/ModuleWarning.js +9 -0
- package/lib/MultiWatching.js +4 -0
- package/lib/NodeStuffPlugin.js +65 -35
- package/lib/NormalModule.js +12 -2
- package/lib/NormalModuleFactory.js +56 -8
- package/lib/NormalModuleReplacementPlugin.js +5 -3
- package/lib/NullFactory.js +1 -1
- package/lib/PrefetchPlugin.js +4 -0
- package/lib/ProgressPlugin.js +71 -15
- package/lib/ProvidePlugin.js +30 -14
- package/lib/RawModule.js +13 -2
- package/lib/RecordIdsPlugin.js +4 -4
- package/lib/RequireJsStuffPlugin.js +22 -15
- package/lib/RuntimeGlobals.js +5 -0
- package/lib/RuntimeModule.js +12 -11
- package/lib/RuntimePlugin.js +10 -3
- package/lib/RuntimeTemplate.js +29 -11
- package/lib/SelfModuleFactory.js +12 -0
- package/lib/SourceMapDevToolModuleOptionsPlugin.js +4 -0
- package/lib/SourceMapDevToolPlugin.js +47 -11
- package/lib/Template.js +5 -3
- package/lib/UseStrictPlugin.js +29 -11
- package/lib/WarnCaseSensitiveModulesPlugin.js +12 -0
- package/lib/WarnDeprecatedOptionPlugin.js +7 -0
- package/lib/WatchIgnorePlugin.js +4 -0
- package/lib/Watching.js +62 -25
- package/lib/WebpackError.js +14 -5
- package/lib/WebpackIsIncludedPlugin.js +22 -13
- package/lib/WebpackOptionsApply.js +41 -44
- package/lib/WebpackOptionsDefaulter.js +10 -3
- package/lib/asset/AssetGenerator.js +24 -9
- package/lib/asset/AssetModulesPlugin.js +28 -12
- package/lib/asset/AssetParser.js +15 -7
- package/lib/asset/AssetSourceParser.js +8 -3
- package/lib/asset/RawDataUrlModule.js +15 -4
- package/lib/async-modules/AwaitDependenciesInitFragment.js +4 -0
- package/lib/async-modules/InferAsyncModulesPlugin.js +1 -1
- package/lib/buildChunkGraph.js +37 -21
- package/lib/cache/IdleFileCachePlugin.js +2 -1
- package/lib/cache/MemoryWithGcCachePlugin.js +2 -0
- package/lib/cache/PackFileCacheStrategy.js +59 -22
- package/lib/cache/ResolverCachePlugin.js +3 -0
- package/lib/config/browserslistTargetHandler.js +10 -10
- package/lib/config/defaults.js +306 -105
- package/lib/config/normalization.js +110 -71
- package/lib/config/target.js +37 -10
- package/lib/container/ContainerEntryModule.js +11 -1
- package/lib/container/ContainerEntryModuleFactory.js +1 -1
- package/lib/container/ContainerExposedDependency.js +9 -0
- package/lib/container/ContainerPlugin.js +3 -1
- package/lib/container/FallbackDependency.js +13 -0
- package/lib/container/FallbackItemDependency.js +3 -0
- package/lib/container/FallbackModule.js +12 -2
- package/lib/container/FallbackModuleFactory.js +1 -1
- package/lib/container/RemoteModule.js +11 -1
- package/lib/container/RemoteRuntimeModule.js +3 -2
- package/lib/container/RemoteToExternalDependency.js +3 -0
- package/lib/css/CssExportsGenerator.js +9 -0
- package/lib/css/CssGenerator.js +5 -1
- package/lib/css/CssLoadingRuntimeModule.js +53 -22
- package/lib/css/CssModulesPlugin.js +253 -74
- package/lib/css/CssParser.js +697 -282
- package/lib/css/walkCssTokens.js +269 -138
- package/lib/debug/ProfilingPlugin.js +33 -12
- package/lib/dependencies/AMDDefineDependency.js +54 -10
- package/lib/dependencies/AMDDefineDependencyParserPlugin.js +13 -2
- package/lib/dependencies/AMDPlugin.js +33 -20
- package/lib/dependencies/AMDRequireArrayDependency.js +13 -0
- package/lib/dependencies/AMDRequireContextDependency.js +15 -0
- package/lib/dependencies/AMDRequireDependenciesBlock.js +6 -0
- package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +8 -2
- package/lib/dependencies/AMDRequireDependency.js +16 -1
- package/lib/dependencies/AMDRequireItemDependency.js +6 -0
- package/lib/dependencies/AMDRuntimeModules.js +2 -2
- package/lib/dependencies/CachedConstDependency.js +14 -0
- package/lib/dependencies/CommonJsDependencyHelpers.js +9 -0
- package/lib/dependencies/CommonJsExportRequireDependency.js +19 -0
- package/lib/dependencies/CommonJsExportsDependency.js +16 -0
- package/lib/dependencies/CommonJsExportsParserPlugin.js +77 -5
- package/lib/dependencies/CommonJsFullRequireDependency.js +10 -1
- package/lib/dependencies/CommonJsImportsParserPlugin.js +174 -63
- package/lib/dependencies/CommonJsPlugin.js +51 -26
- package/lib/dependencies/CommonJsRequireContextDependency.js +17 -0
- package/lib/dependencies/CommonJsRequireDependency.js +7 -0
- package/lib/dependencies/CommonJsSelfReferenceDependency.js +16 -0
- package/lib/dependencies/ConstDependency.js +11 -2
- package/lib/dependencies/ContextDependency.js +15 -2
- package/lib/dependencies/ContextDependencyHelpers.js +3 -3
- package/lib/dependencies/ContextElementDependency.js +8 -0
- package/lib/dependencies/CreateScriptUrlDependency.js +10 -1
- package/lib/dependencies/CriticalDependencyWarning.js +3 -0
- package/lib/dependencies/CssExportDependency.js +8 -0
- package/lib/dependencies/CssImportDependency.js +55 -3
- package/lib/dependencies/CssLocalIdentifierDependency.js +18 -1
- package/lib/dependencies/CssSelfLocalIdentifierDependency.js +10 -1
- package/lib/dependencies/CssUrlDependency.js +46 -16
- package/lib/dependencies/DelegatedSourceDependency.js +3 -0
- package/lib/dependencies/DllEntryDependency.js +14 -0
- package/lib/dependencies/DynamicExports.js +10 -6
- package/lib/dependencies/ExportsInfoDependency.js +25 -4
- package/lib/dependencies/HarmonyAcceptDependency.js +10 -1
- package/lib/dependencies/HarmonyAcceptImportDependency.js +3 -0
- package/lib/dependencies/HarmonyCompatibilityDependency.js +2 -1
- package/lib/dependencies/HarmonyDetectionParserPlugin.js +22 -2
- package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +32 -6
- package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +5 -0
- package/lib/dependencies/HarmonyExportExpressionDependency.js +20 -3
- package/lib/dependencies/HarmonyExportHeaderDependency.js +13 -0
- package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +22 -6
- package/lib/dependencies/HarmonyExportInitFragment.js +2 -1
- package/lib/dependencies/HarmonyExportSpecifierDependency.js +12 -0
- package/lib/dependencies/HarmonyExports.js +11 -5
- package/lib/dependencies/HarmonyImportDependency.js +10 -1
- package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +53 -22
- package/lib/dependencies/HarmonyImportSideEffectDependency.js +7 -2
- package/lib/dependencies/HarmonyImportSpecifierDependency.js +139 -16
- package/lib/dependencies/HarmonyModulesPlugin.js +23 -5
- package/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +15 -3
- package/lib/dependencies/ImportContextDependency.js +15 -0
- package/lib/dependencies/ImportDependency.js +15 -4
- package/lib/dependencies/ImportEagerDependency.js +7 -4
- package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +51 -13
- package/lib/dependencies/ImportMetaContextPlugin.js +18 -5
- package/lib/dependencies/ImportMetaHotAcceptDependency.js +6 -0
- package/lib/dependencies/ImportMetaHotDeclineDependency.js +6 -0
- package/lib/dependencies/ImportMetaPlugin.js +103 -51
- package/lib/dependencies/ImportParserPlugin.js +83 -25
- package/lib/dependencies/ImportPlugin.js +21 -7
- package/lib/dependencies/ImportWeakDependency.js +7 -4
- package/lib/dependencies/JsonExportsDependency.js +9 -1
- package/lib/dependencies/LocalModule.js +16 -0
- package/lib/dependencies/LocalModuleDependency.js +15 -0
- package/lib/dependencies/LocalModulesHelpers.js +18 -0
- package/lib/dependencies/ModuleDecoratorDependency.js +8 -0
- package/lib/dependencies/ModuleDependency.js +9 -1
- 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 +14 -2
- package/lib/dependencies/PureExpressionDependency.js +10 -1
- package/lib/dependencies/RequireContextDependency.js +6 -0
- package/lib/dependencies/RequireContextDependencyParserPlugin.js +13 -5
- package/lib/dependencies/RequireContextPlugin.js +19 -6
- package/lib/dependencies/RequireEnsureDependenciesBlock.js +7 -0
- package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +6 -1
- 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 +5 -0
- package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +29 -5
- package/lib/dependencies/RequireIncludePlugin.js +25 -5
- package/lib/dependencies/RequireResolveContextDependency.js +17 -0
- package/lib/dependencies/RequireResolveDependency.js +6 -0
- package/lib/dependencies/RequireResolveHeaderDependency.js +18 -0
- package/lib/dependencies/RuntimeRequirementsDependency.js +8 -0
- package/lib/dependencies/StaticExportsDependency.js +8 -0
- package/lib/dependencies/SystemPlugin.js +48 -21
- package/lib/dependencies/SystemRuntimeModule.js +1 -1
- package/lib/dependencies/URLDependency.js +13 -4
- package/lib/dependencies/URLPlugin.js +31 -18
- 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 +5 -0
- package/lib/dependencies/WorkerDependency.js +47 -3
- package/lib/dependencies/WorkerPlugin.js +105 -32
- package/lib/dependencies/getFunctionExpression.js +7 -0
- package/lib/esm/ExportWebpackRequireRuntimeModule.js +3 -2
- package/lib/esm/ModuleChunkFormatPlugin.js +21 -8
- package/lib/esm/ModuleChunkLoadingPlugin.js +9 -0
- package/lib/esm/ModuleChunkLoadingRuntimeModule.js +19 -12
- package/lib/hmr/HotModuleReplacementRuntimeModule.js +1 -1
- package/lib/hmr/LazyCompilationPlugin.js +14 -5
- package/lib/ids/ChunkModuleIdRangePlugin.js +11 -0
- package/lib/ids/DeterministicChunkIdsPlugin.js +11 -2
- package/lib/ids/DeterministicModuleIdsPlugin.js +11 -7
- package/lib/ids/HashedModuleIdsPlugin.js +9 -2
- package/lib/ids/IdHelpers.js +6 -0
- package/lib/ids/NamedChunkIdsPlugin.js +13 -1
- package/lib/ids/NamedModuleIdsPlugin.js +14 -3
- package/lib/ids/OccurrenceChunkIdsPlugin.js +6 -2
- package/lib/ids/OccurrenceModuleIdsPlugin.js +1 -1
- package/lib/ids/SyncModuleIdsPlugin.js +3 -2
- package/lib/index.js +8 -0
- package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +3 -3
- package/lib/javascript/BasicEvaluatedExpression.js +137 -11
- package/lib/javascript/ChunkHelpers.js +2 -2
- package/lib/javascript/CommonJsChunkFormatPlugin.js +7 -3
- package/lib/javascript/EnableChunkLoadingPlugin.js +4 -0
- package/lib/javascript/JavascriptModulesPlugin.js +217 -198
- package/lib/javascript/JavascriptParser.js +941 -256
- package/lib/javascript/JavascriptParserHelpers.js +37 -15
- package/lib/javascript/StartupHelpers.js +2 -2
- package/lib/json/JsonData.js +26 -1
- package/lib/json/JsonGenerator.js +21 -7
- package/lib/json/JsonModulesPlugin.js +14 -5
- package/lib/json/JsonParser.js +27 -13
- package/lib/library/AbstractLibraryPlugin.js +4 -0
- package/lib/library/AmdLibraryPlugin.js +22 -6
- package/lib/library/AssignLibraryPlugin.js +19 -5
- package/lib/library/EnableLibraryPlugin.js +4 -0
- package/lib/library/ExportPropertyLibraryPlugin.js +4 -1
- package/lib/library/ModuleLibraryPlugin.js +8 -4
- package/lib/library/SystemLibraryPlugin.js +2 -1
- package/lib/library/UmdLibraryPlugin.js +24 -2
- package/lib/logging/runtime.js +1 -1
- package/lib/logging/truncateArgs.js +4 -0
- package/lib/node/CommonJsChunkLoadingPlugin.js +17 -2
- package/lib/node/NodeTargetPlugin.js +3 -0
- package/lib/node/NodeTemplatePlugin.js +10 -2
- package/lib/node/NodeWatchFileSystem.js +1 -1
- package/lib/node/ReadFileChunkLoadingRuntimeModule.js +18 -9
- package/lib/node/ReadFileCompileAsyncWasmPlugin.js +12 -2
- package/lib/node/ReadFileCompileWasmPlugin.js +21 -3
- package/lib/node/RequireChunkLoadingRuntimeModule.js +15 -8
- package/lib/node/nodeConsole.js +2 -4
- package/lib/optimize/AggressiveMergingPlugin.js +8 -0
- package/lib/optimize/AggressiveSplittingPlugin.js +9 -2
- package/lib/optimize/ConcatenatedModule.js +8 -6
- package/lib/optimize/EnsureChunkConditionsPlugin.js +3 -0
- package/lib/optimize/FlagIncludedChunksPlugin.js +11 -5
- package/lib/optimize/InnerGraph.js +5 -5
- package/lib/optimize/InnerGraphPlugin.js +57 -48
- package/lib/optimize/LimitChunkCountPlugin.js +29 -4
- package/lib/optimize/MangleExportsPlugin.js +1 -1
- package/lib/optimize/MinMaxSizeWarning.js +5 -0
- package/lib/optimize/ModuleConcatenationPlugin.js +59 -2
- package/lib/optimize/RealContentHashPlugin.js +86 -30
- package/lib/optimize/RemoveParentModulesPlugin.js +6 -0
- package/lib/optimize/RuntimeChunkPlugin.js +9 -1
- package/lib/optimize/SideEffectsFlagPlugin.js +53 -44
- package/lib/optimize/SplitChunksPlugin.js +71 -31
- package/lib/performance/SizeLimitsPlugin.js +7 -4
- package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +4 -2
- package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +3 -1
- package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +6 -3
- package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +4 -2
- package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +4 -2
- package/lib/rules/BasicEffectRulePlugin.js +4 -0
- package/lib/rules/BasicMatcherRulePlugin.js +5 -0
- package/lib/rules/RuleSetCompiler.js +3 -3
- package/lib/rules/UseEffectRulePlugin.js +6 -4
- package/lib/runtime/AsyncModuleRuntimeModule.js +9 -6
- package/lib/runtime/AutoPublicPathRuntimeModule.js +16 -5
- package/lib/runtime/BaseUriRuntimeModule.js +8 -4
- 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 +5 -2
- package/lib/runtime/CreateScriptRuntimeModule.js +4 -2
- package/lib/runtime/CreateScriptUrlRuntimeModule.js +4 -2
- package/lib/runtime/DefinePropertyGettersRuntimeModule.js +5 -2
- package/lib/runtime/EnsureChunkRuntimeModule.js +18 -4
- package/lib/runtime/GetChunkFilenameRuntimeModule.js +45 -26
- package/lib/runtime/GetFullHashRuntimeModule.js +4 -3
- package/lib/runtime/GetMainFilenameRuntimeModule.js +5 -2
- package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +27 -6
- package/lib/runtime/GlobalRuntimeModule.js +1 -1
- package/lib/runtime/HasOwnPropertyRuntimeModule.js +5 -2
- package/lib/runtime/LoadScriptRuntimeModule.js +65 -50
- package/lib/runtime/MakeNamespaceObjectRuntimeModule.js +5 -2
- package/lib/runtime/NonceRuntimeModule.js +1 -1
- 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 +13 -4
- package/lib/runtime/StartupEntrypointRuntimeModule.js +11 -7
- package/lib/runtime/SystemContextRuntimeModule.js +1 -1
- package/lib/schemes/DataUriPlugin.js +16 -3
- package/lib/schemes/HttpUriPlugin.js +38 -0
- package/lib/serialization/ArraySerializer.js +22 -6
- package/lib/serialization/BinaryMiddleware.js +164 -1
- package/lib/serialization/DateObjectSerializer.js +15 -4
- package/lib/serialization/ErrorObjectSerializer.js +23 -8
- package/lib/serialization/FileMiddleware.js +17 -0
- package/lib/serialization/MapObjectSerializer.js +24 -8
- package/lib/serialization/NullPrototypeObjectSerializer.js +25 -8
- package/lib/serialization/ObjectMiddleware.js +33 -2
- package/lib/serialization/PlainObjectSerializer.js +23 -12
- package/lib/serialization/RegExpObjectSerializer.js +16 -5
- package/lib/serialization/SetObjectSerializer.js +21 -6
- package/lib/serialization/types.js +1 -1
- package/lib/sharing/ConsumeSharedFallbackDependency.js +3 -0
- package/lib/sharing/ConsumeSharedModule.js +13 -2
- package/lib/sharing/ConsumeSharedPlugin.js +4 -0
- package/lib/sharing/ConsumeSharedRuntimeModule.js +22 -7
- package/lib/sharing/ProvideSharedDependency.js +17 -0
- package/lib/sharing/ProvideSharedModule.js +11 -1
- package/lib/sharing/ProvideSharedModuleFactory.js +1 -1
- package/lib/sharing/ProvideSharedPlugin.js +22 -21
- package/lib/sharing/ShareRuntimeModule.js +19 -9
- package/lib/sharing/resolveMatchedConfigs.js +1 -1
- package/lib/sharing/utils.js +320 -7
- package/lib/stats/DefaultStatsFactoryPlugin.js +105 -29
- package/lib/stats/DefaultStatsPresetPlugin.js +9 -0
- package/lib/stats/DefaultStatsPrinterPlugin.js +43 -0
- package/lib/util/AsyncQueue.js +4 -2
- package/lib/util/LazySet.js +10 -2
- package/lib/util/MapHelpers.js +19 -5
- package/lib/util/ParallelismFactorCalculator.js +10 -0
- package/lib/util/Semaphore.js +1 -1
- package/lib/util/StackedCacheMap.js +7 -1
- package/lib/util/StringXor.js +51 -0
- package/lib/util/URLAbsoluteSpecifier.js +1 -1
- package/lib/util/binarySearchBounds.js +49 -0
- package/lib/util/compileBooleanMatcher.js +31 -0
- package/lib/util/createHash.js +35 -13
- package/lib/util/deprecation.js +18 -3
- package/lib/util/deterministicGrouping.js +50 -11
- package/lib/util/findGraphRoots.js +4 -2
- package/lib/util/hash/md4.js +2 -2
- package/lib/util/hash/xxhash64.js +1 -1
- package/lib/util/identifier.js +4 -0
- package/lib/util/internalSerializables.js +1 -0
- package/lib/util/makeSerializable.js +7 -0
- package/lib/util/memoize.js +3 -3
- package/lib/util/numberHash.js +75 -21
- package/lib/util/processAsyncTree.js +7 -1
- package/lib/util/propertyAccess.js +9 -54
- package/lib/util/propertyName.js +79 -0
- package/lib/util/registerExternalSerializer.js +1 -1
- package/lib/util/runtime.js +84 -21
- package/lib/util/semver.js +2 -1
- package/lib/util/serialization.js +10 -0
- package/lib/util/smartGrouping.js +1 -1
- package/lib/validateSchema.js +6 -2
- package/lib/wasm/EnableWasmLoadingPlugin.js +4 -0
- package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +15 -2
- package/lib/wasm-async/AsyncWebAssemblyGenerator.js +9 -1
- package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +14 -3
- package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +28 -8
- package/lib/wasm-async/AsyncWebAssemblyParser.js +11 -4
- package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +39 -8
- package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +17 -6
- package/lib/wasm-sync/WebAssemblyGenerator.js +19 -5
- package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +1 -1
- package/lib/wasm-sync/WebAssemblyModulesPlugin.js +53 -43
- package/lib/wasm-sync/WebAssemblyParser.js +15 -4
- package/lib/wasm-sync/WebAssemblyUtils.js +1 -1
- 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 +26 -9
- package/lib/webpack.js +12 -3
- package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +9 -0
- package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +20 -17
- package/module.d.ts +55 -37
- package/package.json +59 -56
- package/schemas/WebpackOptions.check.js +1 -1
- package/schemas/WebpackOptions.json +133 -6
- 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/container/ContainerPlugin.check.js +1 -1
- package/schemas/plugins/container/ContainerPlugin.json +8 -0
- package/schemas/plugins/container/ModuleFederationPlugin.check.js +1 -1
- package/schemas/plugins/container/ModuleFederationPlugin.json +8 -0
- package/schemas/plugins/css/CssGeneratorOptions.json +1 -1
- package/schemas/plugins/css/CssParserOptions.json +1 -1
- package/schemas/plugins/sharing/SharePlugin.check.js +1 -1
- package/types.d.ts +1629 -683
@@ -9,20 +9,26 @@ const UnsupportedFeatureWarning = require("../UnsupportedFeatureWarning");
|
|
9
9
|
const ConstDependency = require("../dependencies/ConstDependency");
|
10
10
|
const BasicEvaluatedExpression = require("./BasicEvaluatedExpression");
|
11
11
|
|
12
|
-
/** @typedef {import("estree").Expression}
|
12
|
+
/** @typedef {import("estree").Expression} Expression */
|
13
13
|
/** @typedef {import("estree").Node} Node */
|
14
|
+
/** @typedef {import("estree").SourceLocation} SourceLocation */
|
14
15
|
/** @typedef {import("./JavascriptParser")} JavascriptParser */
|
16
|
+
/** @typedef {import("./JavascriptParser").Range} Range */
|
15
17
|
|
16
18
|
/**
|
17
19
|
* @param {JavascriptParser} parser the parser
|
18
20
|
* @param {string} value the const value
|
19
21
|
* @param {string[]=} runtimeRequirements runtime requirements
|
20
|
-
* @returns {function(
|
22
|
+
* @returns {function(Expression): true} plugin function
|
21
23
|
*/
|
22
24
|
exports.toConstantDependency = (parser, value, runtimeRequirements) => {
|
23
25
|
return function constDependency(expr) {
|
24
|
-
const dep = new ConstDependency(
|
25
|
-
|
26
|
+
const dep = new ConstDependency(
|
27
|
+
value,
|
28
|
+
/** @type {Range} */ (expr.range),
|
29
|
+
runtimeRequirements
|
30
|
+
);
|
31
|
+
dep.loc = /** @type {SourceLocation} */ (expr.loc);
|
26
32
|
parser.state.module.addPresentationalDependency(dep);
|
27
33
|
return true;
|
28
34
|
};
|
@@ -30,33 +36,37 @@ exports.toConstantDependency = (parser, value, runtimeRequirements) => {
|
|
30
36
|
|
31
37
|
/**
|
32
38
|
* @param {string} value the string value
|
33
|
-
* @returns {function(
|
39
|
+
* @returns {function(Expression): BasicEvaluatedExpression} plugin function
|
34
40
|
*/
|
35
41
|
exports.evaluateToString = value => {
|
36
42
|
return function stringExpression(expr) {
|
37
|
-
return new BasicEvaluatedExpression()
|
43
|
+
return new BasicEvaluatedExpression()
|
44
|
+
.setString(value)
|
45
|
+
.setRange(/** @type {Range} */ (expr.range));
|
38
46
|
};
|
39
47
|
};
|
40
48
|
|
41
49
|
/**
|
42
50
|
* @param {number} value the number value
|
43
|
-
* @returns {function(
|
51
|
+
* @returns {function(Expression): BasicEvaluatedExpression} plugin function
|
44
52
|
*/
|
45
53
|
exports.evaluateToNumber = value => {
|
46
54
|
return function stringExpression(expr) {
|
47
|
-
return new BasicEvaluatedExpression()
|
55
|
+
return new BasicEvaluatedExpression()
|
56
|
+
.setNumber(value)
|
57
|
+
.setRange(/** @type {Range} */ (expr.range));
|
48
58
|
};
|
49
59
|
};
|
50
60
|
|
51
61
|
/**
|
52
62
|
* @param {boolean} value the boolean value
|
53
|
-
* @returns {function(
|
63
|
+
* @returns {function(Expression): BasicEvaluatedExpression} plugin function
|
54
64
|
*/
|
55
65
|
exports.evaluateToBoolean = value => {
|
56
66
|
return function booleanExpression(expr) {
|
57
67
|
return new BasicEvaluatedExpression()
|
58
68
|
.setBoolean(value)
|
59
|
-
.setRange(expr.range);
|
69
|
+
.setRange(/** @type {Range} */ (expr.range));
|
60
70
|
};
|
61
71
|
};
|
62
72
|
|
@@ -65,14 +75,14 @@ exports.evaluateToBoolean = value => {
|
|
65
75
|
* @param {string} rootInfo rootInfo
|
66
76
|
* @param {function(): string[]} getMembers getMembers
|
67
77
|
* @param {boolean|null=} truthy is truthy, null if nullish
|
68
|
-
* @returns {function(
|
78
|
+
* @returns {function(Expression): BasicEvaluatedExpression} callback
|
69
79
|
*/
|
70
80
|
exports.evaluateToIdentifier = (identifier, rootInfo, getMembers, truthy) => {
|
71
81
|
return function identifierExpression(expr) {
|
72
82
|
let evaluatedExpression = new BasicEvaluatedExpression()
|
73
83
|
.setIdentifier(identifier, rootInfo, getMembers)
|
74
84
|
.setSideEffects(false)
|
75
|
-
.setRange(expr.range);
|
85
|
+
.setRange(/** @type {Range} */ (expr.range));
|
76
86
|
switch (truthy) {
|
77
87
|
case true:
|
78
88
|
evaluatedExpression.setTruthy();
|
@@ -89,14 +99,26 @@ exports.evaluateToIdentifier = (identifier, rootInfo, getMembers, truthy) => {
|
|
89
99
|
};
|
90
100
|
};
|
91
101
|
|
102
|
+
/**
|
103
|
+
* @param {JavascriptParser} parser the parser
|
104
|
+
* @param {string} message the message
|
105
|
+
* @returns {function(Expression): boolean | undefined} callback to handle unsupported expression
|
106
|
+
*/
|
92
107
|
exports.expressionIsUnsupported = (parser, message) => {
|
93
108
|
return function unsupportedExpression(expr) {
|
94
|
-
const dep = new ConstDependency(
|
95
|
-
|
109
|
+
const dep = new ConstDependency(
|
110
|
+
"(void 0)",
|
111
|
+
/** @type {Range} */ (expr.range),
|
112
|
+
null
|
113
|
+
);
|
114
|
+
dep.loc = /** @type {SourceLocation} */ (expr.loc);
|
96
115
|
parser.state.module.addPresentationalDependency(dep);
|
97
116
|
if (!parser.state.module) return;
|
98
117
|
parser.state.module.addWarning(
|
99
|
-
new UnsupportedFeatureWarning(
|
118
|
+
new UnsupportedFeatureWarning(
|
119
|
+
message,
|
120
|
+
/** @type {SourceLocation} */ (expr.loc)
|
121
|
+
)
|
100
122
|
);
|
101
123
|
return true;
|
102
124
|
};
|
@@ -19,7 +19,7 @@ const { getAllChunks } = require("./ChunkHelpers");
|
|
19
19
|
/** @typedef {import("../RuntimeTemplate")} RuntimeTemplate */
|
20
20
|
/** @typedef {(string|number)[]} EntryItem */
|
21
21
|
|
22
|
-
const EXPORT_PREFIX =
|
22
|
+
const EXPORT_PREFIX = `var ${RuntimeGlobals.exports} = `;
|
23
23
|
|
24
24
|
/**
|
25
25
|
* @param {ChunkGraph} chunkGraph chunkGraph
|
@@ -39,7 +39,7 @@ exports.generateEntryStartup = (
|
|
39
39
|
/** @type {string[]} */
|
40
40
|
const runtime = [
|
41
41
|
`var __webpack_exec__ = ${runtimeTemplate.returningFunction(
|
42
|
-
|
42
|
+
`${RuntimeGlobals.require}(${RuntimeGlobals.entryModuleId} = moduleId)`,
|
43
43
|
"moduleId"
|
44
44
|
)}`
|
45
45
|
];
|
package/lib/json/JsonData.js
CHANGED
@@ -7,9 +7,19 @@
|
|
7
7
|
|
8
8
|
const { register } = require("../util/serialization");
|
9
9
|
|
10
|
+
/** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
|
11
|
+
/** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
|
12
|
+
/** @typedef {import("../util/Hash")} Hash */
|
13
|
+
/** @typedef {import("./JsonModulesPlugin").RawJsonData} RawJsonData */
|
14
|
+
|
10
15
|
class JsonData {
|
16
|
+
/**
|
17
|
+
* @param {Buffer | RawJsonData} data JSON data
|
18
|
+
*/
|
11
19
|
constructor(data) {
|
20
|
+
/** @type {Buffer | undefined} */
|
12
21
|
this._buffer = undefined;
|
22
|
+
/** @type {RawJsonData | undefined} */
|
13
23
|
this._data = undefined;
|
14
24
|
if (Buffer.isBuffer(data)) {
|
15
25
|
this._buffer = data;
|
@@ -18,6 +28,9 @@ class JsonData {
|
|
18
28
|
}
|
19
29
|
}
|
20
30
|
|
31
|
+
/**
|
32
|
+
* @returns {RawJsonData|undefined} Raw JSON data
|
33
|
+
*/
|
21
34
|
get() {
|
22
35
|
if (this._data === undefined && this._buffer !== undefined) {
|
23
36
|
this._data = JSON.parse(this._buffer.toString());
|
@@ -25,22 +38,34 @@ class JsonData {
|
|
25
38
|
return this._data;
|
26
39
|
}
|
27
40
|
|
41
|
+
/**
|
42
|
+
* @param {Hash} hash hash to be updated
|
43
|
+
* @returns {void} the updated hash
|
44
|
+
*/
|
28
45
|
updateHash(hash) {
|
29
46
|
if (this._buffer === undefined && this._data !== undefined) {
|
30
47
|
this._buffer = Buffer.from(JSON.stringify(this._data));
|
31
48
|
}
|
32
49
|
|
33
|
-
if (this._buffer)
|
50
|
+
if (this._buffer) hash.update(this._buffer);
|
34
51
|
}
|
35
52
|
}
|
36
53
|
|
37
54
|
register(JsonData, "webpack/lib/json/JsonData", null, {
|
55
|
+
/**
|
56
|
+
* @param {JsonData} obj JSONData object
|
57
|
+
* @param {ObjectSerializerContext} context context
|
58
|
+
*/
|
38
59
|
serialize(obj, { write }) {
|
39
60
|
if (obj._buffer === undefined && obj._data !== undefined) {
|
40
61
|
obj._buffer = Buffer.from(JSON.stringify(obj._data));
|
41
62
|
}
|
42
63
|
write(obj._buffer);
|
43
64
|
},
|
65
|
+
/**
|
66
|
+
* @param {ObjectDeserializerContext} context context
|
67
|
+
* @returns {JsonData} deserialized JSON data
|
68
|
+
*/
|
44
69
|
deserialize({ read }) {
|
45
70
|
return new JsonData(read());
|
46
71
|
}
|
@@ -17,7 +17,13 @@ const RuntimeGlobals = require("../RuntimeGlobals");
|
|
17
17
|
/** @typedef {import("../Module").ConcatenationBailoutReasonContext} ConcatenationBailoutReasonContext */
|
18
18
|
/** @typedef {import("../NormalModule")} NormalModule */
|
19
19
|
/** @typedef {import("../util/runtime").RuntimeSpec} RuntimeSpec */
|
20
|
+
/** @typedef {import("./JsonData")} JsonData */
|
21
|
+
/** @typedef {import("./JsonModulesPlugin").RawJsonData} RawJsonData */
|
20
22
|
|
23
|
+
/**
|
24
|
+
* @param {RawJsonData} data Raw JSON data
|
25
|
+
* @returns {undefined|string} stringified data
|
26
|
+
*/
|
21
27
|
const stringifySafe = data => {
|
22
28
|
const stringified = JSON.stringify(data);
|
23
29
|
if (!stringified) {
|
@@ -30,21 +36,23 @@ const stringifySafe = data => {
|
|
30
36
|
};
|
31
37
|
|
32
38
|
/**
|
33
|
-
* @param {
|
39
|
+
* @param {RawJsonData} data Raw JSON data (always an object or array)
|
34
40
|
* @param {ExportsInfo} exportsInfo exports info
|
35
41
|
* @param {RuntimeSpec} runtime the runtime
|
36
|
-
* @returns {
|
42
|
+
* @returns {RawJsonData} reduced data
|
37
43
|
*/
|
38
44
|
const createObjectForExportsInfo = (data, exportsInfo, runtime) => {
|
39
45
|
if (exportsInfo.otherExportsInfo.getUsed(runtime) !== UsageState.Unused)
|
40
46
|
return data;
|
41
47
|
const isArray = Array.isArray(data);
|
48
|
+
/** @type {RawJsonData} */
|
42
49
|
const reducedData = isArray ? [] : {};
|
43
50
|
for (const key of Object.keys(data)) {
|
44
51
|
const exportInfo = exportsInfo.getReadOnlyExportInfo(key);
|
45
52
|
const used = exportInfo.getUsed(runtime);
|
46
53
|
if (used === UsageState.Unused) continue;
|
47
54
|
|
55
|
+
/** @type {RawJsonData} */
|
48
56
|
let value;
|
49
57
|
if (used === UsageState.OnlyPropertiesUsed && exportInfo.exportsInfo) {
|
50
58
|
value = createObjectForExportsInfo(
|
@@ -55,8 +63,9 @@ const createObjectForExportsInfo = (data, exportsInfo, runtime) => {
|
|
55
63
|
} else {
|
56
64
|
value = data[key];
|
57
65
|
}
|
58
|
-
|
59
|
-
|
66
|
+
|
67
|
+
const name = /** @type {string} */ (exportInfo.getUsedName(key, runtime));
|
68
|
+
/** @type {Record<string, RawJsonData>} */ (reducedData)[name] = value;
|
60
69
|
}
|
61
70
|
if (isArray) {
|
62
71
|
let arrayLengthWhenUsed =
|
@@ -86,6 +95,7 @@ const createObjectForExportsInfo = (data, exportsInfo, runtime) => {
|
|
86
95
|
: { length: arrayLengthWhenUsed },
|
87
96
|
reducedData
|
88
97
|
);
|
98
|
+
/** @type {number} */
|
89
99
|
const generatedLength =
|
90
100
|
arrayLengthWhenUsed !== undefined
|
91
101
|
? Math.max(arrayLengthWhenUsed, reducedData.length)
|
@@ -116,12 +126,13 @@ class JsonGenerator extends Generator {
|
|
116
126
|
* @returns {number} estimate size of the module
|
117
127
|
*/
|
118
128
|
getSize(module, type) {
|
119
|
-
|
129
|
+
/** @type {RawJsonData | undefined} */
|
130
|
+
const data =
|
120
131
|
module.buildInfo &&
|
121
132
|
module.buildInfo.jsonData &&
|
122
133
|
module.buildInfo.jsonData.get();
|
123
134
|
if (!data) return 0;
|
124
|
-
return stringifySafe(data).length + 10;
|
135
|
+
return /** @type {string} */ (stringifySafe(data)).length + 10;
|
125
136
|
}
|
126
137
|
|
127
138
|
/**
|
@@ -148,6 +159,7 @@ class JsonGenerator extends Generator {
|
|
148
159
|
concatenationScope
|
149
160
|
}
|
150
161
|
) {
|
162
|
+
/** @type {RawJsonData | undefined} */
|
151
163
|
const data =
|
152
164
|
module.buildInfo &&
|
153
165
|
module.buildInfo.jsonData &&
|
@@ -160,6 +172,7 @@ class JsonGenerator extends Generator {
|
|
160
172
|
);
|
161
173
|
}
|
162
174
|
const exportsInfo = moduleGraph.getExportsInfo(module);
|
175
|
+
/** @type {RawJsonData} */
|
163
176
|
let finalJson =
|
164
177
|
typeof data === "object" &&
|
165
178
|
data &&
|
@@ -167,11 +180,12 @@ class JsonGenerator extends Generator {
|
|
167
180
|
? createObjectForExportsInfo(data, exportsInfo, runtime)
|
168
181
|
: data;
|
169
182
|
// Use JSON because JSON.parse() is much faster than JavaScript evaluation
|
170
|
-
const jsonStr = stringifySafe(finalJson);
|
183
|
+
const jsonStr = /** @type {string} */ (stringifySafe(finalJson));
|
171
184
|
const jsonExpr =
|
172
185
|
jsonStr.length > 20 && typeof finalJson === "object"
|
173
186
|
? `JSON.parse('${jsonStr.replace(/[\\']/g, "\\$&")}')`
|
174
187
|
: jsonStr;
|
188
|
+
/** @type {string} */
|
175
189
|
let content;
|
176
190
|
if (concatenationScope) {
|
177
191
|
content = `${runtimeTemplate.supportsConst() ? "const" : "var"} ${
|
@@ -5,11 +5,13 @@
|
|
5
5
|
|
6
6
|
"use strict";
|
7
7
|
|
8
|
+
const { JSON_MODULE_TYPE } = require("../ModuleTypeConstants");
|
8
9
|
const createSchemaValidation = require("../util/create-schema-validation");
|
9
10
|
const JsonGenerator = require("./JsonGenerator");
|
10
11
|
const JsonParser = require("./JsonParser");
|
11
12
|
|
12
13
|
/** @typedef {import("../Compiler")} Compiler */
|
14
|
+
/** @typedef {Record<string, any>} RawJsonData */
|
13
15
|
|
14
16
|
const validate = createSchemaValidation(
|
15
17
|
require("../../schemas/plugins/JsonModulesPluginParser.check.js"),
|
@@ -20,26 +22,33 @@ const validate = createSchemaValidation(
|
|
20
22
|
}
|
21
23
|
);
|
22
24
|
|
25
|
+
const PLUGIN_NAME = "JsonModulesPlugin";
|
26
|
+
|
27
|
+
/**
|
28
|
+
* The JsonModulesPlugin is the entrypoint plugin for the json modules feature.
|
29
|
+
* It adds the json module type to the compiler and registers the json parser and generator.
|
30
|
+
*/
|
23
31
|
class JsonModulesPlugin {
|
24
32
|
/**
|
25
33
|
* Apply the plugin
|
26
34
|
* @param {Compiler} compiler the compiler instance
|
27
35
|
* @returns {void}
|
36
|
+
*
|
28
37
|
*/
|
29
38
|
apply(compiler) {
|
30
39
|
compiler.hooks.compilation.tap(
|
31
|
-
|
40
|
+
PLUGIN_NAME,
|
32
41
|
(compilation, { normalModuleFactory }) => {
|
33
42
|
normalModuleFactory.hooks.createParser
|
34
|
-
.for(
|
35
|
-
.tap(
|
43
|
+
.for(JSON_MODULE_TYPE)
|
44
|
+
.tap(PLUGIN_NAME, parserOptions => {
|
36
45
|
validate(parserOptions);
|
37
46
|
|
38
47
|
return new JsonParser(parserOptions);
|
39
48
|
});
|
40
49
|
normalModuleFactory.hooks.createGenerator
|
41
|
-
.for(
|
42
|
-
.tap(
|
50
|
+
.for(JSON_MODULE_TYPE)
|
51
|
+
.tap(PLUGIN_NAME, () => {
|
43
52
|
return new JsonGenerator();
|
44
53
|
});
|
45
54
|
}
|
package/lib/json/JsonParser.js
CHANGED
@@ -5,14 +5,19 @@
|
|
5
5
|
|
6
6
|
"use strict";
|
7
7
|
|
8
|
-
const parseJson = require("json-parse-even-better-errors");
|
9
8
|
const Parser = require("../Parser");
|
10
9
|
const JsonExportsDependency = require("../dependencies/JsonExportsDependency");
|
10
|
+
const memoize = require("../util/memoize");
|
11
11
|
const JsonData = require("./JsonData");
|
12
12
|
|
13
13
|
/** @typedef {import("../../declarations/plugins/JsonModulesPluginParser").JsonModulesPluginParserOptions} JsonModulesPluginParserOptions */
|
14
|
+
/** @typedef {import("../Module").BuildInfo} BuildInfo */
|
15
|
+
/** @typedef {import("../Module").BuildMeta} BuildMeta */
|
14
16
|
/** @typedef {import("../Parser").ParserState} ParserState */
|
15
17
|
/** @typedef {import("../Parser").PreparsedAst} PreparsedAst */
|
18
|
+
/** @typedef {import("./JsonModulesPlugin").RawJsonData} RawJsonData */
|
19
|
+
|
20
|
+
const getParseJson = memoize(() => require("json-parse-even-better-errors"));
|
16
21
|
|
17
22
|
class JsonParser extends Parser {
|
18
23
|
/**
|
@@ -33,19 +38,28 @@ class JsonParser extends Parser {
|
|
33
38
|
source = source.toString("utf-8");
|
34
39
|
}
|
35
40
|
|
36
|
-
/** @type {JsonModulesPluginParserOptions["parse"]} */
|
41
|
+
/** @type {NonNullable<JsonModulesPluginParserOptions["parse"]>} */
|
37
42
|
const parseFn =
|
38
|
-
typeof this.options.parse === "function"
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
43
|
+
typeof this.options.parse === "function"
|
44
|
+
? this.options.parse
|
45
|
+
: getParseJson();
|
46
|
+
/** @type {Buffer | RawJsonData | undefined} */
|
47
|
+
let data;
|
48
|
+
try {
|
49
|
+
data =
|
50
|
+
typeof source === "object"
|
51
|
+
? source
|
52
|
+
: parseFn(source[0] === "\ufeff" ? source.slice(1) : source);
|
53
|
+
} catch (e) {
|
54
|
+
throw new Error(`Cannot parse JSON: ${/** @type {Error} */ (e).message}`);
|
55
|
+
}
|
56
|
+
const jsonData = new JsonData(/** @type {Buffer | RawJsonData} */ (data));
|
57
|
+
const buildInfo = /** @type {BuildInfo} */ (state.module.buildInfo);
|
58
|
+
buildInfo.jsonData = jsonData;
|
59
|
+
buildInfo.strict = true;
|
60
|
+
const buildMeta = /** @type {BuildMeta} */ (state.module.buildMeta);
|
61
|
+
buildMeta.exportsType = "default";
|
62
|
+
buildMeta.defaultObject =
|
49
63
|
typeof data === "object" ? "redirect-warn" : false;
|
50
64
|
state.module.addDependency(new JsonExportsDependency(jsonData));
|
51
65
|
return state;
|
@@ -87,6 +87,10 @@ class AbstractLibraryPlugin {
|
|
87
87
|
}
|
88
88
|
);
|
89
89
|
|
90
|
+
/**
|
91
|
+
* @param {Chunk} chunk chunk
|
92
|
+
* @returns {TODO} options for the chunk
|
93
|
+
*/
|
90
94
|
const getOptionsForChunk = chunk => {
|
91
95
|
if (compilation.chunkGraph.getNumberOfEntryModules(chunk) === 0)
|
92
96
|
return false;
|
@@ -29,6 +29,7 @@ const AbstractLibraryPlugin = require("./AbstractLibraryPlugin");
|
|
29
29
|
/**
|
30
30
|
* @typedef {Object} AmdLibraryPluginParsed
|
31
31
|
* @property {string} name
|
32
|
+
* @property {string} amdContainer
|
32
33
|
*/
|
33
34
|
|
34
35
|
/**
|
@@ -52,7 +53,7 @@ class AmdLibraryPlugin extends AbstractLibraryPlugin {
|
|
52
53
|
* @returns {T | false} preprocess as needed by overriding
|
53
54
|
*/
|
54
55
|
parseOptions(library) {
|
55
|
-
const { name } = library;
|
56
|
+
const { name, amdContainer } = library;
|
56
57
|
if (this.requireAsWrapper) {
|
57
58
|
if (name) {
|
58
59
|
throw new Error(
|
@@ -67,7 +68,8 @@ class AmdLibraryPlugin extends AbstractLibraryPlugin {
|
|
67
68
|
}
|
68
69
|
}
|
69
70
|
return {
|
70
|
-
name: /** @type {string
|
71
|
+
name: /** @type {string} */ (name),
|
72
|
+
amdContainer: /** @type {string} */ (amdContainer)
|
71
73
|
};
|
72
74
|
}
|
73
75
|
|
@@ -111,9 +113,14 @@ class AmdLibraryPlugin extends AbstractLibraryPlugin {
|
|
111
113
|
(iife || !chunk.hasRuntime() ? " return " : "\n");
|
112
114
|
const fnEnd = iife ? ";\n}" : "\n}";
|
113
115
|
|
116
|
+
let amdContainerPrefix = "";
|
117
|
+
if (options.amdContainer) {
|
118
|
+
amdContainerPrefix = `${options.amdContainer}.`;
|
119
|
+
}
|
120
|
+
|
114
121
|
if (this.requireAsWrapper) {
|
115
122
|
return new ConcatSource(
|
116
|
-
|
123
|
+
`${amdContainerPrefix}require(${externalsDepsArray}, ${fnStart}`,
|
117
124
|
source,
|
118
125
|
`${fnEnd});`
|
119
126
|
);
|
@@ -123,18 +130,24 @@ class AmdLibraryPlugin extends AbstractLibraryPlugin {
|
|
123
130
|
});
|
124
131
|
|
125
132
|
return new ConcatSource(
|
126
|
-
|
133
|
+
`${amdContainerPrefix}define(${JSON.stringify(
|
134
|
+
name
|
135
|
+
)}, ${externalsDepsArray}, ${fnStart}`,
|
127
136
|
source,
|
128
137
|
`${fnEnd});`
|
129
138
|
);
|
130
139
|
} else if (externalsArguments) {
|
131
140
|
return new ConcatSource(
|
132
|
-
|
141
|
+
`${amdContainerPrefix}define(${externalsDepsArray}, ${fnStart}`,
|
133
142
|
source,
|
134
143
|
`${fnEnd});`
|
135
144
|
);
|
136
145
|
} else {
|
137
|
-
return new ConcatSource(
|
146
|
+
return new ConcatSource(
|
147
|
+
`${amdContainerPrefix}define(${fnStart}`,
|
148
|
+
source,
|
149
|
+
`${fnEnd});`
|
150
|
+
);
|
138
151
|
}
|
139
152
|
}
|
140
153
|
|
@@ -155,6 +168,9 @@ class AmdLibraryPlugin extends AbstractLibraryPlugin {
|
|
155
168
|
chunk
|
156
169
|
});
|
157
170
|
hash.update(name);
|
171
|
+
} else if (options.amdContainer) {
|
172
|
+
hash.update("amdContainer");
|
173
|
+
hash.update(options.amdContainer);
|
158
174
|
}
|
159
175
|
}
|
160
176
|
}
|
@@ -7,6 +7,7 @@
|
|
7
7
|
|
8
8
|
const { ConcatSource } = require("webpack-sources");
|
9
9
|
const { UsageState } = require("../ExportsInfo");
|
10
|
+
const RuntimeGlobals = require("../RuntimeGlobals");
|
10
11
|
const Template = require("../Template");
|
11
12
|
const propertyAccess = require("../util/propertyAccess");
|
12
13
|
const { getEntryRuntime } = require("../util/runtime");
|
@@ -16,6 +17,7 @@ const AbstractLibraryPlugin = require("./AbstractLibraryPlugin");
|
|
16
17
|
/** @typedef {import("../../declarations/WebpackOptions").LibraryOptions} LibraryOptions */
|
17
18
|
/** @typedef {import("../../declarations/WebpackOptions").LibraryType} LibraryType */
|
18
19
|
/** @typedef {import("../Chunk")} Chunk */
|
20
|
+
/** @typedef {import("../Compilation")} Compilation */
|
19
21
|
/** @typedef {import("../Compilation").ChunkHashContext} ChunkHashContext */
|
20
22
|
/** @typedef {import("../Compiler")} Compiler */
|
21
23
|
/** @typedef {import("../Module")} Module */
|
@@ -58,6 +60,7 @@ const accessWithInit = (accessor, existingLength, initLast = false) => {
|
|
58
60
|
let i = 1;
|
59
61
|
|
60
62
|
// all properties printed so far (excluding base)
|
63
|
+
/** @type {string[] | undefined} */
|
61
64
|
let propsSoFar;
|
62
65
|
|
63
66
|
// if there is existingLength, print all properties until this position as property access
|
@@ -141,7 +144,7 @@ class AssignLibraryPlugin extends AbstractLibraryPlugin {
|
|
141
144
|
}
|
142
145
|
}
|
143
146
|
return {
|
144
|
-
name: /** @type {string|string[]
|
147
|
+
name: /** @type {string | string[]} */ (name),
|
145
148
|
export: library.export
|
146
149
|
};
|
147
150
|
}
|
@@ -172,12 +175,22 @@ class AssignLibraryPlugin extends AbstractLibraryPlugin {
|
|
172
175
|
moduleGraph.addExtraReason(module, "used as library export");
|
173
176
|
}
|
174
177
|
|
178
|
+
/**
|
179
|
+
* @param {Compilation} compilation the compilation
|
180
|
+
* @returns {string[]} the prefix
|
181
|
+
*/
|
175
182
|
_getPrefix(compilation) {
|
176
183
|
return this.prefix === "global"
|
177
184
|
? [compilation.runtimeTemplate.globalObject]
|
178
185
|
: this.prefix;
|
179
186
|
}
|
180
187
|
|
188
|
+
/**
|
189
|
+
* @param {AssignLibraryPluginParsed} options the library options
|
190
|
+
* @param {Chunk} chunk the chunk
|
191
|
+
* @param {Compilation} compilation the compilation
|
192
|
+
* @returns {Array<string>} the resolved full name
|
193
|
+
*/
|
181
194
|
_getResolvedFullName(options, chunk, compilation) {
|
182
195
|
const prefix = this._getPrefix(compilation);
|
183
196
|
const fullName = options.name ? prefix.concat(options.name) : prefix;
|
@@ -296,7 +309,7 @@ class AssignLibraryPlugin extends AbstractLibraryPlugin {
|
|
296
309
|
if (!exportInfo.provided) continue;
|
297
310
|
const nameAccess = propertyAccess([exportInfo.name]);
|
298
311
|
result.add(
|
299
|
-
`${exportTarget}${nameAccess} =
|
312
|
+
`${exportTarget}${nameAccess} = ${RuntimeGlobals.exports}${exportAccess}${nameAccess};\n`
|
300
313
|
);
|
301
314
|
}
|
302
315
|
result.add(
|
@@ -310,10 +323,11 @@ class AssignLibraryPlugin extends AbstractLibraryPlugin {
|
|
310
323
|
true
|
311
324
|
)};\n`
|
312
325
|
);
|
313
|
-
|
326
|
+
/** @type {String} */
|
327
|
+
let exports = RuntimeGlobals.exports;
|
314
328
|
if (exportAccess) {
|
315
329
|
result.add(
|
316
|
-
`var __webpack_exports_export__ =
|
330
|
+
`var __webpack_exports_export__ = ${RuntimeGlobals.exports}${exportAccess};\n`
|
317
331
|
);
|
318
332
|
exports = "__webpack_exports_export__";
|
319
333
|
}
|
@@ -329,7 +343,7 @@ class AssignLibraryPlugin extends AbstractLibraryPlugin {
|
|
329
343
|
fullNameResolved,
|
330
344
|
this._getPrefix(compilation).length,
|
331
345
|
false
|
332
|
-
)} =
|
346
|
+
)} = ${RuntimeGlobals.exports}${exportAccess};\n`
|
333
347
|
);
|
334
348
|
}
|
335
349
|
return result;
|
@@ -12,6 +12,10 @@
|
|
12
12
|
/** @type {WeakMap<Compiler, Set<LibraryType>>} */
|
13
13
|
const enabledTypes = new WeakMap();
|
14
14
|
|
15
|
+
/**
|
16
|
+
* @param {Compiler} compiler the compiler instance
|
17
|
+
* @returns {Set<LibraryType>} enabled types
|
18
|
+
*/
|
15
19
|
const getEnabledTypes = compiler => {
|
16
20
|
let set = enabledTypes.get(compiler);
|
17
21
|
if (set === undefined) {
|
@@ -7,6 +7,7 @@
|
|
7
7
|
|
8
8
|
const { ConcatSource } = require("webpack-sources");
|
9
9
|
const { UsageState } = require("../ExportsInfo");
|
10
|
+
const RuntimeGlobals = require("../RuntimeGlobals");
|
10
11
|
const propertyAccess = require("../util/propertyAccess");
|
11
12
|
const { getEntryRuntime } = require("../util/runtime");
|
12
13
|
const AbstractLibraryPlugin = require("./AbstractLibraryPlugin");
|
@@ -103,7 +104,9 @@ class ExportPropertyLibraryPlugin extends AbstractLibraryPlugin {
|
|
103
104
|
*/
|
104
105
|
renderStartup(source, module, renderContext, { options }) {
|
105
106
|
if (!options.export) return source;
|
106
|
-
const postfix =
|
107
|
+
const postfix = `${RuntimeGlobals.exports} = ${
|
108
|
+
RuntimeGlobals.exports
|
109
|
+
}${propertyAccess(
|
107
110
|
Array.isArray(options.export) ? options.export : [options.export]
|
108
111
|
)};\n`;
|
109
112
|
return new ConcatSource(source, postfix);
|
@@ -6,6 +6,7 @@
|
|
6
6
|
"use strict";
|
7
7
|
|
8
8
|
const { ConcatSource } = require("webpack-sources");
|
9
|
+
const RuntimeGlobals = require("../RuntimeGlobals");
|
9
10
|
const Template = require("../Template");
|
10
11
|
const propertyAccess = require("../util/propertyAccess");
|
11
12
|
const AbstractLibraryPlugin = require("./AbstractLibraryPlugin");
|
@@ -80,16 +81,19 @@ class ModuleLibraryPlugin extends AbstractLibraryPlugin {
|
|
80
81
|
const exports = [];
|
81
82
|
const isAsync = moduleGraph.isAsync(module);
|
82
83
|
if (isAsync) {
|
83
|
-
result.add(
|
84
|
+
result.add(
|
85
|
+
`${RuntimeGlobals.exports} = await ${RuntimeGlobals.exports};\n`
|
86
|
+
);
|
84
87
|
}
|
85
88
|
for (const exportInfo of exportsInfo.orderedExports) {
|
86
89
|
if (!exportInfo.provided) continue;
|
87
|
-
const varName =
|
90
|
+
const varName = `${RuntimeGlobals.exports}${Template.toIdentifier(
|
88
91
|
exportInfo.name
|
89
92
|
)}`;
|
90
93
|
result.add(
|
91
|
-
`var ${varName} =
|
92
|
-
|
94
|
+
`var ${varName} = ${RuntimeGlobals.exports}${propertyAccess([
|
95
|
+
/** @type {string} */
|
96
|
+
(exportInfo.getUsedName(exportInfo.name, chunk.runtime))
|
93
97
|
])};\n`
|
94
98
|
);
|
95
99
|
exports.push(`${varName} as ${exportInfo.name}`);
|