@appium/docutils
Version:
Documentation generation utilities for Appium and related projects
95 lines • 2.93 kB
TypeScript
/**
* Implementation of a generic "create and/or update some file" task
* @module
*/
import { NormalizedPackageJson } from 'read-pkg';
import { JsonValue, JsonObject } from 'type-fest';
/**
* Options for a task which are not the {@link ScaffoldTaskOptions base options}
*/
export type TaskSpecificOpts<Opts extends ScaffoldTaskOptions> = Omit<Opts, keyof ScaffoldTaskOptions>;
/**
* A function which performs some scaffolding task.
*
* @see {@linkcode createScaffoldTask}
*/
export type ScaffoldTask<Opts extends ScaffoldTaskOptions, T extends JsonObject> = (opts: Opts) => Promise<ScaffoldTaskResult<T>>;
/**
* Factory for a {@linkcode ScaffoldTask}.
*
* @param defaultFilename Default file to create
* @param defaultContent Default content to use
* @param description Description of task
* @param opts Options
* @returns A scaffold task
*/
export declare function createScaffoldTask<Opts extends ScaffoldTaskOptions, T extends JsonObject>(defaultFilename: string, defaultContent: T, description: string, { transform, deserialize, serialize, }?: CreateScaffoldTaskOptions<Opts, T>): ScaffoldTask<Opts, T>;
/**
* Optional function which can be used to post-process the content of a file. Usually used to merge
* various options with existing content
*/
export type ScaffoldTaskTransformer<Opts extends ScaffoldTaskOptions, T extends JsonValue> = (content: Readonly<T>, opts: TaskSpecificOpts<Opts>, pkg: Readonly<NormalizedPackageJson>) => T;
/**
* A function which deserializes a string into a JS value.
*/
export type ScaffoldTaskDeserializer<T> = (content: string) => T;
/**
* A function which serializes a JS value into a string.
*/
export type ScaffoldTaskSerializer<T> = (content: T) => string;
/**
* Options for {@linkcode createScaffoldTask}
*/
export interface CreateScaffoldTaskOptions<Opts extends ScaffoldTaskOptions, T extends JsonValue> {
/**
* Transformer function
*/
transform?: ScaffoldTaskTransformer<Opts, T>;
/**
* Deserializer function
*/
deserialize?: ScaffoldTaskDeserializer<T>;
/**
* Serializer function
*/
serialize?: ScaffoldTaskSerializer<T>;
}
/**
* Base options for all scaffold tasks
*/
export interface ScaffoldTaskOptions {
/**
* Current working directory
*/
cwd?: string;
/**
* Destination file
*/
dest?: string;
/**
* If `true` will not write files
*/
dryRun?: boolean;
/**
* If `true` will overwrite fields in `typedoc.json`
*/
overwrite?: boolean;
/**
* Path to `package.json`
*/
packageJson?: string;
}
/**
* The return value of a {@linkcode ScaffoldTask}
*/
export interface ScaffoldTaskResult<T> {
/**
* The content of whatever it wrote or would write
*/
content: T;
/**
* The filepath of whatever it wrote or would write
*/
path: string;
}
//# sourceMappingURL=scaffold.d.ts.map