@apr144/generic-filehandle
Version:
uniform interface for accessing binary data from local files, remote HTTP resources, and browser Blob data
51 lines (50 loc) • 1.85 kB
TypeScript
/// <reference types="node" />
export type Fetcher = (input: RequestInfo, init?: RequestInit) => Promise<PolyfilledResponse>;
/**
* a fetch response object that might have some additional properties
* that come from the underlying fetch implementation, such as the
* `buffer` method on node-fetch responses.
*/
export interface PolyfilledResponse extends Response {
buffer?: Function | void;
}
export interface FilehandleOptions {
/**
* optional AbortSignal object for aborting the request
*/
signal?: AbortSignal;
headers?: any;
auth?: any;
overrides?: any;
encoding?: BufferEncoding;
/**
* fetch function to use for HTTP requests. defaults to environment's
* global fetch. if there is no global fetch, and a fetch function is not provided,
* throws an error.
*/
fetch?: Fetcher;
}
export interface Stats {
size: number;
[key: string]: any;
}
export interface GenericFilehandle {
read(buf: Buffer, offset: number, length: number, position: number, opts?: FilehandleOptions): Promise<{
bytesRead: number;
buffer: Buffer;
}>;
readFile(): Promise<Buffer>;
readFile(options: BufferEncoding): Promise<string>;
readFile<T extends undefined>(options: Omit<FilehandleOptions, 'encoding'> | (Omit<FilehandleOptions, 'encoding'> & {
encoding: T;
})): Promise<Buffer>;
readFile<T extends BufferEncoding>(options: Omit<FilehandleOptions, 'encoding'> & {
encoding: T;
}): Promise<string>;
readFile<T extends BufferEncoding>(options: Omit<FilehandleOptions, 'encoding'> & {
encoding?: T;
}): T extends BufferEncoding ? Promise<Buffer> : Promise<Buffer | string>;
readFile(options?: FilehandleOptions | BufferEncoding): Promise<Buffer | string>;
stat(): Promise<Stats>;
close(): Promise<void>;
}