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
TypeScript
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 {};