@depup/webpack 5.106.1-depup.0 → 5.109.2-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 +9 -11
- package/bin/webpack.js +12 -0
- package/changes.json +16 -24
- package/hot/dev-server.js +2 -0
- package/lib/APIPlugin.js +60 -35
- package/lib/AsyncDependenciesBlock.js +3 -0
- package/lib/AutomaticPrefetchPlugin.js +6 -1
- package/lib/BannerPlugin.js +13 -5
- package/lib/Cache.js +27 -5
- package/lib/CacheFacade.js +41 -0
- package/lib/Chunk.js +71 -25
- package/lib/ChunkGraph.js +153 -19
- package/lib/ChunkGroup.js +115 -28
- package/lib/ChunkTemplate.js +9 -0
- package/lib/CircularModulesPlugin.js +190 -0
- package/lib/CleanPlugin.js +27 -28
- package/lib/CodeGenerationResults.js +19 -0
- package/lib/CompatibilityPlugin.js +85 -37
- package/lib/Compilation.js +656 -112
- package/lib/Compiler.js +109 -35
- package/lib/ConcatenationScope.js +34 -4
- package/lib/ConditionalInitFragment.js +6 -0
- package/lib/ConstPlugin.js +15 -12
- package/lib/ContextExclusionPlugin.js +3 -1
- package/lib/ContextModule.js +345 -55
- package/lib/ContextModuleFactory.js +193 -51
- package/lib/ContextReplacementPlugin.js +8 -1
- package/lib/DefinePlugin.js +537 -139
- package/lib/DependenciesBlock.js +6 -1
- package/lib/Dependency.js +159 -11
- package/lib/DependencyTemplate.js +7 -1
- package/lib/DependencyTemplates.js +4 -0
- package/lib/DotenvPlugin.js +3 -0
- package/lib/DynamicEntryPlugin.js +3 -1
- package/lib/EntryOptionPlugin.js +42 -2
- package/lib/EntryPlugin.js +4 -1
- package/lib/Entrypoint.js +5 -1
- package/lib/EnvironmentPlugin.js +3 -2
- package/lib/ErrorHelpers.js +7 -0
- package/lib/EvalDevToolModulePlugin.js +3 -1
- package/lib/EvalSourceMapDevToolPlugin.js +11 -11
- package/lib/ExportsInfo.js +421 -113
- package/lib/ExportsInfoApiPlugin.js +4 -3
- package/lib/ExternalModule.js +381 -80
- package/lib/ExternalModuleFactoryPlugin.js +75 -3
- package/lib/ExternalsPlugin.js +3 -1
- package/lib/FileSystemInfo.js +701 -175
- package/lib/FlagAllModulesAsUsedPlugin.js +3 -6
- package/lib/FlagDependencyExportsPlugin.js +82 -9
- package/lib/FlagDependencyUsagePlugin.js +115 -8
- package/lib/FlagEntryExportAsUsedPlugin.js +4 -1
- package/lib/Generator.js +24 -3
- package/lib/HotModuleReplacementPlugin.js +110 -44
- package/lib/IgnorePlugin.js +5 -2
- package/lib/IgnoreWarningsPlugin.js +2 -1
- package/lib/InitFragment.js +33 -30
- package/lib/JavascriptMetaInfoPlugin.js +9 -6
- package/lib/LazyBarrel.js +389 -0
- package/lib/LibraryTemplatePlugin.js +2 -1
- package/lib/LoaderOptionsPlugin.js +3 -1
- package/lib/LoaderTargetPlugin.js +3 -1
- package/lib/MainTemplate.js +15 -0
- package/lib/ManifestPlugin.js +9 -2
- package/lib/Module.js +121 -57
- package/lib/ModuleFactory.js +6 -1
- package/lib/ModuleFilenameHelpers.js +18 -4
- package/lib/ModuleGraph.js +69 -2
- package/lib/ModuleGraphConnection.js +9 -0
- package/lib/ModuleInfoHeaderPlugin.js +5 -0
- package/lib/ModuleNotFoundError.js +3 -83
- package/lib/ModuleProfile.js +27 -1
- package/lib/ModuleSourceTypeConstants.js +52 -19
- package/lib/ModuleTemplate.js +10 -0
- package/lib/ModuleTypeConstants.js +20 -4
- package/lib/MultiCompiler.js +59 -4
- package/lib/MultiStats.js +9 -0
- package/lib/MultiWatching.js +6 -0
- package/lib/NoEmitOnErrorsPlugin.js +1 -1
- package/lib/NodeStuffPlugin.js +78 -46
- package/lib/NormalModule.js +519 -206
- package/lib/NormalModuleFactory.js +156 -31
- package/lib/NormalModuleReplacementPlugin.js +3 -1
- package/lib/NullFactory.js +1 -0
- package/lib/OptionsApply.js +1 -0
- package/lib/Parser.js +3 -1
- package/lib/PlatformPlugin.js +2 -1
- package/lib/PrefetchPlugin.js +4 -1
- package/lib/ProgressPlugin.js +351 -161
- package/lib/ProvidePlugin.js +6 -3
- package/lib/RawModule.js +32 -16
- package/lib/RecordIdsPlugin.js +9 -0
- package/lib/RequestShortener.js +8 -0
- package/lib/ResolverFactory.js +5 -0
- package/lib/RuntimeGlobals.js +58 -5
- package/lib/RuntimeModule.js +22 -7
- package/lib/RuntimePlugin.js +123 -118
- package/lib/RuntimeTemplate.js +616 -37
- package/lib/SelfModuleFactory.js +3 -0
- package/lib/SourceMapDevToolModuleOptionsPlugin.js +2 -0
- package/lib/SourceMapDevToolPlugin.js +341 -63
- package/lib/Stats.js +6 -0
- package/lib/Template.js +52 -6
- package/lib/TemplatedPathPlugin.js +505 -138
- package/lib/UseStrictPlugin.js +3 -2
- package/lib/WarnCaseSensitiveModulesPlugin.js +72 -3
- package/lib/WarnDeprecatedOptionPlugin.js +6 -2
- package/lib/WarnNoModeSetPlugin.js +18 -2
- package/lib/WatchIgnorePlugin.js +5 -1
- package/lib/Watching.js +25 -3
- package/lib/WebpackError.js +3 -74
- package/lib/WebpackIsIncludedPlugin.js +4 -2
- package/lib/WebpackOptionsApply.js +88 -25
- package/lib/WebpackOptionsDefaulter.js +1 -0
- package/lib/asset/AssetBytesGenerator.js +28 -10
- package/lib/asset/AssetBytesParser.js +1 -0
- package/lib/asset/AssetGenerator.js +199 -60
- package/lib/asset/AssetModule.js +47 -0
- package/lib/asset/AssetModulesPlugin.js +115 -24
- package/lib/asset/AssetParser.js +4 -2
- package/lib/asset/AssetSourceGenerator.js +26 -8
- package/lib/asset/AssetSourceParser.js +1 -0
- package/lib/asset/RawDataUrlModule.js +23 -13
- package/lib/asset/WebManifestGenerator.js +164 -0
- package/lib/asset/WebManifestParser.js +130 -0
- package/lib/async-modules/AsyncModuleHelpers.js +1 -0
- package/lib/async-modules/AwaitDependenciesInitFragment.js +18 -4
- package/lib/async-modules/InferAsyncModulesPlugin.js +1 -1
- package/lib/async-modules/isGeneratorLowered.js +26 -0
- package/lib/buildChunkGraph.js +107 -15
- package/lib/bun/BunTargetPlugin.js +42 -0
- package/lib/cache/AddBuildDependenciesPlugin.js +3 -1
- package/lib/cache/AddManagedPathsPlugin.js +5 -1
- package/lib/cache/IdleFileCachePlugin.js +6 -1
- package/lib/cache/MemoryCachePlugin.js +1 -1
- package/lib/cache/MemoryWithGcCachePlugin.js +4 -1
- package/lib/cache/PackFileCacheStrategy.js +302 -12
- package/lib/cache/ResolverCachePlugin.js +12 -1
- package/lib/cache/getLazyHashedEtag.js +13 -2
- package/lib/cache/mergeEtags.js +4 -0
- package/lib/cli.js +142 -20
- package/lib/config/browserslistTargetHandler.js +141 -0
- package/lib/config/defaults.js +612 -43
- package/lib/config/defineConfig.js +31 -0
- package/lib/config/normalization.js +46 -1
- package/lib/config/target.js +200 -2
- package/lib/container/ContainerEntryDependency.js +2 -0
- package/lib/container/ContainerEntryModule.js +27 -14
- package/lib/container/ContainerEntryModuleFactory.js +1 -0
- package/lib/container/ContainerExposedDependency.js +6 -2
- package/lib/container/ContainerPlugin.js +2 -1
- package/lib/container/ContainerReferencePlugin.js +3 -2
- package/lib/container/FallbackDependency.js +9 -7
- package/lib/container/FallbackItemDependency.js +1 -0
- package/lib/container/FallbackModule.js +22 -9
- package/lib/container/FallbackModuleFactory.js +1 -0
- package/lib/container/HoistContainerReferencesPlugin.js +47 -55
- package/lib/container/ModuleFederationPlugin.js +21 -29
- package/lib/container/RemoteModule.js +33 -10
- package/lib/container/RemoteRuntimeModule.js +15 -12
- package/lib/container/RemoteToExternalDependency.js +1 -0
- package/lib/container/options.js +7 -0
- package/lib/css/CssGenerator.js +540 -272
- package/lib/css/CssInjectStyleRuntimeModule.js +86 -70
- package/lib/css/CssLoadingRuntimeModule.js +173 -81
- package/lib/{CssModule.js → css/CssModule.js} +72 -37
- package/lib/css/CssModulesPlugin.js +371 -208
- package/lib/css/CssParser.js +3538 -1963
- package/lib/css/syntax.js +4155 -0
- package/lib/debug/ProfilingPlugin.js +33 -2
- package/lib/deno/DenoTargetPlugin.js +41 -0
- package/lib/dependencies/AMDDefineDependency.js +29 -17
- package/lib/dependencies/AMDDefineDependencyParserPlugin.js +19 -6
- package/lib/dependencies/AMDPlugin.js +6 -3
- package/lib/dependencies/AMDRequireArrayDependency.js +13 -11
- package/lib/dependencies/AMDRequireContextDependency.js +10 -11
- package/lib/dependencies/AMDRequireDependenciesBlock.js +1 -0
- package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +28 -14
- package/lib/dependencies/AMDRequireDependency.js +28 -20
- package/lib/dependencies/AMDRequireItemDependency.js +1 -0
- package/lib/dependencies/AMDRuntimeModules.js +3 -0
- package/lib/dependencies/CachedConstDependency.js +9 -1
- package/lib/dependencies/CommonJsDependencyHelpers.js +104 -0
- package/lib/dependencies/CommonJsExportRequireDependency.js +157 -38
- package/lib/dependencies/CommonJsExportsDependency.js +74 -20
- package/lib/dependencies/CommonJsExportsParserPlugin.js +246 -15
- package/lib/dependencies/CommonJsFullRequireDependency.js +91 -27
- package/lib/dependencies/CommonJsImportsParserPlugin.js +189 -24
- package/lib/dependencies/CommonJsPlugin.js +7 -4
- package/lib/dependencies/CommonJsRequireContextDependency.js +13 -13
- package/lib/dependencies/CommonJsRequireDependency.js +135 -13
- package/lib/dependencies/CommonJsSelfReferenceDependency.js +60 -16
- package/lib/dependencies/ConstDependency.js +22 -12
- package/lib/dependencies/ContextDependency.js +13 -2
- package/lib/dependencies/ContextDependencyHelpers.js +7 -4
- package/lib/dependencies/ContextDependencyTemplateAsId.js +2 -1
- package/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +1 -0
- package/lib/dependencies/ContextElementDependency.js +27 -14
- package/lib/dependencies/CreateRequireParserPlugin.js +14 -7
- package/lib/dependencies/CreateScriptUrlDependency.js +9 -7
- package/lib/dependencies/CriticalDependencyWarning.js +3 -1
- package/lib/dependencies/CssIcssExportDependency.js +681 -367
- package/lib/dependencies/CssIcssImportDependency.js +62 -17
- package/lib/dependencies/CssIcssSymbolDependency.js +36 -17
- package/lib/dependencies/CssImportDependency.js +37 -1
- package/lib/dependencies/CssUrlDependency.js +87 -14
- package/lib/dependencies/DelegatedSourceDependency.js +1 -0
- package/lib/dependencies/DllEntryDependency.js +12 -13
- package/lib/dependencies/DynamicExports.js +5 -0
- package/lib/dependencies/EntryDependency.js +1 -0
- package/lib/dependencies/ExportBindingInitFragment.js +164 -0
- package/lib/dependencies/ExportsInfoDependency.js +18 -12
- package/lib/dependencies/ExternalModuleDependency.js +13 -5
- package/lib/dependencies/ExternalModuleInitFragment.js +10 -5
- package/lib/dependencies/ExternalModuleInitFragmentDependency.js +19 -12
- package/lib/dependencies/HarmonyAcceptDependency.js +24 -26
- package/lib/dependencies/HarmonyAcceptImportDependency.js +2 -0
- package/lib/dependencies/HarmonyCompatibilityDependency.js +33 -14
- package/lib/dependencies/HarmonyDetectionParserPlugin.js +108 -30
- package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +34 -3
- package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +70 -33
- package/lib/dependencies/HarmonyExportExpressionDependency.js +133 -43
- package/lib/dependencies/HarmonyExportHeaderDependency.js +11 -9
- package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +268 -44
- package/lib/dependencies/HarmonyExportInitFragment.js +28 -20
- package/lib/dependencies/HarmonyExportSpecifierDependency.js +88 -18
- package/lib/dependencies/HarmonyExports.js +6 -1
- package/lib/dependencies/HarmonyImportDependency.js +60 -4
- package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +139 -146
- package/lib/dependencies/HarmonyImportGuard.js +427 -0
- package/lib/dependencies/HarmonyImportSideEffectDependency.js +22 -1
- package/lib/dependencies/HarmonyImportSpecifierDependency.js +146 -24
- package/lib/{HarmonyLinkingError.js → dependencies/HarmonyLinkingError.js} +6 -3
- package/lib/dependencies/HarmonyModulesPlugin.js +11 -1
- package/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +2 -1
- package/lib/dependencies/HtmlEntryDependency.js +1295 -0
- package/lib/dependencies/HtmlInlineHtmlDependency.js +107 -0
- package/lib/dependencies/HtmlInlineScriptDependency.js +126 -0
- package/lib/dependencies/HtmlInlineStyleDependency.js +152 -0
- package/lib/dependencies/HtmlSourceDependency.js +172 -0
- package/lib/dependencies/ImportContextDependency.js +9 -9
- package/lib/dependencies/ImportDependency.js +92 -3
- package/lib/dependencies/ImportEagerDependency.js +2 -0
- package/lib/dependencies/ImportMetaContextDependency.js +1 -0
- package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +35 -19
- package/lib/dependencies/ImportMetaContextPlugin.js +40 -8
- package/lib/dependencies/ImportMetaGlobDependency.js +81 -0
- package/lib/dependencies/ImportMetaGlobDependencyParserPlugin.js +78 -0
- package/lib/dependencies/ImportMetaGlobHelpers.js +660 -0
- package/lib/dependencies/ImportMetaHotAcceptDependency.js +2 -0
- package/lib/dependencies/ImportMetaHotDeclineDependency.js +2 -0
- package/lib/dependencies/ImportMetaPlugin.js +595 -209
- package/lib/dependencies/ImportMetaResolveDependency.js +90 -0
- package/lib/dependencies/ImportParserPlugin.js +114 -27
- package/lib/dependencies/ImportPhase.js +17 -11
- package/lib/dependencies/ImportPlugin.js +2 -1
- package/lib/dependencies/ImportWeakDependency.js +3 -0
- package/lib/dependencies/JsonExportsDependency.js +15 -10
- package/lib/dependencies/LoaderDependency.js +2 -0
- package/lib/dependencies/LoaderImportDependency.js +3 -0
- package/lib/dependencies/LoaderPlugin.js +9 -2
- package/lib/dependencies/LocalModule.js +15 -12
- package/lib/dependencies/LocalModuleDependency.js +15 -13
- package/lib/dependencies/LocalModulesHelpers.js +3 -0
- package/lib/dependencies/ModuleDecoratorDependency.js +16 -10
- package/lib/dependencies/ModuleDependency.js +14 -0
- package/lib/dependencies/ModuleDependencyTemplateAsId.js +1 -0
- package/lib/dependencies/ModuleDependencyTemplateAsRequireId.js +1 -0
- package/lib/dependencies/ModuleHotAcceptDependency.js +2 -0
- package/lib/dependencies/ModuleHotDeclineDependency.js +2 -0
- package/lib/dependencies/ModuleInitFragmentDependency.js +19 -11
- package/lib/dependencies/NullDependency.js +2 -0
- package/lib/dependencies/PrefetchDependency.js +1 -0
- package/lib/dependencies/ProvidedDependency.js +36 -27
- package/lib/dependencies/PureExpressionDependency.js +14 -10
- package/lib/dependencies/RequireContextDependency.js +1 -0
- package/lib/dependencies/RequireContextDependencyParserPlugin.js +2 -1
- package/lib/dependencies/RequireContextPlugin.js +2 -1
- package/lib/dependencies/RequireEnsureDependenciesBlock.js +1 -0
- package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +4 -6
- package/lib/dependencies/RequireEnsureDependency.js +16 -13
- package/lib/dependencies/RequireEnsureItemDependency.js +1 -0
- package/lib/dependencies/RequireEnsurePlugin.js +2 -1
- package/lib/dependencies/RequireHeaderDependency.js +7 -4
- package/lib/dependencies/RequireIncludeDependency.js +2 -0
- package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +11 -12
- package/lib/dependencies/RequireIncludePlugin.js +2 -1
- package/lib/{RequireJsStuffPlugin.js → dependencies/RequireJsStuffPlugin.js} +9 -8
- package/lib/dependencies/RequireResolveContextDependency.js +10 -11
- package/lib/dependencies/RequireResolveDependency.js +2 -0
- package/lib/dependencies/RequireResolveHeaderDependency.js +8 -5
- package/lib/dependencies/RuntimeRequirementsDependency.js +11 -8
- package/lib/dependencies/StaticExportsDependency.js +13 -10
- package/lib/dependencies/SystemPlugin.js +9 -6
- package/lib/dependencies/SystemRuntimeModule.js +1 -0
- package/lib/dependencies/TopLevelAwaitDependency.js +93 -0
- package/lib/dependencies/URLContextDependency.js +8 -7
- package/lib/dependencies/URLDependency.js +157 -33
- package/lib/dependencies/URLPlugin.js +2 -0
- package/lib/dependencies/UnsupportedDependency.js +12 -13
- package/lib/dependencies/WebAssemblyExportImportedDependency.js +15 -16
- package/lib/dependencies/WebAssemblyImportDependency.js +19 -18
- package/lib/dependencies/WebpackIsIncludedDependency.js +3 -0
- package/lib/dependencies/{WorkerPlugin.js → WorkerAndWorkletPlugin.js} +364 -114
- package/lib/dependencies/WorkerDependency.js +111 -27
- package/lib/dependencies/WorkletDependency.js +278 -0
- package/lib/dependencies/getFunctionExpression.js +1 -0
- package/lib/dependencies/processExportInfo.js +14 -11
- package/lib/{DelegatedModule.js → dll/DelegatedModule.js} +71 -44
- package/lib/{DelegatedModuleFactoryPlugin.js → dll/DelegatedModuleFactoryPlugin.js} +27 -4
- package/lib/{DelegatedPlugin.js → dll/DelegatedPlugin.js} +5 -3
- package/lib/{DllEntryPlugin.js → dll/DllEntryPlugin.js} +9 -5
- package/lib/{DllModule.js → dll/DllModule.js} +36 -24
- package/lib/{DllModuleFactory.js → dll/DllModuleFactory.js} +5 -4
- package/lib/{DllPlugin.js → dll/DllPlugin.js} +24 -6
- package/lib/{DllReferencePlugin.js → dll/DllReferencePlugin.js} +26 -18
- package/lib/{LibManifestPlugin.js → dll/LibManifestPlugin.js} +14 -10
- package/lib/electron/ElectronTargetPlugin.js +24 -5
- package/lib/{AbstractMethodError.js → errors/AbstractMethodError.js} +10 -1
- package/lib/{AsyncDependencyToInitialChunkError.js → errors/AsyncDependencyToInitialChunkError.js} +8 -3
- package/lib/errors/BuildCycleError.js +1 -1
- package/lib/{ChunkRenderError.js → errors/ChunkRenderError.js} +1 -1
- package/lib/{CodeGenerationError.js → errors/CodeGenerationError.js} +1 -1
- package/lib/{CommentCompilationWarning.js → errors/CommentCompilationWarning.js} +9 -3
- package/lib/{ConcurrentCompilationError.js → errors/ConcurrentCompilationError.js} +5 -2
- package/lib/{EnvironmentNotSupportAsyncWarning.js → errors/EnvironmentNotSupportAsyncWarning.js} +5 -5
- package/lib/{HookWebpackError.js → errors/HookWebpackError.js} +20 -16
- package/lib/{IgnoreErrorModuleFactory.js → errors/IgnoreErrorModuleFactory.js} +7 -4
- package/lib/{InvalidDependenciesModuleWarning.js → errors/InvalidDependenciesModuleWarning.js} +6 -3
- package/lib/errors/JSONParseError.js +115 -0
- package/lib/errors/LoaderLoadingError.js +20 -0
- package/lib/{ModuleBuildError.js → errors/ModuleBuildError.js} +22 -16
- package/lib/{ModuleDependencyError.js → errors/ModuleDependencyError.js} +10 -3
- package/lib/{ModuleDependencyWarning.js → errors/ModuleDependencyWarning.js} +13 -5
- package/lib/{ModuleError.js → errors/ModuleError.js} +10 -14
- package/lib/{ModuleHashingError.js → errors/ModuleHashingError.js} +5 -1
- package/lib/errors/ModuleNotFoundError.js +94 -0
- package/lib/errors/ModuleParseError.js +141 -0
- package/lib/{ModuleRestoreError.js → errors/ModuleRestoreError.js} +4 -1
- package/lib/{ModuleStoreError.js → errors/ModuleStoreError.js} +5 -1
- package/lib/{ModuleWarning.js → errors/ModuleWarning.js} +13 -14
- package/lib/{NodeStuffInWebError.js → errors/NodeStuffInWebError.js} +7 -5
- package/lib/errors/NonErrorEmittedError.js +30 -0
- package/lib/{UnhandledSchemeError.js → errors/UnhandledSchemeError.js} +9 -2
- package/lib/{UnsupportedFeatureWarning.js → errors/UnsupportedFeatureWarning.js} +4 -3
- package/lib/errors/WebpackError.js +84 -0
- package/lib/esm/ExportWebpackRequireRuntimeModule.js +2 -0
- package/lib/esm/ModuleChunkFormatPlugin.js +52 -15
- package/lib/esm/ModuleChunkLoadingPlugin.js +11 -3
- package/lib/esm/ModuleChunkLoadingRuntimeModule.js +80 -52
- package/lib/hmr/HotModuleReplacement.runtime.js +175 -30
- package/lib/hmr/HotModuleReplacementRuntimeModule.js +8 -0
- package/lib/hmr/JavascriptHotModuleReplacement.runtime.js +173 -26
- package/lib/hmr/JavascriptHotModuleReplacementHelper.js +1 -0
- package/lib/hmr/LazyCompilationPlugin.js +154 -7
- package/lib/hmr/lazyCompilationBackend.js +53 -12
- package/lib/html/HtmlGenerator.js +1490 -0
- package/lib/html/HtmlModule.js +41 -0
- package/lib/html/HtmlModulesPlugin.js +1129 -0
- package/lib/html/HtmlParser.js +1970 -0
- package/lib/html/favicon.svg +1 -0
- package/lib/html/syntax.js +9106 -0
- package/lib/ids/ChunkModuleIdRangePlugin.js +3 -1
- package/lib/ids/DeterministicChunkIdsPlugin.js +3 -1
- package/lib/ids/DeterministicModuleIdsPlugin.js +3 -1
- package/lib/ids/HashedModuleIdsPlugin.js +2 -1
- package/lib/ids/IdHelpers.js +49 -12
- package/lib/ids/NamedChunkIdsPlugin.js +3 -1
- package/lib/ids/NamedModuleIdsPlugin.js +3 -1
- package/lib/ids/NaturalChunkIdsPlugin.js +1 -1
- package/lib/ids/NaturalModuleIdsPlugin.js +1 -1
- package/lib/ids/OccurrenceChunkIdsPlugin.js +2 -1
- package/lib/ids/OccurrenceModuleIdsPlugin.js +4 -1
- package/lib/ids/SyncModuleIdsPlugin.js +3 -1
- package/lib/index.js +66 -15
- package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +5 -6
- package/lib/javascript/BasicEvaluatedExpression.js +370 -49
- package/lib/javascript/ChunkFormatHelpers.js +2 -1
- package/lib/javascript/ChunkHelpers.js +1 -0
- package/lib/javascript/CommonJsChunkFormatPlugin.js +1 -1
- package/lib/javascript/EnableChunkLoadingPlugin.js +6 -1
- package/lib/javascript/JavascriptGenerator.js +213 -51
- package/lib/javascript/JavascriptModule.js +54 -0
- package/lib/javascript/JavascriptModulesPlugin.js +628 -198
- package/lib/javascript/JavascriptParser.js +1334 -471
- package/lib/javascript/JavascriptParserHelpers.js +10 -7
- package/lib/javascript/StartupHelpers.js +5 -0
- package/lib/javascript/syntax.js +5037 -0
- package/lib/json/JsonData.js +5 -0
- package/lib/json/JsonGenerator.js +21 -0
- package/lib/json/JsonModule.js +40 -0
- package/lib/json/JsonModulesPlugin.js +8 -1
- package/lib/json/JsonParser.js +18 -27
- package/lib/library/AbstractLibraryPlugin.js +17 -2
- package/lib/library/AmdLibraryPlugin.js +8 -0
- package/lib/library/AssignLibraryPlugin.js +21 -3
- package/lib/library/EnableLibraryPlugin.js +8 -2
- package/lib/library/ExportPropertyLibraryPlugin.js +10 -0
- package/lib/{FalseIIFEUmdWarning.js → library/FalseIIFEUmdWarning.js} +2 -1
- package/lib/library/JsonpLibraryPlugin.js +8 -0
- package/lib/library/ModuleLibraryPlugin.js +154 -7
- package/lib/library/SystemLibraryPlugin.js +11 -3
- package/lib/library/UmdLibraryPlugin.js +16 -0
- package/lib/loaders/LoaderRunner.js +714 -0
- package/lib/loaders/loadLoader.js +100 -0
- package/lib/logging/Logger.js +17 -0
- package/lib/logging/createConsoleLogger.js +7 -0
- package/lib/logging/runtime.js +2 -0
- package/lib/logging/truncateArgs.js +2 -0
- package/lib/node/CommonJsChunkLoadingPlugin.js +5 -1
- package/lib/node/NodeEnvironmentPlugin.js +7 -3
- package/lib/node/NodeSourcePlugin.js +1 -1
- package/lib/node/NodeTargetPlugin.js +4 -63
- package/lib/node/NodeTemplatePlugin.js +3 -1
- package/lib/node/NodeWatchFileSystem.js +40 -22
- package/lib/node/ReadFileChunkLoadingRuntimeModule.js +13 -9
- package/lib/node/ReadFileCompileAsyncWasmPlugin.js +33 -3
- package/lib/node/ReadFileCompileWasmPlugin.js +28 -3
- package/lib/node/RequireChunkLoadingRuntimeModule.js +21 -16
- package/lib/node/nodeBuiltins.js +80 -0
- package/lib/node/nodeConsole.js +116 -64
- package/lib/optimize/AggressiveMergingPlugin.js +22 -16
- package/lib/optimize/AggressiveSplittingPlugin.js +6 -1
- package/lib/optimize/ConcatenatedModule.js +603 -130
- package/lib/optimize/ConstExportsPlugin.js +211 -0
- package/lib/optimize/EnsureChunkConditionsPlugin.js +2 -1
- package/lib/optimize/FlagIncludedChunksPlugin.js +15 -4
- package/lib/optimize/InlineExports.js +178 -0
- package/lib/optimize/InnerGraph.js +374 -262
- package/lib/optimize/InnerGraphPlugin.js +246 -117
- package/lib/optimize/LimitChunkCountPlugin.js +9 -0
- package/lib/optimize/MangleExportsPlugin.js +5 -1
- package/lib/optimize/MergeDuplicateChunksPlugin.js +2 -0
- package/lib/optimize/MinChunkSizePlugin.js +2 -1
- package/lib/optimize/MinMaxSizeWarning.js +5 -4
- package/lib/optimize/ModuleConcatenationPlugin.js +229 -55
- package/lib/optimize/RealContentHashPlugin.js +130 -52
- package/lib/optimize/RemoveEmptyChunksPlugin.js +2 -1
- package/lib/optimize/RemoveParentModulesPlugin.js +3 -1
- package/lib/optimize/RuntimeChunkPlugin.js +2 -1
- package/lib/optimize/SideEffectsFlagPlugin.js +381 -55
- package/lib/optimize/SplitChunksPlugin.js +200 -50
- package/lib/performance/AssetsOverSizeLimitWarning.js +3 -2
- package/lib/performance/EntrypointsOverSizeLimitWarning.js +3 -2
- package/lib/performance/NoAsyncChunksWarning.js +5 -3
- package/lib/performance/SizeLimitsPlugin.js +8 -2
- package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +1 -0
- package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +21 -0
- package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +1 -0
- package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +5 -1
- package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +25 -13
- package/lib/prefetch/ResourceHintPlugin.js +687 -0
- package/lib/prefetch/ResourceHintRuntimeModule.js +149 -0
- package/lib/prefetch/StartupAssetHintRuntimeModule.js +210 -0
- package/lib/prefetch/parseResourceHintOptions.js +103 -0
- package/lib/rules/BasicEffectRulePlugin.js +3 -0
- package/lib/rules/BasicMatcherRulePlugin.js +3 -0
- package/lib/rules/ObjectMatcherRulePlugin.js +3 -0
- package/lib/rules/RuleSetCompiler.js +132 -0
- package/lib/rules/UseEffectRulePlugin.js +10 -3
- package/lib/runtime/AsyncModuleGeneratorRuntimeModule.js +56 -0
- package/lib/runtime/AsyncModuleRuntimeModule.js +52 -33
- package/lib/runtime/AutoPublicPathRuntimeModule.js +22 -9
- package/lib/runtime/BaseUriRuntimeModule.js +1 -0
- package/lib/runtime/ChunkNameRuntimeModule.js +1 -0
- package/lib/runtime/CommonJsWrapRuntimeModule.js +37 -0
- package/lib/runtime/CompatGetDefaultExportRuntimeModule.js +2 -1
- package/lib/runtime/CompatRuntimeModule.js +2 -0
- package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +7 -4
- package/lib/runtime/CreateScriptRuntimeModule.js +1 -0
- package/lib/runtime/CreateScriptUrlRuntimeModule.js +1 -0
- package/lib/runtime/DefinePropertyGettersRuntimeModule.js +34 -4
- package/lib/runtime/EnsureChunkRuntimeModule.js +1 -0
- package/lib/runtime/GetChunkFilenameRuntimeModule.js +88 -8
- package/lib/runtime/GetFullHashRuntimeModule.js +1 -0
- package/lib/runtime/GetMainFilenameRuntimeModule.js +1 -0
- package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +2 -1
- package/lib/runtime/GetWorkletBootstrapRuntimeModule.js +59 -0
- package/lib/runtime/GlobalRuntimeModule.js +1 -0
- package/lib/runtime/HasOwnPropertyRuntimeModule.js +2 -1
- package/lib/runtime/HelperRuntimeModule.js +5 -0
- package/lib/runtime/LoadScriptRuntimeModule.js +28 -37
- package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +354 -37
- package/lib/runtime/MakeNamespaceObjectRuntimeModule.js +2 -1
- package/lib/runtime/NonceRuntimeModule.js +1 -0
- package/lib/runtime/OnChunksLoadedRuntimeModule.js +5 -4
- package/lib/runtime/PublicPathRuntimeModule.js +1 -0
- package/lib/runtime/RelativeUrlRuntimeModule.js +4 -2
- package/lib/runtime/RuntimeIdRuntimeModule.js +1 -0
- package/lib/runtime/SetAnonymousDefaultNameRuntimeModule.js +38 -0
- package/lib/runtime/StartupChunkDependenciesPlugin.js +13 -1
- package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +2 -1
- package/lib/runtime/StartupEntrypointRuntimeModule.js +5 -3
- package/lib/runtime/SystemContextRuntimeModule.js +1 -0
- package/lib/runtime/ToBinaryRuntimeModule.js +1 -0
- package/lib/runtime/WorkerRuntimeModule.js +33 -0
- package/lib/schemes/DataUriPlugin.js +14 -2
- package/lib/schemes/FileUriPlugin.js +1 -1
- package/lib/schemes/HttpUriPlugin.js +86 -4
- package/lib/schemes/VirtualUrlPlugin.js +8 -4
- package/lib/serialization/AggregateErrorSerializer.js +9 -6
- package/lib/serialization/ArraySerializer.js +6 -8
- package/lib/serialization/BinaryMiddleware.js +427 -1006
- package/lib/serialization/DateObjectSerializer.js +4 -2
- package/lib/serialization/ErrorObjectSerializer.js +10 -6
- package/lib/serialization/FileMiddleware.js +345 -59
- package/lib/serialization/MapObjectSerializer.js +7 -9
- package/lib/serialization/NullPrototypeObjectSerializer.js +9 -9
- package/lib/serialization/ObjectMiddleware.js +73 -13
- package/lib/serialization/PlainObjectSerializer.js +16 -8
- package/lib/serialization/RegExpObjectSerializer.js +4 -2
- package/lib/serialization/Serializer.js +6 -0
- package/lib/serialization/SerializerMiddleware.js +14 -2
- package/lib/serialization/SetObjectSerializer.js +6 -8
- package/lib/serialization/SingleItemMiddleware.js +3 -0
- package/lib/sharing/ConsumeSharedFallbackDependency.js +1 -0
- package/lib/sharing/ConsumeSharedModule.js +21 -7
- package/lib/sharing/ConsumeSharedPlugin.js +11 -11
- package/lib/sharing/ConsumeSharedRuntimeModule.js +55 -45
- package/lib/sharing/ProvideForSharedDependency.js +1 -0
- package/lib/sharing/ProvideSharedDependency.js +34 -15
- package/lib/sharing/ProvideSharedModule.js +42 -12
- package/lib/sharing/ProvideSharedModuleFactory.js +1 -0
- package/lib/sharing/ProvideSharedPlugin.js +13 -8
- package/lib/sharing/SharePlugin.js +5 -1
- package/lib/sharing/ShareRuntimeModule.js +19 -16
- package/lib/sharing/resolveMatchedConfigs.js +6 -2
- package/lib/sharing/utils.js +9 -1
- package/lib/stats/DefaultStatsFactoryPlugin.js +289 -201
- package/lib/stats/DefaultStatsPresetPlugin.js +14 -2
- package/lib/stats/DefaultStatsPrinterPlugin.js +74 -170
- package/lib/stats/StatsFactory.js +70 -27
- package/lib/stats/StatsPrinter.js +16 -2
- package/lib/typescript/TypeScriptPlugin.js +210 -0
- package/lib/url/URLParserPlugin.js +111 -23
- package/lib/util/ArrayHelpers.js +1 -0
- package/lib/util/ArrayQueue.js +10 -5
- package/lib/util/AsyncQueue.js +154 -74
- package/lib/util/Hash.js +2 -2
- package/lib/util/IterableHelpers.js +3 -0
- package/lib/util/LazyBucketSortedSet.js +26 -0
- package/lib/util/LazySet.js +45 -4
- package/lib/util/LocConverter.js +64 -0
- package/lib/util/ParallelismFactorCalculator.js +1 -0
- package/lib/util/Queue.js +6 -3
- package/lib/util/Semaphore.js +15 -1
- package/lib/util/SetHelpers.js +4 -1
- package/lib/util/SortableSet.js +7 -1
- package/lib/util/SourceProcessor.js +119 -0
- package/lib/util/StackedCacheMap.js +20 -3
- package/lib/util/StackedMap.js +162 -43
- package/lib/util/StringXor.js +1 -1
- package/lib/util/TupleQueue.js +7 -3
- package/lib/util/TupleSet.js +14 -0
- package/lib/util/URLAbsoluteSpecifier.js +1 -0
- package/lib/util/WeakTupleMap.js +60 -1
- package/lib/util/binarySearchBounds.js +3 -2
- package/lib/util/chainedImports.js +3 -3
- package/lib/util/cleverMerge.js +19 -2
- package/lib/util/comparators.js +35 -4
- package/lib/util/compileBooleanMatcher.js +9 -0
- package/lib/util/concatenate.js +80 -24
- package/lib/util/conventions.js +46 -1
- package/lib/util/createHash.js +0 -1
- package/lib/util/createHooksRegistry.js +43 -0
- package/lib/util/createMappings.js +118 -0
- package/lib/util/dataURL.js +3 -2
- package/lib/util/deprecation.js +19 -0
- package/lib/util/deterministicGrouping.js +46 -17
- package/lib/util/extractSourceMap.js +2 -1
- package/lib/util/extractUrlAndGlobal.js +1 -0
- package/lib/util/findGraphRoots.js +7 -0
- package/lib/{formatLocation.js → util/formatLocation.js} +4 -2
- package/lib/{SizeFormatHelpers.js → util/formatSize.js} +10 -3
- package/lib/util/fs.js +87 -14
- package/lib/util/generateDebugId.js +1 -0
- package/lib/util/globUtils.js +710 -0
- package/lib/util/hash/BatchedHash.js +1 -0
- package/lib/util/hash/BulkUpdateHash.js +1 -0
- package/lib/util/hash/DebugHash.js +1 -0
- package/lib/util/hash/hash-digest.js +32 -15
- package/lib/util/hash/md4.js +1 -1
- package/lib/util/hash/wasm-hash.js +5 -0
- package/lib/util/hash/xxhash64.js +1 -1
- package/lib/util/identifier.js +118 -7
- package/lib/util/implicitTypeLoaderFallback.js +62 -0
- package/lib/util/internalSerializables.js +102 -60
- package/lib/util/magicComment.js +149 -7
- package/lib/util/makeSerializable.js +7 -0
- package/lib/util/memoize.js +2 -0
- package/lib/util/mimeTypes.js +176 -0
- package/lib/util/nonNumericOnlyHash.js +31 -1
- package/lib/util/numberHash.js +2 -2
- package/lib/util/parseJson.js +41 -0
- package/lib/util/processAsyncTree.js +8 -0
- package/lib/util/property.js +9 -2
- package/lib/util/publicPathPlaceholder.js +64 -0
- package/lib/util/registerExternalSerializer.js +24 -4
- package/lib/util/removeBOM.js +1 -0
- package/lib/util/runtime.js +32 -0
- package/lib/util/semver.js +15 -0
- package/lib/util/serialization.js +2 -0
- package/lib/util/smartGrouping.js +8 -0
- package/lib/util/source.js +23 -0
- package/lib/util/topologicalSort.js +69 -0
- package/lib/validateSchema.js +1 -0
- package/lib/wasm/EnableWasmLoadingPlugin.js +15 -1
- package/lib/wasm-async/AsyncWasmCompileRuntimeModule.js +25 -18
- package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +34 -22
- package/lib/wasm-async/AsyncWasmModule.js +77 -0
- package/lib/wasm-async/AsyncWebAssemblyGenerator.js +6 -0
- package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +6 -1
- package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +22 -126
- package/lib/wasm-async/AsyncWebAssemblyParser.js +3 -2
- package/lib/wasm-async/UniversalCompileAsyncWasmPlugin.js +13 -2
- package/lib/wasm-sync/SyncWasmModule.js +39 -0
- package/lib/wasm-sync/UnsupportedWebAssemblyFeatureError.js +7 -3
- package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +86 -19
- package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +4 -3
- package/lib/wasm-sync/WebAssemblyGenerator.js +27 -1
- package/lib/wasm-sync/WebAssemblyInInitialChunkError.js +9 -3
- package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +4 -0
- package/lib/wasm-sync/WebAssemblyModulesPlugin.js +20 -1
- package/lib/wasm-sync/WebAssemblyParser.js +9 -3
- package/lib/wasm-sync/WebAssemblyUtils.js +2 -0
- package/lib/web/FetchCompileAsyncWasmPlugin.js +29 -1
- package/lib/web/FetchCompileWasmPlugin.js +27 -1
- package/lib/web/JsonpChunkLoadingPlugin.js +11 -1
- package/lib/web/JsonpChunkLoadingRuntimeModule.js +58 -64
- package/lib/web/JsonpTemplatePlugin.js +2 -1
- package/lib/webpack.js +78 -1
- package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +10 -1
- package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +15 -10
- package/lib/webworker/WebWorkerTemplatePlugin.js +1 -1
- package/module.d.ts +21 -0
- package/package.json +79 -77
- package/schemas/WebpackOptions.check.js +1 -1
- package/schemas/WebpackOptions.json +1173 -80
- package/schemas/plugins/{DllPlugin.check.d.ts → HtmlGeneratorOptions.check.d.ts} +1 -1
- package/schemas/plugins/HtmlGeneratorOptions.check.js +6 -0
- package/schemas/plugins/HtmlGeneratorOptions.json +3 -0
- package/schemas/plugins/{DllReferencePlugin.check.d.ts → HtmlParserOptions.check.d.ts} +1 -1
- package/schemas/plugins/HtmlParserOptions.check.js +6 -0
- package/schemas/plugins/HtmlParserOptions.json +3 -0
- package/schemas/plugins/ProgressPlugin.check.js +1 -1
- package/schemas/plugins/ProgressPlugin.json +38 -0
- package/schemas/plugins/container/ContainerReferencePlugin.check.js +1 -1
- package/schemas/plugins/container/ContainerReferencePlugin.json +2 -0
- package/schemas/plugins/container/ExternalsType.check.js +1 -1
- package/schemas/plugins/container/ModuleFederationPlugin.check.js +1 -1
- package/schemas/plugins/container/ModuleFederationPlugin.json +2 -0
- package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.d.ts +7 -0
- package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.js +6 -0
- package/schemas/plugins/css/CssAutoOrModuleParserOptions.json +3 -0
- package/schemas/plugins/css/CssModuleParserOptions.check.js +1 -1
- package/schemas/plugins/css/CssParserOptions.check.js +1 -1
- package/schemas/plugins/dll/DllPlugin.check.d.ts +7 -0
- package/schemas/plugins/dll/DllReferencePlugin.check.d.ts +7 -0
- package/types.d.ts +11053 -3019
- package/lib/CaseSensitiveModulesWarning.js +0 -72
- package/lib/GraphHelpers.js +0 -46
- package/lib/ModuleParseError.js +0 -125
- package/lib/NoModeWarning.js +0 -23
- package/lib/css/CssMergeStyleSheetsRuntimeModule.js +0 -56
- package/lib/css/walkCssTokens.js +0 -1843
- package/lib/util/AppendOnlyStackedSet.js +0 -78
- /package/schemas/plugins/{DllPlugin.check.js → dll/DllPlugin.check.js} +0 -0
- /package/schemas/plugins/{DllPlugin.json → dll/DllPlugin.json} +0 -0
- /package/schemas/plugins/{DllReferencePlugin.check.js → dll/DllReferencePlugin.check.js} +0 -0
- /package/schemas/plugins/{DllReferencePlugin.json → dll/DllReferencePlugin.json} +0 -0
|
@@ -5,15 +5,16 @@
|
|
|
5
5
|
|
|
6
6
|
"use strict";
|
|
7
7
|
|
|
8
|
-
const CommentCompilationWarning = require("../CommentCompilationWarning");
|
|
9
8
|
const RuntimeGlobals = require("../RuntimeGlobals");
|
|
10
|
-
const
|
|
9
|
+
const CommentCompilationWarning = require("../errors/CommentCompilationWarning");
|
|
10
|
+
const UnsupportedFeatureWarning = require("../errors/UnsupportedFeatureWarning");
|
|
11
11
|
const {
|
|
12
12
|
evaluateToIdentifier,
|
|
13
13
|
evaluateToString,
|
|
14
14
|
expressionIsUnsupported,
|
|
15
15
|
toConstantDependency
|
|
16
16
|
} = require("../javascript/JavascriptParserHelpers");
|
|
17
|
+
const memoize = require("../util/memoize");
|
|
17
18
|
const traverseDestructuringAssignmentProperties = require("../util/traverseDestructuringAssignmentProperties");
|
|
18
19
|
const CommonJsFullRequireDependency = require("./CommonJsFullRequireDependency");
|
|
19
20
|
const CommonJsRequireContextDependency = require("./CommonJsRequireContextDependency");
|
|
@@ -42,14 +43,31 @@ const RequireResolveHeaderDependency = require("./RequireResolveHeaderDependency
|
|
|
42
43
|
/** @typedef {import("./LocalModule")} LocalModule */
|
|
43
44
|
|
|
44
45
|
/**
|
|
46
|
+
* Defines the common js import settings type used by this module.
|
|
45
47
|
* @typedef {object} CommonJsImportSettings
|
|
46
48
|
* @property {string=} name
|
|
47
49
|
* @property {string} context
|
|
48
50
|
*/
|
|
49
51
|
|
|
52
|
+
/**
|
|
53
|
+
* Per-`const NAME = require(LITERAL)` binding state used to forward
|
|
54
|
+
* member-access references on `NAME` to the `CommonJsRequireDependency`
|
|
55
|
+
* created for the `require()` call.
|
|
56
|
+
* @typedef {object} RequireBindingData
|
|
57
|
+
* @property {RawReferencedExports | null} referencedExports mutable list, pushed to as `NAME.x.y` accesses are walked; null means the whole namespace is used. Separate from `dep` so a deferred require (walked after accesses on `NAME`) still collects them; becomes the dep's shared list on creation.
|
|
58
|
+
* @property {InstanceType<typeof import("./CommonJsRequireDependency")> | null} dep dependency for the `require()` call, null until the `require()` is walked; kept so a later whole-namespace use can null its list directly
|
|
59
|
+
*/
|
|
60
|
+
|
|
61
|
+
const getHarmonyImportGuard = memoize(() => require("./HarmonyImportGuard"));
|
|
62
|
+
|
|
63
|
+
const REQUIRE_BINDING_TAG = Symbol(
|
|
64
|
+
"CommonJsImportsParserPlugin require binding"
|
|
65
|
+
);
|
|
66
|
+
|
|
50
67
|
const PLUGIN_NAME = "CommonJsImportsParserPlugin";
|
|
51
68
|
|
|
52
69
|
/**
|
|
70
|
+
* Checks whether this object is require call expression.
|
|
53
71
|
* @param {Expression} expression expression
|
|
54
72
|
* @returns {boolean} true, when expression is `require(...)` or `module.require(...)`
|
|
55
73
|
*/
|
|
@@ -73,6 +91,7 @@ const isRequireCallExpression = (expression) => {
|
|
|
73
91
|
};
|
|
74
92
|
|
|
75
93
|
/**
|
|
94
|
+
* Gets require referenced exports from destructuring.
|
|
76
95
|
* @param {JavascriptParser} parser parser
|
|
77
96
|
* @param {CallExpression | NewExpression} expr expression
|
|
78
97
|
* @returns {RawReferencedExports | null} referenced exports from destructuring
|
|
@@ -92,6 +111,7 @@ const getRequireReferencedExportsFromDestructuring = (parser, expr) => {
|
|
|
92
111
|
};
|
|
93
112
|
|
|
94
113
|
/**
|
|
114
|
+
* Creates a require cache dependency.
|
|
95
115
|
* @param {JavascriptParser} parser parser
|
|
96
116
|
* @returns {(expr: Expression) => boolean} handler
|
|
97
117
|
*/
|
|
@@ -103,6 +123,7 @@ const createRequireCacheDependency = (parser) =>
|
|
|
103
123
|
]);
|
|
104
124
|
|
|
105
125
|
/**
|
|
126
|
+
* Creates a require as expression handler.
|
|
106
127
|
* @param {JavascriptParser} parser parser
|
|
107
128
|
* @param {JavascriptParserOptions} options options
|
|
108
129
|
* @param {() => undefined | string} getContext context accessor
|
|
@@ -125,43 +146,63 @@ const createRequireAsExpressionHandler =
|
|
|
125
146
|
dep.critical =
|
|
126
147
|
options.unknownContextCritical &&
|
|
127
148
|
"require function is used in a way in which dependencies cannot be statically extracted";
|
|
128
|
-
dep.loc =
|
|
149
|
+
dep.loc = parser.getLocation(expr);
|
|
129
150
|
dep.optional = Boolean(parser.scope.inTry);
|
|
130
151
|
parser.state.current.addDependency(dep);
|
|
131
152
|
return true;
|
|
132
153
|
};
|
|
133
154
|
|
|
134
155
|
/**
|
|
156
|
+
* Creates a require call handler.
|
|
135
157
|
* @param {JavascriptParser} parser parser
|
|
136
158
|
* @param {JavascriptParserOptions} options options
|
|
137
159
|
* @param {() => undefined | string} getContext context accessor
|
|
160
|
+
* @param {WeakMap<CallExpression, RequireBindingData>=} requireBindingData per-parser `const NAME = require(LITERAL)` binding state; only the free-`require` plugin populates it
|
|
138
161
|
* @returns {(callNew: boolean) => (expr: CallExpression | NewExpression) => (boolean | void)} handler factory
|
|
139
162
|
*/
|
|
140
|
-
const createRequireCallHandler = (
|
|
163
|
+
const createRequireCallHandler = (
|
|
164
|
+
parser,
|
|
165
|
+
options,
|
|
166
|
+
getContext,
|
|
167
|
+
requireBindingData
|
|
168
|
+
) => {
|
|
141
169
|
/**
|
|
170
|
+
* Process require item.
|
|
142
171
|
* @param {CallExpression | NewExpression} expr expression
|
|
143
172
|
* @param {BasicEvaluatedExpression} param param
|
|
144
173
|
* @returns {boolean | void} true when handled
|
|
145
174
|
*/
|
|
146
175
|
const processRequireItem = (expr, param) => {
|
|
147
176
|
if (param.isString()) {
|
|
148
|
-
|
|
177
|
+
let referencedExports = getRequireReferencedExportsFromDestructuring(
|
|
149
178
|
parser,
|
|
150
179
|
expr
|
|
151
180
|
);
|
|
181
|
+
const binding =
|
|
182
|
+
requireBindingData &&
|
|
183
|
+
requireBindingData.get(/** @type {CallExpression} */ (expr));
|
|
184
|
+
if (binding && !referencedExports) {
|
|
185
|
+
// `const NAME = require(LITERAL)` — let later member-access walks
|
|
186
|
+
// on `NAME` populate the dependency's referenced exports.
|
|
187
|
+
referencedExports = binding.referencedExports;
|
|
188
|
+
}
|
|
152
189
|
const dep = new CommonJsRequireDependency(
|
|
153
190
|
/** @type {string} */ (param.string),
|
|
154
191
|
/** @type {Range} */ (param.range),
|
|
155
192
|
getContext(),
|
|
156
|
-
referencedExports
|
|
193
|
+
referencedExports,
|
|
194
|
+
/** @type {Range} */ (expr.range)
|
|
157
195
|
);
|
|
158
|
-
dep
|
|
196
|
+
if (binding) binding.dep = dep;
|
|
197
|
+
dep.loc = parser.getLocation(expr);
|
|
159
198
|
dep.optional = Boolean(parser.scope.inTry);
|
|
160
199
|
parser.state.current.addDependency(dep);
|
|
200
|
+
getHarmonyImportGuard().attachDependencyGuards(parser, dep);
|
|
161
201
|
return true;
|
|
162
202
|
}
|
|
163
203
|
};
|
|
164
204
|
/**
|
|
205
|
+
* Process require context.
|
|
165
206
|
* @param {CallExpression | NewExpression} expr expression
|
|
166
207
|
* @param {BasicEvaluatedExpression} param param
|
|
167
208
|
* @returns {boolean | void} true when handled
|
|
@@ -186,7 +227,7 @@ const createRequireCallHandler = (parser, options, getContext) => {
|
|
|
186
227
|
getContext()
|
|
187
228
|
);
|
|
188
229
|
if (!dep) return;
|
|
189
|
-
dep.loc =
|
|
230
|
+
dep.loc = parser.getLocation(expr);
|
|
190
231
|
dep.optional = Boolean(parser.scope.inTry);
|
|
191
232
|
parser.state.current.addDependency(dep);
|
|
192
233
|
return true;
|
|
@@ -203,7 +244,7 @@ const createRequireCallHandler = (parser, options, getContext) => {
|
|
|
203
244
|
parser.state.module.addWarning(
|
|
204
245
|
new CommentCompilationWarning(
|
|
205
246
|
`Compilation error while processing magic comment(-s): /*${comment.value}*/: ${e.message}`,
|
|
206
|
-
|
|
247
|
+
parser.getLocation(comment)
|
|
207
248
|
)
|
|
208
249
|
);
|
|
209
250
|
}
|
|
@@ -213,7 +254,7 @@ const createRequireCallHandler = (parser, options, getContext) => {
|
|
|
213
254
|
parser.state.module.addWarning(
|
|
214
255
|
new UnsupportedFeatureWarning(
|
|
215
256
|
`\`webpackIgnore\` expected a boolean, but received: ${requireOptions.webpackIgnore}.`,
|
|
216
|
-
|
|
257
|
+
parser.getLocation(expr)
|
|
217
258
|
)
|
|
218
259
|
);
|
|
219
260
|
} else if (requireOptions.webpackIgnore) {
|
|
@@ -241,7 +282,7 @@ const createRequireCallHandler = (parser, options, getContext) => {
|
|
|
241
282
|
const dep = new RequireHeaderDependency(
|
|
242
283
|
/** @type {Range} */ (expr.callee.range)
|
|
243
284
|
);
|
|
244
|
-
dep.loc =
|
|
285
|
+
dep.loc = parser.getLocation(expr);
|
|
245
286
|
parser.state.module.addPresentationalDependency(dep);
|
|
246
287
|
return true;
|
|
247
288
|
}
|
|
@@ -259,7 +300,7 @@ const createRequireCallHandler = (parser, options, getContext) => {
|
|
|
259
300
|
/** @type {Range} */ (expr.range),
|
|
260
301
|
callNew
|
|
261
302
|
);
|
|
262
|
-
dep.loc =
|
|
303
|
+
dep.loc = parser.getLocation(expr);
|
|
263
304
|
parser.state.module.addPresentationalDependency(dep);
|
|
264
305
|
} else {
|
|
265
306
|
const result = processRequireItem(expr, param);
|
|
@@ -269,7 +310,7 @@ const createRequireCallHandler = (parser, options, getContext) => {
|
|
|
269
310
|
const dep = new RequireHeaderDependency(
|
|
270
311
|
/** @type {Range} */ (expr.callee.range)
|
|
271
312
|
);
|
|
272
|
-
dep.loc =
|
|
313
|
+
dep.loc = parser.getLocation(expr);
|
|
273
314
|
parser.state.module.addPresentationalDependency(dep);
|
|
274
315
|
}
|
|
275
316
|
}
|
|
@@ -278,6 +319,7 @@ const createRequireCallHandler = (parser, options, getContext) => {
|
|
|
278
319
|
};
|
|
279
320
|
|
|
280
321
|
/**
|
|
322
|
+
* Creates a process resolve handler.
|
|
281
323
|
* @param {JavascriptParser} parser parser
|
|
282
324
|
* @param {JavascriptParserOptions} options options
|
|
283
325
|
* @param {() => undefined | string} getContext context accessor
|
|
@@ -285,6 +327,7 @@ const createRequireCallHandler = (parser, options, getContext) => {
|
|
|
285
327
|
*/
|
|
286
328
|
const createProcessResolveHandler = (parser, options, getContext) => {
|
|
287
329
|
/**
|
|
330
|
+
* Process resolve item.
|
|
288
331
|
* @param {CallExpression} expr call expression
|
|
289
332
|
* @param {BasicEvaluatedExpression} param param
|
|
290
333
|
* @param {boolean} weak weak
|
|
@@ -297,7 +340,7 @@ const createProcessResolveHandler = (parser, options, getContext) => {
|
|
|
297
340
|
/** @type {Range} */ (param.range),
|
|
298
341
|
getContext()
|
|
299
342
|
);
|
|
300
|
-
dep.loc =
|
|
343
|
+
dep.loc = parser.getLocation(expr);
|
|
301
344
|
dep.optional = Boolean(parser.scope.inTry);
|
|
302
345
|
dep.weak = weak;
|
|
303
346
|
parser.state.current.addDependency(dep);
|
|
@@ -305,6 +348,7 @@ const createProcessResolveHandler = (parser, options, getContext) => {
|
|
|
305
348
|
}
|
|
306
349
|
};
|
|
307
350
|
/**
|
|
351
|
+
* Process resolve context.
|
|
308
352
|
* @param {CallExpression} expr call expression
|
|
309
353
|
* @param {BasicEvaluatedExpression} param param
|
|
310
354
|
* @param {boolean} weak weak
|
|
@@ -325,7 +369,7 @@ const createProcessResolveHandler = (parser, options, getContext) => {
|
|
|
325
369
|
getContext()
|
|
326
370
|
);
|
|
327
371
|
if (!dep) return;
|
|
328
|
-
dep.loc =
|
|
372
|
+
dep.loc = parser.getLocation(expr);
|
|
329
373
|
dep.optional = Boolean(parser.scope.inTry);
|
|
330
374
|
parser.state.current.addDependency(dep);
|
|
331
375
|
return true;
|
|
@@ -342,7 +386,7 @@ const createProcessResolveHandler = (parser, options, getContext) => {
|
|
|
342
386
|
parser.state.module.addWarning(
|
|
343
387
|
new CommentCompilationWarning(
|
|
344
388
|
`Compilation error while processing magic comment(-s): /*${comment.value}*/: ${e.message}`,
|
|
345
|
-
|
|
389
|
+
parser.getLocation(comment)
|
|
346
390
|
)
|
|
347
391
|
);
|
|
348
392
|
}
|
|
@@ -352,7 +396,7 @@ const createProcessResolveHandler = (parser, options, getContext) => {
|
|
|
352
396
|
parser.state.module.addWarning(
|
|
353
397
|
new UnsupportedFeatureWarning(
|
|
354
398
|
`\`webpackIgnore\` expected a boolean, but received: ${requireOptions.webpackIgnore}.`,
|
|
355
|
-
|
|
399
|
+
parser.getLocation(expr)
|
|
356
400
|
)
|
|
357
401
|
);
|
|
358
402
|
} else if (requireOptions.webpackIgnore) {
|
|
@@ -376,7 +420,7 @@ const createProcessResolveHandler = (parser, options, getContext) => {
|
|
|
376
420
|
const dep = new RequireResolveHeaderDependency(
|
|
377
421
|
/** @type {Range} */ (expr.callee.range)
|
|
378
422
|
);
|
|
379
|
-
dep.loc =
|
|
423
|
+
dep.loc = parser.getLocation(expr);
|
|
380
424
|
parser.state.module.addPresentationalDependency(dep);
|
|
381
425
|
return true;
|
|
382
426
|
}
|
|
@@ -387,7 +431,7 @@ const createProcessResolveHandler = (parser, options, getContext) => {
|
|
|
387
431
|
const dep = new RequireResolveHeaderDependency(
|
|
388
432
|
/** @type {Range} */ (expr.callee.range)
|
|
389
433
|
);
|
|
390
|
-
dep.loc =
|
|
434
|
+
dep.loc = parser.getLocation(expr);
|
|
391
435
|
parser.state.module.addPresentationalDependency(dep);
|
|
392
436
|
return true;
|
|
393
437
|
};
|
|
@@ -395,13 +439,16 @@ const createProcessResolveHandler = (parser, options, getContext) => {
|
|
|
395
439
|
|
|
396
440
|
class CommonJsImportsParserPlugin {
|
|
397
441
|
/**
|
|
442
|
+
* Creates an instance of CommonJsImportsParserPlugin.
|
|
398
443
|
* @param {JavascriptParserOptions} options parser options
|
|
399
444
|
*/
|
|
400
445
|
constructor(options) {
|
|
446
|
+
/** @type {JavascriptParserOptions} */
|
|
401
447
|
this.options = options;
|
|
402
448
|
}
|
|
403
449
|
|
|
404
450
|
/**
|
|
451
|
+
* Applies the plugin by registering its hooks on the compiler.
|
|
405
452
|
* @param {JavascriptParser} parser the parser
|
|
406
453
|
* @returns {void}
|
|
407
454
|
*/
|
|
@@ -425,6 +472,7 @@ class CommonJsImportsParserPlugin {
|
|
|
425
472
|
|
|
426
473
|
// #region metadata
|
|
427
474
|
/**
|
|
475
|
+
* Tap require expression.
|
|
428
476
|
* @param {string} expression expression
|
|
429
477
|
* @param {() => Members} getMembers get members
|
|
430
478
|
*/
|
|
@@ -454,7 +502,7 @@ class CommonJsImportsParserPlugin {
|
|
|
454
502
|
parser.hooks.assign.for("require").tap(PLUGIN_NAME, (expr) => {
|
|
455
503
|
// to not leak to global "require", we need to define a local require here.
|
|
456
504
|
const dep = new ConstDependency("var require;", 0);
|
|
457
|
-
dep.loc =
|
|
505
|
+
dep.loc = parser.getLocation(expr);
|
|
458
506
|
parser.state.module.addPresentationalDependency(dep);
|
|
459
507
|
return true;
|
|
460
508
|
});
|
|
@@ -491,6 +539,7 @@ class CommonJsImportsParserPlugin {
|
|
|
491
539
|
|
|
492
540
|
// #region Renaming
|
|
493
541
|
/**
|
|
542
|
+
* Returns true when set undefined.
|
|
494
543
|
* @param {Expression} expr expression
|
|
495
544
|
* @returns {boolean} true when set undefined
|
|
496
545
|
*/
|
|
@@ -500,7 +549,7 @@ class CommonJsImportsParserPlugin {
|
|
|
500
549
|
"undefined",
|
|
501
550
|
/** @type {Range} */ (expr.range)
|
|
502
551
|
);
|
|
503
|
-
dep.loc =
|
|
552
|
+
dep.loc = parser.getLocation(expr);
|
|
504
553
|
parser.state.module.addPresentationalDependency(dep);
|
|
505
554
|
return false;
|
|
506
555
|
};
|
|
@@ -516,6 +565,7 @@ class CommonJsImportsParserPlugin {
|
|
|
516
565
|
|
|
517
566
|
// #region Require as expression
|
|
518
567
|
/**
|
|
568
|
+
* Require as expression handler.
|
|
519
569
|
* @param {Expression} expr expression
|
|
520
570
|
* @returns {boolean} true when handled
|
|
521
571
|
*/
|
|
@@ -531,13 +581,17 @@ class CommonJsImportsParserPlugin {
|
|
|
531
581
|
|
|
532
582
|
// #region Require
|
|
533
583
|
/**
|
|
584
|
+
* Creates a require handler.
|
|
534
585
|
* @param {boolean} callNew true, when require is called with new
|
|
535
586
|
* @returns {(expr: CallExpression | NewExpression) => (boolean | void)} handler
|
|
536
587
|
*/
|
|
588
|
+
/** @type {WeakMap<CallExpression, RequireBindingData>} */
|
|
589
|
+
const requireBindingData = new WeakMap();
|
|
537
590
|
const createRequireHandler = createRequireCallHandler(
|
|
538
591
|
parser,
|
|
539
592
|
options,
|
|
540
|
-
getContext
|
|
593
|
+
getContext,
|
|
594
|
+
requireBindingData
|
|
541
595
|
);
|
|
542
596
|
parser.hooks.call
|
|
543
597
|
.for("require")
|
|
@@ -555,6 +609,7 @@ class CommonJsImportsParserPlugin {
|
|
|
555
609
|
|
|
556
610
|
// #region Require with property access
|
|
557
611
|
/**
|
|
612
|
+
* Returns true when handled.
|
|
558
613
|
* @param {Expression} expr expression
|
|
559
614
|
* @param {CalleeMembers} calleeMembers callee members
|
|
560
615
|
* @param {CallExpression} callExpr call expression
|
|
@@ -585,12 +640,14 @@ class CommonJsImportsParserPlugin {
|
|
|
585
640
|
/** @type {Range} */ (expr.range)[0]
|
|
586
641
|
);
|
|
587
642
|
dep.optional = Boolean(parser.scope.inTry);
|
|
588
|
-
dep.loc =
|
|
643
|
+
dep.loc = parser.getLocation(expr);
|
|
589
644
|
parser.state.current.addDependency(dep);
|
|
645
|
+
getHarmonyImportGuard().attachDependencyGuards(parser, dep);
|
|
590
646
|
return true;
|
|
591
647
|
}
|
|
592
648
|
};
|
|
593
649
|
/**
|
|
650
|
+
* Call chain handler.
|
|
594
651
|
* @param {CallExpression} expr expression
|
|
595
652
|
* @param {CalleeMembers} calleeMembers callee members
|
|
596
653
|
* @param {CallExpression} callExpr call expression
|
|
@@ -622,8 +679,9 @@ class CommonJsImportsParserPlugin {
|
|
|
622
679
|
/** @type {Range} */ (expr.range)[0]
|
|
623
680
|
);
|
|
624
681
|
dep.optional = Boolean(parser.scope.inTry);
|
|
625
|
-
dep.loc =
|
|
682
|
+
dep.loc = parser.getLocation(expr.callee);
|
|
626
683
|
parser.state.current.addDependency(dep);
|
|
684
|
+
getHarmonyImportGuard().attachDependencyGuards(parser, dep);
|
|
627
685
|
parser.walkExpressions(expr.arguments);
|
|
628
686
|
return true;
|
|
629
687
|
}
|
|
@@ -642,8 +700,115 @@ class CommonJsImportsParserPlugin {
|
|
|
642
700
|
.tap(PLUGIN_NAME, callChainHandler);
|
|
643
701
|
// #endregion
|
|
644
702
|
|
|
703
|
+
// #region Require bound to a const variable
|
|
704
|
+
// Track `const NAME = require(LITERAL)` so that static member accesses on
|
|
705
|
+
// `NAME` (e.g. `NAME.foo`, `NAME.foo()`) are forwarded to the same
|
|
706
|
+
// `CommonJsRequireDependency` as referenced exports — enabling tree
|
|
707
|
+
// shaking of CommonJS modules that are imported into a named binding
|
|
708
|
+
// rather than destructured.
|
|
709
|
+
parser.hooks.preDeclarator.tap(PLUGIN_NAME, (declarator, statement) => {
|
|
710
|
+
if (statement.kind !== "const") return;
|
|
711
|
+
if (declarator.id.type !== "Identifier") return;
|
|
712
|
+
if (!declarator.init || declarator.init.type !== "CallExpression") {
|
|
713
|
+
return;
|
|
714
|
+
}
|
|
715
|
+
const init = declarator.init;
|
|
716
|
+
if (
|
|
717
|
+
init.callee.type !== "Identifier" ||
|
|
718
|
+
init.callee.name !== "require" ||
|
|
719
|
+
init.arguments.length !== 1
|
|
720
|
+
) {
|
|
721
|
+
return;
|
|
722
|
+
}
|
|
723
|
+
const arg = init.arguments[0];
|
|
724
|
+
if (arg.type !== "Literal" || typeof arg.value !== "string") return;
|
|
725
|
+
// Only attach binding state when `require` resolves to the free
|
|
726
|
+
// `require` (i.e. it isn't shadowed in the current scope).
|
|
727
|
+
const requireInfo = parser.getFreeInfoFromVariable("require");
|
|
728
|
+
if (!requireInfo || requireInfo.name !== "require") return;
|
|
729
|
+
/** @type {RequireBindingData} */
|
|
730
|
+
const binding = {
|
|
731
|
+
referencedExports: [],
|
|
732
|
+
dep: null
|
|
733
|
+
};
|
|
734
|
+
requireBindingData.set(init, binding);
|
|
735
|
+
parser.tagVariable(declarator.id.name, REQUIRE_BINDING_TAG, binding);
|
|
736
|
+
return true;
|
|
737
|
+
});
|
|
738
|
+
|
|
739
|
+
parser.hooks.expression.for(REQUIRE_BINDING_TAG).tap(PLUGIN_NAME, () => {
|
|
740
|
+
const binding =
|
|
741
|
+
/** @type {RequireBindingData} */
|
|
742
|
+
(parser.currentTagData);
|
|
743
|
+
if (binding) {
|
|
744
|
+
// `NAME` is read as a value (not as the object of a static member
|
|
745
|
+
// chain), so we have to assume the whole exports object is used.
|
|
746
|
+
binding.referencedExports = null;
|
|
747
|
+
if (binding.dep) {
|
|
748
|
+
binding.dep.referencedExports = null;
|
|
749
|
+
}
|
|
750
|
+
}
|
|
751
|
+
return true;
|
|
752
|
+
});
|
|
753
|
+
|
|
754
|
+
parser.hooks.expressionMemberChain
|
|
755
|
+
.for(REQUIRE_BINDING_TAG)
|
|
756
|
+
.tap(PLUGIN_NAME, (_expr, members) => {
|
|
757
|
+
const binding =
|
|
758
|
+
/** @type {RequireBindingData} */
|
|
759
|
+
(parser.currentTagData);
|
|
760
|
+
if (binding && binding.referencedExports) {
|
|
761
|
+
binding.referencedExports.push(members);
|
|
762
|
+
}
|
|
763
|
+
// Returning truthy suppresses the parser's fallback chain (which
|
|
764
|
+
// would otherwise walk `NAME` as a bare expression and trigger our
|
|
765
|
+
// `expression` hook above, marking the whole namespace as used).
|
|
766
|
+
return true;
|
|
767
|
+
});
|
|
768
|
+
|
|
769
|
+
parser.hooks.callMemberChain
|
|
770
|
+
.for(REQUIRE_BINDING_TAG)
|
|
771
|
+
.tap(PLUGIN_NAME, (expr, members) => {
|
|
772
|
+
const binding =
|
|
773
|
+
/** @type {RequireBindingData} */
|
|
774
|
+
(parser.currentTagData);
|
|
775
|
+
if (binding && binding.referencedExports) {
|
|
776
|
+
if (members.length === 0) {
|
|
777
|
+
// `NAME(...)` — calling the require result directly; the
|
|
778
|
+
// whole exports object is observable.
|
|
779
|
+
binding.referencedExports = null;
|
|
780
|
+
if (binding.dep) {
|
|
781
|
+
binding.dep.referencedExports = null;
|
|
782
|
+
}
|
|
783
|
+
} else {
|
|
784
|
+
binding.referencedExports.push(members);
|
|
785
|
+
}
|
|
786
|
+
}
|
|
787
|
+
if (expr.arguments) parser.walkExpressions(expr.arguments);
|
|
788
|
+
return true;
|
|
789
|
+
});
|
|
790
|
+
|
|
791
|
+
// Re-exporting the binding lets the require result escape, so the whole
|
|
792
|
+
// exports object is observable. Stage -10 runs before the harmony bail tap.
|
|
793
|
+
parser.hooks.exportSpecifier.tap(
|
|
794
|
+
{ name: PLUGIN_NAME, stage: -10 },
|
|
795
|
+
(_statement, id) => {
|
|
796
|
+
const binding =
|
|
797
|
+
/** @type {RequireBindingData | undefined} */
|
|
798
|
+
(parser.getTagData(id, REQUIRE_BINDING_TAG));
|
|
799
|
+
if (binding) {
|
|
800
|
+
binding.referencedExports = null;
|
|
801
|
+
if (binding.dep) {
|
|
802
|
+
binding.dep.referencedExports = null;
|
|
803
|
+
}
|
|
804
|
+
}
|
|
805
|
+
}
|
|
806
|
+
);
|
|
807
|
+
// #endregion
|
|
808
|
+
|
|
645
809
|
// #region Require.resolve
|
|
646
810
|
/**
|
|
811
|
+
* Processes the provided expr.
|
|
647
812
|
* @param {CallExpression} expr call expression
|
|
648
813
|
* @param {boolean} weak weak
|
|
649
814
|
* @returns {boolean | void} true when handled
|
|
@@ -44,7 +44,7 @@ const PLUGIN_NAME = "CommonJsPlugin";
|
|
|
44
44
|
|
|
45
45
|
class CommonJsPlugin {
|
|
46
46
|
/**
|
|
47
|
-
*
|
|
47
|
+
* Applies the plugin by registering its hooks on the compiler.
|
|
48
48
|
* @param {Compiler} compiler the compiler instance
|
|
49
49
|
* @returns {void}
|
|
50
50
|
*/
|
|
@@ -174,6 +174,7 @@ class CommonJsPlugin {
|
|
|
174
174
|
});
|
|
175
175
|
|
|
176
176
|
/**
|
|
177
|
+
* Handles the hook callback for this code path.
|
|
177
178
|
* @param {Parser} parser parser parser
|
|
178
179
|
* @param {JavascriptParserOptions} parserOptions parserOptions
|
|
179
180
|
* @returns {void}
|
|
@@ -219,7 +220,7 @@ class CommonJsPlugin {
|
|
|
219
220
|
const dep = new RuntimeRequirementsDependency([
|
|
220
221
|
RuntimeGlobals.moduleLoaded
|
|
221
222
|
]);
|
|
222
|
-
dep.loc =
|
|
223
|
+
dep.loc = parser.getLocation(expr);
|
|
223
224
|
parser.state.module.addPresentationalDependency(dep);
|
|
224
225
|
return true;
|
|
225
226
|
});
|
|
@@ -233,7 +234,7 @@ class CommonJsPlugin {
|
|
|
233
234
|
const dep = new RuntimeRequirementsDependency([
|
|
234
235
|
RuntimeGlobals.moduleId
|
|
235
236
|
]);
|
|
236
|
-
dep.loc =
|
|
237
|
+
dep.loc = parser.getLocation(expr);
|
|
237
238
|
parser.state.module.addPresentationalDependency(dep);
|
|
238
239
|
return true;
|
|
239
240
|
});
|
|
@@ -266,6 +267,7 @@ class HarmonyModuleDecoratorRuntimeModule extends RuntimeModule {
|
|
|
266
267
|
}
|
|
267
268
|
|
|
268
269
|
/**
|
|
270
|
+
* Generates runtime code for this runtime module.
|
|
269
271
|
* @returns {string | null} runtime code
|
|
270
272
|
*/
|
|
271
273
|
generate() {
|
|
@@ -279,7 +281,7 @@ class HarmonyModuleDecoratorRuntimeModule extends RuntimeModule {
|
|
|
279
281
|
"Object.defineProperty(module, 'exports', {",
|
|
280
282
|
Template.indent([
|
|
281
283
|
"enumerable: true,",
|
|
282
|
-
|
|
284
|
+
`${runtimeTemplate.method("set", "", [
|
|
283
285
|
"throw new Error('ES Modules may not assign module.exports or exports.*, Use ESM export syntax, instead: ' + module.id);"
|
|
284
286
|
])}`
|
|
285
287
|
]),
|
|
@@ -296,6 +298,7 @@ class NodeModuleDecoratorRuntimeModule extends RuntimeModule {
|
|
|
296
298
|
}
|
|
297
299
|
|
|
298
300
|
/**
|
|
301
|
+
* Generates runtime code for this runtime module.
|
|
299
302
|
* @returns {string | null} runtime code
|
|
300
303
|
*/
|
|
301
304
|
generate() {
|
|
@@ -11,8 +11,8 @@ const ContextDependency = require("./ContextDependency");
|
|
|
11
11
|
const ContextDependencyTemplateAsRequireCall = require("./ContextDependencyTemplateAsRequireCall");
|
|
12
12
|
|
|
13
13
|
/** @typedef {import("../javascript/JavascriptParser").Range} Range */
|
|
14
|
-
/** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
|
|
15
|
-
/** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
|
|
14
|
+
/** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext<[Range, Range | undefined, boolean | string | undefined]>} ObjectDeserializerContext */
|
|
15
|
+
/** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext<[Range, Range | undefined, boolean | string | undefined]>} ObjectSerializerContext */
|
|
16
16
|
/** @typedef {import("./ContextDependency").ContextDependencyOptions} ContextDependencyOptions */
|
|
17
17
|
/** @typedef {import("../Dependency").RawReferencedExports} RawReferencedExports */
|
|
18
18
|
/** @typedef {import("../Dependency").ReferencedExports} ReferencedExports */
|
|
@@ -21,6 +21,7 @@ const ContextDependencyTemplateAsRequireCall = require("./ContextDependencyTempl
|
|
|
21
21
|
|
|
22
22
|
class CommonJsRequireContextDependency extends ContextDependency {
|
|
23
23
|
/**
|
|
24
|
+
* Creates an instance of CommonJsRequireContextDependency.
|
|
24
25
|
* @param {ContextDependencyOptions} options options for the context module
|
|
25
26
|
* @param {Range} range location in source code
|
|
26
27
|
* @param {Range=} valueRange location of the require call
|
|
@@ -33,6 +34,7 @@ class CommonJsRequireContextDependency extends ContextDependency {
|
|
|
33
34
|
this.range = range;
|
|
34
35
|
this.valueRange = valueRange;
|
|
35
36
|
// inShorthand must be serialized by subclasses that use it
|
|
37
|
+
/** @type {string | boolean | undefined} */
|
|
36
38
|
this.inShorthand = inShorthand;
|
|
37
39
|
}
|
|
38
40
|
|
|
@@ -57,29 +59,27 @@ class CommonJsRequireContextDependency extends ContextDependency {
|
|
|
57
59
|
}
|
|
58
60
|
|
|
59
61
|
/**
|
|
62
|
+
* Serializes this instance into the provided serializer context.
|
|
60
63
|
* @param {ObjectSerializerContext} context context
|
|
61
64
|
*/
|
|
62
65
|
serialize(context) {
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
write(this.range);
|
|
66
|
-
write(this.valueRange);
|
|
67
|
-
write(this.inShorthand);
|
|
66
|
+
context.write(this.range).write(this.valueRange).write(this.inShorthand);
|
|
68
67
|
|
|
69
68
|
super.serialize(context);
|
|
70
69
|
}
|
|
71
70
|
|
|
72
71
|
/**
|
|
72
|
+
* Restores this instance from the provided deserializer context.
|
|
73
73
|
* @param {ObjectDeserializerContext} context context
|
|
74
74
|
*/
|
|
75
75
|
deserialize(context) {
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
this.
|
|
79
|
-
|
|
80
|
-
this.inShorthand = read();
|
|
76
|
+
this.range = context.read();
|
|
77
|
+
const c1 = context.rest;
|
|
78
|
+
this.valueRange = c1.read();
|
|
79
|
+
const c2 = c1.rest;
|
|
80
|
+
this.inShorthand = c2.read();
|
|
81
81
|
|
|
82
|
-
super.deserialize(
|
|
82
|
+
super.deserialize(c2.rest);
|
|
83
83
|
}
|
|
84
84
|
}
|
|
85
85
|
|