@depup/webpack 5.109.0-depup.0 → 5.110.1-depup.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +7 -7
- package/bin/webpack.js +12 -0
- package/changes.json +10 -10
- package/lib/APIPlugin.js +123 -17
- package/lib/AsyncDependenciesBlock.js +10 -7
- package/lib/AutomaticPrefetchPlugin.js +1 -1
- package/lib/BannerPlugin.js +10 -6
- package/lib/CacheFacade.js +6 -6
- package/lib/Chunk.js +14 -11
- package/lib/ChunkGraph.js +43 -32
- package/lib/ChunkGroup.js +7 -7
- package/lib/ChunkTemplate.js +35 -44
- package/lib/CircularModulesPlugin.js +205 -28
- package/lib/CleanPlugin.js +15 -16
- package/lib/CodeGenerationResults.js +11 -8
- package/lib/CompatibilityPlugin.js +38 -7
- package/lib/Compilation.js +709 -414
- package/lib/Compiler.js +69 -42
- package/lib/ConcatenationScope.js +117 -8
- package/lib/ConditionalInitFragment.js +3 -3
- package/lib/ConstPlugin.js +13 -11
- package/lib/ContextExclusionPlugin.js +1 -1
- package/lib/ContextModule.js +146 -54
- package/lib/ContextModuleFactory.js +46 -14
- package/lib/ContextReplacementPlugin.js +12 -14
- package/lib/DefinePlugin.js +168 -57
- package/lib/DependenciesBlock.js +9 -6
- package/lib/Dependency.js +36 -16
- package/lib/DependencyTemplate.js +11 -12
- package/lib/DependencyTemplates.js +3 -3
- package/lib/DotenvPlugin.js +50 -13
- package/lib/DynamicEntryPlugin.js +8 -4
- package/lib/EntryOptionPlugin.js +8 -4
- package/lib/EntryPlugin.js +2 -2
- package/lib/Entrypoint.js +6 -2
- package/lib/EnvironmentPlugin.js +2 -2
- package/lib/EvalDevToolModulePlugin.js +8 -4
- package/lib/EvalSourceMapDevToolPlugin.js +15 -8
- package/lib/ExportsInfo.js +123 -19
- package/lib/ExportsInfoApiPlugin.js +2 -4
- package/lib/ExternalModule.js +242 -84
- package/lib/ExternalModuleFactoryPlugin.js +97 -38
- package/lib/ExternalsPlugin.js +10 -6
- package/lib/FileSystemInfo.js +116 -42
- package/lib/FlagAllModulesAsUsedPlugin.js +2 -3
- package/lib/FlagDependencyExportsPlugin.js +76 -19
- package/lib/FlagDependencyUsagePlugin.js +63 -57
- package/lib/FlagEntryExportAsUsedPlugin.js +1 -1
- package/lib/Generator.js +36 -15
- package/lib/HotModuleReplacementPlugin.js +16 -44
- package/lib/IgnorePlugin.js +8 -4
- package/lib/IgnoreWarningsPlugin.js +2 -2
- package/lib/InitFragment.js +28 -36
- package/lib/JavascriptMetaInfoPlugin.js +35 -4
- package/lib/LazyBarrel.js +3 -4
- package/lib/LibraryTemplatePlugin.js +10 -6
- package/lib/LoaderOptionsPlugin.js +7 -3
- package/lib/LoaderTargetPlugin.js +1 -1
- package/lib/MainTemplate.js +49 -42
- package/lib/ManifestPlugin.js +12 -11
- package/lib/Module.js +62 -33
- package/lib/ModuleFactory.js +3 -3
- package/lib/ModuleFilenameHelpers.js +22 -6
- package/lib/ModuleGraph.js +195 -21
- package/lib/ModuleGraphConnection.js +6 -13
- package/lib/ModuleInfoHeaderPlugin.js +8 -10
- package/lib/ModuleTemplate.js +62 -63
- package/lib/MultiCompiler.js +130 -64
- package/lib/MultiStats.js +40 -9
- package/lib/MultiWatching.js +3 -3
- package/lib/NoEmitOnErrorsPlugin.js +1 -1
- package/lib/NodeStuffPlugin.js +29 -19
- package/lib/NormalModule.js +221 -156
- package/lib/NormalModuleFactory.js +563 -112
- package/lib/NormalModuleReplacementPlugin.js +5 -8
- package/lib/NullFactory.js +6 -2
- package/lib/OptionsApply.js +7 -3
- package/lib/Parser.js +7 -3
- package/lib/PlatformPlugin.js +2 -2
- package/lib/PrefetchPlugin.js +1 -1
- package/lib/ProgressPlugin.js +16 -13
- package/lib/ProvidePlugin.js +3 -5
- package/lib/RawModule.js +25 -17
- package/lib/RecordIdsPlugin.js +3 -3
- package/lib/RequestShortener.js +1 -1
- package/lib/ResolverFactory.js +2 -2
- package/lib/RuntimeGlobals.js +22 -10
- package/lib/RuntimeModule.js +29 -19
- package/lib/RuntimePlugin.js +346 -256
- package/lib/RuntimeTemplate.js +2792 -352
- package/lib/SelfModuleFactory.js +7 -3
- package/lib/SourceMapDevToolModuleOptionsPlugin.js +6 -2
- package/lib/SourceMapDevToolPlugin.js +30 -20
- package/lib/Stats.js +3 -4
- package/lib/Template.js +55 -25
- package/lib/TemplatedPathPlugin.js +96 -14
- package/lib/UseStrictPlugin.js +4 -6
- package/lib/WarnCaseSensitiveModulesPlugin.js +4 -4
- package/lib/WarnDeprecatedOptionPlugin.js +1 -1
- package/lib/WarnNoModeSetPlugin.js +1 -1
- package/lib/WatchIgnorePlugin.js +8 -6
- package/lib/Watching.js +8 -8
- package/lib/WebpackIsIncludedPlugin.js +2 -4
- package/lib/WebpackOptionsApply.js +308 -18
- package/lib/WebpackOptionsDefaulter.js +6 -2
- package/lib/asset/AssetBytesGenerator.js +12 -10
- package/lib/asset/AssetBytesParser.js +2 -4
- package/lib/asset/AssetGenerator.js +188 -95
- package/lib/asset/AssetModule.js +7 -3
- package/lib/asset/AssetModulesPlugin.js +110 -38
- package/lib/asset/AssetParser.js +9 -7
- package/lib/asset/AssetSourceGenerator.js +60 -13
- package/lib/asset/AssetSourceParser.js +2 -4
- package/lib/asset/RawDataUrlModule.js +24 -16
- package/lib/asset/WebManifestGenerator.js +8 -10
- package/lib/asset/WebManifestParser.js +24 -10
- package/lib/async-modules/AsyncModuleHelpers.js +2 -2
- package/lib/async-modules/AwaitDependenciesInitFragment.js +2 -2
- package/lib/async-modules/InferAsyncModulesPlugin.js +2 -2
- package/lib/async-modules/isGeneratorLowered.js +4 -4
- package/lib/buildChunkGraph.js +36 -27
- package/lib/bun/BunTargetPlugin.js +1 -1
- package/lib/cache/AddBuildDependenciesPlugin.js +1 -1
- package/lib/cache/AddManagedPathsPlugin.js +1 -1
- package/lib/cache/IdleFileCachePlugin.js +2 -2
- package/lib/cache/MemoryCachePlugin.js +18 -10
- package/lib/cache/MemoryWithGcCachePlugin.js +34 -22
- package/lib/cache/PackFileCacheStrategy.js +289 -28
- package/lib/cache/ResolverCachePlugin.js +38 -18
- package/lib/cache/getLazyHashedEtag.js +1 -2
- package/lib/cache/mergeEtags.js +1 -1
- package/lib/cli.js +1 -3
- package/lib/config/browserslistTargetHandler.js +41 -5
- package/lib/config/defaults.js +282 -81
- package/lib/config/defineConfig.js +10 -2
- package/lib/config/getClaimedAssetTypes.js +65 -0
- package/lib/config/normalization.js +36 -16
- package/lib/config/target.js +46 -3
- package/lib/container/ContainerEntryDependency.js +1 -1
- package/lib/container/ContainerEntryModule.js +24 -15
- package/lib/container/ContainerEntryModuleFactory.js +7 -3
- package/lib/container/ContainerPlugin.js +9 -10
- package/lib/container/ContainerReferencePlugin.js +6 -2
- package/lib/container/FallbackDependency.js +1 -1
- package/lib/container/FallbackModule.js +24 -17
- package/lib/container/FallbackModuleFactory.js +7 -3
- package/lib/container/HoistContainerReferencesPlugin.js +53 -66
- package/lib/container/ModuleFederationPlugin.js +7 -18
- package/lib/container/RemoteModule.js +27 -19
- package/lib/container/RemoteRuntimeModule.js +10 -8
- package/lib/container/moduleFederationHooks.js +32 -0
- package/lib/css/CssGenerator.js +178 -44
- package/lib/css/CssInjectStyleRuntimeModule.js +7 -5
- package/lib/css/CssLoadingRuntimeModule.js +82 -36
- package/lib/css/CssModule.js +10 -7
- package/lib/css/CssModulesPlugin.js +197 -106
- package/lib/css/CssParser.js +1248 -618
- package/lib/css/CssServerStylesRuntimeModule.js +54 -0
- package/lib/css/cssMinify.js +168 -0
- package/lib/css/data.js +5324 -0
- package/lib/css/syntax.js +10396 -952
- package/lib/debug/ProfilingPlugin.js +14 -9
- package/lib/deno/DenoTargetPlugin.js +1 -1
- package/lib/dependencies/AMDDefineDependency.js +112 -87
- package/lib/dependencies/AMDDefineDependencyParserPlugin.js +30 -17
- package/lib/dependencies/AMDPlugin.js +9 -7
- package/lib/dependencies/AMDRequireArrayDependency.js +5 -5
- package/lib/dependencies/AMDRequireContextDependency.js +2 -2
- package/lib/dependencies/AMDRequireDependenciesBlock.js +1 -1
- package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +25 -14
- package/lib/dependencies/AMDRequireDependency.js +8 -7
- package/lib/dependencies/AMDRequireItemDependency.js +1 -1
- package/lib/dependencies/AMDRuntimeModules.js +21 -1
- package/lib/dependencies/BuildTimeConstDependency.js +102 -0
- package/lib/dependencies/CachedConstDependency.js +11 -8
- package/lib/dependencies/CommonJsDependencyHelpers.js +67 -46
- package/lib/dependencies/CommonJsExportRequireDependency.js +140 -45
- package/lib/dependencies/CommonJsExportsDependency.js +53 -49
- package/lib/dependencies/CommonJsExportsParserPlugin.js +207 -25
- package/lib/dependencies/CommonJsFullRequireDependency.js +140 -26
- package/lib/dependencies/CommonJsImportsParserPlugin.js +100 -48
- package/lib/dependencies/CommonJsObjectExportDependency.js +188 -0
- package/lib/dependencies/CommonJsPlugin.js +35 -6
- package/lib/dependencies/CommonJsRequireContextDependency.js +5 -6
- package/lib/dependencies/CommonJsRequireDependency.js +156 -27
- package/lib/dependencies/CommonJsSelfReferenceDependency.js +63 -38
- package/lib/dependencies/ConstDependency.js +8 -9
- package/lib/dependencies/ContextDependency.js +12 -8
- package/lib/dependencies/ContextDependencyHelpers.js +14 -9
- package/lib/dependencies/ContextDependencyTemplateAsId.js +4 -4
- package/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +4 -4
- package/lib/dependencies/ContextElementDependency.js +31 -12
- package/lib/dependencies/CreateRequireParserPlugin.js +12 -7
- package/lib/dependencies/CreateScriptUrlDependency.js +4 -4
- package/lib/dependencies/CssIcssExportDependency.js +56 -28
- package/lib/dependencies/CssIcssImportDependency.js +17 -13
- package/lib/dependencies/CssIcssSymbolDependency.js +9 -10
- package/lib/dependencies/CssImportDependency.js +18 -9
- package/lib/dependencies/CssUrlDependency.js +17 -13
- package/lib/dependencies/DllEntryDependency.js +1 -1
- package/lib/dependencies/DynamicExports.js +2 -2
- package/lib/dependencies/ExportBindingInitFragment.js +36 -9
- package/lib/dependencies/ExportsInfoDependency.js +7 -8
- package/lib/dependencies/ExternalModuleDependency.js +9 -5
- package/lib/dependencies/ExternalModuleInitFragment.js +2 -2
- package/lib/dependencies/ExternalModuleInitFragmentDependency.js +8 -5
- package/lib/dependencies/HarmonyAcceptDependency.js +5 -5
- package/lib/dependencies/HarmonyCompatibilityDependency.js +52 -17
- package/lib/dependencies/HarmonyDetectionParserPlugin.js +11 -7
- package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +15 -11
- package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +78 -12
- package/lib/dependencies/HarmonyExportExpressionDependency.js +23 -18
- package/lib/dependencies/HarmonyExportHeaderDependency.js +7 -7
- package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +159 -71
- package/lib/dependencies/HarmonyExportInitFragment.js +18 -6
- package/lib/dependencies/HarmonyExportSpecifierDependency.js +51 -14
- package/lib/dependencies/HarmonyExports.js +7 -4
- package/lib/dependencies/HarmonyImportDependency.js +28 -20
- package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +31 -24
- package/lib/dependencies/HarmonyImportGuard.js +21 -30
- package/lib/dependencies/HarmonyImportSideEffectDependency.js +38 -9
- package/lib/dependencies/HarmonyImportSpecifierDependency.js +106 -55
- package/lib/dependencies/HarmonyModulesPlugin.js +7 -3
- package/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +1 -3
- package/lib/dependencies/HtmlEntryDependency.js +37 -29
- package/lib/dependencies/HtmlInlineHtmlDependency.js +7 -8
- package/lib/dependencies/HtmlInlineScriptDependency.js +11 -8
- package/lib/dependencies/HtmlInlineStyleDependency.js +7 -10
- package/lib/dependencies/HtmlSourceDependency.js +22 -14
- package/lib/dependencies/ImportContextDependency.js +2 -2
- package/lib/dependencies/ImportDependency.js +24 -20
- package/lib/dependencies/ImportEagerDependency.js +6 -9
- package/lib/dependencies/ImportMetaContextDependency.js +2 -2
- package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +14 -13
- package/lib/dependencies/ImportMetaContextPlugin.js +7 -3
- package/lib/dependencies/ImportMetaGlobDependency.js +2 -2
- package/lib/dependencies/ImportMetaGlobDependencyParserPlugin.js +2 -3
- package/lib/dependencies/ImportMetaGlobHelpers.js +19 -22
- package/lib/dependencies/ImportMetaHotAcceptDependency.js +1 -1
- package/lib/dependencies/ImportMetaHotDeclineDependency.js +1 -1
- package/lib/dependencies/ImportMetaPlugin.js +154 -71
- package/lib/dependencies/ImportMetaResolveDependency.js +3 -4
- package/lib/dependencies/ImportParserPlugin.js +49 -35
- package/lib/dependencies/ImportPhase.js +12 -5
- package/lib/dependencies/ImportPlugin.js +7 -3
- package/lib/dependencies/ImportWeakDependency.js +6 -9
- package/lib/dependencies/JsonExportsDependency.js +11 -7
- package/lib/dependencies/LoaderDependency.js +2 -2
- package/lib/dependencies/LoaderImportDependency.js +2 -2
- package/lib/dependencies/LoaderPlugin.js +11 -7
- package/lib/dependencies/LocalModuleDependency.js +5 -5
- package/lib/dependencies/LocalModulesHelpers.js +1 -1
- package/lib/dependencies/ModuleDecoratorDependency.js +6 -7
- package/lib/dependencies/ModuleDependency.js +9 -6
- package/lib/dependencies/ModuleDependencyTemplateAsId.js +4 -4
- package/lib/dependencies/ModuleDependencyTemplateAsRequireId.js +3 -3
- package/lib/dependencies/ModuleHotAcceptDependency.js +1 -1
- package/lib/dependencies/ModuleHotDeclineDependency.js +1 -1
- package/lib/dependencies/ModuleInitFragmentDependency.js +24 -10
- package/lib/dependencies/NullDependency.js +3 -3
- package/lib/dependencies/ProvidedDependency.js +14 -10
- package/lib/dependencies/PureExpressionDependency.js +9 -10
- package/lib/dependencies/RequireContextDependency.js +2 -2
- package/lib/dependencies/RequireContextDependencyParserPlugin.js +2 -4
- package/lib/dependencies/RequireContextPlugin.js +8 -4
- package/lib/dependencies/RequireEnsureDependenciesBlock.js +2 -2
- package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +5 -8
- package/lib/dependencies/RequireEnsureDependency.js +8 -7
- package/lib/dependencies/RequireEnsurePlugin.js +7 -3
- package/lib/dependencies/RequireHeaderDependency.js +51 -12
- package/lib/dependencies/RequireIncludeDependency.js +6 -6
- package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +2 -3
- package/lib/dependencies/RequireIncludePlugin.js +7 -3
- package/lib/dependencies/RequireJsStuffPlugin.js +7 -3
- package/lib/dependencies/RequireResolveContextDependency.js +2 -2
- package/lib/dependencies/RequireResolveDependency.js +4 -4
- package/lib/dependencies/RequireResolveHeaderDependency.js +4 -4
- package/lib/dependencies/RuntimeRequirementsDependency.js +5 -6
- package/lib/dependencies/StaticExportsDependency.js +2 -2
- package/lib/dependencies/SystemPlugin.js +10 -6
- package/lib/dependencies/SystemRuntimeModule.js +10 -0
- package/lib/dependencies/TopLevelAwaitDependency.js +11 -7
- package/lib/dependencies/URLContextDependency.js +2 -2
- package/lib/dependencies/URLDependency.js +110 -64
- package/lib/dependencies/URLPlugin.js +7 -3
- package/lib/dependencies/UnsupportedDependency.js +4 -4
- package/lib/dependencies/WebAssemblyExportImportedDependency.js +3 -4
- package/lib/dependencies/WebAssemblyImportDependency.js +5 -5
- package/lib/dependencies/WebpackIsIncludedDependency.js +6 -6
- package/lib/dependencies/WorkerAndWorkletPlugin.js +46 -28
- package/lib/dependencies/WorkerDependency.js +28 -22
- package/lib/dependencies/WorkletDependency.js +15 -14
- package/lib/dependencies/getFunctionExpression.js +8 -4
- package/lib/dependencies/processExportInfo.js +5 -5
- package/lib/dll/DelegatedModule.js +34 -22
- package/lib/dll/DelegatedModuleFactoryPlugin.js +15 -7
- package/lib/dll/DelegatedPlugin.js +2 -2
- package/lib/dll/DllEntryPlugin.js +2 -2
- package/lib/dll/DllModule.js +22 -15
- package/lib/dll/DllModuleFactory.js +7 -3
- package/lib/dll/DllPlugin.js +7 -5
- package/lib/dll/DllReferencePlugin.js +10 -7
- package/lib/dll/LibManifestPlugin.js +5 -5
- package/lib/electron/ElectronTargetPlugin.js +53 -49
- package/lib/errors/AsyncChunkWaterfallWarning.js +36 -0
- package/lib/errors/AsyncDependencyToInitialChunkError.js +2 -2
- package/lib/errors/BroadContextsWarning.js +43 -0
- package/lib/errors/BuildCycleError.js +1 -1
- package/lib/errors/CacheEffectivenessWarning.js +55 -0
- package/lib/errors/ChunkRenderError.js +1 -1
- package/lib/errors/CircularDependenciesWarning.js +38 -0
- package/lib/errors/CodeGenerationError.js +1 -1
- package/lib/errors/CommentCompilationWarning.js +1 -1
- package/lib/errors/ConflictingResourceHintsWarning.js +35 -0
- package/lib/errors/DuplicateModulesWarning.js +45 -0
- package/lib/errors/DynamicExportsWarning.js +30 -0
- package/lib/errors/EmbeddedSourceMapsWarning.js +25 -0
- package/lib/errors/EntrypointOverlapWarning.js +45 -0
- package/lib/errors/EnvironmentNotSupportAsyncWarning.js +2 -2
- package/lib/errors/EvalUsageWarning.js +28 -0
- package/lib/errors/HookWebpackError.js +5 -5
- package/lib/errors/HotspotsWarning.js +57 -0
- package/lib/errors/IgnoreErrorModuleFactory.js +7 -3
- package/lib/errors/InlinedAssetsWarning.js +36 -0
- package/lib/errors/InvalidDependenciesModuleWarning.js +1 -1
- package/lib/errors/LargeModulesWarning.js +45 -0
- package/lib/errors/LegacyJavascriptWarning.js +48 -0
- package/lib/errors/MissingSideEffectsWarning.js +36 -0
- package/lib/errors/MixedExportsWarning.js +41 -0
- package/lib/errors/ModuleDependencyError.js +13 -16
- package/lib/errors/ModuleDependencyWarning.js +5 -15
- package/lib/errors/ModuleHashingError.js +1 -1
- package/lib/errors/ModuleNotFoundError.js +2 -2
- package/lib/errors/ModuleParseError.js +1 -2
- package/lib/errors/ModuleRestoreError.js +1 -1
- package/lib/errors/ModuleStoreError.js +1 -1
- package/lib/errors/NodeStuffInWebError.js +1 -1
- package/lib/errors/OsDependentRuleWarning.js +31 -0
- package/lib/errors/PureAnnotationsWarning.js +36 -0
- package/lib/errors/RedundantDynamicImportWarning.js +31 -0
- package/lib/errors/ScopeHoistingBailoutsWarning.js +41 -0
- package/lib/errors/SplitChunksCappedWarning.js +41 -0
- package/lib/errors/TinyChunksWarning.js +40 -0
- package/lib/errors/TopLevelThisWarning.js +34 -0
- package/lib/errors/UnsplitVendorsWarning.js +42 -0
- package/lib/errors/UnsupportedFeatureWarning.js +1 -1
- package/lib/errors/UnusedAliasesWarning.js +29 -0
- package/lib/errors/UnusedDefinesWarning.js +29 -0
- package/lib/errors/UnusedExternalsWarning.js +29 -0
- package/lib/errors/UnusedReexportsWarning.js +42 -0
- package/lib/errors/UnusedRuleWarning.js +29 -0
- package/lib/errors/WebpackError.js +9 -5
- package/lib/errors/deriveStackFromNestedError.js +90 -0
- package/lib/esm/ExportWebpackRequireRuntimeModule.js +2 -0
- package/lib/esm/ModuleChunkFormatPlugin.js +37 -19
- package/lib/esm/ModuleChunkLoadingPlugin.js +89 -51
- package/lib/esm/ModuleChunkLoadingRuntimeModule.js +170 -71
- package/lib/hmr/HotModuleReplacement.runtime.js +24 -5
- package/lib/hmr/HotModuleReplacementRuntimeModule.js +1 -1
- package/lib/hmr/LazyCompilationPlugin.js +45 -24
- package/lib/hmr/lazyCompilationBackend.js +28 -10
- package/lib/hmr/parserHooks.js +56 -0
- package/lib/html/HtmlGenerator.js +299 -79
- package/lib/html/HtmlModule.js +7 -3
- package/lib/html/HtmlModulesPlugin.js +312 -174
- package/lib/html/HtmlParser.js +31 -86
- package/lib/html/data.js +1928 -0
- package/lib/html/htmlMinify.js +288 -0
- package/lib/html/syntax.js +7819 -3331
- package/lib/ids/ChunkModuleIdRangePlugin.js +3 -3
- package/lib/ids/DeterministicChunkIdsPlugin.js +1 -1
- package/lib/ids/DeterministicModuleIdsPlugin.js +2 -2
- package/lib/ids/HashedModuleIdsPlugin.js +6 -2
- package/lib/ids/IdHelpers.js +31 -18
- package/lib/ids/NamedChunkIdsPlugin.js +1 -1
- package/lib/ids/NamedModuleIdsPlugin.js +1 -1
- package/lib/ids/NaturalChunkIdsPlugin.js +2 -2
- package/lib/ids/NaturalModuleIdsPlugin.js +1 -1
- package/lib/ids/OccurrenceChunkIdsPlugin.js +7 -3
- package/lib/ids/OccurrenceModuleIdsPlugin.js +7 -3
- package/lib/ids/SyncModuleIdsPlugin.js +4 -4
- package/lib/index.js +10 -0
- package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +3 -3
- package/lib/javascript/BasicEvaluatedExpression.js +18 -14
- package/lib/javascript/ChunkFormatHelpers.js +6 -6
- package/lib/javascript/ChunkHelpers.js +1 -1
- package/lib/javascript/CommonJsChunkFormatPlugin.js +11 -5
- package/lib/javascript/EnableChunkLoadingPlugin.js +2 -2
- package/lib/javascript/JavascriptGenerator.js +65 -165
- package/lib/javascript/JavascriptModule.js +9 -3
- package/lib/javascript/JavascriptModulesPlugin.js +181 -162
- package/lib/javascript/JavascriptParser.js +291 -112
- package/lib/javascript/JavascriptParserHelpers.js +10 -7
- package/lib/javascript/ScopeAnalyzer.js +1094 -0
- package/lib/javascript/StartupHelpers.js +55 -9
- package/lib/javascript/syntax.js +3403 -300
- package/lib/json/JsonData.js +8 -4
- package/lib/json/JsonGenerator.js +38 -16
- package/lib/json/JsonModule.js +7 -3
- package/lib/json/JsonModulesPlugin.js +1 -1
- package/lib/json/JsonParser.js +5 -6
- package/lib/library/AbstractLibraryPlugin.js +20 -14
- package/lib/library/AmdLibraryPlugin.js +11 -7
- package/lib/library/AssignLibraryPlugin.js +19 -13
- package/lib/library/EnableLibraryPlugin.js +2 -2
- package/lib/library/ExportPropertyLibraryPlugin.js +15 -8
- package/lib/library/JsonpLibraryPlugin.js +11 -7
- package/lib/library/ModuleLibraryPlugin.js +256 -64
- package/lib/library/SystemLibraryPlugin.js +12 -8
- package/lib/library/UmdLibraryPlugin.js +62 -25
- package/lib/loaders/LoaderRunner.js +14 -1
- package/lib/loaders/loadLoader.js +8 -4
- package/lib/logging/createConsoleLogger.js +7 -4
- package/lib/node/CommonJsChunkLoadingPlugin.js +36 -22
- package/lib/node/NodeEnvironmentPlugin.js +17 -3
- package/lib/node/NodeSourcePlugin.js +1 -1
- package/lib/node/NodeTargetPlugin.js +4 -3
- package/lib/node/NodeTemplatePlugin.js +1 -1
- package/lib/node/NodeWatchFileSystem.js +70 -9
- package/lib/node/ReadFileChunkLoadingRuntimeModule.js +35 -38
- package/lib/node/ReadFileCompileAsyncWasmPlugin.js +81 -20
- package/lib/node/ReadFileCompileWasmPlugin.js +37 -17
- package/lib/node/RequireChunkLoadingRuntimeModule.js +35 -38
- package/lib/node/nodeConsole.js +7 -3
- package/lib/optimize/AggressiveMergingPlugin.js +21 -17
- package/lib/optimize/AggressiveSplittingPlugin.js +9 -6
- package/lib/optimize/ConcatenatedModule.js +996 -477
- package/lib/optimize/ConstExportsPlugin.js +11 -7
- package/lib/optimize/EnsureChunkConditionsPlugin.js +3 -3
- package/lib/optimize/FlagIncludedChunksPlugin.js +3 -4
- package/lib/optimize/InlineExports.js +9 -5
- package/lib/optimize/InnerGraph.js +28 -12
- package/lib/optimize/InnerGraphPlugin.js +23 -18
- package/lib/optimize/LimitChunkCountPlugin.js +7 -3
- package/lib/optimize/MangleExportsPlugin.js +7 -8
- package/lib/optimize/MergeDuplicateChunksPlugin.js +7 -3
- package/lib/optimize/MinChunkSizePlugin.js +7 -3
- package/lib/optimize/ModuleConcatenationPlugin.js +124 -59
- package/lib/optimize/RealContentHashPlugin.js +20 -13
- package/lib/optimize/RemoveEmptyChunksPlugin.js +2 -2
- package/lib/optimize/RemoveParentModulesPlugin.js +4 -4
- package/lib/optimize/RuntimeChunkPlugin.js +2 -2
- package/lib/optimize/SideEffectsFlagPlugin.js +262 -39
- package/lib/optimize/SplitChunksPlugin.js +232 -68
- package/lib/performance/AssetsOverSizeLimitWarning.js +10 -2
- package/lib/performance/AsyncChunkWaterfallsPlugin.js +136 -0
- package/lib/performance/BroadContextsPlugin.js +142 -0
- package/lib/performance/CacheEffectivenessPlugin.js +125 -0
- package/lib/performance/ConflictingResourceHintsPlugin.js +99 -0
- package/lib/performance/DuplicateModulesPlugin.js +93 -0
- package/lib/performance/DuplicatePackagesPlugin.js +119 -0
- package/lib/performance/DuplicatePackagesWarning.js +84 -0
- package/lib/performance/DynamicExportsPlugin.js +120 -0
- package/lib/performance/EmbeddedSourceMapsPlugin.js +71 -0
- package/lib/performance/EntrypointOverlapPlugin.js +122 -0
- package/lib/performance/EntrypointsOverSizeLimitWarning.js +1 -1
- package/lib/performance/EvalUsagePlugin.js +115 -0
- package/lib/performance/HotspotsPlugin.js +296 -0
- package/lib/performance/InlinedAssetsPlugin.js +99 -0
- package/lib/performance/LargeModulesPlugin.js +126 -0
- package/lib/performance/LegacyJavascriptPlugin.js +139 -0
- package/lib/performance/MissingSideEffectsPlugin.js +138 -0
- package/lib/performance/MixedExportsPlugin.js +136 -0
- package/lib/performance/OsDependentRuleWarningPlugin.js +178 -0
- package/lib/performance/PureAnnotationsPlugin.js +219 -0
- package/lib/performance/RedundantDynamicImportsPlugin.js +225 -0
- package/lib/performance/RuntimeInLargeChunkWarning.js +27 -0
- package/lib/performance/ScopeHoistingBailoutsPlugin.js +164 -0
- package/lib/performance/SizeLimitsPlugin.js +139 -7
- package/lib/performance/SplitChunksCappedPlugin.js +99 -0
- package/lib/performance/TinyChunksPlugin.js +128 -0
- package/lib/performance/TopLevelThisPlugin.js +208 -0
- package/lib/performance/UnsplitVendorsPlugin.js +112 -0
- package/lib/performance/UnusedAliasesPlugin.js +253 -0
- package/lib/performance/UnusedDefinesPlugin.js +87 -0
- package/lib/performance/UnusedExternalsPlugin.js +110 -0
- package/lib/performance/UnusedReexportsPlugin.js +159 -0
- package/lib/performance/UnusedRuleWarningPlugin.js +105 -0
- package/lib/performance/getModuleSize.js +22 -0
- package/lib/performance/getSourceModules.js +22 -0
- package/lib/performance/hasOnlyUnusedExports.js +40 -0
- package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +24 -10
- package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +63 -46
- package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +2 -3
- package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +2 -2
- package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +2 -2
- package/lib/prefetch/ResourceHintPlugin.js +377 -136
- package/lib/prefetch/ResourceHintRuntimeModule.js +1 -21
- package/lib/prefetch/StartupAssetHintRuntimeModule.js +10 -133
- package/lib/prefetch/parseResourceHintOptions.js +31 -4
- package/lib/rules/BasicEffectRulePlugin.js +2 -2
- package/lib/rules/BasicMatcherRulePlugin.js +8 -4
- package/lib/rules/GlobMatcherRulePlugin.js +68 -0
- package/lib/rules/ObjectMatcherRulePlugin.js +12 -5
- package/lib/rules/RuleSetCompiler.js +146 -12
- package/lib/rules/UseEffectRulePlugin.js +18 -11
- package/lib/runtime/AsyncModuleGeneratorRuntimeModule.js +11 -1
- package/lib/runtime/AsyncModuleRuntimeModule.js +1 -1
- package/lib/runtime/AutoPublicPathRuntimeModule.js +15 -20
- package/lib/runtime/BaseUriRuntimeModule.js +33 -7
- package/lib/runtime/ChunkNameRuntimeModule.js +10 -0
- package/lib/runtime/CompatGetDefaultExportRuntimeModule.js +11 -1
- package/lib/runtime/CompatRuntimeModule.js +5 -3
- package/lib/runtime/ConcatenationWrapRuntimeModule.js +90 -0
- package/lib/runtime/ConstructRequireRuntimeModule.js +52 -0
- package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +8 -6
- package/lib/runtime/CreateScriptRuntimeModule.js +11 -1
- package/lib/runtime/CreateScriptUrlRuntimeModule.js +11 -1
- package/lib/runtime/DefinePropertyGettersRuntimeModule.js +56 -38
- package/lib/runtime/EnsureChunkRuntimeModule.js +18 -2
- package/lib/runtime/GetChunkFilenameRuntimeModule.js +62 -37
- package/lib/runtime/GetFullHashRuntimeModule.js +12 -2
- package/lib/runtime/GetMainFilenameRuntimeModule.js +12 -2
- package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +2 -2
- package/lib/runtime/GetWorkletBootstrapRuntimeModule.js +16 -3
- package/lib/runtime/GlobalRuntimeModule.js +18 -0
- package/lib/runtime/HasOwnPropertyRuntimeModule.js +12 -2
- package/lib/runtime/LoadScriptRuntimeModule.js +2 -2
- package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +23 -6
- package/lib/runtime/MakeNamespaceObjectRuntimeModule.js +22 -6
- package/lib/runtime/NonceRuntimeModule.js +10 -0
- package/lib/runtime/OnChunksLoadedRuntimeModule.js +5 -3
- package/lib/runtime/PublicPathRuntimeModule.js +12 -2
- package/lib/runtime/RelativeUrlRuntimeModule.js +11 -1
- package/lib/runtime/RuntimeIdRuntimeModule.js +12 -2
- package/lib/runtime/SetAnonymousDefaultNameRuntimeModule.js +11 -1
- package/lib/runtime/StartupChunkDependenciesPlugin.js +18 -9
- package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +3 -3
- package/lib/runtime/StartupEntrypointRuntimeModule.js +21 -4
- package/lib/runtime/SystemContextRuntimeModule.js +10 -0
- package/lib/runtime/ToBinaryRuntimeModule.js +1 -1
- package/lib/runtime/WorkerRuntimeModule.js +11 -1
- package/lib/runtime/baseUri.js +63 -0
- package/lib/schemes/DataUriPlugin.js +1 -1
- package/lib/schemes/FileUriPlugin.js +1 -1
- package/lib/schemes/HttpUriPlugin.js +24 -15
- package/lib/schemes/VirtualUrlPlugin.js +13 -7
- package/lib/serialization/AggregateErrorSerializer.js +1 -1
- package/lib/serialization/BinaryMiddleware.js +274 -942
- package/lib/serialization/ErrorObjectSerializer.js +1 -1
- package/lib/serialization/FileMiddleware.js +305 -66
- package/lib/serialization/ObjectMiddleware.js +139 -114
- package/lib/serialization/PlainObjectSerializer.js +19 -16
- package/lib/sharing/ConsumeSharedModule.js +30 -21
- package/lib/sharing/ConsumeSharedPlugin.js +18 -10
- package/lib/sharing/ConsumeSharedRuntimeModule.js +6 -9
- package/lib/sharing/ProvideSharedModule.js +25 -16
- package/lib/sharing/ProvideSharedModuleFactory.js +7 -3
- package/lib/sharing/ProvideSharedPlugin.js +8 -4
- package/lib/sharing/SharePlugin.js +17 -5
- package/lib/sharing/ShareRuntimeModule.js +4 -4
- package/lib/sharing/resolveMatchedConfigs.js +9 -6
- package/lib/sharing/utils.js +1 -3
- package/lib/stats/DefaultStatsFactoryPlugin.js +253 -226
- package/lib/stats/DefaultStatsPresetPlugin.js +17 -8
- package/lib/stats/DefaultStatsPrinterPlugin.js +60 -192
- package/lib/stats/StatsFactory.js +56 -35
- package/lib/stats/StatsPrinter.js +16 -12
- package/lib/typescript/TypeScriptPlugin.js +12 -14
- package/lib/url/URLParserPlugin.js +26 -13
- package/lib/util/AsyncQueue.js +4 -3
- package/lib/util/Hash.js +5 -1
- package/lib/util/LazySet.js +35 -22
- package/lib/util/LocConverter.js +36 -13
- package/lib/util/SourceProcessor.js +1050 -24
- package/lib/util/StringXor.js +1 -1
- package/lib/util/chainedImports.js +9 -5
- package/lib/util/cleverMerge.js +1 -1
- package/lib/util/comparators.js +45 -14
- package/lib/util/concatenate.js +203 -77
- package/lib/util/conventions.js +5 -1
- package/lib/util/createHash.js +2 -2
- package/lib/util/createHooksRegistry.js +8 -10
- package/lib/util/dataURL.js +225 -1
- package/lib/util/extractSourceMap.js +4 -3
- package/lib/util/findCaseMismatch.js +139 -0
- package/lib/util/formatLocation.js +1 -2
- package/lib/util/fs.js +22 -5
- package/lib/util/globUtils.js +298 -24
- package/lib/util/hash/BatchedHash.js +5 -1
- package/lib/util/hash/BulkUpdateHash.js +5 -1
- package/lib/util/hash/DebugHash.js +5 -1
- package/lib/util/hash/hash-digest.js +6 -2
- package/lib/util/identifier.js +25 -1
- package/lib/util/implicitTypeLoaderFallback.js +1 -1
- package/lib/util/internalSerializables.js +6 -0
- package/lib/util/lazyModule.js +56 -0
- package/lib/util/makeSerializable.js +7 -3
- package/lib/util/matchAlias.js +25 -0
- package/lib/util/mimeTypes.js +11 -5
- package/lib/util/nonNumericOnlyHash.js +4 -3
- package/lib/util/parseJson.js +5 -3
- package/lib/util/preloadModuleType.js +32 -0
- package/lib/util/registerExternalSerializer.js +7 -5
- package/lib/util/runtime.js +2 -2
- package/lib/util/semver.js +1 -1
- package/lib/util/serialization.js +28 -28
- package/lib/util/source.js +2 -2
- package/lib/util/traverseDestructuringAssignmentProperties.js +6 -2
- package/lib/wasm/EnableWasmLoadingPlugin.js +10 -8
- package/lib/wasm/wasmModuleFilename.js +54 -0
- package/lib/wasm-async/AsyncWasmCompileRuntimeModule.js +41 -21
- package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +43 -21
- package/lib/wasm-async/AsyncWasmModule.js +3 -3
- package/lib/wasm-async/AsyncWebAssemblyGenerator.js +4 -5
- package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +57 -17
- package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +34 -18
- package/lib/wasm-async/AsyncWebAssemblyParser.js +9 -8
- package/lib/wasm-async/UniversalCompileAsyncWasmPlugin.js +34 -8
- package/lib/wasm-sync/SyncWasmModule.js +2 -2
- package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +18 -13
- package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +4 -5
- package/lib/wasm-sync/WebAssemblyGenerator.js +18 -17
- package/lib/wasm-sync/WebAssemblyInInitialChunkError.js +4 -4
- package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +7 -7
- package/lib/wasm-sync/WebAssemblyModulesPlugin.js +24 -11
- package/lib/wasm-sync/WebAssemblyParser.js +4 -6
- package/lib/wasm-sync/WebAssemblyUtils.js +2 -2
- package/lib/web/FetchCompileAsyncWasmPlugin.js +101 -19
- package/lib/web/FetchCompileWasmPlugin.js +46 -16
- package/lib/web/JsonpChunkLoadingPlugin.js +47 -23
- package/lib/web/JsonpChunkLoadingRuntimeModule.js +50 -20
- package/lib/web/JsonpTemplatePlugin.js +2 -2
- package/lib/webpack.js +22 -11
- package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +60 -26
- package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +30 -32
- package/lib/webworker/WebWorkerTemplatePlugin.js +1 -1
- package/module.d.ts +1 -0
- package/package.json +37 -30
- package/schemas/WebpackOptions.check.js +1 -1
- package/schemas/WebpackOptions.json +780 -91
- package/schemas/plugins/HtmlParserOptions.check.js +1 -1
- package/schemas/plugins/container/ContainerPlugin.check.js +1 -1
- package/schemas/plugins/container/ContainerPlugin.json +10 -0
- package/schemas/plugins/container/ModuleFederationPlugin.check.js +1 -1
- package/schemas/plugins/container/ModuleFederationPlugin.json +10 -0
- package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.js +1 -1
- package/schemas/plugins/css/CssModuleParserOptions.check.js +1 -1
- package/schemas/plugins/css/CssParserOptions.check.js +1 -1
- package/types.d.ts +4013 -738
- package/lib/runtime/CommonJsWrapRuntimeModule.js +0 -37
|
@@ -8,7 +8,7 @@ const RuntimeGlobals = require("../RuntimeGlobals");
|
|
|
8
8
|
const Template = require("../Template");
|
|
9
9
|
const HelperRuntimeModule = require("./HelperRuntimeModule");
|
|
10
10
|
|
|
11
|
-
/** @
|
|
11
|
+
/** @import Compilation from "../Compilation" */
|
|
12
12
|
|
|
13
13
|
class AsyncModuleRuntimeModule extends HelperRuntimeModule {
|
|
14
14
|
/**
|
|
@@ -7,11 +7,10 @@
|
|
|
7
7
|
const RuntimeGlobals = require("../RuntimeGlobals");
|
|
8
8
|
const RuntimeModule = require("../RuntimeModule");
|
|
9
9
|
const Template = require("../Template");
|
|
10
|
-
const JavascriptModulesPlugin = require("../javascript/JavascriptModulesPlugin");
|
|
11
|
-
const { getUndoPath } = require("../util/identifier");
|
|
12
10
|
|
|
13
|
-
/** @
|
|
14
|
-
/** @
|
|
11
|
+
/** @import Chunk from "../Chunk" */
|
|
12
|
+
/** @import ChunkGraph from "../ChunkGraph" */
|
|
13
|
+
/** @import Compilation from "../Compilation" */
|
|
15
14
|
|
|
16
15
|
class AutoPublicPathRuntimeModule extends RuntimeModule {
|
|
17
16
|
constructor() {
|
|
@@ -24,22 +23,16 @@ class AutoPublicPathRuntimeModule extends RuntimeModule {
|
|
|
24
23
|
*/
|
|
25
24
|
generate() {
|
|
26
25
|
const compilation = /** @type {Compilation} */ (this.compilation);
|
|
27
|
-
|
|
26
|
+
// The virtual build-time chunk has no script url and sits at the output
|
|
27
|
+
// root, so urls resolve against the `importModule` baseUri.
|
|
28
|
+
if (/** @type {ChunkGraph} */ (this.chunkGraph).buildTimeExecution) {
|
|
29
|
+
return `${RuntimeGlobals.publicPath} = "";`;
|
|
30
|
+
}
|
|
31
|
+
const { scriptType, importMetaName, environment } =
|
|
28
32
|
compilation.outputOptions;
|
|
29
33
|
const chunk = /** @type {Chunk} */ (this.chunk);
|
|
30
|
-
const
|
|
31
|
-
|
|
32
|
-
chunk,
|
|
33
|
-
compilation.outputOptions
|
|
34
|
-
),
|
|
35
|
-
{
|
|
36
|
-
chunk,
|
|
37
|
-
contentHashType: "javascript"
|
|
38
|
-
}
|
|
39
|
-
);
|
|
40
|
-
const undoPath = getUndoPath(
|
|
41
|
-
chunkName,
|
|
42
|
-
/** @type {string} */ (path),
|
|
34
|
+
const undoPath = compilation.runtimeTemplate.chunkRootOutputDir(
|
|
35
|
+
chunk,
|
|
43
36
|
false
|
|
44
37
|
);
|
|
45
38
|
|
|
@@ -79,7 +72,7 @@ class AutoPublicPathRuntimeModule extends RuntimeModule {
|
|
|
79
72
|
"if(scripts.length) {",
|
|
80
73
|
Template.indent([
|
|
81
74
|
`${lt} i = scripts.length - 1;`,
|
|
82
|
-
"while (i > -1 && (!scriptUrl || !/^
|
|
75
|
+
"while (i > -1 && (!scriptUrl || !/^https?:/.test(scriptUrl))) scriptUrl = scripts[i--].src;"
|
|
83
76
|
]),
|
|
84
77
|
"}"
|
|
85
78
|
]),
|
|
@@ -90,7 +83,9 @@ class AutoPublicPathRuntimeModule extends RuntimeModule {
|
|
|
90
83
|
"// When supporting browsers where an automatic publicPath is not supported you must specify an output.publicPath manually via configuration",
|
|
91
84
|
'// or pass an empty string ("") and set the __webpack_public_path__ variable from your code to use your own logic.',
|
|
92
85
|
'if (!scriptUrl) throw new Error("Automatic publicPath is not supported in this browser");',
|
|
93
|
-
|
|
86
|
+
// One pass for the `blob:` prefix and the query/fragment: both stop at the
|
|
87
|
+
// first `?` or `#`, so stripping either first leaves the same url.
|
|
88
|
+
'scriptUrl = scriptUrl.replace(/^blob:|[?#].*$/g, "").replace(/\\/[^/]+$/, "/");',
|
|
94
89
|
!undoPath
|
|
95
90
|
? `${RuntimeGlobals.publicPath} = scriptUrl;`
|
|
96
91
|
: `${RuntimeGlobals.publicPath} = scriptUrl + ${JSON.stringify(
|
|
@@ -7,15 +7,31 @@
|
|
|
7
7
|
|
|
8
8
|
const RuntimeGlobals = require("../RuntimeGlobals");
|
|
9
9
|
const RuntimeModule = require("../RuntimeModule");
|
|
10
|
+
const { renderBaseUri } = require("./baseUri");
|
|
10
11
|
|
|
11
|
-
/**
|
|
12
|
-
|
|
12
|
+
/**
|
|
13
|
+
* @import {
|
|
14
|
+
* EntryDescriptionNormalized as EntryDescription
|
|
15
|
+
* } from "../../declarations/WebpackOptions"
|
|
16
|
+
*/
|
|
17
|
+
/** @import Chunk from "../Chunk" */
|
|
18
|
+
/** @import Compilation from "../Compilation" */
|
|
13
19
|
|
|
14
20
|
class BaseUriRuntimeModule extends RuntimeModule {
|
|
15
21
|
constructor() {
|
|
16
22
|
super("base uri", RuntimeModule.STAGE_ATTACH);
|
|
17
23
|
}
|
|
18
24
|
|
|
25
|
+
/**
|
|
26
|
+
* Returns true, if the runtime module should get it's own scope.
|
|
27
|
+
* When false, `generate()` must emit complete statements ending with `;`
|
|
28
|
+
* so a following runtime IIFE is not parsed as a call (ASI).
|
|
29
|
+
* @returns {boolean} true, if the runtime module should get it's own scope
|
|
30
|
+
*/
|
|
31
|
+
shouldIsolate() {
|
|
32
|
+
return false;
|
|
33
|
+
}
|
|
34
|
+
|
|
19
35
|
/**
|
|
20
36
|
* Generates runtime code for this runtime module.
|
|
21
37
|
* @returns {string | null} runtime code
|
|
@@ -25,11 +41,21 @@ class BaseUriRuntimeModule extends RuntimeModule {
|
|
|
25
41
|
const options =
|
|
26
42
|
/** @type {EntryDescription} */
|
|
27
43
|
(chunk.getEntryOptions());
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
44
|
+
if (options.baseUri === undefined) {
|
|
45
|
+
return `${RuntimeGlobals.baseURI} = undefined;`;
|
|
46
|
+
}
|
|
47
|
+
const { runtimeTemplate, outputOptions } =
|
|
48
|
+
/** @type {Compilation} */
|
|
49
|
+
(this.compilation);
|
|
50
|
+
// Chunk loading is off here, so no loader has named a base for a relative one to be
|
|
51
|
+
// read against. Module output carries its own url; anything else has none to offer.
|
|
52
|
+
if (!runtimeTemplate.isModule()) {
|
|
53
|
+
return `${RuntimeGlobals.baseURI} = ${JSON.stringify(options.baseUri)};`;
|
|
54
|
+
}
|
|
55
|
+
return renderBaseUri(
|
|
56
|
+
options.baseUri,
|
|
57
|
+
`${outputOptions.importMetaName}.url`
|
|
58
|
+
);
|
|
33
59
|
}
|
|
34
60
|
}
|
|
35
61
|
|
|
@@ -8,6 +8,16 @@ const RuntimeGlobals = require("../RuntimeGlobals");
|
|
|
8
8
|
const RuntimeModule = require("../RuntimeModule");
|
|
9
9
|
|
|
10
10
|
class ChunkNameRuntimeModule extends RuntimeModule {
|
|
11
|
+
/**
|
|
12
|
+
* Returns true, if the runtime module should get it's own scope.
|
|
13
|
+
* When false, `generate()` must emit complete statements ending with `;`
|
|
14
|
+
* so a following runtime IIFE is not parsed as a call (ASI).
|
|
15
|
+
* @returns {boolean} true, if the runtime module should get it's own scope
|
|
16
|
+
*/
|
|
17
|
+
shouldIsolate() {
|
|
18
|
+
return false;
|
|
19
|
+
}
|
|
20
|
+
|
|
11
21
|
/**
|
|
12
22
|
* @param {string} chunkName the chunk's name
|
|
13
23
|
*/
|
|
@@ -8,13 +8,23 @@ const RuntimeGlobals = require("../RuntimeGlobals");
|
|
|
8
8
|
const Template = require("../Template");
|
|
9
9
|
const HelperRuntimeModule = require("./HelperRuntimeModule");
|
|
10
10
|
|
|
11
|
-
/** @
|
|
11
|
+
/** @import Compilation from "../Compilation" */
|
|
12
12
|
|
|
13
13
|
class CompatGetDefaultExportRuntimeModule extends HelperRuntimeModule {
|
|
14
14
|
constructor() {
|
|
15
15
|
super("compat get default export");
|
|
16
16
|
}
|
|
17
17
|
|
|
18
|
+
/**
|
|
19
|
+
* Returns true, if the runtime module should get it's own scope.
|
|
20
|
+
* When false, `generate()` must emit complete statements ending with `;`
|
|
21
|
+
* so a following runtime IIFE is not parsed as a call (ASI).
|
|
22
|
+
* @returns {boolean} true, if the runtime module should get it's own scope
|
|
23
|
+
*/
|
|
24
|
+
shouldIsolate() {
|
|
25
|
+
return false;
|
|
26
|
+
}
|
|
27
|
+
|
|
18
28
|
/**
|
|
19
29
|
* Generates runtime code for this runtime module.
|
|
20
30
|
* @returns {string | null} runtime code
|
|
@@ -7,9 +7,9 @@
|
|
|
7
7
|
const RuntimeGlobals = require("../RuntimeGlobals");
|
|
8
8
|
const RuntimeModule = require("../RuntimeModule");
|
|
9
9
|
|
|
10
|
-
/** @
|
|
11
|
-
/** @
|
|
12
|
-
/** @
|
|
10
|
+
/** @import Chunk from "../Chunk" */
|
|
11
|
+
/** @import ChunkGraph from "../ChunkGraph" */
|
|
12
|
+
/** @import Compilation from "../Compilation" */
|
|
13
13
|
|
|
14
14
|
class CompatRuntimeModule extends RuntimeModule {
|
|
15
15
|
constructor() {
|
|
@@ -74,6 +74,8 @@ class CompatRuntimeModule extends RuntimeModule {
|
|
|
74
74
|
|
|
75
75
|
/**
|
|
76
76
|
* Returns true, if the runtime module should get it's own scope.
|
|
77
|
+
* When false, `generate()` must emit complete statements ending with `;`
|
|
78
|
+
* so a following runtime IIFE is not parsed as a call (ASI).
|
|
77
79
|
* @returns {boolean} true, if the runtime module should get it's own scope
|
|
78
80
|
*/
|
|
79
81
|
shouldIsolate() {
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
/*
|
|
2
|
+
MIT License http://www.opensource.org/licenses/mit-license.php
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
"use strict";
|
|
6
|
+
|
|
7
|
+
const RuntimeGlobals = require("../RuntimeGlobals");
|
|
8
|
+
const Template = require("../Template");
|
|
9
|
+
const HelperRuntimeModule = require("./HelperRuntimeModule");
|
|
10
|
+
|
|
11
|
+
/** @import Compilation from "../Compilation" */
|
|
12
|
+
|
|
13
|
+
class ConcatenationWrapRuntimeModule extends HelperRuntimeModule {
|
|
14
|
+
constructor() {
|
|
15
|
+
super("concatenation wrap");
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* Returns true, if the runtime module should get it's own scope.
|
|
20
|
+
* When false, `generate()` must emit complete statements ending with `;`
|
|
21
|
+
* so a following runtime IIFE is not parsed as a call (ASI).
|
|
22
|
+
* @returns {boolean} true, if the runtime module should get it's own scope
|
|
23
|
+
*/
|
|
24
|
+
shouldIsolate() {
|
|
25
|
+
return false;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* Generates runtime code for this runtime module.
|
|
30
|
+
* @returns {string | null} runtime code
|
|
31
|
+
*/
|
|
32
|
+
generate() {
|
|
33
|
+
const compilation = /** @type {Compilation} */ (this.compilation);
|
|
34
|
+
const { runtimeTemplate, outputOptions } = compilation;
|
|
35
|
+
const { strictModuleErrorHandling, strictModuleExceptionHandling } =
|
|
36
|
+
outputOptions;
|
|
37
|
+
const fn = RuntimeGlobals.concatenationWrap;
|
|
38
|
+
/** @type {string[]} */
|
|
39
|
+
const runBody = [];
|
|
40
|
+
if (strictModuleErrorHandling) {
|
|
41
|
+
// mirrors the module cache: the error is remembered and rethrown
|
|
42
|
+
runBody.push(
|
|
43
|
+
"try {",
|
|
44
|
+
Template.indent("fn.call(mod.exports, mod, mod.exports);"),
|
|
45
|
+
"} catch (e) {",
|
|
46
|
+
Template.indent(["mod.error = e;", "throw e;"]),
|
|
47
|
+
"}"
|
|
48
|
+
);
|
|
49
|
+
} else if (strictModuleExceptionHandling) {
|
|
50
|
+
// mirrors deleting the cache entry: a later call runs the body again
|
|
51
|
+
runBody.push(
|
|
52
|
+
"var threw = true;",
|
|
53
|
+
"try {",
|
|
54
|
+
Template.indent([
|
|
55
|
+
"fn.call(mod.exports, mod, mod.exports);",
|
|
56
|
+
"threw = false;"
|
|
57
|
+
]),
|
|
58
|
+
"} finally {",
|
|
59
|
+
Template.indent(["if (threw) { body = fn; mod = undefined; }"]),
|
|
60
|
+
"}"
|
|
61
|
+
);
|
|
62
|
+
} else {
|
|
63
|
+
runBody.push("fn.call(mod.exports, mod, mod.exports);");
|
|
64
|
+
}
|
|
65
|
+
return Template.asString([
|
|
66
|
+
"// wrap a concatenated module body as a lazy, memoized accessor; mod is",
|
|
67
|
+
"// set before the body runs so re-entrant calls (require cycles) observe",
|
|
68
|
+
"// the partial exports like Node.js",
|
|
69
|
+
`${fn} = ${runtimeTemplate.basicFunction("body", [
|
|
70
|
+
"var mod;",
|
|
71
|
+
`return ${runtimeTemplate.basicFunction("", [
|
|
72
|
+
"if (body) {",
|
|
73
|
+
Template.indent([
|
|
74
|
+
"var fn = body;",
|
|
75
|
+
"body = 0;",
|
|
76
|
+
"mod = { exports: {} };",
|
|
77
|
+
...runBody
|
|
78
|
+
]),
|
|
79
|
+
"}",
|
|
80
|
+
...(strictModuleErrorHandling
|
|
81
|
+
? ["if (mod.error !== undefined) throw mod.error;"]
|
|
82
|
+
: []),
|
|
83
|
+
"return mod.exports;"
|
|
84
|
+
])};`
|
|
85
|
+
])};`
|
|
86
|
+
]);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
module.exports = ConcatenationWrapRuntimeModule;
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/*
|
|
2
|
+
MIT License http://www.opensource.org/licenses/mit-license.php
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
"use strict";
|
|
6
|
+
|
|
7
|
+
const RuntimeGlobals = require("../RuntimeGlobals");
|
|
8
|
+
const Template = require("../Template");
|
|
9
|
+
const HelperRuntimeModule = require("./HelperRuntimeModule");
|
|
10
|
+
|
|
11
|
+
/** @import Compilation from "../Compilation" */
|
|
12
|
+
|
|
13
|
+
class ConstructRequireRuntimeModule extends HelperRuntimeModule {
|
|
14
|
+
constructor() {
|
|
15
|
+
super("construct require");
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* Returns true, if the runtime module should get it's own scope.
|
|
20
|
+
* When false, `generate()` must emit complete statements ending with `;`
|
|
21
|
+
* so a following runtime IIFE is not parsed as a call (ASI).
|
|
22
|
+
* @returns {boolean} true, if the runtime module should get it's own scope
|
|
23
|
+
*/
|
|
24
|
+
shouldIsolate() {
|
|
25
|
+
return false;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* Generates runtime code for this runtime module.
|
|
30
|
+
* @returns {string | null} runtime code
|
|
31
|
+
*/
|
|
32
|
+
generate() {
|
|
33
|
+
const compilation = /** @type {Compilation} */ (this.compilation);
|
|
34
|
+
const { runtimeTemplate } = compilation;
|
|
35
|
+
const fn = RuntimeGlobals.constructRequire;
|
|
36
|
+
return Template.asString([
|
|
37
|
+
"// `new require(id)` invokes the require function as a constructor, so a",
|
|
38
|
+
"// primitive module.exports is discarded in favor of the freshly created",
|
|
39
|
+
"// instance, exactly as in Node.js. A concatenated module has no require",
|
|
40
|
+
"// call left, so apply that rule to its exports value instead.",
|
|
41
|
+
`${fn} = ${runtimeTemplate.basicFunction("exports", [
|
|
42
|
+
`${runtimeTemplate.renderConst()} isObject =`,
|
|
43
|
+
Template.indent(
|
|
44
|
+
'exports !== null && (typeof exports === "object" || typeof exports === "function");'
|
|
45
|
+
),
|
|
46
|
+
`return isObject ? exports : Object.create(${RuntimeGlobals.require}.prototype);`
|
|
47
|
+
])};`
|
|
48
|
+
]);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
module.exports = ConstructRequireRuntimeModule;
|
|
@@ -8,7 +8,7 @@ const RuntimeGlobals = require("../RuntimeGlobals");
|
|
|
8
8
|
const Template = require("../Template");
|
|
9
9
|
const HelperRuntimeModule = require("./HelperRuntimeModule");
|
|
10
10
|
|
|
11
|
-
/** @
|
|
11
|
+
/** @import Compilation from "../Compilation" */
|
|
12
12
|
|
|
13
13
|
class CreateFakeNamespaceObjectRuntimeModule extends HelperRuntimeModule {
|
|
14
14
|
constructor() {
|
|
@@ -26,10 +26,9 @@ class CreateFakeNamespaceObjectRuntimeModule extends HelperRuntimeModule {
|
|
|
26
26
|
const cst = runtimeTemplate.renderConst();
|
|
27
27
|
const lt = runtimeTemplate.renderLet();
|
|
28
28
|
return Template.asString([
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
)} : ${runtimeTemplate.returningFunction("obj.__proto__", "obj")};`,
|
|
29
|
+
// No `__proto__` fallback: `Object.create` and `Object.defineProperty`
|
|
30
|
+
// below already require the same ES5 baseline.
|
|
31
|
+
`${cst} getProto = Object.getPrototypeOf;`,
|
|
33
32
|
`${lt} leafPrototypes;`,
|
|
34
33
|
"// create a fake namespace object",
|
|
35
34
|
"// mode & 1: value is a module id, require it",
|
|
@@ -51,7 +50,10 @@ class CreateFakeNamespaceObjectRuntimeModule extends HelperRuntimeModule {
|
|
|
51
50
|
`${cst} ns = Object.create(null);`,
|
|
52
51
|
`${RuntimeGlobals.makeNamespaceObject}(ns);`,
|
|
53
52
|
`${cst} def = {};`,
|
|
54
|
-
|
|
53
|
+
`${runtimeTemplate.assignOr(
|
|
54
|
+
"leafPrototypes",
|
|
55
|
+
"[null, getProto({}), getProto([]), getProto(getProto)]"
|
|
56
|
+
)};`,
|
|
55
57
|
"for(var current = mode & 2 && value; (typeof current == 'object' || typeof current == 'function') && !~leafPrototypes.indexOf(current); current = getProto(current)) {",
|
|
56
58
|
Template.indent([
|
|
57
59
|
`Object.getOwnPropertyNames(current).forEach(${runtimeTemplate.expressionFunction(
|
|
@@ -8,13 +8,23 @@ const RuntimeGlobals = require("../RuntimeGlobals");
|
|
|
8
8
|
const Template = require("../Template");
|
|
9
9
|
const HelperRuntimeModule = require("./HelperRuntimeModule");
|
|
10
10
|
|
|
11
|
-
/** @
|
|
11
|
+
/** @import Compilation from "../Compilation" */
|
|
12
12
|
|
|
13
13
|
class CreateScriptRuntimeModule extends HelperRuntimeModule {
|
|
14
14
|
constructor() {
|
|
15
15
|
super("trusted types script");
|
|
16
16
|
}
|
|
17
17
|
|
|
18
|
+
/**
|
|
19
|
+
* Returns true, if the runtime module should get it's own scope.
|
|
20
|
+
* When false, `generate()` must emit complete statements ending with `;`
|
|
21
|
+
* so a following runtime IIFE is not parsed as a call (ASI).
|
|
22
|
+
* @returns {boolean} true, if the runtime module should get it's own scope
|
|
23
|
+
*/
|
|
24
|
+
shouldIsolate() {
|
|
25
|
+
return false;
|
|
26
|
+
}
|
|
27
|
+
|
|
18
28
|
/**
|
|
19
29
|
* Generates runtime code for this runtime module.
|
|
20
30
|
* @returns {string | null} runtime code
|
|
@@ -8,13 +8,23 @@ const RuntimeGlobals = require("../RuntimeGlobals");
|
|
|
8
8
|
const Template = require("../Template");
|
|
9
9
|
const HelperRuntimeModule = require("./HelperRuntimeModule");
|
|
10
10
|
|
|
11
|
-
/** @
|
|
11
|
+
/** @import Compilation from "../Compilation" */
|
|
12
12
|
|
|
13
13
|
class CreateScriptUrlRuntimeModule extends HelperRuntimeModule {
|
|
14
14
|
constructor() {
|
|
15
15
|
super("trusted types script url");
|
|
16
16
|
}
|
|
17
17
|
|
|
18
|
+
/**
|
|
19
|
+
* Returns true, if the runtime module should get it's own scope.
|
|
20
|
+
* When false, `generate()` must emit complete statements ending with `;`
|
|
21
|
+
* so a following runtime IIFE is not parsed as a call (ASI).
|
|
22
|
+
* @returns {boolean} true, if the runtime module should get it's own scope
|
|
23
|
+
*/
|
|
24
|
+
shouldIsolate() {
|
|
25
|
+
return false;
|
|
26
|
+
}
|
|
27
|
+
|
|
18
28
|
/**
|
|
19
29
|
* Generates runtime code for this runtime module.
|
|
20
30
|
* @returns {string | null} runtime code
|
|
@@ -8,11 +8,27 @@ const RuntimeGlobals = require("../RuntimeGlobals");
|
|
|
8
8
|
const Template = require("../Template");
|
|
9
9
|
const HelperRuntimeModule = require("./HelperRuntimeModule");
|
|
10
10
|
|
|
11
|
-
/** @
|
|
11
|
+
/** @import Compilation from "../Compilation" */
|
|
12
|
+
/** @import { ReadOnlyRuntimeRequirements } from "../Module" */
|
|
12
13
|
|
|
13
14
|
class DefinePropertyGettersRuntimeModule extends HelperRuntimeModule {
|
|
14
|
-
|
|
15
|
+
/**
|
|
16
|
+
* @param {ReadOnlyRuntimeRequirements} runtimeRequirements runtime requirements
|
|
17
|
+
*/
|
|
18
|
+
constructor(runtimeRequirements) {
|
|
15
19
|
super("define property getters");
|
|
20
|
+
/** @type {ReadOnlyRuntimeRequirements} */
|
|
21
|
+
this.runtimeRequirements = runtimeRequirements;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* Returns true, if the runtime module should get it's own scope.
|
|
26
|
+
* When false, `generate()` must emit complete statements ending with `;`
|
|
27
|
+
* so a following runtime IIFE is not parsed as a call (ASI).
|
|
28
|
+
* @returns {boolean} true, if the runtime module should get it's own scope
|
|
29
|
+
*/
|
|
30
|
+
shouldIsolate() {
|
|
31
|
+
return false;
|
|
16
32
|
}
|
|
17
33
|
|
|
18
34
|
/**
|
|
@@ -23,48 +39,50 @@ class DefinePropertyGettersRuntimeModule extends HelperRuntimeModule {
|
|
|
23
39
|
const compilation = /** @type {Compilation} */ (this.compilation);
|
|
24
40
|
const { runtimeTemplate } = compilation;
|
|
25
41
|
const fn = RuntimeGlobals.definePropertyGetters;
|
|
42
|
+
// Only webpack emits the array form, so a build emitting none cannot
|
|
43
|
+
// receive one; the object form stays either way (see the note below).
|
|
44
|
+
const withArray = this.runtimeRequirements.has(
|
|
45
|
+
RuntimeGlobals.definePropertyGettersFromArray
|
|
46
|
+
);
|
|
47
|
+
// TODO webpack 6: remove object format support. Internal code (e.g. ConcatenatedModule)
|
|
48
|
+
// and third-party libraries may still call __webpack_require__.d() with an object.
|
|
49
|
+
const fromObject = [
|
|
50
|
+
"for(var key in definition) {",
|
|
51
|
+
Template.indent([
|
|
52
|
+
`if(${RuntimeGlobals.hasOwnProperty}(definition, key) && !${RuntimeGlobals.hasOwnProperty}(exports, key)) {`,
|
|
53
|
+
Template.indent([
|
|
54
|
+
"Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });"
|
|
55
|
+
]),
|
|
56
|
+
"}"
|
|
57
|
+
]),
|
|
58
|
+
"}"
|
|
59
|
+
];
|
|
26
60
|
return Template.asString([
|
|
27
61
|
"// define getter/value functions for harmony exports",
|
|
28
|
-
`${fn} = ${runtimeTemplate.basicFunction(
|
|
29
|
-
"
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
Template.indent([
|
|
34
|
-
"var key = definition[i++];",
|
|
35
|
-
"var binding = definition[i++];",
|
|
36
|
-
`if(!${RuntimeGlobals.hasOwnProperty}(exports, key)) {`,
|
|
37
|
-
Template.indent([
|
|
38
|
-
"if(binding === 0) {",
|
|
62
|
+
`${fn} = ${runtimeTemplate.basicFunction(
|
|
63
|
+
"exports, definition",
|
|
64
|
+
withArray
|
|
65
|
+
? [
|
|
66
|
+
"if(Array.isArray(definition)) {",
|
|
39
67
|
Template.indent([
|
|
40
|
-
"
|
|
68
|
+
"var i = 0;",
|
|
69
|
+
"while(i < definition.length) {",
|
|
70
|
+
Template.indent([
|
|
71
|
+
"var key = definition[i++];",
|
|
72
|
+
"var binding = definition[i++];",
|
|
73
|
+
// The descriptor is built before the own-property check so a
|
|
74
|
+
// value binding consumes its slot either way.
|
|
75
|
+
"var descriptor = binding === 0 ? { enumerable: true, value: definition[i++] } : { enumerable: true, get: binding };",
|
|
76
|
+
`if(!${RuntimeGlobals.hasOwnProperty}(exports, key)) Object.defineProperty(exports, key, descriptor);`
|
|
77
|
+
]),
|
|
78
|
+
"}"
|
|
41
79
|
]),
|
|
42
80
|
"} else {",
|
|
43
|
-
Template.indent(
|
|
44
|
-
"Object.defineProperty(exports, key, { enumerable: true, get: binding });"
|
|
45
|
-
]),
|
|
81
|
+
Template.indent(fromObject),
|
|
46
82
|
"}"
|
|
47
|
-
]
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
"}"
|
|
51
|
-
]),
|
|
52
|
-
// TODO webpack 6: remove object format support. Internal code (e.g. ConcatenatedModule)
|
|
53
|
-
// and third-party libraries may still call __webpack_require__.d() with an object.
|
|
54
|
-
"} else {",
|
|
55
|
-
Template.indent([
|
|
56
|
-
"for(var key in definition) {",
|
|
57
|
-
Template.indent([
|
|
58
|
-
`if(${RuntimeGlobals.hasOwnProperty}(definition, key) && !${RuntimeGlobals.hasOwnProperty}(exports, key)) {`,
|
|
59
|
-
Template.indent([
|
|
60
|
-
"Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });"
|
|
61
|
-
]),
|
|
62
|
-
"}"
|
|
63
|
-
]),
|
|
64
|
-
"}"
|
|
65
|
-
]),
|
|
66
|
-
"}"
|
|
67
|
-
])};`
|
|
83
|
+
]
|
|
84
|
+
: fromObject
|
|
85
|
+
)};`
|
|
68
86
|
]);
|
|
69
87
|
}
|
|
70
88
|
}
|
|
@@ -8,10 +8,20 @@ const RuntimeGlobals = require("../RuntimeGlobals");
|
|
|
8
8
|
const RuntimeModule = require("../RuntimeModule");
|
|
9
9
|
const Template = require("../Template");
|
|
10
10
|
|
|
11
|
-
/** @
|
|
12
|
-
/** @
|
|
11
|
+
/** @import Compilation from "../Compilation" */
|
|
12
|
+
/** @import { ReadOnlyRuntimeRequirements } from "../Module" */
|
|
13
13
|
|
|
14
14
|
class EnsureChunkRuntimeModule extends RuntimeModule {
|
|
15
|
+
/**
|
|
16
|
+
* Returns true, if the runtime module should get it's own scope.
|
|
17
|
+
* When false, `generate()` must emit complete statements ending with `;`
|
|
18
|
+
* so a following runtime IIFE is not parsed as a call (ASI).
|
|
19
|
+
* @returns {boolean} true, if the runtime module should get it's own scope
|
|
20
|
+
*/
|
|
21
|
+
shouldIsolate() {
|
|
22
|
+
return false;
|
|
23
|
+
}
|
|
24
|
+
|
|
15
25
|
/**
|
|
16
26
|
* @param {ReadOnlyRuntimeRequirements} runtimeRequirements runtime requirements
|
|
17
27
|
*/
|
|
@@ -28,12 +38,18 @@ class EnsureChunkRuntimeModule extends RuntimeModule {
|
|
|
28
38
|
generate() {
|
|
29
39
|
const compilation = /** @type {Compilation} */ (this.compilation);
|
|
30
40
|
const { runtimeTemplate } = compilation;
|
|
41
|
+
// An analyzable `import()` dispatches the handlers itself, so a build can need the
|
|
42
|
+
// map without the function around it.
|
|
43
|
+
const withEnsureChunk = this.runtimeRequirements.has(
|
|
44
|
+
RuntimeGlobals.ensureChunk
|
|
45
|
+
);
|
|
31
46
|
// Check if there are non initial chunks which need to be imported using require-ensure
|
|
32
47
|
if (this.runtimeRequirements.has(RuntimeGlobals.ensureChunkHandlers)) {
|
|
33
48
|
const withFetchPriority = this.runtimeRequirements.has(
|
|
34
49
|
RuntimeGlobals.hasFetchPriority
|
|
35
50
|
);
|
|
36
51
|
const handlers = RuntimeGlobals.ensureChunkHandlers;
|
|
52
|
+
if (!withEnsureChunk) return `${handlers} = {};`;
|
|
37
53
|
return Template.asString([
|
|
38
54
|
`${handlers} = {};`,
|
|
39
55
|
"// This file contains only the entry chunk.",
|