| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101 |
- var __defProp = Object.defineProperty;
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
- var __getOwnPropNames = Object.getOwnPropertyNames;
- var __hasOwnProp = Object.prototype.hasOwnProperty;
- var __export = (target, all) => {
- for (var name in all)
- __defProp(target, name, { get: all[name], enumerable: true });
- };
- var __copyProps = (to, from, except, desc) => {
- if (from && typeof from === "object" || typeof from === "function") {
- for (let key of __getOwnPropNames(from))
- if (!__hasOwnProp.call(to, key) && key !== except)
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
- }
- return to;
- };
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
- var stream_exports = {};
- __export(stream_exports, {
- StreamingApi: () => StreamingApi
- });
- module.exports = __toCommonJS(stream_exports);
- class StreamingApi {
- 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: () => {
- 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() {
- try {
- await this.writer.close();
- } catch {
- }
- this.closed = true;
- }
- 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());
- }
- }
- }
- // Annotate the CommonJS export names for ESM import in node:
- 0 && (module.exports = {
- StreamingApi
- });
|