webpack 5.59.0 → 5.94.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.
- package/README.md +48 -38
- package/bin/webpack.js +34 -10
- package/hot/dev-server.js +19 -5
- package/hot/lazy-compilation-node.js +13 -1
- package/hot/lazy-compilation-web.js +9 -0
- package/hot/log-apply-result.js +5 -0
- package/hot/log.js +23 -4
- package/hot/only-dev-server.js +3 -2
- package/hot/poll.js +5 -2
- package/hot/signal.js +6 -2
- package/lib/APIPlugin.js +226 -122
- package/lib/AbstractMethodError.js +10 -5
- package/lib/AsyncDependenciesBlock.js +13 -5
- package/lib/AutomaticPrefetchPlugin.js +2 -1
- package/lib/BannerPlugin.js +33 -12
- package/lib/Cache.js +16 -12
- package/lib/CacheFacade.js +13 -16
- package/lib/CaseSensitiveModulesWarning.js +8 -8
- package/lib/Chunk.js +60 -33
- package/lib/ChunkGraph.js +207 -72
- package/lib/ChunkGroup.js +40 -20
- package/lib/ChunkTemplate.js +43 -0
- package/lib/CleanPlugin.js +117 -32
- package/lib/CodeGenerationResults.js +8 -7
- package/lib/CommentCompilationWarning.js +0 -1
- package/lib/CompatibilityPlugin.js +85 -46
- package/lib/Compilation.js +712 -392
- package/lib/Compiler.js +393 -172
- package/lib/ConcatenationScope.js +10 -13
- package/lib/ConditionalInitFragment.js +22 -14
- package/lib/ConstPlugin.js +104 -64
- package/lib/ContextExclusionPlugin.js +3 -3
- package/lib/ContextModule.js +283 -108
- package/lib/ContextModuleFactory.js +151 -63
- package/lib/ContextReplacementPlugin.js +25 -10
- package/lib/CssModule.js +166 -0
- package/lib/DefinePlugin.js +254 -148
- package/lib/DelegatedModule.js +29 -6
- package/lib/DelegatedModuleFactoryPlugin.js +42 -22
- package/lib/DelegatedPlugin.js +4 -0
- package/lib/DependenciesBlock.js +17 -2
- package/lib/Dependency.js +58 -29
- package/lib/DependencyTemplate.js +24 -3
- package/lib/DependencyTemplates.js +2 -2
- package/lib/DllEntryPlugin.js +18 -1
- package/lib/DllModule.js +21 -4
- package/lib/DllModuleFactory.js +2 -1
- package/lib/DllPlugin.js +9 -7
- package/lib/DllReferencePlugin.js +50 -19
- package/lib/EntryOptionPlugin.js +6 -1
- package/lib/EntryPlugin.js +7 -4
- package/lib/Entrypoint.js +2 -2
- package/lib/EnvironmentNotSupportAsyncWarning.js +52 -0
- package/lib/EnvironmentPlugin.js +5 -2
- package/lib/ErrorHelpers.js +65 -26
- package/lib/EvalDevToolModulePlugin.js +37 -13
- package/lib/EvalSourceMapDevToolPlugin.js +50 -20
- package/lib/ExportsInfo.js +234 -133
- package/lib/ExportsInfoApiPlugin.js +31 -15
- package/lib/ExternalModule.js +391 -129
- package/lib/ExternalModuleFactoryPlugin.js +65 -17
- package/lib/FileSystemInfo.js +1038 -523
- package/lib/FlagAllModulesAsUsedPlugin.js +27 -27
- package/lib/FlagDependencyExportsPlugin.js +352 -349
- package/lib/FlagDependencyUsagePlugin.js +10 -10
- package/lib/FlagEntryExportAsUsedPlugin.js +26 -23
- package/lib/Generator.js +16 -8
- package/lib/GraphHelpers.js +3 -2
- package/lib/HookWebpackError.js +11 -13
- package/lib/HotModuleReplacementPlugin.js +221 -128
- package/lib/IgnoreErrorModuleFactory.js +4 -4
- package/lib/IgnorePlugin.js +5 -4
- package/lib/IgnoreWarningsPlugin.js +6 -9
- package/lib/InitFragment.js +39 -15
- package/lib/JavascriptMetaInfoPlugin.js +27 -15
- package/lib/LibManifestPlugin.js +45 -16
- package/lib/LoaderOptionsPlugin.js +13 -3
- package/lib/MainTemplate.js +74 -21
- package/lib/Module.js +155 -34
- package/lib/ModuleBuildError.js +13 -11
- package/lib/ModuleDependencyError.js +6 -4
- package/lib/ModuleDependencyWarning.js +6 -4
- package/lib/ModuleError.js +10 -5
- package/lib/ModuleFactory.js +4 -4
- package/lib/ModuleFilenameHelpers.js +164 -54
- package/lib/ModuleGraph.js +93 -53
- package/lib/ModuleGraphConnection.js +27 -13
- package/lib/ModuleHashingError.js +29 -0
- package/lib/ModuleInfoHeaderPlugin.js +92 -33
- package/lib/ModuleNotFoundError.js +5 -2
- package/lib/ModuleParseError.js +17 -9
- package/lib/ModuleProfile.js +1 -0
- package/lib/ModuleRestoreError.js +3 -1
- package/lib/ModuleStoreError.js +3 -2
- package/lib/ModuleTemplate.js +33 -1
- package/lib/ModuleTypeConstants.js +168 -0
- package/lib/ModuleWarning.js +10 -5
- package/lib/MultiCompiler.js +115 -38
- package/lib/MultiStats.js +75 -33
- package/lib/MultiWatching.js +6 -2
- package/lib/NodeStuffPlugin.js +136 -37
- package/lib/NormalModule.js +437 -194
- package/lib/NormalModuleFactory.js +313 -116
- package/lib/NormalModuleReplacementPlugin.js +10 -4
- package/lib/NullFactory.js +1 -1
- package/lib/OptimizationStages.js +3 -3
- package/lib/Parser.js +1 -1
- package/lib/PlatformPlugin.js +39 -0
- package/lib/PrefetchPlugin.js +4 -0
- package/lib/ProgressPlugin.js +83 -28
- package/lib/ProvidePlugin.js +37 -19
- package/lib/RawModule.js +18 -5
- package/lib/RecordIdsPlugin.js +8 -8
- package/lib/RequireJsStuffPlugin.js +22 -15
- package/lib/ResolverFactory.js +8 -4
- package/lib/RuntimeGlobals.js +99 -65
- package/lib/RuntimeModule.js +17 -15
- package/lib/RuntimePlugin.js +116 -13
- package/lib/RuntimeTemplate.js +304 -102
- package/lib/SelfModuleFactory.js +12 -0
- package/lib/SizeFormatHelpers.js +2 -4
- package/lib/SourceMapDevToolModuleOptionsPlugin.js +4 -0
- package/lib/SourceMapDevToolPlugin.js +89 -42
- package/lib/Stats.js +12 -7
- package/lib/Template.js +30 -33
- package/lib/TemplatedPathPlugin.js +102 -34
- package/lib/UseStrictPlugin.js +37 -12
- package/lib/WarnCaseSensitiveModulesPlugin.js +12 -0
- package/lib/WarnDeprecatedOptionPlugin.js +6 -0
- package/lib/WatchIgnorePlugin.js +46 -13
- package/lib/Watching.js +139 -76
- package/lib/WebpackError.js +14 -5
- package/lib/WebpackIsIncludedPlugin.js +22 -13
- package/lib/WebpackOptionsApply.js +162 -56
- package/lib/WebpackOptionsDefaulter.js +10 -3
- package/lib/asset/AssetGenerator.js +351 -99
- package/lib/asset/AssetModulesPlugin.js +57 -33
- package/lib/asset/AssetParser.js +15 -6
- package/lib/asset/AssetSourceGenerator.js +30 -10
- package/lib/asset/AssetSourceParser.js +8 -2
- package/lib/asset/RawDataUrlModule.js +162 -0
- package/lib/async-modules/AwaitDependenciesInitFragment.js +16 -13
- package/lib/async-modules/InferAsyncModulesPlugin.js +1 -1
- package/lib/buildChunkGraph.js +376 -420
- package/lib/cache/AddManagedPathsPlugin.js +6 -1
- package/lib/cache/IdleFileCachePlugin.js +26 -13
- package/lib/cache/MemoryCachePlugin.js +1 -1
- package/lib/cache/MemoryWithGcCachePlugin.js +13 -7
- package/lib/cache/PackFileCacheStrategy.js +172 -94
- package/lib/cache/ResolverCachePlugin.js +115 -43
- package/lib/cache/getLazyHashedEtag.js +2 -2
- package/lib/cache/mergeEtags.js +16 -21
- package/lib/cli.js +195 -110
- package/lib/config/browserslistTargetHandler.js +106 -41
- package/lib/config/defaults.js +572 -154
- package/lib/config/normalization.js +361 -322
- package/lib/config/target.js +105 -66
- package/lib/container/ContainerEntryDependency.js +2 -1
- package/lib/container/ContainerEntryModule.js +27 -11
- package/lib/container/ContainerEntryModuleFactory.js +1 -1
- package/lib/container/ContainerExposedDependency.js +9 -0
- package/lib/container/ContainerPlugin.js +18 -12
- package/lib/container/ContainerReferencePlugin.js +1 -1
- package/lib/container/FallbackDependency.js +13 -0
- package/lib/container/FallbackItemDependency.js +3 -0
- package/lib/container/FallbackModule.js +19 -8
- package/lib/container/FallbackModuleFactory.js +1 -1
- package/lib/container/ModuleFederationPlugin.js +2 -0
- package/lib/container/RemoteModule.js +17 -4
- package/lib/container/RemoteRuntimeModule.js +31 -17
- package/lib/container/RemoteToExternalDependency.js +3 -0
- package/lib/container/options.js +18 -4
- package/lib/css/CssExportsGenerator.js +203 -0
- package/lib/css/CssGenerator.js +151 -0
- package/lib/css/CssLoadingRuntimeModule.js +592 -0
- package/lib/css/CssModulesPlugin.js +888 -0
- package/lib/css/CssParser.js +1049 -0
- package/lib/css/walkCssTokens.js +775 -0
- package/lib/debug/ProfilingPlugin.js +102 -54
- package/lib/dependencies/AMDDefineDependency.js +54 -10
- package/lib/dependencies/AMDDefineDependencyParserPlugin.js +204 -61
- package/lib/dependencies/AMDPlugin.js +44 -24
- package/lib/dependencies/AMDRequireArrayDependency.js +34 -10
- package/lib/dependencies/AMDRequireContextDependency.js +15 -0
- package/lib/dependencies/AMDRequireDependenciesBlock.js +6 -0
- package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +185 -54
- package/lib/dependencies/AMDRequireDependency.js +21 -6
- package/lib/dependencies/AMDRequireItemDependency.js +6 -0
- package/lib/dependencies/AMDRuntimeModules.js +4 -4
- package/lib/dependencies/CachedConstDependency.js +22 -1
- package/lib/dependencies/CommonJsDependencyHelpers.js +16 -2
- package/lib/dependencies/CommonJsExportRequireDependency.js +77 -47
- package/lib/dependencies/CommonJsExportsDependency.js +28 -5
- package/lib/dependencies/CommonJsExportsParserPlugin.js +111 -39
- package/lib/dependencies/CommonJsFullRequireDependency.js +42 -8
- package/lib/dependencies/CommonJsImportsParserPlugin.js +530 -130
- package/lib/dependencies/CommonJsPlugin.js +51 -26
- package/lib/dependencies/CommonJsRequireContextDependency.js +23 -2
- package/lib/dependencies/CommonJsRequireDependency.js +9 -1
- package/lib/dependencies/CommonJsSelfReferenceDependency.js +22 -8
- package/lib/dependencies/ConstDependency.js +12 -3
- package/lib/dependencies/ContextDependency.js +32 -5
- package/lib/dependencies/ContextDependencyHelpers.js +92 -62
- package/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +4 -1
- package/lib/dependencies/ContextElementDependency.js +41 -4
- package/lib/dependencies/CreateScriptUrlDependency.js +22 -1
- package/lib/dependencies/CriticalDependencyWarning.js +4 -1
- package/lib/dependencies/CssExportDependency.js +156 -0
- package/lib/dependencies/CssImportDependency.js +125 -0
- package/lib/dependencies/CssLocalIdentifierDependency.js +245 -0
- package/lib/dependencies/CssSelfLocalIdentifierDependency.js +111 -0
- package/lib/dependencies/CssUrlDependency.js +164 -0
- package/lib/dependencies/DelegatedSourceDependency.js +3 -0
- package/lib/dependencies/DllEntryDependency.js +14 -0
- package/lib/dependencies/DynamicExports.js +15 -11
- package/lib/dependencies/ExportsInfoDependency.js +26 -5
- package/lib/dependencies/ExternalModuleDependency.js +109 -0
- package/lib/dependencies/ExternalModuleInitFragment.js +133 -0
- package/lib/dependencies/HarmonyAcceptDependency.js +11 -2
- package/lib/dependencies/HarmonyAcceptImportDependency.js +9 -4
- package/lib/dependencies/HarmonyCompatibilityDependency.js +6 -5
- package/lib/dependencies/HarmonyDetectionParserPlugin.js +29 -3
- package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +152 -0
- package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +96 -51
- package/lib/dependencies/HarmonyExportExpressionDependency.js +21 -4
- package/lib/dependencies/HarmonyExportHeaderDependency.js +13 -0
- package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +216 -108
- package/lib/dependencies/HarmonyExportInitFragment.js +21 -9
- package/lib/dependencies/HarmonyExportSpecifierDependency.js +12 -0
- package/lib/dependencies/HarmonyExports.js +13 -7
- package/lib/dependencies/HarmonyImportDependency.js +65 -19
- package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +268 -74
- package/lib/dependencies/HarmonyImportSideEffectDependency.js +11 -5
- package/lib/dependencies/HarmonyImportSpecifierDependency.js +180 -36
- package/lib/dependencies/HarmonyModulesPlugin.js +33 -5
- package/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +15 -3
- package/lib/dependencies/ImportContextDependency.js +15 -2
- package/lib/dependencies/ImportDependency.js +50 -12
- package/lib/dependencies/ImportEagerDependency.js +11 -6
- package/lib/dependencies/ImportMetaContextDependency.js +42 -0
- package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +301 -0
- package/lib/dependencies/ImportMetaContextPlugin.js +72 -0
- package/lib/dependencies/ImportMetaHotAcceptDependency.js +6 -0
- package/lib/dependencies/ImportMetaHotDeclineDependency.js +6 -0
- package/lib/dependencies/ImportMetaPlugin.js +128 -59
- package/lib/dependencies/ImportParserPlugin.js +153 -83
- package/lib/dependencies/ImportPlugin.js +21 -7
- package/lib/dependencies/ImportWeakDependency.js +11 -6
- package/lib/dependencies/JsonExportsDependency.js +38 -30
- package/lib/dependencies/LoaderDependency.js +14 -0
- package/lib/dependencies/LoaderImportDependency.js +14 -0
- package/lib/dependencies/LoaderPlugin.js +54 -40
- package/lib/dependencies/LocalModule.js +17 -1
- package/lib/dependencies/LocalModuleDependency.js +15 -0
- package/lib/dependencies/LocalModulesHelpers.js +22 -4
- package/lib/dependencies/ModuleDecoratorDependency.js +9 -1
- package/lib/dependencies/ModuleDependency.js +24 -7
- 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 +43 -8
- package/lib/dependencies/PureExpressionDependency.js +73 -39
- package/lib/dependencies/RequireContextDependency.js +6 -16
- package/lib/dependencies/RequireContextDependencyParserPlugin.js +14 -6
- package/lib/dependencies/RequireContextPlugin.js +20 -7
- package/lib/dependencies/RequireEnsureDependenciesBlock.js +7 -0
- package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +29 -12
- 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 +6 -1
- package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +29 -5
- package/lib/dependencies/RequireIncludePlugin.js +25 -5
- package/lib/dependencies/RequireResolveContextDependency.js +19 -2
- package/lib/dependencies/RequireResolveDependency.js +8 -1
- package/lib/dependencies/RequireResolveHeaderDependency.js +18 -0
- package/lib/dependencies/RuntimeRequirementsDependency.js +9 -1
- package/lib/dependencies/StaticExportsDependency.js +8 -0
- package/lib/dependencies/SystemPlugin.js +49 -22
- package/lib/dependencies/SystemRuntimeModule.js +1 -1
- package/lib/dependencies/URLDependency.js +20 -13
- package/lib/dependencies/URLPlugin.js +115 -27
- 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 +6 -1
- package/lib/dependencies/WorkerDependency.js +47 -3
- package/lib/dependencies/WorkerPlugin.js +143 -59
- package/lib/dependencies/getFunctionExpression.js +9 -0
- package/lib/dependencies/processExportInfo.js +3 -1
- package/lib/electron/ElectronTargetPlugin.js +1 -0
- package/lib/esm/ExportWebpackRequireRuntimeModule.js +3 -2
- package/lib/esm/ModuleChunkFormatPlugin.js +92 -55
- package/lib/esm/ModuleChunkLoadingPlugin.js +12 -1
- package/lib/esm/ModuleChunkLoadingRuntimeModule.js +141 -25
- package/lib/formatLocation.js +1 -2
- package/lib/hmr/HotModuleReplacement.runtime.js +37 -25
- package/lib/hmr/HotModuleReplacementRuntimeModule.js +2 -1
- package/lib/hmr/JavascriptHotModuleReplacement.runtime.js +13 -15
- package/lib/hmr/LazyCompilationPlugin.js +94 -41
- package/lib/hmr/lazyCompilationBackend.js +107 -44
- package/lib/ids/ChunkModuleIdRangePlugin.js +12 -3
- package/lib/ids/DeterministicChunkIdsPlugin.js +13 -6
- package/lib/ids/DeterministicModuleIdsPlugin.js +59 -35
- package/lib/ids/HashedModuleIdsPlugin.js +24 -16
- package/lib/ids/IdHelpers.js +59 -49
- package/lib/ids/NamedChunkIdsPlugin.js +13 -1
- package/lib/ids/NamedModuleIdsPlugin.js +20 -12
- package/lib/ids/NaturalModuleIdsPlugin.js +10 -13
- package/lib/ids/OccurrenceChunkIdsPlugin.js +6 -2
- package/lib/ids/OccurrenceModuleIdsPlugin.js +14 -11
- package/lib/ids/SyncModuleIdsPlugin.js +146 -0
- package/lib/index.js +44 -5
- package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +9 -7
- package/lib/javascript/BasicEvaluatedExpression.js +133 -19
- package/lib/javascript/ChunkHelpers.js +33 -0
- package/lib/javascript/CommonJsChunkFormatPlugin.js +18 -15
- package/lib/javascript/EnableChunkLoadingPlugin.js +11 -6
- package/lib/javascript/JavascriptGenerator.js +37 -6
- package/lib/javascript/JavascriptModulesPlugin.js +523 -295
- package/lib/javascript/JavascriptParser.js +1591 -574
- package/lib/javascript/JavascriptParserHelpers.js +58 -37
- package/lib/javascript/StartupHelpers.js +69 -47
- package/lib/json/JsonData.js +33 -0
- package/lib/json/JsonGenerator.js +29 -21
- package/lib/json/JsonModulesPlugin.js +13 -7
- package/lib/json/JsonParser.js +30 -16
- package/lib/library/AbstractLibraryPlugin.js +6 -2
- package/lib/library/AmdLibraryPlugin.js +34 -18
- package/lib/library/AssignLibraryPlugin.js +68 -32
- package/lib/library/EnableLibraryPlugin.js +39 -14
- package/lib/library/ExportPropertyLibraryPlugin.js +14 -5
- package/lib/library/JsonpLibraryPlugin.js +4 -3
- package/lib/library/ModernModuleLibraryPlugin.js +144 -0
- package/lib/library/ModuleLibraryPlugin.js +12 -7
- package/lib/library/SystemLibraryPlugin.js +6 -4
- package/lib/library/UmdLibraryPlugin.js +119 -100
- package/lib/logging/Logger.js +59 -6
- package/lib/logging/createConsoleLogger.js +25 -40
- package/lib/logging/runtime.js +8 -9
- package/lib/logging/truncateArgs.js +9 -8
- package/lib/node/CommonJsChunkLoadingPlugin.js +18 -2
- package/lib/node/NodeEnvironmentPlugin.js +14 -8
- package/lib/node/NodeTargetPlugin.js +7 -0
- package/lib/node/NodeTemplatePlugin.js +10 -2
- package/lib/node/NodeWatchFileSystem.js +100 -50
- package/lib/node/ReadFileChunkLoadingRuntimeModule.js +51 -26
- package/lib/node/ReadFileCompileAsyncWasmPlugin.js +13 -2
- package/lib/node/ReadFileCompileWasmPlugin.js +21 -3
- package/lib/node/RequireChunkLoadingRuntimeModule.js +49 -26
- package/lib/node/nodeConsole.js +48 -31
- package/lib/optimize/AggressiveMergingPlugin.js +10 -4
- package/lib/optimize/AggressiveSplittingPlugin.js +26 -21
- package/lib/optimize/ConcatenatedModule.js +353 -212
- package/lib/optimize/EnsureChunkConditionsPlugin.js +4 -1
- package/lib/optimize/FlagIncludedChunksPlugin.js +14 -8
- package/lib/optimize/InnerGraph.js +30 -25
- package/lib/optimize/InnerGraphPlugin.js +105 -64
- package/lib/optimize/LimitChunkCountPlugin.js +32 -9
- package/lib/optimize/MangleExportsPlugin.js +7 -2
- package/lib/optimize/MinMaxSizeWarning.js +6 -1
- package/lib/optimize/ModuleConcatenationPlugin.js +150 -83
- package/lib/optimize/RealContentHashPlugin.js +99 -43
- package/lib/optimize/RemoveParentModulesPlugin.js +131 -48
- package/lib/optimize/RuntimeChunkPlugin.js +15 -2
- package/lib/optimize/SideEffectsFlagPlugin.js +119 -63
- package/lib/optimize/SplitChunksPlugin.js +129 -78
- package/lib/performance/SizeLimitsPlugin.js +22 -8
- package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +4 -2
- package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +4 -1
- package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +8 -5
- package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +5 -3
- package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +5 -3
- package/lib/rules/BasicEffectRulePlugin.js +7 -1
- package/lib/rules/BasicMatcherRulePlugin.js +8 -1
- package/lib/rules/ObjectMatcherRulePlugin.js +19 -2
- package/lib/rules/RuleSetCompiler.js +53 -32
- package/lib/rules/UseEffectRulePlugin.js +42 -36
- package/lib/runtime/AsyncModuleRuntimeModule.js +56 -69
- package/lib/runtime/AutoPublicPathRuntimeModule.js +25 -9
- package/lib/runtime/BaseUriRuntimeModule.js +35 -0
- 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 +7 -4
- package/lib/runtime/CreateScriptRuntimeModule.js +38 -0
- package/lib/runtime/CreateScriptUrlRuntimeModule.js +13 -36
- package/lib/runtime/DefinePropertyGettersRuntimeModule.js +6 -3
- package/lib/runtime/EnsureChunkRuntimeModule.js +29 -15
- package/lib/runtime/GetChunkFilenameRuntimeModule.js +56 -43
- package/lib/runtime/GetFullHashRuntimeModule.js +4 -3
- package/lib/runtime/GetMainFilenameRuntimeModule.js +5 -2
- package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +98 -0
- package/lib/runtime/GlobalRuntimeModule.js +1 -1
- package/lib/runtime/HasOwnPropertyRuntimeModule.js +5 -2
- package/lib/runtime/LoadScriptRuntimeModule.js +61 -45
- package/lib/runtime/MakeNamespaceObjectRuntimeModule.js +5 -2
- package/lib/runtime/NonceRuntimeModule.js +24 -0
- 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 +36 -28
- package/lib/runtime/StartupEntrypointRuntimeModule.js +13 -9
- package/lib/runtime/SystemContextRuntimeModule.js +1 -1
- package/lib/schemes/DataUriPlugin.js +16 -3
- package/lib/schemes/HttpUriPlugin.js +336 -120
- package/lib/serialization/ArraySerializer.js +22 -6
- package/lib/serialization/BinaryMiddleware.js +212 -33
- package/lib/serialization/DateObjectSerializer.js +16 -4
- package/lib/serialization/ErrorObjectSerializer.js +23 -6
- package/lib/serialization/FileMiddleware.js +187 -86
- package/lib/serialization/MapObjectSerializer.js +25 -8
- package/lib/serialization/NullPrototypeObjectSerializer.js +26 -8
- package/lib/serialization/ObjectMiddleware.js +96 -66
- package/lib/serialization/PlainObjectSerializer.js +51 -14
- package/lib/serialization/RegExpObjectSerializer.js +17 -5
- package/lib/serialization/Serializer.js +23 -5
- package/lib/serialization/SerializerMiddleware.js +8 -8
- package/lib/serialization/SetObjectSerializer.js +22 -6
- package/lib/serialization/SingleItemMiddleware.js +2 -2
- package/lib/serialization/types.js +2 -2
- package/lib/sharing/ConsumeSharedFallbackDependency.js +3 -0
- package/lib/sharing/ConsumeSharedModule.js +40 -17
- package/lib/sharing/ConsumeSharedPlugin.js +139 -102
- package/lib/sharing/ConsumeSharedRuntimeModule.js +144 -130
- package/lib/sharing/ProvideForSharedDependency.js +0 -1
- package/lib/sharing/ProvideSharedDependency.js +17 -0
- package/lib/sharing/ProvideSharedModule.js +19 -6
- package/lib/sharing/ProvideSharedModuleFactory.js +1 -1
- package/lib/sharing/ProvideSharedPlugin.js +37 -30
- package/lib/sharing/SharePlugin.js +2 -2
- package/lib/sharing/ShareRuntimeModule.js +20 -10
- package/lib/sharing/resolveMatchedConfigs.js +6 -5
- package/lib/sharing/utils.js +338 -34
- package/lib/stats/DefaultStatsFactoryPlugin.js +660 -396
- package/lib/stats/DefaultStatsPresetPlugin.js +85 -25
- package/lib/stats/DefaultStatsPrinterPlugin.js +525 -145
- package/lib/stats/StatsFactory.js +128 -57
- package/lib/stats/StatsPrinter.js +77 -46
- package/lib/util/ArrayHelpers.js +35 -1
- package/lib/util/ArrayQueue.js +15 -22
- package/lib/util/AsyncQueue.js +37 -16
- package/lib/util/IterableHelpers.js +3 -4
- package/lib/util/LazyBucketSortedSet.js +60 -44
- package/lib/util/LazySet.js +11 -2
- package/lib/util/MapHelpers.js +17 -5
- package/lib/util/ParallelismFactorCalculator.js +11 -1
- package/lib/util/Queue.js +9 -3
- package/lib/util/Semaphore.js +4 -7
- package/lib/util/SetHelpers.js +5 -5
- package/lib/util/SortableSet.js +19 -6
- package/lib/util/StackedCacheMap.js +33 -3
- package/lib/util/StackedMap.js +1 -3
- package/lib/util/StringXor.js +46 -0
- package/lib/util/TupleQueue.js +9 -3
- package/lib/util/TupleSet.js +15 -5
- package/lib/util/URLAbsoluteSpecifier.js +8 -8
- package/lib/util/WeakTupleMap.js +70 -28
- package/lib/util/binarySearchBounds.js +51 -9
- package/lib/util/chainedImports.js +97 -0
- package/lib/util/cleverMerge.js +51 -36
- package/lib/util/comparators.js +146 -83
- package/lib/util/compileBooleanMatcher.js +35 -7
- package/lib/util/conventions.js +126 -0
- package/lib/util/create-schema-validation.js +9 -2
- package/lib/util/createHash.js +49 -14
- package/lib/util/deprecation.js +48 -15
- package/lib/util/deterministicGrouping.js +71 -39
- package/lib/util/extractUrlAndGlobal.js +3 -0
- package/lib/util/findGraphRoots.js +7 -5
- package/lib/util/fs.js +419 -94
- package/lib/util/hash/BatchedHash.js +10 -4
- package/lib/util/hash/md4.js +20 -0
- package/lib/util/hash/wasm-hash.js +163 -0
- package/lib/util/hash/xxhash64.js +7 -141
- package/lib/util/identifier.js +140 -93
- package/lib/util/internalSerializables.js +22 -0
- package/lib/util/makeSerializable.js +7 -0
- package/lib/util/memoize.js +10 -10
- package/lib/util/mergeScope.js +76 -0
- package/lib/util/nonNumericOnlyHash.js +22 -0
- package/lib/util/numberHash.js +84 -34
- package/lib/util/objectToMap.js +0 -1
- package/lib/util/processAsyncTree.js +7 -1
- package/lib/util/propertyAccess.js +7 -55
- package/lib/util/propertyName.js +77 -0
- package/lib/util/registerExternalSerializer.js +2 -2
- package/lib/util/runtime.js +188 -133
- package/lib/util/semver.js +64 -56
- package/lib/util/serialization.js +26 -1
- package/lib/util/smartGrouping.js +10 -10
- package/lib/util/source.js +1 -1
- package/lib/validateSchema.js +6 -2
- package/lib/wasm/EnableWasmLoadingPlugin.js +9 -4
- package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +70 -30
- package/lib/wasm-async/AsyncWebAssemblyGenerator.js +9 -1
- package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +34 -16
- package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +32 -12
- package/lib/wasm-async/AsyncWebAssemblyParser.js +17 -4
- package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +72 -31
- package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +17 -6
- package/lib/wasm-sync/WebAssemblyGenerator.js +72 -52
- package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +5 -4
- package/lib/wasm-sync/WebAssemblyModulesPlugin.js +53 -43
- package/lib/wasm-sync/WebAssemblyParser.js +23 -9
- package/lib/wasm-sync/WebAssemblyUtils.js +5 -4
- 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 +71 -41
- package/lib/webpack.js +43 -12
- package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +15 -12
- package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +55 -40
- package/module.d.ts +233 -0
- package/package.json +85 -139
- package/schemas/WebpackOptions.check.js +1 -1
- package/schemas/WebpackOptions.json +679 -47
- package/schemas/plugins/BannerPlugin.check.js +1 -1
- package/schemas/plugins/BannerPlugin.json +9 -1
- package/schemas/plugins/DllReferencePlugin.check.js +1 -1
- package/schemas/plugins/HashedModuleIdsPlugin.check.js +1 -1
- 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/asset/AssetGeneratorOptions.check.js +1 -1
- package/schemas/plugins/asset/AssetInlineGeneratorOptions.check.js +1 -1
- package/schemas/plugins/asset/AssetParserOptions.check.js +1 -1
- package/schemas/plugins/asset/AssetResourceGeneratorOptions.check.js +1 -1
- package/schemas/plugins/container/ContainerPlugin.check.js +1 -1
- package/schemas/plugins/container/ContainerPlugin.json +10 -1
- package/schemas/plugins/container/ContainerReferencePlugin.check.js +1 -1
- package/schemas/plugins/container/ContainerReferencePlugin.json +2 -0
- package/schemas/plugins/container/ExternalsType.check.js +1 -1
- package/schemas/plugins/container/ModuleFederationPlugin.check.js +1 -1
- package/schemas/plugins/container/ModuleFederationPlugin.json +12 -1
- package/schemas/plugins/css/CssAutoGeneratorOptions.check.d.ts +7 -0
- package/schemas/plugins/css/CssAutoGeneratorOptions.check.js +6 -0
- package/schemas/plugins/css/CssAutoGeneratorOptions.json +3 -0
- package/schemas/plugins/css/CssAutoParserOptions.check.d.ts +7 -0
- package/schemas/plugins/css/CssAutoParserOptions.check.js +6 -0
- package/schemas/plugins/css/CssAutoParserOptions.json +3 -0
- package/schemas/plugins/css/CssGeneratorOptions.check.d.ts +7 -0
- package/schemas/plugins/css/CssGeneratorOptions.check.js +6 -0
- package/schemas/plugins/css/CssGeneratorOptions.json +3 -0
- package/schemas/plugins/css/CssGlobalGeneratorOptions.check.d.ts +7 -0
- package/schemas/plugins/css/CssGlobalGeneratorOptions.check.js +6 -0
- package/schemas/plugins/css/CssGlobalGeneratorOptions.json +3 -0
- package/schemas/plugins/css/CssGlobalParserOptions.check.d.ts +7 -0
- package/schemas/plugins/css/CssGlobalParserOptions.check.js +6 -0
- package/schemas/plugins/css/CssGlobalParserOptions.json +3 -0
- package/schemas/plugins/css/CssModuleGeneratorOptions.check.d.ts +7 -0
- package/schemas/plugins/css/CssModuleGeneratorOptions.check.js +6 -0
- package/schemas/plugins/css/CssModuleGeneratorOptions.json +3 -0
- package/schemas/plugins/css/CssModuleParserOptions.check.d.ts +7 -0
- package/schemas/plugins/css/CssModuleParserOptions.check.js +6 -0
- package/schemas/plugins/css/CssModuleParserOptions.json +3 -0
- package/schemas/plugins/css/CssParserOptions.check.d.ts +7 -0
- package/schemas/plugins/css/CssParserOptions.check.js +6 -0
- package/schemas/plugins/css/CssParserOptions.json +3 -0
- package/schemas/plugins/optimize/AggressiveSplittingPlugin.check.js +1 -1
- package/schemas/plugins/optimize/LimitChunkCountPlugin.check.js +1 -1
- package/schemas/plugins/optimize/MinChunkSizePlugin.check.js +1 -1
- package/schemas/plugins/schemes/HttpUriPlugin.check.js +1 -1
- package/schemas/plugins/schemes/HttpUriPlugin.json +4 -0
- package/schemas/plugins/sharing/SharePlugin.check.js +1 -1
- package/types.d.ts +5026 -1756
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");
|
@@ -19,32 +20,45 @@ const {
|
|
19
20
|
keepOriginalOrder,
|
20
21
|
compareModulesById
|
21
22
|
} = require("./util/comparators");
|
22
|
-
const {
|
23
|
+
const {
|
24
|
+
contextify,
|
25
|
+
parseResource,
|
26
|
+
makePathsRelative
|
27
|
+
} = require("./util/identifier");
|
23
28
|
const makeSerializable = require("./util/makeSerializable");
|
24
29
|
|
25
30
|
/** @typedef {import("webpack-sources").Source} Source */
|
26
31
|
/** @typedef {import("../declarations/WebpackOptions").WebpackOptionsNormalized} WebpackOptions */
|
32
|
+
/** @typedef {import("./Chunk")} Chunk */
|
33
|
+
/** @typedef {import("./Chunk").ChunkId} ChunkId */
|
27
34
|
/** @typedef {import("./ChunkGraph")} ChunkGraph */
|
35
|
+
/** @typedef {import("./ChunkGraph").ModuleId} ModuleId */
|
28
36
|
/** @typedef {import("./ChunkGroup").RawChunkGroupOptions} RawChunkGroupOptions */
|
29
37
|
/** @typedef {import("./Compilation")} Compilation */
|
38
|
+
/** @typedef {import("./Dependency")} Dependency */
|
30
39
|
/** @typedef {import("./DependencyTemplates")} DependencyTemplates */
|
40
|
+
/** @typedef {import("./Module").BuildInfo} BuildInfo */
|
31
41
|
/** @typedef {import("./Module").BuildMeta} BuildMeta */
|
32
42
|
/** @typedef {import("./Module").CodeGenerationContext} CodeGenerationContext */
|
33
43
|
/** @typedef {import("./Module").CodeGenerationResult} CodeGenerationResult */
|
34
44
|
/** @typedef {import("./Module").LibIdentOptions} LibIdentOptions */
|
35
45
|
/** @typedef {import("./Module").NeedBuildContext} NeedBuildContext */
|
46
|
+
/** @typedef {import("./Module").SourceTypes} SourceTypes */
|
36
47
|
/** @typedef {import("./ModuleGraph")} ModuleGraph */
|
37
48
|
/** @typedef {import("./RequestShortener")} RequestShortener */
|
38
49
|
/** @typedef {import("./ResolverFactory").ResolverWithOptions} ResolverWithOptions */
|
39
50
|
/** @typedef {import("./RuntimeTemplate")} RuntimeTemplate */
|
40
51
|
/** @typedef {import("./dependencies/ContextElementDependency")} ContextElementDependency */
|
52
|
+
/** @typedef {import("./javascript/JavascriptParser").ImportAttributes} ImportAttributes */
|
53
|
+
/** @typedef {import("./serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
|
54
|
+
/** @typedef {import("./serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
|
41
55
|
/** @template T @typedef {import("./util/LazySet")<T>} LazySet<T> */
|
42
56
|
/** @typedef {import("./util/fs").InputFileSystem} InputFileSystem */
|
43
57
|
|
44
58
|
/** @typedef {"sync" | "eager" | "weak" | "async-weak" | "lazy" | "lazy-once"} ContextMode Context mode */
|
45
59
|
|
46
60
|
/**
|
47
|
-
* @typedef {
|
61
|
+
* @typedef {object} ContextOptions
|
48
62
|
* @property {ContextMode} mode
|
49
63
|
* @property {boolean} recursive
|
50
64
|
* @property {RegExp} regExp
|
@@ -56,12 +70,14 @@ const makeSerializable = require("./util/makeSerializable");
|
|
56
70
|
* @property {RawChunkGroupOptions=} groupOptions
|
57
71
|
* @property {string=} typePrefix
|
58
72
|
* @property {string=} category
|
59
|
-
* @property {string[][]=} referencedExports exports referenced from modules (won't be mangled)
|
73
|
+
* @property {(string[][] | null)=} referencedExports exports referenced from modules (won't be mangled)
|
74
|
+
* @property {string=} layer
|
75
|
+
* @property {ImportAttributes=} attributes
|
60
76
|
*/
|
61
77
|
|
62
78
|
/**
|
63
|
-
* @typedef {
|
64
|
-
* @property {string} resource
|
79
|
+
* @typedef {object} ContextModuleOptionsExtras
|
80
|
+
* @property {false|string|string[]} resource
|
65
81
|
* @property {string=} resourceQuery
|
66
82
|
* @property {string=} resourceFragment
|
67
83
|
* @property {TODO} resolveOptions
|
@@ -71,7 +87,7 @@ const makeSerializable = require("./util/makeSerializable");
|
|
71
87
|
|
72
88
|
/**
|
73
89
|
* @callback ResolveDependenciesCallback
|
74
|
-
* @param {Error
|
90
|
+
* @param {Error | null} err
|
75
91
|
* @param {ContextElementDependency[]=} dependencies
|
76
92
|
*/
|
77
93
|
|
@@ -82,6 +98,10 @@ const makeSerializable = require("./util/makeSerializable");
|
|
82
98
|
* @param {ResolveDependenciesCallback} callback
|
83
99
|
*/
|
84
100
|
|
101
|
+
/** @typedef {1 | 3 | 7 | 9} FakeMapType */
|
102
|
+
|
103
|
+
/** @typedef {Record<ModuleId, FakeMapType>} FakeMap */
|
104
|
+
|
85
105
|
const SNAPSHOT_OPTIONS = { timestamp: true };
|
86
106
|
|
87
107
|
const TYPES = new Set(["javascript"]);
|
@@ -92,23 +112,38 @@ class ContextModule extends Module {
|
|
92
112
|
* @param {ContextModuleOptions} options options object
|
93
113
|
*/
|
94
114
|
constructor(resolveDependencies, options) {
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
115
|
+
if (!options || typeof options.resource === "string") {
|
116
|
+
const parsed = parseResource(
|
117
|
+
options ? /** @type {string} */ (options.resource) : ""
|
118
|
+
);
|
119
|
+
const resource = parsed.path;
|
120
|
+
const resourceQuery = (options && options.resourceQuery) || parsed.query;
|
121
|
+
const resourceFragment =
|
122
|
+
(options && options.resourceFragment) || parsed.fragment;
|
123
|
+
const layer = options && options.layer;
|
124
|
+
|
125
|
+
super(JAVASCRIPT_MODULE_TYPE_DYNAMIC, resource, layer);
|
126
|
+
/** @type {ContextModuleOptions} */
|
127
|
+
this.options = {
|
128
|
+
...options,
|
129
|
+
resource,
|
130
|
+
resourceQuery,
|
131
|
+
resourceFragment
|
132
|
+
};
|
133
|
+
} else {
|
134
|
+
super(JAVASCRIPT_MODULE_TYPE_DYNAMIC, undefined, options.layer);
|
135
|
+
/** @type {ContextModuleOptions} */
|
136
|
+
this.options = {
|
137
|
+
...options,
|
138
|
+
resource: options.resource,
|
139
|
+
resourceQuery: options.resourceQuery || "",
|
140
|
+
resourceFragment: options.resourceFragment || ""
|
141
|
+
};
|
142
|
+
}
|
102
143
|
|
103
144
|
// Info from Factory
|
145
|
+
/** @type {ResolveDependencies | undefined} */
|
104
146
|
this.resolveDependencies = resolveDependencies;
|
105
|
-
/** @type {ContextModuleOptions} */
|
106
|
-
this.options = {
|
107
|
-
...options,
|
108
|
-
resource,
|
109
|
-
resourceQuery,
|
110
|
-
resourceFragment
|
111
|
-
};
|
112
147
|
if (options && options.resolveOptions !== undefined) {
|
113
148
|
this.resolveOptions = options.resolveOptions;
|
114
149
|
}
|
@@ -122,7 +157,7 @@ class ContextModule extends Module {
|
|
122
157
|
}
|
123
158
|
|
124
159
|
/**
|
125
|
-
* @returns {
|
160
|
+
* @returns {SourceTypes} types available (do not mutate)
|
126
161
|
*/
|
127
162
|
getSourceTypes() {
|
128
163
|
return TYPES;
|
@@ -149,16 +184,26 @@ class ContextModule extends Module {
|
|
149
184
|
this.resolveDependencies = undefined;
|
150
185
|
}
|
151
186
|
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
187
|
+
/**
|
188
|
+
* @private
|
189
|
+
* @param {RegExp} regexString RegExp as a string
|
190
|
+
* @param {boolean=} stripSlash do we need to strip a slsh
|
191
|
+
* @returns {string} pretty RegExp
|
192
|
+
*/
|
193
|
+
_prettyRegExp(regexString, stripSlash = true) {
|
194
|
+
const str = stripSlash
|
195
|
+
? regexString.source + regexString.flags
|
196
|
+
: `${regexString}`;
|
197
|
+
return str.replace(/!/g, "%21").replace(/\|/g, "%7C");
|
158
198
|
}
|
159
199
|
|
160
200
|
_createIdentifier() {
|
161
|
-
let identifier =
|
201
|
+
let identifier =
|
202
|
+
this.context ||
|
203
|
+
(typeof this.options.resource === "string" ||
|
204
|
+
this.options.resource === false
|
205
|
+
? `${this.options.resource}`
|
206
|
+
: this.options.resource.join("|"));
|
162
207
|
if (this.options.resourceQuery) {
|
163
208
|
identifier += `|${this.options.resourceQuery}`;
|
164
209
|
}
|
@@ -175,13 +220,19 @@ class ContextModule extends Module {
|
|
175
220
|
identifier += `|${this.options.addon}`;
|
176
221
|
}
|
177
222
|
if (this.options.regExp) {
|
178
|
-
identifier += `|${this.options.regExp}`;
|
223
|
+
identifier += `|${this._prettyRegExp(this.options.regExp, false)}`;
|
179
224
|
}
|
180
225
|
if (this.options.include) {
|
181
|
-
identifier += `|include: ${this.
|
226
|
+
identifier += `|include: ${this._prettyRegExp(
|
227
|
+
this.options.include,
|
228
|
+
false
|
229
|
+
)}`;
|
182
230
|
}
|
183
231
|
if (this.options.exclude) {
|
184
|
-
identifier += `|exclude: ${this.
|
232
|
+
identifier += `|exclude: ${this._prettyRegExp(
|
233
|
+
this.options.exclude,
|
234
|
+
false
|
235
|
+
)}`;
|
185
236
|
}
|
186
237
|
if (this.options.referencedExports) {
|
187
238
|
identifier += `|referencedExports: ${JSON.stringify(
|
@@ -201,6 +252,9 @@ class ContextModule extends Module {
|
|
201
252
|
} else if (this.options.namespaceObject) {
|
202
253
|
identifier += "|namespace object";
|
203
254
|
}
|
255
|
+
if (this.layer) {
|
256
|
+
identifier += `|layer: ${this.layer}`;
|
257
|
+
}
|
204
258
|
|
205
259
|
return identifier;
|
206
260
|
}
|
@@ -217,7 +271,19 @@ class ContextModule extends Module {
|
|
217
271
|
* @returns {string} a user readable identifier of the module
|
218
272
|
*/
|
219
273
|
readableIdentifier(requestShortener) {
|
220
|
-
let identifier
|
274
|
+
let identifier;
|
275
|
+
if (this.context) {
|
276
|
+
identifier = `${requestShortener.shorten(this.context)}/`;
|
277
|
+
} else if (
|
278
|
+
typeof this.options.resource === "string" ||
|
279
|
+
this.options.resource === false
|
280
|
+
) {
|
281
|
+
identifier = `${requestShortener.shorten(`${this.options.resource}`)}/`;
|
282
|
+
} else {
|
283
|
+
identifier = this.options.resource
|
284
|
+
.map(r => `${requestShortener.shorten(r)}/`)
|
285
|
+
.join(" ");
|
286
|
+
}
|
221
287
|
if (this.options.resourceQuery) {
|
222
288
|
identifier += ` ${this.options.resourceQuery}`;
|
223
289
|
}
|
@@ -231,13 +297,13 @@ class ContextModule extends Module {
|
|
231
297
|
identifier += ` ${requestShortener.shorten(this.options.addon)}`;
|
232
298
|
}
|
233
299
|
if (this.options.regExp) {
|
234
|
-
identifier += ` ${this.
|
300
|
+
identifier += ` ${this._prettyRegExp(this.options.regExp)}`;
|
235
301
|
}
|
236
302
|
if (this.options.include) {
|
237
|
-
identifier += ` include: ${this.
|
303
|
+
identifier += ` include: ${this._prettyRegExp(this.options.include)}`;
|
238
304
|
}
|
239
305
|
if (this.options.exclude) {
|
240
|
-
identifier += ` exclude: ${this.
|
306
|
+
identifier += ` exclude: ${this._prettyRegExp(this.options.exclude)}`;
|
241
307
|
}
|
242
308
|
if (this.options.referencedExports) {
|
243
309
|
identifier += ` referencedExports: ${this.options.referencedExports
|
@@ -250,7 +316,9 @@ class ContextModule extends Module {
|
|
250
316
|
if (this.options.groupOptions) {
|
251
317
|
const groupOptions = this.options.groupOptions;
|
252
318
|
for (const key of Object.keys(groupOptions)) {
|
253
|
-
identifier += ` ${key}: ${
|
319
|
+
identifier += ` ${key}: ${
|
320
|
+
groupOptions[/** @type {keyof RawChunkGroupOptions} */ (key)]
|
321
|
+
}`;
|
254
322
|
}
|
255
323
|
}
|
256
324
|
if (this.options.namespaceObject === "strict") {
|
@@ -267,11 +335,31 @@ class ContextModule extends Module {
|
|
267
335
|
* @returns {string | null} an identifier for library inclusion
|
268
336
|
*/
|
269
337
|
libIdent(options) {
|
270
|
-
let identifier
|
271
|
-
|
272
|
-
|
273
|
-
|
274
|
-
|
338
|
+
let identifier;
|
339
|
+
|
340
|
+
if (this.context) {
|
341
|
+
identifier = contextify(
|
342
|
+
options.context,
|
343
|
+
this.context,
|
344
|
+
options.associatedObjectForCache
|
345
|
+
);
|
346
|
+
} else if (typeof this.options.resource === "string") {
|
347
|
+
identifier = contextify(
|
348
|
+
options.context,
|
349
|
+
this.options.resource,
|
350
|
+
options.associatedObjectForCache
|
351
|
+
);
|
352
|
+
} else if (this.options.resource === false) {
|
353
|
+
identifier = "false";
|
354
|
+
} else {
|
355
|
+
identifier = this.options.resource
|
356
|
+
.map(res =>
|
357
|
+
contextify(options.context, res, options.associatedObjectForCache)
|
358
|
+
)
|
359
|
+
.join(" ");
|
360
|
+
}
|
361
|
+
|
362
|
+
if (this.layer) identifier = `(${this.layer})/${identifier}`;
|
275
363
|
if (this.options.mode) {
|
276
364
|
identifier += ` ${this.options.mode}`;
|
277
365
|
}
|
@@ -286,13 +374,13 @@ class ContextModule extends Module {
|
|
286
374
|
)}`;
|
287
375
|
}
|
288
376
|
if (this.options.regExp) {
|
289
|
-
identifier += ` ${this.
|
377
|
+
identifier += ` ${this._prettyRegExp(this.options.regExp)}`;
|
290
378
|
}
|
291
379
|
if (this.options.include) {
|
292
|
-
identifier += ` include: ${this.
|
380
|
+
identifier += ` include: ${this._prettyRegExp(this.options.include)}`;
|
293
381
|
}
|
294
382
|
if (this.options.exclude) {
|
295
|
-
identifier += ` exclude: ${this.
|
383
|
+
identifier += ` exclude: ${this._prettyRegExp(this.options.exclude)}`;
|
296
384
|
}
|
297
385
|
if (this.options.referencedExports) {
|
298
386
|
identifier += ` referencedExports: ${this.options.referencedExports
|
@@ -312,17 +400,20 @@ class ContextModule extends Module {
|
|
312
400
|
|
313
401
|
/**
|
314
402
|
* @param {NeedBuildContext} context context info
|
315
|
-
* @param {function(WebpackError=, boolean=): void} callback callback function, returns true, if the module needs a rebuild
|
403
|
+
* @param {function((WebpackError | null)=, boolean=): void} callback callback function, returns true, if the module needs a rebuild
|
316
404
|
* @returns {void}
|
317
405
|
*/
|
318
406
|
needBuild({ fileSystemInfo }, callback) {
|
319
407
|
// build if enforced
|
320
408
|
if (this._forceBuild) return callback(null, true);
|
321
409
|
|
322
|
-
|
323
|
-
|
410
|
+
const buildInfo = /** @type {BuildInfo} */ (this.buildInfo);
|
411
|
+
|
412
|
+
// always build when we have no snapshot and context
|
413
|
+
if (!buildInfo.snapshot)
|
414
|
+
return callback(null, Boolean(this.context || this.options.resource));
|
324
415
|
|
325
|
-
fileSystemInfo.checkSnapshotValid(
|
416
|
+
fileSystemInfo.checkSnapshotValid(buildInfo.snapshot, (err, valid) => {
|
326
417
|
callback(err, !valid);
|
327
418
|
});
|
328
419
|
}
|
@@ -348,7 +439,8 @@ class ContextModule extends Module {
|
|
348
439
|
this.dependencies.length = 0;
|
349
440
|
this.blocks.length = 0;
|
350
441
|
const startTime = Date.now();
|
351
|
-
|
442
|
+
/** @type {ResolveDependencies} */
|
443
|
+
(this.resolveDependencies)(fs, this.options, (err, dependencies) => {
|
352
444
|
if (err) {
|
353
445
|
return callback(
|
354
446
|
makeWebpackError(err, "ContextModule.resolveDependencies")
|
@@ -435,15 +527,22 @@ class ContextModule extends Module {
|
|
435
527
|
);
|
436
528
|
return;
|
437
529
|
}
|
530
|
+
if (!this.context && !this.options.resource) return callback();
|
531
|
+
|
438
532
|
compilation.fileSystemInfo.createSnapshot(
|
439
533
|
startTime,
|
440
534
|
null,
|
441
|
-
|
535
|
+
this.context
|
536
|
+
? [this.context]
|
537
|
+
: typeof this.options.resource === "string"
|
538
|
+
? [this.options.resource]
|
539
|
+
: /** @type {string[]} */ (this.options.resource),
|
442
540
|
null,
|
443
541
|
SNAPSHOT_OPTIONS,
|
444
542
|
(err, snapshot) => {
|
445
543
|
if (err) return callback(err);
|
446
|
-
|
544
|
+
/** @type {BuildInfo} */
|
545
|
+
(this.buildInfo).snapshot = snapshot;
|
447
546
|
callback();
|
448
547
|
}
|
449
548
|
);
|
@@ -462,39 +561,49 @@ class ContextModule extends Module {
|
|
462
561
|
missingDependencies,
|
463
562
|
buildDependencies
|
464
563
|
) {
|
465
|
-
|
564
|
+
if (this.context) {
|
565
|
+
contextDependencies.add(this.context);
|
566
|
+
} else if (typeof this.options.resource === "string") {
|
567
|
+
contextDependencies.add(this.options.resource);
|
568
|
+
} else if (this.options.resource === false) {
|
569
|
+
// Do nothing
|
570
|
+
} else {
|
571
|
+
for (const res of this.options.resource) contextDependencies.add(res);
|
572
|
+
}
|
466
573
|
}
|
467
574
|
|
468
575
|
/**
|
469
|
-
* @param {
|
576
|
+
* @param {Dependency[]} dependencies all dependencies
|
470
577
|
* @param {ChunkGraph} chunkGraph chunk graph
|
471
|
-
* @returns {
|
578
|
+
* @returns {Map<string, string | number>} map with user requests
|
472
579
|
*/
|
473
580
|
getUserRequestMap(dependencies, chunkGraph) {
|
474
581
|
const moduleGraph = chunkGraph.moduleGraph;
|
475
582
|
// if we filter first we get a new array
|
476
583
|
// therefore we don't need to create a clone of dependencies explicitly
|
477
584
|
// therefore the order of this is !important!
|
478
|
-
const sortedDependencies =
|
479
|
-
|
480
|
-
|
481
|
-
|
482
|
-
|
483
|
-
|
484
|
-
|
485
|
-
|
585
|
+
const sortedDependencies =
|
586
|
+
/** @type {ContextElementDependency[]} */
|
587
|
+
(dependencies)
|
588
|
+
.filter(dependency => moduleGraph.getModule(dependency))
|
589
|
+
.sort((a, b) => {
|
590
|
+
if (a.userRequest === b.userRequest) {
|
591
|
+
return 0;
|
592
|
+
}
|
593
|
+
return a.userRequest < b.userRequest ? -1 : 1;
|
594
|
+
});
|
486
595
|
const map = Object.create(null);
|
487
596
|
for (const dep of sortedDependencies) {
|
488
|
-
const module = moduleGraph.getModule(dep);
|
597
|
+
const module = /** @type {Module} */ (moduleGraph.getModule(dep));
|
489
598
|
map[dep.userRequest] = chunkGraph.getModuleId(module);
|
490
599
|
}
|
491
600
|
return map;
|
492
601
|
}
|
493
602
|
|
494
603
|
/**
|
495
|
-
* @param {
|
604
|
+
* @param {Dependency[]} dependencies all dependencies
|
496
605
|
* @param {ChunkGraph} chunkGraph chunk graph
|
497
|
-
* @returns {
|
606
|
+
* @returns {FakeMap | FakeMapType} fake map
|
498
607
|
*/
|
499
608
|
getFakeMap(dependencies, chunkGraph) {
|
500
609
|
if (!this.options.namespaceObject) {
|
@@ -508,16 +617,19 @@ class ContextModule extends Module {
|
|
508
617
|
// therefore we don't need to create a clone of dependencies explicitly
|
509
618
|
// therefore the order of this is !important!
|
510
619
|
const sortedModules = dependencies
|
511
|
-
.map(
|
620
|
+
.map(
|
621
|
+
dependency => /** @type {Module} */ (moduleGraph.getModule(dependency))
|
622
|
+
)
|
512
623
|
.filter(Boolean)
|
513
624
|
.sort(comparator);
|
625
|
+
/** @type {FakeMap} */
|
514
626
|
const fakeMap = Object.create(null);
|
515
627
|
for (const module of sortedModules) {
|
516
628
|
const exportsType = module.getExportsType(
|
517
629
|
moduleGraph,
|
518
630
|
this.options.namespaceObject === "strict"
|
519
631
|
);
|
520
|
-
const id = chunkGraph.getModuleId(module);
|
632
|
+
const id = /** @type {ModuleId} */ (chunkGraph.getModuleId(module));
|
521
633
|
switch (exportsType) {
|
522
634
|
case "namespace":
|
523
635
|
fakeMap[id] = 9;
|
@@ -557,21 +669,36 @@ class ContextModule extends Module {
|
|
557
669
|
return fakeMap;
|
558
670
|
}
|
559
671
|
|
672
|
+
/**
|
673
|
+
* @param {FakeMap | FakeMapType} fakeMap fake map
|
674
|
+
* @returns {string} fake map init statement
|
675
|
+
*/
|
560
676
|
getFakeMapInitStatement(fakeMap) {
|
561
677
|
return typeof fakeMap === "object"
|
562
678
|
? `var fakeMap = ${JSON.stringify(fakeMap, null, "\t")};`
|
563
679
|
: "";
|
564
680
|
}
|
565
681
|
|
682
|
+
/**
|
683
|
+
* @param {FakeMapType} type type
|
684
|
+
* @param {boolean=} asyncModule is async module
|
685
|
+
* @returns {string} return result
|
686
|
+
*/
|
566
687
|
getReturn(type, asyncModule) {
|
567
688
|
if (type === 9) {
|
568
|
-
return
|
689
|
+
return `${RuntimeGlobals.require}(id)`;
|
569
690
|
}
|
570
691
|
return `${RuntimeGlobals.createFakeNamespaceObject}(id, ${type}${
|
571
692
|
asyncModule ? " | 16" : ""
|
572
693
|
})`;
|
573
694
|
}
|
574
695
|
|
696
|
+
/**
|
697
|
+
* @param {FakeMap | FakeMapType} fakeMap fake map
|
698
|
+
* @param {boolean=} asyncModule us async module
|
699
|
+
* @param {string=} fakeMapDataExpression fake map data expression
|
700
|
+
* @returns {string} module object source
|
701
|
+
*/
|
575
702
|
getReturnModuleObjectSource(
|
576
703
|
fakeMap,
|
577
704
|
asyncModule,
|
@@ -586,8 +713,8 @@ class ContextModule extends Module {
|
|
586
713
|
}
|
587
714
|
|
588
715
|
/**
|
589
|
-
* @param {
|
590
|
-
* @param {
|
716
|
+
* @param {Dependency[]} dependencies dependencies
|
717
|
+
* @param {ModuleId} id module id
|
591
718
|
* @param {ChunkGraph} chunkGraph the chunk graph
|
592
719
|
* @returns {string} source code
|
593
720
|
*/
|
@@ -620,8 +747,8 @@ webpackContext.id = ${JSON.stringify(id)};`;
|
|
620
747
|
}
|
621
748
|
|
622
749
|
/**
|
623
|
-
* @param {
|
624
|
-
* @param {
|
750
|
+
* @param {Dependency[]} dependencies dependencies
|
751
|
+
* @param {ModuleId} id module id
|
625
752
|
* @param {ChunkGraph} chunkGraph the chunk graph
|
626
753
|
* @returns {string} source code
|
627
754
|
*/
|
@@ -659,9 +786,9 @@ module.exports = webpackContext;`;
|
|
659
786
|
}
|
660
787
|
|
661
788
|
/**
|
662
|
-
* @param {
|
663
|
-
* @param {
|
664
|
-
* @param {
|
789
|
+
* @param {Dependency[]} dependencies dependencies
|
790
|
+
* @param {ModuleId} id module id
|
791
|
+
* @param {object} context context
|
665
792
|
* @param {ChunkGraph} context.chunkGraph the chunk graph
|
666
793
|
* @param {RuntimeTemplate} context.runtimeTemplate the chunk graph
|
667
794
|
* @returns {string} source code
|
@@ -708,9 +835,9 @@ module.exports = webpackAsyncContext;`;
|
|
708
835
|
}
|
709
836
|
|
710
837
|
/**
|
711
|
-
* @param {
|
712
|
-
* @param {
|
713
|
-
* @param {
|
838
|
+
* @param {Dependency[]} dependencies dependencies
|
839
|
+
* @param {ModuleId} id module id
|
840
|
+
* @param {object} context context
|
714
841
|
* @param {ChunkGraph} context.chunkGraph the chunk graph
|
715
842
|
* @param {RuntimeTemplate} context.runtimeTemplate the chunk graph
|
716
843
|
* @returns {string} source code
|
@@ -722,9 +849,9 @@ module.exports = webpackAsyncContext;`;
|
|
722
849
|
const thenFunction =
|
723
850
|
fakeMap !== 9
|
724
851
|
? `${arrow ? "id =>" : "function(id)"} {
|
725
|
-
${this.getReturnModuleObjectSource(fakeMap)}
|
852
|
+
${this.getReturnModuleObjectSource(fakeMap, true)}
|
726
853
|
}`
|
727
|
-
:
|
854
|
+
: RuntimeGlobals.require;
|
728
855
|
return `var map = ${JSON.stringify(map, null, "\t")};
|
729
856
|
${this.getFakeMapInitStatement(fakeMap)}
|
730
857
|
|
@@ -752,10 +879,10 @@ module.exports = webpackAsyncContext;`;
|
|
752
879
|
}
|
753
880
|
|
754
881
|
/**
|
755
|
-
* @param {
|
756
|
-
* @param {
|
757
|
-
* @param {
|
758
|
-
* @param {
|
882
|
+
* @param {AsyncDependenciesBlock} block block
|
883
|
+
* @param {Dependency[]} dependencies dependencies
|
884
|
+
* @param {ModuleId} id module id
|
885
|
+
* @param {object} options options object
|
759
886
|
* @param {RuntimeTemplate} options.runtimeTemplate the runtime template
|
760
887
|
* @param {ChunkGraph} options.chunkGraph the chunk graph
|
761
888
|
* @returns {string} source code
|
@@ -775,7 +902,7 @@ module.exports = webpackAsyncContext;`;
|
|
775
902
|
? `${arrow ? "id =>" : "function(id)"} {
|
776
903
|
${this.getReturnModuleObjectSource(fakeMap, true)};
|
777
904
|
}`
|
778
|
-
:
|
905
|
+
: RuntimeGlobals.require;
|
779
906
|
|
780
907
|
return `var map = ${JSON.stringify(map, null, "\t")};
|
781
908
|
${this.getFakeMapInitStatement(fakeMap)}
|
@@ -802,9 +929,9 @@ module.exports = webpackAsyncContext;`;
|
|
802
929
|
}
|
803
930
|
|
804
931
|
/**
|
805
|
-
* @param {
|
806
|
-
* @param {
|
807
|
-
* @param {
|
932
|
+
* @param {AsyncDependenciesBlock[]} blocks blocks
|
933
|
+
* @param {ModuleId} id module id
|
934
|
+
* @param {object} context context
|
808
935
|
* @param {ChunkGraph} context.chunkGraph the chunk graph
|
809
936
|
* @param {RuntimeTemplate} context.runtimeTemplate the chunk graph
|
810
937
|
* @returns {string} source code
|
@@ -819,13 +946,19 @@ module.exports = webpackAsyncContext;`;
|
|
819
946
|
chunkGraph
|
820
947
|
);
|
821
948
|
const hasFakeMap = typeof fakeMap === "object";
|
949
|
+
/** @typedef {{userRequest: string, dependency: ContextElementDependency, chunks: undefined | Chunk[], module: Module, block: AsyncDependenciesBlock}} Item */
|
950
|
+
/**
|
951
|
+
* @type {Item[]}
|
952
|
+
*/
|
822
953
|
const items = blocks
|
823
954
|
.map(block => {
|
824
|
-
const dependency =
|
955
|
+
const dependency =
|
956
|
+
/** @type {ContextElementDependency} */
|
957
|
+
(block.dependencies[0]);
|
825
958
|
return {
|
826
|
-
dependency
|
827
|
-
module: moduleGraph.getModule(dependency),
|
828
|
-
block
|
959
|
+
dependency,
|
960
|
+
module: /** @type {Module} */ (moduleGraph.getModule(dependency)),
|
961
|
+
block,
|
829
962
|
userRequest: dependency.userRequest,
|
830
963
|
chunks: undefined
|
831
964
|
};
|
@@ -847,18 +980,23 @@ module.exports = webpackAsyncContext;`;
|
|
847
980
|
if (a.userRequest === b.userRequest) return 0;
|
848
981
|
return a.userRequest < b.userRequest ? -1 : 1;
|
849
982
|
});
|
983
|
+
/** @type {Record<string, ModuleId | (ModuleId[] | ChunkId[])>} */
|
850
984
|
const map = Object.create(null);
|
851
985
|
for (const item of sortedItems) {
|
852
|
-
const moduleId =
|
986
|
+
const moduleId =
|
987
|
+
/** @type {ModuleId} */
|
988
|
+
(chunkGraph.getModuleId(item.module));
|
853
989
|
if (shortMode) {
|
854
990
|
map[item.userRequest] = moduleId;
|
855
991
|
} else {
|
992
|
+
/** @type {(ModuleId | ChunkId)[]} */
|
856
993
|
const arrayStart = [moduleId];
|
857
994
|
if (hasFakeMap) {
|
858
995
|
arrayStart.push(fakeMap[moduleId]);
|
859
996
|
}
|
860
997
|
map[item.userRequest] = arrayStart.concat(
|
861
|
-
|
998
|
+
/** @type {Chunk[]} */
|
999
|
+
(item.chunks).map(chunk => /** @type {ChunkId} */ (chunk.id))
|
862
1000
|
);
|
863
1001
|
}
|
864
1002
|
}
|
@@ -867,8 +1005,8 @@ module.exports = webpackAsyncContext;`;
|
|
867
1005
|
const requestPrefix = hasNoChunk
|
868
1006
|
? "Promise.resolve()"
|
869
1007
|
: hasMultipleOrNoChunks
|
870
|
-
|
871
|
-
|
1008
|
+
? `Promise.all(ids.slice(${chunksStartPosition}).map(${RuntimeGlobals.ensureChunk}))`
|
1009
|
+
: `${RuntimeGlobals.ensureChunk}(ids[${chunksStartPosition}])`;
|
872
1010
|
const returnModuleObject = this.getReturnModuleObjectSource(
|
873
1011
|
fakeMap,
|
874
1012
|
true,
|
@@ -914,6 +1052,11 @@ webpackAsyncContext.id = ${JSON.stringify(id)};
|
|
914
1052
|
module.exports = webpackAsyncContext;`;
|
915
1053
|
}
|
916
1054
|
|
1055
|
+
/**
|
1056
|
+
* @param {ModuleId} id module id
|
1057
|
+
* @param {RuntimeTemplate} runtimeTemplate runtime template
|
1058
|
+
* @returns {string} source for empty async context
|
1059
|
+
*/
|
917
1060
|
getSourceForEmptyContext(id, runtimeTemplate) {
|
918
1061
|
return `function webpackEmptyContext(req) {
|
919
1062
|
var e = new Error("Cannot find module '" + req + "'");
|
@@ -926,6 +1069,11 @@ webpackEmptyContext.id = ${JSON.stringify(id)};
|
|
926
1069
|
module.exports = webpackEmptyContext;`;
|
927
1070
|
}
|
928
1071
|
|
1072
|
+
/**
|
1073
|
+
* @param {ModuleId} id module id
|
1074
|
+
* @param {RuntimeTemplate} runtimeTemplate runtime template
|
1075
|
+
* @returns {string} source for empty async context
|
1076
|
+
*/
|
929
1077
|
getSourceForEmptyAsyncContext(id, runtimeTemplate) {
|
930
1078
|
const arrow = runtimeTemplate.supportsArrowFunction();
|
931
1079
|
return `function webpackEmptyAsyncContext(req) {
|
@@ -949,7 +1097,7 @@ module.exports = webpackEmptyAsyncContext;`;
|
|
949
1097
|
* @returns {string} the source code
|
950
1098
|
*/
|
951
1099
|
getSourceString(asyncMode, { runtimeTemplate, chunkGraph }) {
|
952
|
-
const id = chunkGraph.getModuleId(this);
|
1100
|
+
const id = /** @type {ModuleId} */ (chunkGraph.getModuleId(this));
|
953
1101
|
if (asyncMode === "lazy") {
|
954
1102
|
if (this.blocks && this.blocks.length > 0) {
|
955
1103
|
return this.getLazySource(this.blocks, id, {
|
@@ -987,10 +1135,12 @@ module.exports = webpackEmptyAsyncContext;`;
|
|
987
1135
|
}
|
988
1136
|
return this.getSourceForEmptyAsyncContext(id, runtimeTemplate);
|
989
1137
|
}
|
990
|
-
if (
|
991
|
-
|
992
|
-
|
993
|
-
|
1138
|
+
if (
|
1139
|
+
asyncMode === "weak" &&
|
1140
|
+
this.dependencies &&
|
1141
|
+
this.dependencies.length > 0
|
1142
|
+
) {
|
1143
|
+
return this.getWeakSyncSource(this.dependencies, id, chunkGraph);
|
994
1144
|
}
|
995
1145
|
if (this.dependencies && this.dependencies.length > 0) {
|
996
1146
|
return this.getSyncSource(this.dependencies, id, chunkGraph);
|
@@ -998,9 +1148,21 @@ module.exports = webpackEmptyAsyncContext;`;
|
|
998
1148
|
return this.getSourceForEmptyContext(id, runtimeTemplate);
|
999
1149
|
}
|
1000
1150
|
|
1001
|
-
|
1151
|
+
/**
|
1152
|
+
* @param {string} sourceString source content
|
1153
|
+
* @param {Compilation=} compilation the compilation
|
1154
|
+
* @returns {Source} generated source
|
1155
|
+
*/
|
1156
|
+
getSource(sourceString, compilation) {
|
1002
1157
|
if (this.useSourceMap || this.useSimpleSourceMap) {
|
1003
|
-
return new OriginalSource(
|
1158
|
+
return new OriginalSource(
|
1159
|
+
sourceString,
|
1160
|
+
`webpack://${makePathsRelative(
|
1161
|
+
(compilation && compilation.compiler.context) || "",
|
1162
|
+
this.identifier(),
|
1163
|
+
compilation && compilation.compiler.root
|
1164
|
+
)}`
|
1165
|
+
);
|
1004
1166
|
}
|
1005
1167
|
return new RawSource(sourceString);
|
1006
1168
|
}
|
@@ -1010,16 +1172,23 @@ module.exports = webpackEmptyAsyncContext;`;
|
|
1010
1172
|
* @returns {CodeGenerationResult} result
|
1011
1173
|
*/
|
1012
1174
|
codeGeneration(context) {
|
1013
|
-
const { chunkGraph } = context;
|
1175
|
+
const { chunkGraph, compilation } = context;
|
1014
1176
|
const sources = new Map();
|
1015
1177
|
sources.set(
|
1016
1178
|
"javascript",
|
1017
|
-
this.getSource(
|
1179
|
+
this.getSource(
|
1180
|
+
this.getSourceString(this.options.mode, context),
|
1181
|
+
compilation
|
1182
|
+
)
|
1018
1183
|
);
|
1019
1184
|
const set = new Set();
|
1020
|
-
const allDeps =
|
1021
|
-
this.dependencies.
|
1022
|
-
|
1185
|
+
const allDeps =
|
1186
|
+
this.dependencies.length > 0
|
1187
|
+
? /** @type {ContextElementDependency[]} */ (this.dependencies).slice()
|
1188
|
+
: [];
|
1189
|
+
for (const block of this.blocks)
|
1190
|
+
for (const dep of block.dependencies)
|
1191
|
+
allDeps.push(/** @type {ContextElementDependency} */ (dep));
|
1023
1192
|
set.add(RuntimeGlobals.module);
|
1024
1193
|
set.add(RuntimeGlobals.hasOwnProperty);
|
1025
1194
|
if (allDeps.length > 0) {
|
@@ -1059,6 +1228,9 @@ module.exports = webpackEmptyAsyncContext;`;
|
|
1059
1228
|
return size;
|
1060
1229
|
}
|
1061
1230
|
|
1231
|
+
/**
|
1232
|
+
* @param {ObjectSerializerContext} context context
|
1233
|
+
*/
|
1062
1234
|
serialize(context) {
|
1063
1235
|
const { write } = context;
|
1064
1236
|
write(this._identifier);
|
@@ -1066,6 +1238,9 @@ module.exports = webpackEmptyAsyncContext;`;
|
|
1066
1238
|
super.serialize(context);
|
1067
1239
|
}
|
1068
1240
|
|
1241
|
+
/**
|
1242
|
+
* @param {ObjectDeserializerContext} context context
|
1243
|
+
*/
|
1069
1244
|
deserialize(context) {
|
1070
1245
|
const { read } = context;
|
1071
1246
|
this._identifier = read();
|