@enspirit/emb
Version:
A replacement for our Makefile-for-monorepos
26 lines (25 loc) • 832 B
TypeScript
type ExpandOptions = {
default?: string;
sources?: Record<string, Record<string, unknown>>;
};
export type ExpansionHistory = {
source: string;
value: unknown;
variable: string;
};
export type Expandable = readonly Expandable[] | string | {
readonly [k: string]: Expandable;
};
type ExpandResult<T> = T extends string ? string : T extends readonly (infer U)[] ? ReadonlyArray<ExpandResult<U>> : T extends {
readonly [K in keyof T]: Expandable;
} ? {
readonly [K in keyof T]: ExpandResult<T[K]>;
} : T;
export declare class TemplateExpander {
private expansions;
get expansionCount(): number;
expand(str: string, options?: ExpandOptions): Promise<string>;
expandRecord<T extends Expandable>(record: T, options: ExpandOptions): Promise<ExpandResult<T>>;
private track;
}
export {};