62 lines
2.5 KiB
TypeScript
62 lines
2.5 KiB
TypeScript
import type { TransferProgressEvent } from "@azure/core-rest-pipeline";
|
|
import { Readable } from "node:stream";
|
|
export type ReadableStreamGetter = (offset: number) => Promise<NodeJS.ReadableStream>;
|
|
export interface RetriableReadableStreamOptions {
|
|
/**
|
|
* Max retry count (greater than or equal to 0), undefined or invalid value means no retry
|
|
*/
|
|
maxRetryRequests?: number;
|
|
/**
|
|
* Read progress event handler
|
|
*/
|
|
onProgress?: (progress: TransferProgressEvent) => void;
|
|
/**
|
|
* Debug purpose only. Used to inject an unexpected end to existing internal stream,
|
|
* to test stream retry works well or not.
|
|
*
|
|
* When assign it to true, for next incoming "data" event of internal stream,
|
|
* RetriableReadableStream will try to emit an "end" event to existing internal
|
|
* stream to force it end and start retry from the breaking point.
|
|
* The value will then update to "undefined", once the injection works.
|
|
*/
|
|
doInjectErrorOnce?: boolean;
|
|
/**
|
|
* A threshold, not a limit. Dictates the amount of data that a stream buffers before it stops asking for more data.
|
|
*/
|
|
highWaterMark?: number;
|
|
}
|
|
/**
|
|
* ONLY AVAILABLE IN NODE.JS RUNTIME.
|
|
*
|
|
* A Node.js ReadableStream will internally retry when internal ReadableStream unexpected ends.
|
|
*/
|
|
export declare class RetriableReadableStream extends Readable {
|
|
private start;
|
|
private offset;
|
|
private end;
|
|
private getter;
|
|
private source;
|
|
private retries;
|
|
private maxRetryRequests;
|
|
private onProgress?;
|
|
private options;
|
|
/**
|
|
* Creates an instance of RetriableReadableStream.
|
|
*
|
|
* @param source - The current ReadableStream returned from getter
|
|
* @param getter - A method calling downloading request returning
|
|
* a new ReadableStream from specified offset
|
|
* @param offset - Offset position in original data source to read
|
|
* @param count - How much data in original data source to read
|
|
* @param options -
|
|
*/
|
|
constructor(source: NodeJS.ReadableStream, getter: ReadableStreamGetter, offset: number, count: number, options?: RetriableReadableStreamOptions);
|
|
_read(): void;
|
|
private setSourceEventHandlers;
|
|
private removeSourceEventHandlers;
|
|
private sourceDataHandler;
|
|
private sourceAbortedHandler;
|
|
private sourceErrorOrEndHandler;
|
|
_destroy(error: Error | null, callback: (error?: Error) => void): void;
|
|
}
|
|
//# sourceMappingURL=RetriableReadableStream.d.ts.map
|