@scaffdog/types
Version:
scaffdog's type declarations.
45 lines (37 loc) • 1.26 kB
TypeScript
import { Merge } from 'type-fest';
type TagPair = Readonly<[open: string, close: string]>;
type Variable = undefined | null | string | number | boolean | {
[key in string]: Variable;
} | Variable[];
type VariableMap = Map<string, Variable>;
type VariableRecord = Record<string, Variable>;
type Context = {
cwd: string;
variables: VariableMap;
helpers: HelperMap;
tags: TagPair;
};
type Helper<T extends any[] = any[]> = (context: Context, ...args: T) => string | Helper | Variable;
type HelperMap = Map<string, Helper>;
type HelperRecord = Record<string, Helper>;
type HelperRegister = (registry: HelperMap) => void;
type Config = {
files: string[];
variables?: VariableRecord;
helpers?: (HelperRecord | HelperRegister)[];
tags?: TagPair;
};
type ResolvedConfig = Merge<Config, {
variables: VariableMap;
helpers: HelperMap;
}>;
type SourceRange = [start: number, end: number];
type SourcePosition = {
line: number;
column: number;
};
type SourceLocation = {
start: SourcePosition;
end: SourcePosition;
};
export { Config, Context, Helper, HelperMap, HelperRecord, HelperRegister, ResolvedConfig, SourceLocation, SourcePosition, SourceRange, TagPair, Variable, VariableMap, VariableRecord };