@depup/webpack 5.109.0-depup.0 → 5.110.1-depup.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +7 -7
- package/bin/webpack.js +12 -0
- package/changes.json +10 -10
- package/lib/APIPlugin.js +123 -17
- package/lib/AsyncDependenciesBlock.js +10 -7
- package/lib/AutomaticPrefetchPlugin.js +1 -1
- package/lib/BannerPlugin.js +10 -6
- package/lib/CacheFacade.js +6 -6
- package/lib/Chunk.js +14 -11
- package/lib/ChunkGraph.js +43 -32
- package/lib/ChunkGroup.js +7 -7
- package/lib/ChunkTemplate.js +35 -44
- package/lib/CircularModulesPlugin.js +205 -28
- package/lib/CleanPlugin.js +15 -16
- package/lib/CodeGenerationResults.js +11 -8
- package/lib/CompatibilityPlugin.js +38 -7
- package/lib/Compilation.js +709 -414
- package/lib/Compiler.js +69 -42
- package/lib/ConcatenationScope.js +117 -8
- package/lib/ConditionalInitFragment.js +3 -3
- package/lib/ConstPlugin.js +13 -11
- package/lib/ContextExclusionPlugin.js +1 -1
- package/lib/ContextModule.js +146 -54
- package/lib/ContextModuleFactory.js +46 -14
- package/lib/ContextReplacementPlugin.js +12 -14
- package/lib/DefinePlugin.js +168 -57
- package/lib/DependenciesBlock.js +9 -6
- package/lib/Dependency.js +36 -16
- package/lib/DependencyTemplate.js +11 -12
- package/lib/DependencyTemplates.js +3 -3
- package/lib/DotenvPlugin.js +50 -13
- package/lib/DynamicEntryPlugin.js +8 -4
- package/lib/EntryOptionPlugin.js +8 -4
- package/lib/EntryPlugin.js +2 -2
- package/lib/Entrypoint.js +6 -2
- package/lib/EnvironmentPlugin.js +2 -2
- package/lib/EvalDevToolModulePlugin.js +8 -4
- package/lib/EvalSourceMapDevToolPlugin.js +15 -8
- package/lib/ExportsInfo.js +123 -19
- package/lib/ExportsInfoApiPlugin.js +2 -4
- package/lib/ExternalModule.js +242 -84
- package/lib/ExternalModuleFactoryPlugin.js +97 -38
- package/lib/ExternalsPlugin.js +10 -6
- package/lib/FileSystemInfo.js +116 -42
- package/lib/FlagAllModulesAsUsedPlugin.js +2 -3
- package/lib/FlagDependencyExportsPlugin.js +76 -19
- package/lib/FlagDependencyUsagePlugin.js +63 -57
- package/lib/FlagEntryExportAsUsedPlugin.js +1 -1
- package/lib/Generator.js +36 -15
- package/lib/HotModuleReplacementPlugin.js +16 -44
- package/lib/IgnorePlugin.js +8 -4
- package/lib/IgnoreWarningsPlugin.js +2 -2
- package/lib/InitFragment.js +28 -36
- package/lib/JavascriptMetaInfoPlugin.js +35 -4
- package/lib/LazyBarrel.js +3 -4
- package/lib/LibraryTemplatePlugin.js +10 -6
- package/lib/LoaderOptionsPlugin.js +7 -3
- package/lib/LoaderTargetPlugin.js +1 -1
- package/lib/MainTemplate.js +49 -42
- package/lib/ManifestPlugin.js +12 -11
- package/lib/Module.js +62 -33
- package/lib/ModuleFactory.js +3 -3
- package/lib/ModuleFilenameHelpers.js +22 -6
- package/lib/ModuleGraph.js +195 -21
- package/lib/ModuleGraphConnection.js +6 -13
- package/lib/ModuleInfoHeaderPlugin.js +8 -10
- package/lib/ModuleTemplate.js +62 -63
- package/lib/MultiCompiler.js +130 -64
- package/lib/MultiStats.js +40 -9
- package/lib/MultiWatching.js +3 -3
- package/lib/NoEmitOnErrorsPlugin.js +1 -1
- package/lib/NodeStuffPlugin.js +29 -19
- package/lib/NormalModule.js +221 -156
- package/lib/NormalModuleFactory.js +563 -112
- package/lib/NormalModuleReplacementPlugin.js +5 -8
- package/lib/NullFactory.js +6 -2
- package/lib/OptionsApply.js +7 -3
- package/lib/Parser.js +7 -3
- package/lib/PlatformPlugin.js +2 -2
- package/lib/PrefetchPlugin.js +1 -1
- package/lib/ProgressPlugin.js +16 -13
- package/lib/ProvidePlugin.js +3 -5
- package/lib/RawModule.js +25 -17
- package/lib/RecordIdsPlugin.js +3 -3
- package/lib/RequestShortener.js +1 -1
- package/lib/ResolverFactory.js +2 -2
- package/lib/RuntimeGlobals.js +22 -10
- package/lib/RuntimeModule.js +29 -19
- package/lib/RuntimePlugin.js +346 -256
- package/lib/RuntimeTemplate.js +2792 -352
- package/lib/SelfModuleFactory.js +7 -3
- package/lib/SourceMapDevToolModuleOptionsPlugin.js +6 -2
- package/lib/SourceMapDevToolPlugin.js +30 -20
- package/lib/Stats.js +3 -4
- package/lib/Template.js +55 -25
- package/lib/TemplatedPathPlugin.js +96 -14
- package/lib/UseStrictPlugin.js +4 -6
- package/lib/WarnCaseSensitiveModulesPlugin.js +4 -4
- package/lib/WarnDeprecatedOptionPlugin.js +1 -1
- package/lib/WarnNoModeSetPlugin.js +1 -1
- package/lib/WatchIgnorePlugin.js +8 -6
- package/lib/Watching.js +8 -8
- package/lib/WebpackIsIncludedPlugin.js +2 -4
- package/lib/WebpackOptionsApply.js +308 -18
- package/lib/WebpackOptionsDefaulter.js +6 -2
- package/lib/asset/AssetBytesGenerator.js +12 -10
- package/lib/asset/AssetBytesParser.js +2 -4
- package/lib/asset/AssetGenerator.js +188 -95
- package/lib/asset/AssetModule.js +7 -3
- package/lib/asset/AssetModulesPlugin.js +110 -38
- package/lib/asset/AssetParser.js +9 -7
- package/lib/asset/AssetSourceGenerator.js +60 -13
- package/lib/asset/AssetSourceParser.js +2 -4
- package/lib/asset/RawDataUrlModule.js +24 -16
- package/lib/asset/WebManifestGenerator.js +8 -10
- package/lib/asset/WebManifestParser.js +24 -10
- package/lib/async-modules/AsyncModuleHelpers.js +2 -2
- package/lib/async-modules/AwaitDependenciesInitFragment.js +2 -2
- package/lib/async-modules/InferAsyncModulesPlugin.js +2 -2
- package/lib/async-modules/isGeneratorLowered.js +4 -4
- package/lib/buildChunkGraph.js +36 -27
- package/lib/bun/BunTargetPlugin.js +1 -1
- package/lib/cache/AddBuildDependenciesPlugin.js +1 -1
- package/lib/cache/AddManagedPathsPlugin.js +1 -1
- package/lib/cache/IdleFileCachePlugin.js +2 -2
- package/lib/cache/MemoryCachePlugin.js +18 -10
- package/lib/cache/MemoryWithGcCachePlugin.js +34 -22
- package/lib/cache/PackFileCacheStrategy.js +289 -28
- package/lib/cache/ResolverCachePlugin.js +38 -18
- package/lib/cache/getLazyHashedEtag.js +1 -2
- package/lib/cache/mergeEtags.js +1 -1
- package/lib/cli.js +1 -3
- package/lib/config/browserslistTargetHandler.js +41 -5
- package/lib/config/defaults.js +282 -81
- package/lib/config/defineConfig.js +10 -2
- package/lib/config/getClaimedAssetTypes.js +65 -0
- package/lib/config/normalization.js +36 -16
- package/lib/config/target.js +46 -3
- package/lib/container/ContainerEntryDependency.js +1 -1
- package/lib/container/ContainerEntryModule.js +24 -15
- package/lib/container/ContainerEntryModuleFactory.js +7 -3
- package/lib/container/ContainerPlugin.js +9 -10
- package/lib/container/ContainerReferencePlugin.js +6 -2
- package/lib/container/FallbackDependency.js +1 -1
- package/lib/container/FallbackModule.js +24 -17
- package/lib/container/FallbackModuleFactory.js +7 -3
- package/lib/container/HoistContainerReferencesPlugin.js +53 -66
- package/lib/container/ModuleFederationPlugin.js +7 -18
- package/lib/container/RemoteModule.js +27 -19
- package/lib/container/RemoteRuntimeModule.js +10 -8
- package/lib/container/moduleFederationHooks.js +32 -0
- package/lib/css/CssGenerator.js +178 -44
- package/lib/css/CssInjectStyleRuntimeModule.js +7 -5
- package/lib/css/CssLoadingRuntimeModule.js +82 -36
- package/lib/css/CssModule.js +10 -7
- package/lib/css/CssModulesPlugin.js +197 -106
- package/lib/css/CssParser.js +1248 -618
- package/lib/css/CssServerStylesRuntimeModule.js +54 -0
- package/lib/css/cssMinify.js +168 -0
- package/lib/css/data.js +5324 -0
- package/lib/css/syntax.js +10396 -952
- package/lib/debug/ProfilingPlugin.js +14 -9
- package/lib/deno/DenoTargetPlugin.js +1 -1
- package/lib/dependencies/AMDDefineDependency.js +112 -87
- package/lib/dependencies/AMDDefineDependencyParserPlugin.js +30 -17
- package/lib/dependencies/AMDPlugin.js +9 -7
- package/lib/dependencies/AMDRequireArrayDependency.js +5 -5
- package/lib/dependencies/AMDRequireContextDependency.js +2 -2
- package/lib/dependencies/AMDRequireDependenciesBlock.js +1 -1
- package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +25 -14
- package/lib/dependencies/AMDRequireDependency.js +8 -7
- package/lib/dependencies/AMDRequireItemDependency.js +1 -1
- package/lib/dependencies/AMDRuntimeModules.js +21 -1
- package/lib/dependencies/BuildTimeConstDependency.js +102 -0
- package/lib/dependencies/CachedConstDependency.js +11 -8
- package/lib/dependencies/CommonJsDependencyHelpers.js +67 -46
- package/lib/dependencies/CommonJsExportRequireDependency.js +140 -45
- package/lib/dependencies/CommonJsExportsDependency.js +53 -49
- package/lib/dependencies/CommonJsExportsParserPlugin.js +207 -25
- package/lib/dependencies/CommonJsFullRequireDependency.js +140 -26
- package/lib/dependencies/CommonJsImportsParserPlugin.js +100 -48
- package/lib/dependencies/CommonJsObjectExportDependency.js +188 -0
- package/lib/dependencies/CommonJsPlugin.js +35 -6
- package/lib/dependencies/CommonJsRequireContextDependency.js +5 -6
- package/lib/dependencies/CommonJsRequireDependency.js +156 -27
- package/lib/dependencies/CommonJsSelfReferenceDependency.js +63 -38
- package/lib/dependencies/ConstDependency.js +8 -9
- package/lib/dependencies/ContextDependency.js +12 -8
- package/lib/dependencies/ContextDependencyHelpers.js +14 -9
- package/lib/dependencies/ContextDependencyTemplateAsId.js +4 -4
- package/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +4 -4
- package/lib/dependencies/ContextElementDependency.js +31 -12
- package/lib/dependencies/CreateRequireParserPlugin.js +12 -7
- package/lib/dependencies/CreateScriptUrlDependency.js +4 -4
- package/lib/dependencies/CssIcssExportDependency.js +56 -28
- package/lib/dependencies/CssIcssImportDependency.js +17 -13
- package/lib/dependencies/CssIcssSymbolDependency.js +9 -10
- package/lib/dependencies/CssImportDependency.js +18 -9
- package/lib/dependencies/CssUrlDependency.js +17 -13
- package/lib/dependencies/DllEntryDependency.js +1 -1
- package/lib/dependencies/DynamicExports.js +2 -2
- package/lib/dependencies/ExportBindingInitFragment.js +36 -9
- package/lib/dependencies/ExportsInfoDependency.js +7 -8
- package/lib/dependencies/ExternalModuleDependency.js +9 -5
- package/lib/dependencies/ExternalModuleInitFragment.js +2 -2
- package/lib/dependencies/ExternalModuleInitFragmentDependency.js +8 -5
- package/lib/dependencies/HarmonyAcceptDependency.js +5 -5
- package/lib/dependencies/HarmonyCompatibilityDependency.js +52 -17
- package/lib/dependencies/HarmonyDetectionParserPlugin.js +11 -7
- package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +15 -11
- package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +78 -12
- package/lib/dependencies/HarmonyExportExpressionDependency.js +23 -18
- package/lib/dependencies/HarmonyExportHeaderDependency.js +7 -7
- package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +159 -71
- package/lib/dependencies/HarmonyExportInitFragment.js +18 -6
- package/lib/dependencies/HarmonyExportSpecifierDependency.js +51 -14
- package/lib/dependencies/HarmonyExports.js +7 -4
- package/lib/dependencies/HarmonyImportDependency.js +28 -20
- package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +31 -24
- package/lib/dependencies/HarmonyImportGuard.js +21 -30
- package/lib/dependencies/HarmonyImportSideEffectDependency.js +38 -9
- package/lib/dependencies/HarmonyImportSpecifierDependency.js +106 -55
- package/lib/dependencies/HarmonyModulesPlugin.js +7 -3
- package/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +1 -3
- package/lib/dependencies/HtmlEntryDependency.js +37 -29
- package/lib/dependencies/HtmlInlineHtmlDependency.js +7 -8
- package/lib/dependencies/HtmlInlineScriptDependency.js +11 -8
- package/lib/dependencies/HtmlInlineStyleDependency.js +7 -10
- package/lib/dependencies/HtmlSourceDependency.js +22 -14
- package/lib/dependencies/ImportContextDependency.js +2 -2
- package/lib/dependencies/ImportDependency.js +24 -20
- package/lib/dependencies/ImportEagerDependency.js +6 -9
- package/lib/dependencies/ImportMetaContextDependency.js +2 -2
- package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +14 -13
- package/lib/dependencies/ImportMetaContextPlugin.js +7 -3
- package/lib/dependencies/ImportMetaGlobDependency.js +2 -2
- package/lib/dependencies/ImportMetaGlobDependencyParserPlugin.js +2 -3
- package/lib/dependencies/ImportMetaGlobHelpers.js +19 -22
- package/lib/dependencies/ImportMetaHotAcceptDependency.js +1 -1
- package/lib/dependencies/ImportMetaHotDeclineDependency.js +1 -1
- package/lib/dependencies/ImportMetaPlugin.js +154 -71
- package/lib/dependencies/ImportMetaResolveDependency.js +3 -4
- package/lib/dependencies/ImportParserPlugin.js +49 -35
- package/lib/dependencies/ImportPhase.js +12 -5
- package/lib/dependencies/ImportPlugin.js +7 -3
- package/lib/dependencies/ImportWeakDependency.js +6 -9
- package/lib/dependencies/JsonExportsDependency.js +11 -7
- package/lib/dependencies/LoaderDependency.js +2 -2
- package/lib/dependencies/LoaderImportDependency.js +2 -2
- package/lib/dependencies/LoaderPlugin.js +11 -7
- package/lib/dependencies/LocalModuleDependency.js +5 -5
- package/lib/dependencies/LocalModulesHelpers.js +1 -1
- package/lib/dependencies/ModuleDecoratorDependency.js +6 -7
- package/lib/dependencies/ModuleDependency.js +9 -6
- package/lib/dependencies/ModuleDependencyTemplateAsId.js +4 -4
- package/lib/dependencies/ModuleDependencyTemplateAsRequireId.js +3 -3
- package/lib/dependencies/ModuleHotAcceptDependency.js +1 -1
- package/lib/dependencies/ModuleHotDeclineDependency.js +1 -1
- package/lib/dependencies/ModuleInitFragmentDependency.js +24 -10
- package/lib/dependencies/NullDependency.js +3 -3
- package/lib/dependencies/ProvidedDependency.js +14 -10
- package/lib/dependencies/PureExpressionDependency.js +9 -10
- package/lib/dependencies/RequireContextDependency.js +2 -2
- package/lib/dependencies/RequireContextDependencyParserPlugin.js +2 -4
- package/lib/dependencies/RequireContextPlugin.js +8 -4
- package/lib/dependencies/RequireEnsureDependenciesBlock.js +2 -2
- package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +5 -8
- package/lib/dependencies/RequireEnsureDependency.js +8 -7
- package/lib/dependencies/RequireEnsurePlugin.js +7 -3
- package/lib/dependencies/RequireHeaderDependency.js +51 -12
- package/lib/dependencies/RequireIncludeDependency.js +6 -6
- package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +2 -3
- package/lib/dependencies/RequireIncludePlugin.js +7 -3
- package/lib/dependencies/RequireJsStuffPlugin.js +7 -3
- package/lib/dependencies/RequireResolveContextDependency.js +2 -2
- package/lib/dependencies/RequireResolveDependency.js +4 -4
- package/lib/dependencies/RequireResolveHeaderDependency.js +4 -4
- package/lib/dependencies/RuntimeRequirementsDependency.js +5 -6
- package/lib/dependencies/StaticExportsDependency.js +2 -2
- package/lib/dependencies/SystemPlugin.js +10 -6
- package/lib/dependencies/SystemRuntimeModule.js +10 -0
- package/lib/dependencies/TopLevelAwaitDependency.js +11 -7
- package/lib/dependencies/URLContextDependency.js +2 -2
- package/lib/dependencies/URLDependency.js +110 -64
- package/lib/dependencies/URLPlugin.js +7 -3
- package/lib/dependencies/UnsupportedDependency.js +4 -4
- package/lib/dependencies/WebAssemblyExportImportedDependency.js +3 -4
- package/lib/dependencies/WebAssemblyImportDependency.js +5 -5
- package/lib/dependencies/WebpackIsIncludedDependency.js +6 -6
- package/lib/dependencies/WorkerAndWorkletPlugin.js +46 -28
- package/lib/dependencies/WorkerDependency.js +28 -22
- package/lib/dependencies/WorkletDependency.js +15 -14
- package/lib/dependencies/getFunctionExpression.js +8 -4
- package/lib/dependencies/processExportInfo.js +5 -5
- package/lib/dll/DelegatedModule.js +34 -22
- package/lib/dll/DelegatedModuleFactoryPlugin.js +15 -7
- package/lib/dll/DelegatedPlugin.js +2 -2
- package/lib/dll/DllEntryPlugin.js +2 -2
- package/lib/dll/DllModule.js +22 -15
- package/lib/dll/DllModuleFactory.js +7 -3
- package/lib/dll/DllPlugin.js +7 -5
- package/lib/dll/DllReferencePlugin.js +10 -7
- package/lib/dll/LibManifestPlugin.js +5 -5
- package/lib/electron/ElectronTargetPlugin.js +53 -49
- package/lib/errors/AsyncChunkWaterfallWarning.js +36 -0
- package/lib/errors/AsyncDependencyToInitialChunkError.js +2 -2
- package/lib/errors/BroadContextsWarning.js +43 -0
- package/lib/errors/BuildCycleError.js +1 -1
- package/lib/errors/CacheEffectivenessWarning.js +55 -0
- package/lib/errors/ChunkRenderError.js +1 -1
- package/lib/errors/CircularDependenciesWarning.js +38 -0
- package/lib/errors/CodeGenerationError.js +1 -1
- package/lib/errors/CommentCompilationWarning.js +1 -1
- package/lib/errors/ConflictingResourceHintsWarning.js +35 -0
- package/lib/errors/DuplicateModulesWarning.js +45 -0
- package/lib/errors/DynamicExportsWarning.js +30 -0
- package/lib/errors/EmbeddedSourceMapsWarning.js +25 -0
- package/lib/errors/EntrypointOverlapWarning.js +45 -0
- package/lib/errors/EnvironmentNotSupportAsyncWarning.js +2 -2
- package/lib/errors/EvalUsageWarning.js +28 -0
- package/lib/errors/HookWebpackError.js +5 -5
- package/lib/errors/HotspotsWarning.js +57 -0
- package/lib/errors/IgnoreErrorModuleFactory.js +7 -3
- package/lib/errors/InlinedAssetsWarning.js +36 -0
- package/lib/errors/InvalidDependenciesModuleWarning.js +1 -1
- package/lib/errors/LargeModulesWarning.js +45 -0
- package/lib/errors/LegacyJavascriptWarning.js +48 -0
- package/lib/errors/MissingSideEffectsWarning.js +36 -0
- package/lib/errors/MixedExportsWarning.js +41 -0
- package/lib/errors/ModuleDependencyError.js +13 -16
- package/lib/errors/ModuleDependencyWarning.js +5 -15
- package/lib/errors/ModuleHashingError.js +1 -1
- package/lib/errors/ModuleNotFoundError.js +2 -2
- package/lib/errors/ModuleParseError.js +1 -2
- package/lib/errors/ModuleRestoreError.js +1 -1
- package/lib/errors/ModuleStoreError.js +1 -1
- package/lib/errors/NodeStuffInWebError.js +1 -1
- package/lib/errors/OsDependentRuleWarning.js +31 -0
- package/lib/errors/PureAnnotationsWarning.js +36 -0
- package/lib/errors/RedundantDynamicImportWarning.js +31 -0
- package/lib/errors/ScopeHoistingBailoutsWarning.js +41 -0
- package/lib/errors/SplitChunksCappedWarning.js +41 -0
- package/lib/errors/TinyChunksWarning.js +40 -0
- package/lib/errors/TopLevelThisWarning.js +34 -0
- package/lib/errors/UnsplitVendorsWarning.js +42 -0
- package/lib/errors/UnsupportedFeatureWarning.js +1 -1
- package/lib/errors/UnusedAliasesWarning.js +29 -0
- package/lib/errors/UnusedDefinesWarning.js +29 -0
- package/lib/errors/UnusedExternalsWarning.js +29 -0
- package/lib/errors/UnusedReexportsWarning.js +42 -0
- package/lib/errors/UnusedRuleWarning.js +29 -0
- package/lib/errors/WebpackError.js +9 -5
- package/lib/errors/deriveStackFromNestedError.js +90 -0
- package/lib/esm/ExportWebpackRequireRuntimeModule.js +2 -0
- package/lib/esm/ModuleChunkFormatPlugin.js +37 -19
- package/lib/esm/ModuleChunkLoadingPlugin.js +89 -51
- package/lib/esm/ModuleChunkLoadingRuntimeModule.js +170 -71
- package/lib/hmr/HotModuleReplacement.runtime.js +24 -5
- package/lib/hmr/HotModuleReplacementRuntimeModule.js +1 -1
- package/lib/hmr/LazyCompilationPlugin.js +45 -24
- package/lib/hmr/lazyCompilationBackend.js +28 -10
- package/lib/hmr/parserHooks.js +56 -0
- package/lib/html/HtmlGenerator.js +299 -79
- package/lib/html/HtmlModule.js +7 -3
- package/lib/html/HtmlModulesPlugin.js +312 -174
- package/lib/html/HtmlParser.js +31 -86
- package/lib/html/data.js +1928 -0
- package/lib/html/htmlMinify.js +288 -0
- package/lib/html/syntax.js +7819 -3331
- package/lib/ids/ChunkModuleIdRangePlugin.js +3 -3
- package/lib/ids/DeterministicChunkIdsPlugin.js +1 -1
- package/lib/ids/DeterministicModuleIdsPlugin.js +2 -2
- package/lib/ids/HashedModuleIdsPlugin.js +6 -2
- package/lib/ids/IdHelpers.js +31 -18
- package/lib/ids/NamedChunkIdsPlugin.js +1 -1
- package/lib/ids/NamedModuleIdsPlugin.js +1 -1
- package/lib/ids/NaturalChunkIdsPlugin.js +2 -2
- package/lib/ids/NaturalModuleIdsPlugin.js +1 -1
- package/lib/ids/OccurrenceChunkIdsPlugin.js +7 -3
- package/lib/ids/OccurrenceModuleIdsPlugin.js +7 -3
- package/lib/ids/SyncModuleIdsPlugin.js +4 -4
- package/lib/index.js +10 -0
- package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +3 -3
- package/lib/javascript/BasicEvaluatedExpression.js +18 -14
- package/lib/javascript/ChunkFormatHelpers.js +6 -6
- package/lib/javascript/ChunkHelpers.js +1 -1
- package/lib/javascript/CommonJsChunkFormatPlugin.js +11 -5
- package/lib/javascript/EnableChunkLoadingPlugin.js +2 -2
- package/lib/javascript/JavascriptGenerator.js +65 -165
- package/lib/javascript/JavascriptModule.js +9 -3
- package/lib/javascript/JavascriptModulesPlugin.js +181 -162
- package/lib/javascript/JavascriptParser.js +291 -112
- package/lib/javascript/JavascriptParserHelpers.js +10 -7
- package/lib/javascript/ScopeAnalyzer.js +1094 -0
- package/lib/javascript/StartupHelpers.js +55 -9
- package/lib/javascript/syntax.js +3403 -300
- package/lib/json/JsonData.js +8 -4
- package/lib/json/JsonGenerator.js +38 -16
- package/lib/json/JsonModule.js +7 -3
- package/lib/json/JsonModulesPlugin.js +1 -1
- package/lib/json/JsonParser.js +5 -6
- package/lib/library/AbstractLibraryPlugin.js +20 -14
- package/lib/library/AmdLibraryPlugin.js +11 -7
- package/lib/library/AssignLibraryPlugin.js +19 -13
- package/lib/library/EnableLibraryPlugin.js +2 -2
- package/lib/library/ExportPropertyLibraryPlugin.js +15 -8
- package/lib/library/JsonpLibraryPlugin.js +11 -7
- package/lib/library/ModuleLibraryPlugin.js +256 -64
- package/lib/library/SystemLibraryPlugin.js +12 -8
- package/lib/library/UmdLibraryPlugin.js +62 -25
- package/lib/loaders/LoaderRunner.js +14 -1
- package/lib/loaders/loadLoader.js +8 -4
- package/lib/logging/createConsoleLogger.js +7 -4
- package/lib/node/CommonJsChunkLoadingPlugin.js +36 -22
- package/lib/node/NodeEnvironmentPlugin.js +17 -3
- package/lib/node/NodeSourcePlugin.js +1 -1
- package/lib/node/NodeTargetPlugin.js +4 -3
- package/lib/node/NodeTemplatePlugin.js +1 -1
- package/lib/node/NodeWatchFileSystem.js +70 -9
- package/lib/node/ReadFileChunkLoadingRuntimeModule.js +35 -38
- package/lib/node/ReadFileCompileAsyncWasmPlugin.js +81 -20
- package/lib/node/ReadFileCompileWasmPlugin.js +37 -17
- package/lib/node/RequireChunkLoadingRuntimeModule.js +35 -38
- package/lib/node/nodeConsole.js +7 -3
- package/lib/optimize/AggressiveMergingPlugin.js +21 -17
- package/lib/optimize/AggressiveSplittingPlugin.js +9 -6
- package/lib/optimize/ConcatenatedModule.js +996 -477
- package/lib/optimize/ConstExportsPlugin.js +11 -7
- package/lib/optimize/EnsureChunkConditionsPlugin.js +3 -3
- package/lib/optimize/FlagIncludedChunksPlugin.js +3 -4
- package/lib/optimize/InlineExports.js +9 -5
- package/lib/optimize/InnerGraph.js +28 -12
- package/lib/optimize/InnerGraphPlugin.js +23 -18
- package/lib/optimize/LimitChunkCountPlugin.js +7 -3
- package/lib/optimize/MangleExportsPlugin.js +7 -8
- package/lib/optimize/MergeDuplicateChunksPlugin.js +7 -3
- package/lib/optimize/MinChunkSizePlugin.js +7 -3
- package/lib/optimize/ModuleConcatenationPlugin.js +124 -59
- package/lib/optimize/RealContentHashPlugin.js +20 -13
- package/lib/optimize/RemoveEmptyChunksPlugin.js +2 -2
- package/lib/optimize/RemoveParentModulesPlugin.js +4 -4
- package/lib/optimize/RuntimeChunkPlugin.js +2 -2
- package/lib/optimize/SideEffectsFlagPlugin.js +262 -39
- package/lib/optimize/SplitChunksPlugin.js +232 -68
- package/lib/performance/AssetsOverSizeLimitWarning.js +10 -2
- package/lib/performance/AsyncChunkWaterfallsPlugin.js +136 -0
- package/lib/performance/BroadContextsPlugin.js +142 -0
- package/lib/performance/CacheEffectivenessPlugin.js +125 -0
- package/lib/performance/ConflictingResourceHintsPlugin.js +99 -0
- package/lib/performance/DuplicateModulesPlugin.js +93 -0
- package/lib/performance/DuplicatePackagesPlugin.js +119 -0
- package/lib/performance/DuplicatePackagesWarning.js +84 -0
- package/lib/performance/DynamicExportsPlugin.js +120 -0
- package/lib/performance/EmbeddedSourceMapsPlugin.js +71 -0
- package/lib/performance/EntrypointOverlapPlugin.js +122 -0
- package/lib/performance/EntrypointsOverSizeLimitWarning.js +1 -1
- package/lib/performance/EvalUsagePlugin.js +115 -0
- package/lib/performance/HotspotsPlugin.js +296 -0
- package/lib/performance/InlinedAssetsPlugin.js +99 -0
- package/lib/performance/LargeModulesPlugin.js +126 -0
- package/lib/performance/LegacyJavascriptPlugin.js +139 -0
- package/lib/performance/MissingSideEffectsPlugin.js +138 -0
- package/lib/performance/MixedExportsPlugin.js +136 -0
- package/lib/performance/OsDependentRuleWarningPlugin.js +178 -0
- package/lib/performance/PureAnnotationsPlugin.js +219 -0
- package/lib/performance/RedundantDynamicImportsPlugin.js +225 -0
- package/lib/performance/RuntimeInLargeChunkWarning.js +27 -0
- package/lib/performance/ScopeHoistingBailoutsPlugin.js +164 -0
- package/lib/performance/SizeLimitsPlugin.js +139 -7
- package/lib/performance/SplitChunksCappedPlugin.js +99 -0
- package/lib/performance/TinyChunksPlugin.js +128 -0
- package/lib/performance/TopLevelThisPlugin.js +208 -0
- package/lib/performance/UnsplitVendorsPlugin.js +112 -0
- package/lib/performance/UnusedAliasesPlugin.js +253 -0
- package/lib/performance/UnusedDefinesPlugin.js +87 -0
- package/lib/performance/UnusedExternalsPlugin.js +110 -0
- package/lib/performance/UnusedReexportsPlugin.js +159 -0
- package/lib/performance/UnusedRuleWarningPlugin.js +105 -0
- package/lib/performance/getModuleSize.js +22 -0
- package/lib/performance/getSourceModules.js +22 -0
- package/lib/performance/hasOnlyUnusedExports.js +40 -0
- package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +24 -10
- package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +63 -46
- package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +2 -3
- package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +2 -2
- package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +2 -2
- package/lib/prefetch/ResourceHintPlugin.js +377 -136
- package/lib/prefetch/ResourceHintRuntimeModule.js +1 -21
- package/lib/prefetch/StartupAssetHintRuntimeModule.js +10 -133
- package/lib/prefetch/parseResourceHintOptions.js +31 -4
- package/lib/rules/BasicEffectRulePlugin.js +2 -2
- package/lib/rules/BasicMatcherRulePlugin.js +8 -4
- package/lib/rules/GlobMatcherRulePlugin.js +68 -0
- package/lib/rules/ObjectMatcherRulePlugin.js +12 -5
- package/lib/rules/RuleSetCompiler.js +146 -12
- package/lib/rules/UseEffectRulePlugin.js +18 -11
- package/lib/runtime/AsyncModuleGeneratorRuntimeModule.js +11 -1
- package/lib/runtime/AsyncModuleRuntimeModule.js +1 -1
- package/lib/runtime/AutoPublicPathRuntimeModule.js +15 -20
- package/lib/runtime/BaseUriRuntimeModule.js +33 -7
- package/lib/runtime/ChunkNameRuntimeModule.js +10 -0
- package/lib/runtime/CompatGetDefaultExportRuntimeModule.js +11 -1
- package/lib/runtime/CompatRuntimeModule.js +5 -3
- package/lib/runtime/ConcatenationWrapRuntimeModule.js +90 -0
- package/lib/runtime/ConstructRequireRuntimeModule.js +52 -0
- package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +8 -6
- package/lib/runtime/CreateScriptRuntimeModule.js +11 -1
- package/lib/runtime/CreateScriptUrlRuntimeModule.js +11 -1
- package/lib/runtime/DefinePropertyGettersRuntimeModule.js +56 -38
- package/lib/runtime/EnsureChunkRuntimeModule.js +18 -2
- package/lib/runtime/GetChunkFilenameRuntimeModule.js +62 -37
- package/lib/runtime/GetFullHashRuntimeModule.js +12 -2
- package/lib/runtime/GetMainFilenameRuntimeModule.js +12 -2
- package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +2 -2
- package/lib/runtime/GetWorkletBootstrapRuntimeModule.js +16 -3
- package/lib/runtime/GlobalRuntimeModule.js +18 -0
- package/lib/runtime/HasOwnPropertyRuntimeModule.js +12 -2
- package/lib/runtime/LoadScriptRuntimeModule.js +2 -2
- package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +23 -6
- package/lib/runtime/MakeNamespaceObjectRuntimeModule.js +22 -6
- package/lib/runtime/NonceRuntimeModule.js +10 -0
- package/lib/runtime/OnChunksLoadedRuntimeModule.js +5 -3
- package/lib/runtime/PublicPathRuntimeModule.js +12 -2
- package/lib/runtime/RelativeUrlRuntimeModule.js +11 -1
- package/lib/runtime/RuntimeIdRuntimeModule.js +12 -2
- package/lib/runtime/SetAnonymousDefaultNameRuntimeModule.js +11 -1
- package/lib/runtime/StartupChunkDependenciesPlugin.js +18 -9
- package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +3 -3
- package/lib/runtime/StartupEntrypointRuntimeModule.js +21 -4
- package/lib/runtime/SystemContextRuntimeModule.js +10 -0
- package/lib/runtime/ToBinaryRuntimeModule.js +1 -1
- package/lib/runtime/WorkerRuntimeModule.js +11 -1
- package/lib/runtime/baseUri.js +63 -0
- package/lib/schemes/DataUriPlugin.js +1 -1
- package/lib/schemes/FileUriPlugin.js +1 -1
- package/lib/schemes/HttpUriPlugin.js +24 -15
- package/lib/schemes/VirtualUrlPlugin.js +13 -7
- package/lib/serialization/AggregateErrorSerializer.js +1 -1
- package/lib/serialization/BinaryMiddleware.js +274 -942
- package/lib/serialization/ErrorObjectSerializer.js +1 -1
- package/lib/serialization/FileMiddleware.js +305 -66
- package/lib/serialization/ObjectMiddleware.js +139 -114
- package/lib/serialization/PlainObjectSerializer.js +19 -16
- package/lib/sharing/ConsumeSharedModule.js +30 -21
- package/lib/sharing/ConsumeSharedPlugin.js +18 -10
- package/lib/sharing/ConsumeSharedRuntimeModule.js +6 -9
- package/lib/sharing/ProvideSharedModule.js +25 -16
- package/lib/sharing/ProvideSharedModuleFactory.js +7 -3
- package/lib/sharing/ProvideSharedPlugin.js +8 -4
- package/lib/sharing/SharePlugin.js +17 -5
- package/lib/sharing/ShareRuntimeModule.js +4 -4
- package/lib/sharing/resolveMatchedConfigs.js +9 -6
- package/lib/sharing/utils.js +1 -3
- package/lib/stats/DefaultStatsFactoryPlugin.js +253 -226
- package/lib/stats/DefaultStatsPresetPlugin.js +17 -8
- package/lib/stats/DefaultStatsPrinterPlugin.js +60 -192
- package/lib/stats/StatsFactory.js +56 -35
- package/lib/stats/StatsPrinter.js +16 -12
- package/lib/typescript/TypeScriptPlugin.js +12 -14
- package/lib/url/URLParserPlugin.js +26 -13
- package/lib/util/AsyncQueue.js +4 -3
- package/lib/util/Hash.js +5 -1
- package/lib/util/LazySet.js +35 -22
- package/lib/util/LocConverter.js +36 -13
- package/lib/util/SourceProcessor.js +1050 -24
- package/lib/util/StringXor.js +1 -1
- package/lib/util/chainedImports.js +9 -5
- package/lib/util/cleverMerge.js +1 -1
- package/lib/util/comparators.js +45 -14
- package/lib/util/concatenate.js +203 -77
- package/lib/util/conventions.js +5 -1
- package/lib/util/createHash.js +2 -2
- package/lib/util/createHooksRegistry.js +8 -10
- package/lib/util/dataURL.js +225 -1
- package/lib/util/extractSourceMap.js +4 -3
- package/lib/util/findCaseMismatch.js +139 -0
- package/lib/util/formatLocation.js +1 -2
- package/lib/util/fs.js +22 -5
- package/lib/util/globUtils.js +298 -24
- package/lib/util/hash/BatchedHash.js +5 -1
- package/lib/util/hash/BulkUpdateHash.js +5 -1
- package/lib/util/hash/DebugHash.js +5 -1
- package/lib/util/hash/hash-digest.js +6 -2
- package/lib/util/identifier.js +25 -1
- package/lib/util/implicitTypeLoaderFallback.js +1 -1
- package/lib/util/internalSerializables.js +6 -0
- package/lib/util/lazyModule.js +56 -0
- package/lib/util/makeSerializable.js +7 -3
- package/lib/util/matchAlias.js +25 -0
- package/lib/util/mimeTypes.js +11 -5
- package/lib/util/nonNumericOnlyHash.js +4 -3
- package/lib/util/parseJson.js +5 -3
- package/lib/util/preloadModuleType.js +32 -0
- package/lib/util/registerExternalSerializer.js +7 -5
- package/lib/util/runtime.js +2 -2
- package/lib/util/semver.js +1 -1
- package/lib/util/serialization.js +28 -28
- package/lib/util/source.js +2 -2
- package/lib/util/traverseDestructuringAssignmentProperties.js +6 -2
- package/lib/wasm/EnableWasmLoadingPlugin.js +10 -8
- package/lib/wasm/wasmModuleFilename.js +54 -0
- package/lib/wasm-async/AsyncWasmCompileRuntimeModule.js +41 -21
- package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +43 -21
- package/lib/wasm-async/AsyncWasmModule.js +3 -3
- package/lib/wasm-async/AsyncWebAssemblyGenerator.js +4 -5
- package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +57 -17
- package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +34 -18
- package/lib/wasm-async/AsyncWebAssemblyParser.js +9 -8
- package/lib/wasm-async/UniversalCompileAsyncWasmPlugin.js +34 -8
- package/lib/wasm-sync/SyncWasmModule.js +2 -2
- package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +18 -13
- package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +4 -5
- package/lib/wasm-sync/WebAssemblyGenerator.js +18 -17
- package/lib/wasm-sync/WebAssemblyInInitialChunkError.js +4 -4
- package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +7 -7
- package/lib/wasm-sync/WebAssemblyModulesPlugin.js +24 -11
- package/lib/wasm-sync/WebAssemblyParser.js +4 -6
- package/lib/wasm-sync/WebAssemblyUtils.js +2 -2
- package/lib/web/FetchCompileAsyncWasmPlugin.js +101 -19
- package/lib/web/FetchCompileWasmPlugin.js +46 -16
- package/lib/web/JsonpChunkLoadingPlugin.js +47 -23
- package/lib/web/JsonpChunkLoadingRuntimeModule.js +50 -20
- package/lib/web/JsonpTemplatePlugin.js +2 -2
- package/lib/webpack.js +22 -11
- package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +60 -26
- package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +30 -32
- package/lib/webworker/WebWorkerTemplatePlugin.js +1 -1
- package/module.d.ts +1 -0
- package/package.json +37 -30
- package/schemas/WebpackOptions.check.js +1 -1
- package/schemas/WebpackOptions.json +780 -91
- package/schemas/plugins/HtmlParserOptions.check.js +1 -1
- package/schemas/plugins/container/ContainerPlugin.check.js +1 -1
- package/schemas/plugins/container/ContainerPlugin.json +10 -0
- package/schemas/plugins/container/ModuleFederationPlugin.check.js +1 -1
- package/schemas/plugins/container/ModuleFederationPlugin.json +10 -0
- package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.js +1 -1
- package/schemas/plugins/css/CssModuleParserOptions.check.js +1 -1
- package/schemas/plugins/css/CssParserOptions.check.js +1 -1
- package/types.d.ts +4013 -738
- package/lib/runtime/CommonJsWrapRuntimeModule.js +0 -37
|
@@ -22,110 +22,120 @@ const {
|
|
|
22
22
|
WebpackParser,
|
|
23
23
|
buildLineStarts,
|
|
24
24
|
hasOctalEscape,
|
|
25
|
+
isIdentifierChar,
|
|
25
26
|
positionAt
|
|
26
27
|
} = require("./syntax");
|
|
27
28
|
|
|
28
29
|
/** @typedef {typeof import("acorn").Parser} AcornParser */
|
|
29
|
-
/**
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
/**
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
30
|
+
/**
|
|
31
|
+
* @import {
|
|
32
|
+
* Options as AcornOptions,
|
|
33
|
+
* ecmaVersion as EcmaVersion
|
|
34
|
+
* } from "acorn"
|
|
35
|
+
*/
|
|
36
|
+
/**
|
|
37
|
+
* @import {
|
|
38
|
+
* AssignmentExpression,
|
|
39
|
+
* BinaryExpression,
|
|
40
|
+
* BlockStatement,
|
|
41
|
+
* SequenceExpression,
|
|
42
|
+
* CallExpression,
|
|
43
|
+
* StaticBlock,
|
|
44
|
+
* ClassDeclaration,
|
|
45
|
+
* ForStatement,
|
|
46
|
+
* SwitchStatement,
|
|
47
|
+
* ClassExpression,
|
|
48
|
+
* SourceLocation,
|
|
49
|
+
* ConditionalExpression,
|
|
50
|
+
* Declaration,
|
|
51
|
+
* PrivateIdentifier,
|
|
52
|
+
* PropertyDefinition,
|
|
53
|
+
* Expression,
|
|
54
|
+
* ImportDeclaration,
|
|
55
|
+
* Identifier,
|
|
56
|
+
* VariableDeclaration,
|
|
57
|
+
* IfStatement,
|
|
58
|
+
* LabeledStatement,
|
|
59
|
+
* Literal,
|
|
60
|
+
* LogicalExpression,
|
|
61
|
+
* ChainExpression,
|
|
62
|
+
* MemberExpression,
|
|
63
|
+
* YieldExpression,
|
|
64
|
+
* MetaProperty,
|
|
65
|
+
* Property,
|
|
66
|
+
* AssignmentPattern,
|
|
67
|
+
* Pattern,
|
|
68
|
+
* UpdateExpression,
|
|
69
|
+
* ObjectExpression,
|
|
70
|
+
* UnaryExpression,
|
|
71
|
+
* ArrayExpression,
|
|
72
|
+
* ArrayPattern,
|
|
73
|
+
* AwaitExpression,
|
|
74
|
+
* ThisExpression,
|
|
75
|
+
* RestElement,
|
|
76
|
+
* ObjectPattern,
|
|
77
|
+
* SwitchCase,
|
|
78
|
+
* CatchClause,
|
|
79
|
+
* VariableDeclarator,
|
|
80
|
+
* ForInStatement,
|
|
81
|
+
* ForOfStatement,
|
|
82
|
+
* ReturnStatement,
|
|
83
|
+
* WithStatement,
|
|
84
|
+
* ThrowStatement,
|
|
85
|
+
* MethodDefinition,
|
|
86
|
+
* NewExpression,
|
|
87
|
+
* SpreadElement,
|
|
88
|
+
* FunctionExpression,
|
|
89
|
+
* WhileStatement,
|
|
90
|
+
* ArrowFunctionExpression,
|
|
91
|
+
* ExpressionStatement,
|
|
92
|
+
* ExportAllDeclaration,
|
|
93
|
+
* ExportNamedDeclaration,
|
|
94
|
+
* FunctionDeclaration,
|
|
95
|
+
* DoWhileStatement,
|
|
96
|
+
* TryStatement,
|
|
97
|
+
* Node,
|
|
98
|
+
* Program,
|
|
99
|
+
* Directive,
|
|
100
|
+
* Statement,
|
|
101
|
+
* ExportDefaultDeclaration,
|
|
102
|
+
* Super,
|
|
103
|
+
* TaggedTemplateExpression,
|
|
104
|
+
* TemplateLiteral,
|
|
105
|
+
* ModuleDeclaration,
|
|
106
|
+
* MaybeNamedFunctionDeclaration,
|
|
107
|
+
* MaybeNamedClassDeclaration
|
|
108
|
+
* } from "estree"
|
|
109
|
+
*/
|
|
110
|
+
/** @import { DependencyLocation } from "../Dependency" */
|
|
44
111
|
/** @typedef {import("estree").Comment & { start: number, end: number, loc?: SourceLocation | null }} Comment */
|
|
45
|
-
/** @typedef {import("estree").ConditionalExpression} ConditionalExpression */
|
|
46
|
-
/** @typedef {import("estree").Declaration} Declaration */
|
|
47
|
-
/** @typedef {import("estree").PrivateIdentifier} PrivateIdentifier */
|
|
48
|
-
/** @typedef {import("estree").PropertyDefinition} PropertyDefinition */
|
|
49
|
-
/** @typedef {import("estree").Expression} Expression */
|
|
50
|
-
/** @typedef {import("estree").ImportAttribute} ImportAttribute */
|
|
51
|
-
/** @typedef {import("estree").ImportDeclaration} ImportDeclaration */
|
|
52
|
-
/** @typedef {import("estree").Identifier} Identifier */
|
|
53
|
-
/** @typedef {import("estree").VariableDeclaration} VariableDeclaration */
|
|
54
|
-
/** @typedef {import("estree").IfStatement} IfStatement */
|
|
55
|
-
/** @typedef {import("estree").LabeledStatement} LabeledStatement */
|
|
56
|
-
/** @typedef {import("estree").Literal} Literal */
|
|
57
|
-
/** @typedef {import("estree").LogicalExpression} LogicalExpression */
|
|
58
|
-
/** @typedef {import("estree").ChainExpression} ChainExpression */
|
|
59
|
-
/** @typedef {import("estree").MemberExpression} MemberExpression */
|
|
60
|
-
/** @typedef {import("estree").YieldExpression} YieldExpression */
|
|
61
|
-
/** @typedef {import("estree").MetaProperty} MetaProperty */
|
|
62
|
-
/** @typedef {import("estree").Property} Property */
|
|
63
|
-
/** @typedef {import("estree").AssignmentPattern} AssignmentPattern */
|
|
64
|
-
/** @typedef {import("estree").Pattern} Pattern */
|
|
65
|
-
/** @typedef {import("estree").UpdateExpression} UpdateExpression */
|
|
66
|
-
/** @typedef {import("estree").ObjectExpression} ObjectExpression */
|
|
67
|
-
/** @typedef {import("estree").UnaryExpression} UnaryExpression */
|
|
68
|
-
/** @typedef {import("estree").ArrayExpression} ArrayExpression */
|
|
69
|
-
/** @typedef {import("estree").ArrayPattern} ArrayPattern */
|
|
70
|
-
/** @typedef {import("estree").AwaitExpression} AwaitExpression */
|
|
71
|
-
/** @typedef {import("estree").ThisExpression} ThisExpression */
|
|
72
|
-
/** @typedef {import("estree").RestElement} RestElement */
|
|
73
|
-
/** @typedef {import("estree").ObjectPattern} ObjectPattern */
|
|
74
|
-
/** @typedef {import("estree").SwitchCase} SwitchCase */
|
|
75
|
-
/** @typedef {import("estree").CatchClause} CatchClause */
|
|
76
|
-
/** @typedef {import("estree").VariableDeclarator} VariableDeclarator */
|
|
77
|
-
/** @typedef {import("estree").ForInStatement} ForInStatement */
|
|
78
|
-
/** @typedef {import("estree").ForOfStatement} ForOfStatement */
|
|
79
|
-
/** @typedef {import("estree").ReturnStatement} ReturnStatement */
|
|
80
|
-
/** @typedef {import("estree").WithStatement} WithStatement */
|
|
81
|
-
/** @typedef {import("estree").ThrowStatement} ThrowStatement */
|
|
82
|
-
/** @typedef {import("estree").MethodDefinition} MethodDefinition */
|
|
83
|
-
/** @typedef {import("estree").NewExpression} NewExpression */
|
|
84
|
-
/** @typedef {import("estree").SpreadElement} SpreadElement */
|
|
85
|
-
/** @typedef {import("estree").FunctionExpression} FunctionExpression */
|
|
86
|
-
/** @typedef {import("estree").WhileStatement} WhileStatement */
|
|
87
|
-
/** @typedef {import("estree").ArrowFunctionExpression} ArrowFunctionExpression */
|
|
88
|
-
/** @typedef {import("estree").ExpressionStatement} ExpressionStatement */
|
|
89
|
-
/** @typedef {import("estree").ExportAllDeclaration} ExportAllDeclaration */
|
|
90
|
-
/** @typedef {import("estree").ExportNamedDeclaration} ExportNamedDeclaration */
|
|
91
|
-
/** @typedef {import("estree").FunctionDeclaration} FunctionDeclaration */
|
|
92
|
-
/** @typedef {import("estree").DoWhileStatement} DoWhileStatement */
|
|
93
|
-
/** @typedef {import("estree").TryStatement} TryStatement */
|
|
94
|
-
/** @typedef {import("estree").Node} Node */
|
|
95
|
-
/** @typedef {import("estree").Program} Program */
|
|
96
|
-
/** @typedef {import("estree").Directive} Directive */
|
|
97
|
-
/** @typedef {import("estree").Statement} Statement */
|
|
98
|
-
/** @typedef {import("estree").ExportDefaultDeclaration} ExportDefaultDeclaration */
|
|
99
|
-
/** @typedef {import("estree").Super} Super */
|
|
100
|
-
/** @typedef {import("estree").TaggedTemplateExpression} TaggedTemplateExpression */
|
|
101
|
-
/** @typedef {import("estree").TemplateLiteral} TemplateLiteral */
|
|
102
|
-
/** @typedef {import("estree").ModuleDeclaration} ModuleDeclaration */
|
|
103
|
-
/** @typedef {import("estree").MaybeNamedFunctionDeclaration} MaybeNamedFunctionDeclaration */
|
|
104
|
-
/** @typedef {import("estree").MaybeNamedClassDeclaration} MaybeNamedClassDeclaration */
|
|
105
112
|
/**
|
|
106
113
|
* Defines the shared type used by this module.
|
|
107
114
|
* @template T
|
|
108
115
|
* @typedef {import("tapable").AsArray<T>} AsArray<T>
|
|
109
116
|
*/
|
|
110
|
-
/** @
|
|
111
|
-
/** @typedef {import("../Parser").PreparsedAst} PreparsedAst */
|
|
117
|
+
/** @import { ParserState, PreparsedAst } from "../Parser" */
|
|
112
118
|
|
|
113
|
-
/** @
|
|
114
|
-
/**
|
|
119
|
+
/** @import LocalModule from "../dependencies/LocalModule" */
|
|
120
|
+
/**
|
|
121
|
+
* @import {
|
|
122
|
+
* HarmonyStarExportsList
|
|
123
|
+
* } from "../dependencies/HarmonyExportImportedSpecifierDependency"
|
|
124
|
+
*/
|
|
115
125
|
|
|
116
126
|
/**
|
|
117
127
|
* Defines the known javascript parser state type used by this module.
|
|
118
128
|
* @typedef {object} KnownJavascriptParserState
|
|
119
129
|
* @property {Set<string>=} harmonyNamedExports
|
|
120
|
-
* @property {HarmonyStarExportsList
|
|
130
|
+
* @property {InstanceType<HarmonyStarExportsList>=} harmonyStarExports
|
|
121
131
|
* @property {number=} lastHarmonyImportOrder
|
|
122
132
|
* @property {LocalModule[]=} localModules
|
|
123
133
|
*/
|
|
124
134
|
|
|
125
135
|
/** @typedef {ParserState & KnownJavascriptParserState} JavascriptParserState */
|
|
126
136
|
|
|
127
|
-
/** @
|
|
128
|
-
/** @
|
|
137
|
+
/** @import Compilation from "../Compilation" */
|
|
138
|
+
/** @import Module from "../Module" */
|
|
129
139
|
|
|
130
140
|
/** @typedef {{ name: string | VariableInfo, rootInfo: string | VariableInfo, getMembers: () => Members, getMembersOptionals: () => MembersOptionals, getMemberRanges: () => MemberRanges }} GetInfoResult */
|
|
131
141
|
/** @typedef {{ consequent?: EXPECTED_OBJECT, alternate?: EXPECTED_OBJECT }} GuardCollection per-branch guard frames pushed onto the parser state guard stack */
|
|
@@ -337,11 +347,19 @@ class VariableInfo {
|
|
|
337
347
|
|
|
338
348
|
/** @typedef {symbol} Tag */
|
|
339
349
|
|
|
340
|
-
/**
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
350
|
+
/**
|
|
351
|
+
* @import {
|
|
352
|
+
* HarmonySettings
|
|
353
|
+
* } from "../dependencies/HarmonyImportDependencyParserPlugin"
|
|
354
|
+
*/
|
|
355
|
+
/** @import { ImportSettings } from "../dependencies/ImportParserPlugin" */
|
|
356
|
+
/**
|
|
357
|
+
* @import {
|
|
358
|
+
* CommonJsImportSettings
|
|
359
|
+
* } from "../dependencies/CommonJsImportsParserPlugin"
|
|
360
|
+
*/
|
|
361
|
+
/** @import { CompatibilitySettings } from "../CompatibilityPlugin" */
|
|
362
|
+
/** @import { TopLevelSymbol } from "../optimize/InnerGraph" */
|
|
345
363
|
|
|
346
364
|
/** @typedef {HarmonySettings | ImportSettings | CommonJsImportSettings | TopLevelSymbol | CompatibilitySettings} KnownTagData */
|
|
347
365
|
/** @typedef {KnownTagData | Record<string, EXPECTED_ANY>} TagData */
|
|
@@ -495,6 +513,25 @@ const EVALUATE_AST_CACHE_LIMIT = 4096;
|
|
|
495
513
|
|
|
496
514
|
const CLASS_NAME = "JavascriptParser";
|
|
497
515
|
|
|
516
|
+
// Reserved words in strict mode, so unusable as binding names there (12.7.2).
|
|
517
|
+
const STRICT_MODE_RESERVED_WORDS = new Set([
|
|
518
|
+
"implements",
|
|
519
|
+
"interface",
|
|
520
|
+
"let",
|
|
521
|
+
"package",
|
|
522
|
+
"private",
|
|
523
|
+
"protected",
|
|
524
|
+
"public",
|
|
525
|
+
"static",
|
|
526
|
+
"yield"
|
|
527
|
+
]);
|
|
528
|
+
|
|
529
|
+
const STRICT_MODE_OUTPUT_REASON =
|
|
530
|
+
"The output is an ES module, which runs in strict mode.";
|
|
531
|
+
// `await` is reserved by the module goal rather than by strict mode itself.
|
|
532
|
+
const MODULE_GOAL_OUTPUT_REASON =
|
|
533
|
+
'The output is an ES module, where "await" is a reserved word.';
|
|
534
|
+
|
|
498
535
|
class JavascriptParser extends Parser {
|
|
499
536
|
/**
|
|
500
537
|
* Creates an instance of JavascriptParser.
|
|
@@ -514,11 +551,17 @@ class JavascriptParser extends Parser {
|
|
|
514
551
|
evaluateDefinedIdentifier: new HookMap(
|
|
515
552
|
() => new SyncBailHook(["expression"])
|
|
516
553
|
),
|
|
517
|
-
/**
|
|
554
|
+
/**
|
|
555
|
+
* @type {HookMap<SyncBailHook<[NewExpression], BasicEvaluatedExpression | null | undefined>>}
|
|
556
|
+
* @since 5.73.0
|
|
557
|
+
*/
|
|
518
558
|
evaluateNewExpression: new HookMap(
|
|
519
559
|
() => new SyncBailHook(["expression"])
|
|
520
560
|
),
|
|
521
|
-
/**
|
|
561
|
+
/**
|
|
562
|
+
* @type {HookMap<SyncBailHook<[CallExpression], BasicEvaluatedExpression | null | undefined>>}
|
|
563
|
+
* @since 5.73.0
|
|
564
|
+
*/
|
|
522
565
|
evaluateCallExpression: new HookMap(
|
|
523
566
|
() => new SyncBailHook(["expression"])
|
|
524
567
|
),
|
|
@@ -532,12 +575,18 @@ class JavascriptParser extends Parser {
|
|
|
532
575
|
),
|
|
533
576
|
/** @type {SyncBailHook<[Statement | ModuleDeclaration | MaybeNamedClassDeclaration | MaybeNamedFunctionDeclaration], boolean | void>} */
|
|
534
577
|
preStatement: new SyncBailHook(["statement"]),
|
|
535
|
-
/**
|
|
578
|
+
/**
|
|
579
|
+
* @type {HookMap<SyncBailHook<[Statement | ModuleDeclaration | MaybeNamedClassDeclaration | MaybeNamedFunctionDeclaration], boolean | void>>}
|
|
580
|
+
* @since 5.109.0
|
|
581
|
+
*/
|
|
536
582
|
preStatementByType: new HookMap(() => new SyncBailHook(["statement"])),
|
|
537
583
|
|
|
538
584
|
/** @type {SyncBailHook<[Statement | ModuleDeclaration | MaybeNamedClassDeclaration | MaybeNamedFunctionDeclaration], boolean | void>} */
|
|
539
585
|
blockPreStatement: new SyncBailHook(["declaration"]),
|
|
540
|
-
/**
|
|
586
|
+
/**
|
|
587
|
+
* @type {HookMap<SyncBailHook<[Statement | ModuleDeclaration | MaybeNamedClassDeclaration | MaybeNamedFunctionDeclaration], boolean | void>>}
|
|
588
|
+
* @since 5.109.0
|
|
589
|
+
*/
|
|
541
590
|
blockPreStatementByType: new HookMap(
|
|
542
591
|
() => new SyncBailHook(["declaration"])
|
|
543
592
|
),
|
|
@@ -545,7 +594,10 @@ class JavascriptParser extends Parser {
|
|
|
545
594
|
statement: new SyncBailHook(["statement"]),
|
|
546
595
|
/** @type {SyncBailHook<[IfStatement], boolean | void>} */
|
|
547
596
|
statementIf: new SyncBailHook(["statement"]),
|
|
548
|
-
/**
|
|
597
|
+
/**
|
|
598
|
+
* @type {SyncBailHook<[Expression], GuardCollection | void>}
|
|
599
|
+
* @since 5.105.0
|
|
600
|
+
*/
|
|
549
601
|
collectGuards: new SyncBailHook(["expression"]),
|
|
550
602
|
/** @type {SyncBailHook<[Expression, ClassExpression | ClassDeclaration | MaybeNamedClassDeclaration], boolean | void>} */
|
|
551
603
|
classExtendsExpression: new SyncBailHook([
|
|
@@ -554,7 +606,10 @@ class JavascriptParser extends Parser {
|
|
|
554
606
|
]),
|
|
555
607
|
/** @type {SyncBailHook<[MethodDefinition | PropertyDefinition | StaticBlock, ClassExpression | ClassDeclaration | MaybeNamedClassDeclaration], boolean | void>} */
|
|
556
608
|
classBodyElement: new SyncBailHook(["element", "classDefinition"]),
|
|
557
|
-
/**
|
|
609
|
+
/**
|
|
610
|
+
* @type {SyncBailHook<[Expression, MethodDefinition | PropertyDefinition, ClassExpression | ClassDeclaration | MaybeNamedClassDeclaration], boolean | void>}
|
|
611
|
+
* @since 5.36.0
|
|
612
|
+
*/
|
|
558
613
|
classBodyValue: new SyncBailHook([
|
|
559
614
|
"expression",
|
|
560
615
|
"element",
|
|
@@ -604,13 +659,19 @@ class JavascriptParser extends Parser {
|
|
|
604
659
|
varDeclarationLet: new HookMap(() => new SyncBailHook(["declaration"])),
|
|
605
660
|
/** @type {HookMap<SyncBailHook<[Identifier], boolean | void>>} */
|
|
606
661
|
varDeclarationConst: new HookMap(() => new SyncBailHook(["declaration"])),
|
|
607
|
-
/**
|
|
662
|
+
/**
|
|
663
|
+
* @type {HookMap<SyncBailHook<[Identifier], boolean | void>>}
|
|
664
|
+
* @since 5.100.0
|
|
665
|
+
*/
|
|
608
666
|
varDeclarationUsing: new HookMap(() => new SyncBailHook(["declaration"])),
|
|
609
667
|
/** @type {HookMap<SyncBailHook<[Identifier], boolean | void>>} */
|
|
610
668
|
varDeclarationVar: new HookMap(() => new SyncBailHook(["declaration"])),
|
|
611
669
|
/** @type {HookMap<SyncBailHook<[Identifier], boolean | void>>} */
|
|
612
670
|
pattern: new HookMap(() => new SyncBailHook(["pattern"])),
|
|
613
|
-
/**
|
|
671
|
+
/**
|
|
672
|
+
* @type {SyncBailHook<[Expression], boolean | void>}
|
|
673
|
+
* @since 5.101.3
|
|
674
|
+
*/
|
|
614
675
|
collectDestructuringAssignmentProperties: new SyncBailHook([
|
|
615
676
|
"expression"
|
|
616
677
|
]),
|
|
@@ -628,7 +689,7 @@ class JavascriptParser extends Parser {
|
|
|
628
689
|
typeof: new HookMap(() => new SyncBailHook(["expression"])),
|
|
629
690
|
/** @type {SyncBailHook<[ImportExpression, CallExpression?], boolean | void>} */
|
|
630
691
|
importCall: new SyncBailHook(["expression", "importThen"]),
|
|
631
|
-
/** @type {SyncBailHook<[Expression | ForOfStatement], boolean | void>} */
|
|
692
|
+
/** @type {SyncBailHook<[Expression | ForOfStatement | VariableDeclaration], boolean | void>} */
|
|
632
693
|
topLevelAwait: new SyncBailHook(["expression"]),
|
|
633
694
|
/** @type {HookMap<SyncBailHook<[CallExpression], boolean | void>>} */
|
|
634
695
|
call: new HookMap(() => new SyncBailHook(["expression"])),
|
|
@@ -671,7 +732,10 @@ class JavascriptParser extends Parser {
|
|
|
671
732
|
optionalChaining: new SyncBailHook(["optionalChaining"]),
|
|
672
733
|
/** @type {HookMap<SyncBailHook<[NewExpression], boolean | void>>} */
|
|
673
734
|
new: new HookMap(() => new SyncBailHook(["expression"])),
|
|
674
|
-
/**
|
|
735
|
+
/**
|
|
736
|
+
* @type {SyncBailHook<[BinaryExpression], boolean | void>}
|
|
737
|
+
* @since 5.71.0
|
|
738
|
+
*/
|
|
675
739
|
binaryExpression: new SyncBailHook(["binaryExpression"]),
|
|
676
740
|
/** @type {HookMap<SyncBailHook<[Expression], boolean | void>>} */
|
|
677
741
|
expression: new HookMap(() => new SyncBailHook(["expression"])),
|
|
@@ -695,11 +759,17 @@ class JavascriptParser extends Parser {
|
|
|
695
759
|
expressionLogicalOperator: new SyncBailHook(["expression"]),
|
|
696
760
|
/** @type {SyncBailHook<[Program, Comment[]], boolean | void>} */
|
|
697
761
|
program: new SyncBailHook(["ast", "comments"]),
|
|
698
|
-
/**
|
|
762
|
+
/**
|
|
763
|
+
* @type {SyncBailHook<[ThrowStatement | ReturnStatement], boolean | void>}
|
|
764
|
+
* @since 5.99.0
|
|
765
|
+
*/
|
|
699
766
|
terminate: new SyncBailHook(["statement"]),
|
|
700
767
|
/** @type {SyncBailHook<[Program, Comment[]], boolean | void>} */
|
|
701
768
|
finish: new SyncBailHook(["ast", "comments"]),
|
|
702
|
-
/**
|
|
769
|
+
/**
|
|
770
|
+
* @type {SyncBailHook<[Statement], boolean | void>}
|
|
771
|
+
* @since 5.99.9
|
|
772
|
+
*/
|
|
703
773
|
unusedStatement: new SyncBailHook(["statement"])
|
|
704
774
|
});
|
|
705
775
|
this.sourceType = sourceType;
|
|
@@ -2838,6 +2908,9 @@ class JavascriptParser extends Parser {
|
|
|
2838
2908
|
*/
|
|
2839
2909
|
preWalkFunctionDeclaration(statement) {
|
|
2840
2910
|
if (statement.id) {
|
|
2911
|
+
if (this._strictInModuleOutput) {
|
|
2912
|
+
this._checkStrictModeBinding(statement.id.name, statement.id);
|
|
2913
|
+
}
|
|
2841
2914
|
this.defineVariable(statement.id.name);
|
|
2842
2915
|
}
|
|
2843
2916
|
}
|
|
@@ -3208,6 +3281,10 @@ class JavascriptParser extends Parser {
|
|
|
3208
3281
|
blockPreWalkVariableDeclaration(statement) {
|
|
3209
3282
|
if (statement.kind === "var") return;
|
|
3210
3283
|
|
|
3284
|
+
if (statement.kind === "await using" && this.scope.topLevelScope === true) {
|
|
3285
|
+
this.hooks.topLevelAwait.call(statement);
|
|
3286
|
+
}
|
|
3287
|
+
|
|
3211
3288
|
const hookMap =
|
|
3212
3289
|
statement.kind === "const"
|
|
3213
3290
|
? this.hooks.varDeclarationConst
|
|
@@ -3225,12 +3302,14 @@ class JavascriptParser extends Parser {
|
|
|
3225
3302
|
_preWalkVariableDeclaration(statement, hookMap) {
|
|
3226
3303
|
/** @type {OnIdent | undefined} */
|
|
3227
3304
|
let onIdent;
|
|
3305
|
+
const checkStrictBindings = this._strictInModuleOutput;
|
|
3228
3306
|
for (const declarator of statement.declarations) {
|
|
3229
3307
|
if (declarator.type !== "VariableDeclarator") continue;
|
|
3230
3308
|
this.preWalkVariableDeclarator(declarator);
|
|
3231
3309
|
if (this.hooks.preDeclarator.call(declarator, statement)) continue;
|
|
3232
3310
|
const id = declarator.id;
|
|
3233
3311
|
if (id.type === "Identifier") {
|
|
3312
|
+
if (checkStrictBindings) this._checkStrictModeBinding(id.name, id);
|
|
3234
3313
|
// fast path: plain `const x =` skips the enterPattern dispatch and
|
|
3235
3314
|
// the per-declaration onIdent closure (only patterns need it)
|
|
3236
3315
|
if (!this.callHooksForName(this.hooks.pattern, id.name, id)) {
|
|
@@ -3238,8 +3317,10 @@ class JavascriptParser extends Parser {
|
|
|
3238
3317
|
}
|
|
3239
3318
|
} else {
|
|
3240
3319
|
if (onIdent === undefined) {
|
|
3241
|
-
onIdent = (name, ident) =>
|
|
3320
|
+
onIdent = (name, ident) => {
|
|
3321
|
+
if (checkStrictBindings) this._checkStrictModeBinding(name, ident);
|
|
3242
3322
|
this._defineVariableForDeclaration(name, ident, hookMap);
|
|
3323
|
+
};
|
|
3243
3324
|
}
|
|
3244
3325
|
this.enterPattern(id, onIdent);
|
|
3245
3326
|
}
|
|
@@ -3409,6 +3490,11 @@ class JavascriptParser extends Parser {
|
|
|
3409
3490
|
*/
|
|
3410
3491
|
blockPreWalkClassDeclaration(statement) {
|
|
3411
3492
|
if (statement.id) {
|
|
3493
|
+
// only `await` reaches here: acorn rejects the other names itself,
|
|
3494
|
+
// since a class body is always strict even in a loose script
|
|
3495
|
+
if (this._strictInModuleOutput) {
|
|
3496
|
+
this._checkStrictModeBinding(statement.id.name, statement.id);
|
|
3497
|
+
}
|
|
3412
3498
|
this.defineVariable(statement.id.name);
|
|
3413
3499
|
}
|
|
3414
3500
|
}
|
|
@@ -3489,7 +3575,10 @@ class JavascriptParser extends Parser {
|
|
|
3489
3575
|
this.inBlockScope(() => {
|
|
3490
3576
|
// Error binding is optional in catch clause since ECMAScript 2019
|
|
3491
3577
|
if (catchClause.param !== null) {
|
|
3492
|
-
this.enterPattern(catchClause.param, (ident) => {
|
|
3578
|
+
this.enterPattern(catchClause.param, (ident, identifier) => {
|
|
3579
|
+
if (this._strictInModuleOutput) {
|
|
3580
|
+
this._checkStrictModeBinding(ident, identifier);
|
|
3581
|
+
}
|
|
3493
3582
|
this.defineVariable(ident);
|
|
3494
3583
|
});
|
|
3495
3584
|
this.walkPattern(catchClause.param);
|
|
@@ -3792,6 +3881,9 @@ class JavascriptParser extends Parser {
|
|
|
3792
3881
|
|
|
3793
3882
|
if (this._strictInModuleOutput) {
|
|
3794
3883
|
this._checkStrictModeParams(expression.params);
|
|
3884
|
+
if (expression.id) {
|
|
3885
|
+
this._checkStrictModeBinding(expression.id.name, expression.id);
|
|
3886
|
+
}
|
|
3795
3887
|
}
|
|
3796
3888
|
this.inFunctionScope(true, scopeParams, () => {
|
|
3797
3889
|
for (const param of expression.params) {
|
|
@@ -3929,6 +4021,32 @@ class JavascriptParser extends Parser {
|
|
|
3929
4021
|
}
|
|
3930
4022
|
}
|
|
3931
4023
|
|
|
4024
|
+
/**
|
|
4025
|
+
* Reports a binding name a loose script allows but strict-mode ESM output
|
|
4026
|
+
* rejects — the whole bundle fails to parse, so this is never merely latent.
|
|
4027
|
+
* @param {string} name binding name
|
|
4028
|
+
* @param {Statement | Expression | Identifier} node node to report the violation at
|
|
4029
|
+
*/
|
|
4030
|
+
_checkStrictModeBinding(name, node) {
|
|
4031
|
+
if (name === "eval" || name === "arguments") {
|
|
4032
|
+
this._reportStrictModeViolation(
|
|
4033
|
+
`"${name}" is not allowed as a binding name`,
|
|
4034
|
+
node
|
|
4035
|
+
);
|
|
4036
|
+
} else if (STRICT_MODE_RESERVED_WORDS.has(name)) {
|
|
4037
|
+
this._reportStrictModeViolation(
|
|
4038
|
+
`"${name}" is a reserved word in strict mode and is not allowed as a binding name`,
|
|
4039
|
+
node
|
|
4040
|
+
);
|
|
4041
|
+
} else if (name === "await") {
|
|
4042
|
+
this._reportStrictModeViolation(
|
|
4043
|
+
'"await" is not allowed as a binding name',
|
|
4044
|
+
node,
|
|
4045
|
+
MODULE_GOAL_OUTPUT_REASON
|
|
4046
|
+
);
|
|
4047
|
+
}
|
|
4048
|
+
}
|
|
4049
|
+
|
|
3932
4050
|
/**
|
|
3933
4051
|
* Reports strict-mode-only errors in a function's parameter list: a duplicate
|
|
3934
4052
|
* simple parameter, or a parameter named `eval` / `arguments`.
|
|
@@ -3945,6 +4063,17 @@ class JavascriptParser extends Parser {
|
|
|
3945
4063
|
`"${name}" is not allowed as a parameter name`,
|
|
3946
4064
|
param
|
|
3947
4065
|
);
|
|
4066
|
+
} else if (STRICT_MODE_RESERVED_WORDS.has(name)) {
|
|
4067
|
+
this._reportStrictModeViolation(
|
|
4068
|
+
`"${name}" is a reserved word in strict mode and is not allowed as a parameter name`,
|
|
4069
|
+
param
|
|
4070
|
+
);
|
|
4071
|
+
} else if (name === "await") {
|
|
4072
|
+
this._reportStrictModeViolation(
|
|
4073
|
+
'"await" is not allowed as a parameter name',
|
|
4074
|
+
param,
|
|
4075
|
+
MODULE_GOAL_OUTPUT_REASON
|
|
4076
|
+
);
|
|
3948
4077
|
}
|
|
3949
4078
|
if (seen === undefined) seen = new Set();
|
|
3950
4079
|
if (seen.has(name)) {
|
|
@@ -3998,10 +4127,11 @@ class JavascriptParser extends Parser {
|
|
|
3998
4127
|
* The location is computed here, on the rare violation path only.
|
|
3999
4128
|
* @param {string} reason what is not allowed
|
|
4000
4129
|
* @param {Statement | Expression | Identifier} node node to report the violation at
|
|
4130
|
+
* @param {string=} outputReason why the output rejects it, defaults to strict mode
|
|
4001
4131
|
*/
|
|
4002
|
-
_reportStrictModeViolation(reason, node) {
|
|
4132
|
+
_reportStrictModeViolation(reason, node, outputReason) {
|
|
4003
4133
|
const diagnostic = new WebpackError(
|
|
4004
|
-
`${reason}.
|
|
4134
|
+
`${reason}. ${outputReason === undefined ? STRICT_MODE_OUTPUT_REASON : outputReason}`
|
|
4005
4135
|
);
|
|
4006
4136
|
diagnostic.loc = this.getLocation(node);
|
|
4007
4137
|
if (this.options.strictModeViolations === "error") {
|
|
@@ -4205,6 +4335,10 @@ class JavascriptParser extends Parser {
|
|
|
4205
4335
|
* @param {ClassExpression} expression the class expression
|
|
4206
4336
|
*/
|
|
4207
4337
|
walkClassExpression(expression) {
|
|
4338
|
+
// only `await` reaches here, as for class declarations
|
|
4339
|
+
if (this._strictInModuleOutput && expression.id) {
|
|
4340
|
+
this._checkStrictModeBinding(expression.id.name, expression.id);
|
|
4341
|
+
}
|
|
4208
4342
|
this.walkClass(expression);
|
|
4209
4343
|
}
|
|
4210
4344
|
|
|
@@ -4262,6 +4396,16 @@ class JavascriptParser extends Parser {
|
|
|
4262
4396
|
};
|
|
4263
4397
|
const { params, type } = functionExpression;
|
|
4264
4398
|
const arrow = type === "ArrowFunctionExpression";
|
|
4399
|
+
// the walk skips walkFunctionExpression for a called function expression
|
|
4400
|
+
if (this._strictInModuleOutput) {
|
|
4401
|
+
this._checkStrictModeParams(params);
|
|
4402
|
+
if (type === "FunctionExpression" && functionExpression.id) {
|
|
4403
|
+
this._checkStrictModeBinding(
|
|
4404
|
+
functionExpression.id.name,
|
|
4405
|
+
functionExpression.id
|
|
4406
|
+
);
|
|
4407
|
+
}
|
|
4408
|
+
}
|
|
4265
4409
|
const renameThis = currentThis ? getVarInfo(currentThis) : null;
|
|
4266
4410
|
const varInfoForArgs = options.map(getVarInfo);
|
|
4267
4411
|
const wasTopLevel = this.scope.topLevelScope;
|
|
@@ -5625,8 +5769,41 @@ class JavascriptParser extends Parser {
|
|
|
5625
5769
|
}
|
|
5626
5770
|
|
|
5627
5771
|
/**
|
|
5628
|
-
*
|
|
5629
|
-
*
|
|
5772
|
+
* Reports whether `identifier` may occur as a word in the source text of
|
|
5773
|
+
* `range`. A conservative pre-filter for expensive AST scans: `false` means
|
|
5774
|
+
* it certainly does not occur, while a match inside a comment or a string
|
|
5775
|
+
* yields `true`. Also `true` when no source text is available (preparsed
|
|
5776
|
+
* AST), so callers must stay correct without the filter.
|
|
5777
|
+
* @param {Range} range range to search
|
|
5778
|
+
* @param {string} identifier identifier to look for
|
|
5779
|
+
* @returns {boolean} false when the identifier certainly does not occur
|
|
5780
|
+
*/
|
|
5781
|
+
sourceMayContainIdentifier(range, identifier) {
|
|
5782
|
+
const source = this._source;
|
|
5783
|
+
if (source === undefined) return true;
|
|
5784
|
+
const end = range[1];
|
|
5785
|
+
const length = identifier.length;
|
|
5786
|
+
for (
|
|
5787
|
+
let index = source.indexOf(identifier, range[0]);
|
|
5788
|
+
index !== -1 && index + length <= end;
|
|
5789
|
+
index = source.indexOf(identifier, index + length)
|
|
5790
|
+
) {
|
|
5791
|
+
if (
|
|
5792
|
+
(index === 0 || !isIdentifierChar(source.charCodeAt(index - 1))) &&
|
|
5793
|
+
(index + length === source.length ||
|
|
5794
|
+
!isIdentifierChar(source.charCodeAt(index + length)))
|
|
5795
|
+
) {
|
|
5796
|
+
return true;
|
|
5797
|
+
}
|
|
5798
|
+
}
|
|
5799
|
+
return false;
|
|
5800
|
+
}
|
|
5801
|
+
|
|
5802
|
+
/**
|
|
5803
|
+
* First significant char code at or after `pos`, skipping whitespace,
|
|
5804
|
+
* comments and grouping `)` (a parenthesized node's range excludes its
|
|
5805
|
+
* wrapping parens, so a `,`/`;` separator can sit behind them), or -1 at
|
|
5806
|
+
* end of source.
|
|
5630
5807
|
* @param {string} source source text
|
|
5631
5808
|
* @param {number} pos start offset
|
|
5632
5809
|
* @returns {number} char code of the next token, or -1
|
|
@@ -5643,6 +5820,7 @@ class JavascriptParser extends Parser {
|
|
|
5643
5820
|
c === 13 ||
|
|
5644
5821
|
c === 11 ||
|
|
5645
5822
|
c === 12 ||
|
|
5823
|
+
c === 41 /* ) */ ||
|
|
5646
5824
|
c === 0xa0 ||
|
|
5647
5825
|
c === 0xfeff ||
|
|
5648
5826
|
c === 0x2028 ||
|
|
@@ -6294,12 +6472,13 @@ class JavascriptParser extends Parser {
|
|
|
6294
6472
|
}
|
|
6295
6473
|
}
|
|
6296
6474
|
|
|
6297
|
-
|
|
6298
|
-
|
|
6299
|
-
module.exports.ALLOWED_MEMBER_TYPES_CALL_EXPRESSION =
|
|
6475
|
+
JavascriptParser.ALLOWED_MEMBER_TYPES_ALL = ALLOWED_MEMBER_TYPES_ALL;
|
|
6476
|
+
JavascriptParser.ALLOWED_MEMBER_TYPES_CALL_EXPRESSION =
|
|
6300
6477
|
ALLOWED_MEMBER_TYPES_CALL_EXPRESSION;
|
|
6301
|
-
|
|
6478
|
+
JavascriptParser.ALLOWED_MEMBER_TYPES_EXPRESSION =
|
|
6302
6479
|
ALLOWED_MEMBER_TYPES_EXPRESSION;
|
|
6303
|
-
|
|
6304
|
-
|
|
6305
|
-
|
|
6480
|
+
JavascriptParser.VariableInfo = VariableInfo;
|
|
6481
|
+
JavascriptParser.VariableInfoFlags = VariableInfoFlags;
|
|
6482
|
+
JavascriptParser.getImportAttributes = getImportAttributes;
|
|
6483
|
+
|
|
6484
|
+
module.exports = JavascriptParser;
|
|
@@ -6,14 +6,17 @@
|
|
|
6
6
|
"use strict";
|
|
7
7
|
|
|
8
8
|
const ConstDependency = require("../dependencies/ConstDependency");
|
|
9
|
-
const
|
|
9
|
+
const memoize = require("../util/memoize");
|
|
10
|
+
|
|
10
11
|
const BasicEvaluatedExpression = require("./BasicEvaluatedExpression");
|
|
11
12
|
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
/** @
|
|
13
|
+
const getUnsupportedFeatureWarning = memoize(() =>
|
|
14
|
+
require("../errors/UnsupportedFeatureWarning")
|
|
15
|
+
);
|
|
16
|
+
|
|
17
|
+
/** @import { Expression } from "estree" */
|
|
18
|
+
/** @import JavascriptParser, { Range } from "./JavascriptParser" */
|
|
19
|
+
/** @import { GetMembers } from "./BasicEvaluatedExpression" */
|
|
17
20
|
|
|
18
21
|
module.exports.approve = () => true;
|
|
19
22
|
|
|
@@ -104,7 +107,7 @@ module.exports.expressionIsUnsupported = (parser, message) =>
|
|
|
104
107
|
parser.state.module.addPresentationalDependency(dep);
|
|
105
108
|
if (!parser.state.module) return;
|
|
106
109
|
parser.state.module.addWarning(
|
|
107
|
-
new
|
|
110
|
+
new (getUnsupportedFeatureWarning())(message, parser.getLocation(expr))
|
|
108
111
|
);
|
|
109
112
|
return true;
|
|
110
113
|
};
|