diff --git a/src/code-templates/api-client/ApiClientClass/Class.ts b/src/code-templates/api-client/ApiClientClass/Class.ts index fae4ac4e..2d950482 100644 --- a/src/code-templates/api-client/ApiClientClass/Class.ts +++ b/src/code-templates/api-client/ApiClientClass/Class.ts @@ -11,7 +11,13 @@ export const create = (factory: TsGenerator.Factory.Type, members: ts.ClassEleme return factory.ClassDeclaration.create({ name: "Client", export: true, - members, + members: [ + factory.PropertyDeclaration.create({ + modifiers: [ts.factory.createModifier(ts.SyntaxKind.PrivateKeyword)], + name: "baseUrl", + type: ts.factory.createKeywordTypeNode(ts.SyntaxKind.StringKeyword), + }) + ,...members], typeParameterDeclaration: [ factory.TypeParameterDeclaration.create({ name: "RequestOption", diff --git a/src/code-templates/api-client/ApiClientClass/Constructor.ts b/src/code-templates/api-client/ApiClientClass/Constructor.ts index a49688c1..e718e787 100644 --- a/src/code-templates/api-client/ApiClientClass/Constructor.ts +++ b/src/code-templates/api-client/ApiClientClass/Constructor.ts @@ -19,16 +19,33 @@ export const create = (factory: TsGenerator.Factory.Type): ts.ConstructorDeclara }), }); const parameter2 = factory.ParameterDeclaration.create({ - modifiers: "private", name: "baseUrl", type: factory.TypeNode.create({ type: "string", }), }); + return factory.ConstructorDeclaration.create({ parameters: [parameter1, parameter2], body: factory.Block.create({ - statements: [], + statements: [ + factory.ExpressionStatement.create({ + expression: factory.BinaryExpression.create({ + left: factory.PropertyAccessExpression.create({ + expression: "this", + name: "baseUrl", + }), + operator: "=", + right: factory.CallExpression.create({ + expression: factory.PropertyAccessExpression.create({ + expression: "baseUrl", + name: "replace", + }), + argumentsArray: [factory.RegularExpressionLiteral.create({ text: "/\\/$/" }), factory.StringLiteral.create({ text: "" })], + }), + }), + }), + ], multiLine: false, }), }); diff --git a/src/code-templates/api-client/ApiClientClass/MethodBody/PathParameter.ts b/src/code-templates/api-client/ApiClientClass/MethodBody/PathParameter.ts index 6494c611..763f8879 100644 --- a/src/code-templates/api-client/ApiClientClass/MethodBody/PathParameter.ts +++ b/src/code-templates/api-client/ApiClientClass/MethodBody/PathParameter.ts @@ -21,15 +21,9 @@ const generateUrlVariableStatement = ( factory.VariableDeclaration.create({ name: "url", initializer: factory.BinaryExpression.create({ - left: factory.CallExpression.create({ - expression: factory.PropertyAccessExpression.create({ - expression: factory.PropertyAccessExpression.create({ - name: "baseUrl", - expression: "this", - }), - name: "replace", - }), - argumentsArray: [factory.RegularExpressionLiteral.create({ text: "/\\\/$/" }), factory.StringLiteral.create({ text: "" })], + left: factory.PropertyAccessExpression.create({ + name: "baseUrl", + expression: "this", }), operator: "+", right: Utils.generateTemplateExpression(factory, urlTemplate), diff --git a/src/internal/TsGenerator/factory/BinaryExpression.ts b/src/internal/TsGenerator/factory/BinaryExpression.ts index 3bb8fd59..a1613311 100644 --- a/src/internal/TsGenerator/factory/BinaryExpression.ts +++ b/src/internal/TsGenerator/factory/BinaryExpression.ts @@ -2,6 +2,7 @@ import ts from "typescript"; const operators = { "+": ts.SyntaxKind.PlusToken, + "=": ts.SyntaxKind.EqualsToken, } as const; export interface Params { diff --git a/src/internal/TsGenerator/factory/ExpressionStatement.ts b/src/internal/TsGenerator/factory/ExpressionStatement.ts new file mode 100644 index 00000000..100a2fe3 --- /dev/null +++ b/src/internal/TsGenerator/factory/ExpressionStatement.ts @@ -0,0 +1,20 @@ +import ts from "typescript"; + +export interface Params$Create { + expression: ts.Expression; +} + +export interface Factory { + create: (params: Params$Create) => ts.ExpressionStatement; +} + +export const create = ({ factory }: Pick): Factory["create"] => (params: Params$Create): ts.ExpressionStatement => { + const node = factory.createExpressionStatement(params.expression); + return node; +}; + +export const make = (context: Pick): Factory => { + return { + create: create(context), + }; +}; diff --git a/src/internal/TsGenerator/factory/PropertyDeclaration.ts b/src/internal/TsGenerator/factory/PropertyDeclaration.ts new file mode 100644 index 00000000..02d426a7 --- /dev/null +++ b/src/internal/TsGenerator/factory/PropertyDeclaration.ts @@ -0,0 +1,34 @@ +import ts from "typescript"; + +export interface Params { + decorators?: readonly ts.Decorator[] | undefined; + modifiers: readonly ts.Modifier[] | undefined; + name: string | ts.PropertyName; + questionOrExclamationToken?: ts.QuestionToken | ts.ExclamationToken | undefined; + type: ts.TypeNode | undefined; + initializer?: ts.Expression | undefined; +} + +export interface Factory { + create: (params: Params) => ts.PropertyDeclaration; +} + +export const create = ({ factory }: Pick): Factory["create"] => ( + params: Params, +): ts.PropertyDeclaration => { + const node = factory.createPropertyDeclaration( + params.decorators, + params.modifiers, + params.name, + params.questionOrExclamationToken, + params.type, + params.initializer, + ); + return node; +}; + +export const make = (context: Pick): Factory => { + return { + create: create(context), + }; +}; diff --git a/src/internal/TsGenerator/factory/index.ts b/src/internal/TsGenerator/factory/index.ts index 87c25609..da5f715b 100644 --- a/src/internal/TsGenerator/factory/index.ts +++ b/src/internal/TsGenerator/factory/index.ts @@ -6,6 +6,7 @@ import * as CallExpression from "./CallExpression"; import * as ClassDeclaration from "./ClassDeclaration"; import * as ConstructorDeclaration from "./ConstructorDeclaration"; import * as ElementAccessExpression from "./ElementAccessExpression"; +import * as ExpressionStatement from "./ExpressionStatement"; import * as FunctionTypeNode from "./FunctionTypeNode"; import * as Identifier from "./Identifier"; import * as IndexedAccessTypeNode from "./IndexedAccessTypeNode"; @@ -21,6 +22,7 @@ import * as ParameterDeclaration from "./ParameterDeclaration"; import * as PropertyAccessExpression from "./PropertyAccessExpression"; import * as PropertyAssignment from "./PropertyAssignment"; import * as PropertySignature from "./PropertySignature"; +import * as PropertyDeclaration from "./PropertyDeclaration"; import * as RegularExpressionLiteral from "./RegularExpressionLiteral"; import * as ReturnStatement from "./ReturnStatement"; import * as StringLiteral from "./StringLiteral"; @@ -50,6 +52,7 @@ export interface Type { TypeOperatorNode: TypeOperatorNode.Factory; Namespace: Namespace.Factory; PropertySignature: PropertySignature.Factory; + PropertyDeclaration: PropertyDeclaration.Factory; RegularExpressionLiteral: RegularExpressionLiteral.Factory; TypeAliasDeclaration: TypeAliasDeclaration.Factory; TypeNode: TypeNode.Factory; @@ -76,6 +79,7 @@ export interface Type { PropertyAssignment: PropertyAssignment.Factory; ObjectLiteralExpression: ObjectLiteralExpression.Factory; ElementAccessExpression: ElementAccessExpression.Factory; + ExpressionStatement: ExpressionStatement.Factory; CallExpression: CallExpression.Factory; StringLiteral: StringLiteral.Factory; FunctionTypeNode: FunctionTypeNode.Factory; @@ -94,6 +98,7 @@ export const create = (): Type => { IndexedAccessTypeNode: IndexedAccessTypeNode.make(context), Namespace: Namespace.make(context), PropertySignature: PropertySignature.make(context), + PropertyDeclaration: PropertyDeclaration.make(context), TypeAliasDeclaration: TypeAliasDeclaration.make(context), TypeNode: TypeNode.make(context), LiteralTypeNode: LiteralTypeNode.make(context), @@ -122,6 +127,7 @@ export const create = (): Type => { PropertyAssignment: PropertyAssignment.make(context), ObjectLiteralExpression: ObjectLiteralExpression.make(context), ElementAccessExpression: ElementAccessExpression.make(context), + ExpressionStatement: ExpressionStatement.make(context), CallExpression: CallExpression.make(context), StringLiteral: StringLiteral.make(context), FunctionTypeNode: FunctionTypeNode.make(context), diff --git a/test/__tests__/__snapshots__/spit-code-test.ts.snap b/test/__tests__/__snapshots__/spit-code-test.ts.snap index b796b2b7..3c7720e1 100644 --- a/test/__tests__/__snapshots__/spit-code-test.ts.snap +++ b/test/__tests__/__snapshots__/spit-code-test.ts.snap @@ -105,13 +105,14 @@ export interface ApiClient { request: (httpMethod: HttpMethod, url: string, headers: ObjectLike | any, requestBody: ObjectLike | any, queryParameters: QueryParameters | undefined, options?: RequestOption) => Promise; } export class Client { - constructor(private apiClient: ApiClient, private baseUrl: string) { } + private baseUrl: string; + constructor(private apiClient: ApiClient, baseUrl: string) { this.baseUrl = baseUrl.replace(/\\\\/$/, \\"\\"); } /** * operationId: getIncludeLocalReference * Request URI: /get/IncludeLocalReference */ public async getIncludeLocalReference(params: Params$getIncludeLocalReference, option?: RequestOption): Promise { - const url = this.baseUrl.replace(/\\\\/$/, \\"\\") + \`/get/IncludeLocalReference\`; + const url = this.baseUrl + \`/get/IncludeLocalReference\`; const headers = { Accept: \\"application/json\\" }; @@ -125,7 +126,7 @@ export class Client { * Request URI: /get/IncludeRemoteReference */ public async getIncludeRemoteReference(params: Params$getIncludeRemoteReference, option?: RequestOption): Promise { - const url = this.baseUrl.replace(/\\\\/$/, \\"\\") + \`/get/IncludeRemoteReference\`; + const url = this.baseUrl + \`/get/IncludeRemoteReference\`; const headers = { \\"Content-Type\\": \\"application/json\\" }; @@ -139,7 +140,7 @@ export class Client { * Request URI: /FullRemoteReference */ public async getFullRemoteReference(params: Params$getFullRemoteReference, option?: RequestOption): Promise { - const url = this.baseUrl.replace(/\\\\/$/, \\"\\") + \`/FullRemoteReference\`; + const url = this.baseUrl + \`/FullRemoteReference\`; const headers = { Accept: \\"application/json\\" }; @@ -153,7 +154,7 @@ export class Client { * Request URI: /get/reference/items */ public async getReferenceItems(option?: RequestOption): Promise { - const url = this.baseUrl.replace(/\\\\/$/, \\"\\") + \`/get/reference/items\`; + const url = this.baseUrl + \`/get/reference/items\`; const headers = { Accept: \\"application/json\\" }; @@ -164,7 +165,7 @@ export class Client { * Request URI: /get/books/{id} */ public async getBookById(params: Params$getBookById, option?: RequestOption): Promise { - const url = this.baseUrl.replace(/\\\\/$/, \\"\\") + \`/get/books/\${params.parameter.id}\`; + const url = this.baseUrl + \`/get/books/\${params.parameter.id}\`; const headers = { Accept: \\"application/json\\" }; @@ -175,7 +176,7 @@ export class Client { * Request URI: /get/books/{id} */ public async deleteBook(params: Params$deleteBook, option?: RequestOption): Promise { - const url = this.baseUrl.replace(/\\\\/$/, \\"\\") + \`/get/books/\${params.parameter.id}\`; + const url = this.baseUrl + \`/get/books/\${params.parameter.id}\`; const headers = { Accept: \\"application/json\\" }; diff --git a/test/__tests__/__snapshots__/template-only-test.ts.snap b/test/__tests__/__snapshots__/template-only-test.ts.snap index 643abb4c..ad4f0bd2 100644 --- a/test/__tests__/__snapshots__/template-only-test.ts.snap +++ b/test/__tests__/__snapshots__/template-only-test.ts.snap @@ -57,9 +57,10 @@ export interface ApiClient { request: (httpMethod: HttpMethod, url: string, headers: ObjectLike | any, requestBody: ObjectLike | any, queryParameters: QueryParameters | undefined, options?: RequestOption) => Promise; } export class Client { - constructor(private apiClient: ApiClient, private baseUrl: string) { } + private baseUrl: string; + constructor(private apiClient: ApiClient, baseUrl: string) { this.baseUrl = baseUrl.replace(/\\\\/$/, \\"\\"); } public async getIncludeLocalReference(params: Params$getIncludeLocalReference, option?: RequestOption): Promise { - const url = this.baseUrl.replace(/\\\\/$/, \\"\\") + \`/get/IncludeLocalReference\`; + const url = this.baseUrl + \`/get/IncludeLocalReference\`; const headers = { Accept: \\"application/json\\" }; @@ -69,7 +70,7 @@ export class Client { return this.apiClient.request(\\"GET\\", url, headers, undefined, queryParameters, option); } public async getIncludeRemoteReference(params: Params$getIncludeRemoteReference, option?: RequestOption): Promise { - const url = this.baseUrl.replace(/\\\\/$/, \\"\\") + \`/get/IncludeRemoteReference\`; + const url = this.baseUrl + \`/get/IncludeRemoteReference\`; const headers = { \\"Content-Type\\": \\"application/json\\" }; @@ -79,7 +80,7 @@ export class Client { return this.apiClient.request(\\"GET\\", url, headers, params.requestBody, queryParameters, option); } public async getFullRemoteReference(params: Params$getFullRemoteReference, option?: RequestOption): Promise { - const url = this.baseUrl.replace(/\\\\/$/, \\"\\") + \`/FullRemoteReference\`; + const url = this.baseUrl + \`/FullRemoteReference\`; const headers = { Accept: \\"application/json\\" }; @@ -89,21 +90,21 @@ export class Client { return this.apiClient.request(\\"GET\\", url, headers, undefined, queryParameters, option); } public async getReferenceItems(option?: RequestOption): Promise { - const url = this.baseUrl.replace(/\\\\/$/, \\"\\") + \`/get/reference/items\`; + const url = this.baseUrl + \`/get/reference/items\`; const headers = { Accept: \\"application/json\\" }; return this.apiClient.request(\\"GET\\", url, headers, undefined, undefined, option); } public async getBookById(params: Params$getBookById, option?: RequestOption): Promise { - const url = this.baseUrl.replace(/\\\\/$/, \\"\\") + \`/get/books/\${params.parameter.id}\`; + const url = this.baseUrl + \`/get/books/\${params.parameter.id}\`; const headers = { Accept: \\"application/json\\" }; return this.apiClient.request(\\"GET\\", url, headers, undefined, undefined, option); } public async deleteBook(params: Params$deleteBook, option?: RequestOption): Promise { - const url = this.baseUrl.replace(/\\\\/$/, \\"\\") + \`/get/books/\${params.parameter.id}\`; + const url = this.baseUrl + \`/get/books/\${params.parameter.id}\`; const headers = { Accept: \\"application/json\\" }; @@ -170,9 +171,10 @@ export interface ApiClient { request: (httpMethod: HttpMethod, url: string, headers: ObjectLike | any, requestBody: ObjectLike | any, queryParameters: QueryParameters | undefined, options?: RequestOption) => T; } export class Client { - constructor(private apiClient: ApiClient, private baseUrl: string) { } + private baseUrl: string; + constructor(private apiClient: ApiClient, baseUrl: string) { this.baseUrl = baseUrl.replace(/\\\\/$/, \\"\\"); } public getIncludeLocalReference(params: Params$getIncludeLocalReference, option?: RequestOption): Response$getIncludeLocalReference$Status$200[\\"application/json\\"] { - const url = this.baseUrl.replace(/\\\\/$/, \\"\\") + \`/get/IncludeLocalReference\`; + const url = this.baseUrl + \`/get/IncludeLocalReference\`; const headers = { Accept: \\"application/json\\" }; @@ -182,7 +184,7 @@ export class Client { return this.apiClient.request(\\"GET\\", url, headers, undefined, queryParameters, option); } public getIncludeRemoteReference(params: Params$getIncludeRemoteReference, option?: RequestOption): void { - const url = this.baseUrl.replace(/\\\\/$/, \\"\\") + \`/get/IncludeRemoteReference\`; + const url = this.baseUrl + \`/get/IncludeRemoteReference\`; const headers = { \\"Content-Type\\": \\"application/json\\" }; @@ -192,7 +194,7 @@ export class Client { return this.apiClient.request(\\"GET\\", url, headers, params.requestBody, queryParameters, option); } public getFullRemoteReference(params: Params$getFullRemoteReference, option?: RequestOption): Response$getFullRemoteReference$Status$200[\\"application/json\\"] { - const url = this.baseUrl.replace(/\\\\/$/, \\"\\") + \`/FullRemoteReference\`; + const url = this.baseUrl + \`/FullRemoteReference\`; const headers = { Accept: \\"application/json\\" }; @@ -202,21 +204,21 @@ export class Client { return this.apiClient.request(\\"GET\\", url, headers, undefined, queryParameters, option); } public getReferenceItems(option?: RequestOption): Response$getReferenceItems$Status$200[\\"application/json\\"] { - const url = this.baseUrl.replace(/\\\\/$/, \\"\\") + \`/get/reference/items\`; + const url = this.baseUrl + \`/get/reference/items\`; const headers = { Accept: \\"application/json\\" }; return this.apiClient.request(\\"GET\\", url, headers, undefined, undefined, option); } public getBookById(params: Params$getBookById, option?: RequestOption): Response$getBookById$Status$200[\\"application/json\\"] { - const url = this.baseUrl.replace(/\\\\/$/, \\"\\") + \`/get/books/\${params.parameter.id}\`; + const url = this.baseUrl + \`/get/books/\${params.parameter.id}\`; const headers = { Accept: \\"application/json\\" }; return this.apiClient.request(\\"GET\\", url, headers, undefined, undefined, option); } public deleteBook(params: Params$deleteBook, option?: RequestOption): Response$deleteBook$Status$200[\\"application/json\\"] { - const url = this.baseUrl.replace(/\\\\/$/, \\"\\") + \`/get/books/\${params.parameter.id}\`; + const url = this.baseUrl + \`/get/books/\${params.parameter.id}\`; const headers = { Accept: \\"application/json\\" }; @@ -254,7 +256,8 @@ export interface ApiClient { request: (httpMethod: HttpMethod, url: string, headers: ObjectLike | any, requestBody: ObjectLike | any, queryParameters: QueryParameters | undefined, options?: RequestOption) => T; } export class Client { - constructor(private apiClient: ApiClient, private baseUrl: string) { } + private baseUrl: string; + constructor(private apiClient: ApiClient, baseUrl: string) { this.baseUrl = baseUrl.replace(/\\\\/$/, \\"\\"); } } " `; diff --git a/test/__tests__/__snapshots__/typedef-with-template-test.ts.snap b/test/__tests__/__snapshots__/typedef-with-template-test.ts.snap index c31870dc..8abb83a3 100644 --- a/test/__tests__/__snapshots__/typedef-with-template-test.ts.snap +++ b/test/__tests__/__snapshots__/typedef-with-template-test.ts.snap @@ -381,9 +381,10 @@ export interface ApiClient { request: (httpMethod: HttpMethod, url: string, headers: ObjectLike | any, requestBody: ObjectLike | any, queryParameters: QueryParameters | undefined, options?: RequestOption) => Promise; } export class Client { - constructor(private apiClient: ApiClient, private baseUrl: string) { } + private baseUrl: string; + constructor(private apiClient: ApiClient, baseUrl: string) { this.baseUrl = baseUrl.replace(/\\\\/$/, \\"\\"); } public async getIncludeLocalReference(params: Params$getIncludeLocalReference, option?: RequestOption): Promise { - const url = this.baseUrl.replace(/\\\\/$/, \\"\\") + \`/get/IncludeLocalReference\`; + const url = this.baseUrl + \`/get/IncludeLocalReference\`; const headers = { Accept: \\"application/json\\" }; @@ -393,7 +394,7 @@ export class Client { return this.apiClient.request(\\"GET\\", url, headers, undefined, queryParameters, option); } public async getIncludeRemoteReference(params: Params$getIncludeRemoteReference, option?: RequestOption): Promise { - const url = this.baseUrl.replace(/\\\\/$/, \\"\\") + \`/get/IncludeRemoteReference\`; + const url = this.baseUrl + \`/get/IncludeRemoteReference\`; const headers = { \\"Content-Type\\": \\"application/json\\" }; @@ -403,7 +404,7 @@ export class Client { return this.apiClient.request(\\"GET\\", url, headers, params.requestBody, queryParameters, option); } public async getFullRemoteReference(params: Params$getFullRemoteReference, option?: RequestOption): Promise { - const url = this.baseUrl.replace(/\\\\/$/, \\"\\") + \`/FullRemoteReference\`; + const url = this.baseUrl + \`/FullRemoteReference\`; const headers = { Accept: \\"application/json\\" }; @@ -413,21 +414,21 @@ export class Client { return this.apiClient.request(\\"GET\\", url, headers, undefined, queryParameters, option); } public async getReferenceItems(option?: RequestOption): Promise { - const url = this.baseUrl.replace(/\\\\/$/, \\"\\") + \`/get/reference/items\`; + const url = this.baseUrl + \`/get/reference/items\`; const headers = { Accept: \\"application/json\\" }; return this.apiClient.request(\\"GET\\", url, headers, undefined, undefined, option); } public async getBookById(params: Params$getBookById, option?: RequestOption): Promise { - const url = this.baseUrl.replace(/\\\\/$/, \\"\\") + \`/get/books/\${params.parameter.id}\`; + const url = this.baseUrl + \`/get/books/\${params.parameter.id}\`; const headers = { Accept: \\"application/json\\" }; return this.apiClient.request(\\"GET\\", url, headers, undefined, undefined, option); } public async deleteBook(params: Params$deleteBook, option?: RequestOption): Promise { - const url = this.baseUrl.replace(/\\\\/$/, \\"\\") + \`/get/books/\${params.parameter.id}\`; + const url = this.baseUrl + \`/get/books/\${params.parameter.id}\`; const headers = { Accept: \\"application/json\\" }; @@ -818,9 +819,10 @@ export interface ApiClient { request: (httpMethod: HttpMethod, url: string, headers: ObjectLike | any, requestBody: ObjectLike | any, queryParameters: QueryParameters | undefined, options?: RequestOption) => T; } export class Client { - constructor(private apiClient: ApiClient, private baseUrl: string) { } + private baseUrl: string; + constructor(private apiClient: ApiClient, baseUrl: string) { this.baseUrl = baseUrl.replace(/\\\\/$/, \\"\\"); } public getIncludeLocalReference(params: Params$getIncludeLocalReference, option?: RequestOption): Response$getIncludeLocalReference$Status$200[\\"application/json\\"] { - const url = this.baseUrl.replace(/\\\\/$/, \\"\\") + \`/get/IncludeLocalReference\`; + const url = this.baseUrl + \`/get/IncludeLocalReference\`; const headers = { Accept: \\"application/json\\" }; @@ -830,7 +832,7 @@ export class Client { return this.apiClient.request(\\"GET\\", url, headers, undefined, queryParameters, option); } public getIncludeRemoteReference(params: Params$getIncludeRemoteReference, option?: RequestOption): void { - const url = this.baseUrl.replace(/\\\\/$/, \\"\\") + \`/get/IncludeRemoteReference\`; + const url = this.baseUrl + \`/get/IncludeRemoteReference\`; const headers = { \\"Content-Type\\": \\"application/json\\" }; @@ -840,7 +842,7 @@ export class Client { return this.apiClient.request(\\"GET\\", url, headers, params.requestBody, queryParameters, option); } public getFullRemoteReference(params: Params$getFullRemoteReference, option?: RequestOption): Response$getFullRemoteReference$Status$200[\\"application/json\\"] { - const url = this.baseUrl.replace(/\\\\/$/, \\"\\") + \`/FullRemoteReference\`; + const url = this.baseUrl + \`/FullRemoteReference\`; const headers = { Accept: \\"application/json\\" }; @@ -850,21 +852,21 @@ export class Client { return this.apiClient.request(\\"GET\\", url, headers, undefined, queryParameters, option); } public getReferenceItems(option?: RequestOption): Response$getReferenceItems$Status$200[\\"application/json\\"] { - const url = this.baseUrl.replace(/\\\\/$/, \\"\\") + \`/get/reference/items\`; + const url = this.baseUrl + \`/get/reference/items\`; const headers = { Accept: \\"application/json\\" }; return this.apiClient.request(\\"GET\\", url, headers, undefined, undefined, option); } public getBookById(params: Params$getBookById, option?: RequestOption): Response$getBookById$Status$200[\\"application/json\\"] { - const url = this.baseUrl.replace(/\\\\/$/, \\"\\") + \`/get/books/\${params.parameter.id}\`; + const url = this.baseUrl + \`/get/books/\${params.parameter.id}\`; const headers = { Accept: \\"application/json\\" }; return this.apiClient.request(\\"GET\\", url, headers, undefined, undefined, option); } public deleteBook(params: Params$deleteBook, option?: RequestOption): Response$deleteBook$Status$200[\\"application/json\\"] { - const url = this.baseUrl.replace(/\\\\/$/, \\"\\") + \`/get/books/\${params.parameter.id}\`; + const url = this.baseUrl + \`/get/books/\${params.parameter.id}\`; const headers = { Accept: \\"application/json\\" }; @@ -916,7 +918,8 @@ export interface ApiClient { request: (httpMethod: HttpMethod, url: string, headers: ObjectLike | any, requestBody: ObjectLike | any, queryParameters: QueryParameters | undefined, options?: RequestOption) => Promise; } export class Client { - constructor(private apiClient: ApiClient, private baseUrl: string) { } + private baseUrl: string; + constructor(private apiClient: ApiClient, baseUrl: string) { this.baseUrl = baseUrl.replace(/\\\\/$/, \\"\\"); } } " `;