UNPKG

@decaf-ts/utils

Version:

module management utils for decaf-ts

30 lines (29 loc) 1.46 kB
import { StandardOutputWriter } from "./StandardOutputWriter"; import { PromiseExecutor } from "../utils/types"; /** * @description Represents the type of output stream. * @summary A union type for standard output and standard error streams. * @typedef {("stdout" | "stderr")} OutputType * @memberOf module:utils */ export type OutputType = "stdout" | "stderr"; /** * @description Constructor type for output writers. * @summary Defines the structure for creating new output writer instances. This type represents * a constructor function that takes a PromiseExecutor and additional arguments to create * a new instance of an output writer. It allows for flexible creation of different types * of output writers while maintaining a consistent interface. * * @template R - The type of the resolved value, defaulting to string. * @template C - The type of the output writer, extending StandardOutputWriter<R>. * @template E - The type of the error value, defaulting to number. * * @param {PromiseExecutor<R, E>} lock - The promise executor for managing asynchronous operations. * @param {...unknown[]} args - Additional arguments passed to the constructor. * @return {C} An instance of the output writer. * * @memberOf module:utils */ export type OutputWriterConstructor<R = string, C extends StandardOutputWriter<R> = StandardOutputWriter<R>, E = number> = { new (cmd: string, lock: PromiseExecutor<R, E>, ...args: unknown[]): C; };