| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- // File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
- var _APIPromise_client;
- import { __classPrivateFieldGet, __classPrivateFieldSet } from "../internal/tslib.mjs";
- import { defaultParseResponse, addRequestID, } from "../internal/parse.mjs";
- /**
- * A subclass of `Promise` providing additional helper methods
- * for interacting with the SDK.
- */
- export class APIPromise extends Promise {
- constructor(client, responsePromise, parseResponse = defaultParseResponse) {
- super((resolve) => {
- // this is maybe a bit weird but this has to be a no-op to not implicitly
- // parse the response body; instead .then, .catch, .finally are overridden
- // to parse the response
- resolve(null);
- });
- this.responsePromise = responsePromise;
- this.parseResponse = parseResponse;
- _APIPromise_client.set(this, void 0);
- __classPrivateFieldSet(this, _APIPromise_client, client, "f");
- }
- _thenUnwrap(transform) {
- return new APIPromise(__classPrivateFieldGet(this, _APIPromise_client, "f"), this.responsePromise, async (client, props) => addRequestID(transform(await this.parseResponse(client, props), props), props.response));
- }
- /**
- * Gets the raw `Response` instance instead of parsing the response
- * data.
- *
- * If you want to parse the response body but still get the `Response`
- * instance, you can use {@link withResponse()}.
- *
- * 👋 Getting the wrong TypeScript type for `Response`?
- * Try setting `"moduleResolution": "NodeNext"` or add `"lib": ["DOM"]`
- * to your `tsconfig.json`.
- */
- asResponse() {
- return this.responsePromise.then((p) => p.response);
- }
- /**
- * Gets the parsed response data, the raw `Response` instance and the ID of the request,
- * returned via the `request-id` header which is useful for debugging requests and resporting
- * issues to Anthropic.
- *
- * If you just want to get the raw `Response` instance without parsing it,
- * you can use {@link asResponse()}.
- *
- * 👋 Getting the wrong TypeScript type for `Response`?
- * Try setting `"moduleResolution": "NodeNext"` or add `"lib": ["DOM"]`
- * to your `tsconfig.json`.
- */
- async withResponse() {
- const [data, response] = await Promise.all([this.parse(), this.asResponse()]);
- return { data, response, request_id: response.headers.get('request-id') };
- }
- parse() {
- if (!this.parsedPromise) {
- this.parsedPromise = this.responsePromise.then((data) => this.parseResponse(__classPrivateFieldGet(this, _APIPromise_client, "f"), data));
- }
- return this.parsedPromise;
- }
- then(onfulfilled, onrejected) {
- return this.parse().then(onfulfilled, onrejected);
- }
- catch(onrejected) {
- return this.parse().catch(onrejected);
- }
- finally(onfinally) {
- return this.parse().finally(onfinally);
- }
- }
- _APIPromise_client = new WeakMap();
- //# sourceMappingURL=api-promise.mjs.map
|