72 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			72 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| // 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 X-Request-ID header which is useful for debugging requests and reporting
 | |
|      * issues to OpenAI.
 | |
|      *
 | |
|      * 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('x-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
 |