76 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
		
		
			
		
	
	
			76 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
|  | "use strict"; | ||
|  | // File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
 | ||
|  | var _APIPromise_client; | ||
|  | Object.defineProperty(exports, "__esModule", { value: true }); | ||
|  | exports.APIPromise = void 0; | ||
|  | const tslib_1 = require("../internal/tslib.js"); | ||
|  | const parse_1 = require("../internal/parse.js"); | ||
|  | /** | ||
|  |  * A subclass of `Promise` providing additional helper methods | ||
|  |  * for interacting with the SDK. | ||
|  |  */ | ||
|  | class APIPromise extends Promise { | ||
|  |     constructor(client, responsePromise, parseResponse = parse_1.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); | ||
|  |         tslib_1.__classPrivateFieldSet(this, _APIPromise_client, client, "f"); | ||
|  |     } | ||
|  |     _thenUnwrap(transform) { | ||
|  |         return new APIPromise(tslib_1.__classPrivateFieldGet(this, _APIPromise_client, "f"), this.responsePromise, async (client, props) => (0, parse_1.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(tslib_1.__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); | ||
|  |     } | ||
|  | } | ||
|  | exports.APIPromise = APIPromise; | ||
|  | _APIPromise_client = new WeakMap(); | ||
|  | //# sourceMappingURL=api-promise.js.map
 |