[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
{{>licenseInfo}}
import { Observable } from 'rxjs';
import { BaseAPI{{#hasHttpHeaders}}, HttpHeaders{{/hasHttpHeaders}}{{#hasQueryParams}}, HttpQuery{{/hasQueryParams}}{{#hasRequiredParams}}, throwIfNullOrUndefined{{/hasRequiredParams}}{{#hasPathParams}}, encodeURI{{/hasPathParams}}{{#hasListContainers}}, COLLECTION_FORMATS{{/hasListContainers}}, OperationOpts, RawAjaxResponse } from '../runtime';
import type { Observable } from 'rxjs';
import type { AjaxResponse } from 'rxjs/ajax';
import { BaseAPI{{#hasRequiredParams}}, throwIfNullOrUndefined{{/hasRequiredParams}}{{#hasPathParams}}, encodeURI{{/hasPathParams}}{{#hasListContainers}}, COLLECTION_FORMATS{{/hasListContainers}} } from '../runtime';
import type { OperationOpts{{#hasHttpHeaders}}, HttpHeaders{{/hasHttpHeaders}}{{#hasQueryParams}}, HttpQuery{{/hasQueryParams}} } from '../runtime';
{{#imports.0}}
import {
import type {
{{#imports}}
{{className}},
{{/imports}}
@ -41,8 +43,8 @@ export class {{classname}} extends BaseAPI {
{{#withProgressSubscriber}}
{{nickname}}({{#allParams.0}}{ {{#allParams}}{{paramName}}{{#vendorExtensions.x-param-name-alternative}}: {{vendorExtensions.x-param-name-alternative}}{{/vendorExtensions.x-param-name-alternative}}{{^-last}}, {{/-last}}{{/allParams}} }: {{operationIdCamelCase}}Request, {{/allParams.0}}opts?: Pick<OperationOpts, 'progressSubscriber'>): Observable<{{{returnType}}}{{^returnType}}void{{/returnType}}>
{{/withProgressSubscriber}}
{{nickname}}({{#allParams.0}}{ {{#allParams}}{{paramName}}{{#vendorExtensions.x-param-name-alternative}}: {{vendorExtensions.x-param-name-alternative}}{{/vendorExtensions.x-param-name-alternative}}{{^-last}}, {{/-last}}{{/allParams}} }: {{operationIdCamelCase}}Request, {{/allParams.0}}opts?: OperationOpts): Observable<{{#returnType}}RawAjaxResponse<{{{.}}}>{{/returnType}}{{^returnType}}void | RawAjaxResponse<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}}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}}} | AjaxResponse<{{{returnType}}}>{{/returnType}}{{^returnType}}void | AjaxResponse<void>{{/returnType}}> {
{{#hasParams}}
{{#allParams}}
{{#required}}

View File

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

View File

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

View File

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

View File

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

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}}

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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