@depup/webpack 5.106.1-depup.0 → 5.109.2-depup.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +9 -11
- package/bin/webpack.js +12 -0
- package/changes.json +16 -24
- package/hot/dev-server.js +2 -0
- package/lib/APIPlugin.js +60 -35
- package/lib/AsyncDependenciesBlock.js +3 -0
- package/lib/AutomaticPrefetchPlugin.js +6 -1
- package/lib/BannerPlugin.js +13 -5
- package/lib/Cache.js +27 -5
- package/lib/CacheFacade.js +41 -0
- package/lib/Chunk.js +71 -25
- package/lib/ChunkGraph.js +153 -19
- package/lib/ChunkGroup.js +115 -28
- package/lib/ChunkTemplate.js +9 -0
- package/lib/CircularModulesPlugin.js +190 -0
- package/lib/CleanPlugin.js +27 -28
- package/lib/CodeGenerationResults.js +19 -0
- package/lib/CompatibilityPlugin.js +85 -37
- package/lib/Compilation.js +656 -112
- package/lib/Compiler.js +109 -35
- package/lib/ConcatenationScope.js +34 -4
- package/lib/ConditionalInitFragment.js +6 -0
- package/lib/ConstPlugin.js +15 -12
- package/lib/ContextExclusionPlugin.js +3 -1
- package/lib/ContextModule.js +345 -55
- package/lib/ContextModuleFactory.js +193 -51
- package/lib/ContextReplacementPlugin.js +8 -1
- package/lib/DefinePlugin.js +537 -139
- package/lib/DependenciesBlock.js +6 -1
- package/lib/Dependency.js +159 -11
- package/lib/DependencyTemplate.js +7 -1
- package/lib/DependencyTemplates.js +4 -0
- package/lib/DotenvPlugin.js +3 -0
- package/lib/DynamicEntryPlugin.js +3 -1
- package/lib/EntryOptionPlugin.js +42 -2
- package/lib/EntryPlugin.js +4 -1
- package/lib/Entrypoint.js +5 -1
- package/lib/EnvironmentPlugin.js +3 -2
- package/lib/ErrorHelpers.js +7 -0
- package/lib/EvalDevToolModulePlugin.js +3 -1
- package/lib/EvalSourceMapDevToolPlugin.js +11 -11
- package/lib/ExportsInfo.js +421 -113
- package/lib/ExportsInfoApiPlugin.js +4 -3
- package/lib/ExternalModule.js +381 -80
- package/lib/ExternalModuleFactoryPlugin.js +75 -3
- package/lib/ExternalsPlugin.js +3 -1
- package/lib/FileSystemInfo.js +701 -175
- package/lib/FlagAllModulesAsUsedPlugin.js +3 -6
- package/lib/FlagDependencyExportsPlugin.js +82 -9
- package/lib/FlagDependencyUsagePlugin.js +115 -8
- package/lib/FlagEntryExportAsUsedPlugin.js +4 -1
- package/lib/Generator.js +24 -3
- package/lib/HotModuleReplacementPlugin.js +110 -44
- package/lib/IgnorePlugin.js +5 -2
- package/lib/IgnoreWarningsPlugin.js +2 -1
- package/lib/InitFragment.js +33 -30
- package/lib/JavascriptMetaInfoPlugin.js +9 -6
- package/lib/LazyBarrel.js +389 -0
- package/lib/LibraryTemplatePlugin.js +2 -1
- package/lib/LoaderOptionsPlugin.js +3 -1
- package/lib/LoaderTargetPlugin.js +3 -1
- package/lib/MainTemplate.js +15 -0
- package/lib/ManifestPlugin.js +9 -2
- package/lib/Module.js +121 -57
- package/lib/ModuleFactory.js +6 -1
- package/lib/ModuleFilenameHelpers.js +18 -4
- package/lib/ModuleGraph.js +69 -2
- package/lib/ModuleGraphConnection.js +9 -0
- package/lib/ModuleInfoHeaderPlugin.js +5 -0
- package/lib/ModuleNotFoundError.js +3 -83
- package/lib/ModuleProfile.js +27 -1
- package/lib/ModuleSourceTypeConstants.js +52 -19
- package/lib/ModuleTemplate.js +10 -0
- package/lib/ModuleTypeConstants.js +20 -4
- package/lib/MultiCompiler.js +59 -4
- package/lib/MultiStats.js +9 -0
- package/lib/MultiWatching.js +6 -0
- package/lib/NoEmitOnErrorsPlugin.js +1 -1
- package/lib/NodeStuffPlugin.js +78 -46
- package/lib/NormalModule.js +519 -206
- package/lib/NormalModuleFactory.js +156 -31
- package/lib/NormalModuleReplacementPlugin.js +3 -1
- package/lib/NullFactory.js +1 -0
- package/lib/OptionsApply.js +1 -0
- package/lib/Parser.js +3 -1
- package/lib/PlatformPlugin.js +2 -1
- package/lib/PrefetchPlugin.js +4 -1
- package/lib/ProgressPlugin.js +351 -161
- package/lib/ProvidePlugin.js +6 -3
- package/lib/RawModule.js +32 -16
- package/lib/RecordIdsPlugin.js +9 -0
- package/lib/RequestShortener.js +8 -0
- package/lib/ResolverFactory.js +5 -0
- package/lib/RuntimeGlobals.js +58 -5
- package/lib/RuntimeModule.js +22 -7
- package/lib/RuntimePlugin.js +123 -118
- package/lib/RuntimeTemplate.js +616 -37
- package/lib/SelfModuleFactory.js +3 -0
- package/lib/SourceMapDevToolModuleOptionsPlugin.js +2 -0
- package/lib/SourceMapDevToolPlugin.js +341 -63
- package/lib/Stats.js +6 -0
- package/lib/Template.js +52 -6
- package/lib/TemplatedPathPlugin.js +505 -138
- package/lib/UseStrictPlugin.js +3 -2
- package/lib/WarnCaseSensitiveModulesPlugin.js +72 -3
- package/lib/WarnDeprecatedOptionPlugin.js +6 -2
- package/lib/WarnNoModeSetPlugin.js +18 -2
- package/lib/WatchIgnorePlugin.js +5 -1
- package/lib/Watching.js +25 -3
- package/lib/WebpackError.js +3 -74
- package/lib/WebpackIsIncludedPlugin.js +4 -2
- package/lib/WebpackOptionsApply.js +88 -25
- package/lib/WebpackOptionsDefaulter.js +1 -0
- package/lib/asset/AssetBytesGenerator.js +28 -10
- package/lib/asset/AssetBytesParser.js +1 -0
- package/lib/asset/AssetGenerator.js +199 -60
- package/lib/asset/AssetModule.js +47 -0
- package/lib/asset/AssetModulesPlugin.js +115 -24
- package/lib/asset/AssetParser.js +4 -2
- package/lib/asset/AssetSourceGenerator.js +26 -8
- package/lib/asset/AssetSourceParser.js +1 -0
- package/lib/asset/RawDataUrlModule.js +23 -13
- package/lib/asset/WebManifestGenerator.js +164 -0
- package/lib/asset/WebManifestParser.js +130 -0
- package/lib/async-modules/AsyncModuleHelpers.js +1 -0
- package/lib/async-modules/AwaitDependenciesInitFragment.js +18 -4
- package/lib/async-modules/InferAsyncModulesPlugin.js +1 -1
- package/lib/async-modules/isGeneratorLowered.js +26 -0
- package/lib/buildChunkGraph.js +107 -15
- package/lib/bun/BunTargetPlugin.js +42 -0
- package/lib/cache/AddBuildDependenciesPlugin.js +3 -1
- package/lib/cache/AddManagedPathsPlugin.js +5 -1
- package/lib/cache/IdleFileCachePlugin.js +6 -1
- package/lib/cache/MemoryCachePlugin.js +1 -1
- package/lib/cache/MemoryWithGcCachePlugin.js +4 -1
- package/lib/cache/PackFileCacheStrategy.js +302 -12
- package/lib/cache/ResolverCachePlugin.js +12 -1
- package/lib/cache/getLazyHashedEtag.js +13 -2
- package/lib/cache/mergeEtags.js +4 -0
- package/lib/cli.js +142 -20
- package/lib/config/browserslistTargetHandler.js +141 -0
- package/lib/config/defaults.js +612 -43
- package/lib/config/defineConfig.js +31 -0
- package/lib/config/normalization.js +46 -1
- package/lib/config/target.js +200 -2
- package/lib/container/ContainerEntryDependency.js +2 -0
- package/lib/container/ContainerEntryModule.js +27 -14
- package/lib/container/ContainerEntryModuleFactory.js +1 -0
- package/lib/container/ContainerExposedDependency.js +6 -2
- package/lib/container/ContainerPlugin.js +2 -1
- package/lib/container/ContainerReferencePlugin.js +3 -2
- package/lib/container/FallbackDependency.js +9 -7
- package/lib/container/FallbackItemDependency.js +1 -0
- package/lib/container/FallbackModule.js +22 -9
- package/lib/container/FallbackModuleFactory.js +1 -0
- package/lib/container/HoistContainerReferencesPlugin.js +47 -55
- package/lib/container/ModuleFederationPlugin.js +21 -29
- package/lib/container/RemoteModule.js +33 -10
- package/lib/container/RemoteRuntimeModule.js +15 -12
- package/lib/container/RemoteToExternalDependency.js +1 -0
- package/lib/container/options.js +7 -0
- package/lib/css/CssGenerator.js +540 -272
- package/lib/css/CssInjectStyleRuntimeModule.js +86 -70
- package/lib/css/CssLoadingRuntimeModule.js +173 -81
- package/lib/{CssModule.js → css/CssModule.js} +72 -37
- package/lib/css/CssModulesPlugin.js +371 -208
- package/lib/css/CssParser.js +3538 -1963
- package/lib/css/syntax.js +4155 -0
- package/lib/debug/ProfilingPlugin.js +33 -2
- package/lib/deno/DenoTargetPlugin.js +41 -0
- package/lib/dependencies/AMDDefineDependency.js +29 -17
- package/lib/dependencies/AMDDefineDependencyParserPlugin.js +19 -6
- package/lib/dependencies/AMDPlugin.js +6 -3
- package/lib/dependencies/AMDRequireArrayDependency.js +13 -11
- package/lib/dependencies/AMDRequireContextDependency.js +10 -11
- package/lib/dependencies/AMDRequireDependenciesBlock.js +1 -0
- package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +28 -14
- package/lib/dependencies/AMDRequireDependency.js +28 -20
- package/lib/dependencies/AMDRequireItemDependency.js +1 -0
- package/lib/dependencies/AMDRuntimeModules.js +3 -0
- package/lib/dependencies/CachedConstDependency.js +9 -1
- package/lib/dependencies/CommonJsDependencyHelpers.js +104 -0
- package/lib/dependencies/CommonJsExportRequireDependency.js +157 -38
- package/lib/dependencies/CommonJsExportsDependency.js +74 -20
- package/lib/dependencies/CommonJsExportsParserPlugin.js +246 -15
- package/lib/dependencies/CommonJsFullRequireDependency.js +91 -27
- package/lib/dependencies/CommonJsImportsParserPlugin.js +189 -24
- package/lib/dependencies/CommonJsPlugin.js +7 -4
- package/lib/dependencies/CommonJsRequireContextDependency.js +13 -13
- package/lib/dependencies/CommonJsRequireDependency.js +135 -13
- package/lib/dependencies/CommonJsSelfReferenceDependency.js +60 -16
- package/lib/dependencies/ConstDependency.js +22 -12
- package/lib/dependencies/ContextDependency.js +13 -2
- package/lib/dependencies/ContextDependencyHelpers.js +7 -4
- package/lib/dependencies/ContextDependencyTemplateAsId.js +2 -1
- package/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +1 -0
- package/lib/dependencies/ContextElementDependency.js +27 -14
- package/lib/dependencies/CreateRequireParserPlugin.js +14 -7
- package/lib/dependencies/CreateScriptUrlDependency.js +9 -7
- package/lib/dependencies/CriticalDependencyWarning.js +3 -1
- package/lib/dependencies/CssIcssExportDependency.js +681 -367
- package/lib/dependencies/CssIcssImportDependency.js +62 -17
- package/lib/dependencies/CssIcssSymbolDependency.js +36 -17
- package/lib/dependencies/CssImportDependency.js +37 -1
- package/lib/dependencies/CssUrlDependency.js +87 -14
- package/lib/dependencies/DelegatedSourceDependency.js +1 -0
- package/lib/dependencies/DllEntryDependency.js +12 -13
- package/lib/dependencies/DynamicExports.js +5 -0
- package/lib/dependencies/EntryDependency.js +1 -0
- package/lib/dependencies/ExportBindingInitFragment.js +164 -0
- package/lib/dependencies/ExportsInfoDependency.js +18 -12
- package/lib/dependencies/ExternalModuleDependency.js +13 -5
- package/lib/dependencies/ExternalModuleInitFragment.js +10 -5
- package/lib/dependencies/ExternalModuleInitFragmentDependency.js +19 -12
- package/lib/dependencies/HarmonyAcceptDependency.js +24 -26
- package/lib/dependencies/HarmonyAcceptImportDependency.js +2 -0
- package/lib/dependencies/HarmonyCompatibilityDependency.js +33 -14
- package/lib/dependencies/HarmonyDetectionParserPlugin.js +108 -30
- package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +34 -3
- package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +70 -33
- package/lib/dependencies/HarmonyExportExpressionDependency.js +133 -43
- package/lib/dependencies/HarmonyExportHeaderDependency.js +11 -9
- package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +268 -44
- package/lib/dependencies/HarmonyExportInitFragment.js +28 -20
- package/lib/dependencies/HarmonyExportSpecifierDependency.js +88 -18
- package/lib/dependencies/HarmonyExports.js +6 -1
- package/lib/dependencies/HarmonyImportDependency.js +60 -4
- package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +139 -146
- package/lib/dependencies/HarmonyImportGuard.js +427 -0
- package/lib/dependencies/HarmonyImportSideEffectDependency.js +22 -1
- package/lib/dependencies/HarmonyImportSpecifierDependency.js +146 -24
- package/lib/{HarmonyLinkingError.js → dependencies/HarmonyLinkingError.js} +6 -3
- package/lib/dependencies/HarmonyModulesPlugin.js +11 -1
- package/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +2 -1
- package/lib/dependencies/HtmlEntryDependency.js +1295 -0
- package/lib/dependencies/HtmlInlineHtmlDependency.js +107 -0
- package/lib/dependencies/HtmlInlineScriptDependency.js +126 -0
- package/lib/dependencies/HtmlInlineStyleDependency.js +152 -0
- package/lib/dependencies/HtmlSourceDependency.js +172 -0
- package/lib/dependencies/ImportContextDependency.js +9 -9
- package/lib/dependencies/ImportDependency.js +92 -3
- package/lib/dependencies/ImportEagerDependency.js +2 -0
- package/lib/dependencies/ImportMetaContextDependency.js +1 -0
- package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +35 -19
- package/lib/dependencies/ImportMetaContextPlugin.js +40 -8
- package/lib/dependencies/ImportMetaGlobDependency.js +81 -0
- package/lib/dependencies/ImportMetaGlobDependencyParserPlugin.js +78 -0
- package/lib/dependencies/ImportMetaGlobHelpers.js +660 -0
- package/lib/dependencies/ImportMetaHotAcceptDependency.js +2 -0
- package/lib/dependencies/ImportMetaHotDeclineDependency.js +2 -0
- package/lib/dependencies/ImportMetaPlugin.js +595 -209
- package/lib/dependencies/ImportMetaResolveDependency.js +90 -0
- package/lib/dependencies/ImportParserPlugin.js +114 -27
- package/lib/dependencies/ImportPhase.js +17 -11
- package/lib/dependencies/ImportPlugin.js +2 -1
- package/lib/dependencies/ImportWeakDependency.js +3 -0
- package/lib/dependencies/JsonExportsDependency.js +15 -10
- package/lib/dependencies/LoaderDependency.js +2 -0
- package/lib/dependencies/LoaderImportDependency.js +3 -0
- package/lib/dependencies/LoaderPlugin.js +9 -2
- package/lib/dependencies/LocalModule.js +15 -12
- package/lib/dependencies/LocalModuleDependency.js +15 -13
- package/lib/dependencies/LocalModulesHelpers.js +3 -0
- package/lib/dependencies/ModuleDecoratorDependency.js +16 -10
- package/lib/dependencies/ModuleDependency.js +14 -0
- package/lib/dependencies/ModuleDependencyTemplateAsId.js +1 -0
- package/lib/dependencies/ModuleDependencyTemplateAsRequireId.js +1 -0
- package/lib/dependencies/ModuleHotAcceptDependency.js +2 -0
- package/lib/dependencies/ModuleHotDeclineDependency.js +2 -0
- package/lib/dependencies/ModuleInitFragmentDependency.js +19 -11
- package/lib/dependencies/NullDependency.js +2 -0
- package/lib/dependencies/PrefetchDependency.js +1 -0
- package/lib/dependencies/ProvidedDependency.js +36 -27
- package/lib/dependencies/PureExpressionDependency.js +14 -10
- package/lib/dependencies/RequireContextDependency.js +1 -0
- package/lib/dependencies/RequireContextDependencyParserPlugin.js +2 -1
- package/lib/dependencies/RequireContextPlugin.js +2 -1
- package/lib/dependencies/RequireEnsureDependenciesBlock.js +1 -0
- package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +4 -6
- package/lib/dependencies/RequireEnsureDependency.js +16 -13
- package/lib/dependencies/RequireEnsureItemDependency.js +1 -0
- package/lib/dependencies/RequireEnsurePlugin.js +2 -1
- package/lib/dependencies/RequireHeaderDependency.js +7 -4
- package/lib/dependencies/RequireIncludeDependency.js +2 -0
- package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +11 -12
- package/lib/dependencies/RequireIncludePlugin.js +2 -1
- package/lib/{RequireJsStuffPlugin.js → dependencies/RequireJsStuffPlugin.js} +9 -8
- package/lib/dependencies/RequireResolveContextDependency.js +10 -11
- package/lib/dependencies/RequireResolveDependency.js +2 -0
- package/lib/dependencies/RequireResolveHeaderDependency.js +8 -5
- package/lib/dependencies/RuntimeRequirementsDependency.js +11 -8
- package/lib/dependencies/StaticExportsDependency.js +13 -10
- package/lib/dependencies/SystemPlugin.js +9 -6
- package/lib/dependencies/SystemRuntimeModule.js +1 -0
- package/lib/dependencies/TopLevelAwaitDependency.js +93 -0
- package/lib/dependencies/URLContextDependency.js +8 -7
- package/lib/dependencies/URLDependency.js +157 -33
- package/lib/dependencies/URLPlugin.js +2 -0
- package/lib/dependencies/UnsupportedDependency.js +12 -13
- package/lib/dependencies/WebAssemblyExportImportedDependency.js +15 -16
- package/lib/dependencies/WebAssemblyImportDependency.js +19 -18
- package/lib/dependencies/WebpackIsIncludedDependency.js +3 -0
- package/lib/dependencies/{WorkerPlugin.js → WorkerAndWorkletPlugin.js} +364 -114
- package/lib/dependencies/WorkerDependency.js +111 -27
- package/lib/dependencies/WorkletDependency.js +278 -0
- package/lib/dependencies/getFunctionExpression.js +1 -0
- package/lib/dependencies/processExportInfo.js +14 -11
- package/lib/{DelegatedModule.js → dll/DelegatedModule.js} +71 -44
- package/lib/{DelegatedModuleFactoryPlugin.js → dll/DelegatedModuleFactoryPlugin.js} +27 -4
- package/lib/{DelegatedPlugin.js → dll/DelegatedPlugin.js} +5 -3
- package/lib/{DllEntryPlugin.js → dll/DllEntryPlugin.js} +9 -5
- package/lib/{DllModule.js → dll/DllModule.js} +36 -24
- package/lib/{DllModuleFactory.js → dll/DllModuleFactory.js} +5 -4
- package/lib/{DllPlugin.js → dll/DllPlugin.js} +24 -6
- package/lib/{DllReferencePlugin.js → dll/DllReferencePlugin.js} +26 -18
- package/lib/{LibManifestPlugin.js → dll/LibManifestPlugin.js} +14 -10
- package/lib/electron/ElectronTargetPlugin.js +24 -5
- package/lib/{AbstractMethodError.js → errors/AbstractMethodError.js} +10 -1
- package/lib/{AsyncDependencyToInitialChunkError.js → errors/AsyncDependencyToInitialChunkError.js} +8 -3
- package/lib/errors/BuildCycleError.js +1 -1
- package/lib/{ChunkRenderError.js → errors/ChunkRenderError.js} +1 -1
- package/lib/{CodeGenerationError.js → errors/CodeGenerationError.js} +1 -1
- package/lib/{CommentCompilationWarning.js → errors/CommentCompilationWarning.js} +9 -3
- package/lib/{ConcurrentCompilationError.js → errors/ConcurrentCompilationError.js} +5 -2
- package/lib/{EnvironmentNotSupportAsyncWarning.js → errors/EnvironmentNotSupportAsyncWarning.js} +5 -5
- package/lib/{HookWebpackError.js → errors/HookWebpackError.js} +20 -16
- package/lib/{IgnoreErrorModuleFactory.js → errors/IgnoreErrorModuleFactory.js} +7 -4
- package/lib/{InvalidDependenciesModuleWarning.js → errors/InvalidDependenciesModuleWarning.js} +6 -3
- package/lib/errors/JSONParseError.js +115 -0
- package/lib/errors/LoaderLoadingError.js +20 -0
- package/lib/{ModuleBuildError.js → errors/ModuleBuildError.js} +22 -16
- package/lib/{ModuleDependencyError.js → errors/ModuleDependencyError.js} +10 -3
- package/lib/{ModuleDependencyWarning.js → errors/ModuleDependencyWarning.js} +13 -5
- package/lib/{ModuleError.js → errors/ModuleError.js} +10 -14
- package/lib/{ModuleHashingError.js → errors/ModuleHashingError.js} +5 -1
- package/lib/errors/ModuleNotFoundError.js +94 -0
- package/lib/errors/ModuleParseError.js +141 -0
- package/lib/{ModuleRestoreError.js → errors/ModuleRestoreError.js} +4 -1
- package/lib/{ModuleStoreError.js → errors/ModuleStoreError.js} +5 -1
- package/lib/{ModuleWarning.js → errors/ModuleWarning.js} +13 -14
- package/lib/{NodeStuffInWebError.js → errors/NodeStuffInWebError.js} +7 -5
- package/lib/errors/NonErrorEmittedError.js +30 -0
- package/lib/{UnhandledSchemeError.js → errors/UnhandledSchemeError.js} +9 -2
- package/lib/{UnsupportedFeatureWarning.js → errors/UnsupportedFeatureWarning.js} +4 -3
- package/lib/errors/WebpackError.js +84 -0
- package/lib/esm/ExportWebpackRequireRuntimeModule.js +2 -0
- package/lib/esm/ModuleChunkFormatPlugin.js +52 -15
- package/lib/esm/ModuleChunkLoadingPlugin.js +11 -3
- package/lib/esm/ModuleChunkLoadingRuntimeModule.js +80 -52
- package/lib/hmr/HotModuleReplacement.runtime.js +175 -30
- package/lib/hmr/HotModuleReplacementRuntimeModule.js +8 -0
- package/lib/hmr/JavascriptHotModuleReplacement.runtime.js +173 -26
- package/lib/hmr/JavascriptHotModuleReplacementHelper.js +1 -0
- package/lib/hmr/LazyCompilationPlugin.js +154 -7
- package/lib/hmr/lazyCompilationBackend.js +53 -12
- package/lib/html/HtmlGenerator.js +1490 -0
- package/lib/html/HtmlModule.js +41 -0
- package/lib/html/HtmlModulesPlugin.js +1129 -0
- package/lib/html/HtmlParser.js +1970 -0
- package/lib/html/favicon.svg +1 -0
- package/lib/html/syntax.js +9106 -0
- package/lib/ids/ChunkModuleIdRangePlugin.js +3 -1
- package/lib/ids/DeterministicChunkIdsPlugin.js +3 -1
- package/lib/ids/DeterministicModuleIdsPlugin.js +3 -1
- package/lib/ids/HashedModuleIdsPlugin.js +2 -1
- package/lib/ids/IdHelpers.js +49 -12
- package/lib/ids/NamedChunkIdsPlugin.js +3 -1
- package/lib/ids/NamedModuleIdsPlugin.js +3 -1
- package/lib/ids/NaturalChunkIdsPlugin.js +1 -1
- package/lib/ids/NaturalModuleIdsPlugin.js +1 -1
- package/lib/ids/OccurrenceChunkIdsPlugin.js +2 -1
- package/lib/ids/OccurrenceModuleIdsPlugin.js +4 -1
- package/lib/ids/SyncModuleIdsPlugin.js +3 -1
- package/lib/index.js +66 -15
- package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +5 -6
- package/lib/javascript/BasicEvaluatedExpression.js +370 -49
- package/lib/javascript/ChunkFormatHelpers.js +2 -1
- package/lib/javascript/ChunkHelpers.js +1 -0
- package/lib/javascript/CommonJsChunkFormatPlugin.js +1 -1
- package/lib/javascript/EnableChunkLoadingPlugin.js +6 -1
- package/lib/javascript/JavascriptGenerator.js +213 -51
- package/lib/javascript/JavascriptModule.js +54 -0
- package/lib/javascript/JavascriptModulesPlugin.js +628 -198
- package/lib/javascript/JavascriptParser.js +1334 -471
- package/lib/javascript/JavascriptParserHelpers.js +10 -7
- package/lib/javascript/StartupHelpers.js +5 -0
- package/lib/javascript/syntax.js +5037 -0
- package/lib/json/JsonData.js +5 -0
- package/lib/json/JsonGenerator.js +21 -0
- package/lib/json/JsonModule.js +40 -0
- package/lib/json/JsonModulesPlugin.js +8 -1
- package/lib/json/JsonParser.js +18 -27
- package/lib/library/AbstractLibraryPlugin.js +17 -2
- package/lib/library/AmdLibraryPlugin.js +8 -0
- package/lib/library/AssignLibraryPlugin.js +21 -3
- package/lib/library/EnableLibraryPlugin.js +8 -2
- package/lib/library/ExportPropertyLibraryPlugin.js +10 -0
- package/lib/{FalseIIFEUmdWarning.js → library/FalseIIFEUmdWarning.js} +2 -1
- package/lib/library/JsonpLibraryPlugin.js +8 -0
- package/lib/library/ModuleLibraryPlugin.js +154 -7
- package/lib/library/SystemLibraryPlugin.js +11 -3
- package/lib/library/UmdLibraryPlugin.js +16 -0
- package/lib/loaders/LoaderRunner.js +714 -0
- package/lib/loaders/loadLoader.js +100 -0
- package/lib/logging/Logger.js +17 -0
- package/lib/logging/createConsoleLogger.js +7 -0
- package/lib/logging/runtime.js +2 -0
- package/lib/logging/truncateArgs.js +2 -0
- package/lib/node/CommonJsChunkLoadingPlugin.js +5 -1
- package/lib/node/NodeEnvironmentPlugin.js +7 -3
- package/lib/node/NodeSourcePlugin.js +1 -1
- package/lib/node/NodeTargetPlugin.js +4 -63
- package/lib/node/NodeTemplatePlugin.js +3 -1
- package/lib/node/NodeWatchFileSystem.js +40 -22
- package/lib/node/ReadFileChunkLoadingRuntimeModule.js +13 -9
- package/lib/node/ReadFileCompileAsyncWasmPlugin.js +33 -3
- package/lib/node/ReadFileCompileWasmPlugin.js +28 -3
- package/lib/node/RequireChunkLoadingRuntimeModule.js +21 -16
- package/lib/node/nodeBuiltins.js +80 -0
- package/lib/node/nodeConsole.js +116 -64
- package/lib/optimize/AggressiveMergingPlugin.js +22 -16
- package/lib/optimize/AggressiveSplittingPlugin.js +6 -1
- package/lib/optimize/ConcatenatedModule.js +603 -130
- package/lib/optimize/ConstExportsPlugin.js +211 -0
- package/lib/optimize/EnsureChunkConditionsPlugin.js +2 -1
- package/lib/optimize/FlagIncludedChunksPlugin.js +15 -4
- package/lib/optimize/InlineExports.js +178 -0
- package/lib/optimize/InnerGraph.js +374 -262
- package/lib/optimize/InnerGraphPlugin.js +246 -117
- package/lib/optimize/LimitChunkCountPlugin.js +9 -0
- package/lib/optimize/MangleExportsPlugin.js +5 -1
- package/lib/optimize/MergeDuplicateChunksPlugin.js +2 -0
- package/lib/optimize/MinChunkSizePlugin.js +2 -1
- package/lib/optimize/MinMaxSizeWarning.js +5 -4
- package/lib/optimize/ModuleConcatenationPlugin.js +229 -55
- package/lib/optimize/RealContentHashPlugin.js +130 -52
- package/lib/optimize/RemoveEmptyChunksPlugin.js +2 -1
- package/lib/optimize/RemoveParentModulesPlugin.js +3 -1
- package/lib/optimize/RuntimeChunkPlugin.js +2 -1
- package/lib/optimize/SideEffectsFlagPlugin.js +381 -55
- package/lib/optimize/SplitChunksPlugin.js +200 -50
- package/lib/performance/AssetsOverSizeLimitWarning.js +3 -2
- package/lib/performance/EntrypointsOverSizeLimitWarning.js +3 -2
- package/lib/performance/NoAsyncChunksWarning.js +5 -3
- package/lib/performance/SizeLimitsPlugin.js +8 -2
- package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +1 -0
- package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +21 -0
- package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +1 -0
- package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +5 -1
- package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +25 -13
- package/lib/prefetch/ResourceHintPlugin.js +687 -0
- package/lib/prefetch/ResourceHintRuntimeModule.js +149 -0
- package/lib/prefetch/StartupAssetHintRuntimeModule.js +210 -0
- package/lib/prefetch/parseResourceHintOptions.js +103 -0
- package/lib/rules/BasicEffectRulePlugin.js +3 -0
- package/lib/rules/BasicMatcherRulePlugin.js +3 -0
- package/lib/rules/ObjectMatcherRulePlugin.js +3 -0
- package/lib/rules/RuleSetCompiler.js +132 -0
- package/lib/rules/UseEffectRulePlugin.js +10 -3
- package/lib/runtime/AsyncModuleGeneratorRuntimeModule.js +56 -0
- package/lib/runtime/AsyncModuleRuntimeModule.js +52 -33
- package/lib/runtime/AutoPublicPathRuntimeModule.js +22 -9
- package/lib/runtime/BaseUriRuntimeModule.js +1 -0
- package/lib/runtime/ChunkNameRuntimeModule.js +1 -0
- package/lib/runtime/CommonJsWrapRuntimeModule.js +37 -0
- package/lib/runtime/CompatGetDefaultExportRuntimeModule.js +2 -1
- package/lib/runtime/CompatRuntimeModule.js +2 -0
- package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +7 -4
- package/lib/runtime/CreateScriptRuntimeModule.js +1 -0
- package/lib/runtime/CreateScriptUrlRuntimeModule.js +1 -0
- package/lib/runtime/DefinePropertyGettersRuntimeModule.js +34 -4
- package/lib/runtime/EnsureChunkRuntimeModule.js +1 -0
- package/lib/runtime/GetChunkFilenameRuntimeModule.js +88 -8
- package/lib/runtime/GetFullHashRuntimeModule.js +1 -0
- package/lib/runtime/GetMainFilenameRuntimeModule.js +1 -0
- package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +2 -1
- package/lib/runtime/GetWorkletBootstrapRuntimeModule.js +59 -0
- package/lib/runtime/GlobalRuntimeModule.js +1 -0
- package/lib/runtime/HasOwnPropertyRuntimeModule.js +2 -1
- package/lib/runtime/HelperRuntimeModule.js +5 -0
- package/lib/runtime/LoadScriptRuntimeModule.js +28 -37
- package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +354 -37
- package/lib/runtime/MakeNamespaceObjectRuntimeModule.js +2 -1
- package/lib/runtime/NonceRuntimeModule.js +1 -0
- package/lib/runtime/OnChunksLoadedRuntimeModule.js +5 -4
- package/lib/runtime/PublicPathRuntimeModule.js +1 -0
- package/lib/runtime/RelativeUrlRuntimeModule.js +4 -2
- package/lib/runtime/RuntimeIdRuntimeModule.js +1 -0
- package/lib/runtime/SetAnonymousDefaultNameRuntimeModule.js +38 -0
- package/lib/runtime/StartupChunkDependenciesPlugin.js +13 -1
- package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +2 -1
- package/lib/runtime/StartupEntrypointRuntimeModule.js +5 -3
- package/lib/runtime/SystemContextRuntimeModule.js +1 -0
- package/lib/runtime/ToBinaryRuntimeModule.js +1 -0
- package/lib/runtime/WorkerRuntimeModule.js +33 -0
- package/lib/schemes/DataUriPlugin.js +14 -2
- package/lib/schemes/FileUriPlugin.js +1 -1
- package/lib/schemes/HttpUriPlugin.js +86 -4
- package/lib/schemes/VirtualUrlPlugin.js +8 -4
- package/lib/serialization/AggregateErrorSerializer.js +9 -6
- package/lib/serialization/ArraySerializer.js +6 -8
- package/lib/serialization/BinaryMiddleware.js +427 -1006
- package/lib/serialization/DateObjectSerializer.js +4 -2
- package/lib/serialization/ErrorObjectSerializer.js +10 -6
- package/lib/serialization/FileMiddleware.js +345 -59
- package/lib/serialization/MapObjectSerializer.js +7 -9
- package/lib/serialization/NullPrototypeObjectSerializer.js +9 -9
- package/lib/serialization/ObjectMiddleware.js +73 -13
- package/lib/serialization/PlainObjectSerializer.js +16 -8
- package/lib/serialization/RegExpObjectSerializer.js +4 -2
- package/lib/serialization/Serializer.js +6 -0
- package/lib/serialization/SerializerMiddleware.js +14 -2
- package/lib/serialization/SetObjectSerializer.js +6 -8
- package/lib/serialization/SingleItemMiddleware.js +3 -0
- package/lib/sharing/ConsumeSharedFallbackDependency.js +1 -0
- package/lib/sharing/ConsumeSharedModule.js +21 -7
- package/lib/sharing/ConsumeSharedPlugin.js +11 -11
- package/lib/sharing/ConsumeSharedRuntimeModule.js +55 -45
- package/lib/sharing/ProvideForSharedDependency.js +1 -0
- package/lib/sharing/ProvideSharedDependency.js +34 -15
- package/lib/sharing/ProvideSharedModule.js +42 -12
- package/lib/sharing/ProvideSharedModuleFactory.js +1 -0
- package/lib/sharing/ProvideSharedPlugin.js +13 -8
- package/lib/sharing/SharePlugin.js +5 -1
- package/lib/sharing/ShareRuntimeModule.js +19 -16
- package/lib/sharing/resolveMatchedConfigs.js +6 -2
- package/lib/sharing/utils.js +9 -1
- package/lib/stats/DefaultStatsFactoryPlugin.js +289 -201
- package/lib/stats/DefaultStatsPresetPlugin.js +14 -2
- package/lib/stats/DefaultStatsPrinterPlugin.js +74 -170
- package/lib/stats/StatsFactory.js +70 -27
- package/lib/stats/StatsPrinter.js +16 -2
- package/lib/typescript/TypeScriptPlugin.js +210 -0
- package/lib/url/URLParserPlugin.js +111 -23
- package/lib/util/ArrayHelpers.js +1 -0
- package/lib/util/ArrayQueue.js +10 -5
- package/lib/util/AsyncQueue.js +154 -74
- package/lib/util/Hash.js +2 -2
- package/lib/util/IterableHelpers.js +3 -0
- package/lib/util/LazyBucketSortedSet.js +26 -0
- package/lib/util/LazySet.js +45 -4
- package/lib/util/LocConverter.js +64 -0
- package/lib/util/ParallelismFactorCalculator.js +1 -0
- package/lib/util/Queue.js +6 -3
- package/lib/util/Semaphore.js +15 -1
- package/lib/util/SetHelpers.js +4 -1
- package/lib/util/SortableSet.js +7 -1
- package/lib/util/SourceProcessor.js +119 -0
- package/lib/util/StackedCacheMap.js +20 -3
- package/lib/util/StackedMap.js +162 -43
- package/lib/util/StringXor.js +1 -1
- package/lib/util/TupleQueue.js +7 -3
- package/lib/util/TupleSet.js +14 -0
- package/lib/util/URLAbsoluteSpecifier.js +1 -0
- package/lib/util/WeakTupleMap.js +60 -1
- package/lib/util/binarySearchBounds.js +3 -2
- package/lib/util/chainedImports.js +3 -3
- package/lib/util/cleverMerge.js +19 -2
- package/lib/util/comparators.js +35 -4
- package/lib/util/compileBooleanMatcher.js +9 -0
- package/lib/util/concatenate.js +80 -24
- package/lib/util/conventions.js +46 -1
- package/lib/util/createHash.js +0 -1
- package/lib/util/createHooksRegistry.js +43 -0
- package/lib/util/createMappings.js +118 -0
- package/lib/util/dataURL.js +3 -2
- package/lib/util/deprecation.js +19 -0
- package/lib/util/deterministicGrouping.js +46 -17
- package/lib/util/extractSourceMap.js +2 -1
- package/lib/util/extractUrlAndGlobal.js +1 -0
- package/lib/util/findGraphRoots.js +7 -0
- package/lib/{formatLocation.js → util/formatLocation.js} +4 -2
- package/lib/{SizeFormatHelpers.js → util/formatSize.js} +10 -3
- package/lib/util/fs.js +87 -14
- package/lib/util/generateDebugId.js +1 -0
- package/lib/util/globUtils.js +710 -0
- package/lib/util/hash/BatchedHash.js +1 -0
- package/lib/util/hash/BulkUpdateHash.js +1 -0
- package/lib/util/hash/DebugHash.js +1 -0
- package/lib/util/hash/hash-digest.js +32 -15
- package/lib/util/hash/md4.js +1 -1
- package/lib/util/hash/wasm-hash.js +5 -0
- package/lib/util/hash/xxhash64.js +1 -1
- package/lib/util/identifier.js +118 -7
- package/lib/util/implicitTypeLoaderFallback.js +62 -0
- package/lib/util/internalSerializables.js +102 -60
- package/lib/util/magicComment.js +149 -7
- package/lib/util/makeSerializable.js +7 -0
- package/lib/util/memoize.js +2 -0
- package/lib/util/mimeTypes.js +176 -0
- package/lib/util/nonNumericOnlyHash.js +31 -1
- package/lib/util/numberHash.js +2 -2
- package/lib/util/parseJson.js +41 -0
- package/lib/util/processAsyncTree.js +8 -0
- package/lib/util/property.js +9 -2
- package/lib/util/publicPathPlaceholder.js +64 -0
- package/lib/util/registerExternalSerializer.js +24 -4
- package/lib/util/removeBOM.js +1 -0
- package/lib/util/runtime.js +32 -0
- package/lib/util/semver.js +15 -0
- package/lib/util/serialization.js +2 -0
- package/lib/util/smartGrouping.js +8 -0
- package/lib/util/source.js +23 -0
- package/lib/util/topologicalSort.js +69 -0
- package/lib/validateSchema.js +1 -0
- package/lib/wasm/EnableWasmLoadingPlugin.js +15 -1
- package/lib/wasm-async/AsyncWasmCompileRuntimeModule.js +25 -18
- package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +34 -22
- package/lib/wasm-async/AsyncWasmModule.js +77 -0
- package/lib/wasm-async/AsyncWebAssemblyGenerator.js +6 -0
- package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +6 -1
- package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +22 -126
- package/lib/wasm-async/AsyncWebAssemblyParser.js +3 -2
- package/lib/wasm-async/UniversalCompileAsyncWasmPlugin.js +13 -2
- package/lib/wasm-sync/SyncWasmModule.js +39 -0
- package/lib/wasm-sync/UnsupportedWebAssemblyFeatureError.js +7 -3
- package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +86 -19
- package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +4 -3
- package/lib/wasm-sync/WebAssemblyGenerator.js +27 -1
- package/lib/wasm-sync/WebAssemblyInInitialChunkError.js +9 -3
- package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +4 -0
- package/lib/wasm-sync/WebAssemblyModulesPlugin.js +20 -1
- package/lib/wasm-sync/WebAssemblyParser.js +9 -3
- package/lib/wasm-sync/WebAssemblyUtils.js +2 -0
- package/lib/web/FetchCompileAsyncWasmPlugin.js +29 -1
- package/lib/web/FetchCompileWasmPlugin.js +27 -1
- package/lib/web/JsonpChunkLoadingPlugin.js +11 -1
- package/lib/web/JsonpChunkLoadingRuntimeModule.js +58 -64
- package/lib/web/JsonpTemplatePlugin.js +2 -1
- package/lib/webpack.js +78 -1
- package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +10 -1
- package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +15 -10
- package/lib/webworker/WebWorkerTemplatePlugin.js +1 -1
- package/module.d.ts +21 -0
- package/package.json +79 -77
- package/schemas/WebpackOptions.check.js +1 -1
- package/schemas/WebpackOptions.json +1173 -80
- package/schemas/plugins/{DllPlugin.check.d.ts → HtmlGeneratorOptions.check.d.ts} +1 -1
- package/schemas/plugins/HtmlGeneratorOptions.check.js +6 -0
- package/schemas/plugins/HtmlGeneratorOptions.json +3 -0
- package/schemas/plugins/{DllReferencePlugin.check.d.ts → HtmlParserOptions.check.d.ts} +1 -1
- package/schemas/plugins/HtmlParserOptions.check.js +6 -0
- package/schemas/plugins/HtmlParserOptions.json +3 -0
- package/schemas/plugins/ProgressPlugin.check.js +1 -1
- package/schemas/plugins/ProgressPlugin.json +38 -0
- package/schemas/plugins/container/ContainerReferencePlugin.check.js +1 -1
- package/schemas/plugins/container/ContainerReferencePlugin.json +2 -0
- package/schemas/plugins/container/ExternalsType.check.js +1 -1
- package/schemas/plugins/container/ModuleFederationPlugin.check.js +1 -1
- package/schemas/plugins/container/ModuleFederationPlugin.json +2 -0
- package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.d.ts +7 -0
- package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.js +6 -0
- package/schemas/plugins/css/CssAutoOrModuleParserOptions.json +3 -0
- package/schemas/plugins/css/CssModuleParserOptions.check.js +1 -1
- package/schemas/plugins/css/CssParserOptions.check.js +1 -1
- package/schemas/plugins/dll/DllPlugin.check.d.ts +7 -0
- package/schemas/plugins/dll/DllReferencePlugin.check.d.ts +7 -0
- package/types.d.ts +11053 -3019
- package/lib/CaseSensitiveModulesWarning.js +0 -72
- package/lib/GraphHelpers.js +0 -46
- package/lib/ModuleParseError.js +0 -125
- package/lib/NoModeWarning.js +0 -23
- package/lib/css/CssMergeStyleSheetsRuntimeModule.js +0 -56
- package/lib/css/walkCssTokens.js +0 -1843
- package/lib/util/AppendOnlyStackedSet.js +0 -78
- /package/schemas/plugins/{DllPlugin.check.js → dll/DllPlugin.check.js} +0 -0
- /package/schemas/plugins/{DllPlugin.json → dll/DllPlugin.json} +0 -0
- /package/schemas/plugins/{DllReferencePlugin.check.js → dll/DllReferencePlugin.check.js} +0 -0
- /package/schemas/plugins/{DllReferencePlugin.json → dll/DllReferencePlugin.json} +0 -0
|
@@ -0,0 +1,37 @@
|
|
|
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
|
+
/** @typedef {import("../Compilation")} Compilation */
|
|
12
|
+
|
|
13
|
+
class CommonJsWrapRuntimeModule extends HelperRuntimeModule {
|
|
14
|
+
constructor() {
|
|
15
|
+
super("wrap commonjs module");
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* Generates runtime code for this runtime module.
|
|
20
|
+
* @returns {string | null} runtime code
|
|
21
|
+
*/
|
|
22
|
+
generate() {
|
|
23
|
+
const compilation = /** @type {Compilation} */ (this.compilation);
|
|
24
|
+
const { runtimeTemplate } = compilation;
|
|
25
|
+
const fn = RuntimeGlobals.commonJsWrap;
|
|
26
|
+
return Template.asString([
|
|
27
|
+
"// execute a CommonJS module body with real module/exports objects, returning the final exports",
|
|
28
|
+
`${fn} = ${runtimeTemplate.basicFunction("body", [
|
|
29
|
+
`${runtimeTemplate.renderConst()} mod = { exports: {} };`,
|
|
30
|
+
"body.call(mod.exports, mod, mod.exports);",
|
|
31
|
+
"return mod.exports;"
|
|
32
|
+
])};`
|
|
33
|
+
]);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
module.exports = CommonJsWrapRuntimeModule;
|
|
@@ -16,6 +16,7 @@ class CompatGetDefaultExportRuntimeModule extends HelperRuntimeModule {
|
|
|
16
16
|
}
|
|
17
17
|
|
|
18
18
|
/**
|
|
19
|
+
* Generates runtime code for this runtime module.
|
|
19
20
|
* @returns {string | null} runtime code
|
|
20
21
|
*/
|
|
21
22
|
generate() {
|
|
@@ -25,7 +26,7 @@ class CompatGetDefaultExportRuntimeModule extends HelperRuntimeModule {
|
|
|
25
26
|
return Template.asString([
|
|
26
27
|
"// getDefaultExport function for compatibility with non-harmony modules",
|
|
27
28
|
`${fn} = ${runtimeTemplate.basicFunction("module", [
|
|
28
|
-
|
|
29
|
+
`${runtimeTemplate.renderConst()} getter = module && module.__esModule ?`,
|
|
29
30
|
Template.indent([
|
|
30
31
|
`${runtimeTemplate.returningFunction("module['default']")} :`,
|
|
31
32
|
`${runtimeTemplate.returningFunction("module")};`
|
|
@@ -19,6 +19,7 @@ class CompatRuntimeModule extends RuntimeModule {
|
|
|
19
19
|
}
|
|
20
20
|
|
|
21
21
|
/**
|
|
22
|
+
* Generates runtime code for this runtime module.
|
|
22
23
|
* @returns {string | null} runtime code
|
|
23
24
|
*/
|
|
24
25
|
generate() {
|
|
@@ -72,6 +73,7 @@ class CompatRuntimeModule extends RuntimeModule {
|
|
|
72
73
|
}
|
|
73
74
|
|
|
74
75
|
/**
|
|
76
|
+
* Returns true, if the runtime module should get it's own scope.
|
|
75
77
|
* @returns {boolean} true, if the runtime module should get it's own scope
|
|
76
78
|
*/
|
|
77
79
|
shouldIsolate() {
|
|
@@ -16,18 +16,21 @@ class CreateFakeNamespaceObjectRuntimeModule extends HelperRuntimeModule {
|
|
|
16
16
|
}
|
|
17
17
|
|
|
18
18
|
/**
|
|
19
|
+
* Generates runtime code for this runtime module.
|
|
19
20
|
* @returns {string | null} runtime code
|
|
20
21
|
*/
|
|
21
22
|
generate() {
|
|
22
23
|
const compilation = /** @type {Compilation} */ (this.compilation);
|
|
23
24
|
const { runtimeTemplate } = compilation;
|
|
24
25
|
const fn = RuntimeGlobals.createFakeNamespaceObject;
|
|
26
|
+
const cst = runtimeTemplate.renderConst();
|
|
27
|
+
const lt = runtimeTemplate.renderLet();
|
|
25
28
|
return Template.asString([
|
|
26
|
-
|
|
29
|
+
`${cst} getProto = Object.getPrototypeOf ? ${runtimeTemplate.returningFunction(
|
|
27
30
|
"Object.getPrototypeOf(obj)",
|
|
28
31
|
"obj"
|
|
29
32
|
)} : ${runtimeTemplate.returningFunction("obj.__proto__", "obj")};`,
|
|
30
|
-
|
|
33
|
+
`${lt} leafPrototypes;`,
|
|
31
34
|
"// create a fake namespace object",
|
|
32
35
|
"// mode & 1: value is a module id, require it",
|
|
33
36
|
"// mode & 2: merge all properties of value into the ns",
|
|
@@ -45,9 +48,9 @@ class CreateFakeNamespaceObjectRuntimeModule extends HelperRuntimeModule {
|
|
|
45
48
|
"if((mode & 16) && typeof value.then === 'function') return value;"
|
|
46
49
|
]),
|
|
47
50
|
"}",
|
|
48
|
-
|
|
51
|
+
`${cst} ns = Object.create(null);`,
|
|
49
52
|
`${RuntimeGlobals.makeNamespaceObject}(ns);`,
|
|
50
|
-
|
|
53
|
+
`${cst} def = {};`,
|
|
51
54
|
"leafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)];",
|
|
52
55
|
"for(var current = mode & 2 && value; (typeof current == 'object' || typeof current == 'function') && !~leafPrototypes.indexOf(current); current = getProto(current)) {",
|
|
53
56
|
Template.indent([
|
|
@@ -16,6 +16,7 @@ class DefinePropertyGettersRuntimeModule extends HelperRuntimeModule {
|
|
|
16
16
|
}
|
|
17
17
|
|
|
18
18
|
/**
|
|
19
|
+
* Generates runtime code for this runtime module.
|
|
19
20
|
* @returns {string | null} runtime code
|
|
20
21
|
*/
|
|
21
22
|
generate() {
|
|
@@ -23,13 +24,42 @@ class DefinePropertyGettersRuntimeModule extends HelperRuntimeModule {
|
|
|
23
24
|
const { runtimeTemplate } = compilation;
|
|
24
25
|
const fn = RuntimeGlobals.definePropertyGetters;
|
|
25
26
|
return Template.asString([
|
|
26
|
-
"// define getter functions for harmony exports",
|
|
27
|
+
"// define getter/value functions for harmony exports",
|
|
27
28
|
`${fn} = ${runtimeTemplate.basicFunction("exports, definition", [
|
|
28
|
-
"
|
|
29
|
+
"if(Array.isArray(definition)) {",
|
|
29
30
|
Template.indent([
|
|
30
|
-
|
|
31
|
+
"var i = 0;",
|
|
32
|
+
"while(i < definition.length) {",
|
|
31
33
|
Template.indent([
|
|
32
|
-
"
|
|
34
|
+
"var key = definition[i++];",
|
|
35
|
+
"var binding = definition[i++];",
|
|
36
|
+
`if(!${RuntimeGlobals.hasOwnProperty}(exports, key)) {`,
|
|
37
|
+
Template.indent([
|
|
38
|
+
"if(binding === 0) {",
|
|
39
|
+
Template.indent([
|
|
40
|
+
"Object.defineProperty(exports, key, { enumerable: true, value: definition[i++] });"
|
|
41
|
+
]),
|
|
42
|
+
"} else {",
|
|
43
|
+
Template.indent([
|
|
44
|
+
"Object.defineProperty(exports, key, { enumerable: true, get: binding });"
|
|
45
|
+
]),
|
|
46
|
+
"}"
|
|
47
|
+
]),
|
|
48
|
+
"} else if(binding === 0) { i++; }"
|
|
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
|
+
"}"
|
|
33
63
|
]),
|
|
34
64
|
"}"
|
|
35
65
|
]),
|
|
@@ -7,6 +7,7 @@
|
|
|
7
7
|
const RuntimeGlobals = require("../RuntimeGlobals");
|
|
8
8
|
const RuntimeModule = require("../RuntimeModule");
|
|
9
9
|
const Template = require("../Template");
|
|
10
|
+
const { reEncodeDigest } = require("../TemplatedPathPlugin");
|
|
10
11
|
const { first } = require("../util/SetHelpers");
|
|
11
12
|
|
|
12
13
|
/** @typedef {import("../Chunk")} Chunk */
|
|
@@ -14,31 +15,49 @@ const { first } = require("../util/SetHelpers");
|
|
|
14
15
|
/** @typedef {import("../ChunkGraph")} ChunkGraph */
|
|
15
16
|
/** @typedef {import("../Compilation")} Compilation */
|
|
16
17
|
/** @typedef {import("../Compilation").HashWithLengthFunction} HashWithLengthFunction */
|
|
17
|
-
/** @typedef {import("../
|
|
18
|
+
/** @typedef {import("../Compilation").HashWithDigestFunction} HashWithDigestFunction */
|
|
19
|
+
/** @typedef {import("../Chunk").ChunkFilenameTemplate} ChunkFilenameTemplate */
|
|
18
20
|
|
|
19
21
|
class GetChunkFilenameRuntimeModule extends RuntimeModule {
|
|
20
22
|
/**
|
|
21
23
|
* @param {string} contentType the contentType to use the content hash for
|
|
22
24
|
* @param {string} name kind of filename
|
|
23
25
|
* @param {string} global function name to be assigned
|
|
24
|
-
* @param {(chunk: Chunk) =>
|
|
26
|
+
* @param {(chunk: Chunk) => ChunkFilenameTemplate | false} getFilenameForChunk functor to get the filename or function
|
|
25
27
|
* @param {boolean} allChunks when false, only async chunks are included
|
|
28
|
+
* @param {boolean=} usesFullHashDigest the filename uses `[fullhash:<digest>]`/`[hash:<digest>]`, so the re-encoded full hash must be inlined (post-hash) instead of read from the runtime `getFullHash()` expression
|
|
26
29
|
*/
|
|
27
|
-
constructor(
|
|
30
|
+
constructor(
|
|
31
|
+
contentType,
|
|
32
|
+
name,
|
|
33
|
+
global,
|
|
34
|
+
getFilenameForChunk,
|
|
35
|
+
allChunks,
|
|
36
|
+
usesFullHashDigest
|
|
37
|
+
) {
|
|
28
38
|
super(`get ${name} chunk filename`);
|
|
29
39
|
/** @type {string} */
|
|
30
40
|
this.contentType = contentType;
|
|
31
41
|
/** @type {string} */
|
|
32
42
|
this.global = global;
|
|
33
|
-
/** @type {(chunk: Chunk) =>
|
|
43
|
+
/** @type {(chunk: Chunk) => ChunkFilenameTemplate | false} */
|
|
34
44
|
this.getFilenameForChunk = getFilenameForChunk;
|
|
35
45
|
/** @type {boolean} */
|
|
36
46
|
this.allChunks = allChunks;
|
|
37
|
-
|
|
38
|
-
|
|
47
|
+
// An inline digest on `[fullhash]` needs the final hash inlined, so this
|
|
48
|
+
// module must re-render after hashing (`fullHash`); otherwise it only needs
|
|
49
|
+
// the referenced chunk hashes, available before the full hash (`dependentHash`).
|
|
50
|
+
if (usesFullHashDigest) {
|
|
51
|
+
/** @type {boolean} */
|
|
52
|
+
this.fullHash = true;
|
|
53
|
+
} else {
|
|
54
|
+
/** @type {boolean} */
|
|
55
|
+
this.dependentHash = true;
|
|
56
|
+
}
|
|
39
57
|
}
|
|
40
58
|
|
|
41
59
|
/**
|
|
60
|
+
* Generates runtime code for this runtime module.
|
|
42
61
|
* @returns {string | null} runtime code
|
|
43
62
|
*/
|
|
44
63
|
generate() {
|
|
@@ -47,8 +66,39 @@ class GetChunkFilenameRuntimeModule extends RuntimeModule {
|
|
|
47
66
|
const chunkGraph = /** @type {ChunkGraph} */ (this.chunkGraph);
|
|
48
67
|
const chunk = /** @type {Chunk} */ (this.chunk);
|
|
49
68
|
const { runtimeTemplate } = compilation;
|
|
69
|
+
// Digest the stored hashes are encoded in, for re-encoding `[<hash>:<digest>]`.
|
|
70
|
+
const sourceDigest = compilation.outputOptions.hashDigest;
|
|
50
71
|
|
|
51
|
-
/**
|
|
72
|
+
/**
|
|
73
|
+
* Re-encodes a full hash digest into the requested digest, optionally truncated.
|
|
74
|
+
* @param {string} value full hash digest
|
|
75
|
+
* @param {string} digest requested digest
|
|
76
|
+
* @param {number=} length requested length
|
|
77
|
+
* @returns {string} re-encoded hash
|
|
78
|
+
*/
|
|
79
|
+
const reEncode = (value, digest, length) => {
|
|
80
|
+
const hash = reEncodeDigest(
|
|
81
|
+
value,
|
|
82
|
+
/** @type {string} */ (sourceDigest),
|
|
83
|
+
digest
|
|
84
|
+
);
|
|
85
|
+
return length ? hash.slice(0, length) : hash;
|
|
86
|
+
};
|
|
87
|
+
|
|
88
|
+
// `[fullhash:<digest>]`/`[hash:<digest>]` would resolve to a runtime
|
|
89
|
+
// `getFullHash()` expression that can't be re-encoded; instead this module is
|
|
90
|
+
// flagged `fullHash` and re-rendered after hashing, so we inline the
|
|
91
|
+
// re-encoded full hash here — byte-identical to the statically emitted file.
|
|
92
|
+
/** @type {HashWithDigestFunction} */
|
|
93
|
+
const fullHashWithDigest = (digest, length) => {
|
|
94
|
+
const fullHash = compilation.fullHash;
|
|
95
|
+
// Pre-hash pass (hash not computed yet): a placeholder, replaced on the
|
|
96
|
+
// post-hash re-render. Matches `GetFullHashRuntimeModule`'s `|| "XXXX"`.
|
|
97
|
+
if (!fullHash) return length ? "x".repeat(length) : "x";
|
|
98
|
+
return reEncode(fullHash, digest, length);
|
|
99
|
+
};
|
|
100
|
+
|
|
101
|
+
/** @type {Map<ChunkFilenameTemplate, Set<Chunk>>} */
|
|
52
102
|
const chunkFilenames = new Map();
|
|
53
103
|
let maxChunks = 0;
|
|
54
104
|
/** @type {string | undefined} */
|
|
@@ -125,7 +175,7 @@ class GetChunkFilenameRuntimeModule extends RuntimeModule {
|
|
|
125
175
|
|
|
126
176
|
/**
|
|
127
177
|
* @param {Chunk} c the chunk
|
|
128
|
-
* @param {
|
|
178
|
+
* @param {ChunkFilenameTemplate} chunkFilename the filename template for the chunk
|
|
129
179
|
* @returns {void}
|
|
130
180
|
*/
|
|
131
181
|
const addStaticUrl = (c, chunkFilename) => {
|
|
@@ -161,12 +211,17 @@ class GetChunkFilenameRuntimeModule extends RuntimeModule {
|
|
|
161
211
|
hash: `" + ${RuntimeGlobals.getFullHash}() + "`,
|
|
162
212
|
hashWithLength: (length) =>
|
|
163
213
|
`" + ${RuntimeGlobals.getFullHash}().slice(0, ${length}) + "`,
|
|
214
|
+
hashWithDigest: fullHashWithDigest,
|
|
164
215
|
chunk: {
|
|
165
216
|
id: unquotedStringify(/** @type {ChunkId} */ (c.id)),
|
|
166
217
|
hash: unquotedStringify(/** @type {string} */ (c.renderedHash)),
|
|
167
218
|
hashWithLength: unquotedStringifyWithLength(
|
|
168
219
|
/** @type {string} */ (c.renderedHash)
|
|
169
220
|
),
|
|
221
|
+
hashWithDigest: (digest, length) =>
|
|
222
|
+
unquotedStringify(
|
|
223
|
+
reEncode(/** @type {string} */ (c.hash), digest, length)
|
|
224
|
+
),
|
|
170
225
|
name: unquotedStringify(c.name || /** @type {ChunkId} */ (c.id)),
|
|
171
226
|
contentHash: {
|
|
172
227
|
[contentType]: unquotedStringify(c.contentHash[contentType])
|
|
@@ -175,6 +230,16 @@ class GetChunkFilenameRuntimeModule extends RuntimeModule {
|
|
|
175
230
|
[contentType]: unquotedStringifyWithLength(
|
|
176
231
|
c.contentHash[contentType]
|
|
177
232
|
)
|
|
233
|
+
},
|
|
234
|
+
contentHashWithDigest: {
|
|
235
|
+
[contentType]: (digest, length) =>
|
|
236
|
+
unquotedStringify(
|
|
237
|
+
reEncode(
|
|
238
|
+
c.contentHashFull[contentType] || c.contentHash[contentType],
|
|
239
|
+
digest,
|
|
240
|
+
length
|
|
241
|
+
)
|
|
242
|
+
)
|
|
178
243
|
}
|
|
179
244
|
},
|
|
180
245
|
contentHashType: contentType
|
|
@@ -247,18 +312,33 @@ class GetChunkFilenameRuntimeModule extends RuntimeModule {
|
|
|
247
312
|
hash: `" + ${RuntimeGlobals.getFullHash}() + "`,
|
|
248
313
|
hashWithLength: (length) =>
|
|
249
314
|
`" + ${RuntimeGlobals.getFullHash}().slice(0, ${length}) + "`,
|
|
315
|
+
hashWithDigest: fullHashWithDigest,
|
|
250
316
|
chunk: {
|
|
251
317
|
id: '" + chunkId + "',
|
|
252
318
|
hash: mapExpr((c) => /** @type {string} */ (c.renderedHash)),
|
|
253
319
|
hashWithLength: mapExprWithLength(
|
|
254
320
|
(c) => /** @type {string} */ (c.renderedHash)
|
|
255
321
|
),
|
|
322
|
+
hashWithDigest: (digest, length) =>
|
|
323
|
+
mapExpr((c) =>
|
|
324
|
+
reEncode(/** @type {string} */ (c.hash), digest, length)
|
|
325
|
+
),
|
|
256
326
|
name: mapExpr((c) => c.name || /** @type {ChunkId} */ (c.id)),
|
|
257
327
|
contentHash: {
|
|
258
328
|
[contentType]: mapExpr((c) => c.contentHash[contentType])
|
|
259
329
|
},
|
|
260
330
|
contentHashWithLength: {
|
|
261
331
|
[contentType]: mapExprWithLength((c) => c.contentHash[contentType])
|
|
332
|
+
},
|
|
333
|
+
contentHashWithDigest: {
|
|
334
|
+
[contentType]: (digest, length) =>
|
|
335
|
+
mapExpr((c) =>
|
|
336
|
+
reEncode(
|
|
337
|
+
c.contentHashFull[contentType] || c.contentHash[contentType],
|
|
338
|
+
digest,
|
|
339
|
+
length
|
|
340
|
+
)
|
|
341
|
+
)
|
|
262
342
|
}
|
|
263
343
|
},
|
|
264
344
|
contentHashType: contentType
|
|
@@ -22,6 +22,7 @@ class GetTrustedTypesPolicyRuntimeModule extends HelperRuntimeModule {
|
|
|
22
22
|
}
|
|
23
23
|
|
|
24
24
|
/**
|
|
25
|
+
* Generates runtime code for this runtime module.
|
|
25
26
|
* @returns {string | null} runtime code
|
|
26
27
|
*/
|
|
27
28
|
generate() {
|
|
@@ -34,7 +35,7 @@ class GetTrustedTypesPolicyRuntimeModule extends HelperRuntimeModule {
|
|
|
34
35
|
: false;
|
|
35
36
|
|
|
36
37
|
return Template.asString([
|
|
37
|
-
|
|
38
|
+
`${runtimeTemplate.renderLet()} policy;`,
|
|
38
39
|
`${fn} = ${runtimeTemplate.basicFunction("", [
|
|
39
40
|
"// Create Trusted Type policy if Trusted Types are available and the policy doesn't exist yet.",
|
|
40
41
|
"if (policy === undefined) {",
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/*
|
|
2
|
+
MIT License http://www.opensource.org/licenses/mit-license.php
|
|
3
|
+
Author sheo13666q
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
"use strict";
|
|
7
|
+
|
|
8
|
+
const RuntimeGlobals = require("../RuntimeGlobals");
|
|
9
|
+
const RuntimeModule = require("../RuntimeModule");
|
|
10
|
+
const Template = require("../Template");
|
|
11
|
+
|
|
12
|
+
/** @typedef {import("../Compilation")} Compilation */
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Provides a single object URL (one per base URI) for the worklet bootstrap
|
|
16
|
+
* script. A worklet global scope has no `self` and no `location`; this script
|
|
17
|
+
* sets them up before the emitted chunks — which assume a worker-like scope —
|
|
18
|
+
* are added via `addModule`. Deduping by base URI avoids leaking a new object
|
|
19
|
+
* URL per worklet.
|
|
20
|
+
*/
|
|
21
|
+
class GetWorkletBootstrapRuntimeModule extends RuntimeModule {
|
|
22
|
+
constructor() {
|
|
23
|
+
super("get worklet bootstrap", RuntimeModule.STAGE_ATTACH);
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* Generates runtime code for this runtime module.
|
|
28
|
+
* @returns {string | null} runtime code
|
|
29
|
+
*/
|
|
30
|
+
generate() {
|
|
31
|
+
const { getWorkletBootstrap, baseURI } = RuntimeGlobals;
|
|
32
|
+
const { runtimeTemplate } = /** @type {Compilation} */ (this.compilation);
|
|
33
|
+
// The arrow inside the blob string is fine — it runs in the worklet (always
|
|
34
|
+
// a module scope); the surrounding functions must respect `output.environment`.
|
|
35
|
+
const getter = runtimeTemplate.basicFunction("", [
|
|
36
|
+
`var base = ${baseURI};`,
|
|
37
|
+
"if (!cache.has(base)) {",
|
|
38
|
+
Template.indent([
|
|
39
|
+
"var script = [",
|
|
40
|
+
Template.indent([
|
|
41
|
+
// worklet scopes have no `self`; chunks assume a worker-like scope
|
|
42
|
+
'"globalThis.self = globalThis.self || globalThis;",',
|
|
43
|
+
// some runtime modules read `location`; forward the document base
|
|
44
|
+
'"globalThis.location = " + JSON.stringify(base) + ";"'
|
|
45
|
+
]),
|
|
46
|
+
'].join("\\n");',
|
|
47
|
+
'cache.set(base, URL.createObjectURL(new Blob([script], { type: "text/javascript" })));'
|
|
48
|
+
]),
|
|
49
|
+
"}",
|
|
50
|
+
"return cache.get(base);"
|
|
51
|
+
]);
|
|
52
|
+
return `${getWorkletBootstrap} = (${runtimeTemplate.basicFunction("", [
|
|
53
|
+
"var cache = new Map();",
|
|
54
|
+
`return ${getter};`
|
|
55
|
+
])})();`;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
module.exports = GetWorkletBootstrapRuntimeModule;
|
|
@@ -17,6 +17,7 @@ class HasOwnPropertyRuntimeModule extends RuntimeModule {
|
|
|
17
17
|
}
|
|
18
18
|
|
|
19
19
|
/**
|
|
20
|
+
* Generates runtime code for this runtime module.
|
|
20
21
|
* @returns {string | null} runtime code
|
|
21
22
|
*/
|
|
22
23
|
generate() {
|
|
@@ -25,7 +26,7 @@ class HasOwnPropertyRuntimeModule extends RuntimeModule {
|
|
|
25
26
|
|
|
26
27
|
return Template.asString([
|
|
27
28
|
`${RuntimeGlobals.hasOwnProperty} = ${runtimeTemplate.returningFunction(
|
|
28
|
-
|
|
29
|
+
runtimeTemplate.objectHasOwn("obj", "prop"),
|
|
29
30
|
"obj, prop"
|
|
30
31
|
)}`
|
|
31
32
|
]);
|
|
@@ -6,8 +6,13 @@
|
|
|
6
6
|
|
|
7
7
|
const RuntimeModule = require("../RuntimeModule");
|
|
8
8
|
|
|
9
|
+
/**
|
|
10
|
+
* Base class for runtime modules that only emit helper functions and do not
|
|
11
|
+
* need special staging or attachment behavior beyond `RuntimeModule`.
|
|
12
|
+
*/
|
|
9
13
|
class HelperRuntimeModule extends RuntimeModule {
|
|
10
14
|
/**
|
|
15
|
+
* Creates a helper runtime module with the provided readable name.
|
|
11
16
|
* @param {string} name a readable name
|
|
12
17
|
*/
|
|
13
18
|
constructor(name) {
|
|
@@ -5,9 +5,10 @@
|
|
|
5
5
|
"use strict";
|
|
6
6
|
|
|
7
7
|
const { SyncWaterfallHook } = require("tapable");
|
|
8
|
-
|
|
8
|
+
/** @typedef {import("../Compilation")} Compilation */
|
|
9
9
|
const RuntimeGlobals = require("../RuntimeGlobals");
|
|
10
10
|
const Template = require("../Template");
|
|
11
|
+
const createHooksRegistry = require("../util/createHooksRegistry");
|
|
11
12
|
const HelperRuntimeModule = require("./HelperRuntimeModule");
|
|
12
13
|
|
|
13
14
|
/** @typedef {import("../Chunk")} Chunk */
|
|
@@ -17,30 +18,7 @@ const HelperRuntimeModule = require("./HelperRuntimeModule");
|
|
|
17
18
|
* @property {SyncWaterfallHook<[string, Chunk]>} createScript
|
|
18
19
|
*/
|
|
19
20
|
|
|
20
|
-
/** @type {WeakMap<Compilation, LoadScriptCompilationHooks>} */
|
|
21
|
-
const compilationHooksMap = new WeakMap();
|
|
22
|
-
|
|
23
21
|
class LoadScriptRuntimeModule extends HelperRuntimeModule {
|
|
24
|
-
/**
|
|
25
|
-
* @param {Compilation} compilation the compilation
|
|
26
|
-
* @returns {LoadScriptCompilationHooks} hooks
|
|
27
|
-
*/
|
|
28
|
-
static getCompilationHooks(compilation) {
|
|
29
|
-
if (!(compilation instanceof Compilation)) {
|
|
30
|
-
throw new TypeError(
|
|
31
|
-
"The 'compilation' argument must be an instance of Compilation"
|
|
32
|
-
);
|
|
33
|
-
}
|
|
34
|
-
let hooks = compilationHooksMap.get(compilation);
|
|
35
|
-
if (hooks === undefined) {
|
|
36
|
-
hooks = {
|
|
37
|
-
createScript: new SyncWaterfallHook(["source", "chunk"])
|
|
38
|
-
};
|
|
39
|
-
compilationHooksMap.set(compilation, hooks);
|
|
40
|
-
}
|
|
41
|
-
return hooks;
|
|
42
|
-
}
|
|
43
|
-
|
|
44
22
|
/**
|
|
45
23
|
* @param {boolean=} withCreateScriptUrl use create script url for trusted types
|
|
46
24
|
* @param {boolean=} withFetchPriority use `fetchPriority` attribute
|
|
@@ -54,6 +32,7 @@ class LoadScriptRuntimeModule extends HelperRuntimeModule {
|
|
|
54
32
|
}
|
|
55
33
|
|
|
56
34
|
/**
|
|
35
|
+
* Generates runtime code for this runtime module.
|
|
57
36
|
* @returns {string | null} runtime code
|
|
58
37
|
*/
|
|
59
38
|
generate() {
|
|
@@ -110,10 +89,12 @@ class LoadScriptRuntimeModule extends HelperRuntimeModule {
|
|
|
110
89
|
: ""
|
|
111
90
|
]);
|
|
112
91
|
|
|
92
|
+
const cst = runtimeTemplate.renderConst();
|
|
93
|
+
const lt = runtimeTemplate.renderLet();
|
|
113
94
|
return Template.asString([
|
|
114
|
-
|
|
95
|
+
`${cst} inProgress = {};`,
|
|
115
96
|
uniqueName
|
|
116
|
-
?
|
|
97
|
+
? `${cst} dataWebpackPrefix = ${JSON.stringify(`${uniqueName}:`)};`
|
|
117
98
|
: "// data-webpack is not used as build has no uniqueName",
|
|
118
99
|
"// loadScript function to load a script via script tag",
|
|
119
100
|
`${fn} = ${runtimeTemplate.basicFunction(
|
|
@@ -122,13 +103,13 @@ class LoadScriptRuntimeModule extends HelperRuntimeModule {
|
|
|
122
103
|
}`,
|
|
123
104
|
[
|
|
124
105
|
"if(inProgress[url]) { inProgress[url].push(done); return; }",
|
|
125
|
-
|
|
106
|
+
`${lt} script, needAttach;`,
|
|
126
107
|
"if(key !== undefined) {",
|
|
127
108
|
Template.indent([
|
|
128
|
-
|
|
109
|
+
`${cst} scripts = document.getElementsByTagName("script");`,
|
|
129
110
|
"for(var i = 0; i < scripts.length; i++) {",
|
|
130
111
|
Template.indent([
|
|
131
|
-
|
|
112
|
+
`${cst} s = scripts[i];`,
|
|
132
113
|
`if(s.getAttribute("src") == url${
|
|
133
114
|
uniqueName
|
|
134
115
|
? ' || s.getAttribute("data-webpack") == dataWebpackPrefix + key'
|
|
@@ -145,23 +126,26 @@ class LoadScriptRuntimeModule extends HelperRuntimeModule {
|
|
|
145
126
|
]),
|
|
146
127
|
"}",
|
|
147
128
|
"inProgress[url] = [done];",
|
|
148
|
-
|
|
129
|
+
`${cst} onScriptComplete = ${runtimeTemplate.basicFunction(
|
|
149
130
|
"prev, event",
|
|
150
131
|
Template.asString([
|
|
151
132
|
"// avoid mem leaks in IE.",
|
|
152
133
|
"script.onerror = script.onload = null;",
|
|
153
134
|
"clearTimeout(timeout);",
|
|
154
|
-
|
|
135
|
+
`${cst} doneFns = inProgress[url];`,
|
|
155
136
|
"delete inProgress[url];",
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
"
|
|
159
|
-
|
|
160
|
-
|
|
137
|
+
`${runtimeTemplate.optionalChaining(
|
|
138
|
+
"script.parentNode",
|
|
139
|
+
"removeChild(script)"
|
|
140
|
+
)};`,
|
|
141
|
+
`${runtimeTemplate.optionalChaining(
|
|
142
|
+
"doneFns",
|
|
143
|
+
`forEach(${runtimeTemplate.returningFunction("fn(event)", "fn")})`
|
|
144
|
+
)};`,
|
|
161
145
|
"if(prev) return prev(event);"
|
|
162
146
|
])
|
|
163
147
|
)}`,
|
|
164
|
-
|
|
148
|
+
`${cst} timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), ${loadTimeout});`,
|
|
165
149
|
"script.onerror = onScriptComplete.bind(null, script.onerror);",
|
|
166
150
|
"script.onload = onScriptComplete.bind(null, script.onload);",
|
|
167
151
|
"needAttach && document.head.appendChild(script);"
|
|
@@ -171,4 +155,11 @@ class LoadScriptRuntimeModule extends HelperRuntimeModule {
|
|
|
171
155
|
}
|
|
172
156
|
}
|
|
173
157
|
|
|
158
|
+
LoadScriptRuntimeModule.getCompilationHooks = createHooksRegistry(
|
|
159
|
+
() =>
|
|
160
|
+
/** @type {LoadScriptCompilationHooks} */ ({
|
|
161
|
+
createScript: new SyncWaterfallHook(["source", "chunk"])
|
|
162
|
+
})
|
|
163
|
+
);
|
|
164
|
+
|
|
174
165
|
module.exports = LoadScriptRuntimeModule;
|