webpack 5.106.1 → 5.107.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 +2 -2
- package/lib/APIPlugin.js +4 -2
- package/lib/AsyncDependenciesBlock.js +3 -0
- package/lib/AutomaticPrefetchPlugin.js +6 -1
- package/lib/BannerPlugin.js +10 -1
- package/lib/Cache.js +27 -5
- package/lib/CacheFacade.js +26 -0
- package/lib/Chunk.js +46 -0
- package/lib/ChunkGraph.js +111 -0
- package/lib/ChunkGroup.js +57 -13
- package/lib/ChunkTemplate.js +9 -0
- package/lib/CleanPlugin.js +14 -1
- package/lib/CodeGenerationResults.js +19 -0
- package/lib/CompatibilityPlugin.js +23 -8
- package/lib/Compilation.js +161 -27
- package/lib/Compiler.js +41 -17
- package/lib/ConcatenationScope.js +24 -1
- package/lib/ConditionalInitFragment.js +6 -0
- package/lib/ConstPlugin.js +4 -1
- package/lib/ContextExclusionPlugin.js +2 -1
- package/lib/ContextModule.js +14 -2
- package/lib/ContextModuleFactory.js +10 -0
- package/lib/ContextReplacementPlugin.js +4 -1
- package/lib/DefinePlugin.js +22 -9
- package/lib/DependenciesBlock.js +6 -1
- package/lib/Dependency.js +48 -4
- package/lib/DependencyTemplate.js +7 -1
- package/lib/DependencyTemplates.js +4 -0
- package/lib/DotenvPlugin.js +3 -0
- package/lib/DynamicEntryPlugin.js +3 -1
- package/lib/EntryOptionPlugin.js +3 -0
- package/lib/EntryPlugin.js +2 -1
- package/lib/Entrypoint.js +4 -0
- package/lib/EnvironmentPlugin.js +3 -2
- package/lib/ErrorHelpers.js +7 -0
- package/lib/EvalDevToolModulePlugin.js +3 -1
- package/lib/EvalSourceMapDevToolPlugin.js +11 -10
- package/lib/ExportsInfo.js +56 -2
- package/lib/ExportsInfoApiPlugin.js +2 -1
- package/lib/ExternalModule.js +114 -15
- package/lib/ExternalModuleFactoryPlugin.js +15 -0
- package/lib/ExternalsPlugin.js +2 -1
- package/lib/FileSystemInfo.js +291 -71
- package/lib/FlagAllModulesAsUsedPlugin.js +2 -1
- package/lib/FlagDependencyExportsPlugin.js +4 -1
- package/lib/FlagDependencyUsagePlugin.js +5 -1
- package/lib/FlagEntryExportAsUsedPlugin.js +2 -1
- package/lib/Generator.js +16 -3
- package/lib/HotModuleReplacementPlugin.js +35 -9
- package/lib/IgnorePlugin.js +4 -2
- package/lib/IgnoreWarningsPlugin.js +2 -1
- package/lib/InitFragment.js +10 -0
- package/lib/JavascriptMetaInfoPlugin.js +2 -1
- package/lib/LibraryTemplatePlugin.js +2 -1
- package/lib/LoaderOptionsPlugin.js +3 -1
- package/lib/LoaderTargetPlugin.js +2 -1
- package/lib/MainTemplate.js +15 -0
- package/lib/ManifestPlugin.js +9 -2
- package/lib/Module.js +101 -19
- package/lib/ModuleFactory.js +6 -1
- package/lib/ModuleFilenameHelpers.js +3 -0
- package/lib/ModuleGraph.js +66 -0
- package/lib/ModuleGraphConnection.js +9 -0
- package/lib/ModuleInfoHeaderPlugin.js +5 -0
- package/lib/ModuleSourceTypeConstants.js +32 -1
- package/lib/ModuleTemplate.js +8 -0
- package/lib/ModuleTypeConstants.js +12 -3
- package/lib/MultiCompiler.js +30 -2
- package/lib/MultiStats.js +8 -0
- package/lib/MultiWatching.js +3 -0
- package/lib/NoEmitOnErrorsPlugin.js +1 -1
- package/lib/NodeStuffPlugin.js +11 -2
- package/lib/NormalModule.js +43 -33
- package/lib/NormalModuleFactory.js +35 -2
- package/lib/NormalModuleReplacementPlugin.js +1 -1
- package/lib/NullFactory.js +1 -0
- package/lib/OptionsApply.js +1 -0
- package/lib/Parser.js +3 -1
- package/lib/PlatformPlugin.js +2 -1
- package/lib/PrefetchPlugin.js +2 -1
- package/lib/ProgressPlugin.js +158 -68
- package/lib/ProvidePlugin.js +3 -1
- package/lib/RawModule.js +12 -0
- package/lib/RecordIdsPlugin.js +8 -0
- package/lib/RequestShortener.js +8 -0
- package/lib/ResolverFactory.js +5 -0
- package/lib/RuntimeGlobals.js +6 -5
- package/lib/RuntimeModule.js +22 -7
- package/lib/RuntimePlugin.js +13 -0
- package/lib/RuntimeTemplate.js +35 -1
- package/lib/SelfModuleFactory.js +2 -0
- package/lib/SourceMapDevToolModuleOptionsPlugin.js +2 -0
- package/lib/SourceMapDevToolPlugin.js +3 -1
- package/lib/Stats.js +5 -0
- package/lib/Template.js +20 -0
- package/lib/TemplatedPathPlugin.js +10 -3
- package/lib/UseStrictPlugin.js +2 -1
- package/lib/WarnCaseSensitiveModulesPlugin.js +71 -3
- package/lib/WarnDeprecatedOptionPlugin.js +2 -2
- package/lib/WarnNoModeSetPlugin.js +17 -2
- package/lib/WatchIgnorePlugin.js +4 -1
- package/lib/Watching.js +16 -3
- package/lib/WebpackError.js +3 -74
- package/lib/WebpackIsIncludedPlugin.js +3 -1
- package/lib/WebpackOptionsApply.js +14 -1
- package/lib/WebpackOptionsDefaulter.js +1 -0
- package/lib/asset/AssetBytesGenerator.js +12 -2
- package/lib/asset/AssetBytesParser.js +1 -0
- package/lib/asset/AssetGenerator.js +42 -10
- package/lib/asset/AssetModulesPlugin.js +7 -2
- package/lib/asset/AssetParser.js +2 -0
- package/lib/asset/AssetSourceGenerator.js +12 -2
- package/lib/asset/AssetSourceParser.js +1 -0
- package/lib/asset/RawDataUrlModule.js +11 -0
- package/lib/async-modules/AsyncModuleHelpers.js +1 -0
- package/lib/async-modules/AwaitDependenciesInitFragment.js +4 -0
- package/lib/async-modules/InferAsyncModulesPlugin.js +1 -1
- package/lib/buildChunkGraph.js +19 -6
- package/lib/cache/AddBuildDependenciesPlugin.js +2 -1
- package/lib/cache/AddManagedPathsPlugin.js +2 -1
- package/lib/cache/IdleFileCachePlugin.js +2 -1
- package/lib/cache/MemoryCachePlugin.js +1 -1
- package/lib/cache/MemoryWithGcCachePlugin.js +3 -1
- package/lib/cache/PackFileCacheStrategy.js +33 -4
- package/lib/cache/ResolverCachePlugin.js +10 -1
- package/lib/cache/getLazyHashedEtag.js +4 -0
- package/lib/cache/mergeEtags.js +2 -0
- package/lib/cli.js +33 -1
- package/lib/config/browserslistTargetHandler.js +2 -0
- package/lib/config/defaults.js +232 -12
- package/lib/config/normalization.js +15 -1
- package/lib/config/target.js +11 -0
- package/lib/container/ContainerEntryDependency.js +2 -0
- package/lib/container/ContainerEntryModule.js +12 -0
- package/lib/container/ContainerEntryModuleFactory.js +1 -0
- package/lib/container/ContainerExposedDependency.js +4 -0
- package/lib/container/ContainerPlugin.js +2 -1
- package/lib/container/ContainerReferencePlugin.js +2 -1
- package/lib/container/FallbackDependency.js +4 -0
- package/lib/container/FallbackItemDependency.js +1 -0
- package/lib/container/FallbackModule.js +12 -0
- package/lib/container/FallbackModuleFactory.js +1 -0
- package/lib/container/ModuleFederationPlugin.js +3 -1
- package/lib/container/RemoteModule.js +13 -0
- package/lib/container/RemoteRuntimeModule.js +1 -0
- package/lib/container/RemoteToExternalDependency.js +1 -0
- package/lib/container/options.js +7 -0
- package/lib/css/CssGenerator.js +336 -100
- package/lib/css/CssInjectStyleRuntimeModule.js +45 -42
- package/lib/css/CssLoadingRuntimeModule.js +23 -4
- package/lib/{CssModule.js → css/CssModule.js} +21 -15
- package/lib/css/CssModulesPlugin.js +235 -89
- package/lib/css/CssParser.js +616 -261
- package/lib/css/walkCssTokens.js +179 -2
- package/lib/debug/ProfilingPlugin.js +19 -1
- package/lib/dependencies/AMDDefineDependency.js +7 -0
- package/lib/dependencies/AMDDefineDependencyParserPlugin.js +12 -0
- package/lib/dependencies/AMDPlugin.js +4 -1
- package/lib/dependencies/AMDRequireArrayDependency.js +6 -0
- package/lib/dependencies/AMDRequireContextDependency.js +3 -0
- package/lib/dependencies/AMDRequireDependenciesBlock.js +1 -0
- package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +14 -1
- package/lib/dependencies/AMDRequireDependency.js +4 -0
- package/lib/dependencies/AMDRequireItemDependency.js +1 -0
- package/lib/dependencies/AMDRuntimeModules.js +3 -0
- package/lib/dependencies/CachedConstDependency.js +6 -1
- package/lib/dependencies/CommonJsDependencyHelpers.js +64 -0
- package/lib/dependencies/CommonJsExportRequireDependency.js +62 -10
- package/lib/dependencies/CommonJsExportsDependency.js +4 -0
- package/lib/dependencies/CommonJsExportsParserPlugin.js +9 -1
- package/lib/dependencies/CommonJsFullRequireDependency.js +36 -9
- package/lib/dependencies/CommonJsImportsParserPlugin.js +24 -3
- package/lib/dependencies/CommonJsPlugin.js +4 -1
- package/lib/dependencies/CommonJsRequireContextDependency.js +3 -0
- package/lib/dependencies/CommonJsRequireDependency.js +70 -4
- package/lib/dependencies/CommonJsSelfReferenceDependency.js +5 -0
- package/lib/dependencies/ConstDependency.js +6 -1
- package/lib/dependencies/ContextDependency.js +9 -2
- package/lib/dependencies/ContextDependencyHelpers.js +4 -1
- package/lib/dependencies/ContextDependencyTemplateAsId.js +1 -0
- package/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +1 -0
- package/lib/dependencies/ContextElementDependency.js +4 -0
- package/lib/dependencies/CreateRequireParserPlugin.js +7 -1
- package/lib/dependencies/CreateScriptUrlDependency.js +4 -0
- package/lib/dependencies/CriticalDependencyWarning.js +2 -1
- package/lib/dependencies/CssIcssExportDependency.js +339 -66
- package/lib/dependencies/CssIcssImportDependency.js +53 -8
- package/lib/dependencies/CssIcssSymbolDependency.js +16 -4
- package/lib/dependencies/CssImportDependency.js +12 -0
- package/lib/dependencies/CssUrlDependency.js +32 -0
- package/lib/dependencies/DelegatedSourceDependency.js +1 -0
- package/lib/dependencies/DllEntryDependency.js +3 -0
- package/lib/dependencies/DynamicExports.js +5 -0
- package/lib/dependencies/EntryDependency.js +1 -0
- package/lib/dependencies/ExportsInfoDependency.js +6 -0
- package/lib/dependencies/ExternalModuleDependency.js +5 -0
- package/lib/dependencies/ExternalModuleInitFragment.js +3 -0
- package/lib/dependencies/ExternalModuleInitFragmentDependency.js +4 -0
- package/lib/dependencies/HarmonyAcceptDependency.js +6 -0
- package/lib/dependencies/HarmonyAcceptImportDependency.js +1 -0
- package/lib/dependencies/HarmonyCompatibilityDependency.js +1 -0
- package/lib/dependencies/HarmonyDetectionParserPlugin.js +4 -1
- package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +4 -0
- package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +10 -7
- package/lib/dependencies/HarmonyExportExpressionDependency.js +27 -14
- package/lib/dependencies/HarmonyExportHeaderDependency.js +4 -0
- package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +143 -5
- package/lib/dependencies/HarmonyExportInitFragment.js +6 -0
- package/lib/dependencies/HarmonyExportSpecifierDependency.js +5 -0
- package/lib/dependencies/HarmonyExports.js +2 -0
- package/lib/dependencies/HarmonyImportDependency.js +21 -2
- package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +31 -1
- package/lib/dependencies/HarmonyImportSideEffectDependency.js +4 -0
- package/lib/dependencies/HarmonyImportSpecifierDependency.js +18 -3
- package/lib/{HarmonyLinkingError.js → dependencies/HarmonyLinkingError.js} +5 -3
- package/lib/dependencies/HarmonyModulesPlugin.js +4 -1
- package/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +1 -0
- package/lib/dependencies/HtmlInlineScriptDependency.js +133 -0
- package/lib/dependencies/HtmlInlineStyleDependency.js +101 -0
- package/lib/dependencies/HtmlScriptSrcDependency.js +318 -0
- package/lib/dependencies/HtmlSourceDependency.js +127 -0
- package/lib/dependencies/ImportContextDependency.js +4 -0
- package/lib/dependencies/ImportDependency.js +5 -0
- package/lib/dependencies/ImportEagerDependency.js +2 -0
- package/lib/dependencies/ImportMetaContextDependency.js +1 -0
- package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +4 -1
- package/lib/dependencies/ImportMetaContextPlugin.js +2 -1
- package/lib/dependencies/ImportMetaHotAcceptDependency.js +1 -0
- package/lib/dependencies/ImportMetaHotDeclineDependency.js +1 -0
- package/lib/dependencies/ImportMetaPlugin.js +6 -0
- package/lib/dependencies/ImportParserPlugin.js +9 -2
- package/lib/dependencies/ImportPhase.js +7 -3
- package/lib/dependencies/ImportPlugin.js +2 -1
- package/lib/dependencies/ImportWeakDependency.js +2 -0
- package/lib/dependencies/JsonExportsDependency.js +6 -1
- package/lib/dependencies/LoaderDependency.js +2 -0
- package/lib/dependencies/LoaderImportDependency.js +2 -0
- package/lib/dependencies/LoaderPlugin.js +4 -1
- package/lib/dependencies/LocalModule.js +4 -0
- package/lib/dependencies/LocalModuleDependency.js +4 -0
- package/lib/dependencies/LocalModulesHelpers.js +3 -0
- package/lib/dependencies/ModuleDecoratorDependency.js +7 -1
- package/lib/dependencies/ModuleDependency.js +7 -0
- package/lib/dependencies/ModuleDependencyTemplateAsId.js +1 -0
- package/lib/dependencies/ModuleDependencyTemplateAsRequireId.js +1 -0
- package/lib/dependencies/ModuleHotAcceptDependency.js +1 -0
- package/lib/dependencies/ModuleHotDeclineDependency.js +1 -0
- package/lib/dependencies/ModuleInitFragmentDependency.js +4 -0
- package/lib/dependencies/NullDependency.js +2 -0
- package/lib/dependencies/PrefetchDependency.js +1 -0
- package/lib/dependencies/ProvidedDependency.js +6 -1
- package/lib/dependencies/PureExpressionDependency.js +7 -1
- package/lib/dependencies/RequireContextDependency.js +1 -0
- package/lib/dependencies/RequireContextDependencyParserPlugin.js +1 -0
- package/lib/dependencies/RequireContextPlugin.js +2 -1
- package/lib/dependencies/RequireEnsureDependenciesBlock.js +1 -0
- package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +1 -0
- package/lib/dependencies/RequireEnsureDependency.js +4 -0
- package/lib/dependencies/RequireEnsureItemDependency.js +1 -0
- package/lib/dependencies/RequireEnsurePlugin.js +2 -1
- package/lib/dependencies/RequireHeaderDependency.js +4 -0
- package/lib/dependencies/RequireIncludeDependency.js +2 -0
- package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +4 -1
- package/lib/dependencies/RequireIncludePlugin.js +2 -1
- package/lib/{RequireJsStuffPlugin.js → dependencies/RequireJsStuffPlugin.js} +9 -8
- package/lib/dependencies/RequireResolveContextDependency.js +3 -0
- package/lib/dependencies/RequireResolveDependency.js +1 -0
- package/lib/dependencies/RequireResolveHeaderDependency.js +5 -0
- package/lib/dependencies/RuntimeRequirementsDependency.js +5 -1
- package/lib/dependencies/StaticExportsDependency.js +3 -0
- package/lib/dependencies/SystemPlugin.js +5 -2
- package/lib/dependencies/SystemRuntimeModule.js +1 -0
- package/lib/dependencies/URLContextDependency.js +3 -0
- package/lib/dependencies/URLDependency.js +6 -0
- package/lib/dependencies/URLPlugin.js +2 -0
- package/lib/dependencies/UnsupportedDependency.js +4 -0
- package/lib/dependencies/WebAssemblyExportImportedDependency.js +4 -0
- package/lib/dependencies/WebAssemblyImportDependency.js +5 -2
- package/lib/dependencies/WebpackIsIncludedDependency.js +2 -0
- package/lib/dependencies/WorkerDependency.js +6 -1
- package/lib/dependencies/WorkerPlugin.js +11 -3
- package/lib/dependencies/getFunctionExpression.js +1 -0
- package/lib/dependencies/processExportInfo.js +1 -0
- package/lib/{DelegatedModule.js → dll/DelegatedModule.js} +44 -31
- package/lib/{DelegatedModuleFactoryPlugin.js → dll/DelegatedModuleFactoryPlugin.js} +7 -4
- package/lib/{DelegatedPlugin.js → dll/DelegatedPlugin.js} +4 -3
- package/lib/{DllEntryPlugin.js → dll/DllEntryPlugin.js} +6 -5
- package/lib/{DllModule.js → dll/DllModule.js} +35 -24
- package/lib/{DllModuleFactory.js → dll/DllModuleFactory.js} +5 -4
- package/lib/{DllPlugin.js → dll/DllPlugin.js} +8 -6
- package/lib/{DllReferencePlugin.js → dll/DllReferencePlugin.js} +23 -18
- package/lib/{LibManifestPlugin.js → dll/LibManifestPlugin.js} +13 -10
- package/lib/electron/ElectronTargetPlugin.js +2 -1
- package/lib/{AbstractMethodError.js → errors/AbstractMethodError.js} +10 -1
- package/lib/{AsyncDependencyToInitialChunkError.js → errors/AsyncDependencyToInitialChunkError.js} +8 -3
- package/lib/errors/BuildCycleError.js +1 -1
- package/lib/{ChunkRenderError.js → errors/ChunkRenderError.js} +1 -1
- package/lib/{CodeGenerationError.js → errors/CodeGenerationError.js} +1 -1
- package/lib/{CommentCompilationWarning.js → errors/CommentCompilationWarning.js} +9 -3
- package/lib/{ConcurrentCompilationError.js → errors/ConcurrentCompilationError.js} +4 -2
- package/lib/{EnvironmentNotSupportAsyncWarning.js → errors/EnvironmentNotSupportAsyncWarning.js} +4 -4
- package/lib/{HookWebpackError.js → errors/HookWebpackError.js} +11 -5
- package/lib/{IgnoreErrorModuleFactory.js → errors/IgnoreErrorModuleFactory.js} +6 -4
- package/lib/{InvalidDependenciesModuleWarning.js → errors/InvalidDependenciesModuleWarning.js} +4 -3
- package/lib/errors/JSONParseError.js +114 -0
- package/lib/{ModuleBuildError.js → errors/ModuleBuildError.js} +8 -5
- package/lib/{ModuleDependencyError.js → errors/ModuleDependencyError.js} +2 -2
- package/lib/{ModuleDependencyWarning.js → errors/ModuleDependencyWarning.js} +5 -4
- package/lib/{ModuleError.js → errors/ModuleError.js} +7 -5
- package/lib/{ModuleHashingError.js → errors/ModuleHashingError.js} +1 -1
- package/lib/{ModuleNotFoundError.js → errors/ModuleNotFoundError.js} +3 -2
- package/lib/{ModuleParseError.js → errors/ModuleParseError.js} +11 -6
- package/lib/{ModuleRestoreError.js → errors/ModuleRestoreError.js} +2 -1
- package/lib/{ModuleStoreError.js → errors/ModuleStoreError.js} +2 -1
- package/lib/{ModuleWarning.js → errors/ModuleWarning.js} +8 -5
- package/lib/{NodeStuffInWebError.js → errors/NodeStuffInWebError.js} +5 -4
- package/lib/errors/NonErrorEmittedError.js +28 -0
- package/lib/{UnhandledSchemeError.js → errors/UnhandledSchemeError.js} +8 -2
- package/lib/{UnsupportedFeatureWarning.js → errors/UnsupportedFeatureWarning.js} +4 -3
- package/lib/errors/WebpackError.js +84 -0
- package/lib/esm/ExportWebpackRequireRuntimeModule.js +2 -0
- package/lib/esm/ModuleChunkFormatPlugin.js +5 -1
- package/lib/esm/ModuleChunkLoadingPlugin.js +3 -1
- package/lib/esm/ModuleChunkLoadingRuntimeModule.js +5 -0
- package/lib/hmr/HotModuleReplacementRuntimeModule.js +1 -0
- package/lib/hmr/JavascriptHotModuleReplacementHelper.js +1 -0
- package/lib/hmr/LazyCompilationPlugin.js +20 -1
- package/lib/hmr/lazyCompilationBackend.js +2 -0
- package/lib/html/HtmlGenerator.js +379 -0
- package/lib/html/HtmlModulesPlugin.js +433 -0
- package/lib/html/HtmlParser.js +1489 -0
- package/lib/html/walkHtmlTokens.js +2733 -0
- package/lib/ids/ChunkModuleIdRangePlugin.js +3 -1
- package/lib/ids/DeterministicChunkIdsPlugin.js +3 -1
- package/lib/ids/DeterministicModuleIdsPlugin.js +3 -1
- package/lib/ids/HashedModuleIdsPlugin.js +2 -1
- package/lib/ids/IdHelpers.js +22 -1
- package/lib/ids/NamedChunkIdsPlugin.js +3 -1
- package/lib/ids/NamedModuleIdsPlugin.js +3 -1
- package/lib/ids/NaturalChunkIdsPlugin.js +1 -1
- package/lib/ids/NaturalModuleIdsPlugin.js +1 -1
- package/lib/ids/OccurrenceChunkIdsPlugin.js +2 -1
- package/lib/ids/OccurrenceModuleIdsPlugin.js +4 -1
- package/lib/ids/SyncModuleIdsPlugin.js +3 -1
- package/lib/index.js +39 -15
- package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +1 -1
- package/lib/javascript/BasicEvaluatedExpression.js +4 -2
- package/lib/javascript/ChunkFormatHelpers.js +2 -1
- package/lib/javascript/ChunkHelpers.js +1 -0
- package/lib/javascript/CommonJsChunkFormatPlugin.js +1 -1
- package/lib/javascript/EnableChunkLoadingPlugin.js +5 -1
- package/lib/javascript/JavascriptGenerator.js +10 -0
- package/lib/javascript/JavascriptModulesPlugin.js +112 -9
- package/lib/javascript/JavascriptParser.js +360 -16
- package/lib/javascript/JavascriptParserHelpers.js +7 -1
- package/lib/javascript/StartupHelpers.js +5 -0
- package/lib/json/JsonData.js +5 -0
- package/lib/json/JsonGenerator.js +21 -0
- package/lib/json/JsonModulesPlugin.js +1 -1
- package/lib/json/JsonParser.js +14 -25
- package/lib/library/AbstractLibraryPlugin.js +17 -2
- package/lib/library/AmdLibraryPlugin.js +8 -0
- package/lib/library/AssignLibraryPlugin.js +16 -0
- package/lib/library/EnableLibraryPlugin.js +8 -2
- package/lib/library/ExportPropertyLibraryPlugin.js +9 -0
- package/lib/{FalseIIFEUmdWarning.js → library/FalseIIFEUmdWarning.js} +1 -1
- package/lib/library/JsonpLibraryPlugin.js +8 -0
- package/lib/library/ModuleLibraryPlugin.js +86 -1
- package/lib/library/SystemLibraryPlugin.js +8 -0
- package/lib/library/UmdLibraryPlugin.js +16 -0
- package/lib/logging/Logger.js +17 -0
- package/lib/logging/createConsoleLogger.js +7 -0
- package/lib/logging/runtime.js +2 -0
- package/lib/logging/truncateArgs.js +2 -0
- package/lib/node/CommonJsChunkLoadingPlugin.js +5 -1
- package/lib/node/NodeEnvironmentPlugin.js +7 -3
- package/lib/node/NodeSourcePlugin.js +1 -1
- package/lib/node/NodeTargetPlugin.js +2 -1
- package/lib/node/NodeTemplatePlugin.js +3 -1
- package/lib/node/NodeWatchFileSystem.js +2 -0
- package/lib/node/ReadFileChunkLoadingRuntimeModule.js +3 -0
- package/lib/node/ReadFileCompileAsyncWasmPlugin.js +4 -1
- package/lib/node/ReadFileCompileWasmPlugin.js +4 -1
- package/lib/node/RequireChunkLoadingRuntimeModule.js +3 -0
- package/lib/node/nodeConsole.js +116 -64
- package/lib/optimize/AggressiveMergingPlugin.js +3 -1
- package/lib/optimize/AggressiveSplittingPlugin.js +6 -1
- package/lib/optimize/ConcatenatedModule.js +62 -6
- package/lib/optimize/EnsureChunkConditionsPlugin.js +2 -1
- package/lib/optimize/FlagIncludedChunksPlugin.js +2 -1
- package/lib/optimize/InnerGraph.js +16 -1
- package/lib/optimize/InnerGraphPlugin.js +14 -2
- package/lib/optimize/LimitChunkCountPlugin.js +9 -0
- package/lib/optimize/MangleExportsPlugin.js +5 -1
- package/lib/optimize/MergeDuplicateChunksPlugin.js +2 -0
- package/lib/optimize/MinChunkSizePlugin.js +2 -1
- package/lib/optimize/MinMaxSizeWarning.js +5 -4
- package/lib/optimize/ModuleConcatenationPlugin.js +36 -8
- package/lib/optimize/RealContentHashPlugin.js +104 -26
- package/lib/optimize/RemoveEmptyChunksPlugin.js +2 -1
- package/lib/optimize/RemoveParentModulesPlugin.js +3 -1
- package/lib/optimize/RuntimeChunkPlugin.js +2 -1
- package/lib/optimize/SideEffectsFlagPlugin.js +118 -4
- package/lib/optimize/SplitChunksPlugin.js +50 -2
- package/lib/performance/AssetsOverSizeLimitWarning.js +3 -2
- package/lib/performance/EntrypointsOverSizeLimitWarning.js +3 -2
- package/lib/performance/NoAsyncChunksWarning.js +5 -3
- package/lib/performance/SizeLimitsPlugin.js +8 -2
- package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +1 -0
- package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +6 -0
- package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +1 -0
- package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +5 -1
- package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +1 -0
- package/lib/rules/BasicEffectRulePlugin.js +3 -0
- package/lib/rules/BasicMatcherRulePlugin.js +3 -0
- package/lib/rules/ObjectMatcherRulePlugin.js +3 -0
- package/lib/rules/RuleSetCompiler.js +18 -0
- package/lib/rules/UseEffectRulePlugin.js +10 -3
- package/lib/runtime/AsyncModuleRuntimeModule.js +1 -0
- package/lib/runtime/AutoPublicPathRuntimeModule.js +1 -0
- package/lib/runtime/BaseUriRuntimeModule.js +1 -0
- package/lib/runtime/ChunkNameRuntimeModule.js +1 -0
- package/lib/runtime/CompatGetDefaultExportRuntimeModule.js +1 -0
- package/lib/runtime/CompatRuntimeModule.js +2 -0
- package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +1 -0
- package/lib/runtime/CreateScriptRuntimeModule.js +1 -0
- package/lib/runtime/CreateScriptUrlRuntimeModule.js +1 -0
- package/lib/runtime/DefinePropertyGettersRuntimeModule.js +1 -0
- package/lib/runtime/EnsureChunkRuntimeModule.js +1 -0
- package/lib/runtime/GetChunkFilenameRuntimeModule.js +1 -0
- package/lib/runtime/GetFullHashRuntimeModule.js +1 -0
- package/lib/runtime/GetMainFilenameRuntimeModule.js +1 -0
- package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +1 -0
- package/lib/runtime/GlobalRuntimeModule.js +1 -0
- package/lib/runtime/HasOwnPropertyRuntimeModule.js +1 -0
- package/lib/runtime/HelperRuntimeModule.js +5 -0
- package/lib/runtime/LoadScriptRuntimeModule.js +1 -0
- package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +121 -13
- package/lib/runtime/MakeNamespaceObjectRuntimeModule.js +1 -0
- package/lib/runtime/NonceRuntimeModule.js +1 -0
- package/lib/runtime/OnChunksLoadedRuntimeModule.js +1 -0
- package/lib/runtime/PublicPathRuntimeModule.js +1 -0
- package/lib/runtime/RelativeUrlRuntimeModule.js +1 -0
- package/lib/runtime/RuntimeIdRuntimeModule.js +1 -0
- package/lib/runtime/SetAnonymousDefaultNameRuntimeModule.js +35 -0
- package/lib/runtime/StartupChunkDependenciesPlugin.js +13 -1
- package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +1 -0
- package/lib/runtime/StartupEntrypointRuntimeModule.js +1 -0
- package/lib/runtime/SystemContextRuntimeModule.js +1 -0
- package/lib/runtime/ToBinaryRuntimeModule.js +1 -0
- package/lib/schemes/DataUriPlugin.js +14 -2
- package/lib/schemes/FileUriPlugin.js +1 -1
- package/lib/schemes/HttpUriPlugin.js +43 -1
- package/lib/schemes/VirtualUrlPlugin.js +7 -2
- package/lib/serialization/AggregateErrorSerializer.js +2 -0
- package/lib/serialization/ArraySerializer.js +2 -0
- package/lib/serialization/BinaryMiddleware.js +20 -1
- package/lib/serialization/DateObjectSerializer.js +2 -0
- package/lib/serialization/ErrorObjectSerializer.js +3 -0
- package/lib/serialization/FileMiddleware.js +21 -0
- package/lib/serialization/MapObjectSerializer.js +2 -0
- package/lib/serialization/NullPrototypeObjectSerializer.js +2 -0
- package/lib/serialization/ObjectMiddleware.js +23 -0
- package/lib/serialization/PlainObjectSerializer.js +7 -0
- package/lib/serialization/RegExpObjectSerializer.js +2 -0
- package/lib/serialization/Serializer.js +5 -0
- package/lib/serialization/SerializerMiddleware.js +14 -2
- package/lib/serialization/SetObjectSerializer.js +2 -0
- package/lib/serialization/SingleItemMiddleware.js +3 -0
- package/lib/sharing/ConsumeSharedFallbackDependency.js +1 -0
- package/lib/sharing/ConsumeSharedModule.js +15 -0
- package/lib/sharing/ConsumeSharedPlugin.js +8 -3
- package/lib/sharing/ConsumeSharedRuntimeModule.js +9 -4
- package/lib/sharing/ProvideForSharedDependency.js +1 -0
- package/lib/sharing/ProvideSharedDependency.js +4 -0
- package/lib/sharing/ProvideSharedModule.js +12 -1
- package/lib/sharing/ProvideSharedModuleFactory.js +1 -0
- package/lib/sharing/ProvideSharedPlugin.js +5 -2
- package/lib/sharing/SharePlugin.js +2 -1
- package/lib/sharing/ShareRuntimeModule.js +1 -0
- package/lib/sharing/resolveMatchedConfigs.js +4 -1
- package/lib/sharing/utils.js +8 -0
- package/lib/stats/DefaultStatsFactoryPlugin.js +58 -3
- package/lib/stats/DefaultStatsPresetPlugin.js +12 -2
- package/lib/stats/DefaultStatsPrinterPlugin.js +38 -2
- package/lib/stats/StatsFactory.js +13 -1
- package/lib/stats/StatsPrinter.js +7 -0
- package/lib/typescript/TypeScriptPlugin.js +210 -0
- package/lib/url/URLParserPlugin.js +8 -2
- package/lib/util/AppendOnlyStackedSet.js +15 -0
- package/lib/util/ArrayHelpers.js +1 -0
- package/lib/util/ArrayQueue.js +10 -5
- package/lib/util/AsyncQueue.js +22 -2
- package/lib/util/Hash.js +2 -2
- package/lib/util/IterableHelpers.js +3 -0
- package/lib/util/LazyBucketSortedSet.js +21 -0
- package/lib/util/LazySet.js +39 -0
- package/lib/util/LocConverter.js +53 -0
- package/lib/util/ParallelismFactorCalculator.js +1 -0
- package/lib/util/Queue.js +6 -3
- package/lib/util/Semaphore.js +14 -1
- package/lib/util/SetHelpers.js +3 -0
- package/lib/util/SortableSet.js +7 -1
- package/lib/util/StackedCacheMap.js +20 -3
- package/lib/util/StackedMap.js +45 -0
- package/lib/util/StringXor.js +1 -1
- package/lib/util/TupleQueue.js +7 -3
- package/lib/util/TupleSet.js +13 -0
- package/lib/util/URLAbsoluteSpecifier.js +1 -0
- package/lib/util/WeakTupleMap.js +33 -0
- package/lib/util/binarySearchBounds.js +1 -0
- package/lib/util/cleverMerge.js +19 -2
- package/lib/util/comparators.js +34 -3
- package/lib/util/compileBooleanMatcher.js +9 -0
- package/lib/util/concatenate.js +9 -3
- package/lib/util/conventions.js +46 -1
- package/lib/util/createMappings.js +118 -0
- package/lib/util/dataURL.js +1 -0
- package/lib/util/deprecation.js +19 -0
- package/lib/util/deterministicGrouping.js +20 -0
- package/lib/util/extractSourceMap.js +1 -0
- package/lib/util/extractUrlAndGlobal.js +1 -0
- package/lib/util/findGraphRoots.js +5 -0
- package/lib/{formatLocation.js → util/formatLocation.js} +4 -2
- package/lib/{SizeFormatHelpers.js → util/formatSize.js} +4 -1
- package/lib/util/fs.js +71 -8
- package/lib/util/generateDebugId.js +1 -0
- package/lib/util/hash/BatchedHash.js +1 -0
- package/lib/util/hash/BulkUpdateHash.js +1 -0
- package/lib/util/hash/hash-digest.js +8 -0
- package/lib/util/hash/md4.js +1 -1
- package/lib/util/hash/wasm-hash.js +5 -0
- package/lib/util/hash/xxhash64.js +1 -1
- package/lib/util/identifier.js +67 -0
- package/lib/util/internalSerializables.js +35 -19
- package/lib/util/magicComment.js +10 -6
- package/lib/util/makeSerializable.js +6 -0
- package/lib/util/memoize.js +2 -0
- package/lib/util/mimeTypes.js +176 -0
- package/lib/util/nonNumericOnlyHash.js +1 -0
- package/lib/util/parseJson.js +41 -0
- package/lib/util/processAsyncTree.js +8 -0
- package/lib/util/property.js +1 -0
- package/lib/util/registerExternalSerializer.js +20 -0
- package/lib/util/removeBOM.js +1 -0
- package/lib/util/runtime.js +32 -0
- package/lib/util/semver.js +15 -0
- package/lib/util/serialization.js +2 -0
- package/lib/util/smartGrouping.js +8 -0
- package/lib/util/source.js +23 -0
- package/lib/util/topologicalSort.js +69 -0
- package/lib/validateSchema.js +1 -0
- package/lib/wasm/EnableWasmLoadingPlugin.js +15 -1
- package/lib/wasm-async/AsyncWasmCompileRuntimeModule.js +1 -0
- package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +1 -0
- package/lib/wasm-async/AsyncWebAssemblyGenerator.js +6 -0
- package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +5 -0
- package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +12 -3
- package/lib/wasm-async/AsyncWebAssemblyParser.js +2 -1
- package/lib/wasm-async/UniversalCompileAsyncWasmPlugin.js +12 -1
- package/lib/wasm-sync/UnsupportedWebAssemblyFeatureError.js +6 -3
- package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +1 -0
- package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +2 -2
- package/lib/wasm-sync/WebAssemblyGenerator.js +26 -1
- package/lib/wasm-sync/WebAssemblyInInitialChunkError.js +7 -3
- package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +4 -0
- package/lib/wasm-sync/WebAssemblyModulesPlugin.js +10 -1
- package/lib/wasm-sync/WebAssemblyParser.js +2 -0
- package/lib/wasm-sync/WebAssemblyUtils.js +2 -0
- package/lib/web/FetchCompileAsyncWasmPlugin.js +10 -1
- package/lib/web/FetchCompileWasmPlugin.js +13 -1
- package/lib/web/JsonpChunkLoadingPlugin.js +11 -1
- package/lib/web/JsonpChunkLoadingRuntimeModule.js +1 -0
- package/lib/web/JsonpTemplatePlugin.js +2 -1
- package/lib/webpack.js +13 -1
- package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +10 -1
- package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +1 -0
- package/lib/webworker/WebWorkerTemplatePlugin.js +1 -1
- package/package.json +31 -31
- package/schemas/WebpackOptions.check.js +1 -1
- package/schemas/WebpackOptions.json +161 -57
- package/schemas/plugins/{DllPlugin.check.d.ts → HtmlGeneratorOptions.check.d.ts} +1 -1
- package/schemas/plugins/HtmlGeneratorOptions.check.js +6 -0
- package/schemas/plugins/HtmlGeneratorOptions.json +3 -0
- package/schemas/plugins/ProgressPlugin.check.js +1 -1
- package/schemas/plugins/ProgressPlugin.json +22 -0
- package/schemas/plugins/{DllReferencePlugin.check.d.ts → css/CssAutoOrModuleParserOptions.check.d.ts} +1 -1
- package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.js +6 -0
- package/schemas/plugins/css/CssAutoOrModuleParserOptions.json +3 -0
- package/schemas/plugins/dll/DllPlugin.check.d.ts +7 -0
- package/schemas/plugins/dll/DllReferencePlugin.check.d.ts +7 -0
- package/types.d.ts +5325 -353
- package/lib/CaseSensitiveModulesWarning.js +0 -72
- package/lib/GraphHelpers.js +0 -46
- package/lib/NoModeWarning.js +0 -23
- package/lib/css/CssMergeStyleSheetsRuntimeModule.js +0 -56
- /package/schemas/plugins/{DllPlugin.check.js → dll/DllPlugin.check.js} +0 -0
- /package/schemas/plugins/{DllPlugin.json → dll/DllPlugin.json} +0 -0
- /package/schemas/plugins/{DllReferencePlugin.check.js → dll/DllReferencePlugin.check.js} +0 -0
- /package/schemas/plugins/{DllReferencePlugin.json → dll/DllReferencePlugin.json} +0 -0
|
@@ -15,6 +15,7 @@ const { propertyName } = require("../util/property");
|
|
|
15
15
|
/** @typedef {import("../ExportsInfo").UsedName} UsedName */
|
|
16
16
|
|
|
17
17
|
/**
|
|
18
|
+
* Join iterable with comma.
|
|
18
19
|
* @param {Iterable<string>} iterable iterable strings
|
|
19
20
|
* @returns {string} result
|
|
20
21
|
*/
|
|
@@ -43,10 +44,12 @@ const EMPTY_MAP = new Map();
|
|
|
43
44
|
const EMPTY_SET = new Set();
|
|
44
45
|
|
|
45
46
|
/**
|
|
47
|
+
* Represents HarmonyExportInitFragment.
|
|
46
48
|
* @extends {InitFragment<GenerateContext>} Context
|
|
47
49
|
*/
|
|
48
50
|
class HarmonyExportInitFragment extends InitFragment {
|
|
49
51
|
/**
|
|
52
|
+
* Creates an instance of HarmonyExportInitFragment.
|
|
50
53
|
* @param {string} exportsArgument the exports identifier
|
|
51
54
|
* @param {ExportMap} exportMap mapping from used name to exposed variable name
|
|
52
55
|
* @param {UnusedExports} unusedExports list of unused export names
|
|
@@ -66,6 +69,7 @@ class HarmonyExportInitFragment extends InitFragment {
|
|
|
66
69
|
}
|
|
67
70
|
|
|
68
71
|
/**
|
|
72
|
+
* Merges the provided values into a single result.
|
|
69
73
|
* @param {HarmonyExportInitFragment[]} fragments all fragments to merge
|
|
70
74
|
* @returns {HarmonyExportInitFragment} merged fragment
|
|
71
75
|
*/
|
|
@@ -115,6 +119,7 @@ class HarmonyExportInitFragment extends InitFragment {
|
|
|
115
119
|
}
|
|
116
120
|
|
|
117
121
|
/**
|
|
122
|
+
* Returns merged result.
|
|
118
123
|
* @param {HarmonyExportInitFragment} other other
|
|
119
124
|
* @returns {HarmonyExportInitFragment} merged result
|
|
120
125
|
*/
|
|
@@ -151,6 +156,7 @@ class HarmonyExportInitFragment extends InitFragment {
|
|
|
151
156
|
}
|
|
152
157
|
|
|
153
158
|
/**
|
|
159
|
+
* Returns the source code that will be included as initialization code.
|
|
154
160
|
* @param {GenerateContext} context context
|
|
155
161
|
* @returns {string | Source | undefined} the source code that will be included as initialization code
|
|
156
162
|
*/
|
|
@@ -22,6 +22,7 @@ const NullDependency = require("./NullDependency");
|
|
|
22
22
|
|
|
23
23
|
class HarmonyExportSpecifierDependency extends NullDependency {
|
|
24
24
|
/**
|
|
25
|
+
* Creates an instance of HarmonyExportSpecifierDependency.
|
|
25
26
|
* @param {string} id the id
|
|
26
27
|
* @param {string} name the name
|
|
27
28
|
*/
|
|
@@ -50,6 +51,7 @@ class HarmonyExportSpecifierDependency extends NullDependency {
|
|
|
50
51
|
}
|
|
51
52
|
|
|
52
53
|
/**
|
|
54
|
+
* Gets module evaluation side effects state.
|
|
53
55
|
* @param {ModuleGraph} moduleGraph the module graph
|
|
54
56
|
* @returns {ConnectionState} how this dependency connects the module to referencing modules
|
|
55
57
|
*/
|
|
@@ -58,6 +60,7 @@ class HarmonyExportSpecifierDependency extends NullDependency {
|
|
|
58
60
|
}
|
|
59
61
|
|
|
60
62
|
/**
|
|
63
|
+
* Serializes this instance into the provided serializer context.
|
|
61
64
|
* @param {ObjectSerializerContext} context context
|
|
62
65
|
*/
|
|
63
66
|
serialize(context) {
|
|
@@ -68,6 +71,7 @@ class HarmonyExportSpecifierDependency extends NullDependency {
|
|
|
68
71
|
}
|
|
69
72
|
|
|
70
73
|
/**
|
|
74
|
+
* Restores this instance from the provided deserializer context.
|
|
71
75
|
* @param {ObjectDeserializerContext} context context
|
|
72
76
|
*/
|
|
73
77
|
deserialize(context) {
|
|
@@ -87,6 +91,7 @@ HarmonyExportSpecifierDependency.Template = class HarmonyExportSpecifierDependen
|
|
|
87
91
|
NullDependency.Template
|
|
88
92
|
) {
|
|
89
93
|
/**
|
|
94
|
+
* Applies the plugin by registering its hooks on the compiler.
|
|
90
95
|
* @param {Dependency} dependency the dependency for which the template should be applied
|
|
91
96
|
* @param {ReplaceSource} source the current replace source which can be modified
|
|
92
97
|
* @param {DependencyTemplateContext} templateContext the context object
|
|
@@ -15,6 +15,7 @@ const RuntimeGlobals = require("../RuntimeGlobals");
|
|
|
15
15
|
const parserStateExportsState = new WeakMap();
|
|
16
16
|
|
|
17
17
|
/**
|
|
18
|
+
* Processes the provided parser state.
|
|
18
19
|
* @param {JavascriptParserState} parserState parser state
|
|
19
20
|
* @param {boolean} isStrictHarmony strict harmony mode should be enabled
|
|
20
21
|
* @returns {void}
|
|
@@ -37,6 +38,7 @@ module.exports.enable = (parserState, isStrictHarmony) => {
|
|
|
37
38
|
};
|
|
38
39
|
|
|
39
40
|
/**
|
|
41
|
+
* Returns true, when enabled.
|
|
40
42
|
* @param {JavascriptParserState} parserState parser state
|
|
41
43
|
* @returns {boolean} true, when enabled
|
|
42
44
|
*/
|
|
@@ -7,11 +7,11 @@
|
|
|
7
7
|
|
|
8
8
|
const ConditionalInitFragment = require("../ConditionalInitFragment");
|
|
9
9
|
const Dependency = require("../Dependency");
|
|
10
|
-
const HarmonyLinkingError = require("../HarmonyLinkingError");
|
|
11
10
|
const InitFragment = require("../InitFragment");
|
|
12
11
|
const Template = require("../Template");
|
|
13
12
|
const AwaitDependenciesInitFragment = require("../async-modules/AwaitDependenciesInitFragment");
|
|
14
13
|
const { filterRuntime, mergeRuntime } = require("../util/runtime");
|
|
14
|
+
const HarmonyLinkingError = require("./HarmonyLinkingError");
|
|
15
15
|
const { ImportPhase, ImportPhaseUtils } = require("./ImportPhase");
|
|
16
16
|
const ModuleDependency = require("./ModuleDependency");
|
|
17
17
|
|
|
@@ -23,7 +23,7 @@ const ModuleDependency = require("./ModuleDependency");
|
|
|
23
23
|
/** @typedef {import("../Module")} Module */
|
|
24
24
|
/** @typedef {import("../Module").BuildMeta} BuildMeta */
|
|
25
25
|
/** @typedef {import("../ModuleGraph")} ModuleGraph */
|
|
26
|
-
/** @typedef {import("../WebpackError")} WebpackError */
|
|
26
|
+
/** @typedef {import("../errors/WebpackError")} WebpackError */
|
|
27
27
|
/** @typedef {import("../javascript/JavascriptParser").ImportAttributes} ImportAttributes */
|
|
28
28
|
/** @typedef {import("./ImportPhase").ImportPhaseType} ImportPhaseType */
|
|
29
29
|
/** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
|
|
@@ -38,6 +38,7 @@ const ExportPresenceModes = {
|
|
|
38
38
|
AUTO: /** @type {ExportPresenceMode} */ (2),
|
|
39
39
|
ERROR: /** @type {ExportPresenceMode} */ (3),
|
|
40
40
|
/**
|
|
41
|
+
* Returns result.
|
|
41
42
|
* @param {string | false} str param
|
|
42
43
|
* @returns {ExportPresenceMode} result
|
|
43
44
|
*/
|
|
@@ -90,6 +91,7 @@ const getNonOptionalPart = (members, membersOptionals) => {
|
|
|
90
91
|
|
|
91
92
|
class HarmonyImportDependency extends ModuleDependency {
|
|
92
93
|
/**
|
|
94
|
+
* Creates an instance of HarmonyImportDependency.
|
|
93
95
|
* @param {string} request request string
|
|
94
96
|
* @param {number} sourceOrder source order
|
|
95
97
|
* @param {ImportPhaseType=} phase import phase
|
|
@@ -111,6 +113,15 @@ class HarmonyImportDependency extends ModuleDependency {
|
|
|
111
113
|
}
|
|
112
114
|
|
|
113
115
|
/**
|
|
116
|
+
* Returns true if this dependency can be concatenated
|
|
117
|
+
* @returns {boolean} true if this dependency can be concatenated
|
|
118
|
+
*/
|
|
119
|
+
canConcatenate() {
|
|
120
|
+
return true;
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
/**
|
|
124
|
+
* Returns an identifier to merge equal requests.
|
|
114
125
|
* @returns {string | null} an identifier to merge equal requests
|
|
115
126
|
*/
|
|
116
127
|
getResourceIdentifier() {
|
|
@@ -136,6 +147,7 @@ class HarmonyImportDependency extends ModuleDependency {
|
|
|
136
147
|
}
|
|
137
148
|
|
|
138
149
|
/**
|
|
150
|
+
* Returns name of the variable for the import.
|
|
139
151
|
* @param {ModuleGraph} moduleGraph the module graph
|
|
140
152
|
* @returns {string} name of the variable for the import
|
|
141
153
|
*/
|
|
@@ -166,6 +178,7 @@ class HarmonyImportDependency extends ModuleDependency {
|
|
|
166
178
|
}
|
|
167
179
|
|
|
168
180
|
/**
|
|
181
|
+
* Gets module exports.
|
|
169
182
|
* @param {DependencyTemplateContext} context the template context
|
|
170
183
|
* @returns {string} the expression
|
|
171
184
|
*/
|
|
@@ -184,6 +197,7 @@ class HarmonyImportDependency extends ModuleDependency {
|
|
|
184
197
|
}
|
|
185
198
|
|
|
186
199
|
/**
|
|
200
|
+
* Gets import statement.
|
|
187
201
|
* @param {boolean} update create new variables or update existing one
|
|
188
202
|
* @param {DependencyTemplateContext} templateContext the template context
|
|
189
203
|
* @returns {[string, string]} the import statement and the compat statement
|
|
@@ -206,6 +220,7 @@ class HarmonyImportDependency extends ModuleDependency {
|
|
|
206
220
|
}
|
|
207
221
|
|
|
208
222
|
/**
|
|
223
|
+
* Gets linking errors.
|
|
209
224
|
* @param {ModuleGraph} moduleGraph module graph
|
|
210
225
|
* @param {Ids} ids imported ids
|
|
211
226
|
* @param {string} additionalMessage extra info included in the error message
|
|
@@ -324,6 +339,7 @@ class HarmonyImportDependency extends ModuleDependency {
|
|
|
324
339
|
}
|
|
325
340
|
|
|
326
341
|
/**
|
|
342
|
+
* Serializes this instance into the provided serializer context.
|
|
327
343
|
* @param {ObjectSerializerContext} context context
|
|
328
344
|
*/
|
|
329
345
|
serialize(context) {
|
|
@@ -334,6 +350,7 @@ class HarmonyImportDependency extends ModuleDependency {
|
|
|
334
350
|
}
|
|
335
351
|
|
|
336
352
|
/**
|
|
353
|
+
* Restores this instance from the provided deserializer context.
|
|
337
354
|
* @param {ObjectDeserializerContext} context context
|
|
338
355
|
*/
|
|
339
356
|
deserialize(context) {
|
|
@@ -353,6 +370,7 @@ HarmonyImportDependency.Template = class HarmonyImportDependencyTemplate extends
|
|
|
353
370
|
ModuleDependency.Template
|
|
354
371
|
) {
|
|
355
372
|
/**
|
|
373
|
+
* Applies the plugin by registering its hooks on the compiler.
|
|
356
374
|
* @param {Dependency} dependency the dependency for which the template should be applied
|
|
357
375
|
* @param {ReplaceSource} source the current replace source which can be modified
|
|
358
376
|
* @param {DependencyTemplateContext} templateContext the context object
|
|
@@ -457,6 +475,7 @@ HarmonyImportDependency.Template = class HarmonyImportDependencyTemplate extends
|
|
|
457
475
|
}
|
|
458
476
|
|
|
459
477
|
/**
|
|
478
|
+
* Gets import emitted runtime.
|
|
460
479
|
* @param {Module} module the module
|
|
461
480
|
* @param {Module} referencedModule the referenced module
|
|
462
481
|
* @returns {RuntimeSpec | boolean} runtimeCondition in which this import has been emitted
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
"use strict";
|
|
7
7
|
|
|
8
8
|
const HotModuleReplacementPlugin = require("../HotModuleReplacementPlugin");
|
|
9
|
-
const WebpackError = require("../WebpackError");
|
|
9
|
+
const WebpackError = require("../errors/WebpackError");
|
|
10
10
|
const {
|
|
11
11
|
VariableInfo,
|
|
12
12
|
getImportAttributes
|
|
@@ -45,6 +45,7 @@ const { ImportPhaseUtils, createGetImportPhase } = require("./ImportPhase");
|
|
|
45
45
|
/** @typedef {import("./ImportPhase").ImportPhaseType} ImportPhaseType */
|
|
46
46
|
|
|
47
47
|
/**
|
|
48
|
+
* Defines the harmony specifier guards type used by this module.
|
|
48
49
|
* @typedef {object} HarmonySpecifierGuards
|
|
49
50
|
* @property {AppendOnlyStackedSet<string> | undefined} guards
|
|
50
51
|
*/
|
|
@@ -55,6 +56,7 @@ const harmonySpecifierTag = Symbol("harmony import");
|
|
|
55
56
|
const harmonySpecifierGuardTag = Symbol("harmony import guard");
|
|
56
57
|
|
|
57
58
|
/**
|
|
59
|
+
* Defines the harmony settings type used by this module.
|
|
58
60
|
* @typedef {object} HarmonySettings
|
|
59
61
|
* @property {Ids} ids
|
|
60
62
|
* @property {string} source
|
|
@@ -68,6 +70,7 @@ const harmonySpecifierGuardTag = Symbol("harmony import guard");
|
|
|
68
70
|
const PLUGIN_NAME = "HarmonyImportDependencyParserPlugin";
|
|
69
71
|
|
|
70
72
|
/**
|
|
73
|
+
* Gets in operator harmony import info.
|
|
71
74
|
* @param {JavascriptParser} parser the parser
|
|
72
75
|
* @param {PrivateIdentifier | Expression} left left expression
|
|
73
76
|
* @param {Expression} right right expression
|
|
@@ -108,6 +111,7 @@ const getInOperatorHarmonyImportInfo = (parser, left, right) => {
|
|
|
108
111
|
|
|
109
112
|
module.exports = class HarmonyImportDependencyParserPlugin {
|
|
110
113
|
/**
|
|
114
|
+
* Creates an instance of HarmonyImportDependencyParserPlugin.
|
|
111
115
|
* @param {JavascriptParserOptions} options options
|
|
112
116
|
*/
|
|
113
117
|
constructor(options) {
|
|
@@ -121,6 +125,7 @@ module.exports = class HarmonyImportDependencyParserPlugin {
|
|
|
121
125
|
}
|
|
122
126
|
|
|
123
127
|
/**
|
|
128
|
+
* Gets export presence mode.
|
|
124
129
|
* @param {JavascriptParser} parser the parser
|
|
125
130
|
* @param {HarmonySettings} settings settings
|
|
126
131
|
* @param {Ids} ids ids
|
|
@@ -147,6 +152,7 @@ module.exports = class HarmonyImportDependencyParserPlugin {
|
|
|
147
152
|
}
|
|
148
153
|
|
|
149
154
|
/**
|
|
155
|
+
* Applies the plugin by registering its hooks on the compiler.
|
|
150
156
|
* @param {JavascriptParser} parser the parser
|
|
151
157
|
* @returns {void}
|
|
152
158
|
*/
|
|
@@ -157,6 +163,7 @@ module.exports = class HarmonyImportDependencyParserPlugin {
|
|
|
157
163
|
);
|
|
158
164
|
|
|
159
165
|
/**
|
|
166
|
+
* Gets non optional member chain.
|
|
160
167
|
* @param {MemberExpression} node member expression
|
|
161
168
|
* @param {number} count count
|
|
162
169
|
* @returns {Expression} member expression
|
|
@@ -406,6 +413,27 @@ module.exports = class HarmonyImportDependencyParserPlugin {
|
|
|
406
413
|
return true;
|
|
407
414
|
}
|
|
408
415
|
);
|
|
416
|
+
// Per the TC39 import-defer spec, [[Set]] on a Module Namespace
|
|
417
|
+
// Exotic Object returns false without triggering evaluation. The
|
|
418
|
+
// default expressionMemberChain path produces `<importVar>.a.foo`
|
|
419
|
+
// whose `.a` getter eagerly requires (and thus evaluates) the
|
|
420
|
+
// deferred module. For top-level `ns.foo = value`, walk only the
|
|
421
|
+
// bare `ns` identifier so it gets replaced with the deferred
|
|
422
|
+
// namespace proxy (whose set trap returns false), and leave the
|
|
423
|
+
// `.foo = value` part as plain code.
|
|
424
|
+
parser.hooks.assignMemberChain
|
|
425
|
+
.for(harmonySpecifierTag)
|
|
426
|
+
.tap(PLUGIN_NAME, (expression, members) => {
|
|
427
|
+
const settings = /** @type {HarmonySettings} */ (parser.currentTagData);
|
|
428
|
+
if (!ImportPhaseUtils.isDefer(settings.phase)) return;
|
|
429
|
+
if (expression.operator !== "=") return;
|
|
430
|
+
if (members.length !== 1) return;
|
|
431
|
+
const left = /** @type {MemberExpression} */ (expression.left);
|
|
432
|
+
if (left.object.type !== "Identifier") return;
|
|
433
|
+
parser.walkExpression(expression.right);
|
|
434
|
+
parser.walkExpression(left.object);
|
|
435
|
+
return true;
|
|
436
|
+
});
|
|
409
437
|
const { hotAcceptCallback, hotAcceptWithoutCallback } =
|
|
410
438
|
HotModuleReplacementPlugin.getParserHooks(parser);
|
|
411
439
|
hotAcceptCallback.tap(PLUGIN_NAME, (expr, requests) => {
|
|
@@ -454,6 +482,7 @@ module.exports = class HarmonyImportDependencyParserPlugin {
|
|
|
454
482
|
});
|
|
455
483
|
|
|
456
484
|
/**
|
|
485
|
+
* Processes the provided guard.
|
|
457
486
|
* @param {Guards} guards guards
|
|
458
487
|
* @param {() => void} walk walk callback
|
|
459
488
|
* @returns {void}
|
|
@@ -505,6 +534,7 @@ module.exports = class HarmonyImportDependencyParserPlugin {
|
|
|
505
534
|
const guards = new Map();
|
|
506
535
|
|
|
507
536
|
/**
|
|
537
|
+
* Processes the provided expression.
|
|
508
538
|
* @param {Expression} expression expression
|
|
509
539
|
* @param {boolean} needTruthy need to be truthy
|
|
510
540
|
*/
|
|
@@ -21,6 +21,7 @@ const HarmonyImportDependency = require("./HarmonyImportDependency");
|
|
|
21
21
|
|
|
22
22
|
class HarmonyImportSideEffectDependency extends HarmonyImportDependency {
|
|
23
23
|
/**
|
|
24
|
+
* Creates an instance of HarmonyImportSideEffectDependency.
|
|
24
25
|
* @param {string} request the request string
|
|
25
26
|
* @param {number} sourceOrder source order
|
|
26
27
|
* @param {ImportPhaseType} phase import phase
|
|
@@ -35,6 +36,7 @@ class HarmonyImportSideEffectDependency extends HarmonyImportDependency {
|
|
|
35
36
|
}
|
|
36
37
|
|
|
37
38
|
/**
|
|
39
|
+
* Returns function to determine if the connection is active.
|
|
38
40
|
* @param {ModuleGraph} moduleGraph module graph
|
|
39
41
|
* @returns {null | false | GetConditionFn} function to determine if the connection is active
|
|
40
42
|
*/
|
|
@@ -47,6 +49,7 @@ class HarmonyImportSideEffectDependency extends HarmonyImportDependency {
|
|
|
47
49
|
}
|
|
48
50
|
|
|
49
51
|
/**
|
|
52
|
+
* Gets module evaluation side effects state.
|
|
50
53
|
* @param {ModuleGraph} moduleGraph the module graph
|
|
51
54
|
* @returns {ConnectionState} how this dependency connects the module to referencing modules
|
|
52
55
|
*/
|
|
@@ -66,6 +69,7 @@ HarmonyImportSideEffectDependency.Template = class HarmonyImportSideEffectDepend
|
|
|
66
69
|
HarmonyImportDependency.Template
|
|
67
70
|
) {
|
|
68
71
|
/**
|
|
72
|
+
* Applies the plugin by registering its hooks on the compiler.
|
|
69
73
|
* @param {Dependency} dependency the dependency for which the template should be applied
|
|
70
74
|
* @param {ReplaceSource} source the current replace source which can be modified
|
|
71
75
|
* @param {DependencyTemplateContext} templateContext the context object
|
|
@@ -27,7 +27,7 @@ const { ImportPhaseUtils } = require("./ImportPhase");
|
|
|
27
27
|
/** @typedef {import("../Module").BuildMeta} BuildMeta */
|
|
28
28
|
/** @typedef {import("../ModuleGraph")} ModuleGraph */
|
|
29
29
|
/** @typedef {import("../ModuleGraphConnection").ConnectionState} ConnectionState */
|
|
30
|
-
/** @typedef {import("../WebpackError")} WebpackError */
|
|
30
|
+
/** @typedef {import("../errors/WebpackError")} WebpackError */
|
|
31
31
|
/** @typedef {import("../javascript/JavascriptParser").DestructuringAssignmentProperties} DestructuringAssignmentProperties */
|
|
32
32
|
/** @typedef {import("../javascript/JavascriptParser").ImportAttributes} ImportAttributes */
|
|
33
33
|
/** @typedef {import("../javascript/JavascriptParser").Range} Range */
|
|
@@ -48,6 +48,7 @@ const { ExportPresenceModes } = HarmonyImportDependency;
|
|
|
48
48
|
|
|
49
49
|
class HarmonyImportSpecifierDependency extends HarmonyImportDependency {
|
|
50
50
|
/**
|
|
51
|
+
* Creates an instance of HarmonyImportSpecifierDependency.
|
|
51
52
|
* @param {string} request request
|
|
52
53
|
* @param {number} sourceOrder source order
|
|
53
54
|
* @param {Ids} ids ids
|
|
@@ -93,6 +94,7 @@ class HarmonyImportSpecifierDependency extends HarmonyImportDependency {
|
|
|
93
94
|
|
|
94
95
|
// TODO webpack 6 remove
|
|
95
96
|
/**
|
|
97
|
+
* Returns id.
|
|
96
98
|
* @deprecated
|
|
97
99
|
*/
|
|
98
100
|
get id() {
|
|
@@ -101,6 +103,7 @@ class HarmonyImportSpecifierDependency extends HarmonyImportDependency {
|
|
|
101
103
|
|
|
102
104
|
// TODO webpack 6 remove
|
|
103
105
|
/**
|
|
106
|
+
* Returns id.
|
|
104
107
|
* @deprecated
|
|
105
108
|
*/
|
|
106
109
|
getId() {
|
|
@@ -109,6 +112,7 @@ class HarmonyImportSpecifierDependency extends HarmonyImportDependency {
|
|
|
109
112
|
|
|
110
113
|
// TODO webpack 6 remove
|
|
111
114
|
/**
|
|
115
|
+
* Updates id.
|
|
112
116
|
* @deprecated
|
|
113
117
|
*/
|
|
114
118
|
setId() {
|
|
@@ -120,6 +124,7 @@ class HarmonyImportSpecifierDependency extends HarmonyImportDependency {
|
|
|
120
124
|
}
|
|
121
125
|
|
|
122
126
|
/**
|
|
127
|
+
* Returns the imported ids.
|
|
123
128
|
* @param {ModuleGraph} moduleGraph the module graph
|
|
124
129
|
* @returns {Ids} the imported ids
|
|
125
130
|
*/
|
|
@@ -131,6 +136,7 @@ class HarmonyImportSpecifierDependency extends HarmonyImportDependency {
|
|
|
131
136
|
}
|
|
132
137
|
|
|
133
138
|
/**
|
|
139
|
+
* Updates ids using the provided module graph.
|
|
134
140
|
* @param {ModuleGraph} moduleGraph the module graph
|
|
135
141
|
* @param {Ids} ids the imported ids
|
|
136
142
|
* @returns {void}
|
|
@@ -140,6 +146,7 @@ class HarmonyImportSpecifierDependency extends HarmonyImportDependency {
|
|
|
140
146
|
}
|
|
141
147
|
|
|
142
148
|
/**
|
|
149
|
+
* Returns function to determine if the connection is active.
|
|
143
150
|
* @param {ModuleGraph} moduleGraph module graph
|
|
144
151
|
* @returns {null | false | GetConditionFn} function to determine if the connection is active
|
|
145
152
|
*/
|
|
@@ -152,6 +159,7 @@ class HarmonyImportSpecifierDependency extends HarmonyImportDependency {
|
|
|
152
159
|
}
|
|
153
160
|
|
|
154
161
|
/**
|
|
162
|
+
* Gets module evaluation side effects state.
|
|
155
163
|
* @param {ModuleGraph} moduleGraph the module graph
|
|
156
164
|
* @returns {ConnectionState} how this dependency connects the module to referencing modules
|
|
157
165
|
*/
|
|
@@ -209,6 +217,7 @@ class HarmonyImportSpecifierDependency extends HarmonyImportDependency {
|
|
|
209
217
|
}
|
|
210
218
|
|
|
211
219
|
/**
|
|
220
|
+
* Get referenced exports in destructuring.
|
|
212
221
|
* @param {Ids=} ids ids
|
|
213
222
|
* @returns {RawReferencedExports} referenced exports
|
|
214
223
|
*/
|
|
@@ -231,6 +240,7 @@ class HarmonyImportSpecifierDependency extends HarmonyImportDependency {
|
|
|
231
240
|
}
|
|
232
241
|
|
|
233
242
|
/**
|
|
243
|
+
* Get effective export presence level.
|
|
234
244
|
* @param {ModuleGraph} moduleGraph module graph
|
|
235
245
|
* @returns {ExportPresenceMode} effective mode
|
|
236
246
|
*/
|
|
@@ -250,7 +260,7 @@ class HarmonyImportSpecifierDependency extends HarmonyImportDependency {
|
|
|
250
260
|
}
|
|
251
261
|
|
|
252
262
|
/**
|
|
253
|
-
* Returns warnings
|
|
263
|
+
* Returns warnings.
|
|
254
264
|
* @param {ModuleGraph} moduleGraph module graph
|
|
255
265
|
* @returns {WebpackError[] | null | undefined} warnings
|
|
256
266
|
*/
|
|
@@ -263,7 +273,7 @@ class HarmonyImportSpecifierDependency extends HarmonyImportDependency {
|
|
|
263
273
|
}
|
|
264
274
|
|
|
265
275
|
/**
|
|
266
|
-
* Returns errors
|
|
276
|
+
* Returns errors.
|
|
267
277
|
* @param {ModuleGraph} moduleGraph module graph
|
|
268
278
|
* @returns {WebpackError[] | null | undefined} errors
|
|
269
279
|
*/
|
|
@@ -276,6 +286,7 @@ class HarmonyImportSpecifierDependency extends HarmonyImportDependency {
|
|
|
276
286
|
}
|
|
277
287
|
|
|
278
288
|
/**
|
|
289
|
+
* Returns errors.
|
|
279
290
|
* @param {ModuleGraph} moduleGraph module graph
|
|
280
291
|
* @returns {WebpackError[] | undefined} errors
|
|
281
292
|
*/
|
|
@@ -297,6 +308,7 @@ class HarmonyImportSpecifierDependency extends HarmonyImportDependency {
|
|
|
297
308
|
}
|
|
298
309
|
|
|
299
310
|
/**
|
|
311
|
+
* Serializes this instance into the provided serializer context.
|
|
300
312
|
* @param {ObjectSerializerContext} context context
|
|
301
313
|
*/
|
|
302
314
|
serialize(context) {
|
|
@@ -317,6 +329,7 @@ class HarmonyImportSpecifierDependency extends HarmonyImportDependency {
|
|
|
317
329
|
}
|
|
318
330
|
|
|
319
331
|
/**
|
|
332
|
+
* Restores this instance from the provided deserializer context.
|
|
320
333
|
* @param {ObjectDeserializerContext} context context
|
|
321
334
|
*/
|
|
322
335
|
deserialize(context) {
|
|
@@ -346,6 +359,7 @@ HarmonyImportSpecifierDependency.Template = class HarmonyImportSpecifierDependen
|
|
|
346
359
|
HarmonyImportDependency.Template
|
|
347
360
|
) {
|
|
348
361
|
/**
|
|
362
|
+
* Applies the plugin by registering its hooks on the compiler.
|
|
349
363
|
* @param {Dependency} dependency the dependency for which the template should be applied
|
|
350
364
|
* @param {ReplaceSource} source the current replace source which can be modified
|
|
351
365
|
* @param {DependencyTemplateContext} templateContext the context object
|
|
@@ -450,6 +464,7 @@ HarmonyImportSpecifierDependency.Template = class HarmonyImportSpecifierDependen
|
|
|
450
464
|
}
|
|
451
465
|
|
|
452
466
|
/**
|
|
467
|
+
* Returns generated code.
|
|
453
468
|
* @param {HarmonyImportSpecifierDependency} dep dependency
|
|
454
469
|
* @param {ReplaceSource} source source
|
|
455
470
|
* @param {DependencyTemplateContext} templateContext context
|
|
@@ -4,9 +4,9 @@
|
|
|
4
4
|
|
|
5
5
|
"use strict";
|
|
6
6
|
|
|
7
|
-
const WebpackError = require("
|
|
7
|
+
const WebpackError = require("../errors/WebpackError");
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
class HarmonyLinkingError extends WebpackError {
|
|
10
10
|
/** @param {string} message Error message */
|
|
11
11
|
constructor(message) {
|
|
12
12
|
super(message);
|
|
@@ -14,4 +14,6 @@ module.exports = class HarmonyLinkingError extends WebpackError {
|
|
|
14
14
|
this.name = "HarmonyLinkingError";
|
|
15
15
|
this.hideStack = true;
|
|
16
16
|
}
|
|
17
|
-
}
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
module.exports = HarmonyLinkingError;
|
|
@@ -31,6 +31,7 @@ const HarmonyTopLevelThisParserPlugin = require("./HarmonyTopLevelThisParserPlug
|
|
|
31
31
|
/** @typedef {import("../javascript/JavascriptParser")} Parser */
|
|
32
32
|
|
|
33
33
|
/**
|
|
34
|
+
* Defines the harmony modules plugin options type used by this module.
|
|
34
35
|
* @typedef {object} HarmonyModulesPluginOptions
|
|
35
36
|
* @property {boolean=} deferImport
|
|
36
37
|
*/
|
|
@@ -39,6 +40,7 @@ const PLUGIN_NAME = "HarmonyModulesPlugin";
|
|
|
39
40
|
|
|
40
41
|
class HarmonyModulesPlugin {
|
|
41
42
|
/**
|
|
43
|
+
* Creates an instance of HarmonyModulesPlugin.
|
|
42
44
|
* @param {HarmonyModulesPluginOptions} options options
|
|
43
45
|
*/
|
|
44
46
|
constructor(options) {
|
|
@@ -46,7 +48,7 @@ class HarmonyModulesPlugin {
|
|
|
46
48
|
}
|
|
47
49
|
|
|
48
50
|
/**
|
|
49
|
-
*
|
|
51
|
+
* Applies the plugin by registering its hooks on the compiler.
|
|
50
52
|
* @param {Compiler} compiler the compiler instance
|
|
51
53
|
* @returns {void}
|
|
52
54
|
*/
|
|
@@ -125,6 +127,7 @@ class HarmonyModulesPlugin {
|
|
|
125
127
|
);
|
|
126
128
|
|
|
127
129
|
/**
|
|
130
|
+
* Handles the hook callback for this code path.
|
|
128
131
|
* @param {Parser} parser parser parser
|
|
129
132
|
* @param {JavascriptParserOptions} parserOptions parserOptions
|
|
130
133
|
* @returns {void}
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
/*
|
|
2
|
+
MIT License http://www.opensource.org/licenses/mit-license.php
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
"use strict";
|
|
6
|
+
|
|
7
|
+
const makeSerializable = require("../util/makeSerializable");
|
|
8
|
+
const CssUrlDependency = require("./CssUrlDependency");
|
|
9
|
+
const ModuleDependency = require("./ModuleDependency");
|
|
10
|
+
|
|
11
|
+
/** @typedef {import("webpack-sources").ReplaceSource} ReplaceSource */
|
|
12
|
+
/** @typedef {import("../Chunk")} Chunk */
|
|
13
|
+
/** @typedef {import("../Dependency")} Dependency */
|
|
14
|
+
/** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */
|
|
15
|
+
/** @typedef {import("../Entrypoint")} Entrypoint */
|
|
16
|
+
/** @typedef {import("../javascript/JavascriptParser").Range} Range */
|
|
17
|
+
/** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
|
|
18
|
+
/** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Represents an inline `<script>...</script>` block in an HTML module. The
|
|
22
|
+
* tag's body is bundled as its own entry chunk — the same pipeline that
|
|
23
|
+
* processes `<script src>` — and the inline body is replaced with a
|
|
24
|
+
* `src` attribute pointing at the emitted chunk URL.
|
|
25
|
+
*/
|
|
26
|
+
class HtmlInlineScriptDependency extends ModuleDependency {
|
|
27
|
+
/**
|
|
28
|
+
* Creates an instance of HtmlInlineScriptDependency.
|
|
29
|
+
* @param {string} request virtual request resolving to the inline JS (data URI)
|
|
30
|
+
* @param {number} insertPos position right after `<script` where ` src="…"` is inserted
|
|
31
|
+
* @param {Range} contentRange range of the inline JS body (between `<script>` and `</script>`)
|
|
32
|
+
* @param {string} entryName name of the entry the inline JS is bundled into
|
|
33
|
+
* @param {string=} category dependency category used for resolving and grouping
|
|
34
|
+
*/
|
|
35
|
+
constructor(request, insertPos, contentRange, entryName, category) {
|
|
36
|
+
super(request);
|
|
37
|
+
this.insertPos = insertPos;
|
|
38
|
+
this.contentRange = contentRange;
|
|
39
|
+
this.range = contentRange;
|
|
40
|
+
this.entryName = entryName;
|
|
41
|
+
/** @type {string} */
|
|
42
|
+
this._category = category || "commonjs";
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
get type() {
|
|
46
|
+
return "html inline script";
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
get category() {
|
|
50
|
+
return this._category;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
/**
|
|
54
|
+
* Serializes this instance into the provided serializer context.
|
|
55
|
+
* @param {ObjectSerializerContext} context context
|
|
56
|
+
*/
|
|
57
|
+
serialize(context) {
|
|
58
|
+
const { write } = context;
|
|
59
|
+
write(this.insertPos);
|
|
60
|
+
write(this.contentRange);
|
|
61
|
+
write(this.entryName);
|
|
62
|
+
write(this._category);
|
|
63
|
+
super.serialize(context);
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
/**
|
|
67
|
+
* Restores this instance from the provided deserializer context.
|
|
68
|
+
* @param {ObjectDeserializerContext} context context
|
|
69
|
+
*/
|
|
70
|
+
deserialize(context) {
|
|
71
|
+
const { read } = context;
|
|
72
|
+
this.insertPos = read();
|
|
73
|
+
this.contentRange = read();
|
|
74
|
+
this.range = this.contentRange;
|
|
75
|
+
this.entryName = read();
|
|
76
|
+
this._category = read();
|
|
77
|
+
super.deserialize(context);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
HtmlInlineScriptDependency.Template = class HtmlInlineScriptDependencyTemplate extends (
|
|
82
|
+
ModuleDependency.Template
|
|
83
|
+
) {
|
|
84
|
+
/**
|
|
85
|
+
* Applies the plugin by registering its hooks on the compiler.
|
|
86
|
+
* @param {Dependency} dependency the dependency for which the template should be applied
|
|
87
|
+
* @param {ReplaceSource} source the current replace source which can be modified
|
|
88
|
+
* @param {DependencyTemplateContext} templateContext the context object
|
|
89
|
+
* @returns {void}
|
|
90
|
+
*/
|
|
91
|
+
apply(dependency, source, templateContext) {
|
|
92
|
+
const { runtimeTemplate } = templateContext;
|
|
93
|
+
const dep = /** @type {HtmlInlineScriptDependency} */ (dependency);
|
|
94
|
+
const compilation = runtimeTemplate.compilation;
|
|
95
|
+
const entrypoint = /** @type {Entrypoint | undefined} */ (
|
|
96
|
+
compilation.entrypoints.get(dep.entryName)
|
|
97
|
+
);
|
|
98
|
+
|
|
99
|
+
/** @type {string} */
|
|
100
|
+
let url = "data:,";
|
|
101
|
+
|
|
102
|
+
if (entrypoint) {
|
|
103
|
+
const chunk = /** @type {Chunk} */ (entrypoint.getEntrypointChunk());
|
|
104
|
+
const outputOptions = runtimeTemplate.outputOptions;
|
|
105
|
+
const filenameTemplate =
|
|
106
|
+
chunk.filenameTemplate ||
|
|
107
|
+
(chunk.canBeInitial()
|
|
108
|
+
? outputOptions.filename
|
|
109
|
+
: outputOptions.chunkFilename);
|
|
110
|
+
|
|
111
|
+
const filename = compilation.getPath(filenameTemplate, {
|
|
112
|
+
chunk,
|
|
113
|
+
contentHashType: "javascript"
|
|
114
|
+
});
|
|
115
|
+
|
|
116
|
+
url = `${CssUrlDependency.PUBLIC_PATH_AUTO}${filename}`;
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
// Insert ` src="…"` right after `<script` so the inline body is
|
|
120
|
+
// served from the emitted chunk instead. The browser ignores the
|
|
121
|
+
// remaining inline body once `src` is present, but we still clear
|
|
122
|
+
// it below so the unprocessed JS doesn't ride along.
|
|
123
|
+
source.insert(dep.insertPos, ` src="${url}"`);
|
|
124
|
+
source.replace(dep.contentRange[0], dep.contentRange[1] - 1, "");
|
|
125
|
+
}
|
|
126
|
+
};
|
|
127
|
+
|
|
128
|
+
makeSerializable(
|
|
129
|
+
HtmlInlineScriptDependency,
|
|
130
|
+
"webpack/lib/dependencies/HtmlInlineScriptDependency"
|
|
131
|
+
);
|
|
132
|
+
|
|
133
|
+
module.exports = HtmlInlineScriptDependency;
|