UNPKG

@yeoman/transform

Version:

Namespace parsing for yeoman's generator/environment stack

46 lines (45 loc) 2.44 kB
import { type PipelineSource, type PipelineTransform, type PipelineTransformSource, Transform } from 'node:stream'; import { type MinimatchOptions } from 'minimatch'; import type { Abortable } from 'node:events'; export { pipeline } from 'node:stream/promises'; export type File = { path: string; contents: any; }; interface PipelineOptions extends Abortable { end?: boolean | undefined; } type TransformFile<F extends File = File> = (this: Transform, file: F) => Promise<F | undefined> | F | undefined; type PassthroughFile<F extends File = File> = (file: F) => Promise<void> | void; type FilterFile<F extends File = File> = (file: F) => Promise<boolean> | boolean; export type FilePipelineTransform<F extends File = File> = PipelineTransform<PipelineTransformSource<F>, F>; export declare const filePipeline: <F extends File = File>(source: PipelineSource<F>, transforms: Array<FilePipelineTransform<F>>, options?: PipelineOptions) => Promise<void>; /** * The returned file from transform function is passed through if any. */ export declare function transform<F extends File = File>(function_: TransformFile<F>): Transform; type TransformMinimatchOptions = { /** Minimatch options */ patternOptions?: MinimatchOptions; }; export type PassthroughOptions<F extends File = File> = { filter?: FilterFile<F>; pattern?: string; } & TransformMinimatchOptions; /** * Files will always be passed through. */ export declare function passthrough<F extends File = File>(function_?: PassthroughFile<F>, options?: PassthroughOptions<F>): Transform; export type TransformFileField<K extends keyof F, F extends File = File> = (value: F[K], f: F) => F[K] | Promise<F[K]>; export declare function transformFileField<K extends keyof F, F extends File = File>(field: K, fieldValue: F[K] | TransformFileField<K, F>, options?: PassthroughOptions<F>): Transform; export declare function transformContents<F extends File = File>(function_: (contents: F['contents']) => F['contents'] | Promise<F['contents']>, options?: PassthroughOptions<F>): Transform; /** * Filter file. * Files that doesn't match the filter condition are removed. */ export declare function filter<F extends File = File>(filter: FilterFile<F>): Transform; /** * Conditional filter on pattern. * Files that doesn't match the pattern are removed. */ export declare function filterPattern(pattern: string, options?: TransformMinimatchOptions): Transform;