@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 CHANGED
@@ -106,7 +106,7 @@ export interface ApiResponse {
106
106
  */
107
107
  export async function updatePet(
108
108
  body: Pet,
109
- requestOptions: RequestOptions = defaultRequestOptions()
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 = defaultRequestOptions()
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 = defaultRequestOptions()) {
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 => SchemaFactory.build('body', body[mt].schema, schemasTypes, options));
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))
@@ -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
- if (resp.ok) {
41
- const postProcessed = requestOptions.postProcessResponse ? requestOptions.postProcessResponse(preProcessed, resp) : resp;
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 resp;
50
+ throw postProcessed;
52
51
  }
53
-
54
52
  }
55
53
 
56
54
  <% schemas.foreach(schema => { %>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@penkov/swagger-code-gen",
3
- "version": "1.5.0",
3
+ "version": "1.6.0",
4
4
  "type": "module",
5
5
  "bin": {
6
6
  "generate-client": "./dist/cli.mjs"