import type { Compiler, Configuration, EntryObject, FileCacheOptions, Optimization, RuleSetRule, StatsOptions, } from '@roots/bud-framework/config' export interface Sync { bail: boolean cache: any 'cache.allowCollectingMemory': FileCacheOptions[`allowCollectingMemory`] 'cache.buildDependencies': FileCacheOptions[`buildDependencies`] 'cache.cacheDirectory': FileCacheOptions[`cacheDirectory`] 'cache.managedPaths': FileCacheOptions[`managedPaths`] 'cache.name': string 'cache.type': `filesystem` | `memory` 'cache.version': string context: Configuration[`context`] dependencies: Configuration[`dependencies`] devtool: Configuration[`devtool`] entry: Record experiments: Configuration[`experiments`] externals: Record | RegExp | string> externalsType: Configuration[`externalsType`] infrastructureLogging: Configuration[`infrastructureLogging`] 'infrastructureLogging.console': Configuration[`infrastructureLogging`][`console`] 'infrastructureLogging.level': Configuration[`infrastructureLogging`][`level`] loader: Configuration[`loader`] mode: ('development' | 'production') & Configuration[`mode`] module: Configuration[`module`] 'module.noParse': Configuration[`module`][`noParse`] 'module.rules': Configuration[`module`][`rules`] 'module.rules.after': Array 'module.rules.before': Array 'module.rules.oneOf': Array 'module.unsafeCache': Configuration[`module`][`unsafeCache`] name: Configuration[`name`] node: Configuration[`node`] optimization: Configuration[`optimization`] 'optimization.emitOnErrors': Configuration[`optimization`][`emitOnErrors`] 'optimization.innerGraph': Configuration[`optimization`][`innerGraph`] 'optimization.mangleExports': Configuration[`optimization`][`mangleExports`] 'optimization.mergeDuplicateChunks': Configuration[`optimization`][`mergeDuplicateChunks`] 'optimization.minimize': Configuration[`optimization`][`minimize`] 'optimization.minimizer': Array< '...' | ((compiler: Compiler) => void) | {apply: any} > 'optimization.moduleIds': Configuration[`optimization`][`moduleIds`] 'optimization.nodeEnv': Configuration[`optimization`][`nodeEnv`] 'optimization.providedExports': Configuration[`optimization`][`providedExports`] 'optimization.removeAvailableModules': Configuration[`optimization`][`removeAvailableModules`] 'optimization.removeEmptyChunks': Configuration[`optimization`][`removeEmptyChunks`] 'optimization.runtimeChunk': Configuration[`optimization`][`runtimeChunk`] 'optimization.sideEffects': Configuration[`optimization`][`sideEffects`] 'optimization.splitChunks': false | Optimization.SplitChunks 'optimization.usedExports': Configuration[`optimization`][`usedExports`] output: Configuration[`output`] 'output.assetModuleFilename': Configuration[`output`][`assetModuleFilename`] 'output.chunkFilename': Configuration[`output`][`chunkFilename`] 'output.chunkFormat': Configuration[`output`][`chunkFormat`] 'output.chunkLoading': Configuration[`output`][`chunkLoading`] 'output.clean': boolean & Configuration[`output`][`clean`] 'output.environment': Configuration[`output`][`environment`] 'output.filename': Configuration[`output`][`filename`] 'output.hashFunction': Configuration[`output`][`hashFunction`] 'output.hotUpdateChunkFilename': Configuration[`output`][`hotUpdateChunkFilename`] 'output.hotUpdateMainFilename': Configuration[`output`][`hotUpdateMainFilename`] 'output.iife': Configuration[`output`][`iife`] 'output.module': Configuration[`output`][`module`] 'output.path': Configuration[`output`][`path`] 'output.pathinfo': Configuration[`output`][`pathinfo`] 'output.publicPath': string 'output.scriptType': `module` | `text/javascript` | false 'output.uniqueName': string parallelism: Configuration[`parallelism`] performance: Configuration[`performance`] profile: Configuration[`profile`] recordsPath: Configuration[`recordsPath`] 'resolve.extensionAlias': Configuration[`resolve`][`extensionAlias`] 'resolve.extensions': Set 'resolve.symlinks': Configuration[`resolve`][`symlinks`] resolveLoader: Configuration[`resolveLoader`] 'resolveLoader.alias': Configuration[`resolveLoader`][`alias`] 'resolveLoader.modules': Configuration[`resolveLoader`][`modules`] snapshot: Configuration[`snapshot`] 'snapshot.buildDependencies': Configuration[`snapshot`][`buildDependencies`] 'snapshot.immutablePaths': Configuration[`snapshot`][`immutablePaths`] 'snapshot.managedPaths': Configuration[`snapshot`][`managedPaths`] 'snapshot.module': Configuration[`snapshot`][`module`] 'snapshot.resolve': Configuration[`snapshot`][`resolve`] 'snapshot.resolveBuildDependencies': Configuration[`snapshot`][`resolveBuildDependencies`] stats: StatsOptions 'stats.preset': string target: Configuration[`target`] watch: Configuration[`watch`] watchOptions: Configuration[`watchOptions`] } export type SyncRegistry = { [P in keyof Sync as `build.${P & string}`]: Sync[P] | undefined } export interface Async { plugins: Array resolve: any 'resolve.alias': {[index: string]: false | string | string[]} | undefined 'resolve.aliasFields': Configuration[`resolve`][`aliasFields`] 'resolve.extensionAlias': Configuration[`resolve`][`extensionAlias`] 'resolve.modules': Configuration[`resolve`][`modules`] | undefined } export type AsyncRegistry = { [P in keyof Async as `build.${P & string}`]: Async[P] } export type Registry = AsyncRegistry & SyncRegistry