From bd02072098fd5cec04cf103c7d9ff569c6de688f Mon Sep 17 00:00:00 2001 From: mkefd Date: Sun, 23 Apr 2023 02:09:57 +0200 Subject: [PATCH 01/20] mappersmith --- package.json | 3 ++- src/HttpClient.ts | 1 + src/templates/core/mappersmith/request.hbs | 29 ++++++++++++++++++++++ src/templates/core/request.hbs | 1 + src/templates/exportService.hbs | 24 ++++++++++++++++++ src/utils/registerHandlebarTemplates.ts | 4 +++ src/utils/writeClient.ts | 7 +++--- src/utils/writeClientCore.ts | 5 ++-- src/utils/writeClientIndex.ts | 7 ++++-- src/utils/writeClientServices.ts | 5 ++-- 10 files changed, 76 insertions(+), 10 deletions(-) create mode 100644 src/templates/core/mappersmith/request.hbs diff --git a/package.json b/package.json index 17abcdec0..73d937a30 100644 --- a/package.json +++ b/package.json @@ -108,6 +108,7 @@ "glob": "10.2.1", "jest": "29.5.0", "jest-cli": "29.5.0", + "mappersmith": "^2.38.1", "node-fetch": "2.6.9", "prettier": "2.8.7", "puppeteer": "19.10.1", @@ -121,7 +122,7 @@ "typescript": "4.9.5", "zone.js": "0.13.0" }, - "overrides" : { + "overrides": { "node-fetch": "2.6.9", "rollup": "3.20.2", "typescript": "4.9.5" diff --git a/src/HttpClient.ts b/src/HttpClient.ts index 40c77c7c9..1408dc71e 100644 --- a/src/HttpClient.ts +++ b/src/HttpClient.ts @@ -4,4 +4,5 @@ export enum HttpClient { NODE = 'node', AXIOS = 'axios', ANGULAR = 'angular', + MAPPERSMITH = 'mappersmith', } diff --git a/src/templates/core/mappersmith/request.hbs b/src/templates/core/mappersmith/request.hbs new file mode 100644 index 000000000..eb254a2bf --- /dev/null +++ b/src/templates/core/mappersmith/request.hbs @@ -0,0 +1,29 @@ +import forge, { Client } from 'mappersmith'; + +export type {{{clientName}}}Resource = { +{{#each services}} + {{name}}: { + {{#each operations}} + {{name}}: { + method: string; + path: string; + }; + {{/each}} + }; +{{/each}} +}; + +export const {{{camelCase clientName}}}MappersmithClientFactory = (host: string): Client<{{{clientName}}}Resource> => + forge({ + clientId: '{{clientName}}', + host, + resources: { + {{#each services}} + {{name}}: { + {{#each operations}} + {{name}}: { method: '{{method}}', path: '{{path}}' }, + {{/each}} + }, + {{/each}} + }, + }); diff --git a/src/templates/core/request.hbs b/src/templates/core/request.hbs index c4e2478dd..6d4c2e22d 100644 --- a/src/templates/core/request.hbs +++ b/src/templates/core/request.hbs @@ -3,3 +3,4 @@ {{~#equals @root.httpClient 'axios'}}{{>axios/request}}{{/equals~}} {{~#equals @root.httpClient 'angular'}}{{>angular/request}}{{/equals~}} {{~#equals @root.httpClient 'node'}}{{>node/request}}{{/equals~}} +{{~#equals @root.httpClient 'mappersmith'}}{{>mappersmith/request}}{{/equals~}} diff --git a/src/templates/exportService.hbs b/src/templates/exportService.hbs index d6bccbbeb..184f69811 100644 --- a/src/templates/exportService.hbs +++ b/src/templates/exportService.hbs @@ -17,6 +17,10 @@ import type { {{{this}}} } from '../models/{{{this}}}'; {{/each}} {{/if}} +{{#equals @root.httpClient 'mappersmith'}} +import { Client } from 'mappersmith' +import type { {{{clientName}}}Resource } from '../core/request'; +{{else}} {{#notEquals @root.httpClient 'angular'}} import type { CancelablePromise } from '../core/CancelablePromise'; {{/notEquals}} @@ -30,6 +34,7 @@ import type { BaseHttpRequest } from '../core/BaseHttpRequest'; import { OpenAPI } from '../core/OpenAPI'; import { request as __request } from '../core/request'; {{/if}} +{{/equals}} {{#equals @root.httpClient 'angular'}} @Injectable({ @@ -37,6 +42,13 @@ import { request as __request } from '../core/request'; }) {{/equals}} export class {{{name}}}{{{@root.postfix}}} { + {{#equals @root.httpClient 'mappersmith'}} + private mappersmithClient: Client<{{{clientName}}}Resource> + + constructor(mappersmithClient: Client<{{{clientName}}}Resource>) { + this.mappersmithClient = mappersmithClient + } + {{else}} {{#if @root.exportClient}} constructor(public readonly httpRequest: BaseHttpRequest) {} @@ -46,6 +58,7 @@ export class {{{name}}}{{{@root.postfix}}} { constructor(public readonly http: HttpClient) {} {{/equals}} {{/if}} + {{/equals}} {{#each operations}} /** @@ -70,6 +83,16 @@ export class {{{name}}}{{{@root.postfix}}} { {{/each}} * @throws ApiError */ + {{#equals @root.httpClient 'mappersmith'}} + public async {{{name}}}({{>parameters}}): Promise<{{>result}}> { + return (await this.mappersmithClient.{{{../name}}}.{{{name}}}( + {{#if parametersPath}} + { {{#each parametersPath}}"{{prop}}": {{name}},{{/each}} } + {{/if}} + {{#if parametersBody}}{{#if parametersPath}},{{/if}}{{parametersBody.name}}{{/if}} + )).data() + } + {{else}} {{#if @root.exportClient}} {{#equals @root.httpClient 'angular'}} public {{{name}}}({{>parameters}}): Observable<{{>result}}> { @@ -148,5 +171,6 @@ export class {{{name}}}{{{@root.postfix}}} { }); } + {{/equals}} {{/each}} } diff --git a/src/utils/registerHandlebarTemplates.ts b/src/utils/registerHandlebarTemplates.ts index bf77cbdc1..88daaa61a 100644 --- a/src/utils/registerHandlebarTemplates.ts +++ b/src/utils/registerHandlebarTemplates.ts @@ -38,6 +38,7 @@ import functionIsStringWithValue from '../templates/core/functions/isStringWithV import functionIsSuccess from '../templates/core/functions/isSuccess.hbs'; import functionResolve from '../templates/core/functions/resolve.hbs'; import templateCoreHttpRequest from '../templates/core/HttpRequest.hbs'; +import mappersmithRequest from '../templates/core/mappersmith/request.hbs'; import nodeGetHeaders from '../templates/core/node/getHeaders.hbs'; import nodeGetRequestBody from '../templates/core/node/getRequestBody.hbs'; import nodeGetResponseBody from '../templates/core/node/getResponseBody.hbs'; @@ -220,5 +221,8 @@ export const registerHandlebarTemplates = (root: { Handlebars.registerPartial('angular/sendRequest', Handlebars.template(angularSendRequest)); Handlebars.registerPartial('angular/request', Handlebars.template(angularRequest)); + // Specific files for the mappersmith client implementation + Handlebars.registerPartial('mappersmith/request', Handlebars.template(mappersmithRequest)); + return templates; }; diff --git a/src/utils/writeClient.ts b/src/utils/writeClient.ts index cea2f3d88..4c7d20033 100644 --- a/src/utils/writeClient.ts +++ b/src/utils/writeClient.ts @@ -1,7 +1,7 @@ import { resolve } from 'path'; import type { Client } from '../client/interfaces/Client'; -import type { HttpClient } from '../HttpClient'; +import { HttpClient } from '../HttpClient'; import type { Indent } from '../Indent'; import { mkdir, rmdir } from './fileSystem'; import { isDefined } from './isDefined'; @@ -94,7 +94,7 @@ export const writeClient = async ( await writeClientModels(client.models, templates, outputPathModels, httpClient, useUnionTypes, indent); } - if (isDefined(clientName)) { + if (isDefined(clientName) && httpClient !== HttpClient.MAPPERSMITH) { await mkdir(outputPath); await writeClientClass(client, templates, outputPath, httpClient, clientName, indent, postfixServices); } @@ -112,7 +112,8 @@ export const writeClient = async ( exportSchemas, postfixServices, postfixModels, - clientName + clientName, + httpClient ); } }; diff --git a/src/utils/writeClientCore.ts b/src/utils/writeClientCore.ts index 6d35849d2..e5a654a20 100644 --- a/src/utils/writeClientCore.ts +++ b/src/utils/writeClientCore.ts @@ -1,7 +1,7 @@ import { resolve } from 'path'; import type { Client } from '../client/interfaces/Client'; -import type { HttpClient } from '../HttpClient'; +import { HttpClient } from '../HttpClient'; import type { Indent } from '../Indent'; import { copyFile, exists, writeFile } from './fileSystem'; import { formatIndentation as i } from './formatIndentation'; @@ -35,6 +35,7 @@ export const writeClientCore = async ( httpRequest, server: client.server, version: client.version, + services: client.services, }; await writeFile(resolve(outputPath, 'OpenAPI.ts'), i(templates.core.settings(context), indent)); @@ -44,7 +45,7 @@ export const writeClientCore = async ( await writeFile(resolve(outputPath, 'CancelablePromise.ts'), i(templates.core.cancelablePromise(context), indent)); await writeFile(resolve(outputPath, 'request.ts'), i(templates.core.request(context), indent)); - if (isDefined(clientName)) { + if (isDefined(clientName) && httpClient !== HttpClient.MAPPERSMITH) { await writeFile(resolve(outputPath, 'BaseHttpRequest.ts'), i(templates.core.baseHttpRequest(context), indent)); await writeFile(resolve(outputPath, `${httpRequest}.ts`), i(templates.core.httpRequest(context), indent)); } diff --git a/src/utils/writeClientIndex.ts b/src/utils/writeClientIndex.ts index 5044294d5..f8848b5d2 100644 --- a/src/utils/writeClientIndex.ts +++ b/src/utils/writeClientIndex.ts @@ -6,6 +6,7 @@ import { isDefined } from './isDefined'; import { Templates } from './registerHandlebarTemplates'; import { sortModelsByName } from './sortModelsByName'; import { sortServicesByName } from './sortServicesByName'; +import {HttpClient} from '../HttpClient' /** * Generate the OpenAPI client index file using the Handlebar template and write it to disk. @@ -22,6 +23,7 @@ import { sortServicesByName } from './sortServicesByName'; * @param postfixServices Service name postfix * @param postfixModels Model name postfix * @param clientName Custom client class name + * @param httpClient The selected httpClient (fetch, xhr, node, axios or mappersmith) */ export const writeClientIndex = async ( client: Client, @@ -34,7 +36,8 @@ export const writeClientIndex = async ( exportSchemas: boolean, postfixServices: string, postfixModels: string, - clientName?: string + clientName?: string, + httpClient?: string ): Promise => { const templateResult = templates.index({ exportCore, @@ -49,7 +52,7 @@ export const writeClientIndex = async ( version: client.version, models: sortModelsByName(client.models), services: sortServicesByName(client.services), - exportClient: isDefined(clientName), + exportClient: isDefined(clientName) && httpClient !== HttpClient.MAPPERSMITH, }); await writeFile(resolve(outputPath, 'index.ts'), templateResult); diff --git a/src/utils/writeClientServices.ts b/src/utils/writeClientServices.ts index 2f95341d2..97e36234c 100644 --- a/src/utils/writeClientServices.ts +++ b/src/utils/writeClientServices.ts @@ -1,7 +1,7 @@ import { resolve } from 'path'; import type { Service } from '../client/interfaces/Service'; -import type { HttpClient } from '../HttpClient'; +import { HttpClient } from '../HttpClient'; import type { Indent } from '../Indent'; import { writeFile } from './fileSystem'; import { formatCode as f } from './formatCode'; @@ -40,7 +40,8 @@ export const writeClientServices = async ( useUnionTypes, useOptions, postfix, - exportClient: isDefined(clientName), + exportClient: isDefined(clientName) && httpClient !== HttpClient.MAPPERSMITH, + clientName, }); await writeFile(file, i(f(templateResult), indent)); } From e4175bdd97e50b80b11840be32c0bec979f62abb Mon Sep 17 00:00:00 2001 From: mkefd Date: Sun, 23 Apr 2023 11:25:52 +0200 Subject: [PATCH 02/20] mappersmith --- src/templates/core/mappersmith/request.hbs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/templates/core/mappersmith/request.hbs b/src/templates/core/mappersmith/request.hbs index eb254a2bf..8e7ac1cc2 100644 --- a/src/templates/core/mappersmith/request.hbs +++ b/src/templates/core/mappersmith/request.hbs @@ -5,8 +5,8 @@ export type {{{clientName}}}Resource = { {{name}}: { {{#each operations}} {{name}}: { - method: string; - path: string; + method: '{{method}}'; + path: '{{path}}'; }; {{/each}} }; From 29a0f42c1dc6c90201c7c6522cde0f20bde2a306 Mon Sep 17 00:00:00 2001 From: mkefd Date: Sun, 23 Apr 2023 11:44:34 +0200 Subject: [PATCH 03/20] mappersmith --- bin/index.js | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/bin/index.js b/bin/index.js index 32f2fecbc..57f97cb5f 100755 --- a/bin/index.js +++ b/bin/index.js @@ -27,6 +27,11 @@ const params = program .parse(process.argv) .opts(); +if (params.client === 'mappersmith' && params.name === undefined) { + console.error('Error: --name option is required for mappersmith client'); + process.exit(1); +} + const OpenAPI = require(path.resolve(__dirname, '../dist/index.js')); if (OpenAPI) { From fb613bdc185688b14b61ba8a58abee24ddcf53bb Mon Sep 17 00:00:00 2001 From: mkefd Date: Sun, 23 Apr 2023 13:01:01 +0200 Subject: [PATCH 04/20] mappersmith --- src/templates/exportService.hbs | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/src/templates/exportService.hbs b/src/templates/exportService.hbs index 184f69811..f53817899 100644 --- a/src/templates/exportService.hbs +++ b/src/templates/exportService.hbs @@ -86,10 +86,20 @@ export class {{{name}}}{{{@root.postfix}}} { {{#equals @root.httpClient 'mappersmith'}} public async {{{name}}}({{>parameters}}): Promise<{{>result}}> { return (await this.mappersmithClient.{{{../name}}}.{{{name}}}( - {{#if parametersPath}} - { {{#each parametersPath}}"{{prop}}": {{name}},{{/each}} } - {{/if}} - {{#if parametersBody}}{{#if parametersPath}},{{/if}}{{parametersBody.name}}{{/if}} + {{#if parameters}} { {{/if}} + {{#if parametersPath}}{{#each parametersPath}}"{{prop}}": {{name}},{{/each}}{{/if}} + {{#each parametersQuery}} + '{{{prop}}}': {{{name}}}, + {{/each}} + {{#if parametersBody}}body: {{parametersBody.name}}{{/if}} + {{#if parametersHeader}} + headers: { + {{#each parametersHeader}} + '{{{prop}}}': {{{name}}}, + {{/each}} + }, + {{/if}} + {{#if parameters}} } {{/if}} )).data() } {{else}} From 4b80947fc43a0a281f95a9c061edacaf5f39bdec Mon Sep 17 00:00:00 2001 From: mkefd Date: Sun, 23 Apr 2023 13:22:21 +0200 Subject: [PATCH 05/20] mappersmith --- src/templates/exportService.hbs | 56 ++++++++++++++++++++++++++------- 1 file changed, 44 insertions(+), 12 deletions(-) diff --git a/src/templates/exportService.hbs b/src/templates/exportService.hbs index f53817899..61317422e 100644 --- a/src/templates/exportService.hbs +++ b/src/templates/exportService.hbs @@ -87,18 +87,50 @@ export class {{{name}}}{{{@root.postfix}}} { public async {{{name}}}({{>parameters}}): Promise<{{>result}}> { return (await this.mappersmithClient.{{{../name}}}.{{{name}}}( {{#if parameters}} { {{/if}} - {{#if parametersPath}}{{#each parametersPath}}"{{prop}}": {{name}},{{/each}}{{/if}} - {{#each parametersQuery}} - '{{{prop}}}': {{{name}}}, - {{/each}} - {{#if parametersBody}}body: {{parametersBody.name}}{{/if}} - {{#if parametersHeader}} - headers: { - {{#each parametersHeader}} - '{{{prop}}}': {{{name}}}, - {{/each}} - }, - {{/if}} + + {{#if parametersPath}} + {{#each parametersPath}} + '{{{prop}}}': {{{name}}}, + {{/each}} + {{/if}} +{{!-- {{#if parametersCookie}} --}} +{{!-- cookies: {--}} +{{!-- {{#each parametersCookie}}--}} +{{!-- '{{{prop}}}': {{{name}}},--}} +{{!-- {{/each}}--}} +{{!-- },--}} +{{!-- {{/if}}--}} + {{#if parametersHeader}} + headers: { + {{#each parametersHeader}} + '{{{prop}}}': {{{name}}}, + {{/each}} + }, + {{/if}} + {{#if parametersQuery}} + {{#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 parameters}} } {{/if}} )).data() } From 95b3e70b15a2be4cd967b38e2c75fad0bf83dcb3 Mon Sep 17 00:00:00 2001 From: mkefd Date: Sun, 23 Apr 2023 13:30:16 +0200 Subject: [PATCH 06/20] mappersmith --- src/templates/partials/base.hbs | 1 + 1 file changed, 1 insertion(+) diff --git a/src/templates/partials/base.hbs b/src/templates/partials/base.hbs index 1799e7d2a..35294958d 100644 --- a/src/templates/partials/base.hbs +++ b/src/templates/partials/base.hbs @@ -4,6 +4,7 @@ {{~#equals @root.httpClient 'axios'}}Blob{{/equals~}} {{~#equals @root.httpClient 'angular'}}Blob{{/equals~}} {{~#equals @root.httpClient 'node'}}Blob{{/equals~}} +{{~#equals @root.httpClient 'mappersmith'}}Blob{{/equals~}} {{~else~}} {{{base}}} {{~/equals~}} From 71184010968e5e42c10d4488e5a74edaa4bac59c Mon Sep 17 00:00:00 2001 From: mkefd Date: Sun, 23 Apr 2023 18:51:05 +0200 Subject: [PATCH 07/20] mappersmith --- src/templates/core/mappersmith/request.hbs | 39 ++++++++++++++++------ 1 file changed, 29 insertions(+), 10 deletions(-) diff --git a/src/templates/core/mappersmith/request.hbs b/src/templates/core/mappersmith/request.hbs index 8e7ac1cc2..eb3c48a83 100644 --- a/src/templates/core/mappersmith/request.hbs +++ b/src/templates/core/mappersmith/request.hbs @@ -1,19 +1,38 @@ -import forge, { Client } from 'mappersmith'; +import forge, { Response } from 'mappersmith'; +{{!--import forge, { Client, Response } from 'mappersmith';--}} +{{#each services}} +{{#if imports}} + {{#each imports}} + import type { {{{this}}} } from '../models/{{{this}}}'; + {{/each}} +{{/if}} +{{/each}} +{{!----}} +{{!--export type {{{clientName}}}Resource = {--}} +{{!--{{#each services}}--}} +{{!-- {{name}}: {--}} +{{!-- {{#each operations}}--}} +{{!-- {{name}}: {--}} +{{!-- method: '{{method}}';--}} +{{!-- path: '{{path}}';--}} +{{!-- };--}} +{{!-- {{/each}}--}} +{{!-- };--}} +{{!--{{/each}}--}} +{{!--};--}} -export type {{{clientName}}}Resource = { +export type {{{clientName}}}Client = { {{#each services}} {{name}}: { {{#each operations}} - {{name}}: { - method: '{{method}}'; - path: '{{path}}'; - }; + {{name}}: (params: { {{>parameters}} }) => Promiseresult}}>>, {{/each}} - }; + }, {{/each}} }; -export const {{{camelCase clientName}}}MappersmithClientFactory = (host: string): Client<{{{clientName}}}Resource> => +{{!--export const {{{camelCase clientName}}}MappersmithClientFactory = (host: string): Client<{{{clientName}}}Resource> =>--}} +export const {{{camelCase clientName}}}MappersmithClientFactory = (host: string) => forge({ clientId: '{{clientName}}', host, @@ -21,9 +40,9 @@ export const {{{camelCase clientName}}}MappersmithClientFactory = (host: string) {{#each services}} {{name}}: { {{#each operations}} - {{name}}: { method: '{{method}}', path: '{{path}}' }, + {{name}}: { method: '{{method}}', path: '{{path}}', bodyAttr: 'requestBody' }, {{/each}} }, {{/each}} }, - }); + }) as {{{clientName}}}Client; From 8e3647824323e0f1ea359d0ded3a2f3b4c6cafa2 Mon Sep 17 00:00:00 2001 From: mkefd Date: Sun, 23 Apr 2023 22:48:48 +0200 Subject: [PATCH 08/20] mappersmith --- src/templates/core/mappersmith/request.hbs | 2 +- src/templates/partials/parameters2.hbs | 8 ++++++++ src/utils/registerHandlebarTemplates.ts | 2 ++ 3 files changed, 11 insertions(+), 1 deletion(-) create mode 100644 src/templates/partials/parameters2.hbs diff --git a/src/templates/core/mappersmith/request.hbs b/src/templates/core/mappersmith/request.hbs index eb3c48a83..6609f597f 100644 --- a/src/templates/core/mappersmith/request.hbs +++ b/src/templates/core/mappersmith/request.hbs @@ -25,7 +25,7 @@ export type {{{clientName}}}Client = { {{#each services}} {{name}}: { {{#each operations}} - {{name}}: (params: { {{>parameters}} }) => Promiseresult}}>>, + {{name}}: (params: {{>parameters2}}) => Promiseresult}}>>, {{/each}} }, {{/each}} diff --git a/src/templates/partials/parameters2.hbs b/src/templates/partials/parameters2.hbs new file mode 100644 index 000000000..8ef7f1e6a --- /dev/null +++ b/src/templates/partials/parameters2.hbs @@ -0,0 +1,8 @@ +{{#if parameters}} { +{{#each parameters}} +{{{name}}}{{>isRequired}}: {{>type}}, +{{/each}} } {{else}} {} {{/if}} +{{!--= { {{#each parameters}}--}} +{{!--{{#if default}}{{{name}}}: {{{default}}},{{/if}}--}} +{{!--{{/each}} } --}} + diff --git a/src/utils/registerHandlebarTemplates.ts b/src/utils/registerHandlebarTemplates.ts index 88daaa61a..b4559ff29 100644 --- a/src/utils/registerHandlebarTemplates.ts +++ b/src/utils/registerHandlebarTemplates.ts @@ -67,6 +67,7 @@ import partialIsNullable from '../templates/partials/isNullable.hbs'; import partialIsReadOnly from '../templates/partials/isReadOnly.hbs'; import partialIsRequired from '../templates/partials/isRequired.hbs'; import partialParameters from '../templates/partials/parameters.hbs'; +import partialParameters2 from '../templates/partials/parameters2.hbs'; import partialResult from '../templates/partials/result.hbs'; import partialSchema from '../templates/partials/schema.hbs'; import partialSchemaArray from '../templates/partials/schemaArray.hbs'; @@ -148,6 +149,7 @@ export const registerHandlebarTemplates = (root: { Handlebars.registerPartial('isReadOnly', Handlebars.template(partialIsReadOnly)); Handlebars.registerPartial('isRequired', Handlebars.template(partialIsRequired)); Handlebars.registerPartial('parameters', Handlebars.template(partialParameters)); + Handlebars.registerPartial('parameters2', Handlebars.template(partialParameters2)); Handlebars.registerPartial('result', Handlebars.template(partialResult)); Handlebars.registerPartial('schema', Handlebars.template(partialSchema)); Handlebars.registerPartial('schemaArray', Handlebars.template(partialSchemaArray)); From 99fcb22063e0e82b9f7eae5d900474b79abfa0b1 Mon Sep 17 00:00:00 2001 From: mkefd Date: Sun, 23 Apr 2023 23:21:09 +0200 Subject: [PATCH 09/20] mappersmith: v3 hasDefault --- .../interfaces/OperationParameters.d.ts | 1 + src/openApi/v2/parser/getOperation.ts | 1 + src/openApi/v3/parser/getOperation.ts | 2 ++ .../v3/parser/getOperationParameters.ts | 4 +++ src/templates/partials/parameters2.hbs | 25 +++++++++++++------ 5 files changed, 26 insertions(+), 7 deletions(-) diff --git a/src/client/interfaces/OperationParameters.d.ts b/src/client/interfaces/OperationParameters.d.ts index 43419438c..bbb067c0c 100644 --- a/src/client/interfaces/OperationParameters.d.ts +++ b/src/client/interfaces/OperationParameters.d.ts @@ -9,4 +9,5 @@ export interface OperationParameters { parametersCookie: OperationParameter[]; parametersHeader: OperationParameter[]; parametersBody: OperationParameter | null; + hasDefault: boolean; } diff --git a/src/openApi/v2/parser/getOperation.ts b/src/openApi/v2/parser/getOperation.ts index 9aa157460..4c43f4499 100644 --- a/src/openApi/v2/parser/getOperation.ts +++ b/src/openApi/v2/parser/getOperation.ts @@ -42,6 +42,7 @@ export const getOperation = ( errors: [], results: [], responseHeader: null, + hasDefault: false }; // Parse the operation parameters (path, query, body, etc). diff --git a/src/openApi/v3/parser/getOperation.ts b/src/openApi/v3/parser/getOperation.ts index aee4bd0c2..fcd19ee7d 100644 --- a/src/openApi/v3/parser/getOperation.ts +++ b/src/openApi/v3/parser/getOperation.ts @@ -45,6 +45,7 @@ export const getOperation = ( errors: [], results: [], responseHeader: null, + hasDefault: false }; // Parse the operation parameters (path, query, body, etc). @@ -58,6 +59,7 @@ export const getOperation = ( operation.parametersHeader.push(...parameters.parametersHeader); operation.parametersCookie.push(...parameters.parametersCookie); operation.parametersBody = parameters.parametersBody; + operation.hasDefault = parameters.hasDefault } if (op.requestBody) { diff --git a/src/openApi/v3/parser/getOperationParameters.ts b/src/openApi/v3/parser/getOperationParameters.ts index 051b4a0a9..8ccf98453 100644 --- a/src/openApi/v3/parser/getOperationParameters.ts +++ b/src/openApi/v3/parser/getOperationParameters.ts @@ -14,6 +14,7 @@ export const getOperationParameters = (openApi: OpenApi, parameters: OpenApiPara parametersCookie: [], parametersHeader: [], parametersBody: null, // Not used in V3 -> @see requestBody + hasDefault: false }; // Iterate over the parameters @@ -21,6 +22,9 @@ export const getOperationParameters = (openApi: OpenApi, parameters: OpenApiPara const parameterDef = getRef(openApi, parameterOrReference); const parameter = getOperationParameter(openApi, parameterDef); + // At least one parameter has default value + operationParameters.hasDefault ||= parameter.default !== undefined; + // We ignore the "api-version" param, since we do not want to add this // as the first / default parameter for each of the service calls. if (parameter.prop !== 'api-version') { diff --git a/src/templates/partials/parameters2.hbs b/src/templates/partials/parameters2.hbs index 8ef7f1e6a..1fc0e2110 100644 --- a/src/templates/partials/parameters2.hbs +++ b/src/templates/partials/parameters2.hbs @@ -1,8 +1,19 @@ -{{#if parameters}} { -{{#each parameters}} -{{{name}}}{{>isRequired}}: {{>type}}, -{{/each}} } {{else}} {} {{/if}} -{{!--= { {{#each parameters}}--}} -{{!--{{#if default}}{{{name}}}: {{{default}}},{{/if}}--}} -{{!--{{/each}} } --}} +{{#if parameters}} + { + {{#each parameters}} + {{{name}}}{{>isRequired}}: {{>type}}, + {{/each}} + } + {{#if hasDefault}} + = { + {{#each parameters}} + {{#if default}} + {{{name}}}: {{{default}}}, + {{/if}} + {{/each}} + } + {{/if}} +{{else}} + {} +{{/if}} From e611b766898a53c9a94618ab766d232c72e4623d Mon Sep 17 00:00:00 2001 From: mkefd Date: Sun, 23 Apr 2023 23:29:17 +0200 Subject: [PATCH 10/20] mappersmith --- bin/index.js | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/bin/index.js b/bin/index.js index 57f97cb5f..d3a96d7df 100755 --- a/bin/index.js +++ b/bin/index.js @@ -28,10 +28,15 @@ const params = program .opts(); if (params.client === 'mappersmith' && params.name === undefined) { - console.error('Error: --name option is required for mappersmith client'); + console.error('ERROR: --name option is required for mappersmith client'); process.exit(1); } +if (params.client === 'mappersmith') { + console.log('INFO: --exportServices is forced to be false mappersmith client'); + params.exportServices = false; +} + const OpenAPI = require(path.resolve(__dirname, '../dist/index.js')); if (OpenAPI) { From 9a15aee5ad61d0e619b44a9a8d557e8be85c34a9 Mon Sep 17 00:00:00 2001 From: mkefd Date: Sun, 23 Apr 2023 23:30:07 +0200 Subject: [PATCH 11/20] mappersmith: v2 hasDefault --- src/openApi/v2/parser/getOperationParameters.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/openApi/v2/parser/getOperationParameters.ts b/src/openApi/v2/parser/getOperationParameters.ts index f265d1ccc..f3c8cf028 100644 --- a/src/openApi/v2/parser/getOperationParameters.ts +++ b/src/openApi/v2/parser/getOperationParameters.ts @@ -14,6 +14,7 @@ export const getOperationParameters = (openApi: OpenApi, parameters: OpenApiPara parametersCookie: [], parametersHeader: [], parametersBody: null, + hasDefault: false }; // Iterate over the parameters From 09c357b77aff4fc762430c836473fd82f10e8b6a Mon Sep 17 00:00:00 2001 From: mkefd Date: Sun, 23 Apr 2023 23:39:09 +0200 Subject: [PATCH 12/20] mappersmith --- src/templates/core/mappersmith/request.hbs | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/templates/core/mappersmith/request.hbs b/src/templates/core/mappersmith/request.hbs index 6609f597f..75fc9d9e8 100644 --- a/src/templates/core/mappersmith/request.hbs +++ b/src/templates/core/mappersmith/request.hbs @@ -1,4 +1,4 @@ -import forge, { Response } from 'mappersmith'; +import forge, { Middleware, Response } from 'mappersmith'; {{!--import forge, { Client, Response } from 'mappersmith';--}} {{#each services}} {{#if imports}} @@ -32,10 +32,11 @@ export type {{{clientName}}}Client = { }; {{!--export const {{{camelCase clientName}}}MappersmithClientFactory = (host: string): Client<{{{clientName}}}Resource> =>--}} -export const {{{camelCase clientName}}}MappersmithClientFactory = (host: string) => +export const {{{camelCase clientName}}}MappersmithClientFactory = (host: string, middleware?: Middleware[]) => forge({ clientId: '{{clientName}}', host, + middleware, resources: { {{#each services}} {{name}}: { From 2aad9c9acb7848f2be451be2d6cd2544a9ae17cf Mon Sep 17 00:00:00 2001 From: mkefd Date: Sun, 23 Apr 2023 23:49:53 +0200 Subject: [PATCH 13/20] mappersmith --- src/templates/core/mappersmith/request.hbs | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/templates/core/mappersmith/request.hbs b/src/templates/core/mappersmith/request.hbs index 75fc9d9e8..367478ebe 100644 --- a/src/templates/core/mappersmith/request.hbs +++ b/src/templates/core/mappersmith/request.hbs @@ -32,7 +32,13 @@ export type {{{clientName}}}Client = { }; {{!--export const {{{camelCase clientName}}}MappersmithClientFactory = (host: string): Client<{{{clientName}}}Resource> =>--}} -export const {{{camelCase clientName}}}MappersmithClientFactory = (host: string, middleware?: Middleware[]) => +export const {{{camelCase clientName}}}MappersmithClientFactory = ({ + host, + middleware +}: { + host: string, + middleware?: Middleware[] +}) => forge({ clientId: '{{clientName}}', host, From 540df885e7a116ad89bd9ea409fc60eadc468d43 Mon Sep 17 00:00:00 2001 From: mkefd Date: Mon, 24 Apr 2023 00:06:29 +0200 Subject: [PATCH 14/20] mappersmith: hasDefault --- src/templates/core/mappersmith/request.hbs | 10 ++++++++-- src/templates/partials/parameters2.hbs | 13 +------------ 2 files changed, 9 insertions(+), 14 deletions(-) diff --git a/src/templates/core/mappersmith/request.hbs b/src/templates/core/mappersmith/request.hbs index 367478ebe..873dca29a 100644 --- a/src/templates/core/mappersmith/request.hbs +++ b/src/templates/core/mappersmith/request.hbs @@ -25,7 +25,7 @@ export type {{{clientName}}}Client = { {{#each services}} {{name}}: { {{#each operations}} - {{name}}: (params: {{>parameters2}}) => Promiseresult}}>>, + {{name}}: ({{>parameters2}}) => Promiseresult}}>>, {{/each}} }, {{/each}} @@ -47,7 +47,13 @@ export const {{{camelCase clientName}}}MappersmithClientFactory = ({ {{#each services}} {{name}}: { {{#each operations}} - {{name}}: { method: '{{method}}', path: '{{path}}', bodyAttr: 'requestBody' }, + {{name}}: { method: '{{method}}', path: '{{path}}', bodyAttr: 'requestBody' {{#if hasDefault}}, params: { + {{#each parameters}} + {{#if default}} + {{{name}}}: {{{default}}}, + {{/if}} + {{/each}} + }{{/if}} }, {{/each}} }, {{/each}} diff --git a/src/templates/partials/parameters2.hbs b/src/templates/partials/parameters2.hbs index 1fc0e2110..725a7473d 100644 --- a/src/templates/partials/parameters2.hbs +++ b/src/templates/partials/parameters2.hbs @@ -1,19 +1,8 @@ {{#if parameters}} - { + params{{#if hasDefault}}?{{/if}}: { {{#each parameters}} {{{name}}}{{>isRequired}}: {{>type}}, {{/each}} } - {{#if hasDefault}} - = { - {{#each parameters}} - {{#if default}} - {{{name}}}: {{{default}}}, - {{/if}} - {{/each}} - } - {{/if}} -{{else}} - {} {{/if}} From d9bcf99cab399767564fa9bce331afb054454434 Mon Sep 17 00:00:00 2001 From: mkefd Date: Mon, 24 Apr 2023 00:17:48 +0200 Subject: [PATCH 15/20] mappersmith --- src/templates/core/mappersmith/request.hbs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/templates/core/mappersmith/request.hbs b/src/templates/core/mappersmith/request.hbs index 873dca29a..7c4d9e22d 100644 --- a/src/templates/core/mappersmith/request.hbs +++ b/src/templates/core/mappersmith/request.hbs @@ -41,13 +41,14 @@ export const {{{camelCase clientName}}}MappersmithClientFactory = ({ }) => forge({ clientId: '{{clientName}}', + bodyAttr: 'requestBody', host, middleware, resources: { {{#each services}} {{name}}: { {{#each operations}} - {{name}}: { method: '{{method}}', path: '{{path}}', bodyAttr: 'requestBody' {{#if hasDefault}}, params: { + {{name}}: { method: '{{method}}', path: '{{path}}'{{#if hasDefault}}, params: { {{#each parameters}} {{#if default}} {{{name}}}: {{{default}}}, From c4ec74b1b0a47b6f459c52f9d345d03bd843350d Mon Sep 17 00:00:00 2001 From: mkefd Date: Mon, 24 Apr 2023 00:26:43 +0200 Subject: [PATCH 16/20] mappersmith: hasDefault --- src/templates/partials/parameters2.hbs | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/templates/partials/parameters2.hbs b/src/templates/partials/parameters2.hbs index 725a7473d..fb85b88cf 100644 --- a/src/templates/partials/parameters2.hbs +++ b/src/templates/partials/parameters2.hbs @@ -1,4 +1,11 @@ {{#if parameters}} + {{#if hasDefault}} + {{#each parameters}} + {{#if default}} + // [params.{{{name}}}={{{default}}}] + {{/if}} + {{/each}} + {{/if}} params{{#if hasDefault}}?{{/if}}: { {{#each parameters}} {{{name}}}{{>isRequired}}: {{>type}}, From ec465dca71b89ff92e27960e9a0a49804c3ca50c Mon Sep 17 00:00:00 2001 From: mkefd Date: Mon, 24 Apr 2023 00:51:54 +0200 Subject: [PATCH 17/20] mappersmith jsdoc --- src/templates/core/mappersmith/request.hbs | 21 +++++++++++++++++++++ src/templates/partials/parameters2.hbs | 7 ------- 2 files changed, 21 insertions(+), 7 deletions(-) diff --git a/src/templates/core/mappersmith/request.hbs b/src/templates/core/mappersmith/request.hbs index 7c4d9e22d..65bdb4b9d 100644 --- a/src/templates/core/mappersmith/request.hbs +++ b/src/templates/core/mappersmith/request.hbs @@ -25,6 +25,27 @@ export type {{{clientName}}}Client = { {{#each services}} {{name}}: { {{#each operations}} + /** + {{#if deprecated}} + * @deprecated + {{/if}} + {{#if summary}} + * {{{escapeComment summary}}} + {{/if}} + {{#if description}} + * {{{escapeComment description}}} + {{/if}} + {{#if parameters}} + * @param {Object} {{#if hasDefault}}[{{/if}}params{{#if hasDefault}}]{{/if}} - Request parameters. + {{#each parameters}} + * @param { {{>type}} } {{#if default}}[{{/if}}params.{{{name}}}{{#if default}}={{default}}]{{/if}} {{#if description}}{{{escapeComment description}}}{{/if}} + {{/each}} + {{/if}} + {{#each results}} + * @returns {{{type}}} {{#if description}}{{{escapeComment description}}}{{/if}} + {{/each}} + * @throws ApiError + */ {{name}}: ({{>parameters2}}) => Promiseresult}}>>, {{/each}} }, diff --git a/src/templates/partials/parameters2.hbs b/src/templates/partials/parameters2.hbs index fb85b88cf..725a7473d 100644 --- a/src/templates/partials/parameters2.hbs +++ b/src/templates/partials/parameters2.hbs @@ -1,11 +1,4 @@ {{#if parameters}} - {{#if hasDefault}} - {{#each parameters}} - {{#if default}} - // [params.{{{name}}}={{{default}}}] - {{/if}} - {{/each}} - {{/if}} params{{#if hasDefault}}?{{/if}}: { {{#each parameters}} {{{name}}}{{>isRequired}}: {{>type}}, From 6a044a2fdfbd27693c968d15897828e83d9e8f1b Mon Sep 17 00:00:00 2001 From: mkefd Date: Mon, 24 Apr 2023 01:05:50 +0200 Subject: [PATCH 18/20] mappersmith jsdoc --- src/templates/core/mappersmith/request.hbs | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/templates/core/mappersmith/request.hbs b/src/templates/core/mappersmith/request.hbs index 65bdb4b9d..e885ade2f 100644 --- a/src/templates/core/mappersmith/request.hbs +++ b/src/templates/core/mappersmith/request.hbs @@ -36,15 +36,14 @@ export type {{{clientName}}}Client = { * {{{escapeComment description}}} {{/if}} {{#if parameters}} - * @param {Object} {{#if hasDefault}}[{{/if}}params{{#if hasDefault}}]{{/if}} - Request parameters. + * @param { Object } {{#if hasDefault}}[{{/if}}params{{#if hasDefault}}]{{/if}} - Request parameters. {{#each parameters}} - * @param { {{>type}} } {{#if default}}[{{/if}}params.{{{name}}}{{#if default}}={{default}}]{{/if}} {{#if description}}{{{escapeComment description}}}{{/if}} + * @param { {{>type}} } {{#unless isRequired}}[{{else if default}}[{{/unless}}params.{{{name}}}{{#if default}}={{default}}{{/if}}{{#unless isRequired}}]{{else if default}}]{{/unless}} {{#if description}}{{{escapeComment description}}}{{/if}} {{/each}} {{/if}} {{#each results}} - * @returns {{{type}}} {{#if description}}{{{escapeComment description}}}{{/if}} + * @returns { Promisetype}}>> } {{#if description}}{{{escapeComment description}}}{{/if}} {{/each}} - * @throws ApiError */ {{name}}: ({{>parameters2}}) => Promiseresult}}>>, {{/each}} From 97181f72d265a8ec423143da57b4dd6328f7dde7 Mon Sep 17 00:00:00 2001 From: mkefd Date: Mon, 24 Apr 2023 01:12:32 +0200 Subject: [PATCH 19/20] mappersmith v3 change void to null --- src/openApi/v3/parser/getMappedType.ts | 2 +- src/openApi/v3/parser/getOperationResults.ts | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/openApi/v3/parser/getMappedType.ts b/src/openApi/v3/parser/getMappedType.ts index a7c32fd84..61b8c3162 100644 --- a/src/openApi/v3/parser/getMappedType.ts +++ b/src/openApi/v3/parser/getMappedType.ts @@ -17,7 +17,7 @@ const TYPE_MAPPINGS = new Map([ ['date-time', 'string'], ['password', 'string'], ['string', 'string'], - ['void', 'void'], + ['void', 'null'], ['null', 'null'], ]); diff --git a/src/openApi/v3/parser/getOperationResults.ts b/src/openApi/v3/parser/getOperationResults.ts index 9d8111fe8..570c38161 100644 --- a/src/openApi/v3/parser/getOperationResults.ts +++ b/src/openApi/v3/parser/getOperationResults.ts @@ -27,8 +27,8 @@ export const getOperationResults = (operationResponses: OperationResponse[]): Op code: 200, description: '', export: 'generic', - type: 'void', - base: 'void', + type: 'null', + base: 'null', template: null, link: null, isDefinition: false, From 258e4deeda050953b30acab0cd3902bf54d405ec Mon Sep 17 00:00:00 2001 From: mkefd Date: Mon, 24 Apr 2023 01:51:26 +0200 Subject: [PATCH 20/20] mappersmith import --- bin/index.js | 2 +- src/templates/core/mappersmith/request.hbs | 21 ++++----------- src/templates/index.hbs | 8 ++++++ src/utils/writeClientCore.ts | 30 ++++++++++++---------- src/utils/writeClientIndex.ts | 1 + 5 files changed, 31 insertions(+), 31 deletions(-) diff --git a/bin/index.js b/bin/index.js index d3a96d7df..1f60d805a 100755 --- a/bin/index.js +++ b/bin/index.js @@ -33,7 +33,7 @@ if (params.client === 'mappersmith' && params.name === undefined) { } if (params.client === 'mappersmith') { - console.log('INFO: --exportServices is forced to be false mappersmith client'); + console.log('INFO: --exportServices option is forced to be false for mappersmith client'); params.exportServices = false; } diff --git a/src/templates/core/mappersmith/request.hbs b/src/templates/core/mappersmith/request.hbs index e885ade2f..c6a855094 100644 --- a/src/templates/core/mappersmith/request.hbs +++ b/src/templates/core/mappersmith/request.hbs @@ -1,5 +1,7 @@ +{{>header}} + + import forge, { Middleware, Response } from 'mappersmith'; -{{!--import forge, { Client, Response } from 'mappersmith';--}} {{#each services}} {{#if imports}} {{#each imports}} @@ -7,21 +9,8 @@ import forge, { Middleware, Response } from 'mappersmith'; {{/each}} {{/if}} {{/each}} -{{!----}} -{{!--export type {{{clientName}}}Resource = {--}} -{{!--{{#each services}}--}} -{{!-- {{name}}: {--}} -{{!-- {{#each operations}}--}} -{{!-- {{name}}: {--}} -{{!-- method: '{{method}}';--}} -{{!-- path: '{{path}}';--}} -{{!-- };--}} -{{!-- {{/each}}--}} -{{!-- };--}} -{{!--{{/each}}--}} -{{!--};--}} -export type {{{clientName}}}Client = { +export type {{{clientName}}}MappersmithClient = { {{#each services}} {{name}}: { {{#each operations}} @@ -79,4 +68,4 @@ export const {{{camelCase clientName}}}MappersmithClientFactory = ({ }, {{/each}} }, - }) as {{{clientName}}}Client; + }) as {{{clientName}}}MappersmithClient; diff --git a/src/templates/index.hbs b/src/templates/index.hbs index 6f5b27d8c..e86222ab1 100644 --- a/src/templates/index.hbs +++ b/src/templates/index.hbs @@ -4,6 +4,8 @@ export { {{{clientName}}} } from './{{{clientName}}}'; {{/if}} +{{#equals @root.httpClient 'mappersmith'}} +{{else}} {{#if @root.exportCore}} export { ApiError } from './core/ApiError'; {{#if @root.exportClient}} @@ -13,6 +15,7 @@ export { CancelablePromise, CancelError } from './core/CancelablePromise'; export { OpenAPI } from './core/OpenAPI'; export type { OpenAPIConfig } from './core/OpenAPI'; {{/if}} +{{/equals}} {{#if @root.exportModels}} {{#if models}} @@ -45,3 +48,8 @@ export { {{{name}}}{{{@root.postfixServices}}} } from './services/{{{name}}}{{{@ {{/each}} {{/if}} {{/if}} + +{{#equals @root.httpClient 'mappersmith'}} +export type { {{clientName}}MappersmithClient } from './core/request'; +export { {{{camelCase clientName}}}MappersmithClientFactory } from './core/request'; +{{/equals}} diff --git a/src/utils/writeClientCore.ts b/src/utils/writeClientCore.ts index e5a654a20..722728fe0 100644 --- a/src/utils/writeClientCore.ts +++ b/src/utils/writeClientCore.ts @@ -1,13 +1,13 @@ -import { resolve } from 'path'; +import {resolve} from 'path'; -import type { Client } from '../client/interfaces/Client'; -import { HttpClient } from '../HttpClient'; -import type { Indent } from '../Indent'; -import { copyFile, exists, writeFile } from './fileSystem'; -import { formatIndentation as i } from './formatIndentation'; -import { getHttpRequestName } from './getHttpRequestName'; -import { isDefined } from './isDefined'; -import type { Templates } from './registerHandlebarTemplates'; +import type {Client} from '../client/interfaces/Client'; +import {HttpClient} from '../HttpClient'; +import type {Indent} from '../Indent'; +import {copyFile, exists, writeFile} from './fileSystem'; +import {formatIndentation as i} from './formatIndentation'; +import {getHttpRequestName} from './getHttpRequestName'; +import {isDefined} from './isDefined'; +import type {Templates} from './registerHandlebarTemplates'; /** * Generate OpenAPI core files, this includes the basic boilerplate code to handle requests. @@ -38,11 +38,13 @@ export const writeClientCore = async ( services: client.services, }; - await writeFile(resolve(outputPath, 'OpenAPI.ts'), i(templates.core.settings(context), indent)); - await writeFile(resolve(outputPath, 'ApiError.ts'), i(templates.core.apiError(context), indent)); - await writeFile(resolve(outputPath, 'ApiRequestOptions.ts'), i(templates.core.apiRequestOptions(context), indent)); - await writeFile(resolve(outputPath, 'ApiResult.ts'), i(templates.core.apiResult(context), indent)); - await writeFile(resolve(outputPath, 'CancelablePromise.ts'), i(templates.core.cancelablePromise(context), indent)); + if (httpClient !== HttpClient.MAPPERSMITH) { + await writeFile(resolve(outputPath, 'OpenAPI.ts'), i(templates.core.settings(context), indent)); + await writeFile(resolve(outputPath, 'ApiError.ts'), i(templates.core.apiError(context), indent)); + await writeFile(resolve(outputPath, 'ApiRequestOptions.ts'), i(templates.core.apiRequestOptions(context), indent)); + await writeFile(resolve(outputPath, 'ApiResult.ts'), i(templates.core.apiResult(context), indent)); + await writeFile(resolve(outputPath, 'CancelablePromise.ts'), i(templates.core.cancelablePromise(context), indent)); + } await writeFile(resolve(outputPath, 'request.ts'), i(templates.core.request(context), indent)); if (isDefined(clientName) && httpClient !== HttpClient.MAPPERSMITH) { diff --git a/src/utils/writeClientIndex.ts b/src/utils/writeClientIndex.ts index f8848b5d2..1ea75e981 100644 --- a/src/utils/writeClientIndex.ts +++ b/src/utils/writeClientIndex.ts @@ -53,6 +53,7 @@ export const writeClientIndex = async ( models: sortModelsByName(client.models), services: sortServicesByName(client.services), exportClient: isDefined(clientName) && httpClient !== HttpClient.MAPPERSMITH, + httpClient, }); await writeFile(resolve(outputPath, 'index.ts'), templateResult);