From 6f2a714a159fee1acbef5cb32211a3ea9f26525e Mon Sep 17 00:00:00 2001 From: Ferdi Koomen Date: Tue, 25 Jan 2022 00:00:47 +0100 Subject: [PATCH] - Working on formatter for spacing --- .editorconfig | 3 + .eslintignore | 1 + src/templates/core/ApiError.hbs | 24 +-- src/templates/core/ApiRequestOptions.hbs | 20 +- src/templates/core/ApiResult.hbs | 10 +- src/templates/core/CancelablePromise.hbs | 200 +++++++++--------- src/templates/core/OpenAPI.hbs | 36 ++-- src/templates/core/axios/getHeaders.hbs | 48 ++--- src/templates/core/axios/getRequestBody.hbs | 8 +- src/templates/core/axios/getResponseBody.hbs | 8 +- .../core/axios/getResponseHeader.hbs | 14 +- src/templates/core/axios/request.hbs | 48 ++--- src/templates/core/axios/sendRequest.hbs | 50 ++--- src/templates/core/fetch/getHeaders.hbs | 68 +++--- src/templates/core/fetch/getRequestBody.hbs | 20 +- src/templates/core/fetch/getResponseBody.hbs | 32 +-- .../core/fetch/getResponseHeader.hbs | 14 +- src/templates/core/fetch/request.hbs | 48 ++--- src/templates/core/fetch/sendRequest.hbs | 36 ++-- src/templates/core/functions/base64.hbs | 12 +- src/templates/core/functions/catchErrors.hbs | 34 +-- src/templates/core/functions/getFormData.hbs | 42 ++-- .../core/functions/getQueryString.hbs | 48 ++--- src/templates/core/functions/getUrl.hbs | 12 +- src/templates/core/functions/isBlob.hbs | 20 +- src/templates/core/functions/isDefined.hbs | 2 +- src/templates/core/functions/isFormData.hbs | 4 +- src/templates/core/functions/isString.hbs | 2 +- .../core/functions/isStringWithValue.hbs | 2 +- src/templates/core/functions/isSuccess.hbs | 2 +- src/templates/core/functions/resolve.hbs | 8 +- src/templates/core/node/getHeaders.hbs | 68 +++--- src/templates/core/node/getRequestBody.hbs | 20 +- src/templates/core/node/getResponseBody.hbs | 32 +-- src/templates/core/node/getResponseHeader.hbs | 14 +- src/templates/core/node/request.hbs | 48 ++--- src/templates/core/node/sendRequest.hbs | 30 +-- src/templates/core/xhr/getHeaders.hbs | 68 +++--- src/templates/core/xhr/getRequestBody.hbs | 20 +- src/templates/core/xhr/getResponseBody.hbs | 32 +-- src/templates/core/xhr/getResponseHeader.hbs | 14 +- src/templates/core/xhr/request.hbs | 48 ++--- src/templates/core/xhr/sendRequest.hbs | 38 ++-- src/templates/exportService.hbs | 158 +++++++------- src/templates/partials/exportComposition.hbs | 24 +-- src/templates/partials/exportEnum.hbs | 24 +-- src/templates/partials/exportInterface.hbs | 40 ++-- src/templates/partials/schemaArray.hbs | 16 +- src/templates/partials/schemaComposition.hbs | 12 +- src/templates/partials/schemaDictionary.hbs | 16 +- src/templates/partials/schemaEnum.hbs | 8 +- src/templates/partials/schemaGeneric.hbs | 38 ++-- src/templates/partials/schemaInterface.hbs | 18 +- src/utils/format.spec.ts | 8 +- src/utils/format.ts | 2 +- src/utils/indent.ts | 9 + src/utils/writeClientCore.ts | 13 +- src/utils/writeClientModels.ts | 3 +- src/utils/writeClientSchemas.ts | 3 +- src/utils/writeClientServices.ts | 3 +- 60 files changed, 860 insertions(+), 843 deletions(-) create mode 100644 src/utils/indent.ts diff --git a/.editorconfig b/.editorconfig index d741e40b..14a33bde 100755 --- a/.editorconfig +++ b/.editorconfig @@ -7,3 +7,6 @@ trim_trailing_whitespace = true insert_final_newline = true indent_style = space indent_size = 4 + +[*.hbs] +indent_style = tab diff --git a/.eslintignore b/.eslintignore index 8d68273b..9c1a3bc4 100644 --- a/.eslintignore +++ b/.eslintignore @@ -1,4 +1,5 @@ dist +samples test/generated test/e2e/generated node_modules diff --git a/src/templates/core/ApiError.hbs b/src/templates/core/ApiError.hbs index a9eee2a6..19af17e1 100644 --- a/src/templates/core/ApiError.hbs +++ b/src/templates/core/ApiError.hbs @@ -3,18 +3,18 @@ import type { ApiResult } from './ApiResult'; export class ApiError extends Error { - public readonly url: string; - public readonly status: number; - public readonly statusText: string; - public readonly body: any; + public readonly url: string; + public readonly status: number; + public readonly statusText: string; + public readonly body: any; - constructor(response: ApiResult, message: string) { - super(message); + constructor(response: ApiResult, message: string) { + super(message); - this.name = 'ApiError'; - this.url = response.url; - this.status = response.status; - this.statusText = response.statusText; - this.body = response.body; - } + this.name = 'ApiError'; + this.url = response.url; + this.status = response.status; + this.statusText = response.statusText; + this.body = response.body; + } } diff --git a/src/templates/core/ApiRequestOptions.hbs b/src/templates/core/ApiRequestOptions.hbs index 5b4b5836..690c19f8 100644 --- a/src/templates/core/ApiRequestOptions.hbs +++ b/src/templates/core/ApiRequestOptions.hbs @@ -1,14 +1,14 @@ {{>header}} export type ApiRequestOptions = { - readonly method: 'GET' | 'PUT' | 'POST' | 'DELETE' | 'OPTIONS' | 'HEAD' | 'PATCH'; - readonly path: string; - readonly cookies?: Record; - readonly headers?: Record; - readonly query?: Record; - readonly formData?: Record; - readonly body?: any; - readonly mediaType?: string; - readonly responseHeader?: string; - readonly errors?: Record; + readonly method: 'GET' | 'PUT' | 'POST' | 'DELETE' | 'OPTIONS' | 'HEAD' | 'PATCH'; + readonly path: string; + readonly cookies?: Record; + readonly headers?: Record; + readonly query?: Record; + readonly formData?: Record; + readonly body?: any; + readonly mediaType?: string; + readonly responseHeader?: string; + readonly errors?: Record; }; diff --git a/src/templates/core/ApiResult.hbs b/src/templates/core/ApiResult.hbs index a89d0acf..a768b8c5 100644 --- a/src/templates/core/ApiResult.hbs +++ b/src/templates/core/ApiResult.hbs @@ -1,9 +1,9 @@ {{>header}} export type ApiResult = { - readonly url: string; - readonly ok: boolean; - readonly status: number; - readonly statusText: string; - readonly body: any; + readonly url: string; + readonly ok: boolean; + readonly status: number; + readonly statusText: string; + readonly body: any; }; diff --git a/src/templates/core/CancelablePromise.hbs b/src/templates/core/CancelablePromise.hbs index 596d8f26..67a92a67 100644 --- a/src/templates/core/CancelablePromise.hbs +++ b/src/templates/core/CancelablePromise.hbs @@ -2,126 +2,126 @@ export class CancelError extends Error { - constructor(message: string) { - super(message); - this.name = 'CancelError'; - } + constructor(message: string) { + super(message); + this.name = 'CancelError'; + } - public get isCancelled(): boolean { - return true; - } + public get isCancelled(): boolean { + return true; + } } export interface OnCancel { - readonly isResolved: boolean; - readonly isRejected: boolean; - readonly isCancelled: boolean; + readonly isResolved: boolean; + readonly isRejected: boolean; + readonly isCancelled: boolean; - (cancelHandler: () => void): void; + (cancelHandler: () => void): void; } export class CancelablePromise implements Promise { - readonly [Symbol.toStringTag]: string; + readonly [Symbol.toStringTag]: string; - #isResolved: boolean; - #isRejected: boolean; - #isCancelled: boolean; - readonly #cancelHandlers: (() => void)[]; - readonly #promise: Promise; - #resolve?: (value: T | PromiseLike) => void; - #reject?: (reason?: any) => void; + #isResolved: boolean; + #isRejected: boolean; + #isCancelled: boolean; + readonly #cancelHandlers: (() => void)[]; + readonly #promise: Promise; + #resolve?: (value: T | PromiseLike) => void; + #reject?: (reason?: any) => void; - constructor( - executor: ( - resolve: (value: T | PromiseLike) => void, - reject: (reason?: any) => void, - onCancel: OnCancel - ) => void - ) { - this.#isResolved = false; - this.#isRejected = false; - this.#isCancelled = false; - this.#cancelHandlers = []; - this.#promise = new Promise((resolve, reject) => { - this.#resolve = resolve; - this.#reject = reject; + constructor( + executor: ( + resolve: (value: T | PromiseLike) => void, + reject: (reason?: any) => void, + onCancel: OnCancel + ) => void + ) { + this.#isResolved = false; + this.#isRejected = false; + this.#isCancelled = false; + this.#cancelHandlers = []; + this.#promise = new Promise((resolve, reject) => { + this.#resolve = resolve; + this.#reject = reject; - const onResolve = (value: T | PromiseLike): void => { - if (this.#isResolved || this.#isRejected || this.#isCancelled) { - return; - } - this.#isResolved = true; - this.#resolve?.(value); - }; + const onResolve = (value: T | PromiseLike): void => { + if (this.#isResolved || this.#isRejected || this.#isCancelled) { + return; + } + this.#isResolved = true; + this.#resolve?.(value); + }; - const onReject = (reason?: any): void => { - if (this.#isResolved || this.#isRejected || this.#isCancelled) { - return; - } - this.#isRejected = true; - this.#reject?.(reason); - }; + const onReject = (reason?: any): void => { + if (this.#isResolved || this.#isRejected || this.#isCancelled) { + return; + } + this.#isRejected = true; + this.#reject?.(reason); + }; - const onCancel = (cancelHandler: () => void): void => { - if (this.#isResolved || this.#isRejected || this.#isCancelled) { - return; - } - this.#cancelHandlers.push(cancelHandler); - }; + const onCancel = (cancelHandler: () => void): void => { + if (this.#isResolved || this.#isRejected || this.#isCancelled) { + return; + } + this.#cancelHandlers.push(cancelHandler); + }; - Object.defineProperty(onCancel, 'isResolved', { - get: (): boolean => this.#isResolved, - }); + Object.defineProperty(onCancel, 'isResolved', { + get: (): boolean => this.#isResolved, + }); - Object.defineProperty(onCancel, 'isRejected', { - get: (): boolean => this.#isRejected, - }); + Object.defineProperty(onCancel, 'isRejected', { + get: (): boolean => this.#isRejected, + }); - Object.defineProperty(onCancel, 'isCancelled', { - get: (): boolean => this.#isCancelled, - }); + Object.defineProperty(onCancel, 'isCancelled', { + get: (): boolean => this.#isCancelled, + }); - return executor(onResolve, onReject, onCancel as OnCancel); - }); - } + return executor(onResolve, onReject, onCancel as OnCancel); + }); + } - public then( - onFulfilled?: ((value: T) => TResult1 | PromiseLike) | null, - onRejected?: ((reason: any) => TResult2 | PromiseLike) | null - ): Promise { - return this.#promise.then(onFulfilled, onRejected); - } + public then( + onFulfilled?: ((value: T) => TResult1 | PromiseLike) | null, + onRejected?: ((reason: any) => TResult2 | PromiseLike) | null + ): Promise { + return this.#promise.then(onFulfilled, onRejected); + } - public catch( - onRejected?: ((reason: any) => TResult | PromiseLike) | null - ): Promise { - return this.#promise.catch(onRejected); - } + public catch( + onRejected?: ((reason: any) => TResult | PromiseLike) | null + ): Promise { + return this.#promise.catch(onRejected); + } - public finally(onFinally?: (() => void) | null): Promise { - return this.#promise.finally(onFinally); - } + public finally(onFinally?: (() => void) | null): Promise { + return this.#promise.finally(onFinally); + } - public cancel(): void { - if (this.#isResolved || this.#isRejected || this.#isCancelled) { - return; - } - this.#isCancelled = true; - if (this.#cancelHandlers.length) { - try { - for (const cancelHandler of this.#cancelHandlers) { - cancelHandler(); - } - } catch (error) { - console.warn('Cancellation threw an error', error); - return; - } - } - this.#cancelHandlers.length = 0; - this.#reject?.(new CancelError('Request aborted')); - } + public cancel(): void { + if (this.#isResolved || this.#isRejected || this.#isCancelled) { + return; + } + this.#isCancelled = true; + if (this.#cancelHandlers.length) { + try { + for (const cancelHandler of this.#cancelHandlers) { + cancelHandler(); + } + } catch (error) { + console.warn('Cancellation threw an error', error); + return; + } + } + this.#cancelHandlers.length = 0; + this.#reject?.(new CancelError('Request aborted')); + } - public get isCancelled(): boolean { - return this.#isCancelled; - } + public get isCancelled(): boolean { + return this.#isCancelled; + } } diff --git a/src/templates/core/OpenAPI.hbs b/src/templates/core/OpenAPI.hbs index 6883c726..e80dbc30 100644 --- a/src/templates/core/OpenAPI.hbs +++ b/src/templates/core/OpenAPI.hbs @@ -6,25 +6,25 @@ type Resolver = (options: ApiRequestOptions) => Promise; type Headers = Record; type Config = { - BASE: string; - VERSION: string; - WITH_CREDENTIALS: boolean; - CREDENTIALS: 'include' | 'omit' | 'same-origin'; - TOKEN?: string | Resolver; - USERNAME?: string | Resolver; - PASSWORD?: string | Resolver; - HEADERS?: Headers | Resolver; - ENCODE_PATH?: (path: string) => string; + BASE: string; + VERSION: string; + WITH_CREDENTIALS: boolean; + CREDENTIALS: 'include' | 'omit' | 'same-origin'; + TOKEN?: string | Resolver; + USERNAME?: string | Resolver; + PASSWORD?: string | Resolver; + HEADERS?: Headers | Resolver; + ENCODE_PATH?: (path: string) => string; }; export const OpenAPI: Config = { - BASE: '{{{server}}}', - VERSION: '{{{version}}}', - WITH_CREDENTIALS: false, - CREDENTIALS: 'include', - TOKEN: undefined, - USERNAME: undefined, - PASSWORD: undefined, - HEADERS: undefined, - ENCODE_PATH: undefined, + BASE: '{{{server}}}', + VERSION: '{{{version}}}', + WITH_CREDENTIALS: false, + CREDENTIALS: 'include', + TOKEN: undefined, + USERNAME: undefined, + PASSWORD: undefined, + HEADERS: undefined, + ENCODE_PATH: undefined, }; diff --git a/src/templates/core/axios/getHeaders.hbs b/src/templates/core/axios/getHeaders.hbs index e5121528..d99f29cf 100644 --- a/src/templates/core/axios/getHeaders.hbs +++ b/src/templates/core/axios/getHeaders.hbs @@ -1,30 +1,30 @@ async function getHeaders(options: ApiRequestOptions, formData?: FormData): Promise> { - const token = await resolve(options, OpenAPI.TOKEN); - const username = await resolve(options, OpenAPI.USERNAME); - const password = await resolve(options, OpenAPI.PASSWORD); - const additionalHeaders = await resolve(options, OpenAPI.HEADERS); - const formHeaders = typeof formData?.getHeaders === 'function' && formData?.getHeaders() || {} + const token = await resolve(options, OpenAPI.TOKEN); + const username = await resolve(options, OpenAPI.USERNAME); + const password = await resolve(options, OpenAPI.PASSWORD); + const additionalHeaders = await resolve(options, OpenAPI.HEADERS); + const formHeaders = typeof formData?.getHeaders === 'function' && formData?.getHeaders() || {} - const headers = Object.entries({ - Accept: 'application/json', - ...additionalHeaders, - ...options.headers, - ...formHeaders, - }) - .filter(([_, value]) => isDefined(value)) - .reduce((headers, [key, value]) => ({ - ...headers, - [key]: String(value), - }), {} as Record); + const headers = Object.entries({ + Accept: 'application/json', + ...additionalHeaders, + ...options.headers, + ...formHeaders, + }) + .filter(([_, value]) => isDefined(value)) + .reduce((headers, [key, value]) => ({ + ...headers, + [key]: String(value), + }), {} as Record); - if (isStringWithValue(token)) { - headers['Authorization'] = `Bearer ${token}`; - } + if (isStringWithValue(token)) { + headers['Authorization'] = `Bearer ${token}`; + } - if (isStringWithValue(username) && isStringWithValue(password)) { - const credentials = base64(`${username}:${password}`); - headers['Authorization'] = `Basic ${credentials}`; - } + if (isStringWithValue(username) && isStringWithValue(password)) { + const credentials = base64(`${username}:${password}`); + headers['Authorization'] = `Basic ${credentials}`; + } - return headers; + return headers; } diff --git a/src/templates/core/axios/getRequestBody.hbs b/src/templates/core/axios/getRequestBody.hbs index 004108b2..01199074 100644 --- a/src/templates/core/axios/getRequestBody.hbs +++ b/src/templates/core/axios/getRequestBody.hbs @@ -1,6 +1,6 @@ function getRequestBody(options: ApiRequestOptions): any { - if (options.body) { - return options.body; - } - return; + if (options.body) { + return options.body; + } + return; } diff --git a/src/templates/core/axios/getResponseBody.hbs b/src/templates/core/axios/getResponseBody.hbs index c086c074..fba92dfa 100644 --- a/src/templates/core/axios/getResponseBody.hbs +++ b/src/templates/core/axios/getResponseBody.hbs @@ -1,6 +1,6 @@ function getResponseBody(response: AxiosResponse): any { - if (response.status !== 204) { - return response.data; - } - return; + if (response.status !== 204) { + return response.data; + } + return; } diff --git a/src/templates/core/axios/getResponseHeader.hbs b/src/templates/core/axios/getResponseHeader.hbs index ed4f24c4..033a35bf 100644 --- a/src/templates/core/axios/getResponseHeader.hbs +++ b/src/templates/core/axios/getResponseHeader.hbs @@ -1,9 +1,9 @@ function getResponseHeader(response: AxiosResponse, responseHeader?: string): string | undefined { - if (responseHeader) { - const content = response.headers[responseHeader]; - if (isString(content)) { - return content; - } - } - return; + if (responseHeader) { + const content = response.headers[responseHeader]; + if (isString(content)) { + return content; + } + } + return; } diff --git a/src/templates/core/axios/request.hbs b/src/templates/core/axios/request.hbs index b1542088..78a272a4 100644 --- a/src/templates/core/axios/request.hbs +++ b/src/templates/core/axios/request.hbs @@ -65,33 +65,33 @@ import { OpenAPI } from './OpenAPI'; * @throws ApiError */ export function request(options: ApiRequestOptions): CancelablePromise { - return new CancelablePromise(async (resolve, reject, onCancel) => { - try { - const url = getUrl(options); - const formData = getFormData(options); - const body = getRequestBody(options); - const headers = await getHeaders(options, formData); + return new CancelablePromise(async (resolve, reject, onCancel) => { + try { + const url = getUrl(options); + const formData = getFormData(options); + const body = getRequestBody(options); + const headers = await getHeaders(options, formData); - if (!onCancel.isCancelled) { - const response = await sendRequest(options, url, formData, body, headers, onCancel); - const responseBody = getResponseBody(response); - const responseHeader = getResponseHeader(response, options.responseHeader); + if (!onCancel.isCancelled) { + const response = await sendRequest(options, url, formData, body, headers, onCancel); + const responseBody = getResponseBody(response); + const responseHeader = getResponseHeader(response, options.responseHeader); - const result: ApiResult = { - url, - ok: isSuccess(response.status), - status: response.status, - statusText: response.statusText, - body: responseHeader || responseBody, - }; + const result: ApiResult = { + url, + ok: isSuccess(response.status), + status: response.status, + statusText: response.statusText, + body: responseHeader || responseBody, + }; - catchErrors(options, result); + catchErrors(options, result); - resolve(result.body); - } - } catch (error) { - reject(error); - } - }); + resolve(result.body); + } + } catch (error) { + reject(error); + } + }); } diff --git a/src/templates/core/axios/sendRequest.hbs b/src/templates/core/axios/sendRequest.hbs index ace61b38..66b75fe5 100644 --- a/src/templates/core/axios/sendRequest.hbs +++ b/src/templates/core/axios/sendRequest.hbs @@ -1,31 +1,31 @@ async function sendRequest( - options: ApiRequestOptions, - url: string, - formData: FormData | undefined, - body: any, - headers: Record, - onCancel: OnCancel + options: ApiRequestOptions, + url: string, + formData: FormData | undefined, + body: any, + headers: Record, + onCancel: OnCancel ): Promise> { - const source = axios.CancelToken.source(); + const source = axios.CancelToken.source(); - const config: AxiosRequestConfig = { - url, - headers, - data: body || formData, - method: options.method, - withCredentials: OpenAPI.WITH_CREDENTIALS, - cancelToken: source.token, - }; + const config: AxiosRequestConfig = { + url, + headers, + data: body || formData, + method: options.method, + withCredentials: OpenAPI.WITH_CREDENTIALS, + cancelToken: source.token, + }; - onCancel(() => source.cancel('The user aborted a request.')); + onCancel(() => source.cancel('The user aborted a request.')); - try { - return await axios.request(config); - } catch (error) { - const axiosError = error as AxiosError; - if (axiosError.response) { - return axiosError.response; - } - throw error; - } + try { + return await axios.request(config); + } catch (error) { + const axiosError = error as AxiosError; + if (axiosError.response) { + return axiosError.response; + } + throw error; + } } diff --git a/src/templates/core/fetch/getHeaders.hbs b/src/templates/core/fetch/getHeaders.hbs index 261cc9b8..57142a68 100644 --- a/src/templates/core/fetch/getHeaders.hbs +++ b/src/templates/core/fetch/getHeaders.hbs @@ -1,42 +1,42 @@ async function getHeaders(options: ApiRequestOptions): Promise { - const token = await resolve(options, OpenAPI.TOKEN); - const username = await resolve(options, OpenAPI.USERNAME); - const password = await resolve(options, OpenAPI.PASSWORD); - const additionalHeaders = await resolve(options, OpenAPI.HEADERS); + const token = await resolve(options, OpenAPI.TOKEN); + const username = await resolve(options, OpenAPI.USERNAME); + const password = await resolve(options, OpenAPI.PASSWORD); + const additionalHeaders = await resolve(options, OpenAPI.HEADERS); - const defaultHeaders = Object.entries({ - Accept: 'application/json', - ...additionalHeaders, - ...options.headers, - }) - .filter(([_, value]) => isDefined(value)) - .reduce((headers, [key, value]) => ({ - ...headers, - [key]: String(value), - }), {} as Record); + const defaultHeaders = Object.entries({ + Accept: 'application/json', + ...additionalHeaders, + ...options.headers, + }) + .filter(([_, value]) => isDefined(value)) + .reduce((headers, [key, value]) => ({ + ...headers, + [key]: String(value), + }), {} as Record); - const headers = new Headers(defaultHeaders); + const headers = new Headers(defaultHeaders); - if (isStringWithValue(token)) { - headers.append('Authorization', `Bearer ${token}`); - } + if (isStringWithValue(token)) { + headers.append('Authorization', `Bearer ${token}`); + } - if (isStringWithValue(username) && isStringWithValue(password)) { - const credentials = base64(`${username}:${password}`); - headers.append('Authorization', `Basic ${credentials}`); - } + if (isStringWithValue(username) && isStringWithValue(password)) { + const credentials = base64(`${username}:${password}`); + headers.append('Authorization', `Basic ${credentials}`); + } - if (options.body) { - if (options.mediaType) { - headers.append('Content-Type', options.mediaType); - } else if (isBlob(options.body)) { - headers.append('Content-Type', options.body.type || 'application/octet-stream'); - } else if (isString(options.body)) { - headers.append('Content-Type', 'text/plain'); - } else if (!isFormData(options.body)) { - headers.append('Content-Type', 'application/json'); - } - } + if (options.body) { + if (options.mediaType) { + headers.append('Content-Type', options.mediaType); + } else if (isBlob(options.body)) { + headers.append('Content-Type', options.body.type || 'application/octet-stream'); + } else if (isString(options.body)) { + headers.append('Content-Type', 'text/plain'); + } else if (!isFormData(options.body)) { + headers.append('Content-Type', 'application/json'); + } + } - return headers; + return headers; } diff --git a/src/templates/core/fetch/getRequestBody.hbs b/src/templates/core/fetch/getRequestBody.hbs index 5167ec72..72bb863d 100644 --- a/src/templates/core/fetch/getRequestBody.hbs +++ b/src/templates/core/fetch/getRequestBody.hbs @@ -1,12 +1,12 @@ function getRequestBody(options: ApiRequestOptions): BodyInit | undefined { - if (options.body) { - if (options.mediaType?.includes('/json')) { - return JSON.stringify(options.body) - } else if (isString(options.body) || isBlob(options.body) || isFormData(options.body)) { - return options.body; - } else { - return JSON.stringify(options.body); - } - } - return; + if (options.body) { + if (options.mediaType?.includes('/json')) { + return JSON.stringify(options.body) + } else if (isString(options.body) || isBlob(options.body) || isFormData(options.body)) { + return options.body; + } else { + return JSON.stringify(options.body); + } + } + return; } diff --git a/src/templates/core/fetch/getResponseBody.hbs b/src/templates/core/fetch/getResponseBody.hbs index 741747d6..31c4473f 100644 --- a/src/templates/core/fetch/getResponseBody.hbs +++ b/src/templates/core/fetch/getResponseBody.hbs @@ -1,18 +1,18 @@ async function getResponseBody(response: Response): Promise { - if (response.status !== 204) { - try { - const contentType = response.headers.get('Content-Type'); - if (contentType) { - const isJSON = contentType.toLowerCase().startsWith('application/json'); - if (isJSON) { - return await response.json(); - } else { - return await response.text(); - } - } - } catch (error) { - console.error(error); - } - } - return; + if (response.status !== 204) { + try { + const contentType = response.headers.get('Content-Type'); + if (contentType) { + const isJSON = contentType.toLowerCase().startsWith('application/json'); + if (isJSON) { + return await response.json(); + } else { + return await response.text(); + } + } + } catch (error) { + console.error(error); + } + } + return; } diff --git a/src/templates/core/fetch/getResponseHeader.hbs b/src/templates/core/fetch/getResponseHeader.hbs index bdc006ac..834ca2c7 100644 --- a/src/templates/core/fetch/getResponseHeader.hbs +++ b/src/templates/core/fetch/getResponseHeader.hbs @@ -1,9 +1,9 @@ function getResponseHeader(response: Response, responseHeader?: string): string | undefined { - if (responseHeader) { - const content = response.headers.get(responseHeader); - if (isString(content)) { - return content; - } - } - return; + if (responseHeader) { + const content = response.headers.get(responseHeader); + if (isString(content)) { + return content; + } + } + return; } diff --git a/src/templates/core/fetch/request.hbs b/src/templates/core/fetch/request.hbs index bd296458..4fda6558 100644 --- a/src/templates/core/fetch/request.hbs +++ b/src/templates/core/fetch/request.hbs @@ -62,32 +62,32 @@ import { OpenAPI } from './OpenAPI'; * @throws ApiError */ export function request(options: ApiRequestOptions): CancelablePromise { - return new CancelablePromise(async (resolve, reject, onCancel) => { - try { - const url = getUrl(options); - const formData = getFormData(options); - const body = getRequestBody(options); - const headers = await getHeaders(options); + return new CancelablePromise(async (resolve, reject, onCancel) => { + try { + const url = getUrl(options); + const formData = getFormData(options); + const body = getRequestBody(options); + const headers = await getHeaders(options); - if (!onCancel.isCancelled) { - const response = await sendRequest(options, url, formData, body, headers, onCancel); - const responseBody = await getResponseBody(response); - const responseHeader = getResponseHeader(response, options.responseHeader); + if (!onCancel.isCancelled) { + const response = await sendRequest(options, url, formData, body, headers, onCancel); + const responseBody = await getResponseBody(response); + const responseHeader = getResponseHeader(response, options.responseHeader); - const result: ApiResult = { - url, - ok: response.ok, - status: response.status, - statusText: response.statusText, - body: responseHeader || responseBody, - }; + const result: ApiResult = { + url, + ok: response.ok, + status: response.status, + statusText: response.statusText, + body: responseHeader || responseBody, + }; - catchErrors(options, result); + catchErrors(options, result); - resolve(result.body); - } - } catch (error) { - reject(error); - } - }); + resolve(result.body); + } + } catch (error) { + reject(error); + } + }); } diff --git a/src/templates/core/fetch/sendRequest.hbs b/src/templates/core/fetch/sendRequest.hbs index c48bd9f7..1c74ca1c 100644 --- a/src/templates/core/fetch/sendRequest.hbs +++ b/src/templates/core/fetch/sendRequest.hbs @@ -1,25 +1,25 @@ async function sendRequest( - options: ApiRequestOptions, - url: string, - formData: FormData | undefined, - body: BodyInit | undefined, - headers: Headers, - onCancel: OnCancel + options: ApiRequestOptions, + url: string, + formData: FormData | undefined, + body: BodyInit | undefined, + headers: Headers, + onCancel: OnCancel ): Promise { - const controller = new AbortController(); + const controller = new AbortController(); - const request: RequestInit = { - headers, - body: body || formData, - method: options.method, - signal: controller.signal, - }; + const request: RequestInit = { + headers, + body: body || formData, + method: options.method, + signal: controller.signal, + }; - if (OpenAPI.WITH_CREDENTIALS) { - request.credentials = OpenAPI.CREDENTIALS; - } + if (OpenAPI.WITH_CREDENTIALS) { + request.credentials = OpenAPI.CREDENTIALS; + } - onCancel(() => controller.abort()); + onCancel(() => controller.abort()); - return await fetch(url, request); + return await fetch(url, request); } diff --git a/src/templates/core/functions/base64.hbs b/src/templates/core/functions/base64.hbs index bca506a1..cb3dc8d4 100644 --- a/src/templates/core/functions/base64.hbs +++ b/src/templates/core/functions/base64.hbs @@ -1,8 +1,8 @@ function base64(str: string): string { - try { - return btoa(str); - } catch (err) { - // @ts-ignore - return Buffer.from(str).toString('base64'); - } + try { + return btoa(str); + } catch (err) { + // @ts-ignore + return Buffer.from(str).toString('base64'); + } } diff --git a/src/templates/core/functions/catchErrors.hbs b/src/templates/core/functions/catchErrors.hbs index e9edc085..c52163e1 100644 --- a/src/templates/core/functions/catchErrors.hbs +++ b/src/templates/core/functions/catchErrors.hbs @@ -1,21 +1,21 @@ function catchErrors(options: ApiRequestOptions, result: ApiResult): void { - const errors: Record = { - 400: 'Bad Request', - 401: 'Unauthorized', - 403: 'Forbidden', - 404: 'Not Found', - 500: 'Internal Server Error', - 502: 'Bad Gateway', - 503: 'Service Unavailable', - ...options.errors, - } + const errors: Record = { + 400: 'Bad Request', + 401: 'Unauthorized', + 403: 'Forbidden', + 404: 'Not Found', + 500: 'Internal Server Error', + 502: 'Bad Gateway', + 503: 'Service Unavailable', + ...options.errors, + } - const error = errors[result.status]; - if (error) { - throw new ApiError(result, error); - } + const error = errors[result.status]; + if (error) { + throw new ApiError(result, error); + } - if (!result.ok) { - throw new ApiError(result, 'Generic Error'); - } + if (!result.ok) { + throw new ApiError(result, 'Generic Error'); + } } diff --git a/src/templates/core/functions/getFormData.hbs b/src/templates/core/functions/getFormData.hbs index 7e6e5b9f..17f949dc 100644 --- a/src/templates/core/functions/getFormData.hbs +++ b/src/templates/core/functions/getFormData.hbs @@ -1,26 +1,26 @@ function getFormData(options: ApiRequestOptions): FormData | undefined { - if (options.formData) { - const formData = new FormData(); + if (options.formData) { + const formData = new FormData(); - const process = (key: string, value: any) => { - if (isString(value) || isBlob(value)) { - formData.append(key, value); - } else { - formData.append(key, JSON.stringify(value)); - } - }; + const process = (key: string, value: any) => { + if (isString(value) || isBlob(value)) { + formData.append(key, value); + } else { + formData.append(key, JSON.stringify(value)); + } + }; - Object.entries(options.formData) - .filter(([_, value]) => isDefined(value)) - .forEach(([key, value]) => { - if (Array.isArray(value)) { - value.forEach(v => process(key, v)); - } else { - process(key, value); - } - }); + Object.entries(options.formData) + .filter(([_, value]) => isDefined(value)) + .forEach(([key, value]) => { + if (Array.isArray(value)) { + value.forEach(v => process(key, v)); + } else { + process(key, value); + } + }); - return formData; - } - return; + return formData; + } + return; } diff --git a/src/templates/core/functions/getQueryString.hbs b/src/templates/core/functions/getQueryString.hbs index a1416123..dccac76f 100644 --- a/src/templates/core/functions/getQueryString.hbs +++ b/src/templates/core/functions/getQueryString.hbs @@ -1,30 +1,30 @@ function getQueryString(params: Record): string { - const searchParams = new URLSearchParams(); + const searchParams = new URLSearchParams(); - const process = (key: string, value: any) => { - if (isDefined(value)) { - if (Array.isArray(value)) { - value.forEach(v => { - process(key, v); - }); - } else if (typeof value === 'object') { - Object.entries(value).forEach(([k, v]) => { - process(`${key}[${k}]`, v); - }); - } else { - searchParams.append(key, value); - } - } - }; + const process = (key: string, value: any) => { + if (isDefined(value)) { + if (Array.isArray(value)) { + value.forEach(v => { + process(key, v); + }); + } else if (typeof value === 'object') { + Object.entries(value).forEach(([k, v]) => { + process(`${key}[${k}]`, v); + }); + } else { + searchParams.append(key, value); + } + } + }; - Object.entries(params).forEach(([key, value]) => { - process(key, value); - }); + Object.entries(params).forEach(([key, value]) => { + process(key, value); + }); - const query = searchParams.toString(); - if (query.length) { - return `?${query}`; - } + const query = searchParams.toString(); + if (query.length) { + return `?${query}`; + } - return ''; + return ''; } diff --git a/src/templates/core/functions/getUrl.hbs b/src/templates/core/functions/getUrl.hbs index e733d2d7..96957a5d 100644 --- a/src/templates/core/functions/getUrl.hbs +++ b/src/templates/core/functions/getUrl.hbs @@ -1,9 +1,9 @@ function getUrl(options: ApiRequestOptions): string { - const path = OpenAPI.ENCODE_PATH ? OpenAPI.ENCODE_PATH(options.path) : options.path; - const url = `${OpenAPI.BASE}${path}`; - if (options.query) { - return `${url}${getQueryString(options.query)}`; - } + const path = OpenAPI.ENCODE_PATH ? OpenAPI.ENCODE_PATH(options.path) : options.path; + const url = `${OpenAPI.BASE}${path}`; + if (options.query) { + return `${url}${getQueryString(options.query)}`; + } - return url; + return url; } diff --git a/src/templates/core/functions/isBlob.hbs b/src/templates/core/functions/isBlob.hbs index 4a27d5a9..e5a7b396 100644 --- a/src/templates/core/functions/isBlob.hbs +++ b/src/templates/core/functions/isBlob.hbs @@ -1,12 +1,12 @@ function isBlob(value: any): value is Blob { - return ( - typeof value === 'object' && - typeof value.type === 'string' && - typeof value.stream === 'function' && - typeof value.arrayBuffer === 'function' && - typeof value.constructor === 'function' && - typeof value.constructor.name === 'string' && - /^(Blob|File)$/.test(value.constructor.name) && - /^(Blob|File)$/.test(value[Symbol.toStringTag]) - ); + return ( + typeof value === 'object' && + typeof value.type === 'string' && + typeof value.stream === 'function' && + typeof value.arrayBuffer === 'function' && + typeof value.constructor === 'function' && + typeof value.constructor.name === 'string' && + /^(Blob|File)$/.test(value.constructor.name) && + /^(Blob|File)$/.test(value[Symbol.toStringTag]) + ); } diff --git a/src/templates/core/functions/isDefined.hbs b/src/templates/core/functions/isDefined.hbs index 0f76dfd5..afe3c25b 100644 --- a/src/templates/core/functions/isDefined.hbs +++ b/src/templates/core/functions/isDefined.hbs @@ -1,3 +1,3 @@ function isDefined(value: T | null | undefined): value is Exclude { - return value !== undefined && value !== null; + return value !== undefined && value !== null; } diff --git a/src/templates/core/functions/isFormData.hbs b/src/templates/core/functions/isFormData.hbs index 6e26ecfc..4691d2de 100644 --- a/src/templates/core/functions/isFormData.hbs +++ b/src/templates/core/functions/isFormData.hbs @@ -1,3 +1,3 @@ function isFormData(value: any): value is FormData { - return value instanceof FormData; -} \ No newline at end of file + return value instanceof FormData; +} diff --git a/src/templates/core/functions/isString.hbs b/src/templates/core/functions/isString.hbs index 054df919..c3934e59 100644 --- a/src/templates/core/functions/isString.hbs +++ b/src/templates/core/functions/isString.hbs @@ -1,3 +1,3 @@ function isString(value: any): value is string { - return typeof value === 'string'; + return typeof value === 'string'; } diff --git a/src/templates/core/functions/isStringWithValue.hbs b/src/templates/core/functions/isStringWithValue.hbs index 3ea45353..e0ba8965 100644 --- a/src/templates/core/functions/isStringWithValue.hbs +++ b/src/templates/core/functions/isStringWithValue.hbs @@ -1,3 +1,3 @@ function isStringWithValue(value: any): value is string { - return isString(value) && value !== ''; + return isString(value) && value !== ''; } diff --git a/src/templates/core/functions/isSuccess.hbs b/src/templates/core/functions/isSuccess.hbs index e61ffe29..4821f94d 100644 --- a/src/templates/core/functions/isSuccess.hbs +++ b/src/templates/core/functions/isSuccess.hbs @@ -1,3 +1,3 @@ function isSuccess(status: number): boolean { - return status >= 200 && status < 300; + return status >= 200 && status < 300; } diff --git a/src/templates/core/functions/resolve.hbs b/src/templates/core/functions/resolve.hbs index 1d8406e9..a4ff30b7 100644 --- a/src/templates/core/functions/resolve.hbs +++ b/src/templates/core/functions/resolve.hbs @@ -1,8 +1,8 @@ type Resolver = (options: ApiRequestOptions) => Promise; async function resolve(options: ApiRequestOptions, resolver?: T | Resolver): Promise { - if (typeof resolver === 'function') { - return (resolver as Resolver)(options); - } - return resolver; + if (typeof resolver === 'function') { + return (resolver as Resolver)(options); + } + return resolver; } diff --git a/src/templates/core/node/getHeaders.hbs b/src/templates/core/node/getHeaders.hbs index c8dcc9ff..0d880a3d 100644 --- a/src/templates/core/node/getHeaders.hbs +++ b/src/templates/core/node/getHeaders.hbs @@ -1,41 +1,41 @@ async function getHeaders(options: ApiRequestOptions): Promise { - const token = await resolve(options, OpenAPI.TOKEN); - const username = await resolve(options, OpenAPI.USERNAME); - const password = await resolve(options, OpenAPI.PASSWORD); - const additionalHeaders = await resolve(options, OpenAPI.HEADERS); + const token = await resolve(options, OpenAPI.TOKEN); + const username = await resolve(options, OpenAPI.USERNAME); + const password = await resolve(options, OpenAPI.PASSWORD); + const additionalHeaders = await resolve(options, OpenAPI.HEADERS); - const defaultHeaders = Object.entries({ - Accept: 'application/json', - ...additionalHeaders, - ...options.headers, - }) - .filter(([_, value]) => isDefined(value)) - .reduce((headers, [key, value]) => ({ - ...headers, - [key]: String(value), - }), {} as Record); + const defaultHeaders = Object.entries({ + Accept: 'application/json', + ...additionalHeaders, + ...options.headers, + }) + .filter(([_, value]) => isDefined(value)) + .reduce((headers, [key, value]) => ({ + ...headers, + [key]: String(value), + }), {} as Record); - const headers = new Headers(defaultHeaders); + const headers = new Headers(defaultHeaders); - if (isStringWithValue(token)) { - headers.append('Authorization', `Bearer ${token}`); - } + if (isStringWithValue(token)) { + headers.append('Authorization', `Bearer ${token}`); + } - if (isStringWithValue(username) && isStringWithValue(password)) { - const credentials = base64(`${username}:${password}`); - headers.append('Authorization', `Basic ${credentials}`); - } + if (isStringWithValue(username) && isStringWithValue(password)) { + const credentials = base64(`${username}:${password}`); + headers.append('Authorization', `Basic ${credentials}`); + } - if (options.body) { - if (options.mediaType) { - headers.append('Content-Type', options.mediaType); - } else if (isBlob(options.body)) { - headers.append('Content-Type', 'application/octet-stream'); - } else if (isString(options.body)) { - headers.append('Content-Type', 'text/plain'); - } else if (!isFormData(options.body)) { - headers.append('Content-Type', 'application/json'); - } - } - return headers; + if (options.body) { + if (options.mediaType) { + headers.append('Content-Type', options.mediaType); + } else if (isBlob(options.body)) { + headers.append('Content-Type', 'application/octet-stream'); + } else if (isString(options.body)) { + headers.append('Content-Type', 'text/plain'); + } else if (!isFormData(options.body)) { + headers.append('Content-Type', 'application/json'); + } + } + return headers; } diff --git a/src/templates/core/node/getRequestBody.hbs b/src/templates/core/node/getRequestBody.hbs index 3cf835ba..7661a404 100644 --- a/src/templates/core/node/getRequestBody.hbs +++ b/src/templates/core/node/getRequestBody.hbs @@ -1,12 +1,12 @@ function getRequestBody(options: ApiRequestOptions): BodyInit | undefined { - if (options.body) { - if (options.mediaType?.includes('/json')) { - return JSON.stringify(options.body) - } else if (isString(options.body) || isBlob(options.body) || isFormData(options.body)) { - return options.body as any; - } else { - return JSON.stringify(options.body); - } - } - return; + if (options.body) { + if (options.mediaType?.includes('/json')) { + return JSON.stringify(options.body) + } else if (isString(options.body) || isBlob(options.body) || isFormData(options.body)) { + return options.body as any; + } else { + return JSON.stringify(options.body); + } + } + return; } diff --git a/src/templates/core/node/getResponseBody.hbs b/src/templates/core/node/getResponseBody.hbs index 741747d6..31c4473f 100644 --- a/src/templates/core/node/getResponseBody.hbs +++ b/src/templates/core/node/getResponseBody.hbs @@ -1,18 +1,18 @@ async function getResponseBody(response: Response): Promise { - if (response.status !== 204) { - try { - const contentType = response.headers.get('Content-Type'); - if (contentType) { - const isJSON = contentType.toLowerCase().startsWith('application/json'); - if (isJSON) { - return await response.json(); - } else { - return await response.text(); - } - } - } catch (error) { - console.error(error); - } - } - return; + if (response.status !== 204) { + try { + const contentType = response.headers.get('Content-Type'); + if (contentType) { + const isJSON = contentType.toLowerCase().startsWith('application/json'); + if (isJSON) { + return await response.json(); + } else { + return await response.text(); + } + } + } catch (error) { + console.error(error); + } + } + return; } diff --git a/src/templates/core/node/getResponseHeader.hbs b/src/templates/core/node/getResponseHeader.hbs index bdc006ac..834ca2c7 100644 --- a/src/templates/core/node/getResponseHeader.hbs +++ b/src/templates/core/node/getResponseHeader.hbs @@ -1,9 +1,9 @@ function getResponseHeader(response: Response, responseHeader?: string): string | undefined { - if (responseHeader) { - const content = response.headers.get(responseHeader); - if (isString(content)) { - return content; - } - } - return; + if (responseHeader) { + const content = response.headers.get(responseHeader); + if (isString(content)) { + return content; + } + } + return; } diff --git a/src/templates/core/node/request.hbs b/src/templates/core/node/request.hbs index 5573aae4..5a57e65e 100644 --- a/src/templates/core/node/request.hbs +++ b/src/templates/core/node/request.hbs @@ -66,32 +66,32 @@ import { OpenAPI } from './OpenAPI'; * @throws ApiError */ export function request(options: ApiRequestOptions): CancelablePromise { - return new CancelablePromise(async (resolve, reject, onCancel) => { - try { - const url = getUrl(options); - const formData = getFormData(options); - const body = getRequestBody(options); - const headers = await getHeaders(options); + return new CancelablePromise(async (resolve, reject, onCancel) => { + try { + const url = getUrl(options); + const formData = getFormData(options); + const body = getRequestBody(options); + const headers = await getHeaders(options); - if (!onCancel.isCancelled) { - const response = await sendRequest(options, url, formData, body, headers, onCancel); - const responseBody = await getResponseBody(response); - const responseHeader = getResponseHeader(response, options.responseHeader); + if (!onCancel.isCancelled) { + const response = await sendRequest(options, url, formData, body, headers, onCancel); + const responseBody = await getResponseBody(response); + const responseHeader = getResponseHeader(response, options.responseHeader); - const result: ApiResult = { - url, - ok: response.ok, - status: response.status, - statusText: response.statusText, - body: responseHeader || responseBody, - }; + const result: ApiResult = { + url, + ok: response.ok, + status: response.status, + statusText: response.statusText, + body: responseHeader || responseBody, + }; - catchErrors(options, result); + catchErrors(options, result); - resolve(result.body); - } - } catch (error) { - reject(error); - } - }); + resolve(result.body); + } + } catch (error) { + reject(error); + } + }); } diff --git a/src/templates/core/node/sendRequest.hbs b/src/templates/core/node/sendRequest.hbs index 236a87c1..2067d2f0 100644 --- a/src/templates/core/node/sendRequest.hbs +++ b/src/templates/core/node/sendRequest.hbs @@ -1,21 +1,21 @@ async function sendRequest( - options: ApiRequestOptions, - url: string, - formData: FormData | undefined, - body: BodyInit | undefined, - headers: Headers, - onCancel: OnCancel + options: ApiRequestOptions, + url: string, + formData: FormData | undefined, + body: BodyInit | undefined, + headers: Headers, + onCancel: OnCancel ): Promise { - const controller = new AbortController(); + const controller = new AbortController(); - const request: RequestInit = { - headers, - method: options.method, - body: body || formData, - signal: controller.signal, - }; + const request: RequestInit = { + headers, + method: options.method, + body: body || formData, + signal: controller.signal, + }; - onCancel(() => controller.abort()); + onCancel(() => controller.abort()); - return await fetch(url, request); + return await fetch(url, request); } diff --git a/src/templates/core/xhr/getHeaders.hbs b/src/templates/core/xhr/getHeaders.hbs index bdb7db74..cbb43e57 100644 --- a/src/templates/core/xhr/getHeaders.hbs +++ b/src/templates/core/xhr/getHeaders.hbs @@ -1,41 +1,41 @@ async function getHeaders(options: ApiRequestOptions): Promise { - const token = await resolve(options, OpenAPI.TOKEN); - const username = await resolve(options, OpenAPI.USERNAME); - const password = await resolve(options, OpenAPI.PASSWORD); - const additionalHeaders = await resolve(options, OpenAPI.HEADERS); + const token = await resolve(options, OpenAPI.TOKEN); + const username = await resolve(options, OpenAPI.USERNAME); + const password = await resolve(options, OpenAPI.PASSWORD); + const additionalHeaders = await resolve(options, OpenAPI.HEADERS); - const defaultHeaders = Object.entries({ - Accept: 'application/json', - ...additionalHeaders, - ...options.headers, - }) - .filter(([_, value]) => isDefined(value)) - .reduce((headers, [key, value]) => ({ - ...headers, - [key]: String(value), - }), {} as Record); + const defaultHeaders = Object.entries({ + Accept: 'application/json', + ...additionalHeaders, + ...options.headers, + }) + .filter(([_, value]) => isDefined(value)) + .reduce((headers, [key, value]) => ({ + ...headers, + [key]: String(value), + }), {} as Record); - const headers = new Headers(defaultHeaders); + const headers = new Headers(defaultHeaders); - if (isStringWithValue(token)) { - headers.append('Authorization', `Bearer ${token}`); - } + if (isStringWithValue(token)) { + headers.append('Authorization', `Bearer ${token}`); + } - if (isStringWithValue(username) && isStringWithValue(password)) { - const credentials = base64(`${username}:${password}`); - headers.append('Authorization', `Basic ${credentials}`); - } + if (isStringWithValue(username) && isStringWithValue(password)) { + const credentials = base64(`${username}:${password}`); + headers.append('Authorization', `Basic ${credentials}`); + } - if (options.body) { - if (options.mediaType) { - headers.append('Content-Type', options.mediaType); - } else if (isBlob(options.body)) { - headers.append('Content-Type', options.body.type || 'application/octet-stream'); - } else if (isString(options.body)) { - headers.append('Content-Type', 'text/plain'); - } else if (!isFormData(options.body)) { - headers.append('Content-Type', 'application/json'); - } - } - return headers; + if (options.body) { + if (options.mediaType) { + headers.append('Content-Type', options.mediaType); + } else if (isBlob(options.body)) { + headers.append('Content-Type', options.body.type || 'application/octet-stream'); + } else if (isString(options.body)) { + headers.append('Content-Type', 'text/plain'); + } else if (!isFormData(options.body)) { + headers.append('Content-Type', 'application/json'); + } + } + return headers; } diff --git a/src/templates/core/xhr/getRequestBody.hbs b/src/templates/core/xhr/getRequestBody.hbs index c94aca18..3e0de31b 100644 --- a/src/templates/core/xhr/getRequestBody.hbs +++ b/src/templates/core/xhr/getRequestBody.hbs @@ -1,13 +1,13 @@ function getRequestBody(options: ApiRequestOptions): any { - if (options.body) { - if (options.mediaType?.includes('/json')) { - return JSON.stringify(options.body) - } else if (isString(options.body) || isBlob(options.body) || isFormData(options.body)) { - return options.body; - } else { - return JSON.stringify(options.body); - } - } + if (options.body) { + if (options.mediaType?.includes('/json')) { + return JSON.stringify(options.body) + } else if (isString(options.body) || isBlob(options.body) || isFormData(options.body)) { + return options.body; + } else { + return JSON.stringify(options.body); + } + } - return; + return; } diff --git a/src/templates/core/xhr/getResponseBody.hbs b/src/templates/core/xhr/getResponseBody.hbs index 00b0f6c4..47c21d85 100644 --- a/src/templates/core/xhr/getResponseBody.hbs +++ b/src/templates/core/xhr/getResponseBody.hbs @@ -1,18 +1,18 @@ function getResponseBody(xhr: XMLHttpRequest): any { - if (xhr.status !== 204) { - try { - const contentType = xhr.getResponseHeader('Content-Type'); - if (contentType) { - const isJSON = contentType.toLowerCase().startsWith('application/json'); - if (isJSON) { - return JSON.parse(xhr.responseText); - } else { - return xhr.responseText; - } - } - } catch (error) { - console.error(error); - } - } - return; + if (xhr.status !== 204) { + try { + const contentType = xhr.getResponseHeader('Content-Type'); + if (contentType) { + const isJSON = contentType.toLowerCase().startsWith('application/json'); + if (isJSON) { + return JSON.parse(xhr.responseText); + } else { + return xhr.responseText; + } + } + } catch (error) { + console.error(error); + } + } + return; } diff --git a/src/templates/core/xhr/getResponseHeader.hbs b/src/templates/core/xhr/getResponseHeader.hbs index 64e1aab0..9a1bf0b7 100644 --- a/src/templates/core/xhr/getResponseHeader.hbs +++ b/src/templates/core/xhr/getResponseHeader.hbs @@ -1,9 +1,9 @@ function getResponseHeader(xhr: XMLHttpRequest, responseHeader?: string): string | undefined { - if (responseHeader) { - const content = xhr.getResponseHeader(responseHeader); - if (isString(content)) { - return content; - } - } - return; + if (responseHeader) { + const content = xhr.getResponseHeader(responseHeader); + if (isString(content)) { + return content; + } + } + return; } diff --git a/src/templates/core/xhr/request.hbs b/src/templates/core/xhr/request.hbs index 65e6227b..3e589d51 100644 --- a/src/templates/core/xhr/request.hbs +++ b/src/templates/core/xhr/request.hbs @@ -65,32 +65,32 @@ import { OpenAPI } from './OpenAPI'; * @throws ApiError */ export function request(options: ApiRequestOptions): CancelablePromise { - return new CancelablePromise(async (resolve, reject, onCancel) => { - try { - const url = getUrl(options); - const formData = getFormData(options); - const body = getRequestBody(options); - const headers = await getHeaders(options); + return new CancelablePromise(async (resolve, reject, onCancel) => { + try { + const url = getUrl(options); + const formData = getFormData(options); + const body = getRequestBody(options); + const headers = await getHeaders(options); - if (!onCancel.isCancelled) { - const response = await sendRequest(options, url, formData, body, headers, onCancel); - const responseBody = getResponseBody(response); - const responseHeader = getResponseHeader(response, options.responseHeader); + if (!onCancel.isCancelled) { + const response = await sendRequest(options, url, formData, body, headers, onCancel); + const responseBody = getResponseBody(response); + const responseHeader = getResponseHeader(response, options.responseHeader); - const result: ApiResult = { - url, - ok: isSuccess(response.status), - status: response.status, - statusText: response.statusText, - body: responseHeader || responseBody, - }; + const result: ApiResult = { + url, + ok: isSuccess(response.status), + status: response.status, + statusText: response.statusText, + body: responseHeader || responseBody, + }; - catchErrors(options, result); + catchErrors(options, result); - resolve(result.body); - } - } catch (error) { - reject(error); - } - }); + resolve(result.body); + } + } catch (error) { + reject(error); + } + }); } diff --git a/src/templates/core/xhr/sendRequest.hbs b/src/templates/core/xhr/sendRequest.hbs index 0e409dc8..4badc36e 100644 --- a/src/templates/core/xhr/sendRequest.hbs +++ b/src/templates/core/xhr/sendRequest.hbs @@ -1,25 +1,25 @@ async function sendRequest( - options: ApiRequestOptions, - url: string, - formData: FormData | undefined, - body: any, - headers: Headers, - onCancel: OnCancel + options: ApiRequestOptions, + url: string, + formData: FormData | undefined, + body: any, + headers: Headers, + onCancel: OnCancel ): Promise { - const xhr = new XMLHttpRequest(); - xhr.open(options.method, url, true); - xhr.withCredentials = OpenAPI.WITH_CREDENTIALS; + const xhr = new XMLHttpRequest(); + xhr.open(options.method, url, true); + xhr.withCredentials = OpenAPI.WITH_CREDENTIALS; - headers.forEach((value, key) => { - xhr.setRequestHeader(key, value); - }); + headers.forEach((value, key) => { + xhr.setRequestHeader(key, value); + }); - return new Promise((resolve, reject) => { - xhr.onload = () => resolve(xhr); - xhr.onabort = () => reject(new Error('Request aborted')); - xhr.onerror = () => reject(new Error('Network error')); - xhr.send(body || formData); + return new Promise((resolve, reject) => { + xhr.onload = () => resolve(xhr); + xhr.onabort = () => reject(new Error('Request aborted')); + xhr.onerror = () => reject(new Error('Network error')); + xhr.send(body || formData); - onCancel(() => xhr.abort()); - }); + onCancel(() => xhr.abort()); + }); } diff --git a/src/templates/exportService.hbs b/src/templates/exportService.hbs index 10a389f3..7af37dd4 100644 --- a/src/templates/exportService.hbs +++ b/src/templates/exportService.hbs @@ -13,84 +13,84 @@ import { OpenAPI } from '../core/OpenAPI'; export class {{{name}}}{{{@root.postfix}}} { - {{#each operations}} - /** - {{#if deprecated}} - * @deprecated - {{/if}} - {{#if summary}} - * {{{escapeComment summary}}} - {{/if}} - {{#if description}} - * {{{escapeComment description}}} - {{/if}} - {{#unless @root.useOptions}} - {{#if parameters}} - {{#each parameters}} - * @param {{{name}}} {{#if description}}{{{escapeComment description}}}{{/if}} - {{/each}} - {{/if}} - {{/unless}} - {{#each results}} - * @returns {{{type}}} {{#if description}}{{{escapeComment description}}}{{/if}} - {{/each}} - * @throws ApiError - */ - public static {{{name}}}({{>parameters}}): CancelablePromise<{{>result}}> { - return __request({ - method: '{{{method}}}', - path: `{{{path}}}`, - {{#if parametersCookie}} - cookies: { - {{#each parametersCookie}} - '{{{prop}}}': {{{name}}}, - {{/each}} - }, - {{/if}} - {{#if parametersHeader}} - headers: { - {{#each parametersHeader}} - '{{{prop}}}': {{{name}}}, - {{/each}} - }, - {{/if}} - {{#if parametersQuery}} - query: { - {{#each parametersQuery}} - '{{{prop}}}': {{{name}}}, - {{/each}} - }, - {{/if}} - {{#if parametersForm}} - formData: { - {{#each parametersForm}} - '{{{prop}}}': {{{name}}}, - {{/each}} - }, - {{/if}} - {{#if parametersBody}} - {{#equals parametersBody.in 'formData'}} - formData: {{{parametersBody.name}}}, - {{/equals}} - {{#equals parametersBody.in 'body'}} - body: {{{parametersBody.name}}}, - {{/equals}} - {{#if parametersBody.mediaType}} - mediaType: '{{{parametersBody.mediaType}}}', - {{/if}} - {{/if}} - {{#if responseHeader}} - responseHeader: '{{{responseHeader}}}', - {{/if}} - {{#if errors}} - errors: { - {{#each errors}} - {{{code}}}: `{{{description}}}`, - {{/each}} - }, - {{/if}} - }); - } + {{#each operations}} + /** + {{#if deprecated}} + * @deprecated + {{/if}} + {{#if summary}} + * {{{escapeComment summary}}} + {{/if}} + {{#if description}} + * {{{escapeComment description}}} + {{/if}} + {{#unless @root.useOptions}} + {{#if parameters}} + {{#each parameters}} + * @param {{{name}}} {{#if description}}{{{escapeComment description}}}{{/if}} + {{/each}} + {{/if}} + {{/unless}} + {{#each results}} + * @returns {{{type}}} {{#if description}}{{{escapeComment description}}}{{/if}} + {{/each}} + * @throws ApiError + */ + public static {{{name}}}({{>parameters}}): CancelablePromise<{{>result}}> { + return __request({ + method: '{{{method}}}', + path: `{{{path}}}`, + {{#if parametersCookie}} + cookies: { + {{#each parametersCookie}} + '{{{prop}}}': {{{name}}}, + {{/each}} + }, + {{/if}} + {{#if parametersHeader}} + headers: { + {{#each parametersHeader}} + '{{{prop}}}': {{{name}}}, + {{/each}} + }, + {{/if}} + {{#if parametersQuery}} + query: { + {{#each parametersQuery}} + '{{{prop}}}': {{{name}}}, + {{/each}} + }, + {{/if}} + {{#if parametersForm}} + formData: { + {{#each parametersForm}} + '{{{prop}}}': {{{name}}}, + {{/each}} + }, + {{/if}} + {{#if parametersBody}} + {{#equals parametersBody.in 'formData'}} + formData: {{{parametersBody.name}}}, + {{/equals}} + {{#equals parametersBody.in 'body'}} + body: {{{parametersBody.name}}}, + {{/equals}} + {{#if parametersBody.mediaType}} + mediaType: '{{{parametersBody.mediaType}}}', + {{/if}} + {{/if}} + {{#if responseHeader}} + responseHeader: '{{{responseHeader}}}', + {{/if}} + {{#if errors}} + errors: { + {{#each errors}} + {{{code}}}: `{{{description}}}`, + {{/each}} + }, + {{/if}} + }); + } - {{/each}} + {{/each}} } diff --git a/src/templates/partials/exportComposition.hbs b/src/templates/partials/exportComposition.hbs index d1ea334c..a494260c 100644 --- a/src/templates/partials/exportComposition.hbs +++ b/src/templates/partials/exportComposition.hbs @@ -9,19 +9,19 @@ export type {{{name}}} = {{>type parent=name}}; export namespace {{{name}}} { - {{#each enums}} - {{#if description}} - /** - * {{{escapeComment description}}} - */ - {{/if}} - export enum {{{name}}} { - {{#each enum}} - {{{name}}} = {{{value}}}, - {{/each}} - } + {{#each enums}} + {{#if description}} + /** + * {{{escapeComment description}}} + */ + {{/if}} + export enum {{{name}}} { + {{#each enum}} + {{{name}}} = {{{value}}}, + {{/each}} + } - {{/each}} + {{/each}} } {{/unless}} diff --git a/src/templates/partials/exportEnum.hbs b/src/templates/partials/exportEnum.hbs index 34cec514..2b28749b 100644 --- a/src/templates/partials/exportEnum.hbs +++ b/src/templates/partials/exportEnum.hbs @@ -4,16 +4,16 @@ */ {{/if}} export enum {{{name}}} { - {{#each enum}} - {{#if description}} - /** - * {{{escapeComment description}}} - */ - {{/if}} - {{#containsSpaces name}} - "{{{name}}}" = {{{value}}}, - {{else}} - {{{name}}} = {{{value}}}, - {{/containsSpaces}} - {{/each}} + {{#each enum}} + {{#if description}} + /** + * {{{escapeComment description}}} + */ + {{/if}} + {{#containsSpaces name}} + "{{{name}}}" = {{{value}}}, + {{else}} + {{{name}}} = {{{value}}}, + {{/containsSpaces}} + {{/each}} } diff --git a/src/templates/partials/exportInterface.hbs b/src/templates/partials/exportInterface.hbs index 2a023043..645f8f42 100644 --- a/src/templates/partials/exportInterface.hbs +++ b/src/templates/partials/exportInterface.hbs @@ -4,33 +4,33 @@ */ {{/if}} export type {{{name}}} = { - {{#each properties}} - {{#if description}} - /** - * {{{escapeComment description}}} - */ - {{/if}} - {{>isReadOnly}}{{{name}}}{{>isRequired}}: {{>type parent=../name}}; - {{/each}} + {{#each properties}} + {{#if description}} + /** + * {{{escapeComment description}}} + */ + {{/if}} + {{>isReadOnly}}{{{name}}}{{>isRequired}}: {{>type parent=../name}}; + {{/each}} }; {{#if enums}} {{#unless @root.useUnionTypes}} export namespace {{{name}}} { - {{#each enums}} - {{#if description}} - /** - * {{{escapeComment description}}} - */ - {{/if}} - export enum {{{name}}} { - {{#each enum}} - {{{name}}} = {{{value}}}, - {{/each}} - } + {{#each enums}} + {{#if description}} + /** + * {{{escapeComment description}}} + */ + {{/if}} + export enum {{{name}}} { + {{#each enum}} + {{{name}}} = {{{value}}}, + {{/each}} + } - {{/each}} + {{/each}} } {{/unless}} diff --git a/src/templates/partials/schemaArray.hbs b/src/templates/partials/schemaArray.hbs index 8e1444b9..44871265 100644 --- a/src/templates/partials/schemaArray.hbs +++ b/src/templates/partials/schemaArray.hbs @@ -1,19 +1,19 @@ { - type: 'array', + type: 'array', {{#if link}} - contains: {{>schema link}}, + contains: {{>schema link}}, {{else}} - contains: { - type: '{{{base}}}', - }, + contains: { + type: '{{{base}}}', + }, {{/if}} {{#if isReadOnly}} - isReadOnly: {{{isReadOnly}}}, + isReadOnly: {{{isReadOnly}}}, {{/if}} {{#if isRequired}} - isRequired: {{{isRequired}}}, + isRequired: {{{isRequired}}}, {{/if}} {{#if isNullable}} - isNullable: {{{isNullable}}}, + isNullable: {{{isNullable}}}, {{/if}} } diff --git a/src/templates/partials/schemaComposition.hbs b/src/templates/partials/schemaComposition.hbs index f916e73d..050f6696 100644 --- a/src/templates/partials/schemaComposition.hbs +++ b/src/templates/partials/schemaComposition.hbs @@ -1,16 +1,16 @@ { - type: '{{export}}', + type: '{{export}}', {{#if description}} - description: `{{{escapeDescription description}}}`, + description: `{{{escapeDescription description}}}`, {{/if}} - contains: [{{#each properties}}{{>schema}}{{#unless @last}}, {{/unless}}{{/each}}], + contains: [{{#each properties}}{{>schema}}{{#unless @last}}, {{/unless}}{{/each}}], {{#if isReadOnly}} - isReadOnly: {{{isReadOnly}}}, + isReadOnly: {{{isReadOnly}}}, {{/if}} {{#if isRequired}} - isRequired: {{{isRequired}}}, + isRequired: {{{isRequired}}}, {{/if}} {{#if isNullable}} - isNullable: {{{isNullable}}}, + isNullable: {{{isNullable}}}, {{/if}} } diff --git a/src/templates/partials/schemaDictionary.hbs b/src/templates/partials/schemaDictionary.hbs index e980d0e7..1e755f7a 100644 --- a/src/templates/partials/schemaDictionary.hbs +++ b/src/templates/partials/schemaDictionary.hbs @@ -1,19 +1,19 @@ { - type: 'dictionary', + type: 'dictionary', {{#if link}} - contains: {{>schema link}}, + contains: {{>schema link}}, {{else}} - contains: { - type: '{{{base}}}', - }, + contains: { + type: '{{{base}}}', + }, {{/if}} {{#if isReadOnly}} - isReadOnly: {{{isReadOnly}}}, + isReadOnly: {{{isReadOnly}}}, {{/if}} {{#if isRequired}} - isRequired: {{{isRequired}}}, + isRequired: {{{isRequired}}}, {{/if}} {{#if isNullable}} - isNullable: {{{isNullable}}}, + isNullable: {{{isNullable}}}, {{/if}} } diff --git a/src/templates/partials/schemaEnum.hbs b/src/templates/partials/schemaEnum.hbs index 308cab5b..eaba3fc5 100644 --- a/src/templates/partials/schemaEnum.hbs +++ b/src/templates/partials/schemaEnum.hbs @@ -1,12 +1,12 @@ { - type: 'Enum', + type: 'Enum', {{#if isReadOnly}} - isReadOnly: {{{isReadOnly}}}, + isReadOnly: {{{isReadOnly}}}, {{/if}} {{#if isRequired}} - isRequired: {{{isRequired}}}, + isRequired: {{{isRequired}}}, {{/if}} {{#if isNullable}} - isNullable: {{{isNullable}}}, + isNullable: {{{isNullable}}}, {{/if}} } diff --git a/src/templates/partials/schemaGeneric.hbs b/src/templates/partials/schemaGeneric.hbs index 31ad8e46..23580a67 100644 --- a/src/templates/partials/schemaGeneric.hbs +++ b/src/templates/partials/schemaGeneric.hbs @@ -1,59 +1,59 @@ { {{#if type}} - type: '{{{type}}}', + type: '{{{type}}}', {{/if}} {{#if description}} - description: `{{{escapeDescription description}}}`, + description: `{{{escapeDescription description}}}`, {{/if}} {{#if isReadOnly}} - isReadOnly: {{{isReadOnly}}}, + isReadOnly: {{{isReadOnly}}}, {{/if}} {{#if isRequired}} - isRequired: {{{isRequired}}}, + isRequired: {{{isRequired}}}, {{/if}} {{#if isNullable}} - isNullable: {{{isNullable}}}, + isNullable: {{{isNullable}}}, {{/if}} {{#if format}} - format: '{{{format}}}', + format: '{{{format}}}', {{/if}} {{#if maximum}} - maximum: {{{maximum}}}, + maximum: {{{maximum}}}, {{/if}} {{#if exclusiveMaximum}} - exclusiveMaximum: {{{exclusiveMaximum}}}, + exclusiveMaximum: {{{exclusiveMaximum}}}, {{/if}} {{#if minimum}} - minimum: {{{minimum}}}, + minimum: {{{minimum}}}, {{/if}} {{#if exclusiveMinimum}} - exclusiveMinimum: {{{exclusiveMinimum}}}, + exclusiveMinimum: {{{exclusiveMinimum}}}, {{/if}} {{#if multipleOf}} - multipleOf: {{{multipleOf}}}, + multipleOf: {{{multipleOf}}}, {{/if}} {{#if maxLength}} - maxLength: {{{maxLength}}}, + maxLength: {{{maxLength}}}, {{/if}} {{#if minLength}} - minLength: {{{minLength}}}, + minLength: {{{minLength}}}, {{/if}} {{#if pattern}} - pattern: '{{{pattern}}}', + pattern: '{{{pattern}}}', {{/if}} {{#if maxItems}} - maxItems: {{{maxItems}}}, + maxItems: {{{maxItems}}}, {{/if}} {{#if minItems}} - minItems: {{{minItems}}}, + minItems: {{{minItems}}}, {{/if}} {{#if uniqueItems}} - uniqueItems: {{{uniqueItems}}}, + uniqueItems: {{{uniqueItems}}}, {{/if}} {{#if maxProperties}} - maxProperties: {{{maxProperties}}}, + maxProperties: {{{maxProperties}}}, {{/if}} {{#if minProperties}} - minProperties: {{{minProperties}}}, + minProperties: {{{minProperties}}}, {{/if}} } diff --git a/src/templates/partials/schemaInterface.hbs b/src/templates/partials/schemaInterface.hbs index 94770606..3417c5fb 100644 --- a/src/templates/partials/schemaInterface.hbs +++ b/src/templates/partials/schemaInterface.hbs @@ -1,21 +1,21 @@ { {{#if description}} - description: `{{{escapeDescription description}}}`, + description: `{{{escapeDescription description}}}`, {{/if}} - properties: { + properties: { {{#if properties}} - {{#each properties}} - {{{name}}}: {{>schema}}, - {{/each}} + {{#each properties}} + {{{name}}}: {{>schema}}, + {{/each}} {{/if}} - }, + }, {{#if isReadOnly}} - isReadOnly: {{{isReadOnly}}}, + isReadOnly: {{{isReadOnly}}}, {{/if}} {{#if isRequired}} - isRequired: {{{isRequired}}}, + isRequired: {{{isRequired}}}, {{/if}} {{#if isNullable}} - isNullable: {{{isNullable}}}, + isNullable: {{{isNullable}}}, {{/if}} } diff --git a/src/utils/format.spec.ts b/src/utils/format.spec.ts index dee81b5c..64751315 100644 --- a/src/utils/format.spec.ts +++ b/src/utils/format.spec.ts @@ -14,8 +14,8 @@ bar: 123 }`; const output3 = `{ - foo: true, - bar: 123 +\tfoo: true, +\tbar: 123 }`; const input4 = `{ @@ -24,8 +24,8 @@ const input4 = `{ }`; const output4 = `{ - foo: true, - bar: 123 +\tfoo: true, +\tbar: 123 }`; describe('format', () => { diff --git a/src/utils/format.ts b/src/utils/format.ts index 8b4fbca3..8479852a 100644 --- a/src/utils/format.ts +++ b/src/utils/format.ts @@ -13,7 +13,7 @@ export function format(s: string): string { indent--; i--; } - const result = `${' '.repeat(i)}${line}`; + const result = `${'\t'.repeat(i)}${line}`; if (result.trim() === '') { return ''; } diff --git a/src/utils/indent.ts b/src/utils/indent.ts new file mode 100644 index 00000000..e6566997 --- /dev/null +++ b/src/utils/indent.ts @@ -0,0 +1,9 @@ +import { EOL } from 'os'; + +export function indent(s: string): string { + let lines = s.split(EOL); + lines = lines.map(line => { + return line.replace(/\t/g, ' '); + }); + return lines.join(EOL); +} diff --git a/src/utils/writeClientCore.ts b/src/utils/writeClientCore.ts index 557956af..b2545603 100644 --- a/src/utils/writeClientCore.ts +++ b/src/utils/writeClientCore.ts @@ -3,6 +3,7 @@ import { resolve } from 'path'; import type { Client } from '../client/interfaces/Client'; import { HttpClient } from '../HttpClient'; import { copyFile, exists, writeFile } from './fileSystem'; +import { indent } from './indent'; import { Templates } from './registerHandlebarTemplates'; /** @@ -26,12 +27,12 @@ export async function writeClientCore( version: client.version, }; - await writeFile(resolve(outputPath, 'OpenAPI.ts'), templates.core.settings(context)); - await writeFile(resolve(outputPath, 'ApiError.ts'), templates.core.apiError({})); - await writeFile(resolve(outputPath, 'ApiRequestOptions.ts'), templates.core.apiRequestOptions({})); - await writeFile(resolve(outputPath, 'ApiResult.ts'), templates.core.apiResult({})); - await writeFile(resolve(outputPath, 'CancelablePromise.ts'), templates.core.cancelablePromise({})); - await writeFile(resolve(outputPath, 'request.ts'), templates.core.request(context)); + await writeFile(resolve(outputPath, 'OpenAPI.ts'), indent(templates.core.settings(context))); + await writeFile(resolve(outputPath, 'ApiError.ts'), indent(templates.core.apiError({}))); + await writeFile(resolve(outputPath, 'ApiRequestOptions.ts'), indent(templates.core.apiRequestOptions({}))); + await writeFile(resolve(outputPath, 'ApiResult.ts'), indent(templates.core.apiResult({}))); + await writeFile(resolve(outputPath, 'CancelablePromise.ts'), indent(templates.core.cancelablePromise({}))); + await writeFile(resolve(outputPath, 'request.ts'), indent(templates.core.request(context))); if (request) { const requestFile = resolve(process.cwd(), request); diff --git a/src/utils/writeClientModels.ts b/src/utils/writeClientModels.ts index 2a2b087d..ba8538e4 100644 --- a/src/utils/writeClientModels.ts +++ b/src/utils/writeClientModels.ts @@ -4,6 +4,7 @@ import type { Model } from '../client/interfaces/Model'; import { HttpClient } from '../HttpClient'; import { writeFile } from './fileSystem'; import { format } from './format'; +import { indent } from './indent'; import { Templates } from './registerHandlebarTemplates'; /** @@ -28,6 +29,6 @@ export async function writeClientModels( httpClient, useUnionTypes, }); - await writeFile(file, format(templateResult)); + await writeFile(file, indent(format(templateResult))); } } diff --git a/src/utils/writeClientSchemas.ts b/src/utils/writeClientSchemas.ts index f307b01a..68a551ed 100644 --- a/src/utils/writeClientSchemas.ts +++ b/src/utils/writeClientSchemas.ts @@ -4,6 +4,7 @@ import type { Model } from '../client/interfaces/Model'; import { HttpClient } from '../HttpClient'; import { writeFile } from './fileSystem'; import { format } from './format'; +import { indent } from './indent'; import { Templates } from './registerHandlebarTemplates'; /** @@ -28,6 +29,6 @@ export async function writeClientSchemas( httpClient, useUnionTypes, }); - await writeFile(file, format(templateResult)); + await writeFile(file, indent(format(templateResult))); } } diff --git a/src/utils/writeClientServices.ts b/src/utils/writeClientServices.ts index 731ed532..91124ecb 100644 --- a/src/utils/writeClientServices.ts +++ b/src/utils/writeClientServices.ts @@ -4,6 +4,7 @@ import type { Service } from '../client/interfaces/Service'; import { HttpClient } from '../HttpClient'; import { writeFile } from './fileSystem'; import { format } from './format'; +import { indent } from './indent'; import { Templates } from './registerHandlebarTemplates'; const VERSION_TEMPLATE_STRING = 'OpenAPI.VERSION'; @@ -38,6 +39,6 @@ export async function writeClientServices( useOptions, postfix, }); - await writeFile(file, format(templateResult)); + await writeFile(file, indent(format(templateResult))); } }