@depup/webpack 5.109.2-depup.0 → 5.110.3-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 +5 -5
- package/changes.json +7 -7
- package/lib/APIPlugin.js +123 -17
- package/lib/AsyncDependenciesBlock.js +10 -7
- package/lib/AutomaticPrefetchPlugin.js +1 -1
- package/lib/BannerPlugin.js +10 -6
- package/lib/CacheFacade.js +6 -6
- package/lib/Chunk.js +14 -11
- package/lib/ChunkGraph.js +46 -35
- package/lib/ChunkGroup.js +7 -7
- package/lib/ChunkTemplate.js +35 -44
- package/lib/CircularModulesPlugin.js +205 -28
- package/lib/CleanPlugin.js +4 -7
- package/lib/CodeGenerationResults.js +11 -8
- package/lib/CompatibilityPlugin.js +7 -7
- package/lib/Compilation.js +688 -409
- package/lib/Compiler.js +53 -38
- package/lib/ConcatenationScope.js +107 -8
- package/lib/ConditionalInitFragment.js +3 -3
- package/lib/ConstPlugin.js +13 -11
- package/lib/ContextExclusionPlugin.js +1 -1
- package/lib/ContextModule.js +146 -54
- package/lib/ContextModuleFactory.js +46 -14
- package/lib/ContextReplacementPlugin.js +12 -14
- package/lib/DefinePlugin.js +121 -37
- package/lib/DependenciesBlock.js +9 -6
- package/lib/Dependency.js +36 -16
- package/lib/DependencyTemplate.js +11 -12
- package/lib/DependencyTemplates.js +3 -3
- package/lib/DotenvPlugin.js +91 -26
- package/lib/DynamicEntryPlugin.js +8 -4
- package/lib/EntryOptionPlugin.js +8 -4
- package/lib/EntryPlugin.js +2 -2
- package/lib/Entrypoint.js +6 -2
- package/lib/EnvironmentPlugin.js +2 -2
- package/lib/EvalDevToolModulePlugin.js +8 -4
- package/lib/EvalSourceMapDevToolPlugin.js +15 -8
- package/lib/ExportsInfo.js +111 -14
- package/lib/ExportsInfoApiPlugin.js +2 -4
- package/lib/ExternalModule.js +232 -77
- package/lib/ExternalModuleFactoryPlugin.js +97 -38
- package/lib/ExternalsPlugin.js +10 -6
- package/lib/FileSystemInfo.js +44 -70
- package/lib/FlagAllModulesAsUsedPlugin.js +2 -3
- package/lib/FlagDependencyExportsPlugin.js +76 -19
- package/lib/FlagDependencyUsagePlugin.js +40 -49
- package/lib/FlagEntryExportAsUsedPlugin.js +1 -1
- package/lib/Generator.js +36 -15
- package/lib/HotModuleReplacementPlugin.js +16 -44
- package/lib/IgnorePlugin.js +8 -4
- package/lib/IgnoreWarningsPlugin.js +2 -2
- package/lib/InitFragment.js +8 -4
- package/lib/JavascriptMetaInfoPlugin.js +35 -4
- package/lib/LazyBarrel.js +3 -4
- package/lib/LibraryTemplatePlugin.js +10 -6
- package/lib/LoaderOptionsPlugin.js +7 -3
- package/lib/LoaderTargetPlugin.js +1 -1
- package/lib/MainTemplate.js +49 -42
- package/lib/ManifestPlugin.js +12 -11
- package/lib/Module.js +62 -33
- package/lib/ModuleFactory.js +3 -3
- package/lib/ModuleFilenameHelpers.js +9 -4
- package/lib/ModuleGraph.js +195 -21
- package/lib/ModuleGraphConnection.js +6 -13
- package/lib/ModuleInfoHeaderPlugin.js +8 -10
- package/lib/ModuleTemplate.js +62 -63
- package/lib/MultiCompiler.js +130 -64
- package/lib/MultiStats.js +40 -9
- package/lib/MultiWatching.js +3 -3
- package/lib/NoEmitOnErrorsPlugin.js +1 -1
- package/lib/NodeStuffPlugin.js +29 -19
- package/lib/NormalModule.js +152 -103
- package/lib/NormalModuleFactory.js +555 -110
- package/lib/NormalModuleReplacementPlugin.js +5 -8
- package/lib/NullFactory.js +6 -2
- package/lib/OptionsApply.js +7 -3
- package/lib/Parser.js +7 -3
- package/lib/PlatformPlugin.js +2 -2
- package/lib/PrefetchPlugin.js +1 -1
- package/lib/ProgressPlugin.js +16 -13
- package/lib/ProvidePlugin.js +3 -5
- package/lib/RawModule.js +25 -17
- package/lib/RecordIdsPlugin.js +3 -3
- package/lib/RequestShortener.js +1 -1
- package/lib/ResolverFactory.js +2 -2
- package/lib/RuntimeGlobals.js +22 -10
- package/lib/RuntimeModule.js +29 -19
- package/lib/RuntimePlugin.js +335 -169
- package/lib/RuntimeTemplate.js +2761 -316
- package/lib/SelfModuleFactory.js +7 -3
- package/lib/SourceMapDevToolModuleOptionsPlugin.js +6 -2
- package/lib/SourceMapDevToolPlugin.js +30 -20
- package/lib/Stats.js +3 -4
- package/lib/Template.js +32 -22
- package/lib/TemplatedPathPlugin.js +96 -14
- package/lib/UseStrictPlugin.js +4 -6
- package/lib/WarnCaseSensitiveModulesPlugin.js +4 -4
- package/lib/WarnDeprecatedOptionPlugin.js +1 -1
- package/lib/WarnNoModeSetPlugin.js +1 -1
- package/lib/WatchIgnorePlugin.js +8 -6
- package/lib/Watching.js +8 -8
- package/lib/WebpackIsIncludedPlugin.js +2 -4
- package/lib/WebpackOptionsApply.js +308 -18
- package/lib/WebpackOptionsDefaulter.js +6 -2
- package/lib/asset/AssetBytesGenerator.js +12 -10
- package/lib/asset/AssetBytesParser.js +2 -4
- package/lib/asset/AssetGenerator.js +188 -95
- package/lib/asset/AssetModule.js +7 -3
- package/lib/asset/AssetModulesPlugin.js +110 -38
- package/lib/asset/AssetParser.js +9 -7
- package/lib/asset/AssetSourceGenerator.js +60 -13
- package/lib/asset/AssetSourceParser.js +2 -4
- package/lib/asset/RawDataUrlModule.js +24 -16
- package/lib/asset/WebManifestGenerator.js +8 -10
- package/lib/asset/WebManifestParser.js +24 -10
- package/lib/async-modules/AsyncModuleHelpers.js +12 -6
- package/lib/async-modules/AwaitDependenciesInitFragment.js +2 -2
- package/lib/async-modules/InferAsyncModulesPlugin.js +2 -2
- package/lib/async-modules/isGeneratorLowered.js +4 -4
- package/lib/buildChunkGraph.js +36 -27
- package/lib/bun/BunTargetPlugin.js +1 -1
- package/lib/cache/AddBuildDependenciesPlugin.js +1 -1
- package/lib/cache/AddManagedPathsPlugin.js +1 -1
- package/lib/cache/IdleFileCachePlugin.js +2 -2
- package/lib/cache/MemoryCachePlugin.js +18 -10
- package/lib/cache/MemoryWithGcCachePlugin.js +34 -22
- package/lib/cache/PackFileCacheStrategy.js +30 -23
- package/lib/cache/ResolverCachePlugin.js +38 -18
- package/lib/cache/getLazyHashedEtag.js +1 -2
- package/lib/cache/mergeEtags.js +1 -1
- package/lib/cli.js +1 -3
- package/lib/config/browserslistTargetHandler.js +41 -5
- package/lib/config/defaults.js +270 -78
- package/lib/config/defineConfig.js +10 -2
- package/lib/config/getClaimedAssetTypes.js +65 -0
- package/lib/config/normalization.js +46 -16
- package/lib/config/target.js +46 -3
- package/lib/container/ContainerEntryDependency.js +1 -1
- package/lib/container/ContainerEntryModule.js +24 -15
- package/lib/container/ContainerEntryModuleFactory.js +7 -3
- package/lib/container/ContainerPlugin.js +9 -10
- package/lib/container/ContainerReferencePlugin.js +6 -2
- package/lib/container/FallbackDependency.js +1 -1
- package/lib/container/FallbackModule.js +24 -17
- package/lib/container/FallbackModuleFactory.js +7 -3
- package/lib/container/HoistContainerReferencesPlugin.js +6 -11
- package/lib/container/ModuleFederationPlugin.js +7 -24
- package/lib/container/RemoteModule.js +27 -19
- package/lib/container/RemoteRuntimeModule.js +10 -8
- package/lib/container/moduleFederationHooks.js +32 -0
- package/lib/css/CssGenerator.js +171 -43
- package/lib/css/CssInjectStyleRuntimeModule.js +7 -5
- package/lib/css/CssLoadingRuntimeModule.js +84 -32
- package/lib/css/CssModule.js +10 -7
- package/lib/css/CssModulesPlugin.js +172 -100
- package/lib/css/CssParser.js +1113 -568
- package/lib/css/CssServerStylesRuntimeModule.js +54 -0
- package/lib/css/cssMinify.js +168 -0
- package/lib/css/data.js +5334 -0
- package/lib/css/syntax.js +9647 -232
- package/lib/debug/ProfilingPlugin.js +14 -9
- package/lib/deno/DenoTargetPlugin.js +1 -1
- package/lib/dependencies/AMDDefineDependency.js +112 -87
- package/lib/dependencies/AMDDefineDependencyParserPlugin.js +30 -17
- package/lib/dependencies/AMDPlugin.js +9 -7
- package/lib/dependencies/AMDRequireArrayDependency.js +5 -5
- package/lib/dependencies/AMDRequireContextDependency.js +2 -2
- package/lib/dependencies/AMDRequireDependenciesBlock.js +1 -1
- package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +25 -14
- package/lib/dependencies/AMDRequireDependency.js +8 -7
- package/lib/dependencies/AMDRequireItemDependency.js +1 -1
- package/lib/dependencies/AMDRuntimeModules.js +21 -1
- package/lib/dependencies/BuildTimeConstDependency.js +102 -0
- package/lib/dependencies/CachedConstDependency.js +11 -8
- package/lib/dependencies/CommonJsDependencyHelpers.js +67 -46
- package/lib/dependencies/CommonJsExportRequireDependency.js +121 -45
- package/lib/dependencies/CommonJsExportsDependency.js +53 -49
- package/lib/dependencies/CommonJsExportsParserPlugin.js +207 -25
- package/lib/dependencies/CommonJsFullRequireDependency.js +119 -34
- package/lib/dependencies/CommonJsImportsParserPlugin.js +100 -50
- package/lib/dependencies/CommonJsObjectExportDependency.js +188 -0
- package/lib/dependencies/CommonJsPlugin.js +35 -6
- package/lib/dependencies/CommonJsRequireContextDependency.js +5 -6
- package/lib/dependencies/CommonJsRequireDependency.js +170 -27
- package/lib/dependencies/CommonJsSelfReferenceDependency.js +63 -38
- package/lib/dependencies/ConstDependency.js +8 -9
- package/lib/dependencies/ContextDependency.js +12 -8
- package/lib/dependencies/ContextDependencyHelpers.js +14 -9
- package/lib/dependencies/ContextDependencyTemplateAsId.js +4 -4
- package/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +24 -11
- package/lib/dependencies/ContextElementDependency.js +31 -12
- package/lib/dependencies/CreateRequireParserPlugin.js +12 -7
- package/lib/dependencies/CreateScriptUrlDependency.js +4 -4
- package/lib/dependencies/CssIcssExportDependency.js +56 -28
- package/lib/dependencies/CssIcssImportDependency.js +17 -13
- package/lib/dependencies/CssIcssSymbolDependency.js +9 -10
- package/lib/dependencies/CssImportDependency.js +18 -9
- package/lib/dependencies/CssUrlDependency.js +17 -13
- package/lib/dependencies/DllEntryDependency.js +1 -1
- package/lib/dependencies/DynamicExports.js +2 -2
- package/lib/dependencies/ExportBindingInitFragment.js +36 -9
- package/lib/dependencies/ExportsInfoDependency.js +7 -8
- package/lib/dependencies/ExternalModuleDependency.js +9 -5
- package/lib/dependencies/ExternalModuleInitFragment.js +2 -2
- package/lib/dependencies/ExternalModuleInitFragmentDependency.js +8 -5
- package/lib/dependencies/HarmonyAcceptDependency.js +5 -5
- package/lib/dependencies/HarmonyCompatibilityDependency.js +52 -17
- package/lib/dependencies/HarmonyDetectionParserPlugin.js +11 -7
- package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +23 -14
- package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +80 -12
- package/lib/dependencies/HarmonyExportExpressionDependency.js +23 -18
- package/lib/dependencies/HarmonyExportHeaderDependency.js +7 -7
- package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +286 -80
- package/lib/dependencies/HarmonyExportInitFragment.js +18 -6
- package/lib/dependencies/HarmonyExportSpecifierDependency.js +51 -14
- package/lib/dependencies/HarmonyExports.js +7 -4
- package/lib/dependencies/HarmonyImportDependency.js +121 -60
- package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +124 -38
- package/lib/dependencies/HarmonyImportGuard.js +20 -30
- package/lib/dependencies/HarmonyImportSideEffectDependency.js +152 -9
- package/lib/dependencies/HarmonyImportSpecifierDependency.js +97 -49
- package/lib/dependencies/HarmonyModulesPlugin.js +7 -3
- package/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +1 -3
- package/lib/dependencies/HtmlEntryDependency.js +49 -31
- package/lib/dependencies/HtmlInlineHtmlDependency.js +7 -8
- package/lib/dependencies/HtmlInlineScriptDependency.js +11 -8
- package/lib/dependencies/HtmlInlineStyleDependency.js +7 -10
- package/lib/dependencies/HtmlSourceDependency.js +22 -14
- package/lib/dependencies/ImportContextDependency.js +45 -5
- package/lib/dependencies/ImportDependency.js +33 -50
- package/lib/dependencies/ImportEagerDependency.js +6 -9
- package/lib/dependencies/ImportMetaContextDependency.js +2 -2
- package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +14 -13
- package/lib/dependencies/ImportMetaContextPlugin.js +7 -3
- package/lib/dependencies/ImportMetaGlobDependency.js +2 -2
- package/lib/dependencies/ImportMetaGlobDependencyParserPlugin.js +2 -3
- package/lib/dependencies/ImportMetaGlobHelpers.js +19 -22
- package/lib/dependencies/ImportMetaHotAcceptDependency.js +1 -1
- package/lib/dependencies/ImportMetaHotDeclineDependency.js +1 -1
- package/lib/dependencies/ImportMetaPlugin.js +154 -71
- package/lib/dependencies/ImportMetaResolveDependency.js +3 -4
- package/lib/dependencies/ImportParserPlugin.js +73 -49
- package/lib/dependencies/ImportPhase.js +12 -5
- package/lib/dependencies/ImportPlugin.js +7 -3
- package/lib/dependencies/ImportWeakDependency.js +6 -9
- package/lib/dependencies/JsonExportsDependency.js +11 -7
- package/lib/dependencies/LoaderDependency.js +2 -2
- package/lib/dependencies/LoaderImportDependency.js +2 -2
- package/lib/dependencies/LoaderPlugin.js +11 -7
- package/lib/dependencies/LocalModuleDependency.js +5 -5
- package/lib/dependencies/LocalModulesHelpers.js +1 -1
- package/lib/dependencies/ModuleDecoratorDependency.js +6 -7
- package/lib/dependencies/ModuleDependency.js +9 -6
- package/lib/dependencies/ModuleDependencyTemplateAsId.js +4 -4
- package/lib/dependencies/ModuleDependencyTemplateAsRequireId.js +3 -3
- package/lib/dependencies/ModuleHotAcceptDependency.js +1 -1
- package/lib/dependencies/ModuleHotDeclineDependency.js +1 -1
- package/lib/dependencies/ModuleInitFragmentDependency.js +24 -10
- package/lib/dependencies/NullDependency.js +3 -3
- package/lib/dependencies/ProvidedDependency.js +14 -10
- package/lib/dependencies/PureExpressionDependency.js +9 -10
- package/lib/dependencies/RequireContextDependency.js +2 -2
- package/lib/dependencies/RequireContextDependencyParserPlugin.js +2 -4
- package/lib/dependencies/RequireContextPlugin.js +8 -4
- package/lib/dependencies/RequireEnsureDependenciesBlock.js +2 -2
- package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +5 -8
- package/lib/dependencies/RequireEnsureDependency.js +8 -7
- package/lib/dependencies/RequireEnsurePlugin.js +7 -3
- package/lib/dependencies/RequireHeaderDependency.js +50 -12
- package/lib/dependencies/RequireIncludeDependency.js +6 -6
- package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +2 -3
- package/lib/dependencies/RequireIncludePlugin.js +7 -3
- package/lib/dependencies/RequireJsStuffPlugin.js +7 -3
- package/lib/dependencies/RequireResolveContextDependency.js +2 -2
- package/lib/dependencies/RequireResolveDependency.js +4 -4
- package/lib/dependencies/RequireResolveHeaderDependency.js +4 -4
- package/lib/dependencies/RuntimeRequirementsDependency.js +5 -6
- package/lib/dependencies/StaticExportsDependency.js +2 -2
- package/lib/dependencies/SystemPlugin.js +10 -6
- package/lib/dependencies/SystemRuntimeModule.js +10 -0
- package/lib/dependencies/TopLevelAwaitDependency.js +11 -7
- package/lib/dependencies/URLContextDependency.js +2 -2
- package/lib/dependencies/URLDependency.js +110 -64
- package/lib/dependencies/URLPlugin.js +7 -3
- package/lib/dependencies/UnsupportedDependency.js +4 -4
- package/lib/dependencies/WebAssemblyExportImportedDependency.js +3 -4
- package/lib/dependencies/WebAssemblyImportDependency.js +5 -5
- package/lib/dependencies/WebpackIsIncludedDependency.js +6 -6
- package/lib/dependencies/WorkerAndWorkletPlugin.js +47 -28
- package/lib/dependencies/WorkerDependency.js +22 -22
- package/lib/dependencies/WorkletDependency.js +18 -21
- package/lib/dependencies/getFunctionExpression.js +8 -4
- package/lib/dependencies/importOptionsCheck.js +47 -0
- package/lib/dependencies/processExportInfo.js +5 -5
- package/lib/dll/DelegatedModule.js +34 -22
- package/lib/dll/DelegatedModuleFactoryPlugin.js +15 -7
- package/lib/dll/DelegatedPlugin.js +2 -2
- package/lib/dll/DllEntryPlugin.js +2 -2
- package/lib/dll/DllModule.js +22 -15
- package/lib/dll/DllModuleFactory.js +7 -3
- package/lib/dll/DllPlugin.js +7 -5
- package/lib/dll/DllReferencePlugin.js +10 -7
- package/lib/dll/LibManifestPlugin.js +5 -5
- package/lib/electron/ElectronTargetPlugin.js +53 -49
- package/lib/errors/AsyncChunkWaterfallWarning.js +36 -0
- package/lib/errors/AsyncDependencyToInitialChunkError.js +2 -2
- package/lib/errors/BroadContextsWarning.js +43 -0
- package/lib/errors/BuildCycleError.js +1 -1
- package/lib/errors/CacheEffectivenessWarning.js +55 -0
- package/lib/errors/ChunkRenderError.js +1 -1
- package/lib/errors/CircularDependenciesWarning.js +38 -0
- package/lib/errors/CodeGenerationError.js +1 -1
- package/lib/errors/CommentCompilationWarning.js +1 -1
- package/lib/errors/ConflictingResourceHintsWarning.js +35 -0
- package/lib/errors/DotenvFileError.js +29 -0
- package/lib/errors/DuplicateModulesWarning.js +45 -0
- package/lib/errors/DynamicExportsWarning.js +30 -0
- package/lib/errors/EmbeddedSourceMapsWarning.js +25 -0
- package/lib/errors/EntrypointOverlapWarning.js +45 -0
- package/lib/errors/EnvironmentNotSupportAsyncWarning.js +2 -2
- package/lib/errors/EvalUsageWarning.js +28 -0
- package/lib/errors/HookWebpackError.js +5 -5
- package/lib/errors/HotspotsWarning.js +57 -0
- package/lib/errors/IgnoreErrorModuleFactory.js +7 -3
- package/lib/errors/ImportedBindingAssignmentError.js +30 -0
- package/lib/errors/InlinedAssetsWarning.js +36 -0
- package/lib/errors/InvalidDependenciesModuleWarning.js +1 -1
- package/lib/errors/LargeModulesWarning.js +45 -0
- package/lib/errors/LegacyJavascriptWarning.js +48 -0
- package/lib/errors/MissingSideEffectsWarning.js +36 -0
- package/lib/errors/MixedExportsWarning.js +41 -0
- package/lib/errors/ModuleDependencyError.js +13 -16
- package/lib/errors/ModuleDependencyWarning.js +5 -15
- package/lib/errors/ModuleHashingError.js +1 -1
- package/lib/errors/ModuleNotFoundError.js +2 -2
- package/lib/errors/ModuleParseError.js +1 -2
- package/lib/errors/ModuleRestoreError.js +1 -1
- package/lib/errors/ModuleStoreError.js +1 -1
- package/lib/errors/NodeStuffInWebError.js +1 -1
- package/lib/errors/OsDependentRuleWarning.js +31 -0
- package/lib/errors/PureAnnotationsWarning.js +36 -0
- package/lib/errors/RedundantDynamicImportWarning.js +31 -0
- package/lib/errors/ScopeHoistingBailoutsWarning.js +41 -0
- package/lib/errors/SplitChunksCappedWarning.js +41 -0
- package/lib/errors/TinyChunksWarning.js +40 -0
- package/lib/errors/TopLevelThisWarning.js +34 -0
- package/lib/errors/UnsplitVendorsWarning.js +42 -0
- package/lib/errors/UnsupportedFeatureWarning.js +1 -1
- package/lib/errors/UnusedAliasesWarning.js +29 -0
- package/lib/errors/UnusedDefinesWarning.js +29 -0
- package/lib/errors/UnusedExternalsWarning.js +29 -0
- package/lib/errors/UnusedReexportsWarning.js +42 -0
- package/lib/errors/UnusedRuleWarning.js +29 -0
- package/lib/errors/WebpackError.js +9 -5
- package/lib/errors/deriveStackFromNestedError.js +90 -0
- package/lib/esm/ExportWebpackRequireRuntimeModule.js +2 -0
- package/lib/esm/ModuleChunkFormatPlugin.js +37 -19
- package/lib/esm/ModuleChunkLoadingPlugin.js +86 -51
- package/lib/esm/ModuleChunkLoadingRuntimeModule.js +161 -62
- package/lib/hmr/HotModuleReplacement.runtime.js +24 -5
- package/lib/hmr/HotModuleReplacementRuntimeModule.js +1 -1
- package/lib/hmr/LazyCompilationPlugin.js +45 -24
- package/lib/hmr/lazyCompilationBackend.js +9 -6
- package/lib/hmr/parserHooks.js +56 -0
- package/lib/html/HtmlGenerator.js +277 -77
- package/lib/html/HtmlModule.js +7 -3
- package/lib/html/HtmlModulesPlugin.js +366 -200
- package/lib/html/HtmlParser.js +31 -86
- package/lib/html/data.js +1928 -0
- package/lib/html/htmlMinify.js +288 -0
- package/lib/html/syntax.js +6034 -1384
- package/lib/ids/ChunkModuleIdRangePlugin.js +3 -3
- package/lib/ids/DeterministicChunkIdsPlugin.js +1 -1
- package/lib/ids/DeterministicModuleIdsPlugin.js +2 -2
- package/lib/ids/HashedModuleIdsPlugin.js +6 -2
- package/lib/ids/IdHelpers.js +7 -8
- package/lib/ids/NamedChunkIdsPlugin.js +1 -1
- package/lib/ids/NamedModuleIdsPlugin.js +1 -1
- package/lib/ids/NaturalChunkIdsPlugin.js +2 -2
- package/lib/ids/NaturalModuleIdsPlugin.js +1 -1
- package/lib/ids/OccurrenceChunkIdsPlugin.js +7 -3
- package/lib/ids/OccurrenceModuleIdsPlugin.js +7 -3
- package/lib/ids/SyncModuleIdsPlugin.js +4 -4
- package/lib/index.js +10 -0
- package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +3 -3
- package/lib/javascript/BasicEvaluatedExpression.js +18 -14
- package/lib/javascript/ChunkFormatHelpers.js +6 -6
- package/lib/javascript/ChunkHelpers.js +1 -1
- package/lib/javascript/CommonJsChunkFormatPlugin.js +11 -5
- package/lib/javascript/EnableChunkLoadingPlugin.js +2 -2
- package/lib/javascript/JavascriptGenerator.js +65 -165
- package/lib/javascript/JavascriptModule.js +9 -3
- package/lib/javascript/JavascriptModulesPlugin.js +103 -123
- package/lib/javascript/JavascriptParser.js +242 -99
- package/lib/javascript/JavascriptParserHelpers.js +10 -7
- package/lib/javascript/ScopeAnalyzer.js +1094 -0
- package/lib/javascript/StartupHelpers.js +55 -9
- package/lib/javascript/syntax.js +2678 -232
- package/lib/json/JsonData.js +8 -4
- package/lib/json/JsonGenerator.js +38 -16
- package/lib/json/JsonModule.js +7 -3
- package/lib/json/JsonModulesPlugin.js +1 -1
- package/lib/json/JsonParser.js +5 -6
- package/lib/library/AbstractLibraryPlugin.js +20 -14
- package/lib/library/AmdLibraryPlugin.js +11 -7
- package/lib/library/AssignLibraryPlugin.js +19 -13
- package/lib/library/EnableLibraryPlugin.js +2 -2
- package/lib/library/ExportPropertyLibraryPlugin.js +15 -8
- package/lib/library/JsonpLibraryPlugin.js +11 -7
- package/lib/library/ModuleLibraryPlugin.js +256 -64
- package/lib/library/SystemLibraryPlugin.js +12 -8
- package/lib/library/UmdLibraryPlugin.js +62 -25
- package/lib/loaders/LoaderRunner.js +47 -6
- package/lib/loaders/loadLoader.js +8 -4
- package/lib/logging/createConsoleLogger.js +7 -4
- package/lib/node/CommonJsChunkLoadingPlugin.js +36 -22
- package/lib/node/NodeEnvironmentPlugin.js +17 -3
- package/lib/node/NodeSourcePlugin.js +1 -1
- package/lib/node/NodeTargetPlugin.js +4 -3
- package/lib/node/NodeTemplatePlugin.js +1 -1
- package/lib/node/NodeWatchFileSystem.js +70 -9
- package/lib/node/ReadFileChunkLoadingRuntimeModule.js +35 -38
- package/lib/node/ReadFileCompileAsyncWasmPlugin.js +65 -19
- package/lib/node/ReadFileCompileWasmPlugin.js +28 -16
- package/lib/node/RequireChunkLoadingRuntimeModule.js +35 -38
- package/lib/node/nodeConsole.js +7 -3
- package/lib/optimize/AggressiveMergingPlugin.js +2 -2
- package/lib/optimize/AggressiveSplittingPlugin.js +9 -6
- package/lib/optimize/ConcatenatedModule.js +1030 -476
- package/lib/optimize/ConstExportsPlugin.js +16 -7
- package/lib/optimize/EnsureChunkConditionsPlugin.js +3 -3
- package/lib/optimize/FlagIncludedChunksPlugin.js +3 -4
- package/lib/optimize/InlineExports.js +130 -5
- package/lib/optimize/InnerGraph.js +28 -12
- package/lib/optimize/InnerGraphPlugin.js +23 -18
- package/lib/optimize/LimitChunkCountPlugin.js +7 -3
- package/lib/optimize/MangleExportsPlugin.js +7 -8
- package/lib/optimize/MergeDuplicateChunksPlugin.js +7 -3
- package/lib/optimize/MinChunkSizePlugin.js +7 -3
- package/lib/optimize/ModuleConcatenationPlugin.js +51 -35
- package/lib/optimize/RealContentHashPlugin.js +121 -41
- package/lib/optimize/RemoveEmptyChunksPlugin.js +2 -2
- package/lib/optimize/RemoveParentModulesPlugin.js +4 -4
- package/lib/optimize/RuntimeChunkPlugin.js +2 -2
- package/lib/optimize/SideEffectsFlagPlugin.js +262 -39
- package/lib/optimize/SplitChunksPlugin.js +86 -24
- package/lib/performance/AssetsOverSizeLimitWarning.js +10 -2
- package/lib/performance/AsyncChunkWaterfallsPlugin.js +136 -0
- package/lib/performance/BroadContextsPlugin.js +142 -0
- package/lib/performance/CacheEffectivenessPlugin.js +125 -0
- package/lib/performance/ConflictingResourceHintsPlugin.js +99 -0
- package/lib/performance/DuplicateModulesPlugin.js +93 -0
- package/lib/performance/DuplicatePackagesPlugin.js +119 -0
- package/lib/performance/DuplicatePackagesWarning.js +84 -0
- package/lib/performance/DynamicExportsPlugin.js +120 -0
- package/lib/performance/EmbeddedSourceMapsPlugin.js +71 -0
- package/lib/performance/EntrypointOverlapPlugin.js +122 -0
- package/lib/performance/EntrypointsOverSizeLimitWarning.js +1 -1
- package/lib/performance/EvalUsagePlugin.js +115 -0
- package/lib/performance/HotspotsPlugin.js +296 -0
- package/lib/performance/InlinedAssetsPlugin.js +99 -0
- package/lib/performance/LargeModulesPlugin.js +126 -0
- package/lib/performance/LegacyJavascriptPlugin.js +139 -0
- package/lib/performance/MissingSideEffectsPlugin.js +138 -0
- package/lib/performance/MixedExportsPlugin.js +136 -0
- package/lib/performance/OsDependentRuleWarningPlugin.js +178 -0
- package/lib/performance/PureAnnotationsPlugin.js +219 -0
- package/lib/performance/RedundantDynamicImportsPlugin.js +225 -0
- package/lib/performance/RuntimeInLargeChunkWarning.js +27 -0
- package/lib/performance/ScopeHoistingBailoutsPlugin.js +164 -0
- package/lib/performance/SizeLimitsPlugin.js +139 -7
- package/lib/performance/SplitChunksCappedPlugin.js +99 -0
- package/lib/performance/TinyChunksPlugin.js +128 -0
- package/lib/performance/TopLevelThisPlugin.js +208 -0
- package/lib/performance/UnsplitVendorsPlugin.js +112 -0
- package/lib/performance/UnusedAliasesPlugin.js +253 -0
- package/lib/performance/UnusedDefinesPlugin.js +87 -0
- package/lib/performance/UnusedExternalsPlugin.js +110 -0
- package/lib/performance/UnusedReexportsPlugin.js +159 -0
- package/lib/performance/UnusedRuleWarningPlugin.js +105 -0
- package/lib/performance/getModuleSize.js +22 -0
- package/lib/performance/getSourceModules.js +22 -0
- package/lib/performance/hasOnlyUnusedExports.js +40 -0
- package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +24 -10
- package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +63 -46
- package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +2 -3
- package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +2 -2
- package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +2 -2
- package/lib/prefetch/ResourceHintPlugin.js +295 -79
- package/lib/prefetch/ResourceHintRuntimeModule.js +1 -21
- package/lib/prefetch/StartupAssetHintRuntimeModule.js +10 -133
- package/lib/prefetch/parseResourceHintOptions.js +31 -4
- package/lib/rules/BasicEffectRulePlugin.js +2 -2
- package/lib/rules/BasicMatcherRulePlugin.js +8 -4
- package/lib/rules/GlobMatcherRulePlugin.js +68 -0
- package/lib/rules/ObjectMatcherRulePlugin.js +12 -5
- package/lib/rules/RuleSetCompiler.js +146 -12
- package/lib/rules/UseEffectRulePlugin.js +18 -11
- package/lib/runtime/AsyncModuleGeneratorRuntimeModule.js +11 -1
- package/lib/runtime/AsyncModuleRuntimeModule.js +6 -2
- package/lib/runtime/AutoPublicPathRuntimeModule.js +15 -20
- package/lib/runtime/BaseUriRuntimeModule.js +33 -7
- package/lib/runtime/ChunkNameRuntimeModule.js +10 -0
- package/lib/runtime/CompatGetDefaultExportRuntimeModule.js +11 -1
- package/lib/runtime/CompatRuntimeModule.js +5 -3
- package/lib/runtime/ConcatenationWrapRuntimeModule.js +90 -0
- package/lib/runtime/ConstructRequireRuntimeModule.js +52 -0
- package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +8 -6
- package/lib/runtime/CreateScriptRuntimeModule.js +11 -1
- package/lib/runtime/CreateScriptUrlRuntimeModule.js +11 -1
- package/lib/runtime/DefinePropertyGettersRuntimeModule.js +56 -38
- package/lib/runtime/EnsureChunkRuntimeModule.js +18 -2
- package/lib/runtime/GetChunkFilenameRuntimeModule.js +62 -37
- package/lib/runtime/GetFullHashRuntimeModule.js +12 -2
- package/lib/runtime/GetMainFilenameRuntimeModule.js +12 -2
- package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +2 -2
- package/lib/runtime/GetWorkletBootstrapRuntimeModule.js +16 -3
- package/lib/runtime/GlobalRuntimeModule.js +18 -0
- package/lib/runtime/HasOwnPropertyRuntimeModule.js +12 -2
- package/lib/runtime/LoadScriptRuntimeModule.js +2 -2
- package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +34 -7
- package/lib/runtime/MakeNamespaceObjectRuntimeModule.js +22 -6
- package/lib/runtime/NonceRuntimeModule.js +10 -0
- package/lib/runtime/OnChunksLoadedRuntimeModule.js +5 -3
- package/lib/runtime/PublicPathRuntimeModule.js +12 -2
- package/lib/runtime/RelativeUrlRuntimeModule.js +11 -1
- package/lib/runtime/RuntimeIdRuntimeModule.js +12 -2
- package/lib/runtime/SetAnonymousDefaultNameRuntimeModule.js +11 -1
- package/lib/runtime/StartupChunkDependenciesPlugin.js +18 -9
- package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +3 -3
- package/lib/runtime/StartupEntrypointRuntimeModule.js +21 -4
- package/lib/runtime/SystemContextRuntimeModule.js +10 -0
- package/lib/runtime/ToBinaryRuntimeModule.js +1 -1
- package/lib/runtime/WorkerRuntimeModule.js +11 -1
- package/lib/runtime/baseUri.js +63 -0
- package/lib/schemes/DataUriPlugin.js +1 -1
- package/lib/schemes/FileUriPlugin.js +1 -1
- package/lib/schemes/HttpUriPlugin.js +46 -20
- package/lib/schemes/VirtualUrlPlugin.js +13 -7
- package/lib/serialization/AggregateErrorSerializer.js +1 -1
- package/lib/serialization/BinaryMiddleware.js +4 -4
- package/lib/serialization/ErrorObjectSerializer.js +1 -1
- package/lib/serialization/FileMiddleware.js +22 -9
- package/lib/serialization/ObjectMiddleware.js +139 -114
- package/lib/serialization/PlainObjectSerializer.js +19 -16
- package/lib/sharing/ConsumeSharedModule.js +30 -21
- package/lib/sharing/ConsumeSharedPlugin.js +18 -10
- package/lib/sharing/ConsumeSharedRuntimeModule.js +6 -9
- package/lib/sharing/ProvideSharedModule.js +25 -16
- package/lib/sharing/ProvideSharedModuleFactory.js +7 -3
- package/lib/sharing/ProvideSharedPlugin.js +8 -4
- package/lib/sharing/SharePlugin.js +17 -5
- package/lib/sharing/ShareRuntimeModule.js +4 -4
- package/lib/sharing/resolveMatchedConfigs.js +9 -6
- package/lib/sharing/utils.js +1 -3
- package/lib/stats/DefaultStatsFactoryPlugin.js +50 -29
- package/lib/stats/DefaultStatsPresetPlugin.js +17 -8
- package/lib/stats/DefaultStatsPrinterPlugin.js +36 -26
- package/lib/stats/StatsFactory.js +25 -26
- package/lib/stats/StatsPrinter.js +16 -12
- package/lib/typescript/TypeScriptPlugin.js +20 -24
- package/lib/url/URLParserPlugin.js +26 -13
- package/lib/util/ArrayQueue.js +3 -3
- package/lib/util/AsyncQueue.js +4 -3
- package/lib/util/Hash.js +5 -1
- package/lib/util/LazySet.js +35 -22
- package/lib/util/LocConverter.js +36 -13
- package/lib/util/SourceProcessor.js +1066 -24
- package/lib/util/StringXor.js +1 -1
- package/lib/util/URLAbsoluteSpecifier.js +3 -1
- package/lib/util/chainedImports.js +9 -5
- package/lib/util/cleverMerge.js +1 -1
- package/lib/util/comparators.js +45 -14
- package/lib/util/concatenate.js +203 -77
- package/lib/util/conventions.js +10 -2
- package/lib/util/createHash.js +2 -2
- package/lib/util/createHooksRegistry.js +8 -10
- package/lib/util/createMappings.js +25 -3
- package/lib/util/dataURL.js +225 -1
- package/lib/util/extractSourceMap.js +4 -3
- package/lib/util/findCaseMismatch.js +139 -0
- package/lib/util/formatLocation.js +1 -2
- package/lib/util/fs.js +22 -5
- package/lib/util/globUtils.js +298 -24
- package/lib/util/hash/BatchedHash.js +5 -1
- package/lib/util/hash/BulkUpdateHash.js +5 -1
- package/lib/util/hash/DebugHash.js +5 -1
- package/lib/util/hash/hash-digest.js +6 -2
- package/lib/util/identifier.js +4 -0
- package/lib/util/implicitTypeLoaderFallback.js +1 -1
- package/lib/util/internalSerializables.js +8 -0
- package/lib/util/lazyModule.js +56 -0
- package/lib/util/makeSerializable.js +7 -3
- package/lib/util/matchAlias.js +25 -0
- package/lib/util/mimeTypes.js +11 -5
- package/lib/util/nonNumericOnlyHash.js +4 -3
- package/lib/util/parseJson.js +5 -3
- package/lib/util/preloadModuleType.js +32 -0
- package/lib/util/registerExternalSerializer.js +7 -5
- package/lib/util/removeBOM.js +82 -1
- package/lib/util/runtime.js +2 -2
- package/lib/util/semver.js +1 -1
- package/lib/util/serialization.js +28 -28
- package/lib/util/source.js +2 -2
- package/lib/util/traverseDestructuringAssignmentProperties.js +6 -2
- package/lib/wasm/EnableWasmLoadingPlugin.js +10 -8
- package/lib/wasm/wasmModuleFilename.js +54 -0
- package/lib/wasm-async/AsyncWasmCompileRuntimeModule.js +43 -21
- package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +45 -21
- package/lib/wasm-async/AsyncWasmModule.js +3 -3
- package/lib/wasm-async/AsyncWebAssemblyGenerator.js +4 -5
- package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +57 -17
- package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +34 -18
- package/lib/wasm-async/AsyncWebAssemblyParser.js +9 -8
- package/lib/wasm-async/UniversalCompileAsyncWasmPlugin.js +29 -8
- package/lib/wasm-sync/SyncWasmModule.js +2 -2
- package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +18 -13
- package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +4 -5
- package/lib/wasm-sync/WebAssemblyGenerator.js +18 -17
- package/lib/wasm-sync/WebAssemblyInInitialChunkError.js +4 -4
- package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +7 -7
- package/lib/wasm-sync/WebAssemblyModulesPlugin.js +24 -11
- package/lib/wasm-sync/WebAssemblyParser.js +4 -6
- package/lib/wasm-sync/WebAssemblyUtils.js +2 -2
- package/lib/web/FetchCompileAsyncWasmPlugin.js +105 -19
- package/lib/web/FetchCompileWasmPlugin.js +48 -16
- package/lib/web/JsonpChunkLoadingPlugin.js +47 -23
- package/lib/web/JsonpChunkLoadingRuntimeModule.js +50 -20
- package/lib/web/JsonpTemplatePlugin.js +2 -2
- package/lib/webpack.js +22 -11
- package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +60 -26
- package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +30 -32
- package/lib/webworker/WebWorkerTemplatePlugin.js +1 -1
- package/module.d.ts +1 -0
- package/package.json +32 -25
- package/schemas/WebpackOptions.check.js +1 -1
- package/schemas/WebpackOptions.json +667 -34
- package/schemas/plugins/HtmlParserOptions.check.js +1 -1
- package/schemas/plugins/container/ContainerPlugin.check.js +1 -1
- package/schemas/plugins/container/ContainerPlugin.json +10 -0
- package/schemas/plugins/container/ModuleFederationPlugin.check.js +1 -1
- package/schemas/plugins/container/ModuleFederationPlugin.json +10 -0
- package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.js +1 -1
- package/schemas/plugins/css/CssModuleParserOptions.check.js +1 -1
- package/schemas/plugins/css/CssParserOptions.check.js +1 -1
- package/types.d.ts +3223 -465
- package/lib/runtime/CommonJsWrapRuntimeModule.js +0 -37
package/lib/buildChunkGraph.js
CHANGED
|
@@ -6,22 +6,26 @@
|
|
|
6
6
|
"use strict";
|
|
7
7
|
|
|
8
8
|
const ModuleGraphConnection = require("./ModuleGraphConnection");
|
|
9
|
-
const
|
|
9
|
+
const memoize = require("./util/memoize");
|
|
10
|
+
|
|
10
11
|
const { getEntryRuntime, mergeRuntime } = require("./util/runtime");
|
|
11
12
|
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
/** @
|
|
17
|
-
/** @
|
|
18
|
-
/** @
|
|
19
|
-
/** @
|
|
20
|
-
/** @
|
|
21
|
-
/** @
|
|
22
|
-
/** @
|
|
23
|
-
/** @
|
|
24
|
-
/** @
|
|
13
|
+
const getAsyncDependencyToInitialChunkError = memoize(() =>
|
|
14
|
+
require("./errors/AsyncDependencyToInitialChunkError")
|
|
15
|
+
);
|
|
16
|
+
|
|
17
|
+
/** @import AsyncDependenciesBlock from "./AsyncDependenciesBlock" */
|
|
18
|
+
/** @import Chunk from "./Chunk" */
|
|
19
|
+
/** @import ChunkGroup from "./ChunkGroup" */
|
|
20
|
+
/** @import Compilation from "./Compilation" */
|
|
21
|
+
/** @import DependenciesBlock from "./DependenciesBlock" */
|
|
22
|
+
/** @import { DependencyLocation } from "./Dependency" */
|
|
23
|
+
/** @import Entrypoint, { EntryOptions } from "./Entrypoint" */
|
|
24
|
+
/** @import Module from "./Module" */
|
|
25
|
+
/** @import ModuleGraph from "./ModuleGraph" */
|
|
26
|
+
/** @import { ConnectionState } from "./ModuleGraphConnection" */
|
|
27
|
+
/** @import { Logger } from "./logging/Logger" */
|
|
28
|
+
/** @import { RuntimeSpec } from "./util/runtime" */
|
|
25
29
|
|
|
26
30
|
/**
|
|
27
31
|
* Defines the queue item type used by this module.
|
|
@@ -723,7 +727,7 @@ const visitModules = (
|
|
|
723
727
|
c = cgi.chunkGroup;
|
|
724
728
|
if (c.isInitial()) {
|
|
725
729
|
compilation.errors.push(
|
|
726
|
-
new
|
|
730
|
+
new (getAsyncDependencyToInitialChunkError())(
|
|
727
731
|
/** @type {string} */ (chunkName),
|
|
728
732
|
module,
|
|
729
733
|
/** @type {DependencyLocation} */ (b.loc)
|
|
@@ -845,26 +849,28 @@ const visitModules = (
|
|
|
845
849
|
chunkGroupInfo.skippedModuleConnections = skippedModuleConnections =
|
|
846
850
|
new Set();
|
|
847
851
|
}
|
|
848
|
-
|
|
849
|
-
|
|
852
|
+
// Drained by popping (still reverse order): `length = 0` would drop
|
|
853
|
+
// the buffer's backing store, so the next push reallocates one.
|
|
854
|
+
while (skipConnectionBuffer.length > 0) {
|
|
855
|
+
skippedModuleConnections.add(
|
|
856
|
+
/** @type {[Module, ModuleGraphConnection[]]} */
|
|
857
|
+
(skipConnectionBuffer.pop())
|
|
858
|
+
);
|
|
850
859
|
}
|
|
851
|
-
skipConnectionBuffer.length = 0;
|
|
852
860
|
}
|
|
853
861
|
if (skipBuffer.length > 0) {
|
|
854
862
|
let { skippedItems } = chunkGroupInfo;
|
|
855
863
|
if (skippedItems === undefined) {
|
|
856
864
|
chunkGroupInfo.skippedItems = skippedItems = new Set();
|
|
857
865
|
}
|
|
858
|
-
|
|
859
|
-
skippedItems.add(skipBuffer
|
|
866
|
+
while (skipBuffer.length > 0) {
|
|
867
|
+
skippedItems.add(/** @type {Module} */ (skipBuffer.pop()));
|
|
860
868
|
}
|
|
861
|
-
skipBuffer.length = 0;
|
|
862
869
|
}
|
|
863
870
|
if (queueBuffer.length > 0) {
|
|
864
|
-
|
|
865
|
-
queue.push(queueBuffer
|
|
871
|
+
while (queueBuffer.length > 0) {
|
|
872
|
+
queue.push(/** @type {QueueItem} */ (queueBuffer.pop()));
|
|
866
873
|
}
|
|
867
|
-
queueBuffer.length = 0;
|
|
868
874
|
}
|
|
869
875
|
}
|
|
870
876
|
|
|
@@ -1076,7 +1082,12 @@ const visitModules = (
|
|
|
1076
1082
|
|
|
1077
1083
|
statMergedAvailableModuleSets += availableModulesToBeMerged.length;
|
|
1078
1084
|
|
|
1079
|
-
|
|
1085
|
+
// Drained by popping: the fold is commutative, and `length = 0` would
|
|
1086
|
+
// drop the backing store that the next enqueue then reallocates.
|
|
1087
|
+
while (availableModulesToBeMerged.length > 0) {
|
|
1088
|
+
const availableModules =
|
|
1089
|
+
/** @type {bigint} */
|
|
1090
|
+
(availableModulesToBeMerged.pop());
|
|
1080
1091
|
if (minAvailableModules === undefined) {
|
|
1081
1092
|
minAvailableModules = availableModules;
|
|
1082
1093
|
} else {
|
|
@@ -1085,8 +1096,6 @@ const visitModules = (
|
|
|
1085
1096
|
}
|
|
1086
1097
|
|
|
1087
1098
|
const changed = minAvailableModules !== cachedMinAvailableModules;
|
|
1088
|
-
|
|
1089
|
-
availableModulesToBeMerged.length = 0;
|
|
1090
1099
|
if (changed) {
|
|
1091
1100
|
info.minAvailableModules = minAvailableModules;
|
|
1092
1101
|
info.resultingAvailableModules = undefined;
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
const ExternalsPlugin = require("../ExternalsPlugin");
|
|
9
9
|
const { coreModules } = require("../node/nodeBuiltins");
|
|
10
10
|
|
|
11
|
-
/** @
|
|
11
|
+
/** @import Compiler from "../Compiler" */
|
|
12
12
|
|
|
13
13
|
// Bun exposes the node.js core modules; externalize them with the `node:`
|
|
14
14
|
// specifier (Bun resolves both forms) like the deno target.
|
|
@@ -8,8 +8,8 @@
|
|
|
8
8
|
const Cache = require("../Cache");
|
|
9
9
|
const ProgressPlugin = require("../ProgressPlugin");
|
|
10
10
|
|
|
11
|
-
/** @
|
|
12
|
-
/** @
|
|
11
|
+
/** @import Compiler from "../Compiler" */
|
|
12
|
+
/** @import PackFileCacheStrategy from "./PackFileCacheStrategy" */
|
|
13
13
|
|
|
14
14
|
const BUILD_DEPENDENCIES_KEY = Symbol("build dependencies key");
|
|
15
15
|
const PLUGIN_NAME = "IdleFileCachePlugin";
|
|
@@ -7,9 +7,8 @@
|
|
|
7
7
|
|
|
8
8
|
const Cache = require("../Cache");
|
|
9
9
|
|
|
10
|
-
/** @
|
|
11
|
-
/** @
|
|
12
|
-
/** @typedef {import("../Compiler")} Compiler */
|
|
10
|
+
/** @import { Data, Etag } from "../Cache" */
|
|
11
|
+
/** @import Compiler from "../Compiler" */
|
|
13
12
|
|
|
14
13
|
class MemoryCachePlugin {
|
|
15
14
|
/**
|
|
@@ -30,16 +29,25 @@ class MemoryCachePlugin {
|
|
|
30
29
|
{ name: "MemoryCachePlugin", stage: Cache.STAGE_MEMORY },
|
|
31
30
|
(identifier, etag, gotHandlers) => {
|
|
32
31
|
const cacheEntry = cache.get(identifier);
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
32
|
+
// A recorded miss: the whole chain was asked for this identifier already.
|
|
33
|
+
if (cacheEntry === null) return null;
|
|
34
|
+
// Etags are compared by identity — a lazy one is interned per source
|
|
35
|
+
// object, so equal content reached through a second object is a
|
|
36
|
+
// different etag. Hashing to tell those apart would cost every hit what
|
|
37
|
+
// laziness saves, so a mismatch falls through to the next stage instead:
|
|
38
|
+
// the file cache compares etags by value and can still answer. Returning
|
|
39
|
+
// `null` here would bail the hook and lose that (`Cache.get` maps it to
|
|
40
|
+
// `undefined` regardless, so it buys the caller nothing).
|
|
41
|
+
if (cacheEntry !== undefined && cacheEntry.etag === etag) {
|
|
42
|
+
return cacheEntry.data;
|
|
37
43
|
}
|
|
38
44
|
gotHandlers.push((result, callback) => {
|
|
39
|
-
if (result
|
|
40
|
-
cache.set(identifier, null);
|
|
41
|
-
} else {
|
|
45
|
+
if (result !== undefined) {
|
|
42
46
|
cache.set(identifier, { etag, data: result });
|
|
47
|
+
} else if (cacheEntry === undefined) {
|
|
48
|
+
// Record the miss only for an identifier nothing was known about:
|
|
49
|
+
// an entry reached with a different etag still answers its own.
|
|
50
|
+
cache.set(identifier, null);
|
|
43
51
|
}
|
|
44
52
|
return callback();
|
|
45
53
|
});
|
|
@@ -7,9 +7,8 @@
|
|
|
7
7
|
|
|
8
8
|
const Cache = require("../Cache");
|
|
9
9
|
|
|
10
|
-
/** @
|
|
11
|
-
/** @
|
|
12
|
-
/** @typedef {import("../Compiler")} Compiler */
|
|
10
|
+
/** @import { Data, Etag } from "../Cache" */
|
|
11
|
+
/** @import Compiler from "../Compiler" */
|
|
13
12
|
|
|
14
13
|
/**
|
|
15
14
|
* Defines the memory with gc cache plugin options type used by this module.
|
|
@@ -104,29 +103,42 @@ class MemoryWithGcCachePlugin {
|
|
|
104
103
|
{ name: PLUGIN_NAME, stage: Cache.STAGE_MEMORY },
|
|
105
104
|
(identifier, etag, gotHandlers) => {
|
|
106
105
|
const cacheEntry = cache.get(identifier);
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
106
|
+
// A recorded miss: the whole chain was asked for this identifier already.
|
|
107
|
+
if (cacheEntry === null) return null;
|
|
108
|
+
// Etags are compared by identity — a lazy one is interned per source
|
|
109
|
+
// object, so equal content reached through a second object is a
|
|
110
|
+
// different etag. Hashing to tell those apart would cost every hit what
|
|
111
|
+
// laziness saves, so a mismatch falls through to the next stage instead:
|
|
112
|
+
// the file cache compares etags by value and can still answer. Returning
|
|
113
|
+
// `null` here would bail the hook and lose that (`Cache.get` maps it to
|
|
114
|
+
// `undefined` regardless, so it buys the caller nothing).
|
|
115
|
+
let known = cacheEntry !== undefined;
|
|
116
|
+
if (cacheEntry !== undefined) {
|
|
117
|
+
if (cacheEntry.etag === etag) return cacheEntry.data;
|
|
118
|
+
} else {
|
|
119
|
+
const oldCacheEntry = oldCache.get(identifier);
|
|
120
|
+
if (oldCacheEntry !== undefined) {
|
|
121
|
+
const entry = oldCacheEntry.entry;
|
|
122
|
+
if (entry === null) {
|
|
123
|
+
oldCache.delete(identifier);
|
|
124
|
+
cache.set(identifier, entry);
|
|
125
|
+
return null;
|
|
126
|
+
}
|
|
127
|
+
known = true;
|
|
128
|
+
if (entry.etag === etag) {
|
|
129
|
+
oldCache.delete(identifier);
|
|
130
|
+
cache.set(identifier, entry);
|
|
131
|
+
return entry.data;
|
|
132
|
+
}
|
|
119
133
|
}
|
|
120
|
-
if (cacheEntry.etag !== etag) return null;
|
|
121
|
-
oldCache.delete(identifier);
|
|
122
|
-
cache.set(identifier, cacheEntry);
|
|
123
|
-
return cacheEntry.data;
|
|
124
134
|
}
|
|
125
135
|
gotHandlers.push((result, callback) => {
|
|
126
|
-
if (result
|
|
127
|
-
cache.set(identifier, null);
|
|
128
|
-
} else {
|
|
136
|
+
if (result !== undefined) {
|
|
129
137
|
cache.set(identifier, { etag, data: result });
|
|
138
|
+
} else if (!known) {
|
|
139
|
+
// Record the miss only for an identifier nothing was known about:
|
|
140
|
+
// an entry reached with a different etag still answers its own.
|
|
141
|
+
cache.set(identifier, null);
|
|
130
142
|
}
|
|
131
143
|
return callback();
|
|
132
144
|
});
|
|
@@ -18,19 +18,26 @@ const {
|
|
|
18
18
|
createFileSerializer
|
|
19
19
|
} = require("../util/serialization");
|
|
20
20
|
|
|
21
|
-
/** @
|
|
22
|
-
/** @
|
|
23
|
-
/** @
|
|
24
|
-
/** @
|
|
25
|
-
/**
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
/** @
|
|
33
|
-
/**
|
|
21
|
+
/** @import { SnapshotOptions } from "../../declarations/WebpackOptions" */
|
|
22
|
+
/** @import { FileSystemDependencies } from "../Compilation" */
|
|
23
|
+
/** @import { Data, Etag } from "../Cache" */
|
|
24
|
+
/** @import Compiler from "../Compiler" */
|
|
25
|
+
/**
|
|
26
|
+
* @import {
|
|
27
|
+
* ResolveBuildDependenciesResult,
|
|
28
|
+
* ResolveResults,
|
|
29
|
+
* Snapshot
|
|
30
|
+
* } from "../FileSystemInfo"
|
|
31
|
+
*/
|
|
32
|
+
/** @import { Logger } from "../logging/Logger" */
|
|
33
|
+
/**
|
|
34
|
+
* @import {
|
|
35
|
+
* ObjectDeserializerContext,
|
|
36
|
+
* ObjectSerializerContext
|
|
37
|
+
* } from "../serialization/ObjectMiddleware"
|
|
38
|
+
*/
|
|
39
|
+
/** @import { HashFunction } from "../util/Hash" */
|
|
40
|
+
/** @import { IntermediateFileSystem } from "../util/fs" */
|
|
34
41
|
|
|
35
42
|
/** @typedef {Set<string>} Items */
|
|
36
43
|
/** @typedef {Set<string>} BuildDependencies */
|
|
@@ -52,10 +59,10 @@ class PackContainer {
|
|
|
52
59
|
* Creates an instance of PackContainer.
|
|
53
60
|
* @param {Pack} data stored data
|
|
54
61
|
* @param {string} version version identifier
|
|
55
|
-
* @param {Snapshot} buildSnapshot snapshot of all build dependencies
|
|
62
|
+
* @param {InstanceType<Snapshot>} buildSnapshot snapshot of all build dependencies
|
|
56
63
|
* @param {BuildDependencies} buildDependencies list of all unresolved build dependencies captured
|
|
57
64
|
* @param {ResolveResults} resolveResults result of the resolved build dependencies
|
|
58
|
-
* @param {Snapshot} resolveBuildDependenciesSnapshot snapshot of the dependencies of the build dependencies resolving
|
|
65
|
+
* @param {InstanceType<Snapshot>} resolveBuildDependenciesSnapshot snapshot of the dependencies of the build dependencies resolving
|
|
59
66
|
*/
|
|
60
67
|
constructor(
|
|
61
68
|
data,
|
|
@@ -69,13 +76,13 @@ class PackContainer {
|
|
|
69
76
|
this.data = data;
|
|
70
77
|
/** @type {string} */
|
|
71
78
|
this.version = version;
|
|
72
|
-
/** @type {Snapshot} */
|
|
79
|
+
/** @type {InstanceType<Snapshot>} */
|
|
73
80
|
this.buildSnapshot = buildSnapshot;
|
|
74
81
|
/** @type {BuildDependencies} */
|
|
75
82
|
this.buildDependencies = buildDependencies;
|
|
76
83
|
/** @type {ResolveResults} */
|
|
77
84
|
this.resolveResults = resolveResults;
|
|
78
|
-
/** @type {Snapshot} */
|
|
85
|
+
/** @type {InstanceType<Snapshot>} */
|
|
79
86
|
this.resolveBuildDependenciesSnapshot = resolveBuildDependenciesSnapshot;
|
|
80
87
|
}
|
|
81
88
|
|
|
@@ -1256,11 +1263,11 @@ class PackFileCacheStrategy {
|
|
|
1256
1263
|
this.buildDependencies = new Set();
|
|
1257
1264
|
/** @type {FileSystemDependencies} */
|
|
1258
1265
|
this.newBuildDependencies = new LazySet();
|
|
1259
|
-
/** @type {Snapshot | undefined} */
|
|
1266
|
+
/** @type {InstanceType<Snapshot> | undefined} */
|
|
1260
1267
|
this.resolveBuildDependenciesSnapshot = undefined;
|
|
1261
1268
|
/** @type {ResolveResults | undefined} */
|
|
1262
1269
|
this.resolveResults = undefined;
|
|
1263
|
-
/** @type {Snapshot | undefined} */
|
|
1270
|
+
/** @type {InstanceType<Snapshot> | undefined} */
|
|
1264
1271
|
this.buildSnapshot = undefined;
|
|
1265
1272
|
/** @type {Promise<Pack> | undefined} */
|
|
1266
1273
|
this.packPromise = this._openPack();
|
|
@@ -1285,13 +1292,13 @@ class PackFileCacheStrategy {
|
|
|
1285
1292
|
*/
|
|
1286
1293
|
_openPack() {
|
|
1287
1294
|
const { logger, profile, cacheLocation, version } = this;
|
|
1288
|
-
/** @type {Snapshot} */
|
|
1295
|
+
/** @type {InstanceType<Snapshot>} */
|
|
1289
1296
|
let buildSnapshot;
|
|
1290
1297
|
/** @type {BuildDependencies} */
|
|
1291
1298
|
let buildDependencies;
|
|
1292
1299
|
/** @type {BuildDependencies} */
|
|
1293
1300
|
let newBuildDependencies;
|
|
1294
|
-
/** @type {Snapshot} */
|
|
1301
|
+
/** @type {InstanceType<Snapshot>} */
|
|
1295
1302
|
let resolveBuildDependenciesSnapshot;
|
|
1296
1303
|
/** @type {ResolveResults | undefined} */
|
|
1297
1304
|
let resolveResults;
|
|
@@ -1633,12 +1640,12 @@ class PackFileCacheStrategy {
|
|
|
1633
1640
|
const content = new PackContainer(
|
|
1634
1641
|
pack,
|
|
1635
1642
|
this.version,
|
|
1636
|
-
/** @type {Snapshot} */
|
|
1643
|
+
/** @type {InstanceType<Snapshot>} */
|
|
1637
1644
|
(this.buildSnapshot),
|
|
1638
1645
|
updatedBuildDependencies,
|
|
1639
1646
|
/** @type {ResolveResults} */
|
|
1640
1647
|
(this.resolveResults),
|
|
1641
|
-
/** @type {Snapshot} */
|
|
1648
|
+
/** @type {InstanceType<Snapshot>} */
|
|
1642
1649
|
(this.resolveBuildDependenciesSnapshot)
|
|
1643
1650
|
);
|
|
1644
1651
|
const cleanup = this.fs.unlink !== undefined;
|
|
@@ -8,18 +8,29 @@
|
|
|
8
8
|
const LazySet = require("../util/LazySet");
|
|
9
9
|
const makeSerializable = require("../util/makeSerializable");
|
|
10
10
|
|
|
11
|
-
/**
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
/** @
|
|
20
|
-
/** @
|
|
21
|
-
/**
|
|
22
|
-
|
|
11
|
+
/**
|
|
12
|
+
* @import {
|
|
13
|
+
* ResolveContext,
|
|
14
|
+
* ResolveOptions,
|
|
15
|
+
* ResolveRequest,
|
|
16
|
+
* Resolver
|
|
17
|
+
* } from "enhanced-resolve"
|
|
18
|
+
*/
|
|
19
|
+
/** @import { ItemCacheFacade } from "../CacheFacade" */
|
|
20
|
+
/** @import Compiler from "../Compiler" */
|
|
21
|
+
/**
|
|
22
|
+
* @import FileSystemInfo, {
|
|
23
|
+
* Snapshot,
|
|
24
|
+
* SnapshotOptions
|
|
25
|
+
* } from "../FileSystemInfo"
|
|
26
|
+
*/
|
|
27
|
+
/** @import { ResolveOptionsWithDependencyType } from "../ResolverFactory" */
|
|
28
|
+
/**
|
|
29
|
+
* @import {
|
|
30
|
+
* ObjectDeserializerContext,
|
|
31
|
+
* ObjectSerializerContext
|
|
32
|
+
* } from "../serialization/ObjectMiddleware"
|
|
33
|
+
*/
|
|
23
34
|
|
|
24
35
|
/**
|
|
25
36
|
* Defines the sync hook type used by this module.
|
|
@@ -33,12 +44,12 @@ class CacheEntry {
|
|
|
33
44
|
/**
|
|
34
45
|
* Creates an instance of CacheEntry.
|
|
35
46
|
* @param {ResolveRequest} result result
|
|
36
|
-
* @param {Snapshot} snapshot snapshot
|
|
47
|
+
* @param {InstanceType<Snapshot>} snapshot snapshot
|
|
37
48
|
*/
|
|
38
49
|
constructor(result, snapshot) {
|
|
39
50
|
/** @type {ResolveRequest} */
|
|
40
51
|
this.result = result;
|
|
41
|
-
/** @type {Snapshot} */
|
|
52
|
+
/** @type {InstanceType<Snapshot>} */
|
|
42
53
|
this.snapshot = snapshot;
|
|
43
54
|
}
|
|
44
55
|
|
|
@@ -112,7 +123,7 @@ class ResolverCachePlugin {
|
|
|
112
123
|
*/
|
|
113
124
|
apply(compiler) {
|
|
114
125
|
const cache = compiler.getCache(PLUGIN_NAME);
|
|
115
|
-
/** @type {FileSystemInfo} */
|
|
126
|
+
/** @type {FileSystemInfo | undefined} */
|
|
116
127
|
let fileSystemInfo;
|
|
117
128
|
/** @type {SnapshotOptions | undefined} */
|
|
118
129
|
let snapshotOptions;
|
|
@@ -120,6 +131,12 @@ class ResolverCachePlugin {
|
|
|
120
131
|
let cachedResolves = 0;
|
|
121
132
|
let cacheInvalidResolves = 0;
|
|
122
133
|
let concurrentResolves = 0;
|
|
134
|
+
// FileSystemInfo reaches the whole Compilation through its logger, so this
|
|
135
|
+
// compiler-lifetime closure would outlive what `Compiler.close()` releases.
|
|
136
|
+
compiler.hooks.shutdown.tap(PLUGIN_NAME, () => {
|
|
137
|
+
fileSystemInfo = undefined;
|
|
138
|
+
snapshotOptions = undefined;
|
|
139
|
+
});
|
|
123
140
|
compiler.hooks.thisCompilation.tap(PLUGIN_NAME, (compilation) => {
|
|
124
141
|
snapshotOptions = compilation.options.snapshot.resolve;
|
|
125
142
|
fileSystemInfo = compilation.fileSystemInfo;
|
|
@@ -144,7 +161,7 @@ class ResolverCachePlugin {
|
|
|
144
161
|
|
|
145
162
|
/**
|
|
146
163
|
* Processes the provided item cache.
|
|
147
|
-
* @param {ItemCacheFacade} itemCache cache
|
|
164
|
+
* @param {InstanceType<ItemCacheFacade>} itemCache cache
|
|
148
165
|
* @param {Resolver} resolver the resolver
|
|
149
166
|
* @param {ResolveContext} resolveContext context for resolving meta info
|
|
150
167
|
* @param {ResolveRequest} request the request info object
|
|
@@ -209,7 +226,9 @@ class ResolverCachePlugin {
|
|
|
209
226
|
const fileDependencies = newResolveContext.fileDependencies;
|
|
210
227
|
const contextDependencies = newResolveContext.contextDependencies;
|
|
211
228
|
const missingDependencies = newResolveContext.missingDependencies;
|
|
212
|
-
fileSystemInfo.
|
|
229
|
+
// Only reachable past the `!fileSystemInfo` guard on the resolve tap.
|
|
230
|
+
const fsInfo = /** @type {FileSystemInfo} */ (fileSystemInfo);
|
|
231
|
+
fsInfo.createSnapshot(
|
|
213
232
|
resolveTime,
|
|
214
233
|
/** @type {Dependencies} */
|
|
215
234
|
(fileDependencies),
|
|
@@ -395,7 +414,8 @@ class ResolverCachePlugin {
|
|
|
395
414
|
|
|
396
415
|
if (cacheEntry) {
|
|
397
416
|
const { snapshot, result } = cacheEntry;
|
|
398
|
-
|
|
417
|
+
const fsInfo = /** @type {FileSystemInfo} */ (fileSystemInfo);
|
|
418
|
+
fsInfo.checkSnapshotValid(snapshot, (err, valid) => {
|
|
399
419
|
if (err || !valid) {
|
|
400
420
|
cacheInvalidResolves++;
|
|
401
421
|
return doRealResolve(
|
|
@@ -8,9 +8,8 @@
|
|
|
8
8
|
const { DEFAULTS } = require("../config/defaults");
|
|
9
9
|
const createHash = require("../util/createHash");
|
|
10
10
|
|
|
11
|
-
/** @
|
|
11
|
+
/** @import Hash, { HashFunction } from "../util/Hash" */
|
|
12
12
|
/** @typedef {typeof import("../util/Hash")} HashConstructor */
|
|
13
|
-
/** @typedef {import("../util/Hash").HashFunction} HashFunction */
|
|
14
13
|
|
|
15
14
|
/**
|
|
16
15
|
* Represents the lazy hashed etag runtime component.
|
package/lib/cache/mergeEtags.js
CHANGED
package/lib/cli.js
CHANGED
|
@@ -11,9 +11,7 @@ const webpackSchema =
|
|
|
11
11
|
/** @type {EXPECTED_ANY} */
|
|
12
12
|
(require("../schemas/WebpackOptions.json"));
|
|
13
13
|
|
|
14
|
-
/** @
|
|
15
|
-
/** @typedef {import("json-schema").JSONSchema6} JSONSchema6 */
|
|
16
|
-
/** @typedef {import("json-schema").JSONSchema7} JSONSchema7 */
|
|
14
|
+
/** @import { JSONSchema4, JSONSchema6, JSONSchema7 } from "json-schema" */
|
|
17
15
|
/** @typedef {JSONSchema4 | JSONSchema6 | JSONSchema7} JSONSchema */
|
|
18
16
|
/** @typedef {JSONSchema & { absolutePath: boolean, instanceof: string, cli: { helper?: boolean, exclude?: boolean, description?: string, negatedDescription?: string, resetDescription?: string } }} Schema */
|
|
19
17
|
|
|
@@ -8,13 +8,23 @@
|
|
|
8
8
|
const path = require("path");
|
|
9
9
|
const browserslist = require("browserslist");
|
|
10
10
|
|
|
11
|
-
/**
|
|
12
|
-
|
|
13
|
-
|
|
11
|
+
/**
|
|
12
|
+
* @import {
|
|
13
|
+
* ApiTargetProperties,
|
|
14
|
+
* EcmaTargetProperties,
|
|
15
|
+
* PlatformTargetProperties
|
|
16
|
+
* } from "./target"
|
|
17
|
+
*/
|
|
14
18
|
|
|
15
19
|
// [[C:]/path/to/config][:env]
|
|
16
20
|
const inputRx = /^(?:((?:[A-Z]:)?[/\\].*?))?(?::(.+?))?$/i;
|
|
17
21
|
|
|
22
|
+
// One resolution per `[input, context]` — several callers ask for the same
|
|
23
|
+
// target, and each miss re-reads the config and re-runs the queries. The list is
|
|
24
|
+
// handed out as it stands, so no caller may write to it.
|
|
25
|
+
/** @type {Map<string, string[] | undefined> | null} */
|
|
26
|
+
const cache = process.env.BROWSERSLIST_DISABLE_CACHE ? null : new Map();
|
|
27
|
+
|
|
18
28
|
/**
|
|
19
29
|
* Returns selected browsers.
|
|
20
30
|
* @param {string | null | undefined} input input string
|
|
@@ -22,6 +32,25 @@ const inputRx = /^(?:((?:[A-Z]:)?[/\\].*?))?(?::(.+?))?$/i;
|
|
|
22
32
|
* @returns {string[] | undefined} selected browsers
|
|
23
33
|
*/
|
|
24
34
|
const load = (input, context) => {
|
|
35
|
+
if (cache === null) return loadBrowsers(input, context);
|
|
36
|
+
// A newline separates the two: an input carries a config path, an env or a
|
|
37
|
+
// query, and a directory carries none.
|
|
38
|
+
const key = `${input || ""}\n${context}`;
|
|
39
|
+
let browsers = cache.get(key);
|
|
40
|
+
if (browsers === undefined && !cache.has(key)) {
|
|
41
|
+
browsers = loadBrowsers(input, context);
|
|
42
|
+
cache.set(key, browsers);
|
|
43
|
+
}
|
|
44
|
+
return browsers;
|
|
45
|
+
};
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* Read the selection out of the browserslist config or query.
|
|
49
|
+
* @param {string | null | undefined} input input string
|
|
50
|
+
* @param {string} context the context directory
|
|
51
|
+
* @returns {string[] | undefined} selected browsers
|
|
52
|
+
*/
|
|
53
|
+
const loadBrowsers = (input, context) => {
|
|
25
54
|
// browserslist:path-to-config
|
|
26
55
|
// browserslist:path-to-config:env
|
|
27
56
|
if (input && path.isAbsolute(input)) {
|
|
@@ -69,8 +98,15 @@ const resolve = (browsers) => {
|
|
|
69
98
|
* @param {Record<string, number | [number, number]>} versions first supported version
|
|
70
99
|
* @returns {boolean} true if supports
|
|
71
100
|
*/
|
|
72
|
-
const rawChecker = (versions) =>
|
|
73
|
-
|
|
101
|
+
const rawChecker = (versions) => checkAll(browsers, versions);
|
|
102
|
+
/**
|
|
103
|
+
* Checks a subset of the list against a version number
|
|
104
|
+
* @param {string[]} list the browsers to check
|
|
105
|
+
* @param {Record<string, number | [number, number]>} versions first supported version
|
|
106
|
+
* @returns {boolean} true if all support
|
|
107
|
+
*/
|
|
108
|
+
const checkAll = (list, versions) =>
|
|
109
|
+
list.every((v) => {
|
|
74
110
|
const [name, parsedVersion] = v.split(" ");
|
|
75
111
|
if (!name) return false;
|
|
76
112
|
const requiredVersion = versions[name];
|