with-csv
Version:
A CSV file manipulation library with a fluent API à la Lodash
38 lines (37 loc) • 1.79 kB
TypeScript
/// <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 {};