webpack 5.59.0 → 5.94.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 +48 -38
- package/bin/webpack.js +34 -10
- package/hot/dev-server.js +19 -5
- package/hot/lazy-compilation-node.js +13 -1
- package/hot/lazy-compilation-web.js +9 -0
- package/hot/log-apply-result.js +5 -0
- package/hot/log.js +23 -4
- package/hot/only-dev-server.js +3 -2
- package/hot/poll.js +5 -2
- package/hot/signal.js +6 -2
- package/lib/APIPlugin.js +226 -122
- package/lib/AbstractMethodError.js +10 -5
- package/lib/AsyncDependenciesBlock.js +13 -5
- package/lib/AutomaticPrefetchPlugin.js +2 -1
- package/lib/BannerPlugin.js +33 -12
- package/lib/Cache.js +16 -12
- package/lib/CacheFacade.js +13 -16
- package/lib/CaseSensitiveModulesWarning.js +8 -8
- package/lib/Chunk.js +60 -33
- package/lib/ChunkGraph.js +207 -72
- package/lib/ChunkGroup.js +40 -20
- package/lib/ChunkTemplate.js +43 -0
- package/lib/CleanPlugin.js +117 -32
- package/lib/CodeGenerationResults.js +8 -7
- package/lib/CommentCompilationWarning.js +0 -1
- package/lib/CompatibilityPlugin.js +85 -46
- package/lib/Compilation.js +712 -392
- package/lib/Compiler.js +393 -172
- package/lib/ConcatenationScope.js +10 -13
- package/lib/ConditionalInitFragment.js +22 -14
- package/lib/ConstPlugin.js +104 -64
- package/lib/ContextExclusionPlugin.js +3 -3
- package/lib/ContextModule.js +283 -108
- package/lib/ContextModuleFactory.js +151 -63
- package/lib/ContextReplacementPlugin.js +25 -10
- package/lib/CssModule.js +166 -0
- package/lib/DefinePlugin.js +254 -148
- package/lib/DelegatedModule.js +29 -6
- package/lib/DelegatedModuleFactoryPlugin.js +42 -22
- package/lib/DelegatedPlugin.js +4 -0
- package/lib/DependenciesBlock.js +17 -2
- package/lib/Dependency.js +58 -29
- package/lib/DependencyTemplate.js +24 -3
- package/lib/DependencyTemplates.js +2 -2
- package/lib/DllEntryPlugin.js +18 -1
- package/lib/DllModule.js +21 -4
- package/lib/DllModuleFactory.js +2 -1
- package/lib/DllPlugin.js +9 -7
- package/lib/DllReferencePlugin.js +50 -19
- package/lib/EntryOptionPlugin.js +6 -1
- package/lib/EntryPlugin.js +7 -4
- package/lib/Entrypoint.js +2 -2
- package/lib/EnvironmentNotSupportAsyncWarning.js +52 -0
- package/lib/EnvironmentPlugin.js +5 -2
- package/lib/ErrorHelpers.js +65 -26
- package/lib/EvalDevToolModulePlugin.js +37 -13
- package/lib/EvalSourceMapDevToolPlugin.js +50 -20
- package/lib/ExportsInfo.js +234 -133
- package/lib/ExportsInfoApiPlugin.js +31 -15
- package/lib/ExternalModule.js +391 -129
- package/lib/ExternalModuleFactoryPlugin.js +65 -17
- package/lib/FileSystemInfo.js +1038 -523
- package/lib/FlagAllModulesAsUsedPlugin.js +27 -27
- package/lib/FlagDependencyExportsPlugin.js +352 -349
- package/lib/FlagDependencyUsagePlugin.js +10 -10
- package/lib/FlagEntryExportAsUsedPlugin.js +26 -23
- package/lib/Generator.js +16 -8
- package/lib/GraphHelpers.js +3 -2
- package/lib/HookWebpackError.js +11 -13
- package/lib/HotModuleReplacementPlugin.js +221 -128
- package/lib/IgnoreErrorModuleFactory.js +4 -4
- package/lib/IgnorePlugin.js +5 -4
- package/lib/IgnoreWarningsPlugin.js +6 -9
- package/lib/InitFragment.js +39 -15
- package/lib/JavascriptMetaInfoPlugin.js +27 -15
- package/lib/LibManifestPlugin.js +45 -16
- package/lib/LoaderOptionsPlugin.js +13 -3
- package/lib/MainTemplate.js +74 -21
- package/lib/Module.js +155 -34
- package/lib/ModuleBuildError.js +13 -11
- package/lib/ModuleDependencyError.js +6 -4
- package/lib/ModuleDependencyWarning.js +6 -4
- package/lib/ModuleError.js +10 -5
- package/lib/ModuleFactory.js +4 -4
- package/lib/ModuleFilenameHelpers.js +164 -54
- package/lib/ModuleGraph.js +93 -53
- package/lib/ModuleGraphConnection.js +27 -13
- package/lib/ModuleHashingError.js +29 -0
- package/lib/ModuleInfoHeaderPlugin.js +92 -33
- package/lib/ModuleNotFoundError.js +5 -2
- package/lib/ModuleParseError.js +17 -9
- package/lib/ModuleProfile.js +1 -0
- package/lib/ModuleRestoreError.js +3 -1
- package/lib/ModuleStoreError.js +3 -2
- package/lib/ModuleTemplate.js +33 -1
- package/lib/ModuleTypeConstants.js +168 -0
- package/lib/ModuleWarning.js +10 -5
- package/lib/MultiCompiler.js +115 -38
- package/lib/MultiStats.js +75 -33
- package/lib/MultiWatching.js +6 -2
- package/lib/NodeStuffPlugin.js +136 -37
- package/lib/NormalModule.js +437 -194
- package/lib/NormalModuleFactory.js +313 -116
- package/lib/NormalModuleReplacementPlugin.js +10 -4
- package/lib/NullFactory.js +1 -1
- package/lib/OptimizationStages.js +3 -3
- package/lib/Parser.js +1 -1
- package/lib/PlatformPlugin.js +39 -0
- package/lib/PrefetchPlugin.js +4 -0
- package/lib/ProgressPlugin.js +83 -28
- package/lib/ProvidePlugin.js +37 -19
- package/lib/RawModule.js +18 -5
- package/lib/RecordIdsPlugin.js +8 -8
- package/lib/RequireJsStuffPlugin.js +22 -15
- package/lib/ResolverFactory.js +8 -4
- package/lib/RuntimeGlobals.js +99 -65
- package/lib/RuntimeModule.js +17 -15
- package/lib/RuntimePlugin.js +116 -13
- package/lib/RuntimeTemplate.js +304 -102
- package/lib/SelfModuleFactory.js +12 -0
- package/lib/SizeFormatHelpers.js +2 -4
- package/lib/SourceMapDevToolModuleOptionsPlugin.js +4 -0
- package/lib/SourceMapDevToolPlugin.js +89 -42
- package/lib/Stats.js +12 -7
- package/lib/Template.js +30 -33
- package/lib/TemplatedPathPlugin.js +102 -34
- package/lib/UseStrictPlugin.js +37 -12
- package/lib/WarnCaseSensitiveModulesPlugin.js +12 -0
- package/lib/WarnDeprecatedOptionPlugin.js +6 -0
- package/lib/WatchIgnorePlugin.js +46 -13
- package/lib/Watching.js +139 -76
- package/lib/WebpackError.js +14 -5
- package/lib/WebpackIsIncludedPlugin.js +22 -13
- package/lib/WebpackOptionsApply.js +162 -56
- package/lib/WebpackOptionsDefaulter.js +10 -3
- package/lib/asset/AssetGenerator.js +351 -99
- package/lib/asset/AssetModulesPlugin.js +57 -33
- package/lib/asset/AssetParser.js +15 -6
- package/lib/asset/AssetSourceGenerator.js +30 -10
- package/lib/asset/AssetSourceParser.js +8 -2
- package/lib/asset/RawDataUrlModule.js +162 -0
- package/lib/async-modules/AwaitDependenciesInitFragment.js +16 -13
- package/lib/async-modules/InferAsyncModulesPlugin.js +1 -1
- package/lib/buildChunkGraph.js +376 -420
- package/lib/cache/AddManagedPathsPlugin.js +6 -1
- package/lib/cache/IdleFileCachePlugin.js +26 -13
- package/lib/cache/MemoryCachePlugin.js +1 -1
- package/lib/cache/MemoryWithGcCachePlugin.js +13 -7
- package/lib/cache/PackFileCacheStrategy.js +172 -94
- package/lib/cache/ResolverCachePlugin.js +115 -43
- package/lib/cache/getLazyHashedEtag.js +2 -2
- package/lib/cache/mergeEtags.js +16 -21
- package/lib/cli.js +195 -110
- package/lib/config/browserslistTargetHandler.js +106 -41
- package/lib/config/defaults.js +572 -154
- package/lib/config/normalization.js +361 -322
- package/lib/config/target.js +105 -66
- package/lib/container/ContainerEntryDependency.js +2 -1
- package/lib/container/ContainerEntryModule.js +27 -11
- package/lib/container/ContainerEntryModuleFactory.js +1 -1
- package/lib/container/ContainerExposedDependency.js +9 -0
- package/lib/container/ContainerPlugin.js +18 -12
- package/lib/container/ContainerReferencePlugin.js +1 -1
- package/lib/container/FallbackDependency.js +13 -0
- package/lib/container/FallbackItemDependency.js +3 -0
- package/lib/container/FallbackModule.js +19 -8
- package/lib/container/FallbackModuleFactory.js +1 -1
- package/lib/container/ModuleFederationPlugin.js +2 -0
- package/lib/container/RemoteModule.js +17 -4
- package/lib/container/RemoteRuntimeModule.js +31 -17
- package/lib/container/RemoteToExternalDependency.js +3 -0
- package/lib/container/options.js +18 -4
- package/lib/css/CssExportsGenerator.js +203 -0
- package/lib/css/CssGenerator.js +151 -0
- package/lib/css/CssLoadingRuntimeModule.js +592 -0
- package/lib/css/CssModulesPlugin.js +888 -0
- package/lib/css/CssParser.js +1049 -0
- package/lib/css/walkCssTokens.js +775 -0
- package/lib/debug/ProfilingPlugin.js +102 -54
- package/lib/dependencies/AMDDefineDependency.js +54 -10
- package/lib/dependencies/AMDDefineDependencyParserPlugin.js +204 -61
- package/lib/dependencies/AMDPlugin.js +44 -24
- package/lib/dependencies/AMDRequireArrayDependency.js +34 -10
- package/lib/dependencies/AMDRequireContextDependency.js +15 -0
- package/lib/dependencies/AMDRequireDependenciesBlock.js +6 -0
- package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +185 -54
- package/lib/dependencies/AMDRequireDependency.js +21 -6
- package/lib/dependencies/AMDRequireItemDependency.js +6 -0
- package/lib/dependencies/AMDRuntimeModules.js +4 -4
- package/lib/dependencies/CachedConstDependency.js +22 -1
- package/lib/dependencies/CommonJsDependencyHelpers.js +16 -2
- package/lib/dependencies/CommonJsExportRequireDependency.js +77 -47
- package/lib/dependencies/CommonJsExportsDependency.js +28 -5
- package/lib/dependencies/CommonJsExportsParserPlugin.js +111 -39
- package/lib/dependencies/CommonJsFullRequireDependency.js +42 -8
- package/lib/dependencies/CommonJsImportsParserPlugin.js +530 -130
- package/lib/dependencies/CommonJsPlugin.js +51 -26
- package/lib/dependencies/CommonJsRequireContextDependency.js +23 -2
- package/lib/dependencies/CommonJsRequireDependency.js +9 -1
- package/lib/dependencies/CommonJsSelfReferenceDependency.js +22 -8
- package/lib/dependencies/ConstDependency.js +12 -3
- package/lib/dependencies/ContextDependency.js +32 -5
- package/lib/dependencies/ContextDependencyHelpers.js +92 -62
- package/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +4 -1
- package/lib/dependencies/ContextElementDependency.js +41 -4
- package/lib/dependencies/CreateScriptUrlDependency.js +22 -1
- package/lib/dependencies/CriticalDependencyWarning.js +4 -1
- package/lib/dependencies/CssExportDependency.js +156 -0
- package/lib/dependencies/CssImportDependency.js +125 -0
- package/lib/dependencies/CssLocalIdentifierDependency.js +245 -0
- package/lib/dependencies/CssSelfLocalIdentifierDependency.js +111 -0
- package/lib/dependencies/CssUrlDependency.js +164 -0
- package/lib/dependencies/DelegatedSourceDependency.js +3 -0
- package/lib/dependencies/DllEntryDependency.js +14 -0
- package/lib/dependencies/DynamicExports.js +15 -11
- package/lib/dependencies/ExportsInfoDependency.js +26 -5
- package/lib/dependencies/ExternalModuleDependency.js +109 -0
- package/lib/dependencies/ExternalModuleInitFragment.js +133 -0
- package/lib/dependencies/HarmonyAcceptDependency.js +11 -2
- package/lib/dependencies/HarmonyAcceptImportDependency.js +9 -4
- package/lib/dependencies/HarmonyCompatibilityDependency.js +6 -5
- package/lib/dependencies/HarmonyDetectionParserPlugin.js +29 -3
- package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +152 -0
- package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +96 -51
- package/lib/dependencies/HarmonyExportExpressionDependency.js +21 -4
- package/lib/dependencies/HarmonyExportHeaderDependency.js +13 -0
- package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +216 -108
- package/lib/dependencies/HarmonyExportInitFragment.js +21 -9
- package/lib/dependencies/HarmonyExportSpecifierDependency.js +12 -0
- package/lib/dependencies/HarmonyExports.js +13 -7
- package/lib/dependencies/HarmonyImportDependency.js +65 -19
- package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +268 -74
- package/lib/dependencies/HarmonyImportSideEffectDependency.js +11 -5
- package/lib/dependencies/HarmonyImportSpecifierDependency.js +180 -36
- package/lib/dependencies/HarmonyModulesPlugin.js +33 -5
- package/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +15 -3
- package/lib/dependencies/ImportContextDependency.js +15 -2
- package/lib/dependencies/ImportDependency.js +50 -12
- package/lib/dependencies/ImportEagerDependency.js +11 -6
- package/lib/dependencies/ImportMetaContextDependency.js +42 -0
- package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +301 -0
- package/lib/dependencies/ImportMetaContextPlugin.js +72 -0
- package/lib/dependencies/ImportMetaHotAcceptDependency.js +6 -0
- package/lib/dependencies/ImportMetaHotDeclineDependency.js +6 -0
- package/lib/dependencies/ImportMetaPlugin.js +128 -59
- package/lib/dependencies/ImportParserPlugin.js +153 -83
- package/lib/dependencies/ImportPlugin.js +21 -7
- package/lib/dependencies/ImportWeakDependency.js +11 -6
- package/lib/dependencies/JsonExportsDependency.js +38 -30
- package/lib/dependencies/LoaderDependency.js +14 -0
- package/lib/dependencies/LoaderImportDependency.js +14 -0
- package/lib/dependencies/LoaderPlugin.js +54 -40
- package/lib/dependencies/LocalModule.js +17 -1
- package/lib/dependencies/LocalModuleDependency.js +15 -0
- package/lib/dependencies/LocalModulesHelpers.js +22 -4
- package/lib/dependencies/ModuleDecoratorDependency.js +9 -1
- package/lib/dependencies/ModuleDependency.js +24 -7
- package/lib/dependencies/ModuleDependencyTemplateAsId.js +2 -1
- package/lib/dependencies/ModuleHotAcceptDependency.js +6 -0
- package/lib/dependencies/ModuleHotDeclineDependency.js +6 -0
- package/lib/dependencies/PrefetchDependency.js +3 -0
- package/lib/dependencies/ProvidedDependency.js +43 -8
- package/lib/dependencies/PureExpressionDependency.js +73 -39
- package/lib/dependencies/RequireContextDependency.js +6 -16
- package/lib/dependencies/RequireContextDependencyParserPlugin.js +14 -6
- package/lib/dependencies/RequireContextPlugin.js +20 -7
- package/lib/dependencies/RequireEnsureDependenciesBlock.js +7 -0
- package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +29 -12
- package/lib/dependencies/RequireEnsureDependency.js +16 -2
- package/lib/dependencies/RequireEnsureItemDependency.js +3 -0
- package/lib/dependencies/RequireEnsurePlugin.js +27 -7
- package/lib/dependencies/RequireHeaderDependency.js +14 -1
- package/lib/dependencies/RequireIncludeDependency.js +6 -1
- package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +29 -5
- package/lib/dependencies/RequireIncludePlugin.js +25 -5
- package/lib/dependencies/RequireResolveContextDependency.js +19 -2
- package/lib/dependencies/RequireResolveDependency.js +8 -1
- package/lib/dependencies/RequireResolveHeaderDependency.js +18 -0
- package/lib/dependencies/RuntimeRequirementsDependency.js +9 -1
- package/lib/dependencies/StaticExportsDependency.js +8 -0
- package/lib/dependencies/SystemPlugin.js +49 -22
- package/lib/dependencies/SystemRuntimeModule.js +1 -1
- package/lib/dependencies/URLDependency.js +20 -13
- package/lib/dependencies/URLPlugin.js +115 -27
- package/lib/dependencies/UnsupportedDependency.js +13 -0
- package/lib/dependencies/WebAssemblyExportImportedDependency.js +14 -0
- package/lib/dependencies/WebAssemblyImportDependency.js +9 -1
- package/lib/dependencies/WebpackIsIncludedDependency.js +6 -1
- package/lib/dependencies/WorkerDependency.js +47 -3
- package/lib/dependencies/WorkerPlugin.js +143 -59
- package/lib/dependencies/getFunctionExpression.js +9 -0
- package/lib/dependencies/processExportInfo.js +3 -1
- package/lib/electron/ElectronTargetPlugin.js +1 -0
- package/lib/esm/ExportWebpackRequireRuntimeModule.js +3 -2
- package/lib/esm/ModuleChunkFormatPlugin.js +92 -55
- package/lib/esm/ModuleChunkLoadingPlugin.js +12 -1
- package/lib/esm/ModuleChunkLoadingRuntimeModule.js +141 -25
- package/lib/formatLocation.js +1 -2
- package/lib/hmr/HotModuleReplacement.runtime.js +37 -25
- package/lib/hmr/HotModuleReplacementRuntimeModule.js +2 -1
- package/lib/hmr/JavascriptHotModuleReplacement.runtime.js +13 -15
- package/lib/hmr/LazyCompilationPlugin.js +94 -41
- package/lib/hmr/lazyCompilationBackend.js +107 -44
- package/lib/ids/ChunkModuleIdRangePlugin.js +12 -3
- package/lib/ids/DeterministicChunkIdsPlugin.js +13 -6
- package/lib/ids/DeterministicModuleIdsPlugin.js +59 -35
- package/lib/ids/HashedModuleIdsPlugin.js +24 -16
- package/lib/ids/IdHelpers.js +59 -49
- package/lib/ids/NamedChunkIdsPlugin.js +13 -1
- package/lib/ids/NamedModuleIdsPlugin.js +20 -12
- package/lib/ids/NaturalModuleIdsPlugin.js +10 -13
- package/lib/ids/OccurrenceChunkIdsPlugin.js +6 -2
- package/lib/ids/OccurrenceModuleIdsPlugin.js +14 -11
- package/lib/ids/SyncModuleIdsPlugin.js +146 -0
- package/lib/index.js +44 -5
- package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +9 -7
- package/lib/javascript/BasicEvaluatedExpression.js +133 -19
- package/lib/javascript/ChunkHelpers.js +33 -0
- package/lib/javascript/CommonJsChunkFormatPlugin.js +18 -15
- package/lib/javascript/EnableChunkLoadingPlugin.js +11 -6
- package/lib/javascript/JavascriptGenerator.js +37 -6
- package/lib/javascript/JavascriptModulesPlugin.js +523 -295
- package/lib/javascript/JavascriptParser.js +1591 -574
- package/lib/javascript/JavascriptParserHelpers.js +58 -37
- package/lib/javascript/StartupHelpers.js +69 -47
- package/lib/json/JsonData.js +33 -0
- package/lib/json/JsonGenerator.js +29 -21
- package/lib/json/JsonModulesPlugin.js +13 -7
- package/lib/json/JsonParser.js +30 -16
- package/lib/library/AbstractLibraryPlugin.js +6 -2
- package/lib/library/AmdLibraryPlugin.js +34 -18
- package/lib/library/AssignLibraryPlugin.js +68 -32
- package/lib/library/EnableLibraryPlugin.js +39 -14
- package/lib/library/ExportPropertyLibraryPlugin.js +14 -5
- package/lib/library/JsonpLibraryPlugin.js +4 -3
- package/lib/library/ModernModuleLibraryPlugin.js +144 -0
- package/lib/library/ModuleLibraryPlugin.js +12 -7
- package/lib/library/SystemLibraryPlugin.js +6 -4
- package/lib/library/UmdLibraryPlugin.js +119 -100
- package/lib/logging/Logger.js +59 -6
- package/lib/logging/createConsoleLogger.js +25 -40
- package/lib/logging/runtime.js +8 -9
- package/lib/logging/truncateArgs.js +9 -8
- package/lib/node/CommonJsChunkLoadingPlugin.js +18 -2
- package/lib/node/NodeEnvironmentPlugin.js +14 -8
- package/lib/node/NodeTargetPlugin.js +7 -0
- package/lib/node/NodeTemplatePlugin.js +10 -2
- package/lib/node/NodeWatchFileSystem.js +100 -50
- package/lib/node/ReadFileChunkLoadingRuntimeModule.js +51 -26
- package/lib/node/ReadFileCompileAsyncWasmPlugin.js +13 -2
- package/lib/node/ReadFileCompileWasmPlugin.js +21 -3
- package/lib/node/RequireChunkLoadingRuntimeModule.js +49 -26
- package/lib/node/nodeConsole.js +48 -31
- package/lib/optimize/AggressiveMergingPlugin.js +10 -4
- package/lib/optimize/AggressiveSplittingPlugin.js +26 -21
- package/lib/optimize/ConcatenatedModule.js +353 -212
- package/lib/optimize/EnsureChunkConditionsPlugin.js +4 -1
- package/lib/optimize/FlagIncludedChunksPlugin.js +14 -8
- package/lib/optimize/InnerGraph.js +30 -25
- package/lib/optimize/InnerGraphPlugin.js +105 -64
- package/lib/optimize/LimitChunkCountPlugin.js +32 -9
- package/lib/optimize/MangleExportsPlugin.js +7 -2
- package/lib/optimize/MinMaxSizeWarning.js +6 -1
- package/lib/optimize/ModuleConcatenationPlugin.js +150 -83
- package/lib/optimize/RealContentHashPlugin.js +99 -43
- package/lib/optimize/RemoveParentModulesPlugin.js +131 -48
- package/lib/optimize/RuntimeChunkPlugin.js +15 -2
- package/lib/optimize/SideEffectsFlagPlugin.js +119 -63
- package/lib/optimize/SplitChunksPlugin.js +129 -78
- package/lib/performance/SizeLimitsPlugin.js +22 -8
- package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +4 -2
- package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +4 -1
- package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +8 -5
- package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +5 -3
- package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +5 -3
- package/lib/rules/BasicEffectRulePlugin.js +7 -1
- package/lib/rules/BasicMatcherRulePlugin.js +8 -1
- package/lib/rules/ObjectMatcherRulePlugin.js +19 -2
- package/lib/rules/RuleSetCompiler.js +53 -32
- package/lib/rules/UseEffectRulePlugin.js +42 -36
- package/lib/runtime/AsyncModuleRuntimeModule.js +56 -69
- package/lib/runtime/AutoPublicPathRuntimeModule.js +25 -9
- package/lib/runtime/BaseUriRuntimeModule.js +35 -0
- package/lib/runtime/ChunkNameRuntimeModule.js +1 -1
- package/lib/runtime/CompatGetDefaultExportRuntimeModule.js +5 -2
- package/lib/runtime/CompatRuntimeModule.js +7 -2
- package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +7 -4
- package/lib/runtime/CreateScriptRuntimeModule.js +38 -0
- package/lib/runtime/CreateScriptUrlRuntimeModule.js +13 -36
- package/lib/runtime/DefinePropertyGettersRuntimeModule.js +6 -3
- package/lib/runtime/EnsureChunkRuntimeModule.js +29 -15
- package/lib/runtime/GetChunkFilenameRuntimeModule.js +56 -43
- package/lib/runtime/GetFullHashRuntimeModule.js +4 -3
- package/lib/runtime/GetMainFilenameRuntimeModule.js +5 -2
- package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +98 -0
- package/lib/runtime/GlobalRuntimeModule.js +1 -1
- package/lib/runtime/HasOwnPropertyRuntimeModule.js +5 -2
- package/lib/runtime/LoadScriptRuntimeModule.js +61 -45
- package/lib/runtime/MakeNamespaceObjectRuntimeModule.js +5 -2
- package/lib/runtime/NonceRuntimeModule.js +24 -0
- package/lib/runtime/OnChunksLoadedRuntimeModule.js +4 -2
- package/lib/runtime/PublicPathRuntimeModule.js +9 -2
- package/lib/runtime/RelativeUrlRuntimeModule.js +5 -2
- package/lib/runtime/RuntimeIdRuntimeModule.js +6 -2
- package/lib/runtime/StartupChunkDependenciesPlugin.js +15 -0
- package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +36 -28
- package/lib/runtime/StartupEntrypointRuntimeModule.js +13 -9
- package/lib/runtime/SystemContextRuntimeModule.js +1 -1
- package/lib/schemes/DataUriPlugin.js +16 -3
- package/lib/schemes/HttpUriPlugin.js +336 -120
- package/lib/serialization/ArraySerializer.js +22 -6
- package/lib/serialization/BinaryMiddleware.js +212 -33
- package/lib/serialization/DateObjectSerializer.js +16 -4
- package/lib/serialization/ErrorObjectSerializer.js +23 -6
- package/lib/serialization/FileMiddleware.js +187 -86
- package/lib/serialization/MapObjectSerializer.js +25 -8
- package/lib/serialization/NullPrototypeObjectSerializer.js +26 -8
- package/lib/serialization/ObjectMiddleware.js +96 -66
- package/lib/serialization/PlainObjectSerializer.js +51 -14
- package/lib/serialization/RegExpObjectSerializer.js +17 -5
- package/lib/serialization/Serializer.js +23 -5
- package/lib/serialization/SerializerMiddleware.js +8 -8
- package/lib/serialization/SetObjectSerializer.js +22 -6
- package/lib/serialization/SingleItemMiddleware.js +2 -2
- package/lib/serialization/types.js +2 -2
- package/lib/sharing/ConsumeSharedFallbackDependency.js +3 -0
- package/lib/sharing/ConsumeSharedModule.js +40 -17
- package/lib/sharing/ConsumeSharedPlugin.js +139 -102
- package/lib/sharing/ConsumeSharedRuntimeModule.js +144 -130
- package/lib/sharing/ProvideForSharedDependency.js +0 -1
- package/lib/sharing/ProvideSharedDependency.js +17 -0
- package/lib/sharing/ProvideSharedModule.js +19 -6
- package/lib/sharing/ProvideSharedModuleFactory.js +1 -1
- package/lib/sharing/ProvideSharedPlugin.js +37 -30
- package/lib/sharing/SharePlugin.js +2 -2
- package/lib/sharing/ShareRuntimeModule.js +20 -10
- package/lib/sharing/resolveMatchedConfigs.js +6 -5
- package/lib/sharing/utils.js +338 -34
- package/lib/stats/DefaultStatsFactoryPlugin.js +660 -396
- package/lib/stats/DefaultStatsPresetPlugin.js +85 -25
- package/lib/stats/DefaultStatsPrinterPlugin.js +525 -145
- package/lib/stats/StatsFactory.js +128 -57
- package/lib/stats/StatsPrinter.js +77 -46
- package/lib/util/ArrayHelpers.js +35 -1
- package/lib/util/ArrayQueue.js +15 -22
- package/lib/util/AsyncQueue.js +37 -16
- package/lib/util/IterableHelpers.js +3 -4
- package/lib/util/LazyBucketSortedSet.js +60 -44
- package/lib/util/LazySet.js +11 -2
- package/lib/util/MapHelpers.js +17 -5
- package/lib/util/ParallelismFactorCalculator.js +11 -1
- package/lib/util/Queue.js +9 -3
- package/lib/util/Semaphore.js +4 -7
- package/lib/util/SetHelpers.js +5 -5
- package/lib/util/SortableSet.js +19 -6
- package/lib/util/StackedCacheMap.js +33 -3
- package/lib/util/StackedMap.js +1 -3
- package/lib/util/StringXor.js +46 -0
- package/lib/util/TupleQueue.js +9 -3
- package/lib/util/TupleSet.js +15 -5
- package/lib/util/URLAbsoluteSpecifier.js +8 -8
- package/lib/util/WeakTupleMap.js +70 -28
- package/lib/util/binarySearchBounds.js +51 -9
- package/lib/util/chainedImports.js +97 -0
- package/lib/util/cleverMerge.js +51 -36
- package/lib/util/comparators.js +146 -83
- package/lib/util/compileBooleanMatcher.js +35 -7
- package/lib/util/conventions.js +126 -0
- package/lib/util/create-schema-validation.js +9 -2
- package/lib/util/createHash.js +49 -14
- package/lib/util/deprecation.js +48 -15
- package/lib/util/deterministicGrouping.js +71 -39
- package/lib/util/extractUrlAndGlobal.js +3 -0
- package/lib/util/findGraphRoots.js +7 -5
- package/lib/util/fs.js +419 -94
- package/lib/util/hash/BatchedHash.js +10 -4
- package/lib/util/hash/md4.js +20 -0
- package/lib/util/hash/wasm-hash.js +163 -0
- package/lib/util/hash/xxhash64.js +7 -141
- package/lib/util/identifier.js +140 -93
- package/lib/util/internalSerializables.js +22 -0
- package/lib/util/makeSerializable.js +7 -0
- package/lib/util/memoize.js +10 -10
- package/lib/util/mergeScope.js +76 -0
- package/lib/util/nonNumericOnlyHash.js +22 -0
- package/lib/util/numberHash.js +84 -34
- package/lib/util/objectToMap.js +0 -1
- package/lib/util/processAsyncTree.js +7 -1
- package/lib/util/propertyAccess.js +7 -55
- package/lib/util/propertyName.js +77 -0
- package/lib/util/registerExternalSerializer.js +2 -2
- package/lib/util/runtime.js +188 -133
- package/lib/util/semver.js +64 -56
- package/lib/util/serialization.js +26 -1
- package/lib/util/smartGrouping.js +10 -10
- package/lib/util/source.js +1 -1
- package/lib/validateSchema.js +6 -2
- package/lib/wasm/EnableWasmLoadingPlugin.js +9 -4
- package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +70 -30
- package/lib/wasm-async/AsyncWebAssemblyGenerator.js +9 -1
- package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +34 -16
- package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +32 -12
- package/lib/wasm-async/AsyncWebAssemblyParser.js +17 -4
- package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +72 -31
- package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +17 -6
- package/lib/wasm-sync/WebAssemblyGenerator.js +72 -52
- package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +5 -4
- package/lib/wasm-sync/WebAssemblyModulesPlugin.js +53 -43
- package/lib/wasm-sync/WebAssemblyParser.js +23 -9
- package/lib/wasm-sync/WebAssemblyUtils.js +5 -4
- package/lib/web/FetchCompileAsyncWasmPlugin.js +11 -1
- package/lib/web/FetchCompileWasmPlugin.js +59 -42
- package/lib/web/JsonpChunkLoadingPlugin.js +9 -0
- package/lib/web/JsonpChunkLoadingRuntimeModule.js +71 -41
- package/lib/webpack.js +43 -12
- package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +15 -12
- package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +55 -40
- package/module.d.ts +233 -0
- package/package.json +85 -139
- package/schemas/WebpackOptions.check.js +1 -1
- package/schemas/WebpackOptions.json +679 -47
- package/schemas/plugins/BannerPlugin.check.js +1 -1
- package/schemas/plugins/BannerPlugin.json +9 -1
- package/schemas/plugins/DllReferencePlugin.check.js +1 -1
- package/schemas/plugins/HashedModuleIdsPlugin.check.js +1 -1
- package/schemas/plugins/ProgressPlugin.check.js +1 -1
- package/schemas/plugins/SourceMapDevToolPlugin.check.js +1 -1
- package/schemas/plugins/SourceMapDevToolPlugin.json +4 -0
- package/schemas/plugins/asset/AssetGeneratorOptions.check.js +1 -1
- package/schemas/plugins/asset/AssetInlineGeneratorOptions.check.js +1 -1
- package/schemas/plugins/asset/AssetParserOptions.check.js +1 -1
- package/schemas/plugins/asset/AssetResourceGeneratorOptions.check.js +1 -1
- package/schemas/plugins/container/ContainerPlugin.check.js +1 -1
- package/schemas/plugins/container/ContainerPlugin.json +10 -1
- 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 +12 -1
- package/schemas/plugins/css/CssAutoGeneratorOptions.check.d.ts +7 -0
- package/schemas/plugins/css/CssAutoGeneratorOptions.check.js +6 -0
- package/schemas/plugins/css/CssAutoGeneratorOptions.json +3 -0
- package/schemas/plugins/css/CssAutoParserOptions.check.d.ts +7 -0
- package/schemas/plugins/css/CssAutoParserOptions.check.js +6 -0
- package/schemas/plugins/css/CssAutoParserOptions.json +3 -0
- package/schemas/plugins/css/CssGeneratorOptions.check.d.ts +7 -0
- package/schemas/plugins/css/CssGeneratorOptions.check.js +6 -0
- package/schemas/plugins/css/CssGeneratorOptions.json +3 -0
- package/schemas/plugins/css/CssGlobalGeneratorOptions.check.d.ts +7 -0
- package/schemas/plugins/css/CssGlobalGeneratorOptions.check.js +6 -0
- package/schemas/plugins/css/CssGlobalGeneratorOptions.json +3 -0
- package/schemas/plugins/css/CssGlobalParserOptions.check.d.ts +7 -0
- package/schemas/plugins/css/CssGlobalParserOptions.check.js +6 -0
- package/schemas/plugins/css/CssGlobalParserOptions.json +3 -0
- package/schemas/plugins/css/CssModuleGeneratorOptions.check.d.ts +7 -0
- package/schemas/plugins/css/CssModuleGeneratorOptions.check.js +6 -0
- package/schemas/plugins/css/CssModuleGeneratorOptions.json +3 -0
- package/schemas/plugins/css/CssModuleParserOptions.check.d.ts +7 -0
- package/schemas/plugins/css/CssModuleParserOptions.check.js +6 -0
- package/schemas/plugins/css/CssModuleParserOptions.json +3 -0
- package/schemas/plugins/css/CssParserOptions.check.d.ts +7 -0
- package/schemas/plugins/css/CssParserOptions.check.js +6 -0
- package/schemas/plugins/css/CssParserOptions.json +3 -0
- package/schemas/plugins/optimize/AggressiveSplittingPlugin.check.js +1 -1
- package/schemas/plugins/optimize/LimitChunkCountPlugin.check.js +1 -1
- package/schemas/plugins/optimize/MinChunkSizePlugin.check.js +1 -1
- package/schemas/plugins/schemes/HttpUriPlugin.check.js +1 -1
- package/schemas/plugins/schemes/HttpUriPlugin.json +4 -0
- package/schemas/plugins/sharing/SharePlugin.check.js +1 -1
- package/types.d.ts +5026 -1756
@@ -7,6 +7,7 @@
|
|
7
7
|
|
8
8
|
const eslintScope = require("eslint-scope");
|
9
9
|
const Referencer = require("eslint-scope/lib/referencer");
|
10
|
+
const { SyncBailHook } = require("tapable");
|
10
11
|
const {
|
11
12
|
CachedSource,
|
12
13
|
ConcatSource,
|
@@ -15,17 +16,20 @@ const {
|
|
15
16
|
const ConcatenationScope = require("../ConcatenationScope");
|
16
17
|
const { UsageState } = require("../ExportsInfo");
|
17
18
|
const Module = require("../Module");
|
19
|
+
const { JAVASCRIPT_MODULE_TYPE_ESM } = require("../ModuleTypeConstants");
|
18
20
|
const RuntimeGlobals = require("../RuntimeGlobals");
|
19
21
|
const Template = require("../Template");
|
20
22
|
const HarmonyImportDependency = require("../dependencies/HarmonyImportDependency");
|
21
23
|
const JavascriptParser = require("../javascript/JavascriptParser");
|
22
24
|
const { equals } = require("../util/ArrayHelpers");
|
23
25
|
const LazySet = require("../util/LazySet");
|
24
|
-
const { concatComparators
|
26
|
+
const { concatComparators } = require("../util/comparators");
|
25
27
|
const createHash = require("../util/createHash");
|
26
28
|
const { makePathsRelative } = require("../util/identifier");
|
27
29
|
const makeSerializable = require("../util/makeSerializable");
|
30
|
+
const { getAllReferences, getPathInAst } = require("../util/mergeScope");
|
28
31
|
const propertyAccess = require("../util/propertyAccess");
|
32
|
+
const { propertyName } = require("../util/propertyName");
|
29
33
|
const {
|
30
34
|
filterRuntime,
|
31
35
|
intersectRuntime,
|
@@ -35,43 +39,63 @@ const {
|
|
35
39
|
subtractRuntimeCondition
|
36
40
|
} = require("../util/runtime");
|
37
41
|
|
42
|
+
/** @typedef {import("eslint-scope").Reference} Reference */
|
38
43
|
/** @typedef {import("eslint-scope").Scope} Scope */
|
44
|
+
/** @typedef {import("eslint-scope").Variable} Variable */
|
39
45
|
/** @typedef {import("webpack-sources").Source} Source */
|
40
46
|
/** @typedef {import("../../declarations/WebpackOptions").WebpackOptionsNormalized} WebpackOptions */
|
41
47
|
/** @typedef {import("../ChunkGraph")} ChunkGraph */
|
48
|
+
/** @typedef {import("../CodeGenerationResults")} CodeGenerationResults */
|
42
49
|
/** @typedef {import("../Compilation")} Compilation */
|
43
50
|
/** @typedef {import("../Dependency")} Dependency */
|
44
51
|
/** @typedef {import("../Dependency").UpdateHashContext} UpdateHashContext */
|
45
52
|
/** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */
|
46
53
|
/** @typedef {import("../DependencyTemplates")} DependencyTemplates */
|
47
54
|
/** @typedef {import("../ExportsInfo").ExportInfo} ExportInfo */
|
48
|
-
/** @
|
55
|
+
/** @typedef {import("../Module").BuildInfo} BuildInfo */
|
56
|
+
/** @typedef {import("../Module").BuildMeta} BuildMeta */
|
49
57
|
/** @typedef {import("../Module").CodeGenerationContext} CodeGenerationContext */
|
50
58
|
/** @typedef {import("../Module").CodeGenerationResult} CodeGenerationResult */
|
51
59
|
/** @typedef {import("../Module").LibIdentOptions} LibIdentOptions */
|
60
|
+
/** @typedef {import("../Module").ReadOnlyRuntimeRequirements} ReadOnlyRuntimeRequirements */
|
61
|
+
/** @typedef {import("../Module").SourceTypes} SourceTypes */
|
52
62
|
/** @typedef {import("../ModuleGraph")} ModuleGraph */
|
53
63
|
/** @typedef {import("../ModuleGraphConnection")} ModuleGraphConnection */
|
54
64
|
/** @typedef {import("../ModuleGraphConnection").ConnectionState} ConnectionState */
|
65
|
+
/** @typedef {import("../ModuleParseError")} ModuleParseError */
|
55
66
|
/** @typedef {import("../RequestShortener")} RequestShortener */
|
56
67
|
/** @typedef {import("../ResolverFactory").ResolverWithOptions} ResolverWithOptions */
|
57
68
|
/** @typedef {import("../RuntimeTemplate")} RuntimeTemplate */
|
58
69
|
/** @typedef {import("../WebpackError")} WebpackError */
|
59
70
|
/** @typedef {import("../javascript/JavascriptModulesPlugin").ChunkRenderContext} ChunkRenderContext */
|
71
|
+
/** @typedef {import("../javascript/JavascriptParser").Program} Program */
|
72
|
+
/** @typedef {import("../javascript/JavascriptParser").Range} Range */
|
73
|
+
/** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
|
60
74
|
/** @typedef {import("../util/Hash")} Hash */
|
61
75
|
/** @typedef {typeof import("../util/Hash")} HashConstructor */
|
62
76
|
/** @typedef {import("../util/fs").InputFileSystem} InputFileSystem */
|
63
77
|
/** @typedef {import("../util/runtime").RuntimeSpec} RuntimeSpec */
|
64
78
|
|
79
|
+
/**
|
80
|
+
* @template T
|
81
|
+
* @typedef {import("../InitFragment")<T>} InitFragment
|
82
|
+
*/
|
83
|
+
|
84
|
+
/**
|
85
|
+
* @template T
|
86
|
+
* @typedef {import("../util/comparators").Comparator<T>} Comparator
|
87
|
+
*/
|
88
|
+
|
65
89
|
// fix eslint-scope to support class properties correctly
|
66
90
|
// cspell:word Referencer
|
67
|
-
const ReferencerClass = Referencer;
|
91
|
+
const ReferencerClass = /** @type {any} */ (Referencer);
|
68
92
|
if (!ReferencerClass.prototype.PropertyDefinition) {
|
69
93
|
ReferencerClass.prototype.PropertyDefinition =
|
70
94
|
ReferencerClass.prototype.Property;
|
71
95
|
}
|
72
96
|
|
73
97
|
/**
|
74
|
-
* @typedef {
|
98
|
+
* @typedef {object} ReexportInfo
|
75
99
|
* @property {Module} module
|
76
100
|
* @property {string[]} export
|
77
101
|
*/
|
@@ -79,7 +103,7 @@ if (!ReferencerClass.prototype.PropertyDefinition) {
|
|
79
103
|
/** @typedef {RawBinding | SymbolBinding} Binding */
|
80
104
|
|
81
105
|
/**
|
82
|
-
* @typedef {
|
106
|
+
* @typedef {object} RawBinding
|
83
107
|
* @property {ModuleInfo} info
|
84
108
|
* @property {string} rawName
|
85
109
|
* @property {string=} comment
|
@@ -88,7 +112,7 @@ if (!ReferencerClass.prototype.PropertyDefinition) {
|
|
88
112
|
*/
|
89
113
|
|
90
114
|
/**
|
91
|
-
* @typedef {
|
115
|
+
* @typedef {object} SymbolBinding
|
92
116
|
* @property {ConcatenatedModuleInfo} info
|
93
117
|
* @property {string} name
|
94
118
|
* @property {string=} comment
|
@@ -100,52 +124,54 @@ if (!ReferencerClass.prototype.PropertyDefinition) {
|
|
100
124
|
/** @typedef {ConcatenatedModuleInfo | ExternalModuleInfo | ReferenceToModuleInfo } ModuleInfoOrReference */
|
101
125
|
|
102
126
|
/**
|
103
|
-
* @typedef {
|
127
|
+
* @typedef {object} ConcatenatedModuleInfo
|
104
128
|
* @property {"concatenated"} type
|
105
129
|
* @property {Module} module
|
106
130
|
* @property {number} index
|
107
|
-
* @property {
|
108
|
-
* @property {Source} internalSource
|
131
|
+
* @property {Program | undefined} ast
|
132
|
+
* @property {Source | undefined} internalSource
|
109
133
|
* @property {ReplaceSource} source
|
110
134
|
* @property {InitFragment<ChunkRenderContext>[]=} chunkInitFragments
|
111
|
-
* @property {
|
112
|
-
* @property {Scope} globalScope
|
113
|
-
* @property {Scope} moduleScope
|
135
|
+
* @property {ReadOnlyRuntimeRequirements | undefined} runtimeRequirements
|
136
|
+
* @property {Scope | undefined} globalScope
|
137
|
+
* @property {Scope | undefined} moduleScope
|
114
138
|
* @property {Map<string, string>} internalNames
|
115
|
-
* @property {Map<string, string>} exportMap
|
116
|
-
* @property {Map<string, string>} rawExportMap
|
139
|
+
* @property {Map<string, string> | undefined} exportMap
|
140
|
+
* @property {Map<string, string> | undefined} rawExportMap
|
117
141
|
* @property {string=} namespaceExportSymbol
|
118
|
-
* @property {string} namespaceObjectName
|
142
|
+
* @property {string | undefined} namespaceObjectName
|
119
143
|
* @property {boolean} interopNamespaceObjectUsed
|
120
|
-
* @property {string} interopNamespaceObjectName
|
144
|
+
* @property {string | undefined} interopNamespaceObjectName
|
121
145
|
* @property {boolean} interopNamespaceObject2Used
|
122
|
-
* @property {string} interopNamespaceObject2Name
|
146
|
+
* @property {string | undefined} interopNamespaceObject2Name
|
123
147
|
* @property {boolean} interopDefaultAccessUsed
|
124
|
-
* @property {string} interopDefaultAccessName
|
148
|
+
* @property {string | undefined} interopDefaultAccessName
|
125
149
|
*/
|
126
150
|
|
127
151
|
/**
|
128
|
-
* @typedef {
|
152
|
+
* @typedef {object} ExternalModuleInfo
|
129
153
|
* @property {"external"} type
|
130
154
|
* @property {Module} module
|
131
155
|
* @property {RuntimeSpec | boolean} runtimeCondition
|
132
156
|
* @property {number} index
|
133
|
-
* @property {string} name
|
157
|
+
* @property {string | undefined} name
|
134
158
|
* @property {boolean} interopNamespaceObjectUsed
|
135
|
-
* @property {string} interopNamespaceObjectName
|
159
|
+
* @property {string | undefined} interopNamespaceObjectName
|
136
160
|
* @property {boolean} interopNamespaceObject2Used
|
137
|
-
* @property {string} interopNamespaceObject2Name
|
161
|
+
* @property {string | undefined} interopNamespaceObject2Name
|
138
162
|
* @property {boolean} interopDefaultAccessUsed
|
139
|
-
* @property {string} interopDefaultAccessName
|
163
|
+
* @property {string | undefined} interopDefaultAccessName
|
140
164
|
*/
|
141
165
|
|
142
166
|
/**
|
143
|
-
* @typedef {
|
167
|
+
* @typedef {object} ReferenceToModuleInfo
|
144
168
|
* @property {"reference"} type
|
145
169
|
* @property {RuntimeSpec | boolean} runtimeCondition
|
146
170
|
* @property {ConcatenatedModuleInfo | ExternalModuleInfo} target
|
147
171
|
*/
|
148
172
|
|
173
|
+
/** @typedef {Set<string>} UsedNames */
|
174
|
+
|
149
175
|
const RESERVED_NAMES = new Set(
|
150
176
|
[
|
151
177
|
// internal names (should always be renamed)
|
@@ -184,24 +210,45 @@ const RESERVED_NAMES = new Set(
|
|
184
210
|
.split(",")
|
185
211
|
);
|
186
212
|
|
187
|
-
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
|
213
|
+
/**
|
214
|
+
* @template T
|
215
|
+
* @param {string} property property
|
216
|
+
* @param {function(T[keyof T], T[keyof T]): 0 | 1 | -1} comparator comparator
|
217
|
+
* @returns {Comparator<T>} comparator
|
218
|
+
*/
|
219
|
+
const createComparator = (property, comparator) => (a, b) =>
|
220
|
+
comparator(
|
221
|
+
a[/** @type {keyof T} */ (property)],
|
222
|
+
b[/** @type {keyof T} */ (property)]
|
223
|
+
);
|
224
|
+
|
225
|
+
/**
|
226
|
+
* @param {number} a a
|
227
|
+
* @param {number} b b
|
228
|
+
* @returns {0 | 1 | -1} result
|
229
|
+
*/
|
230
|
+
const compareNumbers = (a, b) => {
|
231
|
+
if (Number.isNaN(a)) {
|
232
|
+
if (!Number.isNaN(b)) {
|
192
233
|
return 1;
|
193
234
|
}
|
194
235
|
} else {
|
195
|
-
if (isNaN(
|
236
|
+
if (Number.isNaN(b)) {
|
196
237
|
return -1;
|
197
238
|
}
|
198
|
-
if (
|
199
|
-
return
|
239
|
+
if (a !== b) {
|
240
|
+
return a < b ? -1 : 1;
|
200
241
|
}
|
201
242
|
}
|
202
243
|
return 0;
|
203
244
|
};
|
245
|
+
const bySourceOrder = createComparator("sourceOrder", compareNumbers);
|
246
|
+
const byRangeStart = createComparator("rangeStart", compareNumbers);
|
204
247
|
|
248
|
+
/**
|
249
|
+
* @param {Iterable<string>} iterable iterable object
|
250
|
+
* @returns {string} joined iterable object
|
251
|
+
*/
|
205
252
|
const joinIterableWithComma = iterable => {
|
206
253
|
// This is more performant than Array.from().join(", ")
|
207
254
|
// as it doesn't create an array
|
@@ -219,7 +266,7 @@ const joinIterableWithComma = iterable => {
|
|
219
266
|
};
|
220
267
|
|
221
268
|
/**
|
222
|
-
* @typedef {
|
269
|
+
* @typedef {object} ConcatenationEntry
|
223
270
|
* @property {"concatenated" | "external"} type
|
224
271
|
* @property {Module} module
|
225
272
|
* @property {RuntimeSpec | boolean} runtimeCondition
|
@@ -235,7 +282,7 @@ const joinIterableWithComma = iterable => {
|
|
235
282
|
* @param {RuntimeTemplate} runtimeTemplate the runtime template
|
236
283
|
* @param {Set<ConcatenatedModuleInfo>} neededNamespaceObjects modules for which a namespace object should be generated
|
237
284
|
* @param {boolean} asCall asCall
|
238
|
-
* @param {boolean} strictHarmonyModule strictHarmonyModule
|
285
|
+
* @param {boolean | undefined} strictHarmonyModule strictHarmonyModule
|
239
286
|
* @param {boolean | undefined} asiSafe asiSafe
|
240
287
|
* @param {Set<ExportInfo>} alreadyVisited alreadyVisited
|
241
288
|
* @returns {Binding} the final variable
|
@@ -264,7 +311,7 @@ const getFinalBinding = (
|
|
264
311
|
info.interopNamespaceObject2Used = true;
|
265
312
|
return {
|
266
313
|
info,
|
267
|
-
rawName: info.interopNamespaceObject2Name,
|
314
|
+
rawName: /** @type {string} */ (info.interopNamespaceObject2Name),
|
268
315
|
ids: exportName,
|
269
316
|
exportName
|
270
317
|
};
|
@@ -272,7 +319,7 @@ const getFinalBinding = (
|
|
272
319
|
info.interopNamespaceObjectUsed = true;
|
273
320
|
return {
|
274
321
|
info,
|
275
|
-
rawName: info.interopNamespaceObjectName,
|
322
|
+
rawName: /** @type {string} */ (info.interopNamespaceObjectName),
|
276
323
|
ids: exportName,
|
277
324
|
exportName
|
278
325
|
};
|
@@ -330,10 +377,10 @@ const getFinalBinding = (
|
|
330
377
|
const defaultExport = asCall
|
331
378
|
? `${info.interopDefaultAccessName}()`
|
332
379
|
: asiSafe
|
333
|
-
|
334
|
-
|
335
|
-
|
336
|
-
|
380
|
+
? `(${info.interopDefaultAccessName}())`
|
381
|
+
: asiSafe === false
|
382
|
+
? `;(${info.interopDefaultAccessName}())`
|
383
|
+
: `${info.interopDefaultAccessName}.a`;
|
337
384
|
return {
|
338
385
|
info,
|
339
386
|
rawName: defaultExport,
|
@@ -360,12 +407,21 @@ const getFinalBinding = (
|
|
360
407
|
neededNamespaceObjects.add(info);
|
361
408
|
return {
|
362
409
|
info,
|
363
|
-
rawName:
|
410
|
+
rawName:
|
411
|
+
/** @type {NonNullable<ConcatenatedModuleInfo["namespaceObjectName"]>} */
|
412
|
+
(info.namespaceObjectName),
|
364
413
|
ids: exportName,
|
365
414
|
exportName
|
366
415
|
};
|
367
416
|
case "external":
|
368
|
-
return {
|
417
|
+
return {
|
418
|
+
info,
|
419
|
+
rawName:
|
420
|
+
/** @type {NonNullable<ExternalModuleInfo["name"]>} */
|
421
|
+
(info.name),
|
422
|
+
ids: exportName,
|
423
|
+
exportName
|
424
|
+
};
|
369
425
|
}
|
370
426
|
}
|
371
427
|
const exportsInfo = moduleGraph.getExportsInfo(info.module);
|
@@ -387,7 +443,7 @@ const getFinalBinding = (
|
|
387
443
|
neededNamespaceObjects.add(info);
|
388
444
|
return {
|
389
445
|
info,
|
390
|
-
rawName: info.namespaceObjectName,
|
446
|
+
rawName: /** @type {string} */ (info.namespaceObjectName),
|
391
447
|
ids: exportName,
|
392
448
|
exportName
|
393
449
|
};
|
@@ -439,7 +495,7 @@ const getFinalBinding = (
|
|
439
495
|
const refInfo = moduleToInfoMap.get(reexport.module);
|
440
496
|
return getFinalBinding(
|
441
497
|
moduleGraph,
|
442
|
-
refInfo,
|
498
|
+
/** @type {ModuleInfo} */ (refInfo),
|
443
499
|
reexport.export
|
444
500
|
? [...reexport.export, ...exportName.slice(1)]
|
445
501
|
: exportName.slice(1),
|
@@ -449,7 +505,8 @@ const getFinalBinding = (
|
|
449
505
|
runtimeTemplate,
|
450
506
|
neededNamespaceObjects,
|
451
507
|
asCall,
|
452
|
-
|
508
|
+
/** @type {BuildMeta} */
|
509
|
+
(info.module.buildMeta).strictHarmonyModule,
|
453
510
|
asiSafe,
|
454
511
|
alreadyVisited
|
455
512
|
);
|
@@ -460,7 +517,7 @@ const getFinalBinding = (
|
|
460
517
|
);
|
461
518
|
return {
|
462
519
|
info,
|
463
|
-
rawName: info.namespaceObjectName,
|
520
|
+
rawName: /** @type {string} */ (info.namespaceObjectName),
|
464
521
|
ids: usedName,
|
465
522
|
exportName
|
466
523
|
};
|
@@ -502,8 +559,8 @@ const getFinalBinding = (
|
|
502
559
|
* @param {RuntimeTemplate} runtimeTemplate the runtime template
|
503
560
|
* @param {Set<ConcatenatedModuleInfo>} neededNamespaceObjects modules for which a namespace object should be generated
|
504
561
|
* @param {boolean} asCall asCall
|
505
|
-
* @param {boolean} callContext callContext
|
506
|
-
* @param {boolean} strictHarmonyModule strictHarmonyModule
|
562
|
+
* @param {boolean | undefined} callContext callContext
|
563
|
+
* @param {boolean | undefined} strictHarmonyModule strictHarmonyModule
|
507
564
|
* @param {boolean | undefined} asiSafe asiSafe
|
508
565
|
* @returns {string} the final name
|
509
566
|
*/
|
@@ -563,13 +620,19 @@ const getFinalName = (
|
|
563
620
|
return asiSafe
|
564
621
|
? `(0,${reference})`
|
565
622
|
: asiSafe === false
|
566
|
-
|
567
|
-
|
623
|
+
? `;(0,${reference})`
|
624
|
+
: `/*#__PURE__*/Object(${reference})`;
|
568
625
|
}
|
569
626
|
return reference;
|
570
627
|
}
|
571
628
|
};
|
572
629
|
|
630
|
+
/**
|
631
|
+
* @param {Scope | null} s scope
|
632
|
+
* @param {UsedNames} nameSet name set
|
633
|
+
* @param {TODO} scopeSet1 scope set 1
|
634
|
+
* @param {TODO} scopeSet2 scope set 2
|
635
|
+
*/
|
573
636
|
const addScopeSymbols = (s, nameSet, scopeSet1, scopeSet2) => {
|
574
637
|
let scope = s;
|
575
638
|
while (scope) {
|
@@ -583,71 +646,23 @@ const addScopeSymbols = (s, nameSet, scopeSet1, scopeSet2) => {
|
|
583
646
|
}
|
584
647
|
};
|
585
648
|
|
586
|
-
const
|
587
|
-
let set = variable.references;
|
588
|
-
// Look for inner scope variables too (like in class Foo { t() { Foo } })
|
589
|
-
const identifiers = new Set(variable.identifiers);
|
590
|
-
for (const scope of variable.scope.childScopes) {
|
591
|
-
for (const innerVar of scope.variables) {
|
592
|
-
if (innerVar.identifiers.some(id => identifiers.has(id))) {
|
593
|
-
set = set.concat(innerVar.references);
|
594
|
-
break;
|
595
|
-
}
|
596
|
-
}
|
597
|
-
}
|
598
|
-
return set;
|
599
|
-
};
|
600
|
-
|
601
|
-
const getPathInAst = (ast, node) => {
|
602
|
-
if (ast === node) {
|
603
|
-
return [];
|
604
|
-
}
|
605
|
-
|
606
|
-
const nr = node.range;
|
607
|
-
|
608
|
-
const enterNode = n => {
|
609
|
-
if (!n) return undefined;
|
610
|
-
const r = n.range;
|
611
|
-
if (r) {
|
612
|
-
if (r[0] <= nr[0] && r[1] >= nr[1]) {
|
613
|
-
const path = getPathInAst(n, node);
|
614
|
-
if (path) {
|
615
|
-
path.push(n);
|
616
|
-
return path;
|
617
|
-
}
|
618
|
-
}
|
619
|
-
}
|
620
|
-
return undefined;
|
621
|
-
};
|
649
|
+
const TYPES = new Set(["javascript"]);
|
622
650
|
|
623
|
-
|
624
|
-
|
625
|
-
|
626
|
-
|
627
|
-
}
|
628
|
-
} else if (ast && typeof ast === "object") {
|
629
|
-
const keys = Object.keys(ast);
|
630
|
-
for (let i = 0; i < keys.length; i++) {
|
631
|
-
const value = ast[keys[i]];
|
632
|
-
if (Array.isArray(value)) {
|
633
|
-
const pathResult = getPathInAst(value, node);
|
634
|
-
if (pathResult !== undefined) return pathResult;
|
635
|
-
} else if (value && typeof value === "object") {
|
636
|
-
const enterResult = enterNode(value);
|
637
|
-
if (enterResult !== undefined) return enterResult;
|
638
|
-
}
|
639
|
-
}
|
640
|
-
}
|
641
|
-
};
|
651
|
+
/**
|
652
|
+
* @typedef {object} ConcatenateModuleHooks
|
653
|
+
* @property {SyncBailHook<[Record<string, string>], boolean>} exportsDefinitions
|
654
|
+
*/
|
642
655
|
|
643
|
-
|
656
|
+
/** @type {WeakMap<Compilation, ConcatenateModuleHooks>} */
|
657
|
+
const compilationHooksMap = new WeakMap();
|
644
658
|
|
645
659
|
class ConcatenatedModule extends Module {
|
646
660
|
/**
|
647
661
|
* @param {Module} rootModule the root module of the concatenation
|
648
662
|
* @param {Set<Module>} modules all modules in the concatenation (including the root module)
|
649
663
|
* @param {RuntimeSpec} runtime the runtime
|
650
|
-
* @param {
|
664
|
+
* @param {Compilation} compilation the compilation
|
665
|
+
* @param {object=} associatedObjectForCache object for caching
|
651
666
|
* @param {string | HashConstructor=} hashFunction hash function to use
|
652
667
|
* @returns {ConcatenatedModule} the module
|
653
668
|
*/
|
@@ -655,6 +670,7 @@ class ConcatenatedModule extends Module {
|
|
655
670
|
rootModule,
|
656
671
|
modules,
|
657
672
|
runtime,
|
673
|
+
compilation,
|
658
674
|
associatedObjectForCache,
|
659
675
|
hashFunction = "md4"
|
660
676
|
) {
|
@@ -668,19 +684,36 @@ class ConcatenatedModule extends Module {
|
|
668
684
|
identifier,
|
669
685
|
rootModule,
|
670
686
|
modules,
|
671
|
-
runtime
|
687
|
+
runtime,
|
688
|
+
compilation
|
672
689
|
});
|
673
690
|
}
|
674
691
|
|
675
692
|
/**
|
676
|
-
* @param {
|
693
|
+
* @param {Compilation} compilation the compilation
|
694
|
+
* @returns {ConcatenateModuleHooks} the attached hooks
|
695
|
+
*/
|
696
|
+
static getCompilationHooks(compilation) {
|
697
|
+
let hooks = compilationHooksMap.get(compilation);
|
698
|
+
if (hooks === undefined) {
|
699
|
+
hooks = {
|
700
|
+
exportsDefinitions: new SyncBailHook(["definitions"])
|
701
|
+
};
|
702
|
+
compilationHooksMap.set(compilation, hooks);
|
703
|
+
}
|
704
|
+
return hooks;
|
705
|
+
}
|
706
|
+
|
707
|
+
/**
|
708
|
+
* @param {object} options options
|
677
709
|
* @param {string} options.identifier the identifier of the module
|
678
710
|
* @param {Module=} options.rootModule the root module of the concatenation
|
679
711
|
* @param {RuntimeSpec} options.runtime the selected runtime
|
680
712
|
* @param {Set<Module>=} options.modules all concatenated modules
|
713
|
+
* @param {Compilation} options.compilation the compilation
|
681
714
|
*/
|
682
|
-
constructor({ identifier, rootModule, modules, runtime }) {
|
683
|
-
super(
|
715
|
+
constructor({ identifier, rootModule, modules, runtime, compilation }) {
|
716
|
+
super(JAVASCRIPT_MODULE_TYPE_ESM, null, rootModule && rootModule.layer);
|
684
717
|
|
685
718
|
// Info from Factory
|
686
719
|
/** @type {string} */
|
@@ -691,6 +724,8 @@ class ConcatenatedModule extends Module {
|
|
691
724
|
this._modules = modules;
|
692
725
|
this._runtime = runtime;
|
693
726
|
this.factoryMeta = rootModule && rootModule.factoryMeta;
|
727
|
+
/** @type {Compilation | undefined} */
|
728
|
+
this.compilation = compilation;
|
694
729
|
}
|
695
730
|
|
696
731
|
/**
|
@@ -705,7 +740,7 @@ class ConcatenatedModule extends Module {
|
|
705
740
|
}
|
706
741
|
|
707
742
|
/**
|
708
|
-
* @returns {
|
743
|
+
* @returns {SourceTypes} types available (do not mutate)
|
709
744
|
*/
|
710
745
|
getSourceTypes() {
|
711
746
|
return TYPES;
|
@@ -727,10 +762,9 @@ class ConcatenatedModule extends Module {
|
|
727
762
|
* @returns {string} a user readable identifier of the module
|
728
763
|
*/
|
729
764
|
readableIdentifier(requestShortener) {
|
730
|
-
return (
|
731
|
-
|
732
|
-
|
733
|
-
);
|
765
|
+
return `${this.rootModule.readableIdentifier(
|
766
|
+
requestShortener
|
767
|
+
)} + ${this._modules.size - 1} modules`;
|
734
768
|
}
|
735
769
|
|
736
770
|
/**
|
@@ -766,11 +800,14 @@ class ConcatenatedModule extends Module {
|
|
766
800
|
*/
|
767
801
|
build(options, compilation, resolver, fs, callback) {
|
768
802
|
const { rootModule } = this;
|
803
|
+
const { moduleArgument, exportsArgument } =
|
804
|
+
/** @type {BuildInfo} */
|
805
|
+
(rootModule.buildInfo);
|
769
806
|
this.buildInfo = {
|
770
807
|
strict: true,
|
771
808
|
cacheable: true,
|
772
|
-
moduleArgument
|
773
|
-
exportsArgument
|
809
|
+
moduleArgument,
|
810
|
+
exportsArgument,
|
774
811
|
fileDependencies: new LazySet(),
|
775
812
|
contextDependencies: new LazySet(),
|
776
813
|
missingDependencies: new LazySet(),
|
@@ -783,7 +820,7 @@ class ConcatenatedModule extends Module {
|
|
783
820
|
|
784
821
|
for (const m of this._modules) {
|
785
822
|
// populate cacheable
|
786
|
-
if (!m.buildInfo.cacheable) {
|
823
|
+
if (!(/** @type {BuildInfo} */ (m.buildInfo).cacheable)) {
|
787
824
|
this.buildInfo.cacheable = false;
|
788
825
|
}
|
789
826
|
|
@@ -791,7 +828,9 @@ class ConcatenatedModule extends Module {
|
|
791
828
|
for (const d of m.dependencies.filter(
|
792
829
|
dep =>
|
793
830
|
!(dep instanceof HarmonyImportDependency) ||
|
794
|
-
!this._modules.has(
|
831
|
+
!this._modules.has(
|
832
|
+
/** @type {Module} */ (compilation.moduleGraph.getModule(dep))
|
833
|
+
)
|
795
834
|
)) {
|
796
835
|
this.dependencies.push(d);
|
797
836
|
}
|
@@ -816,15 +855,14 @@ class ConcatenatedModule extends Module {
|
|
816
855
|
}
|
817
856
|
}
|
818
857
|
|
858
|
+
const { assets, assetsInfo, topLevelDeclarations } =
|
859
|
+
/** @type {BuildInfo} */ (m.buildInfo);
|
860
|
+
|
819
861
|
// populate topLevelDeclarations
|
820
|
-
if (
|
862
|
+
if (topLevelDeclarations) {
|
821
863
|
const topLevelDeclarations = this.buildInfo.topLevelDeclarations;
|
822
864
|
if (topLevelDeclarations !== undefined) {
|
823
|
-
for (const decl of
|
824
|
-
// reserved names will always be renamed
|
825
|
-
if (RESERVED_NAMES.has(decl)) continue;
|
826
|
-
// TODO actually this is incorrect since with renaming there could be more
|
827
|
-
// We should do the renaming during build
|
865
|
+
for (const decl of topLevelDeclarations) {
|
828
866
|
topLevelDeclarations.add(decl);
|
829
867
|
}
|
830
868
|
}
|
@@ -833,17 +871,24 @@ class ConcatenatedModule extends Module {
|
|
833
871
|
}
|
834
872
|
|
835
873
|
// populate assets
|
836
|
-
if (
|
874
|
+
if (assets) {
|
837
875
|
if (this.buildInfo.assets === undefined) {
|
838
876
|
this.buildInfo.assets = Object.create(null);
|
839
877
|
}
|
840
|
-
Object.assign(
|
878
|
+
Object.assign(
|
879
|
+
/** @type {NonNullable<BuildInfo["assets"]>} */
|
880
|
+
(
|
881
|
+
/** @type {BuildInfo} */
|
882
|
+
(this.buildInfo).assets
|
883
|
+
),
|
884
|
+
assets
|
885
|
+
);
|
841
886
|
}
|
842
|
-
if (
|
887
|
+
if (assetsInfo) {
|
843
888
|
if (this.buildInfo.assetsInfo === undefined) {
|
844
889
|
this.buildInfo.assetsInfo = new Map();
|
845
890
|
}
|
846
|
-
for (const [key, value] of
|
891
|
+
for (const [key, value] of assetsInfo) {
|
847
892
|
this.buildInfo.assetsInfo.set(key, value);
|
848
893
|
}
|
849
894
|
}
|
@@ -883,11 +928,16 @@ class ConcatenatedModule extends Module {
|
|
883
928
|
* @returns {Iterable<{ connection: ModuleGraphConnection, runtimeCondition: RuntimeSpec | true }>} imported modules in order
|
884
929
|
*/
|
885
930
|
const getConcatenatedImports = module => {
|
886
|
-
|
931
|
+
const connections = Array.from(
|
932
|
+
moduleGraph.getOutgoingConnections(module)
|
933
|
+
);
|
887
934
|
if (module === rootModule) {
|
888
935
|
for (const c of moduleGraph.getOutgoingConnections(this))
|
889
936
|
connections.push(c);
|
890
937
|
}
|
938
|
+
/**
|
939
|
+
* @type {Array<{ connection: ModuleGraphConnection, sourceOrder: number, rangeStart: number }>}
|
940
|
+
*/
|
891
941
|
const references = connections
|
892
942
|
.filter(connection => {
|
893
943
|
if (!(connection.dependency instanceof HarmonyImportDependency))
|
@@ -899,15 +949,33 @@ class ConcatenatedModule extends Module {
|
|
899
949
|
connection.isTargetActive(runtime)
|
900
950
|
);
|
901
951
|
})
|
902
|
-
.map(connection =>
|
903
|
-
|
904
|
-
sourceOrder: /** @type {HarmonyImportDependency} */ (
|
952
|
+
.map(connection => {
|
953
|
+
const dep = /** @type {HarmonyImportDependency} */ (
|
905
954
|
connection.dependency
|
906
|
-
)
|
907
|
-
|
908
|
-
|
909
|
-
|
910
|
-
|
955
|
+
);
|
956
|
+
return {
|
957
|
+
connection,
|
958
|
+
sourceOrder: dep.sourceOrder,
|
959
|
+
rangeStart: dep.range && dep.range[0]
|
960
|
+
};
|
961
|
+
});
|
962
|
+
/**
|
963
|
+
* bySourceOrder
|
964
|
+
* @example
|
965
|
+
* import a from "a"; // sourceOrder=1
|
966
|
+
* import b from "b"; // sourceOrder=2
|
967
|
+
*
|
968
|
+
* byRangeStart
|
969
|
+
* @example
|
970
|
+
* import {a, b} from "a"; // sourceOrder=1
|
971
|
+
* a.a(); // first range
|
972
|
+
* b.b(); // second range
|
973
|
+
*
|
974
|
+
* If there is no reexport, we have the same source.
|
975
|
+
* If there is reexport, but module has side effects, this will lead to reexport module only.
|
976
|
+
* If there is side-effects-free reexport, we can get simple deterministic result with range start comparison.
|
977
|
+
*/
|
978
|
+
references.sort(concatComparators(bySourceOrder, byRangeStart));
|
911
979
|
/** @type {Map<Module, { connection: ModuleGraphConnection, runtimeCondition: RuntimeSpec | true }>} */
|
912
980
|
const referencesMap = new Map();
|
913
981
|
for (const { connection } of references) {
|
@@ -1022,7 +1090,7 @@ class ConcatenatedModule extends Module {
|
|
1022
1090
|
/**
|
1023
1091
|
* @param {Module} rootModule the root module of the concatenation
|
1024
1092
|
* @param {Set<Module>} modules all modules in the concatenation (including the root module)
|
1025
|
-
* @param {
|
1093
|
+
* @param {object=} associatedObjectForCache object for caching
|
1026
1094
|
* @param {string | HashConstructor=} hashFunction hash function to use
|
1027
1095
|
* @returns {string} the identifier
|
1028
1096
|
*/
|
@@ -1033,17 +1101,17 @@ class ConcatenatedModule extends Module {
|
|
1033
1101
|
hashFunction = "md4"
|
1034
1102
|
) {
|
1035
1103
|
const cachedMakePathsRelative = makePathsRelative.bindContextCache(
|
1036
|
-
rootModule.context,
|
1104
|
+
/** @type {string} */ (rootModule.context),
|
1037
1105
|
associatedObjectForCache
|
1038
1106
|
);
|
1039
|
-
|
1107
|
+
const identifiers = [];
|
1040
1108
|
for (const module of modules) {
|
1041
1109
|
identifiers.push(cachedMakePathsRelative(module.identifier()));
|
1042
1110
|
}
|
1043
1111
|
identifiers.sort();
|
1044
1112
|
const hash = createHash(hashFunction);
|
1045
1113
|
hash.update(identifiers.join(" "));
|
1046
|
-
return rootModule.identifier()
|
1114
|
+
return `${rootModule.identifier()}|${hash.digest("hex")}`;
|
1047
1115
|
}
|
1048
1116
|
|
1049
1117
|
/**
|
@@ -1077,7 +1145,8 @@ class ConcatenatedModule extends Module {
|
|
1077
1145
|
runtimeTemplate,
|
1078
1146
|
moduleGraph,
|
1079
1147
|
chunkGraph,
|
1080
|
-
runtime: generationRuntime
|
1148
|
+
runtime: generationRuntime,
|
1149
|
+
codeGenerationResults
|
1081
1150
|
}) {
|
1082
1151
|
/** @type {Set<string>} */
|
1083
1152
|
const runtimeRequirements = new Set();
|
@@ -1104,20 +1173,23 @@ class ConcatenatedModule extends Module {
|
|
1104
1173
|
runtimeTemplate,
|
1105
1174
|
moduleGraph,
|
1106
1175
|
chunkGraph,
|
1107
|
-
runtime
|
1176
|
+
runtime,
|
1177
|
+
codeGenerationResults
|
1108
1178
|
);
|
1109
1179
|
}
|
1110
1180
|
|
1111
1181
|
// List of all used names to avoid conflicts
|
1112
1182
|
const allUsedNames = new Set(RESERVED_NAMES);
|
1183
|
+
// Updated Top level declarations are created by renaming
|
1184
|
+
const topLevelDeclarations = new Set();
|
1113
1185
|
|
1114
1186
|
// List of additional names in scope for module references
|
1115
|
-
/** @type {Map<string, { usedNames:
|
1187
|
+
/** @type {Map<string, { usedNames: UsedNames, alreadyCheckedScopes: Set<TODO> }>} */
|
1116
1188
|
const usedNamesInScopeInfo = new Map();
|
1117
1189
|
/**
|
1118
1190
|
* @param {string} module module identifier
|
1119
1191
|
* @param {string} id export id
|
1120
|
-
* @returns {{ usedNames:
|
1192
|
+
* @returns {{ usedNames: UsedNames, alreadyCheckedScopes: Set<TODO> }} info
|
1121
1193
|
*/
|
1122
1194
|
const getUsedNamesInScopeInfo = (module, id) => {
|
1123
1195
|
const key = `${module}-${id}`;
|
@@ -1147,6 +1219,10 @@ class ConcatenatedModule extends Module {
|
|
1147
1219
|
// We get ranges of all super class expressions to make
|
1148
1220
|
// renaming to work correctly
|
1149
1221
|
const superClassCache = new WeakMap();
|
1222
|
+
/**
|
1223
|
+
* @param {Scope} scope scope
|
1224
|
+
* @returns {TODO} result
|
1225
|
+
*/
|
1150
1226
|
const getSuperClassExpressions = scope => {
|
1151
1227
|
const cacheEntry = superClassCache.get(scope);
|
1152
1228
|
if (cacheEntry !== undefined) return cacheEntry;
|
@@ -1189,7 +1265,8 @@ class ConcatenatedModule extends Module {
|
|
1189
1265
|
runtimeTemplate,
|
1190
1266
|
neededNamespaceObjects,
|
1191
1267
|
false,
|
1192
|
-
|
1268
|
+
/** @type {BuildMeta} */
|
1269
|
+
(info.module.buildMeta).strictHarmonyModule,
|
1193
1270
|
true
|
1194
1271
|
);
|
1195
1272
|
if (!binding.ids) continue;
|
@@ -1200,8 +1277,10 @@ class ConcatenatedModule extends Module {
|
|
1200
1277
|
);
|
1201
1278
|
for (const expr of getSuperClassExpressions(reference.from)) {
|
1202
1279
|
if (
|
1203
|
-
expr.range[0] <=
|
1204
|
-
|
1280
|
+
expr.range[0] <=
|
1281
|
+
/** @type {Range} */ (reference.identifier.range)[0] &&
|
1282
|
+
expr.range[1] >=
|
1283
|
+
/** @type {Range} */ (reference.identifier.range)[1]
|
1205
1284
|
) {
|
1206
1285
|
for (const variable of expr.variables) {
|
1207
1286
|
usedNames.add(variable.name);
|
@@ -1254,13 +1333,18 @@ class ConcatenatedModule extends Module {
|
|
1254
1333
|
);
|
1255
1334
|
allUsedNames.add(newName);
|
1256
1335
|
info.internalNames.set(name, newName);
|
1336
|
+
topLevelDeclarations.add(newName);
|
1257
1337
|
const source = info.source;
|
1258
1338
|
const allIdentifiers = new Set(
|
1259
1339
|
references.map(r => r.identifier).concat(variable.identifiers)
|
1260
1340
|
);
|
1261
1341
|
for (const identifier of allIdentifiers) {
|
1262
|
-
const r = identifier.range;
|
1263
|
-
const path = getPathInAst(
|
1342
|
+
const r = /** @type {Range} */ (identifier.range);
|
1343
|
+
const path = getPathInAst(
|
1344
|
+
/** @type {NonNullable<ConcatenatedModuleInfo["ast"]>} */
|
1345
|
+
(info.ast),
|
1346
|
+
identifier
|
1347
|
+
);
|
1264
1348
|
if (path && path.length > 1) {
|
1265
1349
|
const maybeProperty =
|
1266
1350
|
path[1].type === "AssignmentPattern" &&
|
@@ -1280,6 +1364,7 @@ class ConcatenatedModule extends Module {
|
|
1280
1364
|
} else {
|
1281
1365
|
allUsedNames.add(name);
|
1282
1366
|
info.internalNames.set(name, name);
|
1367
|
+
topLevelDeclarations.add(name);
|
1283
1368
|
}
|
1284
1369
|
}
|
1285
1370
|
let namespaceObjectName;
|
@@ -1296,7 +1381,10 @@ class ConcatenatedModule extends Module {
|
|
1296
1381
|
);
|
1297
1382
|
allUsedNames.add(namespaceObjectName);
|
1298
1383
|
}
|
1299
|
-
info.namespaceObjectName =
|
1384
|
+
info.namespaceObjectName =
|
1385
|
+
/** @type {string} */
|
1386
|
+
(namespaceObjectName);
|
1387
|
+
topLevelDeclarations.add(namespaceObjectName);
|
1300
1388
|
break;
|
1301
1389
|
}
|
1302
1390
|
case "external": {
|
@@ -1308,10 +1396,12 @@ class ConcatenatedModule extends Module {
|
|
1308
1396
|
);
|
1309
1397
|
allUsedNames.add(externalName);
|
1310
1398
|
info.name = externalName;
|
1399
|
+
topLevelDeclarations.add(externalName);
|
1311
1400
|
break;
|
1312
1401
|
}
|
1313
1402
|
}
|
1314
|
-
|
1403
|
+
const buildMeta = /** @type {BuildMeta} */ (info.module.buildMeta);
|
1404
|
+
if (buildMeta.exportsType !== "namespace") {
|
1315
1405
|
const externalNameInterop = this.findNewName(
|
1316
1406
|
"namespaceObject",
|
1317
1407
|
allUsedNames,
|
@@ -1320,10 +1410,11 @@ class ConcatenatedModule extends Module {
|
|
1320
1410
|
);
|
1321
1411
|
allUsedNames.add(externalNameInterop);
|
1322
1412
|
info.interopNamespaceObjectName = externalNameInterop;
|
1413
|
+
topLevelDeclarations.add(externalNameInterop);
|
1323
1414
|
}
|
1324
1415
|
if (
|
1325
|
-
|
1326
|
-
|
1416
|
+
buildMeta.exportsType === "default" &&
|
1417
|
+
buildMeta.defaultObject !== "redirect"
|
1327
1418
|
) {
|
1328
1419
|
const externalNameInterop = this.findNewName(
|
1329
1420
|
"namespaceObject2",
|
@@ -1333,11 +1424,9 @@ class ConcatenatedModule extends Module {
|
|
1333
1424
|
);
|
1334
1425
|
allUsedNames.add(externalNameInterop);
|
1335
1426
|
info.interopNamespaceObject2Name = externalNameInterop;
|
1427
|
+
topLevelDeclarations.add(externalNameInterop);
|
1336
1428
|
}
|
1337
|
-
if (
|
1338
|
-
info.module.buildMeta.exportsType === "dynamic" ||
|
1339
|
-
!info.module.buildMeta.exportsType
|
1340
|
-
) {
|
1429
|
+
if (buildMeta.exportsType === "dynamic" || !buildMeta.exportsType) {
|
1341
1430
|
const externalNameInterop = this.findNewName(
|
1342
1431
|
"default",
|
1343
1432
|
allUsedNames,
|
@@ -1346,13 +1435,15 @@ class ConcatenatedModule extends Module {
|
|
1346
1435
|
);
|
1347
1436
|
allUsedNames.add(externalNameInterop);
|
1348
1437
|
info.interopDefaultAccessName = externalNameInterop;
|
1438
|
+
topLevelDeclarations.add(externalNameInterop);
|
1349
1439
|
}
|
1350
1440
|
}
|
1351
1441
|
|
1352
1442
|
// Find and replace references to modules
|
1353
1443
|
for (const info of moduleToInfoMap.values()) {
|
1354
1444
|
if (info.type === "concatenated") {
|
1355
|
-
|
1445
|
+
const globalScope = /** @type {Scope} */ (info.globalScope);
|
1446
|
+
for (const reference of globalScope.through) {
|
1356
1447
|
const name = reference.identifier.name;
|
1357
1448
|
const match = ConcatenationScope.matchModuleReference(name);
|
1358
1449
|
if (match) {
|
@@ -1370,10 +1461,11 @@ class ConcatenatedModule extends Module {
|
|
1370
1461
|
neededNamespaceObjects,
|
1371
1462
|
match.call,
|
1372
1463
|
!match.directImport,
|
1373
|
-
|
1464
|
+
/** @type {BuildMeta} */
|
1465
|
+
(info.module.buildMeta).strictHarmonyModule,
|
1374
1466
|
match.asiSafe
|
1375
1467
|
);
|
1376
|
-
const r = reference.identifier.range;
|
1468
|
+
const r = /** @type {Range} */ (reference.identifier.range);
|
1377
1469
|
const source = info.source;
|
1378
1470
|
// range is extended by 2 chars to cover the appended "._"
|
1379
1471
|
source.replace(r[0], r[1] + 1, finalName);
|
@@ -1393,8 +1485,12 @@ class ConcatenatedModule extends Module {
|
|
1393
1485
|
const rootInfo = /** @type {ConcatenatedModuleInfo} */ (
|
1394
1486
|
moduleToInfoMap.get(this.rootModule)
|
1395
1487
|
);
|
1396
|
-
const strictHarmonyModule =
|
1488
|
+
const strictHarmonyModule =
|
1489
|
+
/** @type {BuildMeta} */
|
1490
|
+
(rootInfo.module.buildMeta).strictHarmonyModule;
|
1397
1491
|
const exportsInfo = moduleGraph.getExportsInfo(rootInfo.module);
|
1492
|
+
/** @type {Record<string, string>} */
|
1493
|
+
const exportsFinalName = {};
|
1398
1494
|
for (const exportInfo of exportsInfo.orderedExports) {
|
1399
1495
|
const name = exportInfo.name;
|
1400
1496
|
if (exportInfo.provided === false) continue;
|
@@ -1419,12 +1515,15 @@ class ConcatenatedModule extends Module {
|
|
1419
1515
|
strictHarmonyModule,
|
1420
1516
|
true
|
1421
1517
|
);
|
1518
|
+
exportsFinalName[used] = finalName;
|
1422
1519
|
return `/* ${
|
1423
1520
|
exportInfo.isReexport() ? "reexport" : "binding"
|
1424
1521
|
} */ ${finalName}`;
|
1425
|
-
} catch (
|
1426
|
-
|
1427
|
-
|
1522
|
+
} catch (err) {
|
1523
|
+
/** @type {Error} */
|
1524
|
+
(err).message +=
|
1525
|
+
`\nwhile generating the root export '${name}' (used name: '${used}')`;
|
1526
|
+
throw err;
|
1428
1527
|
}
|
1429
1528
|
});
|
1430
1529
|
}
|
@@ -1432,37 +1531,55 @@ class ConcatenatedModule extends Module {
|
|
1432
1531
|
const result = new ConcatSource();
|
1433
1532
|
|
1434
1533
|
// add harmony compatibility flag (must be first because of possible circular dependencies)
|
1534
|
+
let shouldAddHarmonyFlag = false;
|
1435
1535
|
if (
|
1436
1536
|
moduleGraph.getExportsInfo(this).otherExportsInfo.getUsed(runtime) !==
|
1437
1537
|
UsageState.Unused
|
1438
1538
|
) {
|
1439
|
-
|
1440
|
-
result.add(
|
1441
|
-
runtimeTemplate.defineEsModuleFlagStatement({
|
1442
|
-
exportsArgument: this.exportsArgument,
|
1443
|
-
runtimeRequirements
|
1444
|
-
})
|
1445
|
-
);
|
1539
|
+
shouldAddHarmonyFlag = true;
|
1446
1540
|
}
|
1447
1541
|
|
1448
1542
|
// define exports
|
1449
1543
|
if (exportsMap.size > 0) {
|
1450
|
-
|
1451
|
-
|
1544
|
+
const { exportsDefinitions } = ConcatenatedModule.getCompilationHooks(
|
1545
|
+
/** @type {Compilation} */ (this.compilation)
|
1546
|
+
);
|
1547
|
+
|
1452
1548
|
const definitions = [];
|
1453
1549
|
for (const [key, value] of exportsMap) {
|
1454
1550
|
definitions.push(
|
1455
|
-
`\n ${
|
1551
|
+
`\n ${propertyName(key)}: ${runtimeTemplate.returningFunction(
|
1456
1552
|
value(requestShortener)
|
1457
1553
|
)}`
|
1458
1554
|
);
|
1459
1555
|
}
|
1460
|
-
|
1461
|
-
|
1462
|
-
|
1463
|
-
|
1464
|
-
|
1465
|
-
|
1556
|
+
const shouldSkipRenderDefinitions =
|
1557
|
+
exportsDefinitions.call(exportsFinalName);
|
1558
|
+
|
1559
|
+
if (!shouldSkipRenderDefinitions) {
|
1560
|
+
runtimeRequirements.add(RuntimeGlobals.exports);
|
1561
|
+
runtimeRequirements.add(RuntimeGlobals.definePropertyGetters);
|
1562
|
+
|
1563
|
+
if (shouldAddHarmonyFlag) {
|
1564
|
+
result.add("// ESM COMPAT FLAG\n");
|
1565
|
+
result.add(
|
1566
|
+
runtimeTemplate.defineEsModuleFlagStatement({
|
1567
|
+
exportsArgument: this.exportsArgument,
|
1568
|
+
runtimeRequirements
|
1569
|
+
})
|
1570
|
+
);
|
1571
|
+
}
|
1572
|
+
|
1573
|
+
result.add("\n// EXPORTS\n");
|
1574
|
+
result.add(
|
1575
|
+
`${RuntimeGlobals.definePropertyGetters}(${
|
1576
|
+
this.exportsArgument
|
1577
|
+
}, {${definitions.join(",")}\n});\n`
|
1578
|
+
);
|
1579
|
+
} else {
|
1580
|
+
/** @type {BuildMeta} */
|
1581
|
+
(this.buildMeta).exportsFinalName = exportsFinalName;
|
1582
|
+
}
|
1466
1583
|
}
|
1467
1584
|
|
1468
1585
|
// list unused exports
|
@@ -1493,13 +1610,14 @@ class ConcatenatedModule extends Module {
|
|
1493
1610
|
neededNamespaceObjects,
|
1494
1611
|
false,
|
1495
1612
|
undefined,
|
1496
|
-
|
1613
|
+
/** @type {BuildMeta} */
|
1614
|
+
(info.module.buildMeta).strictHarmonyModule,
|
1497
1615
|
true
|
1498
1616
|
);
|
1499
1617
|
nsObj.push(
|
1500
|
-
`\n ${
|
1501
|
-
|
1502
|
-
)}
|
1618
|
+
`\n ${propertyName(usedName)}: ${runtimeTemplate.returningFunction(
|
1619
|
+
finalName
|
1620
|
+
)}`
|
1503
1621
|
);
|
1504
1622
|
}
|
1505
1623
|
}
|
@@ -1508,7 +1626,7 @@ class ConcatenatedModule extends Module {
|
|
1508
1626
|
nsObj.length > 0
|
1509
1627
|
? `${RuntimeGlobals.definePropertyGetters}(${name}, {${nsObj.join(
|
1510
1628
|
","
|
1511
|
-
|
1629
|
+
)}\n});\n`
|
1512
1630
|
: "";
|
1513
1631
|
if (nsObj.length > 0)
|
1514
1632
|
runtimeRequirements.add(RuntimeGlobals.definePropertyGetters);
|
@@ -1578,7 +1696,7 @@ ${defineGetters}`
|
|
1578
1696
|
result.add(`if (${condition}) {\n`);
|
1579
1697
|
}
|
1580
1698
|
result.add(
|
1581
|
-
`var ${info.name} =
|
1699
|
+
`var ${info.name} = ${RuntimeGlobals.require}(${JSON.stringify(
|
1582
1700
|
chunkGraph.getModuleId(info.module)
|
1583
1701
|
)});`
|
1584
1702
|
);
|
@@ -1615,6 +1733,7 @@ ${defineGetters}`
|
|
1615
1733
|
const data = new Map();
|
1616
1734
|
if (chunkInitFragments.length > 0)
|
1617
1735
|
data.set("chunkInitFragments", chunkInitFragments);
|
1736
|
+
data.set("topLevelDeclarations", topLevelDeclarations);
|
1618
1737
|
|
1619
1738
|
/** @type {CodeGenerationResult} */
|
1620
1739
|
const resultEntry = {
|
@@ -1634,6 +1753,7 @@ ${defineGetters}`
|
|
1634
1753
|
* @param {ModuleGraph} moduleGraph moduleGraph
|
1635
1754
|
* @param {ChunkGraph} chunkGraph chunkGraph
|
1636
1755
|
* @param {RuntimeSpec} runtime runtime
|
1756
|
+
* @param {CodeGenerationResults} codeGenerationResults codeGenerationResults
|
1637
1757
|
*/
|
1638
1758
|
_analyseModule(
|
1639
1759
|
modulesMap,
|
@@ -1642,7 +1762,8 @@ ${defineGetters}`
|
|
1642
1762
|
runtimeTemplate,
|
1643
1763
|
moduleGraph,
|
1644
1764
|
chunkGraph,
|
1645
|
-
runtime
|
1765
|
+
runtime,
|
1766
|
+
codeGenerationResults
|
1646
1767
|
) {
|
1647
1768
|
if (info.type === "concatenated") {
|
1648
1769
|
const m = info.module;
|
@@ -1657,9 +1778,13 @@ ${defineGetters}`
|
|
1657
1778
|
moduleGraph,
|
1658
1779
|
chunkGraph,
|
1659
1780
|
runtime,
|
1660
|
-
concatenationScope
|
1781
|
+
concatenationScope,
|
1782
|
+
codeGenerationResults,
|
1783
|
+
sourceTypes: TYPES
|
1661
1784
|
});
|
1662
|
-
const source =
|
1785
|
+
const source = /** @type {Source} */ (
|
1786
|
+
codeGenResult.sources.get("javascript")
|
1787
|
+
);
|
1663
1788
|
const data = codeGenResult.data;
|
1664
1789
|
const chunkInitFragments = data && data.get("chunkInitFragments");
|
1665
1790
|
const code = source.source().toString();
|
@@ -1668,7 +1793,8 @@ ${defineGetters}`
|
|
1668
1793
|
ast = JavascriptParser._parse(code, {
|
1669
1794
|
sourceType: "module"
|
1670
1795
|
});
|
1671
|
-
} catch (
|
1796
|
+
} catch (_err) {
|
1797
|
+
const err = /** @type {TODO} */ (_err);
|
1672
1798
|
if (
|
1673
1799
|
err.loc &&
|
1674
1800
|
typeof err.loc === "object" &&
|
@@ -1676,11 +1802,9 @@ ${defineGetters}`
|
|
1676
1802
|
) {
|
1677
1803
|
const lineNumber = err.loc.line;
|
1678
1804
|
const lines = code.split("\n");
|
1679
|
-
err.message +=
|
1680
|
-
|
1681
|
-
|
1682
|
-
.slice(Math.max(0, lineNumber - 3), lineNumber + 2)
|
1683
|
-
.join("\n| ");
|
1805
|
+
err.message += `\n| ${lines
|
1806
|
+
.slice(Math.max(0, lineNumber - 3), lineNumber + 2)
|
1807
|
+
.join("\n| ")}`;
|
1684
1808
|
}
|
1685
1809
|
throw err;
|
1686
1810
|
}
|
@@ -1691,7 +1815,7 @@ ${defineGetters}`
|
|
1691
1815
|
ignoreEval: true,
|
1692
1816
|
impliedStrict: true
|
1693
1817
|
});
|
1694
|
-
const globalScope = scopeManager.acquire(ast);
|
1818
|
+
const globalScope = /** @type {Scope} */ (scopeManager.acquire(ast));
|
1695
1819
|
const moduleScope = globalScope.childScopes[0];
|
1696
1820
|
const resultSource = new ReplaceSource(source);
|
1697
1821
|
info.runtimeRequirements = codeGenResult.runtimeRequirements;
|
@@ -1702,7 +1826,9 @@ ${defineGetters}`
|
|
1702
1826
|
info.globalScope = globalScope;
|
1703
1827
|
info.moduleScope = moduleScope;
|
1704
1828
|
} catch (err) {
|
1705
|
-
|
1829
|
+
/** @type {Error} */
|
1830
|
+
(err).message +=
|
1831
|
+
`\nwhile analyzing module ${m.identifier()} for concatenation`;
|
1706
1832
|
throw err;
|
1707
1833
|
}
|
1708
1834
|
}
|
@@ -1770,21 +1896,30 @@ ${defineGetters}`
|
|
1770
1896
|
`Unsupported concatenation entry type ${info.type}`
|
1771
1897
|
);
|
1772
1898
|
}
|
1773
|
-
map.set(
|
1774
|
-
|
1775
|
-
|
1776
|
-
|
1777
|
-
|
1778
|
-
type: "reference",
|
1779
|
-
runtimeCondition: info.runtimeCondition,
|
1780
|
-
target: item
|
1781
|
-
};
|
1782
|
-
return ref;
|
1899
|
+
map.set(
|
1900
|
+
/** @type {ModuleInfo} */ (item).module,
|
1901
|
+
/** @type {ModuleInfo} */ (item)
|
1902
|
+
);
|
1903
|
+
return /** @type {ModuleInfo} */ (item);
|
1783
1904
|
}
|
1905
|
+
/** @type {ReferenceToModuleInfo} */
|
1906
|
+
const ref = {
|
1907
|
+
type: "reference",
|
1908
|
+
runtimeCondition: info.runtimeCondition,
|
1909
|
+
target: item
|
1910
|
+
};
|
1911
|
+
return ref;
|
1784
1912
|
});
|
1785
1913
|
return [list, map];
|
1786
1914
|
}
|
1787
1915
|
|
1916
|
+
/**
|
1917
|
+
* @param {string} oldName old name
|
1918
|
+
* @param {UsedNames} usedNamed1 used named 1
|
1919
|
+
* @param {UsedNames} usedNamed2 used named 2
|
1920
|
+
* @param {string} extraInfo extra info
|
1921
|
+
* @returns {string} found new name
|
1922
|
+
*/
|
1788
1923
|
findNewName(oldName, usedNamed1, usedNamed2, extraInfo) {
|
1789
1924
|
let name = oldName;
|
1790
1925
|
|
@@ -1803,7 +1938,7 @@ ${defineGetters}`
|
|
1803
1938
|
|
1804
1939
|
const splittedInfo = extraInfo.split("/");
|
1805
1940
|
while (splittedInfo.length) {
|
1806
|
-
name = splittedInfo.pop() + (name ?
|
1941
|
+
name = splittedInfo.pop() + (name ? `_${name}` : "");
|
1807
1942
|
const nameIdent = Template.toIdentifier(name);
|
1808
1943
|
if (
|
1809
1944
|
!usedNamed1.has(nameIdent) &&
|
@@ -1816,6 +1951,7 @@ ${defineGetters}`
|
|
1816
1951
|
let nameWithNumber = Template.toIdentifier(`${name}_${i}`);
|
1817
1952
|
while (
|
1818
1953
|
usedNamed1.has(nameWithNumber) ||
|
1954
|
+
// eslint-disable-next-line no-unmodified-loop-condition
|
1819
1955
|
(usedNamed2 && usedNamed2.has(nameWithNumber))
|
1820
1956
|
) {
|
1821
1957
|
i++;
|
@@ -1850,12 +1986,17 @@ ${defineGetters}`
|
|
1850
1986
|
super.updateHash(hash, context);
|
1851
1987
|
}
|
1852
1988
|
|
1989
|
+
/**
|
1990
|
+
* @param {ObjectDeserializerContext} context context
|
1991
|
+
* @returns {ConcatenatedModule} ConcatenatedModule
|
1992
|
+
*/
|
1853
1993
|
static deserialize(context) {
|
1854
1994
|
const obj = new ConcatenatedModule({
|
1855
1995
|
identifier: undefined,
|
1856
1996
|
rootModule: undefined,
|
1857
1997
|
modules: undefined,
|
1858
|
-
runtime: undefined
|
1998
|
+
runtime: undefined,
|
1999
|
+
compilation: undefined
|
1859
2000
|
});
|
1860
2001
|
obj.deserialize(context);
|
1861
2002
|
return obj;
|