webpack 5.111.1 → 5.112.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 +1 -1
- package/bin/webpack.js +13 -7
- package/lib/Chunk.js +3 -966
- package/lib/Compilation.js +373 -163
- package/lib/Compiler.js +31 -44
- package/lib/Dependency.js +3 -551
- package/lib/DependencyTemplate.js +3 -70
- package/lib/EntryPlugin.js +3 -68
- package/lib/Entrypoint.js +3 -121
- package/lib/ExternalsPlugin.js +3 -92
- package/lib/FileSystemInfo.js +3 -4629
- package/lib/InitFragment.js +3 -204
- package/lib/LibraryTemplatePlugin.js +3 -46
- package/lib/ModuleFilenameHelpers.js +3 -400
- package/lib/ModuleNotFoundError.js +2 -2
- package/lib/MultiCompiler.js +37 -8
- package/lib/NormalModule.js +3 -2242
- package/lib/NullFactory.js +3 -22
- package/lib/ProgressPlugin.js +3 -908
- package/lib/RawModule.js +3 -197
- package/lib/RequestShortener.js +3 -37
- package/lib/SingleEntryPlugin.js +1 -1
- package/lib/WebpackError.js +2 -2
- package/lib/asset/AssetBytesGenerator.js +21 -13
- package/lib/asset/AssetBytesParser.js +12 -10
- package/lib/asset/AssetGenerator.js +71 -69
- package/lib/asset/AssetModule.js +13 -2
- package/lib/asset/AssetModulesPlugin.js +10 -12
- package/lib/asset/AssetParser.js +10 -10
- package/lib/asset/AssetSourceGenerator.js +23 -15
- package/lib/asset/AssetSourceParser.js +12 -10
- package/lib/asset/RawDataUrlModule.js +17 -10
- package/lib/asset/WebManifestGenerator.js +17 -12
- package/lib/asset/WebManifestParser.js +8 -8
- package/lib/async-modules/AsyncModuleHelpers.js +12 -5
- package/lib/async-modules/AwaitDependenciesInitFragment.js +4 -4
- package/lib/async-modules/InferAsyncModulesPlugin.js +9 -3
- package/lib/async-modules/isGeneratorLowered.js +3 -3
- package/lib/bun/BunTargetPlugin.js +1 -1
- package/lib/cache/AddBuildDependenciesPlugin.js +2 -19
- package/lib/{Cache.js → cache/Cache.js} +1 -1
- package/lib/{CacheFacade.js → cache/CacheFacade.js} +6 -6
- package/lib/cache/IdleFileCachePlugin.js +2 -2
- package/lib/cache/MemoryCachePlugin.js +2 -2
- package/lib/cache/MemoryWithGcCachePlugin.js +2 -2
- package/lib/cache/PackFileCacheStrategy.js +13 -19
- package/lib/cache/ResolverCachePlugin.js +65 -11
- package/lib/cache/mergeEtags.js +1 -1
- package/lib/{OptionsApply.js → config/OptionsApply.js} +3 -3
- package/lib/{PlatformPlugin.js → config/PlatformPlugin.js} +2 -2
- package/lib/{WebpackOptionsApply.js → config/WebpackOptionsApply.js} +209 -212
- package/lib/{WebpackOptionsDefaulter.js → config/WebpackOptionsDefaulter.js} +3 -3
- package/lib/config/browserslistTargetHandler.js +1 -1
- package/lib/{cli.js → config/cli.js} +14 -164
- package/lib/config/defaults.js +166 -59
- package/lib/config/getClaimedAssetTypes.js +22 -14
- package/lib/config/normalization.js +18 -7
- package/lib/config/target.js +11 -1
- package/lib/container/ContainerEntryDependency.js +1 -1
- package/lib/container/ContainerEntryModule.js +13 -11
- package/lib/container/ContainerEntryModuleFactory.js +2 -2
- package/lib/container/ContainerExposedDependency.js +1 -1
- package/lib/container/ContainerPlugin.js +178 -5
- package/lib/container/ContainerReferencePlugin.js +75 -14
- package/lib/container/FallbackDependency.js +1 -1
- package/lib/container/FallbackItemDependency.js +1 -1
- package/lib/container/FallbackModule.js +12 -10
- package/lib/container/FallbackModuleFactory.js +2 -2
- package/lib/container/HoistContainerReferencesPlugin.js +10 -11
- package/lib/container/ModuleFederationPlugin.js +306 -7
- package/lib/container/RemoteModule.js +14 -10
- package/lib/container/RemoteRuntimeModule.js +5 -5
- package/lib/container/RemoteToExternalDependency.js +1 -1
- package/lib/container/moduleFederationHooks.js +1 -1
- package/lib/context/ContextModule.js +37 -26
- package/lib/context/ContextModuleFactory.js +14 -11
- package/lib/context/ContextReplacementPlugin.js +6 -12
- package/lib/css/CssGenerator.js +78 -68
- package/lib/css/CssInjectStyleRuntimeModule.js +36 -30
- package/lib/css/CssLoadingRuntimeModule.js +77 -44
- package/lib/css/CssModule.js +37 -29
- package/lib/css/CssModulesPlugin.js +129 -45
- package/lib/css/CssParser.js +714 -322
- package/lib/css/CssServerStylesRuntimeModule.js +3 -3
- package/lib/{util → css}/conventions.js +1 -1
- package/lib/css/cssMinify.js +110 -37
- package/lib/css/data.js +6990 -5125
- package/lib/css/syntax-parser.js +20734 -0
- package/lib/css/syntax-printer.js +6092 -0
- package/lib/css/syntax.js +37 -18686
- package/lib/debug/ProfilingPlugin.js +106 -51
- package/lib/{DefinePlugin.js → define/DefinePlugin.js} +416 -55
- package/lib/{DotenvPlugin.js → define/DotenvPlugin.js} +19 -15
- package/lib/{EnvironmentPlugin.js → define/EnvironmentPlugin.js} +6 -4
- package/lib/deno/DenoTargetPlugin.js +1 -1
- package/lib/dependencies/ConstDependency.js +3 -120
- package/lib/dependencies/ContextElementDependency.js +5 -172
- package/lib/dependencies/NullDependency.js +3 -37
- package/lib/dependencies/{AMDDefineDependency.js → amd/AMDDefineDependency.js} +12 -11
- package/lib/dependencies/{AMDDefineDependencyParserPlugin.js → amd/AMDDefineDependencyParserPlugin.js} +10 -11
- package/lib/dependencies/{AMDPlugin.js → amd/AMDPlugin.js} +11 -11
- package/lib/dependencies/{AMDRequireArrayDependency.js → amd/AMDRequireArrayDependency.js} +15 -13
- package/lib/dependencies/{AMDRequireContextDependency.js → amd/AMDRequireContextDependency.js} +11 -10
- package/lib/dependencies/{AMDRequireDependenciesBlock.js → amd/AMDRequireDependenciesBlock.js} +7 -6
- package/lib/dependencies/{AMDRequireDependenciesBlockParserPlugin.js → amd/AMDRequireDependenciesBlockParserPlugin.js} +14 -11
- package/lib/dependencies/{AMDRequireDependency.js → amd/AMDRequireDependency.js} +13 -12
- package/lib/dependencies/{AMDRequireItemDependency.js → amd/AMDRequireItemDependency.js} +8 -7
- package/lib/dependencies/{AMDRuntimeModules.js → amd/AMDRuntimeModules.js} +3 -3
- package/lib/dependencies/{LocalModule.js → amd/LocalModule.js} +8 -4
- package/lib/dependencies/{LocalModuleDependency.js → amd/LocalModuleDependency.js} +17 -10
- package/lib/dependencies/{LocalModulesHelpers.js → amd/LocalModulesHelpers.js} +1 -1
- package/lib/dependencies/{RequireJsStuffPlugin.js → amd/RequireJsStuffPlugin.js} +9 -9
- package/lib/dependencies/{UnsupportedDependency.js → amd/UnsupportedDependency.js} +11 -10
- package/lib/dependencies/{CommonJsDependencyHelpers.js → commonjs/CommonJsDependencyHelpers.js} +8 -9
- package/lib/dependencies/{CommonJsExportRequireDependency.js → commonjs/CommonJsExportRequireDependency.js} +166 -36
- package/lib/dependencies/{CommonJsExportsDependency.js → commonjs/CommonJsExportsDependency.js} +15 -14
- package/lib/dependencies/{CommonJsExportsParserPlugin.js → commonjs/CommonJsExportsParserPlugin.js} +154 -92
- package/lib/dependencies/{CommonJsFullRequireDependency.js → commonjs/CommonJsFullRequireDependency.js} +32 -24
- package/lib/dependencies/{CommonJsImportsParserPlugin.js → commonjs/CommonJsImportsParserPlugin.js} +36 -33
- package/lib/dependencies/{CommonJsObjectExportDependency.js → commonjs/CommonJsObjectExportDependency.js} +17 -16
- package/lib/dependencies/{CommonJsPlugin.js → commonjs/CommonJsPlugin.js} +48 -39
- package/lib/dependencies/{CommonJsRequireContextDependency.js → commonjs/CommonJsRequireContextDependency.js} +15 -14
- package/lib/dependencies/{CommonJsRequireDependency.js → commonjs/CommonJsRequireDependency.js} +33 -25
- package/lib/dependencies/{CommonJsSelfReferenceDependency.js → commonjs/CommonJsSelfReferenceDependency.js} +17 -16
- package/lib/dependencies/{ModuleDecoratorDependency.js → commonjs/ModuleDecoratorDependency.js} +16 -15
- package/lib/dependencies/{RequireEnsureDependenciesBlock.js → commonjs/RequireEnsureDependenciesBlock.js} +8 -7
- package/lib/dependencies/{RequireEnsureDependenciesBlockParserPlugin.js → commonjs/RequireEnsureDependenciesBlockParserPlugin.js} +9 -6
- package/lib/dependencies/{RequireEnsureDependency.js → commonjs/RequireEnsureDependency.js} +13 -12
- package/lib/dependencies/{RequireEnsureItemDependency.js → commonjs/RequireEnsureItemDependency.js} +7 -6
- package/lib/dependencies/{RequireEnsurePlugin.js → commonjs/RequireEnsurePlugin.js} +8 -8
- package/lib/dependencies/{RequireHeaderDependency.js → commonjs/RequireHeaderDependency.js} +14 -13
- package/lib/dependencies/{RequireIncludeDependency.js → commonjs/RequireIncludeDependency.js} +13 -12
- package/lib/dependencies/{RequireIncludeDependencyParserPlugin.js → commonjs/RequireIncludeDependencyParserPlugin.js} +3 -27
- package/lib/dependencies/{RequireIncludePlugin.js → commonjs/RequireIncludePlugin.js} +4 -4
- package/lib/dependencies/{RequireResolveContextDependency.js → commonjs/RequireResolveContextDependency.js} +11 -10
- package/lib/dependencies/{RequireResolveDependency.js → commonjs/RequireResolveDependency.js} +12 -11
- package/lib/dependencies/{RequireResolveHeaderDependency.js → commonjs/RequireResolveHeaderDependency.js} +13 -12
- package/lib/dependencies/commonjs/TopLevelThisParserPlugin.js +59 -0
- package/lib/dependencies/{ContextDependency.js → context/ContextDependency.js} +15 -14
- package/lib/dependencies/{ContextDependencyHelpers.js → context/ContextDependencyHelpers.js} +31 -9
- package/lib/dependencies/{ContextDependencyTemplateAsId.js → context/ContextDependencyTemplateAsId.js} +3 -3
- package/lib/dependencies/{ContextDependencyTemplateAsRequireCall.js → context/ContextDependencyTemplateAsRequireCall.js} +3 -3
- package/lib/dependencies/context/ContextElementDependency.js +198 -0
- package/lib/dependencies/{ImportMetaContextDependency.js → context/ImportMetaContextDependency.js} +7 -6
- package/lib/dependencies/{ImportMetaContextDependencyParserPlugin.js → context/ImportMetaContextDependencyParserPlugin.js} +10 -11
- package/lib/dependencies/{ImportMetaContextPlugin.js → context/ImportMetaContextPlugin.js} +5 -5
- package/lib/dependencies/{ImportMetaGlobDependency.js → context/ImportMetaGlobDependency.js} +7 -6
- package/lib/dependencies/{ImportMetaGlobDependencyParserPlugin.js → context/ImportMetaGlobDependencyParserPlugin.js} +7 -10
- package/lib/dependencies/{ImportMetaGlobHelpers.js → context/ImportMetaGlobHelpers.js} +17 -19
- package/lib/dependencies/{RequireContextDependency.js → context/RequireContextDependency.js} +7 -6
- package/lib/dependencies/{RequireContextDependencyParserPlugin.js → context/RequireContextDependencyParserPlugin.js} +2 -2
- package/lib/dependencies/{RequireContextPlugin.js → context/RequireContextPlugin.js} +5 -5
- package/lib/dependencies/{CachedConstDependency.js → core/CachedConstDependency.js} +21 -17
- package/lib/dependencies/core/ConstDependency.js +131 -0
- package/lib/dependencies/{ImportPhase.js → core/ImportPhase.js} +5 -4
- package/lib/dependencies/{ModuleDependency.js → core/ModuleDependency.js} +10 -7
- package/lib/dependencies/{ModuleDependencyTemplateAsId.js → core/ModuleDependencyTemplateAsId.js} +3 -3
- package/lib/dependencies/{ModuleDependencyTemplateAsRequireId.js → core/ModuleDependencyTemplateAsRequireId.js} +2 -2
- package/lib/dependencies/{ModuleInitFragmentDependency.js → core/ModuleInitFragmentDependency.js} +10 -9
- package/lib/dependencies/core/NullDependency.js +44 -0
- package/lib/dependencies/{RuntimeRequirementsDependency.js → core/RuntimeRequirementsDependency.js} +10 -9
- package/lib/dependencies/{StaticExportsDependency.js → core/StaticExportsDependency.js} +15 -8
- package/lib/dependencies/{CssIcssExportDependency.js → css/CssIcssExportDependency.js} +375 -99
- package/lib/dependencies/{CssIcssImportDependency.js → css/CssIcssImportDependency.js} +24 -19
- package/lib/dependencies/{CssIcssSymbolDependency.js → css/CssIcssSymbolDependency.js} +13 -12
- package/lib/dependencies/{CssImportDependency.js → css/CssImportDependency.js} +15 -11
- package/lib/dependencies/{CssUrlDependency.js → css/CssUrlDependency.js} +25 -22
- package/lib/dependencies/{CreateRequireParserPlugin.js → esm/CreateRequireParserPlugin.js} +9 -9
- package/lib/dependencies/{HarmonyAcceptDependency.js → esm/ESMAcceptDependency.js} +41 -38
- package/lib/dependencies/esm/ESMAcceptImportDependency.js +39 -0
- package/lib/dependencies/{HarmonyCompatibilityDependency.js → esm/ESMCompatibilityDependency.js} +29 -21
- package/lib/dependencies/{HarmonyDetectionParserPlugin.js → esm/ESMDetectionParserPlugin.js} +20 -20
- package/lib/dependencies/{HarmonyEvaluatedImportSpecifierDependency.js → esm/ESMEvaluatedImportSpecifierDependency.js} +33 -30
- package/lib/dependencies/{HarmonyExportDependencyParserPlugin.js → esm/ESMExportDependencyParserPlugin.js} +60 -89
- package/lib/dependencies/{HarmonyExportExpressionDependency.js → esm/ESMExportExpressionDependency.js} +80 -45
- package/lib/dependencies/{HarmonyExportHeaderDependency.js → esm/ESMExportHeaderDependency.js} +17 -15
- package/lib/dependencies/esm/ESMExportImportedSideEffectDependency.js +37 -0
- package/lib/dependencies/{HarmonyExportImportedSpecifierDependency.js → esm/ESMExportImportedSpecifierDependency.js} +146 -133
- package/lib/dependencies/{HarmonyExportInitFragment.js → esm/ESMExportInitFragment.js} +48 -30
- package/lib/dependencies/{HarmonyExportSpecifierDependency.js → esm/ESMExportSpecifierDependency.js} +78 -37
- package/lib/dependencies/{HarmonyExports.js → esm/ESMExports.js} +4 -12
- package/lib/dependencies/{HarmonyImportBareSideEffectDependency.js → esm/ESMImportBareSideEffectDependency.js} +21 -13
- package/lib/dependencies/{HarmonyImportDependency.js → esm/ESMImportDependency.js} +86 -68
- package/lib/dependencies/{HarmonyImportDependencyParserPlugin.js → esm/ESMImportDependencyParserPlugin.js} +104 -100
- package/lib/dependencies/{HarmonyImportGuard.js → esm/ESMImportGuard.js} +36 -51
- package/lib/dependencies/{HarmonyImportSideEffectDependency.js → esm/ESMImportSideEffectDependency.js} +83 -39
- package/lib/dependencies/{HarmonyImportSpecifierDependency.js → esm/ESMImportSpecifierDependency.js} +98 -60
- package/lib/dependencies/esm/ESMLiveExportDependency.js +311 -0
- package/lib/dependencies/esm/ESMLiveExportParserPlugin.js +862 -0
- package/lib/dependencies/esm/ESMModulesPlugin.js +205 -0
- package/lib/dependencies/{HarmonyTopLevelThisParserPlugin.js → esm/ESMTopLevelThisParserPlugin.js} +7 -7
- package/lib/dependencies/{TopLevelAwaitDependency.js → esm/TopLevelAwaitDependency.js} +12 -18
- package/lib/dependencies/{DynamicExports.js → helpers/DynamicExports.js} +5 -7
- package/lib/{util → dependencies/helpers}/chainedImports.js +5 -5
- package/lib/dependencies/{processExportInfo.js → helpers/processExportInfo.js} +4 -4
- package/lib/{util → dependencies/helpers}/traverseDestructuringAssignmentProperties.js +1 -1
- package/lib/dependencies/{ImportMetaHotAcceptDependency.js → hmr/ImportMetaHotAcceptDependency.js} +8 -7
- package/lib/dependencies/{ImportMetaHotDeclineDependency.js → hmr/ImportMetaHotDeclineDependency.js} +8 -7
- package/lib/dependencies/{ModuleHotAcceptDependency.js → hmr/ModuleHotAcceptDependency.js} +8 -7
- package/lib/dependencies/{ModuleHotDeclineDependency.js → hmr/ModuleHotDeclineDependency.js} +8 -7
- package/lib/dependencies/{HtmlEntryDependency.js → html/HtmlEntryDependency.js} +52 -151
- package/lib/dependencies/{HtmlInlineHtmlDependency.js → html/HtmlInlineHtmlDependency.js} +13 -15
- package/lib/dependencies/{HtmlInlineScriptDependency.js → html/HtmlInlineScriptDependency.js} +69 -23
- package/lib/dependencies/{HtmlInlineStyleDependency.js → html/HtmlInlineStyleDependency.js} +50 -18
- package/lib/dependencies/{HtmlSourceDependency.js → html/HtmlSourceDependency.js} +23 -16
- package/lib/dependencies/{ImportContextDependency.js → import/ImportContextDependency.js} +24 -10
- package/lib/dependencies/{ImportDependency.js → import/ImportDependency.js} +26 -18
- package/lib/dependencies/{ImportEagerDependency.js → import/ImportEagerDependency.js} +18 -10
- package/lib/dependencies/{ImportParserPlugin.js → import/ImportParserPlugin.js} +22 -25
- package/lib/dependencies/{ImportPlugin.js → import/ImportPlugin.js} +4 -4
- package/lib/dependencies/{ImportWeakDependency.js → import/ImportWeakDependency.js} +18 -10
- package/lib/dependencies/{importOptionsCheck.js → import/importOptionsCheck.js} +2 -2
- package/lib/dependencies/{BuildTimeConstDependency.js → import-meta/BuildTimeConstDependency.js} +12 -11
- package/lib/dependencies/{ImportMetaMainDependency.js → import-meta/ImportMetaMainDependency.js} +12 -11
- package/lib/dependencies/{ImportMetaPlugin.js → import-meta/ImportMetaPlugin.js} +122 -103
- package/lib/dependencies/{SystemPlugin.js → system/SystemPlugin.js} +11 -38
- package/lib/dependencies/{SystemRuntimeModule.js → system/SystemRuntimeModule.js} +3 -3
- package/lib/dependencies/{ImportMetaResolveDependency.js → url/ImportMetaResolveDependency.js} +9 -8
- package/lib/dependencies/{URLContextDependency.js → url/URLContextDependency.js} +11 -10
- package/lib/dependencies/{URLDependency.js → url/URLDependency.js} +28 -20
- package/lib/{url → dependencies/url}/URLParserPlugin.js +17 -19
- package/lib/dependencies/{URLPlugin.js → url/URLPlugin.js} +6 -7
- package/lib/dependencies/{WebAssemblyExportImportedDependency.js → wasm/WebAssemblyExportImportedDependency.js} +18 -11
- package/lib/dependencies/{WebAssemblyImportDependency.js → wasm/WebAssemblyImportDependency.js} +19 -12
- package/lib/dependencies/{CreateScriptUrlDependency.js → worker/CreateScriptUrlDependency.js} +12 -11
- package/lib/dependencies/{WorkerAndWorkletPlugin.js → worker/WorkerAndWorkletPlugin.js} +82 -53
- package/lib/dependencies/{WorkerDependency.js → worker/WorkerDependency.js} +22 -15
- package/lib/dependencies/{WorkletDependency.js → worker/WorkletDependency.js} +19 -18
- package/lib/{EvalDevToolModulePlugin.js → devtool/EvalDevToolModulePlugin.js} +20 -6
- package/lib/{EvalSourceMapDevToolPlugin.js → devtool/EvalSourceMapDevToolPlugin.js} +32 -24
- package/lib/devtool/ModuleFilenameHelpers.js +413 -0
- package/lib/{SourceMapDevToolModuleOptionsPlugin.js → devtool/SourceMapDevToolModuleOptionsPlugin.js} +10 -3
- package/lib/{SourceMapDevToolPlugin.js → devtool/SourceMapDevToolPlugin.js} +155 -27
- package/lib/{util → devtool}/generateDebugId.js +1 -1
- package/lib/{IgnoreWarningsPlugin.js → diagnostics/IgnoreWarningsPlugin.js} +2 -2
- package/lib/{NoEmitOnErrorsPlugin.js → diagnostics/NoEmitOnErrorsPlugin.js} +1 -1
- package/lib/diagnostics/WarnCaseSensitiveModulesPlugin.js +64 -0
- package/lib/{WarnDeprecatedOptionPlugin.js → diagnostics/WarnDeprecatedOptionPlugin.js} +2 -22
- package/lib/diagnostics/WarnNoModeSetPlugin.js +27 -0
- package/lib/dll/DelegatedModule.js +23 -21
- package/lib/dll/DelegatedModuleFactoryPlugin.js +2 -2
- package/lib/dll/DelegatedPlugin.js +1 -1
- package/lib/{dependencies → dll}/DelegatedSourceDependency.js +5 -4
- package/lib/{dependencies → dll}/DllEntryDependency.js +6 -5
- package/lib/dll/DllEntryPlugin.js +3 -3
- package/lib/dll/DllModule.js +14 -10
- package/lib/dll/DllModuleFactory.js +3 -3
- package/lib/dll/DllPlugin.js +18 -6
- package/lib/dll/DllReferencePlugin.js +103 -30
- package/lib/dll/LibManifestPlugin.js +9 -7
- package/lib/electron/ElectronTargetPlugin.js +2 -2
- package/lib/{DynamicEntryPlugin.js → entry/DynamicEntryPlugin.js} +3 -3
- package/lib/{dependencies → entry}/EntryDependency.js +11 -2
- package/lib/{EntryOptionPlugin.js → entry/EntryOptionPlugin.js} +6 -6
- package/lib/entry/EntryPlugin.js +75 -0
- package/lib/errors/AbstractMethodError.js +1 -1
- package/lib/{performance → errors}/AssetsOverSizeLimitWarning.js +2 -2
- package/lib/errors/AsyncDependencyToInitialChunkError.js +2 -2
- package/lib/errors/BuildCycleError.js +1 -1
- package/lib/{WarnCaseSensitiveModulesPlugin.js → errors/CaseSensitiveModulesWarning.js} +4 -56
- package/lib/errors/ChunkRenderError.js +1 -1
- package/lib/errors/CodeGenerationError.js +1 -1
- package/lib/errors/CommentCompilationWarning.js +1 -1
- package/lib/errors/ConflictingEntryExportsWarning.js +38 -0
- package/lib/{dependencies → errors}/CriticalDependencyWarning.js +4 -3
- package/lib/errors/DeprecatedOptionWarning.js +30 -0
- package/lib/errors/DllManifestError.js +26 -0
- package/lib/{performance → errors}/DuplicatePackagesWarning.js +6 -6
- package/lib/{dependencies/HarmonyLinkingError.js → errors/ESMLinkingError.js} +4 -4
- package/lib/{performance → errors}/EntrypointsOverSizeLimitWarning.js +2 -2
- package/lib/errors/EnvironmentNotSupportAsyncWarning.js +2 -2
- package/lib/{ErrorHelpers.js → errors/ErrorHelpers.js} +9 -6
- package/lib/errors/ExternalStarReexportError.js +2 -2
- package/lib/{library → errors}/FalseIIFEUmdWarning.js +1 -1
- package/lib/errors/HookWebpackError.js +6 -5
- package/lib/errors/IgnoreErrorModuleFactory.js +3 -3
- package/lib/errors/InvalidDependenciesModuleWarning.js +1 -1
- package/lib/errors/JSONParseError.js +4 -4
- package/lib/{optimize → errors}/MinMaxSizeWarning.js +1 -1
- package/lib/errors/ModuleBuildError.js +1 -1
- package/lib/errors/ModuleDependencyError.js +2 -2
- package/lib/errors/ModuleDependencyWarning.js +2 -2
- package/lib/errors/ModuleError.js +1 -1
- package/lib/errors/ModuleHashingError.js +1 -1
- package/lib/errors/ModuleNotFoundError.js +3 -3
- package/lib/errors/ModuleParseError.js +1 -1
- package/lib/errors/ModuleRestoreError.js +1 -1
- package/lib/errors/ModuleStoreError.js +1 -1
- package/lib/errors/ModuleWarning.js +1 -1
- package/lib/{performance → errors}/NoAsyncChunksWarning.js +1 -1
- package/lib/{WarnNoModeSetPlugin.js → errors/NoModeWarning.js} +2 -19
- package/lib/errors/NodeStuffInWebError.js +7 -2
- package/lib/errors/PathVariableError.js +31 -0
- package/lib/errors/RequireIncludeDeprecationWarning.js +40 -0
- package/lib/{performance → errors}/RuntimeInLargeChunkWarning.js +1 -1
- package/lib/errors/RuntimeModuleGenerationError.js +51 -0
- package/lib/errors/SSRManifestAutoPublicPathWarning.js +24 -0
- package/lib/errors/SystemImportDeprecationWarning.js +43 -0
- package/lib/errors/UnmergeableEntryExportsError.js +34 -0
- package/lib/errors/UnsupportedFeatureWarning.js +1 -1
- package/lib/{wasm-sync → errors}/UnsupportedWebAssemblyFeatureError.js +1 -1
- package/lib/{wasm-sync → errors}/WebAssemblyInInitialChunkError.js +7 -5
- package/lib/errors/WebpackError.js +13 -3
- package/lib/esm/ExportWebpackRequireRuntimeModule.js +2 -2
- package/lib/esm/ModuleChunkFormatPlugin.js +55 -20
- package/lib/esm/ModuleChunkLoadingPlugin.js +3 -3
- package/lib/esm/ModuleChunkLoadingRuntimeModule.js +8 -8
- package/lib/{ExternalModule.js → externals/ExternalModule.js} +90 -63
- package/lib/{ExternalModuleFactoryPlugin.js → externals/ExternalModuleFactoryPlugin.js} +42 -41
- package/lib/externals/ExternalsPlugin.js +99 -0
- package/lib/fs/FileSystemInfo.js +4642 -0
- package/lib/{util → fs}/fs.js +22 -9
- package/lib/{AsyncDependenciesBlock.js → graph/AsyncDependenciesBlock.js} +27 -4
- package/lib/graph/Chunk.js +985 -0
- package/lib/{ChunkGraph.js → graph/ChunkGraph.js} +192 -80
- package/lib/{ChunkGroup.js → graph/ChunkGroup.js} +11 -3
- package/lib/{DependenciesBlock.js → graph/DependenciesBlock.js} +16 -4
- package/lib/graph/Dependency.js +634 -0
- package/lib/graph/Entrypoint.js +136 -0
- package/lib/{ExportsInfo.js → graph/ExportsInfo.js} +131 -83
- package/lib/{HotUpdateChunk.js → graph/HotUpdateChunk.js} +8 -0
- package/lib/{ModuleGraph.js → graph/ModuleGraph.js} +44 -33
- package/lib/{ModuleGraphConnection.js → graph/ModuleGraphConnection.js} +2 -2
- package/lib/{buildChunkGraph.js → graph/buildChunkGraph.js} +169 -76
- package/lib/{util → graph}/findGraphRoots.js +15 -9
- package/lib/graph/isDependencyKind.js +23 -0
- package/lib/hmr/HotModuleReplacement.runtime.js +12 -11
- package/lib/{HotModuleReplacementPlugin.js → hmr/HotModuleReplacementPlugin.js} +51 -57
- package/lib/hmr/HotModuleReplacementRuntimeModule.js +3 -3
- package/lib/hmr/JavascriptHotModuleReplacement.runtime.js +25 -26
- package/lib/hmr/JavascriptHotModuleReplacementHelper.js +2 -2
- package/lib/hmr/LazyCompilationPlugin.js +32 -28
- package/lib/html/HtmlGenerator.js +132 -60
- package/lib/html/HtmlModule.js +16 -2
- package/lib/html/HtmlModulesPlugin.js +184 -87
- package/lib/html/HtmlParser.js +511 -160
- package/lib/html/builtinEmbeddedRenderer.js +70 -25
- package/lib/html/data.js +44 -22
- package/lib/html/htmlMinify.js +114 -41
- package/lib/html/syntax-parser.js +15795 -0
- package/lib/html/syntax-printer.js +1033 -0
- package/lib/html/syntax.js +37 -13952
- package/lib/html/xmlMinify.js +70 -0
- package/lib/ids/ChunkModuleIdRangePlugin.js +2 -2
- package/lib/ids/DeterministicModuleIdsPlugin.js +1 -1
- package/lib/ids/HashedModuleIdsPlugin.js +32 -5
- package/lib/ids/IdHelpers.js +4 -4
- package/lib/ids/NaturalChunkIdsPlugin.js +1 -1
- package/lib/ids/OccurrenceChunkIdsPlugin.js +6 -5
- package/lib/ids/OccurrenceModuleIdsPlugin.js +6 -5
- package/lib/{RecordIdsPlugin.js → ids/RecordIdsPlugin.js} +5 -5
- package/lib/ids/SyncModuleIdsPlugin.js +3 -3
- package/lib/{util → ids}/numberHash.js +1 -1
- package/lib/index.js +312 -105
- package/lib/{APIPlugin.js → javascript/APIPlugin.js} +31 -37
- package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +4 -5
- package/lib/javascript/BasicEvaluatedExpression.js +9 -9
- package/lib/javascript/ChunkHelpers.js +64 -4
- package/lib/javascript/CommonJsChunkFormatPlugin.js +5 -13
- package/lib/{CompatibilityPlugin.js → javascript/CompatibilityPlugin.js} +7 -7
- package/lib/{ConstPlugin.js → javascript/ConstPlugin.js} +75 -8
- package/lib/{ExportsInfoApiPlugin.js → javascript/ExportsInfoApiPlugin.js} +5 -5
- package/lib/{dependencies → javascript}/ExportsInfoDependency.js +10 -9
- package/lib/javascript/JavascriptGenerator.js +32 -27
- package/lib/{JavascriptMetaInfoPlugin.js → javascript/JavascriptMetaInfoPlugin.js} +8 -20
- package/lib/javascript/JavascriptModule.js +14 -3
- package/lib/javascript/JavascriptModulesPlugin.js +441 -214
- package/lib/javascript/JavascriptParser.js +318 -144
- package/lib/javascript/JavascriptParserHelpers.js +1 -1
- package/lib/javascript/MergedEntryExports.js +196 -0
- package/lib/javascript/ScopeAnalyzer.js +3924 -13
- package/lib/javascript/StartupHelpers.js +6 -6
- package/lib/{UseStrictPlugin.js → javascript/UseStrictPlugin.js} +13 -19
- package/lib/{dependencies → javascript}/WebpackIsIncludedDependency.js +10 -9
- package/lib/{WebpackIsIncludedPlugin.js → javascript/WebpackIsIncludedPlugin.js} +8 -8
- package/lib/javascript/data.js +533 -122
- package/lib/javascript/jsMinify.js +272 -0
- package/lib/javascript/regexp.js +67 -32
- package/lib/javascript/syntax-parser.js +19169 -0
- package/lib/javascript/syntax-printer-data.js +1099 -0
- package/lib/javascript/syntax-printer.js +53878 -0
- package/lib/javascript/syntax.js +20 -11274
- package/lib/json/JsonData.js +1 -1
- package/lib/{dependencies → json}/JsonExportsDependency.js +8 -7
- package/lib/json/JsonGenerator.js +24 -16
- package/lib/json/JsonModule.js +13 -2
- package/lib/json/JsonModulesPlugin.js +1 -1
- package/lib/json/JsonParser.js +11 -10
- package/lib/json/jsonMinify.js +69 -0
- package/lib/library/AbstractLibraryPlugin.js +28 -15
- package/lib/library/AmdLibraryPlugin.js +4 -4
- package/lib/library/AssignLibraryPlugin.js +28 -12
- package/lib/library/EnableLibraryPlugin.js +1 -1
- package/lib/library/ExportPropertyLibraryPlugin.js +4 -4
- package/lib/library/JsonpLibraryPlugin.js +2 -2
- package/lib/library/LibraryTemplatePlugin.js +53 -0
- package/lib/library/ModuleLibraryPlugin.js +557 -187
- package/lib/library/SystemLibraryPlugin.js +6 -8
- package/lib/library/UmdLibraryPlugin.js +3 -4
- package/lib/{dependencies → loaders}/LoaderDependency.js +3 -3
- package/lib/{dependencies → loaders}/LoaderImportDependency.js +9 -3
- package/lib/{LoaderOptionsPlugin.js → loaders/LoaderOptionsPlugin.js} +30 -12
- package/lib/{dependencies → loaders}/LoaderPlugin.js +2 -2
- package/lib/loaders/LoaderRunner.js +94 -46
- package/lib/{LoaderTargetPlugin.js → loaders/LoaderTargetPlugin.js} +2 -2
- package/lib/loaders/loadLoader.js +16 -10
- package/lib/logging/Logger.js +7 -9
- package/lib/logging/ProgressPlugin.js +957 -0
- package/lib/{CodeGenerationResults.js → module/CodeGenerationResults.js} +7 -7
- package/lib/{Generator.js → module/Generator.js} +33 -23
- package/lib/{Module.js → module/Module.js} +121 -53
- package/lib/{ModuleFactory.js → module/ModuleFactory.js} +3 -3
- package/lib/module/NormalModule.js +2350 -0
- package/lib/{NormalModuleFactory.js → module/NormalModuleFactory.js} +64 -71
- package/lib/module/NullFactory.js +29 -0
- package/lib/{Parser.js → module/Parser.js} +12 -5
- package/lib/module/RawModule.js +208 -0
- package/lib/{SelfModuleFactory.js → module/SelfModuleFactory.js} +1 -1
- package/lib/{util → module}/extractSourceMap.js +71 -20
- package/lib/{util → module}/findCaseMismatch.js +4 -4
- package/lib/node/CommonJsChunkLoadingPlugin.js +3 -3
- package/lib/{dependencies → node}/ExternalModuleDependency.js +8 -7
- package/lib/{dependencies → node}/ExternalModuleInitFragment.js +7 -6
- package/lib/{dependencies → node}/ExternalModuleInitFragmentDependency.js +14 -9
- package/lib/node/NodeEnvironmentPlugin.js +11 -1
- package/lib/{NodeStuffPlugin.js → node/NodeStuffPlugin.js} +17 -17
- package/lib/node/NodeTargetPlugin.js +1 -1
- package/lib/node/NodeWatchFileSystem.js +58 -6
- package/lib/node/ReadFileChunkLoadingRuntimeModule.js +7 -7
- package/lib/node/ReadFileCompileAsyncWasmPlugin.js +13 -19
- package/lib/node/ReadFileCompileWasmPlugin.js +9 -11
- package/lib/node/RequireChunkLoadingRuntimeModule.js +7 -7
- package/lib/node/nodeConsole.js +6 -7
- package/lib/optimize/AggressiveMergingPlugin.js +2 -2
- package/lib/optimize/AggressiveSplittingPlugin.js +12 -8
- package/lib/{CircularModulesPlugin.js → optimize/CircularModulesPlugin.js} +14 -14
- package/lib/optimize/ConcatenatedModule.js +231 -220
- package/lib/{ConcatenationScope.js → optimize/ConcatenationScope.js} +39 -6
- package/lib/optimize/ConstExportsPlugin.js +7 -7
- package/lib/optimize/EnsureChunkConditionsPlugin.js +3 -3
- package/lib/{FlagAllModulesAsUsedPlugin.js → optimize/FlagAllModulesAsUsedPlugin.js} +3 -3
- package/lib/{FlagDependencyExportsPlugin.js → optimize/FlagDependencyExportsPlugin.js} +23 -28
- package/lib/{FlagDependencyUsagePlugin.js → optimize/FlagDependencyUsagePlugin.js} +44 -19
- package/lib/{FlagEntryExportAsUsedPlugin.js → optimize/FlagEntryExportAsUsedPlugin.js} +2 -2
- package/lib/optimize/FlagIncludedChunksPlugin.js +2 -2
- package/lib/optimize/InlineExports.js +12 -7
- package/lib/optimize/InnerGraph.js +5 -13
- package/lib/optimize/InnerGraphPlugin.js +10 -10
- package/lib/optimize/LazyBarrels.js +620 -0
- package/lib/{util → optimize}/LazyBucketSortedSet.js +2 -2
- package/lib/optimize/LimitChunkCountPlugin.js +16 -7
- package/lib/optimize/MangleExportsPlugin.js +5 -5
- package/lib/optimize/MergeDuplicateChunksPlugin.js +7 -6
- package/lib/optimize/MinChunkSizePlugin.js +9 -6
- package/lib/optimize/ModuleConcatenationPlugin.js +28 -22
- package/lib/{dependencies → optimize}/PureExpressionDependency.js +11 -10
- package/lib/optimize/RealContentHashPlugin.js +18 -13
- package/lib/optimize/RemoveEmptyChunksPlugin.js +2 -2
- package/lib/optimize/RemoveParentModulesPlugin.js +4 -4
- package/lib/optimize/SideEffectsFlagPlugin.js +24 -38
- package/lib/optimize/SplitChunksPlugin.js +719 -174
- package/lib/{util → optimize}/TupleQueue.js +9 -9
- package/lib/optimize/chunkSetIntersections.js +437 -0
- package/lib/{util → optimize}/deterministicGrouping.js +17 -17
- package/lib/{BannerPlugin.js → output/BannerPlugin.js} +82 -14
- package/lib/{CleanPlugin.js → output/CleanPlugin.js} +69 -25
- package/lib/{CopyPlugin.js → output/CopyPlugin.js} +144 -70
- package/lib/{ManifestPlugin.js → output/ManifestPlugin.js} +91 -17
- package/lib/output/SSRManifestPlugin.js +349 -0
- package/lib/performance/AnalyzableBailoutsPlugin.js +1 -1
- package/lib/performance/AsyncChunkWaterfallsPlugin.js +1 -1
- package/lib/performance/BroadContextsPlugin.js +4 -4
- package/lib/performance/CacheEffectivenessPlugin.js +2 -3
- package/lib/performance/ConflictingResourceHintsPlugin.js +1 -1
- package/lib/performance/DuplicateModulesPlugin.js +3 -4
- package/lib/performance/DuplicatePackagesPlugin.js +3 -3
- package/lib/performance/DynamicExportsPlugin.js +2 -2
- package/lib/performance/EvalUsagePlugin.js +4 -6
- package/lib/performance/HotspotsPlugin.js +39 -14
- package/lib/performance/LargeModulesPlugin.js +2 -3
- package/lib/performance/LegacyJavascriptPlugin.js +1 -2
- package/lib/performance/MissingSideEffectsPlugin.js +2 -3
- package/lib/performance/MissingSourceMapsPlugin.js +5 -6
- package/lib/performance/PureAnnotationsPlugin.js +19 -13
- package/lib/performance/RedundantDynamicImportsPlugin.js +6 -8
- package/lib/performance/ScopeHoistingBailoutsPlugin.js +2 -2
- package/lib/performance/SizeLimitsPlugin.js +11 -12
- package/lib/performance/TopLevelThisPlugin.js +22 -13
- package/lib/performance/UnsplitVendorsPlugin.js +1 -2
- package/lib/performance/UnusedAliasesPlugin.js +6 -7
- package/lib/performance/UnusedAssetsPlugin.js +5 -5
- package/lib/performance/UnusedDefinesPlugin.js +2 -2
- package/lib/performance/UnusedExternalsPlugin.js +3 -4
- package/lib/performance/UnusedFederationPlugin.js +2 -4
- package/lib/performance/UnusedModulesPlugin.js +5 -4
- package/lib/performance/getModuleSize.js +1 -1
- package/lib/performance/hasOnlyUnusedExports.js +4 -4
- package/lib/performance/isOnlyReexported.js +7 -6
- package/lib/{AutomaticPrefetchPlugin.js → prefetch/AutomaticPrefetchPlugin.js} +4 -5
- package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +2 -2
- package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +1 -1
- package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +4 -4
- package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +4 -4
- package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +4 -4
- package/lib/{dependencies → prefetch}/PrefetchDependency.js +1 -1
- package/lib/{PrefetchPlugin.js → prefetch/PrefetchPlugin.js} +2 -2
- package/lib/prefetch/ResourceHintPlugin.js +66 -45
- package/lib/prefetch/ResourceHintRuntimeModule.js +3 -3
- package/lib/prefetch/StartupAssetHintRuntimeModule.js +3 -3
- package/lib/prefetch/parseResourceHintOptions.js +4 -3
- package/lib/{ProvidePlugin.js → provide/ProvidePlugin.js} +7 -7
- package/lib/{dependencies → provide}/ProvidedDependency.js +50 -17
- package/lib/{IgnorePlugin.js → resolve/IgnorePlugin.js} +30 -13
- package/lib/{NormalModuleReplacementPlugin.js → resolve/NormalModuleReplacementPlugin.js} +4 -4
- package/lib/{ResolverFactory.js → resolve/ResolverFactory.js} +18 -5
- package/lib/resolve/getResolveOptionsKey.js +59 -0
- package/lib/rules/BasicEffectRulePlugin.js +1 -1
- package/lib/rules/RuleSetCompiler.js +42 -51
- package/lib/rules/UseEffectRulePlugin.js +1 -3
- package/lib/runtime/AsyncModuleGeneratorRuntimeModule.js +2 -2
- package/lib/runtime/AsyncModuleRuntimeModule.js +14 -5
- package/lib/runtime/AutoPublicPathRuntimeModule.js +5 -5
- package/lib/runtime/BaseUriRuntimeModule.js +3 -3
- package/lib/runtime/ChunkNameRuntimeModule.js +2 -2
- package/lib/runtime/CompatGetDefaultExportRuntimeModule.js +2 -2
- package/lib/runtime/CompatRuntimeModule.js +4 -4
- package/lib/runtime/ConcatenationWrapRuntimeModule.js +2 -2
- package/lib/runtime/ConstructRequireRuntimeModule.js +2 -2
- package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +2 -2
- package/lib/runtime/CreateScriptRuntimeModule.js +2 -2
- package/lib/runtime/CreateScriptUrlRuntimeModule.js +2 -2
- package/lib/runtime/DefinePropertyGettersRuntimeModule.js +6 -6
- package/lib/runtime/EnsureChunkRuntimeModule.js +4 -4
- package/lib/runtime/GetChunkFilenameRuntimeModule.js +7 -11
- package/lib/runtime/GetFullHashRuntimeModule.js +2 -2
- package/lib/runtime/GetMainFilenameRuntimeModule.js +4 -4
- package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +3 -3
- package/lib/runtime/GetWorkletBootstrapRuntimeModule.js +3 -3
- package/lib/runtime/GlobalRuntimeModule.js +3 -3
- package/lib/runtime/HasOwnPropertyRuntimeModule.js +3 -3
- package/lib/runtime/HelperRuntimeModule.js +16 -1
- package/lib/runtime/LoadScriptRuntimeModule.js +3 -3
- package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +80 -17
- package/lib/runtime/MakeNamespaceObjectRuntimeModule.js +2 -2
- package/lib/runtime/NonceRuntimeModule.js +2 -2
- package/lib/runtime/OnChunksLoadedRuntimeModule.js +4 -4
- package/lib/runtime/PublicPathRuntimeModule.js +2 -2
- package/lib/runtime/RelativeUrlRuntimeModule.js +2 -2
- package/lib/{RuntimeGlobals.js → runtime/RuntimeGlobals.js} +24 -1
- package/lib/runtime/RuntimeIdRuntimeModule.js +4 -4
- package/lib/{RuntimeModule.js → runtime/RuntimeModule.js} +36 -21
- package/lib/{RuntimePlugin.js → runtime/RuntimePlugin.js} +50 -50
- package/lib/runtime/SetAnonymousDefaultNameRuntimeModule.js +2 -2
- package/lib/runtime/SpecNamespaceObjectRuntimeModule.js +2 -2
- package/lib/runtime/StartupChunkDependenciesPlugin.js +2 -2
- package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +5 -5
- package/lib/runtime/StartupEntrypointRuntimeModule.js +3 -3
- package/lib/runtime/SystemContextRuntimeModule.js +2 -2
- package/lib/runtime/ToBinaryRuntimeModule.js +3 -3
- package/lib/runtime/WorkerRuntimeModule.js +1 -1
- package/lib/runtime/baseUri.js +1 -1
- package/lib/schemes/DataUriPlugin.js +1 -1
- package/lib/schemes/HttpUriPlugin.js +68 -13
- package/lib/schemes/VirtualUrlPlugin.js +52 -16
- package/lib/serialization/AggregateErrorSerializer.js +4 -4
- package/lib/serialization/BinaryMiddleware.js +4 -1
- package/lib/serialization/ErrorObjectSerializer.js +2 -5
- package/lib/serialization/FileMiddleware.js +3 -3
- package/lib/serialization/ObjectMiddleware.js +62 -29
- package/lib/serialization/PlainObjectSerializer.js +3 -7
- package/lib/serialization/Serializer.js +21 -11
- package/lib/serialization/SerializerMiddleware.js +10 -8
- package/lib/serialization/SingleItemMiddleware.js +4 -2
- package/lib/sharing/ConsumeSharedFallbackDependency.js +9 -1
- package/lib/sharing/ConsumeSharedModule.js +18 -14
- package/lib/sharing/ConsumeSharedPlugin.js +148 -42
- package/lib/sharing/ConsumeSharedRuntimeModule.js +8 -8
- package/lib/sharing/ProvideForSharedDependency.js +9 -1
- package/lib/sharing/ProvideSharedDependency.js +1 -1
- package/lib/sharing/ProvideSharedModule.js +11 -9
- package/lib/sharing/ProvideSharedModuleFactory.js +2 -2
- package/lib/sharing/ProvideSharedPlugin.js +111 -20
- package/lib/sharing/SharePlugin.js +102 -9
- package/lib/sharing/ShareRuntimeModule.js +6 -6
- package/lib/sharing/resolveMatchedConfigs.js +1 -1
- package/lib/{util → sharing}/semver.js +14 -16
- package/lib/sharing/utils.js +59 -2
- package/lib/stats/DefaultStatsFactoryPlugin.js +57 -54
- package/lib/stats/DefaultStatsPresetPlugin.js +3 -7
- package/lib/stats/DefaultStatsPrinterPlugin.js +15 -14
- package/lib/{MultiStats.js → stats/MultiStats.js} +4 -4
- package/lib/{Stats.js → stats/Stats.js} +4 -4
- package/lib/stats/StatsFactory.js +208 -37
- package/lib/stats/StatsPrinter.js +126 -13
- package/lib/{ChunkTemplate.js → template/ChunkTemplate.js} +7 -7
- package/lib/{ConditionalInitFragment.js → template/ConditionalInitFragment.js} +3 -3
- package/lib/template/DependencyTemplate.js +77 -0
- package/lib/{DependencyTemplates.js → template/DependencyTemplates.js} +9 -4
- package/lib/template/InitFragment.js +223 -0
- package/lib/{MainTemplate.js → template/MainTemplate.js} +11 -11
- package/lib/{ModuleInfoHeaderPlugin.js → template/ModuleInfoHeaderPlugin.js} +30 -8
- package/lib/{ModuleTemplate.js → template/ModuleTemplate.js} +6 -6
- package/lib/{RuntimeTemplate.js → template/RuntimeTemplate.js} +158 -95
- package/lib/{Template.js → template/Template.js} +14 -12
- package/lib/{TemplatedPathPlugin.js → template/TemplatedPathPlugin.js} +19 -23
- package/lib/typescript/TypeScriptPlugin.js +3 -3
- package/lib/util/RequestShortener.js +44 -0
- package/lib/util/SortableSet.js +87 -22
- package/lib/util/SourceProcessor.js +439 -51
- package/lib/util/TupleSet.js +27 -27
- package/lib/util/WeakTupleMap.js +20 -16
- package/lib/util/buildDiagnostics.js +2 -2
- package/lib/util/cleverMerge.js +61 -33
- package/lib/util/comparators.js +19 -15
- package/lib/util/concatenate.js +28 -147
- package/lib/util/createMappings.js +111 -0
- package/lib/util/dataURL.js +96 -15
- package/lib/util/deprecation.js +5 -4
- package/lib/util/extractComments.js +118 -0
- package/lib/util/formatLocation.js +1 -1
- package/lib/util/globUtils.js +198 -20
- package/lib/util/haltVisitors.js +51 -0
- package/lib/util/handlerKeys.js +2 -2
- package/lib/util/identifier.js +117 -1
- package/lib/util/implicitTypeLoaderFallback.js +6 -4
- package/lib/util/internalSerializables.js +296 -102
- package/lib/util/magicComment.js +12 -7
- package/lib/util/makeSerializable.js +28 -7
- package/lib/util/memoize.js +1 -1
- package/lib/util/parseJson.js +2 -2
- package/lib/util/preloadModuleType.js +5 -2
- package/lib/util/registerExternalSerializer.js +2 -2
- package/lib/util/removeBOM.js +1 -1
- package/lib/util/runtime.js +1 -1
- package/lib/util/serialization.js +35 -28
- package/lib/util/source.js +2 -2
- package/lib/util/terminalColors.js +161 -0
- package/lib/{wasm-async → wasm}/AsyncWasmCompileRuntimeModule.js +5 -5
- package/lib/{wasm-async → wasm}/AsyncWasmLoadingRuntimeModule.js +5 -5
- package/lib/{wasm-async → wasm}/AsyncWasmModule.js +19 -5
- package/lib/{wasm-async → wasm}/AsyncWebAssemblyGenerator.js +17 -9
- package/lib/{wasm-async → wasm}/AsyncWebAssemblyJavascriptGenerator.js +24 -15
- package/lib/{wasm-async → wasm}/AsyncWebAssemblyModulesPlugin.js +26 -10
- package/lib/{wasm-async → wasm}/AsyncWebAssemblyParser.js +14 -12
- package/lib/wasm/EnableWasmLoadingPlugin.js +1 -1
- package/lib/{wasm-async → wasm}/UniversalCompileAsyncWasmPlugin.js +11 -13
- package/lib/wasm/wasmModuleFilename.js +2 -2
- package/lib/wasm-sync/SyncWasmModule.js +18 -3
- package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +8 -8
- package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +3 -3
- package/lib/wasm-sync/WebAssemblyGenerator.js +22 -16
- package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +28 -21
- package/lib/wasm-sync/WebAssemblyModulesPlugin.js +9 -7
- package/lib/wasm-sync/WebAssemblyParser.js +15 -17
- package/lib/wasm-sync/WebAssemblyUtils.js +6 -5
- package/lib/{MultiWatching.js → watch/MultiWatching.js} +3 -3
- package/lib/{WatchIgnorePlugin.js → watch/WatchIgnorePlugin.js} +43 -9
- package/lib/{Watching.js → watch/Watching.js} +8 -8
- package/lib/web/FetchCompileAsyncWasmPlugin.js +12 -18
- package/lib/web/FetchCompileWasmPlugin.js +8 -10
- package/lib/web/JsonpChunkLoadingPlugin.js +3 -3
- package/lib/web/JsonpChunkLoadingRuntimeModule.js +6 -6
- package/lib/web/JsonpTemplatePlugin.js +1 -1
- package/lib/webpack.js +27 -17
- package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +3 -3
- package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +6 -6
- package/package.json +57 -36
- package/schemas/WebpackOptions.check.js +4 -3
- package/schemas/WebpackOptions.d.json.ts +2 -0
- package/schemas/WebpackOptions.json +295 -75
- package/schemas/plugins/BannerPlugin.check.js +4 -3
- package/schemas/plugins/BannerPlugin.json +29 -2
- package/schemas/plugins/HtmlGeneratorOptions.check.js +4 -3
- package/schemas/plugins/HtmlParserOptions.check.js +4 -3
- package/schemas/plugins/IgnorePlugin.check.js +4 -3
- package/schemas/plugins/IgnorePlugin.d.json.ts +2 -0
- package/schemas/plugins/IgnorePlugin.json +1 -1
- package/schemas/plugins/LoaderOptionsPlugin.check.js +4 -3
- package/schemas/plugins/ManifestPlugin.check.js +4 -3
- package/schemas/plugins/ManifestPlugin.json +3 -3
- package/schemas/plugins/ProgressPlugin.check.js +4 -3
- package/schemas/plugins/ProgressPlugin.json +2 -7
- package/schemas/plugins/SSRManifestPlugin.check.js +7 -0
- package/schemas/plugins/SSRManifestPlugin.json +20 -0
- package/schemas/plugins/SourceMapDevToolPlugin.check.js +4 -3
- package/schemas/plugins/SourceMapDevToolPlugin.json +44 -12
- package/schemas/plugins/WatchIgnorePlugin.check.js +4 -3
- package/schemas/plugins/WatchIgnorePlugin.json +12 -3
- package/schemas/plugins/asset/AssetGeneratorOptions.check.js +4 -3
- package/schemas/plugins/asset/AssetInlineGeneratorOptions.check.js +4 -3
- package/schemas/plugins/asset/AssetParserOptions.check.js +4 -3
- package/schemas/plugins/asset/AssetResourceGeneratorOptions.check.js +4 -3
- package/schemas/plugins/container/ContainerPlugin.check.js +4 -3
- package/schemas/plugins/container/ContainerPlugin.json +8 -0
- package/schemas/plugins/container/ContainerReferencePlugin.check.js +4 -3
- package/schemas/plugins/container/ExternalsType.check.js +4 -3
- package/schemas/plugins/container/ModuleFederationPlugin.check.js +4 -3
- package/schemas/plugins/container/ModuleFederationPlugin.json +40 -0
- package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.js +4 -3
- package/schemas/plugins/css/CssGeneratorOptions.check.js +4 -3
- package/schemas/plugins/css/CssModuleGeneratorOptions.check.js +4 -3
- package/schemas/plugins/css/CssModuleParserOptions.check.js +4 -3
- package/schemas/plugins/css/CssParserOptions.check.js +4 -3
- package/schemas/plugins/debug/ProfilingPlugin.check.js +4 -3
- package/schemas/plugins/define/DotenvPluginOptions.check.js +7 -0
- package/schemas/plugins/define/DotenvPluginOptions.json +3 -0
- package/schemas/plugins/dll/DllPlugin.check.js +4 -3
- package/schemas/plugins/dll/DllReferencePlugin.check.js +4 -3
- package/schemas/plugins/dll/DllReferencePlugin.json +3 -18
- package/schemas/plugins/ids/HashedModuleIdsPlugin.check.js +4 -3
- package/schemas/plugins/ids/OccurrenceChunkIdsPlugin.check.js +4 -3
- package/schemas/plugins/ids/OccurrenceModuleIdsPlugin.check.js +4 -3
- package/schemas/plugins/json/JsonModulesPluginGenerator.check.js +4 -3
- package/schemas/plugins/json/JsonModulesPluginParser.check.js +4 -3
- package/schemas/plugins/optimize/AggressiveSplittingPlugin.check.js +4 -3
- package/schemas/plugins/optimize/LimitChunkCountPlugin.check.js +4 -3
- package/schemas/plugins/optimize/MergeDuplicateChunksPlugin.check.js +4 -3
- package/schemas/plugins/optimize/MinChunkSizePlugin.check.js +4 -3
- package/schemas/plugins/output/CleanOptions.check.js +7 -0
- package/schemas/plugins/output/CleanOptions.json +3 -0
- package/schemas/plugins/schemes/HttpUriPlugin.check.js +4 -3
- package/schemas/plugins/schemes/VirtualUrlPlugin.check.js +4 -3
- package/schemas/plugins/sharing/ConsumeSharedPlugin.check.js +4 -3
- package/schemas/plugins/sharing/ConsumeSharedPlugin.json +32 -0
- package/schemas/plugins/sharing/ProvideSharedPlugin.check.js +4 -3
- package/schemas/plugins/sharing/ProvideSharedPlugin.json +32 -0
- package/schemas/plugins/sharing/SharePlugin.check.js +4 -3
- package/schemas/plugins/sharing/SharePlugin.json +32 -0
- package/types.d.ts +20780 -14174
- package/lib/LazyBarrel.js +0 -388
- package/lib/dependencies/HarmonyAcceptImportDependency.js +0 -39
- package/lib/dependencies/HarmonyModulesPlugin.js +0 -192
- package/lib/javascript/ChunkFormatHelpers.js +0 -72
- package/lib/javascript/grammar.js +0 -5546
- package/lib/javascript/parser.js +0 -1500
- package/lib/javascript/regexpData.js +0 -51
- package/lib/performance/getSourceModules.js +0 -22
- package/lib/util/Semaphore.js +0 -65
- package/lib/util/objectToMap.js +0 -15
- package/schemas/WebpackOptions.check.d.ts +0 -7
- package/schemas/_container.json +0 -155
- package/schemas/_sharing.json +0 -118
- package/schemas/plugins/BannerPlugin.check.d.ts +0 -7
- package/schemas/plugins/HtmlGeneratorOptions.check.d.ts +0 -7
- package/schemas/plugins/HtmlParserOptions.check.d.ts +0 -7
- package/schemas/plugins/IgnorePlugin.check.d.ts +0 -7
- package/schemas/plugins/LoaderOptionsPlugin.check.d.ts +0 -7
- package/schemas/plugins/ManifestPlugin.check.d.ts +0 -7
- package/schemas/plugins/ProgressPlugin.check.d.ts +0 -7
- package/schemas/plugins/SourceMapDevToolPlugin.check.d.ts +0 -7
- package/schemas/plugins/WatchIgnorePlugin.check.d.ts +0 -7
- package/schemas/plugins/asset/AssetGeneratorOptions.check.d.ts +0 -7
- package/schemas/plugins/asset/AssetInlineGeneratorOptions.check.d.ts +0 -7
- package/schemas/plugins/asset/AssetParserOptions.check.d.ts +0 -7
- package/schemas/plugins/asset/AssetResourceGeneratorOptions.check.d.ts +0 -7
- package/schemas/plugins/container/ContainerPlugin.check.d.ts +0 -7
- package/schemas/plugins/container/ContainerReferencePlugin.check.d.ts +0 -7
- package/schemas/plugins/container/ExternalsType.check.d.ts +0 -7
- package/schemas/plugins/container/ModuleFederationPlugin.check.d.ts +0 -7
- package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.d.ts +0 -7
- package/schemas/plugins/css/CssGeneratorOptions.check.d.ts +0 -7
- package/schemas/plugins/css/CssModuleGeneratorOptions.check.d.ts +0 -7
- package/schemas/plugins/css/CssModuleParserOptions.check.d.ts +0 -7
- package/schemas/plugins/css/CssParserOptions.check.d.ts +0 -7
- package/schemas/plugins/debug/ProfilingPlugin.check.d.ts +0 -7
- package/schemas/plugins/dll/DllPlugin.check.d.ts +0 -7
- package/schemas/plugins/dll/DllReferencePlugin.check.d.ts +0 -7
- package/schemas/plugins/ids/HashedModuleIdsPlugin.check.d.ts +0 -7
- package/schemas/plugins/ids/OccurrenceChunkIdsPlugin.check.d.ts +0 -7
- package/schemas/plugins/ids/OccurrenceModuleIdsPlugin.check.d.ts +0 -7
- package/schemas/plugins/json/JsonModulesPluginGenerator.check.d.ts +0 -7
- package/schemas/plugins/json/JsonModulesPluginParser.check.d.ts +0 -7
- package/schemas/plugins/optimize/AggressiveSplittingPlugin.check.d.ts +0 -7
- package/schemas/plugins/optimize/LimitChunkCountPlugin.check.d.ts +0 -7
- package/schemas/plugins/optimize/MergeDuplicateChunksPlugin.check.d.ts +0 -7
- package/schemas/plugins/optimize/MinChunkSizePlugin.check.d.ts +0 -7
- package/schemas/plugins/schemes/HttpUriPlugin.check.d.ts +0 -7
- package/schemas/plugins/schemes/VirtualUrlPlugin.check.d.ts +0 -7
- package/schemas/plugins/sharing/ConsumeSharedPlugin.check.d.ts +0 -7
- package/schemas/plugins/sharing/ProvideSharedPlugin.check.d.ts +0 -7
- package/schemas/plugins/sharing/SharePlugin.check.d.ts +0 -7
- /package/lib/{validateSchema.js → config/validateSchema.js} +0 -0
- /package/lib/{util → css}/topologicalSort.js +0 -0
- /package/lib/dependencies/{getFunctionExpression.js → helpers/getFunctionExpression.js} +0 -0
- /package/lib/{util → externals}/extractUrlAndGlobal.js +0 -0
- /package/lib/{util → fs}/StackedCacheMap.js +0 -0
- /package/lib/{util → javascript}/StackedMap.js +0 -0
- /package/lib/{ModuleProfile.js → module/ModuleProfile.js} +0 -0
- /package/lib/{ModuleSourceTypeConstants.js → module/ModuleSourceTypeConstants.js} +0 -0
- /package/lib/{ModuleTypeConstants.js → module/ModuleTypeConstants.js} +0 -0
- /package/lib/{OptimizationStages.js → optimize/OptimizationStages.js} +0 -0
- /package/lib/{util → optimize}/Queue.js +0 -0
- /package/lib/{util → stats}/smartGrouping.js +0 -0
|
@@ -6,10 +6,9 @@
|
|
|
6
6
|
"use strict";
|
|
7
7
|
|
|
8
8
|
const { HookMap, SyncBailHook } = require("tapable");
|
|
9
|
-
const NormalModule = require("../NormalModule");
|
|
10
|
-
const Parser = require("../Parser");
|
|
11
9
|
const WebpackError = require("../WebpackError");
|
|
12
|
-
const
|
|
10
|
+
const Parser = require("../module/Parser");
|
|
11
|
+
const binarySearchBounds = require("../util/binarySearchBounds");
|
|
13
12
|
const {
|
|
14
13
|
CompilerHintNotationRegExp,
|
|
15
14
|
createMagicCommentContext,
|
|
@@ -17,7 +16,8 @@ const {
|
|
|
17
16
|
parseCommentOptionsInRange
|
|
18
17
|
} = require("../util/magicComment");
|
|
19
18
|
const BasicEvaluatedExpression = require("./BasicEvaluatedExpression");
|
|
20
|
-
const
|
|
19
|
+
const StackedMap = require("./StackedMap");
|
|
20
|
+
const { nonASCIIwhitespace } = require("./syntax-parser");
|
|
21
21
|
const {
|
|
22
22
|
BLOCK_DECLARATIONS,
|
|
23
23
|
HOISTED_DECLARATIONS,
|
|
@@ -31,9 +31,10 @@ const {
|
|
|
31
31
|
isIdentifierChar,
|
|
32
32
|
overflowFrom,
|
|
33
33
|
positionAt
|
|
34
|
-
} = require("./syntax");
|
|
34
|
+
} = require("./syntax-parser");
|
|
35
35
|
|
|
36
|
-
/** @import {
|
|
36
|
+
/** @import { BuiltJavascriptModule } from "./JavascriptModule" */
|
|
37
|
+
/** @import { EcmaVersion, ParserOptions, ParserPlugin } from "./syntax-parser" */
|
|
37
38
|
/**
|
|
38
39
|
* @import {
|
|
39
40
|
* AssignmentExpression,
|
|
@@ -108,38 +109,43 @@ const {
|
|
|
108
109
|
* MaybeNamedClassDeclaration
|
|
109
110
|
* } from "estree"
|
|
110
111
|
*/
|
|
111
|
-
/** @import { DependencyLocation } from "../Dependency" */
|
|
112
|
+
/** @import { DependencyLocation } from "../graph/Dependency" */
|
|
113
|
+
/** @import { MagicCommentOptions } from "../util/magicComment" */
|
|
112
114
|
/** @typedef {import("estree").Comment & { start: number, end: number, loc?: SourceLocation | null }} Comment */
|
|
113
115
|
/**
|
|
114
116
|
* Defines the shared type used by this module.
|
|
115
117
|
* @template T
|
|
116
118
|
* @typedef {import("tapable").AsArray<T>} AsArray<T>
|
|
117
119
|
*/
|
|
118
|
-
/** @import { ParserState, PreparsedAst } from "../Parser" */
|
|
120
|
+
/** @import { ParserState, PreparsedAst } from "../module/Parser" */
|
|
119
121
|
|
|
120
|
-
/** @import LocalModule from "../dependencies/LocalModule" */
|
|
122
|
+
/** @import LocalModule from "../dependencies/amd/LocalModule" */
|
|
121
123
|
/**
|
|
122
124
|
* @import {
|
|
123
|
-
*
|
|
124
|
-
* } from "../dependencies/
|
|
125
|
+
* ESMStarExportsList
|
|
126
|
+
* } from "../dependencies/esm/ESMExportImportedSpecifierDependency"
|
|
125
127
|
*/
|
|
126
128
|
|
|
127
129
|
/**
|
|
128
130
|
* Defines the known javascript parser state type used by this module.
|
|
131
|
+
* The `harmony*` properties forward to their `esm*` namesake.
|
|
129
132
|
* @typedef {object} KnownJavascriptParserState
|
|
130
|
-
* @property {Set<string>=}
|
|
131
|
-
* @property {InstanceType<
|
|
132
|
-
* @property {number=}
|
|
133
|
+
* @property {Set<string>=} esmNamedExports
|
|
134
|
+
* @property {InstanceType<ESMStarExportsList>=} esmStarExports
|
|
135
|
+
* @property {number=} lastESMImportOrder
|
|
133
136
|
* @property {LocalModule[]=} localModules
|
|
137
|
+
* @property {Set<string>=} harmonyNamedExports deprecated, use `esmNamedExports`
|
|
138
|
+
* @property {InstanceType<ESMStarExportsList>=} harmonyStarExports deprecated, use `esmStarExports`
|
|
139
|
+
* @property {number=} lastHarmonyImportOrder deprecated, use `lastESMImportOrder`
|
|
134
140
|
*/
|
|
135
141
|
|
|
136
|
-
/** @typedef {ParserState & KnownJavascriptParserState} JavascriptParserState */
|
|
142
|
+
/** @typedef {ParserState<BuiltJavascriptModule> & KnownJavascriptParserState} JavascriptParserState */
|
|
137
143
|
|
|
138
144
|
/** @import Compilation from "../Compilation" */
|
|
139
|
-
/** @import Module from "../Module" */
|
|
145
|
+
/** @import Module from "../module/Module" */
|
|
140
146
|
|
|
141
147
|
/** @typedef {{ name: string | VariableInfo, rootInfo: string | VariableInfo, getMembers: () => Members, getMembersOptionals: () => MembersOptionals, getMemberRanges: () => MemberRanges }} GetInfoResult */
|
|
142
|
-
/** @typedef {{ consequent?:
|
|
148
|
+
/** @typedef {{ consequent?: GuardFrame, alternate?: GuardFrame }} GuardCollection per-branch guard frames pushed onto the parser state guard stack */
|
|
143
149
|
/** @typedef {Statement | ModuleDeclaration | Expression | MaybeNamedFunctionDeclaration | MaybeNamedClassDeclaration} StatementPathItem */
|
|
144
150
|
/** @typedef {(ident: string) => void} OnIdentString */
|
|
145
151
|
/** @typedef {(ident: string, identifier: Identifier) => void} OnIdent */
|
|
@@ -176,6 +182,7 @@ const EMPTY_MODULE_DECLARATIONS = [];
|
|
|
176
182
|
// object pattern, so a tap on that type is not served from the list.
|
|
177
183
|
const BLOCK_DECLARATION_TYPES = new Set([
|
|
178
184
|
"VariableDeclaration",
|
|
185
|
+
"FunctionDeclaration",
|
|
179
186
|
"ClassDeclaration",
|
|
180
187
|
"ExportNamedDeclaration",
|
|
181
188
|
"ExportDefaultDeclaration"
|
|
@@ -273,7 +280,10 @@ const getImportAttributes = (node) => {
|
|
|
273
280
|
result[key] = /** @type {string} */ (attribute.value.value);
|
|
274
281
|
}
|
|
275
282
|
|
|
276
|
-
if (
|
|
283
|
+
if (
|
|
284
|
+
/** @type {typeof node.attributes & { [LEGACY_ASSERT_ATTRIBUTES]?: boolean }} */
|
|
285
|
+
(node.attributes)[LEGACY_ASSERT_ATTRIBUTES]
|
|
286
|
+
) {
|
|
277
287
|
result._isLegacyAssert = true;
|
|
278
288
|
}
|
|
279
289
|
|
|
@@ -365,20 +375,22 @@ class VariableInfo {
|
|
|
365
375
|
|
|
366
376
|
/**
|
|
367
377
|
* @import {
|
|
368
|
-
*
|
|
369
|
-
* } from "../dependencies/
|
|
378
|
+
* ESMSettings
|
|
379
|
+
* } from "../dependencies/esm/ESMImportDependencyParserPlugin"
|
|
370
380
|
*/
|
|
371
|
-
/** @import { ImportSettings } from "../dependencies/ImportParserPlugin" */
|
|
381
|
+
/** @import { ImportSettings } from "../dependencies/import/ImportParserPlugin" */
|
|
382
|
+
/** @import { GuardFrame } from "../dependencies/esm/ESMImportGuard" */
|
|
372
383
|
/**
|
|
373
384
|
* @import {
|
|
374
385
|
* CommonJsImportSettings
|
|
375
|
-
* } from "../dependencies/CommonJsImportsParserPlugin"
|
|
386
|
+
* } from "../dependencies/commonjs/CommonJsImportsParserPlugin"
|
|
376
387
|
*/
|
|
377
|
-
/** @import { CompatibilitySettings } from "
|
|
388
|
+
/** @import { CompatibilitySettings } from "./CompatibilityPlugin" */
|
|
378
389
|
/** @import { TopLevelSymbol } from "../optimize/InnerGraph" */
|
|
379
390
|
|
|
380
|
-
/** @typedef {
|
|
381
|
-
|
|
391
|
+
/** @typedef {ESMSettings | ImportSettings | CommonJsImportSettings | TopLevelSymbol | CompatibilitySettings} KnownTagData */
|
|
392
|
+
// The open branch is whatever a plugin tags a variable with.
|
|
393
|
+
/** @typedef {KnownTagData | EXPECTED_OBJECT} TagData */
|
|
382
394
|
|
|
383
395
|
/**
|
|
384
396
|
* Defines the tag info type used by this module.
|
|
@@ -554,123 +566,138 @@ const valueAsExpression = (value, expr, sideEffects) => {
|
|
|
554
566
|
};
|
|
555
567
|
|
|
556
568
|
// The constant operators, shared so evaluating `a - b` allocates no handler.
|
|
569
|
+
// JavaScript coerces any operand; each cast only lets TypeScript type the operator.
|
|
570
|
+
|
|
571
|
+
/** @typedef {ReturnType<BasicEvaluatedExpression["asCompileTimeValue"]>} CompileTimeValue */
|
|
557
572
|
|
|
558
573
|
/**
|
|
559
|
-
* @param {
|
|
560
|
-
* @param {
|
|
561
|
-
* @returns {
|
|
574
|
+
* @param {CompileTimeValue} l left operand
|
|
575
|
+
* @param {CompileTimeValue} r right operand
|
|
576
|
+
* @returns {number | bigint} the result
|
|
562
577
|
*/
|
|
563
|
-
const SUBTRACT = (l, r) =>
|
|
578
|
+
const SUBTRACT = (l, r) =>
|
|
579
|
+
/** @type {number} */ (l) - /** @type {number} */ (r);
|
|
564
580
|
|
|
565
581
|
/**
|
|
566
|
-
* @param {
|
|
567
|
-
* @param {
|
|
568
|
-
* @returns {
|
|
582
|
+
* @param {CompileTimeValue} l left operand
|
|
583
|
+
* @param {CompileTimeValue} r right operand
|
|
584
|
+
* @returns {number | bigint} the result
|
|
569
585
|
*/
|
|
570
|
-
const MULTIPLY = (l, r) =>
|
|
586
|
+
const MULTIPLY = (l, r) =>
|
|
587
|
+
/** @type {number} */ (l) * /** @type {number} */ (r);
|
|
571
588
|
|
|
572
589
|
/**
|
|
573
|
-
* @param {
|
|
574
|
-
* @param {
|
|
575
|
-
* @returns {
|
|
590
|
+
* @param {CompileTimeValue} l left operand
|
|
591
|
+
* @param {CompileTimeValue} r right operand
|
|
592
|
+
* @returns {number | bigint} the result
|
|
576
593
|
*/
|
|
577
|
-
const DIVIDE = (l, r) => l / r;
|
|
594
|
+
const DIVIDE = (l, r) => /** @type {number} */ (l) / /** @type {number} */ (r);
|
|
578
595
|
|
|
579
596
|
/**
|
|
580
|
-
* @param {
|
|
581
|
-
* @param {
|
|
582
|
-
* @returns {
|
|
597
|
+
* @param {CompileTimeValue} l left operand
|
|
598
|
+
* @param {CompileTimeValue} r right operand
|
|
599
|
+
* @returns {number | bigint} the result
|
|
583
600
|
*/
|
|
584
|
-
const POWER = (l, r) => l ** r;
|
|
601
|
+
const POWER = (l, r) => /** @type {number} */ (l) ** /** @type {number} */ (r);
|
|
585
602
|
|
|
586
603
|
/**
|
|
587
|
-
* @param {
|
|
588
|
-
* @param {
|
|
589
|
-
* @returns {
|
|
604
|
+
* @param {CompileTimeValue} l left operand
|
|
605
|
+
* @param {CompileTimeValue} r right operand
|
|
606
|
+
* @returns {number | bigint} the result
|
|
590
607
|
*/
|
|
591
|
-
const BITWISE_AND = (l, r) =>
|
|
608
|
+
const BITWISE_AND = (l, r) =>
|
|
609
|
+
/** @type {number} */ (l) & /** @type {number} */ (r);
|
|
592
610
|
|
|
593
611
|
/**
|
|
594
|
-
* @param {
|
|
595
|
-
* @param {
|
|
596
|
-
* @returns {
|
|
612
|
+
* @param {CompileTimeValue} l left operand
|
|
613
|
+
* @param {CompileTimeValue} r right operand
|
|
614
|
+
* @returns {number | bigint} the result
|
|
597
615
|
*/
|
|
598
|
-
const BITWISE_OR = (l, r) =>
|
|
616
|
+
const BITWISE_OR = (l, r) =>
|
|
617
|
+
/** @type {number} */ (l) | /** @type {number} */ (r);
|
|
599
618
|
|
|
600
619
|
/**
|
|
601
|
-
* @param {
|
|
602
|
-
* @param {
|
|
603
|
-
* @returns {
|
|
620
|
+
* @param {CompileTimeValue} l left operand
|
|
621
|
+
* @param {CompileTimeValue} r right operand
|
|
622
|
+
* @returns {number | bigint} the result
|
|
604
623
|
*/
|
|
605
|
-
const BITWISE_XOR = (l, r) =>
|
|
624
|
+
const BITWISE_XOR = (l, r) =>
|
|
625
|
+
/** @type {number} */ (l) ^ /** @type {number} */ (r);
|
|
606
626
|
|
|
607
627
|
/**
|
|
608
|
-
* @param {
|
|
609
|
-
* @param {
|
|
610
|
-
* @returns {
|
|
628
|
+
* @param {CompileTimeValue} l left operand
|
|
629
|
+
* @param {CompileTimeValue} r right operand
|
|
630
|
+
* @returns {number} the result
|
|
611
631
|
*/
|
|
612
|
-
const UNSIGNED_SHIFT_RIGHT = (l, r) =>
|
|
632
|
+
const UNSIGNED_SHIFT_RIGHT = (l, r) =>
|
|
633
|
+
/** @type {number} */ (l) >>> /** @type {number} */ (r);
|
|
613
634
|
|
|
614
635
|
/**
|
|
615
|
-
* @param {
|
|
616
|
-
* @param {
|
|
617
|
-
* @returns {
|
|
636
|
+
* @param {CompileTimeValue} l left operand
|
|
637
|
+
* @param {CompileTimeValue} r right operand
|
|
638
|
+
* @returns {number | bigint} the result
|
|
618
639
|
*/
|
|
619
|
-
const SHIFT_RIGHT = (l, r) =>
|
|
640
|
+
const SHIFT_RIGHT = (l, r) =>
|
|
641
|
+
/** @type {number} */ (l) >> /** @type {number} */ (r);
|
|
620
642
|
|
|
621
643
|
/**
|
|
622
|
-
* @param {
|
|
623
|
-
* @param {
|
|
624
|
-
* @returns {
|
|
644
|
+
* @param {CompileTimeValue} l left operand
|
|
645
|
+
* @param {CompileTimeValue} r right operand
|
|
646
|
+
* @returns {number | bigint} the result
|
|
625
647
|
*/
|
|
626
|
-
const SHIFT_LEFT = (l, r) =>
|
|
648
|
+
const SHIFT_LEFT = (l, r) =>
|
|
649
|
+
/** @type {number} */ (l) << /** @type {number} */ (r);
|
|
627
650
|
|
|
628
651
|
/**
|
|
629
|
-
* @param {
|
|
630
|
-
* @param {
|
|
631
|
-
* @returns {
|
|
652
|
+
* @param {CompileTimeValue} l left operand
|
|
653
|
+
* @param {CompileTimeValue} r right operand
|
|
654
|
+
* @returns {boolean} the result
|
|
632
655
|
*/
|
|
633
|
-
const LESS_THAN = (l, r) =>
|
|
656
|
+
const LESS_THAN = (l, r) =>
|
|
657
|
+
/** @type {number} */ (l) < /** @type {number} */ (r);
|
|
634
658
|
|
|
635
659
|
/**
|
|
636
|
-
* @param {
|
|
637
|
-
* @param {
|
|
638
|
-
* @returns {
|
|
660
|
+
* @param {CompileTimeValue} l left operand
|
|
661
|
+
* @param {CompileTimeValue} r right operand
|
|
662
|
+
* @returns {boolean} the result
|
|
639
663
|
*/
|
|
640
|
-
const GREATER_THAN = (l, r) =>
|
|
664
|
+
const GREATER_THAN = (l, r) =>
|
|
665
|
+
/** @type {number} */ (l) > /** @type {number} */ (r);
|
|
641
666
|
|
|
642
667
|
/**
|
|
643
|
-
* @param {
|
|
644
|
-
* @param {
|
|
645
|
-
* @returns {
|
|
668
|
+
* @param {CompileTimeValue} l left operand
|
|
669
|
+
* @param {CompileTimeValue} r right operand
|
|
670
|
+
* @returns {boolean} the result
|
|
646
671
|
*/
|
|
647
|
-
const LESS_THAN_OR_EQUAL = (l, r) =>
|
|
672
|
+
const LESS_THAN_OR_EQUAL = (l, r) =>
|
|
673
|
+
/** @type {number} */ (l) <= /** @type {number} */ (r);
|
|
648
674
|
|
|
649
675
|
/**
|
|
650
|
-
* @param {
|
|
651
|
-
* @param {
|
|
652
|
-
* @returns {
|
|
676
|
+
* @param {CompileTimeValue} l left operand
|
|
677
|
+
* @param {CompileTimeValue} r right operand
|
|
678
|
+
* @returns {boolean} the result
|
|
653
679
|
*/
|
|
654
|
-
const GREATER_THAN_OR_EQUAL = (l, r) =>
|
|
680
|
+
const GREATER_THAN_OR_EQUAL = (l, r) =>
|
|
681
|
+
/** @type {number} */ (l) >= /** @type {number} */ (r);
|
|
655
682
|
|
|
656
683
|
/**
|
|
657
|
-
* @param {
|
|
658
|
-
* @returns {
|
|
684
|
+
* @param {CompileTimeValue} v operand
|
|
685
|
+
* @returns {number | bigint} the result
|
|
659
686
|
*/
|
|
660
|
-
const BITWISE_NOT = (v) => ~v;
|
|
687
|
+
const BITWISE_NOT = (v) => ~(/** @type {number} */ (v));
|
|
661
688
|
|
|
662
689
|
/**
|
|
663
|
-
* @param {
|
|
664
|
-
* @returns {
|
|
690
|
+
* @param {CompileTimeValue} v operand
|
|
691
|
+
* @returns {number} the result
|
|
665
692
|
*/
|
|
666
693
|
// eslint-disable-next-line no-implicit-coercion
|
|
667
|
-
const TO_NUMBER = (v) => +v;
|
|
694
|
+
const TO_NUMBER = (v) => +(/** @type {number} */ (v));
|
|
668
695
|
|
|
669
696
|
/**
|
|
670
|
-
* @param {
|
|
671
|
-
* @returns {
|
|
697
|
+
* @param {CompileTimeValue} v operand
|
|
698
|
+
* @returns {number | bigint} the result
|
|
672
699
|
*/
|
|
673
|
-
const NEGATE = (v) => -v;
|
|
700
|
+
const NEGATE = (v) => -(/** @type {number} */ (v));
|
|
674
701
|
|
|
675
702
|
/**
|
|
676
703
|
* Evaluates a binary expression if and only if it is a const operation (e.g. 1 + 2, "a" + "b", etc.).
|
|
@@ -1061,7 +1088,9 @@ const collectHoistedDeclaration = (statement, hoisted) => {
|
|
|
1061
1088
|
*/
|
|
1062
1089
|
const moduleDeclarationsOf = (ast, trusted) => {
|
|
1063
1090
|
if (trusted) {
|
|
1064
|
-
const recorded =
|
|
1091
|
+
const recorded =
|
|
1092
|
+
/** @type {Program & { [MODULE_DECLARATIONS]?: ModuleDeclarations }} */
|
|
1093
|
+
(ast)[MODULE_DECLARATIONS];
|
|
1065
1094
|
if (recorded !== undefined) return recorded;
|
|
1066
1095
|
}
|
|
1067
1096
|
/** @type {ModuleDeclarations} */
|
|
@@ -1086,12 +1115,43 @@ const moduleDeclarationsOf = (ast, trusted) => {
|
|
|
1086
1115
|
*/
|
|
1087
1116
|
const hoistedDeclarationsOf = (node, trusted) => {
|
|
1088
1117
|
if (trusted) {
|
|
1089
|
-
const recorded =
|
|
1118
|
+
const recorded =
|
|
1119
|
+
/** @type {(Program | BlockStatement) & { [HOISTED_DECLARATIONS]?: HoistedDeclarations }} */
|
|
1120
|
+
(node)[HOISTED_DECLARATIONS];
|
|
1090
1121
|
if (recorded !== undefined) return recorded;
|
|
1091
1122
|
}
|
|
1092
1123
|
return collectHoistedDeclarations(node.body, EMPTY_HOISTED_DECLARATIONS);
|
|
1093
1124
|
};
|
|
1094
1125
|
|
|
1126
|
+
/**
|
|
1127
|
+
* Whether a statement is one of the list's own, or the declaration of an
|
|
1128
|
+
* `export` that is, rather than nested in one of them. It is found by its start
|
|
1129
|
+
* offset since the list is in source order.
|
|
1130
|
+
* @param {(Statement | ModuleDeclaration)[]} statements the list
|
|
1131
|
+
* @param {Statement | ModuleDeclaration | MaybeNamedFunctionDeclaration} statement the statement to find
|
|
1132
|
+
* @returns {boolean} whether the list holds it directly
|
|
1133
|
+
*/
|
|
1134
|
+
const holdsStatement = (statements, statement) => {
|
|
1135
|
+
const start = /** @type {Range} */ (statement.range)[0];
|
|
1136
|
+
let low = 0;
|
|
1137
|
+
let high = statements.length - 1;
|
|
1138
|
+
while (low <= high) {
|
|
1139
|
+
const middle = (low + high) >>> 1;
|
|
1140
|
+
const candidate = statements[middle];
|
|
1141
|
+
if (candidate === statement) return true;
|
|
1142
|
+
if (/** @type {Range} */ (candidate.range)[0] < start) low = middle + 1;
|
|
1143
|
+
else high = middle - 1;
|
|
1144
|
+
}
|
|
1145
|
+
// the last statement starting before it is the one that could hold it
|
|
1146
|
+
const holder = high >= 0 ? statements[high] : undefined;
|
|
1147
|
+
return (
|
|
1148
|
+
holder !== undefined &&
|
|
1149
|
+
(holder.type === "ExportNamedDeclaration" ||
|
|
1150
|
+
holder.type === "ExportDefaultDeclaration") &&
|
|
1151
|
+
holder.declaration === statement
|
|
1152
|
+
);
|
|
1153
|
+
};
|
|
1154
|
+
|
|
1095
1155
|
/**
|
|
1096
1156
|
* Which statements of a list declare into its block scope, scanned for an AST
|
|
1097
1157
|
* some other parser built. The parser's own record is read instead when there
|
|
@@ -1112,6 +1172,14 @@ const collectBlockDeclarations = (statements) => {
|
|
|
1112
1172
|
return overflow === undefined ? mask : overflow;
|
|
1113
1173
|
};
|
|
1114
1174
|
|
|
1175
|
+
/**
|
|
1176
|
+
* @param {Comment} comment comment to compare
|
|
1177
|
+
* @param {number} position source offset
|
|
1178
|
+
* @returns {number} comparison of the comment end with the offset
|
|
1179
|
+
*/
|
|
1180
|
+
const compareCommentEnd = (comment, position) =>
|
|
1181
|
+
/** @type {Range} */ (comment.range)[1] - position;
|
|
1182
|
+
|
|
1115
1183
|
/**
|
|
1116
1184
|
* Whether the source between two offsets is whitespace only.
|
|
1117
1185
|
* @param {string} source the module source
|
|
@@ -1157,6 +1225,9 @@ const STRICT_MODE_OUTPUT_REASON =
|
|
|
1157
1225
|
const MODULE_GOAL_OUTPUT_REASON =
|
|
1158
1226
|
'The output is an ES module, where "await" is a reserved word.';
|
|
1159
1227
|
|
|
1228
|
+
/**
|
|
1229
|
+
* @extends {Parser<BuiltJavascriptModule>}
|
|
1230
|
+
*/
|
|
1160
1231
|
class JavascriptParser extends Parser {
|
|
1161
1232
|
/**
|
|
1162
1233
|
* Creates an instance of JavascriptParser.
|
|
@@ -1202,13 +1273,13 @@ class JavascriptParser extends Parser {
|
|
|
1202
1273
|
* Every statement the hoisting pass reads, which a tap on this turns
|
|
1203
1274
|
* back into a walk of them all. Tap `preStatementByType` instead.
|
|
1204
1275
|
* @type {SyncBailHook<[Statement | ModuleDeclaration | MaybeNamedClassDeclaration | MaybeNamedFunctionDeclaration], boolean | void>}
|
|
1205
|
-
* @deprecated TODO
|
|
1276
|
+
* @deprecated TODO in the next major release: remove, with the statement walk it turns on
|
|
1206
1277
|
*/
|
|
1207
1278
|
preStatement: new SyncBailHook(["statement"]),
|
|
1208
1279
|
/**
|
|
1209
1280
|
* Each declaration the parser records: a variable, function or class
|
|
1210
1281
|
* one. Any other type turns the pass back into a walk of every
|
|
1211
|
-
* statement, and goes away with that walk in
|
|
1282
|
+
* statement, and goes away with that walk in the next major release.
|
|
1212
1283
|
* @type {HookMap<SyncBailHook<[Statement | ModuleDeclaration | MaybeNamedClassDeclaration | MaybeNamedFunctionDeclaration], boolean | void>>}
|
|
1213
1284
|
* @since 5.109.0
|
|
1214
1285
|
*/
|
|
@@ -1218,13 +1289,13 @@ class JavascriptParser extends Parser {
|
|
|
1218
1289
|
* Every statement the block pass reads, which a tap on this turns back
|
|
1219
1290
|
* into a walk of them all. Tap `blockPreStatementByType` instead.
|
|
1220
1291
|
* @type {SyncBailHook<[Statement | ModuleDeclaration | MaybeNamedClassDeclaration | MaybeNamedFunctionDeclaration], boolean | void>}
|
|
1221
|
-
* @deprecated TODO
|
|
1292
|
+
* @deprecated TODO in the next major release: remove, with the statement walk it turns on
|
|
1222
1293
|
*/
|
|
1223
1294
|
blockPreStatement: new SyncBailHook(["declaration"]),
|
|
1224
1295
|
/**
|
|
1225
1296
|
* Each statement the parser records for the block pass: a variable, class
|
|
1226
1297
|
* or export declaration. Any other type turns the pass back into a walk
|
|
1227
|
-
* of every statement, and goes away with that walk in
|
|
1298
|
+
* of every statement, and goes away with that walk in the next major release.
|
|
1228
1299
|
* @type {HookMap<SyncBailHook<[Statement | ModuleDeclaration | MaybeNamedClassDeclaration | MaybeNamedFunctionDeclaration], boolean | void>>}
|
|
1229
1300
|
* @since 5.109.0
|
|
1230
1301
|
*/
|
|
@@ -1423,9 +1494,13 @@ class JavascriptParser extends Parser {
|
|
|
1423
1494
|
this.options = options;
|
|
1424
1495
|
|
|
1425
1496
|
/** @type {ScopeInfo} */
|
|
1426
|
-
this.scope = /** @type {
|
|
1497
|
+
this.scope = /** @type {ScopeInfo} */ (
|
|
1498
|
+
/** @type {ScopeInfo | undefined} */ (undefined)
|
|
1499
|
+
);
|
|
1427
1500
|
/** @type {JavascriptParserState} */
|
|
1428
|
-
this.state = /** @type {
|
|
1501
|
+
this.state = /** @type {JavascriptParserState} */ (
|
|
1502
|
+
/** @type {JavascriptParserState | undefined} */ (undefined)
|
|
1503
|
+
);
|
|
1429
1504
|
/** @type {Comment[] | undefined} */
|
|
1430
1505
|
this.comments = undefined;
|
|
1431
1506
|
// ASI overrides keyed by statement-end offset: true forces an ASI
|
|
@@ -1439,6 +1514,9 @@ class JavascriptParser extends Parser {
|
|
|
1439
1514
|
this.prevStatement = undefined;
|
|
1440
1515
|
/** @type {boolean} */
|
|
1441
1516
|
this._hasParserRecord = false;
|
|
1517
|
+
// the statements of the scope last hoisted into, which its block pass reads next
|
|
1518
|
+
/** @type {(Statement | ModuleDeclaration)[] | undefined} */
|
|
1519
|
+
this._scopeStatements = undefined;
|
|
1442
1520
|
// BACKWARD-COMPAT START
|
|
1443
1521
|
|
|
1444
1522
|
// WHY: the hoisting pass reaches declarations alone, so a tap that
|
|
@@ -2102,7 +2180,7 @@ class JavascriptParser extends Parser {
|
|
|
2102
2180
|
const info = this.getVariableInfo(/** @type {Identifier} */ (expr).name);
|
|
2103
2181
|
if (
|
|
2104
2182
|
typeof info === "string" ||
|
|
2105
|
-
(info
|
|
2183
|
+
(JavascriptParser.isVariableInfo(info) &&
|
|
2106
2184
|
(info.isFree() ||
|
|
2107
2185
|
info.isTagged() ||
|
|
2108
2186
|
// Walk `tagInfo` in `callHooksForInfo` if tagInfo is present.
|
|
@@ -2121,7 +2199,8 @@ class JavascriptParser extends Parser {
|
|
|
2121
2199
|
const info = this.getVariableInfo("this");
|
|
2122
2200
|
if (
|
|
2123
2201
|
typeof info === "string" ||
|
|
2124
|
-
(
|
|
2202
|
+
(JavascriptParser.isVariableInfo(info) &&
|
|
2203
|
+
(info.isFree() || info.isTagged()))
|
|
2125
2204
|
) {
|
|
2126
2205
|
return {
|
|
2127
2206
|
name: info,
|
|
@@ -2683,6 +2762,7 @@ class JavascriptParser extends Parser {
|
|
|
2683
2762
|
* @param {Program | BlockStatement} node the node owning the scope
|
|
2684
2763
|
*/
|
|
2685
2764
|
_preWalkScope(node) {
|
|
2765
|
+
this._scopeStatements = node.body;
|
|
2686
2766
|
// BACKWARD-COMPAT START
|
|
2687
2767
|
if (this._needsFullPreWalk || this.hooks.preStatement.taps.length !== 0) {
|
|
2688
2768
|
if (node.type === "Program") this.preWalkStatements(node.body);
|
|
@@ -2710,12 +2790,31 @@ class JavascriptParser extends Parser {
|
|
|
2710
2790
|
}
|
|
2711
2791
|
}
|
|
2712
2792
|
|
|
2793
|
+
/**
|
|
2794
|
+
* Whether a function declaration stays in its block rather than hoisting to
|
|
2795
|
+
* the scope last pre-walked, which only sloppy-mode Annex B lets it do.
|
|
2796
|
+
* @param {FunctionDeclaration | MaybeNamedFunctionDeclaration} statement function declaration
|
|
2797
|
+
* @returns {boolean} whether its block, not the scope, binds it
|
|
2798
|
+
*/
|
|
2799
|
+
_isBlockScopedFunction(statement) {
|
|
2800
|
+
const statements = this._scopeStatements;
|
|
2801
|
+
// WHY: strictness is read here, not in the parser: `javascript/auto`
|
|
2802
|
+
// reads a script as a strict module first.
|
|
2803
|
+
return (
|
|
2804
|
+
statements !== undefined &&
|
|
2805
|
+
(this.scope.isStrict ||
|
|
2806
|
+
statement.generator === true ||
|
|
2807
|
+
statement.async === true) &&
|
|
2808
|
+
!holdsStatement(statements, statement)
|
|
2809
|
+
);
|
|
2810
|
+
}
|
|
2811
|
+
|
|
2713
2812
|
// BACKWARD-COMPAT START
|
|
2714
2813
|
/**
|
|
2715
2814
|
* Walk every statement of a scope to declare what hoists to it. Only a tap
|
|
2716
2815
|
* on the deprecated `preStatement` hook asks for this.
|
|
2717
2816
|
* @param {(Statement | ModuleDeclaration)[]} statements statements
|
|
2718
|
-
* @deprecated TODO
|
|
2817
|
+
* @deprecated TODO in the next major release: remove, with the `preStatement` hook
|
|
2719
2818
|
*/
|
|
2720
2819
|
preWalkStatements(statements) {
|
|
2721
2820
|
for (let index = 0, len = statements.length; index < len; index++) {
|
|
@@ -2726,7 +2825,7 @@ class JavascriptParser extends Parser {
|
|
|
2726
2825
|
/**
|
|
2727
2826
|
* Pre walk block statement.
|
|
2728
2827
|
* @param {BlockStatement} statement block statement
|
|
2729
|
-
* @deprecated TODO
|
|
2828
|
+
* @deprecated TODO in the next major release: remove, with the `preStatement` hook
|
|
2730
2829
|
*/
|
|
2731
2830
|
preWalkBlockStatement(statement) {
|
|
2732
2831
|
this.preWalkStatements(statement.body);
|
|
@@ -2735,7 +2834,7 @@ class JavascriptParser extends Parser {
|
|
|
2735
2834
|
/**
|
|
2736
2835
|
* Pre walk if statement.
|
|
2737
2836
|
* @param {IfStatement} statement if statement
|
|
2738
|
-
* @deprecated TODO
|
|
2837
|
+
* @deprecated TODO in the next major release: remove, with the `preStatement` hook
|
|
2739
2838
|
*/
|
|
2740
2839
|
preWalkIfStatement(statement) {
|
|
2741
2840
|
this.preWalkStatement(statement.consequent);
|
|
@@ -2747,7 +2846,7 @@ class JavascriptParser extends Parser {
|
|
|
2747
2846
|
/**
|
|
2748
2847
|
* Pre walk labeled statement.
|
|
2749
2848
|
* @param {LabeledStatement} statement labeled statement
|
|
2750
|
-
* @deprecated TODO
|
|
2849
|
+
* @deprecated TODO in the next major release: remove, with the `preStatement` hook
|
|
2751
2850
|
*/
|
|
2752
2851
|
preWalkLabeledStatement(statement) {
|
|
2753
2852
|
this.preWalkStatement(statement.body);
|
|
@@ -2756,7 +2855,7 @@ class JavascriptParser extends Parser {
|
|
|
2756
2855
|
/**
|
|
2757
2856
|
* Pre walk with statement.
|
|
2758
2857
|
* @param {WithStatement} statement with statement
|
|
2759
|
-
* @deprecated TODO
|
|
2858
|
+
* @deprecated TODO in the next major release: remove, with the `preStatement` hook
|
|
2760
2859
|
*/
|
|
2761
2860
|
preWalkWithStatement(statement) {
|
|
2762
2861
|
this.preWalkStatement(statement.body);
|
|
@@ -2765,7 +2864,7 @@ class JavascriptParser extends Parser {
|
|
|
2765
2864
|
/**
|
|
2766
2865
|
* Pre walk switch statement.
|
|
2767
2866
|
* @param {SwitchStatement} statement switch statement
|
|
2768
|
-
* @deprecated TODO
|
|
2867
|
+
* @deprecated TODO in the next major release: remove, with the `preStatement` hook
|
|
2769
2868
|
*/
|
|
2770
2869
|
preWalkSwitchStatement(statement) {
|
|
2771
2870
|
this.preWalkSwitchCases(statement.cases);
|
|
@@ -2774,7 +2873,7 @@ class JavascriptParser extends Parser {
|
|
|
2774
2873
|
/**
|
|
2775
2874
|
* Pre walk switch cases.
|
|
2776
2875
|
* @param {SwitchCase[]} switchCases switch cases
|
|
2777
|
-
* @deprecated TODO
|
|
2876
|
+
* @deprecated TODO in the next major release: remove, with the `preStatement` hook
|
|
2778
2877
|
*/
|
|
2779
2878
|
preWalkSwitchCases(switchCases) {
|
|
2780
2879
|
for (let index = 0, len = switchCases.length; index < len; index++) {
|
|
@@ -2785,7 +2884,7 @@ class JavascriptParser extends Parser {
|
|
|
2785
2884
|
/**
|
|
2786
2885
|
* Pre walk try statement.
|
|
2787
2886
|
* @param {TryStatement} statement try statement
|
|
2788
|
-
* @deprecated TODO
|
|
2887
|
+
* @deprecated TODO in the next major release: remove, with the `preStatement` hook
|
|
2789
2888
|
*/
|
|
2790
2889
|
preWalkTryStatement(statement) {
|
|
2791
2890
|
this.preWalkStatement(statement.block);
|
|
@@ -2796,7 +2895,7 @@ class JavascriptParser extends Parser {
|
|
|
2796
2895
|
/**
|
|
2797
2896
|
* Pre walk catch clause.
|
|
2798
2897
|
* @param {CatchClause} catchClause catch clause
|
|
2799
|
-
* @deprecated TODO
|
|
2898
|
+
* @deprecated TODO in the next major release: remove, with the `preStatement` hook
|
|
2800
2899
|
*/
|
|
2801
2900
|
preWalkCatchClause(catchClause) {
|
|
2802
2901
|
this.preWalkStatement(catchClause.body);
|
|
@@ -2805,7 +2904,7 @@ class JavascriptParser extends Parser {
|
|
|
2805
2904
|
/**
|
|
2806
2905
|
* Pre walk while statement.
|
|
2807
2906
|
* @param {WhileStatement} statement while statement
|
|
2808
|
-
* @deprecated TODO
|
|
2907
|
+
* @deprecated TODO in the next major release: remove, with the `preStatement` hook
|
|
2809
2908
|
*/
|
|
2810
2909
|
preWalkWhileStatement(statement) {
|
|
2811
2910
|
this.preWalkStatement(statement.body);
|
|
@@ -2814,7 +2913,7 @@ class JavascriptParser extends Parser {
|
|
|
2814
2913
|
/**
|
|
2815
2914
|
* Pre walk do while statement.
|
|
2816
2915
|
* @param {DoWhileStatement} statement do while statement
|
|
2817
|
-
* @deprecated TODO
|
|
2916
|
+
* @deprecated TODO in the next major release: remove, with the `preStatement` hook
|
|
2818
2917
|
*/
|
|
2819
2918
|
preWalkDoWhileStatement(statement) {
|
|
2820
2919
|
this.preWalkStatement(statement.body);
|
|
@@ -2823,7 +2922,7 @@ class JavascriptParser extends Parser {
|
|
|
2823
2922
|
/**
|
|
2824
2923
|
* Pre walk for statement.
|
|
2825
2924
|
* @param {ForStatement} statement for statement
|
|
2826
|
-
* @deprecated TODO
|
|
2925
|
+
* @deprecated TODO in the next major release: remove, with the `preStatement` hook
|
|
2827
2926
|
*/
|
|
2828
2927
|
preWalkForStatement(statement) {
|
|
2829
2928
|
if (statement.init && statement.init.type === "VariableDeclaration") {
|
|
@@ -2835,7 +2934,7 @@ class JavascriptParser extends Parser {
|
|
|
2835
2934
|
/**
|
|
2836
2935
|
* Pre walk for in statement.
|
|
2837
2936
|
* @param {ForInStatement} statement for in statement
|
|
2838
|
-
* @deprecated TODO
|
|
2937
|
+
* @deprecated TODO in the next major release: remove, with the `preStatement` hook
|
|
2839
2938
|
*/
|
|
2840
2939
|
preWalkForInStatement(statement) {
|
|
2841
2940
|
if (statement.left.type === "VariableDeclaration") {
|
|
@@ -2847,7 +2946,7 @@ class JavascriptParser extends Parser {
|
|
|
2847
2946
|
/**
|
|
2848
2947
|
* Pre walk for of statement. `for await` is reported by the walk, not here.
|
|
2849
2948
|
* @param {ForOfStatement} statement for of statement
|
|
2850
|
-
* @deprecated TODO
|
|
2949
|
+
* @deprecated TODO in the next major release: remove, with the `preStatement` hook
|
|
2851
2950
|
*/
|
|
2852
2951
|
preWalkForOfStatement(statement) {
|
|
2853
2952
|
if (statement.left.type === "VariableDeclaration") {
|
|
@@ -2859,7 +2958,7 @@ class JavascriptParser extends Parser {
|
|
|
2859
2958
|
/**
|
|
2860
2959
|
* Scan every top-level statement for the program's module declarations.
|
|
2861
2960
|
* The parser records them now, so nothing inside webpack scans for them.
|
|
2862
|
-
* @deprecated TODO
|
|
2961
|
+
* @deprecated TODO in the next major release: remove
|
|
2863
2962
|
* @param {(Statement | ModuleDeclaration)[]} statements statements
|
|
2864
2963
|
*/
|
|
2865
2964
|
modulePreWalkStatements(statements) {
|
|
@@ -2883,7 +2982,7 @@ class JavascriptParser extends Parser {
|
|
|
2883
2982
|
* Walk every statement of a list to declare what it binds. Only a tap on the
|
|
2884
2983
|
* deprecated `blockPreStatement` hook asks for this.
|
|
2885
2984
|
* @param {(Statement | ModuleDeclaration)[]} statements statements
|
|
2886
|
-
* @deprecated TODO
|
|
2985
|
+
* @deprecated TODO in the next major release: remove, with the `blockPreStatement` hook
|
|
2887
2986
|
*/
|
|
2888
2987
|
blockPreWalkStatements(statements) {
|
|
2889
2988
|
for (let index = 0, len = statements.length; index < len; index++) {
|
|
@@ -2912,7 +3011,9 @@ class JavascriptParser extends Parser {
|
|
|
2912
3011
|
/** @type {BlockDeclarations | undefined} */
|
|
2913
3012
|
let recorded;
|
|
2914
3013
|
if (this._hasParserRecord) {
|
|
2915
|
-
recorded =
|
|
3014
|
+
recorded =
|
|
3015
|
+
/** @type {typeof node & { [BLOCK_DECLARATIONS]?: BlockDeclarations }} */
|
|
3016
|
+
(node)[BLOCK_DECLARATIONS];
|
|
2916
3017
|
// 72.8% of the lists a build reads declare nothing, and saying so is
|
|
2917
3018
|
// the whole pass for them
|
|
2918
3019
|
if (recorded === 0) return;
|
|
@@ -2993,8 +3094,18 @@ class JavascriptParser extends Parser {
|
|
|
2993
3094
|
let bail =
|
|
2994
3095
|
preStatement.taps.length !== 0 ? preStatement.call(statement) : undefined;
|
|
2995
3096
|
if (!bail) {
|
|
2996
|
-
|
|
2997
|
-
|
|
3097
|
+
// WHY: a block-scoped function is the block pass's; the full pre-walk
|
|
3098
|
+
// still shows it to `preStatement`, but not to the typed hooks, which
|
|
3099
|
+
// would declare it in the scope (`InnerGraphPlugin` tags it top-level).
|
|
3100
|
+
if (
|
|
3101
|
+
statement.type === "FunctionDeclaration" &&
|
|
3102
|
+
this._isBlockScopedFunction(statement)
|
|
3103
|
+
) {
|
|
3104
|
+
bail = true;
|
|
3105
|
+
} else {
|
|
3106
|
+
const typed = preStatementByType.get(statement.type);
|
|
3107
|
+
if (typed !== undefined) bail = typed.call(statement);
|
|
3108
|
+
}
|
|
2998
3109
|
}
|
|
2999
3110
|
if (bail) {
|
|
3000
3111
|
this.prevStatement =
|
|
@@ -3084,6 +3195,9 @@ class JavascriptParser extends Parser {
|
|
|
3084
3195
|
case "ClassDeclaration":
|
|
3085
3196
|
this.blockPreWalkClassDeclaration(statement);
|
|
3086
3197
|
break;
|
|
3198
|
+
case "FunctionDeclaration":
|
|
3199
|
+
this.blockPreWalkFunctionDeclaration(statement);
|
|
3200
|
+
break;
|
|
3087
3201
|
case "ExportNamedDeclaration":
|
|
3088
3202
|
this.blockPreWalkExportNamedDeclaration(statement);
|
|
3089
3203
|
break;
|
|
@@ -3217,7 +3331,7 @@ class JavascriptParser extends Parser {
|
|
|
3217
3331
|
/**
|
|
3218
3332
|
* Walks a conditional branch with its guard frame (if any) pushed onto the
|
|
3219
3333
|
* parser-state guard stack for the duration of the branch body.
|
|
3220
|
-
* @param {
|
|
3334
|
+
* @param {GuardFrame | undefined | null} frame guard frame, or falsy when the branch is unguarded
|
|
3221
3335
|
* @param {() => void} walk branch walk
|
|
3222
3336
|
* @returns {void}
|
|
3223
3337
|
*/
|
|
@@ -3530,6 +3644,17 @@ class JavascriptParser extends Parser {
|
|
|
3530
3644
|
}
|
|
3531
3645
|
}
|
|
3532
3646
|
|
|
3647
|
+
/**
|
|
3648
|
+
* Bind a function declaration in the block holding it, when it does not
|
|
3649
|
+
* hoist to the enclosing scope.
|
|
3650
|
+
* @param {FunctionDeclaration | MaybeNamedFunctionDeclaration} statement function declaration
|
|
3651
|
+
*/
|
|
3652
|
+
blockPreWalkFunctionDeclaration(statement) {
|
|
3653
|
+
if (statement.id && this._isBlockScopedFunction(statement)) {
|
|
3654
|
+
this.defineVariable(statement.id.name);
|
|
3655
|
+
}
|
|
3656
|
+
}
|
|
3657
|
+
|
|
3533
3658
|
/**
|
|
3534
3659
|
* Walk function declaration.
|
|
3535
3660
|
* @param {FunctionDeclaration | MaybeNamedFunctionDeclaration} statement function declaration
|
|
@@ -4370,7 +4495,7 @@ class JavascriptParser extends Parser {
|
|
|
4370
4495
|
* @param {Literal} expression literal
|
|
4371
4496
|
*/
|
|
4372
4497
|
_checkStrictModeLiteral(expression) {
|
|
4373
|
-
const raw =
|
|
4498
|
+
const raw = expression.raw;
|
|
4374
4499
|
if (raw === undefined) return;
|
|
4375
4500
|
if (typeof expression.value === "number") {
|
|
4376
4501
|
// Legacy octal (`0777`) or non-octal decimal (`08`) integer literal.
|
|
@@ -4627,7 +4752,7 @@ class JavascriptParser extends Parser {
|
|
|
4627
4752
|
this._walkPatternWriteMembers(
|
|
4628
4753
|
property.type === "RestElement"
|
|
4629
4754
|
? property.argument
|
|
4630
|
-
:
|
|
4755
|
+
: property.value,
|
|
4631
4756
|
node
|
|
4632
4757
|
);
|
|
4633
4758
|
}
|
|
@@ -5600,7 +5725,7 @@ class JavascriptParser extends Parser {
|
|
|
5600
5725
|
if (typeof info === "string") {
|
|
5601
5726
|
name = info;
|
|
5602
5727
|
} else {
|
|
5603
|
-
if (!(info
|
|
5728
|
+
if (!JavascriptParser.isVariableInfo(info)) {
|
|
5604
5729
|
if (defined !== undefined) {
|
|
5605
5730
|
return defined();
|
|
5606
5731
|
}
|
|
@@ -5646,7 +5771,7 @@ class JavascriptParser extends Parser {
|
|
|
5646
5771
|
*/
|
|
5647
5772
|
_hasHooksForInfo(hookMap, info) {
|
|
5648
5773
|
if (typeof info === "string") return hookMap.get(info) !== undefined;
|
|
5649
|
-
if (!(info
|
|
5774
|
+
if (!JavascriptParser.isVariableInfo(info)) return false;
|
|
5650
5775
|
let tagInfo = info.tagInfo;
|
|
5651
5776
|
while (tagInfo !== undefined) {
|
|
5652
5777
|
if (hookMap.get(tagInfo.tag) !== undefined) return true;
|
|
@@ -5710,7 +5835,7 @@ class JavascriptParser extends Parser {
|
|
|
5710
5835
|
if (typeof info === "string") {
|
|
5711
5836
|
name = info;
|
|
5712
5837
|
} else {
|
|
5713
|
-
if (!(info
|
|
5838
|
+
if (!JavascriptParser.isVariableInfo(info)) {
|
|
5714
5839
|
return;
|
|
5715
5840
|
}
|
|
5716
5841
|
let tagInfo = info.tagInfo;
|
|
@@ -5887,6 +6012,37 @@ class JavascriptParser extends Parser {
|
|
|
5887
6012
|
return oldScope;
|
|
5888
6013
|
}
|
|
5889
6014
|
|
|
6015
|
+
/**
|
|
6016
|
+
* The directive a statement spells, or `undefined` when it is not one. An
|
|
6017
|
+
* AST webpack did not parse may leave the metadata off a directive, so the
|
|
6018
|
+
* spelling is recovered from the literal itself there.
|
|
6019
|
+
* @param {Directive | Statement | ModuleDeclaration} statement statement
|
|
6020
|
+
* @returns {string | undefined} the spelling between the quotes
|
|
6021
|
+
*/
|
|
6022
|
+
getDirective(statement) {
|
|
6023
|
+
if (statement.type !== "ExpressionStatement") return undefined;
|
|
6024
|
+
const directive = /** @type {Directive} */ (statement).directive;
|
|
6025
|
+
if (directive !== undefined || this._hasParserRecord) return directive;
|
|
6026
|
+
const expression = statement.expression;
|
|
6027
|
+
if (expression.type !== "Literal" || typeof expression.value !== "string") {
|
|
6028
|
+
return undefined;
|
|
6029
|
+
}
|
|
6030
|
+
// a parenthesized string is an expression rather than a directive, and
|
|
6031
|
+
// only the statement says so — the literal starts inside the parentheses
|
|
6032
|
+
if (
|
|
6033
|
+
statement.range !== undefined &&
|
|
6034
|
+
expression.range !== undefined &&
|
|
6035
|
+
statement.range[0] !== expression.range[0]
|
|
6036
|
+
) {
|
|
6037
|
+
return undefined;
|
|
6038
|
+
}
|
|
6039
|
+
// the raw text keeps an escape unexpanded, which is what separates a
|
|
6040
|
+
// directive from a string that merely reads like one
|
|
6041
|
+
return expression.raw === undefined
|
|
6042
|
+
? expression.value
|
|
6043
|
+
: expression.raw.slice(1, -1);
|
|
6044
|
+
}
|
|
6045
|
+
|
|
5890
6046
|
/**
|
|
5891
6047
|
* Processes the provided statement.
|
|
5892
6048
|
* @param {(Directive | Statement | ModuleDeclaration)[]} statements statements
|
|
@@ -5901,11 +6057,17 @@ class JavascriptParser extends Parser {
|
|
|
5901
6057
|
return;
|
|
5902
6058
|
}
|
|
5903
6059
|
const value = /** @type {Literal} */ (statement.expression).value;
|
|
5904
|
-
if (value === "use
|
|
5905
|
-
this.scope.isStrict = true;
|
|
5906
|
-
} else if (value === "use asm") {
|
|
6060
|
+
if (value === "use asm") {
|
|
5907
6061
|
this.scope.isAsmJs = true;
|
|
5908
6062
|
}
|
|
6063
|
+
for (const directiveStatement of statements) {
|
|
6064
|
+
const directive = this.getDirective(directiveStatement);
|
|
6065
|
+
if (directive === undefined) break;
|
|
6066
|
+
if (directive === "use strict") {
|
|
6067
|
+
this.scope.isStrict = true;
|
|
6068
|
+
break;
|
|
6069
|
+
}
|
|
6070
|
+
}
|
|
5909
6071
|
}
|
|
5910
6072
|
|
|
5911
6073
|
/**
|
|
@@ -6240,7 +6402,7 @@ class JavascriptParser extends Parser {
|
|
|
6240
6402
|
terminated: undefined,
|
|
6241
6403
|
definitions: new StackedMap()
|
|
6242
6404
|
};
|
|
6243
|
-
this.state = state;
|
|
6405
|
+
this.state = /** @type {JavascriptParserState} */ (state);
|
|
6244
6406
|
this.comments = comments;
|
|
6245
6407
|
this.semicolons = undefined;
|
|
6246
6408
|
// evaluating a defined, untagged identifier can only fall through when
|
|
@@ -6627,7 +6789,9 @@ class JavascriptParser extends Parser {
|
|
|
6627
6789
|
}
|
|
6628
6790
|
const loc = node.loc;
|
|
6629
6791
|
if (!loc) {
|
|
6630
|
-
return /** @type {DependencyLocation} */ (
|
|
6792
|
+
return /** @type {DependencyLocation} */ (
|
|
6793
|
+
/** @type {DependencyLocation | null | undefined} */ (loc)
|
|
6794
|
+
);
|
|
6631
6795
|
}
|
|
6632
6796
|
// a plain copy: a foreign parser's location class must not reach the cache
|
|
6633
6797
|
return {
|
|
@@ -6672,7 +6836,11 @@ class JavascriptParser extends Parser {
|
|
|
6672
6836
|
const comments = this.comments;
|
|
6673
6837
|
if (comments === undefined) return position;
|
|
6674
6838
|
const source = this._source;
|
|
6675
|
-
for (
|
|
6839
|
+
for (
|
|
6840
|
+
let index = binarySearchBounds.le(comments, position, compareCommentEnd);
|
|
6841
|
+
index >= 0;
|
|
6842
|
+
index--
|
|
6843
|
+
) {
|
|
6676
6844
|
const range = /** @type {Range} */ (comments[index].range);
|
|
6677
6845
|
if (range[1] > position) continue;
|
|
6678
6846
|
// with no source to read, nothing can be ruled out, so the run is
|
|
@@ -6870,7 +7038,7 @@ class JavascriptParser extends Parser {
|
|
|
6870
7038
|
*/
|
|
6871
7039
|
getTagData(name, tag) {
|
|
6872
7040
|
const info = this.scope.definitions.get(name);
|
|
6873
|
-
if (info
|
|
7041
|
+
if (JavascriptParser.isVariableInfo(info)) {
|
|
6874
7042
|
let tagInfo = info.tagInfo;
|
|
6875
7043
|
while (tagInfo !== undefined) {
|
|
6876
7044
|
if (tagInfo.tag === tag) return tagInfo.data;
|
|
@@ -6896,7 +7064,7 @@ class JavascriptParser extends Parser {
|
|
|
6896
7064
|
data,
|
|
6897
7065
|
next: undefined
|
|
6898
7066
|
});
|
|
6899
|
-
} else if (oldInfo
|
|
7067
|
+
} else if (JavascriptParser.isVariableInfo(oldInfo)) {
|
|
6900
7068
|
newInfo = new VariableInfo(
|
|
6901
7069
|
oldInfo.declaredScope,
|
|
6902
7070
|
oldInfo.name,
|
|
@@ -6926,7 +7094,7 @@ class JavascriptParser extends Parser {
|
|
|
6926
7094
|
const oldInfo = this.scope.definitions.get(name);
|
|
6927
7095
|
// Don't redefine variable in same scope to keep existing tags
|
|
6928
7096
|
if (
|
|
6929
|
-
oldInfo
|
|
7097
|
+
JavascriptParser.isVariableInfo(oldInfo) &&
|
|
6930
7098
|
oldInfo.declaredScope === this.scope
|
|
6931
7099
|
) {
|
|
6932
7100
|
return;
|
|
@@ -6952,7 +7120,7 @@ class JavascriptParser extends Parser {
|
|
|
6952
7120
|
isVariableDefined(name) {
|
|
6953
7121
|
const info = this.scope.definitions.get(name);
|
|
6954
7122
|
if (info === undefined) return false;
|
|
6955
|
-
if (info
|
|
7123
|
+
if (JavascriptParser.isVariableInfo(info)) {
|
|
6956
7124
|
return !info.isFree();
|
|
6957
7125
|
}
|
|
6958
7126
|
return true;
|
|
@@ -6968,7 +7136,7 @@ class JavascriptParser extends Parser {
|
|
|
6968
7136
|
_isDefinedPlainVariable(name) {
|
|
6969
7137
|
const info = this.scope.definitions.get(name);
|
|
6970
7138
|
if (info === undefined) return false;
|
|
6971
|
-
if (info
|
|
7139
|
+
if (JavascriptParser.isVariableInfo(info)) {
|
|
6972
7140
|
return !(info.isFree() || info.isTagged() || info.tagInfo !== undefined);
|
|
6973
7141
|
}
|
|
6974
7142
|
return true;
|
|
@@ -7031,7 +7199,7 @@ class JavascriptParser extends Parser {
|
|
|
7031
7199
|
/**
|
|
7032
7200
|
* Parses comment options.
|
|
7033
7201
|
* @param {Range} range range of the comment
|
|
7034
|
-
* @returns {{ options:
|
|
7202
|
+
* @returns {{ options: MagicCommentOptions | null, errors: (Error & { comment: Comment })[] | null }} result
|
|
7035
7203
|
*/
|
|
7036
7204
|
parseCommentOptions(range) {
|
|
7037
7205
|
return parseCommentOptionsInRange(
|
|
@@ -7131,7 +7299,7 @@ class JavascriptParser extends Parser {
|
|
|
7131
7299
|
const info = this.getVariableInfo(varName);
|
|
7132
7300
|
/** @type {string} */
|
|
7133
7301
|
let name;
|
|
7134
|
-
if (info
|
|
7302
|
+
if (JavascriptParser.isVariableInfo(info) && info.name) {
|
|
7135
7303
|
if (!info.isFree()) return;
|
|
7136
7304
|
name = info.name;
|
|
7137
7305
|
} else if (typeof info !== "string") {
|
|
@@ -7151,7 +7319,7 @@ class JavascriptParser extends Parser {
|
|
|
7151
7319
|
const info = this.getVariableInfo(varName);
|
|
7152
7320
|
/** @type {string} */
|
|
7153
7321
|
let name;
|
|
7154
|
-
if (info
|
|
7322
|
+
if (JavascriptParser.isVariableInfo(info) && info.name) {
|
|
7155
7323
|
if (!info.isFree() && !info.isTagged()) return;
|
|
7156
7324
|
name = info.name;
|
|
7157
7325
|
} else if (typeof info !== "string") {
|
|
@@ -7262,7 +7430,7 @@ class JavascriptParser extends Parser {
|
|
|
7262
7430
|
*/
|
|
7263
7431
|
_resolveMemberRoot(rootName) {
|
|
7264
7432
|
const info = this.getVariableInfo(rootName);
|
|
7265
|
-
if (info
|
|
7433
|
+
if (JavascriptParser.isVariableInfo(info) && info.name) {
|
|
7266
7434
|
if (!info.isFree() && !info.isTagged()) return;
|
|
7267
7435
|
this._memberRootInfo = info;
|
|
7268
7436
|
return info.name;
|
|
@@ -7393,6 +7561,15 @@ class JavascriptParser extends Parser {
|
|
|
7393
7561
|
);
|
|
7394
7562
|
}
|
|
7395
7563
|
|
|
7564
|
+
/**
|
|
7565
|
+
* Whether a definition is a variable rather than a free name or a scope.
|
|
7566
|
+
* @param {ExportedVariableInfo | undefined} value a scope definition
|
|
7567
|
+
* @returns {value is VariableInfo} true when the value is a variable
|
|
7568
|
+
*/
|
|
7569
|
+
static isVariableInfo(value) {
|
|
7570
|
+
return value instanceof VariableInfo;
|
|
7571
|
+
}
|
|
7572
|
+
|
|
7396
7573
|
/**
|
|
7397
7574
|
* Get module parse function.
|
|
7398
7575
|
* @param {Compilation} compilation compilation
|
|
@@ -7401,10 +7578,7 @@ class JavascriptParser extends Parser {
|
|
|
7401
7578
|
*/
|
|
7402
7579
|
static _getModuleParseFunction(compilation, module) {
|
|
7403
7580
|
// Get from module if available
|
|
7404
|
-
if (
|
|
7405
|
-
module instanceof NormalModule &&
|
|
7406
|
-
module.parser instanceof JavascriptParser
|
|
7407
|
-
) {
|
|
7581
|
+
if (module.is("normal") && module.parser instanceof JavascriptParser) {
|
|
7408
7582
|
return module.parser.options.parse;
|
|
7409
7583
|
}
|
|
7410
7584
|
|