@cspell/cspell-pipe
Version:
Library to make working with Iterators/AsyncIterators easier.
17 lines • 1.16 kB
TypeScript
export interface PipeFnSync<T, U> {
(iter: Iterable<T>): Iterable<U>;
/** This is just to help TypeScript figure out the type. */
__PipeFnSync__?: [T, U];
}
export interface PipeFnAsync<T, U> {
(iter: AsyncIterable<T>): AsyncIterable<U>;
/** This is just to help TypeScript figure out the type. */
__PipeFnAsync__?: [T, U];
}
export type PipeFn<T, U> = PipeFnSync<T, U> & PipeFnAsync<T, U>;
export type PsFn<T, U> = PipeFnSync<T, U> | ((i: Iterable<T>) => Iterable<U>);
export type AnyIterable<T> = Iterable<T> | AsyncIterable<T> | Promise<Iterable<T>> | Iterable<Promise<T>>;
export type PaFn<T, U> = PipeFnAsync<T, U> | ((i: AsyncIterable<T>) => AsyncIterable<U>);
export type PipeAsyncTx<T extends [...any]> = T extends [infer Left, infer Right, ...infer Rest] ? Rest extends [any, ...any] ? [PaFn<Left, Right>, ...PipeAsyncTx<[Right, ...Rest]>] : [PaFn<Left, Right>] : never;
export type PipeSyncTx<T extends [...any]> = T extends [infer Left, infer Right, ...infer Rest] ? Rest extends [any, ...any] ? [PsFn<Left, Right>, ...PipeSyncTx<[Right, ...Rest]>] : [PsFn<Left, Right>] : never;
//# sourceMappingURL=internalTypes.d.ts.map