diff --git a/modules/openapi-generator/src/main/resources/typescript-rxjs/apis.mustache b/modules/openapi-generator/src/main/resources/typescript-rxjs/apis.mustache index ff7594b46bd..3133d6e72ea 100644 --- a/modules/openapi-generator/src/main/resources/typescript-rxjs/apis.mustache +++ b/modules/openapi-generator/src/main/resources/typescript-rxjs/apis.mustache @@ -1,9 +1,11 @@ // tslint:disable {{>licenseInfo}} -import { Observable } from 'rxjs'; -import { BaseAPI{{#hasHttpHeaders}}, HttpHeaders{{/hasHttpHeaders}}{{#hasQueryParams}}, HttpQuery{{/hasQueryParams}}{{#hasRequiredParams}}, throwIfNullOrUndefined{{/hasRequiredParams}}{{#hasPathParams}}, encodeURI{{/hasPathParams}}{{#hasListContainers}}, COLLECTION_FORMATS{{/hasListContainers}}, OperationOpts, RawAjaxResponse } from '../runtime'; +import type { Observable } from 'rxjs'; +import type { AjaxResponse } from 'rxjs/ajax'; +import { BaseAPI{{#hasRequiredParams}}, throwIfNullOrUndefined{{/hasRequiredParams}}{{#hasPathParams}}, encodeURI{{/hasPathParams}}{{#hasListContainers}}, COLLECTION_FORMATS{{/hasListContainers}} } from '../runtime'; +import type { OperationOpts{{#hasHttpHeaders}}, HttpHeaders{{/hasHttpHeaders}}{{#hasQueryParams}}, HttpQuery{{/hasQueryParams}} } from '../runtime'; {{#imports.0}} -import { +import type { {{#imports}} {{className}}, {{/imports}} @@ -41,8 +43,8 @@ export class {{classname}} extends BaseAPI { {{#withProgressSubscriber}} {{nickname}}({{#allParams.0}}{ {{#allParams}}{{paramName}}{{#vendorExtensions.x-param-name-alternative}}: {{vendorExtensions.x-param-name-alternative}}{{/vendorExtensions.x-param-name-alternative}}{{^-last}}, {{/-last}}{{/allParams}} }: {{operationIdCamelCase}}Request, {{/allParams.0}}opts?: Pick): Observable<{{{returnType}}}{{^returnType}}void{{/returnType}}> {{/withProgressSubscriber}} - {{nickname}}({{#allParams.0}}{ {{#allParams}}{{paramName}}{{#vendorExtensions.x-param-name-alternative}}: {{vendorExtensions.x-param-name-alternative}}{{/vendorExtensions.x-param-name-alternative}}{{^-last}}, {{/-last}}{{/allParams}} }: {{operationIdCamelCase}}Request, {{/allParams.0}}opts?: OperationOpts): Observable<{{#returnType}}RawAjaxResponse<{{{.}}}>{{/returnType}}{{^returnType}}void | RawAjaxResponse{{/returnType}}> - {{nickname}}({{#allParams.0}}{ {{#allParams}}{{paramName}}{{#vendorExtensions.x-param-name-alternative}}: {{vendorExtensions.x-param-name-alternative}}{{/vendorExtensions.x-param-name-alternative}}{{^-last}}, {{/-last}}{{/allParams}} }: {{operationIdCamelCase}}Request, {{/allParams.0}}opts?: OperationOpts): Observable<{{#returnType}}{{{returnType}}} | RawAjaxResponse<{{{returnType}}}>{{/returnType}}{{^returnType}}void | RawAjaxResponse{{/returnType}}> { + {{nickname}}({{#allParams.0}}{ {{#allParams}}{{paramName}}{{#vendorExtensions.x-param-name-alternative}}: {{vendorExtensions.x-param-name-alternative}}{{/vendorExtensions.x-param-name-alternative}}{{^-last}}, {{/-last}}{{/allParams}} }: {{operationIdCamelCase}}Request, {{/allParams.0}}opts?: OperationOpts): Observable<{{#returnType}}AjaxResponse<{{{.}}}>{{/returnType}}{{^returnType}}void | AjaxResponse{{/returnType}}> + {{nickname}}({{#allParams.0}}{ {{#allParams}}{{paramName}}{{#vendorExtensions.x-param-name-alternative}}: {{vendorExtensions.x-param-name-alternative}}{{/vendorExtensions.x-param-name-alternative}}{{^-last}}, {{/-last}}{{/allParams}} }: {{operationIdCamelCase}}Request, {{/allParams.0}}opts?: OperationOpts): Observable<{{#returnType}}{{{returnType}}} | AjaxResponse<{{{returnType}}}>{{/returnType}}{{^returnType}}void | AjaxResponse{{/returnType}}> { {{#hasParams}} {{#allParams}} {{#required}} diff --git a/modules/openapi-generator/src/main/resources/typescript-rxjs/modelAllOf.mustache b/modules/openapi-generator/src/main/resources/typescript-rxjs/modelAllOf.mustache index c38e8ab9372..252b1510bc6 100644 --- a/modules/openapi-generator/src/main/resources/typescript-rxjs/modelAllOf.mustache +++ b/modules/openapi-generator/src/main/resources/typescript-rxjs/modelAllOf.mustache @@ -1,5 +1,5 @@ {{#hasImports}} -import { +import type { {{#imports}} {{{.}}}, {{/imports}} diff --git a/modules/openapi-generator/src/main/resources/typescript-rxjs/modelGeneric.mustache b/modules/openapi-generator/src/main/resources/typescript-rxjs/modelGeneric.mustache index ddeaf2898c3..a12ceb35c3d 100644 --- a/modules/openapi-generator/src/main/resources/typescript-rxjs/modelGeneric.mustache +++ b/modules/openapi-generator/src/main/resources/typescript-rxjs/modelGeneric.mustache @@ -1,5 +1,5 @@ {{#hasImports}} -import { +import type { {{#imports}} {{{.}}}, {{/imports}} diff --git a/modules/openapi-generator/src/main/resources/typescript-rxjs/modelOneOf.mustache b/modules/openapi-generator/src/main/resources/typescript-rxjs/modelOneOf.mustache index bdd72c00193..08294385f3a 100644 --- a/modules/openapi-generator/src/main/resources/typescript-rxjs/modelOneOf.mustache +++ b/modules/openapi-generator/src/main/resources/typescript-rxjs/modelOneOf.mustache @@ -1,5 +1,5 @@ {{#hasImports}} -import { +import type { {{#imports}} {{{.}}}, {{/imports}} diff --git a/modules/openapi-generator/src/main/resources/typescript-rxjs/package.mustache b/modules/openapi-generator/src/main/resources/typescript-rxjs/package.mustache index 26c1529a3a2..57e2b7f4bd6 100644 --- a/modules/openapi-generator/src/main/resources/typescript-rxjs/package.mustache +++ b/modules/openapi-generator/src/main/resources/typescript-rxjs/package.mustache @@ -10,10 +10,10 @@ "prepare": "npm run build" }, "dependencies": { - "rxjs": "^6.3.3" + "rxjs": "^7.2.0" }, "devDependencies": { - "typescript": "^3.7" + "typescript": "^4.0" }{{#npmRepository}},{{/npmRepository}} {{#npmRepository}} "publishConfig": { diff --git a/modules/openapi-generator/src/main/resources/typescript-rxjs/paramNamePartial.mustache b/modules/openapi-generator/src/main/resources/typescript-rxjs/paramNamePartial.mustache index 7315bcd2b7d..1c3b1bd6365 100644 --- a/modules/openapi-generator/src/main/resources/typescript-rxjs/paramNamePartial.mustache +++ b/modules/openapi-generator/src/main/resources/typescript-rxjs/paramNamePartial.mustache @@ -1,2 +1,2 @@ -{{! helper to output the alias of a parameter if provided and to not clutter the main template }} +{{! helper to output the alias of a parameter if provided and to not clutter the main template }} {{#vendorExtensions.x-param-name-alternative}}{{vendorExtensions.x-param-name-alternative}}{{/vendorExtensions.x-param-name-alternative}}{{^vendorExtensions.x-param-name-alternative}}{{paramName}}{{/vendorExtensions.x-param-name-alternative}} \ No newline at end of file diff --git a/modules/openapi-generator/src/main/resources/typescript-rxjs/runtime.mustache b/modules/openapi-generator/src/main/resources/typescript-rxjs/runtime.mustache index ac29358b9a3..c5f5edc6a0d 100644 --- a/modules/openapi-generator/src/main/resources/typescript-rxjs/runtime.mustache +++ b/modules/openapi-generator/src/main/resources/typescript-rxjs/runtime.mustache @@ -1,7 +1,9 @@ // tslint:disable {{>licenseInfo}} -import { Observable, of{{#withProgressSubscriber}}, Subscriber{{/withProgressSubscriber}} } from 'rxjs'; -import { ajax, AjaxRequest, AjaxResponse } from 'rxjs/ajax'; +import { of } from 'rxjs'; +import type { Observable{{#withProgressSubscriber}}, Subscriber{{/withProgressSubscriber}} } from 'rxjs'; +import { ajax } from 'rxjs/ajax'; +import type { AjaxConfig, AjaxResponse } from 'rxjs/ajax'; import { map, concatMap } from 'rxjs/operators'; import { servers } from './servers'; @@ -69,9 +71,9 @@ export class BaseAPI { this.withMiddleware(postMiddlewares.map((post) => ({ post }))); protected request(requestOpts: RequestOpts): Observable - protected request(requestOpts: RequestOpts, responseOpts?: ResponseOpts): Observable> - protected request(requestOpts: RequestOpts, responseOpts?: ResponseOpts): Observable> { - return this.rxjsRequest(this.createRequestArgs(requestOpts)).pipe( + protected request(requestOpts: RequestOpts, responseOpts?: ResponseOpts): Observable> + protected request(requestOpts: RequestOpts, responseOpts?: ResponseOpts): Observable> { + return this.rxjsRequest(this.createRequestArgs(requestOpts)).pipe( map((res) => { const { status, response } = res; if (status >= 200 && status < 300) { @@ -82,7 +84,7 @@ export class BaseAPI { ); } - private createRequestArgs = ({ url: baseUrl, query, method, headers, body, responseType{{#withProgressSubscriber}}, progressSubscriber{{/withProgressSubscriber}} }: RequestOpts): RequestArgs => { + private createRequestArgs = ({ url: baseUrl, query, method, headers, body, responseType{{#withProgressSubscriber}}, progressSubscriber{{/withProgressSubscriber}} }: RequestOpts): AjaxConfig => { // only add the queryString to the URL if there are query parameters. // this is done to avoid urls ending with a '?' character which buggy webservers // do not handle correctly sometimes. @@ -100,14 +102,14 @@ export class BaseAPI { }; } - private rxjsRequest = (params: RequestArgs): Observable => + private rxjsRequest = (params: AjaxConfig): Observable> => of(params).pipe( map((request) => { this.middleware.filter((item) => item.pre).forEach((mw) => (request = mw.pre!(request))); return request; }), concatMap((args) => - ajax(args).pipe( + ajax(args).pipe( map((response) => { this.middleware.filter((item) => item.post).forEach((mw) => (response = mw.post!(response))); return response; @@ -145,13 +147,13 @@ export type HttpHeaders = { [key: string]: string }; export type HttpQuery = Partial<{ [key: string]: string | number | null | boolean | Array }>; // partial is needed for strict mode export type HttpBody = Json | FormData; -export interface RequestOpts extends AjaxRequest { +export interface RequestOpts extends AjaxConfig { + // TODO: replace custom 'query' prop with 'queryParams' query?: HttpQuery; // additional prop // the following props have improved types over AjaxRequest method: HttpMethod; headers?: HttpHeaders; body?: HttpBody; - responseType?: 'json' | 'blob' | 'arraybuffer' | 'text'; {{#withProgressSubscriber}} progressSubscriber?: Subscriber; {{/withProgressSubscriber}} @@ -168,11 +170,6 @@ export interface OperationOpts { responseOpts?: ResponseOpts; } -// AjaxResponse with typed response -export interface RawAjaxResponse extends AjaxResponse { - response: T; -} - export const encodeURI = (value: any) => encodeURIComponent(`${value}`); const queryString = (params: HttpQuery): string => Object.entries(params) @@ -182,29 +179,13 @@ const queryString = (params: HttpQuery): string => Object.entries(params) ) .join('&'); -// alias fallback for not being a breaking change -export const querystring = queryString; - -/** - * @deprecated - */ -export const throwIfRequired = (params: {[key: string]: any}, key: string, nickname: string) => { - if (!params || params[key] == null) { - throw new RequiredError(`Required parameter ${key} was null or undefined when calling ${nickname}.`); - } -}; - export const throwIfNullOrUndefined = (value: any, paramName: string, nickname: string) => { if (value == null) { throw new Error(`Parameter "${paramName}" was null or undefined when calling "${nickname}".`); } }; -// alias for easier importing -export interface RequestArgs extends AjaxRequest {} -export interface ResponseArgs extends AjaxResponse {} - export interface Middleware { - pre?(request: RequestArgs): RequestArgs; - post?(response: ResponseArgs): ResponseArgs; + pre?(request: AjaxConfig): AjaxConfig; + post?(response: AjaxResponse): AjaxResponse; } diff --git a/modules/openapi-generator/src/main/resources/typescript-rxjs/servers.mustache b/modules/openapi-generator/src/main/resources/typescript-rxjs/servers.mustache index 27eab229a4f..84ef1435f3a 100644 --- a/modules/openapi-generator/src/main/resources/typescript-rxjs/servers.mustache +++ b/modules/openapi-generator/src/main/resources/typescript-rxjs/servers.mustache @@ -17,11 +17,11 @@ export class ServerConfiguration { } public getConfiguration(): T { - return this.variableConfiguration + return this.variableConfiguration; } public getDescription(): string { - return this.description + return this.description; } /** @@ -34,12 +34,12 @@ export class ServerConfiguration { var re = new RegExp("{" + key + "}","g"); replacedUrl = replacedUrl.replace(re, this.variableConfiguration[key]); } - return replacedUrl + return replacedUrl; } } {{#servers}} -const server{{-index}} = new ServerConfiguration<{ {{#variables}} "{{name}}": {{#enumValues}}"{{.}}"{{^-last}} | {{/-last}}{{/enumValues}}{{^enumValues}}string{{/enumValues}}{{^-last}},{{/-last}} {{/variables}} }>("{{url}}", { {{#variables}} "{{name}}": "{{defaultValue}}" {{^-last}},{{/-last}}{{/variables}} }, "{{description}}") +const server{{-index}} = new ServerConfiguration<{ {{#variables}} "{{name}}": {{#enumValues}}"{{.}}"{{^-last}} | {{/-last}}{{/enumValues}}{{^enumValues}}string{{/enumValues}}{{^-last}},{{/-last}} {{/variables}} }>("{{url}}", { {{#variables}} "{{name}}": "{{defaultValue}}" {{^-last}},{{/-last}}{{/variables}} }, "{{description}}"); {{/servers}} export const servers = [{{#servers}}server{{-index}}{{^-last}}, {{/-last}}{{/servers}}]; diff --git a/samples/client/petstore/typescript-rxjs/builds/default/apis/PetApi.ts b/samples/client/petstore/typescript-rxjs/builds/default/apis/PetApi.ts index 026381b12b2..7745f081c8b 100644 --- a/samples/client/petstore/typescript-rxjs/builds/default/apis/PetApi.ts +++ b/samples/client/petstore/typescript-rxjs/builds/default/apis/PetApi.ts @@ -11,9 +11,11 @@ * Do not edit the class manually. */ -import { Observable } from 'rxjs'; -import { BaseAPI, HttpHeaders, HttpQuery, throwIfNullOrUndefined, encodeURI, COLLECTION_FORMATS, OperationOpts, RawAjaxResponse } from '../runtime'; -import { +import type { Observable } from 'rxjs'; +import type { AjaxResponse } from 'rxjs/ajax'; +import { BaseAPI, throwIfNullOrUndefined, encodeURI, COLLECTION_FORMATS } from '../runtime'; +import type { OperationOpts, HttpHeaders, HttpQuery } from '../runtime'; +import type { ApiResponse, Pet, } from '../models'; @@ -64,8 +66,8 @@ export class PetApi extends BaseAPI { * Add a new pet to the store */ addPet({ body }: AddPetRequest): Observable - addPet({ body }: AddPetRequest, opts?: OperationOpts): Observable> - addPet({ body }: AddPetRequest, opts?: OperationOpts): Observable> { + addPet({ body }: AddPetRequest, opts?: OperationOpts): Observable> + addPet({ body }: AddPetRequest, opts?: OperationOpts): Observable> { throwIfNullOrUndefined(body, 'body', 'addPet'); const headers: HttpHeaders = { @@ -91,8 +93,8 @@ export class PetApi extends BaseAPI { * Deletes a pet */ deletePet({ petId, apiKey }: DeletePetRequest): Observable - deletePet({ petId, apiKey }: DeletePetRequest, opts?: OperationOpts): Observable> - deletePet({ petId, apiKey }: DeletePetRequest, opts?: OperationOpts): Observable> { + deletePet({ petId, apiKey }: DeletePetRequest, opts?: OperationOpts): Observable> + deletePet({ petId, apiKey }: DeletePetRequest, opts?: OperationOpts): Observable> { throwIfNullOrUndefined(petId, 'petId', 'deletePet'); const headers: HttpHeaders = { @@ -118,8 +120,8 @@ export class PetApi extends BaseAPI { * Finds Pets by status */ findPetsByStatus({ status }: FindPetsByStatusRequest): Observable> - findPetsByStatus({ status }: FindPetsByStatusRequest, opts?: OperationOpts): Observable>> - findPetsByStatus({ status }: FindPetsByStatusRequest, opts?: OperationOpts): Observable | RawAjaxResponse>> { + findPetsByStatus({ status }: FindPetsByStatusRequest, opts?: OperationOpts): Observable>> + findPetsByStatus({ status }: FindPetsByStatusRequest, opts?: OperationOpts): Observable | AjaxResponse>> { throwIfNullOrUndefined(status, 'status', 'findPetsByStatus'); const headers: HttpHeaders = { @@ -149,8 +151,8 @@ export class PetApi extends BaseAPI { * Finds Pets by tags */ findPetsByTags({ tags }: FindPetsByTagsRequest): Observable> - findPetsByTags({ tags }: FindPetsByTagsRequest, opts?: OperationOpts): Observable>> - findPetsByTags({ tags }: FindPetsByTagsRequest, opts?: OperationOpts): Observable | RawAjaxResponse>> { + findPetsByTags({ tags }: FindPetsByTagsRequest, opts?: OperationOpts): Observable>> + findPetsByTags({ tags }: FindPetsByTagsRequest, opts?: OperationOpts): Observable | AjaxResponse>> { throwIfNullOrUndefined(tags, 'tags', 'findPetsByTags'); const headers: HttpHeaders = { @@ -180,8 +182,8 @@ export class PetApi extends BaseAPI { * Find pet by ID */ getPetById({ petId }: GetPetByIdRequest): Observable - getPetById({ petId }: GetPetByIdRequest, opts?: OperationOpts): Observable> - getPetById({ petId }: GetPetByIdRequest, opts?: OperationOpts): Observable> { + getPetById({ petId }: GetPetByIdRequest, opts?: OperationOpts): Observable> + getPetById({ petId }: GetPetByIdRequest, opts?: OperationOpts): Observable> { throwIfNullOrUndefined(petId, 'petId', 'getPetById'); const headers: HttpHeaders = { @@ -199,8 +201,8 @@ export class PetApi extends BaseAPI { * Update an existing pet */ updatePet({ body }: UpdatePetRequest): Observable - updatePet({ body }: UpdatePetRequest, opts?: OperationOpts): Observable> - updatePet({ body }: UpdatePetRequest, opts?: OperationOpts): Observable> { + updatePet({ body }: UpdatePetRequest, opts?: OperationOpts): Observable> + updatePet({ body }: UpdatePetRequest, opts?: OperationOpts): Observable> { throwIfNullOrUndefined(body, 'body', 'updatePet'); const headers: HttpHeaders = { @@ -226,8 +228,8 @@ export class PetApi extends BaseAPI { * Updates a pet in the store with form data */ updatePetWithForm({ petId, name, status }: UpdatePetWithFormRequest): Observable - updatePetWithForm({ petId, name, status }: UpdatePetWithFormRequest, opts?: OperationOpts): Observable> - updatePetWithForm({ petId, name, status }: UpdatePetWithFormRequest, opts?: OperationOpts): Observable> { + updatePetWithForm({ petId, name, status }: UpdatePetWithFormRequest, opts?: OperationOpts): Observable> + updatePetWithForm({ petId, name, status }: UpdatePetWithFormRequest, opts?: OperationOpts): Observable> { throwIfNullOrUndefined(petId, 'petId', 'updatePetWithForm'); const headers: HttpHeaders = { @@ -256,8 +258,8 @@ export class PetApi extends BaseAPI { * uploads an image */ uploadFile({ petId, additionalMetadata, file }: UploadFileRequest): Observable - uploadFile({ petId, additionalMetadata, file }: UploadFileRequest, opts?: OperationOpts): Observable> - uploadFile({ petId, additionalMetadata, file }: UploadFileRequest, opts?: OperationOpts): Observable> { + uploadFile({ petId, additionalMetadata, file }: UploadFileRequest, opts?: OperationOpts): Observable> + uploadFile({ petId, additionalMetadata, file }: UploadFileRequest, opts?: OperationOpts): Observable> { throwIfNullOrUndefined(petId, 'petId', 'uploadFile'); const headers: HttpHeaders = { diff --git a/samples/client/petstore/typescript-rxjs/builds/default/apis/StoreApi.ts b/samples/client/petstore/typescript-rxjs/builds/default/apis/StoreApi.ts index 5575fe6c3d6..4b41b2501af 100644 --- a/samples/client/petstore/typescript-rxjs/builds/default/apis/StoreApi.ts +++ b/samples/client/petstore/typescript-rxjs/builds/default/apis/StoreApi.ts @@ -11,9 +11,11 @@ * Do not edit the class manually. */ -import { Observable } from 'rxjs'; -import { BaseAPI, HttpHeaders, throwIfNullOrUndefined, encodeURI, OperationOpts, RawAjaxResponse } from '../runtime'; -import { +import type { Observable } from 'rxjs'; +import type { AjaxResponse } from 'rxjs/ajax'; +import { BaseAPI, throwIfNullOrUndefined, encodeURI } from '../runtime'; +import type { OperationOpts, HttpHeaders } from '../runtime'; +import type { Order, } from '../models'; @@ -39,8 +41,8 @@ export class StoreApi extends BaseAPI { * Delete purchase order by ID */ deleteOrder({ orderId }: DeleteOrderRequest): Observable - deleteOrder({ orderId }: DeleteOrderRequest, opts?: OperationOpts): Observable> - deleteOrder({ orderId }: DeleteOrderRequest, opts?: OperationOpts): Observable> { + deleteOrder({ orderId }: DeleteOrderRequest, opts?: OperationOpts): Observable> + deleteOrder({ orderId }: DeleteOrderRequest, opts?: OperationOpts): Observable> { throwIfNullOrUndefined(orderId, 'orderId', 'deleteOrder'); return this.request({ @@ -54,8 +56,8 @@ export class StoreApi extends BaseAPI { * Returns pet inventories by status */ getInventory(): Observable<{ [key: string]: number; }> - getInventory(opts?: OperationOpts): Observable> - getInventory(opts?: OperationOpts): Observable<{ [key: string]: number; } | RawAjaxResponse<{ [key: string]: number; }>> { + getInventory(opts?: OperationOpts): Observable> + getInventory(opts?: OperationOpts): Observable<{ [key: string]: number; } | AjaxResponse<{ [key: string]: number; }>> { const headers: HttpHeaders = { ...(this.configuration.apiKey && { 'api_key': this.configuration.apiKey('api_key') }), // api_key authentication }; @@ -72,8 +74,8 @@ export class StoreApi extends BaseAPI { * Find purchase order by ID */ getOrderById({ orderId }: GetOrderByIdRequest): Observable - getOrderById({ orderId }: GetOrderByIdRequest, opts?: OperationOpts): Observable> - getOrderById({ orderId }: GetOrderByIdRequest, opts?: OperationOpts): Observable> { + getOrderById({ orderId }: GetOrderByIdRequest, opts?: OperationOpts): Observable> + getOrderById({ orderId }: GetOrderByIdRequest, opts?: OperationOpts): Observable> { throwIfNullOrUndefined(orderId, 'orderId', 'getOrderById'); return this.request({ @@ -86,8 +88,8 @@ export class StoreApi extends BaseAPI { * Place an order for a pet */ placeOrder({ body }: PlaceOrderRequest): Observable - placeOrder({ body }: PlaceOrderRequest, opts?: OperationOpts): Observable> - placeOrder({ body }: PlaceOrderRequest, opts?: OperationOpts): Observable> { + placeOrder({ body }: PlaceOrderRequest, opts?: OperationOpts): Observable> + placeOrder({ body }: PlaceOrderRequest, opts?: OperationOpts): Observable> { throwIfNullOrUndefined(body, 'body', 'placeOrder'); const headers: HttpHeaders = { diff --git a/samples/client/petstore/typescript-rxjs/builds/default/apis/UserApi.ts b/samples/client/petstore/typescript-rxjs/builds/default/apis/UserApi.ts index 5f08fdfd658..dd1507f0c25 100644 --- a/samples/client/petstore/typescript-rxjs/builds/default/apis/UserApi.ts +++ b/samples/client/petstore/typescript-rxjs/builds/default/apis/UserApi.ts @@ -11,9 +11,11 @@ * Do not edit the class manually. */ -import { Observable } from 'rxjs'; -import { BaseAPI, HttpHeaders, HttpQuery, throwIfNullOrUndefined, encodeURI, OperationOpts, RawAjaxResponse } from '../runtime'; -import { +import type { Observable } from 'rxjs'; +import type { AjaxResponse } from 'rxjs/ajax'; +import { BaseAPI, throwIfNullOrUndefined, encodeURI } from '../runtime'; +import type { OperationOpts, HttpHeaders, HttpQuery } from '../runtime'; +import type { User, } from '../models'; @@ -57,8 +59,8 @@ export class UserApi extends BaseAPI { * Create user */ createUser({ body }: CreateUserRequest): Observable - createUser({ body }: CreateUserRequest, opts?: OperationOpts): Observable> - createUser({ body }: CreateUserRequest, opts?: OperationOpts): Observable> { + createUser({ body }: CreateUserRequest, opts?: OperationOpts): Observable> + createUser({ body }: CreateUserRequest, opts?: OperationOpts): Observable> { throwIfNullOrUndefined(body, 'body', 'createUser'); const headers: HttpHeaders = { @@ -77,8 +79,8 @@ export class UserApi extends BaseAPI { * Creates list of users with given input array */ createUsersWithArrayInput({ body }: CreateUsersWithArrayInputRequest): Observable - createUsersWithArrayInput({ body }: CreateUsersWithArrayInputRequest, opts?: OperationOpts): Observable> - createUsersWithArrayInput({ body }: CreateUsersWithArrayInputRequest, opts?: OperationOpts): Observable> { + createUsersWithArrayInput({ body }: CreateUsersWithArrayInputRequest, opts?: OperationOpts): Observable> + createUsersWithArrayInput({ body }: CreateUsersWithArrayInputRequest, opts?: OperationOpts): Observable> { throwIfNullOrUndefined(body, 'body', 'createUsersWithArrayInput'); const headers: HttpHeaders = { @@ -97,8 +99,8 @@ export class UserApi extends BaseAPI { * Creates list of users with given input array */ createUsersWithListInput({ body }: CreateUsersWithListInputRequest): Observable - createUsersWithListInput({ body }: CreateUsersWithListInputRequest, opts?: OperationOpts): Observable> - createUsersWithListInput({ body }: CreateUsersWithListInputRequest, opts?: OperationOpts): Observable> { + createUsersWithListInput({ body }: CreateUsersWithListInputRequest, opts?: OperationOpts): Observable> + createUsersWithListInput({ body }: CreateUsersWithListInputRequest, opts?: OperationOpts): Observable> { throwIfNullOrUndefined(body, 'body', 'createUsersWithListInput'); const headers: HttpHeaders = { @@ -118,8 +120,8 @@ export class UserApi extends BaseAPI { * Delete user */ deleteUser({ username }: DeleteUserRequest): Observable - deleteUser({ username }: DeleteUserRequest, opts?: OperationOpts): Observable> - deleteUser({ username }: DeleteUserRequest, opts?: OperationOpts): Observable> { + deleteUser({ username }: DeleteUserRequest, opts?: OperationOpts): Observable> + deleteUser({ username }: DeleteUserRequest, opts?: OperationOpts): Observable> { throwIfNullOrUndefined(username, 'username', 'deleteUser'); return this.request({ @@ -132,8 +134,8 @@ export class UserApi extends BaseAPI { * Get user by user name */ getUserByName({ username }: GetUserByNameRequest): Observable - getUserByName({ username }: GetUserByNameRequest, opts?: OperationOpts): Observable> - getUserByName({ username }: GetUserByNameRequest, opts?: OperationOpts): Observable> { + getUserByName({ username }: GetUserByNameRequest, opts?: OperationOpts): Observable> + getUserByName({ username }: GetUserByNameRequest, opts?: OperationOpts): Observable> { throwIfNullOrUndefined(username, 'username', 'getUserByName'); return this.request({ @@ -146,8 +148,8 @@ export class UserApi extends BaseAPI { * Logs user into the system */ loginUser({ username, password }: LoginUserRequest): Observable - loginUser({ username, password }: LoginUserRequest, opts?: OperationOpts): Observable> - loginUser({ username, password }: LoginUserRequest, opts?: OperationOpts): Observable> { + loginUser({ username, password }: LoginUserRequest, opts?: OperationOpts): Observable> + loginUser({ username, password }: LoginUserRequest, opts?: OperationOpts): Observable> { throwIfNullOrUndefined(username, 'username', 'loginUser'); throwIfNullOrUndefined(password, 'password', 'loginUser'); @@ -167,8 +169,8 @@ export class UserApi extends BaseAPI { * Logs out current logged in user session */ logoutUser(): Observable - logoutUser(opts?: OperationOpts): Observable> - logoutUser(opts?: OperationOpts): Observable> { + logoutUser(opts?: OperationOpts): Observable> + logoutUser(opts?: OperationOpts): Observable> { return this.request({ url: '/user/logout', method: 'GET', @@ -180,8 +182,8 @@ export class UserApi extends BaseAPI { * Updated user */ updateUser({ username, body }: UpdateUserRequest): Observable - updateUser({ username, body }: UpdateUserRequest, opts?: OperationOpts): Observable> - updateUser({ username, body }: UpdateUserRequest, opts?: OperationOpts): Observable> { + updateUser({ username, body }: UpdateUserRequest, opts?: OperationOpts): Observable> + updateUser({ username, body }: UpdateUserRequest, opts?: OperationOpts): Observable> { throwIfNullOrUndefined(username, 'username', 'updateUser'); throwIfNullOrUndefined(body, 'body', 'updateUser'); diff --git a/samples/client/petstore/typescript-rxjs/builds/default/models/Pet.ts b/samples/client/petstore/typescript-rxjs/builds/default/models/Pet.ts index 972ae15fe06..3d20bc0a87d 100644 --- a/samples/client/petstore/typescript-rxjs/builds/default/models/Pet.ts +++ b/samples/client/petstore/typescript-rxjs/builds/default/models/Pet.ts @@ -11,7 +11,7 @@ * Do not edit the class manually. */ -import { +import type { Category, Tag, } from './'; diff --git a/samples/client/petstore/typescript-rxjs/builds/default/runtime.ts b/samples/client/petstore/typescript-rxjs/builds/default/runtime.ts index f321aca5235..88a1393472c 100644 --- a/samples/client/petstore/typescript-rxjs/builds/default/runtime.ts +++ b/samples/client/petstore/typescript-rxjs/builds/default/runtime.ts @@ -11,8 +11,10 @@ * Do not edit the class manually. */ -import { Observable, of } from 'rxjs'; -import { ajax, AjaxRequest, AjaxResponse } from 'rxjs/ajax'; +import { of } from 'rxjs'; +import type { Observable } from 'rxjs'; +import { ajax } from 'rxjs/ajax'; +import type { AjaxConfig, AjaxResponse } from 'rxjs/ajax'; import { map, concatMap } from 'rxjs/operators'; import { servers } from './servers'; @@ -80,9 +82,9 @@ export class BaseAPI { this.withMiddleware(postMiddlewares.map((post) => ({ post }))); protected request(requestOpts: RequestOpts): Observable - protected request(requestOpts: RequestOpts, responseOpts?: ResponseOpts): Observable> - protected request(requestOpts: RequestOpts, responseOpts?: ResponseOpts): Observable> { - return this.rxjsRequest(this.createRequestArgs(requestOpts)).pipe( + protected request(requestOpts: RequestOpts, responseOpts?: ResponseOpts): Observable> + protected request(requestOpts: RequestOpts, responseOpts?: ResponseOpts): Observable> { + return this.rxjsRequest(this.createRequestArgs(requestOpts)).pipe( map((res) => { const { status, response } = res; if (status >= 200 && status < 300) { @@ -93,7 +95,7 @@ export class BaseAPI { ); } - private createRequestArgs = ({ url: baseUrl, query, method, headers, body, responseType }: RequestOpts): RequestArgs => { + private createRequestArgs = ({ url: baseUrl, query, method, headers, body, responseType }: RequestOpts): AjaxConfig => { // only add the queryString to the URL if there are query parameters. // this is done to avoid urls ending with a '?' character which buggy webservers // do not handle correctly sometimes. @@ -108,14 +110,14 @@ export class BaseAPI { }; } - private rxjsRequest = (params: RequestArgs): Observable => + private rxjsRequest = (params: AjaxConfig): Observable> => of(params).pipe( map((request) => { this.middleware.filter((item) => item.pre).forEach((mw) => (request = mw.pre!(request))); return request; }), concatMap((args) => - ajax(args).pipe( + ajax(args).pipe( map((response) => { this.middleware.filter((item) => item.post).forEach((mw) => (response = mw.post!(response))); return response; @@ -153,13 +155,13 @@ export type HttpHeaders = { [key: string]: string }; export type HttpQuery = Partial<{ [key: string]: string | number | null | boolean | Array }>; // partial is needed for strict mode export type HttpBody = Json | FormData; -export interface RequestOpts extends AjaxRequest { +export interface RequestOpts extends AjaxConfig { + // TODO: replace custom 'query' prop with 'queryParams' query?: HttpQuery; // additional prop // the following props have improved types over AjaxRequest method: HttpMethod; headers?: HttpHeaders; body?: HttpBody; - responseType?: 'json' | 'blob' | 'arraybuffer' | 'text'; } export interface ResponseOpts { @@ -170,11 +172,6 @@ export interface OperationOpts { responseOpts?: ResponseOpts; } -// AjaxResponse with typed response -export interface RawAjaxResponse extends AjaxResponse { - response: T; -} - export const encodeURI = (value: any) => encodeURIComponent(`${value}`); const queryString = (params: HttpQuery): string => Object.entries(params) @@ -184,29 +181,13 @@ const queryString = (params: HttpQuery): string => Object.entries(params) ) .join('&'); -// alias fallback for not being a breaking change -export const querystring = queryString; - -/** - * @deprecated - */ -export const throwIfRequired = (params: {[key: string]: any}, key: string, nickname: string) => { - if (!params || params[key] == null) { - throw new RequiredError(`Required parameter ${key} was null or undefined when calling ${nickname}.`); - } -}; - export const throwIfNullOrUndefined = (value: any, paramName: string, nickname: string) => { if (value == null) { throw new Error(`Parameter "${paramName}" was null or undefined when calling "${nickname}".`); } }; -// alias for easier importing -export interface RequestArgs extends AjaxRequest {} -export interface ResponseArgs extends AjaxResponse {} - export interface Middleware { - pre?(request: RequestArgs): RequestArgs; - post?(response: ResponseArgs): ResponseArgs; + pre?(request: AjaxConfig): AjaxConfig; + post?(response: AjaxResponse): AjaxResponse; } diff --git a/samples/client/petstore/typescript-rxjs/builds/default/servers.ts b/samples/client/petstore/typescript-rxjs/builds/default/servers.ts index cdf621ce87d..b6598faed3d 100644 --- a/samples/client/petstore/typescript-rxjs/builds/default/servers.ts +++ b/samples/client/petstore/typescript-rxjs/builds/default/servers.ts @@ -17,11 +17,11 @@ export class ServerConfiguration { } public getConfiguration(): T { - return this.variableConfiguration + return this.variableConfiguration; } public getDescription(): string { - return this.description + return this.description; } /** @@ -34,10 +34,10 @@ export class ServerConfiguration { var re = new RegExp("{" + key + "}","g"); replacedUrl = replacedUrl.replace(re, this.variableConfiguration[key]); } - return replacedUrl + return replacedUrl; } } -const server1 = new ServerConfiguration<{ }>("http://petstore.swagger.io/v2", { }, "") +const server1 = new ServerConfiguration<{ }>("http://petstore.swagger.io/v2", { }, ""); export const servers = [server1]; diff --git a/samples/client/petstore/typescript-rxjs/builds/es6-target/apis/PetApi.ts b/samples/client/petstore/typescript-rxjs/builds/es6-target/apis/PetApi.ts index 026381b12b2..7745f081c8b 100644 --- a/samples/client/petstore/typescript-rxjs/builds/es6-target/apis/PetApi.ts +++ b/samples/client/petstore/typescript-rxjs/builds/es6-target/apis/PetApi.ts @@ -11,9 +11,11 @@ * Do not edit the class manually. */ -import { Observable } from 'rxjs'; -import { BaseAPI, HttpHeaders, HttpQuery, throwIfNullOrUndefined, encodeURI, COLLECTION_FORMATS, OperationOpts, RawAjaxResponse } from '../runtime'; -import { +import type { Observable } from 'rxjs'; +import type { AjaxResponse } from 'rxjs/ajax'; +import { BaseAPI, throwIfNullOrUndefined, encodeURI, COLLECTION_FORMATS } from '../runtime'; +import type { OperationOpts, HttpHeaders, HttpQuery } from '../runtime'; +import type { ApiResponse, Pet, } from '../models'; @@ -64,8 +66,8 @@ export class PetApi extends BaseAPI { * Add a new pet to the store */ addPet({ body }: AddPetRequest): Observable - addPet({ body }: AddPetRequest, opts?: OperationOpts): Observable> - addPet({ body }: AddPetRequest, opts?: OperationOpts): Observable> { + addPet({ body }: AddPetRequest, opts?: OperationOpts): Observable> + addPet({ body }: AddPetRequest, opts?: OperationOpts): Observable> { throwIfNullOrUndefined(body, 'body', 'addPet'); const headers: HttpHeaders = { @@ -91,8 +93,8 @@ export class PetApi extends BaseAPI { * Deletes a pet */ deletePet({ petId, apiKey }: DeletePetRequest): Observable - deletePet({ petId, apiKey }: DeletePetRequest, opts?: OperationOpts): Observable> - deletePet({ petId, apiKey }: DeletePetRequest, opts?: OperationOpts): Observable> { + deletePet({ petId, apiKey }: DeletePetRequest, opts?: OperationOpts): Observable> + deletePet({ petId, apiKey }: DeletePetRequest, opts?: OperationOpts): Observable> { throwIfNullOrUndefined(petId, 'petId', 'deletePet'); const headers: HttpHeaders = { @@ -118,8 +120,8 @@ export class PetApi extends BaseAPI { * Finds Pets by status */ findPetsByStatus({ status }: FindPetsByStatusRequest): Observable> - findPetsByStatus({ status }: FindPetsByStatusRequest, opts?: OperationOpts): Observable>> - findPetsByStatus({ status }: FindPetsByStatusRequest, opts?: OperationOpts): Observable | RawAjaxResponse>> { + findPetsByStatus({ status }: FindPetsByStatusRequest, opts?: OperationOpts): Observable>> + findPetsByStatus({ status }: FindPetsByStatusRequest, opts?: OperationOpts): Observable | AjaxResponse>> { throwIfNullOrUndefined(status, 'status', 'findPetsByStatus'); const headers: HttpHeaders = { @@ -149,8 +151,8 @@ export class PetApi extends BaseAPI { * Finds Pets by tags */ findPetsByTags({ tags }: FindPetsByTagsRequest): Observable> - findPetsByTags({ tags }: FindPetsByTagsRequest, opts?: OperationOpts): Observable>> - findPetsByTags({ tags }: FindPetsByTagsRequest, opts?: OperationOpts): Observable | RawAjaxResponse>> { + findPetsByTags({ tags }: FindPetsByTagsRequest, opts?: OperationOpts): Observable>> + findPetsByTags({ tags }: FindPetsByTagsRequest, opts?: OperationOpts): Observable | AjaxResponse>> { throwIfNullOrUndefined(tags, 'tags', 'findPetsByTags'); const headers: HttpHeaders = { @@ -180,8 +182,8 @@ export class PetApi extends BaseAPI { * Find pet by ID */ getPetById({ petId }: GetPetByIdRequest): Observable - getPetById({ petId }: GetPetByIdRequest, opts?: OperationOpts): Observable> - getPetById({ petId }: GetPetByIdRequest, opts?: OperationOpts): Observable> { + getPetById({ petId }: GetPetByIdRequest, opts?: OperationOpts): Observable> + getPetById({ petId }: GetPetByIdRequest, opts?: OperationOpts): Observable> { throwIfNullOrUndefined(petId, 'petId', 'getPetById'); const headers: HttpHeaders = { @@ -199,8 +201,8 @@ export class PetApi extends BaseAPI { * Update an existing pet */ updatePet({ body }: UpdatePetRequest): Observable - updatePet({ body }: UpdatePetRequest, opts?: OperationOpts): Observable> - updatePet({ body }: UpdatePetRequest, opts?: OperationOpts): Observable> { + updatePet({ body }: UpdatePetRequest, opts?: OperationOpts): Observable> + updatePet({ body }: UpdatePetRequest, opts?: OperationOpts): Observable> { throwIfNullOrUndefined(body, 'body', 'updatePet'); const headers: HttpHeaders = { @@ -226,8 +228,8 @@ export class PetApi extends BaseAPI { * Updates a pet in the store with form data */ updatePetWithForm({ petId, name, status }: UpdatePetWithFormRequest): Observable - updatePetWithForm({ petId, name, status }: UpdatePetWithFormRequest, opts?: OperationOpts): Observable> - updatePetWithForm({ petId, name, status }: UpdatePetWithFormRequest, opts?: OperationOpts): Observable> { + updatePetWithForm({ petId, name, status }: UpdatePetWithFormRequest, opts?: OperationOpts): Observable> + updatePetWithForm({ petId, name, status }: UpdatePetWithFormRequest, opts?: OperationOpts): Observable> { throwIfNullOrUndefined(petId, 'petId', 'updatePetWithForm'); const headers: HttpHeaders = { @@ -256,8 +258,8 @@ export class PetApi extends BaseAPI { * uploads an image */ uploadFile({ petId, additionalMetadata, file }: UploadFileRequest): Observable - uploadFile({ petId, additionalMetadata, file }: UploadFileRequest, opts?: OperationOpts): Observable> - uploadFile({ petId, additionalMetadata, file }: UploadFileRequest, opts?: OperationOpts): Observable> { + uploadFile({ petId, additionalMetadata, file }: UploadFileRequest, opts?: OperationOpts): Observable> + uploadFile({ petId, additionalMetadata, file }: UploadFileRequest, opts?: OperationOpts): Observable> { throwIfNullOrUndefined(petId, 'petId', 'uploadFile'); const headers: HttpHeaders = { diff --git a/samples/client/petstore/typescript-rxjs/builds/es6-target/apis/StoreApi.ts b/samples/client/petstore/typescript-rxjs/builds/es6-target/apis/StoreApi.ts index 5575fe6c3d6..4b41b2501af 100644 --- a/samples/client/petstore/typescript-rxjs/builds/es6-target/apis/StoreApi.ts +++ b/samples/client/petstore/typescript-rxjs/builds/es6-target/apis/StoreApi.ts @@ -11,9 +11,11 @@ * Do not edit the class manually. */ -import { Observable } from 'rxjs'; -import { BaseAPI, HttpHeaders, throwIfNullOrUndefined, encodeURI, OperationOpts, RawAjaxResponse } from '../runtime'; -import { +import type { Observable } from 'rxjs'; +import type { AjaxResponse } from 'rxjs/ajax'; +import { BaseAPI, throwIfNullOrUndefined, encodeURI } from '../runtime'; +import type { OperationOpts, HttpHeaders } from '../runtime'; +import type { Order, } from '../models'; @@ -39,8 +41,8 @@ export class StoreApi extends BaseAPI { * Delete purchase order by ID */ deleteOrder({ orderId }: DeleteOrderRequest): Observable - deleteOrder({ orderId }: DeleteOrderRequest, opts?: OperationOpts): Observable> - deleteOrder({ orderId }: DeleteOrderRequest, opts?: OperationOpts): Observable> { + deleteOrder({ orderId }: DeleteOrderRequest, opts?: OperationOpts): Observable> + deleteOrder({ orderId }: DeleteOrderRequest, opts?: OperationOpts): Observable> { throwIfNullOrUndefined(orderId, 'orderId', 'deleteOrder'); return this.request({ @@ -54,8 +56,8 @@ export class StoreApi extends BaseAPI { * Returns pet inventories by status */ getInventory(): Observable<{ [key: string]: number; }> - getInventory(opts?: OperationOpts): Observable> - getInventory(opts?: OperationOpts): Observable<{ [key: string]: number; } | RawAjaxResponse<{ [key: string]: number; }>> { + getInventory(opts?: OperationOpts): Observable> + getInventory(opts?: OperationOpts): Observable<{ [key: string]: number; } | AjaxResponse<{ [key: string]: number; }>> { const headers: HttpHeaders = { ...(this.configuration.apiKey && { 'api_key': this.configuration.apiKey('api_key') }), // api_key authentication }; @@ -72,8 +74,8 @@ export class StoreApi extends BaseAPI { * Find purchase order by ID */ getOrderById({ orderId }: GetOrderByIdRequest): Observable - getOrderById({ orderId }: GetOrderByIdRequest, opts?: OperationOpts): Observable> - getOrderById({ orderId }: GetOrderByIdRequest, opts?: OperationOpts): Observable> { + getOrderById({ orderId }: GetOrderByIdRequest, opts?: OperationOpts): Observable> + getOrderById({ orderId }: GetOrderByIdRequest, opts?: OperationOpts): Observable> { throwIfNullOrUndefined(orderId, 'orderId', 'getOrderById'); return this.request({ @@ -86,8 +88,8 @@ export class StoreApi extends BaseAPI { * Place an order for a pet */ placeOrder({ body }: PlaceOrderRequest): Observable - placeOrder({ body }: PlaceOrderRequest, opts?: OperationOpts): Observable> - placeOrder({ body }: PlaceOrderRequest, opts?: OperationOpts): Observable> { + placeOrder({ body }: PlaceOrderRequest, opts?: OperationOpts): Observable> + placeOrder({ body }: PlaceOrderRequest, opts?: OperationOpts): Observable> { throwIfNullOrUndefined(body, 'body', 'placeOrder'); const headers: HttpHeaders = { diff --git a/samples/client/petstore/typescript-rxjs/builds/es6-target/apis/UserApi.ts b/samples/client/petstore/typescript-rxjs/builds/es6-target/apis/UserApi.ts index 5f08fdfd658..dd1507f0c25 100644 --- a/samples/client/petstore/typescript-rxjs/builds/es6-target/apis/UserApi.ts +++ b/samples/client/petstore/typescript-rxjs/builds/es6-target/apis/UserApi.ts @@ -11,9 +11,11 @@ * Do not edit the class manually. */ -import { Observable } from 'rxjs'; -import { BaseAPI, HttpHeaders, HttpQuery, throwIfNullOrUndefined, encodeURI, OperationOpts, RawAjaxResponse } from '../runtime'; -import { +import type { Observable } from 'rxjs'; +import type { AjaxResponse } from 'rxjs/ajax'; +import { BaseAPI, throwIfNullOrUndefined, encodeURI } from '../runtime'; +import type { OperationOpts, HttpHeaders, HttpQuery } from '../runtime'; +import type { User, } from '../models'; @@ -57,8 +59,8 @@ export class UserApi extends BaseAPI { * Create user */ createUser({ body }: CreateUserRequest): Observable - createUser({ body }: CreateUserRequest, opts?: OperationOpts): Observable> - createUser({ body }: CreateUserRequest, opts?: OperationOpts): Observable> { + createUser({ body }: CreateUserRequest, opts?: OperationOpts): Observable> + createUser({ body }: CreateUserRequest, opts?: OperationOpts): Observable> { throwIfNullOrUndefined(body, 'body', 'createUser'); const headers: HttpHeaders = { @@ -77,8 +79,8 @@ export class UserApi extends BaseAPI { * Creates list of users with given input array */ createUsersWithArrayInput({ body }: CreateUsersWithArrayInputRequest): Observable - createUsersWithArrayInput({ body }: CreateUsersWithArrayInputRequest, opts?: OperationOpts): Observable> - createUsersWithArrayInput({ body }: CreateUsersWithArrayInputRequest, opts?: OperationOpts): Observable> { + createUsersWithArrayInput({ body }: CreateUsersWithArrayInputRequest, opts?: OperationOpts): Observable> + createUsersWithArrayInput({ body }: CreateUsersWithArrayInputRequest, opts?: OperationOpts): Observable> { throwIfNullOrUndefined(body, 'body', 'createUsersWithArrayInput'); const headers: HttpHeaders = { @@ -97,8 +99,8 @@ export class UserApi extends BaseAPI { * Creates list of users with given input array */ createUsersWithListInput({ body }: CreateUsersWithListInputRequest): Observable - createUsersWithListInput({ body }: CreateUsersWithListInputRequest, opts?: OperationOpts): Observable> - createUsersWithListInput({ body }: CreateUsersWithListInputRequest, opts?: OperationOpts): Observable> { + createUsersWithListInput({ body }: CreateUsersWithListInputRequest, opts?: OperationOpts): Observable> + createUsersWithListInput({ body }: CreateUsersWithListInputRequest, opts?: OperationOpts): Observable> { throwIfNullOrUndefined(body, 'body', 'createUsersWithListInput'); const headers: HttpHeaders = { @@ -118,8 +120,8 @@ export class UserApi extends BaseAPI { * Delete user */ deleteUser({ username }: DeleteUserRequest): Observable - deleteUser({ username }: DeleteUserRequest, opts?: OperationOpts): Observable> - deleteUser({ username }: DeleteUserRequest, opts?: OperationOpts): Observable> { + deleteUser({ username }: DeleteUserRequest, opts?: OperationOpts): Observable> + deleteUser({ username }: DeleteUserRequest, opts?: OperationOpts): Observable> { throwIfNullOrUndefined(username, 'username', 'deleteUser'); return this.request({ @@ -132,8 +134,8 @@ export class UserApi extends BaseAPI { * Get user by user name */ getUserByName({ username }: GetUserByNameRequest): Observable - getUserByName({ username }: GetUserByNameRequest, opts?: OperationOpts): Observable> - getUserByName({ username }: GetUserByNameRequest, opts?: OperationOpts): Observable> { + getUserByName({ username }: GetUserByNameRequest, opts?: OperationOpts): Observable> + getUserByName({ username }: GetUserByNameRequest, opts?: OperationOpts): Observable> { throwIfNullOrUndefined(username, 'username', 'getUserByName'); return this.request({ @@ -146,8 +148,8 @@ export class UserApi extends BaseAPI { * Logs user into the system */ loginUser({ username, password }: LoginUserRequest): Observable - loginUser({ username, password }: LoginUserRequest, opts?: OperationOpts): Observable> - loginUser({ username, password }: LoginUserRequest, opts?: OperationOpts): Observable> { + loginUser({ username, password }: LoginUserRequest, opts?: OperationOpts): Observable> + loginUser({ username, password }: LoginUserRequest, opts?: OperationOpts): Observable> { throwIfNullOrUndefined(username, 'username', 'loginUser'); throwIfNullOrUndefined(password, 'password', 'loginUser'); @@ -167,8 +169,8 @@ export class UserApi extends BaseAPI { * Logs out current logged in user session */ logoutUser(): Observable - logoutUser(opts?: OperationOpts): Observable> - logoutUser(opts?: OperationOpts): Observable> { + logoutUser(opts?: OperationOpts): Observable> + logoutUser(opts?: OperationOpts): Observable> { return this.request({ url: '/user/logout', method: 'GET', @@ -180,8 +182,8 @@ export class UserApi extends BaseAPI { * Updated user */ updateUser({ username, body }: UpdateUserRequest): Observable - updateUser({ username, body }: UpdateUserRequest, opts?: OperationOpts): Observable> - updateUser({ username, body }: UpdateUserRequest, opts?: OperationOpts): Observable> { + updateUser({ username, body }: UpdateUserRequest, opts?: OperationOpts): Observable> + updateUser({ username, body }: UpdateUserRequest, opts?: OperationOpts): Observable> { throwIfNullOrUndefined(username, 'username', 'updateUser'); throwIfNullOrUndefined(body, 'body', 'updateUser'); diff --git a/samples/client/petstore/typescript-rxjs/builds/es6-target/models/Pet.ts b/samples/client/petstore/typescript-rxjs/builds/es6-target/models/Pet.ts index 972ae15fe06..3d20bc0a87d 100644 --- a/samples/client/petstore/typescript-rxjs/builds/es6-target/models/Pet.ts +++ b/samples/client/petstore/typescript-rxjs/builds/es6-target/models/Pet.ts @@ -11,7 +11,7 @@ * Do not edit the class manually. */ -import { +import type { Category, Tag, } from './'; diff --git a/samples/client/petstore/typescript-rxjs/builds/es6-target/package.json b/samples/client/petstore/typescript-rxjs/builds/es6-target/package.json index 69a56b7d42b..66e8036cfdf 100644 --- a/samples/client/petstore/typescript-rxjs/builds/es6-target/package.json +++ b/samples/client/petstore/typescript-rxjs/builds/es6-target/package.json @@ -10,10 +10,10 @@ "prepare": "npm run build" }, "dependencies": { - "rxjs": "^6.3.3" + "rxjs": "^7.2.0" }, "devDependencies": { - "typescript": "^3.7" + "typescript": "^4.0" }, "publishConfig": { "registry": "https://skimdb.npmjs.com/registry" diff --git a/samples/client/petstore/typescript-rxjs/builds/es6-target/runtime.ts b/samples/client/petstore/typescript-rxjs/builds/es6-target/runtime.ts index f321aca5235..88a1393472c 100644 --- a/samples/client/petstore/typescript-rxjs/builds/es6-target/runtime.ts +++ b/samples/client/petstore/typescript-rxjs/builds/es6-target/runtime.ts @@ -11,8 +11,10 @@ * Do not edit the class manually. */ -import { Observable, of } from 'rxjs'; -import { ajax, AjaxRequest, AjaxResponse } from 'rxjs/ajax'; +import { of } from 'rxjs'; +import type { Observable } from 'rxjs'; +import { ajax } from 'rxjs/ajax'; +import type { AjaxConfig, AjaxResponse } from 'rxjs/ajax'; import { map, concatMap } from 'rxjs/operators'; import { servers } from './servers'; @@ -80,9 +82,9 @@ export class BaseAPI { this.withMiddleware(postMiddlewares.map((post) => ({ post }))); protected request(requestOpts: RequestOpts): Observable - protected request(requestOpts: RequestOpts, responseOpts?: ResponseOpts): Observable> - protected request(requestOpts: RequestOpts, responseOpts?: ResponseOpts): Observable> { - return this.rxjsRequest(this.createRequestArgs(requestOpts)).pipe( + protected request(requestOpts: RequestOpts, responseOpts?: ResponseOpts): Observable> + protected request(requestOpts: RequestOpts, responseOpts?: ResponseOpts): Observable> { + return this.rxjsRequest(this.createRequestArgs(requestOpts)).pipe( map((res) => { const { status, response } = res; if (status >= 200 && status < 300) { @@ -93,7 +95,7 @@ export class BaseAPI { ); } - private createRequestArgs = ({ url: baseUrl, query, method, headers, body, responseType }: RequestOpts): RequestArgs => { + private createRequestArgs = ({ url: baseUrl, query, method, headers, body, responseType }: RequestOpts): AjaxConfig => { // only add the queryString to the URL if there are query parameters. // this is done to avoid urls ending with a '?' character which buggy webservers // do not handle correctly sometimes. @@ -108,14 +110,14 @@ export class BaseAPI { }; } - private rxjsRequest = (params: RequestArgs): Observable => + private rxjsRequest = (params: AjaxConfig): Observable> => of(params).pipe( map((request) => { this.middleware.filter((item) => item.pre).forEach((mw) => (request = mw.pre!(request))); return request; }), concatMap((args) => - ajax(args).pipe( + ajax(args).pipe( map((response) => { this.middleware.filter((item) => item.post).forEach((mw) => (response = mw.post!(response))); return response; @@ -153,13 +155,13 @@ export type HttpHeaders = { [key: string]: string }; export type HttpQuery = Partial<{ [key: string]: string | number | null | boolean | Array }>; // partial is needed for strict mode export type HttpBody = Json | FormData; -export interface RequestOpts extends AjaxRequest { +export interface RequestOpts extends AjaxConfig { + // TODO: replace custom 'query' prop with 'queryParams' query?: HttpQuery; // additional prop // the following props have improved types over AjaxRequest method: HttpMethod; headers?: HttpHeaders; body?: HttpBody; - responseType?: 'json' | 'blob' | 'arraybuffer' | 'text'; } export interface ResponseOpts { @@ -170,11 +172,6 @@ export interface OperationOpts { responseOpts?: ResponseOpts; } -// AjaxResponse with typed response -export interface RawAjaxResponse extends AjaxResponse { - response: T; -} - export const encodeURI = (value: any) => encodeURIComponent(`${value}`); const queryString = (params: HttpQuery): string => Object.entries(params) @@ -184,29 +181,13 @@ const queryString = (params: HttpQuery): string => Object.entries(params) ) .join('&'); -// alias fallback for not being a breaking change -export const querystring = queryString; - -/** - * @deprecated - */ -export const throwIfRequired = (params: {[key: string]: any}, key: string, nickname: string) => { - if (!params || params[key] == null) { - throw new RequiredError(`Required parameter ${key} was null or undefined when calling ${nickname}.`); - } -}; - export const throwIfNullOrUndefined = (value: any, paramName: string, nickname: string) => { if (value == null) { throw new Error(`Parameter "${paramName}" was null or undefined when calling "${nickname}".`); } }; -// alias for easier importing -export interface RequestArgs extends AjaxRequest {} -export interface ResponseArgs extends AjaxResponse {} - export interface Middleware { - pre?(request: RequestArgs): RequestArgs; - post?(response: ResponseArgs): ResponseArgs; + pre?(request: AjaxConfig): AjaxConfig; + post?(response: AjaxResponse): AjaxResponse; } diff --git a/samples/client/petstore/typescript-rxjs/builds/es6-target/servers.ts b/samples/client/petstore/typescript-rxjs/builds/es6-target/servers.ts index cdf621ce87d..b6598faed3d 100644 --- a/samples/client/petstore/typescript-rxjs/builds/es6-target/servers.ts +++ b/samples/client/petstore/typescript-rxjs/builds/es6-target/servers.ts @@ -17,11 +17,11 @@ export class ServerConfiguration { } public getConfiguration(): T { - return this.variableConfiguration + return this.variableConfiguration; } public getDescription(): string { - return this.description + return this.description; } /** @@ -34,10 +34,10 @@ export class ServerConfiguration { var re = new RegExp("{" + key + "}","g"); replacedUrl = replacedUrl.replace(re, this.variableConfiguration[key]); } - return replacedUrl + return replacedUrl; } } -const server1 = new ServerConfiguration<{ }>("http://petstore.swagger.io/v2", { }, "") +const server1 = new ServerConfiguration<{ }>("http://petstore.swagger.io/v2", { }, ""); export const servers = [server1]; diff --git a/samples/client/petstore/typescript-rxjs/builds/with-npm-version/apis/PetApi.ts b/samples/client/petstore/typescript-rxjs/builds/with-npm-version/apis/PetApi.ts index 026381b12b2..7745f081c8b 100644 --- a/samples/client/petstore/typescript-rxjs/builds/with-npm-version/apis/PetApi.ts +++ b/samples/client/petstore/typescript-rxjs/builds/with-npm-version/apis/PetApi.ts @@ -11,9 +11,11 @@ * Do not edit the class manually. */ -import { Observable } from 'rxjs'; -import { BaseAPI, HttpHeaders, HttpQuery, throwIfNullOrUndefined, encodeURI, COLLECTION_FORMATS, OperationOpts, RawAjaxResponse } from '../runtime'; -import { +import type { Observable } from 'rxjs'; +import type { AjaxResponse } from 'rxjs/ajax'; +import { BaseAPI, throwIfNullOrUndefined, encodeURI, COLLECTION_FORMATS } from '../runtime'; +import type { OperationOpts, HttpHeaders, HttpQuery } from '../runtime'; +import type { ApiResponse, Pet, } from '../models'; @@ -64,8 +66,8 @@ export class PetApi extends BaseAPI { * Add a new pet to the store */ addPet({ body }: AddPetRequest): Observable - addPet({ body }: AddPetRequest, opts?: OperationOpts): Observable> - addPet({ body }: AddPetRequest, opts?: OperationOpts): Observable> { + addPet({ body }: AddPetRequest, opts?: OperationOpts): Observable> + addPet({ body }: AddPetRequest, opts?: OperationOpts): Observable> { throwIfNullOrUndefined(body, 'body', 'addPet'); const headers: HttpHeaders = { @@ -91,8 +93,8 @@ export class PetApi extends BaseAPI { * Deletes a pet */ deletePet({ petId, apiKey }: DeletePetRequest): Observable - deletePet({ petId, apiKey }: DeletePetRequest, opts?: OperationOpts): Observable> - deletePet({ petId, apiKey }: DeletePetRequest, opts?: OperationOpts): Observable> { + deletePet({ petId, apiKey }: DeletePetRequest, opts?: OperationOpts): Observable> + deletePet({ petId, apiKey }: DeletePetRequest, opts?: OperationOpts): Observable> { throwIfNullOrUndefined(petId, 'petId', 'deletePet'); const headers: HttpHeaders = { @@ -118,8 +120,8 @@ export class PetApi extends BaseAPI { * Finds Pets by status */ findPetsByStatus({ status }: FindPetsByStatusRequest): Observable> - findPetsByStatus({ status }: FindPetsByStatusRequest, opts?: OperationOpts): Observable>> - findPetsByStatus({ status }: FindPetsByStatusRequest, opts?: OperationOpts): Observable | RawAjaxResponse>> { + findPetsByStatus({ status }: FindPetsByStatusRequest, opts?: OperationOpts): Observable>> + findPetsByStatus({ status }: FindPetsByStatusRequest, opts?: OperationOpts): Observable | AjaxResponse>> { throwIfNullOrUndefined(status, 'status', 'findPetsByStatus'); const headers: HttpHeaders = { @@ -149,8 +151,8 @@ export class PetApi extends BaseAPI { * Finds Pets by tags */ findPetsByTags({ tags }: FindPetsByTagsRequest): Observable> - findPetsByTags({ tags }: FindPetsByTagsRequest, opts?: OperationOpts): Observable>> - findPetsByTags({ tags }: FindPetsByTagsRequest, opts?: OperationOpts): Observable | RawAjaxResponse>> { + findPetsByTags({ tags }: FindPetsByTagsRequest, opts?: OperationOpts): Observable>> + findPetsByTags({ tags }: FindPetsByTagsRequest, opts?: OperationOpts): Observable | AjaxResponse>> { throwIfNullOrUndefined(tags, 'tags', 'findPetsByTags'); const headers: HttpHeaders = { @@ -180,8 +182,8 @@ export class PetApi extends BaseAPI { * Find pet by ID */ getPetById({ petId }: GetPetByIdRequest): Observable - getPetById({ petId }: GetPetByIdRequest, opts?: OperationOpts): Observable> - getPetById({ petId }: GetPetByIdRequest, opts?: OperationOpts): Observable> { + getPetById({ petId }: GetPetByIdRequest, opts?: OperationOpts): Observable> + getPetById({ petId }: GetPetByIdRequest, opts?: OperationOpts): Observable> { throwIfNullOrUndefined(petId, 'petId', 'getPetById'); const headers: HttpHeaders = { @@ -199,8 +201,8 @@ export class PetApi extends BaseAPI { * Update an existing pet */ updatePet({ body }: UpdatePetRequest): Observable - updatePet({ body }: UpdatePetRequest, opts?: OperationOpts): Observable> - updatePet({ body }: UpdatePetRequest, opts?: OperationOpts): Observable> { + updatePet({ body }: UpdatePetRequest, opts?: OperationOpts): Observable> + updatePet({ body }: UpdatePetRequest, opts?: OperationOpts): Observable> { throwIfNullOrUndefined(body, 'body', 'updatePet'); const headers: HttpHeaders = { @@ -226,8 +228,8 @@ export class PetApi extends BaseAPI { * Updates a pet in the store with form data */ updatePetWithForm({ petId, name, status }: UpdatePetWithFormRequest): Observable - updatePetWithForm({ petId, name, status }: UpdatePetWithFormRequest, opts?: OperationOpts): Observable> - updatePetWithForm({ petId, name, status }: UpdatePetWithFormRequest, opts?: OperationOpts): Observable> { + updatePetWithForm({ petId, name, status }: UpdatePetWithFormRequest, opts?: OperationOpts): Observable> + updatePetWithForm({ petId, name, status }: UpdatePetWithFormRequest, opts?: OperationOpts): Observable> { throwIfNullOrUndefined(petId, 'petId', 'updatePetWithForm'); const headers: HttpHeaders = { @@ -256,8 +258,8 @@ export class PetApi extends BaseAPI { * uploads an image */ uploadFile({ petId, additionalMetadata, file }: UploadFileRequest): Observable - uploadFile({ petId, additionalMetadata, file }: UploadFileRequest, opts?: OperationOpts): Observable> - uploadFile({ petId, additionalMetadata, file }: UploadFileRequest, opts?: OperationOpts): Observable> { + uploadFile({ petId, additionalMetadata, file }: UploadFileRequest, opts?: OperationOpts): Observable> + uploadFile({ petId, additionalMetadata, file }: UploadFileRequest, opts?: OperationOpts): Observable> { throwIfNullOrUndefined(petId, 'petId', 'uploadFile'); const headers: HttpHeaders = { diff --git a/samples/client/petstore/typescript-rxjs/builds/with-npm-version/apis/StoreApi.ts b/samples/client/petstore/typescript-rxjs/builds/with-npm-version/apis/StoreApi.ts index 5575fe6c3d6..4b41b2501af 100644 --- a/samples/client/petstore/typescript-rxjs/builds/with-npm-version/apis/StoreApi.ts +++ b/samples/client/petstore/typescript-rxjs/builds/with-npm-version/apis/StoreApi.ts @@ -11,9 +11,11 @@ * Do not edit the class manually. */ -import { Observable } from 'rxjs'; -import { BaseAPI, HttpHeaders, throwIfNullOrUndefined, encodeURI, OperationOpts, RawAjaxResponse } from '../runtime'; -import { +import type { Observable } from 'rxjs'; +import type { AjaxResponse } from 'rxjs/ajax'; +import { BaseAPI, throwIfNullOrUndefined, encodeURI } from '../runtime'; +import type { OperationOpts, HttpHeaders } from '../runtime'; +import type { Order, } from '../models'; @@ -39,8 +41,8 @@ export class StoreApi extends BaseAPI { * Delete purchase order by ID */ deleteOrder({ orderId }: DeleteOrderRequest): Observable - deleteOrder({ orderId }: DeleteOrderRequest, opts?: OperationOpts): Observable> - deleteOrder({ orderId }: DeleteOrderRequest, opts?: OperationOpts): Observable> { + deleteOrder({ orderId }: DeleteOrderRequest, opts?: OperationOpts): Observable> + deleteOrder({ orderId }: DeleteOrderRequest, opts?: OperationOpts): Observable> { throwIfNullOrUndefined(orderId, 'orderId', 'deleteOrder'); return this.request({ @@ -54,8 +56,8 @@ export class StoreApi extends BaseAPI { * Returns pet inventories by status */ getInventory(): Observable<{ [key: string]: number; }> - getInventory(opts?: OperationOpts): Observable> - getInventory(opts?: OperationOpts): Observable<{ [key: string]: number; } | RawAjaxResponse<{ [key: string]: number; }>> { + getInventory(opts?: OperationOpts): Observable> + getInventory(opts?: OperationOpts): Observable<{ [key: string]: number; } | AjaxResponse<{ [key: string]: number; }>> { const headers: HttpHeaders = { ...(this.configuration.apiKey && { 'api_key': this.configuration.apiKey('api_key') }), // api_key authentication }; @@ -72,8 +74,8 @@ export class StoreApi extends BaseAPI { * Find purchase order by ID */ getOrderById({ orderId }: GetOrderByIdRequest): Observable - getOrderById({ orderId }: GetOrderByIdRequest, opts?: OperationOpts): Observable> - getOrderById({ orderId }: GetOrderByIdRequest, opts?: OperationOpts): Observable> { + getOrderById({ orderId }: GetOrderByIdRequest, opts?: OperationOpts): Observable> + getOrderById({ orderId }: GetOrderByIdRequest, opts?: OperationOpts): Observable> { throwIfNullOrUndefined(orderId, 'orderId', 'getOrderById'); return this.request({ @@ -86,8 +88,8 @@ export class StoreApi extends BaseAPI { * Place an order for a pet */ placeOrder({ body }: PlaceOrderRequest): Observable - placeOrder({ body }: PlaceOrderRequest, opts?: OperationOpts): Observable> - placeOrder({ body }: PlaceOrderRequest, opts?: OperationOpts): Observable> { + placeOrder({ body }: PlaceOrderRequest, opts?: OperationOpts): Observable> + placeOrder({ body }: PlaceOrderRequest, opts?: OperationOpts): Observable> { throwIfNullOrUndefined(body, 'body', 'placeOrder'); const headers: HttpHeaders = { diff --git a/samples/client/petstore/typescript-rxjs/builds/with-npm-version/apis/UserApi.ts b/samples/client/petstore/typescript-rxjs/builds/with-npm-version/apis/UserApi.ts index 5f08fdfd658..dd1507f0c25 100644 --- a/samples/client/petstore/typescript-rxjs/builds/with-npm-version/apis/UserApi.ts +++ b/samples/client/petstore/typescript-rxjs/builds/with-npm-version/apis/UserApi.ts @@ -11,9 +11,11 @@ * Do not edit the class manually. */ -import { Observable } from 'rxjs'; -import { BaseAPI, HttpHeaders, HttpQuery, throwIfNullOrUndefined, encodeURI, OperationOpts, RawAjaxResponse } from '../runtime'; -import { +import type { Observable } from 'rxjs'; +import type { AjaxResponse } from 'rxjs/ajax'; +import { BaseAPI, throwIfNullOrUndefined, encodeURI } from '../runtime'; +import type { OperationOpts, HttpHeaders, HttpQuery } from '../runtime'; +import type { User, } from '../models'; @@ -57,8 +59,8 @@ export class UserApi extends BaseAPI { * Create user */ createUser({ body }: CreateUserRequest): Observable - createUser({ body }: CreateUserRequest, opts?: OperationOpts): Observable> - createUser({ body }: CreateUserRequest, opts?: OperationOpts): Observable> { + createUser({ body }: CreateUserRequest, opts?: OperationOpts): Observable> + createUser({ body }: CreateUserRequest, opts?: OperationOpts): Observable> { throwIfNullOrUndefined(body, 'body', 'createUser'); const headers: HttpHeaders = { @@ -77,8 +79,8 @@ export class UserApi extends BaseAPI { * Creates list of users with given input array */ createUsersWithArrayInput({ body }: CreateUsersWithArrayInputRequest): Observable - createUsersWithArrayInput({ body }: CreateUsersWithArrayInputRequest, opts?: OperationOpts): Observable> - createUsersWithArrayInput({ body }: CreateUsersWithArrayInputRequest, opts?: OperationOpts): Observable> { + createUsersWithArrayInput({ body }: CreateUsersWithArrayInputRequest, opts?: OperationOpts): Observable> + createUsersWithArrayInput({ body }: CreateUsersWithArrayInputRequest, opts?: OperationOpts): Observable> { throwIfNullOrUndefined(body, 'body', 'createUsersWithArrayInput'); const headers: HttpHeaders = { @@ -97,8 +99,8 @@ export class UserApi extends BaseAPI { * Creates list of users with given input array */ createUsersWithListInput({ body }: CreateUsersWithListInputRequest): Observable - createUsersWithListInput({ body }: CreateUsersWithListInputRequest, opts?: OperationOpts): Observable> - createUsersWithListInput({ body }: CreateUsersWithListInputRequest, opts?: OperationOpts): Observable> { + createUsersWithListInput({ body }: CreateUsersWithListInputRequest, opts?: OperationOpts): Observable> + createUsersWithListInput({ body }: CreateUsersWithListInputRequest, opts?: OperationOpts): Observable> { throwIfNullOrUndefined(body, 'body', 'createUsersWithListInput'); const headers: HttpHeaders = { @@ -118,8 +120,8 @@ export class UserApi extends BaseAPI { * Delete user */ deleteUser({ username }: DeleteUserRequest): Observable - deleteUser({ username }: DeleteUserRequest, opts?: OperationOpts): Observable> - deleteUser({ username }: DeleteUserRequest, opts?: OperationOpts): Observable> { + deleteUser({ username }: DeleteUserRequest, opts?: OperationOpts): Observable> + deleteUser({ username }: DeleteUserRequest, opts?: OperationOpts): Observable> { throwIfNullOrUndefined(username, 'username', 'deleteUser'); return this.request({ @@ -132,8 +134,8 @@ export class UserApi extends BaseAPI { * Get user by user name */ getUserByName({ username }: GetUserByNameRequest): Observable - getUserByName({ username }: GetUserByNameRequest, opts?: OperationOpts): Observable> - getUserByName({ username }: GetUserByNameRequest, opts?: OperationOpts): Observable> { + getUserByName({ username }: GetUserByNameRequest, opts?: OperationOpts): Observable> + getUserByName({ username }: GetUserByNameRequest, opts?: OperationOpts): Observable> { throwIfNullOrUndefined(username, 'username', 'getUserByName'); return this.request({ @@ -146,8 +148,8 @@ export class UserApi extends BaseAPI { * Logs user into the system */ loginUser({ username, password }: LoginUserRequest): Observable - loginUser({ username, password }: LoginUserRequest, opts?: OperationOpts): Observable> - loginUser({ username, password }: LoginUserRequest, opts?: OperationOpts): Observable> { + loginUser({ username, password }: LoginUserRequest, opts?: OperationOpts): Observable> + loginUser({ username, password }: LoginUserRequest, opts?: OperationOpts): Observable> { throwIfNullOrUndefined(username, 'username', 'loginUser'); throwIfNullOrUndefined(password, 'password', 'loginUser'); @@ -167,8 +169,8 @@ export class UserApi extends BaseAPI { * Logs out current logged in user session */ logoutUser(): Observable - logoutUser(opts?: OperationOpts): Observable> - logoutUser(opts?: OperationOpts): Observable> { + logoutUser(opts?: OperationOpts): Observable> + logoutUser(opts?: OperationOpts): Observable> { return this.request({ url: '/user/logout', method: 'GET', @@ -180,8 +182,8 @@ export class UserApi extends BaseAPI { * Updated user */ updateUser({ username, body }: UpdateUserRequest): Observable - updateUser({ username, body }: UpdateUserRequest, opts?: OperationOpts): Observable> - updateUser({ username, body }: UpdateUserRequest, opts?: OperationOpts): Observable> { + updateUser({ username, body }: UpdateUserRequest, opts?: OperationOpts): Observable> + updateUser({ username, body }: UpdateUserRequest, opts?: OperationOpts): Observable> { throwIfNullOrUndefined(username, 'username', 'updateUser'); throwIfNullOrUndefined(body, 'body', 'updateUser'); diff --git a/samples/client/petstore/typescript-rxjs/builds/with-npm-version/models/Pet.ts b/samples/client/petstore/typescript-rxjs/builds/with-npm-version/models/Pet.ts index 972ae15fe06..3d20bc0a87d 100644 --- a/samples/client/petstore/typescript-rxjs/builds/with-npm-version/models/Pet.ts +++ b/samples/client/petstore/typescript-rxjs/builds/with-npm-version/models/Pet.ts @@ -11,7 +11,7 @@ * Do not edit the class manually. */ -import { +import type { Category, Tag, } from './'; diff --git a/samples/client/petstore/typescript-rxjs/builds/with-npm-version/package.json b/samples/client/petstore/typescript-rxjs/builds/with-npm-version/package.json index 69a56b7d42b..66e8036cfdf 100644 --- a/samples/client/petstore/typescript-rxjs/builds/with-npm-version/package.json +++ b/samples/client/petstore/typescript-rxjs/builds/with-npm-version/package.json @@ -10,10 +10,10 @@ "prepare": "npm run build" }, "dependencies": { - "rxjs": "^6.3.3" + "rxjs": "^7.2.0" }, "devDependencies": { - "typescript": "^3.7" + "typescript": "^4.0" }, "publishConfig": { "registry": "https://skimdb.npmjs.com/registry" diff --git a/samples/client/petstore/typescript-rxjs/builds/with-npm-version/runtime.ts b/samples/client/petstore/typescript-rxjs/builds/with-npm-version/runtime.ts index f321aca5235..88a1393472c 100644 --- a/samples/client/petstore/typescript-rxjs/builds/with-npm-version/runtime.ts +++ b/samples/client/petstore/typescript-rxjs/builds/with-npm-version/runtime.ts @@ -11,8 +11,10 @@ * Do not edit the class manually. */ -import { Observable, of } from 'rxjs'; -import { ajax, AjaxRequest, AjaxResponse } from 'rxjs/ajax'; +import { of } from 'rxjs'; +import type { Observable } from 'rxjs'; +import { ajax } from 'rxjs/ajax'; +import type { AjaxConfig, AjaxResponse } from 'rxjs/ajax'; import { map, concatMap } from 'rxjs/operators'; import { servers } from './servers'; @@ -80,9 +82,9 @@ export class BaseAPI { this.withMiddleware(postMiddlewares.map((post) => ({ post }))); protected request(requestOpts: RequestOpts): Observable - protected request(requestOpts: RequestOpts, responseOpts?: ResponseOpts): Observable> - protected request(requestOpts: RequestOpts, responseOpts?: ResponseOpts): Observable> { - return this.rxjsRequest(this.createRequestArgs(requestOpts)).pipe( + protected request(requestOpts: RequestOpts, responseOpts?: ResponseOpts): Observable> + protected request(requestOpts: RequestOpts, responseOpts?: ResponseOpts): Observable> { + return this.rxjsRequest(this.createRequestArgs(requestOpts)).pipe( map((res) => { const { status, response } = res; if (status >= 200 && status < 300) { @@ -93,7 +95,7 @@ export class BaseAPI { ); } - private createRequestArgs = ({ url: baseUrl, query, method, headers, body, responseType }: RequestOpts): RequestArgs => { + private createRequestArgs = ({ url: baseUrl, query, method, headers, body, responseType }: RequestOpts): AjaxConfig => { // only add the queryString to the URL if there are query parameters. // this is done to avoid urls ending with a '?' character which buggy webservers // do not handle correctly sometimes. @@ -108,14 +110,14 @@ export class BaseAPI { }; } - private rxjsRequest = (params: RequestArgs): Observable => + private rxjsRequest = (params: AjaxConfig): Observable> => of(params).pipe( map((request) => { this.middleware.filter((item) => item.pre).forEach((mw) => (request = mw.pre!(request))); return request; }), concatMap((args) => - ajax(args).pipe( + ajax(args).pipe( map((response) => { this.middleware.filter((item) => item.post).forEach((mw) => (response = mw.post!(response))); return response; @@ -153,13 +155,13 @@ export type HttpHeaders = { [key: string]: string }; export type HttpQuery = Partial<{ [key: string]: string | number | null | boolean | Array }>; // partial is needed for strict mode export type HttpBody = Json | FormData; -export interface RequestOpts extends AjaxRequest { +export interface RequestOpts extends AjaxConfig { + // TODO: replace custom 'query' prop with 'queryParams' query?: HttpQuery; // additional prop // the following props have improved types over AjaxRequest method: HttpMethod; headers?: HttpHeaders; body?: HttpBody; - responseType?: 'json' | 'blob' | 'arraybuffer' | 'text'; } export interface ResponseOpts { @@ -170,11 +172,6 @@ export interface OperationOpts { responseOpts?: ResponseOpts; } -// AjaxResponse with typed response -export interface RawAjaxResponse extends AjaxResponse { - response: T; -} - export const encodeURI = (value: any) => encodeURIComponent(`${value}`); const queryString = (params: HttpQuery): string => Object.entries(params) @@ -184,29 +181,13 @@ const queryString = (params: HttpQuery): string => Object.entries(params) ) .join('&'); -// alias fallback for not being a breaking change -export const querystring = queryString; - -/** - * @deprecated - */ -export const throwIfRequired = (params: {[key: string]: any}, key: string, nickname: string) => { - if (!params || params[key] == null) { - throw new RequiredError(`Required parameter ${key} was null or undefined when calling ${nickname}.`); - } -}; - export const throwIfNullOrUndefined = (value: any, paramName: string, nickname: string) => { if (value == null) { throw new Error(`Parameter "${paramName}" was null or undefined when calling "${nickname}".`); } }; -// alias for easier importing -export interface RequestArgs extends AjaxRequest {} -export interface ResponseArgs extends AjaxResponse {} - export interface Middleware { - pre?(request: RequestArgs): RequestArgs; - post?(response: ResponseArgs): ResponseArgs; + pre?(request: AjaxConfig): AjaxConfig; + post?(response: AjaxResponse): AjaxResponse; } diff --git a/samples/client/petstore/typescript-rxjs/builds/with-npm-version/servers.ts b/samples/client/petstore/typescript-rxjs/builds/with-npm-version/servers.ts index cdf621ce87d..b6598faed3d 100644 --- a/samples/client/petstore/typescript-rxjs/builds/with-npm-version/servers.ts +++ b/samples/client/petstore/typescript-rxjs/builds/with-npm-version/servers.ts @@ -17,11 +17,11 @@ export class ServerConfiguration { } public getConfiguration(): T { - return this.variableConfiguration + return this.variableConfiguration; } public getDescription(): string { - return this.description + return this.description; } /** @@ -34,10 +34,10 @@ export class ServerConfiguration { var re = new RegExp("{" + key + "}","g"); replacedUrl = replacedUrl.replace(re, this.variableConfiguration[key]); } - return replacedUrl + return replacedUrl; } } -const server1 = new ServerConfiguration<{ }>("http://petstore.swagger.io/v2", { }, "") +const server1 = new ServerConfiguration<{ }>("http://petstore.swagger.io/v2", { }, ""); export const servers = [server1]; diff --git a/samples/client/petstore/typescript-rxjs/builds/with-progress-subscriber/apis/PetApi.ts b/samples/client/petstore/typescript-rxjs/builds/with-progress-subscriber/apis/PetApi.ts index 0fc16a28bbf..1fd55eca4bc 100644 --- a/samples/client/petstore/typescript-rxjs/builds/with-progress-subscriber/apis/PetApi.ts +++ b/samples/client/petstore/typescript-rxjs/builds/with-progress-subscriber/apis/PetApi.ts @@ -11,9 +11,11 @@ * Do not edit the class manually. */ -import { Observable } from 'rxjs'; -import { BaseAPI, HttpHeaders, HttpQuery, throwIfNullOrUndefined, encodeURI, COLLECTION_FORMATS, OperationOpts, RawAjaxResponse } from '../runtime'; -import { +import type { Observable } from 'rxjs'; +import type { AjaxResponse } from 'rxjs/ajax'; +import { BaseAPI, throwIfNullOrUndefined, encodeURI, COLLECTION_FORMATS } from '../runtime'; +import type { OperationOpts, HttpHeaders, HttpQuery } from '../runtime'; +import type { ApiResponse, Pet, } from '../models'; @@ -65,8 +67,8 @@ export class PetApi extends BaseAPI { */ addPet({ body }: AddPetRequest): Observable addPet({ body }: AddPetRequest, opts?: Pick): Observable - addPet({ body }: AddPetRequest, opts?: OperationOpts): Observable> - addPet({ body }: AddPetRequest, opts?: OperationOpts): Observable> { + addPet({ body }: AddPetRequest, opts?: OperationOpts): Observable> + addPet({ body }: AddPetRequest, opts?: OperationOpts): Observable> { throwIfNullOrUndefined(body, 'body', 'addPet'); const headers: HttpHeaders = { @@ -94,8 +96,8 @@ export class PetApi extends BaseAPI { */ deletePet({ petId, apiKey }: DeletePetRequest): Observable deletePet({ petId, apiKey }: DeletePetRequest, opts?: Pick): Observable - deletePet({ petId, apiKey }: DeletePetRequest, opts?: OperationOpts): Observable> - deletePet({ petId, apiKey }: DeletePetRequest, opts?: OperationOpts): Observable> { + deletePet({ petId, apiKey }: DeletePetRequest, opts?: OperationOpts): Observable> + deletePet({ petId, apiKey }: DeletePetRequest, opts?: OperationOpts): Observable> { throwIfNullOrUndefined(petId, 'petId', 'deletePet'); const headers: HttpHeaders = { @@ -123,8 +125,8 @@ export class PetApi extends BaseAPI { */ findPetsByStatus({ status }: FindPetsByStatusRequest): Observable> findPetsByStatus({ status }: FindPetsByStatusRequest, opts?: Pick): Observable> - findPetsByStatus({ status }: FindPetsByStatusRequest, opts?: OperationOpts): Observable>> - findPetsByStatus({ status }: FindPetsByStatusRequest, opts?: OperationOpts): Observable | RawAjaxResponse>> { + findPetsByStatus({ status }: FindPetsByStatusRequest, opts?: OperationOpts): Observable>> + findPetsByStatus({ status }: FindPetsByStatusRequest, opts?: OperationOpts): Observable | AjaxResponse>> { throwIfNullOrUndefined(status, 'status', 'findPetsByStatus'); const headers: HttpHeaders = { @@ -156,8 +158,8 @@ export class PetApi extends BaseAPI { */ findPetsByTags({ tags }: FindPetsByTagsRequest): Observable> findPetsByTags({ tags }: FindPetsByTagsRequest, opts?: Pick): Observable> - findPetsByTags({ tags }: FindPetsByTagsRequest, opts?: OperationOpts): Observable>> - findPetsByTags({ tags }: FindPetsByTagsRequest, opts?: OperationOpts): Observable | RawAjaxResponse>> { + findPetsByTags({ tags }: FindPetsByTagsRequest, opts?: OperationOpts): Observable>> + findPetsByTags({ tags }: FindPetsByTagsRequest, opts?: OperationOpts): Observable | AjaxResponse>> { throwIfNullOrUndefined(tags, 'tags', 'findPetsByTags'); const headers: HttpHeaders = { @@ -189,8 +191,8 @@ export class PetApi extends BaseAPI { */ getPetById({ petId }: GetPetByIdRequest): Observable getPetById({ petId }: GetPetByIdRequest, opts?: Pick): Observable - getPetById({ petId }: GetPetByIdRequest, opts?: OperationOpts): Observable> - getPetById({ petId }: GetPetByIdRequest, opts?: OperationOpts): Observable> { + getPetById({ petId }: GetPetByIdRequest, opts?: OperationOpts): Observable> + getPetById({ petId }: GetPetByIdRequest, opts?: OperationOpts): Observable> { throwIfNullOrUndefined(petId, 'petId', 'getPetById'); const headers: HttpHeaders = { @@ -210,8 +212,8 @@ export class PetApi extends BaseAPI { */ updatePet({ body }: UpdatePetRequest): Observable updatePet({ body }: UpdatePetRequest, opts?: Pick): Observable - updatePet({ body }: UpdatePetRequest, opts?: OperationOpts): Observable> - updatePet({ body }: UpdatePetRequest, opts?: OperationOpts): Observable> { + updatePet({ body }: UpdatePetRequest, opts?: OperationOpts): Observable> + updatePet({ body }: UpdatePetRequest, opts?: OperationOpts): Observable> { throwIfNullOrUndefined(body, 'body', 'updatePet'); const headers: HttpHeaders = { @@ -239,8 +241,8 @@ export class PetApi extends BaseAPI { */ updatePetWithForm({ petId, name, status }: UpdatePetWithFormRequest): Observable updatePetWithForm({ petId, name, status }: UpdatePetWithFormRequest, opts?: Pick): Observable - updatePetWithForm({ petId, name, status }: UpdatePetWithFormRequest, opts?: OperationOpts): Observable> - updatePetWithForm({ petId, name, status }: UpdatePetWithFormRequest, opts?: OperationOpts): Observable> { + updatePetWithForm({ petId, name, status }: UpdatePetWithFormRequest, opts?: OperationOpts): Observable> + updatePetWithForm({ petId, name, status }: UpdatePetWithFormRequest, opts?: OperationOpts): Observable> { throwIfNullOrUndefined(petId, 'petId', 'updatePetWithForm'); const headers: HttpHeaders = { @@ -271,8 +273,8 @@ export class PetApi extends BaseAPI { */ uploadFile({ petId, additionalMetadata, file }: UploadFileRequest): Observable uploadFile({ petId, additionalMetadata, file }: UploadFileRequest, opts?: Pick): Observable - uploadFile({ petId, additionalMetadata, file }: UploadFileRequest, opts?: OperationOpts): Observable> - uploadFile({ petId, additionalMetadata, file }: UploadFileRequest, opts?: OperationOpts): Observable> { + uploadFile({ petId, additionalMetadata, file }: UploadFileRequest, opts?: OperationOpts): Observable> + uploadFile({ petId, additionalMetadata, file }: UploadFileRequest, opts?: OperationOpts): Observable> { throwIfNullOrUndefined(petId, 'petId', 'uploadFile'); const headers: HttpHeaders = { diff --git a/samples/client/petstore/typescript-rxjs/builds/with-progress-subscriber/apis/StoreApi.ts b/samples/client/petstore/typescript-rxjs/builds/with-progress-subscriber/apis/StoreApi.ts index 55672fd9069..fc5c271bc0f 100644 --- a/samples/client/petstore/typescript-rxjs/builds/with-progress-subscriber/apis/StoreApi.ts +++ b/samples/client/petstore/typescript-rxjs/builds/with-progress-subscriber/apis/StoreApi.ts @@ -11,9 +11,11 @@ * Do not edit the class manually. */ -import { Observable } from 'rxjs'; -import { BaseAPI, HttpHeaders, throwIfNullOrUndefined, encodeURI, OperationOpts, RawAjaxResponse } from '../runtime'; -import { +import type { Observable } from 'rxjs'; +import type { AjaxResponse } from 'rxjs/ajax'; +import { BaseAPI, throwIfNullOrUndefined, encodeURI } from '../runtime'; +import type { OperationOpts, HttpHeaders } from '../runtime'; +import type { Order, } from '../models'; @@ -40,8 +42,8 @@ export class StoreApi extends BaseAPI { */ deleteOrder({ orderId }: DeleteOrderRequest): Observable deleteOrder({ orderId }: DeleteOrderRequest, opts?: Pick): Observable - deleteOrder({ orderId }: DeleteOrderRequest, opts?: OperationOpts): Observable> - deleteOrder({ orderId }: DeleteOrderRequest, opts?: OperationOpts): Observable> { + deleteOrder({ orderId }: DeleteOrderRequest, opts?: OperationOpts): Observable> + deleteOrder({ orderId }: DeleteOrderRequest, opts?: OperationOpts): Observable> { throwIfNullOrUndefined(orderId, 'orderId', 'deleteOrder'); return this.request({ @@ -57,8 +59,8 @@ export class StoreApi extends BaseAPI { */ getInventory(): Observable<{ [key: string]: number; }> getInventory(opts?: Pick): Observable<{ [key: string]: number; }> - getInventory(opts?: OperationOpts): Observable> - getInventory(opts?: OperationOpts): Observable<{ [key: string]: number; } | RawAjaxResponse<{ [key: string]: number; }>> { + getInventory(opts?: OperationOpts): Observable> + getInventory(opts?: OperationOpts): Observable<{ [key: string]: number; } | AjaxResponse<{ [key: string]: number; }>> { const headers: HttpHeaders = { ...(this.configuration.apiKey && { 'api_key': this.configuration.apiKey('api_key') }), // api_key authentication }; @@ -77,8 +79,8 @@ export class StoreApi extends BaseAPI { */ getOrderById({ orderId }: GetOrderByIdRequest): Observable getOrderById({ orderId }: GetOrderByIdRequest, opts?: Pick): Observable - getOrderById({ orderId }: GetOrderByIdRequest, opts?: OperationOpts): Observable> - getOrderById({ orderId }: GetOrderByIdRequest, opts?: OperationOpts): Observable> { + getOrderById({ orderId }: GetOrderByIdRequest, opts?: OperationOpts): Observable> + getOrderById({ orderId }: GetOrderByIdRequest, opts?: OperationOpts): Observable> { throwIfNullOrUndefined(orderId, 'orderId', 'getOrderById'); return this.request({ @@ -93,8 +95,8 @@ export class StoreApi extends BaseAPI { */ placeOrder({ body }: PlaceOrderRequest): Observable placeOrder({ body }: PlaceOrderRequest, opts?: Pick): Observable - placeOrder({ body }: PlaceOrderRequest, opts?: OperationOpts): Observable> - placeOrder({ body }: PlaceOrderRequest, opts?: OperationOpts): Observable> { + placeOrder({ body }: PlaceOrderRequest, opts?: OperationOpts): Observable> + placeOrder({ body }: PlaceOrderRequest, opts?: OperationOpts): Observable> { throwIfNullOrUndefined(body, 'body', 'placeOrder'); const headers: HttpHeaders = { diff --git a/samples/client/petstore/typescript-rxjs/builds/with-progress-subscriber/apis/UserApi.ts b/samples/client/petstore/typescript-rxjs/builds/with-progress-subscriber/apis/UserApi.ts index 1b216533a2f..e7ad80b2769 100644 --- a/samples/client/petstore/typescript-rxjs/builds/with-progress-subscriber/apis/UserApi.ts +++ b/samples/client/petstore/typescript-rxjs/builds/with-progress-subscriber/apis/UserApi.ts @@ -11,9 +11,11 @@ * Do not edit the class manually. */ -import { Observable } from 'rxjs'; -import { BaseAPI, HttpHeaders, HttpQuery, throwIfNullOrUndefined, encodeURI, OperationOpts, RawAjaxResponse } from '../runtime'; -import { +import type { Observable } from 'rxjs'; +import type { AjaxResponse } from 'rxjs/ajax'; +import { BaseAPI, throwIfNullOrUndefined, encodeURI } from '../runtime'; +import type { OperationOpts, HttpHeaders, HttpQuery } from '../runtime'; +import type { User, } from '../models'; @@ -58,8 +60,8 @@ export class UserApi extends BaseAPI { */ createUser({ body }: CreateUserRequest): Observable createUser({ body }: CreateUserRequest, opts?: Pick): Observable - createUser({ body }: CreateUserRequest, opts?: OperationOpts): Observable> - createUser({ body }: CreateUserRequest, opts?: OperationOpts): Observable> { + createUser({ body }: CreateUserRequest, opts?: OperationOpts): Observable> + createUser({ body }: CreateUserRequest, opts?: OperationOpts): Observable> { throwIfNullOrUndefined(body, 'body', 'createUser'); const headers: HttpHeaders = { @@ -80,8 +82,8 @@ export class UserApi extends BaseAPI { */ createUsersWithArrayInput({ body }: CreateUsersWithArrayInputRequest): Observable createUsersWithArrayInput({ body }: CreateUsersWithArrayInputRequest, opts?: Pick): Observable - createUsersWithArrayInput({ body }: CreateUsersWithArrayInputRequest, opts?: OperationOpts): Observable> - createUsersWithArrayInput({ body }: CreateUsersWithArrayInputRequest, opts?: OperationOpts): Observable> { + createUsersWithArrayInput({ body }: CreateUsersWithArrayInputRequest, opts?: OperationOpts): Observable> + createUsersWithArrayInput({ body }: CreateUsersWithArrayInputRequest, opts?: OperationOpts): Observable> { throwIfNullOrUndefined(body, 'body', 'createUsersWithArrayInput'); const headers: HttpHeaders = { @@ -102,8 +104,8 @@ export class UserApi extends BaseAPI { */ createUsersWithListInput({ body }: CreateUsersWithListInputRequest): Observable createUsersWithListInput({ body }: CreateUsersWithListInputRequest, opts?: Pick): Observable - createUsersWithListInput({ body }: CreateUsersWithListInputRequest, opts?: OperationOpts): Observable> - createUsersWithListInput({ body }: CreateUsersWithListInputRequest, opts?: OperationOpts): Observable> { + createUsersWithListInput({ body }: CreateUsersWithListInputRequest, opts?: OperationOpts): Observable> + createUsersWithListInput({ body }: CreateUsersWithListInputRequest, opts?: OperationOpts): Observable> { throwIfNullOrUndefined(body, 'body', 'createUsersWithListInput'); const headers: HttpHeaders = { @@ -125,8 +127,8 @@ export class UserApi extends BaseAPI { */ deleteUser({ username }: DeleteUserRequest): Observable deleteUser({ username }: DeleteUserRequest, opts?: Pick): Observable - deleteUser({ username }: DeleteUserRequest, opts?: OperationOpts): Observable> - deleteUser({ username }: DeleteUserRequest, opts?: OperationOpts): Observable> { + deleteUser({ username }: DeleteUserRequest, opts?: OperationOpts): Observable> + deleteUser({ username }: DeleteUserRequest, opts?: OperationOpts): Observable> { throwIfNullOrUndefined(username, 'username', 'deleteUser'); return this.request({ @@ -141,8 +143,8 @@ export class UserApi extends BaseAPI { */ getUserByName({ username }: GetUserByNameRequest): Observable getUserByName({ username }: GetUserByNameRequest, opts?: Pick): Observable - getUserByName({ username }: GetUserByNameRequest, opts?: OperationOpts): Observable> - getUserByName({ username }: GetUserByNameRequest, opts?: OperationOpts): Observable> { + getUserByName({ username }: GetUserByNameRequest, opts?: OperationOpts): Observable> + getUserByName({ username }: GetUserByNameRequest, opts?: OperationOpts): Observable> { throwIfNullOrUndefined(username, 'username', 'getUserByName'); return this.request({ @@ -157,8 +159,8 @@ export class UserApi extends BaseAPI { */ loginUser({ username, password }: LoginUserRequest): Observable loginUser({ username, password }: LoginUserRequest, opts?: Pick): Observable - loginUser({ username, password }: LoginUserRequest, opts?: OperationOpts): Observable> - loginUser({ username, password }: LoginUserRequest, opts?: OperationOpts): Observable> { + loginUser({ username, password }: LoginUserRequest, opts?: OperationOpts): Observable> + loginUser({ username, password }: LoginUserRequest, opts?: OperationOpts): Observable> { throwIfNullOrUndefined(username, 'username', 'loginUser'); throwIfNullOrUndefined(password, 'password', 'loginUser'); @@ -180,8 +182,8 @@ export class UserApi extends BaseAPI { */ logoutUser(): Observable logoutUser(opts?: Pick): Observable - logoutUser(opts?: OperationOpts): Observable> - logoutUser(opts?: OperationOpts): Observable> { + logoutUser(opts?: OperationOpts): Observable> + logoutUser(opts?: OperationOpts): Observable> { return this.request({ url: '/user/logout', method: 'GET', @@ -195,8 +197,8 @@ export class UserApi extends BaseAPI { */ updateUser({ username, body }: UpdateUserRequest): Observable updateUser({ username, body }: UpdateUserRequest, opts?: Pick): Observable - updateUser({ username, body }: UpdateUserRequest, opts?: OperationOpts): Observable> - updateUser({ username, body }: UpdateUserRequest, opts?: OperationOpts): Observable> { + updateUser({ username, body }: UpdateUserRequest, opts?: OperationOpts): Observable> + updateUser({ username, body }: UpdateUserRequest, opts?: OperationOpts): Observable> { throwIfNullOrUndefined(username, 'username', 'updateUser'); throwIfNullOrUndefined(body, 'body', 'updateUser'); diff --git a/samples/client/petstore/typescript-rxjs/builds/with-progress-subscriber/models/Pet.ts b/samples/client/petstore/typescript-rxjs/builds/with-progress-subscriber/models/Pet.ts index 972ae15fe06..3d20bc0a87d 100644 --- a/samples/client/petstore/typescript-rxjs/builds/with-progress-subscriber/models/Pet.ts +++ b/samples/client/petstore/typescript-rxjs/builds/with-progress-subscriber/models/Pet.ts @@ -11,7 +11,7 @@ * Do not edit the class manually. */ -import { +import type { Category, Tag, } from './'; diff --git a/samples/client/petstore/typescript-rxjs/builds/with-progress-subscriber/runtime.ts b/samples/client/petstore/typescript-rxjs/builds/with-progress-subscriber/runtime.ts index 7238c7b7829..7133ac675b6 100644 --- a/samples/client/petstore/typescript-rxjs/builds/with-progress-subscriber/runtime.ts +++ b/samples/client/petstore/typescript-rxjs/builds/with-progress-subscriber/runtime.ts @@ -11,8 +11,10 @@ * Do not edit the class manually. */ -import { Observable, of, Subscriber } from 'rxjs'; -import { ajax, AjaxRequest, AjaxResponse } from 'rxjs/ajax'; +import { of } from 'rxjs'; +import type { Observable, Subscriber } from 'rxjs'; +import { ajax } from 'rxjs/ajax'; +import type { AjaxConfig, AjaxResponse } from 'rxjs/ajax'; import { map, concatMap } from 'rxjs/operators'; import { servers } from './servers'; @@ -80,9 +82,9 @@ export class BaseAPI { this.withMiddleware(postMiddlewares.map((post) => ({ post }))); protected request(requestOpts: RequestOpts): Observable - protected request(requestOpts: RequestOpts, responseOpts?: ResponseOpts): Observable> - protected request(requestOpts: RequestOpts, responseOpts?: ResponseOpts): Observable> { - return this.rxjsRequest(this.createRequestArgs(requestOpts)).pipe( + protected request(requestOpts: RequestOpts, responseOpts?: ResponseOpts): Observable> + protected request(requestOpts: RequestOpts, responseOpts?: ResponseOpts): Observable> { + return this.rxjsRequest(this.createRequestArgs(requestOpts)).pipe( map((res) => { const { status, response } = res; if (status >= 200 && status < 300) { @@ -93,7 +95,7 @@ export class BaseAPI { ); } - private createRequestArgs = ({ url: baseUrl, query, method, headers, body, responseType, progressSubscriber }: RequestOpts): RequestArgs => { + private createRequestArgs = ({ url: baseUrl, query, method, headers, body, responseType, progressSubscriber }: RequestOpts): AjaxConfig => { // only add the queryString to the URL if there are query parameters. // this is done to avoid urls ending with a '?' character which buggy webservers // do not handle correctly sometimes. @@ -109,14 +111,14 @@ export class BaseAPI { }; } - private rxjsRequest = (params: RequestArgs): Observable => + private rxjsRequest = (params: AjaxConfig): Observable> => of(params).pipe( map((request) => { this.middleware.filter((item) => item.pre).forEach((mw) => (request = mw.pre!(request))); return request; }), concatMap((args) => - ajax(args).pipe( + ajax(args).pipe( map((response) => { this.middleware.filter((item) => item.post).forEach((mw) => (response = mw.post!(response))); return response; @@ -154,13 +156,13 @@ export type HttpHeaders = { [key: string]: string }; export type HttpQuery = Partial<{ [key: string]: string | number | null | boolean | Array }>; // partial is needed for strict mode export type HttpBody = Json | FormData; -export interface RequestOpts extends AjaxRequest { +export interface RequestOpts extends AjaxConfig { + // TODO: replace custom 'query' prop with 'queryParams' query?: HttpQuery; // additional prop // the following props have improved types over AjaxRequest method: HttpMethod; headers?: HttpHeaders; body?: HttpBody; - responseType?: 'json' | 'blob' | 'arraybuffer' | 'text'; progressSubscriber?: Subscriber; } @@ -173,11 +175,6 @@ export interface OperationOpts { responseOpts?: ResponseOpts; } -// AjaxResponse with typed response -export interface RawAjaxResponse extends AjaxResponse { - response: T; -} - export const encodeURI = (value: any) => encodeURIComponent(`${value}`); const queryString = (params: HttpQuery): string => Object.entries(params) @@ -187,29 +184,13 @@ const queryString = (params: HttpQuery): string => Object.entries(params) ) .join('&'); -// alias fallback for not being a breaking change -export const querystring = queryString; - -/** - * @deprecated - */ -export const throwIfRequired = (params: {[key: string]: any}, key: string, nickname: string) => { - if (!params || params[key] == null) { - throw new RequiredError(`Required parameter ${key} was null or undefined when calling ${nickname}.`); - } -}; - export const throwIfNullOrUndefined = (value: any, paramName: string, nickname: string) => { if (value == null) { throw new Error(`Parameter "${paramName}" was null or undefined when calling "${nickname}".`); } }; -// alias for easier importing -export interface RequestArgs extends AjaxRequest {} -export interface ResponseArgs extends AjaxResponse {} - export interface Middleware { - pre?(request: RequestArgs): RequestArgs; - post?(response: ResponseArgs): ResponseArgs; + pre?(request: AjaxConfig): AjaxConfig; + post?(response: AjaxResponse): AjaxResponse; } diff --git a/samples/client/petstore/typescript-rxjs/builds/with-progress-subscriber/servers.ts b/samples/client/petstore/typescript-rxjs/builds/with-progress-subscriber/servers.ts index cdf621ce87d..b6598faed3d 100644 --- a/samples/client/petstore/typescript-rxjs/builds/with-progress-subscriber/servers.ts +++ b/samples/client/petstore/typescript-rxjs/builds/with-progress-subscriber/servers.ts @@ -17,11 +17,11 @@ export class ServerConfiguration { } public getConfiguration(): T { - return this.variableConfiguration + return this.variableConfiguration; } public getDescription(): string { - return this.description + return this.description; } /** @@ -34,10 +34,10 @@ export class ServerConfiguration { var re = new RegExp("{" + key + "}","g"); replacedUrl = replacedUrl.replace(re, this.variableConfiguration[key]); } - return replacedUrl + return replacedUrl; } } -const server1 = new ServerConfiguration<{ }>("http://petstore.swagger.io/v2", { }, "") +const server1 = new ServerConfiguration<{ }>("http://petstore.swagger.io/v2", { }, ""); export const servers = [server1];