webpack 5.76.1 → 5.88.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of webpack might be problematic. Click here for more details.
- package/README.md +10 -4
- package/bin/webpack.js +26 -2
- package/hot/dev-server.js +2 -1
- package/hot/lazy-compilation-node.js +10 -0
- package/hot/lazy-compilation-web.js +9 -0
- package/hot/log-apply-result.js +5 -0
- package/hot/log.js +22 -0
- package/hot/only-dev-server.js +2 -1
- package/hot/poll.js +3 -0
- package/hot/signal.js +4 -0
- package/lib/APIPlugin.js +174 -116
- package/lib/AsyncDependenciesBlock.js +13 -5
- package/lib/AutomaticPrefetchPlugin.js +1 -0
- package/lib/BannerPlugin.js +6 -1
- package/lib/CacheFacade.js +4 -0
- package/lib/CaseSensitiveModulesWarning.js +3 -1
- package/lib/Chunk.js +36 -18
- package/lib/ChunkGraph.js +4 -4
- package/lib/ChunkGroup.js +25 -10
- package/lib/CleanPlugin.js +30 -7
- package/lib/CodeGenerationResults.js +2 -2
- package/lib/CompatibilityPlugin.js +85 -46
- package/lib/Compilation.js +17 -8
- package/lib/Compiler.js +18 -14
- package/lib/ConcatenationScope.js +2 -2
- package/lib/ConditionalInitFragment.js +11 -1
- package/lib/ConstPlugin.js +95 -47
- package/lib/ContextModule.js +20 -6
- package/lib/ContextModuleFactory.js +2 -1
- package/lib/ContextReplacementPlugin.js +13 -0
- package/lib/CssModule.js +169 -0
- package/lib/DefinePlugin.js +152 -86
- package/lib/DelegatedModule.js +22 -4
- package/lib/DelegatedModuleFactoryPlugin.js +6 -0
- package/lib/DependenciesBlock.js +17 -1
- package/lib/Dependency.js +19 -5
- package/lib/DependencyTemplates.js +1 -1
- package/lib/DllEntryPlugin.js +16 -1
- package/lib/DllModule.js +17 -2
- package/lib/DllModuleFactory.js +1 -1
- package/lib/DllReferencePlugin.js +13 -1
- package/lib/Entrypoint.js +1 -1
- package/lib/ErrorHelpers.js +62 -22
- package/lib/EvalSourceMapDevToolPlugin.js +9 -2
- package/lib/ExportsInfo.js +25 -4
- package/lib/ExportsInfoApiPlugin.js +30 -14
- package/lib/ExternalModule.js +30 -9
- package/lib/FileSystemInfo.js +61 -25
- package/lib/FlagAllModulesAsUsedPlugin.js +27 -27
- package/lib/FlagDependencyExportsPlugin.js +336 -348
- package/lib/FlagDependencyUsagePlugin.js +9 -9
- package/lib/FlagEntryExportAsUsedPlugin.js +26 -23
- package/lib/Generator.js +7 -0
- package/lib/HookWebpackError.js +1 -1
- package/lib/HotModuleReplacementPlugin.js +60 -46
- package/lib/IgnoreErrorModuleFactory.js +1 -1
- package/lib/InitFragment.js +28 -5
- package/lib/JavascriptMetaInfoPlugin.js +27 -15
- package/lib/LibManifestPlugin.js +22 -5
- package/lib/LoaderOptionsPlugin.js +12 -2
- package/lib/MainTemplate.js +2 -2
- package/lib/Module.js +44 -12
- package/lib/ModuleBuildError.js +9 -0
- package/lib/ModuleDependencyError.js +4 -2
- package/lib/ModuleDependencyWarning.js +4 -2
- package/lib/ModuleError.js +9 -0
- package/lib/ModuleFactory.js +1 -1
- package/lib/ModuleFilenameHelpers.js +114 -4
- package/lib/ModuleGraph.js +33 -23
- package/lib/ModuleGraphConnection.js +19 -6
- package/lib/ModuleInfoHeaderPlugin.js +9 -2
- package/lib/ModuleNotFoundError.js +5 -2
- package/lib/ModuleParseError.js +9 -0
- package/lib/ModuleProfile.js +1 -0
- package/lib/ModuleRestoreError.js +2 -0
- package/lib/ModuleStoreError.js +2 -1
- package/lib/ModuleTypeConstants.js +169 -0
- package/lib/ModuleWarning.js +9 -0
- package/lib/MultiWatching.js +4 -0
- package/lib/NodeStuffPlugin.js +65 -35
- package/lib/NormalModule.js +12 -2
- package/lib/NormalModuleFactory.js +56 -8
- package/lib/NormalModuleReplacementPlugin.js +5 -3
- package/lib/NullFactory.js +1 -1
- package/lib/PrefetchPlugin.js +4 -0
- package/lib/ProgressPlugin.js +71 -15
- package/lib/ProvidePlugin.js +30 -14
- package/lib/RawModule.js +13 -2
- package/lib/RecordIdsPlugin.js +4 -4
- package/lib/RequireJsStuffPlugin.js +22 -15
- package/lib/RuntimeGlobals.js +5 -0
- package/lib/RuntimeModule.js +12 -11
- package/lib/RuntimePlugin.js +10 -3
- package/lib/RuntimeTemplate.js +29 -11
- package/lib/SelfModuleFactory.js +12 -0
- package/lib/SourceMapDevToolModuleOptionsPlugin.js +4 -0
- package/lib/SourceMapDevToolPlugin.js +47 -11
- package/lib/Template.js +5 -3
- package/lib/UseStrictPlugin.js +29 -11
- package/lib/WarnCaseSensitiveModulesPlugin.js +12 -0
- package/lib/WarnDeprecatedOptionPlugin.js +7 -0
- package/lib/WatchIgnorePlugin.js +4 -0
- package/lib/Watching.js +62 -25
- package/lib/WebpackError.js +14 -5
- package/lib/WebpackIsIncludedPlugin.js +22 -13
- package/lib/WebpackOptionsApply.js +41 -44
- package/lib/WebpackOptionsDefaulter.js +10 -3
- package/lib/asset/AssetGenerator.js +24 -9
- package/lib/asset/AssetModulesPlugin.js +28 -12
- package/lib/asset/AssetParser.js +15 -7
- package/lib/asset/AssetSourceParser.js +8 -3
- package/lib/asset/RawDataUrlModule.js +15 -4
- package/lib/async-modules/AwaitDependenciesInitFragment.js +4 -0
- package/lib/async-modules/InferAsyncModulesPlugin.js +1 -1
- package/lib/buildChunkGraph.js +37 -21
- package/lib/cache/IdleFileCachePlugin.js +2 -1
- package/lib/cache/MemoryWithGcCachePlugin.js +2 -0
- package/lib/cache/PackFileCacheStrategy.js +59 -22
- package/lib/cache/ResolverCachePlugin.js +3 -0
- package/lib/config/browserslistTargetHandler.js +10 -10
- package/lib/config/defaults.js +306 -105
- package/lib/config/normalization.js +110 -71
- package/lib/config/target.js +37 -10
- package/lib/container/ContainerEntryModule.js +11 -1
- package/lib/container/ContainerEntryModuleFactory.js +1 -1
- package/lib/container/ContainerExposedDependency.js +9 -0
- package/lib/container/ContainerPlugin.js +3 -1
- package/lib/container/FallbackDependency.js +13 -0
- package/lib/container/FallbackItemDependency.js +3 -0
- package/lib/container/FallbackModule.js +12 -2
- package/lib/container/FallbackModuleFactory.js +1 -1
- package/lib/container/RemoteModule.js +11 -1
- package/lib/container/RemoteRuntimeModule.js +3 -2
- package/lib/container/RemoteToExternalDependency.js +3 -0
- package/lib/css/CssExportsGenerator.js +9 -0
- package/lib/css/CssGenerator.js +5 -1
- package/lib/css/CssLoadingRuntimeModule.js +53 -22
- package/lib/css/CssModulesPlugin.js +253 -74
- package/lib/css/CssParser.js +697 -282
- package/lib/css/walkCssTokens.js +269 -138
- package/lib/debug/ProfilingPlugin.js +33 -12
- package/lib/dependencies/AMDDefineDependency.js +54 -10
- package/lib/dependencies/AMDDefineDependencyParserPlugin.js +13 -2
- package/lib/dependencies/AMDPlugin.js +33 -20
- package/lib/dependencies/AMDRequireArrayDependency.js +13 -0
- package/lib/dependencies/AMDRequireContextDependency.js +15 -0
- package/lib/dependencies/AMDRequireDependenciesBlock.js +6 -0
- package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +8 -2
- package/lib/dependencies/AMDRequireDependency.js +16 -1
- package/lib/dependencies/AMDRequireItemDependency.js +6 -0
- package/lib/dependencies/AMDRuntimeModules.js +2 -2
- package/lib/dependencies/CachedConstDependency.js +14 -0
- package/lib/dependencies/CommonJsDependencyHelpers.js +9 -0
- package/lib/dependencies/CommonJsExportRequireDependency.js +19 -0
- package/lib/dependencies/CommonJsExportsDependency.js +16 -0
- package/lib/dependencies/CommonJsExportsParserPlugin.js +77 -5
- package/lib/dependencies/CommonJsFullRequireDependency.js +10 -1
- package/lib/dependencies/CommonJsImportsParserPlugin.js +174 -63
- package/lib/dependencies/CommonJsPlugin.js +51 -26
- package/lib/dependencies/CommonJsRequireContextDependency.js +17 -0
- package/lib/dependencies/CommonJsRequireDependency.js +7 -0
- package/lib/dependencies/CommonJsSelfReferenceDependency.js +16 -0
- package/lib/dependencies/ConstDependency.js +11 -2
- package/lib/dependencies/ContextDependency.js +15 -2
- package/lib/dependencies/ContextDependencyHelpers.js +3 -3
- package/lib/dependencies/ContextElementDependency.js +8 -0
- package/lib/dependencies/CreateScriptUrlDependency.js +10 -1
- package/lib/dependencies/CriticalDependencyWarning.js +3 -0
- package/lib/dependencies/CssExportDependency.js +8 -0
- package/lib/dependencies/CssImportDependency.js +55 -3
- package/lib/dependencies/CssLocalIdentifierDependency.js +18 -1
- package/lib/dependencies/CssSelfLocalIdentifierDependency.js +10 -1
- package/lib/dependencies/CssUrlDependency.js +46 -16
- package/lib/dependencies/DelegatedSourceDependency.js +3 -0
- package/lib/dependencies/DllEntryDependency.js +14 -0
- package/lib/dependencies/DynamicExports.js +10 -6
- package/lib/dependencies/ExportsInfoDependency.js +25 -4
- package/lib/dependencies/HarmonyAcceptDependency.js +10 -1
- package/lib/dependencies/HarmonyAcceptImportDependency.js +3 -0
- package/lib/dependencies/HarmonyCompatibilityDependency.js +2 -1
- package/lib/dependencies/HarmonyDetectionParserPlugin.js +22 -2
- package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +32 -6
- package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +5 -0
- package/lib/dependencies/HarmonyExportExpressionDependency.js +20 -3
- package/lib/dependencies/HarmonyExportHeaderDependency.js +13 -0
- package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +22 -6
- package/lib/dependencies/HarmonyExportInitFragment.js +2 -1
- package/lib/dependencies/HarmonyExportSpecifierDependency.js +12 -0
- package/lib/dependencies/HarmonyExports.js +11 -5
- package/lib/dependencies/HarmonyImportDependency.js +10 -1
- package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +53 -22
- package/lib/dependencies/HarmonyImportSideEffectDependency.js +7 -2
- package/lib/dependencies/HarmonyImportSpecifierDependency.js +139 -16
- package/lib/dependencies/HarmonyModulesPlugin.js +23 -5
- package/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +15 -3
- package/lib/dependencies/ImportContextDependency.js +15 -0
- package/lib/dependencies/ImportDependency.js +15 -4
- package/lib/dependencies/ImportEagerDependency.js +7 -4
- package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +51 -13
- package/lib/dependencies/ImportMetaContextPlugin.js +18 -5
- package/lib/dependencies/ImportMetaHotAcceptDependency.js +6 -0
- package/lib/dependencies/ImportMetaHotDeclineDependency.js +6 -0
- package/lib/dependencies/ImportMetaPlugin.js +103 -51
- package/lib/dependencies/ImportParserPlugin.js +83 -25
- package/lib/dependencies/ImportPlugin.js +21 -7
- package/lib/dependencies/ImportWeakDependency.js +7 -4
- package/lib/dependencies/JsonExportsDependency.js +9 -1
- package/lib/dependencies/LocalModule.js +16 -0
- package/lib/dependencies/LocalModuleDependency.js +15 -0
- package/lib/dependencies/LocalModulesHelpers.js +18 -0
- package/lib/dependencies/ModuleDecoratorDependency.js +8 -0
- package/lib/dependencies/ModuleDependency.js +9 -1
- package/lib/dependencies/ModuleDependencyTemplateAsId.js +2 -1
- package/lib/dependencies/ModuleHotAcceptDependency.js +6 -0
- package/lib/dependencies/ModuleHotDeclineDependency.js +6 -0
- package/lib/dependencies/PrefetchDependency.js +3 -0
- package/lib/dependencies/ProvidedDependency.js +14 -2
- package/lib/dependencies/PureExpressionDependency.js +10 -1
- package/lib/dependencies/RequireContextDependency.js +6 -0
- package/lib/dependencies/RequireContextDependencyParserPlugin.js +13 -5
- package/lib/dependencies/RequireContextPlugin.js +19 -6
- package/lib/dependencies/RequireEnsureDependenciesBlock.js +7 -0
- package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +6 -1
- package/lib/dependencies/RequireEnsureDependency.js +16 -2
- package/lib/dependencies/RequireEnsureItemDependency.js +3 -0
- package/lib/dependencies/RequireEnsurePlugin.js +27 -7
- package/lib/dependencies/RequireHeaderDependency.js +14 -1
- package/lib/dependencies/RequireIncludeDependency.js +5 -0
- package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +29 -5
- package/lib/dependencies/RequireIncludePlugin.js +25 -5
- package/lib/dependencies/RequireResolveContextDependency.js +17 -0
- package/lib/dependencies/RequireResolveDependency.js +6 -0
- package/lib/dependencies/RequireResolveHeaderDependency.js +18 -0
- package/lib/dependencies/RuntimeRequirementsDependency.js +8 -0
- package/lib/dependencies/StaticExportsDependency.js +8 -0
- package/lib/dependencies/SystemPlugin.js +48 -21
- package/lib/dependencies/SystemRuntimeModule.js +1 -1
- package/lib/dependencies/URLDependency.js +13 -4
- package/lib/dependencies/URLPlugin.js +31 -18
- package/lib/dependencies/UnsupportedDependency.js +13 -0
- package/lib/dependencies/WebAssemblyExportImportedDependency.js +14 -0
- package/lib/dependencies/WebAssemblyImportDependency.js +9 -1
- package/lib/dependencies/WebpackIsIncludedDependency.js +5 -0
- package/lib/dependencies/WorkerDependency.js +47 -3
- package/lib/dependencies/WorkerPlugin.js +105 -32
- package/lib/dependencies/getFunctionExpression.js +7 -0
- package/lib/esm/ExportWebpackRequireRuntimeModule.js +3 -2
- package/lib/esm/ModuleChunkFormatPlugin.js +21 -8
- package/lib/esm/ModuleChunkLoadingPlugin.js +9 -0
- package/lib/esm/ModuleChunkLoadingRuntimeModule.js +19 -12
- package/lib/hmr/HotModuleReplacementRuntimeModule.js +1 -1
- package/lib/hmr/LazyCompilationPlugin.js +14 -5
- package/lib/ids/ChunkModuleIdRangePlugin.js +11 -0
- package/lib/ids/DeterministicChunkIdsPlugin.js +11 -2
- package/lib/ids/DeterministicModuleIdsPlugin.js +11 -7
- package/lib/ids/HashedModuleIdsPlugin.js +9 -2
- package/lib/ids/IdHelpers.js +6 -0
- package/lib/ids/NamedChunkIdsPlugin.js +13 -1
- package/lib/ids/NamedModuleIdsPlugin.js +14 -3
- package/lib/ids/OccurrenceChunkIdsPlugin.js +6 -2
- package/lib/ids/OccurrenceModuleIdsPlugin.js +1 -1
- package/lib/ids/SyncModuleIdsPlugin.js +3 -2
- package/lib/index.js +8 -0
- package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +3 -3
- package/lib/javascript/BasicEvaluatedExpression.js +137 -11
- package/lib/javascript/ChunkHelpers.js +2 -2
- package/lib/javascript/CommonJsChunkFormatPlugin.js +7 -3
- package/lib/javascript/EnableChunkLoadingPlugin.js +4 -0
- package/lib/javascript/JavascriptModulesPlugin.js +217 -198
- package/lib/javascript/JavascriptParser.js +941 -256
- package/lib/javascript/JavascriptParserHelpers.js +37 -15
- package/lib/javascript/StartupHelpers.js +2 -2
- package/lib/json/JsonData.js +26 -1
- package/lib/json/JsonGenerator.js +21 -7
- package/lib/json/JsonModulesPlugin.js +14 -5
- package/lib/json/JsonParser.js +27 -13
- package/lib/library/AbstractLibraryPlugin.js +4 -0
- package/lib/library/AmdLibraryPlugin.js +22 -6
- package/lib/library/AssignLibraryPlugin.js +19 -5
- package/lib/library/EnableLibraryPlugin.js +4 -0
- package/lib/library/ExportPropertyLibraryPlugin.js +4 -1
- package/lib/library/ModuleLibraryPlugin.js +8 -4
- package/lib/library/SystemLibraryPlugin.js +2 -1
- package/lib/library/UmdLibraryPlugin.js +24 -2
- package/lib/logging/runtime.js +1 -1
- package/lib/logging/truncateArgs.js +4 -0
- package/lib/node/CommonJsChunkLoadingPlugin.js +17 -2
- package/lib/node/NodeTargetPlugin.js +3 -0
- package/lib/node/NodeTemplatePlugin.js +10 -2
- package/lib/node/NodeWatchFileSystem.js +1 -1
- package/lib/node/ReadFileChunkLoadingRuntimeModule.js +18 -9
- package/lib/node/ReadFileCompileAsyncWasmPlugin.js +12 -2
- package/lib/node/ReadFileCompileWasmPlugin.js +21 -3
- package/lib/node/RequireChunkLoadingRuntimeModule.js +15 -8
- package/lib/node/nodeConsole.js +2 -4
- package/lib/optimize/AggressiveMergingPlugin.js +8 -0
- package/lib/optimize/AggressiveSplittingPlugin.js +9 -2
- package/lib/optimize/ConcatenatedModule.js +8 -6
- package/lib/optimize/EnsureChunkConditionsPlugin.js +3 -0
- package/lib/optimize/FlagIncludedChunksPlugin.js +11 -5
- package/lib/optimize/InnerGraph.js +5 -5
- package/lib/optimize/InnerGraphPlugin.js +57 -48
- package/lib/optimize/LimitChunkCountPlugin.js +29 -4
- package/lib/optimize/MangleExportsPlugin.js +1 -1
- package/lib/optimize/MinMaxSizeWarning.js +5 -0
- package/lib/optimize/ModuleConcatenationPlugin.js +59 -2
- package/lib/optimize/RealContentHashPlugin.js +86 -30
- package/lib/optimize/RemoveParentModulesPlugin.js +6 -0
- package/lib/optimize/RuntimeChunkPlugin.js +9 -1
- package/lib/optimize/SideEffectsFlagPlugin.js +53 -44
- package/lib/optimize/SplitChunksPlugin.js +71 -31
- package/lib/performance/SizeLimitsPlugin.js +7 -4
- package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +4 -2
- package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +3 -1
- package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +6 -3
- package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +4 -2
- package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +4 -2
- package/lib/rules/BasicEffectRulePlugin.js +4 -0
- package/lib/rules/BasicMatcherRulePlugin.js +5 -0
- package/lib/rules/RuleSetCompiler.js +3 -3
- package/lib/rules/UseEffectRulePlugin.js +6 -4
- package/lib/runtime/AsyncModuleRuntimeModule.js +9 -6
- package/lib/runtime/AutoPublicPathRuntimeModule.js +16 -5
- package/lib/runtime/BaseUriRuntimeModule.js +8 -4
- package/lib/runtime/ChunkNameRuntimeModule.js +1 -1
- package/lib/runtime/CompatGetDefaultExportRuntimeModule.js +5 -2
- package/lib/runtime/CompatRuntimeModule.js +7 -2
- package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +5 -2
- package/lib/runtime/CreateScriptRuntimeModule.js +4 -2
- package/lib/runtime/CreateScriptUrlRuntimeModule.js +4 -2
- package/lib/runtime/DefinePropertyGettersRuntimeModule.js +5 -2
- package/lib/runtime/EnsureChunkRuntimeModule.js +18 -4
- package/lib/runtime/GetChunkFilenameRuntimeModule.js +45 -26
- package/lib/runtime/GetFullHashRuntimeModule.js +4 -3
- package/lib/runtime/GetMainFilenameRuntimeModule.js +5 -2
- package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +27 -6
- package/lib/runtime/GlobalRuntimeModule.js +1 -1
- package/lib/runtime/HasOwnPropertyRuntimeModule.js +5 -2
- package/lib/runtime/LoadScriptRuntimeModule.js +65 -50
- package/lib/runtime/MakeNamespaceObjectRuntimeModule.js +5 -2
- package/lib/runtime/NonceRuntimeModule.js +1 -1
- package/lib/runtime/OnChunksLoadedRuntimeModule.js +4 -2
- package/lib/runtime/PublicPathRuntimeModule.js +9 -2
- package/lib/runtime/RelativeUrlRuntimeModule.js +5 -2
- package/lib/runtime/RuntimeIdRuntimeModule.js +6 -2
- package/lib/runtime/StartupChunkDependenciesPlugin.js +15 -0
- package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +13 -4
- package/lib/runtime/StartupEntrypointRuntimeModule.js +11 -7
- package/lib/runtime/SystemContextRuntimeModule.js +1 -1
- package/lib/schemes/DataUriPlugin.js +16 -3
- package/lib/schemes/HttpUriPlugin.js +38 -0
- package/lib/serialization/ArraySerializer.js +22 -6
- package/lib/serialization/BinaryMiddleware.js +164 -1
- package/lib/serialization/DateObjectSerializer.js +15 -4
- package/lib/serialization/ErrorObjectSerializer.js +23 -8
- package/lib/serialization/FileMiddleware.js +17 -0
- package/lib/serialization/MapObjectSerializer.js +24 -8
- package/lib/serialization/NullPrototypeObjectSerializer.js +25 -8
- package/lib/serialization/ObjectMiddleware.js +33 -2
- package/lib/serialization/PlainObjectSerializer.js +23 -12
- package/lib/serialization/RegExpObjectSerializer.js +16 -5
- package/lib/serialization/SetObjectSerializer.js +21 -6
- package/lib/serialization/types.js +1 -1
- package/lib/sharing/ConsumeSharedFallbackDependency.js +3 -0
- package/lib/sharing/ConsumeSharedModule.js +13 -2
- package/lib/sharing/ConsumeSharedPlugin.js +4 -0
- package/lib/sharing/ConsumeSharedRuntimeModule.js +22 -7
- package/lib/sharing/ProvideSharedDependency.js +17 -0
- package/lib/sharing/ProvideSharedModule.js +11 -1
- package/lib/sharing/ProvideSharedModuleFactory.js +1 -1
- package/lib/sharing/ProvideSharedPlugin.js +22 -21
- package/lib/sharing/ShareRuntimeModule.js +19 -9
- package/lib/sharing/resolveMatchedConfigs.js +1 -1
- package/lib/sharing/utils.js +320 -7
- package/lib/stats/DefaultStatsFactoryPlugin.js +105 -29
- package/lib/stats/DefaultStatsPresetPlugin.js +9 -0
- package/lib/stats/DefaultStatsPrinterPlugin.js +43 -0
- package/lib/util/AsyncQueue.js +4 -2
- package/lib/util/LazySet.js +10 -2
- package/lib/util/MapHelpers.js +19 -5
- package/lib/util/ParallelismFactorCalculator.js +10 -0
- package/lib/util/Semaphore.js +1 -1
- package/lib/util/StackedCacheMap.js +7 -1
- package/lib/util/StringXor.js +51 -0
- package/lib/util/URLAbsoluteSpecifier.js +1 -1
- package/lib/util/binarySearchBounds.js +49 -0
- package/lib/util/compileBooleanMatcher.js +31 -0
- package/lib/util/createHash.js +35 -13
- package/lib/util/deprecation.js +18 -3
- package/lib/util/deterministicGrouping.js +50 -11
- package/lib/util/findGraphRoots.js +4 -2
- package/lib/util/hash/md4.js +2 -2
- package/lib/util/hash/xxhash64.js +1 -1
- package/lib/util/identifier.js +4 -0
- package/lib/util/internalSerializables.js +1 -0
- package/lib/util/makeSerializable.js +7 -0
- package/lib/util/memoize.js +3 -3
- package/lib/util/numberHash.js +75 -21
- package/lib/util/processAsyncTree.js +7 -1
- package/lib/util/propertyAccess.js +9 -54
- package/lib/util/propertyName.js +79 -0
- package/lib/util/registerExternalSerializer.js +1 -1
- package/lib/util/runtime.js +84 -21
- package/lib/util/semver.js +2 -1
- package/lib/util/serialization.js +10 -0
- package/lib/util/smartGrouping.js +1 -1
- package/lib/validateSchema.js +6 -2
- package/lib/wasm/EnableWasmLoadingPlugin.js +4 -0
- package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +15 -2
- package/lib/wasm-async/AsyncWebAssemblyGenerator.js +9 -1
- package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +14 -3
- package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +28 -8
- package/lib/wasm-async/AsyncWebAssemblyParser.js +11 -4
- package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +39 -8
- package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +17 -6
- package/lib/wasm-sync/WebAssemblyGenerator.js +19 -5
- package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +1 -1
- package/lib/wasm-sync/WebAssemblyModulesPlugin.js +53 -43
- package/lib/wasm-sync/WebAssemblyParser.js +15 -4
- package/lib/wasm-sync/WebAssemblyUtils.js +1 -1
- package/lib/web/FetchCompileAsyncWasmPlugin.js +11 -1
- package/lib/web/FetchCompileWasmPlugin.js +59 -42
- package/lib/web/JsonpChunkLoadingPlugin.js +9 -0
- package/lib/web/JsonpChunkLoadingRuntimeModule.js +26 -9
- package/lib/webpack.js +12 -3
- package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +9 -0
- package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +20 -17
- package/module.d.ts +55 -37
- package/package.json +59 -56
- package/schemas/WebpackOptions.check.js +1 -1
- package/schemas/WebpackOptions.json +133 -6
- package/schemas/plugins/ProgressPlugin.check.js +1 -1
- package/schemas/plugins/SourceMapDevToolPlugin.check.js +1 -1
- package/schemas/plugins/SourceMapDevToolPlugin.json +4 -0
- package/schemas/plugins/container/ContainerPlugin.check.js +1 -1
- package/schemas/plugins/container/ContainerPlugin.json +8 -0
- package/schemas/plugins/container/ModuleFederationPlugin.check.js +1 -1
- package/schemas/plugins/container/ModuleFederationPlugin.json +8 -0
- package/schemas/plugins/css/CssGeneratorOptions.json +1 -1
- package/schemas/plugins/css/CssParserOptions.json +1 -1
- package/schemas/plugins/sharing/SharePlugin.check.js +1 -1
- package/types.d.ts +1629 -683
package/lib/ConstPlugin.js
CHANGED
@@ -5,19 +5,36 @@
|
|
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").
|
14
|
-
/** @typedef {import("estree").
|
18
|
+
/** @typedef {import("estree").AssignmentProperty} AssignmentProperty */
|
19
|
+
/** @typedef {import("estree").Expression} Expression */
|
20
|
+
/** @typedef {import("estree").Identifier} Identifier */
|
21
|
+
/** @typedef {import("estree").Pattern} Pattern */
|
22
|
+
/** @typedef {import("estree").SourceLocation} SourceLocation */
|
23
|
+
/** @typedef {import("estree").Statement} Statement */
|
24
|
+
/** @typedef {import("estree").Super} Super */
|
15
25
|
/** @typedef {import("./Compiler")} Compiler */
|
26
|
+
/** @typedef {import("./javascript/BasicEvaluatedExpression")} BasicEvaluatedExpression */
|
27
|
+
/** @typedef {import("./javascript/JavascriptParser")} JavascriptParser */
|
28
|
+
/** @typedef {import("./javascript/JavascriptParser").Range} Range */
|
16
29
|
|
30
|
+
/**
|
31
|
+
* @param {Set<string>} declarations set of declarations
|
32
|
+
* @param {Identifier | Pattern} pattern pattern to collect declarations from
|
33
|
+
*/
|
17
34
|
const collectDeclaration = (declarations, pattern) => {
|
18
35
|
const stack = [pattern];
|
19
36
|
while (stack.length > 0) {
|
20
|
-
const node = stack.pop();
|
37
|
+
const node = /** @type {Pattern} */ (stack.pop());
|
21
38
|
switch (node.type) {
|
22
39
|
case "Identifier":
|
23
40
|
declarations.add(node.name);
|
@@ -34,7 +51,7 @@ const collectDeclaration = (declarations, pattern) => {
|
|
34
51
|
break;
|
35
52
|
case "ObjectPattern":
|
36
53
|
for (const property of node.properties) {
|
37
|
-
stack.push(property.value);
|
54
|
+
stack.push(/** @type {AssignmentProperty} */ (property).value);
|
38
55
|
}
|
39
56
|
break;
|
40
57
|
case "RestElement":
|
@@ -44,8 +61,14 @@ const collectDeclaration = (declarations, pattern) => {
|
|
44
61
|
}
|
45
62
|
};
|
46
63
|
|
64
|
+
/**
|
65
|
+
* @param {Statement} branch branch to get hoisted declarations from
|
66
|
+
* @param {boolean} includeFunctionDeclarations whether to include function declarations
|
67
|
+
* @returns {Array<string>} hoisted declarations
|
68
|
+
*/
|
47
69
|
const getHoistedDeclarations = (branch, includeFunctionDeclarations) => {
|
48
70
|
const declarations = new Set();
|
71
|
+
/** @type {Array<TODO | null | undefined>} */
|
49
72
|
const stack = [branch];
|
50
73
|
while (stack.length > 0) {
|
51
74
|
const node = stack.pop();
|
@@ -93,7 +116,7 @@ const getHoistedDeclarations = (branch, includeFunctionDeclarations) => {
|
|
93
116
|
break;
|
94
117
|
case "FunctionDeclaration":
|
95
118
|
if (includeFunctionDeclarations) {
|
96
|
-
collectDeclaration(declarations, node.id);
|
119
|
+
collectDeclaration(declarations, /** @type {Identifier} */ (node.id));
|
97
120
|
}
|
98
121
|
break;
|
99
122
|
case "VariableDeclaration":
|
@@ -108,6 +131,8 @@ const getHoistedDeclarations = (branch, includeFunctionDeclarations) => {
|
|
108
131
|
return Array.from(declarations);
|
109
132
|
};
|
110
133
|
|
134
|
+
const PLUGIN_NAME = "ConstPlugin";
|
135
|
+
|
111
136
|
class ConstPlugin {
|
112
137
|
/**
|
113
138
|
* Apply the plugin
|
@@ -117,7 +142,7 @@ class ConstPlugin {
|
|
117
142
|
apply(compiler) {
|
118
143
|
const cachedParseResource = parseResource.bindCache(compiler.root);
|
119
144
|
compiler.hooks.compilation.tap(
|
120
|
-
|
145
|
+
PLUGIN_NAME,
|
121
146
|
(compilation, { normalModuleFactory }) => {
|
122
147
|
compilation.dependencyTemplates.set(
|
123
148
|
ConstDependency,
|
@@ -129,15 +154,21 @@ class ConstPlugin {
|
|
129
154
|
new CachedConstDependency.Template()
|
130
155
|
);
|
131
156
|
|
157
|
+
/**
|
158
|
+
* @param {JavascriptParser} parser the parser
|
159
|
+
*/
|
132
160
|
const handler = parser => {
|
133
|
-
parser.hooks.statementIf.tap(
|
161
|
+
parser.hooks.statementIf.tap(PLUGIN_NAME, statement => {
|
134
162
|
if (parser.scope.isAsmJs) return;
|
135
163
|
const param = parser.evaluateExpression(statement.test);
|
136
164
|
const bool = param.asBool();
|
137
165
|
if (typeof bool === "boolean") {
|
138
166
|
if (!param.couldHaveSideEffects()) {
|
139
|
-
const dep = new ConstDependency(
|
140
|
-
|
167
|
+
const dep = new ConstDependency(
|
168
|
+
`${bool}`,
|
169
|
+
/** @type {Range} */ (param.range)
|
170
|
+
);
|
171
|
+
dep.loc = /** @type {SourceLocation} */ (statement.loc);
|
141
172
|
parser.state.module.addPresentationalDependency(dep);
|
142
173
|
} else {
|
143
174
|
parser.walkExpression(statement.test);
|
@@ -193,24 +224,27 @@ class ConstPlugin {
|
|
193
224
|
}
|
194
225
|
const dep = new ConstDependency(
|
195
226
|
replacement,
|
196
|
-
branchToRemove.range
|
227
|
+
/** @type {Range} */ (branchToRemove.range)
|
197
228
|
);
|
198
|
-
dep.loc = branchToRemove.loc;
|
229
|
+
dep.loc = /** @type {SourceLocation} */ (branchToRemove.loc);
|
199
230
|
parser.state.module.addPresentationalDependency(dep);
|
200
231
|
}
|
201
232
|
return bool;
|
202
233
|
}
|
203
234
|
});
|
204
235
|
parser.hooks.expressionConditionalOperator.tap(
|
205
|
-
|
236
|
+
PLUGIN_NAME,
|
206
237
|
expression => {
|
207
238
|
if (parser.scope.isAsmJs) return;
|
208
239
|
const param = parser.evaluateExpression(expression.test);
|
209
240
|
const bool = param.asBool();
|
210
241
|
if (typeof bool === "boolean") {
|
211
242
|
if (!param.couldHaveSideEffects()) {
|
212
|
-
const dep = new ConstDependency(
|
213
|
-
|
243
|
+
const dep = new ConstDependency(
|
244
|
+
` ${bool}`,
|
245
|
+
/** @type {Range} */ (param.range)
|
246
|
+
);
|
247
|
+
dep.loc = /** @type {SourceLocation} */ (expression.loc);
|
214
248
|
parser.state.module.addPresentationalDependency(dep);
|
215
249
|
} else {
|
216
250
|
parser.walkExpression(expression.test);
|
@@ -229,15 +263,18 @@ class ConstPlugin {
|
|
229
263
|
const branchToRemove = bool
|
230
264
|
? expression.alternate
|
231
265
|
: expression.consequent;
|
232
|
-
const dep = new ConstDependency(
|
233
|
-
|
266
|
+
const dep = new ConstDependency(
|
267
|
+
"0",
|
268
|
+
/** @type {Range} */ (branchToRemove.range)
|
269
|
+
);
|
270
|
+
dep.loc = /** @type {SourceLocation} */ (branchToRemove.loc);
|
234
271
|
parser.state.module.addPresentationalDependency(dep);
|
235
272
|
return bool;
|
236
273
|
}
|
237
274
|
}
|
238
275
|
);
|
239
276
|
parser.hooks.expressionLogicalOperator.tap(
|
240
|
-
|
277
|
+
PLUGIN_NAME,
|
241
278
|
expression => {
|
242
279
|
if (parser.scope.isAsmJs) return;
|
243
280
|
if (
|
@@ -306,8 +343,11 @@ class ConstPlugin {
|
|
306
343
|
//
|
307
344
|
// returnfalse&&'foo'
|
308
345
|
//
|
309
|
-
const dep = new ConstDependency(
|
310
|
-
|
346
|
+
const dep = new ConstDependency(
|
347
|
+
` ${bool}`,
|
348
|
+
/** @type {Range} */ (param.range)
|
349
|
+
);
|
350
|
+
dep.loc = /** @type {SourceLocation} */ (expression.loc);
|
311
351
|
parser.state.module.addPresentationalDependency(dep);
|
312
352
|
} else {
|
313
353
|
parser.walkExpression(expression.left);
|
@@ -315,9 +355,9 @@ class ConstPlugin {
|
|
315
355
|
if (!keepRight) {
|
316
356
|
const dep = new ConstDependency(
|
317
357
|
"0",
|
318
|
-
expression.right.range
|
358
|
+
/** @type {Range} */ (expression.right.range)
|
319
359
|
);
|
320
|
-
dep.loc = expression.loc;
|
360
|
+
dep.loc = /** @type {SourceLocation} */ (expression.loc);
|
321
361
|
parser.state.module.addPresentationalDependency(dep);
|
322
362
|
}
|
323
363
|
return keepRight;
|
@@ -356,15 +396,18 @@ class ConstPlugin {
|
|
356
396
|
//
|
357
397
|
// returnnull??'foo'
|
358
398
|
//
|
359
|
-
const dep = new ConstDependency(
|
360
|
-
|
399
|
+
const dep = new ConstDependency(
|
400
|
+
" null",
|
401
|
+
/** @type {Range} */ (param.range)
|
402
|
+
);
|
403
|
+
dep.loc = /** @type {SourceLocation} */ (expression.loc);
|
361
404
|
parser.state.module.addPresentationalDependency(dep);
|
362
405
|
} else {
|
363
406
|
const dep = new ConstDependency(
|
364
407
|
"0",
|
365
|
-
expression.right.range
|
408
|
+
/** @type {Range} */ (expression.right.range)
|
366
409
|
);
|
367
|
-
dep.loc = expression.loc;
|
410
|
+
dep.loc = /** @type {SourceLocation} */ (expression.loc);
|
368
411
|
parser.state.module.addPresentationalDependency(dep);
|
369
412
|
parser.walkExpression(expression.left);
|
370
413
|
}
|
@@ -374,10 +417,10 @@ class ConstPlugin {
|
|
374
417
|
}
|
375
418
|
}
|
376
419
|
);
|
377
|
-
parser.hooks.optionalChaining.tap(
|
378
|
-
/** @type {
|
420
|
+
parser.hooks.optionalChaining.tap(PLUGIN_NAME, expr => {
|
421
|
+
/** @type {Expression[]} */
|
379
422
|
const optionalExpressionsStack = [];
|
380
|
-
/** @type {
|
423
|
+
/** @type {Expression | Super} */
|
381
424
|
let next = expr.expression;
|
382
425
|
|
383
426
|
while (
|
@@ -388,7 +431,7 @@ class ConstPlugin {
|
|
388
431
|
if (next.optional) {
|
389
432
|
// SuperNode can not be optional
|
390
433
|
optionalExpressionsStack.push(
|
391
|
-
/** @type {
|
434
|
+
/** @type {Expression} */ (next.object)
|
392
435
|
);
|
393
436
|
}
|
394
437
|
next = next.object;
|
@@ -396,7 +439,7 @@ class ConstPlugin {
|
|
396
439
|
if (next.optional) {
|
397
440
|
// SuperNode can not be optional
|
398
441
|
optionalExpressionsStack.push(
|
399
|
-
/** @type {
|
442
|
+
/** @type {Expression} */ (next.callee)
|
400
443
|
);
|
401
444
|
}
|
402
445
|
next = next.callee;
|
@@ -405,7 +448,9 @@ class ConstPlugin {
|
|
405
448
|
|
406
449
|
while (optionalExpressionsStack.length) {
|
407
450
|
const expression = optionalExpressionsStack.pop();
|
408
|
-
const evaluated = parser.evaluateExpression(
|
451
|
+
const evaluated = parser.evaluateExpression(
|
452
|
+
/** @type {Expression} */ (expression)
|
453
|
+
);
|
409
454
|
|
410
455
|
if (evaluated.asNullish()) {
|
411
456
|
// ------------------------------------------
|
@@ -420,8 +465,11 @@ class ConstPlugin {
|
|
420
465
|
//
|
421
466
|
// ------------------------------------------
|
422
467
|
//
|
423
|
-
const dep = new ConstDependency(
|
424
|
-
|
468
|
+
const dep = new ConstDependency(
|
469
|
+
" undefined",
|
470
|
+
/** @type {Range} */ (expr.range)
|
471
|
+
);
|
472
|
+
dep.loc = /** @type {SourceLocation} */ (expr.loc);
|
425
473
|
parser.state.module.addPresentationalDependency(dep);
|
426
474
|
return true;
|
427
475
|
}
|
@@ -429,7 +477,7 @@ class ConstPlugin {
|
|
429
477
|
});
|
430
478
|
parser.hooks.evaluateIdentifier
|
431
479
|
.for("__resourceQuery")
|
432
|
-
.tap(
|
480
|
+
.tap(PLUGIN_NAME, expr => {
|
433
481
|
if (parser.scope.isAsmJs) return;
|
434
482
|
if (!parser.state.module) return;
|
435
483
|
return evaluateToString(
|
@@ -438,24 +486,24 @@ class ConstPlugin {
|
|
438
486
|
});
|
439
487
|
parser.hooks.expression
|
440
488
|
.for("__resourceQuery")
|
441
|
-
.tap(
|
489
|
+
.tap(PLUGIN_NAME, expr => {
|
442
490
|
if (parser.scope.isAsmJs) return;
|
443
491
|
if (!parser.state.module) return;
|
444
492
|
const dep = new CachedConstDependency(
|
445
493
|
JSON.stringify(
|
446
494
|
cachedParseResource(parser.state.module.resource).query
|
447
495
|
),
|
448
|
-
expr.range,
|
496
|
+
/** @type {Range} */ (expr.range),
|
449
497
|
"__resourceQuery"
|
450
498
|
);
|
451
|
-
dep.loc = expr.loc;
|
499
|
+
dep.loc = /** @type {SourceLocation} */ (expr.loc);
|
452
500
|
parser.state.module.addPresentationalDependency(dep);
|
453
501
|
return true;
|
454
502
|
});
|
455
503
|
|
456
504
|
parser.hooks.evaluateIdentifier
|
457
505
|
.for("__resourceFragment")
|
458
|
-
.tap(
|
506
|
+
.tap(PLUGIN_NAME, expr => {
|
459
507
|
if (parser.scope.isAsmJs) return;
|
460
508
|
if (!parser.state.module) return;
|
461
509
|
return evaluateToString(
|
@@ -464,31 +512,31 @@ class ConstPlugin {
|
|
464
512
|
});
|
465
513
|
parser.hooks.expression
|
466
514
|
.for("__resourceFragment")
|
467
|
-
.tap(
|
515
|
+
.tap(PLUGIN_NAME, expr => {
|
468
516
|
if (parser.scope.isAsmJs) return;
|
469
517
|
if (!parser.state.module) return;
|
470
518
|
const dep = new CachedConstDependency(
|
471
519
|
JSON.stringify(
|
472
520
|
cachedParseResource(parser.state.module.resource).fragment
|
473
521
|
),
|
474
|
-
expr.range,
|
522
|
+
/** @type {Range} */ (expr.range),
|
475
523
|
"__resourceFragment"
|
476
524
|
);
|
477
|
-
dep.loc = expr.loc;
|
525
|
+
dep.loc = /** @type {SourceLocation} */ (expr.loc);
|
478
526
|
parser.state.module.addPresentationalDependency(dep);
|
479
527
|
return true;
|
480
528
|
});
|
481
529
|
};
|
482
530
|
|
483
531
|
normalModuleFactory.hooks.parser
|
484
|
-
.for(
|
485
|
-
.tap(
|
532
|
+
.for(JAVASCRIPT_MODULE_TYPE_AUTO)
|
533
|
+
.tap(PLUGIN_NAME, handler);
|
486
534
|
normalModuleFactory.hooks.parser
|
487
|
-
.for(
|
488
|
-
.tap(
|
535
|
+
.for(JAVASCRIPT_MODULE_TYPE_DYNAMIC)
|
536
|
+
.tap(PLUGIN_NAME, handler);
|
489
537
|
normalModuleFactory.hooks.parser
|
490
|
-
.for(
|
491
|
-
.tap(
|
538
|
+
.for(JAVASCRIPT_MODULE_TYPE_ESM)
|
539
|
+
.tap(PLUGIN_NAME, handler);
|
492
540
|
}
|
493
541
|
);
|
494
542
|
}
|
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;
|