@kcws/rspack-config
Version:
rspack configuration builder
68 lines (51 loc) • 2.92 kB
TypeScript
import type { Configuration } from '@rspack/core';
import type { RspackPluginFunction } from '@rspack/core';
import type { RspackPluginInstance } from '@rspack/core';
declare type Condition = () => boolean;
/* Excluded from this release type: ConfigBuilder */
/**
* @public
*/
export declare class ConfigService<Transformers extends ConfigTransformers> {
static define<Name extends string, Params extends unknown[], Transformer extends ConfigTransformer<Params> = ConfigTransformer<Params>>(name: Name, transformer: Transformer): ConfigService<{ [name in Name]: Transformer; }>;
static builder(config?: Configuration): ConfigBuilder<{}>;
private readonly transformers;
private constructor();
define<Name extends string, Params extends unknown[], Transformer extends ConfigTransformer<Params> = ConfigTransformer<Params>>(name: Name, transformer: Transformer): ConfigService<Merge<Transformers, Name, Transformer>>;
builder(config?: Configuration): ConfigBuilder<Transformers>;
}
/**
* @public
*/
export declare type ConfigTransformer<Params extends unknown[] = unknown[]> = (input: ConfigWrapper, ...params: Params) => ConfigWrapper;
/**
* @public
*/
export declare type ConfigTransformers = Record<string, ConfigTransformer>;
declare class ConfigWrapper {
private base;
constructor(base: Configuration);
get config(): Configuration;
set(config: Configuration): ConfigWrapper;
merge(config: Configuration): ConfigWrapper;
setEntry(input: Entry, condition?: Condition): ConfigWrapper;
addEntry(input: EntryRecord, condition?: Condition): ConfigWrapper;
addRelativeEntry(input: EntryStringRecord, condition?: Condition): ConfigWrapper;
addEntryByName(name: string, value: EntryRecordValue, condition?: Condition): ConfigWrapper;
addRelativeEntryByName(name: string, value: EntryStringRecordValue, condition?: Condition): ConfigWrapper;
setPlugins(plugins: Plugins, condition?: Condition): ConfigWrapper;
addPlugins(plugin: Plugin, condition?: Condition): ConfigWrapper;
private convertEntryRecord;
}
declare type Entry = Exclude<Configuration["entry"], undefined>;
declare type EntryRecord = Extract<Entry, Record<string, unknown> | Function>;
declare type EntryRecordValue = Extract<Entry, Record<string, unknown>>[string];
declare type EntryStringRecord = Record<string, EntryStringRecordValue>;
declare type EntryStringRecordValue = Extract<EntryRecordValue, string | string[]>;
declare type Merge<BaseObject, Key extends string, Value> = BaseObject & {
[name in Key]: Value;
};
declare type Plugin = RspackPluginInstance | RspackPluginFunction;
declare type Plugins = Exclude<Configuration["plugins"], undefined>;
declare type TransformerParams<T extends (...args: any) => any> = Parameters<T> extends [unknown, ...infer R] ? R : never;
export { }