UNPKG

with-csv

Version:

A CSV file manipulation library with a fluent API à la Lodash

38 lines (37 loc) 1.79 kB
/// <reference types="node" /> /// <reference types="node" /> import { ReadStream, WriteStream } from 'fs'; import csv from 'csv-parser'; import { Options as StringifyOptions } from 'csv-stringify'; declare type ArrayMethod<T, U> = (value: T, index?: number) => U | Promise<U>; declare type CsvRowsCollection<T> = { /** * Chainable methods */ uniq<U extends keyof T>(iterator?: ArrayMethod<T, string> | U | U[]): CsvRowsCollection<T>; filter(cb: ArrayMethod<T, boolean>): CsvRowsCollection<T>; map<U>(cb: ArrayMethod<T, U>): CsvRowsCollection<U>; pick: <U extends keyof T>(keys: U | U[]) => CsvRowsCollection<Record<U, string>>; forEach(cb: ArrayMethod<T, void>): CsvRowsCollection<T>; /** * Terminator methods */ process: () => Promise<void>; find: (cb: ArrayMethod<T, boolean>) => Promise<T | null>; findIndex: (cb: ArrayMethod<T, boolean>) => Promise<number>; every: (cb: ArrayMethod<T, boolean>) => Promise<boolean>; some: (cb: ArrayMethod<T, boolean>) => Promise<boolean>; includes: (value: T) => Promise<boolean>; rows: () => Promise<T[]>; toJSON: (replacer?: (number | string)[] | null, space?: string | number) => Promise<string>; toCSV: (csvTarget: string | WriteStream, options?: StringifyOptions) => Promise<void>; key: <U extends keyof T>(property: U, filterUndefined?: true) => Promise<T[U][]>; first: (n: number) => Promise<T[]>; last: (n: number) => Promise<T[]>; skip: (n: number) => Promise<T[]>; count: () => Promise<number>; }; export declare function withCSV(csvFileOrBuffer: string | Buffer | ReadStream, options?: csv.Options | readonly string[]): { columns<T extends string>(columns: T[] | readonly T[]): CsvRowsCollection<Record<T, string>>; }; export {};