@roots/bud-build
Version:
bud.js core module
37 lines (36 loc) • 1.12 kB
TypeScript
import type Rule from '@roots/bud-build/rule';
import type { Bud } from '@roots/bud-framework';
import * as items from '@roots/bud-build/items';
import * as loaders from '@roots/bud-build/loaders';
import * as rules from '@roots/bud-build/rules';
interface Props {
filter: Bud[`hooks`][`filter`];
isProduction: Bud[`isProduction`];
makeItem: Bud[`build`][`makeItem`];
makeLoader: Bud[`build`][`makeLoader`];
makeRule: Bud[`build`][`makeRule`];
path: Bud[`path`];
resolve: Bud[`module`][`resolve`];
}
interface Factory<T = Rule> {
(props: Props): Promise<T>;
}
/**
* Register built-in {@link loaders}, {@link items} and {@link rules}
*/
declare function register(bud: Bud): Promise<void>;
/**
* Registry factory curry function
*/
interface makeRegister {
<T, F extends CallableFunction>(props: Partial<Bud>, setRule: F): <K extends keyof T & string>([key, factory]: [
K,
Factory<T[K]>
]) => void;
}
/**
* Registry factory
*/
declare const makeRegister: makeRegister;
export { items, loaders, makeRegister, register, rules };
export type { Factory, Props };