UNPKG

5.94 kBSource Map (JSON)View Raw
1{"version":3,"sources":["asynciterable/fromnodestream.ts"],"names":[],"mappings":"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","file":"fromnodestream.js","sourcesContent":["import { AsyncIterableX } from './asynciterablex';\nimport { safeRace } from '../util/safeRace';\n\nconst NON_FLOWING = 0;\nconst READABLE = 1;\nconst ENDED = 2;\nconst ERRORED = 3;\n\nexport class ReadableStreamAsyncIterable extends AsyncIterableX<string | Buffer>\n implements AsyncIterator<string | Buffer> {\n private _stream: NodeJS.ReadableStream;\n private _defaultSize?: number;\n private _state: number;\n private _error: any;\n private _rejectFns: Set<(err: any) => void>;\n private _endPromise: Promise<void> | undefined;\n\n constructor(stream: NodeJS.ReadableStream, size?: number) {\n super();\n this._stream = stream;\n this._defaultSize = size;\n this._state = NON_FLOWING;\n this._error = null;\n this._rejectFns = new Set<(err: any) => void>();\n\n const onError = (err: any) => {\n this._state = ERRORED;\n this._error = err;\n for (const rejectFn of this._rejectFns) {\n rejectFn(err);\n }\n };\n\n const onEnd = () => {\n this._state = ENDED;\n };\n\n this._stream['once']('error', onError);\n this._stream['once']('end', onEnd);\n }\n\n [Symbol.asyncIterator](): AsyncIterator<string | Buffer> {\n return this;\n }\n\n async next(size = this._defaultSize): Promise<IteratorResult<string | Buffer>> {\n if (this._state === NON_FLOWING) {\n await safeRace([this._waitReadable(), this._waitEnd()]);\n return await this.next(size);\n }\n\n if (this._state === ENDED) {\n return ({ done: true, value: undefined } as any) as IteratorResult<string | Buffer>;\n }\n\n if (this._state === ERRORED) {\n throw this._error;\n }\n\n const value = this._stream['read'](size);\n if (value !== null) {\n return { done: false, value };\n } else {\n this._state = NON_FLOWING;\n return await this.next(size);\n }\n }\n\n private _waitReadable(): Promise<void> {\n return new Promise<void>((resolve, reject) => {\n const onReadable = () => {\n this._state = READABLE;\n this._rejectFns.delete(reject);\n resolve();\n };\n\n this._rejectFns.add(reject);\n this._stream['once']('readable', onReadable);\n });\n }\n\n private _waitEnd(): Promise<void> {\n if (!this._endPromise) {\n this._endPromise = new Promise<void>((resolve, reject) => {\n const onEnd = () => {\n this._state = ENDED;\n this._rejectFns.delete(reject);\n resolve();\n };\n\n this._rejectFns.add(reject);\n this._stream['once']('end', onEnd);\n });\n }\n return this._endPromise;\n }\n}\n\n/**\n * Creates a new async-iterable from a Node.js stream.\n *\n * @export\n * @param {NodeJS.ReadableStream} stream The Node.js stream to convert to an async-iterable.\n * @param {number} [size] The size of the buffers for the stream.\n * @returns {(AsyncIterableX<string | Buffer>)} An async-iterable containing data from the stream either in string or Buffer format.\n */\nexport function fromNodeStream(\n stream: NodeJS.ReadableStream,\n size?: number\n): AsyncIterableX<string | Buffer> {\n return new ReadableStreamAsyncIterable(stream, size);\n}\n"]}
\No newline at end of file