[typescript-rxjs] add rxjs 7 support (#9958)

* feat(typescript-rxjs): add support for rxjs 7.2.0, use type imports

* feat(typescript-rxjs): regenerate samples

* feat(typescript-rxjs): use generic T instead of any in BaseAPI

* feat(typescript-rxjs): regenerate samples
This commit is contained in:
Bernd Hacker 2022-02-03 09:52:01 +01:00 committed by GitHub
parent 80082c73c4
commit dc1df25f29
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
34 changed files with 331 additions and 400 deletions

View File

@ -1,9 +1,11 @@
// tslint:disable // tslint:disable
{{>licenseInfo}} {{>licenseInfo}}
import { Observable } from 'rxjs'; import type { 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 { 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}} {{#imports.0}}
import { import type {
{{#imports}} {{#imports}}
{{className}}, {{className}},
{{/imports}} {{/imports}}
@ -41,8 +43,8 @@ export class {{classname}} extends BaseAPI {
{{#withProgressSubscriber}} {{#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<OperationOpts, 'progressSubscriber'>): Observable<{{{returnType}}}{{^returnType}}void{{/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?: Pick<OperationOpts, 'progressSubscriber'>): Observable<{{{returnType}}}{{^returnType}}void{{/returnType}}>
{{/withProgressSubscriber}} {{/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<void>{{/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<void>{{/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<void>{{/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<void>{{/returnType}}> {
{{#hasParams}} {{#hasParams}}
{{#allParams}} {{#allParams}}
{{#required}} {{#required}}

View File

@ -1,5 +1,5 @@
{{#hasImports}} {{#hasImports}}
import { import type {
{{#imports}} {{#imports}}
{{{.}}}, {{{.}}},
{{/imports}} {{/imports}}

View File

@ -1,5 +1,5 @@
{{#hasImports}} {{#hasImports}}
import { import type {
{{#imports}} {{#imports}}
{{{.}}}, {{{.}}},
{{/imports}} {{/imports}}

View File

@ -1,5 +1,5 @@
{{#hasImports}} {{#hasImports}}
import { import type {
{{#imports}} {{#imports}}
{{{.}}}, {{{.}}},
{{/imports}} {{/imports}}

View File

@ -10,10 +10,10 @@
"prepare": "npm run build" "prepare": "npm run build"
}, },
"dependencies": { "dependencies": {
"rxjs": "^6.3.3" "rxjs": "^7.2.0"
}, },
"devDependencies": { "devDependencies": {
"typescript": "^3.7" "typescript": "^4.0"
}{{#npmRepository}},{{/npmRepository}} }{{#npmRepository}},{{/npmRepository}}
{{#npmRepository}} {{#npmRepository}}
"publishConfig": { "publishConfig": {

View File

@ -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}} {{#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}}

View File

@ -1,7 +1,9 @@
// tslint:disable // tslint:disable
{{>licenseInfo}} {{>licenseInfo}}
import { Observable, of{{#withProgressSubscriber}}, Subscriber{{/withProgressSubscriber}} } from 'rxjs'; import { of } from 'rxjs';
import { ajax, AjaxRequest, AjaxResponse } from 'rxjs/ajax'; 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 { map, concatMap } from 'rxjs/operators';
import { servers } from './servers'; import { servers } from './servers';
@ -69,9 +71,9 @@ export class BaseAPI {
this.withMiddleware(postMiddlewares.map((post) => ({ post }))); this.withMiddleware(postMiddlewares.map((post) => ({ post })));
protected request<T>(requestOpts: RequestOpts): Observable<T> protected request<T>(requestOpts: RequestOpts): Observable<T>
protected request<T>(requestOpts: RequestOpts, responseOpts?: ResponseOpts): Observable<RawAjaxResponse<T>> protected request<T>(requestOpts: RequestOpts, responseOpts?: ResponseOpts): Observable<AjaxResponse<T>>
protected request<T>(requestOpts: RequestOpts, responseOpts?: ResponseOpts): Observable<T | RawAjaxResponse<T>> { protected request<T>(requestOpts: RequestOpts, responseOpts?: ResponseOpts): Observable<T | AjaxResponse<T>> {
return this.rxjsRequest(this.createRequestArgs(requestOpts)).pipe( return this.rxjsRequest<T>(this.createRequestArgs(requestOpts)).pipe(
map((res) => { map((res) => {
const { status, response } = res; const { status, response } = res;
if (status >= 200 && status < 300) { 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. // 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 // this is done to avoid urls ending with a '?' character which buggy webservers
// do not handle correctly sometimes. // do not handle correctly sometimes.
@ -100,14 +102,14 @@ export class BaseAPI {
}; };
} }
private rxjsRequest = (params: RequestArgs): Observable<AjaxResponse> => private rxjsRequest = <T>(params: AjaxConfig): Observable<AjaxResponse<T>> =>
of(params).pipe( of(params).pipe(
map((request) => { map((request) => {
this.middleware.filter((item) => item.pre).forEach((mw) => (request = mw.pre!(request))); this.middleware.filter((item) => item.pre).forEach((mw) => (request = mw.pre!(request)));
return request; return request;
}), }),
concatMap((args) => concatMap((args) =>
ajax(args).pipe( ajax<T>(args).pipe(
map((response) => { map((response) => {
this.middleware.filter((item) => item.post).forEach((mw) => (response = mw.post!(response))); this.middleware.filter((item) => item.post).forEach((mw) => (response = mw.post!(response)));
return response; return response;
@ -145,13 +147,13 @@ export type HttpHeaders = { [key: string]: string };
export type HttpQuery = Partial<{ [key: string]: string | number | null | boolean | Array<string | number | null | boolean> }>; // partial is needed for strict mode export type HttpQuery = Partial<{ [key: string]: string | number | null | boolean | Array<string | number | null | boolean> }>; // partial is needed for strict mode
export type HttpBody = Json | FormData; 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 query?: HttpQuery; // additional prop
// the following props have improved types over AjaxRequest // the following props have improved types over AjaxRequest
method: HttpMethod; method: HttpMethod;
headers?: HttpHeaders; headers?: HttpHeaders;
body?: HttpBody; body?: HttpBody;
responseType?: 'json' | 'blob' | 'arraybuffer' | 'text';
{{#withProgressSubscriber}} {{#withProgressSubscriber}}
progressSubscriber?: Subscriber<ProgressEvent>; progressSubscriber?: Subscriber<ProgressEvent>;
{{/withProgressSubscriber}} {{/withProgressSubscriber}}
@ -168,11 +170,6 @@ export interface OperationOpts {
responseOpts?: ResponseOpts; responseOpts?: ResponseOpts;
} }
// AjaxResponse with typed response
export interface RawAjaxResponse<T> extends AjaxResponse {
response: T;
}
export const encodeURI = (value: any) => encodeURIComponent(`${value}`); export const encodeURI = (value: any) => encodeURIComponent(`${value}`);
const queryString = (params: HttpQuery): string => Object.entries(params) const queryString = (params: HttpQuery): string => Object.entries(params)
@ -182,29 +179,13 @@ const queryString = (params: HttpQuery): string => Object.entries(params)
) )
.join('&'); .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) => { export const throwIfNullOrUndefined = (value: any, paramName: string, nickname: string) => {
if (value == null) { if (value == null) {
throw new Error(`Parameter "${paramName}" was null or undefined when calling "${nickname}".`); 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 { export interface Middleware {
pre?(request: RequestArgs): RequestArgs; pre?(request: AjaxConfig): AjaxConfig;
post?(response: ResponseArgs): ResponseArgs; post?(response: AjaxResponse<any>): AjaxResponse<any>;
} }

View File

@ -17,11 +17,11 @@ export class ServerConfiguration<T extends { [key: string]: string }> {
} }
public getConfiguration(): T { public getConfiguration(): T {
return this.variableConfiguration return this.variableConfiguration;
} }
public getDescription(): string { public getDescription(): string {
return this.description return this.description;
} }
/** /**
@ -34,12 +34,12 @@ export class ServerConfiguration<T extends { [key: string]: string }> {
var re = new RegExp("{" + key + "}","g"); var re = new RegExp("{" + key + "}","g");
replacedUrl = replacedUrl.replace(re, this.variableConfiguration[key]); replacedUrl = replacedUrl.replace(re, this.variableConfiguration[key]);
} }
return replacedUrl return replacedUrl;
} }
} }
{{#servers}} {{#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}} {{/servers}}
export const servers = [{{#servers}}server{{-index}}{{^-last}}, {{/-last}}{{/servers}}]; export const servers = [{{#servers}}server{{-index}}{{^-last}}, {{/-last}}{{/servers}}];

View File

@ -11,9 +11,11 @@
* Do not edit the class manually. * Do not edit the class manually.
*/ */
import { Observable } from 'rxjs'; import type { Observable } from 'rxjs';
import { BaseAPI, HttpHeaders, HttpQuery, throwIfNullOrUndefined, encodeURI, COLLECTION_FORMATS, OperationOpts, RawAjaxResponse } from '../runtime'; import type { AjaxResponse } from 'rxjs/ajax';
import { import { BaseAPI, throwIfNullOrUndefined, encodeURI, COLLECTION_FORMATS } from '../runtime';
import type { OperationOpts, HttpHeaders, HttpQuery } from '../runtime';
import type {
ApiResponse, ApiResponse,
Pet, Pet,
} from '../models'; } from '../models';
@ -64,8 +66,8 @@ export class PetApi extends BaseAPI {
* Add a new pet to the store * Add a new pet to the store
*/ */
addPet({ body }: AddPetRequest): Observable<void> addPet({ body }: AddPetRequest): Observable<void>
addPet({ body }: AddPetRequest, opts?: OperationOpts): Observable<void | RawAjaxResponse<void>> addPet({ body }: AddPetRequest, opts?: OperationOpts): Observable<void | AjaxResponse<void>>
addPet({ body }: AddPetRequest, opts?: OperationOpts): Observable<void | RawAjaxResponse<void>> { addPet({ body }: AddPetRequest, opts?: OperationOpts): Observable<void | AjaxResponse<void>> {
throwIfNullOrUndefined(body, 'body', 'addPet'); throwIfNullOrUndefined(body, 'body', 'addPet');
const headers: HttpHeaders = { const headers: HttpHeaders = {
@ -91,8 +93,8 @@ export class PetApi extends BaseAPI {
* Deletes a pet * Deletes a pet
*/ */
deletePet({ petId, apiKey }: DeletePetRequest): Observable<void> deletePet({ petId, apiKey }: DeletePetRequest): Observable<void>
deletePet({ petId, apiKey }: DeletePetRequest, opts?: OperationOpts): Observable<void | RawAjaxResponse<void>> deletePet({ petId, apiKey }: DeletePetRequest, opts?: OperationOpts): Observable<void | AjaxResponse<void>>
deletePet({ petId, apiKey }: DeletePetRequest, opts?: OperationOpts): Observable<void | RawAjaxResponse<void>> { deletePet({ petId, apiKey }: DeletePetRequest, opts?: OperationOpts): Observable<void | AjaxResponse<void>> {
throwIfNullOrUndefined(petId, 'petId', 'deletePet'); throwIfNullOrUndefined(petId, 'petId', 'deletePet');
const headers: HttpHeaders = { const headers: HttpHeaders = {
@ -118,8 +120,8 @@ export class PetApi extends BaseAPI {
* Finds Pets by status * Finds Pets by status
*/ */
findPetsByStatus({ status }: FindPetsByStatusRequest): Observable<Array<Pet>> findPetsByStatus({ status }: FindPetsByStatusRequest): Observable<Array<Pet>>
findPetsByStatus({ status }: FindPetsByStatusRequest, opts?: OperationOpts): Observable<RawAjaxResponse<Array<Pet>>> findPetsByStatus({ status }: FindPetsByStatusRequest, opts?: OperationOpts): Observable<AjaxResponse<Array<Pet>>>
findPetsByStatus({ status }: FindPetsByStatusRequest, opts?: OperationOpts): Observable<Array<Pet> | RawAjaxResponse<Array<Pet>>> { findPetsByStatus({ status }: FindPetsByStatusRequest, opts?: OperationOpts): Observable<Array<Pet> | AjaxResponse<Array<Pet>>> {
throwIfNullOrUndefined(status, 'status', 'findPetsByStatus'); throwIfNullOrUndefined(status, 'status', 'findPetsByStatus');
const headers: HttpHeaders = { const headers: HttpHeaders = {
@ -149,8 +151,8 @@ export class PetApi extends BaseAPI {
* Finds Pets by tags * Finds Pets by tags
*/ */
findPetsByTags({ tags }: FindPetsByTagsRequest): Observable<Array<Pet>> findPetsByTags({ tags }: FindPetsByTagsRequest): Observable<Array<Pet>>
findPetsByTags({ tags }: FindPetsByTagsRequest, opts?: OperationOpts): Observable<RawAjaxResponse<Array<Pet>>> findPetsByTags({ tags }: FindPetsByTagsRequest, opts?: OperationOpts): Observable<AjaxResponse<Array<Pet>>>
findPetsByTags({ tags }: FindPetsByTagsRequest, opts?: OperationOpts): Observable<Array<Pet> | RawAjaxResponse<Array<Pet>>> { findPetsByTags({ tags }: FindPetsByTagsRequest, opts?: OperationOpts): Observable<Array<Pet> | AjaxResponse<Array<Pet>>> {
throwIfNullOrUndefined(tags, 'tags', 'findPetsByTags'); throwIfNullOrUndefined(tags, 'tags', 'findPetsByTags');
const headers: HttpHeaders = { const headers: HttpHeaders = {
@ -180,8 +182,8 @@ export class PetApi extends BaseAPI {
* Find pet by ID * Find pet by ID
*/ */
getPetById({ petId }: GetPetByIdRequest): Observable<Pet> getPetById({ petId }: GetPetByIdRequest): Observable<Pet>
getPetById({ petId }: GetPetByIdRequest, opts?: OperationOpts): Observable<RawAjaxResponse<Pet>> getPetById({ petId }: GetPetByIdRequest, opts?: OperationOpts): Observable<AjaxResponse<Pet>>
getPetById({ petId }: GetPetByIdRequest, opts?: OperationOpts): Observable<Pet | RawAjaxResponse<Pet>> { getPetById({ petId }: GetPetByIdRequest, opts?: OperationOpts): Observable<Pet | AjaxResponse<Pet>> {
throwIfNullOrUndefined(petId, 'petId', 'getPetById'); throwIfNullOrUndefined(petId, 'petId', 'getPetById');
const headers: HttpHeaders = { const headers: HttpHeaders = {
@ -199,8 +201,8 @@ export class PetApi extends BaseAPI {
* Update an existing pet * Update an existing pet
*/ */
updatePet({ body }: UpdatePetRequest): Observable<void> updatePet({ body }: UpdatePetRequest): Observable<void>
updatePet({ body }: UpdatePetRequest, opts?: OperationOpts): Observable<void | RawAjaxResponse<void>> updatePet({ body }: UpdatePetRequest, opts?: OperationOpts): Observable<void | AjaxResponse<void>>
updatePet({ body }: UpdatePetRequest, opts?: OperationOpts): Observable<void | RawAjaxResponse<void>> { updatePet({ body }: UpdatePetRequest, opts?: OperationOpts): Observable<void | AjaxResponse<void>> {
throwIfNullOrUndefined(body, 'body', 'updatePet'); throwIfNullOrUndefined(body, 'body', 'updatePet');
const headers: HttpHeaders = { const headers: HttpHeaders = {
@ -226,8 +228,8 @@ export class PetApi extends BaseAPI {
* Updates a pet in the store with form data * Updates a pet in the store with form data
*/ */
updatePetWithForm({ petId, name, status }: UpdatePetWithFormRequest): Observable<void> updatePetWithForm({ petId, name, status }: UpdatePetWithFormRequest): Observable<void>
updatePetWithForm({ petId, name, status }: UpdatePetWithFormRequest, opts?: OperationOpts): Observable<void | RawAjaxResponse<void>> updatePetWithForm({ petId, name, status }: UpdatePetWithFormRequest, opts?: OperationOpts): Observable<void | AjaxResponse<void>>
updatePetWithForm({ petId, name, status }: UpdatePetWithFormRequest, opts?: OperationOpts): Observable<void | RawAjaxResponse<void>> { updatePetWithForm({ petId, name, status }: UpdatePetWithFormRequest, opts?: OperationOpts): Observable<void | AjaxResponse<void>> {
throwIfNullOrUndefined(petId, 'petId', 'updatePetWithForm'); throwIfNullOrUndefined(petId, 'petId', 'updatePetWithForm');
const headers: HttpHeaders = { const headers: HttpHeaders = {
@ -256,8 +258,8 @@ export class PetApi extends BaseAPI {
* uploads an image * uploads an image
*/ */
uploadFile({ petId, additionalMetadata, file }: UploadFileRequest): Observable<ApiResponse> uploadFile({ petId, additionalMetadata, file }: UploadFileRequest): Observable<ApiResponse>
uploadFile({ petId, additionalMetadata, file }: UploadFileRequest, opts?: OperationOpts): Observable<RawAjaxResponse<ApiResponse>> uploadFile({ petId, additionalMetadata, file }: UploadFileRequest, opts?: OperationOpts): Observable<AjaxResponse<ApiResponse>>
uploadFile({ petId, additionalMetadata, file }: UploadFileRequest, opts?: OperationOpts): Observable<ApiResponse | RawAjaxResponse<ApiResponse>> { uploadFile({ petId, additionalMetadata, file }: UploadFileRequest, opts?: OperationOpts): Observable<ApiResponse | AjaxResponse<ApiResponse>> {
throwIfNullOrUndefined(petId, 'petId', 'uploadFile'); throwIfNullOrUndefined(petId, 'petId', 'uploadFile');
const headers: HttpHeaders = { const headers: HttpHeaders = {

View File

@ -11,9 +11,11 @@
* Do not edit the class manually. * Do not edit the class manually.
*/ */
import { Observable } from 'rxjs'; import type { Observable } from 'rxjs';
import { BaseAPI, HttpHeaders, throwIfNullOrUndefined, encodeURI, OperationOpts, RawAjaxResponse } from '../runtime'; import type { AjaxResponse } from 'rxjs/ajax';
import { import { BaseAPI, throwIfNullOrUndefined, encodeURI } from '../runtime';
import type { OperationOpts, HttpHeaders } from '../runtime';
import type {
Order, Order,
} from '../models'; } from '../models';
@ -39,8 +41,8 @@ export class StoreApi extends BaseAPI {
* Delete purchase order by ID * Delete purchase order by ID
*/ */
deleteOrder({ orderId }: DeleteOrderRequest): Observable<void> deleteOrder({ orderId }: DeleteOrderRequest): Observable<void>
deleteOrder({ orderId }: DeleteOrderRequest, opts?: OperationOpts): Observable<void | RawAjaxResponse<void>> deleteOrder({ orderId }: DeleteOrderRequest, opts?: OperationOpts): Observable<void | AjaxResponse<void>>
deleteOrder({ orderId }: DeleteOrderRequest, opts?: OperationOpts): Observable<void | RawAjaxResponse<void>> { deleteOrder({ orderId }: DeleteOrderRequest, opts?: OperationOpts): Observable<void | AjaxResponse<void>> {
throwIfNullOrUndefined(orderId, 'orderId', 'deleteOrder'); throwIfNullOrUndefined(orderId, 'orderId', 'deleteOrder');
return this.request<void>({ return this.request<void>({
@ -54,8 +56,8 @@ export class StoreApi extends BaseAPI {
* Returns pet inventories by status * Returns pet inventories by status
*/ */
getInventory(): Observable<{ [key: string]: number; }> getInventory(): Observable<{ [key: string]: number; }>
getInventory(opts?: OperationOpts): Observable<RawAjaxResponse<{ [key: string]: number; }>> getInventory(opts?: OperationOpts): Observable<AjaxResponse<{ [key: string]: number; }>>
getInventory(opts?: OperationOpts): Observable<{ [key: string]: number; } | RawAjaxResponse<{ [key: string]: number; }>> { getInventory(opts?: OperationOpts): Observable<{ [key: string]: number; } | AjaxResponse<{ [key: string]: number; }>> {
const headers: HttpHeaders = { const headers: HttpHeaders = {
...(this.configuration.apiKey && { 'api_key': this.configuration.apiKey('api_key') }), // api_key authentication ...(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 * Find purchase order by ID
*/ */
getOrderById({ orderId }: GetOrderByIdRequest): Observable<Order> getOrderById({ orderId }: GetOrderByIdRequest): Observable<Order>
getOrderById({ orderId }: GetOrderByIdRequest, opts?: OperationOpts): Observable<RawAjaxResponse<Order>> getOrderById({ orderId }: GetOrderByIdRequest, opts?: OperationOpts): Observable<AjaxResponse<Order>>
getOrderById({ orderId }: GetOrderByIdRequest, opts?: OperationOpts): Observable<Order | RawAjaxResponse<Order>> { getOrderById({ orderId }: GetOrderByIdRequest, opts?: OperationOpts): Observable<Order | AjaxResponse<Order>> {
throwIfNullOrUndefined(orderId, 'orderId', 'getOrderById'); throwIfNullOrUndefined(orderId, 'orderId', 'getOrderById');
return this.request<Order>({ return this.request<Order>({
@ -86,8 +88,8 @@ export class StoreApi extends BaseAPI {
* Place an order for a pet * Place an order for a pet
*/ */
placeOrder({ body }: PlaceOrderRequest): Observable<Order> placeOrder({ body }: PlaceOrderRequest): Observable<Order>
placeOrder({ body }: PlaceOrderRequest, opts?: OperationOpts): Observable<RawAjaxResponse<Order>> placeOrder({ body }: PlaceOrderRequest, opts?: OperationOpts): Observable<AjaxResponse<Order>>
placeOrder({ body }: PlaceOrderRequest, opts?: OperationOpts): Observable<Order | RawAjaxResponse<Order>> { placeOrder({ body }: PlaceOrderRequest, opts?: OperationOpts): Observable<Order | AjaxResponse<Order>> {
throwIfNullOrUndefined(body, 'body', 'placeOrder'); throwIfNullOrUndefined(body, 'body', 'placeOrder');
const headers: HttpHeaders = { const headers: HttpHeaders = {

View File

@ -11,9 +11,11 @@
* Do not edit the class manually. * Do not edit the class manually.
*/ */
import { Observable } from 'rxjs'; import type { Observable } from 'rxjs';
import { BaseAPI, HttpHeaders, HttpQuery, throwIfNullOrUndefined, encodeURI, OperationOpts, RawAjaxResponse } from '../runtime'; import type { AjaxResponse } from 'rxjs/ajax';
import { import { BaseAPI, throwIfNullOrUndefined, encodeURI } from '../runtime';
import type { OperationOpts, HttpHeaders, HttpQuery } from '../runtime';
import type {
User, User,
} from '../models'; } from '../models';
@ -57,8 +59,8 @@ export class UserApi extends BaseAPI {
* Create user * Create user
*/ */
createUser({ body }: CreateUserRequest): Observable<void> createUser({ body }: CreateUserRequest): Observable<void>
createUser({ body }: CreateUserRequest, opts?: OperationOpts): Observable<void | RawAjaxResponse<void>> createUser({ body }: CreateUserRequest, opts?: OperationOpts): Observable<void | AjaxResponse<void>>
createUser({ body }: CreateUserRequest, opts?: OperationOpts): Observable<void | RawAjaxResponse<void>> { createUser({ body }: CreateUserRequest, opts?: OperationOpts): Observable<void | AjaxResponse<void>> {
throwIfNullOrUndefined(body, 'body', 'createUser'); throwIfNullOrUndefined(body, 'body', 'createUser');
const headers: HttpHeaders = { const headers: HttpHeaders = {
@ -77,8 +79,8 @@ export class UserApi extends BaseAPI {
* Creates list of users with given input array * Creates list of users with given input array
*/ */
createUsersWithArrayInput({ body }: CreateUsersWithArrayInputRequest): Observable<void> createUsersWithArrayInput({ body }: CreateUsersWithArrayInputRequest): Observable<void>
createUsersWithArrayInput({ body }: CreateUsersWithArrayInputRequest, opts?: OperationOpts): Observable<void | RawAjaxResponse<void>> createUsersWithArrayInput({ body }: CreateUsersWithArrayInputRequest, opts?: OperationOpts): Observable<void | AjaxResponse<void>>
createUsersWithArrayInput({ body }: CreateUsersWithArrayInputRequest, opts?: OperationOpts): Observable<void | RawAjaxResponse<void>> { createUsersWithArrayInput({ body }: CreateUsersWithArrayInputRequest, opts?: OperationOpts): Observable<void | AjaxResponse<void>> {
throwIfNullOrUndefined(body, 'body', 'createUsersWithArrayInput'); throwIfNullOrUndefined(body, 'body', 'createUsersWithArrayInput');
const headers: HttpHeaders = { const headers: HttpHeaders = {
@ -97,8 +99,8 @@ export class UserApi extends BaseAPI {
* Creates list of users with given input array * Creates list of users with given input array
*/ */
createUsersWithListInput({ body }: CreateUsersWithListInputRequest): Observable<void> createUsersWithListInput({ body }: CreateUsersWithListInputRequest): Observable<void>
createUsersWithListInput({ body }: CreateUsersWithListInputRequest, opts?: OperationOpts): Observable<void | RawAjaxResponse<void>> createUsersWithListInput({ body }: CreateUsersWithListInputRequest, opts?: OperationOpts): Observable<void | AjaxResponse<void>>
createUsersWithListInput({ body }: CreateUsersWithListInputRequest, opts?: OperationOpts): Observable<void | RawAjaxResponse<void>> { createUsersWithListInput({ body }: CreateUsersWithListInputRequest, opts?: OperationOpts): Observable<void | AjaxResponse<void>> {
throwIfNullOrUndefined(body, 'body', 'createUsersWithListInput'); throwIfNullOrUndefined(body, 'body', 'createUsersWithListInput');
const headers: HttpHeaders = { const headers: HttpHeaders = {
@ -118,8 +120,8 @@ export class UserApi extends BaseAPI {
* Delete user * Delete user
*/ */
deleteUser({ username }: DeleteUserRequest): Observable<void> deleteUser({ username }: DeleteUserRequest): Observable<void>
deleteUser({ username }: DeleteUserRequest, opts?: OperationOpts): Observable<void | RawAjaxResponse<void>> deleteUser({ username }: DeleteUserRequest, opts?: OperationOpts): Observable<void | AjaxResponse<void>>
deleteUser({ username }: DeleteUserRequest, opts?: OperationOpts): Observable<void | RawAjaxResponse<void>> { deleteUser({ username }: DeleteUserRequest, opts?: OperationOpts): Observable<void | AjaxResponse<void>> {
throwIfNullOrUndefined(username, 'username', 'deleteUser'); throwIfNullOrUndefined(username, 'username', 'deleteUser');
return this.request<void>({ return this.request<void>({
@ -132,8 +134,8 @@ export class UserApi extends BaseAPI {
* Get user by user name * Get user by user name
*/ */
getUserByName({ username }: GetUserByNameRequest): Observable<User> getUserByName({ username }: GetUserByNameRequest): Observable<User>
getUserByName({ username }: GetUserByNameRequest, opts?: OperationOpts): Observable<RawAjaxResponse<User>> getUserByName({ username }: GetUserByNameRequest, opts?: OperationOpts): Observable<AjaxResponse<User>>
getUserByName({ username }: GetUserByNameRequest, opts?: OperationOpts): Observable<User | RawAjaxResponse<User>> { getUserByName({ username }: GetUserByNameRequest, opts?: OperationOpts): Observable<User | AjaxResponse<User>> {
throwIfNullOrUndefined(username, 'username', 'getUserByName'); throwIfNullOrUndefined(username, 'username', 'getUserByName');
return this.request<User>({ return this.request<User>({
@ -146,8 +148,8 @@ export class UserApi extends BaseAPI {
* Logs user into the system * Logs user into the system
*/ */
loginUser({ username, password }: LoginUserRequest): Observable<string> loginUser({ username, password }: LoginUserRequest): Observable<string>
loginUser({ username, password }: LoginUserRequest, opts?: OperationOpts): Observable<RawAjaxResponse<string>> loginUser({ username, password }: LoginUserRequest, opts?: OperationOpts): Observable<AjaxResponse<string>>
loginUser({ username, password }: LoginUserRequest, opts?: OperationOpts): Observable<string | RawAjaxResponse<string>> { loginUser({ username, password }: LoginUserRequest, opts?: OperationOpts): Observable<string | AjaxResponse<string>> {
throwIfNullOrUndefined(username, 'username', 'loginUser'); throwIfNullOrUndefined(username, 'username', 'loginUser');
throwIfNullOrUndefined(password, 'password', 'loginUser'); throwIfNullOrUndefined(password, 'password', 'loginUser');
@ -167,8 +169,8 @@ export class UserApi extends BaseAPI {
* Logs out current logged in user session * Logs out current logged in user session
*/ */
logoutUser(): Observable<void> logoutUser(): Observable<void>
logoutUser(opts?: OperationOpts): Observable<void | RawAjaxResponse<void>> logoutUser(opts?: OperationOpts): Observable<void | AjaxResponse<void>>
logoutUser(opts?: OperationOpts): Observable<void | RawAjaxResponse<void>> { logoutUser(opts?: OperationOpts): Observable<void | AjaxResponse<void>> {
return this.request<void>({ return this.request<void>({
url: '/user/logout', url: '/user/logout',
method: 'GET', method: 'GET',
@ -180,8 +182,8 @@ export class UserApi extends BaseAPI {
* Updated user * Updated user
*/ */
updateUser({ username, body }: UpdateUserRequest): Observable<void> updateUser({ username, body }: UpdateUserRequest): Observable<void>
updateUser({ username, body }: UpdateUserRequest, opts?: OperationOpts): Observable<void | RawAjaxResponse<void>> updateUser({ username, body }: UpdateUserRequest, opts?: OperationOpts): Observable<void | AjaxResponse<void>>
updateUser({ username, body }: UpdateUserRequest, opts?: OperationOpts): Observable<void | RawAjaxResponse<void>> { updateUser({ username, body }: UpdateUserRequest, opts?: OperationOpts): Observable<void | AjaxResponse<void>> {
throwIfNullOrUndefined(username, 'username', 'updateUser'); throwIfNullOrUndefined(username, 'username', 'updateUser');
throwIfNullOrUndefined(body, 'body', 'updateUser'); throwIfNullOrUndefined(body, 'body', 'updateUser');

View File

@ -11,7 +11,7 @@
* Do not edit the class manually. * Do not edit the class manually.
*/ */
import { import type {
Category, Category,
Tag, Tag,
} from './'; } from './';

View File

@ -11,8 +11,10 @@
* Do not edit the class manually. * Do not edit the class manually.
*/ */
import { Observable, of } from 'rxjs'; import { of } from 'rxjs';
import { ajax, AjaxRequest, AjaxResponse } from 'rxjs/ajax'; import type { Observable } from 'rxjs';
import { ajax } from 'rxjs/ajax';
import type { AjaxConfig, AjaxResponse } from 'rxjs/ajax';
import { map, concatMap } from 'rxjs/operators'; import { map, concatMap } from 'rxjs/operators';
import { servers } from './servers'; import { servers } from './servers';
@ -80,9 +82,9 @@ export class BaseAPI {
this.withMiddleware(postMiddlewares.map((post) => ({ post }))); this.withMiddleware(postMiddlewares.map((post) => ({ post })));
protected request<T>(requestOpts: RequestOpts): Observable<T> protected request<T>(requestOpts: RequestOpts): Observable<T>
protected request<T>(requestOpts: RequestOpts, responseOpts?: ResponseOpts): Observable<RawAjaxResponse<T>> protected request<T>(requestOpts: RequestOpts, responseOpts?: ResponseOpts): Observable<AjaxResponse<T>>
protected request<T>(requestOpts: RequestOpts, responseOpts?: ResponseOpts): Observable<T | RawAjaxResponse<T>> { protected request<T>(requestOpts: RequestOpts, responseOpts?: ResponseOpts): Observable<T | AjaxResponse<T>> {
return this.rxjsRequest(this.createRequestArgs(requestOpts)).pipe( return this.rxjsRequest<T>(this.createRequestArgs(requestOpts)).pipe(
map((res) => { map((res) => {
const { status, response } = res; const { status, response } = res;
if (status >= 200 && status < 300) { 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. // 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 // this is done to avoid urls ending with a '?' character which buggy webservers
// do not handle correctly sometimes. // do not handle correctly sometimes.
@ -108,14 +110,14 @@ export class BaseAPI {
}; };
} }
private rxjsRequest = (params: RequestArgs): Observable<AjaxResponse> => private rxjsRequest = <T>(params: AjaxConfig): Observable<AjaxResponse<T>> =>
of(params).pipe( of(params).pipe(
map((request) => { map((request) => {
this.middleware.filter((item) => item.pre).forEach((mw) => (request = mw.pre!(request))); this.middleware.filter((item) => item.pre).forEach((mw) => (request = mw.pre!(request)));
return request; return request;
}), }),
concatMap((args) => concatMap((args) =>
ajax(args).pipe( ajax<T>(args).pipe(
map((response) => { map((response) => {
this.middleware.filter((item) => item.post).forEach((mw) => (response = mw.post!(response))); this.middleware.filter((item) => item.post).forEach((mw) => (response = mw.post!(response)));
return response; return response;
@ -153,13 +155,13 @@ export type HttpHeaders = { [key: string]: string };
export type HttpQuery = Partial<{ [key: string]: string | number | null | boolean | Array<string | number | null | boolean> }>; // partial is needed for strict mode export type HttpQuery = Partial<{ [key: string]: string | number | null | boolean | Array<string | number | null | boolean> }>; // partial is needed for strict mode
export type HttpBody = Json | FormData; 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 query?: HttpQuery; // additional prop
// the following props have improved types over AjaxRequest // the following props have improved types over AjaxRequest
method: HttpMethod; method: HttpMethod;
headers?: HttpHeaders; headers?: HttpHeaders;
body?: HttpBody; body?: HttpBody;
responseType?: 'json' | 'blob' | 'arraybuffer' | 'text';
} }
export interface ResponseOpts { export interface ResponseOpts {
@ -170,11 +172,6 @@ export interface OperationOpts {
responseOpts?: ResponseOpts; responseOpts?: ResponseOpts;
} }
// AjaxResponse with typed response
export interface RawAjaxResponse<T> extends AjaxResponse {
response: T;
}
export const encodeURI = (value: any) => encodeURIComponent(`${value}`); export const encodeURI = (value: any) => encodeURIComponent(`${value}`);
const queryString = (params: HttpQuery): string => Object.entries(params) const queryString = (params: HttpQuery): string => Object.entries(params)
@ -184,29 +181,13 @@ const queryString = (params: HttpQuery): string => Object.entries(params)
) )
.join('&'); .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) => { export const throwIfNullOrUndefined = (value: any, paramName: string, nickname: string) => {
if (value == null) { if (value == null) {
throw new Error(`Parameter "${paramName}" was null or undefined when calling "${nickname}".`); 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 { export interface Middleware {
pre?(request: RequestArgs): RequestArgs; pre?(request: AjaxConfig): AjaxConfig;
post?(response: ResponseArgs): ResponseArgs; post?(response: AjaxResponse<any>): AjaxResponse<any>;
} }

View File

@ -17,11 +17,11 @@ export class ServerConfiguration<T extends { [key: string]: string }> {
} }
public getConfiguration(): T { public getConfiguration(): T {
return this.variableConfiguration return this.variableConfiguration;
} }
public getDescription(): string { public getDescription(): string {
return this.description return this.description;
} }
/** /**
@ -34,10 +34,10 @@ export class ServerConfiguration<T extends { [key: string]: string }> {
var re = new RegExp("{" + key + "}","g"); var re = new RegExp("{" + key + "}","g");
replacedUrl = replacedUrl.replace(re, this.variableConfiguration[key]); 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]; export const servers = [server1];

View File

@ -11,9 +11,11 @@
* Do not edit the class manually. * Do not edit the class manually.
*/ */
import { Observable } from 'rxjs'; import type { Observable } from 'rxjs';
import { BaseAPI, HttpHeaders, HttpQuery, throwIfNullOrUndefined, encodeURI, COLLECTION_FORMATS, OperationOpts, RawAjaxResponse } from '../runtime'; import type { AjaxResponse } from 'rxjs/ajax';
import { import { BaseAPI, throwIfNullOrUndefined, encodeURI, COLLECTION_FORMATS } from '../runtime';
import type { OperationOpts, HttpHeaders, HttpQuery } from '../runtime';
import type {
ApiResponse, ApiResponse,
Pet, Pet,
} from '../models'; } from '../models';
@ -64,8 +66,8 @@ export class PetApi extends BaseAPI {
* Add a new pet to the store * Add a new pet to the store
*/ */
addPet({ body }: AddPetRequest): Observable<void> addPet({ body }: AddPetRequest): Observable<void>
addPet({ body }: AddPetRequest, opts?: OperationOpts): Observable<void | RawAjaxResponse<void>> addPet({ body }: AddPetRequest, opts?: OperationOpts): Observable<void | AjaxResponse<void>>
addPet({ body }: AddPetRequest, opts?: OperationOpts): Observable<void | RawAjaxResponse<void>> { addPet({ body }: AddPetRequest, opts?: OperationOpts): Observable<void | AjaxResponse<void>> {
throwIfNullOrUndefined(body, 'body', 'addPet'); throwIfNullOrUndefined(body, 'body', 'addPet');
const headers: HttpHeaders = { const headers: HttpHeaders = {
@ -91,8 +93,8 @@ export class PetApi extends BaseAPI {
* Deletes a pet * Deletes a pet
*/ */
deletePet({ petId, apiKey }: DeletePetRequest): Observable<void> deletePet({ petId, apiKey }: DeletePetRequest): Observable<void>
deletePet({ petId, apiKey }: DeletePetRequest, opts?: OperationOpts): Observable<void | RawAjaxResponse<void>> deletePet({ petId, apiKey }: DeletePetRequest, opts?: OperationOpts): Observable<void | AjaxResponse<void>>
deletePet({ petId, apiKey }: DeletePetRequest, opts?: OperationOpts): Observable<void | RawAjaxResponse<void>> { deletePet({ petId, apiKey }: DeletePetRequest, opts?: OperationOpts): Observable<void | AjaxResponse<void>> {
throwIfNullOrUndefined(petId, 'petId', 'deletePet'); throwIfNullOrUndefined(petId, 'petId', 'deletePet');
const headers: HttpHeaders = { const headers: HttpHeaders = {
@ -118,8 +120,8 @@ export class PetApi extends BaseAPI {
* Finds Pets by status * Finds Pets by status
*/ */
findPetsByStatus({ status }: FindPetsByStatusRequest): Observable<Array<Pet>> findPetsByStatus({ status }: FindPetsByStatusRequest): Observable<Array<Pet>>
findPetsByStatus({ status }: FindPetsByStatusRequest, opts?: OperationOpts): Observable<RawAjaxResponse<Array<Pet>>> findPetsByStatus({ status }: FindPetsByStatusRequest, opts?: OperationOpts): Observable<AjaxResponse<Array<Pet>>>
findPetsByStatus({ status }: FindPetsByStatusRequest, opts?: OperationOpts): Observable<Array<Pet> | RawAjaxResponse<Array<Pet>>> { findPetsByStatus({ status }: FindPetsByStatusRequest, opts?: OperationOpts): Observable<Array<Pet> | AjaxResponse<Array<Pet>>> {
throwIfNullOrUndefined(status, 'status', 'findPetsByStatus'); throwIfNullOrUndefined(status, 'status', 'findPetsByStatus');
const headers: HttpHeaders = { const headers: HttpHeaders = {
@ -149,8 +151,8 @@ export class PetApi extends BaseAPI {
* Finds Pets by tags * Finds Pets by tags
*/ */
findPetsByTags({ tags }: FindPetsByTagsRequest): Observable<Array<Pet>> findPetsByTags({ tags }: FindPetsByTagsRequest): Observable<Array<Pet>>
findPetsByTags({ tags }: FindPetsByTagsRequest, opts?: OperationOpts): Observable<RawAjaxResponse<Array<Pet>>> findPetsByTags({ tags }: FindPetsByTagsRequest, opts?: OperationOpts): Observable<AjaxResponse<Array<Pet>>>
findPetsByTags({ tags }: FindPetsByTagsRequest, opts?: OperationOpts): Observable<Array<Pet> | RawAjaxResponse<Array<Pet>>> { findPetsByTags({ tags }: FindPetsByTagsRequest, opts?: OperationOpts): Observable<Array<Pet> | AjaxResponse<Array<Pet>>> {
throwIfNullOrUndefined(tags, 'tags', 'findPetsByTags'); throwIfNullOrUndefined(tags, 'tags', 'findPetsByTags');
const headers: HttpHeaders = { const headers: HttpHeaders = {
@ -180,8 +182,8 @@ export class PetApi extends BaseAPI {
* Find pet by ID * Find pet by ID
*/ */
getPetById({ petId }: GetPetByIdRequest): Observable<Pet> getPetById({ petId }: GetPetByIdRequest): Observable<Pet>
getPetById({ petId }: GetPetByIdRequest, opts?: OperationOpts): Observable<RawAjaxResponse<Pet>> getPetById({ petId }: GetPetByIdRequest, opts?: OperationOpts): Observable<AjaxResponse<Pet>>
getPetById({ petId }: GetPetByIdRequest, opts?: OperationOpts): Observable<Pet | RawAjaxResponse<Pet>> { getPetById({ petId }: GetPetByIdRequest, opts?: OperationOpts): Observable<Pet | AjaxResponse<Pet>> {
throwIfNullOrUndefined(petId, 'petId', 'getPetById'); throwIfNullOrUndefined(petId, 'petId', 'getPetById');
const headers: HttpHeaders = { const headers: HttpHeaders = {
@ -199,8 +201,8 @@ export class PetApi extends BaseAPI {
* Update an existing pet * Update an existing pet
*/ */
updatePet({ body }: UpdatePetRequest): Observable<void> updatePet({ body }: UpdatePetRequest): Observable<void>
updatePet({ body }: UpdatePetRequest, opts?: OperationOpts): Observable<void | RawAjaxResponse<void>> updatePet({ body }: UpdatePetRequest, opts?: OperationOpts): Observable<void | AjaxResponse<void>>
updatePet({ body }: UpdatePetRequest, opts?: OperationOpts): Observable<void | RawAjaxResponse<void>> { updatePet({ body }: UpdatePetRequest, opts?: OperationOpts): Observable<void | AjaxResponse<void>> {
throwIfNullOrUndefined(body, 'body', 'updatePet'); throwIfNullOrUndefined(body, 'body', 'updatePet');
const headers: HttpHeaders = { const headers: HttpHeaders = {
@ -226,8 +228,8 @@ export class PetApi extends BaseAPI {
* Updates a pet in the store with form data * Updates a pet in the store with form data
*/ */
updatePetWithForm({ petId, name, status }: UpdatePetWithFormRequest): Observable<void> updatePetWithForm({ petId, name, status }: UpdatePetWithFormRequest): Observable<void>
updatePetWithForm({ petId, name, status }: UpdatePetWithFormRequest, opts?: OperationOpts): Observable<void | RawAjaxResponse<void>> updatePetWithForm({ petId, name, status }: UpdatePetWithFormRequest, opts?: OperationOpts): Observable<void | AjaxResponse<void>>
updatePetWithForm({ petId, name, status }: UpdatePetWithFormRequest, opts?: OperationOpts): Observable<void | RawAjaxResponse<void>> { updatePetWithForm({ petId, name, status }: UpdatePetWithFormRequest, opts?: OperationOpts): Observable<void | AjaxResponse<void>> {
throwIfNullOrUndefined(petId, 'petId', 'updatePetWithForm'); throwIfNullOrUndefined(petId, 'petId', 'updatePetWithForm');
const headers: HttpHeaders = { const headers: HttpHeaders = {
@ -256,8 +258,8 @@ export class PetApi extends BaseAPI {
* uploads an image * uploads an image
*/ */
uploadFile({ petId, additionalMetadata, file }: UploadFileRequest): Observable<ApiResponse> uploadFile({ petId, additionalMetadata, file }: UploadFileRequest): Observable<ApiResponse>
uploadFile({ petId, additionalMetadata, file }: UploadFileRequest, opts?: OperationOpts): Observable<RawAjaxResponse<ApiResponse>> uploadFile({ petId, additionalMetadata, file }: UploadFileRequest, opts?: OperationOpts): Observable<AjaxResponse<ApiResponse>>
uploadFile({ petId, additionalMetadata, file }: UploadFileRequest, opts?: OperationOpts): Observable<ApiResponse | RawAjaxResponse<ApiResponse>> { uploadFile({ petId, additionalMetadata, file }: UploadFileRequest, opts?: OperationOpts): Observable<ApiResponse | AjaxResponse<ApiResponse>> {
throwIfNullOrUndefined(petId, 'petId', 'uploadFile'); throwIfNullOrUndefined(petId, 'petId', 'uploadFile');
const headers: HttpHeaders = { const headers: HttpHeaders = {

View File

@ -11,9 +11,11 @@
* Do not edit the class manually. * Do not edit the class manually.
*/ */
import { Observable } from 'rxjs'; import type { Observable } from 'rxjs';
import { BaseAPI, HttpHeaders, throwIfNullOrUndefined, encodeURI, OperationOpts, RawAjaxResponse } from '../runtime'; import type { AjaxResponse } from 'rxjs/ajax';
import { import { BaseAPI, throwIfNullOrUndefined, encodeURI } from '../runtime';
import type { OperationOpts, HttpHeaders } from '../runtime';
import type {
Order, Order,
} from '../models'; } from '../models';
@ -39,8 +41,8 @@ export class StoreApi extends BaseAPI {
* Delete purchase order by ID * Delete purchase order by ID
*/ */
deleteOrder({ orderId }: DeleteOrderRequest): Observable<void> deleteOrder({ orderId }: DeleteOrderRequest): Observable<void>
deleteOrder({ orderId }: DeleteOrderRequest, opts?: OperationOpts): Observable<void | RawAjaxResponse<void>> deleteOrder({ orderId }: DeleteOrderRequest, opts?: OperationOpts): Observable<void | AjaxResponse<void>>
deleteOrder({ orderId }: DeleteOrderRequest, opts?: OperationOpts): Observable<void | RawAjaxResponse<void>> { deleteOrder({ orderId }: DeleteOrderRequest, opts?: OperationOpts): Observable<void | AjaxResponse<void>> {
throwIfNullOrUndefined(orderId, 'orderId', 'deleteOrder'); throwIfNullOrUndefined(orderId, 'orderId', 'deleteOrder');
return this.request<void>({ return this.request<void>({
@ -54,8 +56,8 @@ export class StoreApi extends BaseAPI {
* Returns pet inventories by status * Returns pet inventories by status
*/ */
getInventory(): Observable<{ [key: string]: number; }> getInventory(): Observable<{ [key: string]: number; }>
getInventory(opts?: OperationOpts): Observable<RawAjaxResponse<{ [key: string]: number; }>> getInventory(opts?: OperationOpts): Observable<AjaxResponse<{ [key: string]: number; }>>
getInventory(opts?: OperationOpts): Observable<{ [key: string]: number; } | RawAjaxResponse<{ [key: string]: number; }>> { getInventory(opts?: OperationOpts): Observable<{ [key: string]: number; } | AjaxResponse<{ [key: string]: number; }>> {
const headers: HttpHeaders = { const headers: HttpHeaders = {
...(this.configuration.apiKey && { 'api_key': this.configuration.apiKey('api_key') }), // api_key authentication ...(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 * Find purchase order by ID
*/ */
getOrderById({ orderId }: GetOrderByIdRequest): Observable<Order> getOrderById({ orderId }: GetOrderByIdRequest): Observable<Order>
getOrderById({ orderId }: GetOrderByIdRequest, opts?: OperationOpts): Observable<RawAjaxResponse<Order>> getOrderById({ orderId }: GetOrderByIdRequest, opts?: OperationOpts): Observable<AjaxResponse<Order>>
getOrderById({ orderId }: GetOrderByIdRequest, opts?: OperationOpts): Observable<Order | RawAjaxResponse<Order>> { getOrderById({ orderId }: GetOrderByIdRequest, opts?: OperationOpts): Observable<Order | AjaxResponse<Order>> {
throwIfNullOrUndefined(orderId, 'orderId', 'getOrderById'); throwIfNullOrUndefined(orderId, 'orderId', 'getOrderById');
return this.request<Order>({ return this.request<Order>({
@ -86,8 +88,8 @@ export class StoreApi extends BaseAPI {
* Place an order for a pet * Place an order for a pet
*/ */
placeOrder({ body }: PlaceOrderRequest): Observable<Order> placeOrder({ body }: PlaceOrderRequest): Observable<Order>
placeOrder({ body }: PlaceOrderRequest, opts?: OperationOpts): Observable<RawAjaxResponse<Order>> placeOrder({ body }: PlaceOrderRequest, opts?: OperationOpts): Observable<AjaxResponse<Order>>
placeOrder({ body }: PlaceOrderRequest, opts?: OperationOpts): Observable<Order | RawAjaxResponse<Order>> { placeOrder({ body }: PlaceOrderRequest, opts?: OperationOpts): Observable<Order | AjaxResponse<Order>> {
throwIfNullOrUndefined(body, 'body', 'placeOrder'); throwIfNullOrUndefined(body, 'body', 'placeOrder');
const headers: HttpHeaders = { const headers: HttpHeaders = {

View File

@ -11,9 +11,11 @@
* Do not edit the class manually. * Do not edit the class manually.
*/ */
import { Observable } from 'rxjs'; import type { Observable } from 'rxjs';
import { BaseAPI, HttpHeaders, HttpQuery, throwIfNullOrUndefined, encodeURI, OperationOpts, RawAjaxResponse } from '../runtime'; import type { AjaxResponse } from 'rxjs/ajax';
import { import { BaseAPI, throwIfNullOrUndefined, encodeURI } from '../runtime';
import type { OperationOpts, HttpHeaders, HttpQuery } from '../runtime';
import type {
User, User,
} from '../models'; } from '../models';
@ -57,8 +59,8 @@ export class UserApi extends BaseAPI {
* Create user * Create user
*/ */
createUser({ body }: CreateUserRequest): Observable<void> createUser({ body }: CreateUserRequest): Observable<void>
createUser({ body }: CreateUserRequest, opts?: OperationOpts): Observable<void | RawAjaxResponse<void>> createUser({ body }: CreateUserRequest, opts?: OperationOpts): Observable<void | AjaxResponse<void>>
createUser({ body }: CreateUserRequest, opts?: OperationOpts): Observable<void | RawAjaxResponse<void>> { createUser({ body }: CreateUserRequest, opts?: OperationOpts): Observable<void | AjaxResponse<void>> {
throwIfNullOrUndefined(body, 'body', 'createUser'); throwIfNullOrUndefined(body, 'body', 'createUser');
const headers: HttpHeaders = { const headers: HttpHeaders = {
@ -77,8 +79,8 @@ export class UserApi extends BaseAPI {
* Creates list of users with given input array * Creates list of users with given input array
*/ */
createUsersWithArrayInput({ body }: CreateUsersWithArrayInputRequest): Observable<void> createUsersWithArrayInput({ body }: CreateUsersWithArrayInputRequest): Observable<void>
createUsersWithArrayInput({ body }: CreateUsersWithArrayInputRequest, opts?: OperationOpts): Observable<void | RawAjaxResponse<void>> createUsersWithArrayInput({ body }: CreateUsersWithArrayInputRequest, opts?: OperationOpts): Observable<void | AjaxResponse<void>>
createUsersWithArrayInput({ body }: CreateUsersWithArrayInputRequest, opts?: OperationOpts): Observable<void | RawAjaxResponse<void>> { createUsersWithArrayInput({ body }: CreateUsersWithArrayInputRequest, opts?: OperationOpts): Observable<void | AjaxResponse<void>> {
throwIfNullOrUndefined(body, 'body', 'createUsersWithArrayInput'); throwIfNullOrUndefined(body, 'body', 'createUsersWithArrayInput');
const headers: HttpHeaders = { const headers: HttpHeaders = {
@ -97,8 +99,8 @@ export class UserApi extends BaseAPI {
* Creates list of users with given input array * Creates list of users with given input array
*/ */
createUsersWithListInput({ body }: CreateUsersWithListInputRequest): Observable<void> createUsersWithListInput({ body }: CreateUsersWithListInputRequest): Observable<void>
createUsersWithListInput({ body }: CreateUsersWithListInputRequest, opts?: OperationOpts): Observable<void | RawAjaxResponse<void>> createUsersWithListInput({ body }: CreateUsersWithListInputRequest, opts?: OperationOpts): Observable<void | AjaxResponse<void>>
createUsersWithListInput({ body }: CreateUsersWithListInputRequest, opts?: OperationOpts): Observable<void | RawAjaxResponse<void>> { createUsersWithListInput({ body }: CreateUsersWithListInputRequest, opts?: OperationOpts): Observable<void | AjaxResponse<void>> {
throwIfNullOrUndefined(body, 'body', 'createUsersWithListInput'); throwIfNullOrUndefined(body, 'body', 'createUsersWithListInput');
const headers: HttpHeaders = { const headers: HttpHeaders = {
@ -118,8 +120,8 @@ export class UserApi extends BaseAPI {
* Delete user * Delete user
*/ */
deleteUser({ username }: DeleteUserRequest): Observable<void> deleteUser({ username }: DeleteUserRequest): Observable<void>
deleteUser({ username }: DeleteUserRequest, opts?: OperationOpts): Observable<void | RawAjaxResponse<void>> deleteUser({ username }: DeleteUserRequest, opts?: OperationOpts): Observable<void | AjaxResponse<void>>
deleteUser({ username }: DeleteUserRequest, opts?: OperationOpts): Observable<void | RawAjaxResponse<void>> { deleteUser({ username }: DeleteUserRequest, opts?: OperationOpts): Observable<void | AjaxResponse<void>> {
throwIfNullOrUndefined(username, 'username', 'deleteUser'); throwIfNullOrUndefined(username, 'username', 'deleteUser');
return this.request<void>({ return this.request<void>({
@ -132,8 +134,8 @@ export class UserApi extends BaseAPI {
* Get user by user name * Get user by user name
*/ */
getUserByName({ username }: GetUserByNameRequest): Observable<User> getUserByName({ username }: GetUserByNameRequest): Observable<User>
getUserByName({ username }: GetUserByNameRequest, opts?: OperationOpts): Observable<RawAjaxResponse<User>> getUserByName({ username }: GetUserByNameRequest, opts?: OperationOpts): Observable<AjaxResponse<User>>
getUserByName({ username }: GetUserByNameRequest, opts?: OperationOpts): Observable<User | RawAjaxResponse<User>> { getUserByName({ username }: GetUserByNameRequest, opts?: OperationOpts): Observable<User | AjaxResponse<User>> {
throwIfNullOrUndefined(username, 'username', 'getUserByName'); throwIfNullOrUndefined(username, 'username', 'getUserByName');
return this.request<User>({ return this.request<User>({
@ -146,8 +148,8 @@ export class UserApi extends BaseAPI {
* Logs user into the system * Logs user into the system
*/ */
loginUser({ username, password }: LoginUserRequest): Observable<string> loginUser({ username, password }: LoginUserRequest): Observable<string>
loginUser({ username, password }: LoginUserRequest, opts?: OperationOpts): Observable<RawAjaxResponse<string>> loginUser({ username, password }: LoginUserRequest, opts?: OperationOpts): Observable<AjaxResponse<string>>
loginUser({ username, password }: LoginUserRequest, opts?: OperationOpts): Observable<string | RawAjaxResponse<string>> { loginUser({ username, password }: LoginUserRequest, opts?: OperationOpts): Observable<string | AjaxResponse<string>> {
throwIfNullOrUndefined(username, 'username', 'loginUser'); throwIfNullOrUndefined(username, 'username', 'loginUser');
throwIfNullOrUndefined(password, 'password', 'loginUser'); throwIfNullOrUndefined(password, 'password', 'loginUser');
@ -167,8 +169,8 @@ export class UserApi extends BaseAPI {
* Logs out current logged in user session * Logs out current logged in user session
*/ */
logoutUser(): Observable<void> logoutUser(): Observable<void>
logoutUser(opts?: OperationOpts): Observable<void | RawAjaxResponse<void>> logoutUser(opts?: OperationOpts): Observable<void | AjaxResponse<void>>
logoutUser(opts?: OperationOpts): Observable<void | RawAjaxResponse<void>> { logoutUser(opts?: OperationOpts): Observable<void | AjaxResponse<void>> {
return this.request<void>({ return this.request<void>({
url: '/user/logout', url: '/user/logout',
method: 'GET', method: 'GET',
@ -180,8 +182,8 @@ export class UserApi extends BaseAPI {
* Updated user * Updated user
*/ */
updateUser({ username, body }: UpdateUserRequest): Observable<void> updateUser({ username, body }: UpdateUserRequest): Observable<void>
updateUser({ username, body }: UpdateUserRequest, opts?: OperationOpts): Observable<void | RawAjaxResponse<void>> updateUser({ username, body }: UpdateUserRequest, opts?: OperationOpts): Observable<void | AjaxResponse<void>>
updateUser({ username, body }: UpdateUserRequest, opts?: OperationOpts): Observable<void | RawAjaxResponse<void>> { updateUser({ username, body }: UpdateUserRequest, opts?: OperationOpts): Observable<void | AjaxResponse<void>> {
throwIfNullOrUndefined(username, 'username', 'updateUser'); throwIfNullOrUndefined(username, 'username', 'updateUser');
throwIfNullOrUndefined(body, 'body', 'updateUser'); throwIfNullOrUndefined(body, 'body', 'updateUser');

View File

@ -11,7 +11,7 @@
* Do not edit the class manually. * Do not edit the class manually.
*/ */
import { import type {
Category, Category,
Tag, Tag,
} from './'; } from './';

View File

@ -10,10 +10,10 @@
"prepare": "npm run build" "prepare": "npm run build"
}, },
"dependencies": { "dependencies": {
"rxjs": "^6.3.3" "rxjs": "^7.2.0"
}, },
"devDependencies": { "devDependencies": {
"typescript": "^3.7" "typescript": "^4.0"
}, },
"publishConfig": { "publishConfig": {
"registry": "https://skimdb.npmjs.com/registry" "registry": "https://skimdb.npmjs.com/registry"

View File

@ -11,8 +11,10 @@
* Do not edit the class manually. * Do not edit the class manually.
*/ */
import { Observable, of } from 'rxjs'; import { of } from 'rxjs';
import { ajax, AjaxRequest, AjaxResponse } from 'rxjs/ajax'; import type { Observable } from 'rxjs';
import { ajax } from 'rxjs/ajax';
import type { AjaxConfig, AjaxResponse } from 'rxjs/ajax';
import { map, concatMap } from 'rxjs/operators'; import { map, concatMap } from 'rxjs/operators';
import { servers } from './servers'; import { servers } from './servers';
@ -80,9 +82,9 @@ export class BaseAPI {
this.withMiddleware(postMiddlewares.map((post) => ({ post }))); this.withMiddleware(postMiddlewares.map((post) => ({ post })));
protected request<T>(requestOpts: RequestOpts): Observable<T> protected request<T>(requestOpts: RequestOpts): Observable<T>
protected request<T>(requestOpts: RequestOpts, responseOpts?: ResponseOpts): Observable<RawAjaxResponse<T>> protected request<T>(requestOpts: RequestOpts, responseOpts?: ResponseOpts): Observable<AjaxResponse<T>>
protected request<T>(requestOpts: RequestOpts, responseOpts?: ResponseOpts): Observable<T | RawAjaxResponse<T>> { protected request<T>(requestOpts: RequestOpts, responseOpts?: ResponseOpts): Observable<T | AjaxResponse<T>> {
return this.rxjsRequest(this.createRequestArgs(requestOpts)).pipe( return this.rxjsRequest<T>(this.createRequestArgs(requestOpts)).pipe(
map((res) => { map((res) => {
const { status, response } = res; const { status, response } = res;
if (status >= 200 && status < 300) { 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. // 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 // this is done to avoid urls ending with a '?' character which buggy webservers
// do not handle correctly sometimes. // do not handle correctly sometimes.
@ -108,14 +110,14 @@ export class BaseAPI {
}; };
} }
private rxjsRequest = (params: RequestArgs): Observable<AjaxResponse> => private rxjsRequest = <T>(params: AjaxConfig): Observable<AjaxResponse<T>> =>
of(params).pipe( of(params).pipe(
map((request) => { map((request) => {
this.middleware.filter((item) => item.pre).forEach((mw) => (request = mw.pre!(request))); this.middleware.filter((item) => item.pre).forEach((mw) => (request = mw.pre!(request)));
return request; return request;
}), }),
concatMap((args) => concatMap((args) =>
ajax(args).pipe( ajax<T>(args).pipe(
map((response) => { map((response) => {
this.middleware.filter((item) => item.post).forEach((mw) => (response = mw.post!(response))); this.middleware.filter((item) => item.post).forEach((mw) => (response = mw.post!(response)));
return response; return response;
@ -153,13 +155,13 @@ export type HttpHeaders = { [key: string]: string };
export type HttpQuery = Partial<{ [key: string]: string | number | null | boolean | Array<string | number | null | boolean> }>; // partial is needed for strict mode export type HttpQuery = Partial<{ [key: string]: string | number | null | boolean | Array<string | number | null | boolean> }>; // partial is needed for strict mode
export type HttpBody = Json | FormData; 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 query?: HttpQuery; // additional prop
// the following props have improved types over AjaxRequest // the following props have improved types over AjaxRequest
method: HttpMethod; method: HttpMethod;
headers?: HttpHeaders; headers?: HttpHeaders;
body?: HttpBody; body?: HttpBody;
responseType?: 'json' | 'blob' | 'arraybuffer' | 'text';
} }
export interface ResponseOpts { export interface ResponseOpts {
@ -170,11 +172,6 @@ export interface OperationOpts {
responseOpts?: ResponseOpts; responseOpts?: ResponseOpts;
} }
// AjaxResponse with typed response
export interface RawAjaxResponse<T> extends AjaxResponse {
response: T;
}
export const encodeURI = (value: any) => encodeURIComponent(`${value}`); export const encodeURI = (value: any) => encodeURIComponent(`${value}`);
const queryString = (params: HttpQuery): string => Object.entries(params) const queryString = (params: HttpQuery): string => Object.entries(params)
@ -184,29 +181,13 @@ const queryString = (params: HttpQuery): string => Object.entries(params)
) )
.join('&'); .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) => { export const throwIfNullOrUndefined = (value: any, paramName: string, nickname: string) => {
if (value == null) { if (value == null) {
throw new Error(`Parameter "${paramName}" was null or undefined when calling "${nickname}".`); 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 { export interface Middleware {
pre?(request: RequestArgs): RequestArgs; pre?(request: AjaxConfig): AjaxConfig;
post?(response: ResponseArgs): ResponseArgs; post?(response: AjaxResponse<any>): AjaxResponse<any>;
} }

View File

@ -17,11 +17,11 @@ export class ServerConfiguration<T extends { [key: string]: string }> {
} }
public getConfiguration(): T { public getConfiguration(): T {
return this.variableConfiguration return this.variableConfiguration;
} }
public getDescription(): string { public getDescription(): string {
return this.description return this.description;
} }
/** /**
@ -34,10 +34,10 @@ export class ServerConfiguration<T extends { [key: string]: string }> {
var re = new RegExp("{" + key + "}","g"); var re = new RegExp("{" + key + "}","g");
replacedUrl = replacedUrl.replace(re, this.variableConfiguration[key]); 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]; export const servers = [server1];

View File

@ -11,9 +11,11 @@
* Do not edit the class manually. * Do not edit the class manually.
*/ */
import { Observable } from 'rxjs'; import type { Observable } from 'rxjs';
import { BaseAPI, HttpHeaders, HttpQuery, throwIfNullOrUndefined, encodeURI, COLLECTION_FORMATS, OperationOpts, RawAjaxResponse } from '../runtime'; import type { AjaxResponse } from 'rxjs/ajax';
import { import { BaseAPI, throwIfNullOrUndefined, encodeURI, COLLECTION_FORMATS } from '../runtime';
import type { OperationOpts, HttpHeaders, HttpQuery } from '../runtime';
import type {
ApiResponse, ApiResponse,
Pet, Pet,
} from '../models'; } from '../models';
@ -64,8 +66,8 @@ export class PetApi extends BaseAPI {
* Add a new pet to the store * Add a new pet to the store
*/ */
addPet({ body }: AddPetRequest): Observable<void> addPet({ body }: AddPetRequest): Observable<void>
addPet({ body }: AddPetRequest, opts?: OperationOpts): Observable<void | RawAjaxResponse<void>> addPet({ body }: AddPetRequest, opts?: OperationOpts): Observable<void | AjaxResponse<void>>
addPet({ body }: AddPetRequest, opts?: OperationOpts): Observable<void | RawAjaxResponse<void>> { addPet({ body }: AddPetRequest, opts?: OperationOpts): Observable<void | AjaxResponse<void>> {
throwIfNullOrUndefined(body, 'body', 'addPet'); throwIfNullOrUndefined(body, 'body', 'addPet');
const headers: HttpHeaders = { const headers: HttpHeaders = {
@ -91,8 +93,8 @@ export class PetApi extends BaseAPI {
* Deletes a pet * Deletes a pet
*/ */
deletePet({ petId, apiKey }: DeletePetRequest): Observable<void> deletePet({ petId, apiKey }: DeletePetRequest): Observable<void>
deletePet({ petId, apiKey }: DeletePetRequest, opts?: OperationOpts): Observable<void | RawAjaxResponse<void>> deletePet({ petId, apiKey }: DeletePetRequest, opts?: OperationOpts): Observable<void | AjaxResponse<void>>
deletePet({ petId, apiKey }: DeletePetRequest, opts?: OperationOpts): Observable<void | RawAjaxResponse<void>> { deletePet({ petId, apiKey }: DeletePetRequest, opts?: OperationOpts): Observable<void | AjaxResponse<void>> {
throwIfNullOrUndefined(petId, 'petId', 'deletePet'); throwIfNullOrUndefined(petId, 'petId', 'deletePet');
const headers: HttpHeaders = { const headers: HttpHeaders = {
@ -118,8 +120,8 @@ export class PetApi extends BaseAPI {
* Finds Pets by status * Finds Pets by status
*/ */
findPetsByStatus({ status }: FindPetsByStatusRequest): Observable<Array<Pet>> findPetsByStatus({ status }: FindPetsByStatusRequest): Observable<Array<Pet>>
findPetsByStatus({ status }: FindPetsByStatusRequest, opts?: OperationOpts): Observable<RawAjaxResponse<Array<Pet>>> findPetsByStatus({ status }: FindPetsByStatusRequest, opts?: OperationOpts): Observable<AjaxResponse<Array<Pet>>>
findPetsByStatus({ status }: FindPetsByStatusRequest, opts?: OperationOpts): Observable<Array<Pet> | RawAjaxResponse<Array<Pet>>> { findPetsByStatus({ status }: FindPetsByStatusRequest, opts?: OperationOpts): Observable<Array<Pet> | AjaxResponse<Array<Pet>>> {
throwIfNullOrUndefined(status, 'status', 'findPetsByStatus'); throwIfNullOrUndefined(status, 'status', 'findPetsByStatus');
const headers: HttpHeaders = { const headers: HttpHeaders = {
@ -149,8 +151,8 @@ export class PetApi extends BaseAPI {
* Finds Pets by tags * Finds Pets by tags
*/ */
findPetsByTags({ tags }: FindPetsByTagsRequest): Observable<Array<Pet>> findPetsByTags({ tags }: FindPetsByTagsRequest): Observable<Array<Pet>>
findPetsByTags({ tags }: FindPetsByTagsRequest, opts?: OperationOpts): Observable<RawAjaxResponse<Array<Pet>>> findPetsByTags({ tags }: FindPetsByTagsRequest, opts?: OperationOpts): Observable<AjaxResponse<Array<Pet>>>
findPetsByTags({ tags }: FindPetsByTagsRequest, opts?: OperationOpts): Observable<Array<Pet> | RawAjaxResponse<Array<Pet>>> { findPetsByTags({ tags }: FindPetsByTagsRequest, opts?: OperationOpts): Observable<Array<Pet> | AjaxResponse<Array<Pet>>> {
throwIfNullOrUndefined(tags, 'tags', 'findPetsByTags'); throwIfNullOrUndefined(tags, 'tags', 'findPetsByTags');
const headers: HttpHeaders = { const headers: HttpHeaders = {
@ -180,8 +182,8 @@ export class PetApi extends BaseAPI {
* Find pet by ID * Find pet by ID
*/ */
getPetById({ petId }: GetPetByIdRequest): Observable<Pet> getPetById({ petId }: GetPetByIdRequest): Observable<Pet>
getPetById({ petId }: GetPetByIdRequest, opts?: OperationOpts): Observable<RawAjaxResponse<Pet>> getPetById({ petId }: GetPetByIdRequest, opts?: OperationOpts): Observable<AjaxResponse<Pet>>
getPetById({ petId }: GetPetByIdRequest, opts?: OperationOpts): Observable<Pet | RawAjaxResponse<Pet>> { getPetById({ petId }: GetPetByIdRequest, opts?: OperationOpts): Observable<Pet | AjaxResponse<Pet>> {
throwIfNullOrUndefined(petId, 'petId', 'getPetById'); throwIfNullOrUndefined(petId, 'petId', 'getPetById');
const headers: HttpHeaders = { const headers: HttpHeaders = {
@ -199,8 +201,8 @@ export class PetApi extends BaseAPI {
* Update an existing pet * Update an existing pet
*/ */
updatePet({ body }: UpdatePetRequest): Observable<void> updatePet({ body }: UpdatePetRequest): Observable<void>
updatePet({ body }: UpdatePetRequest, opts?: OperationOpts): Observable<void | RawAjaxResponse<void>> updatePet({ body }: UpdatePetRequest, opts?: OperationOpts): Observable<void | AjaxResponse<void>>
updatePet({ body }: UpdatePetRequest, opts?: OperationOpts): Observable<void | RawAjaxResponse<void>> { updatePet({ body }: UpdatePetRequest, opts?: OperationOpts): Observable<void | AjaxResponse<void>> {
throwIfNullOrUndefined(body, 'body', 'updatePet'); throwIfNullOrUndefined(body, 'body', 'updatePet');
const headers: HttpHeaders = { const headers: HttpHeaders = {
@ -226,8 +228,8 @@ export class PetApi extends BaseAPI {
* Updates a pet in the store with form data * Updates a pet in the store with form data
*/ */
updatePetWithForm({ petId, name, status }: UpdatePetWithFormRequest): Observable<void> updatePetWithForm({ petId, name, status }: UpdatePetWithFormRequest): Observable<void>
updatePetWithForm({ petId, name, status }: UpdatePetWithFormRequest, opts?: OperationOpts): Observable<void | RawAjaxResponse<void>> updatePetWithForm({ petId, name, status }: UpdatePetWithFormRequest, opts?: OperationOpts): Observable<void | AjaxResponse<void>>
updatePetWithForm({ petId, name, status }: UpdatePetWithFormRequest, opts?: OperationOpts): Observable<void | RawAjaxResponse<void>> { updatePetWithForm({ petId, name, status }: UpdatePetWithFormRequest, opts?: OperationOpts): Observable<void | AjaxResponse<void>> {
throwIfNullOrUndefined(petId, 'petId', 'updatePetWithForm'); throwIfNullOrUndefined(petId, 'petId', 'updatePetWithForm');
const headers: HttpHeaders = { const headers: HttpHeaders = {
@ -256,8 +258,8 @@ export class PetApi extends BaseAPI {
* uploads an image * uploads an image
*/ */
uploadFile({ petId, additionalMetadata, file }: UploadFileRequest): Observable<ApiResponse> uploadFile({ petId, additionalMetadata, file }: UploadFileRequest): Observable<ApiResponse>
uploadFile({ petId, additionalMetadata, file }: UploadFileRequest, opts?: OperationOpts): Observable<RawAjaxResponse<ApiResponse>> uploadFile({ petId, additionalMetadata, file }: UploadFileRequest, opts?: OperationOpts): Observable<AjaxResponse<ApiResponse>>
uploadFile({ petId, additionalMetadata, file }: UploadFileRequest, opts?: OperationOpts): Observable<ApiResponse | RawAjaxResponse<ApiResponse>> { uploadFile({ petId, additionalMetadata, file }: UploadFileRequest, opts?: OperationOpts): Observable<ApiResponse | AjaxResponse<ApiResponse>> {
throwIfNullOrUndefined(petId, 'petId', 'uploadFile'); throwIfNullOrUndefined(petId, 'petId', 'uploadFile');
const headers: HttpHeaders = { const headers: HttpHeaders = {

View File

@ -11,9 +11,11 @@
* Do not edit the class manually. * Do not edit the class manually.
*/ */
import { Observable } from 'rxjs'; import type { Observable } from 'rxjs';
import { BaseAPI, HttpHeaders, throwIfNullOrUndefined, encodeURI, OperationOpts, RawAjaxResponse } from '../runtime'; import type { AjaxResponse } from 'rxjs/ajax';
import { import { BaseAPI, throwIfNullOrUndefined, encodeURI } from '../runtime';
import type { OperationOpts, HttpHeaders } from '../runtime';
import type {
Order, Order,
} from '../models'; } from '../models';
@ -39,8 +41,8 @@ export class StoreApi extends BaseAPI {
* Delete purchase order by ID * Delete purchase order by ID
*/ */
deleteOrder({ orderId }: DeleteOrderRequest): Observable<void> deleteOrder({ orderId }: DeleteOrderRequest): Observable<void>
deleteOrder({ orderId }: DeleteOrderRequest, opts?: OperationOpts): Observable<void | RawAjaxResponse<void>> deleteOrder({ orderId }: DeleteOrderRequest, opts?: OperationOpts): Observable<void | AjaxResponse<void>>
deleteOrder({ orderId }: DeleteOrderRequest, opts?: OperationOpts): Observable<void | RawAjaxResponse<void>> { deleteOrder({ orderId }: DeleteOrderRequest, opts?: OperationOpts): Observable<void | AjaxResponse<void>> {
throwIfNullOrUndefined(orderId, 'orderId', 'deleteOrder'); throwIfNullOrUndefined(orderId, 'orderId', 'deleteOrder');
return this.request<void>({ return this.request<void>({
@ -54,8 +56,8 @@ export class StoreApi extends BaseAPI {
* Returns pet inventories by status * Returns pet inventories by status
*/ */
getInventory(): Observable<{ [key: string]: number; }> getInventory(): Observable<{ [key: string]: number; }>
getInventory(opts?: OperationOpts): Observable<RawAjaxResponse<{ [key: string]: number; }>> getInventory(opts?: OperationOpts): Observable<AjaxResponse<{ [key: string]: number; }>>
getInventory(opts?: OperationOpts): Observable<{ [key: string]: number; } | RawAjaxResponse<{ [key: string]: number; }>> { getInventory(opts?: OperationOpts): Observable<{ [key: string]: number; } | AjaxResponse<{ [key: string]: number; }>> {
const headers: HttpHeaders = { const headers: HttpHeaders = {
...(this.configuration.apiKey && { 'api_key': this.configuration.apiKey('api_key') }), // api_key authentication ...(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 * Find purchase order by ID
*/ */
getOrderById({ orderId }: GetOrderByIdRequest): Observable<Order> getOrderById({ orderId }: GetOrderByIdRequest): Observable<Order>
getOrderById({ orderId }: GetOrderByIdRequest, opts?: OperationOpts): Observable<RawAjaxResponse<Order>> getOrderById({ orderId }: GetOrderByIdRequest, opts?: OperationOpts): Observable<AjaxResponse<Order>>
getOrderById({ orderId }: GetOrderByIdRequest, opts?: OperationOpts): Observable<Order | RawAjaxResponse<Order>> { getOrderById({ orderId }: GetOrderByIdRequest, opts?: OperationOpts): Observable<Order | AjaxResponse<Order>> {
throwIfNullOrUndefined(orderId, 'orderId', 'getOrderById'); throwIfNullOrUndefined(orderId, 'orderId', 'getOrderById');
return this.request<Order>({ return this.request<Order>({
@ -86,8 +88,8 @@ export class StoreApi extends BaseAPI {
* Place an order for a pet * Place an order for a pet
*/ */
placeOrder({ body }: PlaceOrderRequest): Observable<Order> placeOrder({ body }: PlaceOrderRequest): Observable<Order>
placeOrder({ body }: PlaceOrderRequest, opts?: OperationOpts): Observable<RawAjaxResponse<Order>> placeOrder({ body }: PlaceOrderRequest, opts?: OperationOpts): Observable<AjaxResponse<Order>>
placeOrder({ body }: PlaceOrderRequest, opts?: OperationOpts): Observable<Order | RawAjaxResponse<Order>> { placeOrder({ body }: PlaceOrderRequest, opts?: OperationOpts): Observable<Order | AjaxResponse<Order>> {
throwIfNullOrUndefined(body, 'body', 'placeOrder'); throwIfNullOrUndefined(body, 'body', 'placeOrder');
const headers: HttpHeaders = { const headers: HttpHeaders = {

View File

@ -11,9 +11,11 @@
* Do not edit the class manually. * Do not edit the class manually.
*/ */
import { Observable } from 'rxjs'; import type { Observable } from 'rxjs';
import { BaseAPI, HttpHeaders, HttpQuery, throwIfNullOrUndefined, encodeURI, OperationOpts, RawAjaxResponse } from '../runtime'; import type { AjaxResponse } from 'rxjs/ajax';
import { import { BaseAPI, throwIfNullOrUndefined, encodeURI } from '../runtime';
import type { OperationOpts, HttpHeaders, HttpQuery } from '../runtime';
import type {
User, User,
} from '../models'; } from '../models';
@ -57,8 +59,8 @@ export class UserApi extends BaseAPI {
* Create user * Create user
*/ */
createUser({ body }: CreateUserRequest): Observable<void> createUser({ body }: CreateUserRequest): Observable<void>
createUser({ body }: CreateUserRequest, opts?: OperationOpts): Observable<void | RawAjaxResponse<void>> createUser({ body }: CreateUserRequest, opts?: OperationOpts): Observable<void | AjaxResponse<void>>
createUser({ body }: CreateUserRequest, opts?: OperationOpts): Observable<void | RawAjaxResponse<void>> { createUser({ body }: CreateUserRequest, opts?: OperationOpts): Observable<void | AjaxResponse<void>> {
throwIfNullOrUndefined(body, 'body', 'createUser'); throwIfNullOrUndefined(body, 'body', 'createUser');
const headers: HttpHeaders = { const headers: HttpHeaders = {
@ -77,8 +79,8 @@ export class UserApi extends BaseAPI {
* Creates list of users with given input array * Creates list of users with given input array
*/ */
createUsersWithArrayInput({ body }: CreateUsersWithArrayInputRequest): Observable<void> createUsersWithArrayInput({ body }: CreateUsersWithArrayInputRequest): Observable<void>
createUsersWithArrayInput({ body }: CreateUsersWithArrayInputRequest, opts?: OperationOpts): Observable<void | RawAjaxResponse<void>> createUsersWithArrayInput({ body }: CreateUsersWithArrayInputRequest, opts?: OperationOpts): Observable<void | AjaxResponse<void>>
createUsersWithArrayInput({ body }: CreateUsersWithArrayInputRequest, opts?: OperationOpts): Observable<void | RawAjaxResponse<void>> { createUsersWithArrayInput({ body }: CreateUsersWithArrayInputRequest, opts?: OperationOpts): Observable<void | AjaxResponse<void>> {
throwIfNullOrUndefined(body, 'body', 'createUsersWithArrayInput'); throwIfNullOrUndefined(body, 'body', 'createUsersWithArrayInput');
const headers: HttpHeaders = { const headers: HttpHeaders = {
@ -97,8 +99,8 @@ export class UserApi extends BaseAPI {
* Creates list of users with given input array * Creates list of users with given input array
*/ */
createUsersWithListInput({ body }: CreateUsersWithListInputRequest): Observable<void> createUsersWithListInput({ body }: CreateUsersWithListInputRequest): Observable<void>
createUsersWithListInput({ body }: CreateUsersWithListInputRequest, opts?: OperationOpts): Observable<void | RawAjaxResponse<void>> createUsersWithListInput({ body }: CreateUsersWithListInputRequest, opts?: OperationOpts): Observable<void | AjaxResponse<void>>
createUsersWithListInput({ body }: CreateUsersWithListInputRequest, opts?: OperationOpts): Observable<void | RawAjaxResponse<void>> { createUsersWithListInput({ body }: CreateUsersWithListInputRequest, opts?: OperationOpts): Observable<void | AjaxResponse<void>> {
throwIfNullOrUndefined(body, 'body', 'createUsersWithListInput'); throwIfNullOrUndefined(body, 'body', 'createUsersWithListInput');
const headers: HttpHeaders = { const headers: HttpHeaders = {
@ -118,8 +120,8 @@ export class UserApi extends BaseAPI {
* Delete user * Delete user
*/ */
deleteUser({ username }: DeleteUserRequest): Observable<void> deleteUser({ username }: DeleteUserRequest): Observable<void>
deleteUser({ username }: DeleteUserRequest, opts?: OperationOpts): Observable<void | RawAjaxResponse<void>> deleteUser({ username }: DeleteUserRequest, opts?: OperationOpts): Observable<void | AjaxResponse<void>>
deleteUser({ username }: DeleteUserRequest, opts?: OperationOpts): Observable<void | RawAjaxResponse<void>> { deleteUser({ username }: DeleteUserRequest, opts?: OperationOpts): Observable<void | AjaxResponse<void>> {
throwIfNullOrUndefined(username, 'username', 'deleteUser'); throwIfNullOrUndefined(username, 'username', 'deleteUser');
return this.request<void>({ return this.request<void>({
@ -132,8 +134,8 @@ export class UserApi extends BaseAPI {
* Get user by user name * Get user by user name
*/ */
getUserByName({ username }: GetUserByNameRequest): Observable<User> getUserByName({ username }: GetUserByNameRequest): Observable<User>
getUserByName({ username }: GetUserByNameRequest, opts?: OperationOpts): Observable<RawAjaxResponse<User>> getUserByName({ username }: GetUserByNameRequest, opts?: OperationOpts): Observable<AjaxResponse<User>>
getUserByName({ username }: GetUserByNameRequest, opts?: OperationOpts): Observable<User | RawAjaxResponse<User>> { getUserByName({ username }: GetUserByNameRequest, opts?: OperationOpts): Observable<User | AjaxResponse<User>> {
throwIfNullOrUndefined(username, 'username', 'getUserByName'); throwIfNullOrUndefined(username, 'username', 'getUserByName');
return this.request<User>({ return this.request<User>({
@ -146,8 +148,8 @@ export class UserApi extends BaseAPI {
* Logs user into the system * Logs user into the system
*/ */
loginUser({ username, password }: LoginUserRequest): Observable<string> loginUser({ username, password }: LoginUserRequest): Observable<string>
loginUser({ username, password }: LoginUserRequest, opts?: OperationOpts): Observable<RawAjaxResponse<string>> loginUser({ username, password }: LoginUserRequest, opts?: OperationOpts): Observable<AjaxResponse<string>>
loginUser({ username, password }: LoginUserRequest, opts?: OperationOpts): Observable<string | RawAjaxResponse<string>> { loginUser({ username, password }: LoginUserRequest, opts?: OperationOpts): Observable<string | AjaxResponse<string>> {
throwIfNullOrUndefined(username, 'username', 'loginUser'); throwIfNullOrUndefined(username, 'username', 'loginUser');
throwIfNullOrUndefined(password, 'password', 'loginUser'); throwIfNullOrUndefined(password, 'password', 'loginUser');
@ -167,8 +169,8 @@ export class UserApi extends BaseAPI {
* Logs out current logged in user session * Logs out current logged in user session
*/ */
logoutUser(): Observable<void> logoutUser(): Observable<void>
logoutUser(opts?: OperationOpts): Observable<void | RawAjaxResponse<void>> logoutUser(opts?: OperationOpts): Observable<void | AjaxResponse<void>>
logoutUser(opts?: OperationOpts): Observable<void | RawAjaxResponse<void>> { logoutUser(opts?: OperationOpts): Observable<void | AjaxResponse<void>> {
return this.request<void>({ return this.request<void>({
url: '/user/logout', url: '/user/logout',
method: 'GET', method: 'GET',
@ -180,8 +182,8 @@ export class UserApi extends BaseAPI {
* Updated user * Updated user
*/ */
updateUser({ username, body }: UpdateUserRequest): Observable<void> updateUser({ username, body }: UpdateUserRequest): Observable<void>
updateUser({ username, body }: UpdateUserRequest, opts?: OperationOpts): Observable<void | RawAjaxResponse<void>> updateUser({ username, body }: UpdateUserRequest, opts?: OperationOpts): Observable<void | AjaxResponse<void>>
updateUser({ username, body }: UpdateUserRequest, opts?: OperationOpts): Observable<void | RawAjaxResponse<void>> { updateUser({ username, body }: UpdateUserRequest, opts?: OperationOpts): Observable<void | AjaxResponse<void>> {
throwIfNullOrUndefined(username, 'username', 'updateUser'); throwIfNullOrUndefined(username, 'username', 'updateUser');
throwIfNullOrUndefined(body, 'body', 'updateUser'); throwIfNullOrUndefined(body, 'body', 'updateUser');

View File

@ -11,7 +11,7 @@
* Do not edit the class manually. * Do not edit the class manually.
*/ */
import { import type {
Category, Category,
Tag, Tag,
} from './'; } from './';

View File

@ -10,10 +10,10 @@
"prepare": "npm run build" "prepare": "npm run build"
}, },
"dependencies": { "dependencies": {
"rxjs": "^6.3.3" "rxjs": "^7.2.0"
}, },
"devDependencies": { "devDependencies": {
"typescript": "^3.7" "typescript": "^4.0"
}, },
"publishConfig": { "publishConfig": {
"registry": "https://skimdb.npmjs.com/registry" "registry": "https://skimdb.npmjs.com/registry"

View File

@ -11,8 +11,10 @@
* Do not edit the class manually. * Do not edit the class manually.
*/ */
import { Observable, of } from 'rxjs'; import { of } from 'rxjs';
import { ajax, AjaxRequest, AjaxResponse } from 'rxjs/ajax'; import type { Observable } from 'rxjs';
import { ajax } from 'rxjs/ajax';
import type { AjaxConfig, AjaxResponse } from 'rxjs/ajax';
import { map, concatMap } from 'rxjs/operators'; import { map, concatMap } from 'rxjs/operators';
import { servers } from './servers'; import { servers } from './servers';
@ -80,9 +82,9 @@ export class BaseAPI {
this.withMiddleware(postMiddlewares.map((post) => ({ post }))); this.withMiddleware(postMiddlewares.map((post) => ({ post })));
protected request<T>(requestOpts: RequestOpts): Observable<T> protected request<T>(requestOpts: RequestOpts): Observable<T>
protected request<T>(requestOpts: RequestOpts, responseOpts?: ResponseOpts): Observable<RawAjaxResponse<T>> protected request<T>(requestOpts: RequestOpts, responseOpts?: ResponseOpts): Observable<AjaxResponse<T>>
protected request<T>(requestOpts: RequestOpts, responseOpts?: ResponseOpts): Observable<T | RawAjaxResponse<T>> { protected request<T>(requestOpts: RequestOpts, responseOpts?: ResponseOpts): Observable<T | AjaxResponse<T>> {
return this.rxjsRequest(this.createRequestArgs(requestOpts)).pipe( return this.rxjsRequest<T>(this.createRequestArgs(requestOpts)).pipe(
map((res) => { map((res) => {
const { status, response } = res; const { status, response } = res;
if (status >= 200 && status < 300) { 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. // 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 // this is done to avoid urls ending with a '?' character which buggy webservers
// do not handle correctly sometimes. // do not handle correctly sometimes.
@ -108,14 +110,14 @@ export class BaseAPI {
}; };
} }
private rxjsRequest = (params: RequestArgs): Observable<AjaxResponse> => private rxjsRequest = <T>(params: AjaxConfig): Observable<AjaxResponse<T>> =>
of(params).pipe( of(params).pipe(
map((request) => { map((request) => {
this.middleware.filter((item) => item.pre).forEach((mw) => (request = mw.pre!(request))); this.middleware.filter((item) => item.pre).forEach((mw) => (request = mw.pre!(request)));
return request; return request;
}), }),
concatMap((args) => concatMap((args) =>
ajax(args).pipe( ajax<T>(args).pipe(
map((response) => { map((response) => {
this.middleware.filter((item) => item.post).forEach((mw) => (response = mw.post!(response))); this.middleware.filter((item) => item.post).forEach((mw) => (response = mw.post!(response)));
return response; return response;
@ -153,13 +155,13 @@ export type HttpHeaders = { [key: string]: string };
export type HttpQuery = Partial<{ [key: string]: string | number | null | boolean | Array<string | number | null | boolean> }>; // partial is needed for strict mode export type HttpQuery = Partial<{ [key: string]: string | number | null | boolean | Array<string | number | null | boolean> }>; // partial is needed for strict mode
export type HttpBody = Json | FormData; 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 query?: HttpQuery; // additional prop
// the following props have improved types over AjaxRequest // the following props have improved types over AjaxRequest
method: HttpMethod; method: HttpMethod;
headers?: HttpHeaders; headers?: HttpHeaders;
body?: HttpBody; body?: HttpBody;
responseType?: 'json' | 'blob' | 'arraybuffer' | 'text';
} }
export interface ResponseOpts { export interface ResponseOpts {
@ -170,11 +172,6 @@ export interface OperationOpts {
responseOpts?: ResponseOpts; responseOpts?: ResponseOpts;
} }
// AjaxResponse with typed response
export interface RawAjaxResponse<T> extends AjaxResponse {
response: T;
}
export const encodeURI = (value: any) => encodeURIComponent(`${value}`); export const encodeURI = (value: any) => encodeURIComponent(`${value}`);
const queryString = (params: HttpQuery): string => Object.entries(params) const queryString = (params: HttpQuery): string => Object.entries(params)
@ -184,29 +181,13 @@ const queryString = (params: HttpQuery): string => Object.entries(params)
) )
.join('&'); .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) => { export const throwIfNullOrUndefined = (value: any, paramName: string, nickname: string) => {
if (value == null) { if (value == null) {
throw new Error(`Parameter "${paramName}" was null or undefined when calling "${nickname}".`); 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 { export interface Middleware {
pre?(request: RequestArgs): RequestArgs; pre?(request: AjaxConfig): AjaxConfig;
post?(response: ResponseArgs): ResponseArgs; post?(response: AjaxResponse<any>): AjaxResponse<any>;
} }

View File

@ -17,11 +17,11 @@ export class ServerConfiguration<T extends { [key: string]: string }> {
} }
public getConfiguration(): T { public getConfiguration(): T {
return this.variableConfiguration return this.variableConfiguration;
} }
public getDescription(): string { public getDescription(): string {
return this.description return this.description;
} }
/** /**
@ -34,10 +34,10 @@ export class ServerConfiguration<T extends { [key: string]: string }> {
var re = new RegExp("{" + key + "}","g"); var re = new RegExp("{" + key + "}","g");
replacedUrl = replacedUrl.replace(re, this.variableConfiguration[key]); 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]; export const servers = [server1];

View File

@ -11,9 +11,11 @@
* Do not edit the class manually. * Do not edit the class manually.
*/ */
import { Observable } from 'rxjs'; import type { Observable } from 'rxjs';
import { BaseAPI, HttpHeaders, HttpQuery, throwIfNullOrUndefined, encodeURI, COLLECTION_FORMATS, OperationOpts, RawAjaxResponse } from '../runtime'; import type { AjaxResponse } from 'rxjs/ajax';
import { import { BaseAPI, throwIfNullOrUndefined, encodeURI, COLLECTION_FORMATS } from '../runtime';
import type { OperationOpts, HttpHeaders, HttpQuery } from '../runtime';
import type {
ApiResponse, ApiResponse,
Pet, Pet,
} from '../models'; } from '../models';
@ -65,8 +67,8 @@ export class PetApi extends BaseAPI {
*/ */
addPet({ body }: AddPetRequest): Observable<void> addPet({ body }: AddPetRequest): Observable<void>
addPet({ body }: AddPetRequest, opts?: Pick<OperationOpts, 'progressSubscriber'>): Observable<void> addPet({ body }: AddPetRequest, opts?: Pick<OperationOpts, 'progressSubscriber'>): Observable<void>
addPet({ body }: AddPetRequest, opts?: OperationOpts): Observable<void | RawAjaxResponse<void>> addPet({ body }: AddPetRequest, opts?: OperationOpts): Observable<void | AjaxResponse<void>>
addPet({ body }: AddPetRequest, opts?: OperationOpts): Observable<void | RawAjaxResponse<void>> { addPet({ body }: AddPetRequest, opts?: OperationOpts): Observable<void | AjaxResponse<void>> {
throwIfNullOrUndefined(body, 'body', 'addPet'); throwIfNullOrUndefined(body, 'body', 'addPet');
const headers: HttpHeaders = { const headers: HttpHeaders = {
@ -94,8 +96,8 @@ export class PetApi extends BaseAPI {
*/ */
deletePet({ petId, apiKey }: DeletePetRequest): Observable<void> deletePet({ petId, apiKey }: DeletePetRequest): Observable<void>
deletePet({ petId, apiKey }: DeletePetRequest, opts?: Pick<OperationOpts, 'progressSubscriber'>): Observable<void> deletePet({ petId, apiKey }: DeletePetRequest, opts?: Pick<OperationOpts, 'progressSubscriber'>): Observable<void>
deletePet({ petId, apiKey }: DeletePetRequest, opts?: OperationOpts): Observable<void | RawAjaxResponse<void>> deletePet({ petId, apiKey }: DeletePetRequest, opts?: OperationOpts): Observable<void | AjaxResponse<void>>
deletePet({ petId, apiKey }: DeletePetRequest, opts?: OperationOpts): Observable<void | RawAjaxResponse<void>> { deletePet({ petId, apiKey }: DeletePetRequest, opts?: OperationOpts): Observable<void | AjaxResponse<void>> {
throwIfNullOrUndefined(petId, 'petId', 'deletePet'); throwIfNullOrUndefined(petId, 'petId', 'deletePet');
const headers: HttpHeaders = { const headers: HttpHeaders = {
@ -123,8 +125,8 @@ export class PetApi extends BaseAPI {
*/ */
findPetsByStatus({ status }: FindPetsByStatusRequest): Observable<Array<Pet>> findPetsByStatus({ status }: FindPetsByStatusRequest): Observable<Array<Pet>>
findPetsByStatus({ status }: FindPetsByStatusRequest, opts?: Pick<OperationOpts, 'progressSubscriber'>): Observable<Array<Pet>> findPetsByStatus({ status }: FindPetsByStatusRequest, opts?: Pick<OperationOpts, 'progressSubscriber'>): Observable<Array<Pet>>
findPetsByStatus({ status }: FindPetsByStatusRequest, opts?: OperationOpts): Observable<RawAjaxResponse<Array<Pet>>> findPetsByStatus({ status }: FindPetsByStatusRequest, opts?: OperationOpts): Observable<AjaxResponse<Array<Pet>>>
findPetsByStatus({ status }: FindPetsByStatusRequest, opts?: OperationOpts): Observable<Array<Pet> | RawAjaxResponse<Array<Pet>>> { findPetsByStatus({ status }: FindPetsByStatusRequest, opts?: OperationOpts): Observable<Array<Pet> | AjaxResponse<Array<Pet>>> {
throwIfNullOrUndefined(status, 'status', 'findPetsByStatus'); throwIfNullOrUndefined(status, 'status', 'findPetsByStatus');
const headers: HttpHeaders = { const headers: HttpHeaders = {
@ -156,8 +158,8 @@ export class PetApi extends BaseAPI {
*/ */
findPetsByTags({ tags }: FindPetsByTagsRequest): Observable<Array<Pet>> findPetsByTags({ tags }: FindPetsByTagsRequest): Observable<Array<Pet>>
findPetsByTags({ tags }: FindPetsByTagsRequest, opts?: Pick<OperationOpts, 'progressSubscriber'>): Observable<Array<Pet>> findPetsByTags({ tags }: FindPetsByTagsRequest, opts?: Pick<OperationOpts, 'progressSubscriber'>): Observable<Array<Pet>>
findPetsByTags({ tags }: FindPetsByTagsRequest, opts?: OperationOpts): Observable<RawAjaxResponse<Array<Pet>>> findPetsByTags({ tags }: FindPetsByTagsRequest, opts?: OperationOpts): Observable<AjaxResponse<Array<Pet>>>
findPetsByTags({ tags }: FindPetsByTagsRequest, opts?: OperationOpts): Observable<Array<Pet> | RawAjaxResponse<Array<Pet>>> { findPetsByTags({ tags }: FindPetsByTagsRequest, opts?: OperationOpts): Observable<Array<Pet> | AjaxResponse<Array<Pet>>> {
throwIfNullOrUndefined(tags, 'tags', 'findPetsByTags'); throwIfNullOrUndefined(tags, 'tags', 'findPetsByTags');
const headers: HttpHeaders = { const headers: HttpHeaders = {
@ -189,8 +191,8 @@ export class PetApi extends BaseAPI {
*/ */
getPetById({ petId }: GetPetByIdRequest): Observable<Pet> getPetById({ petId }: GetPetByIdRequest): Observable<Pet>
getPetById({ petId }: GetPetByIdRequest, opts?: Pick<OperationOpts, 'progressSubscriber'>): Observable<Pet> getPetById({ petId }: GetPetByIdRequest, opts?: Pick<OperationOpts, 'progressSubscriber'>): Observable<Pet>
getPetById({ petId }: GetPetByIdRequest, opts?: OperationOpts): Observable<RawAjaxResponse<Pet>> getPetById({ petId }: GetPetByIdRequest, opts?: OperationOpts): Observable<AjaxResponse<Pet>>
getPetById({ petId }: GetPetByIdRequest, opts?: OperationOpts): Observable<Pet | RawAjaxResponse<Pet>> { getPetById({ petId }: GetPetByIdRequest, opts?: OperationOpts): Observable<Pet | AjaxResponse<Pet>> {
throwIfNullOrUndefined(petId, 'petId', 'getPetById'); throwIfNullOrUndefined(petId, 'petId', 'getPetById');
const headers: HttpHeaders = { const headers: HttpHeaders = {
@ -210,8 +212,8 @@ export class PetApi extends BaseAPI {
*/ */
updatePet({ body }: UpdatePetRequest): Observable<void> updatePet({ body }: UpdatePetRequest): Observable<void>
updatePet({ body }: UpdatePetRequest, opts?: Pick<OperationOpts, 'progressSubscriber'>): Observable<void> updatePet({ body }: UpdatePetRequest, opts?: Pick<OperationOpts, 'progressSubscriber'>): Observable<void>
updatePet({ body }: UpdatePetRequest, opts?: OperationOpts): Observable<void | RawAjaxResponse<void>> updatePet({ body }: UpdatePetRequest, opts?: OperationOpts): Observable<void | AjaxResponse<void>>
updatePet({ body }: UpdatePetRequest, opts?: OperationOpts): Observable<void | RawAjaxResponse<void>> { updatePet({ body }: UpdatePetRequest, opts?: OperationOpts): Observable<void | AjaxResponse<void>> {
throwIfNullOrUndefined(body, 'body', 'updatePet'); throwIfNullOrUndefined(body, 'body', 'updatePet');
const headers: HttpHeaders = { const headers: HttpHeaders = {
@ -239,8 +241,8 @@ export class PetApi extends BaseAPI {
*/ */
updatePetWithForm({ petId, name, status }: UpdatePetWithFormRequest): Observable<void> updatePetWithForm({ petId, name, status }: UpdatePetWithFormRequest): Observable<void>
updatePetWithForm({ petId, name, status }: UpdatePetWithFormRequest, opts?: Pick<OperationOpts, 'progressSubscriber'>): Observable<void> updatePetWithForm({ petId, name, status }: UpdatePetWithFormRequest, opts?: Pick<OperationOpts, 'progressSubscriber'>): Observable<void>
updatePetWithForm({ petId, name, status }: UpdatePetWithFormRequest, opts?: OperationOpts): Observable<void | RawAjaxResponse<void>> updatePetWithForm({ petId, name, status }: UpdatePetWithFormRequest, opts?: OperationOpts): Observable<void | AjaxResponse<void>>
updatePetWithForm({ petId, name, status }: UpdatePetWithFormRequest, opts?: OperationOpts): Observable<void | RawAjaxResponse<void>> { updatePetWithForm({ petId, name, status }: UpdatePetWithFormRequest, opts?: OperationOpts): Observable<void | AjaxResponse<void>> {
throwIfNullOrUndefined(petId, 'petId', 'updatePetWithForm'); throwIfNullOrUndefined(petId, 'petId', 'updatePetWithForm');
const headers: HttpHeaders = { const headers: HttpHeaders = {
@ -271,8 +273,8 @@ export class PetApi extends BaseAPI {
*/ */
uploadFile({ petId, additionalMetadata, file }: UploadFileRequest): Observable<ApiResponse> uploadFile({ petId, additionalMetadata, file }: UploadFileRequest): Observable<ApiResponse>
uploadFile({ petId, additionalMetadata, file }: UploadFileRequest, opts?: Pick<OperationOpts, 'progressSubscriber'>): Observable<ApiResponse> uploadFile({ petId, additionalMetadata, file }: UploadFileRequest, opts?: Pick<OperationOpts, 'progressSubscriber'>): Observable<ApiResponse>
uploadFile({ petId, additionalMetadata, file }: UploadFileRequest, opts?: OperationOpts): Observable<RawAjaxResponse<ApiResponse>> uploadFile({ petId, additionalMetadata, file }: UploadFileRequest, opts?: OperationOpts): Observable<AjaxResponse<ApiResponse>>
uploadFile({ petId, additionalMetadata, file }: UploadFileRequest, opts?: OperationOpts): Observable<ApiResponse | RawAjaxResponse<ApiResponse>> { uploadFile({ petId, additionalMetadata, file }: UploadFileRequest, opts?: OperationOpts): Observable<ApiResponse | AjaxResponse<ApiResponse>> {
throwIfNullOrUndefined(petId, 'petId', 'uploadFile'); throwIfNullOrUndefined(petId, 'petId', 'uploadFile');
const headers: HttpHeaders = { const headers: HttpHeaders = {

View File

@ -11,9 +11,11 @@
* Do not edit the class manually. * Do not edit the class manually.
*/ */
import { Observable } from 'rxjs'; import type { Observable } from 'rxjs';
import { BaseAPI, HttpHeaders, throwIfNullOrUndefined, encodeURI, OperationOpts, RawAjaxResponse } from '../runtime'; import type { AjaxResponse } from 'rxjs/ajax';
import { import { BaseAPI, throwIfNullOrUndefined, encodeURI } from '../runtime';
import type { OperationOpts, HttpHeaders } from '../runtime';
import type {
Order, Order,
} from '../models'; } from '../models';
@ -40,8 +42,8 @@ export class StoreApi extends BaseAPI {
*/ */
deleteOrder({ orderId }: DeleteOrderRequest): Observable<void> deleteOrder({ orderId }: DeleteOrderRequest): Observable<void>
deleteOrder({ orderId }: DeleteOrderRequest, opts?: Pick<OperationOpts, 'progressSubscriber'>): Observable<void> deleteOrder({ orderId }: DeleteOrderRequest, opts?: Pick<OperationOpts, 'progressSubscriber'>): Observable<void>
deleteOrder({ orderId }: DeleteOrderRequest, opts?: OperationOpts): Observable<void | RawAjaxResponse<void>> deleteOrder({ orderId }: DeleteOrderRequest, opts?: OperationOpts): Observable<void | AjaxResponse<void>>
deleteOrder({ orderId }: DeleteOrderRequest, opts?: OperationOpts): Observable<void | RawAjaxResponse<void>> { deleteOrder({ orderId }: DeleteOrderRequest, opts?: OperationOpts): Observable<void | AjaxResponse<void>> {
throwIfNullOrUndefined(orderId, 'orderId', 'deleteOrder'); throwIfNullOrUndefined(orderId, 'orderId', 'deleteOrder');
return this.request<void>({ return this.request<void>({
@ -57,8 +59,8 @@ export class StoreApi extends BaseAPI {
*/ */
getInventory(): Observable<{ [key: string]: number; }> getInventory(): Observable<{ [key: string]: number; }>
getInventory(opts?: Pick<OperationOpts, 'progressSubscriber'>): Observable<{ [key: string]: number; }> getInventory(opts?: Pick<OperationOpts, 'progressSubscriber'>): Observable<{ [key: string]: number; }>
getInventory(opts?: OperationOpts): Observable<RawAjaxResponse<{ [key: string]: number; }>> getInventory(opts?: OperationOpts): Observable<AjaxResponse<{ [key: string]: number; }>>
getInventory(opts?: OperationOpts): Observable<{ [key: string]: number; } | RawAjaxResponse<{ [key: string]: number; }>> { getInventory(opts?: OperationOpts): Observable<{ [key: string]: number; } | AjaxResponse<{ [key: string]: number; }>> {
const headers: HttpHeaders = { const headers: HttpHeaders = {
...(this.configuration.apiKey && { 'api_key': this.configuration.apiKey('api_key') }), // api_key authentication ...(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<Order> getOrderById({ orderId }: GetOrderByIdRequest): Observable<Order>
getOrderById({ orderId }: GetOrderByIdRequest, opts?: Pick<OperationOpts, 'progressSubscriber'>): Observable<Order> getOrderById({ orderId }: GetOrderByIdRequest, opts?: Pick<OperationOpts, 'progressSubscriber'>): Observable<Order>
getOrderById({ orderId }: GetOrderByIdRequest, opts?: OperationOpts): Observable<RawAjaxResponse<Order>> getOrderById({ orderId }: GetOrderByIdRequest, opts?: OperationOpts): Observable<AjaxResponse<Order>>
getOrderById({ orderId }: GetOrderByIdRequest, opts?: OperationOpts): Observable<Order | RawAjaxResponse<Order>> { getOrderById({ orderId }: GetOrderByIdRequest, opts?: OperationOpts): Observable<Order | AjaxResponse<Order>> {
throwIfNullOrUndefined(orderId, 'orderId', 'getOrderById'); throwIfNullOrUndefined(orderId, 'orderId', 'getOrderById');
return this.request<Order>({ return this.request<Order>({
@ -93,8 +95,8 @@ export class StoreApi extends BaseAPI {
*/ */
placeOrder({ body }: PlaceOrderRequest): Observable<Order> placeOrder({ body }: PlaceOrderRequest): Observable<Order>
placeOrder({ body }: PlaceOrderRequest, opts?: Pick<OperationOpts, 'progressSubscriber'>): Observable<Order> placeOrder({ body }: PlaceOrderRequest, opts?: Pick<OperationOpts, 'progressSubscriber'>): Observable<Order>
placeOrder({ body }: PlaceOrderRequest, opts?: OperationOpts): Observable<RawAjaxResponse<Order>> placeOrder({ body }: PlaceOrderRequest, opts?: OperationOpts): Observable<AjaxResponse<Order>>
placeOrder({ body }: PlaceOrderRequest, opts?: OperationOpts): Observable<Order | RawAjaxResponse<Order>> { placeOrder({ body }: PlaceOrderRequest, opts?: OperationOpts): Observable<Order | AjaxResponse<Order>> {
throwIfNullOrUndefined(body, 'body', 'placeOrder'); throwIfNullOrUndefined(body, 'body', 'placeOrder');
const headers: HttpHeaders = { const headers: HttpHeaders = {

View File

@ -11,9 +11,11 @@
* Do not edit the class manually. * Do not edit the class manually.
*/ */
import { Observable } from 'rxjs'; import type { Observable } from 'rxjs';
import { BaseAPI, HttpHeaders, HttpQuery, throwIfNullOrUndefined, encodeURI, OperationOpts, RawAjaxResponse } from '../runtime'; import type { AjaxResponse } from 'rxjs/ajax';
import { import { BaseAPI, throwIfNullOrUndefined, encodeURI } from '../runtime';
import type { OperationOpts, HttpHeaders, HttpQuery } from '../runtime';
import type {
User, User,
} from '../models'; } from '../models';
@ -58,8 +60,8 @@ export class UserApi extends BaseAPI {
*/ */
createUser({ body }: CreateUserRequest): Observable<void> createUser({ body }: CreateUserRequest): Observable<void>
createUser({ body }: CreateUserRequest, opts?: Pick<OperationOpts, 'progressSubscriber'>): Observable<void> createUser({ body }: CreateUserRequest, opts?: Pick<OperationOpts, 'progressSubscriber'>): Observable<void>
createUser({ body }: CreateUserRequest, opts?: OperationOpts): Observable<void | RawAjaxResponse<void>> createUser({ body }: CreateUserRequest, opts?: OperationOpts): Observable<void | AjaxResponse<void>>
createUser({ body }: CreateUserRequest, opts?: OperationOpts): Observable<void | RawAjaxResponse<void>> { createUser({ body }: CreateUserRequest, opts?: OperationOpts): Observable<void | AjaxResponse<void>> {
throwIfNullOrUndefined(body, 'body', 'createUser'); throwIfNullOrUndefined(body, 'body', 'createUser');
const headers: HttpHeaders = { const headers: HttpHeaders = {
@ -80,8 +82,8 @@ export class UserApi extends BaseAPI {
*/ */
createUsersWithArrayInput({ body }: CreateUsersWithArrayInputRequest): Observable<void> createUsersWithArrayInput({ body }: CreateUsersWithArrayInputRequest): Observable<void>
createUsersWithArrayInput({ body }: CreateUsersWithArrayInputRequest, opts?: Pick<OperationOpts, 'progressSubscriber'>): Observable<void> createUsersWithArrayInput({ body }: CreateUsersWithArrayInputRequest, opts?: Pick<OperationOpts, 'progressSubscriber'>): Observable<void>
createUsersWithArrayInput({ body }: CreateUsersWithArrayInputRequest, opts?: OperationOpts): Observable<void | RawAjaxResponse<void>> createUsersWithArrayInput({ body }: CreateUsersWithArrayInputRequest, opts?: OperationOpts): Observable<void | AjaxResponse<void>>
createUsersWithArrayInput({ body }: CreateUsersWithArrayInputRequest, opts?: OperationOpts): Observable<void | RawAjaxResponse<void>> { createUsersWithArrayInput({ body }: CreateUsersWithArrayInputRequest, opts?: OperationOpts): Observable<void | AjaxResponse<void>> {
throwIfNullOrUndefined(body, 'body', 'createUsersWithArrayInput'); throwIfNullOrUndefined(body, 'body', 'createUsersWithArrayInput');
const headers: HttpHeaders = { const headers: HttpHeaders = {
@ -102,8 +104,8 @@ export class UserApi extends BaseAPI {
*/ */
createUsersWithListInput({ body }: CreateUsersWithListInputRequest): Observable<void> createUsersWithListInput({ body }: CreateUsersWithListInputRequest): Observable<void>
createUsersWithListInput({ body }: CreateUsersWithListInputRequest, opts?: Pick<OperationOpts, 'progressSubscriber'>): Observable<void> createUsersWithListInput({ body }: CreateUsersWithListInputRequest, opts?: Pick<OperationOpts, 'progressSubscriber'>): Observable<void>
createUsersWithListInput({ body }: CreateUsersWithListInputRequest, opts?: OperationOpts): Observable<void | RawAjaxResponse<void>> createUsersWithListInput({ body }: CreateUsersWithListInputRequest, opts?: OperationOpts): Observable<void | AjaxResponse<void>>
createUsersWithListInput({ body }: CreateUsersWithListInputRequest, opts?: OperationOpts): Observable<void | RawAjaxResponse<void>> { createUsersWithListInput({ body }: CreateUsersWithListInputRequest, opts?: OperationOpts): Observable<void | AjaxResponse<void>> {
throwIfNullOrUndefined(body, 'body', 'createUsersWithListInput'); throwIfNullOrUndefined(body, 'body', 'createUsersWithListInput');
const headers: HttpHeaders = { const headers: HttpHeaders = {
@ -125,8 +127,8 @@ export class UserApi extends BaseAPI {
*/ */
deleteUser({ username }: DeleteUserRequest): Observable<void> deleteUser({ username }: DeleteUserRequest): Observable<void>
deleteUser({ username }: DeleteUserRequest, opts?: Pick<OperationOpts, 'progressSubscriber'>): Observable<void> deleteUser({ username }: DeleteUserRequest, opts?: Pick<OperationOpts, 'progressSubscriber'>): Observable<void>
deleteUser({ username }: DeleteUserRequest, opts?: OperationOpts): Observable<void | RawAjaxResponse<void>> deleteUser({ username }: DeleteUserRequest, opts?: OperationOpts): Observable<void | AjaxResponse<void>>
deleteUser({ username }: DeleteUserRequest, opts?: OperationOpts): Observable<void | RawAjaxResponse<void>> { deleteUser({ username }: DeleteUserRequest, opts?: OperationOpts): Observable<void | AjaxResponse<void>> {
throwIfNullOrUndefined(username, 'username', 'deleteUser'); throwIfNullOrUndefined(username, 'username', 'deleteUser');
return this.request<void>({ return this.request<void>({
@ -141,8 +143,8 @@ export class UserApi extends BaseAPI {
*/ */
getUserByName({ username }: GetUserByNameRequest): Observable<User> getUserByName({ username }: GetUserByNameRequest): Observable<User>
getUserByName({ username }: GetUserByNameRequest, opts?: Pick<OperationOpts, 'progressSubscriber'>): Observable<User> getUserByName({ username }: GetUserByNameRequest, opts?: Pick<OperationOpts, 'progressSubscriber'>): Observable<User>
getUserByName({ username }: GetUserByNameRequest, opts?: OperationOpts): Observable<RawAjaxResponse<User>> getUserByName({ username }: GetUserByNameRequest, opts?: OperationOpts): Observable<AjaxResponse<User>>
getUserByName({ username }: GetUserByNameRequest, opts?: OperationOpts): Observable<User | RawAjaxResponse<User>> { getUserByName({ username }: GetUserByNameRequest, opts?: OperationOpts): Observable<User | AjaxResponse<User>> {
throwIfNullOrUndefined(username, 'username', 'getUserByName'); throwIfNullOrUndefined(username, 'username', 'getUserByName');
return this.request<User>({ return this.request<User>({
@ -157,8 +159,8 @@ export class UserApi extends BaseAPI {
*/ */
loginUser({ username, password }: LoginUserRequest): Observable<string> loginUser({ username, password }: LoginUserRequest): Observable<string>
loginUser({ username, password }: LoginUserRequest, opts?: Pick<OperationOpts, 'progressSubscriber'>): Observable<string> loginUser({ username, password }: LoginUserRequest, opts?: Pick<OperationOpts, 'progressSubscriber'>): Observable<string>
loginUser({ username, password }: LoginUserRequest, opts?: OperationOpts): Observable<RawAjaxResponse<string>> loginUser({ username, password }: LoginUserRequest, opts?: OperationOpts): Observable<AjaxResponse<string>>
loginUser({ username, password }: LoginUserRequest, opts?: OperationOpts): Observable<string | RawAjaxResponse<string>> { loginUser({ username, password }: LoginUserRequest, opts?: OperationOpts): Observable<string | AjaxResponse<string>> {
throwIfNullOrUndefined(username, 'username', 'loginUser'); throwIfNullOrUndefined(username, 'username', 'loginUser');
throwIfNullOrUndefined(password, 'password', 'loginUser'); throwIfNullOrUndefined(password, 'password', 'loginUser');
@ -180,8 +182,8 @@ export class UserApi extends BaseAPI {
*/ */
logoutUser(): Observable<void> logoutUser(): Observable<void>
logoutUser(opts?: Pick<OperationOpts, 'progressSubscriber'>): Observable<void> logoutUser(opts?: Pick<OperationOpts, 'progressSubscriber'>): Observable<void>
logoutUser(opts?: OperationOpts): Observable<void | RawAjaxResponse<void>> logoutUser(opts?: OperationOpts): Observable<void | AjaxResponse<void>>
logoutUser(opts?: OperationOpts): Observable<void | RawAjaxResponse<void>> { logoutUser(opts?: OperationOpts): Observable<void | AjaxResponse<void>> {
return this.request<void>({ return this.request<void>({
url: '/user/logout', url: '/user/logout',
method: 'GET', method: 'GET',
@ -195,8 +197,8 @@ export class UserApi extends BaseAPI {
*/ */
updateUser({ username, body }: UpdateUserRequest): Observable<void> updateUser({ username, body }: UpdateUserRequest): Observable<void>
updateUser({ username, body }: UpdateUserRequest, opts?: Pick<OperationOpts, 'progressSubscriber'>): Observable<void> updateUser({ username, body }: UpdateUserRequest, opts?: Pick<OperationOpts, 'progressSubscriber'>): Observable<void>
updateUser({ username, body }: UpdateUserRequest, opts?: OperationOpts): Observable<void | RawAjaxResponse<void>> updateUser({ username, body }: UpdateUserRequest, opts?: OperationOpts): Observable<void | AjaxResponse<void>>
updateUser({ username, body }: UpdateUserRequest, opts?: OperationOpts): Observable<void | RawAjaxResponse<void>> { updateUser({ username, body }: UpdateUserRequest, opts?: OperationOpts): Observable<void | AjaxResponse<void>> {
throwIfNullOrUndefined(username, 'username', 'updateUser'); throwIfNullOrUndefined(username, 'username', 'updateUser');
throwIfNullOrUndefined(body, 'body', 'updateUser'); throwIfNullOrUndefined(body, 'body', 'updateUser');

View File

@ -11,7 +11,7 @@
* Do not edit the class manually. * Do not edit the class manually.
*/ */
import { import type {
Category, Category,
Tag, Tag,
} from './'; } from './';

View File

@ -11,8 +11,10 @@
* Do not edit the class manually. * Do not edit the class manually.
*/ */
import { Observable, of, Subscriber } from 'rxjs'; import { of } from 'rxjs';
import { ajax, AjaxRequest, AjaxResponse } from 'rxjs/ajax'; 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 { map, concatMap } from 'rxjs/operators';
import { servers } from './servers'; import { servers } from './servers';
@ -80,9 +82,9 @@ export class BaseAPI {
this.withMiddleware(postMiddlewares.map((post) => ({ post }))); this.withMiddleware(postMiddlewares.map((post) => ({ post })));
protected request<T>(requestOpts: RequestOpts): Observable<T> protected request<T>(requestOpts: RequestOpts): Observable<T>
protected request<T>(requestOpts: RequestOpts, responseOpts?: ResponseOpts): Observable<RawAjaxResponse<T>> protected request<T>(requestOpts: RequestOpts, responseOpts?: ResponseOpts): Observable<AjaxResponse<T>>
protected request<T>(requestOpts: RequestOpts, responseOpts?: ResponseOpts): Observable<T | RawAjaxResponse<T>> { protected request<T>(requestOpts: RequestOpts, responseOpts?: ResponseOpts): Observable<T | AjaxResponse<T>> {
return this.rxjsRequest(this.createRequestArgs(requestOpts)).pipe( return this.rxjsRequest<T>(this.createRequestArgs(requestOpts)).pipe(
map((res) => { map((res) => {
const { status, response } = res; const { status, response } = res;
if (status >= 200 && status < 300) { 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. // 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 // this is done to avoid urls ending with a '?' character which buggy webservers
// do not handle correctly sometimes. // do not handle correctly sometimes.
@ -109,14 +111,14 @@ export class BaseAPI {
}; };
} }
private rxjsRequest = (params: RequestArgs): Observable<AjaxResponse> => private rxjsRequest = <T>(params: AjaxConfig): Observable<AjaxResponse<T>> =>
of(params).pipe( of(params).pipe(
map((request) => { map((request) => {
this.middleware.filter((item) => item.pre).forEach((mw) => (request = mw.pre!(request))); this.middleware.filter((item) => item.pre).forEach((mw) => (request = mw.pre!(request)));
return request; return request;
}), }),
concatMap((args) => concatMap((args) =>
ajax(args).pipe( ajax<T>(args).pipe(
map((response) => { map((response) => {
this.middleware.filter((item) => item.post).forEach((mw) => (response = mw.post!(response))); this.middleware.filter((item) => item.post).forEach((mw) => (response = mw.post!(response)));
return response; return response;
@ -154,13 +156,13 @@ export type HttpHeaders = { [key: string]: string };
export type HttpQuery = Partial<{ [key: string]: string | number | null | boolean | Array<string | number | null | boolean> }>; // partial is needed for strict mode export type HttpQuery = Partial<{ [key: string]: string | number | null | boolean | Array<string | number | null | boolean> }>; // partial is needed for strict mode
export type HttpBody = Json | FormData; 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 query?: HttpQuery; // additional prop
// the following props have improved types over AjaxRequest // the following props have improved types over AjaxRequest
method: HttpMethod; method: HttpMethod;
headers?: HttpHeaders; headers?: HttpHeaders;
body?: HttpBody; body?: HttpBody;
responseType?: 'json' | 'blob' | 'arraybuffer' | 'text';
progressSubscriber?: Subscriber<ProgressEvent>; progressSubscriber?: Subscriber<ProgressEvent>;
} }
@ -173,11 +175,6 @@ export interface OperationOpts {
responseOpts?: ResponseOpts; responseOpts?: ResponseOpts;
} }
// AjaxResponse with typed response
export interface RawAjaxResponse<T> extends AjaxResponse {
response: T;
}
export const encodeURI = (value: any) => encodeURIComponent(`${value}`); export const encodeURI = (value: any) => encodeURIComponent(`${value}`);
const queryString = (params: HttpQuery): string => Object.entries(params) const queryString = (params: HttpQuery): string => Object.entries(params)
@ -187,29 +184,13 @@ const queryString = (params: HttpQuery): string => Object.entries(params)
) )
.join('&'); .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) => { export const throwIfNullOrUndefined = (value: any, paramName: string, nickname: string) => {
if (value == null) { if (value == null) {
throw new Error(`Parameter "${paramName}" was null or undefined when calling "${nickname}".`); 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 { export interface Middleware {
pre?(request: RequestArgs): RequestArgs; pre?(request: AjaxConfig): AjaxConfig;
post?(response: ResponseArgs): ResponseArgs; post?(response: AjaxResponse<any>): AjaxResponse<any>;
} }

View File

@ -17,11 +17,11 @@ export class ServerConfiguration<T extends { [key: string]: string }> {
} }
public getConfiguration(): T { public getConfiguration(): T {
return this.variableConfiguration return this.variableConfiguration;
} }
public getDescription(): string { public getDescription(): string {
return this.description return this.description;
} }
/** /**
@ -34,10 +34,10 @@ export class ServerConfiguration<T extends { [key: string]: string }> {
var re = new RegExp("{" + key + "}","g"); var re = new RegExp("{" + key + "}","g");
replacedUrl = replacedUrl.replace(re, this.variableConfiguration[key]); 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]; export const servers = [server1];