@penkov/swagger-code-gen 1.5.0 → 1.6.0
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/README.md +3 -3
- package/dist/method.js +13 -1
- package/dist/templates/index.ejs +6 -8
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -106,7 +106,7 @@ export interface ApiResponse {
|
|
|
106
106
|
*/
|
|
107
107
|
export async function updatePet(
|
|
108
108
|
body: Pet,
|
|
109
|
-
requestOptions: RequestOptions =
|
|
109
|
+
requestOptions: RequestOptions = defReqOpts()
|
|
110
110
|
): Promise<Pet> {
|
|
111
111
|
let query = '';
|
|
112
112
|
const request = new Request(`${requestOptions.apiPrefix}/pet${query}`, {
|
|
@@ -133,7 +133,7 @@ export async function updatePet(
|
|
|
133
133
|
*/
|
|
134
134
|
export async function findPetsByStatus(
|
|
135
135
|
status: 'available' | 'pending' | 'sold' = 'available',
|
|
136
|
-
requestOptions: RequestOptions =
|
|
136
|
+
requestOptions: RequestOptions = defReqOpts()
|
|
137
137
|
): Promise<ReadonlyArray<Pet>> {
|
|
138
138
|
let query = '';
|
|
139
139
|
const queryParams = [];
|
|
@@ -212,7 +212,7 @@ export class PetDto {
|
|
|
212
212
|
|
|
213
213
|
export class ApiClient {
|
|
214
214
|
|
|
215
|
-
constructor(private readonly requestOptions: RequestOptions =
|
|
215
|
+
constructor(private readonly requestOptions: RequestOptions = defReqOpts()) {
|
|
216
216
|
}
|
|
217
217
|
|
|
218
218
|
// ... some methods skipped
|
package/dist/method.js
CHANGED
|
@@ -41,7 +41,19 @@ export class Method {
|
|
|
41
41
|
return mimeTypes
|
|
42
42
|
.find(_ => _ === 'application/json')
|
|
43
43
|
.orElseValue(mimeTypes.headOption)
|
|
44
|
-
.map(mt =>
|
|
44
|
+
.map(mt => {
|
|
45
|
+
const bodySchemaDef = body[mt].schema;
|
|
46
|
+
const res = SchemaFactory.build('body', bodySchemaDef, schemasTypes, options);
|
|
47
|
+
if (res.schemaType === 'property') {
|
|
48
|
+
const bProperty = res;
|
|
49
|
+
return bProperty.copy({
|
|
50
|
+
nullable: bProperty.referencesObject ? option(bodySchemaDef['nullable']).contains(true) : bProperty.nullable
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
else {
|
|
54
|
+
return res;
|
|
55
|
+
}
|
|
56
|
+
});
|
|
45
57
|
});
|
|
46
58
|
this.bodyDescription = option(def.requestBody).flatMap(body => option(body.description));
|
|
47
59
|
const statusCodes = Collection.from(Object.keys(def.responses))
|
package/dist/templates/index.ejs
CHANGED
|
@@ -18,8 +18,8 @@ import {option, Option, Collection, Try, TryLike, none} from 'scats';
|
|
|
18
18
|
export interface RequestOptions {
|
|
19
19
|
apiPrefix?: string;
|
|
20
20
|
headers?: Record<string, string>;
|
|
21
|
-
preProcessRequest?: (request: Request) => Request
|
|
22
|
-
postProcessResponse?: (request: Request, response: Response) => Response
|
|
21
|
+
preProcessRequest?: (request: Request) => Request | Promise<Request>;
|
|
22
|
+
postProcessResponse?: (request: Request, response: Response) => Response | Promise<Response>;
|
|
23
23
|
}
|
|
24
24
|
|
|
25
25
|
|
|
@@ -33,12 +33,11 @@ export const defaultRequestOptions: RequestOptions = {
|
|
|
33
33
|
|
|
34
34
|
const defReqOpts = () => defaultRequestOptions;
|
|
35
35
|
|
|
36
|
-
|
|
37
36
|
async function requestImpl<T>(request: Request, requestOptions: RequestOptions): Promise<T> {
|
|
38
|
-
const preProcessed = requestOptions.preProcessRequest ? requestOptions.preProcessRequest(request) : request;
|
|
37
|
+
const preProcessed = requestOptions.preProcessRequest ? await requestOptions.preProcessRequest(request) : request;
|
|
39
38
|
const resp = await fetch(preProcessed);
|
|
40
|
-
|
|
41
|
-
|
|
39
|
+
const postProcessed = requestOptions.postProcessResponse ? await requestOptions.postProcessResponse(preProcessed, resp) : resp;
|
|
40
|
+
if (postProcessed.ok) {
|
|
42
41
|
let json: any = null;
|
|
43
42
|
if (postProcessed.headers.has('content-length')) {
|
|
44
43
|
const ct = parseInt(postProcessed.headers.get('content-length'));
|
|
@@ -48,9 +47,8 @@ async function requestImpl<T>(request: Request, requestOptions: RequestOptions):
|
|
|
48
47
|
}
|
|
49
48
|
return json as T;
|
|
50
49
|
} else {
|
|
51
|
-
throw
|
|
50
|
+
throw postProcessed;
|
|
52
51
|
}
|
|
53
|
-
|
|
54
52
|
}
|
|
55
53
|
|
|
56
54
|
<% schemas.foreach(schema => { %>
|