webpack 5.97.1 → 5.104.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +368 -434
- package/bin/webpack.js +15 -9
- package/hot/dev-server.js +18 -3
- package/hot/emitter-event-target.js +7 -0
- package/hot/lazy-compilation-node.js +45 -29
- package/hot/lazy-compilation-universal.js +18 -0
- package/hot/lazy-compilation-web.js +15 -5
- package/hot/load-http.js +7 -0
- package/hot/log.js +15 -15
- package/hot/only-dev-server.js +19 -4
- package/hot/poll.js +1 -0
- package/lib/APIPlugin.js +48 -50
- package/lib/AbstractMethodError.js +1 -0
- package/lib/AsyncDependenciesBlock.js +4 -5
- package/lib/AutomaticPrefetchPlugin.js +22 -22
- package/lib/BannerPlugin.js +35 -40
- package/lib/Cache.js +12 -9
- package/lib/CacheFacade.js +13 -13
- package/lib/CaseSensitiveModulesWarning.js +6 -6
- package/lib/Chunk.js +68 -47
- package/lib/ChunkGraph.js +174 -95
- package/lib/ChunkGroup.js +32 -24
- package/lib/ChunkTemplate.js +8 -8
- package/lib/CleanPlugin.js +90 -42
- package/lib/CodeGenerationResults.js +12 -9
- package/lib/CompatibilityPlugin.js +70 -21
- package/lib/Compilation.js +827 -550
- package/lib/Compiler.js +137 -109
- package/lib/ConcatenationScope.js +45 -8
- package/lib/ConditionalInitFragment.js +1 -1
- package/lib/ConstPlugin.js +89 -59
- package/lib/ContextExclusionPlugin.js +5 -4
- package/lib/ContextModule.js +66 -51
- package/lib/ContextModuleFactory.js +51 -30
- package/lib/ContextReplacementPlugin.js +89 -34
- package/lib/CssModule.js +8 -4
- package/lib/DefinePlugin.js +209 -57
- package/lib/DelegatedModule.js +34 -23
- package/lib/DelegatedModuleFactoryPlugin.js +27 -24
- package/lib/DelegatedPlugin.js +4 -2
- package/lib/DependenciesBlock.js +0 -2
- package/lib/Dependency.js +37 -19
- package/lib/DependencyTemplate.js +2 -0
- package/lib/DependencyTemplates.js +5 -6
- package/lib/DllEntryPlugin.js +8 -4
- package/lib/DllModule.js +11 -12
- package/lib/DllModuleFactory.js +2 -2
- package/lib/DllPlugin.js +9 -6
- package/lib/DllReferencePlugin.js +60 -65
- package/lib/DotenvPlugin.js +462 -0
- package/lib/DynamicEntryPlugin.js +8 -8
- package/lib/EntryOptionPlugin.js +8 -6
- package/lib/EntryPlugin.js +5 -3
- package/lib/Entrypoint.js +19 -0
- package/lib/EnvironmentNotSupportAsyncWarning.js +0 -3
- package/lib/EnvironmentPlugin.js +26 -19
- package/lib/ErrorHelpers.js +6 -6
- package/lib/EvalDevToolModulePlugin.js +17 -14
- package/lib/EvalSourceMapDevToolPlugin.js +156 -142
- package/lib/ExportsInfo.js +180 -115
- package/lib/ExportsInfoApiPlugin.js +2 -2
- package/lib/ExternalModule.js +256 -102
- package/lib/ExternalModuleFactoryPlugin.js +66 -29
- package/lib/ExternalsPlugin.js +57 -2
- package/lib/FileSystemInfo.js +313 -247
- package/lib/FlagAllModulesAsUsedPlugin.js +2 -2
- package/lib/FlagDependencyExportsPlugin.js +29 -19
- package/lib/FlagDependencyUsagePlugin.js +9 -10
- package/lib/FlagEntryExportAsUsedPlugin.js +1 -1
- package/lib/Generator.js +43 -10
- package/lib/GraphHelpers.js +11 -3
- package/lib/HookWebpackError.js +35 -7
- package/lib/HotModuleReplacementPlugin.js +149 -108
- package/lib/HotUpdateChunk.js +0 -3
- package/lib/IgnoreErrorModuleFactory.js +2 -2
- package/lib/IgnorePlugin.js +16 -13
- package/lib/IgnoreWarningsPlugin.js +6 -4
- package/lib/InitFragment.js +41 -23
- package/lib/InvalidDependenciesModuleWarning.js +2 -3
- package/lib/JavascriptMetaInfoPlugin.js +2 -4
- package/lib/LibManifestPlugin.js +12 -13
- package/lib/LoaderOptionsPlugin.js +12 -14
- package/lib/LoaderTargetPlugin.js +5 -3
- package/lib/MainTemplate.js +18 -29
- package/lib/ManifestPlugin.js +235 -0
- package/lib/Module.js +138 -60
- package/lib/ModuleBuildError.js +4 -2
- package/lib/ModuleDependencyError.js +4 -3
- package/lib/ModuleDependencyWarning.js +4 -3
- package/lib/ModuleError.js +1 -1
- package/lib/ModuleFactory.js +10 -3
- package/lib/ModuleFilenameHelpers.js +63 -60
- package/lib/ModuleGraph.js +195 -70
- package/lib/ModuleGraphConnection.js +14 -20
- package/lib/ModuleInfoHeaderPlugin.js +15 -16
- package/lib/ModuleNotFoundError.js +1 -1
- package/lib/ModuleParseError.js +8 -4
- package/lib/ModuleSourceTypeConstants.js +189 -0
- package/lib/ModuleTemplate.js +7 -8
- package/lib/ModuleTypeConstants.js +37 -15
- package/lib/ModuleWarning.js +1 -1
- package/lib/MultiCompiler.js +64 -49
- package/lib/MultiStats.js +19 -14
- package/lib/MultiWatching.js +7 -11
- package/lib/NoEmitOnErrorsPlugin.js +5 -3
- package/lib/NodeStuffPlugin.js +438 -126
- package/lib/NormalModule.js +322 -201
- package/lib/NormalModuleFactory.js +230 -117
- package/lib/NormalModuleReplacementPlugin.js +37 -39
- package/lib/NullFactory.js +3 -2
- package/lib/OptimizationStages.js +1 -1
- package/lib/OptionsApply.js +1 -1
- package/lib/Parser.js +5 -3
- package/lib/PlatformPlugin.js +3 -1
- package/lib/PrefetchPlugin.js +6 -4
- package/lib/ProgressPlugin.js +48 -49
- package/lib/ProvidePlugin.js +7 -5
- package/lib/RawModule.js +26 -12
- package/lib/RecordIdsPlugin.js +88 -110
- package/lib/RequestShortener.js +3 -1
- package/lib/ResolverFactory.js +15 -14
- package/lib/RuntimeGlobals.js +216 -153
- package/lib/RuntimeModule.js +7 -6
- package/lib/RuntimePlugin.js +115 -62
- package/lib/RuntimeTemplate.js +248 -76
- package/lib/SelfModuleFactory.js +2 -2
- package/lib/SizeFormatHelpers.js +2 -2
- package/lib/SourceMapDevToolModuleOptionsPlugin.js +17 -27
- package/lib/SourceMapDevToolPlugin.js +72 -59
- package/lib/Stats.js +2 -3
- package/lib/Template.js +31 -24
- package/lib/TemplatedPathPlugin.js +24 -21
- package/lib/UseStrictPlugin.js +1 -1
- package/lib/WarnCaseSensitiveModulesPlugin.js +36 -37
- package/lib/WarnDeprecatedOptionPlugin.js +7 -8
- package/lib/WarnNoModeSetPlugin.js +3 -1
- package/lib/WatchIgnorePlugin.js +11 -9
- package/lib/Watching.js +27 -29
- package/lib/WebpackError.js +10 -3
- package/lib/WebpackIsIncludedPlugin.js +4 -5
- package/lib/WebpackOptionsApply.js +263 -135
- package/lib/asset/AssetBytesGenerator.js +171 -0
- package/lib/asset/AssetBytesParser.js +37 -0
- package/lib/asset/AssetGenerator.js +285 -223
- package/lib/asset/AssetModulesPlugin.js +103 -41
- package/lib/asset/AssetParser.js +7 -3
- package/lib/asset/AssetSourceGenerator.js +41 -17
- package/lib/asset/RawDataUrlModule.js +17 -9
- package/lib/async-modules/AsyncModuleHelpers.js +52 -0
- package/lib/async-modules/AwaitDependenciesInitFragment.js +39 -24
- package/lib/async-modules/InferAsyncModulesPlugin.js +25 -26
- package/lib/buildChunkGraph.js +36 -17
- package/lib/cache/AddBuildDependenciesPlugin.js +5 -6
- package/lib/cache/IdleFileCachePlugin.js +22 -20
- package/lib/cache/MemoryCachePlugin.js +3 -3
- package/lib/cache/MemoryWithGcCachePlugin.js +17 -11
- package/lib/cache/PackFileCacheStrategy.js +198 -170
- package/lib/cache/ResolverCachePlugin.js +58 -48
- package/lib/cache/getLazyHashedEtag.js +5 -4
- package/lib/cli.js +197 -39
- package/lib/config/browserslistTargetHandler.js +110 -85
- package/lib/config/defaults.js +514 -113
- package/lib/config/normalization.js +91 -64
- package/lib/config/target.js +30 -18
- package/lib/container/ContainerEntryDependency.js +0 -1
- package/lib/container/ContainerEntryModule.js +16 -15
- package/lib/container/ContainerEntryModuleFactory.js +2 -2
- package/lib/container/ContainerPlugin.js +5 -6
- package/lib/container/ContainerReferencePlugin.js +27 -30
- package/lib/container/FallbackDependency.js +2 -1
- package/lib/container/FallbackModule.js +19 -14
- package/lib/container/FallbackModuleFactory.js +2 -2
- package/lib/container/HoistContainerReferencesPlugin.js +7 -7
- package/lib/container/ModuleFederationPlugin.js +4 -4
- package/lib/container/RemoteModule.js +14 -14
- package/lib/container/RemoteRuntimeModule.js +2 -2
- package/lib/container/options.js +9 -9
- package/lib/css/CssGenerator.js +366 -74
- package/lib/css/CssLoadingRuntimeModule.js +26 -16
- package/lib/css/CssMergeStyleSheetsRuntimeModule.js +56 -0
- package/lib/css/CssModulesPlugin.js +191 -142
- package/lib/css/CssParser.js +1756 -740
- package/lib/css/walkCssTokens.js +180 -67
- package/lib/debug/ProfilingPlugin.js +135 -51
- package/lib/dependencies/AMDDefineDependencyParserPlugin.js +29 -28
- package/lib/dependencies/AMDPlugin.js +18 -11
- package/lib/dependencies/AMDRequireArrayDependency.js +5 -4
- package/lib/dependencies/AMDRequireContextDependency.js +2 -1
- package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +35 -26
- package/lib/dependencies/AMDRuntimeModules.js +3 -1
- package/lib/dependencies/CachedConstDependency.js +24 -18
- package/lib/dependencies/CommonJsExportRequireDependency.js +31 -24
- package/lib/dependencies/CommonJsExportsDependency.js +2 -1
- package/lib/dependencies/CommonJsExportsParserPlugin.js +50 -36
- package/lib/dependencies/CommonJsFullRequireDependency.js +7 -13
- package/lib/dependencies/CommonJsImportsParserPlugin.js +146 -127
- package/lib/dependencies/CommonJsPlugin.js +29 -18
- package/lib/dependencies/CommonJsRequireContextDependency.js +4 -3
- package/lib/dependencies/CommonJsSelfReferenceDependency.js +4 -4
- package/lib/dependencies/ConstDependency.js +2 -2
- package/lib/dependencies/ContextDependency.js +10 -5
- package/lib/dependencies/ContextDependencyHelpers.js +21 -13
- package/lib/dependencies/ContextDependencyTemplateAsId.js +10 -9
- package/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +13 -10
- package/lib/dependencies/ContextElementDependency.js +23 -12
- package/lib/dependencies/CssIcssExportDependency.js +402 -22
- package/lib/dependencies/CssIcssImportDependency.js +116 -51
- package/lib/dependencies/CssIcssSymbolDependency.js +33 -35
- package/lib/dependencies/CssImportDependency.js +17 -14
- package/lib/dependencies/CssUrlDependency.js +8 -13
- package/lib/dependencies/DynamicExports.js +19 -19
- package/lib/dependencies/ExportsInfoDependency.js +13 -10
- package/lib/dependencies/ExternalModuleDependency.js +7 -7
- package/lib/dependencies/ExternalModuleInitFragment.js +3 -2
- package/lib/dependencies/ExternalModuleInitFragmentDependency.js +96 -0
- package/lib/dependencies/HarmonyAcceptDependency.js +96 -5
- package/lib/dependencies/HarmonyAcceptImportDependency.js +2 -5
- package/lib/dependencies/HarmonyCompatibilityDependency.js +0 -1
- package/lib/dependencies/HarmonyDetectionParserPlugin.js +10 -30
- package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +19 -8
- package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +136 -99
- package/lib/dependencies/HarmonyExportExpressionDependency.js +1 -1
- package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +152 -61
- package/lib/dependencies/HarmonyExportInitFragment.js +2 -2
- package/lib/dependencies/HarmonyExportSpecifierDependency.js +2 -2
- package/lib/dependencies/HarmonyExports.js +5 -5
- package/lib/dependencies/HarmonyImportDependency.js +92 -45
- package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +201 -163
- package/lib/dependencies/HarmonyImportSideEffectDependency.js +5 -6
- package/lib/dependencies/HarmonyImportSpecifierDependency.js +69 -42
- package/lib/dependencies/HarmonyModulesPlugin.js +16 -11
- package/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +15 -15
- package/lib/dependencies/ImportContextDependency.js +15 -1
- package/lib/dependencies/ImportDependency.js +25 -7
- package/lib/dependencies/ImportEagerDependency.js +7 -5
- package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +23 -13
- package/lib/dependencies/ImportMetaContextPlugin.js +2 -2
- package/lib/dependencies/ImportMetaPlugin.js +172 -20
- package/lib/dependencies/ImportParserPlugin.js +327 -49
- package/lib/dependencies/ImportPhase.js +121 -0
- package/lib/dependencies/ImportPlugin.js +3 -1
- package/lib/dependencies/ImportWeakDependency.js +7 -5
- package/lib/dependencies/JsonExportsDependency.js +54 -28
- package/lib/dependencies/LoaderDependency.js +0 -3
- package/lib/dependencies/LoaderImportDependency.js +0 -3
- package/lib/dependencies/LoaderPlugin.js +24 -25
- package/lib/dependencies/LocalModulesHelpers.js +4 -4
- package/lib/dependencies/ModuleDecoratorDependency.js +2 -4
- package/lib/dependencies/ModuleDependency.js +14 -13
- package/lib/dependencies/ModuleDependencyTemplateAsRequireId.js +1 -0
- package/lib/dependencies/ModuleHotAcceptDependency.js +1 -1
- package/lib/dependencies/NullDependency.js +2 -0
- package/lib/dependencies/ProvidedDependency.js +8 -10
- package/lib/dependencies/PureExpressionDependency.js +1 -2
- package/lib/dependencies/RequireContextDependency.js +2 -1
- package/lib/dependencies/RequireContextDependencyParserPlugin.js +47 -44
- package/lib/dependencies/RequireContextPlugin.js +5 -2
- package/lib/dependencies/RequireEnsureDependenciesBlock.js +3 -3
- package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +101 -99
- package/lib/dependencies/RequireEnsurePlugin.js +6 -6
- package/lib/dependencies/RequireIncludeDependency.js +2 -2
- package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +33 -34
- package/lib/dependencies/RequireIncludePlugin.js +1 -0
- package/lib/dependencies/RequireResolveContextDependency.js +1 -1
- package/lib/dependencies/RequireResolveDependency.js +3 -3
- package/lib/dependencies/RuntimeRequirementsDependency.js +3 -4
- package/lib/dependencies/StaticExportsDependency.js +3 -5
- package/lib/dependencies/SystemPlugin.js +4 -4
- package/lib/dependencies/URLContextDependency.js +65 -0
- package/lib/dependencies/URLDependency.js +3 -8
- package/lib/dependencies/URLPlugin.js +18 -159
- package/lib/dependencies/WebAssemblyExportImportedDependency.js +3 -3
- package/lib/dependencies/WebAssemblyImportDependency.js +2 -2
- package/lib/dependencies/WebpackIsIncludedDependency.js +2 -3
- package/lib/dependencies/WorkerDependency.js +8 -6
- package/lib/dependencies/WorkerPlugin.js +131 -67
- package/lib/dependencies/getFunctionExpression.js +2 -2
- package/lib/dependencies/processExportInfo.js +4 -4
- package/lib/esm/ExportWebpackRequireRuntimeModule.js +1 -1
- package/lib/esm/ModuleChunkFormatPlugin.js +232 -179
- package/lib/esm/ModuleChunkLoadingPlugin.js +112 -57
- package/lib/esm/ModuleChunkLoadingRuntimeModule.js +102 -28
- package/lib/formatLocation.js +2 -2
- package/lib/hmr/HotModuleReplacement.runtime.js +41 -29
- package/lib/hmr/HotModuleReplacementRuntimeModule.js +1 -1
- package/lib/hmr/JavascriptHotModuleReplacement.runtime.js +43 -33
- package/lib/hmr/JavascriptHotModuleReplacementHelper.js +37 -0
- package/lib/hmr/LazyCompilationPlugin.js +67 -54
- package/lib/hmr/lazyCompilationBackend.js +23 -18
- package/lib/ids/ChunkModuleIdRangePlugin.js +14 -11
- package/lib/ids/DeterministicChunkIdsPlugin.js +32 -37
- package/lib/ids/DeterministicModuleIdsPlugin.js +52 -52
- package/lib/ids/HashedModuleIdsPlugin.js +15 -13
- package/lib/ids/IdHelpers.js +66 -49
- package/lib/ids/NamedChunkIdsPlugin.js +14 -17
- package/lib/ids/NamedModuleIdsPlugin.js +12 -14
- package/lib/ids/NaturalChunkIdsPlugin.js +6 -4
- package/lib/ids/NaturalModuleIdsPlugin.js +4 -3
- package/lib/ids/OccurrenceChunkIdsPlugin.js +7 -5
- package/lib/ids/OccurrenceModuleIdsPlugin.js +8 -7
- package/lib/ids/SyncModuleIdsPlugin.js +18 -13
- package/lib/index.js +54 -14
- package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +116 -119
- package/lib/javascript/BasicEvaluatedExpression.js +26 -18
- package/lib/javascript/ChunkFormatHelpers.js +70 -0
- package/lib/javascript/ChunkHelpers.js +17 -5
- package/lib/javascript/CommonJsChunkFormatPlugin.js +114 -141
- package/lib/javascript/EnableChunkLoadingPlugin.js +7 -4
- package/lib/javascript/JavascriptGenerator.js +122 -100
- package/lib/javascript/JavascriptModulesPlugin.js +332 -152
- package/lib/javascript/JavascriptParser.js +1488 -1052
- package/lib/javascript/JavascriptParserHelpers.js +48 -47
- package/lib/javascript/StartupHelpers.js +23 -22
- package/lib/json/JsonData.js +4 -4
- package/lib/json/JsonGenerator.js +66 -32
- package/lib/json/JsonModulesPlugin.js +16 -6
- package/lib/json/JsonParser.js +23 -8
- package/lib/library/AbstractLibraryPlugin.js +45 -10
- package/lib/library/AmdLibraryPlugin.js +7 -5
- package/lib/library/AssignLibraryPlugin.js +71 -17
- package/lib/library/EnableLibraryPlugin.js +51 -25
- package/lib/library/ExportPropertyLibraryPlugin.js +12 -18
- package/lib/library/JsonpLibraryPlugin.js +5 -2
- package/lib/library/ModuleLibraryPlugin.js +230 -18
- package/lib/library/SystemLibraryPlugin.js +29 -11
- package/lib/library/UmdLibraryPlugin.js +35 -32
- package/lib/logging/Logger.js +18 -15
- package/lib/logging/createConsoleLogger.js +27 -27
- package/lib/logging/runtime.js +11 -11
- package/lib/logging/truncateArgs.js +5 -5
- package/lib/node/CommonJsChunkLoadingPlugin.js +72 -75
- package/lib/node/NodeEnvironmentPlugin.js +9 -3
- package/lib/node/NodeTargetPlugin.js +9 -1
- package/lib/node/NodeTemplatePlugin.js +2 -2
- package/lib/node/NodeWatchFileSystem.js +4 -4
- package/lib/node/ReadFileChunkLoadingRuntimeModule.js +22 -38
- package/lib/node/ReadFileCompileAsyncWasmPlugin.js +10 -11
- package/lib/node/ReadFileCompileWasmPlugin.js +11 -14
- package/lib/node/RequireChunkLoadingRuntimeModule.js +22 -30
- package/lib/node/nodeConsole.js +12 -7
- package/lib/optimize/AggressiveMergingPlugin.js +46 -47
- package/lib/optimize/AggressiveSplittingPlugin.js +233 -238
- package/lib/optimize/ConcatenatedModule.js +620 -251
- package/lib/optimize/EnsureChunkConditionsPlugin.js +58 -58
- package/lib/optimize/FlagIncludedChunksPlugin.js +93 -96
- package/lib/optimize/InnerGraph.js +139 -124
- package/lib/optimize/InnerGraphPlugin.js +29 -24
- package/lib/optimize/LimitChunkCountPlugin.js +32 -8
- package/lib/optimize/MangleExportsPlugin.js +22 -22
- package/lib/optimize/MergeDuplicateChunksPlugin.js +80 -81
- package/lib/optimize/MinChunkSizePlugin.js +12 -7
- package/lib/optimize/ModuleConcatenationPlugin.js +92 -71
- package/lib/optimize/RealContentHashPlugin.js +58 -44
- package/lib/optimize/RemoveEmptyChunksPlugin.js +8 -5
- package/lib/optimize/RemoveParentModulesPlugin.js +7 -4
- package/lib/optimize/RuntimeChunkPlugin.js +22 -25
- package/lib/optimize/SideEffectsFlagPlugin.js +44 -26
- package/lib/optimize/SplitChunksPlugin.js +209 -158
- package/lib/performance/AssetsOverSizeLimitWarning.js +1 -1
- package/lib/performance/EntrypointsOverSizeLimitWarning.js +2 -2
- package/lib/performance/SizeLimitsPlugin.js +8 -5
- package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +5 -7
- package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +61 -64
- package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +3 -4
- package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +2 -2
- package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +2 -2
- package/lib/rules/BasicEffectRulePlugin.js +14 -5
- package/lib/rules/BasicMatcherRulePlugin.js +18 -7
- package/lib/rules/ObjectMatcherRulePlugin.js +17 -6
- package/lib/rules/RuleSetCompiler.js +73 -32
- package/lib/rules/UseEffectRulePlugin.js +61 -25
- package/lib/runtime/AsyncModuleRuntimeModule.js +74 -9
- package/lib/runtime/AutoPublicPathRuntimeModule.js +9 -4
- package/lib/runtime/BaseUriRuntimeModule.js +2 -2
- package/lib/runtime/CompatRuntimeModule.js +0 -1
- package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +1 -1
- package/lib/runtime/GetChunkFilenameRuntimeModule.js +34 -35
- package/lib/runtime/GetMainFilenameRuntimeModule.js +1 -1
- package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +1 -1
- package/lib/runtime/LoadScriptRuntimeModule.js +0 -2
- package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +248 -0
- package/lib/runtime/PublicPathRuntimeModule.js +2 -2
- package/lib/runtime/RuntimeIdRuntimeModule.js +2 -1
- package/lib/runtime/StartupChunkDependenciesPlugin.js +39 -42
- package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +10 -9
- package/lib/runtime/StartupEntrypointRuntimeModule.js +0 -1
- package/lib/runtime/SystemContextRuntimeModule.js +0 -2
- package/lib/runtime/ToBinaryRuntimeModule.js +64 -0
- package/lib/schemes/DataUriPlugin.js +9 -31
- package/lib/schemes/FileUriPlugin.js +11 -6
- package/lib/schemes/HttpUriPlugin.js +381 -261
- package/lib/schemes/VirtualUrlPlugin.js +222 -0
- package/lib/serialization/AggregateErrorSerializer.js +41 -0
- package/lib/serialization/BinaryMiddleware.js +51 -33
- package/lib/serialization/ErrorObjectSerializer.js +7 -2
- package/lib/serialization/FileMiddleware.js +101 -71
- package/lib/serialization/NullPrototypeObjectSerializer.js +5 -3
- package/lib/serialization/ObjectMiddleware.js +130 -54
- package/lib/serialization/PlainObjectSerializer.js +1 -1
- package/lib/serialization/Serializer.js +38 -20
- package/lib/serialization/SerializerMiddleware.js +121 -49
- package/lib/serialization/SingleItemMiddleware.js +9 -7
- package/lib/serialization/types.js +1 -1
- package/lib/sharing/ConsumeSharedModule.js +9 -9
- package/lib/sharing/ConsumeSharedPlugin.js +14 -14
- package/lib/sharing/ConsumeSharedRuntimeModule.js +11 -8
- package/lib/sharing/ProvideSharedModule.js +9 -11
- package/lib/sharing/ProvideSharedModuleFactory.js +5 -3
- package/lib/sharing/ProvideSharedPlugin.js +15 -10
- package/lib/sharing/SharePlugin.js +3 -4
- package/lib/sharing/ShareRuntimeModule.js +7 -6
- package/lib/sharing/resolveMatchedConfigs.js +27 -13
- package/lib/sharing/utils.js +37 -43
- package/lib/stats/DefaultStatsFactoryPlugin.js +455 -286
- package/lib/stats/DefaultStatsPresetPlugin.js +77 -46
- package/lib/stats/DefaultStatsPrinterPlugin.js +583 -419
- package/lib/stats/StatsFactory.js +75 -32
- package/lib/stats/StatsPrinter.js +71 -51
- package/lib/url/URLParserPlugin.js +264 -0
- package/lib/util/ArrayHelpers.js +6 -8
- package/lib/util/ArrayQueue.js +1 -1
- package/lib/util/AsyncQueue.js +11 -10
- package/lib/util/Hash.js +37 -5
- package/lib/util/IterableHelpers.js +4 -4
- package/lib/util/LazyBucketSortedSet.js +46 -27
- package/lib/util/LazySet.js +16 -10
- package/lib/util/MapHelpers.js +1 -1
- package/lib/util/ParallelismFactorCalculator.js +2 -2
- package/lib/util/Semaphore.js +3 -3
- package/lib/util/SetHelpers.js +6 -6
- package/lib/util/SortableSet.js +11 -9
- package/lib/util/StackedCacheMap.js +2 -2
- package/lib/util/StackedMap.js +3 -3
- package/lib/util/StringXor.js +2 -1
- package/lib/util/TupleQueue.js +11 -8
- package/lib/util/TupleSet.js +44 -19
- package/lib/util/URLAbsoluteSpecifier.js +3 -4
- package/lib/util/WeakTupleMap.js +56 -42
- package/lib/util/binarySearchBounds.js +4 -3
- package/lib/util/chainedImports.js +3 -1
- package/lib/util/cleverMerge.js +171 -107
- package/lib/util/comparators.js +265 -162
- package/lib/util/compileBooleanMatcher.js +120 -41
- package/lib/util/concatenate.js +20 -16
- package/lib/util/conventions.js +73 -74
- package/lib/util/create-schema-validation.js +8 -8
- package/lib/util/createHash.js +32 -135
- package/lib/util/dataURL.js +39 -0
- package/lib/util/deprecation.js +119 -116
- package/lib/util/deterministicGrouping.js +56 -47
- package/lib/util/extractSourceMap.js +319 -0
- package/lib/util/extractUrlAndGlobal.js +1 -1
- package/lib/util/findGraphRoots.js +19 -9
- package/lib/util/fs.js +169 -141
- package/lib/util/hash/BatchedHash.js +50 -10
- package/lib/util/hash/BulkUpdateHash.js +138 -0
- package/lib/util/hash/DebugHash.js +75 -0
- package/lib/util/hash/hash-digest.js +216 -0
- package/lib/util/hash/md4.js +2 -2
- package/lib/util/hash/wasm-hash.js +59 -17
- package/lib/util/identifier.js +124 -61
- package/lib/util/internalSerializables.js +4 -6
- package/lib/util/magicComment.js +9 -5
- package/lib/util/makeSerializable.js +2 -2
- package/lib/util/memoize.js +5 -2
- package/lib/util/objectToMap.js +3 -2
- package/lib/util/processAsyncTree.js +5 -5
- package/lib/util/propertyAccess.js +1 -1
- package/lib/util/propertyName.js +2 -3
- package/lib/util/registerExternalSerializer.js +16 -20
- package/lib/util/removeBOM.js +25 -0
- package/lib/util/runtime.js +72 -56
- package/lib/util/semver.js +44 -33
- package/lib/util/serialization.js +56 -56
- package/lib/util/smartGrouping.js +42 -27
- package/lib/util/source.js +5 -4
- package/lib/util/traverseDestructuringAssignmentProperties.js +45 -0
- package/lib/validateSchema.js +7 -9
- package/lib/wasm/EnableWasmLoadingPlugin.js +22 -12
- package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +9 -5
- package/lib/wasm-async/AsyncWebAssemblyGenerator.js +15 -3
- package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +28 -22
- package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +47 -57
- package/lib/wasm-async/AsyncWebAssemblyParser.js +2 -10
- package/lib/wasm-async/UniversalCompileAsyncWasmPlugin.js +8 -4
- package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +23 -17
- package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +55 -57
- package/lib/wasm-sync/WebAssemblyGenerator.js +56 -41
- package/lib/wasm-sync/WebAssemblyInInitialChunkError.js +6 -3
- package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +25 -10
- package/lib/wasm-sync/WebAssemblyModulesPlugin.js +11 -12
- package/lib/wasm-sync/WebAssemblyParser.js +10 -17
- package/lib/wasm-sync/WebAssemblyUtils.js +1 -1
- package/lib/web/FetchCompileAsyncWasmPlugin.js +4 -4
- package/lib/web/FetchCompileWasmPlugin.js +6 -8
- package/lib/web/JsonpChunkLoadingPlugin.js +74 -74
- package/lib/web/JsonpChunkLoadingRuntimeModule.js +10 -26
- package/lib/web/JsonpTemplatePlugin.js +0 -1
- package/lib/webpack.js +107 -87
- package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +79 -75
- package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +38 -51
- package/lib/webworker/WebWorkerTemplatePlugin.js +1 -0
- package/module.d.ts +5 -0
- package/package.json +149 -129
- package/schemas/WebpackOptions.check.d.ts +1 -1
- package/schemas/WebpackOptions.check.js +2 -2
- package/schemas/WebpackOptions.json +543 -190
- package/schemas/plugins/BannerPlugin.check.d.ts +1 -1
- package/schemas/plugins/BannerPlugin.check.js +2 -2
- package/schemas/plugins/BannerPlugin.json +4 -0
- package/schemas/plugins/DllPlugin.check.d.ts +1 -1
- package/schemas/plugins/DllPlugin.check.js +1 -1
- package/schemas/plugins/DllReferencePlugin.check.d.ts +1 -1
- package/schemas/plugins/DllReferencePlugin.check.js +1 -1
- package/schemas/plugins/IgnorePlugin.check.d.ts +1 -1
- package/schemas/plugins/IgnorePlugin.check.js +1 -1
- package/schemas/plugins/IgnorePlugin.json +1 -1
- package/schemas/plugins/LoaderOptionsPlugin.check.d.ts +1 -1
- package/schemas/plugins/LoaderOptionsPlugin.check.js +1 -1
- package/schemas/plugins/{HashedModuleIdsPlugin.check.d.ts → ManifestPlugin.check.d.ts} +2 -2
- package/schemas/plugins/ManifestPlugin.check.js +6 -0
- package/schemas/plugins/ManifestPlugin.json +98 -0
- package/schemas/plugins/ProgressPlugin.check.d.ts +1 -1
- package/schemas/plugins/ProgressPlugin.check.js +1 -1
- package/schemas/plugins/ProgressPlugin.json +1 -1
- package/schemas/plugins/SourceMapDevToolPlugin.check.d.ts +1 -1
- package/schemas/plugins/SourceMapDevToolPlugin.check.js +2 -2
- package/schemas/plugins/SourceMapDevToolPlugin.json +23 -6
- package/schemas/plugins/WatchIgnorePlugin.check.d.ts +1 -1
- package/schemas/plugins/WatchIgnorePlugin.check.js +1 -1
- package/schemas/plugins/asset/AssetGeneratorOptions.check.d.ts +1 -1
- package/schemas/plugins/asset/AssetGeneratorOptions.check.js +1 -1
- package/schemas/plugins/asset/AssetInlineGeneratorOptions.check.d.ts +1 -1
- package/schemas/plugins/asset/AssetInlineGeneratorOptions.check.js +1 -1
- package/schemas/plugins/asset/AssetParserOptions.check.d.ts +1 -1
- package/schemas/plugins/asset/AssetParserOptions.check.js +1 -1
- package/schemas/plugins/asset/AssetResourceGeneratorOptions.check.d.ts +1 -1
- package/schemas/plugins/asset/AssetResourceGeneratorOptions.check.js +1 -1
- package/schemas/plugins/container/ContainerPlugin.check.d.ts +1 -1
- package/schemas/plugins/container/ContainerPlugin.check.js +1 -1
- package/schemas/plugins/container/ContainerReferencePlugin.check.d.ts +1 -1
- package/schemas/plugins/container/ContainerReferencePlugin.check.js +2 -2
- package/schemas/plugins/container/ContainerReferencePlugin.json +4 -1
- package/schemas/plugins/container/ExternalsType.check.d.ts +1 -1
- package/schemas/plugins/container/ExternalsType.check.js +2 -2
- package/schemas/plugins/container/ModuleFederationPlugin.check.d.ts +1 -1
- package/schemas/plugins/container/ModuleFederationPlugin.check.js +2 -2
- package/schemas/plugins/container/ModuleFederationPlugin.json +4 -1
- package/schemas/plugins/css/CssGeneratorOptions.check.d.ts +1 -1
- package/schemas/plugins/css/CssGeneratorOptions.check.js +1 -1
- package/schemas/plugins/css/CssModuleGeneratorOptions.check.d.ts +1 -1
- package/schemas/plugins/css/CssModuleGeneratorOptions.check.js +2 -2
- package/schemas/plugins/css/CssModuleParserOptions.check.d.ts +1 -1
- package/schemas/plugins/css/CssModuleParserOptions.check.js +2 -2
- package/schemas/plugins/css/CssParserOptions.check.d.ts +1 -1
- package/schemas/plugins/css/CssParserOptions.check.js +2 -2
- package/schemas/plugins/debug/ProfilingPlugin.check.d.ts +1 -1
- package/schemas/plugins/debug/ProfilingPlugin.check.js +1 -1
- package/schemas/plugins/ids/HashedModuleIdsPlugin.check.d.ts +7 -0
- package/schemas/plugins/ids/HashedModuleIdsPlugin.check.js +6 -0
- package/schemas/plugins/{HashedModuleIdsPlugin.json → ids/HashedModuleIdsPlugin.json} +15 -2
- package/schemas/plugins/ids/OccurrenceChunkIdsPlugin.check.d.ts +1 -1
- package/schemas/plugins/ids/OccurrenceChunkIdsPlugin.check.js +1 -1
- package/schemas/plugins/ids/OccurrenceModuleIdsPlugin.check.d.ts +1 -1
- package/schemas/plugins/ids/OccurrenceModuleIdsPlugin.check.js +1 -1
- package/schemas/plugins/{css/CssGlobalParserOptions.check.d.ts → json/JsonModulesPluginGenerator.check.d.ts} +1 -1
- package/schemas/plugins/json/JsonModulesPluginGenerator.check.js +6 -0
- package/schemas/plugins/json/JsonModulesPluginGenerator.json +3 -0
- package/schemas/plugins/{css/CssGlobalGeneratorOptions.check.d.ts → json/JsonModulesPluginParser.check.d.ts} +1 -1
- package/schemas/plugins/json/JsonModulesPluginParser.check.js +6 -0
- package/schemas/plugins/json/JsonModulesPluginParser.json +3 -0
- package/schemas/plugins/optimize/AggressiveSplittingPlugin.check.d.ts +1 -1
- package/schemas/plugins/optimize/AggressiveSplittingPlugin.check.js +1 -1
- package/schemas/plugins/optimize/LimitChunkCountPlugin.check.d.ts +1 -1
- package/schemas/plugins/optimize/LimitChunkCountPlugin.check.js +1 -1
- package/schemas/plugins/optimize/MergeDuplicateChunksPlugin.check.d.ts +1 -1
- package/schemas/plugins/optimize/MergeDuplicateChunksPlugin.check.js +1 -1
- package/schemas/plugins/optimize/MinChunkSizePlugin.check.d.ts +1 -1
- package/schemas/plugins/optimize/MinChunkSizePlugin.check.js +1 -1
- package/schemas/plugins/schemes/HttpUriPlugin.check.d.ts +1 -1
- package/schemas/plugins/schemes/HttpUriPlugin.check.js +1 -1
- package/schemas/plugins/schemes/VirtualUrlPlugin.check.d.ts +7 -0
- package/schemas/plugins/schemes/VirtualUrlPlugin.check.js +6 -0
- package/schemas/plugins/schemes/VirtualUrlPlugin.json +77 -0
- package/schemas/plugins/sharing/ConsumeSharedPlugin.check.d.ts +1 -1
- package/schemas/plugins/sharing/ConsumeSharedPlugin.check.js +1 -1
- package/schemas/plugins/sharing/ProvideSharedPlugin.check.d.ts +1 -1
- package/schemas/plugins/sharing/ProvideSharedPlugin.check.js +1 -1
- package/schemas/plugins/sharing/SharePlugin.check.d.ts +1 -1
- package/schemas/plugins/sharing/SharePlugin.check.js +1 -1
- package/types.d.ts +5115 -1863
- package/SECURITY.md +0 -9
- package/lib/ModuleSourceTypesConstants.js +0 -112
- package/lib/dependencies/CssLocalIdentifierDependency.js +0 -250
- package/lib/dependencies/CssSelfLocalIdentifierDependency.js +0 -111
- package/lib/library/ModernModuleLibraryPlugin.js +0 -144
- package/schemas/plugins/HashedModuleIdsPlugin.check.js +0 -6
- package/schemas/plugins/JsonModulesPluginParser.check.d.ts +0 -7
- package/schemas/plugins/JsonModulesPluginParser.check.js +0 -6
- package/schemas/plugins/JsonModulesPluginParser.json +0 -12
- package/schemas/plugins/css/CssAutoGeneratorOptions.check.d.ts +0 -7
- package/schemas/plugins/css/CssAutoGeneratorOptions.check.js +0 -6
- package/schemas/plugins/css/CssAutoGeneratorOptions.json +0 -3
- package/schemas/plugins/css/CssAutoParserOptions.check.d.ts +0 -7
- package/schemas/plugins/css/CssAutoParserOptions.check.js +0 -6
- package/schemas/plugins/css/CssAutoParserOptions.json +0 -3
- package/schemas/plugins/css/CssGlobalGeneratorOptions.check.js +0 -6
- package/schemas/plugins/css/CssGlobalGeneratorOptions.json +0 -3
- package/schemas/plugins/css/CssGlobalParserOptions.check.js +0 -6
- package/schemas/plugins/css/CssGlobalParserOptions.json +0 -3
package/lib/RuntimeTemplate.js
CHANGED
|
@@ -8,18 +8,31 @@
|
|
|
8
8
|
const InitFragment = require("./InitFragment");
|
|
9
9
|
const RuntimeGlobals = require("./RuntimeGlobals");
|
|
10
10
|
const Template = require("./Template");
|
|
11
|
+
const {
|
|
12
|
+
getOutgoingAsyncModules
|
|
13
|
+
} = require("./async-modules/AsyncModuleHelpers");
|
|
14
|
+
const { ImportPhaseUtils } = require("./dependencies/ImportPhase");
|
|
15
|
+
const {
|
|
16
|
+
getMakeDeferredNamespaceModeFromExportsType,
|
|
17
|
+
getOptimizedDeferredModule
|
|
18
|
+
} = require("./runtime/MakeDeferredNamespaceObjectRuntime");
|
|
11
19
|
const { equals } = require("./util/ArrayHelpers");
|
|
12
20
|
const compileBooleanMatcher = require("./util/compileBooleanMatcher");
|
|
21
|
+
const memoize = require("./util/memoize");
|
|
13
22
|
const propertyAccess = require("./util/propertyAccess");
|
|
14
23
|
const { forEachRuntime, subtractRuntime } = require("./util/runtime");
|
|
15
24
|
|
|
16
|
-
|
|
17
|
-
|
|
25
|
+
const getHarmonyImportDependency = memoize(() =>
|
|
26
|
+
require("./dependencies/HarmonyImportDependency")
|
|
27
|
+
);
|
|
28
|
+
const getImportDependency = memoize(() =>
|
|
29
|
+
require("./dependencies/ImportDependency")
|
|
30
|
+
);
|
|
31
|
+
|
|
32
|
+
/** @typedef {import("./config/defaults").OutputNormalizedWithDefaults} OutputOptions */
|
|
18
33
|
/** @typedef {import("./AsyncDependenciesBlock")} AsyncDependenciesBlock */
|
|
19
34
|
/** @typedef {import("./Chunk")} Chunk */
|
|
20
35
|
/** @typedef {import("./ChunkGraph")} ChunkGraph */
|
|
21
|
-
/** @typedef {import("./CodeGenerationResults")} CodeGenerationResults */
|
|
22
|
-
/** @typedef {import("./CodeGenerationResults").CodeGenerationResult} CodeGenerationResult */
|
|
23
36
|
/** @typedef {import("./Compilation")} Compilation */
|
|
24
37
|
/** @typedef {import("./Dependency")} Dependency */
|
|
25
38
|
/** @typedef {import("./Module")} Module */
|
|
@@ -28,6 +41,8 @@ const { forEachRuntime, subtractRuntime } = require("./util/runtime");
|
|
|
28
41
|
/** @typedef {import("./ModuleGraph")} ModuleGraph */
|
|
29
42
|
/** @typedef {import("./RequestShortener")} RequestShortener */
|
|
30
43
|
/** @typedef {import("./util/runtime").RuntimeSpec} RuntimeSpec */
|
|
44
|
+
/** @typedef {import("./dependencies/ImportPhase").ImportPhaseType} ImportPhaseType */
|
|
45
|
+
/** @typedef {import("./NormalModuleFactory").ModuleDependency} ModuleDependency */
|
|
31
46
|
|
|
32
47
|
/**
|
|
33
48
|
* @param {Module} module the module
|
|
@@ -42,18 +57,16 @@ This should not happen.
|
|
|
42
57
|
It's in these chunks: ${
|
|
43
58
|
Array.from(
|
|
44
59
|
chunkGraph.getModuleChunksIterable(module),
|
|
45
|
-
c => c.name || c.id || c.debugId
|
|
60
|
+
(c) => c.name || c.id || c.debugId
|
|
46
61
|
).join(", ") || "none"
|
|
47
62
|
} (If module is in no chunk this indicates a bug in some chunk/module optimization logic)
|
|
48
63
|
Module has these incoming connections: ${Array.from(
|
|
49
64
|
chunkGraph.moduleGraph.getIncomingConnections(module),
|
|
50
|
-
connection =>
|
|
65
|
+
(connection) =>
|
|
51
66
|
`\n - ${
|
|
52
67
|
connection.originModule && connection.originModule.identifier()
|
|
53
68
|
} ${connection.dependency && connection.dependency.type} ${
|
|
54
|
-
(connection.explanations &&
|
|
55
|
-
Array.from(connection.explanations).join(", ")) ||
|
|
56
|
-
""
|
|
69
|
+
(connection.explanations && [...connection.explanations].join(", ")) || ""
|
|
57
70
|
}`
|
|
58
71
|
).join("")}`;
|
|
59
72
|
|
|
@@ -72,8 +85,9 @@ function getGlobalObject(definition) {
|
|
|
72
85
|
// call expression
|
|
73
86
|
// expression in parentheses
|
|
74
87
|
/^([_\p{L}][_0-9\p{L}]*)?\(.*\)$/iu.test(trimmed)
|
|
75
|
-
)
|
|
88
|
+
) {
|
|
76
89
|
return trimmed;
|
|
90
|
+
}
|
|
77
91
|
|
|
78
92
|
return `Object(${trimmed})`;
|
|
79
93
|
}
|
|
@@ -91,10 +105,7 @@ class RuntimeTemplate {
|
|
|
91
105
|
this.globalObject =
|
|
92
106
|
/** @type {string} */
|
|
93
107
|
(getGlobalObject(outputOptions.globalObject));
|
|
94
|
-
this.contentHashReplacement = "X".repeat(
|
|
95
|
-
/** @type {NonNullable<OutputOptions["hashDigestLength"]>} */
|
|
96
|
-
(outputOptions.hashDigestLength)
|
|
97
|
-
);
|
|
108
|
+
this.contentHashReplacement = "X".repeat(outputOptions.hashDigestLength);
|
|
98
109
|
}
|
|
99
110
|
|
|
100
111
|
isIIFE() {
|
|
@@ -107,7 +118,7 @@ class RuntimeTemplate {
|
|
|
107
118
|
|
|
108
119
|
isNeutralPlatform() {
|
|
109
120
|
return (
|
|
110
|
-
!this.
|
|
121
|
+
!this.compilation.compiler.platform.web &&
|
|
111
122
|
!this.compilation.compiler.platform.node
|
|
112
123
|
);
|
|
113
124
|
}
|
|
@@ -116,6 +127,10 @@ class RuntimeTemplate {
|
|
|
116
127
|
return this.outputOptions.environment.const;
|
|
117
128
|
}
|
|
118
129
|
|
|
130
|
+
supportsMethodShorthand() {
|
|
131
|
+
return this.outputOptions.environment.methodShorthand;
|
|
132
|
+
}
|
|
133
|
+
|
|
119
134
|
supportsArrowFunction() {
|
|
120
135
|
return this.outputOptions.environment.arrowFunction;
|
|
121
136
|
}
|
|
@@ -156,6 +171,23 @@ class RuntimeTemplate {
|
|
|
156
171
|
return this.outputOptions.environment.nodePrefixForCoreModules;
|
|
157
172
|
}
|
|
158
173
|
|
|
174
|
+
/**
|
|
175
|
+
* @param {string} mod a module
|
|
176
|
+
* @returns {string} a module with `node:` prefix when supported, otherwise an original name
|
|
177
|
+
*/
|
|
178
|
+
renderNodePrefixForCoreModule(mod) {
|
|
179
|
+
return this.outputOptions.environment.nodePrefixForCoreModules
|
|
180
|
+
? `"node:${mod}"`
|
|
181
|
+
: `"${mod}"`;
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
/**
|
|
185
|
+
* @returns {"const" | "var"} return `const` when it is supported, otherwise `var`
|
|
186
|
+
*/
|
|
187
|
+
renderConst() {
|
|
188
|
+
return this.supportsConst() ? "const" : "var";
|
|
189
|
+
}
|
|
190
|
+
|
|
159
191
|
/**
|
|
160
192
|
* @param {string} returnValue return value
|
|
161
193
|
* @param {string} args arguments
|
|
@@ -179,7 +211,7 @@ class RuntimeTemplate {
|
|
|
179
211
|
}
|
|
180
212
|
|
|
181
213
|
/**
|
|
182
|
-
* @param {
|
|
214
|
+
* @param {(string | { expr: string })[]} args args
|
|
183
215
|
* @returns {string} result expression
|
|
184
216
|
*/
|
|
185
217
|
concatenation(...args) {
|
|
@@ -216,24 +248,25 @@ class RuntimeTemplate {
|
|
|
216
248
|
lastWasExpr = isExpr;
|
|
217
249
|
}
|
|
218
250
|
if (lastWasExpr) concatenationCost -= 3;
|
|
219
|
-
if (typeof args[0] !== "string" && typeof args[1] === "string")
|
|
251
|
+
if (typeof args[0] !== "string" && typeof args[1] === "string") {
|
|
220
252
|
concatenationCost -= 3;
|
|
253
|
+
}
|
|
221
254
|
|
|
222
255
|
if (concatenationCost <= templateCost) return this._es5Concatenation(args);
|
|
223
256
|
|
|
224
257
|
return `\`${args
|
|
225
|
-
.map(arg => (typeof arg === "string" ? arg : `\${${arg.expr}}`))
|
|
258
|
+
.map((arg) => (typeof arg === "string" ? arg : `\${${arg.expr}}`))
|
|
226
259
|
.join("")}\``;
|
|
227
260
|
}
|
|
228
261
|
|
|
229
262
|
/**
|
|
230
|
-
* @param {
|
|
263
|
+
* @param {(string | { expr: string })[]} args args (len >= 2)
|
|
231
264
|
* @returns {string} result expression
|
|
232
265
|
* @private
|
|
233
266
|
*/
|
|
234
267
|
_es5Concatenation(args) {
|
|
235
268
|
const str = args
|
|
236
|
-
.map(arg => (typeof arg === "string" ? JSON.stringify(arg) : arg.expr))
|
|
269
|
+
.map((arg) => (typeof arg === "string" ? JSON.stringify(arg) : arg.expr))
|
|
237
270
|
.join(" + ");
|
|
238
271
|
|
|
239
272
|
// when the first two args are expression, we need to prepend "" + to force string
|
|
@@ -283,7 +316,9 @@ class RuntimeTemplate {
|
|
|
283
316
|
return this.supportsDestructuring()
|
|
284
317
|
? `var {${items.join(", ")}} = ${value};`
|
|
285
318
|
: Template.asString(
|
|
286
|
-
items.map(
|
|
319
|
+
items.map(
|
|
320
|
+
(item) => `var ${item} = ${value}${propertyAccess([item])};`
|
|
321
|
+
)
|
|
287
322
|
);
|
|
288
323
|
}
|
|
289
324
|
|
|
@@ -325,12 +360,12 @@ class RuntimeTemplate {
|
|
|
325
360
|
if (this.outputOptions.pathinfo) {
|
|
326
361
|
content = [message, request, chunkName, chunkReason]
|
|
327
362
|
.filter(Boolean)
|
|
328
|
-
.map(item => this.requestShortener.shorten(item))
|
|
363
|
+
.map((item) => this.requestShortener.shorten(item))
|
|
329
364
|
.join(" | ");
|
|
330
365
|
} else {
|
|
331
366
|
content = [message, chunkName, chunkReason]
|
|
332
367
|
.filter(Boolean)
|
|
333
|
-
.map(item => this.requestShortener.shorten(item))
|
|
368
|
+
.map((item) => this.requestShortener.shorten(item))
|
|
334
369
|
.join(" | ");
|
|
335
370
|
}
|
|
336
371
|
if (!content) return "";
|
|
@@ -597,6 +632,7 @@ class RuntimeTemplate {
|
|
|
597
632
|
* @param {string} options.message a message for the comment
|
|
598
633
|
* @param {boolean=} options.strict if the current module is in strict esm mode
|
|
599
634
|
* @param {boolean=} options.weak if the dependency is weak (will create a nice error message)
|
|
635
|
+
* @param {Dependency} options.dependency dependency
|
|
600
636
|
* @param {RuntimeRequirements} options.runtimeRequirements if set, will be filled with runtime requirements
|
|
601
637
|
* @returns {string} the promise expression
|
|
602
638
|
*/
|
|
@@ -608,6 +644,7 @@ class RuntimeTemplate {
|
|
|
608
644
|
message,
|
|
609
645
|
strict,
|
|
610
646
|
weak,
|
|
647
|
+
dependency,
|
|
611
648
|
runtimeRequirements
|
|
612
649
|
}) {
|
|
613
650
|
if (!module) {
|
|
@@ -664,42 +701,45 @@ class RuntimeTemplate {
|
|
|
664
701
|
type: "statements"
|
|
665
702
|
})} } `;
|
|
666
703
|
}
|
|
667
|
-
const moduleIdExpr = this.moduleId({
|
|
668
|
-
module,
|
|
669
|
-
chunkGraph,
|
|
670
|
-
request,
|
|
671
|
-
weak
|
|
672
|
-
});
|
|
673
704
|
const exportsType = module.getExportsType(chunkGraph.moduleGraph, strict);
|
|
674
|
-
|
|
675
|
-
|
|
676
|
-
|
|
705
|
+
|
|
706
|
+
const isModuleDeferred =
|
|
707
|
+
(dependency instanceof getHarmonyImportDependency() ||
|
|
708
|
+
dependency instanceof getImportDependency()) &&
|
|
709
|
+
ImportPhaseUtils.isDefer(dependency.phase) &&
|
|
710
|
+
!(/** @type {BuildMeta} */ (module.buildMeta).async);
|
|
711
|
+
|
|
712
|
+
if (isModuleDeferred) {
|
|
713
|
+
runtimeRequirements.add(RuntimeGlobals.makeDeferredNamespaceObject);
|
|
714
|
+
const mode = getMakeDeferredNamespaceModeFromExportsType(exportsType);
|
|
715
|
+
const asyncDeps = Array.from(
|
|
716
|
+
getOutgoingAsyncModules(chunkGraph.moduleGraph, module),
|
|
717
|
+
(m) => chunkGraph.getModuleId(m)
|
|
718
|
+
).filter((id) => id !== null);
|
|
719
|
+
if (asyncDeps.length) {
|
|
677
720
|
if (header) {
|
|
678
|
-
const rawModule = this.moduleRaw({
|
|
679
|
-
module,
|
|
680
|
-
chunkGraph,
|
|
681
|
-
request,
|
|
682
|
-
weak,
|
|
683
|
-
runtimeRequirements
|
|
684
|
-
});
|
|
685
721
|
appending = `.then(${this.basicFunction(
|
|
686
722
|
"",
|
|
687
|
-
`${header}return ${
|
|
723
|
+
`${header}return ${RuntimeGlobals.deferredModuleAsyncTransitiveDependencies}(${JSON.stringify(asyncDeps)});`
|
|
688
724
|
)})`;
|
|
689
725
|
} else {
|
|
690
726
|
runtimeRequirements.add(RuntimeGlobals.require);
|
|
691
|
-
appending = `.then(${
|
|
727
|
+
appending = `.then(${this.returningFunction(`${RuntimeGlobals.deferredModuleAsyncTransitiveDependencies}(${JSON.stringify(asyncDeps)})`)})`;
|
|
692
728
|
}
|
|
693
|
-
|
|
694
|
-
|
|
695
|
-
|
|
696
|
-
|
|
697
|
-
|
|
698
|
-
|
|
699
|
-
|
|
700
|
-
|
|
701
|
-
|
|
702
|
-
|
|
729
|
+
appending += `.then(${RuntimeGlobals.makeDeferredNamespaceObject}.bind(${RuntimeGlobals.require}, ${comment}${idExpr}, ${mode}))`;
|
|
730
|
+
} else if (header) {
|
|
731
|
+
appending = `.then(${this.basicFunction(
|
|
732
|
+
"",
|
|
733
|
+
`${header}return ${RuntimeGlobals.makeDeferredNamespaceObject}(${comment}${idExpr}, ${mode});`
|
|
734
|
+
)})`;
|
|
735
|
+
} else {
|
|
736
|
+
runtimeRequirements.add(RuntimeGlobals.require);
|
|
737
|
+
appending = `.then(${RuntimeGlobals.makeDeferredNamespaceObject}.bind(${RuntimeGlobals.require}, ${comment}${idExpr}, ${mode}))`;
|
|
738
|
+
}
|
|
739
|
+
} else {
|
|
740
|
+
let fakeType = 16;
|
|
741
|
+
switch (exportsType) {
|
|
742
|
+
case "namespace":
|
|
703
743
|
if (header) {
|
|
704
744
|
const rawModule = this.moduleRaw({
|
|
705
745
|
module,
|
|
@@ -716,23 +756,56 @@ class RuntimeTemplate {
|
|
|
716
756
|
runtimeRequirements.add(RuntimeGlobals.require);
|
|
717
757
|
appending = `.then(${RuntimeGlobals.require}.bind(${RuntimeGlobals.require}, ${comment}${idExpr}))`;
|
|
718
758
|
}
|
|
719
|
-
|
|
720
|
-
|
|
721
|
-
|
|
722
|
-
|
|
723
|
-
|
|
724
|
-
fakeType |=
|
|
725
|
-
|
|
726
|
-
|
|
727
|
-
|
|
728
|
-
|
|
729
|
-
|
|
759
|
+
break;
|
|
760
|
+
case "dynamic":
|
|
761
|
+
fakeType |= 4;
|
|
762
|
+
/* fall through */
|
|
763
|
+
case "default-with-named":
|
|
764
|
+
fakeType |= 2;
|
|
765
|
+
/* fall through */
|
|
766
|
+
case "default-only":
|
|
767
|
+
runtimeRequirements.add(RuntimeGlobals.createFakeNamespaceObject);
|
|
768
|
+
if (chunkGraph.moduleGraph.isAsync(module)) {
|
|
769
|
+
if (header) {
|
|
770
|
+
const rawModule = this.moduleRaw({
|
|
771
|
+
module,
|
|
772
|
+
chunkGraph,
|
|
773
|
+
request,
|
|
774
|
+
weak,
|
|
775
|
+
runtimeRequirements
|
|
776
|
+
});
|
|
777
|
+
appending = `.then(${this.basicFunction(
|
|
778
|
+
"",
|
|
779
|
+
`${header}return ${rawModule};`
|
|
780
|
+
)})`;
|
|
781
|
+
} else {
|
|
782
|
+
runtimeRequirements.add(RuntimeGlobals.require);
|
|
783
|
+
appending = `.then(${RuntimeGlobals.require}.bind(${RuntimeGlobals.require}, ${comment}${idExpr}))`;
|
|
784
|
+
}
|
|
785
|
+
appending += `.then(${this.returningFunction(
|
|
786
|
+
`${RuntimeGlobals.createFakeNamespaceObject}(m, ${fakeType})`,
|
|
787
|
+
"m"
|
|
730
788
|
)})`;
|
|
731
789
|
} else {
|
|
732
|
-
|
|
790
|
+
fakeType |= 1;
|
|
791
|
+
if (header) {
|
|
792
|
+
const moduleIdExpr = this.moduleId({
|
|
793
|
+
module,
|
|
794
|
+
chunkGraph,
|
|
795
|
+
request,
|
|
796
|
+
weak
|
|
797
|
+
});
|
|
798
|
+
const returnExpression = `${RuntimeGlobals.createFakeNamespaceObject}(${moduleIdExpr}, ${fakeType})`;
|
|
799
|
+
appending = `.then(${this.basicFunction(
|
|
800
|
+
"",
|
|
801
|
+
`${header}return ${returnExpression};`
|
|
802
|
+
)})`;
|
|
803
|
+
} else {
|
|
804
|
+
appending = `.then(${RuntimeGlobals.createFakeNamespaceObject}.bind(${RuntimeGlobals.require}, ${comment}${idExpr}, ${fakeType}))`;
|
|
805
|
+
}
|
|
733
806
|
}
|
|
734
|
-
|
|
735
|
-
|
|
807
|
+
break;
|
|
808
|
+
}
|
|
736
809
|
}
|
|
737
810
|
|
|
738
811
|
return `${promise || "Promise.resolve()"}${appending}`;
|
|
@@ -756,22 +829,22 @@ class RuntimeTemplate {
|
|
|
756
829
|
if (typeof runtimeCondition === "boolean") return `${runtimeCondition}`;
|
|
757
830
|
/** @type {Set<string>} */
|
|
758
831
|
const positiveRuntimeIds = new Set();
|
|
759
|
-
forEachRuntime(runtimeCondition, runtime =>
|
|
832
|
+
forEachRuntime(runtimeCondition, (runtime) =>
|
|
760
833
|
positiveRuntimeIds.add(
|
|
761
834
|
`${chunkGraph.getRuntimeId(/** @type {string} */ (runtime))}`
|
|
762
835
|
)
|
|
763
836
|
);
|
|
764
837
|
/** @type {Set<string>} */
|
|
765
838
|
const negativeRuntimeIds = new Set();
|
|
766
|
-
forEachRuntime(subtractRuntime(runtime, runtimeCondition), runtime =>
|
|
839
|
+
forEachRuntime(subtractRuntime(runtime, runtimeCondition), (runtime) =>
|
|
767
840
|
negativeRuntimeIds.add(
|
|
768
841
|
`${chunkGraph.getRuntimeId(/** @type {string} */ (runtime))}`
|
|
769
842
|
)
|
|
770
843
|
);
|
|
771
844
|
runtimeRequirements.add(RuntimeGlobals.runtimeId);
|
|
772
845
|
return compileBooleanMatcher.fromLists(
|
|
773
|
-
|
|
774
|
-
|
|
846
|
+
[...positiveRuntimeIds],
|
|
847
|
+
[...negativeRuntimeIds]
|
|
775
848
|
)(RuntimeGlobals.runtimeId);
|
|
776
849
|
}
|
|
777
850
|
|
|
@@ -779,22 +852,26 @@ class RuntimeTemplate {
|
|
|
779
852
|
* @param {object} options options object
|
|
780
853
|
* @param {boolean=} options.update whether a new variable should be created or the existing one updated
|
|
781
854
|
* @param {Module} options.module the module
|
|
855
|
+
* @param {ModuleGraph} options.moduleGraph the module graph
|
|
782
856
|
* @param {ChunkGraph} options.chunkGraph the chunk graph
|
|
783
857
|
* @param {string} options.request the request that should be printed as comment
|
|
784
858
|
* @param {string} options.importVar name of the import variable
|
|
785
859
|
* @param {Module} options.originModule module in which the statement is emitted
|
|
786
860
|
* @param {boolean=} options.weak true, if this is a weak dependency
|
|
787
861
|
* @param {RuntimeRequirements} options.runtimeRequirements if set, will be filled with runtime requirements
|
|
862
|
+
* @param {ModuleDependency} options.dependency module dependency
|
|
788
863
|
* @returns {[string, string]} the import statement and the compat statement
|
|
789
864
|
*/
|
|
790
865
|
importStatement({
|
|
791
866
|
update,
|
|
792
867
|
module,
|
|
868
|
+
moduleGraph,
|
|
793
869
|
chunkGraph,
|
|
794
870
|
request,
|
|
795
871
|
importVar,
|
|
796
872
|
originModule,
|
|
797
873
|
weak,
|
|
874
|
+
dependency,
|
|
798
875
|
runtimeRequirements
|
|
799
876
|
}) {
|
|
800
877
|
if (!module) {
|
|
@@ -805,6 +882,7 @@ class RuntimeTemplate {
|
|
|
805
882
|
""
|
|
806
883
|
];
|
|
807
884
|
}
|
|
885
|
+
|
|
808
886
|
if (chunkGraph.getModuleId(module) === null) {
|
|
809
887
|
if (weak) {
|
|
810
888
|
// only weak referenced modules don't get an id
|
|
@@ -840,7 +918,28 @@ class RuntimeTemplate {
|
|
|
840
918
|
(originModule.buildMeta).strictHarmonyModule
|
|
841
919
|
);
|
|
842
920
|
runtimeRequirements.add(RuntimeGlobals.require);
|
|
843
|
-
|
|
921
|
+
let importContent;
|
|
922
|
+
|
|
923
|
+
const isModuleDeferred =
|
|
924
|
+
(dependency instanceof getHarmonyImportDependency() ||
|
|
925
|
+
dependency instanceof getImportDependency()) &&
|
|
926
|
+
ImportPhaseUtils.isDefer(dependency.phase) &&
|
|
927
|
+
!(/** @type {BuildMeta} */ (module.buildMeta).async);
|
|
928
|
+
|
|
929
|
+
if (isModuleDeferred) {
|
|
930
|
+
/** @type {Set<Module>} */
|
|
931
|
+
const outgoingAsyncModules = getOutgoingAsyncModules(moduleGraph, module);
|
|
932
|
+
|
|
933
|
+
importContent = `/* deferred harmony import */ ${optDeclaration}${importVar} = ${getOptimizedDeferredModule(
|
|
934
|
+
moduleId,
|
|
935
|
+
exportsType,
|
|
936
|
+
Array.from(outgoingAsyncModules, (mod) => chunkGraph.getModuleId(mod)),
|
|
937
|
+
runtimeRequirements
|
|
938
|
+
)};\n`;
|
|
939
|
+
|
|
940
|
+
return [importContent, ""];
|
|
941
|
+
}
|
|
942
|
+
importContent = `/* harmony import */ ${optDeclaration}${importVar} = ${RuntimeGlobals.require}(${moduleId});\n`;
|
|
844
943
|
|
|
845
944
|
if (exportsType === "dynamic") {
|
|
846
945
|
runtimeRequirements.add(RuntimeGlobals.compatGetDefaultExport);
|
|
@@ -853,24 +952,28 @@ class RuntimeTemplate {
|
|
|
853
952
|
}
|
|
854
953
|
|
|
855
954
|
/**
|
|
955
|
+
* @template GenerateContext
|
|
856
956
|
* @param {object} options options
|
|
857
957
|
* @param {ModuleGraph} options.moduleGraph the module graph
|
|
958
|
+
* @param {ChunkGraph} options.chunkGraph the chunk graph
|
|
858
959
|
* @param {Module} options.module the module
|
|
859
960
|
* @param {string} options.request the request
|
|
860
961
|
* @param {string | string[]} options.exportName the export name
|
|
861
962
|
* @param {Module} options.originModule the origin module
|
|
862
|
-
* @param {boolean|undefined} options.asiSafe true, if location is safe for ASI, a bracket can be emitted
|
|
963
|
+
* @param {boolean | undefined} options.asiSafe true, if location is safe for ASI, a bracket can be emitted
|
|
863
964
|
* @param {boolean} options.isCall true, if expression will be called
|
|
864
965
|
* @param {boolean | null} options.callContext when false, call context will not be preserved
|
|
865
966
|
* @param {boolean} options.defaultInterop when true and accessing the default exports, interop code will be generated
|
|
866
967
|
* @param {string} options.importVar the identifier name of the import variable
|
|
867
|
-
* @param {InitFragment<
|
|
968
|
+
* @param {InitFragment<GenerateContext>[]} options.initFragments init fragments will be added here
|
|
868
969
|
* @param {RuntimeSpec} options.runtime runtime for which this code will be generated
|
|
869
970
|
* @param {RuntimeRequirements} options.runtimeRequirements if set, will be filled with runtime requirements
|
|
971
|
+
* @param {ModuleDependency} options.dependency module dependency
|
|
870
972
|
* @returns {string} expression
|
|
871
973
|
*/
|
|
872
974
|
exportFromImport({
|
|
873
975
|
moduleGraph,
|
|
976
|
+
chunkGraph,
|
|
874
977
|
module,
|
|
875
978
|
request,
|
|
876
979
|
exportName,
|
|
@@ -882,7 +985,8 @@ class RuntimeTemplate {
|
|
|
882
985
|
importVar,
|
|
883
986
|
initFragments,
|
|
884
987
|
runtime,
|
|
885
|
-
runtimeRequirements
|
|
988
|
+
runtimeRequirements,
|
|
989
|
+
dependency
|
|
886
990
|
}) {
|
|
887
991
|
if (!module) {
|
|
888
992
|
return this.missingModule({
|
|
@@ -898,8 +1002,37 @@ class RuntimeTemplate {
|
|
|
898
1002
|
(originModule.buildMeta).strictHarmonyModule
|
|
899
1003
|
);
|
|
900
1004
|
|
|
1005
|
+
const isModuleDeferred =
|
|
1006
|
+
(dependency instanceof getHarmonyImportDependency() ||
|
|
1007
|
+
dependency instanceof getImportDependency()) &&
|
|
1008
|
+
ImportPhaseUtils.isDefer(dependency.phase) &&
|
|
1009
|
+
!(/** @type {BuildMeta} */ (module.buildMeta).async);
|
|
1010
|
+
|
|
901
1011
|
if (defaultInterop) {
|
|
1012
|
+
// when the defaultInterop is used (when a ESM imports a CJS module),
|
|
902
1013
|
if (exportName.length > 0 && exportName[0] === "default") {
|
|
1014
|
+
if (isModuleDeferred && exportsType !== "namespace") {
|
|
1015
|
+
const exportsInfo = moduleGraph.getExportsInfo(module);
|
|
1016
|
+
const name = exportName.slice(1);
|
|
1017
|
+
const used = exportsInfo.getUsedName(name, runtime);
|
|
1018
|
+
if (!used) {
|
|
1019
|
+
const comment = Template.toNormalComment(
|
|
1020
|
+
`unused export ${propertyAccess(exportName)}`
|
|
1021
|
+
);
|
|
1022
|
+
return `${comment} undefined`;
|
|
1023
|
+
}
|
|
1024
|
+
const access = `${importVar}.a${propertyAccess(used)}`;
|
|
1025
|
+
if (isCall || asiSafe === undefined) {
|
|
1026
|
+
return access;
|
|
1027
|
+
}
|
|
1028
|
+
return asiSafe ? `(${access})` : `;(${access})`;
|
|
1029
|
+
}
|
|
1030
|
+
// accessing the .default property is same thing as `require()` the module.
|
|
1031
|
+
|
|
1032
|
+
// For example:
|
|
1033
|
+
// import mod from "cjs"; mod.default.x;
|
|
1034
|
+
// is translated to
|
|
1035
|
+
// var mod = require("cjs"); mod.x;
|
|
903
1036
|
switch (exportsType) {
|
|
904
1037
|
case "dynamic":
|
|
905
1038
|
if (isCall) {
|
|
@@ -917,7 +1050,11 @@ class RuntimeTemplate {
|
|
|
917
1050
|
break;
|
|
918
1051
|
}
|
|
919
1052
|
} else if (exportName.length > 0) {
|
|
1053
|
+
// the property used is not .default.
|
|
1054
|
+
// For example:
|
|
1055
|
+
// import * as ns from "cjs"; cjs.prop;
|
|
920
1056
|
if (exportsType === "default-only") {
|
|
1057
|
+
// in the strictest case, it is a runtime error (e.g. NodeJS behavior of CJS-ESM interop).
|
|
921
1058
|
return `/* non-default import from non-esm module */undefined${propertyAccess(
|
|
922
1059
|
exportName,
|
|
923
1060
|
1
|
|
@@ -928,10 +1065,17 @@ class RuntimeTemplate {
|
|
|
928
1065
|
) {
|
|
929
1066
|
return "/* __esModule */true";
|
|
930
1067
|
}
|
|
1068
|
+
} else if (isModuleDeferred) {
|
|
1069
|
+
// now exportName.length is 0
|
|
1070
|
+
// fall through to the end of this function, create the namespace there.
|
|
931
1071
|
} else if (
|
|
932
1072
|
exportsType === "default-only" ||
|
|
933
1073
|
exportsType === "default-with-named"
|
|
934
1074
|
) {
|
|
1075
|
+
// now exportName.length is 0, which means the namespace object is used in an unknown way
|
|
1076
|
+
// for example:
|
|
1077
|
+
// import * as ns from "cjs"; console.log(ns);
|
|
1078
|
+
// we will need to createFakeNamespaceObject that simulates ES Module namespace object
|
|
935
1079
|
runtimeRequirements.add(RuntimeGlobals.createFakeNamespaceObject);
|
|
936
1080
|
initFragments.push(
|
|
937
1081
|
new InitFragment(
|
|
@@ -951,6 +1095,8 @@ class RuntimeTemplate {
|
|
|
951
1095
|
|
|
952
1096
|
if (exportName.length > 0) {
|
|
953
1097
|
const exportsInfo = moduleGraph.getExportsInfo(module);
|
|
1098
|
+
// in some case the exported item is renamed (get this by getUsedName). for example,
|
|
1099
|
+
// x.default might be emitted as x.Z (default is renamed to Z)
|
|
954
1100
|
const used = exportsInfo.getUsedName(exportName, runtime);
|
|
955
1101
|
if (!used) {
|
|
956
1102
|
const comment = Template.toNormalComment(
|
|
@@ -961,7 +1107,9 @@ class RuntimeTemplate {
|
|
|
961
1107
|
const comment = equals(used, exportName)
|
|
962
1108
|
? ""
|
|
963
1109
|
: `${Template.toNormalComment(propertyAccess(exportName))} `;
|
|
964
|
-
const access = `${importVar}${
|
|
1110
|
+
const access = `${importVar}${
|
|
1111
|
+
isModuleDeferred ? ".a" : ""
|
|
1112
|
+
}${comment}${propertyAccess(used)}`;
|
|
965
1113
|
if (isCall && callContext === false) {
|
|
966
1114
|
return asiSafe
|
|
967
1115
|
? `(0,${access})`
|
|
@@ -971,6 +1119,30 @@ class RuntimeTemplate {
|
|
|
971
1119
|
}
|
|
972
1120
|
return access;
|
|
973
1121
|
}
|
|
1122
|
+
if (isModuleDeferred) {
|
|
1123
|
+
initFragments.push(
|
|
1124
|
+
new InitFragment(
|
|
1125
|
+
`var ${importVar}_deferred_namespace_cache;\n`,
|
|
1126
|
+
InitFragment.STAGE_CONSTANTS,
|
|
1127
|
+
-1,
|
|
1128
|
+
`${importVar}_deferred_namespace_cache`
|
|
1129
|
+
)
|
|
1130
|
+
);
|
|
1131
|
+
|
|
1132
|
+
runtimeRequirements.add(RuntimeGlobals.makeDeferredNamespaceObject);
|
|
1133
|
+
const id = chunkGraph.getModuleId(module);
|
|
1134
|
+
const type = getMakeDeferredNamespaceModeFromExportsType(exportsType);
|
|
1135
|
+
const init = `${
|
|
1136
|
+
RuntimeGlobals.makeDeferredNamespaceObject
|
|
1137
|
+
}(${JSON.stringify(id)}, ${type})`;
|
|
1138
|
+
|
|
1139
|
+
return `/*#__PURE__*/ ${
|
|
1140
|
+
asiSafe ? "" : asiSafe === false ? ";" : "Object"
|
|
1141
|
+
}(${importVar}_deferred_namespace_cache || (${importVar}_deferred_namespace_cache = ${init}))`;
|
|
1142
|
+
}
|
|
1143
|
+
// if we hit here, the importVar is either
|
|
1144
|
+
// - already a ES module namespace object
|
|
1145
|
+
// - or imported by a way that does not need interop.
|
|
974
1146
|
return importVar;
|
|
975
1147
|
}
|
|
976
1148
|
|
|
@@ -997,7 +1169,7 @@ class RuntimeTemplate {
|
|
|
997
1169
|
return `Promise.resolve(${comment.trim()})`;
|
|
998
1170
|
}
|
|
999
1171
|
const chunks = chunkGroup.chunks.filter(
|
|
1000
|
-
chunk => !chunk.hasRuntime() && chunk.id !== null
|
|
1172
|
+
(chunk) => !chunk.hasRuntime() && chunk.id !== null
|
|
1001
1173
|
);
|
|
1002
1174
|
const comment = this.comment({
|
|
1003
1175
|
message,
|
|
@@ -1029,7 +1201,7 @@ class RuntimeTemplate {
|
|
|
1029
1201
|
* @param {Chunk} chunk chunk
|
|
1030
1202
|
* @returns {string} require chunk id code
|
|
1031
1203
|
*/
|
|
1032
|
-
const requireChunkId = chunk =>
|
|
1204
|
+
const requireChunkId = (chunk) =>
|
|
1033
1205
|
`${RuntimeGlobals.ensureChunk}(${JSON.stringify(chunk.id)}${
|
|
1034
1206
|
fetchPriority ? `, ${JSON.stringify(fetchPriority)}` : ""
|
|
1035
1207
|
})`;
|
package/lib/SelfModuleFactory.js
CHANGED
|
@@ -5,8 +5,8 @@
|
|
|
5
5
|
|
|
6
6
|
"use strict";
|
|
7
7
|
|
|
8
|
+
/** @typedef {import("./ModuleFactory").ModuleFactoryCallback} ModuleFactoryCallback */
|
|
8
9
|
/** @typedef {import("./ModuleFactory").ModuleFactoryCreateData} ModuleFactoryCreateData */
|
|
9
|
-
/** @typedef {import("./ModuleFactory").ModuleFactoryResult} ModuleFactoryResult */
|
|
10
10
|
/** @typedef {import("./ModuleGraph")} ModuleGraph */
|
|
11
11
|
|
|
12
12
|
class SelfModuleFactory {
|
|
@@ -19,7 +19,7 @@ class SelfModuleFactory {
|
|
|
19
19
|
|
|
20
20
|
/**
|
|
21
21
|
* @param {ModuleFactoryCreateData} data data object
|
|
22
|
-
* @param {
|
|
22
|
+
* @param {ModuleFactoryCallback} callback callback
|
|
23
23
|
* @returns {void}
|
|
24
24
|
*/
|
|
25
25
|
create(data, callback) {
|
package/lib/SizeFormatHelpers.js
CHANGED
|
@@ -6,10 +6,10 @@
|
|
|
6
6
|
"use strict";
|
|
7
7
|
|
|
8
8
|
/**
|
|
9
|
-
* @param {number} size the size in bytes
|
|
9
|
+
* @param {number=} size the size in bytes
|
|
10
10
|
* @returns {string} the formatted size
|
|
11
11
|
*/
|
|
12
|
-
module.exports.formatSize = size => {
|
|
12
|
+
module.exports.formatSize = (size) => {
|
|
13
13
|
if (typeof size !== "number" || Number.isNaN(size) === true) {
|
|
14
14
|
return "unknown size";
|
|
15
15
|
}
|