Download node_modules/hono/dist/utils/stream.js from Snapkitty/agentscope-sift: direct link, hf CLI and curl.
- Browser
- Download file 1.92 kB
-
https://huggingface.co/Snapkitty/agentscope-sift/resolve/main/node_modules/hono/dist/utils/stream.js
- Command line
-
hf download hf://Snapkitty/agentscope-sift/node_modules/hono/dist/utils/stream.js
-
curl -L -o stream.js https://huggingface.co/Snapkitty/agentscope-sift/resolve/main/node_modules/hono/dist/utils/stream.js
1.92 kB
| // src/utils/stream.ts | |
| var StreamingApi = class { | |
| writer; | |
| encoder; | |
| writable; | |
| abortSubscribers = []; | |
| responseReadable; | |
| /** | |
| * Whether the stream has been aborted. | |
| */ | |
| aborted = false; | |
| /** | |
| * Whether the stream has been closed normally. | |
| */ | |
| closed = false; | |
| constructor(writable, _readable) { | |
| this.writable = writable; | |
| this.writer = writable.getWriter(); | |
| this.encoder = new TextEncoder(); | |
| const reader = _readable.getReader(); | |
| this.abortSubscribers.push(async () => { | |
| await reader.cancel(); | |
| }); | |
| this.responseReadable = new ReadableStream({ | |
| async pull(controller) { | |
| const { done, value } = await reader.read(); | |
| done ? controller.close() : controller.enqueue(value); | |
| }, | |
| cancel: () => { | |
| if (!this.closed) { | |
| this.abort(); | |
| } | |
| } | |
| }); | |
| } | |
| async write(input) { | |
| try { | |
| if (typeof input === "string") { | |
| input = this.encoder.encode(input); | |
| } | |
| await this.writer.write(input); | |
| } catch { | |
| } | |
| return this; | |
| } | |
| async writeln(input) { | |
| await this.write(input + "\n"); | |
| return this; | |
| } | |
| sleep(ms) { | |
| return new Promise((res) => setTimeout(res, ms)); | |
| } | |
| async close() { | |
| this.closed = true; | |
| try { | |
| await this.writer.close(); | |
| } catch { | |
| } | |
| } | |
| async pipe(body) { | |
| this.writer.releaseLock(); | |
| await body.pipeTo(this.writable, { preventClose: true }); | |
| this.writer = this.writable.getWriter(); | |
| } | |
| onAbort(listener) { | |
| this.abortSubscribers.push(listener); | |
| } | |
| /** | |
| * Abort the stream. | |
| * You can call this method when stream is aborted by external event. | |
| */ | |
| abort() { | |
| if (!this.aborted) { | |
| this.aborted = true; | |
| this.abortSubscribers.forEach((subscriber) => subscriber()); | |
| } | |
| } | |
| }; | |
| export { | |
| StreamingApi | |
| }; | |