@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
|
@@ -12,25 +12,40 @@ const ModuleDependency = require("./ModuleDependency");
|
|
|
12
12
|
|
|
13
13
|
/** @typedef {import("webpack-sources").ReplaceSource} ReplaceSource */
|
|
14
14
|
/** @typedef {import("../AsyncDependenciesBlock")} AsyncDependenciesBlock */
|
|
15
|
+
/** @typedef {import("../Chunk")} Chunk */
|
|
15
16
|
/** @typedef {import("../Dependency").ReferencedExports} ReferencedExports */
|
|
16
17
|
/** @typedef {import("../Dependency").UpdateHashContext} UpdateHashContext */
|
|
17
18
|
/** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */
|
|
18
19
|
/** @typedef {import("../Entrypoint")} Entrypoint */
|
|
19
20
|
/** @typedef {import("../ModuleGraph")} ModuleGraph */
|
|
20
21
|
/** @typedef {import("../javascript/JavascriptParser").Range} Range */
|
|
21
|
-
/** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
|
|
22
|
-
/** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
|
|
22
|
+
/** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext<[WorkerDependencyOptions]>} ObjectDeserializerContext */
|
|
23
|
+
/** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext<[WorkerDependencyOptions]>} ObjectSerializerContext */
|
|
23
24
|
/** @typedef {import("../util/Hash")} Hash */
|
|
24
25
|
/** @typedef {import("../util/runtime").RuntimeSpec} RuntimeSpec */
|
|
25
26
|
|
|
26
27
|
/**
|
|
28
|
+
* @typedef {object} ResourceHint
|
|
29
|
+
* @property {true=} prefetch emit `<link rel="prefetch">`
|
|
30
|
+
* @property {true=} preload emit `<link rel="preload">` (wins over prefetch when both are set)
|
|
31
|
+
* @property {("high" | "low" | "auto")=} fetchPriority value for the `fetchpriority` attribute
|
|
32
|
+
* @property {string=} as override for the `as` attribute (defaults to `"script"`)
|
|
33
|
+
* @property {string=} type value for the `type` attribute
|
|
34
|
+
* @property {string=} media value for the `media` attribute
|
|
35
|
+
*/
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* Represents the worker dependency runtime component.
|
|
27
39
|
* @typedef {object} WorkerDependencyOptions
|
|
28
40
|
* @property {string=} publicPath public path for the worker
|
|
29
41
|
* @property {boolean=} needNewUrl true when need generate `new URL(...)`, otherwise false
|
|
42
|
+
* @property {Range=} workerConstructorRange range of the global `Worker` constructor, set only for the `new Worker()` global syntax that needs a node-target rewrite
|
|
43
|
+
* @property {ResourceHint=} resourceHint resource hint to inject for the worker chunk
|
|
30
44
|
*/
|
|
31
45
|
|
|
32
46
|
class WorkerDependency extends ModuleDependency {
|
|
33
47
|
/**
|
|
48
|
+
* Creates an instance of WorkerDependency.
|
|
34
49
|
* @param {string} request request
|
|
35
50
|
* @param {Range} range range
|
|
36
51
|
* @param {WorkerDependencyOptions} workerDependencyOptions options
|
|
@@ -65,7 +80,7 @@ class WorkerDependency extends ModuleDependency {
|
|
|
65
80
|
}
|
|
66
81
|
|
|
67
82
|
/**
|
|
68
|
-
*
|
|
83
|
+
* Updates the hash with the data contributed by this instance.
|
|
69
84
|
* @param {Hash} hash hash to be updated
|
|
70
85
|
* @param {UpdateHashContext} context context
|
|
71
86
|
* @returns {void}
|
|
@@ -78,21 +93,21 @@ class WorkerDependency extends ModuleDependency {
|
|
|
78
93
|
}
|
|
79
94
|
|
|
80
95
|
/**
|
|
96
|
+
* Serializes this instance into the provided serializer context.
|
|
81
97
|
* @param {ObjectSerializerContext} context context
|
|
82
98
|
*/
|
|
83
99
|
serialize(context) {
|
|
84
|
-
|
|
85
|
-
write(this.options);
|
|
100
|
+
context.write(this.options);
|
|
86
101
|
super.serialize(context);
|
|
87
102
|
}
|
|
88
103
|
|
|
89
104
|
/**
|
|
105
|
+
* Restores this instance from the provided deserializer context.
|
|
90
106
|
* @param {ObjectDeserializerContext} context context
|
|
91
107
|
*/
|
|
92
108
|
deserialize(context) {
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
super.deserialize(context);
|
|
109
|
+
this.options = context.read();
|
|
110
|
+
super.deserialize(context.rest);
|
|
96
111
|
}
|
|
97
112
|
}
|
|
98
113
|
|
|
@@ -100,13 +115,15 @@ WorkerDependency.Template = class WorkerDependencyTemplate extends (
|
|
|
100
115
|
ModuleDependency.Template
|
|
101
116
|
) {
|
|
102
117
|
/**
|
|
118
|
+
* Applies the plugin by registering its hooks on the compiler.
|
|
103
119
|
* @param {Dependency} dependency the dependency for which the template should be applied
|
|
104
120
|
* @param {ReplaceSource} source the current replace source which can be modified
|
|
105
121
|
* @param {DependencyTemplateContext} templateContext the context object
|
|
106
122
|
* @returns {void}
|
|
107
123
|
*/
|
|
108
124
|
apply(dependency, source, templateContext) {
|
|
109
|
-
const { chunkGraph, moduleGraph, runtimeRequirements } =
|
|
125
|
+
const { chunkGraph, moduleGraph, runtimeRequirements, runtimeTemplate } =
|
|
126
|
+
templateContext;
|
|
110
127
|
const dep = /** @type {WorkerDependency} */ (dependency);
|
|
111
128
|
const block = /** @type {AsyncDependenciesBlock} */ (
|
|
112
129
|
moduleGraph.getParentBlock(dependency)
|
|
@@ -115,24 +132,91 @@ WorkerDependency.Template = class WorkerDependencyTemplate extends (
|
|
|
115
132
|
chunkGraph.getBlockChunkGroup(block)
|
|
116
133
|
);
|
|
117
134
|
const chunk = entrypoint.getEntrypointChunk();
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
135
|
+
|
|
136
|
+
// For ESM module output emit the analyzable `new URL("./worker.<name>.js",
|
|
137
|
+
// import.meta.url)` form (literal specifier, no runtime helpers) so other bundlers
|
|
138
|
+
// and webpack itself can statically follow the worker. Resource-hint workers keep
|
|
139
|
+
// the runtime form because the hint needs the runtime chunk reference.
|
|
140
|
+
const analyzableSpecifier =
|
|
141
|
+
!dep.options.resourceHint && runtimeTemplate.supportsAnalyzableEsm()
|
|
142
|
+
? runtimeTemplate._getAnalyzableChunkSpecifier(
|
|
143
|
+
dep.options.publicPath,
|
|
144
|
+
chunk,
|
|
145
|
+
templateContext.module,
|
|
146
|
+
chunkGraph
|
|
147
|
+
)
|
|
148
|
+
: null;
|
|
149
|
+
|
|
150
|
+
if (analyzableSpecifier !== null) {
|
|
151
|
+
const urlArgs = `/* worker import */ ${analyzableSpecifier}, ${runtimeTemplate.outputOptions.importMetaName}.url`;
|
|
152
|
+
source.replace(
|
|
153
|
+
dep.range[0],
|
|
154
|
+
dep.range[1] - 1,
|
|
155
|
+
dep.options.needNewUrl ? `new URL(${urlArgs})` : urlArgs
|
|
156
|
+
);
|
|
157
|
+
} else {
|
|
158
|
+
// We use the workerPublicPath option if provided, else we fallback to the RuntimeGlobal publicPath
|
|
159
|
+
const workerImportBaseUrl = dep.options.publicPath
|
|
160
|
+
? `"${dep.options.publicPath}"`
|
|
161
|
+
: RuntimeGlobals.publicPath;
|
|
162
|
+
|
|
163
|
+
runtimeRequirements.add(RuntimeGlobals.publicPath);
|
|
164
|
+
runtimeRequirements.add(RuntimeGlobals.baseURI);
|
|
165
|
+
runtimeRequirements.add(RuntimeGlobals.getChunkScriptFilename);
|
|
166
|
+
|
|
167
|
+
const hrefExpr = `${workerImportBaseUrl} + ${
|
|
168
|
+
RuntimeGlobals.getChunkScriptFilename
|
|
169
|
+
}(${JSON.stringify(chunk.id)})`;
|
|
170
|
+
|
|
171
|
+
const hint = dep.options.resourceHint;
|
|
172
|
+
const rel =
|
|
173
|
+
hint && hint.preload
|
|
174
|
+
? "preload"
|
|
175
|
+
: hint && hint.prefetch
|
|
176
|
+
? "prefetch"
|
|
177
|
+
: null;
|
|
178
|
+
let wrappedHref;
|
|
179
|
+
if (rel && hint) {
|
|
180
|
+
const fn =
|
|
181
|
+
rel === "preload"
|
|
182
|
+
? RuntimeGlobals.preloadAsset
|
|
183
|
+
: RuntimeGlobals.prefetchAsset;
|
|
184
|
+
runtimeRequirements.add(fn);
|
|
185
|
+
const as = hint.as || "script";
|
|
186
|
+
const args = [
|
|
187
|
+
hrefExpr,
|
|
188
|
+
JSON.stringify(as),
|
|
189
|
+
hint.type ? JSON.stringify(hint.type) : "undefined",
|
|
190
|
+
hint.media ? JSON.stringify(hint.media) : "undefined",
|
|
191
|
+
hint.fetchPriority ? JSON.stringify(hint.fetchPriority) : "undefined"
|
|
192
|
+
];
|
|
193
|
+
wrappedHref = `${fn}(${args.join(", ")})`;
|
|
194
|
+
} else {
|
|
195
|
+
wrappedHref = hrefExpr;
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
const workerImportStr = `/* worker import */ ${wrappedHref}, ${RuntimeGlobals.baseURI}`;
|
|
199
|
+
|
|
200
|
+
source.replace(
|
|
201
|
+
dep.range[0],
|
|
202
|
+
dep.range[1] - 1,
|
|
203
|
+
dep.options.needNewUrl ? `new URL(${workerImportStr})` : workerImportStr
|
|
204
|
+
);
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
// `Worker` is global only on the web, so route node (universal or node-only) through `worker_threads`
|
|
208
|
+
const { platform } = runtimeTemplate.compilation.compiler;
|
|
209
|
+
const ctorRange = dep.options.workerConstructorRange;
|
|
210
|
+
if (
|
|
211
|
+
ctorRange &&
|
|
212
|
+
(runtimeTemplate.isUniversalTarget() || (platform.node && !platform.web))
|
|
213
|
+
) {
|
|
214
|
+
// `__webpack_require__.wc` attaches to `__webpack_require__`; the analyzable
|
|
215
|
+
// branch adds no other requirement that would emit it, so require it here.
|
|
216
|
+
runtimeRequirements.add(RuntimeGlobals.require);
|
|
217
|
+
runtimeRequirements.add(RuntimeGlobals.worker);
|
|
218
|
+
source.replace(ctorRange[0], ctorRange[1] - 1, RuntimeGlobals.worker);
|
|
219
|
+
}
|
|
136
220
|
}
|
|
137
221
|
};
|
|
138
222
|
|
|
@@ -0,0 +1,278 @@
|
|
|
1
|
+
/*
|
|
2
|
+
MIT License http://www.opensource.org/licenses/mit-license.php
|
|
3
|
+
Author sheo13666q
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
"use strict";
|
|
7
|
+
|
|
8
|
+
const Dependency = require("../Dependency");
|
|
9
|
+
const RuntimeGlobals = require("../RuntimeGlobals");
|
|
10
|
+
const Template = require("../Template");
|
|
11
|
+
const makeSerializable = require("../util/makeSerializable");
|
|
12
|
+
const ModuleDependency = require("./ModuleDependency");
|
|
13
|
+
|
|
14
|
+
/** @typedef {import("webpack-sources").ReplaceSource} ReplaceSource */
|
|
15
|
+
/** @typedef {import("../AsyncDependenciesBlock")} AsyncDependenciesBlock */
|
|
16
|
+
/** @typedef {import("../Chunk")} Chunk */
|
|
17
|
+
/** @typedef {import("../Dependency").ReferencedExports} ReferencedExports */
|
|
18
|
+
/** @typedef {import("../Dependency").UpdateHashContext} UpdateHashContext */
|
|
19
|
+
/** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */
|
|
20
|
+
/** @typedef {import("../Entrypoint")} Entrypoint */
|
|
21
|
+
/** @typedef {import("../ModuleGraph")} ModuleGraph */
|
|
22
|
+
/** @typedef {import("../javascript/JavascriptParser").Range} Range */
|
|
23
|
+
/** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext<[WorkletDependencyOptions, Range]>} ObjectDeserializerContext */
|
|
24
|
+
/** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext<[WorkletDependencyOptions, Range]>} ObjectSerializerContext */
|
|
25
|
+
/** @typedef {import("../util/Hash")} Hash */
|
|
26
|
+
/** @typedef {import("../util/runtime").RuntimeSpec} RuntimeSpec */
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* @typedef {object} WorkletDependencyOptions
|
|
30
|
+
* @property {string=} publicPath public path for the worklet
|
|
31
|
+
*/
|
|
32
|
+
|
|
33
|
+
// The wrapper param forwarded as the module argument to the original `addModule`.
|
|
34
|
+
const WORKLET_MODULE = "__webpack_worklet_module__";
|
|
35
|
+
|
|
36
|
+
class WorkletDependency extends ModuleDependency {
|
|
37
|
+
/**
|
|
38
|
+
* Creates an instance of WorkletDependency.
|
|
39
|
+
* @param {string} request request
|
|
40
|
+
* @param {Range} range range of the zero-width insertion point (before the call)
|
|
41
|
+
* @param {Range} callRange range of the call argument list `(<url>)`
|
|
42
|
+
* @param {WorkletDependencyOptions} workletDependencyOptions options
|
|
43
|
+
*/
|
|
44
|
+
constructor(request, range, callRange, workletDependencyOptions) {
|
|
45
|
+
super(request);
|
|
46
|
+
this.range = range;
|
|
47
|
+
/** @type {Range} */
|
|
48
|
+
this.callRange = callRange;
|
|
49
|
+
// If options are updated, don't forget to update the hash and serialization functions
|
|
50
|
+
/** @type {WorkletDependencyOptions} */
|
|
51
|
+
this.options = workletDependencyOptions;
|
|
52
|
+
/** Cache the hash */
|
|
53
|
+
/** @type {undefined | string} */
|
|
54
|
+
this._hashUpdate = undefined;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
/**
|
|
58
|
+
* Returns list of exports referenced by this dependency
|
|
59
|
+
* @param {ModuleGraph} moduleGraph module graph
|
|
60
|
+
* @param {RuntimeSpec} runtime the runtime for which the module is analysed
|
|
61
|
+
* @returns {ReferencedExports} referenced exports
|
|
62
|
+
*/
|
|
63
|
+
getReferencedExports(moduleGraph, runtime) {
|
|
64
|
+
return Dependency.NO_EXPORTS_REFERENCED;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
get type() {
|
|
68
|
+
return "Worklet.addModule()";
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
get category() {
|
|
72
|
+
return "worker";
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
/**
|
|
76
|
+
* Updates the hash with the data contributed by this instance.
|
|
77
|
+
* @param {Hash} hash hash to be updated
|
|
78
|
+
* @param {UpdateHashContext} context context
|
|
79
|
+
* @returns {void}
|
|
80
|
+
*/
|
|
81
|
+
updateHash(hash, context) {
|
|
82
|
+
if (this._hashUpdate === undefined) {
|
|
83
|
+
this._hashUpdate = JSON.stringify(this.options);
|
|
84
|
+
}
|
|
85
|
+
hash.update(this._hashUpdate);
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
/**
|
|
89
|
+
* Serializes this instance into the provided serializer context.
|
|
90
|
+
* @param {ObjectSerializerContext} context context
|
|
91
|
+
*/
|
|
92
|
+
serialize(context) {
|
|
93
|
+
context.write(this.options).write(this.callRange);
|
|
94
|
+
super.serialize(context);
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
/**
|
|
98
|
+
* Restores this instance from the provided deserializer context.
|
|
99
|
+
* @param {ObjectDeserializerContext} context context
|
|
100
|
+
*/
|
|
101
|
+
deserialize(context) {
|
|
102
|
+
this.options = context.read();
|
|
103
|
+
const rest = context.rest;
|
|
104
|
+
this.callRange = rest.read();
|
|
105
|
+
super.deserialize(rest.rest);
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
WorkletDependency.Template = class WorkletDependencyTemplate extends (
|
|
110
|
+
ModuleDependency.Template
|
|
111
|
+
) {
|
|
112
|
+
/**
|
|
113
|
+
* Applies the plugin by registering its hooks on the compiler.
|
|
114
|
+
* @param {Dependency} dependency the dependency for which the template should be applied
|
|
115
|
+
* @param {ReplaceSource} source the current replace source which can be modified
|
|
116
|
+
* @param {DependencyTemplateContext} templateContext the context object
|
|
117
|
+
* @returns {void}
|
|
118
|
+
*/
|
|
119
|
+
apply(dependency, source, templateContext) {
|
|
120
|
+
const {
|
|
121
|
+
module,
|
|
122
|
+
chunkGraph,
|
|
123
|
+
moduleGraph,
|
|
124
|
+
runtimeRequirements,
|
|
125
|
+
runtimeTemplate
|
|
126
|
+
} = templateContext;
|
|
127
|
+
const dep = /** @type {WorkletDependency} */ (dependency);
|
|
128
|
+
const block = /** @type {AsyncDependenciesBlock} */ (
|
|
129
|
+
moduleGraph.getParentBlock(dependency)
|
|
130
|
+
);
|
|
131
|
+
const entrypoint = /** @type {Entrypoint} */ (
|
|
132
|
+
chunkGraph.getBlockChunkGroup(block)
|
|
133
|
+
);
|
|
134
|
+
|
|
135
|
+
const entryChunk = entrypoint.getEntrypointChunk();
|
|
136
|
+
const runtimeChunk = entrypoint.getRuntimeChunk();
|
|
137
|
+
const referencedChunks = entryChunk.getAllReferencedChunks();
|
|
138
|
+
const runtimeChunkId =
|
|
139
|
+
runtimeChunk && runtimeChunk.id !== null ? runtimeChunk.id : null;
|
|
140
|
+
|
|
141
|
+
// For ESM module output emit the analyzable `new URL("./worklet.<name>.js",
|
|
142
|
+
// import.meta.url)` form (literal specifier, no runtime helpers) so other bundlers
|
|
143
|
+
// and webpack itself can statically follow the worklet. The worklet chunk links its
|
|
144
|
+
// splits via native `import`, so only the entry chunk is referenced.
|
|
145
|
+
const analyzableSpecifier =
|
|
146
|
+
runtimeTemplate.supportsAnalyzableEsm() && entryChunk.id !== null
|
|
147
|
+
? runtimeTemplate._getAnalyzableChunkSpecifier(
|
|
148
|
+
dep.options.publicPath,
|
|
149
|
+
entryChunk,
|
|
150
|
+
module,
|
|
151
|
+
chunkGraph
|
|
152
|
+
)
|
|
153
|
+
: null;
|
|
154
|
+
if (analyzableSpecifier !== null) {
|
|
155
|
+
source.replace(
|
|
156
|
+
dep.callRange[0],
|
|
157
|
+
dep.callRange[1] - 1,
|
|
158
|
+
`(new URL(/* worklet import */ ${analyzableSpecifier}, ${runtimeTemplate.outputOptions.importMetaName}.url))`
|
|
159
|
+
);
|
|
160
|
+
return;
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
const workletImportBaseUrl = dep.options.publicPath
|
|
164
|
+
? JSON.stringify(dep.options.publicPath)
|
|
165
|
+
: RuntimeGlobals.publicPath;
|
|
166
|
+
|
|
167
|
+
runtimeRequirements.add(RuntimeGlobals.publicPath);
|
|
168
|
+
runtimeRequirements.add(RuntimeGlobals.baseURI);
|
|
169
|
+
runtimeRequirements.add(RuntimeGlobals.getChunkScriptFilename);
|
|
170
|
+
|
|
171
|
+
/**
|
|
172
|
+
* @param {string | number} id chunk id
|
|
173
|
+
* @returns {string} `new URL(...)` expression for the chunk file
|
|
174
|
+
*/
|
|
175
|
+
const toUrl = (id) =>
|
|
176
|
+
`new URL(${workletImportBaseUrl} + ${
|
|
177
|
+
RuntimeGlobals.getChunkScriptFilename
|
|
178
|
+
}(${JSON.stringify(id)}), ${RuntimeGlobals.baseURI})`;
|
|
179
|
+
|
|
180
|
+
// Module output: the worklet chunk is an ES module that links its split
|
|
181
|
+
// chunks via native `import`, which `addModule` resolves — so add just the
|
|
182
|
+
// entry chunk, with no worker-scope shim and no chunk pre-loading.
|
|
183
|
+
if (runtimeTemplate.isModule() && entryChunk.id !== null) {
|
|
184
|
+
source.replace(
|
|
185
|
+
dep.callRange[0],
|
|
186
|
+
dep.callRange[1] - 1,
|
|
187
|
+
`(${toUrl(entryChunk.id)})`
|
|
188
|
+
);
|
|
189
|
+
return;
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
// Fast path: a self-contained worklet (a single chunk, no splits or async
|
|
193
|
+
// `import()`) needs no chunk-loading runtime and no worker-scope shim, so the
|
|
194
|
+
// chunk is `addModule`-d directly with no bootstrap.
|
|
195
|
+
if (referencedChunks.size === 1 && runtimeChunkId !== null) {
|
|
196
|
+
source.replace(
|
|
197
|
+
dep.callRange[0],
|
|
198
|
+
dep.callRange[1] - 1,
|
|
199
|
+
`(${toUrl(runtimeChunkId)})`
|
|
200
|
+
);
|
|
201
|
+
return;
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
// A worklet can't load chunks at runtime, so every reachable chunk (initial
|
|
205
|
+
// splits and async `import()` targets alike) is pre-added via `addModule`
|
|
206
|
+
// from the calling scope. The runtime chunk is added last so it installs the
|
|
207
|
+
// chunks pushed before it and runs entry startup with every module present
|
|
208
|
+
// (see ImportScriptsChunkLoadingRuntimeModule).
|
|
209
|
+
/** @type {(string | number)[]} */
|
|
210
|
+
const restChunkIds = [];
|
|
211
|
+
for (const chunk of referencedChunks) {
|
|
212
|
+
if (chunk !== runtimeChunk && chunk.id !== null) {
|
|
213
|
+
restChunkIds.push(chunk.id);
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
runtimeRequirements.add(RuntimeGlobals.getWorkletBootstrap);
|
|
218
|
+
|
|
219
|
+
const add = "__webpack_worklet_add__";
|
|
220
|
+
const boot = `${add}(${RuntimeGlobals.getWorkletBootstrap}())`;
|
|
221
|
+
// Non-runtime chunks have no ordering constraint, so add them concurrently.
|
|
222
|
+
const addOne = runtimeTemplate.returningFunction(`${add}(u)`, "u");
|
|
223
|
+
const parallel =
|
|
224
|
+
restChunkIds.length > 0
|
|
225
|
+
? `Promise.all([${restChunkIds.map(toUrl).join(", ")}].map(${addOne}))`
|
|
226
|
+
: undefined;
|
|
227
|
+
// The runtime chunk is added last: it runs entry startup with every module present.
|
|
228
|
+
const runtimeAdd =
|
|
229
|
+
runtimeChunkId !== null ? `${add}(${toUrl(runtimeChunkId)})` : undefined;
|
|
230
|
+
|
|
231
|
+
// Emit `async`/`await` only where the target supports async functions;
|
|
232
|
+
// otherwise fall back to an equivalent Promise chain (boot → rest → runtime).
|
|
233
|
+
let bootstrap;
|
|
234
|
+
if (runtimeTemplate.supportsAsyncFunction()) {
|
|
235
|
+
bootstrap = Template.asString([
|
|
236
|
+
`async function(${add}) {`,
|
|
237
|
+
Template.indent(
|
|
238
|
+
[
|
|
239
|
+
`await ${boot};`,
|
|
240
|
+
parallel ? `await ${parallel};` : "",
|
|
241
|
+
runtimeAdd ? `await ${runtimeAdd};` : ""
|
|
242
|
+
].filter(Boolean)
|
|
243
|
+
),
|
|
244
|
+
"}"
|
|
245
|
+
]);
|
|
246
|
+
} else {
|
|
247
|
+
let chain = boot;
|
|
248
|
+
if (parallel) {
|
|
249
|
+
chain += `.then(${runtimeTemplate.returningFunction(parallel)})`;
|
|
250
|
+
}
|
|
251
|
+
if (runtimeAdd) {
|
|
252
|
+
chain += `.then(${runtimeTemplate.returningFunction(runtimeAdd)})`;
|
|
253
|
+
}
|
|
254
|
+
bootstrap = `function(${add}) { return ${chain}; }`;
|
|
255
|
+
}
|
|
256
|
+
|
|
257
|
+
// The wrapper forwards to the original `addModule` (its callee stays in the
|
|
258
|
+
// source, so the receiver is preserved); a plain function keeps it valid on
|
|
259
|
+
// ES targets without arrow functions.
|
|
260
|
+
source.insert(
|
|
261
|
+
dep.range[0],
|
|
262
|
+
`(/* worklet bootstrap */ ${bootstrap})(function(${WORKLET_MODULE}) { return `
|
|
263
|
+
);
|
|
264
|
+
source.replace(
|
|
265
|
+
dep.callRange[0],
|
|
266
|
+
dep.callRange[1] - 1,
|
|
267
|
+
`(${WORKLET_MODULE}); })`
|
|
268
|
+
);
|
|
269
|
+
}
|
|
270
|
+
};
|
|
271
|
+
|
|
272
|
+
makeSerializable(
|
|
273
|
+
WorkletDependency,
|
|
274
|
+
"webpack/lib/dependencies/WorkletDependency"
|
|
275
|
+
);
|
|
276
|
+
|
|
277
|
+
module.exports = WorkletDependency;
|
|
278
|
+
module.exports.WORKLET_MODULE = WORKLET_MODULE;
|
|
@@ -13,6 +13,7 @@
|
|
|
13
13
|
/** @typedef {{ fn: FunctionExpression | ArrowFunctionExpression, expressions: (Expression | SpreadElement)[], needThis: boolean | undefined }} FunctionExpressionResult */
|
|
14
14
|
|
|
15
15
|
/**
|
|
16
|
+
* Returns function expression with additional information.
|
|
16
17
|
* @param {Expression | SpreadElement} expr expressions
|
|
17
18
|
* @returns {FunctionExpressionResult | undefined} function expression with additional information
|
|
18
19
|
*/
|
|
@@ -12,12 +12,13 @@ const { UsageState } = require("../ExportsInfo");
|
|
|
12
12
|
/** @typedef {import("../util/runtime").RuntimeSpec} RuntimeSpec */
|
|
13
13
|
|
|
14
14
|
/**
|
|
15
|
+
* Process export info.
|
|
15
16
|
* @param {RuntimeSpec} runtime the runtime
|
|
16
17
|
* @param {RawReferencedExports} referencedExports list of referenced exports, will be added to
|
|
17
18
|
* @param {string[]} prefix export prefix
|
|
18
19
|
* @param {ExportInfo=} exportInfo the export info
|
|
19
20
|
* @param {boolean} defaultPointsToSelf when true, using default will reference itself
|
|
20
|
-
* @param {Set<ExportInfo
|
|
21
|
+
* @param {Set<ExportInfo>=} alreadyVisited already visited export info (to handle circular reexports)
|
|
21
22
|
*/
|
|
22
23
|
const processExportInfo = (
|
|
23
24
|
runtime,
|
|
@@ -25,7 +26,7 @@ const processExportInfo = (
|
|
|
25
26
|
prefix,
|
|
26
27
|
exportInfo,
|
|
27
28
|
defaultPointsToSelf = false,
|
|
28
|
-
alreadyVisited =
|
|
29
|
+
alreadyVisited = undefined
|
|
29
30
|
) => {
|
|
30
31
|
if (!exportInfo) {
|
|
31
32
|
referencedExports.push(prefix);
|
|
@@ -33,35 +34,37 @@ const processExportInfo = (
|
|
|
33
34
|
}
|
|
34
35
|
const used = exportInfo.getUsed(runtime);
|
|
35
36
|
if (used === UsageState.Unused) return;
|
|
36
|
-
if (alreadyVisited.has(exportInfo)) {
|
|
37
|
+
if (alreadyVisited !== undefined && alreadyVisited.has(exportInfo)) {
|
|
37
38
|
referencedExports.push(prefix);
|
|
38
39
|
return;
|
|
39
40
|
}
|
|
40
|
-
|
|
41
|
+
// Terminal case: not recursing, so no need to track visited here
|
|
41
42
|
if (
|
|
42
43
|
used !== UsageState.OnlyPropertiesUsed ||
|
|
43
44
|
!exportInfo.exportsInfo ||
|
|
44
45
|
exportInfo.exportsInfo.otherExportsInfo.getUsed(runtime) !==
|
|
45
46
|
UsageState.Unused
|
|
46
47
|
) {
|
|
47
|
-
alreadyVisited.delete(exportInfo);
|
|
48
48
|
referencedExports.push(prefix);
|
|
49
49
|
return;
|
|
50
50
|
}
|
|
51
|
+
// Only the recursive path needs the visited set; allocate it lazily
|
|
52
|
+
const visited = alreadyVisited !== undefined ? alreadyVisited : new Set();
|
|
53
|
+
visited.add(exportInfo);
|
|
51
54
|
const exportsInfo = exportInfo.exportsInfo;
|
|
52
|
-
for (const
|
|
55
|
+
for (const childExportInfo of exportsInfo.orderedExports) {
|
|
53
56
|
processExportInfo(
|
|
54
57
|
runtime,
|
|
55
58
|
referencedExports,
|
|
56
|
-
defaultPointsToSelf &&
|
|
59
|
+
defaultPointsToSelf && childExportInfo.name === "default"
|
|
57
60
|
? prefix
|
|
58
|
-
: [...prefix,
|
|
59
|
-
|
|
61
|
+
: [...prefix, childExportInfo.name],
|
|
62
|
+
childExportInfo,
|
|
60
63
|
false,
|
|
61
|
-
|
|
64
|
+
visited
|
|
62
65
|
);
|
|
63
66
|
}
|
|
64
|
-
|
|
67
|
+
visited.delete(exportInfo);
|
|
65
68
|
};
|
|
66
69
|
|
|
67
70
|
module.exports = processExportInfo;
|