| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 |
- // File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
- export 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 Anthropic({ fetch })` or polyfill the global, `globalThis.fetch = fetch`');
- }
- export 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);
- }
- export 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
- */
- export 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
- */
- export 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.mjs.map
|