UNPKG

tabular-data-differ

Version:

A very efficient library for diffing two sorted streams of tabular data, such as CSV files.

161 lines (160 loc) 5.01 kB
import { PathLike } from 'fs'; import fs from 'fs/promises'; /** * Either a string containing a filename or a URL */ export type Filename = string | URL; export interface StreamReadResult { bytesRead: number; buffer: Buffer; } export interface StreamReadOptions { /** * @default `Buffer.alloc(0xffff)` */ buffer?: Buffer; /** * @default 0 */ offset?: number | undefined; /** * @default `length of buffer` */ length?: number | undefined; } export interface StreamWriteResult { bytesWritten: number; buffer: Buffer; } export interface StreamWriteOptions { buffer: Buffer; /** * @default 0 */ offset?: number | undefined; /** * @default `buffer.byteLength` */ length?: number | undefined; } interface TextReaderOptions { encoding?: BufferEncoding | null | undefined; highWaterMark?: number | undefined; } export interface TextReader { readLine(): Promise<string | undefined>; close(): Promise<void>; } export interface InputStream { open(): Promise<void>; read(options: StreamReadOptions): Promise<StreamReadResult>; createTextReader(options?: TextReaderOptions): TextReader; close(): Promise<void>; } interface TextWriterOptions { encoding?: BufferEncoding | null | undefined; } export interface TextWriter { writeLine(line: string): Promise<void>; close(): Promise<void>; } export interface OutputStream { open(): Promise<void>; write(options: StreamWriteOptions): Promise<StreamWriteResult>; createTextWriter(options?: TextWriterOptions): TextWriter; close(): Promise<void>; } /** * Options for configuring an input stream */ export type InputStreamOptions = { /** * Specifies a stream either by its filename or by an instance of an `InputStream` */ stream: Filename | InputStream; /** * Specifies the encoding to use for text operations such as readLine */ encoding?: BufferEncoding; }; /** * Options for configuring an output stream */ export type OutputStreamOptions = { /** * Specifies a stream either by its filename or by an instance of an `OutputStream` */ stream: 'console' | 'null' | Filename | OutputStream; /** * Specifies the encoding to use for text operations such as writeLine */ encoding?: BufferEncoding; }; export declare class FileTextReader implements TextReader { private iterator?; constructor(iterator?: AsyncIterableIterator<string> | undefined); readLine(): Promise<string | undefined>; close(): Promise<void>; } export declare class FileInputStream implements InputStream { private readonly path; private file?; constructor(path: PathLike); open(): Promise<void>; read(options: StreamReadOptions): Promise<StreamReadResult>; createTextReader(options?: TextReaderOptions): TextReader; close(): Promise<void>; } export declare class ArrayInputStream implements InputStream { private lines; constructor(lines: string[]); open(): Promise<void>; createTextReader(options?: TextReaderOptions | undefined): TextReader; read(options: StreamReadOptions): Promise<StreamReadResult>; close(): Promise<void>; } export declare class ArrayTextReader implements TextReader { private lines; private currentIndex; constructor(lines: string[]); readLine(): Promise<string | undefined>; close(): Promise<void>; } export declare class NullTextWriter implements TextWriter { writeLine(line: string): Promise<void>; close(): Promise<void>; } export declare class NullOutputStream implements OutputStream { open(): Promise<void>; createTextWriter(options?: TextWriterOptions | undefined): TextWriter; write(options: StreamWriteOptions): Promise<StreamWriteResult>; close(): Promise<void>; } export declare class ConsoleTextWriter implements TextWriter { writeLine(line: string): Promise<void>; close(): Promise<void>; } export declare class ConsoleOutputStream implements OutputStream { createTextWriter(options?: TextWriterOptions | undefined): TextWriter; open(): Promise<void>; write(options: StreamWriteOptions): Promise<StreamWriteResult>; close(): Promise<void>; } export declare class FileTextWriter implements TextWriter { private file; constructor(file: fs.FileHandle); writeLine(line: string): Promise<void>; close(): Promise<void>; } export declare class FileOutputStream implements OutputStream { readonly path: PathLike; private file?; constructor(path: PathLike); open(): Promise<void>; createTextWriter(options?: TextWriterOptions | undefined): TextWriter; write(options: StreamWriteOptions): Promise<StreamWriteResult>; close(): Promise<void>; } export declare function getOrCreateInputStream(stream: Filename | InputStream): InputStream; export declare function getOrCreateOutputStream(stream: 'console' | 'null' | Filename | OutputStream): OutputStream; export {};