UNPKG

@anthropic-ai/bedrock-sdk

Version:

The official TypeScript library for the Anthropic Bedrock API

85 lines 3.13 kB
// 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