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
package/lib/ConstPlugin.js
CHANGED
@@ -5,14 +5,24 @@
|
|
5
5
|
|
6
6
|
"use strict";
|
7
7
|
|
8
|
+
const {
|
9
|
+
JAVASCRIPT_MODULE_TYPE_AUTO,
|
10
|
+
JAVASCRIPT_MODULE_TYPE_DYNAMIC,
|
11
|
+
JAVASCRIPT_MODULE_TYPE_ESM
|
12
|
+
} = require("./ModuleTypeConstants");
|
8
13
|
const CachedConstDependency = require("./dependencies/CachedConstDependency");
|
9
14
|
const ConstDependency = require("./dependencies/ConstDependency");
|
10
15
|
const { evaluateToString } = require("./javascript/JavascriptParserHelpers");
|
11
16
|
const { parseResource } = require("./util/identifier");
|
12
17
|
|
13
|
-
/** @typedef {import("estree").Expression}
|
14
|
-
/** @typedef {import("estree").
|
18
|
+
/** @typedef {import("estree").Expression} Expression */
|
19
|
+
/** @typedef {import("estree").SourceLocation} SourceLocation */
|
20
|
+
/** @typedef {import("estree").Statement} Statement */
|
21
|
+
/** @typedef {import("estree").Super} Super */
|
15
22
|
/** @typedef {import("./Compiler")} Compiler */
|
23
|
+
/** @typedef {import("./javascript/BasicEvaluatedExpression")} BasicEvaluatedExpression */
|
24
|
+
/** @typedef {import("./javascript/JavascriptParser")} JavascriptParser */
|
25
|
+
/** @typedef {import("./javascript/JavascriptParser").Range} Range */
|
16
26
|
|
17
27
|
const collectDeclaration = (declarations, pattern) => {
|
18
28
|
const stack = [pattern];
|
@@ -108,6 +118,8 @@ const getHoistedDeclarations = (branch, includeFunctionDeclarations) => {
|
|
108
118
|
return Array.from(declarations);
|
109
119
|
};
|
110
120
|
|
121
|
+
const PLUGIN_NAME = "ConstPlugin";
|
122
|
+
|
111
123
|
class ConstPlugin {
|
112
124
|
/**
|
113
125
|
* Apply the plugin
|
@@ -117,7 +129,7 @@ class ConstPlugin {
|
|
117
129
|
apply(compiler) {
|
118
130
|
const cachedParseResource = parseResource.bindCache(compiler.root);
|
119
131
|
compiler.hooks.compilation.tap(
|
120
|
-
|
132
|
+
PLUGIN_NAME,
|
121
133
|
(compilation, { normalModuleFactory }) => {
|
122
134
|
compilation.dependencyTemplates.set(
|
123
135
|
ConstDependency,
|
@@ -129,15 +141,21 @@ class ConstPlugin {
|
|
129
141
|
new CachedConstDependency.Template()
|
130
142
|
);
|
131
143
|
|
144
|
+
/**
|
145
|
+
* @param {JavascriptParser} parser the parser
|
146
|
+
*/
|
132
147
|
const handler = parser => {
|
133
|
-
parser.hooks.statementIf.tap(
|
148
|
+
parser.hooks.statementIf.tap(PLUGIN_NAME, statement => {
|
134
149
|
if (parser.scope.isAsmJs) return;
|
135
150
|
const param = parser.evaluateExpression(statement.test);
|
136
151
|
const bool = param.asBool();
|
137
152
|
if (typeof bool === "boolean") {
|
138
153
|
if (!param.couldHaveSideEffects()) {
|
139
|
-
const dep = new ConstDependency(
|
140
|
-
|
154
|
+
const dep = new ConstDependency(
|
155
|
+
`${bool}`,
|
156
|
+
/** @type {Range} */ (param.range)
|
157
|
+
);
|
158
|
+
dep.loc = /** @type {SourceLocation} */ (statement.loc);
|
141
159
|
parser.state.module.addPresentationalDependency(dep);
|
142
160
|
} else {
|
143
161
|
parser.walkExpression(statement.test);
|
@@ -193,24 +211,27 @@ class ConstPlugin {
|
|
193
211
|
}
|
194
212
|
const dep = new ConstDependency(
|
195
213
|
replacement,
|
196
|
-
branchToRemove.range
|
214
|
+
/** @type {Range} */ (branchToRemove.range)
|
197
215
|
);
|
198
|
-
dep.loc = branchToRemove.loc;
|
216
|
+
dep.loc = /** @type {SourceLocation} */ (branchToRemove.loc);
|
199
217
|
parser.state.module.addPresentationalDependency(dep);
|
200
218
|
}
|
201
219
|
return bool;
|
202
220
|
}
|
203
221
|
});
|
204
222
|
parser.hooks.expressionConditionalOperator.tap(
|
205
|
-
|
223
|
+
PLUGIN_NAME,
|
206
224
|
expression => {
|
207
225
|
if (parser.scope.isAsmJs) return;
|
208
226
|
const param = parser.evaluateExpression(expression.test);
|
209
227
|
const bool = param.asBool();
|
210
228
|
if (typeof bool === "boolean") {
|
211
229
|
if (!param.couldHaveSideEffects()) {
|
212
|
-
const dep = new ConstDependency(
|
213
|
-
|
230
|
+
const dep = new ConstDependency(
|
231
|
+
` ${bool}`,
|
232
|
+
/** @type {Range} */ (param.range)
|
233
|
+
);
|
234
|
+
dep.loc = /** @type {SourceLocation} */ (expression.loc);
|
214
235
|
parser.state.module.addPresentationalDependency(dep);
|
215
236
|
} else {
|
216
237
|
parser.walkExpression(expression.test);
|
@@ -229,15 +250,18 @@ class ConstPlugin {
|
|
229
250
|
const branchToRemove = bool
|
230
251
|
? expression.alternate
|
231
252
|
: expression.consequent;
|
232
|
-
const dep = new ConstDependency(
|
233
|
-
|
253
|
+
const dep = new ConstDependency(
|
254
|
+
"0",
|
255
|
+
/** @type {Range} */ (branchToRemove.range)
|
256
|
+
);
|
257
|
+
dep.loc = /** @type {SourceLocation} */ (branchToRemove.loc);
|
234
258
|
parser.state.module.addPresentationalDependency(dep);
|
235
259
|
return bool;
|
236
260
|
}
|
237
261
|
}
|
238
262
|
);
|
239
263
|
parser.hooks.expressionLogicalOperator.tap(
|
240
|
-
|
264
|
+
PLUGIN_NAME,
|
241
265
|
expression => {
|
242
266
|
if (parser.scope.isAsmJs) return;
|
243
267
|
if (
|
@@ -306,8 +330,11 @@ class ConstPlugin {
|
|
306
330
|
//
|
307
331
|
// returnfalse&&'foo'
|
308
332
|
//
|
309
|
-
const dep = new ConstDependency(
|
310
|
-
|
333
|
+
const dep = new ConstDependency(
|
334
|
+
` ${bool}`,
|
335
|
+
/** @type {Range} */ (param.range)
|
336
|
+
);
|
337
|
+
dep.loc = /** @type {SourceLocation} */ (expression.loc);
|
311
338
|
parser.state.module.addPresentationalDependency(dep);
|
312
339
|
} else {
|
313
340
|
parser.walkExpression(expression.left);
|
@@ -315,9 +342,9 @@ class ConstPlugin {
|
|
315
342
|
if (!keepRight) {
|
316
343
|
const dep = new ConstDependency(
|
317
344
|
"0",
|
318
|
-
expression.right.range
|
345
|
+
/** @type {Range} */ (expression.right.range)
|
319
346
|
);
|
320
|
-
dep.loc = expression.loc;
|
347
|
+
dep.loc = /** @type {SourceLocation} */ (expression.loc);
|
321
348
|
parser.state.module.addPresentationalDependency(dep);
|
322
349
|
}
|
323
350
|
return keepRight;
|
@@ -356,15 +383,18 @@ class ConstPlugin {
|
|
356
383
|
//
|
357
384
|
// returnnull??'foo'
|
358
385
|
//
|
359
|
-
const dep = new ConstDependency(
|
360
|
-
|
386
|
+
const dep = new ConstDependency(
|
387
|
+
" null",
|
388
|
+
/** @type {Range} */ (param.range)
|
389
|
+
);
|
390
|
+
dep.loc = /** @type {SourceLocation} */ (expression.loc);
|
361
391
|
parser.state.module.addPresentationalDependency(dep);
|
362
392
|
} else {
|
363
393
|
const dep = new ConstDependency(
|
364
394
|
"0",
|
365
|
-
expression.right.range
|
395
|
+
/** @type {Range} */ (expression.right.range)
|
366
396
|
);
|
367
|
-
dep.loc = expression.loc;
|
397
|
+
dep.loc = /** @type {SourceLocation} */ (expression.loc);
|
368
398
|
parser.state.module.addPresentationalDependency(dep);
|
369
399
|
parser.walkExpression(expression.left);
|
370
400
|
}
|
@@ -374,10 +404,10 @@ class ConstPlugin {
|
|
374
404
|
}
|
375
405
|
}
|
376
406
|
);
|
377
|
-
parser.hooks.optionalChaining.tap(
|
378
|
-
/** @type {
|
407
|
+
parser.hooks.optionalChaining.tap(PLUGIN_NAME, expr => {
|
408
|
+
/** @type {Expression[]} */
|
379
409
|
const optionalExpressionsStack = [];
|
380
|
-
/** @type {
|
410
|
+
/** @type {Expression | Super} */
|
381
411
|
let next = expr.expression;
|
382
412
|
|
383
413
|
while (
|
@@ -388,7 +418,7 @@ class ConstPlugin {
|
|
388
418
|
if (next.optional) {
|
389
419
|
// SuperNode can not be optional
|
390
420
|
optionalExpressionsStack.push(
|
391
|
-
/** @type {
|
421
|
+
/** @type {Expression} */ (next.object)
|
392
422
|
);
|
393
423
|
}
|
394
424
|
next = next.object;
|
@@ -396,7 +426,7 @@ class ConstPlugin {
|
|
396
426
|
if (next.optional) {
|
397
427
|
// SuperNode can not be optional
|
398
428
|
optionalExpressionsStack.push(
|
399
|
-
/** @type {
|
429
|
+
/** @type {Expression} */ (next.callee)
|
400
430
|
);
|
401
431
|
}
|
402
432
|
next = next.callee;
|
@@ -405,7 +435,9 @@ class ConstPlugin {
|
|
405
435
|
|
406
436
|
while (optionalExpressionsStack.length) {
|
407
437
|
const expression = optionalExpressionsStack.pop();
|
408
|
-
const evaluated = parser.evaluateExpression(
|
438
|
+
const evaluated = parser.evaluateExpression(
|
439
|
+
/** @type {Expression} */ (expression)
|
440
|
+
);
|
409
441
|
|
410
442
|
if (evaluated.asNullish()) {
|
411
443
|
// ------------------------------------------
|
@@ -420,8 +452,11 @@ class ConstPlugin {
|
|
420
452
|
//
|
421
453
|
// ------------------------------------------
|
422
454
|
//
|
423
|
-
const dep = new ConstDependency(
|
424
|
-
|
455
|
+
const dep = new ConstDependency(
|
456
|
+
" undefined",
|
457
|
+
/** @type {Range} */ (expr.range)
|
458
|
+
);
|
459
|
+
dep.loc = /** @type {SourceLocation} */ (expr.loc);
|
425
460
|
parser.state.module.addPresentationalDependency(dep);
|
426
461
|
return true;
|
427
462
|
}
|
@@ -429,7 +464,7 @@ class ConstPlugin {
|
|
429
464
|
});
|
430
465
|
parser.hooks.evaluateIdentifier
|
431
466
|
.for("__resourceQuery")
|
432
|
-
.tap(
|
467
|
+
.tap(PLUGIN_NAME, expr => {
|
433
468
|
if (parser.scope.isAsmJs) return;
|
434
469
|
if (!parser.state.module) return;
|
435
470
|
return evaluateToString(
|
@@ -438,24 +473,24 @@ class ConstPlugin {
|
|
438
473
|
});
|
439
474
|
parser.hooks.expression
|
440
475
|
.for("__resourceQuery")
|
441
|
-
.tap(
|
476
|
+
.tap(PLUGIN_NAME, expr => {
|
442
477
|
if (parser.scope.isAsmJs) return;
|
443
478
|
if (!parser.state.module) return;
|
444
479
|
const dep = new CachedConstDependency(
|
445
480
|
JSON.stringify(
|
446
481
|
cachedParseResource(parser.state.module.resource).query
|
447
482
|
),
|
448
|
-
expr.range,
|
483
|
+
/** @type {Range} */ (expr.range),
|
449
484
|
"__resourceQuery"
|
450
485
|
);
|
451
|
-
dep.loc = expr.loc;
|
486
|
+
dep.loc = /** @type {SourceLocation} */ (expr.loc);
|
452
487
|
parser.state.module.addPresentationalDependency(dep);
|
453
488
|
return true;
|
454
489
|
});
|
455
490
|
|
456
491
|
parser.hooks.evaluateIdentifier
|
457
492
|
.for("__resourceFragment")
|
458
|
-
.tap(
|
493
|
+
.tap(PLUGIN_NAME, expr => {
|
459
494
|
if (parser.scope.isAsmJs) return;
|
460
495
|
if (!parser.state.module) return;
|
461
496
|
return evaluateToString(
|
@@ -464,31 +499,31 @@ class ConstPlugin {
|
|
464
499
|
});
|
465
500
|
parser.hooks.expression
|
466
501
|
.for("__resourceFragment")
|
467
|
-
.tap(
|
502
|
+
.tap(PLUGIN_NAME, expr => {
|
468
503
|
if (parser.scope.isAsmJs) return;
|
469
504
|
if (!parser.state.module) return;
|
470
505
|
const dep = new CachedConstDependency(
|
471
506
|
JSON.stringify(
|
472
507
|
cachedParseResource(parser.state.module.resource).fragment
|
473
508
|
),
|
474
|
-
expr.range,
|
509
|
+
/** @type {Range} */ (expr.range),
|
475
510
|
"__resourceFragment"
|
476
511
|
);
|
477
|
-
dep.loc = expr.loc;
|
512
|
+
dep.loc = /** @type {SourceLocation} */ (expr.loc);
|
478
513
|
parser.state.module.addPresentationalDependency(dep);
|
479
514
|
return true;
|
480
515
|
});
|
481
516
|
};
|
482
517
|
|
483
518
|
normalModuleFactory.hooks.parser
|
484
|
-
.for(
|
485
|
-
.tap(
|
519
|
+
.for(JAVASCRIPT_MODULE_TYPE_AUTO)
|
520
|
+
.tap(PLUGIN_NAME, handler);
|
486
521
|
normalModuleFactory.hooks.parser
|
487
|
-
.for(
|
488
|
-
.tap(
|
522
|
+
.for(JAVASCRIPT_MODULE_TYPE_DYNAMIC)
|
523
|
+
.tap(PLUGIN_NAME, handler);
|
489
524
|
normalModuleFactory.hooks.parser
|
490
|
-
.for(
|
491
|
-
.tap(
|
525
|
+
.for(JAVASCRIPT_MODULE_TYPE_ESM)
|
526
|
+
.tap(PLUGIN_NAME, handler);
|
492
527
|
}
|
493
528
|
);
|
494
529
|
}
|
package/lib/ContextModule.js
CHANGED
@@ -9,6 +9,7 @@ const { OriginalSource, RawSource } = require("webpack-sources");
|
|
9
9
|
const AsyncDependenciesBlock = require("./AsyncDependenciesBlock");
|
10
10
|
const { makeWebpackError } = require("./HookWebpackError");
|
11
11
|
const Module = require("./Module");
|
12
|
+
const { JAVASCRIPT_MODULE_TYPE_DYNAMIC } = require("./ModuleTypeConstants");
|
12
13
|
const RuntimeGlobals = require("./RuntimeGlobals");
|
13
14
|
const Template = require("./Template");
|
14
15
|
const WebpackError = require("./WebpackError");
|
@@ -42,6 +43,8 @@ const makeSerializable = require("./util/makeSerializable");
|
|
42
43
|
/** @typedef {import("./ResolverFactory").ResolverWithOptions} ResolverWithOptions */
|
43
44
|
/** @typedef {import("./RuntimeTemplate")} RuntimeTemplate */
|
44
45
|
/** @typedef {import("./dependencies/ContextElementDependency")} ContextElementDependency */
|
46
|
+
/** @typedef {import("./serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
|
47
|
+
/** @typedef {import("./serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
|
45
48
|
/** @template T @typedef {import("./util/LazySet")<T>} LazySet<T> */
|
46
49
|
/** @typedef {import("./util/fs").InputFileSystem} InputFileSystem */
|
47
50
|
|
@@ -60,7 +63,8 @@ const makeSerializable = require("./util/makeSerializable");
|
|
60
63
|
* @property {RawChunkGroupOptions=} groupOptions
|
61
64
|
* @property {string=} typePrefix
|
62
65
|
* @property {string=} category
|
63
|
-
* @property {string[][]=} referencedExports exports referenced from modules (won't be mangled)
|
66
|
+
* @property {(string[][] | null)=} referencedExports exports referenced from modules (won't be mangled)
|
67
|
+
* @property {string=} layer
|
64
68
|
*/
|
65
69
|
|
66
70
|
/**
|
@@ -104,8 +108,9 @@ class ContextModule extends Module {
|
|
104
108
|
const resourceQuery = (options && options.resourceQuery) || parsed.query;
|
105
109
|
const resourceFragment =
|
106
110
|
(options && options.resourceFragment) || parsed.fragment;
|
111
|
+
const layer = options && options.layer;
|
107
112
|
|
108
|
-
super(
|
113
|
+
super(JAVASCRIPT_MODULE_TYPE_DYNAMIC, resource, layer);
|
109
114
|
/** @type {ContextModuleOptions} */
|
110
115
|
this.options = {
|
111
116
|
...options,
|
@@ -114,7 +119,7 @@ class ContextModule extends Module {
|
|
114
119
|
resourceFragment
|
115
120
|
};
|
116
121
|
} else {
|
117
|
-
super(
|
122
|
+
super(JAVASCRIPT_MODULE_TYPE_DYNAMIC, undefined, options.layer);
|
118
123
|
/** @type {ContextModuleOptions} */
|
119
124
|
this.options = {
|
120
125
|
...options,
|
@@ -226,6 +231,9 @@ class ContextModule extends Module {
|
|
226
231
|
} else if (this.options.namespaceObject) {
|
227
232
|
identifier += "|namespace object";
|
228
233
|
}
|
234
|
+
if (this.layer) {
|
235
|
+
identifier += `|layer: ${this.layer}`;
|
236
|
+
}
|
229
237
|
|
230
238
|
return identifier;
|
231
239
|
}
|
@@ -637,7 +645,7 @@ class ContextModule extends Module {
|
|
637
645
|
|
638
646
|
getReturn(type, asyncModule) {
|
639
647
|
if (type === 9) {
|
640
|
-
return
|
648
|
+
return `${RuntimeGlobals.require}(id)`;
|
641
649
|
}
|
642
650
|
return `${RuntimeGlobals.createFakeNamespaceObject}(id, ${type}${
|
643
651
|
asyncModule ? " | 16" : ""
|
@@ -796,7 +804,7 @@ module.exports = webpackAsyncContext;`;
|
|
796
804
|
? `${arrow ? "id =>" : "function(id)"} {
|
797
805
|
${this.getReturnModuleObjectSource(fakeMap)}
|
798
806
|
}`
|
799
|
-
:
|
807
|
+
: RuntimeGlobals.require;
|
800
808
|
return `var map = ${JSON.stringify(map, null, "\t")};
|
801
809
|
${this.getFakeMapInitStatement(fakeMap)}
|
802
810
|
|
@@ -847,7 +855,7 @@ module.exports = webpackAsyncContext;`;
|
|
847
855
|
? `${arrow ? "id =>" : "function(id)"} {
|
848
856
|
${this.getReturnModuleObjectSource(fakeMap, true)};
|
849
857
|
}`
|
850
|
-
:
|
858
|
+
: RuntimeGlobals.require;
|
851
859
|
|
852
860
|
return `var map = ${JSON.stringify(map, null, "\t")};
|
853
861
|
${this.getFakeMapInitStatement(fakeMap)}
|
@@ -1150,6 +1158,9 @@ module.exports = webpackEmptyAsyncContext;`;
|
|
1150
1158
|
return size;
|
1151
1159
|
}
|
1152
1160
|
|
1161
|
+
/**
|
1162
|
+
* @param {ObjectSerializerContext} context context
|
1163
|
+
*/
|
1153
1164
|
serialize(context) {
|
1154
1165
|
const { write } = context;
|
1155
1166
|
write(this._identifier);
|
@@ -1157,6 +1168,9 @@ module.exports = webpackEmptyAsyncContext;`;
|
|
1157
1168
|
super.serialize(context);
|
1158
1169
|
}
|
1159
1170
|
|
1171
|
+
/**
|
1172
|
+
* @param {ObjectDeserializerContext} context context
|
1173
|
+
*/
|
1160
1174
|
deserialize(context) {
|
1161
1175
|
const { read } = context;
|
1162
1176
|
this._identifier = read();
|
@@ -80,7 +80,7 @@ module.exports = class ContextModuleFactory extends ModuleFactory {
|
|
80
80
|
|
81
81
|
/**
|
82
82
|
* @param {ModuleFactoryCreateData} data data object
|
83
|
-
* @param {function(Error=, ModuleFactoryResult=): void} callback callback
|
83
|
+
* @param {function((Error | null)=, ModuleFactoryResult=): void} callback callback
|
84
84
|
* @returns {void}
|
85
85
|
*/
|
86
86
|
create(data, callback) {
|
@@ -95,6 +95,7 @@ module.exports = class ContextModuleFactory extends ModuleFactory {
|
|
95
95
|
{
|
96
96
|
context: context,
|
97
97
|
dependencies: dependencies,
|
98
|
+
layer: data.contextInfo.issuerLayer,
|
98
99
|
resolveOptions,
|
99
100
|
fileDependencies,
|
100
101
|
missingDependencies,
|
@@ -8,7 +8,15 @@
|
|
8
8
|
const ContextElementDependency = require("./dependencies/ContextElementDependency");
|
9
9
|
const { join } = require("./util/fs");
|
10
10
|
|
11
|
+
/** @typedef {import("./Compiler")} Compiler */
|
12
|
+
|
11
13
|
class ContextReplacementPlugin {
|
14
|
+
/**
|
15
|
+
* @param {RegExp} resourceRegExp A regular expression that determines which files will be selected
|
16
|
+
* @param {TODO=} newContentResource A new resource to replace the match
|
17
|
+
* @param {TODO=} newContentRecursive If true, all subdirectories are searched for matches
|
18
|
+
* @param {TODO=} newContentRegExp A regular expression that determines which files will be selected
|
19
|
+
*/
|
12
20
|
constructor(
|
13
21
|
resourceRegExp,
|
14
22
|
newContentResource,
|
@@ -49,6 +57,11 @@ class ContextReplacementPlugin {
|
|
49
57
|
}
|
50
58
|
}
|
51
59
|
|
60
|
+
/**
|
61
|
+
* Apply the plugin
|
62
|
+
* @param {Compiler} compiler the compiler instance
|
63
|
+
* @returns {void}
|
64
|
+
*/
|
52
65
|
apply(compiler) {
|
53
66
|
const resourceRegExp = this.resourceRegExp;
|
54
67
|
const newContentCallback = this.newContentCallback;
|
package/lib/CssModule.js
ADDED
@@ -0,0 +1,169 @@
|
|
1
|
+
/*
|
2
|
+
MIT License http://www.opensource.org/licenses/mit-license.php
|
3
|
+
Author Alexander Krasnoyarov @alexander-akait
|
4
|
+
*/
|
5
|
+
|
6
|
+
"use strict";
|
7
|
+
|
8
|
+
const NormalModule = require("./NormalModule");
|
9
|
+
const makeSerializable = require("./util/makeSerializable");
|
10
|
+
|
11
|
+
/** @typedef {import("./Module")} Module */
|
12
|
+
/** @typedef {import("./NormalModule").NormalModuleCreateData} NormalModuleCreateData */
|
13
|
+
/** @typedef {import("./RequestShortener")} RequestShortener */
|
14
|
+
/** @typedef {import("./serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
|
15
|
+
/** @typedef {import("./serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
|
16
|
+
|
17
|
+
/** @typedef {string|undefined} CssLayer */
|
18
|
+
/** @typedef {string|undefined} Supports */
|
19
|
+
/** @typedef {string|undefined} Media */
|
20
|
+
/** @typedef {[CssLayer?, Supports?, Media?]} InheritanceItem */
|
21
|
+
/** @typedef {Array<InheritanceItem>} Inheritance */
|
22
|
+
|
23
|
+
/** @typedef {NormalModuleCreateData & { cssLayer: CssLayer|null, supports: Supports|null, media: Media|null, inheritance: Inheritance|null }} CSSModuleCreateData */
|
24
|
+
|
25
|
+
class CssModule extends NormalModule {
|
26
|
+
/**
|
27
|
+
* @param {CSSModuleCreateData} options options object
|
28
|
+
*/
|
29
|
+
constructor(options) {
|
30
|
+
super(options);
|
31
|
+
|
32
|
+
// Avoid override `layer` for `Module` class, because it is a feature to run module in specific layer
|
33
|
+
this.cssLayer = options.cssLayer;
|
34
|
+
this.supports = options.supports;
|
35
|
+
this.media = options.media;
|
36
|
+
this.inheritance = options.inheritance;
|
37
|
+
}
|
38
|
+
|
39
|
+
/**
|
40
|
+
* @returns {string} a unique identifier of the module
|
41
|
+
*/
|
42
|
+
identifier() {
|
43
|
+
let identifier = super.identifier();
|
44
|
+
|
45
|
+
if (this.cssLayer) {
|
46
|
+
identifier += `|${this.cssLayer}`;
|
47
|
+
}
|
48
|
+
|
49
|
+
if (this.supports) {
|
50
|
+
identifier += `|${this.supports}`;
|
51
|
+
}
|
52
|
+
|
53
|
+
if (this.media) {
|
54
|
+
identifier += `|${this.media}`;
|
55
|
+
}
|
56
|
+
|
57
|
+
if (this.inheritance) {
|
58
|
+
const inheritance = this.inheritance.map(
|
59
|
+
(item, index) =>
|
60
|
+
`inheritance_${index}|${item[0] || ""}|${item[1] || ""}|${
|
61
|
+
item[2] || ""
|
62
|
+
}`
|
63
|
+
);
|
64
|
+
|
65
|
+
identifier += `|${inheritance.join("|")}`;
|
66
|
+
}
|
67
|
+
|
68
|
+
return identifier;
|
69
|
+
}
|
70
|
+
|
71
|
+
/**
|
72
|
+
* @param {RequestShortener} requestShortener the request shortener
|
73
|
+
* @returns {string} a user readable identifier of the module
|
74
|
+
*/
|
75
|
+
readableIdentifier(requestShortener) {
|
76
|
+
const readableIdentifier = super.readableIdentifier(requestShortener);
|
77
|
+
|
78
|
+
let identifier = `css ${readableIdentifier}`;
|
79
|
+
|
80
|
+
if (this.cssLayer) {
|
81
|
+
identifier += ` (layer: ${this.cssLayer})`;
|
82
|
+
}
|
83
|
+
|
84
|
+
if (this.supports) {
|
85
|
+
identifier += ` (supports: ${this.supports})`;
|
86
|
+
}
|
87
|
+
|
88
|
+
if (this.media) {
|
89
|
+
identifier += ` (media: ${this.media})`;
|
90
|
+
}
|
91
|
+
|
92
|
+
return identifier;
|
93
|
+
}
|
94
|
+
|
95
|
+
/**
|
96
|
+
* Assuming this module is in the cache. Update the (cached) module with
|
97
|
+
* the fresh module from the factory. Usually updates internal references
|
98
|
+
* and properties.
|
99
|
+
* @param {Module} module fresh module
|
100
|
+
* @returns {void}
|
101
|
+
*/
|
102
|
+
updateCacheModule(module) {
|
103
|
+
super.updateCacheModule(module);
|
104
|
+
const m = /** @type {CssModule} */ (module);
|
105
|
+
this.cssLayer = m.cssLayer;
|
106
|
+
this.supports = m.supports;
|
107
|
+
this.media = m.media;
|
108
|
+
this.inheritance = m.inheritance;
|
109
|
+
}
|
110
|
+
|
111
|
+
/**
|
112
|
+
* @param {ObjectSerializerContext} context context
|
113
|
+
*/
|
114
|
+
serialize(context) {
|
115
|
+
const { write } = context;
|
116
|
+
write(this.cssLayer);
|
117
|
+
write(this.supports);
|
118
|
+
write(this.media);
|
119
|
+
write(this.inheritance);
|
120
|
+
super.serialize(context);
|
121
|
+
}
|
122
|
+
|
123
|
+
/**
|
124
|
+
* @param {ObjectDeserializerContext} context context
|
125
|
+
* @returns {CssModule} the deserialized object
|
126
|
+
*/
|
127
|
+
static deserialize(context) {
|
128
|
+
const obj = new CssModule({
|
129
|
+
// will be deserialized by Module
|
130
|
+
layer: null,
|
131
|
+
type: "",
|
132
|
+
// will be filled by updateCacheModule
|
133
|
+
resource: "",
|
134
|
+
context: "",
|
135
|
+
request: null,
|
136
|
+
userRequest: null,
|
137
|
+
rawRequest: null,
|
138
|
+
loaders: null,
|
139
|
+
matchResource: null,
|
140
|
+
parser: null,
|
141
|
+
parserOptions: null,
|
142
|
+
generator: null,
|
143
|
+
generatorOptions: null,
|
144
|
+
resolveOptions: null,
|
145
|
+
cssLayer: null,
|
146
|
+
supports: null,
|
147
|
+
media: null,
|
148
|
+
inheritance: null
|
149
|
+
});
|
150
|
+
obj.deserialize(context);
|
151
|
+
return obj;
|
152
|
+
}
|
153
|
+
|
154
|
+
/**
|
155
|
+
* @param {ObjectDeserializerContext} context context
|
156
|
+
*/
|
157
|
+
deserialize(context) {
|
158
|
+
const { read } = context;
|
159
|
+
this.cssLayer = read();
|
160
|
+
this.supports = read();
|
161
|
+
this.media = read();
|
162
|
+
this.inheritance = read();
|
163
|
+
super.deserialize(context);
|
164
|
+
}
|
165
|
+
}
|
166
|
+
|
167
|
+
makeSerializable(CssModule, "webpack/lib/CssModule");
|
168
|
+
|
169
|
+
module.exports = CssModule;
|