@buurman/sdk
Version:
The buurman SDK
48 lines • 1.92 kB
TypeScript
export interface Task<TOptions extends TaskOptions> {
npmPackage: string;
name: string;
description: string;
category: TaskCategory;
tags: string[];
options: TaskOptionMap<TOptions>;
apply(options: TOptions): Promise<void>;
isInstalled(): Promise<boolean> | boolean;
isSupported(): Promise<boolean> | boolean;
}
export interface Integration<TOptions extends TaskOptions> extends Task<TOptions> {
integrates: string[];
}
export declare enum TaskCategory {
UNKNOWN = "UNKNOWN",
CI = "CI",
TESTING = "TESTING",
TOOLING = "TOOLING",
BUILD = "BUILD",
LIBRARY = "LIBRARY",
DOCUMENTATION = "DOCUMENTATION",
GENERATOR = "GENERATOR",
VCS = "VCS"
}
export declare type TaskOptions = {
[name: string]: TaskOptionPrimitiveType;
};
export declare type TaskOptionPrimitiveType = string | number | boolean | object | Array<any>;
export declare enum TaskOptionType {
STRING = "STRING",
BOOLEAN = "BOOLEAN",
NUMBER = "NUMBER",
OBJECT = "OBJECT",
ARRAY = "ARRAY"
}
export declare type TaskOptionMap<TOptions extends TaskOptions> = {
[P in keyof TOptions]: TaskOption<P, TOptions>;
};
export declare type getTaskOptionType<TPrimitive extends TaskOptionPrimitiveType> = TPrimitive extends string ? TaskOptionType.STRING : TPrimitive extends number ? TaskOptionType.NUMBER : TPrimitive extends boolean ? TaskOptionType.BOOLEAN : TPrimitive extends Array<any> ? TaskOptionType.ARRAY : TPrimitive extends object ? TaskOptionType.OBJECT : unknown;
export interface TaskOption<TKey extends keyof TOptions, TOptions extends TaskOptions> {
name: TKey;
type: getTaskOptionType<TOptions[TKey]>;
required: boolean;
defaultValue?: TOptions[TKey];
validate(value: TOptions[TKey], options: TOptions): Promise<boolean | string> | boolean | string;
}
//# sourceMappingURL=Task.d.ts.map