@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
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
/*
|
|
2
|
+
MIT License http://www.opensource.org/licenses/mit-license.php
|
|
3
|
+
Author Alexander Akait @alexander-akait
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
"use strict";
|
|
7
|
+
|
|
8
|
+
const { parse } = require("acorn");
|
|
9
|
+
const Parser = require("../Parser");
|
|
10
|
+
const HtmlSourceDependency = require("../dependencies/HtmlSourceDependency");
|
|
11
|
+
|
|
12
|
+
/** @typedef {import("estree").Expression} Expression */
|
|
13
|
+
/** @typedef {import("estree").ObjectExpression} ObjectExpression */
|
|
14
|
+
/** @typedef {import("estree").Program} Program */
|
|
15
|
+
/** @typedef {import("estree").Property} Property */
|
|
16
|
+
/** @typedef {import("../Module").BuildInfo} BuildInfo */
|
|
17
|
+
/** @typedef {import("../Parser").ParserState} ParserState */
|
|
18
|
+
/** @typedef {import("../Parser").PreparsedAst} PreparsedAst */
|
|
19
|
+
|
|
20
|
+
// acorn decorates every node with numeric source offsets (absent from the estree types).
|
|
21
|
+
/** @typedef {{ start: number, end: number }} Positioned */
|
|
22
|
+
|
|
23
|
+
// A URL carrying its own scheme (`https:`, `data:`, …) is external; it is only
|
|
24
|
+
// bundled when `experiments.buildHttp` is enabled (like an absolute URL in HTML).
|
|
25
|
+
const ABSOLUTE_URL_SCHEME_REGEXP = /^[a-zA-Z][a-zA-Z\d+\-.]*:/;
|
|
26
|
+
// Manifest members whose array items carry an asset `src` (`icons[].src`,
|
|
27
|
+
// `screenshots[].src`, and `shortcuts[].icons[].src` — the last nests under `icons`).
|
|
28
|
+
const ICON_CONTAINER_KEYS = new Set(["icons", "screenshots"]);
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* Parses a Web App Manifest (`.webmanifest`) so its icon/screenshot `src`
|
|
32
|
+
* URLs are bundled as assets. Reuses acorn (JSON is a valid JS expression
|
|
33
|
+
* literal) to recover the exact source offsets, then emits an
|
|
34
|
+
* `HtmlSourceDependency` per URL so the generator can rewrite it in place.
|
|
35
|
+
*/
|
|
36
|
+
class WebManifestParser extends Parser {
|
|
37
|
+
/**
|
|
38
|
+
* Parses the provided source and updates the parser state.
|
|
39
|
+
* @param {string | Buffer | PreparsedAst} source the source to parse
|
|
40
|
+
* @param {ParserState} state the parser state
|
|
41
|
+
* @returns {ParserState} the parser state
|
|
42
|
+
*/
|
|
43
|
+
parse(source, state) {
|
|
44
|
+
if (Buffer.isBuffer(source)) {
|
|
45
|
+
source = source.toString("utf8");
|
|
46
|
+
} else if (typeof source === "object") {
|
|
47
|
+
throw new Error("webpackAst is unexpected for the WebManifestParser");
|
|
48
|
+
}
|
|
49
|
+
if (source[0] === "") {
|
|
50
|
+
source = source.slice(1);
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
const module = state.module;
|
|
54
|
+
// Without `buildHttp` there is no handler to fetch remote icons, so an
|
|
55
|
+
// absolute URL is left as-is rather than rewritten to an ignored asset.
|
|
56
|
+
const buildHttp = Boolean(state.options.experiments.buildHttp);
|
|
57
|
+
|
|
58
|
+
/** @type {Program | undefined} */
|
|
59
|
+
let ast;
|
|
60
|
+
try {
|
|
61
|
+
// Wrap in parens so the top-level object is an expression, not a block.
|
|
62
|
+
ast = /** @type {Program} */ (
|
|
63
|
+
/** @type {unknown} */ (parse(`(${source})`, { ecmaVersion: "latest" }))
|
|
64
|
+
);
|
|
65
|
+
} catch (_err) {
|
|
66
|
+
// Not valid JSON — leave the file untouched (still emitted as-is).
|
|
67
|
+
ast = undefined;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
const statement = ast && ast.body[0];
|
|
71
|
+
if (
|
|
72
|
+
statement &&
|
|
73
|
+
statement.type === "ExpressionStatement" &&
|
|
74
|
+
statement.expression.type === "ObjectExpression"
|
|
75
|
+
) {
|
|
76
|
+
/**
|
|
77
|
+
* @param {ObjectExpression} obj object expression node
|
|
78
|
+
* @param {string | undefined} parentKey key of the array/object this node sits in
|
|
79
|
+
*/
|
|
80
|
+
const walk = (obj, parentKey) => {
|
|
81
|
+
for (const prop of obj.properties) {
|
|
82
|
+
if (prop.type !== "Property") continue;
|
|
83
|
+
const key =
|
|
84
|
+
prop.key.type === "Literal" && typeof prop.key.value === "string"
|
|
85
|
+
? prop.key.value
|
|
86
|
+
: prop.key.type === "Identifier"
|
|
87
|
+
? prop.key.name
|
|
88
|
+
: undefined;
|
|
89
|
+
const value = /** @type {Expression} */ (prop.value);
|
|
90
|
+
if (value.type === "ObjectExpression") {
|
|
91
|
+
walk(value, key);
|
|
92
|
+
} else if (value.type === "ArrayExpression") {
|
|
93
|
+
for (const element of value.elements) {
|
|
94
|
+
if (element && element.type === "ObjectExpression") {
|
|
95
|
+
walk(element, key);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
} else if (
|
|
99
|
+
key === "src" &&
|
|
100
|
+
value.type === "Literal" &&
|
|
101
|
+
typeof value.value === "string" &&
|
|
102
|
+
parentKey !== undefined &&
|
|
103
|
+
ICON_CONTAINER_KEYS.has(parentKey)
|
|
104
|
+
) {
|
|
105
|
+
const url = value.value;
|
|
106
|
+
// Fragment-only refs aren't assets; absolute URLs need `buildHttp`.
|
|
107
|
+
if (!url || url.startsWith("#")) continue;
|
|
108
|
+
if (!buildHttp && ABSOLUTE_URL_SCHEME_REGEXP.test(url)) continue;
|
|
109
|
+
// acorn offsets are into `(${source})`; the leading `(` and the
|
|
110
|
+
// opening quote cancel, so the inner span is [start, end - 2].
|
|
111
|
+
const { start, end } = /** @type {Positioned} */ (
|
|
112
|
+
/** @type {unknown} */ (value)
|
|
113
|
+
);
|
|
114
|
+
const dep = new HtmlSourceDependency(url, [start, end - 2]);
|
|
115
|
+
module.addDependency(dep);
|
|
116
|
+
module.addCodeGenerationDependency(dep);
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
};
|
|
120
|
+
walk(statement.expression, undefined);
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
/** @type {BuildInfo} */
|
|
124
|
+
(state.module.buildInfo).strict = true;
|
|
125
|
+
|
|
126
|
+
return state;
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
module.exports = WebManifestParser;
|
|
@@ -13,6 +13,7 @@ const HarmonyImportDependency = require("../dependencies/HarmonyImportDependency
|
|
|
13
13
|
/** @typedef {Set<Module>} Modules */
|
|
14
14
|
|
|
15
15
|
/**
|
|
16
|
+
* Gets outgoing async modules.
|
|
16
17
|
* @param {ModuleGraph} moduleGraph module graph
|
|
17
18
|
* @param {Module} module module
|
|
18
19
|
* @returns {Modules} set of modules
|
|
@@ -15,13 +15,16 @@ const Template = require("../Template");
|
|
|
15
15
|
/** @typedef {Map<string, string>} Dependencies */
|
|
16
16
|
|
|
17
17
|
/**
|
|
18
|
+
* Represents AwaitDependenciesInitFragment.
|
|
18
19
|
* @extends {InitFragment<GenerateContext>}
|
|
19
20
|
*/
|
|
20
21
|
class AwaitDependenciesInitFragment extends InitFragment {
|
|
21
22
|
/**
|
|
23
|
+
* Creates an instance of AwaitDependenciesInitFragment.
|
|
22
24
|
* @param {Dependencies} dependencies maps an import var to an async module that needs to be awaited
|
|
25
|
+
* @param {boolean=} generatorLowered module is emitted as a generator, so use `yield` instead of `await`
|
|
23
26
|
*/
|
|
24
|
-
constructor(dependencies) {
|
|
27
|
+
constructor(dependencies, generatorLowered = false) {
|
|
25
28
|
super(
|
|
26
29
|
undefined,
|
|
27
30
|
InitFragment.STAGE_ASYNC_DEPENDENCIES,
|
|
@@ -30,9 +33,12 @@ class AwaitDependenciesInitFragment extends InitFragment {
|
|
|
30
33
|
);
|
|
31
34
|
/** @type {Dependencies} */
|
|
32
35
|
this.dependencies = dependencies;
|
|
36
|
+
/** @type {boolean} */
|
|
37
|
+
this.generatorLowered = generatorLowered;
|
|
33
38
|
}
|
|
34
39
|
|
|
35
40
|
/**
|
|
41
|
+
* Merges another await-dependencies fragment into this fragment.
|
|
36
42
|
* @param {AwaitDependenciesInitFragment} other other AwaitDependenciesInitFragment
|
|
37
43
|
* @returns {AwaitDependenciesInitFragment} AwaitDependenciesInitFragment
|
|
38
44
|
*/
|
|
@@ -41,10 +47,14 @@ class AwaitDependenciesInitFragment extends InitFragment {
|
|
|
41
47
|
for (const [key, value] of this.dependencies) {
|
|
42
48
|
dependencies.set(key, value);
|
|
43
49
|
}
|
|
44
|
-
return new AwaitDependenciesInitFragment(
|
|
50
|
+
return new AwaitDependenciesInitFragment(
|
|
51
|
+
dependencies,
|
|
52
|
+
this.generatorLowered || other.generatorLowered
|
|
53
|
+
);
|
|
45
54
|
}
|
|
46
55
|
|
|
47
56
|
/**
|
|
57
|
+
* Returns the source code that will be included as initialization code.
|
|
48
58
|
* @param {GenerateContext} context context
|
|
49
59
|
* @returns {string | Source | undefined} the source code that will be included as initialization code
|
|
50
60
|
*/
|
|
@@ -57,6 +67,10 @@ class AwaitDependenciesInitFragment extends InitFragment {
|
|
|
57
67
|
const importVars = [...this.dependencies.keys()];
|
|
58
68
|
const asyncModuleValues = [...this.dependencies.values()].join(", ");
|
|
59
69
|
|
|
70
|
+
// In a generator-lowered module (no `async`/`await`, but generators) the
|
|
71
|
+
// dependency `await` becomes `yield`; the body stays a single scope.
|
|
72
|
+
const suspend = this.generatorLowered ? "yield" : "await";
|
|
73
|
+
|
|
60
74
|
const templateInput = [
|
|
61
75
|
`var __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([${asyncModuleValues}]);`
|
|
62
76
|
];
|
|
@@ -66,7 +80,7 @@ class AwaitDependenciesInitFragment extends InitFragment {
|
|
|
66
80
|
!runtimeTemplate.supportsDestructuring()
|
|
67
81
|
) {
|
|
68
82
|
templateInput.push(
|
|
69
|
-
|
|
83
|
+
`var __webpack_async_dependencies_result__ = (__webpack_async_dependencies__.then ? (${suspend} __webpack_async_dependencies__)() : __webpack_async_dependencies__);`
|
|
70
84
|
);
|
|
71
85
|
for (const [index, importVar] of importVars.entries()) {
|
|
72
86
|
templateInput.push(
|
|
@@ -77,7 +91,7 @@ class AwaitDependenciesInitFragment extends InitFragment {
|
|
|
77
91
|
const importVarsStr = importVars.join(", ");
|
|
78
92
|
|
|
79
93
|
templateInput.push(
|
|
80
|
-
`([${importVarsStr}] = __webpack_async_dependencies__.then ? (
|
|
94
|
+
`([${importVarsStr}] = __webpack_async_dependencies__.then ? (${suspend} __webpack_async_dependencies__)() : __webpack_async_dependencies__);`
|
|
81
95
|
);
|
|
82
96
|
}
|
|
83
97
|
|
|
@@ -14,7 +14,7 @@ const PLUGIN_NAME = "InferAsyncModulesPlugin";
|
|
|
14
14
|
|
|
15
15
|
class InferAsyncModulesPlugin {
|
|
16
16
|
/**
|
|
17
|
-
*
|
|
17
|
+
* Applies the plugin by registering its hooks on the compiler.
|
|
18
18
|
* @param {Compiler} compiler the compiler instance
|
|
19
19
|
* @returns {void}
|
|
20
20
|
*/
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/*
|
|
2
|
+
MIT License http://www.opensource.org/licenses/mit-license.php
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
"use strict";
|
|
6
|
+
|
|
7
|
+
/** @typedef {import("../Module")} Module */
|
|
8
|
+
/** @typedef {import("../ModuleGraph")} ModuleGraph */
|
|
9
|
+
/** @typedef {import("../RuntimeTemplate")} RuntimeTemplate */
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Whether an async module is lowered to a generator: the target has no
|
|
13
|
+
* `async`/`await` but supports generators, and the module contains no
|
|
14
|
+
* top-level `for await…of` (which generators can't express).
|
|
15
|
+
* @param {Module} module module
|
|
16
|
+
* @param {ModuleGraph} moduleGraph module graph
|
|
17
|
+
* @param {RuntimeTemplate} runtimeTemplate runtime template
|
|
18
|
+
* @returns {boolean} true when the module should be emitted as a generator
|
|
19
|
+
*/
|
|
20
|
+
const isGeneratorLowered = (module, moduleGraph, runtimeTemplate) =>
|
|
21
|
+
moduleGraph.isAsync(module) &&
|
|
22
|
+
!runtimeTemplate.supportsAsyncFunction() &&
|
|
23
|
+
Boolean(runtimeTemplate.supportsGenerator()) &&
|
|
24
|
+
!(module.buildInfo && module.buildInfo.usesTopLevelAwaitForOf);
|
|
25
|
+
|
|
26
|
+
module.exports = isGeneratorLowered;
|
package/lib/buildChunkGraph.js
CHANGED
|
@@ -5,9 +5,8 @@
|
|
|
5
5
|
|
|
6
6
|
"use strict";
|
|
7
7
|
|
|
8
|
-
const AsyncDependencyToInitialChunkError = require("./AsyncDependencyToInitialChunkError");
|
|
9
|
-
const { connectChunkGroupParentAndChild } = require("./GraphHelpers");
|
|
10
8
|
const ModuleGraphConnection = require("./ModuleGraphConnection");
|
|
9
|
+
const AsyncDependencyToInitialChunkError = require("./errors/AsyncDependencyToInitialChunkError");
|
|
11
10
|
const { getEntryRuntime, mergeRuntime } = require("./util/runtime");
|
|
12
11
|
|
|
13
12
|
/** @typedef {import("./AsyncDependenciesBlock")} AsyncDependenciesBlock */
|
|
@@ -17,6 +16,7 @@ const { getEntryRuntime, mergeRuntime } = require("./util/runtime");
|
|
|
17
16
|
/** @typedef {import("./DependenciesBlock")} DependenciesBlock */
|
|
18
17
|
/** @typedef {import("./Dependency").DependencyLocation} DependencyLocation */
|
|
19
18
|
/** @typedef {import("./Entrypoint")} Entrypoint */
|
|
19
|
+
/** @typedef {import("./Entrypoint").EntryOptions} EntryOptions */
|
|
20
20
|
/** @typedef {import("./Module")} Module */
|
|
21
21
|
/** @typedef {import("./ModuleGraph")} ModuleGraph */
|
|
22
22
|
/** @typedef {import("./ModuleGraphConnection").ConnectionState} ConnectionState */
|
|
@@ -24,6 +24,7 @@ const { getEntryRuntime, mergeRuntime } = require("./util/runtime");
|
|
|
24
24
|
/** @typedef {import("./util/runtime").RuntimeSpec} RuntimeSpec */
|
|
25
25
|
|
|
26
26
|
/**
|
|
27
|
+
* Defines the queue item type used by this module.
|
|
27
28
|
* @typedef {object} QueueItem
|
|
28
29
|
* @property {number} action
|
|
29
30
|
* @property {DependenciesBlock} block
|
|
@@ -34,6 +35,7 @@ const { getEntryRuntime, mergeRuntime } = require("./util/runtime");
|
|
|
34
35
|
*/
|
|
35
36
|
|
|
36
37
|
/**
|
|
38
|
+
* Defines the chunk group info type used by this module.
|
|
37
39
|
* @typedef {object} ChunkGroupInfo
|
|
38
40
|
* @property {ChunkGroup} chunkGroup the chunk group
|
|
39
41
|
* @property {RuntimeSpec} runtime the runtimes
|
|
@@ -55,6 +57,7 @@ const { getEntryRuntime, mergeRuntime } = require("./util/runtime");
|
|
|
55
57
|
*/
|
|
56
58
|
|
|
57
59
|
/**
|
|
60
|
+
* Defines the block chunk group connection type used by this module.
|
|
58
61
|
* @typedef {object} BlockChunkGroupConnection
|
|
59
62
|
* @property {ChunkGroupInfo} originChunkGroupInfo origin chunk group
|
|
60
63
|
* @property {ChunkGroup} chunkGroup referenced chunk group
|
|
@@ -74,6 +77,7 @@ const ZERO_BIGINT = BigInt(0);
|
|
|
74
77
|
const ONE_BIGINT = BigInt(1);
|
|
75
78
|
|
|
76
79
|
/**
|
|
80
|
+
* Checks whether this object is ordinal set in mask.
|
|
77
81
|
* @param {bigint} mask The mask to test
|
|
78
82
|
* @param {number} ordinal The ordinal of the bit to test
|
|
79
83
|
* @returns {boolean} If the ordinal-th bit is set in the mask
|
|
@@ -82,6 +86,7 @@ const isOrdinalSetInMask = (mask, ordinal) =>
|
|
|
82
86
|
BigInt.asUintN(1, mask >> BigInt(ordinal)) !== ZERO_BIGINT;
|
|
83
87
|
|
|
84
88
|
/**
|
|
89
|
+
* Gets active state of connections.
|
|
85
90
|
* @param {ModuleGraphConnection[]} connections list of connections
|
|
86
91
|
* @param {RuntimeSpec} runtime for which runtime
|
|
87
92
|
* @returns {ConnectionState} connection state
|
|
@@ -101,6 +106,7 @@ const getActiveStateOfConnections = (connections, runtime) => {
|
|
|
101
106
|
};
|
|
102
107
|
|
|
103
108
|
/**
|
|
109
|
+
* Extract block modules.
|
|
104
110
|
* @param {Module} module module
|
|
105
111
|
* @param {ModuleGraph} moduleGraph module graph
|
|
106
112
|
* @param {RuntimeSpec} runtime runtime
|
|
@@ -237,6 +243,45 @@ const extractBlockModules = (module, moduleGraph, runtime, blockModulesMap) => {
|
|
|
237
243
|
};
|
|
238
244
|
|
|
239
245
|
/**
|
|
246
|
+
* Derives block modules for another runtime from an already extracted result.
|
|
247
|
+
* Only the merged active state of each connection group can differ per
|
|
248
|
+
* runtime; modules and connection groups are reused. When all states turn
|
|
249
|
+
* out equal, the tuple array is shared instead of copied.
|
|
250
|
+
* @param {Module} module the root module
|
|
251
|
+
* @param {BlockModulesMap} source map containing the extracted result for all blocks of the module
|
|
252
|
+
* @param {RuntimeSpec} runtime runtime to derive for
|
|
253
|
+
* @param {BlockModulesMap} blockModulesMap block modules map to fill
|
|
254
|
+
*/
|
|
255
|
+
const deriveBlockModules = (module, source, runtime, blockModulesMap) => {
|
|
256
|
+
/** @type {DependenciesBlock[]} */
|
|
257
|
+
const queue = [module];
|
|
258
|
+
while (queue.length > 0) {
|
|
259
|
+
const block = /** @type {DependenciesBlock} */ (queue.pop());
|
|
260
|
+
const sourceModules =
|
|
261
|
+
/** @type {BlockModulesInFlattenTuples} */
|
|
262
|
+
(source.get(block));
|
|
263
|
+
let target = sourceModules;
|
|
264
|
+
for (let i = 0, len = sourceModules.length; i < len; i += 3) {
|
|
265
|
+
const state = getActiveStateOfConnections(
|
|
266
|
+
/** @type {ModuleGraphConnection[]} */ (sourceModules[i + 2]),
|
|
267
|
+
runtime
|
|
268
|
+
);
|
|
269
|
+
if (target === sourceModules) {
|
|
270
|
+
if (state === sourceModules[i + 1]) continue;
|
|
271
|
+
// states diverged, copy (states before i are identical)
|
|
272
|
+
target = [...sourceModules];
|
|
273
|
+
}
|
|
274
|
+
target[i + 1] = state;
|
|
275
|
+
}
|
|
276
|
+
blockModulesMap.set(block, target);
|
|
277
|
+
for (const b of block.blocks) {
|
|
278
|
+
queue.push(b);
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
};
|
|
282
|
+
|
|
283
|
+
/**
|
|
284
|
+
* Processes the provided logger.
|
|
240
285
|
* @param {Logger} logger a logger
|
|
241
286
|
* @param {Compilation} compilation the compilation
|
|
242
287
|
* @param {InputEntrypointsAndModules} inputEntrypointsAndModules chunk groups which are processed with the modules
|
|
@@ -261,13 +306,16 @@ const visitModules = (
|
|
|
261
306
|
/** @type {Map<RuntimeSpec, BlockModulesMap>} */
|
|
262
307
|
const blockModulesRuntimeMap = new Map();
|
|
263
308
|
|
|
264
|
-
|
|
265
|
-
|
|
309
|
+
// map containing the first extraction per root module,
|
|
310
|
+
// other runtimes derive their result from it
|
|
311
|
+
/** @type {Map<Module, BlockModulesMap>} */
|
|
312
|
+
const firstBlockModulesMapByModule = new Map();
|
|
266
313
|
|
|
267
314
|
/** @type {Map<Module, number>} */
|
|
268
315
|
const ordinalByModule = new Map();
|
|
269
316
|
|
|
270
317
|
/**
|
|
318
|
+
* Gets module ordinal.
|
|
271
319
|
* @param {Module} module The module to look up
|
|
272
320
|
* @returns {number} The ordinal of the module in masks
|
|
273
321
|
*/
|
|
@@ -289,12 +337,13 @@ const visitModules = (
|
|
|
289
337
|
}
|
|
290
338
|
|
|
291
339
|
/**
|
|
340
|
+
* Gets block modules.
|
|
292
341
|
* @param {DependenciesBlock} block block
|
|
293
342
|
* @param {RuntimeSpec} runtime runtime
|
|
294
343
|
* @returns {BlockModulesInFlattenTuples | undefined} block modules in flatten tuples
|
|
295
344
|
*/
|
|
296
345
|
const getBlockModules = (block, runtime) => {
|
|
297
|
-
blockModulesMap = blockModulesRuntimeMap.get(runtime);
|
|
346
|
+
let blockModulesMap = blockModulesRuntimeMap.get(runtime);
|
|
298
347
|
if (blockModulesMap === undefined) {
|
|
299
348
|
/** @type {BlockModulesMap} */
|
|
300
349
|
blockModulesMap = new Map();
|
|
@@ -312,18 +361,33 @@ const visitModules = (
|
|
|
312
361
|
() => {
|
|
313
362
|
logger.time("visitModules: prepare");
|
|
314
363
|
const map = new Map();
|
|
315
|
-
|
|
364
|
+
const source = firstBlockModulesMapByModule.get(module);
|
|
365
|
+
if (source !== undefined) {
|
|
366
|
+
deriveBlockModules(module, source, runtime, map);
|
|
367
|
+
} else {
|
|
368
|
+
extractBlockModules(module, moduleGraph, runtime, map);
|
|
369
|
+
}
|
|
316
370
|
logger.timeAggregate("visitModules: prepare");
|
|
317
371
|
return map;
|
|
318
372
|
}
|
|
319
373
|
);
|
|
374
|
+
// allow other runtimes to derive from a memCache hit too
|
|
375
|
+
if (!firstBlockModulesMapByModule.has(module)) {
|
|
376
|
+
firstBlockModulesMapByModule.set(module, map);
|
|
377
|
+
}
|
|
320
378
|
for (const [block, blockModules] of map) {
|
|
321
379
|
blockModulesMap.set(block, blockModules);
|
|
322
380
|
}
|
|
323
381
|
return map.get(block);
|
|
324
382
|
}
|
|
325
383
|
logger.time("visitModules: prepare");
|
|
326
|
-
|
|
384
|
+
const source = firstBlockModulesMapByModule.get(module);
|
|
385
|
+
if (source !== undefined) {
|
|
386
|
+
deriveBlockModules(module, source, runtime, blockModulesMap);
|
|
387
|
+
} else {
|
|
388
|
+
extractBlockModules(module, moduleGraph, runtime, blockModulesMap);
|
|
389
|
+
firstBlockModulesMapByModule.set(module, blockModulesMap);
|
|
390
|
+
}
|
|
327
391
|
blockModules =
|
|
328
392
|
/** @type {BlockModulesInFlattenTuples} */
|
|
329
393
|
(blockModulesMap.get(block));
|
|
@@ -493,6 +557,7 @@ const visitModules = (
|
|
|
493
557
|
|
|
494
558
|
// For each async Block in graph
|
|
495
559
|
/**
|
|
560
|
+
* Processes the provided b.
|
|
496
561
|
* @param {AsyncDependenciesBlock} b iterating over each Async DepBlock
|
|
497
562
|
* @returns {void}
|
|
498
563
|
*/
|
|
@@ -572,7 +637,27 @@ const visitModules = (
|
|
|
572
637
|
}
|
|
573
638
|
} else {
|
|
574
639
|
entrypoint = /** @type {Entrypoint} */ (cgi.chunkGroup);
|
|
575
|
-
//
|
|
640
|
+
// Fill in options the existing entrypoint hasn't set yet. We never
|
|
641
|
+
// overwrite: blocks that dedupe to one entrypoint (e.g. several
|
|
642
|
+
// workers pointing at the same module) legitimately carry distinct
|
|
643
|
+
// values such as `runtime`, so the first block to create the
|
|
644
|
+
// entrypoint wins and later ones only contribute missing keys.
|
|
645
|
+
// `name` is excluded: it is the entrypoint's identity, fixed at
|
|
646
|
+
// creation (and used to key namedChunkGroups), so back-filling it
|
|
647
|
+
// from a block that deduped in via its module would leave
|
|
648
|
+
// `entrypoint.name` out of sync and make module codegen
|
|
649
|
+
// order-dependent, which breaks persistent caching.
|
|
650
|
+
const existingOptions = entrypoint.options;
|
|
651
|
+
for (const key_ of Object.keys(entryOptions)) {
|
|
652
|
+
const key =
|
|
653
|
+
/** @type {keyof EntryOptions} */
|
|
654
|
+
(key_);
|
|
655
|
+
if (key === "name") continue;
|
|
656
|
+
if (entryOptions[key] === undefined) continue;
|
|
657
|
+
if (existingOptions[key] !== undefined) continue;
|
|
658
|
+
/** @type {EntryOptions[keyof EntryOptions]} */
|
|
659
|
+
(existingOptions[key]) = entryOptions[key];
|
|
660
|
+
}
|
|
576
661
|
entrypoint.addOrigin(
|
|
577
662
|
module,
|
|
578
663
|
/** @type {DependencyLocation} */ (b.loc),
|
|
@@ -699,6 +784,7 @@ const visitModules = (
|
|
|
699
784
|
};
|
|
700
785
|
|
|
701
786
|
/**
|
|
787
|
+
* Processes the provided block.
|
|
702
788
|
* @param {DependenciesBlock} block the block
|
|
703
789
|
* @returns {void}
|
|
704
790
|
*/
|
|
@@ -723,7 +809,6 @@ const visitModules = (
|
|
|
723
809
|
continue;
|
|
724
810
|
}
|
|
725
811
|
|
|
726
|
-
const refOrdinal = /** @type {number} */ getModuleOrdinal(refModule);
|
|
727
812
|
const activeState = /** @type {ConnectionState} */ (
|
|
728
813
|
blockModules[i + 1]
|
|
729
814
|
);
|
|
@@ -734,7 +819,10 @@ const visitModules = (
|
|
|
734
819
|
skipConnectionBuffer.push([refModule, connections]);
|
|
735
820
|
// We skip inactive connections
|
|
736
821
|
if (activeState === false) continue;
|
|
737
|
-
} else if (
|
|
822
|
+
} else if (
|
|
823
|
+
// assigning ordinals lazily here keeps masks small
|
|
824
|
+
isOrdinalSetInMask(minAvailableModules, getModuleOrdinal(refModule))
|
|
825
|
+
) {
|
|
738
826
|
// already in parent chunks, skip it for now
|
|
739
827
|
skipBuffer.push(refModule);
|
|
740
828
|
continue;
|
|
@@ -791,6 +879,7 @@ const visitModules = (
|
|
|
791
879
|
};
|
|
792
880
|
|
|
793
881
|
/**
|
|
882
|
+
* Process entry block.
|
|
794
883
|
* @param {DependenciesBlock} block the block
|
|
795
884
|
* @returns {void}
|
|
796
885
|
*/
|
|
@@ -918,6 +1007,7 @@ const visitModules = (
|
|
|
918
1007
|
};
|
|
919
1008
|
|
|
920
1009
|
/**
|
|
1010
|
+
* Calculate resulting available modules.
|
|
921
1011
|
* @param {ChunkGroupInfo} chunkGroupInfo The info object for the chunk group
|
|
922
1012
|
* @returns {bigint} The mask of available modules after the chunk group
|
|
923
1013
|
*/
|
|
@@ -1193,6 +1283,7 @@ const visitModules = (
|
|
|
1193
1283
|
let preOrderIndex = 0;
|
|
1194
1284
|
let postOrderIndex = 0;
|
|
1195
1285
|
/**
|
|
1286
|
+
* Processes the provided current.
|
|
1196
1287
|
* @param {DependenciesBlock} current current
|
|
1197
1288
|
* @param {BlocksWithNestedBlocks} visited visited dependencies blocks
|
|
1198
1289
|
*/
|
|
@@ -1240,6 +1331,7 @@ const visitModules = (
|
|
|
1240
1331
|
};
|
|
1241
1332
|
|
|
1242
1333
|
/**
|
|
1334
|
+
* Connects chunk groups.
|
|
1243
1335
|
* @param {Compilation} compilation the compilation
|
|
1244
1336
|
* @param {BlocksWithNestedBlocks} blocksWithNestedBlocks flag for blocks that have nested blocks
|
|
1245
1337
|
* @param {BlockConnections} blockConnections connection for blocks
|
|
@@ -1276,7 +1368,8 @@ const connectChunkGroups = (
|
|
|
1276
1368
|
// connections and modules can only create one version
|
|
1277
1369
|
// TODO maybe decide this per runtime
|
|
1278
1370
|
if (
|
|
1279
|
-
//
|
|
1371
|
+
// Blocks with nested blocks must stay connected — skipping orphans the
|
|
1372
|
+
// nested block's chunk group from this block's chunk group parent.
|
|
1280
1373
|
!blocksWithNestedBlocks.has(block) &&
|
|
1281
1374
|
connections.every(({ chunkGroup, originChunkGroupInfo }) =>
|
|
1282
1375
|
areModulesAvailable(
|
|
@@ -1296,10 +1389,9 @@ const connectChunkGroups = (
|
|
|
1296
1389
|
chunkGraph.connectBlockAndChunkGroup(block, chunkGroup);
|
|
1297
1390
|
|
|
1298
1391
|
// 4. Connect chunk with parent
|
|
1299
|
-
|
|
1300
|
-
originChunkGroupInfo.chunkGroup
|
|
1301
|
-
|
|
1302
|
-
);
|
|
1392
|
+
if (originChunkGroupInfo.chunkGroup.addChild(chunkGroup)) {
|
|
1393
|
+
chunkGroup.addParent(originChunkGroupInfo.chunkGroup);
|
|
1394
|
+
}
|
|
1303
1395
|
}
|
|
1304
1396
|
}
|
|
1305
1397
|
};
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/*
|
|
2
|
+
MIT License http://www.opensource.org/licenses/mit-license.php
|
|
3
|
+
Author sheo13666q @sheo13666q
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
"use strict";
|
|
7
|
+
|
|
8
|
+
const ExternalsPlugin = require("../ExternalsPlugin");
|
|
9
|
+
const { coreModules } = require("../node/nodeBuiltins");
|
|
10
|
+
|
|
11
|
+
/** @typedef {import("../Compiler")} Compiler */
|
|
12
|
+
|
|
13
|
+
// Bun exposes the node.js core modules; externalize them with the `node:`
|
|
14
|
+
// specifier (Bun resolves both forms) like the deno target.
|
|
15
|
+
|
|
16
|
+
// Bun's own built-in modules (`bun`, `bun:sqlite`, ...) are provided by the
|
|
17
|
+
// runtime, never bundled.
|
|
18
|
+
const BUN_BUILTINS = /^bun(?::|$)/;
|
|
19
|
+
|
|
20
|
+
class BunTargetPlugin {
|
|
21
|
+
/**
|
|
22
|
+
* Applies the plugin by registering its hooks on the compiler.
|
|
23
|
+
* @param {Compiler} compiler the compiler instance
|
|
24
|
+
* @returns {void}
|
|
25
|
+
*/
|
|
26
|
+
apply(compiler) {
|
|
27
|
+
new ExternalsPlugin(
|
|
28
|
+
(dependency) =>
|
|
29
|
+
dependency.category === "commonjs" ? "node-commonjs" : "module-import",
|
|
30
|
+
({ request }, callback) => {
|
|
31
|
+
if (!request) return callback();
|
|
32
|
+
if (request.startsWith("node:") || BUN_BUILTINS.test(request)) {
|
|
33
|
+
return callback(null, request);
|
|
34
|
+
}
|
|
35
|
+
if (coreModules.has(request)) return callback(null, `node:${request}`);
|
|
36
|
+
callback();
|
|
37
|
+
}
|
|
38
|
+
).apply(compiler);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
module.exports = BunTargetPlugin;
|
|
@@ -11,14 +11,16 @@ const PLUGIN_NAME = "AddBuildDependenciesPlugin";
|
|
|
11
11
|
|
|
12
12
|
class AddBuildDependenciesPlugin {
|
|
13
13
|
/**
|
|
14
|
+
* Creates an instance of AddBuildDependenciesPlugin.
|
|
14
15
|
* @param {Iterable<string>} buildDependencies list of build dependencies
|
|
15
16
|
*/
|
|
16
17
|
constructor(buildDependencies) {
|
|
18
|
+
/** @type {Set<string>} */
|
|
17
19
|
this.buildDependencies = new Set(buildDependencies);
|
|
18
20
|
}
|
|
19
21
|
|
|
20
22
|
/**
|
|
21
|
-
*
|
|
23
|
+
* Applies the plugin by registering its hooks on the compiler.
|
|
22
24
|
* @param {Compiler} compiler the compiler instance
|
|
23
25
|
* @returns {void}
|
|
24
26
|
*/
|
|
@@ -9,18 +9,22 @@
|
|
|
9
9
|
|
|
10
10
|
class AddManagedPathsPlugin {
|
|
11
11
|
/**
|
|
12
|
+
* Creates an instance of AddManagedPathsPlugin.
|
|
12
13
|
* @param {Iterable<string | RegExp>} managedPaths list of managed paths
|
|
13
14
|
* @param {Iterable<string | RegExp>} immutablePaths list of immutable paths
|
|
14
15
|
* @param {Iterable<string | RegExp>} unmanagedPaths list of unmanaged paths
|
|
15
16
|
*/
|
|
16
17
|
constructor(managedPaths, immutablePaths, unmanagedPaths) {
|
|
18
|
+
/** @type {Set<string | RegExp>} */
|
|
17
19
|
this.managedPaths = new Set(managedPaths);
|
|
20
|
+
/** @type {Set<string | RegExp>} */
|
|
18
21
|
this.immutablePaths = new Set(immutablePaths);
|
|
22
|
+
/** @type {Set<string | RegExp>} */
|
|
19
23
|
this.unmanagedPaths = new Set(unmanagedPaths);
|
|
20
24
|
}
|
|
21
25
|
|
|
22
26
|
/**
|
|
23
|
-
*
|
|
27
|
+
* Applies the plugin by registering its hooks on the compiler.
|
|
24
28
|
* @param {Compiler} compiler the compiler instance
|
|
25
29
|
* @returns {void}
|
|
26
30
|
*/
|
|
@@ -16,6 +16,7 @@ const PLUGIN_NAME = "IdleFileCachePlugin";
|
|
|
16
16
|
|
|
17
17
|
class IdleFileCachePlugin {
|
|
18
18
|
/**
|
|
19
|
+
* Creates an instance of IdleFileCachePlugin.
|
|
19
20
|
* @param {PackFileCacheStrategy} strategy cache strategy
|
|
20
21
|
* @param {number} idleTimeout timeout
|
|
21
22
|
* @param {number} idleTimeoutForInitialStore initial timeout
|
|
@@ -27,14 +28,18 @@ class IdleFileCachePlugin {
|
|
|
27
28
|
idleTimeoutForInitialStore,
|
|
28
29
|
idleTimeoutAfterLargeChanges
|
|
29
30
|
) {
|
|
31
|
+
/** @type {PackFileCacheStrategy} */
|
|
30
32
|
this.strategy = strategy;
|
|
33
|
+
/** @type {number} */
|
|
31
34
|
this.idleTimeout = idleTimeout;
|
|
35
|
+
/** @type {number} */
|
|
32
36
|
this.idleTimeoutForInitialStore = idleTimeoutForInitialStore;
|
|
37
|
+
/** @type {number} */
|
|
33
38
|
this.idleTimeoutAfterLargeChanges = idleTimeoutAfterLargeChanges;
|
|
34
39
|
}
|
|
35
40
|
|
|
36
41
|
/**
|
|
37
|
-
*
|
|
42
|
+
* Applies the plugin by registering its hooks on the compiler.
|
|
38
43
|
* @param {Compiler} compiler the compiler instance
|
|
39
44
|
* @returns {void}
|
|
40
45
|
*/
|