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;