@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
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
"use strict";
|
|
6
6
|
|
|
7
|
-
const WebpackError = require("../WebpackError");
|
|
7
|
+
const WebpackError = require("../errors/WebpackError");
|
|
8
8
|
|
|
9
9
|
/** @typedef {import("../ChunkGraph")} ChunkGraph */
|
|
10
10
|
/** @typedef {import("../Module")} Module */
|
|
@@ -12,6 +12,7 @@ const WebpackError = require("../WebpackError");
|
|
|
12
12
|
/** @typedef {import("../RequestShortener")} RequestShortener */
|
|
13
13
|
|
|
14
14
|
/**
|
|
15
|
+
* Gets initial module chains.
|
|
15
16
|
* @param {Module} module module to get chains from
|
|
16
17
|
* @param {ModuleGraph} moduleGraph the module graph
|
|
17
18
|
* @param {ChunkGraph} chunkGraph the chunk graph
|
|
@@ -82,8 +83,9 @@ const getInitialModuleChains = (
|
|
|
82
83
|
return [...results];
|
|
83
84
|
};
|
|
84
85
|
|
|
85
|
-
|
|
86
|
+
class WebAssemblyInInitialChunkError extends WebpackError {
|
|
86
87
|
/**
|
|
88
|
+
* Creates an instance of WebAssemblyInInitialChunkError.
|
|
87
89
|
* @param {Module} module WASM module
|
|
88
90
|
* @param {ModuleGraph} moduleGraph the module graph
|
|
89
91
|
* @param {ChunkGraph} chunkGraph the chunk graph
|
|
@@ -105,7 +107,11 @@ ${moduleChains.map((s) => `* ${s}`).join("\n")}`;
|
|
|
105
107
|
|
|
106
108
|
/** @type {string} */
|
|
107
109
|
this.name = "WebAssemblyInInitialChunkError";
|
|
110
|
+
/** @type {boolean} */
|
|
108
111
|
this.hideStack = true;
|
|
112
|
+
/** @type {Module} */
|
|
109
113
|
this.module = module;
|
|
110
114
|
}
|
|
111
|
-
}
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
module.exports = WebAssemblyInInitialChunkError;
|
|
@@ -25,6 +25,7 @@ const WebAssemblyImportDependency = require("../dependencies/WebAssemblyImportDe
|
|
|
25
25
|
|
|
26
26
|
class WebAssemblyJavascriptGenerator extends Generator {
|
|
27
27
|
/**
|
|
28
|
+
* Returns the source types available for this module.
|
|
28
29
|
* @param {NormalModule} module fresh module
|
|
29
30
|
* @returns {SourceTypes} available types (do not mutate)
|
|
30
31
|
*/
|
|
@@ -33,6 +34,7 @@ class WebAssemblyJavascriptGenerator extends Generator {
|
|
|
33
34
|
}
|
|
34
35
|
|
|
35
36
|
/**
|
|
37
|
+
* Returns the estimated size for the requested source type.
|
|
36
38
|
* @param {NormalModule} module the module
|
|
37
39
|
* @param {SourceType=} type source type
|
|
38
40
|
* @returns {number} estimate size of the module
|
|
@@ -42,6 +44,7 @@ class WebAssemblyJavascriptGenerator extends Generator {
|
|
|
42
44
|
}
|
|
43
45
|
|
|
44
46
|
/**
|
|
47
|
+
* Generates generated code for this runtime module.
|
|
45
48
|
* @param {NormalModule} module module for which the code should be generated
|
|
46
49
|
* @param {GenerateContext} generateContext context for generate
|
|
47
50
|
* @returns {Source | null} generated code
|
|
@@ -223,6 +226,7 @@ class WebAssemblyJavascriptGenerator extends Generator {
|
|
|
223
226
|
}
|
|
224
227
|
|
|
225
228
|
/**
|
|
229
|
+
* Generates fallback output for the provided error condition.
|
|
226
230
|
* @param {Error} error the error
|
|
227
231
|
* @param {NormalModule} module module for which the code should be generated
|
|
228
232
|
* @param {GenerateContext} generateContext context for generate
|
|
@@ -27,24 +27,35 @@ const getWebAssemblyJavascriptGenerator = memoize(() =>
|
|
|
27
27
|
require("./WebAssemblyJavascriptGenerator")
|
|
28
28
|
);
|
|
29
29
|
const getWebAssemblyParser = memoize(() => require("./WebAssemblyParser"));
|
|
30
|
+
const getSyncWasmModule = memoize(() => require("./SyncWasmModule"));
|
|
30
31
|
|
|
31
32
|
const PLUGIN_NAME = "WebAssemblyModulesPlugin";
|
|
32
33
|
|
|
33
34
|
/**
|
|
35
|
+
* Options that influence how synchronous WebAssembly modules are transformed
|
|
36
|
+
* and emitted.
|
|
34
37
|
* @typedef {object} WebAssemblyModulesPluginOptions
|
|
35
38
|
* @property {boolean=} mangleImports mangle imports
|
|
36
39
|
*/
|
|
37
40
|
|
|
41
|
+
/**
|
|
42
|
+
* Adds parser, generator, manifest, and validation support for synchronous
|
|
43
|
+
* WebAssembly modules in the compilation pipeline.
|
|
44
|
+
*/
|
|
38
45
|
class WebAssemblyModulesPlugin {
|
|
39
46
|
/**
|
|
47
|
+
* Stores options that affect generated synchronous WebAssembly output.
|
|
40
48
|
* @param {WebAssemblyModulesPluginOptions} options options
|
|
41
49
|
*/
|
|
42
50
|
constructor(options) {
|
|
51
|
+
/** @type {WebAssemblyModulesPluginOptions} */
|
|
43
52
|
this.options = options;
|
|
44
53
|
}
|
|
45
54
|
|
|
46
55
|
/**
|
|
47
|
-
*
|
|
56
|
+
* Registers compilation hooks that parse and generate sync WebAssembly
|
|
57
|
+
* modules, emit their binary assets, and report invalid placement in initial
|
|
58
|
+
* chunks.
|
|
48
59
|
* @param {Compiler} compiler the compiler instance
|
|
49
60
|
* @returns {void}
|
|
50
61
|
*/
|
|
@@ -62,6 +73,14 @@ class WebAssemblyModulesPlugin {
|
|
|
62
73
|
normalModuleFactory
|
|
63
74
|
);
|
|
64
75
|
|
|
76
|
+
normalModuleFactory.hooks.createModuleClass
|
|
77
|
+
.for(WEBASSEMBLY_MODULE_TYPE_SYNC)
|
|
78
|
+
.tap(PLUGIN_NAME, (createData, _resolveData) => {
|
|
79
|
+
const SyncWasmModule = getSyncWasmModule();
|
|
80
|
+
|
|
81
|
+
return new SyncWasmModule(createData);
|
|
82
|
+
});
|
|
83
|
+
|
|
65
84
|
normalModuleFactory.hooks.createParser
|
|
66
85
|
.for(WEBASSEMBLY_MODULE_TYPE_SYNC)
|
|
67
86
|
.tap(PLUGIN_NAME, () => {
|
|
@@ -16,12 +16,14 @@ const WebAssemblyImportDependency = require("../dependencies/WebAssemblyImportDe
|
|
|
16
16
|
/** @typedef {import("@webassemblyjs/ast").ModuleImport} ModuleImport */
|
|
17
17
|
/** @typedef {import("../Module").BuildInfo} BuildInfo */
|
|
18
18
|
/** @typedef {import("../Module").BuildMeta} BuildMeta */
|
|
19
|
+
/** @typedef {import("./SyncWasmModule").SyncWasmModuleBuildMeta} SyncWasmModuleBuildMeta */
|
|
19
20
|
/** @typedef {import("../Parser").ParserState} ParserState */
|
|
20
21
|
/** @typedef {import("../Parser").PreparsedAst} PreparsedAst */
|
|
21
22
|
|
|
22
23
|
const JS_COMPAT_TYPES = new Set(["i32", "i64", "f32", "f64", "externref"]);
|
|
23
24
|
|
|
24
25
|
/**
|
|
26
|
+
* Gets js incompatible type.
|
|
25
27
|
* @param {t.Signature} signature the func signature
|
|
26
28
|
* @returns {null | string} the type incompatible with js types
|
|
27
29
|
*/
|
|
@@ -38,7 +40,8 @@ const getJsIncompatibleType = (signature) => {
|
|
|
38
40
|
};
|
|
39
41
|
|
|
40
42
|
/**
|
|
41
|
-
*
|
|
43
|
+
* Same check for the other `@webassemblyjs` signature shape: imports carry the
|
|
44
|
+
* AST `Signature` node (above), the module context uses plain `FuncSignature`.
|
|
42
45
|
* @param {t.FuncSignature} signature the func signature
|
|
43
46
|
* @returns {null | string} the type incompatible with js types
|
|
44
47
|
*/
|
|
@@ -64,6 +67,7 @@ const decoderOpts = {
|
|
|
64
67
|
|
|
65
68
|
class WebAssemblyParser extends Parser {
|
|
66
69
|
/**
|
|
70
|
+
* Parses the provided source and updates the parser state.
|
|
67
71
|
* @param {string | Buffer | PreparsedAst} source the source to parse
|
|
68
72
|
* @param {ParserState} state the parser state
|
|
69
73
|
* @returns {ParserState} the parser state
|
|
@@ -88,7 +92,9 @@ class WebAssemblyParser extends Parser {
|
|
|
88
92
|
// extract imports and exports
|
|
89
93
|
/** @type {string[]} */
|
|
90
94
|
const exports = [];
|
|
91
|
-
const buildMeta = /** @type {
|
|
95
|
+
const buildMeta = /** @type {SyncWasmModuleBuildMeta} */ (
|
|
96
|
+
state.module.buildMeta
|
|
97
|
+
);
|
|
92
98
|
/** @type {Record<string, string> | undefined} */
|
|
93
99
|
let jsIncompatibleExports = (buildMeta.jsIncompatibleExports = undefined);
|
|
94
100
|
|
|
@@ -112,7 +118,7 @@ class WebAssemblyParser extends Parser {
|
|
|
112
118
|
if (incompatibleType) {
|
|
113
119
|
if (jsIncompatibleExports === undefined) {
|
|
114
120
|
jsIncompatibleExports =
|
|
115
|
-
/** @type {
|
|
121
|
+
/** @type {SyncWasmModuleBuildMeta} */
|
|
116
122
|
(state.module.buildMeta).jsIncompatibleExports = {};
|
|
117
123
|
}
|
|
118
124
|
jsIncompatibleExports[node.name] = incompatibleType;
|
|
@@ -12,6 +12,7 @@ const WebAssemblyImportDependency = require("../dependencies/WebAssemblyImportDe
|
|
|
12
12
|
/** @typedef {import("../ModuleGraph")} ModuleGraph */
|
|
13
13
|
|
|
14
14
|
/**
|
|
15
|
+
* Defines the used wasm dependency type used by this module.
|
|
15
16
|
* @typedef {object} UsedWasmDependency
|
|
16
17
|
* @property {WebAssemblyImportDependency} dependency the dependency
|
|
17
18
|
* @property {string} name the export name
|
|
@@ -21,6 +22,7 @@ const WebAssemblyImportDependency = require("../dependencies/WebAssemblyImportDe
|
|
|
21
22
|
const MANGLED_MODULE = "a";
|
|
22
23
|
|
|
23
24
|
/**
|
|
25
|
+
* Gets used dependencies.
|
|
24
26
|
* @param {ModuleGraph} moduleGraph the module graph
|
|
25
27
|
* @param {Module} module the module
|
|
26
28
|
* @param {boolean | undefined} mangle mangle module and export names
|
|
@@ -7,17 +7,31 @@
|
|
|
7
7
|
|
|
8
8
|
const { WEBASSEMBLY_MODULE_TYPE_ASYNC } = require("../ModuleTypeConstants");
|
|
9
9
|
const RuntimeGlobals = require("../RuntimeGlobals");
|
|
10
|
+
const { getPresentKinds } = require("../TemplatedPathPlugin");
|
|
10
11
|
const AsyncWasmCompileRuntimeModule = require("../wasm-async/AsyncWasmCompileRuntimeModule");
|
|
11
12
|
const AsyncWasmLoadingRuntimeModule = require("../wasm-async/AsyncWasmLoadingRuntimeModule");
|
|
12
13
|
|
|
13
14
|
/** @typedef {import("../Chunk")} Chunk */
|
|
14
15
|
/** @typedef {import("../Compiler")} Compiler */
|
|
15
16
|
|
|
17
|
+
/**
|
|
18
|
+
* The wasm runtime inlines `[fullhash]` as a runtime `getFullHash()` call, so
|
|
19
|
+
* that runtime module must be requested (`[hash]` is the per-module hash here).
|
|
20
|
+
* @param {string} filename `output.webassemblyModuleFilename`
|
|
21
|
+
* @returns {boolean} whether it references the compilation `[fullhash]`
|
|
22
|
+
*/
|
|
23
|
+
const usesFullHash = (filename) => getPresentKinds(filename).has("fullhash");
|
|
24
|
+
|
|
16
25
|
const PLUGIN_NAME = "FetchCompileAsyncWasmPlugin";
|
|
17
26
|
|
|
27
|
+
/**
|
|
28
|
+
* Enables asynchronous WebAssembly loading through `fetch` for environments
|
|
29
|
+
* that can instantiate fetched binaries at runtime.
|
|
30
|
+
*/
|
|
18
31
|
class FetchCompileAsyncWasmPlugin {
|
|
19
32
|
/**
|
|
20
|
-
*
|
|
33
|
+
* Registers compilation hooks that attach the async fetch-based wasm runtime
|
|
34
|
+
* to chunks containing async WebAssembly modules.
|
|
21
35
|
* @param {Compiler} compiler the compiler instance
|
|
22
36
|
* @returns {void}
|
|
23
37
|
*/
|
|
@@ -25,6 +39,8 @@ class FetchCompileAsyncWasmPlugin {
|
|
|
25
39
|
compiler.hooks.thisCompilation.tap(PLUGIN_NAME, (compilation) => {
|
|
26
40
|
const globalWasmLoading = compilation.outputOptions.wasmLoading;
|
|
27
41
|
/**
|
|
42
|
+
* Determines whether the chunk should load async WebAssembly binaries
|
|
43
|
+
* through the `fetch` backend.
|
|
28
44
|
* @param {Chunk} chunk chunk
|
|
29
45
|
* @returns {boolean} true, if wasm loading is enabled for the chunk
|
|
30
46
|
*/
|
|
@@ -37,6 +53,8 @@ class FetchCompileAsyncWasmPlugin {
|
|
|
37
53
|
return wasmLoading === "fetch";
|
|
38
54
|
};
|
|
39
55
|
/**
|
|
56
|
+
* Generates the runtime expression that downloads the emitted wasm
|
|
57
|
+
* binary for an async WebAssembly module.
|
|
40
58
|
* @param {string} path path to the wasm file
|
|
41
59
|
* @returns {string} code to load the wasm file
|
|
42
60
|
*/
|
|
@@ -56,6 +74,11 @@ class FetchCompileAsyncWasmPlugin {
|
|
|
56
74
|
return;
|
|
57
75
|
}
|
|
58
76
|
set.add(RuntimeGlobals.publicPath);
|
|
77
|
+
if (
|
|
78
|
+
usesFullHash(compilation.outputOptions.webassemblyModuleFilename)
|
|
79
|
+
) {
|
|
80
|
+
set.add(RuntimeGlobals.getFullHash);
|
|
81
|
+
}
|
|
59
82
|
compilation.addRuntimeModule(
|
|
60
83
|
chunk,
|
|
61
84
|
new AsyncWasmLoadingRuntimeModule({
|
|
@@ -78,6 +101,11 @@ class FetchCompileAsyncWasmPlugin {
|
|
|
78
101
|
return;
|
|
79
102
|
}
|
|
80
103
|
set.add(RuntimeGlobals.publicPath);
|
|
104
|
+
if (
|
|
105
|
+
usesFullHash(compilation.outputOptions.webassemblyModuleFilename)
|
|
106
|
+
) {
|
|
107
|
+
set.add(RuntimeGlobals.getFullHash);
|
|
108
|
+
}
|
|
81
109
|
compilation.addRuntimeModule(
|
|
82
110
|
chunk,
|
|
83
111
|
new AsyncWasmCompileRuntimeModule({
|
|
@@ -7,20 +7,36 @@
|
|
|
7
7
|
|
|
8
8
|
const { WEBASSEMBLY_MODULE_TYPE_SYNC } = require("../ModuleTypeConstants");
|
|
9
9
|
const RuntimeGlobals = require("../RuntimeGlobals");
|
|
10
|
+
const { getPresentKinds } = require("../TemplatedPathPlugin");
|
|
10
11
|
const WasmChunkLoadingRuntimeModule = require("../wasm-sync/WasmChunkLoadingRuntimeModule");
|
|
11
12
|
|
|
12
13
|
/** @typedef {import("../Chunk")} Chunk */
|
|
13
14
|
/** @typedef {import("../Compiler")} Compiler */
|
|
14
15
|
|
|
15
16
|
/**
|
|
17
|
+
* The wasm runtime inlines `[fullhash]` as a runtime `getFullHash()` call, so
|
|
18
|
+
* that runtime module must be requested (`[hash]` is the per-module hash here).
|
|
19
|
+
* @param {string} filename `output.webassemblyModuleFilename`
|
|
20
|
+
* @returns {boolean} whether it references the compilation `[fullhash]`
|
|
21
|
+
*/
|
|
22
|
+
const usesFullHash = (filename) => getPresentKinds(filename).has("fullhash");
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* Options that influence how synchronous WebAssembly modules are emitted for
|
|
26
|
+
* the fetch-based wasm loading runtime.
|
|
16
27
|
* @typedef {object} FetchCompileWasmPluginOptions
|
|
17
28
|
* @property {boolean=} mangleImports mangle imports
|
|
18
29
|
*/
|
|
19
30
|
|
|
20
31
|
const PLUGIN_NAME = "FetchCompileWasmPlugin";
|
|
21
32
|
|
|
33
|
+
/**
|
|
34
|
+
* Enables synchronous WebAssembly chunk loading that fetches `.wasm` files and
|
|
35
|
+
* compiles them in browser-like environments.
|
|
36
|
+
*/
|
|
22
37
|
class FetchCompileWasmPlugin {
|
|
23
38
|
/**
|
|
39
|
+
* Stores options that affect generated synchronous WebAssembly runtime code.
|
|
24
40
|
* @param {FetchCompileWasmPluginOptions=} options options
|
|
25
41
|
*/
|
|
26
42
|
constructor(options = {}) {
|
|
@@ -29,7 +45,8 @@ class FetchCompileWasmPlugin {
|
|
|
29
45
|
}
|
|
30
46
|
|
|
31
47
|
/**
|
|
32
|
-
*
|
|
48
|
+
* Registers compilation hooks that attach the fetch-based synchronous wasm
|
|
49
|
+
* runtime module to chunks containing sync WebAssembly modules.
|
|
33
50
|
* @param {Compiler} compiler the compiler instance
|
|
34
51
|
* @returns {void}
|
|
35
52
|
*/
|
|
@@ -37,6 +54,8 @@ class FetchCompileWasmPlugin {
|
|
|
37
54
|
compiler.hooks.thisCompilation.tap(PLUGIN_NAME, (compilation) => {
|
|
38
55
|
const globalWasmLoading = compilation.outputOptions.wasmLoading;
|
|
39
56
|
/**
|
|
57
|
+
* Determines whether the chunk should load synchronous WebAssembly
|
|
58
|
+
* binaries through the `fetch` backend.
|
|
40
59
|
* @param {Chunk} chunk chunk
|
|
41
60
|
* @returns {boolean} true, if wasm loading is enabled for the chunk
|
|
42
61
|
*/
|
|
@@ -49,6 +68,8 @@ class FetchCompileWasmPlugin {
|
|
|
49
68
|
return wasmLoading === "fetch";
|
|
50
69
|
};
|
|
51
70
|
/**
|
|
71
|
+
* Generates the runtime expression that downloads the emitted wasm
|
|
72
|
+
* binary for a module.
|
|
52
73
|
* @param {string} path path to the wasm file
|
|
53
74
|
* @returns {string} code to load the wasm file
|
|
54
75
|
*/
|
|
@@ -69,6 +90,11 @@ class FetchCompileWasmPlugin {
|
|
|
69
90
|
}
|
|
70
91
|
set.add(RuntimeGlobals.moduleCache);
|
|
71
92
|
set.add(RuntimeGlobals.publicPath);
|
|
93
|
+
if (
|
|
94
|
+
usesFullHash(compilation.outputOptions.webassemblyModuleFilename)
|
|
95
|
+
) {
|
|
96
|
+
set.add(RuntimeGlobals.getFullHash);
|
|
97
|
+
}
|
|
72
98
|
compilation.addRuntimeModule(
|
|
73
99
|
chunk,
|
|
74
100
|
new WasmChunkLoadingRuntimeModule({
|
|
@@ -14,9 +14,15 @@ const JsonpChunkLoadingRuntimeModule = require("./JsonpChunkLoadingRuntimeModule
|
|
|
14
14
|
|
|
15
15
|
const PLUGIN_NAME = "JsonpChunkLoadingPlugin";
|
|
16
16
|
|
|
17
|
+
/**
|
|
18
|
+
* Enables browser-side JavaScript chunk loading through the JSONP runtime and
|
|
19
|
+
* adds the supporting runtime requirements for matching chunks.
|
|
20
|
+
*/
|
|
17
21
|
class JsonpChunkLoadingPlugin {
|
|
18
22
|
/**
|
|
19
|
-
*
|
|
23
|
+
* Registers compilation hooks that attach the JSONP chunk-loading runtime
|
|
24
|
+
* module and its dependent runtime globals to chunks using `chunkLoading:
|
|
25
|
+
* "jsonp"`.
|
|
20
26
|
* @param {Compiler} compiler the compiler instance
|
|
21
27
|
* @returns {void}
|
|
22
28
|
*/
|
|
@@ -24,6 +30,8 @@ class JsonpChunkLoadingPlugin {
|
|
|
24
30
|
compiler.hooks.thisCompilation.tap(PLUGIN_NAME, (compilation) => {
|
|
25
31
|
const globalChunkLoading = compilation.outputOptions.chunkLoading;
|
|
26
32
|
/**
|
|
33
|
+
* Determines whether the chunk resolves JavaScript chunks through the
|
|
34
|
+
* JSONP loading backend.
|
|
27
35
|
* @param {Chunk} chunk chunk
|
|
28
36
|
* @returns {boolean} true, if wasm loading is enabled for the chunk
|
|
29
37
|
*/
|
|
@@ -38,6 +46,8 @@ class JsonpChunkLoadingPlugin {
|
|
|
38
46
|
/** @type {WeakSet<Chunk>} */
|
|
39
47
|
const onceForChunkSet = new WeakSet();
|
|
40
48
|
/**
|
|
49
|
+
* Adds the JSONP runtime module to a chunk once, along with the core
|
|
50
|
+
* runtime globals it relies on.
|
|
41
51
|
* @param {Chunk} chunk chunk
|
|
42
52
|
* @param {RuntimeRequirements} set runtime requirements
|
|
43
53
|
*/
|
|
@@ -5,7 +5,7 @@
|
|
|
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 RuntimeModule = require("../RuntimeModule");
|
|
11
11
|
const Template = require("../Template");
|
|
@@ -15,6 +15,7 @@ const {
|
|
|
15
15
|
const chunkHasJs = require("../javascript/JavascriptModulesPlugin").chunkHasJs;
|
|
16
16
|
const { getInitialChunkIds } = require("../javascript/StartupHelpers");
|
|
17
17
|
const compileBooleanMatcher = require("../util/compileBooleanMatcher");
|
|
18
|
+
const createHooksRegistry = require("../util/createHooksRegistry");
|
|
18
19
|
|
|
19
20
|
/** @typedef {import("../Chunk")} Chunk */
|
|
20
21
|
/** @typedef {import("../ChunkGraph")} ChunkGraph */
|
|
@@ -26,31 +27,7 @@ const compileBooleanMatcher = require("../util/compileBooleanMatcher");
|
|
|
26
27
|
* @property {SyncWaterfallHook<[string, Chunk]>} linkPrefetch
|
|
27
28
|
*/
|
|
28
29
|
|
|
29
|
-
/** @type {WeakMap<Compilation, JsonpCompilationPluginHooks>} */
|
|
30
|
-
const compilationHooksMap = new WeakMap();
|
|
31
|
-
|
|
32
30
|
class JsonpChunkLoadingRuntimeModule extends RuntimeModule {
|
|
33
|
-
/**
|
|
34
|
-
* @param {Compilation} compilation the compilation
|
|
35
|
-
* @returns {JsonpCompilationPluginHooks} hooks
|
|
36
|
-
*/
|
|
37
|
-
static getCompilationHooks(compilation) {
|
|
38
|
-
if (!(compilation instanceof Compilation)) {
|
|
39
|
-
throw new TypeError(
|
|
40
|
-
"The 'compilation' argument must be an instance of Compilation"
|
|
41
|
-
);
|
|
42
|
-
}
|
|
43
|
-
let hooks = compilationHooksMap.get(compilation);
|
|
44
|
-
if (hooks === undefined) {
|
|
45
|
-
hooks = {
|
|
46
|
-
linkPreload: new SyncWaterfallHook(["source", "chunk"]),
|
|
47
|
-
linkPrefetch: new SyncWaterfallHook(["source", "chunk"])
|
|
48
|
-
};
|
|
49
|
-
compilationHooksMap.set(compilation, hooks);
|
|
50
|
-
}
|
|
51
|
-
return hooks;
|
|
52
|
-
}
|
|
53
|
-
|
|
54
31
|
/**
|
|
55
32
|
* @param {ReadOnlyRuntimeRequirements} runtimeRequirements runtime requirements
|
|
56
33
|
*/
|
|
@@ -74,6 +51,7 @@ class JsonpChunkLoadingRuntimeModule extends RuntimeModule {
|
|
|
74
51
|
}
|
|
75
52
|
|
|
76
53
|
/**
|
|
54
|
+
* Generates runtime code for this runtime module.
|
|
77
55
|
* @returns {string | null} runtime code
|
|
78
56
|
*/
|
|
79
57
|
generate() {
|
|
@@ -130,21 +108,24 @@ class JsonpChunkLoadingRuntimeModule extends RuntimeModule {
|
|
|
130
108
|
? `${RuntimeGlobals.hmrRuntimeStatePrefix}_jsonp`
|
|
131
109
|
: undefined;
|
|
132
110
|
|
|
111
|
+
const cst = runtimeTemplate.renderConst();
|
|
112
|
+
const lt = runtimeTemplate.renderLet();
|
|
113
|
+
const installedChunksObject = `{\n${Template.indent(
|
|
114
|
+
Array.from(initialChunkIds, (id) => `${JSON.stringify(id)}: 0`).join(
|
|
115
|
+
",\n"
|
|
116
|
+
)
|
|
117
|
+
)}\n}`;
|
|
133
118
|
return Template.asString([
|
|
134
119
|
withBaseURI ? this._generateBaseUri(chunk) : "// no baseURI",
|
|
135
120
|
"",
|
|
136
121
|
"// object to store loaded and loading chunks",
|
|
137
122
|
"// undefined = chunk not loaded, null = chunk preloaded/prefetched",
|
|
138
123
|
"// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded",
|
|
139
|
-
|
|
140
|
-
stateExpression
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
",\n"
|
|
145
|
-
)
|
|
146
|
-
),
|
|
147
|
-
"};",
|
|
124
|
+
`${cst} installedChunks = ${
|
|
125
|
+
stateExpression
|
|
126
|
+
? runtimeTemplate.assignOr(stateExpression, installedChunksObject)
|
|
127
|
+
: installedChunksObject
|
|
128
|
+
};`,
|
|
148
129
|
"",
|
|
149
130
|
withLoading
|
|
150
131
|
? Template.asString([
|
|
@@ -153,7 +134,7 @@ class JsonpChunkLoadingRuntimeModule extends RuntimeModule {
|
|
|
153
134
|
hasJsMatcher !== false
|
|
154
135
|
? Template.indent([
|
|
155
136
|
"// JSONP chunk loading for javascript",
|
|
156
|
-
|
|
137
|
+
`${lt} installedChunkData = ${RuntimeGlobals.hasOwnProperty}(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;`,
|
|
157
138
|
'if(installedChunkData !== 0) { // 0 means "already installed".',
|
|
158
139
|
Template.indent([
|
|
159
140
|
"",
|
|
@@ -169,17 +150,17 @@ class JsonpChunkLoadingRuntimeModule extends RuntimeModule {
|
|
|
169
150
|
: `if(${hasJsMatcher("chunkId")}) {`,
|
|
170
151
|
Template.indent([
|
|
171
152
|
"// setup Promise in chunk cache",
|
|
172
|
-
|
|
153
|
+
`${cst} promise = new Promise(${runtimeTemplate.expressionFunction(
|
|
173
154
|
"installedChunkData = installedChunks[chunkId] = [resolve, reject]",
|
|
174
155
|
"resolve, reject"
|
|
175
156
|
)});`,
|
|
176
157
|
"promises.push(installedChunkData[2] = promise);",
|
|
177
158
|
"",
|
|
178
159
|
"// start chunk loading",
|
|
179
|
-
|
|
160
|
+
`${cst} url = ${RuntimeGlobals.publicPath} + ${RuntimeGlobals.getChunkScriptFilename}(chunkId);`,
|
|
180
161
|
"// create error before stack unwound to get useful stacktrace later",
|
|
181
|
-
|
|
182
|
-
|
|
162
|
+
`${cst} error = new Error();`,
|
|
163
|
+
`${cst} loadingEnded = ${runtimeTemplate.basicFunction(
|
|
183
164
|
"event",
|
|
184
165
|
[
|
|
185
166
|
`if(${RuntimeGlobals.hasOwnProperty}(installedChunks, chunkId)) {`,
|
|
@@ -188,12 +169,13 @@ class JsonpChunkLoadingRuntimeModule extends RuntimeModule {
|
|
|
188
169
|
"if(installedChunkData !== 0) installedChunks[chunkId] = undefined;",
|
|
189
170
|
"if(installedChunkData) {",
|
|
190
171
|
Template.indent([
|
|
191
|
-
|
|
192
|
-
|
|
172
|
+
`${cst} errorType = event && (event.type === 'load' ? 'missing' : event.type);`,
|
|
173
|
+
`${cst} realSrc = event && event.target && event.target.src;`,
|
|
193
174
|
"error.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';",
|
|
194
175
|
"error.name = 'ChunkLoadError';",
|
|
195
176
|
"error.type = errorType;",
|
|
196
177
|
"error.request = realSrc;",
|
|
178
|
+
"error.event = event;",
|
|
197
179
|
"installedChunkData[1](error);"
|
|
198
180
|
]),
|
|
199
181
|
"}"
|
|
@@ -233,7 +215,7 @@ class JsonpChunkLoadingRuntimeModule extends RuntimeModule {
|
|
|
233
215
|
"installedChunks[chunkId] = null;",
|
|
234
216
|
linkPrefetch.call(
|
|
235
217
|
Template.asString([
|
|
236
|
-
|
|
218
|
+
`${cst} link = document.createElement('link');`,
|
|
237
219
|
charset ? "link.charset = 'utf-8';" : "",
|
|
238
220
|
crossOriginLoading
|
|
239
221
|
? `link.crossOrigin = ${JSON.stringify(
|
|
@@ -270,7 +252,7 @@ class JsonpChunkLoadingRuntimeModule extends RuntimeModule {
|
|
|
270
252
|
"installedChunks[chunkId] = null;",
|
|
271
253
|
linkPreload.call(
|
|
272
254
|
Template.asString([
|
|
273
|
-
|
|
255
|
+
`${cst} link = document.createElement('link');`,
|
|
274
256
|
scriptType && scriptType !== "module"
|
|
275
257
|
? `link.type = ${JSON.stringify(scriptType)};`
|
|
276
258
|
: "",
|
|
@@ -309,8 +291,8 @@ class JsonpChunkLoadingRuntimeModule extends RuntimeModule {
|
|
|
309
291
|
"",
|
|
310
292
|
withHmr
|
|
311
293
|
? Template.asString([
|
|
312
|
-
|
|
313
|
-
|
|
294
|
+
`${lt} currentUpdatedModulesList;`,
|
|
295
|
+
`${cst} waitingUpdateResolves = {};`,
|
|
314
296
|
"function loadUpdateChunk(chunkId, updatedModulesList) {",
|
|
315
297
|
Template.indent([
|
|
316
298
|
"currentUpdatedModulesList = updatedModulesList;",
|
|
@@ -319,23 +301,27 @@ class JsonpChunkLoadingRuntimeModule extends RuntimeModule {
|
|
|
319
301
|
[
|
|
320
302
|
"waitingUpdateResolves[chunkId] = resolve;",
|
|
321
303
|
"// start update chunk loading",
|
|
322
|
-
|
|
304
|
+
`${cst} url = ${RuntimeGlobals.publicPath} + ${RuntimeGlobals.getChunkUpdateScriptFilename}(chunkId);`,
|
|
323
305
|
"// create error before stack unwound to get useful stacktrace later",
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
"
|
|
327
|
-
|
|
328
|
-
"waitingUpdateResolves[chunkId]
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
306
|
+
`${cst} error = new Error();`,
|
|
307
|
+
`${cst} loadingEnded = ${runtimeTemplate.basicFunction(
|
|
308
|
+
"event",
|
|
309
|
+
[
|
|
310
|
+
"if(waitingUpdateResolves[chunkId]) {",
|
|
311
|
+
Template.indent([
|
|
312
|
+
"waitingUpdateResolves[chunkId] = undefined",
|
|
313
|
+
`${cst} errorType = event && (event.type === 'load' ? 'missing' : event.type);`,
|
|
314
|
+
`${cst} realSrc = event && event.target && event.target.src;`,
|
|
315
|
+
"error.message = 'Loading hot update chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';",
|
|
316
|
+
"error.name = 'ChunkLoadError';",
|
|
317
|
+
"error.type = errorType;",
|
|
318
|
+
"error.request = realSrc;",
|
|
319
|
+
"error.event = event;",
|
|
320
|
+
"reject(error);"
|
|
321
|
+
]),
|
|
322
|
+
"}"
|
|
323
|
+
]
|
|
324
|
+
)};`,
|
|
339
325
|
`${RuntimeGlobals.loadScript}(url, loadingEnded);`
|
|
340
326
|
]
|
|
341
327
|
)});`
|
|
@@ -352,7 +338,7 @@ class JsonpChunkLoadingRuntimeModule extends RuntimeModule {
|
|
|
352
338
|
`if(${RuntimeGlobals.hasOwnProperty}(moreModules, moduleId)) {`,
|
|
353
339
|
Template.indent([
|
|
354
340
|
"currentUpdate[moduleId] = moreModules[moduleId];",
|
|
355
|
-
"
|
|
341
|
+
`${runtimeTemplate.optionalChaining("currentUpdatedModulesList", "push(moduleId)")};`
|
|
356
342
|
]),
|
|
357
343
|
"}"
|
|
358
344
|
]),
|
|
@@ -400,7 +386,7 @@ class JsonpChunkLoadingRuntimeModule extends RuntimeModule {
|
|
|
400
386
|
withCallback || withLoading
|
|
401
387
|
? Template.asString([
|
|
402
388
|
"// install a JSONP callback for chunk loading",
|
|
403
|
-
|
|
389
|
+
`${cst} webpackJsonpCallback = ${runtimeTemplate.basicFunction(
|
|
404
390
|
"parentChunkLoadingFunction, data",
|
|
405
391
|
[
|
|
406
392
|
runtimeTemplate.destructureArray(
|
|
@@ -443,7 +429,7 @@ class JsonpChunkLoadingRuntimeModule extends RuntimeModule {
|
|
|
443
429
|
]
|
|
444
430
|
)}`,
|
|
445
431
|
"",
|
|
446
|
-
|
|
432
|
+
`${cst} chunkLoadingGlobal = ${runtimeTemplate.assignOr(chunkLoadingGlobalExpr, "[]")};`,
|
|
447
433
|
"chunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));",
|
|
448
434
|
"chunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));"
|
|
449
435
|
])
|
|
@@ -452,4 +438,12 @@ class JsonpChunkLoadingRuntimeModule extends RuntimeModule {
|
|
|
452
438
|
}
|
|
453
439
|
}
|
|
454
440
|
|
|
441
|
+
JsonpChunkLoadingRuntimeModule.getCompilationHooks = createHooksRegistry(
|
|
442
|
+
() =>
|
|
443
|
+
/** @type {JsonpCompilationPluginHooks} */ ({
|
|
444
|
+
linkPreload: new SyncWaterfallHook(["source", "chunk"]),
|
|
445
|
+
linkPrefetch: new SyncWaterfallHook(["source", "chunk"])
|
|
446
|
+
})
|
|
447
|
+
);
|
|
448
|
+
|
|
455
449
|
module.exports = JsonpChunkLoadingRuntimeModule;
|
|
@@ -15,6 +15,7 @@ const JsonpChunkLoadingRuntimeModule = require("./JsonpChunkLoadingRuntimeModule
|
|
|
15
15
|
// TODO webpack 6 remove this class
|
|
16
16
|
class JsonpTemplatePlugin {
|
|
17
17
|
/**
|
|
18
|
+
* Returns hooks.
|
|
18
19
|
* @deprecated use JsonpChunkLoadingRuntimeModule.getCompilationHooks instead
|
|
19
20
|
* @param {Compilation} compilation the compilation
|
|
20
21
|
* @returns {JsonpChunkLoadingRuntimeModule.JsonpCompilationPluginHooks} hooks
|
|
@@ -24,7 +25,7 @@ class JsonpTemplatePlugin {
|
|
|
24
25
|
}
|
|
25
26
|
|
|
26
27
|
/**
|
|
27
|
-
*
|
|
28
|
+
* Applies the plugin by registering its hooks on the compiler.
|
|
28
29
|
* @param {Compiler} compiler the compiler instance
|
|
29
30
|
* @returns {void}
|
|
30
31
|
*/
|