@rvoh/psychic-spec-helpers 0.7.2 → 0.7.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,12 +1,13 @@
1
+ import { IdType } from '@rvoh/dream';
1
2
  import { Response } from 'supertest';
2
- import { ExcludeNever, ExtractOpenapiParams, First, GetResolvedOpenapiUrl, RoutesWithHttpMethod } from './helpers/openapiTypeHelpers.js';
3
+ import { ExtractOpenapiParams, First, GetResolvedOpenapiUrl, RoutesWithHttpMethod } from './helpers/openapiTypeHelpers.js';
3
4
  import { OpenapiSpecSession } from './OpenapiSpecSession.js';
4
- import { HttpMethod } from './supersession.js';
5
- import { IdType } from '@rvoh/dream';
6
5
  import { SpecRequestOpts, SpecRequestOptsAll } from './SpecRequest.js';
6
+ import { HttpMethod } from './supersession.js';
7
7
  export declare class OpenapiSpecRequest<OpenapiPaths = undefined> {
8
8
  private PsychicServer;
9
9
  private server;
10
+ init(PsychicServer: any): Promise<void>;
10
11
  get<const Uri extends RoutesWithHttpMethod<OpenapiPaths, 'get' & keyof OpenapiPaths[keyof OpenapiPaths]> & string, const ResponseCode extends keyof ResponseMap & number, HttpMethodMap extends OpenapiPaths[Uri & keyof OpenapiPaths], ResponseMap extends HttpMethodMap['get' & keyof HttpMethodMap]['responses' & keyof HttpMethodMap['get' & keyof HttpMethodMap]], ParametersMap extends HttpMethodMap['get' & keyof HttpMethodMap]['parameters' & keyof HttpMethodMap['get' & keyof HttpMethodMap]], QueryMap extends ParametersMap['query' & keyof ParametersMap], Params extends string[] & ExtractOpenapiParams<Uri>, Content extends ResponseMap extends undefined ? undefined : ResponseCode extends undefined ? undefined : ResponseCode extends number ? ResponseMap[ResponseCode & keyof ResponseMap]['content' & keyof ResponseMap[ResponseCode & keyof ResponseMap]] : undefined, JsonContent extends Content extends undefined ? undefined : Content['application/json' & keyof Content]>(
11
12
  /**
12
13
  * The uri on your background you are trying to hit.
@@ -57,58 +58,10 @@ export declare class OpenapiSpecRequest<OpenapiPaths = undefined> {
57
58
  * @param opts.headers - headers you would like to send with your request.
58
59
  * (Optional)
59
60
  */
60
- opts: Params['length'] extends 0 ? never : OpenapiSpecRequestOptsGet<QueryMap> & {
61
+ opts?: Params['length'] extends 0 ? OpenapiSpecRequestOptsGet<QueryMap> : OpenapiSpecRequestOptsGet<QueryMap> & {
61
62
  [K in Params[number]]: string | IdType;
62
63
  }): Promise<OpenapiSpecResponse<JsonContent>>;
63
- get<const Uri extends RoutesWithHttpMethod<OpenapiPaths, 'get' & keyof OpenapiPaths[keyof OpenapiPaths]> & string, const ResponseCode extends Params['length'] extends 0 ? keyof ExcludeNever<ResponseMap> & number : never, HttpMethodMap extends OpenapiPaths[Uri & keyof OpenapiPaths], ResponseMap extends HttpMethodMap['get' & keyof HttpMethodMap]['responses' & keyof HttpMethodMap['get' & keyof HttpMethodMap]], ParametersMap extends HttpMethodMap['get' & keyof HttpMethodMap]['parameters' & keyof HttpMethodMap['get' & keyof HttpMethodMap]], QueryMap extends ParametersMap['query' & keyof ParametersMap], Params extends string[] & ExtractOpenapiParams<Uri>, Content extends ResponseMap extends undefined ? undefined : ResponseCode extends undefined ? undefined : ResponseCode extends number ? ResponseMap[ResponseCode & keyof ResponseMap]['content' & keyof ResponseMap[ResponseCode & keyof ResponseMap]] : undefined, JsonContent extends Content extends undefined ? undefined : Content['application/json' & keyof Content]>(
64
- /**
65
- * The uri on your background you are trying to hit.
66
- * This should be a path, like '/users'.
67
- *
68
- * ```ts
69
- * const request = new OpenapiSpecRequest<openapiPaths>()
70
- * const res = await request.get('/user', 200)
71
- * ```
72
- */
73
- uri: Uri,
74
- /**
75
- * The response status you are expecting to receive
76
- * when making this request. It will need to match
77
- * one of the accepted response statuses for the
78
- * provided uri in your openapi types
79
- *
80
- * ```ts
81
- * const request = new OpenapiSpecRequest<openapiPaths>()
82
- * const res = await request.get('/user', 200)
83
- * ```
84
- */
85
- expectedStatus: ResponseCode,
86
- /**
87
- * Query params, headers, and other options to send with
88
- * your request.
89
- *
90
- * ```ts
91
- * const request = new OpenapiSpecRequest<openapiPaths>()
92
- * const res = await request.get(
93
- * '/user',
94
- * 200,
95
- * {
96
- * query: {
97
- * ...query params here
98
- * }
99
- * }
100
- * )
101
- * ```
102
- *
103
- * @param opts.query - query params you want to send up. Must match the
104
- * query params in the openapi document for this uri.
105
- * (Optional)
106
- *
107
- * @param opts.headers - headers you would like to send with your request.
108
- * (Optional)
109
- */
110
- opts?: OpenapiSpecRequestOptsGet<QueryMap>): Promise<OpenapiSpecResponse<JsonContent>>;
111
- post<const Uri extends RoutesWithHttpMethod<OpenapiPaths, 'post' & keyof OpenapiPaths[keyof OpenapiPaths]> & string, const ResponseCode extends Params['length'] extends 0 ? never : keyof ExcludeNever<ResponseMap> & number, HttpMethodMap extends OpenapiPaths[ResolvedUri & keyof OpenapiPaths], ResolvedUri extends First<GetResolvedOpenapiUrl<OpenapiPaths, Uri> & keyof OpenapiPaths>, Params extends string[] & ExtractOpenapiParams<Uri>, ResponseMap extends HttpMethodMap['post' & keyof HttpMethodMap]['responses' & keyof HttpMethodMap['post' & keyof HttpMethodMap]], Content extends ResponseMap extends undefined ? undefined : ResponseCode extends undefined ? undefined : ResponseCode extends number ? ResponseMap[ResponseCode & keyof ResponseMap]['content' & keyof ResponseMap[ResponseCode & keyof ResponseMap]] : undefined, JsonContent extends Content extends undefined ? undefined : Content['application/json' & keyof Content], RequestBodyMap extends HttpMethodMap['post' & keyof HttpMethodMap]['requestBody' & keyof HttpMethodMap['post' & keyof HttpMethodMap]], RequestBodyContent extends RequestBodyMap extends undefined ? undefined : RequestBodyMap['content' & keyof RequestBodyMap], RequestBodyJsonContent extends RequestBodyContent extends undefined ? undefined : RequestBodyContent['application/json' & keyof RequestBodyContent]>(
64
+ post<const Uri extends RoutesWithHttpMethod<OpenapiPaths, 'post' & keyof OpenapiPaths[keyof OpenapiPaths]> & string, const ResponseCode extends keyof ResponseMap & number, HttpMethodMap extends OpenapiPaths[ResolvedUri & keyof OpenapiPaths], ResolvedUri extends First<GetResolvedOpenapiUrl<OpenapiPaths, Uri> & keyof OpenapiPaths>, Params extends string[] & ExtractOpenapiParams<Uri>, ResponseMap extends HttpMethodMap['post' & keyof HttpMethodMap]['responses' & keyof HttpMethodMap['post' & keyof HttpMethodMap]], Content extends ResponseMap extends undefined ? undefined : ResponseCode extends undefined ? undefined : ResponseCode extends number ? ResponseMap[ResponseCode & keyof ResponseMap]['content' & keyof ResponseMap[ResponseCode & keyof ResponseMap]] : undefined, JsonContent extends Content extends undefined ? undefined : Content['application/json' & keyof Content], RequestBodyMap extends HttpMethodMap['post' & keyof HttpMethodMap]['requestBody' & keyof HttpMethodMap['post' & keyof HttpMethodMap]], RequestBodyContent extends RequestBodyMap extends undefined ? undefined : RequestBodyMap['content' & keyof RequestBodyMap], RequestBodyJsonContent extends RequestBodyContent extends undefined ? undefined : RequestBodyContent['application/json' & keyof RequestBodyContent]>(
112
65
  /**
113
66
  * The uri on your background you are trying to hit.
114
67
  * This should be a path, like '/users'.
@@ -161,61 +114,10 @@ export declare class OpenapiSpecRequest<OpenapiPaths = undefined> {
161
114
  * @param opts.headers - headers you would like to send with your request.
162
115
  * (Optional)
163
116
  */
164
- opts: OpenapiSpecRequestOptsPost<RequestBodyJsonContent> & {
117
+ opts?: Params['length'] extends 0 ? OpenapiSpecRequestOptsPost<RequestBodyJsonContent> : OpenapiSpecRequestOptsPost<RequestBodyJsonContent> & {
165
118
  [K in Params[number]]: string;
166
119
  }): Promise<OpenapiSpecResponse<JsonContent>>;
167
- post<const Uri extends RoutesWithHttpMethod<OpenapiPaths, 'post' & keyof OpenapiPaths[keyof OpenapiPaths]> & string, const ResponseCode extends Params['length'] extends 0 ? keyof ExcludeNever<ResponseMap> & number : never, HttpMethodMap extends OpenapiPaths[Uri & keyof OpenapiPaths], Params extends string[] & ExtractOpenapiParams<Uri>, ResponseMap extends HttpMethodMap['post' & keyof HttpMethodMap]['responses' & keyof HttpMethodMap['post' & keyof HttpMethodMap]], Content extends ResponseMap extends undefined ? undefined : ResponseCode extends undefined ? undefined : ResponseCode extends number ? ResponseMap[ResponseCode & keyof ResponseMap]['content' & keyof ResponseMap[ResponseCode & keyof ResponseMap]] : undefined, JsonContent extends Content extends undefined ? undefined : Content['application/json' & keyof Content], RequestBodyMap extends HttpMethodMap['post' & keyof HttpMethodMap]['requestBody' & keyof HttpMethodMap['post' & keyof HttpMethodMap]], RequestBodyContent extends RequestBodyMap extends undefined ? undefined : RequestBodyMap['content' & keyof RequestBodyMap], RequestBodyJsonContent extends RequestBodyContent extends undefined ? undefined : RequestBodyContent['application/json' & keyof RequestBodyContent]>(
168
- /**
169
- * The uri on your background you are trying to hit.
170
- * This should be a path, like '/users'.
171
- *
172
- * ```ts
173
- * const request = new OpenapiSpecRequest<openapiPaths>()
174
- * const res = await request.post('/user', 200)
175
- * ```
176
- */
177
- uri: Uri,
178
- /**
179
- * The response status you are expecting to receive
180
- * when making this request. It will need to match
181
- * one of the accepted response statuses for the
182
- * provided uri in your openapi types
183
- *
184
- * ```ts
185
- * const request = new OpenapiSpecRequest<openapiPaths>()
186
- * const res = await request.post('/user', 200)
187
- * ```
188
- */
189
- expectedStatus: ResponseCode,
190
- /**
191
- * Data, headers, and other options to send with
192
- * your request.
193
- *
194
- * ```ts
195
- * const request = new OpenapiSpecRequest<openapiPaths>()
196
- * const res = await request.post(
197
- * '/user',
198
- * 200,
199
- * {
200
- * data: {
201
- * ...request body here
202
- * },
203
- * headers: {
204
- * ...headers here
205
- * },
206
- * }
207
- * )
208
- * ```
209
- *
210
- * @param opts.data - request body data you want to send up. Must match the
211
- * requestBody shape in the openapi document for this uri.
212
- * (Optional)
213
- *
214
- * @param opts.headers - headers you would like to send with your request.
215
- * (Optional)
216
- */
217
- opts?: Params['length'] extends 0 ? OpenapiSpecRequestOptsPost<RequestBodyJsonContent> : never): Promise<OpenapiSpecResponse<JsonContent>>;
218
- put<const Uri extends RoutesWithHttpMethod<OpenapiPaths, 'put' & keyof OpenapiPaths[keyof OpenapiPaths]> & string, const ResponseCode extends Params['length'] extends 0 ? never : keyof ExcludeNever<ResponseMap> & number, HttpMethodMap extends OpenapiPaths[Uri & keyof OpenapiPaths], Params extends string[] & ExtractOpenapiParams<Uri>, ResponseMap extends HttpMethodMap['put' & keyof HttpMethodMap]['responses' & keyof HttpMethodMap['put' & keyof HttpMethodMap]], Content extends ResponseMap extends undefined ? undefined : ResponseCode extends undefined ? undefined : ResponseCode extends number ? ResponseMap[ResponseCode & keyof ResponseMap]['content' & keyof ResponseMap[ResponseCode & keyof ResponseMap]] : undefined, JsonContent extends Content extends undefined ? undefined : Content['application/json' & keyof Content], RequestBodyMap extends HttpMethodMap['put' & keyof HttpMethodMap]['requestBody' & keyof HttpMethodMap['put' & keyof HttpMethodMap]], RequestBodyContent extends RequestBodyMap extends undefined ? undefined : RequestBodyMap['content' & keyof RequestBodyMap], RequestBodyJsonContent extends RequestBodyContent extends undefined ? undefined : RequestBodyContent['application/json' & keyof RequestBodyContent]>(
120
+ put<const Uri extends RoutesWithHttpMethod<OpenapiPaths, 'put' & keyof OpenapiPaths[keyof OpenapiPaths]> & string, const ResponseCode extends keyof ResponseMap & number, HttpMethodMap extends OpenapiPaths[Uri & keyof OpenapiPaths], Params extends string[] & ExtractOpenapiParams<Uri>, ResponseMap extends HttpMethodMap['put' & keyof HttpMethodMap]['responses' & keyof HttpMethodMap['put' & keyof HttpMethodMap]], Content extends ResponseMap extends undefined ? undefined : ResponseCode extends undefined ? undefined : ResponseCode extends number ? ResponseMap[ResponseCode & keyof ResponseMap]['content' & keyof ResponseMap[ResponseCode & keyof ResponseMap]] : undefined, JsonContent extends Content extends undefined ? undefined : Content['application/json' & keyof Content], RequestBodyMap extends HttpMethodMap['put' & keyof HttpMethodMap]['requestBody' & keyof HttpMethodMap['put' & keyof HttpMethodMap]], RequestBodyContent extends RequestBodyMap extends undefined ? undefined : RequestBodyMap['content' & keyof RequestBodyMap], RequestBodyJsonContent extends RequestBodyContent extends undefined ? undefined : RequestBodyContent['application/json' & keyof RequestBodyContent]>(
219
121
  /**
220
122
  * The uri on your background you are trying to hit.
221
123
  * This should be a path, like '/users'.
@@ -269,63 +171,10 @@ export declare class OpenapiSpecRequest<OpenapiPaths = undefined> {
269
171
  * @param opts.headers - headers you would like to send with your request.
270
172
  * (Optional)
271
173
  */
272
- opts: Params['length'] extends 0 ? never : OpenapiSpecRequestOptsPost<RequestBodyJsonContent> & {
174
+ opts?: Params['length'] extends 0 ? OpenapiSpecRequestOptsPost<RequestBodyJsonContent> : OpenapiSpecRequestOptsPost<RequestBodyJsonContent> & {
273
175
  [K in Params[number]]: string | IdType;
274
176
  }): Promise<OpenapiSpecResponse<JsonContent>>;
275
- put<const Uri extends RoutesWithHttpMethod<OpenapiPaths, 'put' & keyof OpenapiPaths[keyof OpenapiPaths]> & string, const ResponseCode extends Params['length'] extends 0 ? keyof ExcludeNever<ResponseMap> & number : never, HttpMethodMap extends OpenapiPaths[Uri & keyof OpenapiPaths], Params extends string[] & ExtractOpenapiParams<Uri>, ResponseMap extends HttpMethodMap['put' & keyof HttpMethodMap]['responses' & keyof HttpMethodMap['put' & keyof HttpMethodMap]], Content extends ResponseMap extends undefined ? undefined : ResponseCode extends undefined ? undefined : ResponseCode extends number ? ResponseMap[ResponseCode & keyof ResponseMap]['content' & keyof ResponseMap[ResponseCode & keyof ResponseMap]] : undefined, JsonContent extends Content extends undefined ? undefined : Content['application/json' & keyof Content], RequestBodyMap extends HttpMethodMap['put' & keyof HttpMethodMap]['requestBody' & keyof HttpMethodMap['put' & keyof HttpMethodMap]], RequestBodyContent extends RequestBodyMap extends undefined ? undefined : RequestBodyMap['content' & keyof RequestBodyMap], RequestBodyJsonContent extends RequestBodyContent extends undefined ? undefined : RequestBodyContent['application/json' & keyof RequestBodyContent]>(
276
- /**
277
- * The uri on your background you are trying to hit.
278
- * This should be a path, like '/users'.
279
- *
280
- * ```ts
281
- * const request = new OpenapiSpecRequest<openapiPaths>()
282
- * const res = await request.put('/user', 200, { data: { name: 'new name' })
283
- * ```
284
- */
285
- uri: Uri,
286
- /**
287
- * The response status you are expecting to receive
288
- * when making this request. It will need to match
289
- * one of the accepted response statuses for the
290
- * provided uri in your openapi types
291
- *
292
- * ```ts
293
- * const request = new OpenapiSpecRequest<openapiPaths>()
294
- * const res = await request.put('/user', 200, { data: { name: 'new name' })
295
- * ```
296
- */
297
- expectedStatus: ResponseCode,
298
- /**
299
- * An object containing the path fields required to
300
- * fill your uri in, as well as any additional PUT
301
- * arguments, like `data`, for example.
302
- *
303
- *
304
- * ```ts
305
- * const request = new OpenapiSpecRequest<openapiPaths>()
306
- * const res = await request.put(
307
- * '/user',
308
- * 200,
309
- * {
310
- * data: {
311
- * ...request body here
312
- * },
313
- * headers: {
314
- * ...headers here
315
- * },
316
- * }
317
- * )
318
- * ```
319
- *
320
- * @param opts.data - request body data you want to send up. Must match the
321
- * requestBody shape in the openapi document for this uri.
322
- * (Optional)
323
- *
324
- * @param opts.headers - headers you would like to send with your request.
325
- * (Optional)
326
- */
327
- opts?: Params['length'] extends 0 ? OpenapiSpecRequestOptsPost<RequestBodyJsonContent> : never): Promise<OpenapiSpecResponse<JsonContent>>;
328
- patch<const Uri extends RoutesWithHttpMethod<OpenapiPaths, 'patch' & keyof OpenapiPaths[keyof OpenapiPaths]> & string, const ResponseCode extends Params['length'] extends 0 ? never : keyof ExcludeNever<ResponseMap> & number, HttpMethodMap extends OpenapiPaths[Uri & keyof OpenapiPaths], Params extends string[] & ExtractOpenapiParams<Uri>, ResponseMap extends HttpMethodMap['patch' & keyof HttpMethodMap]['responses' & keyof HttpMethodMap['patch' & keyof HttpMethodMap]], Content extends ResponseMap extends undefined ? undefined : ResponseCode extends undefined ? undefined : ResponseCode extends number ? ResponseMap[ResponseCode & keyof ResponseMap]['content' & keyof ResponseMap[ResponseCode & keyof ResponseMap]] : undefined, JsonContent extends Content extends undefined ? undefined : Content['application/json' & keyof Content], RequestBodyMap extends HttpMethodMap['patch' & keyof HttpMethodMap]['requestBody' & keyof HttpMethodMap['patch' & keyof HttpMethodMap]], RequestBodyContent extends RequestBodyMap extends undefined ? undefined : RequestBodyMap['content' & keyof RequestBodyMap], RequestBodyJsonContent extends RequestBodyContent extends undefined ? undefined : RequestBodyContent['application/json' & keyof RequestBodyContent]>(
177
+ patch<const Uri extends RoutesWithHttpMethod<OpenapiPaths, 'patch' & keyof OpenapiPaths[keyof OpenapiPaths]> & string, const ResponseCode extends keyof ResponseMap & number, HttpMethodMap extends OpenapiPaths[Uri & keyof OpenapiPaths], Params extends string[] & ExtractOpenapiParams<Uri>, ResponseMap extends HttpMethodMap['patch' & keyof HttpMethodMap]['responses' & keyof HttpMethodMap['patch' & keyof HttpMethodMap]], Content extends ResponseMap extends undefined ? undefined : ResponseCode extends undefined ? undefined : ResponseCode extends number ? ResponseMap[ResponseCode & keyof ResponseMap]['content' & keyof ResponseMap[ResponseCode & keyof ResponseMap]] : undefined, JsonContent extends Content extends undefined ? undefined : Content['application/json' & keyof Content], RequestBodyMap extends HttpMethodMap['patch' & keyof HttpMethodMap]['requestBody' & keyof HttpMethodMap['patch' & keyof HttpMethodMap]], RequestBodyContent extends RequestBodyMap extends undefined ? undefined : RequestBodyMap['content' & keyof RequestBodyMap], RequestBodyJsonContent extends RequestBodyContent extends undefined ? undefined : RequestBodyContent['application/json' & keyof RequestBodyContent]>(
329
178
  /**
330
179
  * The uri on your background you are trying to hit.
331
180
  * This should be a path, like '/posts'.
@@ -378,61 +227,10 @@ export declare class OpenapiSpecRequest<OpenapiPaths = undefined> {
378
227
  * @param opts.headers - headers you would like to send with your request.
379
228
  * (Optional)
380
229
  */
381
- opts: Params['length'] extends 0 ? never : OpenapiSpecRequestOptsPost<RequestBodyJsonContent> & {
230
+ opts?: Params['length'] extends 0 ? OpenapiSpecRequestOptsPost<RequestBodyJsonContent> : OpenapiSpecRequestOptsPost<RequestBodyJsonContent> & {
382
231
  [K in Params[number]]: string | IdType;
383
232
  }): Promise<OpenapiSpecResponse<JsonContent>>;
384
- patch<const Uri extends RoutesWithHttpMethod<OpenapiPaths, 'patch' & keyof OpenapiPaths[keyof OpenapiPaths]> & string, const ResponseCode extends Params['length'] extends 0 ? keyof ExcludeNever<ResponseMap> & number : never, HttpMethodMap extends OpenapiPaths[Uri & keyof OpenapiPaths], Params extends string[] & ExtractOpenapiParams<Uri>, ResponseMap extends HttpMethodMap['patch' & keyof HttpMethodMap]['responses' & keyof HttpMethodMap['patch' & keyof HttpMethodMap]], Content extends ResponseMap extends undefined ? undefined : ResponseCode extends undefined ? undefined : ResponseCode extends number ? ResponseMap[ResponseCode & keyof ResponseMap]['content' & keyof ResponseMap[ResponseCode & keyof ResponseMap]] : undefined, JsonContent extends Content extends undefined ? undefined : Content['application/json' & keyof Content], RequestBodyMap extends HttpMethodMap['patch' & keyof HttpMethodMap]['requestBody' & keyof HttpMethodMap['patch' & keyof HttpMethodMap]], RequestBodyContent extends RequestBodyMap extends undefined ? undefined : RequestBodyMap['content' & keyof RequestBodyMap], RequestBodyJsonContent extends RequestBodyContent extends undefined ? undefined : RequestBodyContent['application/json' & keyof RequestBodyContent]>(
385
- /**
386
- * The uri on your background you are trying to hit.
387
- * This should be a path, like '/user'.
388
- *
389
- * ```ts
390
- * const request = new OpenapiSpecRequest<openapiPaths>()
391
- * const res = await request.patch('/user', 200, { data: { name: 'new name' }})
392
- * ```
393
- */
394
- uri: Uri,
395
- /**
396
- * The response status you are expecting to receive
397
- * when making this request. It will need to match
398
- * one of the accepted response statuses for the
399
- * provided uri in your openapi types
400
- *
401
- * ```ts
402
- * const request = new OpenapiSpecRequest<openapiPaths>()
403
- * const res = await request.patch('/user', 200, { data: { name: 'new name' }})
404
- * ```
405
- */
406
- expectedStatus: ResponseCode,
407
- /**
408
- * Data, headers, and other options to send with
409
- * your request.
410
- *
411
- * ```ts
412
- * const request = new OpenapiSpecRequest<openapiPaths>()
413
- * const res = await request.patch(
414
- * '/user',
415
- * 200,
416
- * {
417
- * data: {
418
- * ...request body here
419
- * },
420
- * headers: {
421
- * ...headers here
422
- * },
423
- * }
424
- * )
425
- * ```
426
- *
427
- * @param opts.data - request body data you want to send up. Must match the
428
- * requestBody shape in the openapi document for this uri.
429
- * (Optional)
430
- *
431
- * @param opts.headers - headers you would like to send with your request.
432
- * (Optional)
433
- */
434
- opts?: Params['length'] extends 0 ? OpenapiSpecRequestOptsPost<RequestBodyJsonContent> : never): Promise<OpenapiSpecResponse<JsonContent>>;
435
- delete<const Uri extends RoutesWithHttpMethod<OpenapiPaths, 'delete' & keyof OpenapiPaths[keyof OpenapiPaths]> & string, const ResponseCode extends Params['length'] extends 0 ? never : keyof ExcludeNever<ResponseMap> & number, HttpMethodMap extends OpenapiPaths[Uri & keyof OpenapiPaths], Params extends string[] & ExtractOpenapiParams<Uri>, ResponseMap extends HttpMethodMap['delete' & keyof HttpMethodMap]['responses' & keyof HttpMethodMap['delete' & keyof HttpMethodMap]], Content extends ResponseMap extends undefined ? undefined : ResponseCode extends undefined ? undefined : ResponseCode extends number ? ResponseMap[ResponseCode & keyof ResponseMap]['content' & keyof ResponseMap[ResponseCode & keyof ResponseMap]] : undefined, JsonContent extends Content extends undefined ? undefined : Content['application/json' & keyof Content], RequestBodyMap extends HttpMethodMap['delete' & keyof HttpMethodMap]['requestBody' & keyof HttpMethodMap['delete' & keyof HttpMethodMap]], RequestBodyContent extends RequestBodyMap extends undefined ? undefined : RequestBodyMap['content' & keyof RequestBodyMap], RequestBodyJsonContent extends RequestBodyContent extends undefined ? undefined : RequestBodyContent['application/json' & keyof RequestBodyContent]>(
233
+ delete<const Uri extends RoutesWithHttpMethod<OpenapiPaths, 'delete' & keyof OpenapiPaths[keyof OpenapiPaths]> & string, const ResponseCode extends keyof ResponseMap & number, HttpMethodMap extends OpenapiPaths[Uri & keyof OpenapiPaths], Params extends string[] & ExtractOpenapiParams<Uri>, ResponseMap extends HttpMethodMap['delete' & keyof HttpMethodMap]['responses' & keyof HttpMethodMap['delete' & keyof HttpMethodMap]], Content extends ResponseMap extends undefined ? undefined : ResponseCode extends undefined ? undefined : ResponseCode extends number ? ResponseMap[ResponseCode & keyof ResponseMap]['content' & keyof ResponseMap[ResponseCode & keyof ResponseMap]] : undefined, JsonContent extends Content extends undefined ? undefined : Content['application/json' & keyof Content], RequestBodyMap extends HttpMethodMap['delete' & keyof HttpMethodMap]['requestBody' & keyof HttpMethodMap['delete' & keyof HttpMethodMap]], RequestBodyContent extends RequestBodyMap extends undefined ? undefined : RequestBodyMap['content' & keyof RequestBodyMap], RequestBodyJsonContent extends RequestBodyContent extends undefined ? undefined : RequestBodyContent['application/json' & keyof RequestBodyContent]>(
436
234
  /**
437
235
  * The uri on your background you are trying to hit.
438
236
  * This should be a path, like '/users'.
@@ -485,62 +283,10 @@ export declare class OpenapiSpecRequest<OpenapiPaths = undefined> {
485
283
  * @param opts.headers - headers you would like to send with your request.
486
284
  * (Optional)
487
285
  */
488
- opts: Params['length'] extends 0 ? never : OpenapiSpecRequestOptsPost<RequestBodyJsonContent> & {
286
+ opts?: Params['length'] extends 0 ? OpenapiSpecRequestOptsPost<RequestBodyJsonContent> : OpenapiSpecRequestOptsPost<RequestBodyJsonContent> & {
489
287
  [K in Params[number]]: string | IdType;
490
288
  }): Promise<OpenapiSpecResponse<JsonContent>>;
491
- delete<const Uri extends RoutesWithHttpMethod<OpenapiPaths, 'delete' & keyof OpenapiPaths[keyof OpenapiPaths]> & string, const ResponseCode extends Params['length'] extends 0 ? keyof ExcludeNever<ResponseMap> & number : never, HttpMethodMap extends OpenapiPaths[Uri & keyof OpenapiPaths], Params extends string[] & ExtractOpenapiParams<Uri>, ResponseMap extends HttpMethodMap['delete' & keyof HttpMethodMap]['responses' & keyof HttpMethodMap['delete' & keyof HttpMethodMap]], Content extends ResponseMap extends undefined ? undefined : ResponseCode extends undefined ? undefined : ResponseCode extends number ? ResponseMap[ResponseCode & keyof ResponseMap]['content' & keyof ResponseMap[ResponseCode & keyof ResponseMap]] : undefined, JsonContent extends Content extends undefined ? undefined : Content['application/json' & keyof Content], RequestBodyMap extends HttpMethodMap['delete' & keyof HttpMethodMap]['requestBody' & keyof HttpMethodMap['delete' & keyof HttpMethodMap]], RequestBodyContent extends RequestBodyMap extends undefined ? undefined : RequestBodyMap['content' & keyof RequestBodyMap], RequestBodyJsonContent extends RequestBodyContent extends undefined ? undefined : RequestBodyContent['application/json' & keyof RequestBodyContent]>(
492
- /**
493
- * The uri on your background you are trying to hit.
494
- * This should be a path, like '/users'.
495
- *
496
- * ```ts
497
- * const request = new OpenapiSpecRequest<openapiPaths>()
498
- * const res = await request.delete('/user', 200)
499
- * ```
500
- */
501
- uri: Uri,
502
- /**
503
- * The response status you are expecting to receive
504
- * when making this request. It will need to match
505
- * one of the accepted response statuses for the
506
- * provided uri in your openapi types
507
- *
508
- * ```ts
509
- * const request = new OpenapiSpecRequest<openapiPaths>()
510
- * const res = await request.delete('/user', 200)
511
- * ```
512
- */
513
- expectedStatus: ResponseCode,
514
- /**
515
- * Data, headers, and other options to send with
516
- * your request.
517
- *
518
- * ```ts
519
- * const request = new OpenapiSpecRequest<openapiPaths>()
520
- * const res = await request.delete(
521
- * '/user',
522
- * 200,
523
- * {
524
- * data: {
525
- * ...request body here
526
- * },
527
- * headers: {
528
- * ...headers here
529
- * },
530
- * }
531
- * )
532
- * ```
533
- *
534
- * @param opts.data - request body data you want to send up. Must match the
535
- * requestBody shape in the openapi document for this uri.
536
- * (Optional)
537
- *
538
- * @param opts.headers - headers you would like to send with your request.
539
- * (Optional)
540
- */
541
- opts?: Params['length'] extends 0 ? OpenapiSpecRequestOptsPost<RequestBodyJsonContent> : never): Promise<OpenapiSpecResponse<JsonContent>>;
542
- init(PsychicServer: any): Promise<void>;
543
- session<const ProvidedHttpMethod extends HttpMethod, const Uri extends RoutesWithHttpMethod<OpenapiPaths, ProvidedHttpMethod & keyof OpenapiPaths[keyof OpenapiPaths]> & string, const ResponseCode extends Params['length'] extends 0 ? never : keyof ExcludeNever<ResponseMap> & number, HttpMethodMap extends OpenapiPaths[Uri & keyof OpenapiPaths], Params extends string[] & ExtractOpenapiParams<Uri>, ResponseMap extends HttpMethodMap[ProvidedHttpMethod & keyof HttpMethodMap]['responses' & keyof HttpMethodMap[ProvidedHttpMethod & keyof HttpMethodMap]], ParametersMap extends HttpMethodMap[ProvidedHttpMethod & keyof HttpMethodMap]['parameters' & keyof HttpMethodMap[ProvidedHttpMethod & keyof HttpMethodMap]], QueryMap extends ParametersMap['query' & keyof ParametersMap], RequestBodyMap extends HttpMethodMap[ProvidedHttpMethod & keyof HttpMethodMap]['requestBody' & keyof HttpMethodMap[ProvidedHttpMethod & keyof HttpMethodMap]], RequestBodyContent extends RequestBodyMap extends undefined ? undefined : RequestBodyMap['content' & keyof RequestBodyMap], RequestBodyJsonContent extends RequestBodyContent extends undefined ? undefined : RequestBodyContent['application/json' & keyof RequestBodyContent]>(httpMethod: ProvidedHttpMethod,
289
+ session<const ProvidedHttpMethod extends HttpMethod, const Uri extends RoutesWithHttpMethod<OpenapiPaths, ProvidedHttpMethod & keyof OpenapiPaths[keyof OpenapiPaths]> & string, const ResponseCode extends keyof ResponseMap & number, HttpMethodMap extends OpenapiPaths[Uri & keyof OpenapiPaths], Params extends string[] & ExtractOpenapiParams<Uri>, ResponseMap extends HttpMethodMap[ProvidedHttpMethod & keyof HttpMethodMap]['responses' & keyof HttpMethodMap[ProvidedHttpMethod & keyof HttpMethodMap]], ParametersMap extends HttpMethodMap[ProvidedHttpMethod & keyof HttpMethodMap]['parameters' & keyof HttpMethodMap[ProvidedHttpMethod & keyof HttpMethodMap]], QueryMap extends ParametersMap['query' & keyof ParametersMap], RequestBodyMap extends HttpMethodMap[ProvidedHttpMethod & keyof HttpMethodMap]['requestBody' & keyof HttpMethodMap[ProvidedHttpMethod & keyof HttpMethodMap]], RequestBodyContent extends RequestBodyMap extends undefined ? undefined : RequestBodyMap['content' & keyof RequestBodyMap], RequestBodyJsonContent extends RequestBodyContent extends undefined ? undefined : RequestBodyContent['application/json' & keyof RequestBodyContent]>(httpMethod: ProvidedHttpMethod,
544
290
  /**
545
291
  * The uri on your background you are trying to hit.
546
292
  * This should be a path, like '/users'.
@@ -604,75 +350,9 @@ export declare class OpenapiSpecRequest<OpenapiPaths = undefined> {
604
350
  * @param opts.headers - headers you would like to send with your request.
605
351
  * (Optional)
606
352
  */
607
- opts: (ProvidedHttpMethod extends 'get' ? OpenapiSpecRequestOptsGet<QueryMap> : OpenapiSpecRequestOptsPost<RequestBodyJsonContent>) & {
353
+ opts?: (ProvidedHttpMethod extends 'get' ? OpenapiSpecRequestOptsGet<QueryMap> : OpenapiSpecRequestOptsPost<RequestBodyJsonContent>) & {
608
354
  [K in Params[number]]: string | IdType;
609
355
  }): Promise<OpenapiSpecSession<OpenapiPaths>>;
610
- session<const ProvidedHttpMethod extends HttpMethod, const Uri extends RoutesWithHttpMethod<OpenapiPaths, ProvidedHttpMethod & keyof OpenapiPaths[keyof OpenapiPaths]> & string, const ResponseCode extends Params['length'] extends 0 ? keyof ExcludeNever<ResponseMap> & number : never, HttpMethodMap extends OpenapiPaths[Uri & keyof OpenapiPaths], Params extends string[] & ExtractOpenapiParams<Uri>, ResponseMap extends HttpMethodMap[ProvidedHttpMethod & keyof HttpMethodMap]['responses' & keyof HttpMethodMap[ProvidedHttpMethod & keyof HttpMethodMap]], ParametersMap extends HttpMethodMap[ProvidedHttpMethod & keyof HttpMethodMap]['parameters' & keyof HttpMethodMap[ProvidedHttpMethod & keyof HttpMethodMap]], QueryMap extends ParametersMap['query' & keyof ParametersMap], RequestBodyMap extends HttpMethodMap[ProvidedHttpMethod & keyof HttpMethodMap]['requestBody' & keyof HttpMethodMap[ProvidedHttpMethod & keyof HttpMethodMap]], RequestBodyContent extends RequestBodyMap extends undefined ? undefined : RequestBodyMap['content' & keyof RequestBodyMap], RequestBodyJsonContent extends RequestBodyContent extends undefined ? undefined : RequestBodyContent['application/json' & keyof RequestBodyContent]>(httpMethod: ProvidedHttpMethod,
611
- /**
612
- * The uri on your background you are trying to hit.
613
- * This should be a path, like '/users'.
614
- *
615
- * ```ts
616
- * const request = new OpenapiSpecRequest<openapiPaths>()
617
- * const session = await request.session('post', '/login', 200)
618
- * ```
619
- */
620
- uri: Uri,
621
- /**
622
- * The response status you are expecting to receive
623
- * when making this request. It will need to match
624
- * one of the accepted response statuses for the
625
- * provided uri in your openapi types
626
- *
627
- * ```ts
628
- * const request = new OpenapiSpecRequest<openapiPaths>()
629
- * const session = await request.session('post', '/login', 200)
630
- * ```
631
- */
632
- expectedStatus: ResponseCode,
633
- /**
634
- * An object containing the path fields required to
635
- * fill your uri in, as well as any additional
636
- * arguments, for the chosen HTTP verb, like `data`,
637
- * for example.
638
- *
639
- * ```ts
640
- * const request = new OpenapiSpecRequest<openapiPaths>()
641
- * const res = await request.session(
642
- * 'post',
643
- * '/login',
644
- * 200,
645
- * {
646
- * token: '123',
647
- *
648
- * // if non-get
649
- * data: {
650
- * email: 'abc',
651
- * password: 'def',
652
- * },
653
- * // if get
654
- * query: {
655
- * ...request body here
656
- * },
657
- * headers: {
658
- * ...headers here
659
- * },
660
- * }
661
- * )
662
- * ```
663
- *
664
- * @param opts.data - request body data you want to send up. Must match the
665
- * requestBody shape in the openapi document for this uri.
666
- * (Optional)
667
- *
668
- * @param opts.query - query params you want to send up. Must match the
669
- * query parameters in the openapi document for this uri.
670
- * (Optional)
671
- *
672
- * @param opts.headers - headers you would like to send with your request.
673
- * (Optional)
674
- */
675
- opts?: Params['length'] extends 0 ? ProvidedHttpMethod extends 'get' ? OpenapiSpecRequestOptsGet<QueryMap> : OpenapiSpecRequestOptsPost<RequestBodyJsonContent> : never): Promise<OpenapiSpecSession<OpenapiPaths>>;
676
356
  private makeRequest;
677
357
  }
678
358
  export type OpenapiSpecResponse<Body = any> = Omit<Response, 'body'> & {