@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.
- package/dist/esm/spec/features/setup/hooks.js +2 -2
- package/dist/esm/src/unit/OpenapiSpecRequest.js +342 -21
- package/dist/esm/src/unit/OpenapiSpecSession.js +290 -12
- package/dist/types/src/unit/OpenapiSpecRequest.d.ts +15 -335
- package/dist/types/src/unit/OpenapiSpecSession.d.ts +8 -277
- package/package.json +1 -1
- package/src/unit/OpenapiSpecRequest.ts +98 -831
- package/src/unit/OpenapiSpecSession.ts +82 -696
|
@@ -4,7 +4,6 @@ import {
|
|
|
4
4
|
ExcludeNever,
|
|
5
5
|
ExtractOpenapiParams,
|
|
6
6
|
First,
|
|
7
|
-
GetOpenapiUrl,
|
|
8
7
|
GetResolvedOpenapiUrl,
|
|
9
8
|
RoutesWithHttpMethod,
|
|
10
9
|
} from './helpers/openapiTypeHelpers.js'
|
|
@@ -13,19 +12,14 @@ import {
|
|
|
13
12
|
OpenapiSpecRequestOptsPost,
|
|
14
13
|
OpenapiSpecResponse,
|
|
15
14
|
} from './OpenapiSpecRequest.js'
|
|
16
|
-
import supersession from './supersession.js'
|
|
17
15
|
import { SpecRequestOptsAll } from './SpecRequest.js'
|
|
16
|
+
import supersession from './supersession.js'
|
|
18
17
|
|
|
19
18
|
// like SpecRequest, but meant to be bound to an instance
|
|
20
19
|
// of supersession, enabling chained requests to collect cookies
|
|
21
20
|
export class OpenapiSpecSession<OpenapiPaths> {
|
|
22
21
|
constructor(private _session: ReturnType<typeof supersession>) {}
|
|
23
22
|
|
|
24
|
-
//
|
|
25
|
-
//
|
|
26
|
-
//
|
|
27
|
-
// begin: GET
|
|
28
|
-
// has Params
|
|
29
23
|
public async get<
|
|
30
24
|
const Uri extends RoutesWithHttpMethod<
|
|
31
25
|
OpenapiPaths,
|
|
@@ -106,118 +100,9 @@ export class OpenapiSpecSession<OpenapiPaths> {
|
|
|
106
100
|
* @param opts.headers - headers you would like to send with your request.
|
|
107
101
|
* (Optional)
|
|
108
102
|
*/
|
|
109
|
-
opts
|
|
110
|
-
?
|
|
103
|
+
opts?: Params['length'] extends 0
|
|
104
|
+
? OpenapiSpecRequestOptsGet<QueryMap>
|
|
111
105
|
: OpenapiSpecRequestOptsGet<QueryMap> & { [K in Params[number]]: string | IdType }
|
|
112
|
-
): Promise<OpenapiSpecResponse<JsonContent>>
|
|
113
|
-
// doesn't have Params
|
|
114
|
-
public async get<
|
|
115
|
-
const Uri extends RoutesWithHttpMethod<
|
|
116
|
-
OpenapiPaths,
|
|
117
|
-
'get' & keyof OpenapiPaths[keyof OpenapiPaths]
|
|
118
|
-
> &
|
|
119
|
-
string,
|
|
120
|
-
const ResponseCode extends Params['length'] extends 0
|
|
121
|
-
? keyof ExcludeNever<ResponseMap> & number
|
|
122
|
-
: never,
|
|
123
|
-
HttpMethodMap extends OpenapiPaths[Uri & keyof OpenapiPaths],
|
|
124
|
-
ResponseMap extends HttpMethodMap['get' & keyof HttpMethodMap]['responses' &
|
|
125
|
-
keyof HttpMethodMap['get' & keyof HttpMethodMap]],
|
|
126
|
-
ParametersMap extends HttpMethodMap['get' & keyof HttpMethodMap]['parameters' &
|
|
127
|
-
keyof HttpMethodMap['get' & keyof HttpMethodMap]],
|
|
128
|
-
QueryMap extends ParametersMap['query' & keyof ParametersMap],
|
|
129
|
-
Params extends string[] & ExtractOpenapiParams<Uri>,
|
|
130
|
-
Content extends ResponseMap extends undefined
|
|
131
|
-
? undefined
|
|
132
|
-
: ResponseCode extends undefined
|
|
133
|
-
? undefined
|
|
134
|
-
: ResponseCode extends number
|
|
135
|
-
? ResponseMap[ResponseCode & keyof ResponseMap]['content' &
|
|
136
|
-
keyof ResponseMap[ResponseCode & keyof ResponseMap]]
|
|
137
|
-
: undefined,
|
|
138
|
-
JsonContent extends Content extends undefined
|
|
139
|
-
? undefined
|
|
140
|
-
: Content['application/json' & keyof Content],
|
|
141
|
-
>(
|
|
142
|
-
/**
|
|
143
|
-
* The uri on your background you are trying to hit.
|
|
144
|
-
* This should be a path, like '/users'.
|
|
145
|
-
*
|
|
146
|
-
* ```ts
|
|
147
|
-
* const request = new OpenapiSpecRequest<openapiPaths>()
|
|
148
|
-
* const session = await request.session('post', '/sessions/{token}', 200, { token: 'abc' })
|
|
149
|
-
* const res = await session.get('/user', 200)
|
|
150
|
-
* ```
|
|
151
|
-
*/
|
|
152
|
-
uri: Uri,
|
|
153
|
-
|
|
154
|
-
/**
|
|
155
|
-
* The response status you are expecting to receive
|
|
156
|
-
* when making this request. It will need to match
|
|
157
|
-
* one of the accepted response statuses for the
|
|
158
|
-
* provided uri in your openapi types
|
|
159
|
-
*
|
|
160
|
-
* ```ts
|
|
161
|
-
* const request = new OpenapiSpecRequest<openapiPaths>()
|
|
162
|
-
* const session = await request.session('post', '/sessions/{token}', 200, { token: 'abc' })
|
|
163
|
-
* const res = await session.get('/user', 200)
|
|
164
|
-
* ```
|
|
165
|
-
*/
|
|
166
|
-
expectedStatus: ResponseCode,
|
|
167
|
-
|
|
168
|
-
/**
|
|
169
|
-
* Query params, headers, and other options to send with
|
|
170
|
-
* your request.
|
|
171
|
-
*
|
|
172
|
-
* ```ts
|
|
173
|
-
* const request = new OpenapiSpecRequest<openapiPaths>()
|
|
174
|
-
* const session = await request.session('post', '/sessions/{token}', 200, { token: 'abc' })
|
|
175
|
-
* const res = await session.get(
|
|
176
|
-
* '/user',
|
|
177
|
-
* 200,
|
|
178
|
-
* {
|
|
179
|
-
* query: {
|
|
180
|
-
* ...query params here
|
|
181
|
-
* }
|
|
182
|
-
* }
|
|
183
|
-
* )
|
|
184
|
-
* ```
|
|
185
|
-
*
|
|
186
|
-
* @param opts.query - query params you want to send up. Must match the
|
|
187
|
-
* query params in the openapi document for this uri.
|
|
188
|
-
* (Optional)
|
|
189
|
-
*
|
|
190
|
-
* @param opts.headers - headers you would like to send with your request.
|
|
191
|
-
* (Optional)
|
|
192
|
-
*/
|
|
193
|
-
opts?: OpenapiSpecRequestOptsGet<QueryMap>
|
|
194
|
-
): Promise<OpenapiSpecResponse<JsonContent>>
|
|
195
|
-
// final
|
|
196
|
-
public async get<
|
|
197
|
-
const Uri extends RoutesWithHttpMethod<
|
|
198
|
-
OpenapiPaths,
|
|
199
|
-
'get' & keyof OpenapiPaths[keyof OpenapiPaths]
|
|
200
|
-
> &
|
|
201
|
-
string,
|
|
202
|
-
const ResponseCode extends keyof ExcludeNever<ResponseMap> & number,
|
|
203
|
-
HttpMethodMap extends OpenapiPaths[Uri & keyof OpenapiPaths],
|
|
204
|
-
ResponseMap extends HttpMethodMap['get' & keyof HttpMethodMap]['responses' &
|
|
205
|
-
keyof HttpMethodMap['get' & keyof HttpMethodMap]],
|
|
206
|
-
Content extends ResponseMap extends undefined
|
|
207
|
-
? undefined
|
|
208
|
-
: ResponseCode extends undefined
|
|
209
|
-
? undefined
|
|
210
|
-
: ResponseCode extends number
|
|
211
|
-
? ResponseMap[ResponseCode & keyof ResponseMap]['content' &
|
|
212
|
-
keyof ResponseMap[ResponseCode & keyof ResponseMap]]
|
|
213
|
-
: undefined,
|
|
214
|
-
JsonContent extends Content extends undefined
|
|
215
|
-
? undefined
|
|
216
|
-
: Content['application/json' & keyof Content],
|
|
217
|
-
>(
|
|
218
|
-
uri: Uri,
|
|
219
|
-
expectedStatus: ResponseCode,
|
|
220
|
-
opts: unknown
|
|
221
106
|
): Promise<OpenapiSpecResponse<JsonContent>> {
|
|
222
107
|
return (await this.makeRequest(
|
|
223
108
|
'get',
|
|
@@ -238,9 +123,7 @@ export class OpenapiSpecSession<OpenapiPaths> {
|
|
|
238
123
|
'post' & keyof OpenapiPaths[keyof OpenapiPaths]
|
|
239
124
|
> &
|
|
240
125
|
string,
|
|
241
|
-
const ResponseCode extends
|
|
242
|
-
? never
|
|
243
|
-
: keyof ExcludeNever<ResponseMap> & number,
|
|
126
|
+
const ResponseCode extends keyof ResponseMap & number,
|
|
244
127
|
HttpMethodMap extends OpenapiPaths[ResolvedUri & keyof OpenapiPaths],
|
|
245
128
|
ResolvedUri extends First<GetResolvedOpenapiUrl<OpenapiPaths, Uri> & keyof OpenapiPaths>,
|
|
246
129
|
Params extends string[] & ExtractOpenapiParams<Uri>,
|
|
@@ -323,22 +206,24 @@ export class OpenapiSpecSession<OpenapiPaths> {
|
|
|
323
206
|
* @param opts.headers - headers you would like to send with your request.
|
|
324
207
|
* (Optional)
|
|
325
208
|
*/
|
|
326
|
-
opts
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
209
|
+
opts?: Params['length'] extends 0
|
|
210
|
+
? OpenapiSpecRequestOptsPost<RequestBodyJsonContent>
|
|
211
|
+
: OpenapiSpecRequestOptsPost<RequestBodyJsonContent> & { [K in Params[number]]: string }
|
|
212
|
+
): Promise<OpenapiSpecResponse<JsonContent>> {
|
|
213
|
+
return await this.makeRequest('post', uri, expectedStatus, opts as SpecRequestOptsAll)
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
public async put<
|
|
330
217
|
const Uri extends RoutesWithHttpMethod<
|
|
331
218
|
OpenapiPaths,
|
|
332
|
-
'
|
|
219
|
+
'put' & keyof OpenapiPaths[keyof OpenapiPaths]
|
|
333
220
|
> &
|
|
334
221
|
string,
|
|
335
|
-
const ResponseCode extends
|
|
336
|
-
? keyof ExcludeNever<ResponseMap> & number
|
|
337
|
-
: never,
|
|
222
|
+
const ResponseCode extends keyof ResponseMap & number,
|
|
338
223
|
HttpMethodMap extends OpenapiPaths[Uri & keyof OpenapiPaths],
|
|
339
224
|
Params extends string[] & ExtractOpenapiParams<Uri>,
|
|
340
|
-
ResponseMap extends HttpMethodMap['
|
|
341
|
-
keyof HttpMethodMap['
|
|
225
|
+
ResponseMap extends HttpMethodMap['put' & keyof HttpMethodMap]['responses' &
|
|
226
|
+
keyof HttpMethodMap['put' & keyof HttpMethodMap]],
|
|
342
227
|
Content extends ResponseMap extends undefined
|
|
343
228
|
? undefined
|
|
344
229
|
: ResponseCode extends undefined
|
|
@@ -350,8 +235,8 @@ export class OpenapiSpecSession<OpenapiPaths> {
|
|
|
350
235
|
JsonContent extends Content extends undefined
|
|
351
236
|
? undefined
|
|
352
237
|
: Content['application/json' & keyof Content],
|
|
353
|
-
RequestBodyMap extends HttpMethodMap['
|
|
354
|
-
keyof HttpMethodMap['
|
|
238
|
+
RequestBodyMap extends HttpMethodMap['put' & keyof HttpMethodMap]['requestBody' &
|
|
239
|
+
keyof HttpMethodMap['put' & keyof HttpMethodMap]],
|
|
355
240
|
RequestBodyContent extends RequestBodyMap extends undefined
|
|
356
241
|
? undefined
|
|
357
242
|
: RequestBodyMap['content' & keyof RequestBodyMap],
|
|
@@ -366,7 +251,7 @@ export class OpenapiSpecSession<OpenapiPaths> {
|
|
|
366
251
|
* ```ts
|
|
367
252
|
* const request = new OpenapiSpecRequest<openapiPaths>()
|
|
368
253
|
* const session = await request.session('post', '/sessions/{token}', 200, { token: 'abc' })
|
|
369
|
-
* const res = await session.
|
|
254
|
+
* const res = await session.put('/posts/{id}', 200, { id: '123', data: { name: 'new name' }})
|
|
370
255
|
* ```
|
|
371
256
|
*/
|
|
372
257
|
uri: Uri,
|
|
@@ -380,22 +265,26 @@ export class OpenapiSpecSession<OpenapiPaths> {
|
|
|
380
265
|
* ```ts
|
|
381
266
|
* const request = new OpenapiSpecRequest<openapiPaths>()
|
|
382
267
|
* const session = await request.session('post', '/sessions/{token}', 200, { token: 'abc' })
|
|
383
|
-
* const res = await session.
|
|
268
|
+
* const res = await session.put('/posts/{id}', 200, { id: '123', data: { name: 'new name' }})
|
|
384
269
|
* ```
|
|
385
270
|
*/
|
|
386
271
|
expectedStatus: ResponseCode,
|
|
387
272
|
|
|
388
273
|
/**
|
|
389
|
-
*
|
|
390
|
-
* your
|
|
274
|
+
* An object containing the path fields required to
|
|
275
|
+
* fill your uri in, as well as any additional PUT
|
|
276
|
+
* arguments, like `data`, for example.
|
|
391
277
|
*
|
|
392
278
|
* ```ts
|
|
393
279
|
* const request = new OpenapiSpecRequest<openapiPaths>()
|
|
394
280
|
* const session = await request.session('post', '/sessions/{token}', 200, { token: 'abc' })
|
|
395
|
-
* const res = await session.
|
|
396
|
-
* '/
|
|
281
|
+
* const res = await session.put(
|
|
282
|
+
* '/posts/{id}/comments/{commentId}',
|
|
397
283
|
* 200,
|
|
398
284
|
* {
|
|
285
|
+
* postId: '123',
|
|
286
|
+
* id: '456',
|
|
287
|
+
*
|
|
399
288
|
* data: {
|
|
400
289
|
* ...request body here
|
|
401
290
|
* },
|
|
@@ -413,56 +302,31 @@ export class OpenapiSpecSession<OpenapiPaths> {
|
|
|
413
302
|
* @param opts.headers - headers you would like to send with your request.
|
|
414
303
|
* (Optional)
|
|
415
304
|
*/
|
|
416
|
-
opts?: Params['length'] extends 0
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
OpenapiPaths,
|
|
422
|
-
'post' & keyof OpenapiPaths[keyof OpenapiPaths]
|
|
423
|
-
> &
|
|
424
|
-
string,
|
|
425
|
-
const ResponseCode extends keyof ExcludeNever<ResponseMap> & number,
|
|
426
|
-
HttpMethodMap extends OpenapiPaths[Uri & keyof OpenapiPaths],
|
|
427
|
-
ResponseMap = HttpMethodMap['post' & keyof HttpMethodMap]['responses' &
|
|
428
|
-
keyof HttpMethodMap['post' & keyof HttpMethodMap]],
|
|
429
|
-
Content = ResponseMap extends undefined
|
|
430
|
-
? undefined
|
|
431
|
-
: ResponseCode extends undefined
|
|
432
|
-
? undefined
|
|
433
|
-
: ResponseCode extends number
|
|
434
|
-
? ResponseMap[ResponseCode & keyof ResponseMap]['content' &
|
|
435
|
-
keyof ResponseMap[ResponseCode & keyof ResponseMap]]
|
|
436
|
-
: undefined,
|
|
437
|
-
JsonContent = Content extends undefined
|
|
438
|
-
? undefined
|
|
439
|
-
: Content['application/json' & keyof Content],
|
|
440
|
-
>(
|
|
441
|
-
uri: Uri,
|
|
442
|
-
expectedStatus: ResponseCode,
|
|
443
|
-
opts: unknown = {}
|
|
305
|
+
opts?: Params['length'] extends 0
|
|
306
|
+
? OpenapiSpecRequestOptsPost<RequestBodyJsonContent>
|
|
307
|
+
: OpenapiSpecRequestOptsPost<RequestBodyJsonContent> & {
|
|
308
|
+
[K in Params[number]]: string | IdType
|
|
309
|
+
}
|
|
444
310
|
): Promise<OpenapiSpecResponse<JsonContent>> {
|
|
445
|
-
return await this.makeRequest(
|
|
311
|
+
return await this.makeRequest(
|
|
312
|
+
'put',
|
|
313
|
+
fillOpenapiParams(uri, opts || {}),
|
|
314
|
+
expectedStatus,
|
|
315
|
+
opts as SpecRequestOptsAll
|
|
316
|
+
)
|
|
446
317
|
}
|
|
447
318
|
|
|
448
|
-
|
|
449
|
-
//
|
|
450
|
-
//
|
|
451
|
-
// begin: PUT
|
|
452
|
-
// has Params
|
|
453
|
-
public async put<
|
|
319
|
+
public async patch<
|
|
454
320
|
const Uri extends RoutesWithHttpMethod<
|
|
455
321
|
OpenapiPaths,
|
|
456
|
-
'
|
|
322
|
+
'patch' & keyof OpenapiPaths[keyof OpenapiPaths]
|
|
457
323
|
> &
|
|
458
324
|
string,
|
|
459
|
-
const ResponseCode extends
|
|
460
|
-
? never
|
|
461
|
-
: keyof ExcludeNever<ResponseMap> & number,
|
|
325
|
+
const ResponseCode extends keyof ResponseMap & number,
|
|
462
326
|
HttpMethodMap extends OpenapiPaths[Uri & keyof OpenapiPaths],
|
|
463
327
|
Params extends string[] & ExtractOpenapiParams<Uri>,
|
|
464
|
-
ResponseMap extends HttpMethodMap['
|
|
465
|
-
keyof HttpMethodMap['
|
|
328
|
+
ResponseMap extends HttpMethodMap['patch' & keyof HttpMethodMap]['responses' &
|
|
329
|
+
keyof HttpMethodMap['patch' & keyof HttpMethodMap]],
|
|
466
330
|
Content extends ResponseMap extends undefined
|
|
467
331
|
? undefined
|
|
468
332
|
: ResponseCode extends undefined
|
|
@@ -474,8 +338,8 @@ export class OpenapiSpecSession<OpenapiPaths> {
|
|
|
474
338
|
JsonContent extends Content extends undefined
|
|
475
339
|
? undefined
|
|
476
340
|
: Content['application/json' & keyof Content],
|
|
477
|
-
RequestBodyMap extends HttpMethodMap['
|
|
478
|
-
keyof HttpMethodMap['
|
|
341
|
+
RequestBodyMap extends HttpMethodMap['patch' & keyof HttpMethodMap]['requestBody' &
|
|
342
|
+
keyof HttpMethodMap['patch' & keyof HttpMethodMap]],
|
|
479
343
|
RequestBodyContent extends RequestBodyMap extends undefined
|
|
480
344
|
? undefined
|
|
481
345
|
: RequestBodyMap['content' & keyof RequestBodyMap],
|
|
@@ -485,12 +349,12 @@ export class OpenapiSpecSession<OpenapiPaths> {
|
|
|
485
349
|
>(
|
|
486
350
|
/**
|
|
487
351
|
* The uri on your background you are trying to hit.
|
|
488
|
-
* This should be a path, like '/
|
|
352
|
+
* This should be a path, like '/posts'.
|
|
489
353
|
*
|
|
490
354
|
* ```ts
|
|
491
355
|
* const request = new OpenapiSpecRequest<openapiPaths>()
|
|
492
356
|
* const session = await request.session('post', '/sessions/{token}', 200, { token: 'abc' })
|
|
493
|
-
* const res = await session.
|
|
357
|
+
* const res = await session.patch('/posts/{id}', 200, { data: { name: 'new name' }})
|
|
494
358
|
* ```
|
|
495
359
|
*/
|
|
496
360
|
uri: Uri,
|
|
@@ -504,26 +368,25 @@ export class OpenapiSpecSession<OpenapiPaths> {
|
|
|
504
368
|
* ```ts
|
|
505
369
|
* const request = new OpenapiSpecRequest<openapiPaths>()
|
|
506
370
|
* const session = await request.session('post', '/sessions/{token}', 200, { token: 'abc' })
|
|
507
|
-
* const res = await session.
|
|
371
|
+
* const res = await session.patch('/posts/{id}', 200, { data: { name: 'new name' }})
|
|
508
372
|
* ```
|
|
509
373
|
*/
|
|
510
374
|
expectedStatus: ResponseCode,
|
|
511
375
|
|
|
512
376
|
/**
|
|
513
377
|
* An object containing the path fields required to
|
|
514
|
-
* fill your uri in, as well as any additional
|
|
378
|
+
* fill your uri in, as well as any additional PATCH
|
|
515
379
|
* arguments, like `data`, for example.
|
|
516
380
|
*
|
|
517
381
|
* ```ts
|
|
518
382
|
* const request = new OpenapiSpecRequest<openapiPaths>()
|
|
519
383
|
* const session = await request.session('post', '/sessions/{token}', 200, { token: 'abc' })
|
|
520
|
-
* const res = await session.
|
|
521
|
-
* '/posts/{
|
|
384
|
+
* const res = await session.patch(
|
|
385
|
+
* '/posts/{postId}/comments/{id}',
|
|
522
386
|
* 200,
|
|
523
387
|
* {
|
|
524
388
|
* postId: '123',
|
|
525
|
-
*
|
|
526
|
-
*
|
|
389
|
+
* commentId: '456',
|
|
527
390
|
* data: {
|
|
528
391
|
* ...request body here
|
|
529
392
|
* },
|
|
@@ -541,26 +404,33 @@ export class OpenapiSpecSession<OpenapiPaths> {
|
|
|
541
404
|
* @param opts.headers - headers you would like to send with your request.
|
|
542
405
|
* (Optional)
|
|
543
406
|
*/
|
|
544
|
-
opts
|
|
545
|
-
?
|
|
407
|
+
opts?: Params['length'] extends 0
|
|
408
|
+
? OpenapiSpecRequestOptsPost<RequestBodyJsonContent>
|
|
546
409
|
: OpenapiSpecRequestOptsPost<RequestBodyJsonContent> & {
|
|
547
410
|
[K in Params[number]]: string | IdType
|
|
548
411
|
}
|
|
549
|
-
): Promise<OpenapiSpecResponse<JsonContent>>
|
|
550
|
-
|
|
551
|
-
|
|
412
|
+
): Promise<OpenapiSpecResponse<JsonContent>> {
|
|
413
|
+
return await this.makeRequest(
|
|
414
|
+
'patch',
|
|
415
|
+
fillOpenapiParams(uri, opts || {}),
|
|
416
|
+
expectedStatus,
|
|
417
|
+
opts as SpecRequestOptsAll
|
|
418
|
+
)
|
|
419
|
+
}
|
|
420
|
+
|
|
421
|
+
public async delete<
|
|
552
422
|
const Uri extends RoutesWithHttpMethod<
|
|
553
423
|
OpenapiPaths,
|
|
554
|
-
'
|
|
424
|
+
'delete' & keyof OpenapiPaths[keyof OpenapiPaths]
|
|
555
425
|
> &
|
|
556
426
|
string,
|
|
557
427
|
const ResponseCode extends Params['length'] extends 0
|
|
558
|
-
?
|
|
559
|
-
:
|
|
428
|
+
? never
|
|
429
|
+
: keyof ExcludeNever<ResponseMap> & number,
|
|
560
430
|
HttpMethodMap extends OpenapiPaths[Uri & keyof OpenapiPaths],
|
|
561
431
|
Params extends string[] & ExtractOpenapiParams<Uri>,
|
|
562
|
-
ResponseMap extends HttpMethodMap['
|
|
563
|
-
keyof HttpMethodMap['
|
|
432
|
+
ResponseMap extends HttpMethodMap['delete' & keyof HttpMethodMap]['responses' &
|
|
433
|
+
keyof HttpMethodMap['delete' & keyof HttpMethodMap]],
|
|
564
434
|
Content extends ResponseMap extends undefined
|
|
565
435
|
? undefined
|
|
566
436
|
: ResponseCode extends undefined
|
|
@@ -572,8 +442,8 @@ export class OpenapiSpecSession<OpenapiPaths> {
|
|
|
572
442
|
JsonContent extends Content extends undefined
|
|
573
443
|
? undefined
|
|
574
444
|
: Content['application/json' & keyof Content],
|
|
575
|
-
RequestBodyMap extends HttpMethodMap['
|
|
576
|
-
keyof HttpMethodMap['
|
|
445
|
+
RequestBodyMap extends HttpMethodMap['delete' & keyof HttpMethodMap]['requestBody' &
|
|
446
|
+
keyof HttpMethodMap['delete' & keyof HttpMethodMap]],
|
|
577
447
|
RequestBodyContent extends RequestBodyMap extends undefined
|
|
578
448
|
? undefined
|
|
579
449
|
: RequestBodyMap['content' & keyof RequestBodyMap],
|
|
@@ -588,7 +458,7 @@ export class OpenapiSpecSession<OpenapiPaths> {
|
|
|
588
458
|
* ```ts
|
|
589
459
|
* const request = new OpenapiSpecRequest<openapiPaths>()
|
|
590
460
|
* const session = await request.session('post', '/sessions/{token}', 200, { token: 'abc' })
|
|
591
|
-
* const res = await session.
|
|
461
|
+
* const res = await session.delete('/posts/{id}', 200, { id: '123' })
|
|
592
462
|
* ```
|
|
593
463
|
*/
|
|
594
464
|
uri: Uri,
|
|
@@ -602,24 +472,25 @@ export class OpenapiSpecSession<OpenapiPaths> {
|
|
|
602
472
|
* ```ts
|
|
603
473
|
* const request = new OpenapiSpecRequest<openapiPaths>()
|
|
604
474
|
* const session = await request.session('post', '/sessions/{token}', 200, { token: 'abc' })
|
|
605
|
-
* const res = await session.
|
|
475
|
+
* const res = await session.delete('/posts/{id}', 200, { id: '123' })
|
|
606
476
|
* ```
|
|
607
477
|
*/
|
|
608
478
|
expectedStatus: ResponseCode,
|
|
609
479
|
|
|
610
480
|
/**
|
|
611
481
|
* An object containing the path fields required to
|
|
612
|
-
* fill your uri in, as well as any additional
|
|
482
|
+
* fill your uri in, as well as any additional DELETE
|
|
613
483
|
* arguments, like `data`, for example.
|
|
614
484
|
*
|
|
615
|
-
*
|
|
616
485
|
* ```ts
|
|
617
486
|
* const request = new OpenapiSpecRequest<openapiPaths>()
|
|
618
487
|
* const session = await request.session('post', '/sessions/{token}', 200, { token: 'abc' })
|
|
619
|
-
* const res = await session.
|
|
620
|
-
* '/
|
|
488
|
+
* const res = await session.delete(
|
|
489
|
+
* '/posts/{postId}/comments/{commentId}',
|
|
621
490
|
* 200,
|
|
622
491
|
* {
|
|
492
|
+
* postId: '123',
|
|
493
|
+
* commentId: '456',
|
|
623
494
|
* data: {
|
|
624
495
|
* ...request body here
|
|
625
496
|
* },
|
|
@@ -637,500 +508,15 @@ export class OpenapiSpecSession<OpenapiPaths> {
|
|
|
637
508
|
* @param opts.headers - headers you would like to send with your request.
|
|
638
509
|
* (Optional)
|
|
639
510
|
*/
|
|
640
|
-
opts?: Params['length'] extends 0
|
|
641
|
-
|
|
642
|
-
// final
|
|
643
|
-
public async put<
|
|
644
|
-
const Uri extends RoutesWithHttpMethod<
|
|
645
|
-
OpenapiPaths,
|
|
646
|
-
'put' & keyof OpenapiPaths[keyof OpenapiPaths]
|
|
647
|
-
> &
|
|
648
|
-
string,
|
|
649
|
-
const ResponseCode extends keyof ExcludeNever<ResponseMap> & number,
|
|
650
|
-
HttpMethodMap extends OpenapiPaths[Uri & keyof OpenapiPaths],
|
|
651
|
-
ResponseMap = HttpMethodMap['put' & keyof HttpMethodMap]['responses' &
|
|
652
|
-
keyof HttpMethodMap['put' & keyof HttpMethodMap]],
|
|
653
|
-
Content = ResponseMap extends undefined
|
|
654
|
-
? undefined
|
|
655
|
-
: ResponseCode extends undefined
|
|
656
|
-
? undefined
|
|
657
|
-
: ResponseCode extends number
|
|
658
|
-
? ResponseMap[ResponseCode & keyof ResponseMap]['content' &
|
|
659
|
-
keyof ResponseMap[ResponseCode & keyof ResponseMap]]
|
|
660
|
-
: undefined,
|
|
661
|
-
JsonContent = Content extends undefined
|
|
662
|
-
? undefined
|
|
663
|
-
: Content['application/json' & keyof Content],
|
|
664
|
-
>(
|
|
665
|
-
uri: Uri,
|
|
666
|
-
expectedStatus: ResponseCode,
|
|
667
|
-
opts: unknown = {}
|
|
668
|
-
): Promise<OpenapiSpecResponse<JsonContent>> {
|
|
669
|
-
return await this.makeRequest(
|
|
670
|
-
'put',
|
|
671
|
-
fillOpenapiParams(uri, opts || {}),
|
|
672
|
-
expectedStatus,
|
|
673
|
-
opts as SpecRequestOptsAll
|
|
674
|
-
)
|
|
675
|
-
}
|
|
676
|
-
|
|
677
|
-
//
|
|
678
|
-
//
|
|
679
|
-
//
|
|
680
|
-
// begin: PATCH
|
|
681
|
-
// has Params
|
|
682
|
-
public async patch<
|
|
683
|
-
const Uri extends RoutesWithHttpMethod<
|
|
684
|
-
OpenapiPaths,
|
|
685
|
-
'patch' & keyof OpenapiPaths[keyof OpenapiPaths]
|
|
686
|
-
> &
|
|
687
|
-
string,
|
|
688
|
-
const ResponseCode extends Params['length'] extends 0
|
|
689
|
-
? never
|
|
690
|
-
: keyof ExcludeNever<ResponseMap> & number,
|
|
691
|
-
HttpMethodMap extends OpenapiPaths[Uri & keyof OpenapiPaths],
|
|
692
|
-
Params extends string[] & ExtractOpenapiParams<Uri>,
|
|
693
|
-
ResponseMap extends HttpMethodMap['patch' & keyof HttpMethodMap]['responses' &
|
|
694
|
-
keyof HttpMethodMap['patch' & keyof HttpMethodMap]],
|
|
695
|
-
Content extends ResponseMap extends undefined
|
|
696
|
-
? undefined
|
|
697
|
-
: ResponseCode extends undefined
|
|
698
|
-
? undefined
|
|
699
|
-
: ResponseCode extends number
|
|
700
|
-
? ResponseMap[ResponseCode & keyof ResponseMap]['content' &
|
|
701
|
-
keyof ResponseMap[ResponseCode & keyof ResponseMap]]
|
|
702
|
-
: undefined,
|
|
703
|
-
JsonContent extends Content extends undefined
|
|
704
|
-
? undefined
|
|
705
|
-
: Content['application/json' & keyof Content],
|
|
706
|
-
RequestBodyMap extends HttpMethodMap['patch' & keyof HttpMethodMap]['requestBody' &
|
|
707
|
-
keyof HttpMethodMap['patch' & keyof HttpMethodMap]],
|
|
708
|
-
RequestBodyContent extends RequestBodyMap extends undefined
|
|
709
|
-
? undefined
|
|
710
|
-
: RequestBodyMap['content' & keyof RequestBodyMap],
|
|
711
|
-
RequestBodyJsonContent extends RequestBodyContent extends undefined
|
|
712
|
-
? undefined
|
|
713
|
-
: RequestBodyContent['application/json' & keyof RequestBodyContent],
|
|
714
|
-
>(
|
|
715
|
-
/**
|
|
716
|
-
* The uri on your background you are trying to hit.
|
|
717
|
-
* This should be a path, like '/posts'.
|
|
718
|
-
*
|
|
719
|
-
* ```ts
|
|
720
|
-
* const request = new OpenapiSpecRequest<openapiPaths>()
|
|
721
|
-
* const session = await request.session('post', '/sessions/{token}', 200, { token: 'abc' })
|
|
722
|
-
* const res = await session.patch('/posts/{id}', 200, { data: { name: 'new name' }})
|
|
723
|
-
* ```
|
|
724
|
-
*/
|
|
725
|
-
uri: Uri,
|
|
726
|
-
|
|
727
|
-
/**
|
|
728
|
-
* The response status you are expecting to receive
|
|
729
|
-
* when making this request. It will need to match
|
|
730
|
-
* one of the accepted response statuses for the
|
|
731
|
-
* provided uri in your openapi types
|
|
732
|
-
*
|
|
733
|
-
* ```ts
|
|
734
|
-
* const request = new OpenapiSpecRequest<openapiPaths>()
|
|
735
|
-
* const session = await request.session('post', '/sessions/{token}', 200, { token: 'abc' })
|
|
736
|
-
* const res = await session.patch('/posts/{id}', 200, { data: { name: 'new name' }})
|
|
737
|
-
* ```
|
|
738
|
-
*/
|
|
739
|
-
expectedStatus: ResponseCode,
|
|
740
|
-
|
|
741
|
-
/**
|
|
742
|
-
* An object containing the path fields required to
|
|
743
|
-
* fill your uri in, as well as any additional PATCH
|
|
744
|
-
* arguments, like `data`, for example.
|
|
745
|
-
*
|
|
746
|
-
* ```ts
|
|
747
|
-
* const request = new OpenapiSpecRequest<openapiPaths>()
|
|
748
|
-
* const session = await request.session('post', '/sessions/{token}', 200, { token: 'abc' })
|
|
749
|
-
* const res = await session.patch(
|
|
750
|
-
* '/posts/{postId}/comments/{id}',
|
|
751
|
-
* 200,
|
|
752
|
-
* {
|
|
753
|
-
* postId: '123',
|
|
754
|
-
* commentId: '456',
|
|
755
|
-
* data: {
|
|
756
|
-
* ...request body here
|
|
757
|
-
* },
|
|
758
|
-
* headers: {
|
|
759
|
-
* ...headers here
|
|
760
|
-
* },
|
|
761
|
-
* }
|
|
762
|
-
* )
|
|
763
|
-
* ```
|
|
764
|
-
*
|
|
765
|
-
* @param opts.data - request body data you want to send up. Must match the
|
|
766
|
-
* requestBody shape in the openapi document for this uri.
|
|
767
|
-
* (Optional)
|
|
768
|
-
*
|
|
769
|
-
* @param opts.headers - headers you would like to send with your request.
|
|
770
|
-
* (Optional)
|
|
771
|
-
*/
|
|
772
|
-
opts: Params['length'] extends 0
|
|
773
|
-
? never
|
|
774
|
-
: OpenapiSpecRequestOptsPost<RequestBodyJsonContent> & {
|
|
775
|
-
[K in Params[number]]: string | IdType
|
|
776
|
-
}
|
|
777
|
-
): Promise<OpenapiSpecResponse<JsonContent>>
|
|
778
|
-
// DOESNT have params
|
|
779
|
-
public async patch<
|
|
780
|
-
const Uri extends RoutesWithHttpMethod<
|
|
781
|
-
OpenapiPaths,
|
|
782
|
-
'patch' & keyof OpenapiPaths[keyof OpenapiPaths]
|
|
783
|
-
> &
|
|
784
|
-
string,
|
|
785
|
-
const ResponseCode extends Params['length'] extends 0
|
|
786
|
-
? keyof ExcludeNever<ResponseMap> & number
|
|
787
|
-
: never,
|
|
788
|
-
HttpMethodMap extends OpenapiPaths[Uri & keyof OpenapiPaths],
|
|
789
|
-
Params extends string[] & ExtractOpenapiParams<Uri>,
|
|
790
|
-
ResponseMap extends HttpMethodMap['patch' & keyof HttpMethodMap]['responses' &
|
|
791
|
-
keyof HttpMethodMap['patch' & keyof HttpMethodMap]],
|
|
792
|
-
Content extends ResponseMap extends undefined
|
|
793
|
-
? undefined
|
|
794
|
-
: ResponseCode extends undefined
|
|
795
|
-
? undefined
|
|
796
|
-
: ResponseCode extends number
|
|
797
|
-
? ResponseMap[ResponseCode & keyof ResponseMap]['content' &
|
|
798
|
-
keyof ResponseMap[ResponseCode & keyof ResponseMap]]
|
|
799
|
-
: undefined,
|
|
800
|
-
JsonContent extends Content extends undefined
|
|
801
|
-
? undefined
|
|
802
|
-
: Content['application/json' & keyof Content],
|
|
803
|
-
RequestBodyMap extends HttpMethodMap['patch' & keyof HttpMethodMap]['requestBody' &
|
|
804
|
-
keyof HttpMethodMap['patch' & keyof HttpMethodMap]],
|
|
805
|
-
RequestBodyContent extends RequestBodyMap extends undefined
|
|
806
|
-
? undefined
|
|
807
|
-
: RequestBodyMap['content' & keyof RequestBodyMap],
|
|
808
|
-
RequestBodyJsonContent extends RequestBodyContent extends undefined
|
|
809
|
-
? undefined
|
|
810
|
-
: RequestBodyContent['application/json' & keyof RequestBodyContent],
|
|
811
|
-
>(
|
|
812
|
-
/**
|
|
813
|
-
* The uri on your background you are trying to hit.
|
|
814
|
-
* This should be a path, like '/user'.
|
|
815
|
-
*
|
|
816
|
-
* ```ts
|
|
817
|
-
* const request = new OpenapiSpecRequest<openapiPaths>()
|
|
818
|
-
* const session = await request.session('post', '/sessions/{token}', 200, { token: 'abc' })
|
|
819
|
-
* const res = await session.patch('/user', 200, { data: { name: 'new name' }})
|
|
820
|
-
* ```
|
|
821
|
-
*/
|
|
822
|
-
uri: Uri,
|
|
823
|
-
|
|
824
|
-
/**
|
|
825
|
-
* The response status you are expecting to receive
|
|
826
|
-
* when making this request. It will need to match
|
|
827
|
-
* one of the accepted response statuses for the
|
|
828
|
-
* provided uri in your openapi types
|
|
829
|
-
*
|
|
830
|
-
* ```ts
|
|
831
|
-
* const request = new OpenapiSpecRequest<openapiPaths>()
|
|
832
|
-
* const session = await request.session('post', '/sessions/{token}', 200, { token: 'abc' })
|
|
833
|
-
* const res = await session.patch('/user', 200, { data: { name: 'new name' }})
|
|
834
|
-
* ```
|
|
835
|
-
*/
|
|
836
|
-
expectedStatus: ResponseCode,
|
|
837
|
-
|
|
838
|
-
/**
|
|
839
|
-
* Data, headers, and other options to send with
|
|
840
|
-
* your request.
|
|
841
|
-
*
|
|
842
|
-
* ```ts
|
|
843
|
-
* const request = new OpenapiSpecRequest<openapiPaths>()
|
|
844
|
-
* const session = await request.session('post', '/sessions/{token}', 200, { token: 'abc' })
|
|
845
|
-
* const res = await session.patch(
|
|
846
|
-
* '/user',
|
|
847
|
-
* 200,
|
|
848
|
-
* {
|
|
849
|
-
* data: {
|
|
850
|
-
* ...request body here
|
|
851
|
-
* },
|
|
852
|
-
* headers: {
|
|
853
|
-
* ...headers here
|
|
854
|
-
* },
|
|
855
|
-
* }
|
|
856
|
-
* )
|
|
857
|
-
* ```
|
|
858
|
-
*
|
|
859
|
-
* @param opts.data - request body data you want to send up. Must match the
|
|
860
|
-
* requestBody shape in the openapi document for this uri.
|
|
861
|
-
* (Optional)
|
|
862
|
-
*
|
|
863
|
-
* @param opts.headers - headers you would like to send with your request.
|
|
864
|
-
* (Optional)
|
|
865
|
-
*/
|
|
866
|
-
opts?: Params['length'] extends 0 ? OpenapiSpecRequestOptsPost<RequestBodyJsonContent> : never
|
|
867
|
-
): Promise<OpenapiSpecResponse<JsonContent>>
|
|
868
|
-
// final
|
|
869
|
-
public async patch<
|
|
870
|
-
const Uri extends GetOpenapiUrl<OpenapiPaths>,
|
|
871
|
-
const ResponseCode extends keyof ResponseMap & number,
|
|
872
|
-
HttpMethodMap extends OpenapiPaths[ResolvedUri & keyof OpenapiPaths],
|
|
873
|
-
ResolvedUri extends GetResolvedOpenapiUrl<OpenapiPaths, Uri> & keyof OpenapiPaths,
|
|
874
|
-
ResponseMap extends HttpMethodMap['patch' & keyof HttpMethodMap]['responses' &
|
|
875
|
-
keyof HttpMethodMap['patch' & keyof HttpMethodMap]],
|
|
876
|
-
Content extends ResponseMap extends undefined
|
|
877
|
-
? undefined
|
|
878
|
-
: ResponseCode extends undefined
|
|
879
|
-
? undefined
|
|
880
|
-
: ResponseCode extends number
|
|
881
|
-
? ResponseMap[ResponseCode & keyof ResponseMap]['content' &
|
|
882
|
-
keyof ResponseMap[ResponseCode & keyof ResponseMap]]
|
|
883
|
-
: undefined,
|
|
884
|
-
JsonContent extends Content extends undefined
|
|
885
|
-
? undefined
|
|
886
|
-
: Content['application/json' & keyof Content],
|
|
887
|
-
RequestBodyMap extends HttpMethodMap['patch' & keyof HttpMethodMap]['requestBody' &
|
|
888
|
-
keyof HttpMethodMap['patch' & keyof HttpMethodMap]],
|
|
889
|
-
RequestBodyContent extends RequestBodyMap extends undefined
|
|
890
|
-
? undefined
|
|
891
|
-
: RequestBodyMap['content' & keyof RequestBodyMap],
|
|
892
|
-
RequestBodyJsonContent extends RequestBodyContent extends undefined
|
|
893
|
-
? undefined
|
|
894
|
-
: RequestBodyContent['application/json' & keyof RequestBodyContent],
|
|
895
|
-
>(
|
|
896
|
-
uri: Uri,
|
|
897
|
-
expectedStatus: ResponseCode,
|
|
898
|
-
opts: OpenapiSpecRequestOptsPost<RequestBodyJsonContent> = {}
|
|
899
|
-
): Promise<OpenapiSpecResponse<JsonContent>> {
|
|
900
|
-
return await this.makeRequest(
|
|
901
|
-
'patch',
|
|
902
|
-
fillOpenapiParams(uri, opts),
|
|
903
|
-
expectedStatus,
|
|
904
|
-
opts as SpecRequestOptsAll
|
|
905
|
-
)
|
|
906
|
-
}
|
|
907
|
-
|
|
908
|
-
//
|
|
909
|
-
//
|
|
910
|
-
//
|
|
911
|
-
// begin: delete
|
|
912
|
-
// has Params
|
|
913
|
-
public async delete<
|
|
914
|
-
const Uri extends RoutesWithHttpMethod<
|
|
915
|
-
OpenapiPaths,
|
|
916
|
-
'delete' & keyof OpenapiPaths[keyof OpenapiPaths]
|
|
917
|
-
> &
|
|
918
|
-
string,
|
|
919
|
-
const ResponseCode extends Params['length'] extends 0
|
|
920
|
-
? never
|
|
921
|
-
: keyof ExcludeNever<ResponseMap> & number,
|
|
922
|
-
HttpMethodMap extends OpenapiPaths[Uri & keyof OpenapiPaths],
|
|
923
|
-
Params extends string[] & ExtractOpenapiParams<Uri>,
|
|
924
|
-
ResponseMap extends HttpMethodMap['delete' & keyof HttpMethodMap]['responses' &
|
|
925
|
-
keyof HttpMethodMap['delete' & keyof HttpMethodMap]],
|
|
926
|
-
Content extends ResponseMap extends undefined
|
|
927
|
-
? undefined
|
|
928
|
-
: ResponseCode extends undefined
|
|
929
|
-
? undefined
|
|
930
|
-
: ResponseCode extends number
|
|
931
|
-
? ResponseMap[ResponseCode & keyof ResponseMap]['content' &
|
|
932
|
-
keyof ResponseMap[ResponseCode & keyof ResponseMap]]
|
|
933
|
-
: undefined,
|
|
934
|
-
JsonContent extends Content extends undefined
|
|
935
|
-
? undefined
|
|
936
|
-
: Content['application/json' & keyof Content],
|
|
937
|
-
RequestBodyMap extends HttpMethodMap['delete' & keyof HttpMethodMap]['requestBody' &
|
|
938
|
-
keyof HttpMethodMap['delete' & keyof HttpMethodMap]],
|
|
939
|
-
RequestBodyContent extends RequestBodyMap extends undefined
|
|
940
|
-
? undefined
|
|
941
|
-
: RequestBodyMap['content' & keyof RequestBodyMap],
|
|
942
|
-
RequestBodyJsonContent extends RequestBodyContent extends undefined
|
|
943
|
-
? undefined
|
|
944
|
-
: RequestBodyContent['application/json' & keyof RequestBodyContent],
|
|
945
|
-
>(
|
|
946
|
-
/**
|
|
947
|
-
* The uri on your background you are trying to hit.
|
|
948
|
-
* This should be a path, like '/users'.
|
|
949
|
-
*
|
|
950
|
-
* ```ts
|
|
951
|
-
* const request = new OpenapiSpecRequest<openapiPaths>()
|
|
952
|
-
* const session = await request.session('post', '/sessions/{token}', 200, { token: 'abc' })
|
|
953
|
-
* const res = await session.delete('/posts/{id}', 200, { id: '123' })
|
|
954
|
-
* ```
|
|
955
|
-
*/
|
|
956
|
-
uri: Uri,
|
|
957
|
-
|
|
958
|
-
/**
|
|
959
|
-
* The response status you are expecting to receive
|
|
960
|
-
* when making this request. It will need to match
|
|
961
|
-
* one of the accepted response statuses for the
|
|
962
|
-
* provided uri in your openapi types
|
|
963
|
-
*
|
|
964
|
-
* ```ts
|
|
965
|
-
* const request = new OpenapiSpecRequest<openapiPaths>()
|
|
966
|
-
* const session = await request.session('post', '/sessions/{token}', 200, { token: 'abc' })
|
|
967
|
-
* const res = await session.delete('/posts/{id}', 200, { id: '123' })
|
|
968
|
-
* ```
|
|
969
|
-
*/
|
|
970
|
-
expectedStatus: ResponseCode,
|
|
971
|
-
|
|
972
|
-
/**
|
|
973
|
-
* An object containing the path fields required to
|
|
974
|
-
* fill your uri in, as well as any additional DELETE
|
|
975
|
-
* arguments, like `data`, for example.
|
|
976
|
-
*
|
|
977
|
-
* ```ts
|
|
978
|
-
* const request = new OpenapiSpecRequest<openapiPaths>()
|
|
979
|
-
* const session = await request.session('post', '/sessions/{token}', 200, { token: 'abc' })
|
|
980
|
-
* const res = await session.delete(
|
|
981
|
-
* '/posts/{postId}/comments/{commentId}',
|
|
982
|
-
* 200,
|
|
983
|
-
* {
|
|
984
|
-
* postId: '123',
|
|
985
|
-
* commentId: '456',
|
|
986
|
-
* data: {
|
|
987
|
-
* ...request body here
|
|
988
|
-
* },
|
|
989
|
-
* headers: {
|
|
990
|
-
* ...headers here
|
|
991
|
-
* },
|
|
992
|
-
* }
|
|
993
|
-
* )
|
|
994
|
-
* ```
|
|
995
|
-
*
|
|
996
|
-
* @param opts.data - request body data you want to send up. Must match the
|
|
997
|
-
* requestBody shape in the openapi document for this uri.
|
|
998
|
-
* (Optional)
|
|
999
|
-
*
|
|
1000
|
-
* @param opts.headers - headers you would like to send with your request.
|
|
1001
|
-
* (Optional)
|
|
1002
|
-
*/
|
|
1003
|
-
opts: Params['length'] extends 0
|
|
1004
|
-
? never
|
|
511
|
+
opts?: Params['length'] extends 0
|
|
512
|
+
? OpenapiSpecRequestOptsPost<RequestBodyJsonContent>
|
|
1005
513
|
: OpenapiSpecRequestOptsPost<RequestBodyJsonContent> & {
|
|
1006
514
|
[K in Params[number]]: string | IdType
|
|
1007
515
|
}
|
|
1008
|
-
): Promise<OpenapiSpecResponse<JsonContent>>
|
|
1009
|
-
// DOESNT have params
|
|
1010
|
-
public async delete<
|
|
1011
|
-
const Uri extends RoutesWithHttpMethod<
|
|
1012
|
-
OpenapiPaths,
|
|
1013
|
-
'delete' & keyof OpenapiPaths[keyof OpenapiPaths]
|
|
1014
|
-
> &
|
|
1015
|
-
string,
|
|
1016
|
-
const ResponseCode extends Params['length'] extends 0
|
|
1017
|
-
? keyof ExcludeNever<ResponseMap> & number
|
|
1018
|
-
: never,
|
|
1019
|
-
HttpMethodMap extends OpenapiPaths[Uri & keyof OpenapiPaths],
|
|
1020
|
-
Params extends string[] & ExtractOpenapiParams<Uri>,
|
|
1021
|
-
ResponseMap extends HttpMethodMap['delete' & keyof HttpMethodMap]['responses' &
|
|
1022
|
-
keyof HttpMethodMap['delete' & keyof HttpMethodMap]],
|
|
1023
|
-
Content extends ResponseMap extends undefined
|
|
1024
|
-
? undefined
|
|
1025
|
-
: ResponseCode extends undefined
|
|
1026
|
-
? undefined
|
|
1027
|
-
: ResponseCode extends number
|
|
1028
|
-
? ResponseMap[ResponseCode & keyof ResponseMap]['content' &
|
|
1029
|
-
keyof ResponseMap[ResponseCode & keyof ResponseMap]]
|
|
1030
|
-
: undefined,
|
|
1031
|
-
JsonContent extends Content extends undefined
|
|
1032
|
-
? undefined
|
|
1033
|
-
: Content['application/json' & keyof Content],
|
|
1034
|
-
RequestBodyMap extends HttpMethodMap['delete' & keyof HttpMethodMap]['requestBody' &
|
|
1035
|
-
keyof HttpMethodMap['delete' & keyof HttpMethodMap]],
|
|
1036
|
-
RequestBodyContent extends RequestBodyMap extends undefined
|
|
1037
|
-
? undefined
|
|
1038
|
-
: RequestBodyMap['content' & keyof RequestBodyMap],
|
|
1039
|
-
RequestBodyJsonContent extends RequestBodyContent extends undefined
|
|
1040
|
-
? undefined
|
|
1041
|
-
: RequestBodyContent['application/json' & keyof RequestBodyContent],
|
|
1042
|
-
>(
|
|
1043
|
-
/**
|
|
1044
|
-
* The uri on your background you are trying to hit.
|
|
1045
|
-
* This should be a path, like '/users'.
|
|
1046
|
-
*
|
|
1047
|
-
* ```ts
|
|
1048
|
-
* const request = new OpenapiSpecRequest<openapiPaths>()
|
|
1049
|
-
* const session = await request.session('post', '/sessions/{token}', 200, { token: 'abc' })
|
|
1050
|
-
* const res = await session.delete('/user', 200)
|
|
1051
|
-
* ```
|
|
1052
|
-
*/
|
|
1053
|
-
uri: Uri,
|
|
1054
|
-
|
|
1055
|
-
/**
|
|
1056
|
-
* The response status you are expecting to receive
|
|
1057
|
-
* when making this request. It will need to match
|
|
1058
|
-
* one of the accepted response statuses for the
|
|
1059
|
-
* provided uri in your openapi types
|
|
1060
|
-
*
|
|
1061
|
-
* ```ts
|
|
1062
|
-
* const request = new OpenapiSpecRequest<openapiPaths>()
|
|
1063
|
-
* const session = await request.session('post', '/sessions/{token}', 200, { token: 'abc' })
|
|
1064
|
-
* const res = await session.delete('/user', 200)
|
|
1065
|
-
* ```
|
|
1066
|
-
*/
|
|
1067
|
-
expectedStatus: ResponseCode,
|
|
1068
|
-
|
|
1069
|
-
/**
|
|
1070
|
-
* Data, headers, and other options to send with
|
|
1071
|
-
* your request.
|
|
1072
|
-
*
|
|
1073
|
-
* ```ts
|
|
1074
|
-
* const request = new OpenapiSpecRequest<openapiPaths>()
|
|
1075
|
-
* const session = await request.session('post', '/sessions/{token}', 200, { token: 'abc' })
|
|
1076
|
-
* const res = await session.delete(
|
|
1077
|
-
* '/user',
|
|
1078
|
-
* 200,
|
|
1079
|
-
* {
|
|
1080
|
-
* data: {
|
|
1081
|
-
* ...request body here
|
|
1082
|
-
* },
|
|
1083
|
-
* headers: {
|
|
1084
|
-
* ...headers here
|
|
1085
|
-
* },
|
|
1086
|
-
* }
|
|
1087
|
-
* )
|
|
1088
|
-
* ```
|
|
1089
|
-
*
|
|
1090
|
-
* @param opts.data - request body data you want to send up. Must match the
|
|
1091
|
-
* requestBody shape in the openapi document for this uri.
|
|
1092
|
-
* (Optional)
|
|
1093
|
-
*
|
|
1094
|
-
* @param opts.headers - headers you would like to send with your request.
|
|
1095
|
-
* (Optional)
|
|
1096
|
-
*/
|
|
1097
|
-
opts?: Params['length'] extends 0 ? OpenapiSpecRequestOptsPost<RequestBodyJsonContent> : never
|
|
1098
|
-
): Promise<OpenapiSpecResponse<JsonContent>>
|
|
1099
|
-
// final
|
|
1100
|
-
public async delete<
|
|
1101
|
-
const Uri extends GetOpenapiUrl<OpenapiPaths>,
|
|
1102
|
-
const ResponseCode extends keyof ResponseMap & number,
|
|
1103
|
-
HttpMethodMap extends OpenapiPaths[ResolvedUri & keyof OpenapiPaths],
|
|
1104
|
-
ResolvedUri extends GetResolvedOpenapiUrl<OpenapiPaths, Uri> & keyof OpenapiPaths,
|
|
1105
|
-
ResponseMap = HttpMethodMap['delete' & keyof HttpMethodMap]['responses' &
|
|
1106
|
-
keyof HttpMethodMap['delete' & keyof HttpMethodMap]],
|
|
1107
|
-
Content = ResponseMap extends undefined
|
|
1108
|
-
? undefined
|
|
1109
|
-
: ResponseCode extends undefined
|
|
1110
|
-
? undefined
|
|
1111
|
-
: ResponseCode extends number
|
|
1112
|
-
? ResponseMap[ResponseCode & keyof ResponseMap]['content' &
|
|
1113
|
-
keyof ResponseMap[ResponseCode & keyof ResponseMap]]
|
|
1114
|
-
: undefined,
|
|
1115
|
-
JsonContent = Content extends undefined
|
|
1116
|
-
? undefined
|
|
1117
|
-
: Content['application/json' & keyof Content],
|
|
1118
|
-
RequestBodyMap = HttpMethodMap['delete' & keyof HttpMethodMap]['requestBody' &
|
|
1119
|
-
keyof HttpMethodMap['delete' & keyof HttpMethodMap]],
|
|
1120
|
-
RequestBodyContent = RequestBodyMap extends undefined
|
|
1121
|
-
? undefined
|
|
1122
|
-
: RequestBodyMap['content' & keyof RequestBodyMap],
|
|
1123
|
-
RequestBodyJsonContent = RequestBodyContent extends undefined
|
|
1124
|
-
? undefined
|
|
1125
|
-
: RequestBodyContent['application/json' & keyof RequestBodyContent],
|
|
1126
|
-
>(
|
|
1127
|
-
uri: Uri,
|
|
1128
|
-
expectedStatus: ResponseCode,
|
|
1129
|
-
opts: OpenapiSpecRequestOptsPost<RequestBodyJsonContent> = {}
|
|
1130
516
|
): Promise<OpenapiSpecResponse<JsonContent>> {
|
|
1131
517
|
return await this.makeRequest(
|
|
1132
518
|
'delete',
|
|
1133
|
-
fillOpenapiParams(uri, opts),
|
|
519
|
+
fillOpenapiParams(uri, opts || {}),
|
|
1134
520
|
expectedStatus,
|
|
1135
521
|
opts as SpecRequestOptsAll
|
|
1136
522
|
)
|