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
@@ -74,9 +74,9 @@ class ModuleGraphConnection {
|
|
74
74
|
this.weak = weak;
|
75
75
|
this.conditional = !!condition;
|
76
76
|
this._active = condition !== false;
|
77
|
-
/** @type {function(ModuleGraphConnection, RuntimeSpec): ConnectionState} */
|
77
|
+
/** @type {(function(ModuleGraphConnection, RuntimeSpec): ConnectionState) | undefined} */
|
78
78
|
this.condition = condition || undefined;
|
79
|
-
/** @type {Set<string>} */
|
79
|
+
/** @type {Set<string> | undefined} */
|
80
80
|
this.explanations = undefined;
|
81
81
|
if (explanation) {
|
82
82
|
this.explanations = new Set();
|
@@ -107,7 +107,9 @@ class ModuleGraphConnection {
|
|
107
107
|
*/
|
108
108
|
addCondition(condition) {
|
109
109
|
if (this.conditional) {
|
110
|
-
const old =
|
110
|
+
const old =
|
111
|
+
/** @type {(function(ModuleGraphConnection, RuntimeSpec): ConnectionState)} */
|
112
|
+
(this.condition);
|
111
113
|
this.condition = (c, r) =>
|
112
114
|
intersectConnectionStates(old(c, r), condition(c, r));
|
113
115
|
} else if (this._active) {
|
@@ -143,7 +145,12 @@ class ModuleGraphConnection {
|
|
143
145
|
*/
|
144
146
|
isActive(runtime) {
|
145
147
|
if (!this.conditional) return this._active;
|
146
|
-
|
148
|
+
|
149
|
+
return (
|
150
|
+
/** @type {(function(ModuleGraphConnection, RuntimeSpec): ConnectionState)} */ (
|
151
|
+
this.condition
|
152
|
+
)(this, runtime) !== false
|
153
|
+
);
|
147
154
|
}
|
148
155
|
|
149
156
|
/**
|
@@ -152,7 +159,11 @@ class ModuleGraphConnection {
|
|
152
159
|
*/
|
153
160
|
isTargetActive(runtime) {
|
154
161
|
if (!this.conditional) return this._active;
|
155
|
-
return
|
162
|
+
return (
|
163
|
+
/** @type {(function(ModuleGraphConnection, RuntimeSpec): ConnectionState)} */ (
|
164
|
+
this.condition
|
165
|
+
)(this, runtime) === true
|
166
|
+
);
|
156
167
|
}
|
157
168
|
|
158
169
|
/**
|
@@ -161,7 +172,9 @@ class ModuleGraphConnection {
|
|
161
172
|
*/
|
162
173
|
getActiveState(runtime) {
|
163
174
|
if (!this.conditional) return this._active;
|
164
|
-
return
|
175
|
+
return /** @type {(function(ModuleGraphConnection, RuntimeSpec): ConnectionState)} */ (
|
176
|
+
this.condition
|
177
|
+
)(this, runtime);
|
165
178
|
}
|
166
179
|
|
167
180
|
/**
|
@@ -15,10 +15,16 @@ const JavascriptModulesPlugin = require("./javascript/JavascriptModulesPlugin");
|
|
15
15
|
/** @typedef {import("./ExportsInfo")} ExportsInfo */
|
16
16
|
/** @typedef {import("./ExportsInfo").ExportInfo} ExportInfo */
|
17
17
|
/** @typedef {import("./Module")} Module */
|
18
|
+
/** @typedef {import("./Module").BuildMeta} BuildMeta */
|
18
19
|
/** @typedef {import("./ModuleGraph")} ModuleGraph */
|
19
20
|
/** @typedef {import("./ModuleTemplate")} ModuleTemplate */
|
20
21
|
/** @typedef {import("./RequestShortener")} RequestShortener */
|
21
22
|
|
23
|
+
/**
|
24
|
+
* @template T
|
25
|
+
* @param {Iterable<T>} iterable iterable
|
26
|
+
* @returns {string} joined with comma
|
27
|
+
*/
|
22
28
|
const joinIterableWithComma = iterable => {
|
23
29
|
// This is more performant than Array.from().join(", ")
|
24
30
|
// as it doesn't create an array
|
@@ -139,7 +145,7 @@ const printExportsInfoToSource = (
|
|
139
145
|
}
|
140
146
|
};
|
141
147
|
|
142
|
-
/** @type {WeakMap<RequestShortener, WeakMap<Module, { header: RawSource, full: WeakMap<Source, CachedSource> }>>} */
|
148
|
+
/** @type {WeakMap<RequestShortener, WeakMap<Module, { header: RawSource | undefined, full: WeakMap<Source, CachedSource> }>>} */
|
143
149
|
const caches = new WeakMap();
|
144
150
|
|
145
151
|
class ModuleInfoHeaderPlugin {
|
@@ -197,7 +203,8 @@ class ModuleInfoHeaderPlugin {
|
|
197
203
|
}
|
198
204
|
source.add(header);
|
199
205
|
if (verbose) {
|
200
|
-
const exportsType = module.buildMeta
|
206
|
+
const exportsType = /** @type {BuildMeta} */ (module.buildMeta)
|
207
|
+
.exportsType;
|
201
208
|
source.add(
|
202
209
|
Template.toComment(
|
203
210
|
exportsType
|
@@ -43,7 +43,7 @@ const previouslyPolyfilledBuiltinModules = {
|
|
43
43
|
|
44
44
|
class ModuleNotFoundError extends WebpackError {
|
45
45
|
/**
|
46
|
-
* @param {Module} module module tied to dependency
|
46
|
+
* @param {Module | null} module module tied to dependency
|
47
47
|
* @param {Error&any} err error thrown
|
48
48
|
* @param {DependencyLocation} loc location of dependency
|
49
49
|
*/
|
@@ -54,7 +54,10 @@ class ModuleNotFoundError extends WebpackError {
|
|
54
54
|
const match = err.message.match(/Can't resolve '([^']+)'/);
|
55
55
|
if (match) {
|
56
56
|
const request = match[1];
|
57
|
-
const alias =
|
57
|
+
const alias =
|
58
|
+
previouslyPolyfilledBuiltinModules[
|
59
|
+
/** @type {keyof previouslyPolyfilledBuiltinModules} */ (request)
|
60
|
+
];
|
58
61
|
if (alias) {
|
59
62
|
const pathIndex = alias.indexOf("/");
|
60
63
|
const dependency = pathIndex > 0 ? alias.slice(0, pathIndex) : alias;
|
package/lib/ModuleParseError.js
CHANGED
@@ -8,6 +8,9 @@
|
|
8
8
|
const WebpackError = require("./WebpackError");
|
9
9
|
const makeSerializable = require("./util/makeSerializable");
|
10
10
|
|
11
|
+
/** @typedef {import("./serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
|
12
|
+
/** @typedef {import("./serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
|
13
|
+
|
11
14
|
const WASM_HEADER = Buffer.from([0x00, 0x61, 0x73, 0x6d]);
|
12
15
|
|
13
16
|
class ModuleParseError extends WebpackError {
|
@@ -87,6 +90,9 @@ class ModuleParseError extends WebpackError {
|
|
87
90
|
this.error = err;
|
88
91
|
}
|
89
92
|
|
93
|
+
/**
|
94
|
+
* @param {ObjectSerializerContext} context context
|
95
|
+
*/
|
90
96
|
serialize(context) {
|
91
97
|
const { write } = context;
|
92
98
|
|
@@ -95,6 +101,9 @@ class ModuleParseError extends WebpackError {
|
|
95
101
|
super.serialize(context);
|
96
102
|
}
|
97
103
|
|
104
|
+
/**
|
105
|
+
* @param {ObjectDeserializerContext} context context
|
106
|
+
*/
|
98
107
|
deserialize(context) {
|
99
108
|
const { read } = context;
|
100
109
|
|
package/lib/ModuleProfile.js
CHANGED
@@ -34,6 +34,7 @@ class ModuleProfile {
|
|
34
34
|
this.storing = 0;
|
35
35
|
this.storingParallelismFactor = 0;
|
36
36
|
|
37
|
+
/** @type {{ start: number, end: number }[] | undefined } */
|
37
38
|
this.additionalFactoryTimes = undefined;
|
38
39
|
this.additionalFactories = 0;
|
39
40
|
this.additionalFactoriesParallelismFactor = 0;
|
@@ -16,6 +16,7 @@ class ModuleRestoreError extends WebpackError {
|
|
16
16
|
*/
|
17
17
|
constructor(module, err) {
|
18
18
|
let message = "Module restore failed: ";
|
19
|
+
/** @type {string | undefined} */
|
19
20
|
let details = undefined;
|
20
21
|
if (err !== null && typeof err === "object") {
|
21
22
|
if (typeof err.stack === "string" && err.stack) {
|
@@ -33,6 +34,7 @@ class ModuleRestoreError extends WebpackError {
|
|
33
34
|
super(message);
|
34
35
|
|
35
36
|
this.name = "ModuleRestoreError";
|
37
|
+
/** @type {string | undefined} */
|
36
38
|
this.details = details;
|
37
39
|
this.module = module;
|
38
40
|
this.error = err;
|
package/lib/ModuleStoreError.js
CHANGED
@@ -16,6 +16,7 @@ class ModuleStoreError extends WebpackError {
|
|
16
16
|
*/
|
17
17
|
constructor(module, err) {
|
18
18
|
let message = "Module storing failed: ";
|
19
|
+
/** @type {string | undefined} */
|
19
20
|
let details = undefined;
|
20
21
|
if (err !== null && typeof err === "object") {
|
21
22
|
if (typeof err.stack === "string" && err.stack) {
|
@@ -33,7 +34,7 @@ class ModuleStoreError extends WebpackError {
|
|
33
34
|
super(message);
|
34
35
|
|
35
36
|
this.name = "ModuleStoreError";
|
36
|
-
this.details = details;
|
37
|
+
this.details = /** @type {string | undefined} */ (details);
|
37
38
|
this.module = module;
|
38
39
|
this.error = err;
|
39
40
|
}
|
@@ -0,0 +1,169 @@
|
|
1
|
+
/*
|
2
|
+
MIT License http://www.opensource.org/licenses/mit-license.php
|
3
|
+
Author Sean Larkin @TheLarkInn
|
4
|
+
*/
|
5
|
+
|
6
|
+
"use strict";
|
7
|
+
|
8
|
+
/**
|
9
|
+
* @type {Readonly<"javascript/auto">}
|
10
|
+
*/
|
11
|
+
const JAVASCRIPT_MODULE_TYPE_AUTO = "javascript/auto";
|
12
|
+
|
13
|
+
/**
|
14
|
+
* @type {Readonly<"javascript/dynamic">}
|
15
|
+
*/
|
16
|
+
const JAVASCRIPT_MODULE_TYPE_DYNAMIC = "javascript/dynamic";
|
17
|
+
|
18
|
+
/**
|
19
|
+
* @type {Readonly<"javascript/esm">}
|
20
|
+
* This is the module type used for _strict_ ES Module syntax. This means that all legacy formats
|
21
|
+
* that webpack supports (CommonJS, AMD, SystemJS) are not supported.
|
22
|
+
*/
|
23
|
+
const JAVASCRIPT_MODULE_TYPE_ESM = "javascript/esm";
|
24
|
+
|
25
|
+
/**
|
26
|
+
* @type {Readonly<"json">}
|
27
|
+
* This is the module type used for JSON files. JSON files are always parsed as ES Module.
|
28
|
+
*/
|
29
|
+
const JSON_MODULE_TYPE = "json";
|
30
|
+
|
31
|
+
/**
|
32
|
+
* @type {Readonly<"webassembly/async">}
|
33
|
+
* This is the module type used for WebAssembly modules. In webpack 5 they are always treated as async modules.
|
34
|
+
*
|
35
|
+
*/
|
36
|
+
const WEBASSEMBLY_MODULE_TYPE_ASYNC = "webassembly/async";
|
37
|
+
|
38
|
+
/**
|
39
|
+
* @type {Readonly<"webassembly/sync">}
|
40
|
+
* This is the module type used for WebAssembly modules. In webpack 4 they are always treated as sync modules.
|
41
|
+
* There is a legacy option to support this usage in webpack 5 and up.
|
42
|
+
*/
|
43
|
+
const WEBASSEMBLY_MODULE_TYPE_SYNC = "webassembly/sync";
|
44
|
+
|
45
|
+
/**
|
46
|
+
* @type {Readonly<"css">}
|
47
|
+
* This is the module type used for CSS files.
|
48
|
+
*/
|
49
|
+
const CSS_MODULE_TYPE = "css";
|
50
|
+
|
51
|
+
/**
|
52
|
+
* @type {Readonly<"css/global">}
|
53
|
+
* This is the module type used for CSS modules files where you need to use `:local` in selector list to hash classes.
|
54
|
+
*/
|
55
|
+
const CSS_MODULE_TYPE_GLOBAL = "css/global";
|
56
|
+
|
57
|
+
/**
|
58
|
+
* @type {Readonly<"css/module">}
|
59
|
+
* This is the module type used for CSS modules files, by default all classes are hashed.
|
60
|
+
*/
|
61
|
+
const CSS_MODULE_TYPE_MODULE = "css/module";
|
62
|
+
|
63
|
+
/**
|
64
|
+
* @type {Readonly<"css/auto">}
|
65
|
+
* This is the module type used for CSS files, the module will be parsed as CSS modules if it's filename contains `.module.` or `.modules.`.
|
66
|
+
*/
|
67
|
+
const CSS_MODULE_TYPE_AUTO = "css/auto";
|
68
|
+
|
69
|
+
/**
|
70
|
+
* @type {Readonly<"asset">}
|
71
|
+
* This is the module type used for automatically choosing between `asset/inline`, `asset/resource` based on asset size limit (8096).
|
72
|
+
*/
|
73
|
+
const ASSET_MODULE_TYPE = "asset";
|
74
|
+
|
75
|
+
/**
|
76
|
+
* @type {Readonly<"asset/inline">}
|
77
|
+
* This is the module type used for assets that are inlined as a data URI. This is the equivalent of `url-loader`.
|
78
|
+
*/
|
79
|
+
const ASSET_MODULE_TYPE_INLINE = "asset/inline";
|
80
|
+
|
81
|
+
/**
|
82
|
+
* @type {Readonly<"asset/resource">}
|
83
|
+
* This is the module type used for assets that are copied to the output directory. This is the equivalent of `file-loader`.
|
84
|
+
*/
|
85
|
+
const ASSET_MODULE_TYPE_RESOURCE = "asset/resource";
|
86
|
+
|
87
|
+
/**
|
88
|
+
* @type {Readonly<"asset/source">}
|
89
|
+
* This is the module type used for assets that are imported as source code. This is the equivalent of `raw-loader`.
|
90
|
+
*/
|
91
|
+
const ASSET_MODULE_TYPE_SOURCE = "asset/source";
|
92
|
+
|
93
|
+
/**
|
94
|
+
* @type {Readonly<"asset/raw-data-url">}
|
95
|
+
* TODO: Document what this asset type is for. See css-loader tests for its usage.
|
96
|
+
*/
|
97
|
+
const ASSET_MODULE_TYPE_RAW_DATA_URL = "asset/raw-data-url";
|
98
|
+
|
99
|
+
/**
|
100
|
+
* @type {Readonly<"runtime">}
|
101
|
+
* This is the module type used for the webpack runtime abstractions.
|
102
|
+
*/
|
103
|
+
const WEBPACK_MODULE_TYPE_RUNTIME = "runtime";
|
104
|
+
|
105
|
+
/**
|
106
|
+
* @type {Readonly<"fallback-module">}
|
107
|
+
* This is the module type used for the ModuleFederation feature's FallbackModule class.
|
108
|
+
* TODO: Document this better.
|
109
|
+
*/
|
110
|
+
const WEBPACK_MODULE_TYPE_FALLBACK = "fallback-module";
|
111
|
+
|
112
|
+
/**
|
113
|
+
* @type {Readonly<"remote-module">}
|
114
|
+
* This is the module type used for the ModuleFederation feature's RemoteModule class.
|
115
|
+
* TODO: Document this better.
|
116
|
+
*/
|
117
|
+
const WEBPACK_MODULE_TYPE_REMOTE = "remote-module";
|
118
|
+
|
119
|
+
/**
|
120
|
+
* @type {Readonly<"provide-module">}
|
121
|
+
* This is the module type used for the ModuleFederation feature's ProvideModule class.
|
122
|
+
* TODO: Document this better.
|
123
|
+
*/
|
124
|
+
const WEBPACK_MODULE_TYPE_PROVIDE = "provide-module";
|
125
|
+
|
126
|
+
/**
|
127
|
+
* @type {Readonly<"consume-shared-module">}
|
128
|
+
* This is the module type used for the ModuleFederation feature's ConsumeSharedModule class.
|
129
|
+
*/
|
130
|
+
const WEBPACK_MODULE_TYPE_CONSUME_SHARED_MODULE = "consume-shared-module";
|
131
|
+
|
132
|
+
/**
|
133
|
+
* @type {Readonly<"lazy-compilation-proxy">}
|
134
|
+
* Module type used for `experiments.lazyCompilation` feature. See `LazyCompilationPlugin` for more information.
|
135
|
+
*/
|
136
|
+
const WEBPACK_MODULE_TYPE_LAZY_COMPILATION_PROXY = "lazy-compilation-proxy";
|
137
|
+
|
138
|
+
/** @typedef {"javascript/auto" | "javascript/dynamic" | "javascript/esm"} JavaScriptModuleTypes */
|
139
|
+
/** @typedef {"json"} JSONModuleType */
|
140
|
+
/** @typedef {"webassembly/async" | "webassembly/sync"} WebAssemblyModuleTypes */
|
141
|
+
/** @typedef {"css" | "css/global" | "css/module"} CSSModuleTypes */
|
142
|
+
/** @typedef {"asset" | "asset/inline" | "asset/resource" | "asset/source" | "asset/raw-data-url"} AssetModuleTypes */
|
143
|
+
/** @typedef {"runtime" | "fallback-module" | "remote-module" | "provide-module" | "consume-shared-module" | "lazy-compilation-proxy"} WebpackModuleTypes */
|
144
|
+
/** @typedef {string} UnknownModuleTypes */
|
145
|
+
/** @typedef {JavaScriptModuleTypes | JSONModuleType | WebAssemblyModuleTypes | CSSModuleTypes | AssetModuleTypes | WebpackModuleTypes | UnknownModuleTypes} ModuleTypes */
|
146
|
+
|
147
|
+
exports.ASSET_MODULE_TYPE = ASSET_MODULE_TYPE;
|
148
|
+
exports.ASSET_MODULE_TYPE_RAW_DATA_URL = ASSET_MODULE_TYPE_RAW_DATA_URL;
|
149
|
+
exports.ASSET_MODULE_TYPE_SOURCE = ASSET_MODULE_TYPE_SOURCE;
|
150
|
+
exports.ASSET_MODULE_TYPE_RESOURCE = ASSET_MODULE_TYPE_RESOURCE;
|
151
|
+
exports.ASSET_MODULE_TYPE_INLINE = ASSET_MODULE_TYPE_INLINE;
|
152
|
+
exports.JAVASCRIPT_MODULE_TYPE_AUTO = JAVASCRIPT_MODULE_TYPE_AUTO;
|
153
|
+
exports.JAVASCRIPT_MODULE_TYPE_DYNAMIC = JAVASCRIPT_MODULE_TYPE_DYNAMIC;
|
154
|
+
exports.JAVASCRIPT_MODULE_TYPE_ESM = JAVASCRIPT_MODULE_TYPE_ESM;
|
155
|
+
exports.JSON_MODULE_TYPE = JSON_MODULE_TYPE;
|
156
|
+
exports.WEBASSEMBLY_MODULE_TYPE_ASYNC = WEBASSEMBLY_MODULE_TYPE_ASYNC;
|
157
|
+
exports.WEBASSEMBLY_MODULE_TYPE_SYNC = WEBASSEMBLY_MODULE_TYPE_SYNC;
|
158
|
+
exports.CSS_MODULE_TYPE = CSS_MODULE_TYPE;
|
159
|
+
exports.CSS_MODULE_TYPE_GLOBAL = CSS_MODULE_TYPE_GLOBAL;
|
160
|
+
exports.CSS_MODULE_TYPE_MODULE = CSS_MODULE_TYPE_MODULE;
|
161
|
+
exports.CSS_MODULE_TYPE_AUTO = CSS_MODULE_TYPE_AUTO;
|
162
|
+
exports.WEBPACK_MODULE_TYPE_RUNTIME = WEBPACK_MODULE_TYPE_RUNTIME;
|
163
|
+
exports.WEBPACK_MODULE_TYPE_FALLBACK = WEBPACK_MODULE_TYPE_FALLBACK;
|
164
|
+
exports.WEBPACK_MODULE_TYPE_REMOTE = WEBPACK_MODULE_TYPE_REMOTE;
|
165
|
+
exports.WEBPACK_MODULE_TYPE_PROVIDE = WEBPACK_MODULE_TYPE_PROVIDE;
|
166
|
+
exports.WEBPACK_MODULE_TYPE_CONSUME_SHARED_MODULE =
|
167
|
+
WEBPACK_MODULE_TYPE_CONSUME_SHARED_MODULE;
|
168
|
+
exports.WEBPACK_MODULE_TYPE_LAZY_COMPILATION_PROXY =
|
169
|
+
WEBPACK_MODULE_TYPE_LAZY_COMPILATION_PROXY;
|
package/lib/ModuleWarning.js
CHANGED
@@ -9,6 +9,9 @@ const { cleanUp } = require("./ErrorHelpers");
|
|
9
9
|
const WebpackError = require("./WebpackError");
|
10
10
|
const makeSerializable = require("./util/makeSerializable");
|
11
11
|
|
12
|
+
/** @typedef {import("./serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
|
13
|
+
/** @typedef {import("./serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
|
14
|
+
|
12
15
|
class ModuleWarning extends WebpackError {
|
13
16
|
/**
|
14
17
|
* @param {Error} warning error thrown
|
@@ -39,6 +42,9 @@ class ModuleWarning extends WebpackError {
|
|
39
42
|
: undefined;
|
40
43
|
}
|
41
44
|
|
45
|
+
/**
|
46
|
+
* @param {ObjectSerializerContext} context context
|
47
|
+
*/
|
42
48
|
serialize(context) {
|
43
49
|
const { write } = context;
|
44
50
|
|
@@ -47,6 +53,9 @@ class ModuleWarning extends WebpackError {
|
|
47
53
|
super.serialize(context);
|
48
54
|
}
|
49
55
|
|
56
|
+
/**
|
57
|
+
* @param {ObjectDeserializerContext} context context
|
58
|
+
*/
|
50
59
|
deserialize(context) {
|
51
60
|
const { read } = context;
|
52
61
|
|
package/lib/MultiWatching.js
CHANGED
package/lib/NodeStuffPlugin.js
CHANGED
@@ -5,6 +5,10 @@
|
|
5
5
|
|
6
6
|
"use strict";
|
7
7
|
|
8
|
+
const {
|
9
|
+
JAVASCRIPT_MODULE_TYPE_AUTO,
|
10
|
+
JAVASCRIPT_MODULE_TYPE_DYNAMIC
|
11
|
+
} = require("./ModuleTypeConstants");
|
8
12
|
const NodeStuffInWebError = require("./NodeStuffInWebError");
|
9
13
|
const RuntimeGlobals = require("./RuntimeGlobals");
|
10
14
|
const CachedConstDependency = require("./dependencies/CachedConstDependency");
|
@@ -17,12 +21,23 @@ const { relative } = require("./util/fs");
|
|
17
21
|
const { parseResource } = require("./util/identifier");
|
18
22
|
|
19
23
|
/** @typedef {import("webpack-sources").ReplaceSource} ReplaceSource */
|
24
|
+
/** @typedef {import("../declarations/WebpackOptions").JavascriptParserOptions} JavascriptParserOptions */
|
25
|
+
/** @typedef {import("../declarations/WebpackOptions").NodeOptions} NodeOptions */
|
20
26
|
/** @typedef {import("./Compiler")} Compiler */
|
21
27
|
/** @typedef {import("./Dependency")} Dependency */
|
28
|
+
/** @typedef {import("./Dependency").DependencyLocation} DependencyLocation */
|
22
29
|
/** @typedef {import("./DependencyTemplates")} DependencyTemplates */
|
30
|
+
/** @typedef {import("./NormalModule")} NormalModule */
|
23
31
|
/** @typedef {import("./RuntimeTemplate")} RuntimeTemplate */
|
32
|
+
/** @typedef {import("./javascript/JavascriptParser")} JavascriptParser */
|
33
|
+
/** @typedef {import("./javascript/JavascriptParser").Range} Range */
|
34
|
+
|
35
|
+
const PLUGIN_NAME = "NodeStuffPlugin";
|
24
36
|
|
25
37
|
class NodeStuffPlugin {
|
38
|
+
/**
|
39
|
+
* @param {NodeOptions} options options
|
40
|
+
*/
|
26
41
|
constructor(options) {
|
27
42
|
this.options = options;
|
28
43
|
}
|
@@ -35,8 +50,13 @@ class NodeStuffPlugin {
|
|
35
50
|
apply(compiler) {
|
36
51
|
const options = this.options;
|
37
52
|
compiler.hooks.compilation.tap(
|
38
|
-
|
53
|
+
PLUGIN_NAME,
|
39
54
|
(compilation, { normalModuleFactory }) => {
|
55
|
+
/**
|
56
|
+
* @param {JavascriptParser} parser the parser
|
57
|
+
* @param {JavascriptParserOptions} parserOptions options
|
58
|
+
* @returns {void}
|
59
|
+
*/
|
40
60
|
const handler = (parser, parserOptions) => {
|
41
61
|
if (parserOptions.node === false) return;
|
42
62
|
|
@@ -47,50 +67,54 @@ class NodeStuffPlugin {
|
|
47
67
|
|
48
68
|
if (localOptions.global !== false) {
|
49
69
|
const withWarning = localOptions.global === "warn";
|
50
|
-
parser.hooks.expression
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
dep.loc = expr.loc;
|
59
|
-
parser.state.module.addPresentationalDependency(dep);
|
70
|
+
parser.hooks.expression.for("global").tap(PLUGIN_NAME, expr => {
|
71
|
+
const dep = new ConstDependency(
|
72
|
+
RuntimeGlobals.global,
|
73
|
+
/** @type {Range} */ (expr.range),
|
74
|
+
[RuntimeGlobals.global]
|
75
|
+
);
|
76
|
+
dep.loc = /** @type {DependencyLocation} */ (expr.loc);
|
77
|
+
parser.state.module.addPresentationalDependency(dep);
|
60
78
|
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
parser.hooks.rename.for("global").tap(
|
79
|
+
// TODO webpack 6 remove
|
80
|
+
if (withWarning) {
|
81
|
+
parser.state.module.addWarning(
|
82
|
+
new NodeStuffInWebError(
|
83
|
+
dep.loc,
|
84
|
+
"global",
|
85
|
+
"The global namespace object is a Node.js feature and isn't available in browsers."
|
86
|
+
)
|
87
|
+
);
|
88
|
+
}
|
89
|
+
});
|
90
|
+
parser.hooks.rename.for("global").tap(PLUGIN_NAME, expr => {
|
73
91
|
const dep = new ConstDependency(
|
74
92
|
RuntimeGlobals.global,
|
75
|
-
expr.range,
|
93
|
+
/** @type {Range} */ (expr.range),
|
76
94
|
[RuntimeGlobals.global]
|
77
95
|
);
|
78
|
-
dep.loc = expr.loc;
|
96
|
+
dep.loc = /** @type {DependencyLocation} */ (expr.loc);
|
79
97
|
parser.state.module.addPresentationalDependency(dep);
|
80
98
|
return false;
|
81
99
|
});
|
82
100
|
}
|
83
101
|
|
102
|
+
/**
|
103
|
+
* @param {string} expressionName expression name
|
104
|
+
* @param {(module: NormalModule) => string} fn function
|
105
|
+
* @param {string=} warning warning
|
106
|
+
* @returns {void}
|
107
|
+
*/
|
84
108
|
const setModuleConstant = (expressionName, fn, warning) => {
|
85
109
|
parser.hooks.expression
|
86
110
|
.for(expressionName)
|
87
|
-
.tap(
|
111
|
+
.tap(PLUGIN_NAME, expr => {
|
88
112
|
const dep = new CachedConstDependency(
|
89
113
|
JSON.stringify(fn(parser.state.module)),
|
90
|
-
expr.range,
|
114
|
+
/** @type {Range} */ (expr.range),
|
91
115
|
expressionName
|
92
116
|
);
|
93
|
-
dep.loc = expr.loc;
|
117
|
+
dep.loc = /** @type {DependencyLocation} */ (expr.loc);
|
94
118
|
parser.state.module.addPresentationalDependency(dep);
|
95
119
|
|
96
120
|
// TODO webpack 6 remove
|
@@ -104,6 +128,12 @@ class NodeStuffPlugin {
|
|
104
128
|
});
|
105
129
|
};
|
106
130
|
|
131
|
+
/**
|
132
|
+
* @param {string} expressionName expression name
|
133
|
+
* @param {string} value value
|
134
|
+
* @param {string=} warning warning
|
135
|
+
* @returns {void}
|
136
|
+
*/
|
107
137
|
const setConstant = (expressionName, value, warning) =>
|
108
138
|
setModuleConstant(expressionName, () => value, warning);
|
109
139
|
|
@@ -129,7 +159,7 @@ class NodeStuffPlugin {
|
|
129
159
|
|
130
160
|
parser.hooks.evaluateIdentifier
|
131
161
|
.for("__filename")
|
132
|
-
.tap(
|
162
|
+
.tap(PLUGIN_NAME, expr => {
|
133
163
|
if (!parser.state.module) return;
|
134
164
|
const resource = parseResource(parser.state.module.resource);
|
135
165
|
return evaluateToString(resource.path)(expr);
|
@@ -156,7 +186,7 @@ class NodeStuffPlugin {
|
|
156
186
|
|
157
187
|
parser.hooks.evaluateIdentifier
|
158
188
|
.for("__dirname")
|
159
|
-
.tap(
|
189
|
+
.tap(PLUGIN_NAME, expr => {
|
160
190
|
if (!parser.state.module) return;
|
161
191
|
return evaluateToString(parser.state.module.context)(expr);
|
162
192
|
});
|
@@ -164,7 +194,7 @@ class NodeStuffPlugin {
|
|
164
194
|
parser.hooks.expression
|
165
195
|
.for("require.extensions")
|
166
196
|
.tap(
|
167
|
-
|
197
|
+
PLUGIN_NAME,
|
168
198
|
expressionIsUnsupported(
|
169
199
|
parser,
|
170
200
|
"require.extensions is not supported by webpack. Use a loader instead."
|
@@ -173,11 +203,11 @@ class NodeStuffPlugin {
|
|
173
203
|
};
|
174
204
|
|
175
205
|
normalModuleFactory.hooks.parser
|
176
|
-
.for(
|
177
|
-
.tap(
|
206
|
+
.for(JAVASCRIPT_MODULE_TYPE_AUTO)
|
207
|
+
.tap(PLUGIN_NAME, handler);
|
178
208
|
normalModuleFactory.hooks.parser
|
179
|
-
.for(
|
180
|
-
.tap(
|
209
|
+
.for(JAVASCRIPT_MODULE_TYPE_DYNAMIC)
|
210
|
+
.tap(PLUGIN_NAME, handler);
|
181
211
|
}
|
182
212
|
);
|
183
213
|
}
|
package/lib/NormalModule.js
CHANGED
@@ -22,6 +22,7 @@ const ModuleBuildError = require("./ModuleBuildError");
|
|
22
22
|
const ModuleError = require("./ModuleError");
|
23
23
|
const ModuleGraphConnection = require("./ModuleGraphConnection");
|
24
24
|
const ModuleParseError = require("./ModuleParseError");
|
25
|
+
const { JAVASCRIPT_MODULE_TYPE_AUTO } = require("./ModuleTypeConstants");
|
25
26
|
const ModuleWarning = require("./ModuleWarning");
|
26
27
|
const RuntimeGlobals = require("./RuntimeGlobals");
|
27
28
|
const UnhandledSchemeError = require("./UnhandledSchemeError");
|
@@ -64,12 +65,15 @@ const memoize = require("./util/memoize");
|
|
64
65
|
/** @typedef {import("./Module").NeedBuildContext} NeedBuildContext */
|
65
66
|
/** @typedef {import("./ModuleGraph")} ModuleGraph */
|
66
67
|
/** @typedef {import("./ModuleGraphConnection").ConnectionState} ConnectionState */
|
68
|
+
/** @typedef {import("./ModuleTypeConstants").JavaScriptModuleTypes} JavaScriptModuleTypes */
|
67
69
|
/** @typedef {import("./NormalModuleFactory")} NormalModuleFactory */
|
68
70
|
/** @typedef {import("./Parser")} Parser */
|
69
71
|
/** @typedef {import("./RequestShortener")} RequestShortener */
|
70
72
|
/** @typedef {import("./ResolverFactory").ResolverWithOptions} ResolverWithOptions */
|
71
73
|
/** @typedef {import("./RuntimeTemplate")} RuntimeTemplate */
|
72
74
|
/** @typedef {import("./logging/Logger").Logger} WebpackLogger */
|
75
|
+
/** @typedef {import("./serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
|
76
|
+
/** @typedef {import("./serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
|
73
77
|
/** @typedef {import("./util/Hash")} Hash */
|
74
78
|
/** @typedef {import("./util/fs").InputFileSystem} InputFileSystem */
|
75
79
|
/** @typedef {import("./util/runtime").RuntimeSpec} RuntimeSpec */
|
@@ -198,7 +202,7 @@ makeSerializable(
|
|
198
202
|
/**
|
199
203
|
* @typedef {Object} NormalModuleCreateData
|
200
204
|
* @property {string=} layer an optional layer in which the module is
|
201
|
-
* @property {
|
205
|
+
* @property {JavaScriptModuleTypes | ""} type module type. When deserializing, this is set to an empty string "".
|
202
206
|
* @property {string} request request string
|
203
207
|
* @property {string} userRequest request intended by user (without loaders from config)
|
204
208
|
* @property {string} rawRequest request without resolving
|
@@ -339,7 +343,7 @@ class NormalModule extends Module {
|
|
339
343
|
*/
|
340
344
|
identifier() {
|
341
345
|
if (this.layer === null) {
|
342
|
-
if (this.type ===
|
346
|
+
if (this.type === JAVASCRIPT_MODULE_TYPE_AUTO) {
|
343
347
|
return this.request;
|
344
348
|
} else {
|
345
349
|
return `${this.type}|${this.request}`;
|
@@ -1364,6 +1368,9 @@ class NormalModule extends Module {
|
|
1364
1368
|
super.updateHash(hash, context);
|
1365
1369
|
}
|
1366
1370
|
|
1371
|
+
/**
|
1372
|
+
* @param {ObjectSerializerContext} context context
|
1373
|
+
*/
|
1367
1374
|
serialize(context) {
|
1368
1375
|
const { write } = context;
|
1369
1376
|
// deserialize
|
@@ -1398,6 +1405,9 @@ class NormalModule extends Module {
|
|
1398
1405
|
return obj;
|
1399
1406
|
}
|
1400
1407
|
|
1408
|
+
/**
|
1409
|
+
* @param {ObjectDeserializerContext} context context
|
1410
|
+
*/
|
1401
1411
|
deserialize(context) {
|
1402
1412
|
const { read } = context;
|
1403
1413
|
this._source = read();
|