@depup/webpack 5.111.1-depup.2 → 5.112.0-depup.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 +6 -8
- package/changes.json +8 -16
- package/lib/Chunk.js +3 -966
- package/lib/Compilation.js +224 -106
- package/lib/Compiler.js +19 -19
- 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 +8 -8
- package/lib/asset/AssetBytesParser.js +3 -3
- package/lib/asset/AssetGenerator.js +36 -22
- package/lib/asset/AssetModule.js +2 -2
- package/lib/asset/AssetModulesPlugin.js +6 -9
- package/lib/asset/AssetParser.js +3 -3
- package/lib/asset/AssetSourceGenerator.js +8 -8
- package/lib/asset/AssetSourceParser.js +3 -3
- package/lib/asset/RawDataUrlModule.js +17 -10
- package/lib/asset/WebManifestGenerator.js +7 -7
- package/lib/asset/WebManifestParser.js +5 -5
- package/lib/async-modules/AsyncModuleHelpers.js +6 -5
- package/lib/async-modules/AwaitDependenciesInitFragment.js +4 -4
- package/lib/async-modules/InferAsyncModulesPlugin.js +4 -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} +5 -5
- 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 +8 -10
- package/lib/cache/ResolverCachePlugin.js +8 -4
- 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} +217 -200
- package/lib/{WebpackOptionsDefaulter.js → config/WebpackOptionsDefaulter.js} +3 -3
- package/lib/config/browserslistTargetHandler.js +1 -1
- package/lib/{cli.js → config/cli.js} +5 -158
- package/lib/config/defaults.js +144 -48
- package/lib/config/getClaimedAssetTypes.js +21 -13
- package/lib/config/normalization.js +18 -7
- package/lib/config/target.js +10 -0
- 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 +36 -25
- package/lib/context/ContextModuleFactory.js +13 -10
- package/lib/context/ContextReplacementPlugin.js +3 -3
- package/lib/css/CssGenerator.js +38 -31
- package/lib/css/CssInjectStyleRuntimeModule.js +36 -30
- package/lib/css/CssLoadingRuntimeModule.js +77 -44
- package/lib/css/CssModule.js +27 -29
- package/lib/css/CssModulesPlugin.js +128 -44
- package/lib/css/CssParser.js +682 -291
- package/lib/css/CssServerStylesRuntimeModule.js +3 -3
- package/lib/css/cssMinify.js +110 -37
- package/lib/css/data.js +6985 -5125
- package/lib/css/syntax-parser.js +19873 -0
- package/lib/css/syntax-printer.js +6037 -0
- package/lib/css/syntax.js +37 -18686
- package/lib/debug/ProfilingPlugin.js +52 -19
- package/lib/{DefinePlugin.js → define/DefinePlugin.js} +407 -41
- package/lib/{DotenvPlugin.js → define/DotenvPlugin.js} +9 -9
- package/lib/{EnvironmentPlugin.js → define/EnvironmentPlugin.js} +2 -2
- 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 -10
- 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} +10 -10
- 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 -33
- package/lib/dependencies/{CommonJsExportsDependency.js → commonjs/CommonJsExportsDependency.js} +15 -14
- package/lib/dependencies/{CommonJsExportsParserPlugin.js → commonjs/CommonJsExportsParserPlugin.js} +138 -61
- package/lib/dependencies/{CommonJsFullRequireDependency.js → commonjs/CommonJsFullRequireDependency.js} +32 -24
- package/lib/dependencies/{CommonJsImportsParserPlugin.js → commonjs/CommonJsImportsParserPlugin.js} +35 -30
- package/lib/dependencies/{CommonJsObjectExportDependency.js → commonjs/CommonJsObjectExportDependency.js} +13 -12
- package/lib/dependencies/{CommonJsPlugin.js → commonjs/CommonJsPlugin.js} +47 -35
- 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} +5 -5
- 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} +9 -9
- 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} +4 -4
- package/lib/dependencies/{ImportMetaGlobHelpers.js → context/ImportMetaGlobHelpers.js} +9 -9
- 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} +12 -11
- 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} +369 -92
- package/lib/dependencies/{CssIcssImportDependency.js → css/CssIcssImportDependency.js} +23 -16
- 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} +23 -16
- 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} +19 -17
- 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} +133 -118
- package/lib/dependencies/{HarmonyExportInitFragment.js → esm/ESMExportInitFragment.js} +48 -30
- package/lib/dependencies/{HarmonyExportSpecifierDependency.js → esm/ESMExportSpecifierDependency.js} +60 -36
- package/lib/dependencies/{HarmonyExports.js → esm/ESMExports.js} +4 -4
- package/lib/dependencies/{HarmonyImportBareSideEffectDependency.js → esm/ESMImportBareSideEffectDependency.js} +21 -13
- package/lib/dependencies/{HarmonyImportDependency.js → esm/ESMImportDependency.js} +74 -71
- package/lib/dependencies/{HarmonyImportDependencyParserPlugin.js → esm/ESMImportDependencyParserPlugin.js} +99 -84
- package/lib/dependencies/{HarmonyImportGuard.js → esm/ESMImportGuard.js} +26 -29
- package/lib/dependencies/{HarmonyImportSideEffectDependency.js → esm/ESMImportSideEffectDependency.js} +83 -39
- package/lib/dependencies/{HarmonyImportSpecifierDependency.js → esm/ESMImportSpecifierDependency.js} +94 -59
- package/lib/dependencies/esm/ESMModulesPlugin.js +207 -0
- package/lib/dependencies/{HarmonyTopLevelThisParserPlugin.js → esm/ESMTopLevelThisParserPlugin.js} +7 -7
- package/lib/dependencies/{TopLevelAwaitDependency.js → esm/TopLevelAwaitDependency.js} +12 -11
- package/lib/dependencies/{DynamicExports.js → helpers/DynamicExports.js} +2 -2
- 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} +51 -141
- package/lib/dependencies/{HtmlInlineHtmlDependency.js → html/HtmlInlineHtmlDependency.js} +13 -12
- package/lib/dependencies/{HtmlInlineScriptDependency.js → html/HtmlInlineScriptDependency.js} +69 -19
- package/lib/dependencies/{HtmlInlineStyleDependency.js → html/HtmlInlineStyleDependency.js} +50 -15
- 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} +20 -20
- 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} +119 -98
- 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 +16 -18
- 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} +31 -33
- 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} +154 -26
- 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 +20 -18
- 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 +11 -9
- package/lib/dll/DllModuleFactory.js +3 -3
- package/lib/dll/DllPlugin.js +18 -6
- package/lib/dll/DllReferencePlugin.js +102 -26
- 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/{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} +7 -5
- package/lib/errors/ExternalStarReexportError.js +2 -2
- package/lib/{library → errors}/FalseIIFEUmdWarning.js +1 -1
- package/lib/errors/HookWebpackError.js +4 -4
- package/lib/errors/IgnoreErrorModuleFactory.js +3 -3
- package/lib/errors/InvalidDependenciesModuleWarning.js +1 -1
- 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 +12 -3
- package/lib/esm/ExportWebpackRequireRuntimeModule.js +2 -2
- package/lib/esm/ModuleChunkFormatPlugin.js +19 -19
- package/lib/esm/ModuleChunkLoadingPlugin.js +3 -3
- package/lib/esm/ModuleChunkLoadingRuntimeModule.js +8 -8
- package/lib/{ExternalModule.js → externals/ExternalModule.js} +79 -55
- package/lib/{ExternalModuleFactoryPlugin.js → externals/ExternalModuleFactoryPlugin.js} +41 -39
- 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} +187 -80
- package/lib/{ChunkGroup.js → graph/ChunkGroup.js} +11 -3
- package/lib/{DependenciesBlock.js → graph/DependenciesBlock.js} +16 -4
- package/lib/graph/Dependency.js +628 -0
- package/lib/graph/Entrypoint.js +136 -0
- package/lib/{ExportsInfo.js → graph/ExportsInfo.js} +130 -82
- package/lib/{HotUpdateChunk.js → graph/HotUpdateChunk.js} +8 -0
- package/lib/{ModuleGraph.js → graph/ModuleGraph.js} +30 -30
- package/lib/{ModuleGraphConnection.js → graph/ModuleGraphConnection.js} +2 -2
- package/lib/{buildChunkGraph.js → graph/buildChunkGraph.js} +152 -57
- package/lib/{util → graph}/findGraphRoots.js +14 -8
- package/lib/graph/isDependencyKind.js +23 -0
- package/lib/hmr/HotModuleReplacement.runtime.js +2 -2
- package/lib/{HotModuleReplacementPlugin.js → hmr/HotModuleReplacementPlugin.js} +47 -47
- package/lib/hmr/HotModuleReplacementRuntimeModule.js +3 -3
- package/lib/hmr/JavascriptHotModuleReplacement.runtime.js +10 -8
- package/lib/hmr/JavascriptHotModuleReplacementHelper.js +2 -2
- package/lib/hmr/LazyCompilationPlugin.js +31 -21
- package/lib/html/HtmlGenerator.js +107 -43
- package/lib/html/HtmlModule.js +6 -2
- package/lib/html/HtmlModulesPlugin.js +172 -76
- package/lib/html/HtmlParser.js +503 -153
- package/lib/html/builtinEmbeddedRenderer.js +60 -13
- package/lib/html/data.js +2 -1
- package/lib/html/htmlMinify.js +111 -41
- package/lib/html/syntax-parser.js +15796 -0
- package/lib/html/syntax-printer.js +1034 -0
- package/lib/html/syntax.js +37 -13952
- package/lib/html/xmlMinify.js +67 -0
- package/lib/ids/ChunkModuleIdRangePlugin.js +2 -2
- package/lib/ids/DeterministicModuleIdsPlugin.js +1 -1
- package/lib/ids/HashedModuleIdsPlugin.js +31 -4
- 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 +303 -97
- package/lib/{APIPlugin.js → javascript/APIPlugin.js} +25 -25
- package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +4 -5
- package/lib/javascript/BasicEvaluatedExpression.js +4 -4
- package/lib/javascript/ChunkHelpers.js +64 -4
- package/lib/javascript/CommonJsChunkFormatPlugin.js +4 -7
- package/lib/{CompatibilityPlugin.js → javascript/CompatibilityPlugin.js} +7 -7
- package/lib/{ConstPlugin.js → javascript/ConstPlugin.js} +74 -7
- package/lib/{ExportsInfoApiPlugin.js → javascript/ExportsInfoApiPlugin.js} +5 -5
- package/lib/{dependencies → javascript}/ExportsInfoDependency.js +10 -9
- package/lib/javascript/JavascriptGenerator.js +17 -17
- package/lib/{JavascriptMetaInfoPlugin.js → javascript/JavascriptMetaInfoPlugin.js} +7 -7
- package/lib/javascript/JavascriptModule.js +4 -3
- package/lib/javascript/JavascriptModulesPlugin.js +440 -211
- package/lib/javascript/JavascriptParser.js +220 -134
- package/lib/javascript/JavascriptParserHelpers.js +1 -1
- package/lib/javascript/MergedEntryExports.js +196 -0
- package/lib/javascript/ScopeAnalyzer.js +3840 -5
- package/lib/javascript/StartupHelpers.js +6 -6
- package/lib/{UseStrictPlugin.js → javascript/UseStrictPlugin.js} +12 -15
- 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 +18561 -0
- package/lib/javascript/syntax-printer-data.js +933 -0
- package/lib/javascript/syntax-printer.js +47106 -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 +10 -10
- package/lib/json/JsonModule.js +2 -2
- package/lib/json/JsonModulesPlugin.js +1 -1
- package/lib/json/JsonParser.js +5 -5
- 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 +27 -11
- package/lib/library/EnableLibraryPlugin.js +1 -1
- package/lib/library/ExportPropertyLibraryPlugin.js +4 -4
- package/lib/library/JsonpLibraryPlugin.js +1 -1
- package/lib/library/LibraryTemplatePlugin.js +53 -0
- package/lib/library/ModuleLibraryPlugin.js +160 -166
- 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 +31 -21
- package/lib/{LoaderTargetPlugin.js → loaders/LoaderTargetPlugin.js} +2 -2
- 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} +16 -14
- package/lib/{Module.js → module/Module.js} +119 -51
- package/lib/{ModuleFactory.js → module/ModuleFactory.js} +3 -3
- package/lib/module/NormalModule.js +2348 -0
- package/lib/{NormalModuleFactory.js → module/NormalModuleFactory.js} +53 -54
- package/lib/module/NullFactory.js +29 -0
- package/lib/{Parser.js → module/Parser.js} +3 -3
- package/lib/module/RawModule.js +208 -0
- package/lib/{SelfModuleFactory.js → module/SelfModuleFactory.js} +1 -1
- package/lib/{util → module}/extractSourceMap.js +2 -2
- package/lib/{util → module}/findCaseMismatch.js +2 -2
- package/lib/node/CommonJsChunkLoadingPlugin.js +3 -3
- package/lib/{dependencies → node}/ExternalModuleDependency.js +8 -7
- package/lib/{dependencies → node}/ExternalModuleInitFragment.js +6 -5
- 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 +9 -7
- package/lib/node/ReadFileCompileWasmPlugin.js +7 -5
- package/lib/node/RequireChunkLoadingRuntimeModule.js +7 -7
- package/lib/node/nodeConsole.js +2 -4
- package/lib/optimize/AggressiveMergingPlugin.js +2 -2
- package/lib/optimize/AggressiveSplittingPlugin.js +12 -8
- package/lib/{CircularModulesPlugin.js → optimize/CircularModulesPlugin.js} +13 -13
- package/lib/optimize/ConcatenatedModule.js +229 -214
- 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} +17 -17
- package/lib/{FlagDependencyUsagePlugin.js → optimize/FlagDependencyUsagePlugin.js} +17 -17
- package/lib/{FlagEntryExportAsUsedPlugin.js → optimize/FlagEntryExportAsUsedPlugin.js} +2 -2
- package/lib/optimize/FlagIncludedChunksPlugin.js +2 -2
- package/lib/optimize/InlineExports.js +11 -3
- package/lib/optimize/InnerGraph.js +5 -13
- package/lib/optimize/InnerGraphPlugin.js +10 -10
- package/lib/optimize/LazyBarrels.js +584 -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 +20 -12
- package/lib/{dependencies → optimize}/PureExpressionDependency.js +11 -10
- package/lib/optimize/RealContentHashPlugin.js +16 -7
- package/lib/optimize/RemoveEmptyChunksPlugin.js +2 -2
- package/lib/optimize/RemoveParentModulesPlugin.js +4 -4
- package/lib/optimize/SideEffectsFlagPlugin.js +18 -18
- package/lib/optimize/SplitChunksPlugin.js +713 -155
- 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} +66 -24
- package/lib/{CopyPlugin.js → output/CopyPlugin.js} +142 -67
- 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 +3 -3
- package/lib/performance/HotspotsPlugin.js +11 -10
- 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 +3 -3
- 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 +8 -7
- 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 +65 -44
- 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 +14 -13
- 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/RuleSetCompiler.js +27 -46
- package/lib/runtime/AsyncModuleGeneratorRuntimeModule.js +2 -2
- package/lib/runtime/AsyncModuleRuntimeModule.js +7 -4
- 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 +6 -6
- 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} +18 -1
- package/lib/runtime/RuntimeIdRuntimeModule.js +4 -4
- package/lib/{RuntimeModule.js → runtime/RuntimeModule.js} +36 -21
- package/lib/{RuntimePlugin.js → runtime/RuntimePlugin.js} +48 -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 +67 -11
- package/lib/schemes/VirtualUrlPlugin.js +50 -16
- package/lib/serialization/AggregateErrorSerializer.js +2 -2
- package/lib/serialization/FileMiddleware.js +3 -3
- package/lib/serialization/ObjectMiddleware.js +47 -16
- package/lib/serialization/SerializerMiddleware.js +2 -2
- 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 +22 -19
- package/lib/stats/DefaultStatsPresetPlugin.js +1 -1
- package/lib/stats/DefaultStatsPrinterPlugin.js +3 -3
- package/lib/{MultiStats.js → stats/MultiStats.js} +4 -4
- package/lib/{Stats.js → stats/Stats.js} +4 -4
- package/lib/stats/StatsFactory.js +14 -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} +145 -63
- package/lib/{Template.js → template/Template.js} +13 -11
- 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 +349 -44
- package/lib/util/TupleSet.js +27 -27
- package/lib/util/WeakTupleMap.js +10 -12
- package/lib/util/buildDiagnostics.js +2 -2
- package/lib/util/comparators.js +10 -10
- package/lib/util/concatenate.js +28 -147
- package/lib/util/createMappings.js +111 -0
- package/lib/util/dataURL.js +94 -15
- package/lib/util/deprecation.js +1 -1
- package/lib/util/extractComments.js +118 -0
- package/lib/util/formatLocation.js +1 -1
- package/lib/util/globUtils.js +197 -16
- 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 +294 -102
- package/lib/util/magicComment.js +12 -7
- package/lib/util/makeSerializable.js +23 -4
- package/lib/util/parseJson.js +1 -1
- 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 +4 -1
- 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 +9 -5
- package/lib/{wasm-async → wasm}/AsyncWebAssemblyGenerator.js +5 -5
- package/lib/{wasm-async → wasm}/AsyncWebAssemblyJavascriptGenerator.js +11 -10
- package/lib/{wasm-async → wasm}/AsyncWebAssemblyModulesPlugin.js +26 -10
- package/lib/{wasm-async → wasm}/AsyncWebAssemblyParser.js +8 -8
- package/lib/wasm/EnableWasmLoadingPlugin.js +1 -1
- package/lib/{wasm-async → wasm}/UniversalCompileAsyncWasmPlugin.js +9 -7
- package/lib/wasm/wasmModuleFilename.js +2 -2
- package/lib/wasm-sync/SyncWasmModule.js +3 -3
- package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +8 -8
- package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +3 -3
- package/lib/wasm-sync/WebAssemblyGenerator.js +9 -8
- package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +14 -15
- package/lib/wasm-sync/WebAssemblyModulesPlugin.js +9 -7
- package/lib/wasm-sync/WebAssemblyParser.js +6 -6
- 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 +8 -6
- package/lib/web/FetchCompileWasmPlugin.js +6 -4
- 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 +55 -40
- package/schemas/WebpackOptions.check.js +2 -1
- package/schemas/WebpackOptions.d.json.ts +2 -0
- package/schemas/WebpackOptions.json +294 -74
- package/schemas/plugins/BannerPlugin.check.js +2 -1
- package/schemas/plugins/BannerPlugin.json +29 -2
- package/schemas/plugins/HtmlGeneratorOptions.check.js +1 -0
- package/schemas/plugins/HtmlParserOptions.check.js +2 -1
- package/schemas/plugins/IgnorePlugin.check.js +1 -0
- package/schemas/plugins/IgnorePlugin.d.json.ts +2 -0
- package/schemas/plugins/IgnorePlugin.json +1 -1
- package/schemas/plugins/LoaderOptionsPlugin.check.js +1 -0
- package/schemas/plugins/ManifestPlugin.check.js +1 -0
- package/schemas/plugins/ManifestPlugin.json +3 -3
- package/schemas/plugins/ProgressPlugin.check.js +2 -1
- 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 +2 -1
- package/schemas/plugins/SourceMapDevToolPlugin.json +44 -12
- package/schemas/plugins/WatchIgnorePlugin.check.js +2 -1
- package/schemas/plugins/WatchIgnorePlugin.json +12 -3
- package/schemas/plugins/asset/AssetGeneratorOptions.check.js +1 -0
- package/schemas/plugins/asset/AssetInlineGeneratorOptions.check.js +1 -0
- package/schemas/plugins/asset/AssetParserOptions.check.js +1 -0
- package/schemas/plugins/asset/AssetResourceGeneratorOptions.check.js +1 -0
- package/schemas/plugins/container/ContainerPlugin.check.js +2 -1
- package/schemas/plugins/container/ContainerPlugin.json +8 -0
- package/schemas/plugins/container/ContainerReferencePlugin.check.js +1 -0
- package/schemas/plugins/container/ExternalsType.check.js +1 -0
- package/schemas/plugins/container/ModuleFederationPlugin.check.js +2 -1
- package/schemas/plugins/container/ModuleFederationPlugin.json +40 -0
- package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.js +1 -0
- package/schemas/plugins/css/CssGeneratorOptions.check.js +1 -0
- package/schemas/plugins/css/CssModuleGeneratorOptions.check.js +1 -0
- package/schemas/plugins/css/CssModuleParserOptions.check.js +1 -0
- package/schemas/plugins/css/CssParserOptions.check.js +1 -0
- package/schemas/plugins/debug/ProfilingPlugin.check.js +1 -0
- package/schemas/plugins/dll/DllPlugin.check.js +1 -0
- package/schemas/plugins/dll/DllReferencePlugin.check.js +2 -1
- package/schemas/plugins/dll/DllReferencePlugin.json +3 -18
- package/schemas/plugins/ids/HashedModuleIdsPlugin.check.js +1 -0
- package/schemas/plugins/ids/OccurrenceChunkIdsPlugin.check.js +1 -0
- package/schemas/plugins/ids/OccurrenceModuleIdsPlugin.check.js +1 -0
- package/schemas/plugins/json/JsonModulesPluginGenerator.check.js +1 -0
- package/schemas/plugins/json/JsonModulesPluginParser.check.js +1 -0
- package/schemas/plugins/optimize/AggressiveSplittingPlugin.check.js +1 -0
- package/schemas/plugins/optimize/LimitChunkCountPlugin.check.js +1 -0
- package/schemas/plugins/optimize/MergeDuplicateChunksPlugin.check.js +1 -0
- package/schemas/plugins/optimize/MinChunkSizePlugin.check.js +1 -0
- package/schemas/plugins/schemes/HttpUriPlugin.check.js +1 -0
- package/schemas/plugins/schemes/VirtualUrlPlugin.check.js +1 -0
- package/schemas/plugins/sharing/ConsumeSharedPlugin.check.js +2 -1
- package/schemas/plugins/sharing/ConsumeSharedPlugin.json +32 -0
- package/schemas/plugins/sharing/ProvideSharedPlugin.check.js +2 -1
- package/schemas/plugins/sharing/ProvideSharedPlugin.json +32 -0
- package/schemas/plugins/sharing/SharePlugin.check.js +2 -1
- package/schemas/plugins/sharing/SharePlugin.json +32 -0
- package/types.d.ts +19355 -13873
- 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}/conventions.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,9 @@ const {
|
|
|
31
31
|
isIdentifierChar,
|
|
32
32
|
overflowFrom,
|
|
33
33
|
positionAt
|
|
34
|
-
} = require("./syntax");
|
|
34
|
+
} = require("./syntax-parser");
|
|
35
35
|
|
|
36
|
-
/** @import { EcmaVersion, ParserOptions, ParserPlugin } from "./syntax" */
|
|
36
|
+
/** @import { EcmaVersion, ParserOptions, ParserPlugin } from "./syntax-parser" */
|
|
37
37
|
/**
|
|
38
38
|
* @import {
|
|
39
39
|
* AssignmentExpression,
|
|
@@ -108,38 +108,43 @@ const {
|
|
|
108
108
|
* MaybeNamedClassDeclaration
|
|
109
109
|
* } from "estree"
|
|
110
110
|
*/
|
|
111
|
-
/** @import { DependencyLocation } from "../Dependency" */
|
|
111
|
+
/** @import { DependencyLocation } from "../graph/Dependency" */
|
|
112
|
+
/** @import { MagicCommentOptions } from "../util/magicComment" */
|
|
112
113
|
/** @typedef {import("estree").Comment & { start: number, end: number, loc?: SourceLocation | null }} Comment */
|
|
113
114
|
/**
|
|
114
115
|
* Defines the shared type used by this module.
|
|
115
116
|
* @template T
|
|
116
117
|
* @typedef {import("tapable").AsArray<T>} AsArray<T>
|
|
117
118
|
*/
|
|
118
|
-
/** @import { ParserState, PreparsedAst } from "../Parser" */
|
|
119
|
+
/** @import { ParserState, PreparsedAst } from "../module/Parser" */
|
|
119
120
|
|
|
120
|
-
/** @import LocalModule from "../dependencies/LocalModule" */
|
|
121
|
+
/** @import LocalModule from "../dependencies/amd/LocalModule" */
|
|
121
122
|
/**
|
|
122
123
|
* @import {
|
|
123
|
-
*
|
|
124
|
-
* } from "../dependencies/
|
|
124
|
+
* ESMStarExportsList
|
|
125
|
+
* } from "../dependencies/esm/ESMExportImportedSpecifierDependency"
|
|
125
126
|
*/
|
|
126
127
|
|
|
127
128
|
/**
|
|
128
129
|
* Defines the known javascript parser state type used by this module.
|
|
130
|
+
* The `harmony*` properties forward to their `esm*` namesake.
|
|
129
131
|
* @typedef {object} KnownJavascriptParserState
|
|
130
|
-
* @property {Set<string>=}
|
|
131
|
-
* @property {InstanceType<
|
|
132
|
-
* @property {number=}
|
|
132
|
+
* @property {Set<string>=} esmNamedExports
|
|
133
|
+
* @property {InstanceType<ESMStarExportsList>=} esmStarExports
|
|
134
|
+
* @property {number=} lastESMImportOrder
|
|
133
135
|
* @property {LocalModule[]=} localModules
|
|
136
|
+
* @property {Set<string>=} harmonyNamedExports deprecated, use `esmNamedExports`
|
|
137
|
+
* @property {InstanceType<ESMStarExportsList>=} harmonyStarExports deprecated, use `esmStarExports`
|
|
138
|
+
* @property {number=} lastHarmonyImportOrder deprecated, use `lastESMImportOrder`
|
|
134
139
|
*/
|
|
135
140
|
|
|
136
141
|
/** @typedef {ParserState & KnownJavascriptParserState} JavascriptParserState */
|
|
137
142
|
|
|
138
143
|
/** @import Compilation from "../Compilation" */
|
|
139
|
-
/** @import Module from "../Module" */
|
|
144
|
+
/** @import Module from "../module/Module" */
|
|
140
145
|
|
|
141
146
|
/** @typedef {{ name: string | VariableInfo, rootInfo: string | VariableInfo, getMembers: () => Members, getMembersOptionals: () => MembersOptionals, getMemberRanges: () => MemberRanges }} GetInfoResult */
|
|
142
|
-
/** @typedef {{ consequent?:
|
|
147
|
+
/** @typedef {{ consequent?: GuardFrame, alternate?: GuardFrame }} GuardCollection per-branch guard frames pushed onto the parser state guard stack */
|
|
143
148
|
/** @typedef {Statement | ModuleDeclaration | Expression | MaybeNamedFunctionDeclaration | MaybeNamedClassDeclaration} StatementPathItem */
|
|
144
149
|
/** @typedef {(ident: string) => void} OnIdentString */
|
|
145
150
|
/** @typedef {(ident: string, identifier: Identifier) => void} OnIdent */
|
|
@@ -273,7 +278,10 @@ const getImportAttributes = (node) => {
|
|
|
273
278
|
result[key] = /** @type {string} */ (attribute.value.value);
|
|
274
279
|
}
|
|
275
280
|
|
|
276
|
-
if (
|
|
281
|
+
if (
|
|
282
|
+
/** @type {typeof node.attributes & { [LEGACY_ASSERT_ATTRIBUTES]?: boolean }} */
|
|
283
|
+
(node.attributes)[LEGACY_ASSERT_ATTRIBUTES]
|
|
284
|
+
) {
|
|
277
285
|
result._isLegacyAssert = true;
|
|
278
286
|
}
|
|
279
287
|
|
|
@@ -365,19 +373,20 @@ class VariableInfo {
|
|
|
365
373
|
|
|
366
374
|
/**
|
|
367
375
|
* @import {
|
|
368
|
-
*
|
|
369
|
-
* } from "../dependencies/
|
|
376
|
+
* ESMSettings
|
|
377
|
+
* } from "../dependencies/esm/ESMImportDependencyParserPlugin"
|
|
370
378
|
*/
|
|
371
|
-
/** @import { ImportSettings } from "../dependencies/ImportParserPlugin" */
|
|
379
|
+
/** @import { ImportSettings } from "../dependencies/import/ImportParserPlugin" */
|
|
380
|
+
/** @import { GuardFrame } from "../dependencies/esm/ESMImportGuard" */
|
|
372
381
|
/**
|
|
373
382
|
* @import {
|
|
374
383
|
* CommonJsImportSettings
|
|
375
|
-
* } from "../dependencies/CommonJsImportsParserPlugin"
|
|
384
|
+
* } from "../dependencies/commonjs/CommonJsImportsParserPlugin"
|
|
376
385
|
*/
|
|
377
|
-
/** @import { CompatibilitySettings } from "
|
|
386
|
+
/** @import { CompatibilitySettings } from "./CompatibilityPlugin" */
|
|
378
387
|
/** @import { TopLevelSymbol } from "../optimize/InnerGraph" */
|
|
379
388
|
|
|
380
|
-
/** @typedef {
|
|
389
|
+
/** @typedef {ESMSettings | ImportSettings | CommonJsImportSettings | TopLevelSymbol | CompatibilitySettings} KnownTagData */
|
|
381
390
|
/** @typedef {KnownTagData | Record<string, EXPECTED_ANY>} TagData */
|
|
382
391
|
|
|
383
392
|
/**
|
|
@@ -554,123 +563,138 @@ const valueAsExpression = (value, expr, sideEffects) => {
|
|
|
554
563
|
};
|
|
555
564
|
|
|
556
565
|
// The constant operators, shared so evaluating `a - b` allocates no handler.
|
|
566
|
+
// JavaScript coerces any operand; each cast only lets TypeScript type the operator.
|
|
567
|
+
|
|
568
|
+
/** @typedef {ReturnType<BasicEvaluatedExpression["asCompileTimeValue"]>} CompileTimeValue */
|
|
557
569
|
|
|
558
570
|
/**
|
|
559
|
-
* @param {
|
|
560
|
-
* @param {
|
|
561
|
-
* @returns {
|
|
571
|
+
* @param {CompileTimeValue} l left operand
|
|
572
|
+
* @param {CompileTimeValue} r right operand
|
|
573
|
+
* @returns {number | bigint} the result
|
|
562
574
|
*/
|
|
563
|
-
const SUBTRACT = (l, r) =>
|
|
575
|
+
const SUBTRACT = (l, r) =>
|
|
576
|
+
/** @type {number} */ (l) - /** @type {number} */ (r);
|
|
564
577
|
|
|
565
578
|
/**
|
|
566
|
-
* @param {
|
|
567
|
-
* @param {
|
|
568
|
-
* @returns {
|
|
579
|
+
* @param {CompileTimeValue} l left operand
|
|
580
|
+
* @param {CompileTimeValue} r right operand
|
|
581
|
+
* @returns {number | bigint} the result
|
|
569
582
|
*/
|
|
570
|
-
const MULTIPLY = (l, r) =>
|
|
583
|
+
const MULTIPLY = (l, r) =>
|
|
584
|
+
/** @type {number} */ (l) * /** @type {number} */ (r);
|
|
571
585
|
|
|
572
586
|
/**
|
|
573
|
-
* @param {
|
|
574
|
-
* @param {
|
|
575
|
-
* @returns {
|
|
587
|
+
* @param {CompileTimeValue} l left operand
|
|
588
|
+
* @param {CompileTimeValue} r right operand
|
|
589
|
+
* @returns {number | bigint} the result
|
|
576
590
|
*/
|
|
577
|
-
const DIVIDE = (l, r) => l / r;
|
|
591
|
+
const DIVIDE = (l, r) => /** @type {number} */ (l) / /** @type {number} */ (r);
|
|
578
592
|
|
|
579
593
|
/**
|
|
580
|
-
* @param {
|
|
581
|
-
* @param {
|
|
582
|
-
* @returns {
|
|
594
|
+
* @param {CompileTimeValue} l left operand
|
|
595
|
+
* @param {CompileTimeValue} r right operand
|
|
596
|
+
* @returns {number | bigint} the result
|
|
583
597
|
*/
|
|
584
|
-
const POWER = (l, r) => l ** r;
|
|
598
|
+
const POWER = (l, r) => /** @type {number} */ (l) ** /** @type {number} */ (r);
|
|
585
599
|
|
|
586
600
|
/**
|
|
587
|
-
* @param {
|
|
588
|
-
* @param {
|
|
589
|
-
* @returns {
|
|
601
|
+
* @param {CompileTimeValue} l left operand
|
|
602
|
+
* @param {CompileTimeValue} r right operand
|
|
603
|
+
* @returns {number | bigint} the result
|
|
590
604
|
*/
|
|
591
|
-
const BITWISE_AND = (l, r) =>
|
|
605
|
+
const BITWISE_AND = (l, r) =>
|
|
606
|
+
/** @type {number} */ (l) & /** @type {number} */ (r);
|
|
592
607
|
|
|
593
608
|
/**
|
|
594
|
-
* @param {
|
|
595
|
-
* @param {
|
|
596
|
-
* @returns {
|
|
609
|
+
* @param {CompileTimeValue} l left operand
|
|
610
|
+
* @param {CompileTimeValue} r right operand
|
|
611
|
+
* @returns {number | bigint} the result
|
|
597
612
|
*/
|
|
598
|
-
const BITWISE_OR = (l, r) =>
|
|
613
|
+
const BITWISE_OR = (l, r) =>
|
|
614
|
+
/** @type {number} */ (l) | /** @type {number} */ (r);
|
|
599
615
|
|
|
600
616
|
/**
|
|
601
|
-
* @param {
|
|
602
|
-
* @param {
|
|
603
|
-
* @returns {
|
|
617
|
+
* @param {CompileTimeValue} l left operand
|
|
618
|
+
* @param {CompileTimeValue} r right operand
|
|
619
|
+
* @returns {number | bigint} the result
|
|
604
620
|
*/
|
|
605
|
-
const BITWISE_XOR = (l, r) =>
|
|
621
|
+
const BITWISE_XOR = (l, r) =>
|
|
622
|
+
/** @type {number} */ (l) ^ /** @type {number} */ (r);
|
|
606
623
|
|
|
607
624
|
/**
|
|
608
|
-
* @param {
|
|
609
|
-
* @param {
|
|
610
|
-
* @returns {
|
|
625
|
+
* @param {CompileTimeValue} l left operand
|
|
626
|
+
* @param {CompileTimeValue} r right operand
|
|
627
|
+
* @returns {number} the result
|
|
611
628
|
*/
|
|
612
|
-
const UNSIGNED_SHIFT_RIGHT = (l, r) =>
|
|
629
|
+
const UNSIGNED_SHIFT_RIGHT = (l, r) =>
|
|
630
|
+
/** @type {number} */ (l) >>> /** @type {number} */ (r);
|
|
613
631
|
|
|
614
632
|
/**
|
|
615
|
-
* @param {
|
|
616
|
-
* @param {
|
|
617
|
-
* @returns {
|
|
633
|
+
* @param {CompileTimeValue} l left operand
|
|
634
|
+
* @param {CompileTimeValue} r right operand
|
|
635
|
+
* @returns {number | bigint} the result
|
|
618
636
|
*/
|
|
619
|
-
const SHIFT_RIGHT = (l, r) =>
|
|
637
|
+
const SHIFT_RIGHT = (l, r) =>
|
|
638
|
+
/** @type {number} */ (l) >> /** @type {number} */ (r);
|
|
620
639
|
|
|
621
640
|
/**
|
|
622
|
-
* @param {
|
|
623
|
-
* @param {
|
|
624
|
-
* @returns {
|
|
641
|
+
* @param {CompileTimeValue} l left operand
|
|
642
|
+
* @param {CompileTimeValue} r right operand
|
|
643
|
+
* @returns {number | bigint} the result
|
|
625
644
|
*/
|
|
626
|
-
const SHIFT_LEFT = (l, r) =>
|
|
645
|
+
const SHIFT_LEFT = (l, r) =>
|
|
646
|
+
/** @type {number} */ (l) << /** @type {number} */ (r);
|
|
627
647
|
|
|
628
648
|
/**
|
|
629
|
-
* @param {
|
|
630
|
-
* @param {
|
|
631
|
-
* @returns {
|
|
649
|
+
* @param {CompileTimeValue} l left operand
|
|
650
|
+
* @param {CompileTimeValue} r right operand
|
|
651
|
+
* @returns {boolean} the result
|
|
632
652
|
*/
|
|
633
|
-
const LESS_THAN = (l, r) =>
|
|
653
|
+
const LESS_THAN = (l, r) =>
|
|
654
|
+
/** @type {number} */ (l) < /** @type {number} */ (r);
|
|
634
655
|
|
|
635
656
|
/**
|
|
636
|
-
* @param {
|
|
637
|
-
* @param {
|
|
638
|
-
* @returns {
|
|
657
|
+
* @param {CompileTimeValue} l left operand
|
|
658
|
+
* @param {CompileTimeValue} r right operand
|
|
659
|
+
* @returns {boolean} the result
|
|
639
660
|
*/
|
|
640
|
-
const GREATER_THAN = (l, r) =>
|
|
661
|
+
const GREATER_THAN = (l, r) =>
|
|
662
|
+
/** @type {number} */ (l) > /** @type {number} */ (r);
|
|
641
663
|
|
|
642
664
|
/**
|
|
643
|
-
* @param {
|
|
644
|
-
* @param {
|
|
645
|
-
* @returns {
|
|
665
|
+
* @param {CompileTimeValue} l left operand
|
|
666
|
+
* @param {CompileTimeValue} r right operand
|
|
667
|
+
* @returns {boolean} the result
|
|
646
668
|
*/
|
|
647
|
-
const LESS_THAN_OR_EQUAL = (l, r) =>
|
|
669
|
+
const LESS_THAN_OR_EQUAL = (l, r) =>
|
|
670
|
+
/** @type {number} */ (l) <= /** @type {number} */ (r);
|
|
648
671
|
|
|
649
672
|
/**
|
|
650
|
-
* @param {
|
|
651
|
-
* @param {
|
|
652
|
-
* @returns {
|
|
673
|
+
* @param {CompileTimeValue} l left operand
|
|
674
|
+
* @param {CompileTimeValue} r right operand
|
|
675
|
+
* @returns {boolean} the result
|
|
653
676
|
*/
|
|
654
|
-
const GREATER_THAN_OR_EQUAL = (l, r) =>
|
|
677
|
+
const GREATER_THAN_OR_EQUAL = (l, r) =>
|
|
678
|
+
/** @type {number} */ (l) >= /** @type {number} */ (r);
|
|
655
679
|
|
|
656
680
|
/**
|
|
657
|
-
* @param {
|
|
658
|
-
* @returns {
|
|
681
|
+
* @param {CompileTimeValue} v operand
|
|
682
|
+
* @returns {number | bigint} the result
|
|
659
683
|
*/
|
|
660
|
-
const BITWISE_NOT = (v) => ~v;
|
|
684
|
+
const BITWISE_NOT = (v) => ~(/** @type {number} */ (v));
|
|
661
685
|
|
|
662
686
|
/**
|
|
663
|
-
* @param {
|
|
664
|
-
* @returns {
|
|
687
|
+
* @param {CompileTimeValue} v operand
|
|
688
|
+
* @returns {number} the result
|
|
665
689
|
*/
|
|
666
690
|
// eslint-disable-next-line no-implicit-coercion
|
|
667
|
-
const TO_NUMBER = (v) => +v;
|
|
691
|
+
const TO_NUMBER = (v) => +(/** @type {number} */ (v));
|
|
668
692
|
|
|
669
693
|
/**
|
|
670
|
-
* @param {
|
|
671
|
-
* @returns {
|
|
694
|
+
* @param {CompileTimeValue} v operand
|
|
695
|
+
* @returns {number | bigint} the result
|
|
672
696
|
*/
|
|
673
|
-
const NEGATE = (v) => -v;
|
|
697
|
+
const NEGATE = (v) => -(/** @type {number} */ (v));
|
|
674
698
|
|
|
675
699
|
/**
|
|
676
700
|
* Evaluates a binary expression if and only if it is a const operation (e.g. 1 + 2, "a" + "b", etc.).
|
|
@@ -1061,7 +1085,9 @@ const collectHoistedDeclaration = (statement, hoisted) => {
|
|
|
1061
1085
|
*/
|
|
1062
1086
|
const moduleDeclarationsOf = (ast, trusted) => {
|
|
1063
1087
|
if (trusted) {
|
|
1064
|
-
const recorded =
|
|
1088
|
+
const recorded =
|
|
1089
|
+
/** @type {Program & { [MODULE_DECLARATIONS]?: ModuleDeclarations }} */
|
|
1090
|
+
(ast)[MODULE_DECLARATIONS];
|
|
1065
1091
|
if (recorded !== undefined) return recorded;
|
|
1066
1092
|
}
|
|
1067
1093
|
/** @type {ModuleDeclarations} */
|
|
@@ -1086,7 +1112,9 @@ const moduleDeclarationsOf = (ast, trusted) => {
|
|
|
1086
1112
|
*/
|
|
1087
1113
|
const hoistedDeclarationsOf = (node, trusted) => {
|
|
1088
1114
|
if (trusted) {
|
|
1089
|
-
const recorded =
|
|
1115
|
+
const recorded =
|
|
1116
|
+
/** @type {(Program | BlockStatement) & { [HOISTED_DECLARATIONS]?: HoistedDeclarations }} */
|
|
1117
|
+
(node)[HOISTED_DECLARATIONS];
|
|
1090
1118
|
if (recorded !== undefined) return recorded;
|
|
1091
1119
|
}
|
|
1092
1120
|
return collectHoistedDeclarations(node.body, EMPTY_HOISTED_DECLARATIONS);
|
|
@@ -1112,6 +1140,14 @@ const collectBlockDeclarations = (statements) => {
|
|
|
1112
1140
|
return overflow === undefined ? mask : overflow;
|
|
1113
1141
|
};
|
|
1114
1142
|
|
|
1143
|
+
/**
|
|
1144
|
+
* @param {Comment} comment comment to compare
|
|
1145
|
+
* @param {number} position source offset
|
|
1146
|
+
* @returns {number} comparison of the comment end with the offset
|
|
1147
|
+
*/
|
|
1148
|
+
const compareCommentEnd = (comment, position) =>
|
|
1149
|
+
/** @type {Range} */ (comment.range)[1] - position;
|
|
1150
|
+
|
|
1115
1151
|
/**
|
|
1116
1152
|
* Whether the source between two offsets is whitespace only.
|
|
1117
1153
|
* @param {string} source the module source
|
|
@@ -1202,13 +1238,13 @@ class JavascriptParser extends Parser {
|
|
|
1202
1238
|
* Every statement the hoisting pass reads, which a tap on this turns
|
|
1203
1239
|
* back into a walk of them all. Tap `preStatementByType` instead.
|
|
1204
1240
|
* @type {SyncBailHook<[Statement | ModuleDeclaration | MaybeNamedClassDeclaration | MaybeNamedFunctionDeclaration], boolean | void>}
|
|
1205
|
-
* @deprecated TODO
|
|
1241
|
+
* @deprecated TODO in the next major release: remove, with the statement walk it turns on
|
|
1206
1242
|
*/
|
|
1207
1243
|
preStatement: new SyncBailHook(["statement"]),
|
|
1208
1244
|
/**
|
|
1209
1245
|
* Each declaration the parser records: a variable, function or class
|
|
1210
1246
|
* one. Any other type turns the pass back into a walk of every
|
|
1211
|
-
* statement, and goes away with that walk in
|
|
1247
|
+
* statement, and goes away with that walk in the next major release.
|
|
1212
1248
|
* @type {HookMap<SyncBailHook<[Statement | ModuleDeclaration | MaybeNamedClassDeclaration | MaybeNamedFunctionDeclaration], boolean | void>>}
|
|
1213
1249
|
* @since 5.109.0
|
|
1214
1250
|
*/
|
|
@@ -1218,13 +1254,13 @@ class JavascriptParser extends Parser {
|
|
|
1218
1254
|
* Every statement the block pass reads, which a tap on this turns back
|
|
1219
1255
|
* into a walk of them all. Tap `blockPreStatementByType` instead.
|
|
1220
1256
|
* @type {SyncBailHook<[Statement | ModuleDeclaration | MaybeNamedClassDeclaration | MaybeNamedFunctionDeclaration], boolean | void>}
|
|
1221
|
-
* @deprecated TODO
|
|
1257
|
+
* @deprecated TODO in the next major release: remove, with the statement walk it turns on
|
|
1222
1258
|
*/
|
|
1223
1259
|
blockPreStatement: new SyncBailHook(["declaration"]),
|
|
1224
1260
|
/**
|
|
1225
1261
|
* Each statement the parser records for the block pass: a variable, class
|
|
1226
1262
|
* or export declaration. Any other type turns the pass back into a walk
|
|
1227
|
-
* of every statement, and goes away with that walk in
|
|
1263
|
+
* of every statement, and goes away with that walk in the next major release.
|
|
1228
1264
|
* @type {HookMap<SyncBailHook<[Statement | ModuleDeclaration | MaybeNamedClassDeclaration | MaybeNamedFunctionDeclaration], boolean | void>>}
|
|
1229
1265
|
* @since 5.109.0
|
|
1230
1266
|
*/
|
|
@@ -2102,7 +2138,7 @@ class JavascriptParser extends Parser {
|
|
|
2102
2138
|
const info = this.getVariableInfo(/** @type {Identifier} */ (expr).name);
|
|
2103
2139
|
if (
|
|
2104
2140
|
typeof info === "string" ||
|
|
2105
|
-
(info
|
|
2141
|
+
(JavascriptParser.isVariableInfo(info) &&
|
|
2106
2142
|
(info.isFree() ||
|
|
2107
2143
|
info.isTagged() ||
|
|
2108
2144
|
// Walk `tagInfo` in `callHooksForInfo` if tagInfo is present.
|
|
@@ -2121,7 +2157,8 @@ class JavascriptParser extends Parser {
|
|
|
2121
2157
|
const info = this.getVariableInfo("this");
|
|
2122
2158
|
if (
|
|
2123
2159
|
typeof info === "string" ||
|
|
2124
|
-
(
|
|
2160
|
+
(JavascriptParser.isVariableInfo(info) &&
|
|
2161
|
+
(info.isFree() || info.isTagged()))
|
|
2125
2162
|
) {
|
|
2126
2163
|
return {
|
|
2127
2164
|
name: info,
|
|
@@ -2715,7 +2752,7 @@ class JavascriptParser extends Parser {
|
|
|
2715
2752
|
* Walk every statement of a scope to declare what hoists to it. Only a tap
|
|
2716
2753
|
* on the deprecated `preStatement` hook asks for this.
|
|
2717
2754
|
* @param {(Statement | ModuleDeclaration)[]} statements statements
|
|
2718
|
-
* @deprecated TODO
|
|
2755
|
+
* @deprecated TODO in the next major release: remove, with the `preStatement` hook
|
|
2719
2756
|
*/
|
|
2720
2757
|
preWalkStatements(statements) {
|
|
2721
2758
|
for (let index = 0, len = statements.length; index < len; index++) {
|
|
@@ -2726,7 +2763,7 @@ class JavascriptParser extends Parser {
|
|
|
2726
2763
|
/**
|
|
2727
2764
|
* Pre walk block statement.
|
|
2728
2765
|
* @param {BlockStatement} statement block statement
|
|
2729
|
-
* @deprecated TODO
|
|
2766
|
+
* @deprecated TODO in the next major release: remove, with the `preStatement` hook
|
|
2730
2767
|
*/
|
|
2731
2768
|
preWalkBlockStatement(statement) {
|
|
2732
2769
|
this.preWalkStatements(statement.body);
|
|
@@ -2735,7 +2772,7 @@ class JavascriptParser extends Parser {
|
|
|
2735
2772
|
/**
|
|
2736
2773
|
* Pre walk if statement.
|
|
2737
2774
|
* @param {IfStatement} statement if statement
|
|
2738
|
-
* @deprecated TODO
|
|
2775
|
+
* @deprecated TODO in the next major release: remove, with the `preStatement` hook
|
|
2739
2776
|
*/
|
|
2740
2777
|
preWalkIfStatement(statement) {
|
|
2741
2778
|
this.preWalkStatement(statement.consequent);
|
|
@@ -2747,7 +2784,7 @@ class JavascriptParser extends Parser {
|
|
|
2747
2784
|
/**
|
|
2748
2785
|
* Pre walk labeled statement.
|
|
2749
2786
|
* @param {LabeledStatement} statement labeled statement
|
|
2750
|
-
* @deprecated TODO
|
|
2787
|
+
* @deprecated TODO in the next major release: remove, with the `preStatement` hook
|
|
2751
2788
|
*/
|
|
2752
2789
|
preWalkLabeledStatement(statement) {
|
|
2753
2790
|
this.preWalkStatement(statement.body);
|
|
@@ -2756,7 +2793,7 @@ class JavascriptParser extends Parser {
|
|
|
2756
2793
|
/**
|
|
2757
2794
|
* Pre walk with statement.
|
|
2758
2795
|
* @param {WithStatement} statement with statement
|
|
2759
|
-
* @deprecated TODO
|
|
2796
|
+
* @deprecated TODO in the next major release: remove, with the `preStatement` hook
|
|
2760
2797
|
*/
|
|
2761
2798
|
preWalkWithStatement(statement) {
|
|
2762
2799
|
this.preWalkStatement(statement.body);
|
|
@@ -2765,7 +2802,7 @@ class JavascriptParser extends Parser {
|
|
|
2765
2802
|
/**
|
|
2766
2803
|
* Pre walk switch statement.
|
|
2767
2804
|
* @param {SwitchStatement} statement switch statement
|
|
2768
|
-
* @deprecated TODO
|
|
2805
|
+
* @deprecated TODO in the next major release: remove, with the `preStatement` hook
|
|
2769
2806
|
*/
|
|
2770
2807
|
preWalkSwitchStatement(statement) {
|
|
2771
2808
|
this.preWalkSwitchCases(statement.cases);
|
|
@@ -2774,7 +2811,7 @@ class JavascriptParser extends Parser {
|
|
|
2774
2811
|
/**
|
|
2775
2812
|
* Pre walk switch cases.
|
|
2776
2813
|
* @param {SwitchCase[]} switchCases switch cases
|
|
2777
|
-
* @deprecated TODO
|
|
2814
|
+
* @deprecated TODO in the next major release: remove, with the `preStatement` hook
|
|
2778
2815
|
*/
|
|
2779
2816
|
preWalkSwitchCases(switchCases) {
|
|
2780
2817
|
for (let index = 0, len = switchCases.length; index < len; index++) {
|
|
@@ -2785,7 +2822,7 @@ class JavascriptParser extends Parser {
|
|
|
2785
2822
|
/**
|
|
2786
2823
|
* Pre walk try statement.
|
|
2787
2824
|
* @param {TryStatement} statement try statement
|
|
2788
|
-
* @deprecated TODO
|
|
2825
|
+
* @deprecated TODO in the next major release: remove, with the `preStatement` hook
|
|
2789
2826
|
*/
|
|
2790
2827
|
preWalkTryStatement(statement) {
|
|
2791
2828
|
this.preWalkStatement(statement.block);
|
|
@@ -2796,7 +2833,7 @@ class JavascriptParser extends Parser {
|
|
|
2796
2833
|
/**
|
|
2797
2834
|
* Pre walk catch clause.
|
|
2798
2835
|
* @param {CatchClause} catchClause catch clause
|
|
2799
|
-
* @deprecated TODO
|
|
2836
|
+
* @deprecated TODO in the next major release: remove, with the `preStatement` hook
|
|
2800
2837
|
*/
|
|
2801
2838
|
preWalkCatchClause(catchClause) {
|
|
2802
2839
|
this.preWalkStatement(catchClause.body);
|
|
@@ -2805,7 +2842,7 @@ class JavascriptParser extends Parser {
|
|
|
2805
2842
|
/**
|
|
2806
2843
|
* Pre walk while statement.
|
|
2807
2844
|
* @param {WhileStatement} statement while statement
|
|
2808
|
-
* @deprecated TODO
|
|
2845
|
+
* @deprecated TODO in the next major release: remove, with the `preStatement` hook
|
|
2809
2846
|
*/
|
|
2810
2847
|
preWalkWhileStatement(statement) {
|
|
2811
2848
|
this.preWalkStatement(statement.body);
|
|
@@ -2814,7 +2851,7 @@ class JavascriptParser extends Parser {
|
|
|
2814
2851
|
/**
|
|
2815
2852
|
* Pre walk do while statement.
|
|
2816
2853
|
* @param {DoWhileStatement} statement do while statement
|
|
2817
|
-
* @deprecated TODO
|
|
2854
|
+
* @deprecated TODO in the next major release: remove, with the `preStatement` hook
|
|
2818
2855
|
*/
|
|
2819
2856
|
preWalkDoWhileStatement(statement) {
|
|
2820
2857
|
this.preWalkStatement(statement.body);
|
|
@@ -2823,7 +2860,7 @@ class JavascriptParser extends Parser {
|
|
|
2823
2860
|
/**
|
|
2824
2861
|
* Pre walk for statement.
|
|
2825
2862
|
* @param {ForStatement} statement for statement
|
|
2826
|
-
* @deprecated TODO
|
|
2863
|
+
* @deprecated TODO in the next major release: remove, with the `preStatement` hook
|
|
2827
2864
|
*/
|
|
2828
2865
|
preWalkForStatement(statement) {
|
|
2829
2866
|
if (statement.init && statement.init.type === "VariableDeclaration") {
|
|
@@ -2835,7 +2872,7 @@ class JavascriptParser extends Parser {
|
|
|
2835
2872
|
/**
|
|
2836
2873
|
* Pre walk for in statement.
|
|
2837
2874
|
* @param {ForInStatement} statement for in statement
|
|
2838
|
-
* @deprecated TODO
|
|
2875
|
+
* @deprecated TODO in the next major release: remove, with the `preStatement` hook
|
|
2839
2876
|
*/
|
|
2840
2877
|
preWalkForInStatement(statement) {
|
|
2841
2878
|
if (statement.left.type === "VariableDeclaration") {
|
|
@@ -2847,7 +2884,7 @@ class JavascriptParser extends Parser {
|
|
|
2847
2884
|
/**
|
|
2848
2885
|
* Pre walk for of statement. `for await` is reported by the walk, not here.
|
|
2849
2886
|
* @param {ForOfStatement} statement for of statement
|
|
2850
|
-
* @deprecated TODO
|
|
2887
|
+
* @deprecated TODO in the next major release: remove, with the `preStatement` hook
|
|
2851
2888
|
*/
|
|
2852
2889
|
preWalkForOfStatement(statement) {
|
|
2853
2890
|
if (statement.left.type === "VariableDeclaration") {
|
|
@@ -2859,7 +2896,7 @@ class JavascriptParser extends Parser {
|
|
|
2859
2896
|
/**
|
|
2860
2897
|
* Scan every top-level statement for the program's module declarations.
|
|
2861
2898
|
* The parser records them now, so nothing inside webpack scans for them.
|
|
2862
|
-
* @deprecated TODO
|
|
2899
|
+
* @deprecated TODO in the next major release: remove
|
|
2863
2900
|
* @param {(Statement | ModuleDeclaration)[]} statements statements
|
|
2864
2901
|
*/
|
|
2865
2902
|
modulePreWalkStatements(statements) {
|
|
@@ -2883,7 +2920,7 @@ class JavascriptParser extends Parser {
|
|
|
2883
2920
|
* Walk every statement of a list to declare what it binds. Only a tap on the
|
|
2884
2921
|
* deprecated `blockPreStatement` hook asks for this.
|
|
2885
2922
|
* @param {(Statement | ModuleDeclaration)[]} statements statements
|
|
2886
|
-
* @deprecated TODO
|
|
2923
|
+
* @deprecated TODO in the next major release: remove, with the `blockPreStatement` hook
|
|
2887
2924
|
*/
|
|
2888
2925
|
blockPreWalkStatements(statements) {
|
|
2889
2926
|
for (let index = 0, len = statements.length; index < len; index++) {
|
|
@@ -2912,7 +2949,9 @@ class JavascriptParser extends Parser {
|
|
|
2912
2949
|
/** @type {BlockDeclarations | undefined} */
|
|
2913
2950
|
let recorded;
|
|
2914
2951
|
if (this._hasParserRecord) {
|
|
2915
|
-
recorded =
|
|
2952
|
+
recorded =
|
|
2953
|
+
/** @type {typeof node & { [BLOCK_DECLARATIONS]?: BlockDeclarations }} */
|
|
2954
|
+
(node)[BLOCK_DECLARATIONS];
|
|
2916
2955
|
// 72.8% of the lists a build reads declare nothing, and saying so is
|
|
2917
2956
|
// the whole pass for them
|
|
2918
2957
|
if (recorded === 0) return;
|
|
@@ -3217,7 +3256,7 @@ class JavascriptParser extends Parser {
|
|
|
3217
3256
|
/**
|
|
3218
3257
|
* Walks a conditional branch with its guard frame (if any) pushed onto the
|
|
3219
3258
|
* parser-state guard stack for the duration of the branch body.
|
|
3220
|
-
* @param {
|
|
3259
|
+
* @param {GuardFrame | undefined | null} frame guard frame, or falsy when the branch is unguarded
|
|
3221
3260
|
* @param {() => void} walk branch walk
|
|
3222
3261
|
* @returns {void}
|
|
3223
3262
|
*/
|
|
@@ -5600,7 +5639,7 @@ class JavascriptParser extends Parser {
|
|
|
5600
5639
|
if (typeof info === "string") {
|
|
5601
5640
|
name = info;
|
|
5602
5641
|
} else {
|
|
5603
|
-
if (!(info
|
|
5642
|
+
if (!JavascriptParser.isVariableInfo(info)) {
|
|
5604
5643
|
if (defined !== undefined) {
|
|
5605
5644
|
return defined();
|
|
5606
5645
|
}
|
|
@@ -5646,7 +5685,7 @@ class JavascriptParser extends Parser {
|
|
|
5646
5685
|
*/
|
|
5647
5686
|
_hasHooksForInfo(hookMap, info) {
|
|
5648
5687
|
if (typeof info === "string") return hookMap.get(info) !== undefined;
|
|
5649
|
-
if (!(info
|
|
5688
|
+
if (!JavascriptParser.isVariableInfo(info)) return false;
|
|
5650
5689
|
let tagInfo = info.tagInfo;
|
|
5651
5690
|
while (tagInfo !== undefined) {
|
|
5652
5691
|
if (hookMap.get(tagInfo.tag) !== undefined) return true;
|
|
@@ -5710,7 +5749,7 @@ class JavascriptParser extends Parser {
|
|
|
5710
5749
|
if (typeof info === "string") {
|
|
5711
5750
|
name = info;
|
|
5712
5751
|
} else {
|
|
5713
|
-
if (!(info
|
|
5752
|
+
if (!JavascriptParser.isVariableInfo(info)) {
|
|
5714
5753
|
return;
|
|
5715
5754
|
}
|
|
5716
5755
|
let tagInfo = info.tagInfo;
|
|
@@ -5887,6 +5926,37 @@ class JavascriptParser extends Parser {
|
|
|
5887
5926
|
return oldScope;
|
|
5888
5927
|
}
|
|
5889
5928
|
|
|
5929
|
+
/**
|
|
5930
|
+
* The directive a statement spells, or `undefined` when it is not one. An
|
|
5931
|
+
* AST webpack did not parse may leave the metadata off a directive, so the
|
|
5932
|
+
* spelling is recovered from the literal itself there.
|
|
5933
|
+
* @param {Directive | Statement | ModuleDeclaration} statement statement
|
|
5934
|
+
* @returns {string | undefined} the spelling between the quotes
|
|
5935
|
+
*/
|
|
5936
|
+
getDirective(statement) {
|
|
5937
|
+
if (statement.type !== "ExpressionStatement") return undefined;
|
|
5938
|
+
const directive = /** @type {Directive} */ (statement).directive;
|
|
5939
|
+
if (directive !== undefined || this._hasParserRecord) return directive;
|
|
5940
|
+
const expression = statement.expression;
|
|
5941
|
+
if (expression.type !== "Literal" || typeof expression.value !== "string") {
|
|
5942
|
+
return undefined;
|
|
5943
|
+
}
|
|
5944
|
+
// a parenthesized string is an expression rather than a directive, and
|
|
5945
|
+
// only the statement says so — the literal starts inside the parentheses
|
|
5946
|
+
if (
|
|
5947
|
+
statement.range !== undefined &&
|
|
5948
|
+
expression.range !== undefined &&
|
|
5949
|
+
statement.range[0] !== expression.range[0]
|
|
5950
|
+
) {
|
|
5951
|
+
return undefined;
|
|
5952
|
+
}
|
|
5953
|
+
// the raw text keeps an escape unexpanded, which is what separates a
|
|
5954
|
+
// directive from a string that merely reads like one
|
|
5955
|
+
return expression.raw === undefined
|
|
5956
|
+
? expression.value
|
|
5957
|
+
: expression.raw.slice(1, -1);
|
|
5958
|
+
}
|
|
5959
|
+
|
|
5890
5960
|
/**
|
|
5891
5961
|
* Processes the provided statement.
|
|
5892
5962
|
* @param {(Directive | Statement | ModuleDeclaration)[]} statements statements
|
|
@@ -5901,11 +5971,17 @@ class JavascriptParser extends Parser {
|
|
|
5901
5971
|
return;
|
|
5902
5972
|
}
|
|
5903
5973
|
const value = /** @type {Literal} */ (statement.expression).value;
|
|
5904
|
-
if (value === "use
|
|
5905
|
-
this.scope.isStrict = true;
|
|
5906
|
-
} else if (value === "use asm") {
|
|
5974
|
+
if (value === "use asm") {
|
|
5907
5975
|
this.scope.isAsmJs = true;
|
|
5908
5976
|
}
|
|
5977
|
+
for (const directiveStatement of statements) {
|
|
5978
|
+
const directive = this.getDirective(directiveStatement);
|
|
5979
|
+
if (directive === undefined) break;
|
|
5980
|
+
if (directive === "use strict") {
|
|
5981
|
+
this.scope.isStrict = true;
|
|
5982
|
+
break;
|
|
5983
|
+
}
|
|
5984
|
+
}
|
|
5909
5985
|
}
|
|
5910
5986
|
|
|
5911
5987
|
/**
|
|
@@ -6672,7 +6748,11 @@ class JavascriptParser extends Parser {
|
|
|
6672
6748
|
const comments = this.comments;
|
|
6673
6749
|
if (comments === undefined) return position;
|
|
6674
6750
|
const source = this._source;
|
|
6675
|
-
for (
|
|
6751
|
+
for (
|
|
6752
|
+
let index = binarySearchBounds.le(comments, position, compareCommentEnd);
|
|
6753
|
+
index >= 0;
|
|
6754
|
+
index--
|
|
6755
|
+
) {
|
|
6676
6756
|
const range = /** @type {Range} */ (comments[index].range);
|
|
6677
6757
|
if (range[1] > position) continue;
|
|
6678
6758
|
// with no source to read, nothing can be ruled out, so the run is
|
|
@@ -6870,7 +6950,7 @@ class JavascriptParser extends Parser {
|
|
|
6870
6950
|
*/
|
|
6871
6951
|
getTagData(name, tag) {
|
|
6872
6952
|
const info = this.scope.definitions.get(name);
|
|
6873
|
-
if (info
|
|
6953
|
+
if (JavascriptParser.isVariableInfo(info)) {
|
|
6874
6954
|
let tagInfo = info.tagInfo;
|
|
6875
6955
|
while (tagInfo !== undefined) {
|
|
6876
6956
|
if (tagInfo.tag === tag) return tagInfo.data;
|
|
@@ -6896,7 +6976,7 @@ class JavascriptParser extends Parser {
|
|
|
6896
6976
|
data,
|
|
6897
6977
|
next: undefined
|
|
6898
6978
|
});
|
|
6899
|
-
} else if (oldInfo
|
|
6979
|
+
} else if (JavascriptParser.isVariableInfo(oldInfo)) {
|
|
6900
6980
|
newInfo = new VariableInfo(
|
|
6901
6981
|
oldInfo.declaredScope,
|
|
6902
6982
|
oldInfo.name,
|
|
@@ -6926,7 +7006,7 @@ class JavascriptParser extends Parser {
|
|
|
6926
7006
|
const oldInfo = this.scope.definitions.get(name);
|
|
6927
7007
|
// Don't redefine variable in same scope to keep existing tags
|
|
6928
7008
|
if (
|
|
6929
|
-
oldInfo
|
|
7009
|
+
JavascriptParser.isVariableInfo(oldInfo) &&
|
|
6930
7010
|
oldInfo.declaredScope === this.scope
|
|
6931
7011
|
) {
|
|
6932
7012
|
return;
|
|
@@ -6952,7 +7032,7 @@ class JavascriptParser extends Parser {
|
|
|
6952
7032
|
isVariableDefined(name) {
|
|
6953
7033
|
const info = this.scope.definitions.get(name);
|
|
6954
7034
|
if (info === undefined) return false;
|
|
6955
|
-
if (info
|
|
7035
|
+
if (JavascriptParser.isVariableInfo(info)) {
|
|
6956
7036
|
return !info.isFree();
|
|
6957
7037
|
}
|
|
6958
7038
|
return true;
|
|
@@ -6968,7 +7048,7 @@ class JavascriptParser extends Parser {
|
|
|
6968
7048
|
_isDefinedPlainVariable(name) {
|
|
6969
7049
|
const info = this.scope.definitions.get(name);
|
|
6970
7050
|
if (info === undefined) return false;
|
|
6971
|
-
if (info
|
|
7051
|
+
if (JavascriptParser.isVariableInfo(info)) {
|
|
6972
7052
|
return !(info.isFree() || info.isTagged() || info.tagInfo !== undefined);
|
|
6973
7053
|
}
|
|
6974
7054
|
return true;
|
|
@@ -7031,7 +7111,7 @@ class JavascriptParser extends Parser {
|
|
|
7031
7111
|
/**
|
|
7032
7112
|
* Parses comment options.
|
|
7033
7113
|
* @param {Range} range range of the comment
|
|
7034
|
-
* @returns {{ options:
|
|
7114
|
+
* @returns {{ options: MagicCommentOptions | null, errors: (Error & { comment: Comment })[] | null }} result
|
|
7035
7115
|
*/
|
|
7036
7116
|
parseCommentOptions(range) {
|
|
7037
7117
|
return parseCommentOptionsInRange(
|
|
@@ -7131,7 +7211,7 @@ class JavascriptParser extends Parser {
|
|
|
7131
7211
|
const info = this.getVariableInfo(varName);
|
|
7132
7212
|
/** @type {string} */
|
|
7133
7213
|
let name;
|
|
7134
|
-
if (info
|
|
7214
|
+
if (JavascriptParser.isVariableInfo(info) && info.name) {
|
|
7135
7215
|
if (!info.isFree()) return;
|
|
7136
7216
|
name = info.name;
|
|
7137
7217
|
} else if (typeof info !== "string") {
|
|
@@ -7151,7 +7231,7 @@ class JavascriptParser extends Parser {
|
|
|
7151
7231
|
const info = this.getVariableInfo(varName);
|
|
7152
7232
|
/** @type {string} */
|
|
7153
7233
|
let name;
|
|
7154
|
-
if (info
|
|
7234
|
+
if (JavascriptParser.isVariableInfo(info) && info.name) {
|
|
7155
7235
|
if (!info.isFree() && !info.isTagged()) return;
|
|
7156
7236
|
name = info.name;
|
|
7157
7237
|
} else if (typeof info !== "string") {
|
|
@@ -7262,7 +7342,7 @@ class JavascriptParser extends Parser {
|
|
|
7262
7342
|
*/
|
|
7263
7343
|
_resolveMemberRoot(rootName) {
|
|
7264
7344
|
const info = this.getVariableInfo(rootName);
|
|
7265
|
-
if (info
|
|
7345
|
+
if (JavascriptParser.isVariableInfo(info) && info.name) {
|
|
7266
7346
|
if (!info.isFree() && !info.isTagged()) return;
|
|
7267
7347
|
this._memberRootInfo = info;
|
|
7268
7348
|
return info.name;
|
|
@@ -7393,6 +7473,15 @@ class JavascriptParser extends Parser {
|
|
|
7393
7473
|
);
|
|
7394
7474
|
}
|
|
7395
7475
|
|
|
7476
|
+
/**
|
|
7477
|
+
* Whether a definition is a variable rather than a free name or a scope.
|
|
7478
|
+
* @param {unknown} value a scope definition
|
|
7479
|
+
* @returns {value is VariableInfo} true when the value is a variable
|
|
7480
|
+
*/
|
|
7481
|
+
static isVariableInfo(value) {
|
|
7482
|
+
return value instanceof VariableInfo;
|
|
7483
|
+
}
|
|
7484
|
+
|
|
7396
7485
|
/**
|
|
7397
7486
|
* Get module parse function.
|
|
7398
7487
|
* @param {Compilation} compilation compilation
|
|
@@ -7401,10 +7490,7 @@ class JavascriptParser extends Parser {
|
|
|
7401
7490
|
*/
|
|
7402
7491
|
static _getModuleParseFunction(compilation, module) {
|
|
7403
7492
|
// Get from module if available
|
|
7404
|
-
if (
|
|
7405
|
-
module instanceof NormalModule &&
|
|
7406
|
-
module.parser instanceof JavascriptParser
|
|
7407
|
-
) {
|
|
7493
|
+
if (module.is("normal") && module.parser instanceof JavascriptParser) {
|
|
7408
7494
|
return module.parser.options.parse;
|
|
7409
7495
|
}
|
|
7410
7496
|
|