Spaces:
Build error
Build error
/** | |
* Disclaimer: modules in _shims aren't intended to be imported by SDK users. | |
*/ | |
import { MultipartBody } from './MultipartBody'; | |
import { type RequestOptions } from '../core'; | |
import { type Shims } from './registry'; | |
export function getRuntime({ manuallyImported }: { manuallyImported?: boolean } = {}): Shims { | |
const recommendation = | |
manuallyImported ? | |
`You may need to use polyfills` | |
: `Add one of these imports before your first \`import … from '@anthropic-ai/sdk'\`: | |
- \`import '@anthropic-ai/sdk/shims/node'\` (if you're running on Node) | |
- \`import '@anthropic-ai/sdk/shims/web'\` (otherwise) | |
`; | |
let _fetch, _Request, _Response, _Headers; | |
try { | |
// @ts-ignore | |
_fetch = fetch; | |
// @ts-ignore | |
_Request = Request; | |
// @ts-ignore | |
_Response = Response; | |
// @ts-ignore | |
_Headers = Headers; | |
} catch (error) { | |
throw new Error( | |
`this environment is missing the following Web Fetch API type: ${ | |
(error as any).message | |
}. ${recommendation}`, | |
); | |
} | |
return { | |
kind: 'web', | |
fetch: _fetch, | |
Request: _Request, | |
Response: _Response, | |
Headers: _Headers, | |
FormData: | |
// @ts-ignore | |
typeof FormData !== 'undefined' ? FormData : ( | |
class FormData { | |
// @ts-ignore | |
constructor() { | |
throw new Error( | |
`file uploads aren't supported in this environment yet as 'FormData' is undefined. ${recommendation}`, | |
); | |
} | |
} | |
), | |
Blob: | |
typeof Blob !== 'undefined' ? Blob : ( | |
class Blob { | |
constructor() { | |
throw new Error( | |
`file uploads aren't supported in this environment yet as 'Blob' is undefined. ${recommendation}`, | |
); | |
} | |
} | |
), | |
File: | |
// @ts-ignore | |
typeof File !== 'undefined' ? File : ( | |
class File { | |
// @ts-ignore | |
constructor() { | |
throw new Error( | |
`file uploads aren't supported in this environment yet as 'File' is undefined. ${recommendation}`, | |
); | |
} | |
} | |
), | |
ReadableStream: | |
// @ts-ignore | |
typeof ReadableStream !== 'undefined' ? ReadableStream : ( | |
class ReadableStream { | |
// @ts-ignore | |
constructor() { | |
throw new Error( | |
`streaming isn't supported in this environment yet as 'ReadableStream' is undefined. ${recommendation}`, | |
); | |
} | |
} | |
), | |
getMultipartRequestOptions: async <T extends {} = Record<string, unknown>>( | |
// @ts-ignore | |
form: FormData, | |
opts: RequestOptions<T>, | |
): Promise<RequestOptions<T>> => ({ | |
...opts, | |
body: new MultipartBody(form) as any, | |
}), | |
getDefaultAgent: (url: string) => undefined, | |
fileFromPath: () => { | |
throw new Error( | |
'The `fileFromPath` function is only supported in Node. See the README for more details: https://www.github.com/anthropics/anthropic-sdk-typescript#file-uploads', | |
); | |
}, | |
isFsReadStream: (value: any) => false, | |
}; | |
} | |