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
@@ -5,15 +5,18 @@
|
|
5
5
|
|
6
6
|
"use strict";
|
7
7
|
|
8
|
+
const util = require("util");
|
8
9
|
const Watchpack = require("watchpack");
|
9
10
|
|
10
11
|
/** @typedef {import("../../declarations/WebpackOptions").WatchOptions} WatchOptions */
|
11
12
|
/** @typedef {import("../FileSystemInfo").FileSystemInfoEntry} FileSystemInfoEntry */
|
12
|
-
/** @typedef {import("../util/fs").
|
13
|
+
/** @typedef {import("../util/fs").InputFileSystem} InputFileSystem */
|
13
14
|
/** @typedef {import("../util/fs").WatchMethod} WatchMethod */
|
14
|
-
/** @typedef {import("../util/fs").Watcher} Watcher */
|
15
15
|
|
16
16
|
class NodeWatchFileSystem {
|
17
|
+
/**
|
18
|
+
* @param {InputFileSystem} inputFileSystem input filesystem
|
19
|
+
*/
|
17
20
|
constructor(inputFileSystem) {
|
18
21
|
this.inputFileSystem = inputFileSystem;
|
19
22
|
this.watcherOptions = {
|
@@ -22,16 +25,7 @@ class NodeWatchFileSystem {
|
|
22
25
|
this.watcher = new Watchpack(this.watcherOptions);
|
23
26
|
}
|
24
27
|
|
25
|
-
/**
|
26
|
-
* @param {Iterable<string>} files watched files
|
27
|
-
* @param {Iterable<string>} directories watched directories
|
28
|
-
* @param {Iterable<string>} missing watched exitance entries
|
29
|
-
* @param {number} startTime timestamp of start time
|
30
|
-
* @param {WatchOptions} options options object
|
31
|
-
* @param {function(Error=, Map<string, FileSystemInfoEntry>, Map<string, FileSystemInfoEntry>, Set<string>, Set<string>): void} callback aggregated callback
|
32
|
-
* @param {function(string, number): void} callbackUndelayed callback when the first change was detected
|
33
|
-
* @returns {Watcher} a watcher
|
34
|
-
*/
|
28
|
+
/** @type {WatchMethod} */
|
35
29
|
watch(
|
36
30
|
files,
|
37
31
|
directories,
|
@@ -68,19 +62,47 @@ class NodeWatchFileSystem {
|
|
68
62
|
if (callbackUndelayed) {
|
69
63
|
this.watcher.once("change", callbackUndelayed);
|
70
64
|
}
|
71
|
-
|
72
|
-
|
65
|
+
|
66
|
+
const fetchTimeInfo = () => {
|
67
|
+
const fileTimeInfoEntries = new Map();
|
68
|
+
const contextTimeInfoEntries = new Map();
|
69
|
+
if (this.watcher) {
|
70
|
+
this.watcher.collectTimeInfoEntries(
|
71
|
+
fileTimeInfoEntries,
|
72
|
+
contextTimeInfoEntries
|
73
|
+
);
|
74
|
+
}
|
75
|
+
return { fileTimeInfoEntries, contextTimeInfoEntries };
|
76
|
+
};
|
77
|
+
this.watcher.once(
|
78
|
+
"aggregated",
|
79
|
+
/**
|
80
|
+
* @param {Set<string>} changes changes
|
81
|
+
* @param {Set<string>} removals removals
|
82
|
+
*/
|
83
|
+
(changes, removals) => {
|
84
|
+
// pause emitting events (avoids clearing aggregated changes and removals on timeout)
|
85
|
+
this.watcher.pause();
|
86
|
+
|
73
87
|
const fs = this.inputFileSystem;
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
88
|
+
if (fs && fs.purge) {
|
89
|
+
for (const item of changes) {
|
90
|
+
fs.purge(item);
|
91
|
+
}
|
92
|
+
for (const item of removals) {
|
93
|
+
fs.purge(item);
|
94
|
+
}
|
79
95
|
}
|
96
|
+
const { fileTimeInfoEntries, contextTimeInfoEntries } = fetchTimeInfo();
|
97
|
+
callback(
|
98
|
+
null,
|
99
|
+
fileTimeInfoEntries,
|
100
|
+
contextTimeInfoEntries,
|
101
|
+
changes,
|
102
|
+
removals
|
103
|
+
);
|
80
104
|
}
|
81
|
-
|
82
|
-
callback(null, times, times, changes, removals);
|
83
|
-
});
|
105
|
+
);
|
84
106
|
|
85
107
|
this.watcher.watch({ files, directories, missing, startTime });
|
86
108
|
|
@@ -99,39 +121,67 @@ class NodeWatchFileSystem {
|
|
99
121
|
this.watcher.pause();
|
100
122
|
}
|
101
123
|
},
|
102
|
-
getAggregatedRemovals: (
|
103
|
-
|
104
|
-
|
124
|
+
getAggregatedRemovals: util.deprecate(
|
125
|
+
() => {
|
126
|
+
const items = this.watcher && this.watcher.aggregatedRemovals;
|
105
127
|
const fs = this.inputFileSystem;
|
106
|
-
|
107
|
-
|
128
|
+
if (items && fs && fs.purge) {
|
129
|
+
for (const item of items) {
|
130
|
+
fs.purge(item);
|
131
|
+
}
|
108
132
|
}
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
133
|
+
return items;
|
134
|
+
},
|
135
|
+
"Watcher.getAggregatedRemovals is deprecated in favor of Watcher.getInfo since that's more performant.",
|
136
|
+
"DEP_WEBPACK_WATCHER_GET_AGGREGATED_REMOVALS"
|
137
|
+
),
|
138
|
+
getAggregatedChanges: util.deprecate(
|
139
|
+
() => {
|
140
|
+
const items = this.watcher && this.watcher.aggregatedChanges;
|
115
141
|
const fs = this.inputFileSystem;
|
116
|
-
|
117
|
-
|
142
|
+
if (items && fs && fs.purge) {
|
143
|
+
for (const item of items) {
|
144
|
+
fs.purge(item);
|
145
|
+
}
|
146
|
+
}
|
147
|
+
return items;
|
148
|
+
},
|
149
|
+
"Watcher.getAggregatedChanges is deprecated in favor of Watcher.getInfo since that's more performant.",
|
150
|
+
"DEP_WEBPACK_WATCHER_GET_AGGREGATED_CHANGES"
|
151
|
+
),
|
152
|
+
getFileTimeInfoEntries: util.deprecate(
|
153
|
+
() => fetchTimeInfo().fileTimeInfoEntries,
|
154
|
+
"Watcher.getFileTimeInfoEntries is deprecated in favor of Watcher.getInfo since that's more performant.",
|
155
|
+
"DEP_WEBPACK_WATCHER_FILE_TIME_INFO_ENTRIES"
|
156
|
+
),
|
157
|
+
getContextTimeInfoEntries: util.deprecate(
|
158
|
+
() => fetchTimeInfo().contextTimeInfoEntries,
|
159
|
+
"Watcher.getContextTimeInfoEntries is deprecated in favor of Watcher.getInfo since that's more performant.",
|
160
|
+
"DEP_WEBPACK_WATCHER_CONTEXT_TIME_INFO_ENTRIES"
|
161
|
+
),
|
162
|
+
getInfo: () => {
|
163
|
+
const removals = this.watcher && this.watcher.aggregatedRemovals;
|
164
|
+
const changes = this.watcher && this.watcher.aggregatedChanges;
|
165
|
+
const fs = this.inputFileSystem;
|
166
|
+
if (fs && fs.purge) {
|
167
|
+
if (removals) {
|
168
|
+
for (const item of removals) {
|
169
|
+
fs.purge(item);
|
170
|
+
}
|
171
|
+
}
|
172
|
+
if (changes) {
|
173
|
+
for (const item of changes) {
|
174
|
+
fs.purge(item);
|
175
|
+
}
|
118
176
|
}
|
119
177
|
}
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
}
|
128
|
-
},
|
129
|
-
getContextTimeInfoEntries: () => {
|
130
|
-
if (this.watcher) {
|
131
|
-
return this.watcher.getTimeInfoEntries();
|
132
|
-
} else {
|
133
|
-
return new Map();
|
134
|
-
}
|
178
|
+
const { fileTimeInfoEntries, contextTimeInfoEntries } = fetchTimeInfo();
|
179
|
+
return {
|
180
|
+
changes,
|
181
|
+
removals,
|
182
|
+
fileTimeInfoEntries,
|
183
|
+
contextTimeInfoEntries
|
184
|
+
};
|
135
185
|
}
|
136
186
|
};
|
137
187
|
}
|
@@ -15,18 +15,47 @@ const { getInitialChunkIds } = require("../javascript/StartupHelpers");
|
|
15
15
|
const compileBooleanMatcher = require("../util/compileBooleanMatcher");
|
16
16
|
const { getUndoPath } = require("../util/identifier");
|
17
17
|
|
18
|
+
/** @typedef {import("../Chunk")} Chunk */
|
19
|
+
/** @typedef {import("../ChunkGraph")} ChunkGraph */
|
20
|
+
/** @typedef {import("../Compilation")} Compilation */
|
21
|
+
/** @typedef {import("../Module").ReadOnlyRuntimeRequirements} ReadOnlyRuntimeRequirements */
|
22
|
+
|
18
23
|
class ReadFileChunkLoadingRuntimeModule extends RuntimeModule {
|
24
|
+
/**
|
25
|
+
* @param {ReadOnlyRuntimeRequirements} runtimeRequirements runtime requirements
|
26
|
+
*/
|
19
27
|
constructor(runtimeRequirements) {
|
20
28
|
super("readFile chunk loading", RuntimeModule.STAGE_ATTACH);
|
21
29
|
this.runtimeRequirements = runtimeRequirements;
|
22
30
|
}
|
23
31
|
|
24
32
|
/**
|
25
|
-
* @
|
33
|
+
* @private
|
34
|
+
* @param {Chunk} chunk chunk
|
35
|
+
* @param {string} rootOutputDir root output directory
|
36
|
+
* @returns {string} generated code
|
37
|
+
*/
|
38
|
+
_generateBaseUri(chunk, rootOutputDir) {
|
39
|
+
const options = chunk.getEntryOptions();
|
40
|
+
if (options && options.baseUri) {
|
41
|
+
return `${RuntimeGlobals.baseURI} = ${JSON.stringify(options.baseUri)};`;
|
42
|
+
}
|
43
|
+
|
44
|
+
return `${RuntimeGlobals.baseURI} = require("url").pathToFileURL(${
|
45
|
+
rootOutputDir
|
46
|
+
? `__dirname + ${JSON.stringify(`/${rootOutputDir}`)}`
|
47
|
+
: "__filename"
|
48
|
+
});`;
|
49
|
+
}
|
50
|
+
|
51
|
+
/**
|
52
|
+
* @returns {string | null} runtime code
|
26
53
|
*/
|
27
54
|
generate() {
|
28
|
-
const
|
29
|
-
const
|
55
|
+
const compilation = /** @type {Compilation} */ (this.compilation);
|
56
|
+
const chunkGraph = /** @type {ChunkGraph} */ (this.chunkGraph);
|
57
|
+
const chunk = /** @type {Chunk} */ (this.chunk);
|
58
|
+
const { runtimeTemplate } = compilation;
|
30
59
|
const fn = RuntimeGlobals.ensureChunkHandlers;
|
31
60
|
const withBaseURI = this.runtimeRequirements.has(RuntimeGlobals.baseURI);
|
32
61
|
const withExternalInstallChunk = this.runtimeRequirements.has(
|
@@ -46,10 +75,10 @@ class ReadFileChunkLoadingRuntimeModule extends RuntimeModule {
|
|
46
75
|
);
|
47
76
|
const conditionMap = chunkGraph.getChunkConditionMap(chunk, chunkHasJs);
|
48
77
|
const hasJsMatcher = compileBooleanMatcher(conditionMap);
|
49
|
-
const initialChunkIds = getInitialChunkIds(chunk, chunkGraph);
|
78
|
+
const initialChunkIds = getInitialChunkIds(chunk, chunkGraph, chunkHasJs);
|
50
79
|
|
51
|
-
const outputName =
|
52
|
-
getChunkFilenameTemplate(chunk,
|
80
|
+
const outputName = compilation.getPath(
|
81
|
+
getChunkFilenameTemplate(chunk, compilation.outputOptions),
|
53
82
|
{
|
54
83
|
chunk,
|
55
84
|
contentHashType: "javascript"
|
@@ -57,7 +86,7 @@ class ReadFileChunkLoadingRuntimeModule extends RuntimeModule {
|
|
57
86
|
);
|
58
87
|
const rootOutputDir = getUndoPath(
|
59
88
|
outputName,
|
60
|
-
|
89
|
+
/** @type {string} */ (compilation.outputOptions.path),
|
61
90
|
false
|
62
91
|
);
|
63
92
|
|
@@ -67,13 +96,7 @@ class ReadFileChunkLoadingRuntimeModule extends RuntimeModule {
|
|
67
96
|
|
68
97
|
return Template.asString([
|
69
98
|
withBaseURI
|
70
|
-
?
|
71
|
-
`${RuntimeGlobals.baseURI} = require("url").pathToFileURL(${
|
72
|
-
rootOutputDir
|
73
|
-
? `__dirname + ${JSON.stringify("/" + rootOutputDir)}`
|
74
|
-
: "__filename"
|
75
|
-
});`
|
76
|
-
])
|
99
|
+
? this._generateBaseUri(chunk, rootOutputDir)
|
77
100
|
: "// no baseURI",
|
78
101
|
"",
|
79
102
|
"// object to store loaded chunks",
|
@@ -91,10 +114,10 @@ class ReadFileChunkLoadingRuntimeModule extends RuntimeModule {
|
|
91
114
|
withOnChunkLoad
|
92
115
|
? `${
|
93
116
|
RuntimeGlobals.onChunksLoaded
|
94
|
-
|
117
|
+
}.readFileVm = ${runtimeTemplate.returningFunction(
|
95
118
|
"installedChunks[chunkId] === 0",
|
96
119
|
"chunkId"
|
97
|
-
|
120
|
+
)};`
|
98
121
|
: "// no on chunks loaded",
|
99
122
|
"",
|
100
123
|
withLoading || withExternalInstallChunk
|
@@ -109,7 +132,7 @@ class ReadFileChunkLoadingRuntimeModule extends RuntimeModule {
|
|
109
132
|
"}"
|
110
133
|
]),
|
111
134
|
"}",
|
112
|
-
`if(runtime) runtime(
|
135
|
+
`if(runtime) runtime(${RuntimeGlobals.require});`,
|
113
136
|
"for(var i = 0; i < chunkIds.length; i++) {",
|
114
137
|
Template.indent([
|
115
138
|
"if(installedChunks[chunkIds[i]]) {",
|
@@ -119,7 +142,7 @@ class ReadFileChunkLoadingRuntimeModule extends RuntimeModule {
|
|
119
142
|
]),
|
120
143
|
"}",
|
121
144
|
withOnChunkLoad ? `${RuntimeGlobals.onChunksLoaded}();` : ""
|
122
|
-
|
145
|
+
])};`
|
123
146
|
: "// no chunk install function needed",
|
124
147
|
"",
|
125
148
|
withLoading
|
@@ -163,22 +186,24 @@ class ReadFileChunkLoadingRuntimeModule extends RuntimeModule {
|
|
163
186
|
"});",
|
164
187
|
"promises.push(installedChunkData[2] = promise);"
|
165
188
|
]),
|
166
|
-
|
189
|
+
hasJsMatcher === true
|
190
|
+
? "}"
|
191
|
+
: "} else installedChunks[chunkId] = 0;"
|
167
192
|
]),
|
168
193
|
"}"
|
169
194
|
]),
|
170
195
|
"}"
|
171
|
-
|
196
|
+
])
|
172
197
|
: Template.indent(["installedChunks[chunkId] = 0;"]),
|
173
198
|
"};"
|
174
|
-
|
199
|
+
])
|
175
200
|
: "// no chunk loading",
|
176
201
|
"",
|
177
202
|
withExternalInstallChunk
|
178
203
|
? Template.asString([
|
179
|
-
|
204
|
+
`module.exports = ${RuntimeGlobals.require};`,
|
180
205
|
`${RuntimeGlobals.externalInstallChunk} = installChunk;`
|
181
|
-
|
206
|
+
])
|
182
207
|
: "// no external install chunk",
|
183
208
|
"",
|
184
209
|
withHmr
|
@@ -202,7 +227,7 @@ class ReadFileChunkLoadingRuntimeModule extends RuntimeModule {
|
|
202
227
|
Template.indent([
|
203
228
|
`if(${RuntimeGlobals.hasOwnProperty}(updatedModules, moduleId)) {`,
|
204
229
|
Template.indent([
|
205
|
-
|
230
|
+
"currentUpdate[moduleId] = updatedModules[moduleId];",
|
206
231
|
"if(updatedModulesList) updatedModulesList.push(moduleId);"
|
207
232
|
]),
|
208
233
|
"}"
|
@@ -239,7 +264,7 @@ class ReadFileChunkLoadingRuntimeModule extends RuntimeModule {
|
|
239
264
|
/\$hmrInvalidateModuleHandlers\$/g,
|
240
265
|
RuntimeGlobals.hmrInvalidateModuleHandlers
|
241
266
|
)
|
242
|
-
|
267
|
+
])
|
243
268
|
: "// no HMR",
|
244
269
|
"",
|
245
270
|
withHmrManifest
|
@@ -267,7 +292,7 @@ class ReadFileChunkLoadingRuntimeModule extends RuntimeModule {
|
|
267
292
|
"});"
|
268
293
|
]),
|
269
294
|
"}"
|
270
|
-
|
295
|
+
])
|
271
296
|
: "// no HMR manifest"
|
272
297
|
]);
|
273
298
|
}
|
@@ -5,10 +5,12 @@
|
|
5
5
|
|
6
6
|
"use strict";
|
7
7
|
|
8
|
+
const { WEBASSEMBLY_MODULE_TYPE_ASYNC } = require("../ModuleTypeConstants");
|
8
9
|
const RuntimeGlobals = require("../RuntimeGlobals");
|
9
10
|
const Template = require("../Template");
|
10
11
|
const AsyncWasmLoadingRuntimeModule = require("../wasm-async/AsyncWasmLoadingRuntimeModule");
|
11
12
|
|
13
|
+
/** @typedef {import("../Chunk")} Chunk */
|
12
14
|
/** @typedef {import("../Compiler")} Compiler */
|
13
15
|
|
14
16
|
class ReadFileCompileAsyncWasmPlugin {
|
@@ -16,6 +18,7 @@ class ReadFileCompileAsyncWasmPlugin {
|
|
16
18
|
this._type = type;
|
17
19
|
this._import = useImport;
|
18
20
|
}
|
21
|
+
|
19
22
|
/**
|
20
23
|
* Apply the plugin
|
21
24
|
* @param {Compiler} compiler the compiler instance
|
@@ -26,6 +29,10 @@ class ReadFileCompileAsyncWasmPlugin {
|
|
26
29
|
"ReadFileCompileAsyncWasmPlugin",
|
27
30
|
compilation => {
|
28
31
|
const globalWasmLoading = compilation.outputOptions.wasmLoading;
|
32
|
+
/**
|
33
|
+
* @param {Chunk} chunk chunk
|
34
|
+
* @returns {boolean} true, if wasm loading is enabled for the chunk
|
35
|
+
*/
|
29
36
|
const isEnabledForChunk = chunk => {
|
30
37
|
const options = chunk.getEntryOptions();
|
31
38
|
const wasmLoading =
|
@@ -34,12 +41,16 @@ class ReadFileCompileAsyncWasmPlugin {
|
|
34
41
|
: globalWasmLoading;
|
35
42
|
return wasmLoading === this._type;
|
36
43
|
};
|
44
|
+
const { importMetaName } = compilation.outputOptions;
|
45
|
+
/**
|
46
|
+
* @type {(path: string) => string}
|
47
|
+
*/
|
37
48
|
const generateLoadBinaryCode = this._import
|
38
49
|
? path =>
|
39
50
|
Template.asString([
|
40
51
|
"Promise.all([import('fs'), import('url')]).then(([{ readFile }, { URL }]) => new Promise((resolve, reject) => {",
|
41
52
|
Template.indent([
|
42
|
-
`readFile(new URL(${path},
|
53
|
+
`readFile(new URL(${path}, ${importMetaName}.url), (err, buffer) => {`,
|
43
54
|
Template.indent([
|
44
55
|
"if (err) return reject(err);",
|
45
56
|
"",
|
@@ -85,7 +96,7 @@ class ReadFileCompileAsyncWasmPlugin {
|
|
85
96
|
if (
|
86
97
|
!chunkGraph.hasModuleInGraph(
|
87
98
|
chunk,
|
88
|
-
m => m.type ===
|
99
|
+
m => m.type === WEBASSEMBLY_MODULE_TYPE_ASYNC
|
89
100
|
)
|
90
101
|
) {
|
91
102
|
return;
|
@@ -5,17 +5,27 @@
|
|
5
5
|
|
6
6
|
"use strict";
|
7
7
|
|
8
|
+
const { WEBASSEMBLY_MODULE_TYPE_SYNC } = require("../ModuleTypeConstants");
|
8
9
|
const RuntimeGlobals = require("../RuntimeGlobals");
|
9
10
|
const Template = require("../Template");
|
10
11
|
const WasmChunkLoadingRuntimeModule = require("../wasm-sync/WasmChunkLoadingRuntimeModule");
|
11
12
|
|
13
|
+
/** @typedef {import("../Chunk")} Chunk */
|
12
14
|
/** @typedef {import("../Compiler")} Compiler */
|
13
15
|
|
16
|
+
/**
|
17
|
+
* @typedef {object} ReadFileCompileWasmPluginOptions
|
18
|
+
* @property {boolean} [mangleImports] mangle imports
|
19
|
+
*/
|
20
|
+
|
14
21
|
// TODO webpack 6 remove
|
15
22
|
|
16
23
|
class ReadFileCompileWasmPlugin {
|
17
|
-
|
18
|
-
|
24
|
+
/**
|
25
|
+
* @param {ReadFileCompileWasmPluginOptions} [options] options object
|
26
|
+
*/
|
27
|
+
constructor(options = {}) {
|
28
|
+
this.options = options;
|
19
29
|
}
|
20
30
|
|
21
31
|
/**
|
@@ -28,6 +38,10 @@ class ReadFileCompileWasmPlugin {
|
|
28
38
|
"ReadFileCompileWasmPlugin",
|
29
39
|
compilation => {
|
30
40
|
const globalWasmLoading = compilation.outputOptions.wasmLoading;
|
41
|
+
/**
|
42
|
+
* @param {Chunk} chunk chunk
|
43
|
+
* @returns {boolean} true, when wasm loading is enabled for the chunk
|
44
|
+
*/
|
31
45
|
const isEnabledForChunk = chunk => {
|
32
46
|
const options = chunk.getEntryOptions();
|
33
47
|
const wasmLoading =
|
@@ -36,6 +50,10 @@ class ReadFileCompileWasmPlugin {
|
|
36
50
|
: globalWasmLoading;
|
37
51
|
return wasmLoading === "async-node";
|
38
52
|
};
|
53
|
+
/**
|
54
|
+
* @param {string} path path to wasm file
|
55
|
+
* @returns {string} generated code to load the wasm file
|
56
|
+
*/
|
39
57
|
const generateLoadBinaryCode = path =>
|
40
58
|
Template.asString([
|
41
59
|
"new Promise(function (resolve, reject) {",
|
@@ -69,7 +87,7 @@ class ReadFileCompileWasmPlugin {
|
|
69
87
|
if (
|
70
88
|
!chunkGraph.hasModuleInGraph(
|
71
89
|
chunk,
|
72
|
-
m => m.type ===
|
90
|
+
m => m.type === WEBASSEMBLY_MODULE_TYPE_SYNC
|
73
91
|
)
|
74
92
|
) {
|
75
93
|
return;
|
@@ -15,18 +15,47 @@ const { getInitialChunkIds } = require("../javascript/StartupHelpers");
|
|
15
15
|
const compileBooleanMatcher = require("../util/compileBooleanMatcher");
|
16
16
|
const { getUndoPath } = require("../util/identifier");
|
17
17
|
|
18
|
+
/** @typedef {import("../Chunk")} Chunk */
|
19
|
+
/** @typedef {import("../ChunkGraph")} ChunkGraph */
|
20
|
+
/** @typedef {import("../Compilation")} Compilation */
|
21
|
+
/** @typedef {import("../Module").ReadOnlyRuntimeRequirements} ReadOnlyRuntimeRequirements */
|
22
|
+
|
18
23
|
class RequireChunkLoadingRuntimeModule extends RuntimeModule {
|
24
|
+
/**
|
25
|
+
* @param {ReadOnlyRuntimeRequirements} runtimeRequirements runtime requirements
|
26
|
+
*/
|
19
27
|
constructor(runtimeRequirements) {
|
20
28
|
super("require chunk loading", RuntimeModule.STAGE_ATTACH);
|
21
29
|
this.runtimeRequirements = runtimeRequirements;
|
22
30
|
}
|
23
31
|
|
24
32
|
/**
|
25
|
-
* @
|
33
|
+
* @private
|
34
|
+
* @param {Chunk} chunk chunk
|
35
|
+
* @param {string} rootOutputDir root output directory
|
36
|
+
* @returns {string} generated code
|
37
|
+
*/
|
38
|
+
_generateBaseUri(chunk, rootOutputDir) {
|
39
|
+
const options = chunk.getEntryOptions();
|
40
|
+
if (options && options.baseUri) {
|
41
|
+
return `${RuntimeGlobals.baseURI} = ${JSON.stringify(options.baseUri)};`;
|
42
|
+
}
|
43
|
+
|
44
|
+
return `${RuntimeGlobals.baseURI} = require("url").pathToFileURL(${
|
45
|
+
rootOutputDir !== "./"
|
46
|
+
? `__dirname + ${JSON.stringify(`/${rootOutputDir}`)}`
|
47
|
+
: "__filename"
|
48
|
+
});`;
|
49
|
+
}
|
50
|
+
|
51
|
+
/**
|
52
|
+
* @returns {string | null} runtime code
|
26
53
|
*/
|
27
54
|
generate() {
|
28
|
-
const
|
29
|
-
const
|
55
|
+
const compilation = /** @type {Compilation} */ (this.compilation);
|
56
|
+
const chunkGraph = /** @type {ChunkGraph} */ (this.chunkGraph);
|
57
|
+
const chunk = /** @type {Chunk} */ (this.chunk);
|
58
|
+
const { runtimeTemplate } = compilation;
|
30
59
|
const fn = RuntimeGlobals.ensureChunkHandlers;
|
31
60
|
const withBaseURI = this.runtimeRequirements.has(RuntimeGlobals.baseURI);
|
32
61
|
const withExternalInstallChunk = this.runtimeRequirements.has(
|
@@ -46,10 +75,10 @@ class RequireChunkLoadingRuntimeModule extends RuntimeModule {
|
|
46
75
|
);
|
47
76
|
const conditionMap = chunkGraph.getChunkConditionMap(chunk, chunkHasJs);
|
48
77
|
const hasJsMatcher = compileBooleanMatcher(conditionMap);
|
49
|
-
const initialChunkIds = getInitialChunkIds(chunk, chunkGraph);
|
78
|
+
const initialChunkIds = getInitialChunkIds(chunk, chunkGraph, chunkHasJs);
|
50
79
|
|
51
|
-
const outputName =
|
52
|
-
getChunkFilenameTemplate(chunk,
|
80
|
+
const outputName = compilation.getPath(
|
81
|
+
getChunkFilenameTemplate(chunk, compilation.outputOptions),
|
53
82
|
{
|
54
83
|
chunk,
|
55
84
|
contentHashType: "javascript"
|
@@ -57,7 +86,7 @@ class RequireChunkLoadingRuntimeModule extends RuntimeModule {
|
|
57
86
|
);
|
58
87
|
const rootOutputDir = getUndoPath(
|
59
88
|
outputName,
|
60
|
-
|
89
|
+
/** @type {string} */ (compilation.outputOptions.path),
|
61
90
|
true
|
62
91
|
);
|
63
92
|
|
@@ -67,13 +96,7 @@ class RequireChunkLoadingRuntimeModule extends RuntimeModule {
|
|
67
96
|
|
68
97
|
return Template.asString([
|
69
98
|
withBaseURI
|
70
|
-
?
|
71
|
-
`${RuntimeGlobals.baseURI} = require("url").pathToFileURL(${
|
72
|
-
rootOutputDir !== "./"
|
73
|
-
? `__dirname + ${JSON.stringify("/" + rootOutputDir)}`
|
74
|
-
: "__filename"
|
75
|
-
});`
|
76
|
-
])
|
99
|
+
? this._generateBaseUri(chunk, rootOutputDir)
|
77
100
|
: "// no baseURI",
|
78
101
|
"",
|
79
102
|
"// object to store loaded chunks",
|
@@ -91,10 +114,10 @@ class RequireChunkLoadingRuntimeModule extends RuntimeModule {
|
|
91
114
|
withOnChunkLoad
|
92
115
|
? `${
|
93
116
|
RuntimeGlobals.onChunksLoaded
|
94
|
-
|
117
|
+
}.require = ${runtimeTemplate.returningFunction(
|
95
118
|
"installedChunks[chunkId]",
|
96
119
|
"chunkId"
|
97
|
-
|
120
|
+
)};`
|
98
121
|
: "// no on chunks loaded",
|
99
122
|
"",
|
100
123
|
withLoading || withExternalInstallChunk
|
@@ -109,11 +132,11 @@ class RequireChunkLoadingRuntimeModule extends RuntimeModule {
|
|
109
132
|
"}"
|
110
133
|
]),
|
111
134
|
"}",
|
112
|
-
`if(runtime) runtime(
|
135
|
+
`if(runtime) runtime(${RuntimeGlobals.require});`,
|
113
136
|
"for(var i = 0; i < chunkIds.length; i++)",
|
114
137
|
Template.indent("installedChunks[chunkIds[i]] = 1;"),
|
115
138
|
withOnChunkLoad ? `${RuntimeGlobals.onChunksLoaded}();` : ""
|
116
|
-
|
139
|
+
])};`
|
117
140
|
: "// no chunk install function needed",
|
118
141
|
"",
|
119
142
|
withLoading
|
@@ -140,17 +163,17 @@ class RequireChunkLoadingRuntimeModule extends RuntimeModule {
|
|
140
163
|
""
|
141
164
|
]),
|
142
165
|
"}"
|
143
|
-
|
166
|
+
]
|
144
167
|
: "installedChunks[chunkId] = 1;"
|
145
168
|
)};`
|
146
|
-
|
169
|
+
])
|
147
170
|
: "// no chunk loading",
|
148
171
|
"",
|
149
172
|
withExternalInstallChunk
|
150
173
|
? Template.asString([
|
151
|
-
|
174
|
+
`module.exports = ${RuntimeGlobals.require};`,
|
152
175
|
`${RuntimeGlobals.externalInstallChunk} = installChunk;`
|
153
|
-
|
176
|
+
])
|
154
177
|
: "// no external install chunk",
|
155
178
|
"",
|
156
179
|
withHmr
|
@@ -166,7 +189,7 @@ class RequireChunkLoadingRuntimeModule extends RuntimeModule {
|
|
166
189
|
Template.indent([
|
167
190
|
`if(${RuntimeGlobals.hasOwnProperty}(updatedModules, moduleId)) {`,
|
168
191
|
Template.indent([
|
169
|
-
|
192
|
+
"currentUpdate[moduleId] = updatedModules[moduleId];",
|
170
193
|
"if(updatedModulesList) updatedModulesList.push(moduleId);"
|
171
194
|
]),
|
172
195
|
"}"
|
@@ -198,7 +221,7 @@ class RequireChunkLoadingRuntimeModule extends RuntimeModule {
|
|
198
221
|
/\$hmrInvalidateModuleHandlers\$/g,
|
199
222
|
RuntimeGlobals.hmrInvalidateModuleHandlers
|
200
223
|
)
|
201
|
-
|
224
|
+
])
|
202
225
|
: "// no HMR",
|
203
226
|
"",
|
204
227
|
withHmrManifest
|
@@ -211,10 +234,10 @@ class RequireChunkLoadingRuntimeModule extends RuntimeModule {
|
|
211
234
|
RuntimeGlobals.getUpdateManifestFilename
|
212
235
|
}());`
|
213
236
|
]),
|
214
|
-
|
237
|
+
"})['catch'](function(err) { if(err.code !== 'MODULE_NOT_FOUND') throw err; });"
|
215
238
|
]),
|
216
239
|
"}"
|
217
|
-
|
240
|
+
])
|
218
241
|
: "// no HMR manifest"
|
219
242
|
]);
|
220
243
|
}
|