| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 |
- "use strict";
- // File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
- Object.defineProperty(exports, "__esModule", { value: true });
- exports.getDefaultFetch = getDefaultFetch;
- exports.makeReadableStream = makeReadableStream;
- exports.ReadableStreamFrom = ReadableStreamFrom;
- exports.ReadableStreamToAsyncIterable = ReadableStreamToAsyncIterable;
- exports.CancelReadableStream = CancelReadableStream;
- function getDefaultFetch() {
- if (typeof fetch !== 'undefined') {
- return fetch;
- }
- throw new Error('`fetch` is not defined as a global; Either pass `fetch` to the client, `new OpenAI({ fetch })` or polyfill the global, `globalThis.fetch = fetch`');
- }
- function makeReadableStream(...args) {
- const ReadableStream = globalThis.ReadableStream;
- if (typeof ReadableStream === 'undefined') {
- // Note: All of the platforms / runtimes we officially support already define
- // `ReadableStream` as a global, so this should only ever be hit on unsupported runtimes.
- throw new Error('`ReadableStream` is not defined as a global; You will need to polyfill it, `globalThis.ReadableStream = ReadableStream`');
- }
- return new ReadableStream(...args);
- }
- function ReadableStreamFrom(iterable) {
- let iter = Symbol.asyncIterator in iterable ? iterable[Symbol.asyncIterator]() : iterable[Symbol.iterator]();
- return makeReadableStream({
- start() { },
- async pull(controller) {
- const { done, value } = await iter.next();
- if (done) {
- controller.close();
- }
- else {
- controller.enqueue(value);
- }
- },
- async cancel() {
- await iter.return?.();
- },
- });
- }
- /**
- * Most browsers don't yet have async iterable support for ReadableStream,
- * and Node has a very different way of reading bytes from its "ReadableStream".
- *
- * This polyfill was pulled from https://github.com/MattiasBuelens/web-streams-polyfill/pull/122#issuecomment-1627354490
- */
- function ReadableStreamToAsyncIterable(stream) {
- if (stream[Symbol.asyncIterator])
- return stream;
- const reader = stream.getReader();
- return {
- async next() {
- try {
- const result = await reader.read();
- if (result?.done)
- reader.releaseLock(); // release lock when stream becomes closed
- return result;
- }
- catch (e) {
- reader.releaseLock(); // release lock when stream becomes errored
- throw e;
- }
- },
- async return() {
- const cancelPromise = reader.cancel();
- reader.releaseLock();
- await cancelPromise;
- return { done: true, value: undefined };
- },
- [Symbol.asyncIterator]() {
- return this;
- },
- };
- }
- /**
- * Cancels a ReadableStream we don't need to consume.
- * See https://undici.nodejs.org/#/?id=garbage-collection
- */
- async function CancelReadableStream(stream) {
- if (stream === null || typeof stream !== 'object')
- return;
- if (stream[Symbol.asyncIterator]) {
- await stream[Symbol.asyncIterator]().return?.();
- return;
- }
- const reader = stream.getReader();
- const cancelPromise = reader.cancel();
- reader.releaseLock();
- await cancelPromise;
- }
- //# sourceMappingURL=shims.js.map
|