@depup/webpack 5.106.0-depup.0 → 5.109.0-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/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 +141 -9
- package/lib/ChunkGroup.js +115 -28
- package/lib/ChunkTemplate.js +9 -0
- package/lib/CircularModulesPlugin.js +190 -0
- package/lib/CleanPlugin.js +23 -26
- package/lib/CodeGenerationResults.js +19 -0
- package/lib/CompatibilityPlugin.js +54 -37
- package/lib/Compilation.js +635 -107
- package/lib/Compiler.js +93 -31
- 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 +498 -127
- 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 +399 -108
- package/lib/ExportsInfoApiPlugin.js +4 -3
- package/lib/ExternalModule.js +376 -78
- package/lib/ExternalModuleFactoryPlugin.js +75 -3
- package/lib/ExternalsPlugin.js +3 -1
- package/lib/FileSystemInfo.js +575 -149
- package/lib/FlagAllModulesAsUsedPlugin.js +3 -6
- package/lib/FlagDependencyExportsPlugin.js +82 -9
- package/lib/FlagDependencyUsagePlugin.js +92 -6
- 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 +15 -0
- 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 -60
- package/lib/ModuleFactory.js +6 -1
- package/lib/ModuleFilenameHelpers.js +5 -2
- 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 +485 -181
- package/lib/NormalModuleFactory.js +148 -29
- 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 +104 -26
- 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 +29 -3
- 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 +43 -7
- 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 +591 -41
- 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/ModuleFederationPlugin.js +12 -26
- 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 +534 -272
- package/lib/css/CssInjectStyleRuntimeModule.js +86 -70
- package/lib/css/CssLoadingRuntimeModule.js +156 -77
- package/lib/{CssModule.js → css/CssModule.js} +72 -37
- package/lib/css/CssModulesPlugin.js +356 -204
- package/lib/css/CssParser.js +3452 -1950
- package/lib/css/syntax.js +4058 -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 +138 -38
- package/lib/dependencies/CommonJsExportsDependency.js +74 -20
- package/lib/dependencies/CommonJsExportsParserPlugin.js +246 -15
- package/lib/dependencies/CommonJsFullRequireDependency.js +62 -27
- package/lib/dependencies/CommonJsImportsParserPlugin.js +187 -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 +682 -368
- 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 +32 -2
- package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +70 -33
- package/lib/dependencies/HarmonyExportExpressionDependency.js +140 -46
- package/lib/dependencies/HarmonyExportHeaderDependency.js +11 -9
- package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +253 -37
- 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 +59 -3
- package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +139 -146
- package/lib/dependencies/HarmonyImportGuard.js +426 -0
- package/lib/dependencies/HarmonyImportSideEffectDependency.js +22 -1
- package/lib/dependencies/HarmonyImportSpecifierDependency.js +136 -17
- 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 +71 -49
- 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 +34 -8
- package/lib/html/HtmlGenerator.js +1470 -0
- package/lib/html/HtmlModule.js +41 -0
- package/lib/html/HtmlModulesPlugin.js +1111 -0
- package/lib/html/HtmlParser.js +1970 -0
- package/lib/html/favicon.svg +1 -0
- package/lib/html/syntax.js +9020 -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 +25 -2
- 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 +579 -183
- package/lib/javascript/JavascriptParser.js +1289 -462
- package/lib/javascript/JavascriptParserHelpers.js +10 -7
- package/lib/javascript/StartupHelpers.js +5 -0
- package/lib/javascript/syntax.js +4380 -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 +23 -1
- package/lib/node/ReadFileCompileWasmPlugin.js +18 -1
- 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 +3 -1
- package/lib/optimize/AggressiveSplittingPlugin.js +6 -1
- package/lib/optimize/ConcatenatedModule.js +585 -116
- 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 +159 -34
- package/lib/optimize/RealContentHashPlugin.js +125 -50
- 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 +54 -6
- 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 +663 -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 +552 -463
- package/lib/serialization/DateObjectSerializer.js +4 -2
- package/lib/serialization/ErrorObjectSerializer.js +10 -6
- package/lib/serialization/FileMiddleware.js +50 -3
- 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 +94 -12
- package/lib/stats/DefaultStatsPresetPlugin.js +14 -2
- package/lib/stats/DefaultStatsPrinterPlugin.js +64 -18
- package/lib/stats/StatsFactory.js +39 -18
- 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 +97 -6
- 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 +1117 -79
- 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 +8608 -1159
- 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
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
const RuntimeGlobals = require("../RuntimeGlobals");
|
|
9
9
|
const RuntimeModule = require("../RuntimeModule");
|
|
10
10
|
const Template = require("../Template");
|
|
11
|
+
const { compareModulesById } = require("../util/comparators");
|
|
11
12
|
const {
|
|
12
13
|
parseVersionRuntimeCode,
|
|
13
14
|
rangeToStringRuntimeCode,
|
|
@@ -31,10 +32,12 @@ class ConsumeSharedRuntimeModule extends RuntimeModule {
|
|
|
31
32
|
*/
|
|
32
33
|
constructor(runtimeRequirements) {
|
|
33
34
|
super("consumes", RuntimeModule.STAGE_ATTACH);
|
|
35
|
+
/** @type {ReadOnlyRuntimeRequirements} */
|
|
34
36
|
this._runtimeRequirements = runtimeRequirements;
|
|
35
37
|
}
|
|
36
38
|
|
|
37
39
|
/**
|
|
40
|
+
* Generates runtime code for this runtime module.
|
|
38
41
|
* @returns {string | null} runtime code
|
|
39
42
|
*/
|
|
40
43
|
generate() {
|
|
@@ -70,12 +73,14 @@ class ConsumeSharedRuntimeModule extends RuntimeModule {
|
|
|
70
73
|
);
|
|
71
74
|
}
|
|
72
75
|
};
|
|
76
|
+
const byId = compareModulesById(chunkGraph);
|
|
73
77
|
for (const chunk of /** @type {Chunk} */ (
|
|
74
78
|
this.chunk
|
|
75
79
|
).getAllReferencedChunks()) {
|
|
76
|
-
const modules = chunkGraph.
|
|
80
|
+
const modules = chunkGraph.getOrderedChunkModulesIterableBySourceType(
|
|
77
81
|
chunk,
|
|
78
|
-
"consume-shared"
|
|
82
|
+
"consume-shared",
|
|
83
|
+
byId
|
|
79
84
|
);
|
|
80
85
|
if (!modules) continue;
|
|
81
86
|
addModules(
|
|
@@ -87,27 +92,29 @@ class ConsumeSharedRuntimeModule extends RuntimeModule {
|
|
|
87
92
|
for (const chunk of /** @type {Chunk} */ (
|
|
88
93
|
this.chunk
|
|
89
94
|
).getAllInitialChunks()) {
|
|
90
|
-
const modules = chunkGraph.
|
|
95
|
+
const modules = chunkGraph.getOrderedChunkModulesIterableBySourceType(
|
|
91
96
|
chunk,
|
|
92
|
-
"consume-shared"
|
|
97
|
+
"consume-shared",
|
|
98
|
+
byId
|
|
93
99
|
);
|
|
94
100
|
if (!modules) continue;
|
|
95
101
|
addModules(modules, chunk, initialConsumes);
|
|
96
102
|
}
|
|
97
103
|
if (moduleIdToSourceMapping.size === 0) return null;
|
|
104
|
+
const cst = runtimeTemplate.renderConst();
|
|
98
105
|
return Template.asString([
|
|
99
106
|
parseVersionRuntimeCode(runtimeTemplate),
|
|
100
107
|
versionLtRuntimeCode(runtimeTemplate),
|
|
101
108
|
rangeToStringRuntimeCode(runtimeTemplate),
|
|
102
109
|
satisfyRuntimeCode(runtimeTemplate),
|
|
103
|
-
|
|
110
|
+
`${cst} exists = ${runtimeTemplate.basicFunction("scope, key", [
|
|
104
111
|
`return scope && ${RuntimeGlobals.hasOwnProperty}(scope, key);`
|
|
105
112
|
])}`,
|
|
106
|
-
|
|
113
|
+
`${cst} get = ${runtimeTemplate.basicFunction("entry", [
|
|
107
114
|
"entry.loaded = 1;",
|
|
108
115
|
"return entry.get()"
|
|
109
116
|
])};`,
|
|
110
|
-
|
|
117
|
+
`${cst} eagerOnly = ${runtimeTemplate.basicFunction("versions", [
|
|
111
118
|
`return Object.keys(versions).reduce(${runtimeTemplate.basicFunction(
|
|
112
119
|
"filtered, version",
|
|
113
120
|
Template.indent([
|
|
@@ -118,10 +125,10 @@ class ConsumeSharedRuntimeModule extends RuntimeModule {
|
|
|
118
125
|
])
|
|
119
126
|
)}, {});`
|
|
120
127
|
])};`,
|
|
121
|
-
|
|
128
|
+
`${cst} findLatestVersion = ${runtimeTemplate.basicFunction(
|
|
122
129
|
"scope, key, eager",
|
|
123
130
|
[
|
|
124
|
-
|
|
131
|
+
`${cst} versions = eager ? eagerOnly(scope[key]) : scope[key];`,
|
|
125
132
|
`var key = Object.keys(versions).reduce(${runtimeTemplate.basicFunction(
|
|
126
133
|
"a, b",
|
|
127
134
|
["return !a || versionLt(a, b) ? b : a;"]
|
|
@@ -129,10 +136,10 @@ class ConsumeSharedRuntimeModule extends RuntimeModule {
|
|
|
129
136
|
"return key && versions[key];"
|
|
130
137
|
]
|
|
131
138
|
)};`,
|
|
132
|
-
|
|
139
|
+
`${cst} findSatisfyingVersion = ${runtimeTemplate.basicFunction(
|
|
133
140
|
"scope, key, requiredVersion, eager",
|
|
134
141
|
[
|
|
135
|
-
|
|
142
|
+
`${cst} versions = eager ? eagerOnly(scope[key]) : scope[key];`,
|
|
136
143
|
`var key = Object.keys(versions).reduce(${runtimeTemplate.basicFunction(
|
|
137
144
|
"a, b",
|
|
138
145
|
[
|
|
@@ -143,26 +150,26 @@ class ConsumeSharedRuntimeModule extends RuntimeModule {
|
|
|
143
150
|
"return key && versions[key]"
|
|
144
151
|
]
|
|
145
152
|
)};`,
|
|
146
|
-
|
|
153
|
+
`${cst} findSingletonVersionKey = ${runtimeTemplate.basicFunction(
|
|
147
154
|
"scope, key, eager",
|
|
148
155
|
[
|
|
149
|
-
|
|
156
|
+
`${cst} versions = eager ? eagerOnly(scope[key]) : scope[key];`,
|
|
150
157
|
`return Object.keys(versions).reduce(${runtimeTemplate.basicFunction(
|
|
151
158
|
"a, b",
|
|
152
159
|
["return !a || (!versions[a].loaded && versionLt(a, b)) ? b : a;"]
|
|
153
160
|
)}, 0);`
|
|
154
161
|
]
|
|
155
162
|
)};`,
|
|
156
|
-
|
|
163
|
+
`${cst} getInvalidSingletonVersionMessage = ${runtimeTemplate.basicFunction(
|
|
157
164
|
"scope, key, version, requiredVersion",
|
|
158
165
|
[
|
|
159
166
|
'return "Unsatisfied version " + version + " from " + (version && scope[key][version].from) + " of shared singleton module " + key + " (required " + rangeToString(requiredVersion) + ")"'
|
|
160
167
|
]
|
|
161
168
|
)};`,
|
|
162
|
-
|
|
169
|
+
`${cst} getInvalidVersionMessage = ${runtimeTemplate.basicFunction(
|
|
163
170
|
"scope, scopeName, key, requiredVersion, eager",
|
|
164
171
|
[
|
|
165
|
-
|
|
172
|
+
`${cst} versions = scope[key];`,
|
|
166
173
|
'return "No satisfying version (" + rangeToString(requiredVersion) + ")" + (eager ? " for eager consumption" : "") + " of shared module " + key + " found in shared scope " + scopeName + ".\\n" +',
|
|
167
174
|
`\t"Available versions: " + Object.keys(versions).map(${runtimeTemplate.basicFunction(
|
|
168
175
|
"key",
|
|
@@ -170,26 +177,29 @@ class ConsumeSharedRuntimeModule extends RuntimeModule {
|
|
|
170
177
|
)}).join(", ");`
|
|
171
178
|
]
|
|
172
179
|
)};`,
|
|
173
|
-
|
|
180
|
+
`${cst} fail = ${runtimeTemplate.basicFunction("msg", [
|
|
174
181
|
"throw new Error(msg);"
|
|
175
182
|
])}`,
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
183
|
+
`${cst} failAsNotExist = ${runtimeTemplate.basicFunction(
|
|
184
|
+
"scopeName, key",
|
|
185
|
+
[
|
|
186
|
+
'return fail("Shared module " + key + " doesn\'t exist in shared scope " + scopeName);'
|
|
187
|
+
]
|
|
188
|
+
)}`,
|
|
189
|
+
`${cst} warn = /*#__PURE__*/ ${
|
|
180
190
|
compilation.outputOptions.ignoreBrowserWarnings
|
|
181
191
|
? runtimeTemplate.basicFunction("", "")
|
|
182
192
|
: runtimeTemplate.basicFunction("msg", [
|
|
183
193
|
'if (typeof console !== "undefined" && console.warn) console.warn(msg);'
|
|
184
194
|
])
|
|
185
195
|
};`,
|
|
186
|
-
|
|
196
|
+
`${cst} init = ${runtimeTemplate.returningFunction(
|
|
187
197
|
Template.asString([
|
|
188
198
|
"function(scopeName, key, eager, c, d) {",
|
|
189
199
|
Template.indent([
|
|
190
|
-
|
|
200
|
+
`${cst} promise = ${RuntimeGlobals.initializeSharing}(scopeName);`,
|
|
191
201
|
// if we require eager shared, we expect it to be already loaded before it requested, no need to wait the whole scope loaded.
|
|
192
|
-
|
|
202
|
+
`if (${runtimeTemplate.optionalChaining("promise", "then")} && !eager) { `,
|
|
193
203
|
Template.indent([
|
|
194
204
|
`return promise.then(fn.bind(fn, scopeName, ${RuntimeGlobals.shareScopeMap}[scopeName], key, false, c, d));`
|
|
195
205
|
]),
|
|
@@ -201,50 +211,50 @@ class ConsumeSharedRuntimeModule extends RuntimeModule {
|
|
|
201
211
|
"fn"
|
|
202
212
|
)};`,
|
|
203
213
|
"",
|
|
204
|
-
|
|
214
|
+
`${cst} useFallback = ${runtimeTemplate.basicFunction(
|
|
205
215
|
"scopeName, key, fallback",
|
|
206
216
|
["return fallback ? fallback() : failAsNotExist(scopeName, key);"]
|
|
207
217
|
)}`,
|
|
208
|
-
|
|
218
|
+
`${cst} load = /*#__PURE__*/ init(${runtimeTemplate.basicFunction(
|
|
209
219
|
"scopeName, scope, key, eager, fallback",
|
|
210
220
|
[
|
|
211
221
|
"if (!exists(scope, key)) return useFallback(scopeName, key, fallback);",
|
|
212
222
|
"return get(findLatestVersion(scope, key, eager));"
|
|
213
223
|
]
|
|
214
224
|
)});`,
|
|
215
|
-
|
|
225
|
+
`${cst} loadVersion = /*#__PURE__*/ init(${runtimeTemplate.basicFunction(
|
|
216
226
|
"scopeName, scope, key, eager, requiredVersion, fallback",
|
|
217
227
|
[
|
|
218
228
|
"if (!exists(scope, key)) return useFallback(scopeName, key, fallback);",
|
|
219
|
-
|
|
229
|
+
`${cst} satisfyingVersion = findSatisfyingVersion(scope, key, requiredVersion, eager);`,
|
|
220
230
|
"if (satisfyingVersion) return get(satisfyingVersion);",
|
|
221
231
|
"warn(getInvalidVersionMessage(scope, scopeName, key, requiredVersion, eager))",
|
|
222
232
|
"return get(findLatestVersion(scope, key, eager));"
|
|
223
233
|
]
|
|
224
234
|
)});`,
|
|
225
|
-
|
|
235
|
+
`${cst} loadStrictVersion = /*#__PURE__*/ init(${runtimeTemplate.basicFunction(
|
|
226
236
|
"scopeName, scope, key, eager, requiredVersion, fallback",
|
|
227
237
|
[
|
|
228
238
|
"if (!exists(scope, key)) return useFallback(scopeName, key, fallback);",
|
|
229
|
-
|
|
239
|
+
`${cst} satisfyingVersion = findSatisfyingVersion(scope, key, requiredVersion, eager);`,
|
|
230
240
|
"if (satisfyingVersion) return get(satisfyingVersion);",
|
|
231
241
|
"if (fallback) return fallback();",
|
|
232
242
|
"fail(getInvalidVersionMessage(scope, scopeName, key, requiredVersion, eager));"
|
|
233
243
|
]
|
|
234
244
|
)});`,
|
|
235
|
-
|
|
245
|
+
`${cst} loadSingleton = /*#__PURE__*/ init(${runtimeTemplate.basicFunction(
|
|
236
246
|
"scopeName, scope, key, eager, fallback",
|
|
237
247
|
[
|
|
238
248
|
"if (!exists(scope, key)) return useFallback(scopeName, key, fallback);",
|
|
239
|
-
|
|
249
|
+
`${cst} version = findSingletonVersionKey(scope, key, eager);`,
|
|
240
250
|
"return get(scope[key][version]);"
|
|
241
251
|
]
|
|
242
252
|
)});`,
|
|
243
|
-
|
|
253
|
+
`${cst} loadSingletonVersion = /*#__PURE__*/ init(${runtimeTemplate.basicFunction(
|
|
244
254
|
"scopeName, scope, key, eager, requiredVersion, fallback",
|
|
245
255
|
[
|
|
246
256
|
"if (!exists(scope, key)) return useFallback(scopeName, key, fallback);",
|
|
247
|
-
|
|
257
|
+
`${cst} version = findSingletonVersionKey(scope, key, eager);`,
|
|
248
258
|
"if (!satisfy(requiredVersion, version)) {",
|
|
249
259
|
Template.indent([
|
|
250
260
|
"warn(getInvalidSingletonVersionMessage(scope, key, version, requiredVersion));"
|
|
@@ -253,11 +263,11 @@ class ConsumeSharedRuntimeModule extends RuntimeModule {
|
|
|
253
263
|
"return get(scope[key][version]);"
|
|
254
264
|
]
|
|
255
265
|
)});`,
|
|
256
|
-
|
|
266
|
+
`${cst} loadStrictSingletonVersion = /*#__PURE__*/ init(${runtimeTemplate.basicFunction(
|
|
257
267
|
"scopeName, scope, key, eager, requiredVersion, fallback",
|
|
258
268
|
[
|
|
259
269
|
"if (!exists(scope, key)) return useFallback(scopeName, key, fallback);",
|
|
260
|
-
|
|
270
|
+
`${cst} version = findSingletonVersionKey(scope, key, eager);`,
|
|
261
271
|
"if (!satisfy(requiredVersion, version)) {",
|
|
262
272
|
Template.indent([
|
|
263
273
|
"fail(getInvalidSingletonVersionMessage(scope, key, version, requiredVersion));"
|
|
@@ -266,8 +276,8 @@ class ConsumeSharedRuntimeModule extends RuntimeModule {
|
|
|
266
276
|
"return get(scope[key][version]);"
|
|
267
277
|
]
|
|
268
278
|
)});`,
|
|
269
|
-
|
|
270
|
-
|
|
279
|
+
`${cst} installedModules = {};`,
|
|
280
|
+
`${cst} moduleToHandlerMapping = {`,
|
|
271
281
|
Template.indent(
|
|
272
282
|
Array.from(
|
|
273
283
|
moduleIdToSourceMapping,
|
|
@@ -278,7 +288,7 @@ class ConsumeSharedRuntimeModule extends RuntimeModule {
|
|
|
278
288
|
|
|
279
289
|
initialConsumes.length > 0
|
|
280
290
|
? Template.asString([
|
|
281
|
-
|
|
291
|
+
`${cst} initialConsumes = ${JSON.stringify(initialConsumes)};`,
|
|
282
292
|
`initialConsumes.forEach(${runtimeTemplate.basicFunction("id", [
|
|
283
293
|
`${
|
|
284
294
|
RuntimeGlobals.moduleFactories
|
|
@@ -286,7 +296,7 @@ class ConsumeSharedRuntimeModule extends RuntimeModule {
|
|
|
286
296
|
"// Handle case when module is used sync",
|
|
287
297
|
"installedModules[id] = 0;",
|
|
288
298
|
`delete ${RuntimeGlobals.moduleCache}[id];`,
|
|
289
|
-
|
|
299
|
+
`${cst} factory = moduleToHandlerMapping[id]();`,
|
|
290
300
|
'if(typeof factory !== "function") throw new Error("Shared module is not available for eager consumption: " + id);',
|
|
291
301
|
"module.exports = factory();"
|
|
292
302
|
])}`
|
|
@@ -295,12 +305,12 @@ class ConsumeSharedRuntimeModule extends RuntimeModule {
|
|
|
295
305
|
: "// no consumes in initial chunks",
|
|
296
306
|
this._runtimeRequirements.has(RuntimeGlobals.ensureChunkHandlers)
|
|
297
307
|
? Template.asString([
|
|
298
|
-
|
|
308
|
+
`${cst} chunkMapping = ${JSON.stringify(
|
|
299
309
|
chunkToModuleMapping,
|
|
300
310
|
null,
|
|
301
311
|
"\t"
|
|
302
312
|
)};`,
|
|
303
|
-
|
|
313
|
+
`${cst} startedInstallModules = {};`,
|
|
304
314
|
`${
|
|
305
315
|
RuntimeGlobals.ensureChunkHandlers
|
|
306
316
|
}.consumes = ${runtimeTemplate.basicFunction("chunkId, promises", [
|
|
@@ -311,7 +321,7 @@ class ConsumeSharedRuntimeModule extends RuntimeModule {
|
|
|
311
321
|
[
|
|
312
322
|
`if(${RuntimeGlobals.hasOwnProperty}(installedModules, id)) return promises.push(installedModules[id]);`,
|
|
313
323
|
"if(!startedInstallModules[id]) {",
|
|
314
|
-
|
|
324
|
+
`${cst} onFactory = ${runtimeTemplate.basicFunction(
|
|
315
325
|
"factory",
|
|
316
326
|
[
|
|
317
327
|
"installedModules[id] = 0;",
|
|
@@ -324,7 +334,7 @@ class ConsumeSharedRuntimeModule extends RuntimeModule {
|
|
|
324
334
|
]
|
|
325
335
|
)};`,
|
|
326
336
|
"startedInstallModules[id] = true;",
|
|
327
|
-
|
|
337
|
+
`${cst} onError = ${runtimeTemplate.basicFunction("error", [
|
|
328
338
|
"delete installedModules[id];",
|
|
329
339
|
`${
|
|
330
340
|
RuntimeGlobals.moduleFactories
|
|
@@ -335,7 +345,7 @@ class ConsumeSharedRuntimeModule extends RuntimeModule {
|
|
|
335
345
|
])};`,
|
|
336
346
|
"try {",
|
|
337
347
|
Template.indent([
|
|
338
|
-
|
|
348
|
+
`${cst} promise = moduleToHandlerMapping[id]();`,
|
|
339
349
|
"if(promise.then) {",
|
|
340
350
|
Template.indent(
|
|
341
351
|
"promises.push(installedModules[id] = promise.then(onFactory)['catch'](onError));"
|
|
@@ -10,6 +10,7 @@ const makeSerializable = require("../util/makeSerializable");
|
|
|
10
10
|
|
|
11
11
|
class ProvideForSharedDependency extends ModuleDependency {
|
|
12
12
|
/**
|
|
13
|
+
* Creates an instance of ProvideForSharedDependency.
|
|
13
14
|
* @param {string} request request string
|
|
14
15
|
*/
|
|
15
16
|
constructor(request) {
|
|
@@ -8,11 +8,12 @@
|
|
|
8
8
|
const Dependency = require("../Dependency");
|
|
9
9
|
const makeSerializable = require("../util/makeSerializable");
|
|
10
10
|
|
|
11
|
-
/** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
|
|
12
|
-
/** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
|
|
11
|
+
/** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext<[string, string, string, string | false, boolean]>} ObjectDeserializerContext */
|
|
12
|
+
/** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext<[string, string, string, string | false, boolean]>} ObjectSerializerContext */
|
|
13
13
|
|
|
14
14
|
class ProvideSharedDependency extends Dependency {
|
|
15
15
|
/**
|
|
16
|
+
* Creates an instance of ProvideSharedDependency.
|
|
16
17
|
* @param {string} shareScope share scope
|
|
17
18
|
* @param {string} name module name
|
|
18
19
|
* @param {string | false} version version
|
|
@@ -21,10 +22,15 @@ class ProvideSharedDependency extends Dependency {
|
|
|
21
22
|
*/
|
|
22
23
|
constructor(shareScope, name, version, request, eager) {
|
|
23
24
|
super();
|
|
25
|
+
/** @type {string} */
|
|
24
26
|
this.shareScope = shareScope;
|
|
27
|
+
/** @type {string} */
|
|
25
28
|
this.name = name;
|
|
29
|
+
/** @type {string | false} */
|
|
26
30
|
this.version = version;
|
|
31
|
+
/** @type {string} */
|
|
27
32
|
this.request = request;
|
|
33
|
+
/** @type {boolean} */
|
|
28
34
|
this.eager = eager;
|
|
29
35
|
}
|
|
30
36
|
|
|
@@ -33,6 +39,7 @@ class ProvideSharedDependency extends Dependency {
|
|
|
33
39
|
}
|
|
34
40
|
|
|
35
41
|
/**
|
|
42
|
+
* Returns an identifier to merge equal requests.
|
|
36
43
|
* @returns {string | null} an identifier to merge equal requests
|
|
37
44
|
*/
|
|
38
45
|
getResourceIdentifier() {
|
|
@@ -42,32 +49,44 @@ class ProvideSharedDependency extends Dependency {
|
|
|
42
49
|
}
|
|
43
50
|
|
|
44
51
|
/**
|
|
52
|
+
* Serializes this instance into the provided serializer context.
|
|
45
53
|
* @param {ObjectSerializerContext} context context
|
|
46
54
|
*/
|
|
47
55
|
serialize(context) {
|
|
48
|
-
context
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
56
|
+
context
|
|
57
|
+
.write(this.shareScope)
|
|
58
|
+
.write(this.name)
|
|
59
|
+
.write(this.request)
|
|
60
|
+
.write(this.version)
|
|
61
|
+
.write(this.eager);
|
|
53
62
|
super.serialize(context);
|
|
54
63
|
}
|
|
55
64
|
|
|
56
65
|
/**
|
|
66
|
+
* Restores this instance from the provided deserializer context.
|
|
57
67
|
* @param {ObjectDeserializerContext} context context
|
|
58
68
|
* @returns {ProvideSharedDependency} deserialize fallback dependency
|
|
59
69
|
*/
|
|
60
70
|
static deserialize(context) {
|
|
61
|
-
|
|
71
|
+
// wire order is shareScope, name, request, version, eager;
|
|
72
|
+
// reorder into the constructor's (…, version, request, …) signature
|
|
73
|
+
const shareScope = context.read();
|
|
74
|
+
const c1 = context.rest;
|
|
75
|
+
const name = c1.read();
|
|
76
|
+
const c2 = c1.rest;
|
|
77
|
+
const request = c2.read();
|
|
78
|
+
const c3 = c2.rest;
|
|
79
|
+
const version = c3.read();
|
|
80
|
+
const c4 = c3.rest;
|
|
81
|
+
const eager = c4.read();
|
|
62
82
|
const obj = new ProvideSharedDependency(
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
83
|
+
shareScope,
|
|
84
|
+
name,
|
|
85
|
+
version,
|
|
86
|
+
request,
|
|
87
|
+
eager
|
|
68
88
|
);
|
|
69
|
-
|
|
70
|
-
obj.deserialize(context);
|
|
89
|
+
obj.deserialize(c4.rest);
|
|
71
90
|
return obj;
|
|
72
91
|
}
|
|
73
92
|
}
|
|
@@ -27,12 +27,13 @@ const ProvideForSharedDependency = require("./ProvideForSharedDependency");
|
|
|
27
27
|
/** @typedef {import("../Module").CodeGenerationResultData} CodeGenerationResultData */
|
|
28
28
|
/** @typedef {import("../RequestShortener")} RequestShortener */
|
|
29
29
|
/** @typedef {import("../ResolverFactory").ResolverWithOptions} ResolverWithOptions */
|
|
30
|
-
/** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
|
|
31
|
-
/** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
|
|
30
|
+
/** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext<[string, string, string | false, string, boolean]>} ObjectDeserializerContext */
|
|
31
|
+
/** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext<[string, string, string | false, string, boolean]>} ObjectSerializerContext */
|
|
32
32
|
/** @typedef {import("../util/fs").InputFileSystem} InputFileSystem */
|
|
33
33
|
|
|
34
34
|
class ProvideSharedModule extends Module {
|
|
35
35
|
/**
|
|
36
|
+
* Creates an instance of ProvideSharedModule.
|
|
36
37
|
* @param {string} shareScope shared scope name
|
|
37
38
|
* @param {string} name shared key
|
|
38
39
|
* @param {string | false} version version
|
|
@@ -41,21 +42,28 @@ class ProvideSharedModule extends Module {
|
|
|
41
42
|
*/
|
|
42
43
|
constructor(shareScope, name, version, request, eager) {
|
|
43
44
|
super(WEBPACK_MODULE_TYPE_PROVIDE);
|
|
45
|
+
/** @type {string} */
|
|
44
46
|
this._shareScope = shareScope;
|
|
47
|
+
/** @type {string} */
|
|
45
48
|
this._name = name;
|
|
49
|
+
/** @type {string | false} */
|
|
46
50
|
this._version = version;
|
|
51
|
+
/** @type {string} */
|
|
47
52
|
this._request = request;
|
|
53
|
+
/** @type {boolean} */
|
|
48
54
|
this._eager = eager;
|
|
49
55
|
}
|
|
50
56
|
|
|
51
57
|
/**
|
|
58
|
+
* Returns the unique identifier used to reference this module.
|
|
52
59
|
* @returns {string} a unique identifier of the module
|
|
53
60
|
*/
|
|
54
61
|
identifier() {
|
|
55
|
-
return `provide module (${this._shareScope}) ${this._name}@${this._version}
|
|
62
|
+
return `provide module (${this._shareScope}) ${this._name}@${this._version}|${this._request}`;
|
|
56
63
|
}
|
|
57
64
|
|
|
58
65
|
/**
|
|
66
|
+
* Returns a human-readable identifier for this module.
|
|
59
67
|
* @param {RequestShortener} requestShortener the request shortener
|
|
60
68
|
* @returns {string} a user readable identifier of the module
|
|
61
69
|
*/
|
|
@@ -66,6 +74,7 @@ class ProvideSharedModule extends Module {
|
|
|
66
74
|
}
|
|
67
75
|
|
|
68
76
|
/**
|
|
77
|
+
* Gets the library identifier.
|
|
69
78
|
* @param {LibIdentOptions} options options
|
|
70
79
|
* @returns {LibIdent | null} an identifier for library inclusion
|
|
71
80
|
*/
|
|
@@ -76,6 +85,7 @@ class ProvideSharedModule extends Module {
|
|
|
76
85
|
}
|
|
77
86
|
|
|
78
87
|
/**
|
|
88
|
+
* Checks whether the module needs to be rebuilt for the current build state.
|
|
79
89
|
* @param {NeedBuildContext} context context info
|
|
80
90
|
* @param {NeedBuildCallback} callback callback function, returns true, if the module needs a rebuild
|
|
81
91
|
* @returns {void}
|
|
@@ -85,6 +95,7 @@ class ProvideSharedModule extends Module {
|
|
|
85
95
|
}
|
|
86
96
|
|
|
87
97
|
/**
|
|
98
|
+
* Builds the module using the provided compilation context.
|
|
88
99
|
* @param {WebpackOptions} options webpack options
|
|
89
100
|
* @param {Compilation} compilation the compilation
|
|
90
101
|
* @param {ResolverWithOptions} resolver the resolver
|
|
@@ -112,6 +123,7 @@ class ProvideSharedModule extends Module {
|
|
|
112
123
|
}
|
|
113
124
|
|
|
114
125
|
/**
|
|
126
|
+
* Returns the estimated size for the requested source type.
|
|
115
127
|
* @param {string=} type the source type for which the size should be estimated
|
|
116
128
|
* @returns {number} the estimated size of the module (must be non-zero)
|
|
117
129
|
*/
|
|
@@ -120,6 +132,7 @@ class ProvideSharedModule extends Module {
|
|
|
120
132
|
}
|
|
121
133
|
|
|
122
134
|
/**
|
|
135
|
+
* Returns the source types this module can generate.
|
|
123
136
|
* @returns {SourceTypes} types available (do not mutate)
|
|
124
137
|
*/
|
|
125
138
|
getSourceTypes() {
|
|
@@ -127,6 +140,7 @@ class ProvideSharedModule extends Module {
|
|
|
127
140
|
}
|
|
128
141
|
|
|
129
142
|
/**
|
|
143
|
+
* Generates code and runtime requirements for this module.
|
|
130
144
|
* @param {CodeGenerationContext} context context for code generation
|
|
131
145
|
* @returns {CodeGenerationResult} result
|
|
132
146
|
*/
|
|
@@ -164,26 +178,42 @@ class ProvideSharedModule extends Module {
|
|
|
164
178
|
}
|
|
165
179
|
|
|
166
180
|
/**
|
|
181
|
+
* Serializes this instance into the provided serializer context.
|
|
167
182
|
* @param {ObjectSerializerContext} context context
|
|
168
183
|
*/
|
|
169
184
|
serialize(context) {
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
185
|
+
context
|
|
186
|
+
.write(this._shareScope)
|
|
187
|
+
.write(this._name)
|
|
188
|
+
.write(this._version)
|
|
189
|
+
.write(this._request)
|
|
190
|
+
.write(this._eager);
|
|
176
191
|
super.serialize(context);
|
|
177
192
|
}
|
|
178
193
|
|
|
179
194
|
/**
|
|
195
|
+
* Restores this instance from the provided deserializer context.
|
|
180
196
|
* @param {ObjectDeserializerContext} context context
|
|
181
197
|
* @returns {ProvideSharedModule} deserialize fallback dependency
|
|
182
198
|
*/
|
|
183
199
|
static deserialize(context) {
|
|
184
|
-
const
|
|
185
|
-
const
|
|
186
|
-
|
|
200
|
+
const shareScope = context.read();
|
|
201
|
+
const c1 = context.rest;
|
|
202
|
+
const name = c1.read();
|
|
203
|
+
const c2 = c1.rest;
|
|
204
|
+
const version = c2.read();
|
|
205
|
+
const c3 = c2.rest;
|
|
206
|
+
const request = c3.read();
|
|
207
|
+
const c4 = c3.rest;
|
|
208
|
+
const eager = c4.read();
|
|
209
|
+
const obj = new ProvideSharedModule(
|
|
210
|
+
shareScope,
|
|
211
|
+
name,
|
|
212
|
+
version,
|
|
213
|
+
request,
|
|
214
|
+
eager
|
|
215
|
+
);
|
|
216
|
+
obj.deserialize(c4.rest);
|
|
187
217
|
return obj;
|
|
188
218
|
}
|
|
189
219
|
}
|
|
@@ -14,6 +14,7 @@ const ProvideSharedModule = require("./ProvideSharedModule");
|
|
|
14
14
|
|
|
15
15
|
class ProvideSharedModuleFactory extends ModuleFactory {
|
|
16
16
|
/**
|
|
17
|
+
* Processes the provided data.
|
|
17
18
|
* @param {ModuleFactoryCreateData} data data object
|
|
18
19
|
* @param {ModuleFactoryCallback} callback callback
|
|
19
20
|
* @returns {void}
|
|
@@ -5,8 +5,9 @@
|
|
|
5
5
|
|
|
6
6
|
"use strict";
|
|
7
7
|
|
|
8
|
-
const WebpackError = require("../WebpackError");
|
|
9
8
|
const { parseOptions } = require("../container/options");
|
|
9
|
+
const WebpackError = require("../errors/WebpackError");
|
|
10
|
+
const { ABSOLUTE_PATH_REGEXP } = require("../util/identifier");
|
|
10
11
|
const ProvideForSharedDependency = require("./ProvideForSharedDependency");
|
|
11
12
|
const ProvideSharedDependency = require("./ProvideSharedDependency");
|
|
12
13
|
const ProvideSharedModuleFactory = require("./ProvideSharedModuleFactory");
|
|
@@ -17,6 +18,7 @@ const ProvideSharedModuleFactory = require("./ProvideSharedModuleFactory");
|
|
|
17
18
|
/** @typedef {import("../NormalModuleFactory").NormalModuleCreateData} NormalModuleCreateData */
|
|
18
19
|
|
|
19
20
|
/**
|
|
21
|
+
* Defines the provide options type used by this module.
|
|
20
22
|
* @typedef {object} ProvideOptions
|
|
21
23
|
* @property {string} shareKey
|
|
22
24
|
* @property {string} shareScope
|
|
@@ -30,14 +32,16 @@ const PLUGIN_NAME = "ProvideSharedPlugin";
|
|
|
30
32
|
|
|
31
33
|
class ProvideSharedPlugin {
|
|
32
34
|
/**
|
|
35
|
+
* Creates an instance of ProvideSharedPlugin.
|
|
33
36
|
* @param {ProvideSharedPluginOptions} options options
|
|
34
37
|
*/
|
|
35
38
|
constructor(options) {
|
|
39
|
+
/** @type {ProvideSharedPluginOptions} */
|
|
36
40
|
this.options = options;
|
|
37
41
|
}
|
|
38
42
|
|
|
39
43
|
/**
|
|
40
|
-
*
|
|
44
|
+
* Applies the plugin by registering its hooks on the compiler.
|
|
41
45
|
* @param {Compiler} compiler the compiler instance
|
|
42
46
|
* @returns {void}
|
|
43
47
|
*/
|
|
@@ -98,13 +102,13 @@ class ProvideSharedPlugin {
|
|
|
98
102
|
/** @type {Map<string, ProvideOptions>} */
|
|
99
103
|
const prefixMatchProvides = new Map();
|
|
100
104
|
for (const [request, config] of provides) {
|
|
101
|
-
if (
|
|
105
|
+
if (/^\.\.?(?:\/|$)/.test(request)) {
|
|
102
106
|
// relative request
|
|
103
107
|
resolvedProvideMap.set(request, {
|
|
104
108
|
config,
|
|
105
109
|
version: config.version
|
|
106
110
|
});
|
|
107
|
-
} else if (
|
|
111
|
+
} else if (ABSOLUTE_PATH_REGEXP.test(request)) {
|
|
108
112
|
// absolute path
|
|
109
113
|
resolvedProvideMap.set(request, {
|
|
110
114
|
config,
|
|
@@ -120,6 +124,7 @@ class ProvideSharedPlugin {
|
|
|
120
124
|
}
|
|
121
125
|
compilationData.set(compilation, resolvedProvideMap);
|
|
122
126
|
/**
|
|
127
|
+
* Provide shared module.
|
|
123
128
|
* @param {string} key key
|
|
124
129
|
* @param {ProvideOptions} config config
|
|
125
130
|
* @param {NormalModuleCreateData["resource"]} resource resource
|
|
@@ -166,7 +171,7 @@ class ProvideSharedPlugin {
|
|
|
166
171
|
normalModuleFactory.hooks.module.tap(
|
|
167
172
|
PLUGIN_NAME,
|
|
168
173
|
(module, { resource, resourceResolveData }, resolveData) => {
|
|
169
|
-
if (resolvedProvideMap.has(
|
|
174
|
+
if (resolvedProvideMap.has(resource)) {
|
|
170
175
|
return module;
|
|
171
176
|
}
|
|
172
177
|
const { request } = resolveData;
|
|
@@ -176,7 +181,7 @@ class ProvideSharedPlugin {
|
|
|
176
181
|
provideSharedModule(
|
|
177
182
|
request,
|
|
178
183
|
config,
|
|
179
|
-
|
|
184
|
+
resource,
|
|
180
185
|
resourceResolveData
|
|
181
186
|
);
|
|
182
187
|
resolveData.cacheable = false;
|
|
@@ -186,12 +191,12 @@ class ProvideSharedPlugin {
|
|
|
186
191
|
if (request.startsWith(prefix)) {
|
|
187
192
|
const remainder = request.slice(prefix.length);
|
|
188
193
|
provideSharedModule(
|
|
189
|
-
|
|
194
|
+
resource,
|
|
190
195
|
{
|
|
191
196
|
...config,
|
|
192
197
|
shareKey: config.shareKey + remainder
|
|
193
198
|
},
|
|
194
|
-
|
|
199
|
+
resource,
|
|
195
200
|
resourceResolveData
|
|
196
201
|
);
|
|
197
202
|
resolveData.cacheable = false;
|