webpack 5.76.1 → 5.88.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.
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 +4 -0
- 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 +12 -8
- package/lib/ConcatenationScope.js +2 -2
- package/lib/ConditionalInitFragment.js +11 -1
- package/lib/ConstPlugin.js +79 -44
- 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/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 +20 -3
- package/lib/ExportsInfoApiPlugin.js +30 -14
- package/lib/ExternalModule.js +30 -9
- package/lib/FileSystemInfo.js +9 -1
- 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/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/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/cache/IdleFileCachePlugin.js +2 -1
- package/lib/cache/MemoryWithGcCachePlugin.js +2 -0
- package/lib/cache/PackFileCacheStrategy.js +42 -15
- 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 +15 -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 +194 -194
- 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 +6 -4
- package/lib/library/ExportPropertyLibraryPlugin.js +4 -1
- package/lib/library/ModuleLibraryPlugin.js +8 -4
- package/lib/library/SystemLibraryPlugin.js +1 -0
- package/lib/library/UmdLibraryPlugin.js +4 -0
- 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 +6 -0
- package/lib/util/StringXor.js +51 -0
- 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 +14 -1
- package/lib/util/semver.js +1 -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 +132 -5
- 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 +1608 -667
@@ -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=} */ (name)
|
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");
|
@@ -296,7 +297,7 @@ class AssignLibraryPlugin extends AbstractLibraryPlugin {
|
|
296
297
|
if (!exportInfo.provided) continue;
|
297
298
|
const nameAccess = propertyAccess([exportInfo.name]);
|
298
299
|
result.add(
|
299
|
-
`${exportTarget}${nameAccess} =
|
300
|
+
`${exportTarget}${nameAccess} = ${RuntimeGlobals.exports}${exportAccess}${nameAccess};\n`
|
300
301
|
);
|
301
302
|
}
|
302
303
|
result.add(
|
@@ -310,10 +311,11 @@ class AssignLibraryPlugin extends AbstractLibraryPlugin {
|
|
310
311
|
true
|
311
312
|
)};\n`
|
312
313
|
);
|
313
|
-
|
314
|
+
/** @type {String} */
|
315
|
+
let exports = RuntimeGlobals.exports;
|
314
316
|
if (exportAccess) {
|
315
317
|
result.add(
|
316
|
-
`var __webpack_exports_export__ =
|
318
|
+
`var __webpack_exports_export__ = ${RuntimeGlobals.exports}${exportAccess};\n`
|
317
319
|
);
|
318
320
|
exports = "__webpack_exports_export__";
|
319
321
|
}
|
@@ -329,7 +331,7 @@ class AssignLibraryPlugin extends AbstractLibraryPlugin {
|
|
329
331
|
fullNameResolved,
|
330
332
|
this._getPrefix(compilation).length,
|
331
333
|
false
|
332
|
-
)} =
|
334
|
+
)} = ${RuntimeGlobals.exports}${exportAccess};\n`
|
333
335
|
);
|
334
336
|
}
|
335
337
|
return result;
|
@@ -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}`);
|
@@ -106,6 +106,7 @@ class SystemLibraryPlugin extends AbstractLibraryPlugin {
|
|
106
106
|
.join("\n");
|
107
107
|
|
108
108
|
// Define __esModule flag on all internal variables and helpers
|
109
|
+
/** @type {string[]} */
|
109
110
|
const externalVarInitialization = [];
|
110
111
|
|
111
112
|
// The system.register format requires an array of setter functions for externals.
|
@@ -208,6 +208,10 @@ class UmdLibraryPlugin extends AbstractLibraryPlugin {
|
|
208
208
|
);
|
209
209
|
};
|
210
210
|
|
211
|
+
/**
|
212
|
+
* @param {ExternalModule[]} modules external modules
|
213
|
+
* @returns {string} arguments
|
214
|
+
*/
|
211
215
|
const externalsArguments = modules => {
|
212
216
|
return modules
|
213
217
|
.map(
|
package/lib/logging/runtime.js
CHANGED