webpack 5.97.1 → 5.104.1
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 +368 -434
- package/bin/webpack.js +15 -9
- package/hot/dev-server.js +18 -3
- package/hot/emitter-event-target.js +7 -0
- package/hot/lazy-compilation-node.js +45 -29
- package/hot/lazy-compilation-universal.js +18 -0
- package/hot/lazy-compilation-web.js +15 -5
- package/hot/load-http.js +7 -0
- package/hot/log.js +15 -15
- package/hot/only-dev-server.js +19 -4
- package/hot/poll.js +1 -0
- package/lib/APIPlugin.js +48 -50
- package/lib/AbstractMethodError.js +1 -0
- package/lib/AsyncDependenciesBlock.js +4 -5
- package/lib/AutomaticPrefetchPlugin.js +22 -22
- package/lib/BannerPlugin.js +35 -40
- package/lib/Cache.js +12 -9
- package/lib/CacheFacade.js +13 -13
- package/lib/CaseSensitiveModulesWarning.js +6 -6
- package/lib/Chunk.js +68 -47
- package/lib/ChunkGraph.js +174 -95
- package/lib/ChunkGroup.js +32 -24
- package/lib/ChunkTemplate.js +8 -8
- package/lib/CleanPlugin.js +90 -42
- package/lib/CodeGenerationResults.js +12 -9
- package/lib/CompatibilityPlugin.js +70 -21
- package/lib/Compilation.js +827 -550
- package/lib/Compiler.js +137 -109
- package/lib/ConcatenationScope.js +45 -8
- package/lib/ConditionalInitFragment.js +1 -1
- package/lib/ConstPlugin.js +89 -59
- package/lib/ContextExclusionPlugin.js +5 -4
- package/lib/ContextModule.js +66 -51
- package/lib/ContextModuleFactory.js +51 -30
- package/lib/ContextReplacementPlugin.js +89 -34
- package/lib/CssModule.js +8 -4
- package/lib/DefinePlugin.js +209 -57
- package/lib/DelegatedModule.js +34 -23
- package/lib/DelegatedModuleFactoryPlugin.js +27 -24
- package/lib/DelegatedPlugin.js +4 -2
- package/lib/DependenciesBlock.js +0 -2
- package/lib/Dependency.js +37 -19
- package/lib/DependencyTemplate.js +2 -0
- package/lib/DependencyTemplates.js +5 -6
- package/lib/DllEntryPlugin.js +8 -4
- package/lib/DllModule.js +11 -12
- package/lib/DllModuleFactory.js +2 -2
- package/lib/DllPlugin.js +9 -6
- package/lib/DllReferencePlugin.js +60 -65
- package/lib/DotenvPlugin.js +462 -0
- package/lib/DynamicEntryPlugin.js +8 -8
- package/lib/EntryOptionPlugin.js +8 -6
- package/lib/EntryPlugin.js +5 -3
- package/lib/Entrypoint.js +19 -0
- package/lib/EnvironmentNotSupportAsyncWarning.js +0 -3
- package/lib/EnvironmentPlugin.js +26 -19
- package/lib/ErrorHelpers.js +6 -6
- package/lib/EvalDevToolModulePlugin.js +17 -14
- package/lib/EvalSourceMapDevToolPlugin.js +156 -142
- package/lib/ExportsInfo.js +180 -115
- package/lib/ExportsInfoApiPlugin.js +2 -2
- package/lib/ExternalModule.js +256 -102
- package/lib/ExternalModuleFactoryPlugin.js +66 -29
- package/lib/ExternalsPlugin.js +57 -2
- package/lib/FileSystemInfo.js +313 -247
- package/lib/FlagAllModulesAsUsedPlugin.js +2 -2
- package/lib/FlagDependencyExportsPlugin.js +29 -19
- package/lib/FlagDependencyUsagePlugin.js +9 -10
- package/lib/FlagEntryExportAsUsedPlugin.js +1 -1
- package/lib/Generator.js +43 -10
- package/lib/GraphHelpers.js +11 -3
- package/lib/HookWebpackError.js +35 -7
- package/lib/HotModuleReplacementPlugin.js +149 -108
- package/lib/HotUpdateChunk.js +0 -3
- package/lib/IgnoreErrorModuleFactory.js +2 -2
- package/lib/IgnorePlugin.js +16 -13
- package/lib/IgnoreWarningsPlugin.js +6 -4
- package/lib/InitFragment.js +41 -23
- package/lib/InvalidDependenciesModuleWarning.js +2 -3
- package/lib/JavascriptMetaInfoPlugin.js +2 -4
- package/lib/LibManifestPlugin.js +12 -13
- package/lib/LoaderOptionsPlugin.js +12 -14
- package/lib/LoaderTargetPlugin.js +5 -3
- package/lib/MainTemplate.js +18 -29
- package/lib/ManifestPlugin.js +235 -0
- package/lib/Module.js +138 -60
- package/lib/ModuleBuildError.js +4 -2
- package/lib/ModuleDependencyError.js +4 -3
- package/lib/ModuleDependencyWarning.js +4 -3
- package/lib/ModuleError.js +1 -1
- package/lib/ModuleFactory.js +10 -3
- package/lib/ModuleFilenameHelpers.js +63 -60
- package/lib/ModuleGraph.js +195 -70
- package/lib/ModuleGraphConnection.js +14 -20
- package/lib/ModuleInfoHeaderPlugin.js +15 -16
- package/lib/ModuleNotFoundError.js +1 -1
- package/lib/ModuleParseError.js +8 -4
- package/lib/ModuleSourceTypeConstants.js +189 -0
- package/lib/ModuleTemplate.js +7 -8
- package/lib/ModuleTypeConstants.js +37 -15
- package/lib/ModuleWarning.js +1 -1
- package/lib/MultiCompiler.js +64 -49
- package/lib/MultiStats.js +19 -14
- package/lib/MultiWatching.js +7 -11
- package/lib/NoEmitOnErrorsPlugin.js +5 -3
- package/lib/NodeStuffPlugin.js +438 -126
- package/lib/NormalModule.js +322 -201
- package/lib/NormalModuleFactory.js +230 -117
- package/lib/NormalModuleReplacementPlugin.js +37 -39
- package/lib/NullFactory.js +3 -2
- package/lib/OptimizationStages.js +1 -1
- package/lib/OptionsApply.js +1 -1
- package/lib/Parser.js +5 -3
- package/lib/PlatformPlugin.js +3 -1
- package/lib/PrefetchPlugin.js +6 -4
- package/lib/ProgressPlugin.js +48 -49
- package/lib/ProvidePlugin.js +7 -5
- package/lib/RawModule.js +26 -12
- package/lib/RecordIdsPlugin.js +88 -110
- package/lib/RequestShortener.js +3 -1
- package/lib/ResolverFactory.js +15 -14
- package/lib/RuntimeGlobals.js +216 -153
- package/lib/RuntimeModule.js +7 -6
- package/lib/RuntimePlugin.js +115 -62
- package/lib/RuntimeTemplate.js +248 -76
- package/lib/SelfModuleFactory.js +2 -2
- package/lib/SizeFormatHelpers.js +2 -2
- package/lib/SourceMapDevToolModuleOptionsPlugin.js +17 -27
- package/lib/SourceMapDevToolPlugin.js +72 -59
- package/lib/Stats.js +2 -3
- package/lib/Template.js +31 -24
- package/lib/TemplatedPathPlugin.js +24 -21
- package/lib/UseStrictPlugin.js +1 -1
- package/lib/WarnCaseSensitiveModulesPlugin.js +36 -37
- package/lib/WarnDeprecatedOptionPlugin.js +7 -8
- package/lib/WarnNoModeSetPlugin.js +3 -1
- package/lib/WatchIgnorePlugin.js +11 -9
- package/lib/Watching.js +27 -29
- package/lib/WebpackError.js +10 -3
- package/lib/WebpackIsIncludedPlugin.js +4 -5
- package/lib/WebpackOptionsApply.js +263 -135
- package/lib/asset/AssetBytesGenerator.js +171 -0
- package/lib/asset/AssetBytesParser.js +37 -0
- package/lib/asset/AssetGenerator.js +285 -223
- package/lib/asset/AssetModulesPlugin.js +103 -41
- package/lib/asset/AssetParser.js +7 -3
- package/lib/asset/AssetSourceGenerator.js +41 -17
- package/lib/asset/RawDataUrlModule.js +17 -9
- package/lib/async-modules/AsyncModuleHelpers.js +52 -0
- package/lib/async-modules/AwaitDependenciesInitFragment.js +39 -24
- package/lib/async-modules/InferAsyncModulesPlugin.js +25 -26
- package/lib/buildChunkGraph.js +36 -17
- package/lib/cache/AddBuildDependenciesPlugin.js +5 -6
- package/lib/cache/IdleFileCachePlugin.js +22 -20
- package/lib/cache/MemoryCachePlugin.js +3 -3
- package/lib/cache/MemoryWithGcCachePlugin.js +17 -11
- package/lib/cache/PackFileCacheStrategy.js +198 -170
- package/lib/cache/ResolverCachePlugin.js +58 -48
- package/lib/cache/getLazyHashedEtag.js +5 -4
- package/lib/cli.js +197 -39
- package/lib/config/browserslistTargetHandler.js +110 -85
- package/lib/config/defaults.js +514 -113
- package/lib/config/normalization.js +91 -64
- package/lib/config/target.js +30 -18
- package/lib/container/ContainerEntryDependency.js +0 -1
- package/lib/container/ContainerEntryModule.js +16 -15
- package/lib/container/ContainerEntryModuleFactory.js +2 -2
- package/lib/container/ContainerPlugin.js +5 -6
- package/lib/container/ContainerReferencePlugin.js +27 -30
- package/lib/container/FallbackDependency.js +2 -1
- package/lib/container/FallbackModule.js +19 -14
- package/lib/container/FallbackModuleFactory.js +2 -2
- package/lib/container/HoistContainerReferencesPlugin.js +7 -7
- package/lib/container/ModuleFederationPlugin.js +4 -4
- package/lib/container/RemoteModule.js +14 -14
- package/lib/container/RemoteRuntimeModule.js +2 -2
- package/lib/container/options.js +9 -9
- package/lib/css/CssGenerator.js +366 -74
- package/lib/css/CssLoadingRuntimeModule.js +26 -16
- package/lib/css/CssMergeStyleSheetsRuntimeModule.js +56 -0
- package/lib/css/CssModulesPlugin.js +191 -142
- package/lib/css/CssParser.js +1756 -740
- package/lib/css/walkCssTokens.js +180 -67
- package/lib/debug/ProfilingPlugin.js +135 -51
- package/lib/dependencies/AMDDefineDependencyParserPlugin.js +29 -28
- package/lib/dependencies/AMDPlugin.js +18 -11
- package/lib/dependencies/AMDRequireArrayDependency.js +5 -4
- package/lib/dependencies/AMDRequireContextDependency.js +2 -1
- package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +35 -26
- package/lib/dependencies/AMDRuntimeModules.js +3 -1
- package/lib/dependencies/CachedConstDependency.js +24 -18
- package/lib/dependencies/CommonJsExportRequireDependency.js +31 -24
- package/lib/dependencies/CommonJsExportsDependency.js +2 -1
- package/lib/dependencies/CommonJsExportsParserPlugin.js +50 -36
- package/lib/dependencies/CommonJsFullRequireDependency.js +7 -13
- package/lib/dependencies/CommonJsImportsParserPlugin.js +146 -127
- package/lib/dependencies/CommonJsPlugin.js +29 -18
- package/lib/dependencies/CommonJsRequireContextDependency.js +4 -3
- package/lib/dependencies/CommonJsSelfReferenceDependency.js +4 -4
- package/lib/dependencies/ConstDependency.js +2 -2
- package/lib/dependencies/ContextDependency.js +10 -5
- package/lib/dependencies/ContextDependencyHelpers.js +21 -13
- package/lib/dependencies/ContextDependencyTemplateAsId.js +10 -9
- package/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +13 -10
- package/lib/dependencies/ContextElementDependency.js +23 -12
- package/lib/dependencies/CssIcssExportDependency.js +402 -22
- package/lib/dependencies/CssIcssImportDependency.js +116 -51
- package/lib/dependencies/CssIcssSymbolDependency.js +33 -35
- package/lib/dependencies/CssImportDependency.js +17 -14
- package/lib/dependencies/CssUrlDependency.js +8 -13
- package/lib/dependencies/DynamicExports.js +19 -19
- package/lib/dependencies/ExportsInfoDependency.js +13 -10
- package/lib/dependencies/ExternalModuleDependency.js +7 -7
- package/lib/dependencies/ExternalModuleInitFragment.js +3 -2
- package/lib/dependencies/ExternalModuleInitFragmentDependency.js +96 -0
- package/lib/dependencies/HarmonyAcceptDependency.js +96 -5
- package/lib/dependencies/HarmonyAcceptImportDependency.js +2 -5
- package/lib/dependencies/HarmonyCompatibilityDependency.js +0 -1
- package/lib/dependencies/HarmonyDetectionParserPlugin.js +10 -30
- package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +19 -8
- package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +136 -99
- package/lib/dependencies/HarmonyExportExpressionDependency.js +1 -1
- package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +152 -61
- package/lib/dependencies/HarmonyExportInitFragment.js +2 -2
- package/lib/dependencies/HarmonyExportSpecifierDependency.js +2 -2
- package/lib/dependencies/HarmonyExports.js +5 -5
- package/lib/dependencies/HarmonyImportDependency.js +92 -45
- package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +201 -163
- package/lib/dependencies/HarmonyImportSideEffectDependency.js +5 -6
- package/lib/dependencies/HarmonyImportSpecifierDependency.js +69 -42
- package/lib/dependencies/HarmonyModulesPlugin.js +16 -11
- package/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +15 -15
- package/lib/dependencies/ImportContextDependency.js +15 -1
- package/lib/dependencies/ImportDependency.js +25 -7
- package/lib/dependencies/ImportEagerDependency.js +7 -5
- package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +23 -13
- package/lib/dependencies/ImportMetaContextPlugin.js +2 -2
- package/lib/dependencies/ImportMetaPlugin.js +172 -20
- package/lib/dependencies/ImportParserPlugin.js +327 -49
- package/lib/dependencies/ImportPhase.js +121 -0
- package/lib/dependencies/ImportPlugin.js +3 -1
- package/lib/dependencies/ImportWeakDependency.js +7 -5
- package/lib/dependencies/JsonExportsDependency.js +54 -28
- package/lib/dependencies/LoaderDependency.js +0 -3
- package/lib/dependencies/LoaderImportDependency.js +0 -3
- package/lib/dependencies/LoaderPlugin.js +24 -25
- package/lib/dependencies/LocalModulesHelpers.js +4 -4
- package/lib/dependencies/ModuleDecoratorDependency.js +2 -4
- package/lib/dependencies/ModuleDependency.js +14 -13
- package/lib/dependencies/ModuleDependencyTemplateAsRequireId.js +1 -0
- package/lib/dependencies/ModuleHotAcceptDependency.js +1 -1
- package/lib/dependencies/NullDependency.js +2 -0
- package/lib/dependencies/ProvidedDependency.js +8 -10
- package/lib/dependencies/PureExpressionDependency.js +1 -2
- package/lib/dependencies/RequireContextDependency.js +2 -1
- package/lib/dependencies/RequireContextDependencyParserPlugin.js +47 -44
- package/lib/dependencies/RequireContextPlugin.js +5 -2
- package/lib/dependencies/RequireEnsureDependenciesBlock.js +3 -3
- package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +101 -99
- package/lib/dependencies/RequireEnsurePlugin.js +6 -6
- package/lib/dependencies/RequireIncludeDependency.js +2 -2
- package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +33 -34
- package/lib/dependencies/RequireIncludePlugin.js +1 -0
- package/lib/dependencies/RequireResolveContextDependency.js +1 -1
- package/lib/dependencies/RequireResolveDependency.js +3 -3
- package/lib/dependencies/RuntimeRequirementsDependency.js +3 -4
- package/lib/dependencies/StaticExportsDependency.js +3 -5
- package/lib/dependencies/SystemPlugin.js +4 -4
- package/lib/dependencies/URLContextDependency.js +65 -0
- package/lib/dependencies/URLDependency.js +3 -8
- package/lib/dependencies/URLPlugin.js +18 -159
- package/lib/dependencies/WebAssemblyExportImportedDependency.js +3 -3
- package/lib/dependencies/WebAssemblyImportDependency.js +2 -2
- package/lib/dependencies/WebpackIsIncludedDependency.js +2 -3
- package/lib/dependencies/WorkerDependency.js +8 -6
- package/lib/dependencies/WorkerPlugin.js +131 -67
- package/lib/dependencies/getFunctionExpression.js +2 -2
- package/lib/dependencies/processExportInfo.js +4 -4
- package/lib/esm/ExportWebpackRequireRuntimeModule.js +1 -1
- package/lib/esm/ModuleChunkFormatPlugin.js +232 -179
- package/lib/esm/ModuleChunkLoadingPlugin.js +112 -57
- package/lib/esm/ModuleChunkLoadingRuntimeModule.js +102 -28
- package/lib/formatLocation.js +2 -2
- package/lib/hmr/HotModuleReplacement.runtime.js +41 -29
- package/lib/hmr/HotModuleReplacementRuntimeModule.js +1 -1
- package/lib/hmr/JavascriptHotModuleReplacement.runtime.js +43 -33
- package/lib/hmr/JavascriptHotModuleReplacementHelper.js +37 -0
- package/lib/hmr/LazyCompilationPlugin.js +67 -54
- package/lib/hmr/lazyCompilationBackend.js +23 -18
- package/lib/ids/ChunkModuleIdRangePlugin.js +14 -11
- package/lib/ids/DeterministicChunkIdsPlugin.js +32 -37
- package/lib/ids/DeterministicModuleIdsPlugin.js +52 -52
- package/lib/ids/HashedModuleIdsPlugin.js +15 -13
- package/lib/ids/IdHelpers.js +66 -49
- package/lib/ids/NamedChunkIdsPlugin.js +14 -17
- package/lib/ids/NamedModuleIdsPlugin.js +12 -14
- package/lib/ids/NaturalChunkIdsPlugin.js +6 -4
- package/lib/ids/NaturalModuleIdsPlugin.js +4 -3
- package/lib/ids/OccurrenceChunkIdsPlugin.js +7 -5
- package/lib/ids/OccurrenceModuleIdsPlugin.js +8 -7
- package/lib/ids/SyncModuleIdsPlugin.js +18 -13
- package/lib/index.js +54 -14
- package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +116 -119
- package/lib/javascript/BasicEvaluatedExpression.js +26 -18
- package/lib/javascript/ChunkFormatHelpers.js +70 -0
- package/lib/javascript/ChunkHelpers.js +17 -5
- package/lib/javascript/CommonJsChunkFormatPlugin.js +114 -141
- package/lib/javascript/EnableChunkLoadingPlugin.js +7 -4
- package/lib/javascript/JavascriptGenerator.js +122 -100
- package/lib/javascript/JavascriptModulesPlugin.js +332 -152
- package/lib/javascript/JavascriptParser.js +1488 -1052
- package/lib/javascript/JavascriptParserHelpers.js +48 -47
- package/lib/javascript/StartupHelpers.js +23 -22
- package/lib/json/JsonData.js +4 -4
- package/lib/json/JsonGenerator.js +66 -32
- package/lib/json/JsonModulesPlugin.js +16 -6
- package/lib/json/JsonParser.js +23 -8
- package/lib/library/AbstractLibraryPlugin.js +45 -10
- package/lib/library/AmdLibraryPlugin.js +7 -5
- package/lib/library/AssignLibraryPlugin.js +71 -17
- package/lib/library/EnableLibraryPlugin.js +51 -25
- package/lib/library/ExportPropertyLibraryPlugin.js +12 -18
- package/lib/library/JsonpLibraryPlugin.js +5 -2
- package/lib/library/ModuleLibraryPlugin.js +230 -18
- package/lib/library/SystemLibraryPlugin.js +29 -11
- package/lib/library/UmdLibraryPlugin.js +35 -32
- package/lib/logging/Logger.js +18 -15
- package/lib/logging/createConsoleLogger.js +27 -27
- package/lib/logging/runtime.js +11 -11
- package/lib/logging/truncateArgs.js +5 -5
- package/lib/node/CommonJsChunkLoadingPlugin.js +72 -75
- package/lib/node/NodeEnvironmentPlugin.js +9 -3
- package/lib/node/NodeTargetPlugin.js +9 -1
- package/lib/node/NodeTemplatePlugin.js +2 -2
- package/lib/node/NodeWatchFileSystem.js +4 -4
- package/lib/node/ReadFileChunkLoadingRuntimeModule.js +22 -38
- package/lib/node/ReadFileCompileAsyncWasmPlugin.js +10 -11
- package/lib/node/ReadFileCompileWasmPlugin.js +11 -14
- package/lib/node/RequireChunkLoadingRuntimeModule.js +22 -30
- package/lib/node/nodeConsole.js +12 -7
- package/lib/optimize/AggressiveMergingPlugin.js +46 -47
- package/lib/optimize/AggressiveSplittingPlugin.js +233 -238
- package/lib/optimize/ConcatenatedModule.js +620 -251
- package/lib/optimize/EnsureChunkConditionsPlugin.js +58 -58
- package/lib/optimize/FlagIncludedChunksPlugin.js +93 -96
- package/lib/optimize/InnerGraph.js +139 -124
- package/lib/optimize/InnerGraphPlugin.js +29 -24
- package/lib/optimize/LimitChunkCountPlugin.js +32 -8
- package/lib/optimize/MangleExportsPlugin.js +22 -22
- package/lib/optimize/MergeDuplicateChunksPlugin.js +80 -81
- package/lib/optimize/MinChunkSizePlugin.js +12 -7
- package/lib/optimize/ModuleConcatenationPlugin.js +92 -71
- package/lib/optimize/RealContentHashPlugin.js +58 -44
- package/lib/optimize/RemoveEmptyChunksPlugin.js +8 -5
- package/lib/optimize/RemoveParentModulesPlugin.js +7 -4
- package/lib/optimize/RuntimeChunkPlugin.js +22 -25
- package/lib/optimize/SideEffectsFlagPlugin.js +44 -26
- package/lib/optimize/SplitChunksPlugin.js +209 -158
- package/lib/performance/AssetsOverSizeLimitWarning.js +1 -1
- package/lib/performance/EntrypointsOverSizeLimitWarning.js +2 -2
- package/lib/performance/SizeLimitsPlugin.js +8 -5
- package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +5 -7
- package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +61 -64
- package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +3 -4
- package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +2 -2
- package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +2 -2
- package/lib/rules/BasicEffectRulePlugin.js +14 -5
- package/lib/rules/BasicMatcherRulePlugin.js +18 -7
- package/lib/rules/ObjectMatcherRulePlugin.js +17 -6
- package/lib/rules/RuleSetCompiler.js +73 -32
- package/lib/rules/UseEffectRulePlugin.js +61 -25
- package/lib/runtime/AsyncModuleRuntimeModule.js +74 -9
- package/lib/runtime/AutoPublicPathRuntimeModule.js +9 -4
- package/lib/runtime/BaseUriRuntimeModule.js +2 -2
- package/lib/runtime/CompatRuntimeModule.js +0 -1
- package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +1 -1
- package/lib/runtime/GetChunkFilenameRuntimeModule.js +34 -35
- package/lib/runtime/GetMainFilenameRuntimeModule.js +1 -1
- package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +1 -1
- package/lib/runtime/LoadScriptRuntimeModule.js +0 -2
- package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +248 -0
- package/lib/runtime/PublicPathRuntimeModule.js +2 -2
- package/lib/runtime/RuntimeIdRuntimeModule.js +2 -1
- package/lib/runtime/StartupChunkDependenciesPlugin.js +39 -42
- package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +10 -9
- package/lib/runtime/StartupEntrypointRuntimeModule.js +0 -1
- package/lib/runtime/SystemContextRuntimeModule.js +0 -2
- package/lib/runtime/ToBinaryRuntimeModule.js +64 -0
- package/lib/schemes/DataUriPlugin.js +9 -31
- package/lib/schemes/FileUriPlugin.js +11 -6
- package/lib/schemes/HttpUriPlugin.js +381 -261
- package/lib/schemes/VirtualUrlPlugin.js +222 -0
- package/lib/serialization/AggregateErrorSerializer.js +41 -0
- package/lib/serialization/BinaryMiddleware.js +51 -33
- package/lib/serialization/ErrorObjectSerializer.js +7 -2
- package/lib/serialization/FileMiddleware.js +101 -71
- package/lib/serialization/NullPrototypeObjectSerializer.js +5 -3
- package/lib/serialization/ObjectMiddleware.js +130 -54
- package/lib/serialization/PlainObjectSerializer.js +1 -1
- package/lib/serialization/Serializer.js +38 -20
- package/lib/serialization/SerializerMiddleware.js +121 -49
- package/lib/serialization/SingleItemMiddleware.js +9 -7
- package/lib/serialization/types.js +1 -1
- package/lib/sharing/ConsumeSharedModule.js +9 -9
- package/lib/sharing/ConsumeSharedPlugin.js +14 -14
- package/lib/sharing/ConsumeSharedRuntimeModule.js +11 -8
- package/lib/sharing/ProvideSharedModule.js +9 -11
- package/lib/sharing/ProvideSharedModuleFactory.js +5 -3
- package/lib/sharing/ProvideSharedPlugin.js +15 -10
- package/lib/sharing/SharePlugin.js +3 -4
- package/lib/sharing/ShareRuntimeModule.js +7 -6
- package/lib/sharing/resolveMatchedConfigs.js +27 -13
- package/lib/sharing/utils.js +37 -43
- package/lib/stats/DefaultStatsFactoryPlugin.js +455 -286
- package/lib/stats/DefaultStatsPresetPlugin.js +77 -46
- package/lib/stats/DefaultStatsPrinterPlugin.js +583 -419
- package/lib/stats/StatsFactory.js +75 -32
- package/lib/stats/StatsPrinter.js +71 -51
- package/lib/url/URLParserPlugin.js +264 -0
- package/lib/util/ArrayHelpers.js +6 -8
- package/lib/util/ArrayQueue.js +1 -1
- package/lib/util/AsyncQueue.js +11 -10
- package/lib/util/Hash.js +37 -5
- package/lib/util/IterableHelpers.js +4 -4
- package/lib/util/LazyBucketSortedSet.js +46 -27
- package/lib/util/LazySet.js +16 -10
- package/lib/util/MapHelpers.js +1 -1
- package/lib/util/ParallelismFactorCalculator.js +2 -2
- package/lib/util/Semaphore.js +3 -3
- package/lib/util/SetHelpers.js +6 -6
- package/lib/util/SortableSet.js +11 -9
- package/lib/util/StackedCacheMap.js +2 -2
- package/lib/util/StackedMap.js +3 -3
- package/lib/util/StringXor.js +2 -1
- package/lib/util/TupleQueue.js +11 -8
- package/lib/util/TupleSet.js +44 -19
- package/lib/util/URLAbsoluteSpecifier.js +3 -4
- package/lib/util/WeakTupleMap.js +56 -42
- package/lib/util/binarySearchBounds.js +4 -3
- package/lib/util/chainedImports.js +3 -1
- package/lib/util/cleverMerge.js +171 -107
- package/lib/util/comparators.js +265 -162
- package/lib/util/compileBooleanMatcher.js +120 -41
- package/lib/util/concatenate.js +20 -16
- package/lib/util/conventions.js +73 -74
- package/lib/util/create-schema-validation.js +8 -8
- package/lib/util/createHash.js +32 -135
- package/lib/util/dataURL.js +39 -0
- package/lib/util/deprecation.js +119 -116
- package/lib/util/deterministicGrouping.js +56 -47
- package/lib/util/extractSourceMap.js +319 -0
- package/lib/util/extractUrlAndGlobal.js +1 -1
- package/lib/util/findGraphRoots.js +19 -9
- package/lib/util/fs.js +169 -141
- package/lib/util/hash/BatchedHash.js +50 -10
- package/lib/util/hash/BulkUpdateHash.js +138 -0
- package/lib/util/hash/DebugHash.js +75 -0
- package/lib/util/hash/hash-digest.js +216 -0
- package/lib/util/hash/md4.js +2 -2
- package/lib/util/hash/wasm-hash.js +59 -17
- package/lib/util/identifier.js +124 -61
- package/lib/util/internalSerializables.js +4 -6
- package/lib/util/magicComment.js +9 -5
- package/lib/util/makeSerializable.js +2 -2
- package/lib/util/memoize.js +5 -2
- package/lib/util/objectToMap.js +3 -2
- package/lib/util/processAsyncTree.js +5 -5
- package/lib/util/propertyAccess.js +1 -1
- package/lib/util/propertyName.js +2 -3
- package/lib/util/registerExternalSerializer.js +16 -20
- package/lib/util/removeBOM.js +25 -0
- package/lib/util/runtime.js +72 -56
- package/lib/util/semver.js +44 -33
- package/lib/util/serialization.js +56 -56
- package/lib/util/smartGrouping.js +42 -27
- package/lib/util/source.js +5 -4
- package/lib/util/traverseDestructuringAssignmentProperties.js +45 -0
- package/lib/validateSchema.js +7 -9
- package/lib/wasm/EnableWasmLoadingPlugin.js +22 -12
- package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +9 -5
- package/lib/wasm-async/AsyncWebAssemblyGenerator.js +15 -3
- package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +28 -22
- package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +47 -57
- package/lib/wasm-async/AsyncWebAssemblyParser.js +2 -10
- package/lib/wasm-async/UniversalCompileAsyncWasmPlugin.js +8 -4
- package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +23 -17
- package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +55 -57
- package/lib/wasm-sync/WebAssemblyGenerator.js +56 -41
- package/lib/wasm-sync/WebAssemblyInInitialChunkError.js +6 -3
- package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +25 -10
- package/lib/wasm-sync/WebAssemblyModulesPlugin.js +11 -12
- package/lib/wasm-sync/WebAssemblyParser.js +10 -17
- package/lib/wasm-sync/WebAssemblyUtils.js +1 -1
- package/lib/web/FetchCompileAsyncWasmPlugin.js +4 -4
- package/lib/web/FetchCompileWasmPlugin.js +6 -8
- package/lib/web/JsonpChunkLoadingPlugin.js +74 -74
- package/lib/web/JsonpChunkLoadingRuntimeModule.js +10 -26
- package/lib/web/JsonpTemplatePlugin.js +0 -1
- package/lib/webpack.js +107 -87
- package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +79 -75
- package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +38 -51
- package/lib/webworker/WebWorkerTemplatePlugin.js +1 -0
- package/module.d.ts +5 -0
- package/package.json +149 -129
- package/schemas/WebpackOptions.check.d.ts +1 -1
- package/schemas/WebpackOptions.check.js +2 -2
- package/schemas/WebpackOptions.json +543 -190
- package/schemas/plugins/BannerPlugin.check.d.ts +1 -1
- package/schemas/plugins/BannerPlugin.check.js +2 -2
- package/schemas/plugins/BannerPlugin.json +4 -0
- package/schemas/plugins/DllPlugin.check.d.ts +1 -1
- package/schemas/plugins/DllPlugin.check.js +1 -1
- package/schemas/plugins/DllReferencePlugin.check.d.ts +1 -1
- package/schemas/plugins/DllReferencePlugin.check.js +1 -1
- package/schemas/plugins/IgnorePlugin.check.d.ts +1 -1
- package/schemas/plugins/IgnorePlugin.check.js +1 -1
- package/schemas/plugins/IgnorePlugin.json +1 -1
- package/schemas/plugins/LoaderOptionsPlugin.check.d.ts +1 -1
- package/schemas/plugins/LoaderOptionsPlugin.check.js +1 -1
- package/schemas/plugins/{HashedModuleIdsPlugin.check.d.ts → ManifestPlugin.check.d.ts} +2 -2
- package/schemas/plugins/ManifestPlugin.check.js +6 -0
- package/schemas/plugins/ManifestPlugin.json +98 -0
- package/schemas/plugins/ProgressPlugin.check.d.ts +1 -1
- package/schemas/plugins/ProgressPlugin.check.js +1 -1
- package/schemas/plugins/ProgressPlugin.json +1 -1
- package/schemas/plugins/SourceMapDevToolPlugin.check.d.ts +1 -1
- package/schemas/plugins/SourceMapDevToolPlugin.check.js +2 -2
- package/schemas/plugins/SourceMapDevToolPlugin.json +23 -6
- package/schemas/plugins/WatchIgnorePlugin.check.d.ts +1 -1
- package/schemas/plugins/WatchIgnorePlugin.check.js +1 -1
- package/schemas/plugins/asset/AssetGeneratorOptions.check.d.ts +1 -1
- package/schemas/plugins/asset/AssetGeneratorOptions.check.js +1 -1
- package/schemas/plugins/asset/AssetInlineGeneratorOptions.check.d.ts +1 -1
- package/schemas/plugins/asset/AssetInlineGeneratorOptions.check.js +1 -1
- package/schemas/plugins/asset/AssetParserOptions.check.d.ts +1 -1
- package/schemas/plugins/asset/AssetParserOptions.check.js +1 -1
- package/schemas/plugins/asset/AssetResourceGeneratorOptions.check.d.ts +1 -1
- package/schemas/plugins/asset/AssetResourceGeneratorOptions.check.js +1 -1
- package/schemas/plugins/container/ContainerPlugin.check.d.ts +1 -1
- package/schemas/plugins/container/ContainerPlugin.check.js +1 -1
- package/schemas/plugins/container/ContainerReferencePlugin.check.d.ts +1 -1
- package/schemas/plugins/container/ContainerReferencePlugin.check.js +2 -2
- package/schemas/plugins/container/ContainerReferencePlugin.json +4 -1
- package/schemas/plugins/container/ExternalsType.check.d.ts +1 -1
- package/schemas/plugins/container/ExternalsType.check.js +2 -2
- package/schemas/plugins/container/ModuleFederationPlugin.check.d.ts +1 -1
- package/schemas/plugins/container/ModuleFederationPlugin.check.js +2 -2
- package/schemas/plugins/container/ModuleFederationPlugin.json +4 -1
- package/schemas/plugins/css/CssGeneratorOptions.check.d.ts +1 -1
- package/schemas/plugins/css/CssGeneratorOptions.check.js +1 -1
- package/schemas/plugins/css/CssModuleGeneratorOptions.check.d.ts +1 -1
- package/schemas/plugins/css/CssModuleGeneratorOptions.check.js +2 -2
- package/schemas/plugins/css/CssModuleParserOptions.check.d.ts +1 -1
- package/schemas/plugins/css/CssModuleParserOptions.check.js +2 -2
- package/schemas/plugins/css/CssParserOptions.check.d.ts +1 -1
- package/schemas/plugins/css/CssParserOptions.check.js +2 -2
- package/schemas/plugins/debug/ProfilingPlugin.check.d.ts +1 -1
- package/schemas/plugins/debug/ProfilingPlugin.check.js +1 -1
- package/schemas/plugins/ids/HashedModuleIdsPlugin.check.d.ts +7 -0
- package/schemas/plugins/ids/HashedModuleIdsPlugin.check.js +6 -0
- package/schemas/plugins/{HashedModuleIdsPlugin.json → ids/HashedModuleIdsPlugin.json} +15 -2
- package/schemas/plugins/ids/OccurrenceChunkIdsPlugin.check.d.ts +1 -1
- package/schemas/plugins/ids/OccurrenceChunkIdsPlugin.check.js +1 -1
- package/schemas/plugins/ids/OccurrenceModuleIdsPlugin.check.d.ts +1 -1
- package/schemas/plugins/ids/OccurrenceModuleIdsPlugin.check.js +1 -1
- package/schemas/plugins/{css/CssGlobalParserOptions.check.d.ts → json/JsonModulesPluginGenerator.check.d.ts} +1 -1
- package/schemas/plugins/json/JsonModulesPluginGenerator.check.js +6 -0
- package/schemas/plugins/json/JsonModulesPluginGenerator.json +3 -0
- package/schemas/plugins/{css/CssGlobalGeneratorOptions.check.d.ts → json/JsonModulesPluginParser.check.d.ts} +1 -1
- package/schemas/plugins/json/JsonModulesPluginParser.check.js +6 -0
- package/schemas/plugins/json/JsonModulesPluginParser.json +3 -0
- package/schemas/plugins/optimize/AggressiveSplittingPlugin.check.d.ts +1 -1
- package/schemas/plugins/optimize/AggressiveSplittingPlugin.check.js +1 -1
- package/schemas/plugins/optimize/LimitChunkCountPlugin.check.d.ts +1 -1
- package/schemas/plugins/optimize/LimitChunkCountPlugin.check.js +1 -1
- package/schemas/plugins/optimize/MergeDuplicateChunksPlugin.check.d.ts +1 -1
- package/schemas/plugins/optimize/MergeDuplicateChunksPlugin.check.js +1 -1
- package/schemas/plugins/optimize/MinChunkSizePlugin.check.d.ts +1 -1
- package/schemas/plugins/optimize/MinChunkSizePlugin.check.js +1 -1
- package/schemas/plugins/schemes/HttpUriPlugin.check.d.ts +1 -1
- package/schemas/plugins/schemes/HttpUriPlugin.check.js +1 -1
- package/schemas/plugins/schemes/VirtualUrlPlugin.check.d.ts +7 -0
- package/schemas/plugins/schemes/VirtualUrlPlugin.check.js +6 -0
- package/schemas/plugins/schemes/VirtualUrlPlugin.json +77 -0
- package/schemas/plugins/sharing/ConsumeSharedPlugin.check.d.ts +1 -1
- package/schemas/plugins/sharing/ConsumeSharedPlugin.check.js +1 -1
- package/schemas/plugins/sharing/ProvideSharedPlugin.check.d.ts +1 -1
- package/schemas/plugins/sharing/ProvideSharedPlugin.check.js +1 -1
- package/schemas/plugins/sharing/SharePlugin.check.d.ts +1 -1
- package/schemas/plugins/sharing/SharePlugin.check.js +1 -1
- package/types.d.ts +5115 -1863
- package/SECURITY.md +0 -9
- package/lib/ModuleSourceTypesConstants.js +0 -112
- package/lib/dependencies/CssLocalIdentifierDependency.js +0 -250
- package/lib/dependencies/CssSelfLocalIdentifierDependency.js +0 -111
- package/lib/library/ModernModuleLibraryPlugin.js +0 -144
- package/schemas/plugins/HashedModuleIdsPlugin.check.js +0 -6
- package/schemas/plugins/JsonModulesPluginParser.check.d.ts +0 -7
- package/schemas/plugins/JsonModulesPluginParser.check.js +0 -6
- package/schemas/plugins/JsonModulesPluginParser.json +0 -12
- package/schemas/plugins/css/CssAutoGeneratorOptions.check.d.ts +0 -7
- package/schemas/plugins/css/CssAutoGeneratorOptions.check.js +0 -6
- package/schemas/plugins/css/CssAutoGeneratorOptions.json +0 -3
- package/schemas/plugins/css/CssAutoParserOptions.check.d.ts +0 -7
- package/schemas/plugins/css/CssAutoParserOptions.check.js +0 -6
- package/schemas/plugins/css/CssAutoParserOptions.json +0 -3
- package/schemas/plugins/css/CssGlobalGeneratorOptions.check.js +0 -6
- package/schemas/plugins/css/CssGlobalGeneratorOptions.json +0 -3
- package/schemas/plugins/css/CssGlobalParserOptions.check.js +0 -6
- package/schemas/plugins/css/CssGlobalParserOptions.json +0 -3
|
@@ -0,0 +1,222 @@
|
|
|
1
|
+
/*
|
|
2
|
+
MIT License http://www.opensource.org/licenses/mit-license.php
|
|
3
|
+
Author Natsu @xiaoxiaojx
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
"use strict";
|
|
7
|
+
|
|
8
|
+
const { NormalModule } = require("..");
|
|
9
|
+
const ModuleNotFoundError = require("../ModuleNotFoundError");
|
|
10
|
+
const { parseResourceWithoutFragment } = require("../util/identifier");
|
|
11
|
+
|
|
12
|
+
/** @typedef {import("../Compiler")} Compiler */
|
|
13
|
+
/** @typedef {import("../NormalModule")} NormalModule */
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* @template T
|
|
17
|
+
* @typedef {import("../../declarations/LoaderContext").LoaderContext<T>} LoaderContext
|
|
18
|
+
*/
|
|
19
|
+
|
|
20
|
+
const PLUGIN_NAME = "VirtualUrlPlugin";
|
|
21
|
+
const DEFAULT_SCHEME = "virtual";
|
|
22
|
+
|
|
23
|
+
/** @typedef {(loaderContext: LoaderContext<EXPECTED_ANY>) => Promise<string | Buffer> | string | Buffer} SourceFn */
|
|
24
|
+
/** @typedef {() => string} VersionFn */
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* @typedef {object} VirtualModuleConfig
|
|
28
|
+
* @property {string=} type the module type
|
|
29
|
+
* @property {SourceFn} source the source function
|
|
30
|
+
* @property {VersionFn | true | string=} version optional version function or value
|
|
31
|
+
*/
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* @typedef {string | SourceFn | VirtualModuleConfig} VirtualModuleInput
|
|
35
|
+
*/
|
|
36
|
+
|
|
37
|
+
/** @typedef {{ [key: string]: VirtualModuleInput }} VirtualModules */
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* Normalizes a virtual module definition into a standard format
|
|
41
|
+
* @param {VirtualModuleInput} virtualConfig The virtual module to normalize
|
|
42
|
+
* @returns {VirtualModuleConfig} The normalized virtual module
|
|
43
|
+
*/
|
|
44
|
+
function normalizeModule(virtualConfig) {
|
|
45
|
+
if (typeof virtualConfig === "string") {
|
|
46
|
+
return {
|
|
47
|
+
type: "",
|
|
48
|
+
source() {
|
|
49
|
+
return virtualConfig;
|
|
50
|
+
}
|
|
51
|
+
};
|
|
52
|
+
} else if (typeof virtualConfig === "function") {
|
|
53
|
+
return {
|
|
54
|
+
type: "",
|
|
55
|
+
source: virtualConfig
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
return virtualConfig;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
/**
|
|
62
|
+
* Normalizes all virtual modules with the given scheme
|
|
63
|
+
* @param {VirtualModules} virtualConfigs The virtual modules to normalize
|
|
64
|
+
* @param {string} scheme The URL scheme to use
|
|
65
|
+
* @returns {{ [key: string]: VirtualModuleConfig }} The normalized virtual modules
|
|
66
|
+
*/
|
|
67
|
+
function normalizeModules(virtualConfigs, scheme) {
|
|
68
|
+
return Object.keys(virtualConfigs).reduce((pre, id) => {
|
|
69
|
+
pre[toVid(id, scheme)] = normalizeModule(virtualConfigs[id]);
|
|
70
|
+
return pre;
|
|
71
|
+
}, /** @type {{ [key: string]: VirtualModuleConfig }} */ ({}));
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
/**
|
|
75
|
+
* Converts a module id and scheme to a virtual module id
|
|
76
|
+
* @param {string} id The module id
|
|
77
|
+
* @param {string} scheme The URL scheme
|
|
78
|
+
* @returns {string} The virtual module id
|
|
79
|
+
*/
|
|
80
|
+
function toVid(id, scheme) {
|
|
81
|
+
return `${scheme}:${id}`;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
const VALUE_DEP_VERSION = `webpack/${PLUGIN_NAME}/version`;
|
|
85
|
+
|
|
86
|
+
/**
|
|
87
|
+
* Converts a module id and scheme to a cache key
|
|
88
|
+
* @param {string} id The module id
|
|
89
|
+
* @param {string} scheme The URL scheme
|
|
90
|
+
* @returns {string} The cache key
|
|
91
|
+
*/
|
|
92
|
+
function toCacheKey(id, scheme) {
|
|
93
|
+
return `${VALUE_DEP_VERSION}/${toVid(id, scheme)}`;
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
/**
|
|
97
|
+
* @typedef {object} VirtualUrlPluginOptions
|
|
98
|
+
* @property {VirtualModules} modules - The virtual modules
|
|
99
|
+
* @property {string=} scheme - The URL scheme to use
|
|
100
|
+
*/
|
|
101
|
+
|
|
102
|
+
class VirtualUrlPlugin {
|
|
103
|
+
/**
|
|
104
|
+
* @param {VirtualModules} modules The virtual modules
|
|
105
|
+
* @param {string=} scheme The URL scheme to use
|
|
106
|
+
*/
|
|
107
|
+
constructor(modules, scheme) {
|
|
108
|
+
this.scheme = scheme || DEFAULT_SCHEME;
|
|
109
|
+
this.modules = normalizeModules(modules, this.scheme);
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
/**
|
|
113
|
+
* Apply the plugin
|
|
114
|
+
* @param {Compiler} compiler the compiler instance
|
|
115
|
+
* @returns {void}
|
|
116
|
+
*/
|
|
117
|
+
apply(compiler) {
|
|
118
|
+
const scheme = this.scheme;
|
|
119
|
+
const cachedParseResourceWithoutFragment =
|
|
120
|
+
parseResourceWithoutFragment.bindCache(compiler.root);
|
|
121
|
+
|
|
122
|
+
compiler.hooks.compilation.tap(
|
|
123
|
+
PLUGIN_NAME,
|
|
124
|
+
(compilation, { normalModuleFactory }) => {
|
|
125
|
+
normalModuleFactory.hooks.resolveForScheme
|
|
126
|
+
.for(scheme)
|
|
127
|
+
.tap(PLUGIN_NAME, (resourceData) => {
|
|
128
|
+
const virtualConfig = this.findVirtualModuleConfigById(
|
|
129
|
+
resourceData.resource
|
|
130
|
+
);
|
|
131
|
+
const url = cachedParseResourceWithoutFragment(
|
|
132
|
+
resourceData.resource
|
|
133
|
+
);
|
|
134
|
+
const path = url.path;
|
|
135
|
+
const type = virtualConfig.type;
|
|
136
|
+
resourceData.path = path + type;
|
|
137
|
+
resourceData.resource = path;
|
|
138
|
+
|
|
139
|
+
if (virtualConfig.version) {
|
|
140
|
+
const cacheKey = toCacheKey(resourceData.resource, scheme);
|
|
141
|
+
const cacheVersion = this.getCacheVersion(virtualConfig.version);
|
|
142
|
+
compilation.valueCacheVersions.set(
|
|
143
|
+
cacheKey,
|
|
144
|
+
/** @type {string} */ (cacheVersion)
|
|
145
|
+
);
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
return true;
|
|
149
|
+
});
|
|
150
|
+
|
|
151
|
+
const hooks = NormalModule.getCompilationHooks(compilation);
|
|
152
|
+
hooks.readResource
|
|
153
|
+
.for(scheme)
|
|
154
|
+
.tapAsync(PLUGIN_NAME, async (loaderContext, callback) => {
|
|
155
|
+
const { resourcePath } = loaderContext;
|
|
156
|
+
const module = /** @type {NormalModule} */ (loaderContext._module);
|
|
157
|
+
const cacheKey = toCacheKey(resourcePath, scheme);
|
|
158
|
+
|
|
159
|
+
const addVersionValueDependency = () => {
|
|
160
|
+
if (!module || !module.buildInfo) return;
|
|
161
|
+
|
|
162
|
+
const buildInfo = module.buildInfo;
|
|
163
|
+
if (!buildInfo.valueDependencies) {
|
|
164
|
+
buildInfo.valueDependencies = new Map();
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
const cacheVersion = compilation.valueCacheVersions.get(cacheKey);
|
|
168
|
+
if (compilation.valueCacheVersions.has(cacheKey)) {
|
|
169
|
+
buildInfo.valueDependencies.set(
|
|
170
|
+
cacheKey,
|
|
171
|
+
/** @type {string} */ (cacheVersion)
|
|
172
|
+
);
|
|
173
|
+
}
|
|
174
|
+
};
|
|
175
|
+
|
|
176
|
+
try {
|
|
177
|
+
const virtualConfig =
|
|
178
|
+
this.findVirtualModuleConfigById(resourcePath);
|
|
179
|
+
const content = await virtualConfig.source(loaderContext);
|
|
180
|
+
addVersionValueDependency();
|
|
181
|
+
callback(null, content);
|
|
182
|
+
} catch (err) {
|
|
183
|
+
callback(/** @type {Error} */ (err));
|
|
184
|
+
}
|
|
185
|
+
});
|
|
186
|
+
}
|
|
187
|
+
);
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
/**
|
|
191
|
+
* @param {string} id The module id
|
|
192
|
+
* @returns {VirtualModuleConfig} The virtual module config
|
|
193
|
+
*/
|
|
194
|
+
findVirtualModuleConfigById(id) {
|
|
195
|
+
const config = this.modules[id];
|
|
196
|
+
if (!config) {
|
|
197
|
+
throw new ModuleNotFoundError(
|
|
198
|
+
null,
|
|
199
|
+
new Error(`Can't resolve virtual module ${id}`),
|
|
200
|
+
{
|
|
201
|
+
name: `virtual module ${id}`
|
|
202
|
+
}
|
|
203
|
+
);
|
|
204
|
+
}
|
|
205
|
+
return config;
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
/**
|
|
209
|
+
* Get the cache version for a given version value
|
|
210
|
+
* @param {VersionFn | true | string} version The version value or function
|
|
211
|
+
* @returns {string | undefined} The cache version
|
|
212
|
+
*/
|
|
213
|
+
getCacheVersion(version) {
|
|
214
|
+
return version === true
|
|
215
|
+
? undefined
|
|
216
|
+
: (typeof version === "function" ? version() : version) || "unset";
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
VirtualUrlPlugin.DEFAULT_SCHEME = DEFAULT_SCHEME;
|
|
221
|
+
|
|
222
|
+
module.exports = VirtualUrlPlugin;
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/*
|
|
2
|
+
MIT License http://www.opensource.org/licenses/mit-license.php
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
"use strict";
|
|
6
|
+
|
|
7
|
+
/** @typedef {import("./ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
|
|
8
|
+
/** @typedef {import("./ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
|
|
9
|
+
|
|
10
|
+
/** @typedef {Error & { cause?: unknown, errors: EXPECTED_ANY[] }} AggregateError */
|
|
11
|
+
|
|
12
|
+
class AggregateErrorSerializer {
|
|
13
|
+
/**
|
|
14
|
+
* @param {AggregateError} obj error
|
|
15
|
+
* @param {ObjectSerializerContext} context context
|
|
16
|
+
*/
|
|
17
|
+
serialize(obj, context) {
|
|
18
|
+
context.write(obj.errors);
|
|
19
|
+
context.write(obj.message);
|
|
20
|
+
context.write(obj.stack);
|
|
21
|
+
context.write(obj.cause);
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* @param {ObjectDeserializerContext} context context
|
|
26
|
+
* @returns {AggregateError} error
|
|
27
|
+
*/
|
|
28
|
+
deserialize(context) {
|
|
29
|
+
const errors = context.read();
|
|
30
|
+
// eslint-disable-next-line n/no-unsupported-features/es-builtins, n/no-unsupported-features/es-syntax, unicorn/error-message
|
|
31
|
+
const err = new AggregateError(errors);
|
|
32
|
+
|
|
33
|
+
err.message = context.read();
|
|
34
|
+
err.stack = context.read();
|
|
35
|
+
err.cause = context.read();
|
|
36
|
+
|
|
37
|
+
return err;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
module.exports = AggregateErrorSerializer;
|
|
@@ -117,7 +117,7 @@ const MEASURE_END_OPERATION = Symbol("MEASURE_END_OPERATION");
|
|
|
117
117
|
* @param {number} n number
|
|
118
118
|
* @returns {0 | 1 | 2} type of number for serialization
|
|
119
119
|
*/
|
|
120
|
-
const identifyNumber = n => {
|
|
120
|
+
const identifyNumber = (n) => {
|
|
121
121
|
if (n === (n | 0)) {
|
|
122
122
|
if (n <= 127 && n >= -128) return 0;
|
|
123
123
|
if (n <= 2147483647 && n >= -2147483648) return 1;
|
|
@@ -129,43 +129,49 @@ const identifyNumber = n => {
|
|
|
129
129
|
* @param {bigint} n bigint
|
|
130
130
|
* @returns {0 | 1 | 2} type of bigint for serialization
|
|
131
131
|
*/
|
|
132
|
-
const identifyBigInt = n => {
|
|
132
|
+
const identifyBigInt = (n) => {
|
|
133
133
|
if (n <= BigInt(127) && n >= BigInt(-128)) return 0;
|
|
134
134
|
if (n <= BigInt(2147483647) && n >= BigInt(-2147483648)) return 1;
|
|
135
135
|
return 2;
|
|
136
136
|
};
|
|
137
137
|
|
|
138
|
-
/** @typedef {
|
|
138
|
+
/** @typedef {PrimitiveSerializableType[]} DeserializedType */
|
|
139
|
+
/** @typedef {BufferSerializableType[]} SerializedType} */
|
|
140
|
+
/** @typedef {{ retainedBuffer?: (x: Buffer) => Buffer }} Context} */
|
|
139
141
|
|
|
140
142
|
/**
|
|
141
|
-
* @
|
|
142
|
-
* @
|
|
143
|
-
* @
|
|
143
|
+
* @template LazyInputValue
|
|
144
|
+
* @template LazyOutputValue
|
|
145
|
+
* @typedef {import("./SerializerMiddleware").LazyFunction<LazyInputValue, LazyOutputValue, BinaryMiddleware, undefined>} LazyFunction
|
|
146
|
+
*/
|
|
147
|
+
|
|
148
|
+
/**
|
|
149
|
+
* @extends {SerializerMiddleware<DeserializedType, SerializedType, Context>}
|
|
144
150
|
*/
|
|
145
151
|
class BinaryMiddleware extends SerializerMiddleware {
|
|
146
152
|
/**
|
|
147
153
|
* @param {DeserializedType} data data
|
|
148
|
-
* @param {
|
|
149
|
-
* @returns {SerializedType|Promise<SerializedType>} serialized data
|
|
154
|
+
* @param {Context} context context object
|
|
155
|
+
* @returns {SerializedType | Promise<SerializedType> | null} serialized data
|
|
150
156
|
*/
|
|
151
157
|
serialize(data, context) {
|
|
152
158
|
return this._serialize(data, context);
|
|
153
159
|
}
|
|
154
160
|
|
|
155
161
|
/**
|
|
156
|
-
* @param {
|
|
157
|
-
* @param {
|
|
158
|
-
* @returns {
|
|
162
|
+
* @param {LazyFunction<DeserializedType, SerializedType>} fn lazy function
|
|
163
|
+
* @param {Context} context serialize function
|
|
164
|
+
* @returns {LazyFunction<SerializedType, DeserializedType>} new lazy
|
|
159
165
|
*/
|
|
160
166
|
_serializeLazy(fn, context) {
|
|
161
|
-
return SerializerMiddleware.serializeLazy(fn, data =>
|
|
167
|
+
return SerializerMiddleware.serializeLazy(fn, (data) =>
|
|
162
168
|
this._serialize(data, context)
|
|
163
169
|
);
|
|
164
170
|
}
|
|
165
171
|
|
|
166
172
|
/**
|
|
167
173
|
* @param {DeserializedType} data data
|
|
168
|
-
* @param {
|
|
174
|
+
* @param {Context} context context object
|
|
169
175
|
* @param {{ leftOverBuffer: Buffer | null, allocationSize: number, increaseCounter: number }} allocationScope allocation scope
|
|
170
176
|
* @returns {SerializedType} serialized data
|
|
171
177
|
*/
|
|
@@ -192,7 +198,7 @@ class BinaryMiddleware extends SerializerMiddleware {
|
|
|
192
198
|
/**
|
|
193
199
|
* @param {number} bytesNeeded bytes needed
|
|
194
200
|
*/
|
|
195
|
-
const allocate = bytesNeeded => {
|
|
201
|
+
const allocate = (bytesNeeded) => {
|
|
196
202
|
if (currentBuffer !== null) {
|
|
197
203
|
if (currentBuffer.length - currentPosition >= bytesNeeded) return;
|
|
198
204
|
flush();
|
|
@@ -209,7 +215,7 @@ class BinaryMiddleware extends SerializerMiddleware {
|
|
|
209
215
|
(allocationScope.increaseCounter + 1) % 4) &&
|
|
210
216
|
allocationScope.allocationSize < 16777216
|
|
211
217
|
) {
|
|
212
|
-
allocationScope.allocationSize
|
|
218
|
+
allocationScope.allocationSize <<= 1;
|
|
213
219
|
}
|
|
214
220
|
}
|
|
215
221
|
};
|
|
@@ -242,14 +248,14 @@ class BinaryMiddleware extends SerializerMiddleware {
|
|
|
242
248
|
/**
|
|
243
249
|
* @param {number} byte byte
|
|
244
250
|
*/
|
|
245
|
-
const writeU8 = byte => {
|
|
251
|
+
const writeU8 = (byte) => {
|
|
246
252
|
/** @type {Buffer} */
|
|
247
253
|
(currentBuffer).writeUInt8(byte, currentPosition++);
|
|
248
254
|
};
|
|
249
255
|
/**
|
|
250
256
|
* @param {number} ui32 ui32
|
|
251
257
|
*/
|
|
252
|
-
const writeU32 = ui32 => {
|
|
258
|
+
const writeU32 = (ui32) => {
|
|
253
259
|
/** @type {Buffer} */
|
|
254
260
|
(currentBuffer).writeUInt32LE(ui32, currentPosition);
|
|
255
261
|
currentPosition += 4;
|
|
@@ -275,9 +281,10 @@ class BinaryMiddleware extends SerializerMiddleware {
|
|
|
275
281
|
const thing = data[i];
|
|
276
282
|
switch (typeof thing) {
|
|
277
283
|
case "function": {
|
|
278
|
-
if (!SerializerMiddleware.isLazy(thing))
|
|
284
|
+
if (!SerializerMiddleware.isLazy(thing)) {
|
|
279
285
|
throw new Error(`Unexpected function ${thing}`);
|
|
280
|
-
|
|
286
|
+
}
|
|
287
|
+
/** @type {SerializedType | LazyFunction<SerializedType, DeserializedType> | undefined} */
|
|
281
288
|
let serializedData =
|
|
282
289
|
SerializerMiddleware.getLazySerializedValue(thing);
|
|
283
290
|
if (serializedData === undefined) {
|
|
@@ -285,9 +292,8 @@ class BinaryMiddleware extends SerializerMiddleware {
|
|
|
285
292
|
flush();
|
|
286
293
|
allocationScope.leftOverBuffer = leftOverBuffer;
|
|
287
294
|
const result =
|
|
288
|
-
/** @type {
|
|
289
|
-
|
|
290
|
-
);
|
|
295
|
+
/** @type {PrimitiveSerializableType[]} */
|
|
296
|
+
(thing());
|
|
291
297
|
const data = this._serialize(result, context, allocationScope);
|
|
292
298
|
leftOverBuffer = allocationScope.leftOverBuffer;
|
|
293
299
|
allocationScope.leftOverBuffer = null;
|
|
@@ -644,13 +650,19 @@ class BinaryMiddleware extends SerializerMiddleware {
|
|
|
644
650
|
|
|
645
651
|
/**
|
|
646
652
|
* @param {SerializedType} data data
|
|
647
|
-
* @param {
|
|
648
|
-
* @returns {DeserializedType|Promise<DeserializedType>} deserialized data
|
|
653
|
+
* @param {Context} context context object
|
|
654
|
+
* @returns {DeserializedType | Promise<DeserializedType>} deserialized data
|
|
649
655
|
*/
|
|
650
656
|
deserialize(data, context) {
|
|
651
657
|
return this._deserialize(data, context);
|
|
652
658
|
}
|
|
653
659
|
|
|
660
|
+
/**
|
|
661
|
+
* @private
|
|
662
|
+
* @param {SerializedType} content content
|
|
663
|
+
* @param {Context} context context object
|
|
664
|
+
* @returns {LazyFunction<DeserializedType, SerializedType>} lazy function
|
|
665
|
+
*/
|
|
654
666
|
_createLazyDeserialized(content, context) {
|
|
655
667
|
return SerializerMiddleware.createLazy(
|
|
656
668
|
memoize(() => this._deserialize(content, context)),
|
|
@@ -660,15 +672,21 @@ class BinaryMiddleware extends SerializerMiddleware {
|
|
|
660
672
|
);
|
|
661
673
|
}
|
|
662
674
|
|
|
675
|
+
/**
|
|
676
|
+
* @private
|
|
677
|
+
* @param {LazyFunction<SerializedType, DeserializedType>} fn lazy function
|
|
678
|
+
* @param {Context} context context object
|
|
679
|
+
* @returns {LazyFunction<DeserializedType, SerializedType>} new lazy
|
|
680
|
+
*/
|
|
663
681
|
_deserializeLazy(fn, context) {
|
|
664
|
-
return SerializerMiddleware.deserializeLazy(fn, data =>
|
|
682
|
+
return SerializerMiddleware.deserializeLazy(fn, (data) =>
|
|
665
683
|
this._deserialize(data, context)
|
|
666
684
|
);
|
|
667
685
|
}
|
|
668
686
|
|
|
669
687
|
/**
|
|
670
688
|
* @param {SerializedType} data data
|
|
671
|
-
* @param {
|
|
689
|
+
* @param {Context} context context object
|
|
672
690
|
* @returns {DeserializedType} deserialized data
|
|
673
691
|
*/
|
|
674
692
|
_deserialize(data, context) {
|
|
@@ -678,8 +696,7 @@ class BinaryMiddleware extends SerializerMiddleware {
|
|
|
678
696
|
let currentIsBuffer = Buffer.isBuffer(currentBuffer);
|
|
679
697
|
let currentPosition = 0;
|
|
680
698
|
|
|
681
|
-
|
|
682
|
-
const retainedBuffer = context.retainedBuffer || (x => x);
|
|
699
|
+
const retainedBuffer = context.retainedBuffer || ((x) => x);
|
|
683
700
|
|
|
684
701
|
const checkOverflow = () => {
|
|
685
702
|
if (currentPosition >= /** @type {Buffer} */ (currentBuffer).length) {
|
|
@@ -694,7 +711,7 @@ class BinaryMiddleware extends SerializerMiddleware {
|
|
|
694
711
|
* @param {number} n n
|
|
695
712
|
* @returns {boolean} true when in current buffer, otherwise false
|
|
696
713
|
*/
|
|
697
|
-
const isInCurrentBuffer = n =>
|
|
714
|
+
const isInCurrentBuffer = (n) =>
|
|
698
715
|
currentIsBuffer &&
|
|
699
716
|
n + currentPosition <= /** @type {Buffer} */ (currentBuffer).length;
|
|
700
717
|
const ensureBuffer = () => {
|
|
@@ -711,7 +728,7 @@ class BinaryMiddleware extends SerializerMiddleware {
|
|
|
711
728
|
* @param {number} n amount of bytes to read
|
|
712
729
|
* @returns {Buffer} buffer with bytes
|
|
713
730
|
*/
|
|
714
|
-
const read = n => {
|
|
731
|
+
const read = (n) => {
|
|
715
732
|
ensureBuffer();
|
|
716
733
|
const rem =
|
|
717
734
|
/** @type {Buffer} */ (currentBuffer).length - currentPosition;
|
|
@@ -743,7 +760,7 @@ class BinaryMiddleware extends SerializerMiddleware {
|
|
|
743
760
|
* @param {number} n amount of bytes to read
|
|
744
761
|
* @returns {Buffer} buffer with bytes
|
|
745
762
|
*/
|
|
746
|
-
const readUpTo = n => {
|
|
763
|
+
const readUpTo = (n) => {
|
|
747
764
|
ensureBuffer();
|
|
748
765
|
const rem =
|
|
749
766
|
/** @type {Buffer} */
|
|
@@ -785,7 +802,7 @@ class BinaryMiddleware extends SerializerMiddleware {
|
|
|
785
802
|
let mask = 1;
|
|
786
803
|
while (n !== 0) {
|
|
787
804
|
result.push((data & mask) !== 0);
|
|
788
|
-
mask
|
|
805
|
+
mask <<= 1;
|
|
789
806
|
n--;
|
|
790
807
|
}
|
|
791
808
|
};
|
|
@@ -795,6 +812,7 @@ class BinaryMiddleware extends SerializerMiddleware {
|
|
|
795
812
|
return () => {
|
|
796
813
|
const count = readU32();
|
|
797
814
|
const lengths = Array.from({ length: count }).map(() => readU32());
|
|
815
|
+
/** @type {(Buffer | LazyFunction<SerializedType, DeserializedType>)[]} */
|
|
798
816
|
const content = [];
|
|
799
817
|
for (let l of lengths) {
|
|
800
818
|
if (l === 0) {
|
|
@@ -1138,5 +1156,5 @@ class BinaryMiddleware extends SerializerMiddleware {
|
|
|
1138
1156
|
|
|
1139
1157
|
module.exports = BinaryMiddleware;
|
|
1140
1158
|
|
|
1141
|
-
module.exports.MEASURE_START_OPERATION = MEASURE_START_OPERATION;
|
|
1142
1159
|
module.exports.MEASURE_END_OPERATION = MEASURE_END_OPERATION;
|
|
1160
|
+
module.exports.MEASURE_START_OPERATION = MEASURE_START_OPERATION;
|
|
@@ -7,6 +7,8 @@
|
|
|
7
7
|
/** @typedef {import("./ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
|
|
8
8
|
/** @typedef {import("./ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
|
|
9
9
|
|
|
10
|
+
/** @typedef {Error & { cause?: unknown }} ErrorWithCause */
|
|
11
|
+
|
|
10
12
|
class ErrorObjectSerializer {
|
|
11
13
|
/**
|
|
12
14
|
* @param {ErrorConstructor | EvalErrorConstructor | RangeErrorConstructor | ReferenceErrorConstructor | SyntaxErrorConstructor | TypeErrorConstructor} Type error type
|
|
@@ -22,7 +24,10 @@ class ErrorObjectSerializer {
|
|
|
22
24
|
serialize(obj, context) {
|
|
23
25
|
context.write(obj.message);
|
|
24
26
|
context.write(obj.stack);
|
|
25
|
-
context.write(
|
|
27
|
+
context.write(
|
|
28
|
+
/** @type {ErrorWithCause} */
|
|
29
|
+
(obj).cause
|
|
30
|
+
);
|
|
26
31
|
}
|
|
27
32
|
|
|
28
33
|
/**
|
|
@@ -34,7 +39,7 @@ class ErrorObjectSerializer {
|
|
|
34
39
|
|
|
35
40
|
err.message = context.read();
|
|
36
41
|
err.stack = context.read();
|
|
37
|
-
/** @type {
|
|
42
|
+
/** @type {ErrorWithCause} */
|
|
38
43
|
(err).cause = context.read();
|
|
39
44
|
|
|
40
45
|
return err;
|