diff --git a/docs/generators/typescript-rxjs.md b/docs/generators/typescript-rxjs.md
index 3d8bf8a3318..0516372fef8 100644
--- a/docs/generators/typescript-rxjs.md
+++ b/docs/generators/typescript-rxjs.md
@@ -67,10 +67,8 @@ sidebar_label: typescript-rxjs
HttpMethod
HttpQuery
Middleware
-ModelPropertyNaming
RequestArgs
RequestOpts
-RequiredError
ResponseArgs
abstract
await
@@ -90,7 +88,6 @@ sidebar_label: typescript-rxjs
double
else
enum
-exists
export
extends
false
diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptRxjsClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptRxjsClientCodegen.java
index 7510a25f09d..373a1e33a8e 100644
--- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptRxjsClientCodegen.java
+++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptRxjsClientCodegen.java
@@ -23,19 +23,20 @@ import io.swagger.v3.parser.util.SchemaTypeUtil;
import org.openapitools.codegen.*;
import org.openapitools.codegen.meta.features.DocumentationFeature;
import org.openapitools.codegen.utils.ModelUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import java.io.File;
-import java.util.TreeSet;
-import java.util.List;
-import java.util.ArrayList;
-import java.util.Map;
+import java.util.*;
public class TypeScriptRxjsClientCodegen extends AbstractTypeScriptClientCodegen {
+ private static final Logger LOGGER = LoggerFactory.getLogger(AbstractTypeScriptClientCodegen.class);
public static final String NPM_REPOSITORY = "npmRepository";
public static final String WITH_INTERFACES = "withInterfaces";
protected String npmRepository = null;
+ protected Set reservedParamNames = new HashSet<>();
public TypeScriptRxjsClientCodegen() {
super();
@@ -58,6 +59,11 @@ public class TypeScriptRxjsClientCodegen extends AbstractTypeScriptClientCodegen
this.cliOptions.add(new CliOption(NPM_REPOSITORY, "Use this property to set an url your private npmRepo in the package.json"));
this.cliOptions.add(new CliOption(WITH_INTERFACES, "Setting this property to true will generate interfaces next to the default class implementations.", SchemaTypeUtil.BOOLEAN_TYPE).defaultValue(Boolean.FALSE.toString()));
+
+ // these are used in the api template for more efficient destructuring
+ this.reservedParamNames.add("headers");
+ this.reservedParamNames.add("query");
+ this.reservedParamNames.add("formData");
}
@Override
@@ -252,12 +258,18 @@ public class TypeScriptRxjsClientCodegen extends AbstractTypeScriptClientCodegen
operations.put("hasEnums", hasEnums);
}
+ private void setParamNameAlternative(CodegenParameter param, String paramName, String paramNameAlternative) {
+ if (param.paramName.equals(paramName)) {
+ param.vendorExtensions.put("paramNameAlternative", paramNameAlternative);
+ }
+ }
+
private void addConditionalImportInformation(Map operations) {
// This method will determine if there are required parameters and if there are list containers
Map _operations = (Map) operations.get("operations");
List operationList = (List) _operations.get("operation");
- boolean hasRequiredParameters = false;
+ boolean hasRequiredParams = false;
boolean hasListContainers = false;
boolean hasHttpHeaders = false;
boolean hasQueryParams = false;
@@ -265,25 +277,46 @@ public class TypeScriptRxjsClientCodegen extends AbstractTypeScriptClientCodegen
for (ExtendedCodegenOperation op : operationList) {
if (op.getHasRequiredParams()) {
- hasRequiredParameters = true;
+ hasRequiredParams = true;
}
-
- for (CodegenParameter param : op.headerParams) {
- if (param.isListContainer) {
- hasListContainers = true;
- break;
+
+ for (CodegenParameter p: op.allParams) {
+ String paramNameAlternative = null;
+
+ if(this.reservedParamNames.contains(p.paramName)){
+ paramNameAlternative = p.paramName + "Alias";
+ LOGGER.info("param: "+p.paramName+" isReserved ––> "+paramNameAlternative);
}
- }
- for (CodegenParameter param : op.queryParams) {
- if (param.isListContainer && !param.isCollectionFormatMulti) {
- hasListContainers = true;
- break;
+ setParamNameAlternative(p, p.paramName, paramNameAlternative);
+
+ for (CodegenParameter param : op.headerParams) {
+ if (param.isListContainer) {
+ hasListContainers = true;
+ }
+ setParamNameAlternative(param, p.paramName, paramNameAlternative);
}
- }
- for (CodegenParameter param : op.formParams) {
- if (param.isListContainer && !param.isCollectionFormatMulti) {
- hasListContainers = true;
- break;
+
+ for (CodegenParameter param : op.queryParams) {
+ if (param.isListContainer && !param.isCollectionFormatMulti) {
+ hasListContainers = true;
+ }
+ if (param.required) {
+ op.hasRequiredQueryParams = true;
+ } else {
+ op.hasOptionalQueryParams = true;
+ }
+ setParamNameAlternative(param, p.paramName, paramNameAlternative);
+ }
+
+ for (CodegenParameter param : op.formParams) {
+ if (param.isListContainer && !param.isCollectionFormatMulti) {
+ hasListContainers = true;
+ }
+ setParamNameAlternative(param, p.paramName, paramNameAlternative);
+ }
+
+ for (CodegenParameter param : op.pathParams) {
+ setParamNameAlternative(param, p.paramName, paramNameAlternative);
}
}
@@ -296,13 +329,9 @@ public class TypeScriptRxjsClientCodegen extends AbstractTypeScriptClientCodegen
if (op.getHasPathParams()) {
hasPathParams = true;
}
-
- if(hasRequiredParameters && hasListContainers && hasHttpHeaders && hasQueryParams && hasPathParams){
- break;
- }
}
- operations.put("hasRequiredParameters", hasRequiredParameters);
+ operations.put("hasRequiredParams", hasRequiredParams);
operations.put("hasListContainers", hasListContainers);
operations.put("hasHttpHeaders", hasHttpHeaders);
operations.put("hasQueryParams", hasQueryParams);
@@ -312,7 +341,6 @@ public class TypeScriptRxjsClientCodegen extends AbstractTypeScriptClientCodegen
private void addExtraReservedWords() {
this.reservedWords.add("BASE_PATH");
this.reservedWords.add("BaseAPI");
- this.reservedWords.add("RequiredError");
this.reservedWords.add("COLLECTION_FORMATS");
this.reservedWords.add("ConfigurationParameters");
this.reservedWords.add("Configuration");
@@ -320,11 +348,9 @@ public class TypeScriptRxjsClientCodegen extends AbstractTypeScriptClientCodegen
this.reservedWords.add("HttpHeaders");
this.reservedWords.add("HttpQuery");
this.reservedWords.add("HttpBody");
- this.reservedWords.add("ModelPropertyNaming");
this.reservedWords.add("RequestArgs");
this.reservedWords.add("RequestOpts");
this.reservedWords.add("ResponseArgs");
- this.reservedWords.add("exists");
this.reservedWords.add("Middleware");
this.reservedWords.add("AjaxRequest");
this.reservedWords.add("AjaxResponse");
@@ -332,6 +358,8 @@ public class TypeScriptRxjsClientCodegen extends AbstractTypeScriptClientCodegen
class ExtendedCodegenOperation extends CodegenOperation {
public boolean hasHttpHeaders;
+ public boolean hasRequiredQueryParams;
+ public boolean hasOptionalQueryParams;
public ExtendedCodegenOperation(CodegenOperation o) {
super();
@@ -405,6 +433,8 @@ public class TypeScriptRxjsClientCodegen extends AbstractTypeScriptClientCodegen
// new fields
this.hasHttpHeaders = o.getHasHeaderParams() || o.getHasBodyParam() || o.hasAuthMethods;
+ this.hasRequiredQueryParams = false; // will be updated within addConditionalImportInformation
+ this.hasOptionalQueryParams = false; // will be updated within addConditionalImportInformation
}
}
}
diff --git a/modules/openapi-generator/src/main/resources/typescript-rxjs/apis.mustache b/modules/openapi-generator/src/main/resources/typescript-rxjs/apis.mustache
index 1528c0dcbb6..78ef140df22 100644
--- a/modules/openapi-generator/src/main/resources/typescript-rxjs/apis.mustache
+++ b/modules/openapi-generator/src/main/resources/typescript-rxjs/apis.mustache
@@ -1,7 +1,7 @@
// tslint:disable
{{>licenseInfo}}
import { Observable } from 'rxjs';
-import { BaseAPI{{#hasHttpHeaders}}, HttpHeaders{{/hasHttpHeaders}}{{#hasQueryParams}}, HttpQuery{{/hasQueryParams}}{{#hasRequiredParameters}}, throwIfRequired{{/hasRequiredParameters}}{{#hasPathParams}}, encodeURI{{/hasPathParams}}{{#hasListContainers}}, COLLECTION_FORMATS{{/hasListContainers}} } from '../runtime';
+import { BaseAPI{{#hasHttpHeaders}}, HttpHeaders{{/hasHttpHeaders}}{{#hasQueryParams}}, HttpQuery{{/hasQueryParams}}{{#hasRequiredParams}}, throwIfNullOrUndefined{{/hasRequiredParams}}{{#hasPathParams}}, encodeURI{{/hasPathParams}}{{#hasListContainers}}, COLLECTION_FORMATS{{/hasListContainers}} } from '../runtime';
{{#imports.0}}
import {
{{#imports}}
@@ -37,11 +37,11 @@ export class {{classname}} extends BaseAPI {
* {{&summary}}
{{/summary}}
*/
- {{nickname}} = ({{#allParams.0}}requestParameters: {{operationIdCamelCase}}Request{{/allParams.0}}): Observable<{{#returnType}}{{{returnType}}}{{/returnType}}{{^returnType}}void{{/returnType}}> => {
+ {{nickname}} = ({{#allParams.0}}{ {{#allParams}}{{paramName}}{{#vendorExtensions.paramNameAlternative}}: {{vendorExtensions.paramNameAlternative}}{{/vendorExtensions.paramNameAlternative}}{{^-last}}, {{/-last}}{{/allParams}} }: {{operationIdCamelCase}}Request{{/allParams.0}}): Observable<{{#returnType}}{{{returnType}}}{{/returnType}}{{^returnType}}void{{/returnType}}> => {
{{#hasParams}}
{{#allParams}}
{{#required}}
- throwIfRequired(requestParameters, '{{paramName}}', '{{nickname}}');
+ throwIfNullOrUndefined({{> paramNamePartial}}, '{{nickname}}');
{{/required}}
{{/allParams}}
@@ -58,15 +58,15 @@ export class {{classname}} extends BaseAPI {
{{/bodyParam}}
{{#headerParams}}
{{#isListContainer}}
- ...(requestParameters.{{paramName}} && { '{{baseName}}': requestParameters.{{paramName}}.join(COLLECTION_FORMATS['{{collectionFormat}}'])) }),
+ ...({{> paramNamePartial}} != null ? { '{{baseName}}': {{> paramNamePartial}}.join(COLLECTION_FORMATS['{{collectionFormat}}'])) } : undefined),
{{/isListContainer}}
{{^isListContainer}}
- ...(requestParameters.{{paramName}} && { '{{baseName}}': String(requestParameters.{{paramName}}) }),
+ ...({{> paramNamePartial}} != null ? { '{{baseName}}': String({{> paramNamePartial}}) } : undefined),
{{/isListContainer}}
{{/headerParams}}
{{#authMethods}}
{{#isBasic}}
- ...(this.configuration.username && this.configuration.password && { Authorization: `Basic ${btoa(this.configuration.username + ':' + this.configuration.password)}` }),
+ ...(this.configuration.username != null && this.configuration.password != null ? { Authorization: `Basic ${btoa(this.configuration.username + ':' + this.configuration.password)}` } : undefined),
{{/isBasic}}
{{#isApiKey}}
{{#isKeyInHeader}}
@@ -75,77 +75,109 @@ export class {{classname}} extends BaseAPI {
{{/isApiKey}}
{{#isOAuth}}
// oauth required
- ...(this.configuration.accessToken && {
- Authorization: this.configuration.accessToken && (typeof this.configuration.accessToken === 'function'
+ ...(this.configuration.accessToken != null
+ ? { Authorization: typeof this.configuration.accessToken === 'function'
? this.configuration.accessToken('{{name}}', [{{#scopes}}'{{{scope}}}'{{^-last}}, {{/-last}}{{/scopes}}])
- : this.configuration.accessToken)
- }),
+ : this.configuration.accessToken }
+ : undefined
+ ),
{{/isOAuth}}
{{/authMethods}}
};
{{/hasHttpHeaders}}
{{#hasQueryParams}}
- const query: HttpQuery = {
+ {{^hasRequiredQueryParams}}
+ const query: HttpQuery = {};
+ {{/hasRequiredQueryParams}}
+ {{#hasRequiredQueryParams}}
+ const query: HttpQuery = { // required parameters are used directly since they are already checked by throwIfNullOrUndefined
{{#queryParams}}
+ {{#required}}
{{#isListContainer}}
{{#isCollectionFormatMulti}}
- ...(requestParameters.{{paramName}} && { '{{baseName}}': requestParameters.{{paramName}} }),
+ '{{baseName}}': {{> paramNamePartial}},
{{/isCollectionFormatMulti}}
{{^isCollectionFormatMulti}}
- ...(requestParameters.{{paramName}} && { '{{baseName}}': requestParameters.{{paramName}}.join(COLLECTION_FORMATS['{{collectionFormat}}']) }),
+ '{{baseName}}': {{> paramNamePartial}}.join(COLLECTION_FORMATS['{{collectionFormat}}']),
{{/isCollectionFormatMulti}}
{{/isListContainer}}
{{^isListContainer}}
{{#isDateTime}}
- ...(requestParameters.{{paramName}} && { '{{baseName}}': (requestParameters.{{paramName}} as any).toISOString() }),
+ '{{baseName}}': ({{> paramNamePartial}} as any).toISOString(),
{{/isDateTime}}
{{^isDateTime}}
{{#isDate}}
- ...(requestParameters.{{paramName}} && { '{{baseName}}': (requestParameters.{{paramName}} as any).toISOString() }),
+ '{{baseName}}': ({{> paramNamePartial}} as any).toISOString(),
{{/isDate}}
{{^isDate}}
- ...(requestParameters.{{paramName}} && { '{{baseName}}': requestParameters.{{paramName}} }),
+ '{{baseName}}': {{> paramNamePartial}},
{{/isDate}}
{{/isDateTime}}
{{/isListContainer}}
+ {{/required}}
{{/queryParams}}
- {{#authMethods}}
- {{#isApiKey}}
- {{#isKeyInQuery}}
- ...(this.configuration.apiKey && { '{{keyParamName}}': this.configuration.apiKey && this.configuration.apiKey('{{keyParamName}}') }), // {{name}} authentication
- {{/isKeyInQuery}}
- {{/isApiKey}}
- {{/authMethods}}
};
+ {{/hasRequiredQueryParams}}
+ {{#hasOptionalQueryParams}}
+
+ {{#queryParams}}
+ {{^required}}
+ {{#isListContainer}}
+ {{#isCollectionFormatMulti}}
+ if ({{> paramNamePartial}} != null) { query['{{baseName}}'] = {{> paramNamePartial}}; }
+ {{/isCollectionFormatMulti}}
+ {{^isCollectionFormatMulti}}
+ if ({{> paramNamePartial}} != null) { query['{{baseName}}'] = {{> paramNamePartial}}.join(COLLECTION_FORMATS['{{collectionFormat}}']); }
+ {{/isCollectionFormatMulti}}
+ {{/isListContainer}}
+ {{^isListContainer}}
+ {{#isDateTime}}
+ if ({{> paramNamePartial}} != null) { query['{{baseName}}'] = ({{> paramNamePartial}} as any).toISOString(); }
+ {{/isDateTime}}
+ {{^isDateTime}}
+ {{#isDate}}
+ if ({{> paramNamePartial}} != null) { query['{{baseName}}'] = ({{> paramNamePartial}} as any).toISOString(); }
+ {{/isDate}}
+ {{^isDate}}
+ if ({{> paramNamePartial}} != null) { query['{{baseName}}'] = {{> paramNamePartial}}; }
+ {{/isDate}}
+ {{/isDateTime}}
+ {{/isListContainer}}
+ {{/required}}
+ {{/queryParams}}
+ {{/hasOptionalQueryParams}}
+ {{#authMethods}}
+ {{#isApiKey}}
+ {{#isKeyInQuery}}
+ if (this.configuration.apiKey != null) { query['{{keyParamName}}'] = this.configuration.apiKey('{{keyParamName}}'); } // {{name}} authentication
+ {{/isKeyInQuery}}
+ {{/isApiKey}}
+ {{/authMethods}}
{{/hasQueryParams}}
{{#hasFormParams}}
const formData = new FormData();
- {{/hasFormParams}}
{{#formParams}}
{{#isListContainer}}
- if (requestParameters.{{paramName}}) {
+ if ({{> paramNamePartial}} !== undefined) {
{{#isCollectionFormatMulti}}
- requestParameters.{{paramName}}.forEach((element) => {
- formData.append('{{baseName}}', element as any);
- })
+ {{> paramNamePartial}}.forEach((element) => formData.append('{{baseName}}', element as any))
{{/isCollectionFormatMulti}}
{{^isCollectionFormatMulti}}
- formData.append('{{baseName}}', requestParameters.{{paramName}}.join(COLLECTION_FORMATS['{{collectionFormat}}']));
+ formData.append('{{baseName}}', {{> paramNamePartial}}.join(COLLECTION_FORMATS['{{collectionFormat}}']));
{{/isCollectionFormatMulti}}
}
{{/isListContainer}}
{{^isListContainer}}
- if (requestParameters.{{paramName}} !== undefined) {
- formData.append('{{baseName}}', requestParameters.{{paramName}} as any);
- }
-
+ if ({{> paramNamePartial}} !== undefined) { formData.append('{{baseName}}', {{> paramNamePartial}} as any); }
{{/isListContainer}}
{{/formParams}}
+
+ {{/hasFormParams}}
return this.request<{{#returnType}}{{{returnType}}}{{/returnType}}{{^returnType}}void{{/returnType}}>({
- path: '{{{path}}}'{{#pathParams}}.replace({{=<% %>=}}'{<%baseName%>}'<%={{ }}=%>, encodeURI(requestParameters.{{paramName}})){{/pathParams}},
+ path: '{{{path}}}'{{#pathParams}}.replace({{=<% %>=}}'{<%baseName%>}'<%={{ }}=%>, encodeURI({{> paramNamePartial}})){{/pathParams}},
method: '{{httpMethod}}',
{{#hasHttpHeaders}}
headers,
@@ -156,14 +188,14 @@ export class {{classname}} extends BaseAPI {
{{#hasBodyParam}}
{{#bodyParam}}
{{#isContainer}}
- body: requestParameters.{{paramName}},
+ body: {{paramName}},
{{/isContainer}}
{{^isContainer}}
{{^isPrimitiveType}}
- body: requestParameters.{{paramName}},
+ body: {{paramName}},
{{/isPrimitiveType}}
{{#isPrimitiveType}}
- body: requestParameters.{{paramName}} as any,
+ body: {{paramName}} as any,
{{/isPrimitiveType}}
{{/isContainer}}
{{/bodyParam}}
diff --git a/modules/openapi-generator/src/main/resources/typescript-rxjs/paramNamePartial.mustache b/modules/openapi-generator/src/main/resources/typescript-rxjs/paramNamePartial.mustache
new file mode 100644
index 00000000000..d406033c593
--- /dev/null
+++ b/modules/openapi-generator/src/main/resources/typescript-rxjs/paramNamePartial.mustache
@@ -0,0 +1,2 @@
+{{! helper to output the alias of a parameter if provided and to not clutter the main template }}
+{{#vendorExtensions.paramNameAlternative}}{{vendorExtensions.paramNameAlternative}}{{/vendorExtensions.paramNameAlternative}}{{^vendorExtensions.paramNameAlternative}}{{paramName}}{{/vendorExtensions.paramNameAlternative}}
\ No newline at end of file
diff --git a/modules/openapi-generator/src/main/resources/typescript-rxjs/runtime.mustache b/modules/openapi-generator/src/main/resources/typescript-rxjs/runtime.mustache
index 7c58be70a52..a978bd7d2cc 100644
--- a/modules/openapi-generator/src/main/resources/typescript-rxjs/runtime.mustache
+++ b/modules/openapi-generator/src/main/resources/typescript-rxjs/runtime.mustache
@@ -36,18 +36,12 @@ export class Configuration {
get apiKey(): ((name: string) => string) | undefined {
const apiKey = this.configuration.apiKey;
- if (apiKey) {
- return typeof apiKey === 'function' ? apiKey : () => apiKey;
- }
- return undefined;
+ return apiKey && (typeof apiKey === 'function' ? apiKey : () => apiKey);
}
get accessToken(): ((name: string, scopes?: string[]) => string) | undefined {
const accessToken = this.configuration.accessToken;
- if (accessToken) {
- return typeof accessToken === 'function' ? accessToken : () => accessToken;
- }
- return undefined;
+ return accessToken && (typeof accessToken === 'function' ? accessToken : () => accessToken);
}
}
@@ -61,17 +55,17 @@ export class BaseAPI {
this.middleware = configuration.middleware;
}
- withMiddleware = (middlewares: Middleware[]) => {
- const next = this.clone();
+ withMiddleware = (middlewares: Middleware[]) => {
+ const next = this.clone();
next.middleware = next.middleware.concat(middlewares);
return next;
};
- withPreMiddleware = (preMiddlewares: Array) =>
- this.withMiddleware(preMiddlewares.map((pre) => ({ pre })));
+ withPreMiddleware = (preMiddlewares: Array) =>
+ this.withMiddleware(preMiddlewares.map((pre) => ({ pre })));
- withPostMiddleware = (postMiddlewares: Array) =>
- this.withMiddleware(postMiddlewares.map((post) => ({ post })));
+ withPostMiddleware = (postMiddlewares: Array) =>
+ this.withMiddleware(postMiddlewares.map((post) => ({ post })));
protected request = (requestOpts: RequestOpts): Observable =>
this.rxjsRequest(this.createRequestArgs(requestOpts)).pipe(
@@ -121,11 +115,14 @@ export class BaseAPI {
* Create a shallow clone of `this` by constructing a new instance
* and then shallow cloning data members.
*/
- private clone = (): T =>
+ private clone = (): BaseAPI =>
Object.assign(Object.create(Object.getPrototypeOf(this)), this);
}
-// export for not being a breaking change
+/**
+ * @deprecated
+ * export for not being a breaking change
+ */
export class RequiredError extends Error {
name: 'RequiredError' = 'RequiredError';
}
@@ -142,7 +139,6 @@ export type HttpMethod = 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE' | 'OPTIONS'
export type HttpHeaders = { [key: string]: string };
export type HttpQuery = Partial<{ [key: string]: string | number | null | boolean | Array }>; // partial is needed for strict mode
export type HttpBody = Json | FormData;
-export type ModelPropertyNaming = 'camelCase' | 'snake_case' | 'PascalCase' | 'original';
export interface RequestOpts {
path: string;
@@ -167,12 +163,21 @@ const queryString = (params: HttpQuery): string => Object.keys(params)
// 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 || params[key] === undefined) {
+ if (!params || params[key] == null) {
throw new RequiredError(`Required parameter ${key} was null or undefined when calling ${nickname}.`);
}
};
+export const throwIfNullOrUndefined = (value: any, nickname?: string) => {
+ if (value == null) {
+ throw new Error(`Parameter "${value}" was null or undefined when calling "${nickname}".`);
+ }
+};
+
// alias for easier importing
export interface RequestArgs extends AjaxRequest {}
export interface ResponseArgs extends AjaxResponse {}
diff --git a/samples/client/petstore/typescript-rxjs/builds/default/apis/PetApi.ts b/samples/client/petstore/typescript-rxjs/builds/default/apis/PetApi.ts
index a5328a8c728..3b3232c44db 100644
--- a/samples/client/petstore/typescript-rxjs/builds/default/apis/PetApi.ts
+++ b/samples/client/petstore/typescript-rxjs/builds/default/apis/PetApi.ts
@@ -12,7 +12,7 @@
*/
import { Observable } from 'rxjs';
-import { BaseAPI, HttpHeaders, HttpQuery, throwIfRequired, encodeURI, COLLECTION_FORMATS } from '../runtime';
+import { BaseAPI, HttpHeaders, HttpQuery, throwIfNullOrUndefined, encodeURI, COLLECTION_FORMATS } from '../runtime';
import {
ApiResponse,
Pet,
@@ -63,45 +63,47 @@ export class PetApi extends BaseAPI {
/**
* Add a new pet to the store
*/
- addPet = (requestParameters: AddPetRequest): Observable => {
- throwIfRequired(requestParameters, 'body', 'addPet');
+ addPet = ({ body }: AddPetRequest): Observable => {
+ throwIfNullOrUndefined(body, 'addPet');
const headers: HttpHeaders = {
'Content-Type': 'application/json',
// oauth required
- ...(this.configuration.accessToken && {
- Authorization: this.configuration.accessToken && (typeof this.configuration.accessToken === 'function'
+ ...(this.configuration.accessToken != null
+ ? { Authorization: typeof this.configuration.accessToken === 'function'
? this.configuration.accessToken('petstore_auth', ['write:pets', 'read:pets'])
- : this.configuration.accessToken)
- }),
+ : this.configuration.accessToken }
+ : undefined
+ ),
};
return this.request({
path: '/pet',
method: 'POST',
headers,
- body: requestParameters.body,
+ body: body,
});
};
/**
* Deletes a pet
*/
- deletePet = (requestParameters: DeletePetRequest): Observable => {
- throwIfRequired(requestParameters, 'petId', 'deletePet');
+ deletePet = ({ petId, apiKey }: DeletePetRequest): Observable => {
+ throwIfNullOrUndefined(petId, 'deletePet');
const headers: HttpHeaders = {
- ...(requestParameters.apiKey && { 'api_key': String(requestParameters.apiKey) }),
+ ...(apiKey != null ? { 'api_key': String(apiKey) } : undefined),
// oauth required
- ...(this.configuration.accessToken && {
- Authorization: this.configuration.accessToken && (typeof this.configuration.accessToken === 'function'
+ ...(this.configuration.accessToken != null
+ ? { Authorization: typeof this.configuration.accessToken === 'function'
? this.configuration.accessToken('petstore_auth', ['write:pets', 'read:pets'])
- : this.configuration.accessToken)
- }),
+ : this.configuration.accessToken }
+ : undefined
+ ),
};
return this.request({
- path: '/pet/{petId}'.replace('{petId}', encodeURI(requestParameters.petId)),
+ path: '/pet/{petId}'.replace('{petId}', encodeURI(petId)),
method: 'DELETE',
headers,
});
@@ -111,20 +113,21 @@ export class PetApi extends BaseAPI {
* Multiple status values can be provided with comma separated strings
* Finds Pets by status
*/
- findPetsByStatus = (requestParameters: FindPetsByStatusRequest): Observable> => {
- throwIfRequired(requestParameters, 'status', 'findPetsByStatus');
+ findPetsByStatus = ({ status }: FindPetsByStatusRequest): Observable> => {
+ throwIfNullOrUndefined(status, 'findPetsByStatus');
const headers: HttpHeaders = {
// oauth required
- ...(this.configuration.accessToken && {
- Authorization: this.configuration.accessToken && (typeof this.configuration.accessToken === 'function'
+ ...(this.configuration.accessToken != null
+ ? { Authorization: typeof this.configuration.accessToken === 'function'
? this.configuration.accessToken('petstore_auth', ['write:pets', 'read:pets'])
- : this.configuration.accessToken)
- }),
+ : this.configuration.accessToken }
+ : undefined
+ ),
};
- const query: HttpQuery = {
- ...(requestParameters.status && { 'status': requestParameters.status.join(COLLECTION_FORMATS['csv']) }),
+ const query: HttpQuery = { // required parameters are used directly since they are already checked by throwIfNullOrUndefined
+ 'status': status.join(COLLECTION_FORMATS['csv']),
};
return this.request>({
@@ -139,20 +142,21 @@ export class PetApi extends BaseAPI {
* Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing.
* Finds Pets by tags
*/
- findPetsByTags = (requestParameters: FindPetsByTagsRequest): Observable> => {
- throwIfRequired(requestParameters, 'tags', 'findPetsByTags');
+ findPetsByTags = ({ tags }: FindPetsByTagsRequest): Observable> => {
+ throwIfNullOrUndefined(tags, 'findPetsByTags');
const headers: HttpHeaders = {
// oauth required
- ...(this.configuration.accessToken && {
- Authorization: this.configuration.accessToken && (typeof this.configuration.accessToken === 'function'
+ ...(this.configuration.accessToken != null
+ ? { Authorization: typeof this.configuration.accessToken === 'function'
? this.configuration.accessToken('petstore_auth', ['write:pets', 'read:pets'])
- : this.configuration.accessToken)
- }),
+ : this.configuration.accessToken }
+ : undefined
+ ),
};
- const query: HttpQuery = {
- ...(requestParameters.tags && { 'tags': requestParameters.tags.join(COLLECTION_FORMATS['csv']) }),
+ const query: HttpQuery = { // required parameters are used directly since they are already checked by throwIfNullOrUndefined
+ 'tags': tags.join(COLLECTION_FORMATS['csv']),
};
return this.request>({
@@ -167,15 +171,15 @@ export class PetApi extends BaseAPI {
* Returns a single pet
* Find pet by ID
*/
- getPetById = (requestParameters: GetPetByIdRequest): Observable => {
- throwIfRequired(requestParameters, 'petId', 'getPetById');
+ getPetById = ({ petId }: GetPetByIdRequest): Observable => {
+ throwIfNullOrUndefined(petId, 'getPetById');
const headers: HttpHeaders = {
...(this.configuration.apiKey && { 'api_key': this.configuration.apiKey('api_key') }), // api_key authentication
};
return this.request({
- path: '/pet/{petId}'.replace('{petId}', encodeURI(requestParameters.petId)),
+ path: '/pet/{petId}'.replace('{petId}', encodeURI(petId)),
method: 'GET',
headers,
});
@@ -184,53 +188,50 @@ export class PetApi extends BaseAPI {
/**
* Update an existing pet
*/
- updatePet = (requestParameters: UpdatePetRequest): Observable => {
- throwIfRequired(requestParameters, 'body', 'updatePet');
+ updatePet = ({ body }: UpdatePetRequest): Observable => {
+ throwIfNullOrUndefined(body, 'updatePet');
const headers: HttpHeaders = {
'Content-Type': 'application/json',
// oauth required
- ...(this.configuration.accessToken && {
- Authorization: this.configuration.accessToken && (typeof this.configuration.accessToken === 'function'
+ ...(this.configuration.accessToken != null
+ ? { Authorization: typeof this.configuration.accessToken === 'function'
? this.configuration.accessToken('petstore_auth', ['write:pets', 'read:pets'])
- : this.configuration.accessToken)
- }),
+ : this.configuration.accessToken }
+ : undefined
+ ),
};
return this.request({
path: '/pet',
method: 'PUT',
headers,
- body: requestParameters.body,
+ body: body,
});
};
/**
* Updates a pet in the store with form data
*/
- updatePetWithForm = (requestParameters: UpdatePetWithFormRequest): Observable => {
- throwIfRequired(requestParameters, 'petId', 'updatePetWithForm');
+ updatePetWithForm = ({ petId, name, status }: UpdatePetWithFormRequest): Observable => {
+ throwIfNullOrUndefined(petId, 'updatePetWithForm');
const headers: HttpHeaders = {
// oauth required
- ...(this.configuration.accessToken && {
- Authorization: this.configuration.accessToken && (typeof this.configuration.accessToken === 'function'
+ ...(this.configuration.accessToken != null
+ ? { Authorization: typeof this.configuration.accessToken === 'function'
? this.configuration.accessToken('petstore_auth', ['write:pets', 'read:pets'])
- : this.configuration.accessToken)
- }),
+ : this.configuration.accessToken }
+ : undefined
+ ),
};
const formData = new FormData();
- if (requestParameters.name !== undefined) {
- formData.append('name', requestParameters.name as any);
- }
-
- if (requestParameters.status !== undefined) {
- formData.append('status', requestParameters.status as any);
- }
+ if (name !== undefined) { formData.append('name', name as any); }
+ if (status !== undefined) { formData.append('status', status as any); }
return this.request({
- path: '/pet/{petId}'.replace('{petId}', encodeURI(requestParameters.petId)),
+ path: '/pet/{petId}'.replace('{petId}', encodeURI(petId)),
method: 'POST',
headers,
body: formData,
@@ -240,29 +241,25 @@ export class PetApi extends BaseAPI {
/**
* uploads an image
*/
- uploadFile = (requestParameters: UploadFileRequest): Observable => {
- throwIfRequired(requestParameters, 'petId', 'uploadFile');
+ uploadFile = ({ petId, additionalMetadata, file }: UploadFileRequest): Observable => {
+ throwIfNullOrUndefined(petId, 'uploadFile');
const headers: HttpHeaders = {
// oauth required
- ...(this.configuration.accessToken && {
- Authorization: this.configuration.accessToken && (typeof this.configuration.accessToken === 'function'
+ ...(this.configuration.accessToken != null
+ ? { Authorization: typeof this.configuration.accessToken === 'function'
? this.configuration.accessToken('petstore_auth', ['write:pets', 'read:pets'])
- : this.configuration.accessToken)
- }),
+ : this.configuration.accessToken }
+ : undefined
+ ),
};
const formData = new FormData();
- if (requestParameters.additionalMetadata !== undefined) {
- formData.append('additionalMetadata', requestParameters.additionalMetadata as any);
- }
-
- if (requestParameters.file !== undefined) {
- formData.append('file', requestParameters.file as any);
- }
+ if (additionalMetadata !== undefined) { formData.append('additionalMetadata', additionalMetadata as any); }
+ if (file !== undefined) { formData.append('file', file as any); }
return this.request({
- path: '/pet/{petId}/uploadImage'.replace('{petId}', encodeURI(requestParameters.petId)),
+ path: '/pet/{petId}/uploadImage'.replace('{petId}', encodeURI(petId)),
method: 'POST',
headers,
body: formData,
diff --git a/samples/client/petstore/typescript-rxjs/builds/default/apis/StoreApi.ts b/samples/client/petstore/typescript-rxjs/builds/default/apis/StoreApi.ts
index 623b48bdede..aac36206d60 100644
--- a/samples/client/petstore/typescript-rxjs/builds/default/apis/StoreApi.ts
+++ b/samples/client/petstore/typescript-rxjs/builds/default/apis/StoreApi.ts
@@ -12,7 +12,7 @@
*/
import { Observable } from 'rxjs';
-import { BaseAPI, HttpHeaders, throwIfRequired, encodeURI } from '../runtime';
+import { BaseAPI, HttpHeaders, throwIfNullOrUndefined, encodeURI } from '../runtime';
import {
Order,
} from '../models';
@@ -38,11 +38,11 @@ export class StoreApi extends BaseAPI {
* For valid response try integer IDs with value < 1000. Anything above 1000 or nonintegers will generate API errors
* Delete purchase order by ID
*/
- deleteOrder = (requestParameters: DeleteOrderRequest): Observable => {
- throwIfRequired(requestParameters, 'orderId', 'deleteOrder');
+ deleteOrder = ({ orderId }: DeleteOrderRequest): Observable => {
+ throwIfNullOrUndefined(orderId, 'deleteOrder');
return this.request({
- path: '/store/order/{orderId}'.replace('{orderId}', encodeURI(requestParameters.orderId)),
+ path: '/store/order/{orderId}'.replace('{orderId}', encodeURI(orderId)),
method: 'DELETE',
});
};
@@ -67,11 +67,11 @@ export class StoreApi extends BaseAPI {
* For valid response try integer IDs with value <= 5 or > 10. Other values will generated exceptions
* Find purchase order by ID
*/
- getOrderById = (requestParameters: GetOrderByIdRequest): Observable => {
- throwIfRequired(requestParameters, 'orderId', 'getOrderById');
+ getOrderById = ({ orderId }: GetOrderByIdRequest): Observable => {
+ throwIfNullOrUndefined(orderId, 'getOrderById');
return this.request({
- path: '/store/order/{orderId}'.replace('{orderId}', encodeURI(requestParameters.orderId)),
+ path: '/store/order/{orderId}'.replace('{orderId}', encodeURI(orderId)),
method: 'GET',
});
};
@@ -79,8 +79,8 @@ export class StoreApi extends BaseAPI {
/**
* Place an order for a pet
*/
- placeOrder = (requestParameters: PlaceOrderRequest): Observable => {
- throwIfRequired(requestParameters, 'body', 'placeOrder');
+ placeOrder = ({ body }: PlaceOrderRequest): Observable => {
+ throwIfNullOrUndefined(body, 'placeOrder');
const headers: HttpHeaders = {
'Content-Type': 'application/json',
@@ -90,7 +90,7 @@ export class StoreApi extends BaseAPI {
path: '/store/order',
method: 'POST',
headers,
- body: requestParameters.body,
+ body: body,
});
};
diff --git a/samples/client/petstore/typescript-rxjs/builds/default/apis/UserApi.ts b/samples/client/petstore/typescript-rxjs/builds/default/apis/UserApi.ts
index 2194fdfe9f6..1b3c07eea4f 100644
--- a/samples/client/petstore/typescript-rxjs/builds/default/apis/UserApi.ts
+++ b/samples/client/petstore/typescript-rxjs/builds/default/apis/UserApi.ts
@@ -12,7 +12,7 @@
*/
import { Observable } from 'rxjs';
-import { BaseAPI, HttpHeaders, HttpQuery, throwIfRequired, encodeURI } from '../runtime';
+import { BaseAPI, HttpHeaders, HttpQuery, throwIfNullOrUndefined, encodeURI } from '../runtime';
import {
User,
} from '../models';
@@ -56,8 +56,8 @@ export class UserApi extends BaseAPI {
* This can only be done by the logged in user.
* Create user
*/
- createUser = (requestParameters: CreateUserRequest): Observable => {
- throwIfRequired(requestParameters, 'body', 'createUser');
+ createUser = ({ body }: CreateUserRequest): Observable => {
+ throwIfNullOrUndefined(body, 'createUser');
const headers: HttpHeaders = {
'Content-Type': 'application/json',
@@ -67,15 +67,15 @@ export class UserApi extends BaseAPI {
path: '/user',
method: 'POST',
headers,
- body: requestParameters.body,
+ body: body,
});
};
/**
* Creates list of users with given input array
*/
- createUsersWithArrayInput = (requestParameters: CreateUsersWithArrayInputRequest): Observable => {
- throwIfRequired(requestParameters, 'body', 'createUsersWithArrayInput');
+ createUsersWithArrayInput = ({ body }: CreateUsersWithArrayInputRequest): Observable => {
+ throwIfNullOrUndefined(body, 'createUsersWithArrayInput');
const headers: HttpHeaders = {
'Content-Type': 'application/json',
@@ -85,15 +85,15 @@ export class UserApi extends BaseAPI {
path: '/user/createWithArray',
method: 'POST',
headers,
- body: requestParameters.body,
+ body: body,
});
};
/**
* Creates list of users with given input array
*/
- createUsersWithListInput = (requestParameters: CreateUsersWithListInputRequest): Observable => {
- throwIfRequired(requestParameters, 'body', 'createUsersWithListInput');
+ createUsersWithListInput = ({ body }: CreateUsersWithListInputRequest): Observable => {
+ throwIfNullOrUndefined(body, 'createUsersWithListInput');
const headers: HttpHeaders = {
'Content-Type': 'application/json',
@@ -103,7 +103,7 @@ export class UserApi extends BaseAPI {
path: '/user/createWithList',
method: 'POST',
headers,
- body: requestParameters.body,
+ body: body,
});
};
@@ -111,11 +111,11 @@ export class UserApi extends BaseAPI {
* This can only be done by the logged in user.
* Delete user
*/
- deleteUser = (requestParameters: DeleteUserRequest): Observable => {
- throwIfRequired(requestParameters, 'username', 'deleteUser');
+ deleteUser = ({ username }: DeleteUserRequest): Observable => {
+ throwIfNullOrUndefined(username, 'deleteUser');
return this.request({
- path: '/user/{username}'.replace('{username}', encodeURI(requestParameters.username)),
+ path: '/user/{username}'.replace('{username}', encodeURI(username)),
method: 'DELETE',
});
};
@@ -123,11 +123,11 @@ export class UserApi extends BaseAPI {
/**
* Get user by user name
*/
- getUserByName = (requestParameters: GetUserByNameRequest): Observable => {
- throwIfRequired(requestParameters, 'username', 'getUserByName');
+ getUserByName = ({ username }: GetUserByNameRequest): Observable => {
+ throwIfNullOrUndefined(username, 'getUserByName');
return this.request({
- path: '/user/{username}'.replace('{username}', encodeURI(requestParameters.username)),
+ path: '/user/{username}'.replace('{username}', encodeURI(username)),
method: 'GET',
});
};
@@ -135,13 +135,13 @@ export class UserApi extends BaseAPI {
/**
* Logs user into the system
*/
- loginUser = (requestParameters: LoginUserRequest): Observable => {
- throwIfRequired(requestParameters, 'username', 'loginUser');
- throwIfRequired(requestParameters, 'password', 'loginUser');
+ loginUser = ({ username, password }: LoginUserRequest): Observable => {
+ throwIfNullOrUndefined(username, 'loginUser');
+ throwIfNullOrUndefined(password, 'loginUser');
- const query: HttpQuery = {
- ...(requestParameters.username && { 'username': requestParameters.username }),
- ...(requestParameters.password && { 'password': requestParameters.password }),
+ const query: HttpQuery = { // required parameters are used directly since they are already checked by throwIfNullOrUndefined
+ 'username': username,
+ 'password': password,
};
return this.request({
@@ -165,19 +165,19 @@ export class UserApi extends BaseAPI {
* This can only be done by the logged in user.
* Updated user
*/
- updateUser = (requestParameters: UpdateUserRequest): Observable => {
- throwIfRequired(requestParameters, 'username', 'updateUser');
- throwIfRequired(requestParameters, 'body', 'updateUser');
+ updateUser = ({ username, body }: UpdateUserRequest): Observable => {
+ throwIfNullOrUndefined(username, 'updateUser');
+ throwIfNullOrUndefined(body, 'updateUser');
const headers: HttpHeaders = {
'Content-Type': 'application/json',
};
return this.request({
- path: '/user/{username}'.replace('{username}', encodeURI(requestParameters.username)),
+ path: '/user/{username}'.replace('{username}', encodeURI(username)),
method: 'PUT',
headers,
- body: requestParameters.body,
+ body: body,
});
};
diff --git a/samples/client/petstore/typescript-rxjs/builds/default/runtime.ts b/samples/client/petstore/typescript-rxjs/builds/default/runtime.ts
index e71a012b04b..40d2e7b3947 100644
--- a/samples/client/petstore/typescript-rxjs/builds/default/runtime.ts
+++ b/samples/client/petstore/typescript-rxjs/builds/default/runtime.ts
@@ -47,18 +47,12 @@ export class Configuration {
get apiKey(): ((name: string) => string) | undefined {
const apiKey = this.configuration.apiKey;
- if (apiKey) {
- return typeof apiKey === 'function' ? apiKey : () => apiKey;
- }
- return undefined;
+ return apiKey && (typeof apiKey === 'function' ? apiKey : () => apiKey);
}
get accessToken(): ((name: string, scopes?: string[]) => string) | undefined {
const accessToken = this.configuration.accessToken;
- if (accessToken) {
- return typeof accessToken === 'function' ? accessToken : () => accessToken;
- }
- return undefined;
+ return accessToken && (typeof accessToken === 'function' ? accessToken : () => accessToken);
}
}
@@ -72,17 +66,17 @@ export class BaseAPI {
this.middleware = configuration.middleware;
}
- withMiddleware = (middlewares: Middleware[]) => {
- const next = this.clone();
+ withMiddleware = (middlewares: Middleware[]) => {
+ const next = this.clone();
next.middleware = next.middleware.concat(middlewares);
return next;
};
- withPreMiddleware = (preMiddlewares: Array) =>
- this.withMiddleware(preMiddlewares.map((pre) => ({ pre })));
+ withPreMiddleware = (preMiddlewares: Array) =>
+ this.withMiddleware(preMiddlewares.map((pre) => ({ pre })));
- withPostMiddleware = (postMiddlewares: Array) =>
- this.withMiddleware(postMiddlewares.map((post) => ({ post })));
+ withPostMiddleware = (postMiddlewares: Array) =>
+ this.withMiddleware(postMiddlewares.map((post) => ({ post })));
protected request = (requestOpts: RequestOpts): Observable =>
this.rxjsRequest(this.createRequestArgs(requestOpts)).pipe(
@@ -132,11 +126,14 @@ export class BaseAPI {
* Create a shallow clone of `this` by constructing a new instance
* and then shallow cloning data members.
*/
- private clone = (): T =>
+ private clone = (): BaseAPI =>
Object.assign(Object.create(Object.getPrototypeOf(this)), this);
}
-// export for not being a breaking change
+/**
+ * @deprecated
+ * export for not being a breaking change
+ */
export class RequiredError extends Error {
name: 'RequiredError' = 'RequiredError';
}
@@ -153,7 +150,6 @@ export type HttpMethod = 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE' | 'OPTIONS'
export type HttpHeaders = { [key: string]: string };
export type HttpQuery = Partial<{ [key: string]: string | number | null | boolean | Array }>; // partial is needed for strict mode
export type HttpBody = Json | FormData;
-export type ModelPropertyNaming = 'camelCase' | 'snake_case' | 'PascalCase' | 'original';
export interface RequestOpts {
path: string;
@@ -178,12 +174,21 @@ const queryString = (params: HttpQuery): string => Object.keys(params)
// 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 || params[key] === undefined) {
+ if (!params || params[key] == null) {
throw new RequiredError(`Required parameter ${key} was null or undefined when calling ${nickname}.`);
}
};
+export const throwIfNullOrUndefined = (value: any, nickname?: string) => {
+ if (value == null) {
+ throw new Error(`Parameter "${value}" was null or undefined when calling "${nickname}".`);
+ }
+};
+
// alias for easier importing
export interface RequestArgs extends AjaxRequest {}
export interface ResponseArgs extends AjaxResponse {}
diff --git a/samples/client/petstore/typescript-rxjs/builds/es6-target/apis/PetApi.ts b/samples/client/petstore/typescript-rxjs/builds/es6-target/apis/PetApi.ts
index a5328a8c728..3b3232c44db 100644
--- a/samples/client/petstore/typescript-rxjs/builds/es6-target/apis/PetApi.ts
+++ b/samples/client/petstore/typescript-rxjs/builds/es6-target/apis/PetApi.ts
@@ -12,7 +12,7 @@
*/
import { Observable } from 'rxjs';
-import { BaseAPI, HttpHeaders, HttpQuery, throwIfRequired, encodeURI, COLLECTION_FORMATS } from '../runtime';
+import { BaseAPI, HttpHeaders, HttpQuery, throwIfNullOrUndefined, encodeURI, COLLECTION_FORMATS } from '../runtime';
import {
ApiResponse,
Pet,
@@ -63,45 +63,47 @@ export class PetApi extends BaseAPI {
/**
* Add a new pet to the store
*/
- addPet = (requestParameters: AddPetRequest): Observable => {
- throwIfRequired(requestParameters, 'body', 'addPet');
+ addPet = ({ body }: AddPetRequest): Observable => {
+ throwIfNullOrUndefined(body, 'addPet');
const headers: HttpHeaders = {
'Content-Type': 'application/json',
// oauth required
- ...(this.configuration.accessToken && {
- Authorization: this.configuration.accessToken && (typeof this.configuration.accessToken === 'function'
+ ...(this.configuration.accessToken != null
+ ? { Authorization: typeof this.configuration.accessToken === 'function'
? this.configuration.accessToken('petstore_auth', ['write:pets', 'read:pets'])
- : this.configuration.accessToken)
- }),
+ : this.configuration.accessToken }
+ : undefined
+ ),
};
return this.request({
path: '/pet',
method: 'POST',
headers,
- body: requestParameters.body,
+ body: body,
});
};
/**
* Deletes a pet
*/
- deletePet = (requestParameters: DeletePetRequest): Observable => {
- throwIfRequired(requestParameters, 'petId', 'deletePet');
+ deletePet = ({ petId, apiKey }: DeletePetRequest): Observable => {
+ throwIfNullOrUndefined(petId, 'deletePet');
const headers: HttpHeaders = {
- ...(requestParameters.apiKey && { 'api_key': String(requestParameters.apiKey) }),
+ ...(apiKey != null ? { 'api_key': String(apiKey) } : undefined),
// oauth required
- ...(this.configuration.accessToken && {
- Authorization: this.configuration.accessToken && (typeof this.configuration.accessToken === 'function'
+ ...(this.configuration.accessToken != null
+ ? { Authorization: typeof this.configuration.accessToken === 'function'
? this.configuration.accessToken('petstore_auth', ['write:pets', 'read:pets'])
- : this.configuration.accessToken)
- }),
+ : this.configuration.accessToken }
+ : undefined
+ ),
};
return this.request({
- path: '/pet/{petId}'.replace('{petId}', encodeURI(requestParameters.petId)),
+ path: '/pet/{petId}'.replace('{petId}', encodeURI(petId)),
method: 'DELETE',
headers,
});
@@ -111,20 +113,21 @@ export class PetApi extends BaseAPI {
* Multiple status values can be provided with comma separated strings
* Finds Pets by status
*/
- findPetsByStatus = (requestParameters: FindPetsByStatusRequest): Observable> => {
- throwIfRequired(requestParameters, 'status', 'findPetsByStatus');
+ findPetsByStatus = ({ status }: FindPetsByStatusRequest): Observable> => {
+ throwIfNullOrUndefined(status, 'findPetsByStatus');
const headers: HttpHeaders = {
// oauth required
- ...(this.configuration.accessToken && {
- Authorization: this.configuration.accessToken && (typeof this.configuration.accessToken === 'function'
+ ...(this.configuration.accessToken != null
+ ? { Authorization: typeof this.configuration.accessToken === 'function'
? this.configuration.accessToken('petstore_auth', ['write:pets', 'read:pets'])
- : this.configuration.accessToken)
- }),
+ : this.configuration.accessToken }
+ : undefined
+ ),
};
- const query: HttpQuery = {
- ...(requestParameters.status && { 'status': requestParameters.status.join(COLLECTION_FORMATS['csv']) }),
+ const query: HttpQuery = { // required parameters are used directly since they are already checked by throwIfNullOrUndefined
+ 'status': status.join(COLLECTION_FORMATS['csv']),
};
return this.request>({
@@ -139,20 +142,21 @@ export class PetApi extends BaseAPI {
* Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing.
* Finds Pets by tags
*/
- findPetsByTags = (requestParameters: FindPetsByTagsRequest): Observable> => {
- throwIfRequired(requestParameters, 'tags', 'findPetsByTags');
+ findPetsByTags = ({ tags }: FindPetsByTagsRequest): Observable> => {
+ throwIfNullOrUndefined(tags, 'findPetsByTags');
const headers: HttpHeaders = {
// oauth required
- ...(this.configuration.accessToken && {
- Authorization: this.configuration.accessToken && (typeof this.configuration.accessToken === 'function'
+ ...(this.configuration.accessToken != null
+ ? { Authorization: typeof this.configuration.accessToken === 'function'
? this.configuration.accessToken('petstore_auth', ['write:pets', 'read:pets'])
- : this.configuration.accessToken)
- }),
+ : this.configuration.accessToken }
+ : undefined
+ ),
};
- const query: HttpQuery = {
- ...(requestParameters.tags && { 'tags': requestParameters.tags.join(COLLECTION_FORMATS['csv']) }),
+ const query: HttpQuery = { // required parameters are used directly since they are already checked by throwIfNullOrUndefined
+ 'tags': tags.join(COLLECTION_FORMATS['csv']),
};
return this.request>({
@@ -167,15 +171,15 @@ export class PetApi extends BaseAPI {
* Returns a single pet
* Find pet by ID
*/
- getPetById = (requestParameters: GetPetByIdRequest): Observable => {
- throwIfRequired(requestParameters, 'petId', 'getPetById');
+ getPetById = ({ petId }: GetPetByIdRequest): Observable => {
+ throwIfNullOrUndefined(petId, 'getPetById');
const headers: HttpHeaders = {
...(this.configuration.apiKey && { 'api_key': this.configuration.apiKey('api_key') }), // api_key authentication
};
return this.request({
- path: '/pet/{petId}'.replace('{petId}', encodeURI(requestParameters.petId)),
+ path: '/pet/{petId}'.replace('{petId}', encodeURI(petId)),
method: 'GET',
headers,
});
@@ -184,53 +188,50 @@ export class PetApi extends BaseAPI {
/**
* Update an existing pet
*/
- updatePet = (requestParameters: UpdatePetRequest): Observable => {
- throwIfRequired(requestParameters, 'body', 'updatePet');
+ updatePet = ({ body }: UpdatePetRequest): Observable => {
+ throwIfNullOrUndefined(body, 'updatePet');
const headers: HttpHeaders = {
'Content-Type': 'application/json',
// oauth required
- ...(this.configuration.accessToken && {
- Authorization: this.configuration.accessToken && (typeof this.configuration.accessToken === 'function'
+ ...(this.configuration.accessToken != null
+ ? { Authorization: typeof this.configuration.accessToken === 'function'
? this.configuration.accessToken('petstore_auth', ['write:pets', 'read:pets'])
- : this.configuration.accessToken)
- }),
+ : this.configuration.accessToken }
+ : undefined
+ ),
};
return this.request({
path: '/pet',
method: 'PUT',
headers,
- body: requestParameters.body,
+ body: body,
});
};
/**
* Updates a pet in the store with form data
*/
- updatePetWithForm = (requestParameters: UpdatePetWithFormRequest): Observable => {
- throwIfRequired(requestParameters, 'petId', 'updatePetWithForm');
+ updatePetWithForm = ({ petId, name, status }: UpdatePetWithFormRequest): Observable => {
+ throwIfNullOrUndefined(petId, 'updatePetWithForm');
const headers: HttpHeaders = {
// oauth required
- ...(this.configuration.accessToken && {
- Authorization: this.configuration.accessToken && (typeof this.configuration.accessToken === 'function'
+ ...(this.configuration.accessToken != null
+ ? { Authorization: typeof this.configuration.accessToken === 'function'
? this.configuration.accessToken('petstore_auth', ['write:pets', 'read:pets'])
- : this.configuration.accessToken)
- }),
+ : this.configuration.accessToken }
+ : undefined
+ ),
};
const formData = new FormData();
- if (requestParameters.name !== undefined) {
- formData.append('name', requestParameters.name as any);
- }
-
- if (requestParameters.status !== undefined) {
- formData.append('status', requestParameters.status as any);
- }
+ if (name !== undefined) { formData.append('name', name as any); }
+ if (status !== undefined) { formData.append('status', status as any); }
return this.request({
- path: '/pet/{petId}'.replace('{petId}', encodeURI(requestParameters.petId)),
+ path: '/pet/{petId}'.replace('{petId}', encodeURI(petId)),
method: 'POST',
headers,
body: formData,
@@ -240,29 +241,25 @@ export class PetApi extends BaseAPI {
/**
* uploads an image
*/
- uploadFile = (requestParameters: UploadFileRequest): Observable => {
- throwIfRequired(requestParameters, 'petId', 'uploadFile');
+ uploadFile = ({ petId, additionalMetadata, file }: UploadFileRequest): Observable => {
+ throwIfNullOrUndefined(petId, 'uploadFile');
const headers: HttpHeaders = {
// oauth required
- ...(this.configuration.accessToken && {
- Authorization: this.configuration.accessToken && (typeof this.configuration.accessToken === 'function'
+ ...(this.configuration.accessToken != null
+ ? { Authorization: typeof this.configuration.accessToken === 'function'
? this.configuration.accessToken('petstore_auth', ['write:pets', 'read:pets'])
- : this.configuration.accessToken)
- }),
+ : this.configuration.accessToken }
+ : undefined
+ ),
};
const formData = new FormData();
- if (requestParameters.additionalMetadata !== undefined) {
- formData.append('additionalMetadata', requestParameters.additionalMetadata as any);
- }
-
- if (requestParameters.file !== undefined) {
- formData.append('file', requestParameters.file as any);
- }
+ if (additionalMetadata !== undefined) { formData.append('additionalMetadata', additionalMetadata as any); }
+ if (file !== undefined) { formData.append('file', file as any); }
return this.request({
- path: '/pet/{petId}/uploadImage'.replace('{petId}', encodeURI(requestParameters.petId)),
+ path: '/pet/{petId}/uploadImage'.replace('{petId}', encodeURI(petId)),
method: 'POST',
headers,
body: formData,
diff --git a/samples/client/petstore/typescript-rxjs/builds/es6-target/apis/StoreApi.ts b/samples/client/petstore/typescript-rxjs/builds/es6-target/apis/StoreApi.ts
index 623b48bdede..aac36206d60 100644
--- a/samples/client/petstore/typescript-rxjs/builds/es6-target/apis/StoreApi.ts
+++ b/samples/client/petstore/typescript-rxjs/builds/es6-target/apis/StoreApi.ts
@@ -12,7 +12,7 @@
*/
import { Observable } from 'rxjs';
-import { BaseAPI, HttpHeaders, throwIfRequired, encodeURI } from '../runtime';
+import { BaseAPI, HttpHeaders, throwIfNullOrUndefined, encodeURI } from '../runtime';
import {
Order,
} from '../models';
@@ -38,11 +38,11 @@ export class StoreApi extends BaseAPI {
* For valid response try integer IDs with value < 1000. Anything above 1000 or nonintegers will generate API errors
* Delete purchase order by ID
*/
- deleteOrder = (requestParameters: DeleteOrderRequest): Observable => {
- throwIfRequired(requestParameters, 'orderId', 'deleteOrder');
+ deleteOrder = ({ orderId }: DeleteOrderRequest): Observable => {
+ throwIfNullOrUndefined(orderId, 'deleteOrder');
return this.request({
- path: '/store/order/{orderId}'.replace('{orderId}', encodeURI(requestParameters.orderId)),
+ path: '/store/order/{orderId}'.replace('{orderId}', encodeURI(orderId)),
method: 'DELETE',
});
};
@@ -67,11 +67,11 @@ export class StoreApi extends BaseAPI {
* For valid response try integer IDs with value <= 5 or > 10. Other values will generated exceptions
* Find purchase order by ID
*/
- getOrderById = (requestParameters: GetOrderByIdRequest): Observable => {
- throwIfRequired(requestParameters, 'orderId', 'getOrderById');
+ getOrderById = ({ orderId }: GetOrderByIdRequest): Observable => {
+ throwIfNullOrUndefined(orderId, 'getOrderById');
return this.request({
- path: '/store/order/{orderId}'.replace('{orderId}', encodeURI(requestParameters.orderId)),
+ path: '/store/order/{orderId}'.replace('{orderId}', encodeURI(orderId)),
method: 'GET',
});
};
@@ -79,8 +79,8 @@ export class StoreApi extends BaseAPI {
/**
* Place an order for a pet
*/
- placeOrder = (requestParameters: PlaceOrderRequest): Observable => {
- throwIfRequired(requestParameters, 'body', 'placeOrder');
+ placeOrder = ({ body }: PlaceOrderRequest): Observable => {
+ throwIfNullOrUndefined(body, 'placeOrder');
const headers: HttpHeaders = {
'Content-Type': 'application/json',
@@ -90,7 +90,7 @@ export class StoreApi extends BaseAPI {
path: '/store/order',
method: 'POST',
headers,
- body: requestParameters.body,
+ body: body,
});
};
diff --git a/samples/client/petstore/typescript-rxjs/builds/es6-target/apis/UserApi.ts b/samples/client/petstore/typescript-rxjs/builds/es6-target/apis/UserApi.ts
index 2194fdfe9f6..1b3c07eea4f 100644
--- a/samples/client/petstore/typescript-rxjs/builds/es6-target/apis/UserApi.ts
+++ b/samples/client/petstore/typescript-rxjs/builds/es6-target/apis/UserApi.ts
@@ -12,7 +12,7 @@
*/
import { Observable } from 'rxjs';
-import { BaseAPI, HttpHeaders, HttpQuery, throwIfRequired, encodeURI } from '../runtime';
+import { BaseAPI, HttpHeaders, HttpQuery, throwIfNullOrUndefined, encodeURI } from '../runtime';
import {
User,
} from '../models';
@@ -56,8 +56,8 @@ export class UserApi extends BaseAPI {
* This can only be done by the logged in user.
* Create user
*/
- createUser = (requestParameters: CreateUserRequest): Observable => {
- throwIfRequired(requestParameters, 'body', 'createUser');
+ createUser = ({ body }: CreateUserRequest): Observable => {
+ throwIfNullOrUndefined(body, 'createUser');
const headers: HttpHeaders = {
'Content-Type': 'application/json',
@@ -67,15 +67,15 @@ export class UserApi extends BaseAPI {
path: '/user',
method: 'POST',
headers,
- body: requestParameters.body,
+ body: body,
});
};
/**
* Creates list of users with given input array
*/
- createUsersWithArrayInput = (requestParameters: CreateUsersWithArrayInputRequest): Observable => {
- throwIfRequired(requestParameters, 'body', 'createUsersWithArrayInput');
+ createUsersWithArrayInput = ({ body }: CreateUsersWithArrayInputRequest): Observable => {
+ throwIfNullOrUndefined(body, 'createUsersWithArrayInput');
const headers: HttpHeaders = {
'Content-Type': 'application/json',
@@ -85,15 +85,15 @@ export class UserApi extends BaseAPI {
path: '/user/createWithArray',
method: 'POST',
headers,
- body: requestParameters.body,
+ body: body,
});
};
/**
* Creates list of users with given input array
*/
- createUsersWithListInput = (requestParameters: CreateUsersWithListInputRequest): Observable => {
- throwIfRequired(requestParameters, 'body', 'createUsersWithListInput');
+ createUsersWithListInput = ({ body }: CreateUsersWithListInputRequest): Observable => {
+ throwIfNullOrUndefined(body, 'createUsersWithListInput');
const headers: HttpHeaders = {
'Content-Type': 'application/json',
@@ -103,7 +103,7 @@ export class UserApi extends BaseAPI {
path: '/user/createWithList',
method: 'POST',
headers,
- body: requestParameters.body,
+ body: body,
});
};
@@ -111,11 +111,11 @@ export class UserApi extends BaseAPI {
* This can only be done by the logged in user.
* Delete user
*/
- deleteUser = (requestParameters: DeleteUserRequest): Observable => {
- throwIfRequired(requestParameters, 'username', 'deleteUser');
+ deleteUser = ({ username }: DeleteUserRequest): Observable => {
+ throwIfNullOrUndefined(username, 'deleteUser');
return this.request({
- path: '/user/{username}'.replace('{username}', encodeURI(requestParameters.username)),
+ path: '/user/{username}'.replace('{username}', encodeURI(username)),
method: 'DELETE',
});
};
@@ -123,11 +123,11 @@ export class UserApi extends BaseAPI {
/**
* Get user by user name
*/
- getUserByName = (requestParameters: GetUserByNameRequest): Observable => {
- throwIfRequired(requestParameters, 'username', 'getUserByName');
+ getUserByName = ({ username }: GetUserByNameRequest): Observable => {
+ throwIfNullOrUndefined(username, 'getUserByName');
return this.request({
- path: '/user/{username}'.replace('{username}', encodeURI(requestParameters.username)),
+ path: '/user/{username}'.replace('{username}', encodeURI(username)),
method: 'GET',
});
};
@@ -135,13 +135,13 @@ export class UserApi extends BaseAPI {
/**
* Logs user into the system
*/
- loginUser = (requestParameters: LoginUserRequest): Observable => {
- throwIfRequired(requestParameters, 'username', 'loginUser');
- throwIfRequired(requestParameters, 'password', 'loginUser');
+ loginUser = ({ username, password }: LoginUserRequest): Observable => {
+ throwIfNullOrUndefined(username, 'loginUser');
+ throwIfNullOrUndefined(password, 'loginUser');
- const query: HttpQuery = {
- ...(requestParameters.username && { 'username': requestParameters.username }),
- ...(requestParameters.password && { 'password': requestParameters.password }),
+ const query: HttpQuery = { // required parameters are used directly since they are already checked by throwIfNullOrUndefined
+ 'username': username,
+ 'password': password,
};
return this.request({
@@ -165,19 +165,19 @@ export class UserApi extends BaseAPI {
* This can only be done by the logged in user.
* Updated user
*/
- updateUser = (requestParameters: UpdateUserRequest): Observable => {
- throwIfRequired(requestParameters, 'username', 'updateUser');
- throwIfRequired(requestParameters, 'body', 'updateUser');
+ updateUser = ({ username, body }: UpdateUserRequest): Observable => {
+ throwIfNullOrUndefined(username, 'updateUser');
+ throwIfNullOrUndefined(body, 'updateUser');
const headers: HttpHeaders = {
'Content-Type': 'application/json',
};
return this.request({
- path: '/user/{username}'.replace('{username}', encodeURI(requestParameters.username)),
+ path: '/user/{username}'.replace('{username}', encodeURI(username)),
method: 'PUT',
headers,
- body: requestParameters.body,
+ body: body,
});
};
diff --git a/samples/client/petstore/typescript-rxjs/builds/es6-target/runtime.ts b/samples/client/petstore/typescript-rxjs/builds/es6-target/runtime.ts
index e71a012b04b..40d2e7b3947 100644
--- a/samples/client/petstore/typescript-rxjs/builds/es6-target/runtime.ts
+++ b/samples/client/petstore/typescript-rxjs/builds/es6-target/runtime.ts
@@ -47,18 +47,12 @@ export class Configuration {
get apiKey(): ((name: string) => string) | undefined {
const apiKey = this.configuration.apiKey;
- if (apiKey) {
- return typeof apiKey === 'function' ? apiKey : () => apiKey;
- }
- return undefined;
+ return apiKey && (typeof apiKey === 'function' ? apiKey : () => apiKey);
}
get accessToken(): ((name: string, scopes?: string[]) => string) | undefined {
const accessToken = this.configuration.accessToken;
- if (accessToken) {
- return typeof accessToken === 'function' ? accessToken : () => accessToken;
- }
- return undefined;
+ return accessToken && (typeof accessToken === 'function' ? accessToken : () => accessToken);
}
}
@@ -72,17 +66,17 @@ export class BaseAPI {
this.middleware = configuration.middleware;
}
- withMiddleware = (middlewares: Middleware[]) => {
- const next = this.clone();
+ withMiddleware = (middlewares: Middleware[]) => {
+ const next = this.clone();
next.middleware = next.middleware.concat(middlewares);
return next;
};
- withPreMiddleware = (preMiddlewares: Array) =>
- this.withMiddleware(preMiddlewares.map((pre) => ({ pre })));
+ withPreMiddleware = (preMiddlewares: Array) =>
+ this.withMiddleware(preMiddlewares.map((pre) => ({ pre })));
- withPostMiddleware = (postMiddlewares: Array) =>
- this.withMiddleware(postMiddlewares.map((post) => ({ post })));
+ withPostMiddleware = (postMiddlewares: Array) =>
+ this.withMiddleware(postMiddlewares.map((post) => ({ post })));
protected request = (requestOpts: RequestOpts): Observable =>
this.rxjsRequest(this.createRequestArgs(requestOpts)).pipe(
@@ -132,11 +126,14 @@ export class BaseAPI {
* Create a shallow clone of `this` by constructing a new instance
* and then shallow cloning data members.
*/
- private clone = (): T =>
+ private clone = (): BaseAPI =>
Object.assign(Object.create(Object.getPrototypeOf(this)), this);
}
-// export for not being a breaking change
+/**
+ * @deprecated
+ * export for not being a breaking change
+ */
export class RequiredError extends Error {
name: 'RequiredError' = 'RequiredError';
}
@@ -153,7 +150,6 @@ export type HttpMethod = 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE' | 'OPTIONS'
export type HttpHeaders = { [key: string]: string };
export type HttpQuery = Partial<{ [key: string]: string | number | null | boolean | Array }>; // partial is needed for strict mode
export type HttpBody = Json | FormData;
-export type ModelPropertyNaming = 'camelCase' | 'snake_case' | 'PascalCase' | 'original';
export interface RequestOpts {
path: string;
@@ -178,12 +174,21 @@ const queryString = (params: HttpQuery): string => Object.keys(params)
// 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 || params[key] === undefined) {
+ if (!params || params[key] == null) {
throw new RequiredError(`Required parameter ${key} was null or undefined when calling ${nickname}.`);
}
};
+export const throwIfNullOrUndefined = (value: any, nickname?: string) => {
+ if (value == null) {
+ throw new Error(`Parameter "${value}" was null or undefined when calling "${nickname}".`);
+ }
+};
+
// alias for easier importing
export interface RequestArgs extends AjaxRequest {}
export interface ResponseArgs extends AjaxResponse {}
diff --git a/samples/client/petstore/typescript-rxjs/builds/with-interfaces/apis/PetApi.ts b/samples/client/petstore/typescript-rxjs/builds/with-interfaces/apis/PetApi.ts
index a5328a8c728..3b3232c44db 100644
--- a/samples/client/petstore/typescript-rxjs/builds/with-interfaces/apis/PetApi.ts
+++ b/samples/client/petstore/typescript-rxjs/builds/with-interfaces/apis/PetApi.ts
@@ -12,7 +12,7 @@
*/
import { Observable } from 'rxjs';
-import { BaseAPI, HttpHeaders, HttpQuery, throwIfRequired, encodeURI, COLLECTION_FORMATS } from '../runtime';
+import { BaseAPI, HttpHeaders, HttpQuery, throwIfNullOrUndefined, encodeURI, COLLECTION_FORMATS } from '../runtime';
import {
ApiResponse,
Pet,
@@ -63,45 +63,47 @@ export class PetApi extends BaseAPI {
/**
* Add a new pet to the store
*/
- addPet = (requestParameters: AddPetRequest): Observable => {
- throwIfRequired(requestParameters, 'body', 'addPet');
+ addPet = ({ body }: AddPetRequest): Observable => {
+ throwIfNullOrUndefined(body, 'addPet');
const headers: HttpHeaders = {
'Content-Type': 'application/json',
// oauth required
- ...(this.configuration.accessToken && {
- Authorization: this.configuration.accessToken && (typeof this.configuration.accessToken === 'function'
+ ...(this.configuration.accessToken != null
+ ? { Authorization: typeof this.configuration.accessToken === 'function'
? this.configuration.accessToken('petstore_auth', ['write:pets', 'read:pets'])
- : this.configuration.accessToken)
- }),
+ : this.configuration.accessToken }
+ : undefined
+ ),
};
return this.request({
path: '/pet',
method: 'POST',
headers,
- body: requestParameters.body,
+ body: body,
});
};
/**
* Deletes a pet
*/
- deletePet = (requestParameters: DeletePetRequest): Observable => {
- throwIfRequired(requestParameters, 'petId', 'deletePet');
+ deletePet = ({ petId, apiKey }: DeletePetRequest): Observable => {
+ throwIfNullOrUndefined(petId, 'deletePet');
const headers: HttpHeaders = {
- ...(requestParameters.apiKey && { 'api_key': String(requestParameters.apiKey) }),
+ ...(apiKey != null ? { 'api_key': String(apiKey) } : undefined),
// oauth required
- ...(this.configuration.accessToken && {
- Authorization: this.configuration.accessToken && (typeof this.configuration.accessToken === 'function'
+ ...(this.configuration.accessToken != null
+ ? { Authorization: typeof this.configuration.accessToken === 'function'
? this.configuration.accessToken('petstore_auth', ['write:pets', 'read:pets'])
- : this.configuration.accessToken)
- }),
+ : this.configuration.accessToken }
+ : undefined
+ ),
};
return this.request({
- path: '/pet/{petId}'.replace('{petId}', encodeURI(requestParameters.petId)),
+ path: '/pet/{petId}'.replace('{petId}', encodeURI(petId)),
method: 'DELETE',
headers,
});
@@ -111,20 +113,21 @@ export class PetApi extends BaseAPI {
* Multiple status values can be provided with comma separated strings
* Finds Pets by status
*/
- findPetsByStatus = (requestParameters: FindPetsByStatusRequest): Observable> => {
- throwIfRequired(requestParameters, 'status', 'findPetsByStatus');
+ findPetsByStatus = ({ status }: FindPetsByStatusRequest): Observable> => {
+ throwIfNullOrUndefined(status, 'findPetsByStatus');
const headers: HttpHeaders = {
// oauth required
- ...(this.configuration.accessToken && {
- Authorization: this.configuration.accessToken && (typeof this.configuration.accessToken === 'function'
+ ...(this.configuration.accessToken != null
+ ? { Authorization: typeof this.configuration.accessToken === 'function'
? this.configuration.accessToken('petstore_auth', ['write:pets', 'read:pets'])
- : this.configuration.accessToken)
- }),
+ : this.configuration.accessToken }
+ : undefined
+ ),
};
- const query: HttpQuery = {
- ...(requestParameters.status && { 'status': requestParameters.status.join(COLLECTION_FORMATS['csv']) }),
+ const query: HttpQuery = { // required parameters are used directly since they are already checked by throwIfNullOrUndefined
+ 'status': status.join(COLLECTION_FORMATS['csv']),
};
return this.request>({
@@ -139,20 +142,21 @@ export class PetApi extends BaseAPI {
* Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing.
* Finds Pets by tags
*/
- findPetsByTags = (requestParameters: FindPetsByTagsRequest): Observable> => {
- throwIfRequired(requestParameters, 'tags', 'findPetsByTags');
+ findPetsByTags = ({ tags }: FindPetsByTagsRequest): Observable> => {
+ throwIfNullOrUndefined(tags, 'findPetsByTags');
const headers: HttpHeaders = {
// oauth required
- ...(this.configuration.accessToken && {
- Authorization: this.configuration.accessToken && (typeof this.configuration.accessToken === 'function'
+ ...(this.configuration.accessToken != null
+ ? { Authorization: typeof this.configuration.accessToken === 'function'
? this.configuration.accessToken('petstore_auth', ['write:pets', 'read:pets'])
- : this.configuration.accessToken)
- }),
+ : this.configuration.accessToken }
+ : undefined
+ ),
};
- const query: HttpQuery = {
- ...(requestParameters.tags && { 'tags': requestParameters.tags.join(COLLECTION_FORMATS['csv']) }),
+ const query: HttpQuery = { // required parameters are used directly since they are already checked by throwIfNullOrUndefined
+ 'tags': tags.join(COLLECTION_FORMATS['csv']),
};
return this.request>({
@@ -167,15 +171,15 @@ export class PetApi extends BaseAPI {
* Returns a single pet
* Find pet by ID
*/
- getPetById = (requestParameters: GetPetByIdRequest): Observable => {
- throwIfRequired(requestParameters, 'petId', 'getPetById');
+ getPetById = ({ petId }: GetPetByIdRequest): Observable => {
+ throwIfNullOrUndefined(petId, 'getPetById');
const headers: HttpHeaders = {
...(this.configuration.apiKey && { 'api_key': this.configuration.apiKey('api_key') }), // api_key authentication
};
return this.request({
- path: '/pet/{petId}'.replace('{petId}', encodeURI(requestParameters.petId)),
+ path: '/pet/{petId}'.replace('{petId}', encodeURI(petId)),
method: 'GET',
headers,
});
@@ -184,53 +188,50 @@ export class PetApi extends BaseAPI {
/**
* Update an existing pet
*/
- updatePet = (requestParameters: UpdatePetRequest): Observable => {
- throwIfRequired(requestParameters, 'body', 'updatePet');
+ updatePet = ({ body }: UpdatePetRequest): Observable => {
+ throwIfNullOrUndefined(body, 'updatePet');
const headers: HttpHeaders = {
'Content-Type': 'application/json',
// oauth required
- ...(this.configuration.accessToken && {
- Authorization: this.configuration.accessToken && (typeof this.configuration.accessToken === 'function'
+ ...(this.configuration.accessToken != null
+ ? { Authorization: typeof this.configuration.accessToken === 'function'
? this.configuration.accessToken('petstore_auth', ['write:pets', 'read:pets'])
- : this.configuration.accessToken)
- }),
+ : this.configuration.accessToken }
+ : undefined
+ ),
};
return this.request({
path: '/pet',
method: 'PUT',
headers,
- body: requestParameters.body,
+ body: body,
});
};
/**
* Updates a pet in the store with form data
*/
- updatePetWithForm = (requestParameters: UpdatePetWithFormRequest): Observable => {
- throwIfRequired(requestParameters, 'petId', 'updatePetWithForm');
+ updatePetWithForm = ({ petId, name, status }: UpdatePetWithFormRequest): Observable => {
+ throwIfNullOrUndefined(petId, 'updatePetWithForm');
const headers: HttpHeaders = {
// oauth required
- ...(this.configuration.accessToken && {
- Authorization: this.configuration.accessToken && (typeof this.configuration.accessToken === 'function'
+ ...(this.configuration.accessToken != null
+ ? { Authorization: typeof this.configuration.accessToken === 'function'
? this.configuration.accessToken('petstore_auth', ['write:pets', 'read:pets'])
- : this.configuration.accessToken)
- }),
+ : this.configuration.accessToken }
+ : undefined
+ ),
};
const formData = new FormData();
- if (requestParameters.name !== undefined) {
- formData.append('name', requestParameters.name as any);
- }
-
- if (requestParameters.status !== undefined) {
- formData.append('status', requestParameters.status as any);
- }
+ if (name !== undefined) { formData.append('name', name as any); }
+ if (status !== undefined) { formData.append('status', status as any); }
return this.request({
- path: '/pet/{petId}'.replace('{petId}', encodeURI(requestParameters.petId)),
+ path: '/pet/{petId}'.replace('{petId}', encodeURI(petId)),
method: 'POST',
headers,
body: formData,
@@ -240,29 +241,25 @@ export class PetApi extends BaseAPI {
/**
* uploads an image
*/
- uploadFile = (requestParameters: UploadFileRequest): Observable => {
- throwIfRequired(requestParameters, 'petId', 'uploadFile');
+ uploadFile = ({ petId, additionalMetadata, file }: UploadFileRequest): Observable => {
+ throwIfNullOrUndefined(petId, 'uploadFile');
const headers: HttpHeaders = {
// oauth required
- ...(this.configuration.accessToken && {
- Authorization: this.configuration.accessToken && (typeof this.configuration.accessToken === 'function'
+ ...(this.configuration.accessToken != null
+ ? { Authorization: typeof this.configuration.accessToken === 'function'
? this.configuration.accessToken('petstore_auth', ['write:pets', 'read:pets'])
- : this.configuration.accessToken)
- }),
+ : this.configuration.accessToken }
+ : undefined
+ ),
};
const formData = new FormData();
- if (requestParameters.additionalMetadata !== undefined) {
- formData.append('additionalMetadata', requestParameters.additionalMetadata as any);
- }
-
- if (requestParameters.file !== undefined) {
- formData.append('file', requestParameters.file as any);
- }
+ if (additionalMetadata !== undefined) { formData.append('additionalMetadata', additionalMetadata as any); }
+ if (file !== undefined) { formData.append('file', file as any); }
return this.request({
- path: '/pet/{petId}/uploadImage'.replace('{petId}', encodeURI(requestParameters.petId)),
+ path: '/pet/{petId}/uploadImage'.replace('{petId}', encodeURI(petId)),
method: 'POST',
headers,
body: formData,
diff --git a/samples/client/petstore/typescript-rxjs/builds/with-interfaces/apis/StoreApi.ts b/samples/client/petstore/typescript-rxjs/builds/with-interfaces/apis/StoreApi.ts
index 623b48bdede..aac36206d60 100644
--- a/samples/client/petstore/typescript-rxjs/builds/with-interfaces/apis/StoreApi.ts
+++ b/samples/client/petstore/typescript-rxjs/builds/with-interfaces/apis/StoreApi.ts
@@ -12,7 +12,7 @@
*/
import { Observable } from 'rxjs';
-import { BaseAPI, HttpHeaders, throwIfRequired, encodeURI } from '../runtime';
+import { BaseAPI, HttpHeaders, throwIfNullOrUndefined, encodeURI } from '../runtime';
import {
Order,
} from '../models';
@@ -38,11 +38,11 @@ export class StoreApi extends BaseAPI {
* For valid response try integer IDs with value < 1000. Anything above 1000 or nonintegers will generate API errors
* Delete purchase order by ID
*/
- deleteOrder = (requestParameters: DeleteOrderRequest): Observable => {
- throwIfRequired(requestParameters, 'orderId', 'deleteOrder');
+ deleteOrder = ({ orderId }: DeleteOrderRequest): Observable => {
+ throwIfNullOrUndefined(orderId, 'deleteOrder');
return this.request({
- path: '/store/order/{orderId}'.replace('{orderId}', encodeURI(requestParameters.orderId)),
+ path: '/store/order/{orderId}'.replace('{orderId}', encodeURI(orderId)),
method: 'DELETE',
});
};
@@ -67,11 +67,11 @@ export class StoreApi extends BaseAPI {
* For valid response try integer IDs with value <= 5 or > 10. Other values will generated exceptions
* Find purchase order by ID
*/
- getOrderById = (requestParameters: GetOrderByIdRequest): Observable => {
- throwIfRequired(requestParameters, 'orderId', 'getOrderById');
+ getOrderById = ({ orderId }: GetOrderByIdRequest): Observable => {
+ throwIfNullOrUndefined(orderId, 'getOrderById');
return this.request({
- path: '/store/order/{orderId}'.replace('{orderId}', encodeURI(requestParameters.orderId)),
+ path: '/store/order/{orderId}'.replace('{orderId}', encodeURI(orderId)),
method: 'GET',
});
};
@@ -79,8 +79,8 @@ export class StoreApi extends BaseAPI {
/**
* Place an order for a pet
*/
- placeOrder = (requestParameters: PlaceOrderRequest): Observable => {
- throwIfRequired(requestParameters, 'body', 'placeOrder');
+ placeOrder = ({ body }: PlaceOrderRequest): Observable => {
+ throwIfNullOrUndefined(body, 'placeOrder');
const headers: HttpHeaders = {
'Content-Type': 'application/json',
@@ -90,7 +90,7 @@ export class StoreApi extends BaseAPI {
path: '/store/order',
method: 'POST',
headers,
- body: requestParameters.body,
+ body: body,
});
};
diff --git a/samples/client/petstore/typescript-rxjs/builds/with-interfaces/apis/UserApi.ts b/samples/client/petstore/typescript-rxjs/builds/with-interfaces/apis/UserApi.ts
index 2194fdfe9f6..1b3c07eea4f 100644
--- a/samples/client/petstore/typescript-rxjs/builds/with-interfaces/apis/UserApi.ts
+++ b/samples/client/petstore/typescript-rxjs/builds/with-interfaces/apis/UserApi.ts
@@ -12,7 +12,7 @@
*/
import { Observable } from 'rxjs';
-import { BaseAPI, HttpHeaders, HttpQuery, throwIfRequired, encodeURI } from '../runtime';
+import { BaseAPI, HttpHeaders, HttpQuery, throwIfNullOrUndefined, encodeURI } from '../runtime';
import {
User,
} from '../models';
@@ -56,8 +56,8 @@ export class UserApi extends BaseAPI {
* This can only be done by the logged in user.
* Create user
*/
- createUser = (requestParameters: CreateUserRequest): Observable => {
- throwIfRequired(requestParameters, 'body', 'createUser');
+ createUser = ({ body }: CreateUserRequest): Observable => {
+ throwIfNullOrUndefined(body, 'createUser');
const headers: HttpHeaders = {
'Content-Type': 'application/json',
@@ -67,15 +67,15 @@ export class UserApi extends BaseAPI {
path: '/user',
method: 'POST',
headers,
- body: requestParameters.body,
+ body: body,
});
};
/**
* Creates list of users with given input array
*/
- createUsersWithArrayInput = (requestParameters: CreateUsersWithArrayInputRequest): Observable => {
- throwIfRequired(requestParameters, 'body', 'createUsersWithArrayInput');
+ createUsersWithArrayInput = ({ body }: CreateUsersWithArrayInputRequest): Observable => {
+ throwIfNullOrUndefined(body, 'createUsersWithArrayInput');
const headers: HttpHeaders = {
'Content-Type': 'application/json',
@@ -85,15 +85,15 @@ export class UserApi extends BaseAPI {
path: '/user/createWithArray',
method: 'POST',
headers,
- body: requestParameters.body,
+ body: body,
});
};
/**
* Creates list of users with given input array
*/
- createUsersWithListInput = (requestParameters: CreateUsersWithListInputRequest): Observable => {
- throwIfRequired(requestParameters, 'body', 'createUsersWithListInput');
+ createUsersWithListInput = ({ body }: CreateUsersWithListInputRequest): Observable => {
+ throwIfNullOrUndefined(body, 'createUsersWithListInput');
const headers: HttpHeaders = {
'Content-Type': 'application/json',
@@ -103,7 +103,7 @@ export class UserApi extends BaseAPI {
path: '/user/createWithList',
method: 'POST',
headers,
- body: requestParameters.body,
+ body: body,
});
};
@@ -111,11 +111,11 @@ export class UserApi extends BaseAPI {
* This can only be done by the logged in user.
* Delete user
*/
- deleteUser = (requestParameters: DeleteUserRequest): Observable => {
- throwIfRequired(requestParameters, 'username', 'deleteUser');
+ deleteUser = ({ username }: DeleteUserRequest): Observable => {
+ throwIfNullOrUndefined(username, 'deleteUser');
return this.request({
- path: '/user/{username}'.replace('{username}', encodeURI(requestParameters.username)),
+ path: '/user/{username}'.replace('{username}', encodeURI(username)),
method: 'DELETE',
});
};
@@ -123,11 +123,11 @@ export class UserApi extends BaseAPI {
/**
* Get user by user name
*/
- getUserByName = (requestParameters: GetUserByNameRequest): Observable => {
- throwIfRequired(requestParameters, 'username', 'getUserByName');
+ getUserByName = ({ username }: GetUserByNameRequest): Observable => {
+ throwIfNullOrUndefined(username, 'getUserByName');
return this.request({
- path: '/user/{username}'.replace('{username}', encodeURI(requestParameters.username)),
+ path: '/user/{username}'.replace('{username}', encodeURI(username)),
method: 'GET',
});
};
@@ -135,13 +135,13 @@ export class UserApi extends BaseAPI {
/**
* Logs user into the system
*/
- loginUser = (requestParameters: LoginUserRequest): Observable => {
- throwIfRequired(requestParameters, 'username', 'loginUser');
- throwIfRequired(requestParameters, 'password', 'loginUser');
+ loginUser = ({ username, password }: LoginUserRequest): Observable => {
+ throwIfNullOrUndefined(username, 'loginUser');
+ throwIfNullOrUndefined(password, 'loginUser');
- const query: HttpQuery = {
- ...(requestParameters.username && { 'username': requestParameters.username }),
- ...(requestParameters.password && { 'password': requestParameters.password }),
+ const query: HttpQuery = { // required parameters are used directly since they are already checked by throwIfNullOrUndefined
+ 'username': username,
+ 'password': password,
};
return this.request({
@@ -165,19 +165,19 @@ export class UserApi extends BaseAPI {
* This can only be done by the logged in user.
* Updated user
*/
- updateUser = (requestParameters: UpdateUserRequest): Observable => {
- throwIfRequired(requestParameters, 'username', 'updateUser');
- throwIfRequired(requestParameters, 'body', 'updateUser');
+ updateUser = ({ username, body }: UpdateUserRequest): Observable => {
+ throwIfNullOrUndefined(username, 'updateUser');
+ throwIfNullOrUndefined(body, 'updateUser');
const headers: HttpHeaders = {
'Content-Type': 'application/json',
};
return this.request({
- path: '/user/{username}'.replace('{username}', encodeURI(requestParameters.username)),
+ path: '/user/{username}'.replace('{username}', encodeURI(username)),
method: 'PUT',
headers,
- body: requestParameters.body,
+ body: body,
});
};
diff --git a/samples/client/petstore/typescript-rxjs/builds/with-interfaces/runtime.ts b/samples/client/petstore/typescript-rxjs/builds/with-interfaces/runtime.ts
index e71a012b04b..40d2e7b3947 100644
--- a/samples/client/petstore/typescript-rxjs/builds/with-interfaces/runtime.ts
+++ b/samples/client/petstore/typescript-rxjs/builds/with-interfaces/runtime.ts
@@ -47,18 +47,12 @@ export class Configuration {
get apiKey(): ((name: string) => string) | undefined {
const apiKey = this.configuration.apiKey;
- if (apiKey) {
- return typeof apiKey === 'function' ? apiKey : () => apiKey;
- }
- return undefined;
+ return apiKey && (typeof apiKey === 'function' ? apiKey : () => apiKey);
}
get accessToken(): ((name: string, scopes?: string[]) => string) | undefined {
const accessToken = this.configuration.accessToken;
- if (accessToken) {
- return typeof accessToken === 'function' ? accessToken : () => accessToken;
- }
- return undefined;
+ return accessToken && (typeof accessToken === 'function' ? accessToken : () => accessToken);
}
}
@@ -72,17 +66,17 @@ export class BaseAPI {
this.middleware = configuration.middleware;
}
- withMiddleware = (middlewares: Middleware[]) => {
- const next = this.clone();
+ withMiddleware = (middlewares: Middleware[]) => {
+ const next = this.clone();
next.middleware = next.middleware.concat(middlewares);
return next;
};
- withPreMiddleware = (preMiddlewares: Array) =>
- this.withMiddleware(preMiddlewares.map((pre) => ({ pre })));
+ withPreMiddleware = (preMiddlewares: Array) =>
+ this.withMiddleware(preMiddlewares.map((pre) => ({ pre })));
- withPostMiddleware = (postMiddlewares: Array) =>
- this.withMiddleware(postMiddlewares.map((post) => ({ post })));
+ withPostMiddleware = (postMiddlewares: Array) =>
+ this.withMiddleware(postMiddlewares.map((post) => ({ post })));
protected request = (requestOpts: RequestOpts): Observable =>
this.rxjsRequest(this.createRequestArgs(requestOpts)).pipe(
@@ -132,11 +126,14 @@ export class BaseAPI {
* Create a shallow clone of `this` by constructing a new instance
* and then shallow cloning data members.
*/
- private clone = (): T =>
+ private clone = (): BaseAPI =>
Object.assign(Object.create(Object.getPrototypeOf(this)), this);
}
-// export for not being a breaking change
+/**
+ * @deprecated
+ * export for not being a breaking change
+ */
export class RequiredError extends Error {
name: 'RequiredError' = 'RequiredError';
}
@@ -153,7 +150,6 @@ export type HttpMethod = 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE' | 'OPTIONS'
export type HttpHeaders = { [key: string]: string };
export type HttpQuery = Partial<{ [key: string]: string | number | null | boolean | Array }>; // partial is needed for strict mode
export type HttpBody = Json | FormData;
-export type ModelPropertyNaming = 'camelCase' | 'snake_case' | 'PascalCase' | 'original';
export interface RequestOpts {
path: string;
@@ -178,12 +174,21 @@ const queryString = (params: HttpQuery): string => Object.keys(params)
// 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 || params[key] === undefined) {
+ if (!params || params[key] == null) {
throw new RequiredError(`Required parameter ${key} was null or undefined when calling ${nickname}.`);
}
};
+export const throwIfNullOrUndefined = (value: any, nickname?: string) => {
+ if (value == null) {
+ throw new Error(`Parameter "${value}" was null or undefined when calling "${nickname}".`);
+ }
+};
+
// alias for easier importing
export interface RequestArgs extends AjaxRequest {}
export interface ResponseArgs extends AjaxResponse {}
diff --git a/samples/client/petstore/typescript-rxjs/builds/with-npm-version/apis/PetApi.ts b/samples/client/petstore/typescript-rxjs/builds/with-npm-version/apis/PetApi.ts
index a5328a8c728..3b3232c44db 100644
--- a/samples/client/petstore/typescript-rxjs/builds/with-npm-version/apis/PetApi.ts
+++ b/samples/client/petstore/typescript-rxjs/builds/with-npm-version/apis/PetApi.ts
@@ -12,7 +12,7 @@
*/
import { Observable } from 'rxjs';
-import { BaseAPI, HttpHeaders, HttpQuery, throwIfRequired, encodeURI, COLLECTION_FORMATS } from '../runtime';
+import { BaseAPI, HttpHeaders, HttpQuery, throwIfNullOrUndefined, encodeURI, COLLECTION_FORMATS } from '../runtime';
import {
ApiResponse,
Pet,
@@ -63,45 +63,47 @@ export class PetApi extends BaseAPI {
/**
* Add a new pet to the store
*/
- addPet = (requestParameters: AddPetRequest): Observable => {
- throwIfRequired(requestParameters, 'body', 'addPet');
+ addPet = ({ body }: AddPetRequest): Observable => {
+ throwIfNullOrUndefined(body, 'addPet');
const headers: HttpHeaders = {
'Content-Type': 'application/json',
// oauth required
- ...(this.configuration.accessToken && {
- Authorization: this.configuration.accessToken && (typeof this.configuration.accessToken === 'function'
+ ...(this.configuration.accessToken != null
+ ? { Authorization: typeof this.configuration.accessToken === 'function'
? this.configuration.accessToken('petstore_auth', ['write:pets', 'read:pets'])
- : this.configuration.accessToken)
- }),
+ : this.configuration.accessToken }
+ : undefined
+ ),
};
return this.request({
path: '/pet',
method: 'POST',
headers,
- body: requestParameters.body,
+ body: body,
});
};
/**
* Deletes a pet
*/
- deletePet = (requestParameters: DeletePetRequest): Observable => {
- throwIfRequired(requestParameters, 'petId', 'deletePet');
+ deletePet = ({ petId, apiKey }: DeletePetRequest): Observable => {
+ throwIfNullOrUndefined(petId, 'deletePet');
const headers: HttpHeaders = {
- ...(requestParameters.apiKey && { 'api_key': String(requestParameters.apiKey) }),
+ ...(apiKey != null ? { 'api_key': String(apiKey) } : undefined),
// oauth required
- ...(this.configuration.accessToken && {
- Authorization: this.configuration.accessToken && (typeof this.configuration.accessToken === 'function'
+ ...(this.configuration.accessToken != null
+ ? { Authorization: typeof this.configuration.accessToken === 'function'
? this.configuration.accessToken('petstore_auth', ['write:pets', 'read:pets'])
- : this.configuration.accessToken)
- }),
+ : this.configuration.accessToken }
+ : undefined
+ ),
};
return this.request({
- path: '/pet/{petId}'.replace('{petId}', encodeURI(requestParameters.petId)),
+ path: '/pet/{petId}'.replace('{petId}', encodeURI(petId)),
method: 'DELETE',
headers,
});
@@ -111,20 +113,21 @@ export class PetApi extends BaseAPI {
* Multiple status values can be provided with comma separated strings
* Finds Pets by status
*/
- findPetsByStatus = (requestParameters: FindPetsByStatusRequest): Observable> => {
- throwIfRequired(requestParameters, 'status', 'findPetsByStatus');
+ findPetsByStatus = ({ status }: FindPetsByStatusRequest): Observable> => {
+ throwIfNullOrUndefined(status, 'findPetsByStatus');
const headers: HttpHeaders = {
// oauth required
- ...(this.configuration.accessToken && {
- Authorization: this.configuration.accessToken && (typeof this.configuration.accessToken === 'function'
+ ...(this.configuration.accessToken != null
+ ? { Authorization: typeof this.configuration.accessToken === 'function'
? this.configuration.accessToken('petstore_auth', ['write:pets', 'read:pets'])
- : this.configuration.accessToken)
- }),
+ : this.configuration.accessToken }
+ : undefined
+ ),
};
- const query: HttpQuery = {
- ...(requestParameters.status && { 'status': requestParameters.status.join(COLLECTION_FORMATS['csv']) }),
+ const query: HttpQuery = { // required parameters are used directly since they are already checked by throwIfNullOrUndefined
+ 'status': status.join(COLLECTION_FORMATS['csv']),
};
return this.request>({
@@ -139,20 +142,21 @@ export class PetApi extends BaseAPI {
* Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing.
* Finds Pets by tags
*/
- findPetsByTags = (requestParameters: FindPetsByTagsRequest): Observable> => {
- throwIfRequired(requestParameters, 'tags', 'findPetsByTags');
+ findPetsByTags = ({ tags }: FindPetsByTagsRequest): Observable> => {
+ throwIfNullOrUndefined(tags, 'findPetsByTags');
const headers: HttpHeaders = {
// oauth required
- ...(this.configuration.accessToken && {
- Authorization: this.configuration.accessToken && (typeof this.configuration.accessToken === 'function'
+ ...(this.configuration.accessToken != null
+ ? { Authorization: typeof this.configuration.accessToken === 'function'
? this.configuration.accessToken('petstore_auth', ['write:pets', 'read:pets'])
- : this.configuration.accessToken)
- }),
+ : this.configuration.accessToken }
+ : undefined
+ ),
};
- const query: HttpQuery = {
- ...(requestParameters.tags && { 'tags': requestParameters.tags.join(COLLECTION_FORMATS['csv']) }),
+ const query: HttpQuery = { // required parameters are used directly since they are already checked by throwIfNullOrUndefined
+ 'tags': tags.join(COLLECTION_FORMATS['csv']),
};
return this.request>({
@@ -167,15 +171,15 @@ export class PetApi extends BaseAPI {
* Returns a single pet
* Find pet by ID
*/
- getPetById = (requestParameters: GetPetByIdRequest): Observable => {
- throwIfRequired(requestParameters, 'petId', 'getPetById');
+ getPetById = ({ petId }: GetPetByIdRequest): Observable => {
+ throwIfNullOrUndefined(petId, 'getPetById');
const headers: HttpHeaders = {
...(this.configuration.apiKey && { 'api_key': this.configuration.apiKey('api_key') }), // api_key authentication
};
return this.request({
- path: '/pet/{petId}'.replace('{petId}', encodeURI(requestParameters.petId)),
+ path: '/pet/{petId}'.replace('{petId}', encodeURI(petId)),
method: 'GET',
headers,
});
@@ -184,53 +188,50 @@ export class PetApi extends BaseAPI {
/**
* Update an existing pet
*/
- updatePet = (requestParameters: UpdatePetRequest): Observable => {
- throwIfRequired(requestParameters, 'body', 'updatePet');
+ updatePet = ({ body }: UpdatePetRequest): Observable => {
+ throwIfNullOrUndefined(body, 'updatePet');
const headers: HttpHeaders = {
'Content-Type': 'application/json',
// oauth required
- ...(this.configuration.accessToken && {
- Authorization: this.configuration.accessToken && (typeof this.configuration.accessToken === 'function'
+ ...(this.configuration.accessToken != null
+ ? { Authorization: typeof this.configuration.accessToken === 'function'
? this.configuration.accessToken('petstore_auth', ['write:pets', 'read:pets'])
- : this.configuration.accessToken)
- }),
+ : this.configuration.accessToken }
+ : undefined
+ ),
};
return this.request({
path: '/pet',
method: 'PUT',
headers,
- body: requestParameters.body,
+ body: body,
});
};
/**
* Updates a pet in the store with form data
*/
- updatePetWithForm = (requestParameters: UpdatePetWithFormRequest): Observable => {
- throwIfRequired(requestParameters, 'petId', 'updatePetWithForm');
+ updatePetWithForm = ({ petId, name, status }: UpdatePetWithFormRequest): Observable => {
+ throwIfNullOrUndefined(petId, 'updatePetWithForm');
const headers: HttpHeaders = {
// oauth required
- ...(this.configuration.accessToken && {
- Authorization: this.configuration.accessToken && (typeof this.configuration.accessToken === 'function'
+ ...(this.configuration.accessToken != null
+ ? { Authorization: typeof this.configuration.accessToken === 'function'
? this.configuration.accessToken('petstore_auth', ['write:pets', 'read:pets'])
- : this.configuration.accessToken)
- }),
+ : this.configuration.accessToken }
+ : undefined
+ ),
};
const formData = new FormData();
- if (requestParameters.name !== undefined) {
- formData.append('name', requestParameters.name as any);
- }
-
- if (requestParameters.status !== undefined) {
- formData.append('status', requestParameters.status as any);
- }
+ if (name !== undefined) { formData.append('name', name as any); }
+ if (status !== undefined) { formData.append('status', status as any); }
return this.request({
- path: '/pet/{petId}'.replace('{petId}', encodeURI(requestParameters.petId)),
+ path: '/pet/{petId}'.replace('{petId}', encodeURI(petId)),
method: 'POST',
headers,
body: formData,
@@ -240,29 +241,25 @@ export class PetApi extends BaseAPI {
/**
* uploads an image
*/
- uploadFile = (requestParameters: UploadFileRequest): Observable => {
- throwIfRequired(requestParameters, 'petId', 'uploadFile');
+ uploadFile = ({ petId, additionalMetadata, file }: UploadFileRequest): Observable => {
+ throwIfNullOrUndefined(petId, 'uploadFile');
const headers: HttpHeaders = {
// oauth required
- ...(this.configuration.accessToken && {
- Authorization: this.configuration.accessToken && (typeof this.configuration.accessToken === 'function'
+ ...(this.configuration.accessToken != null
+ ? { Authorization: typeof this.configuration.accessToken === 'function'
? this.configuration.accessToken('petstore_auth', ['write:pets', 'read:pets'])
- : this.configuration.accessToken)
- }),
+ : this.configuration.accessToken }
+ : undefined
+ ),
};
const formData = new FormData();
- if (requestParameters.additionalMetadata !== undefined) {
- formData.append('additionalMetadata', requestParameters.additionalMetadata as any);
- }
-
- if (requestParameters.file !== undefined) {
- formData.append('file', requestParameters.file as any);
- }
+ if (additionalMetadata !== undefined) { formData.append('additionalMetadata', additionalMetadata as any); }
+ if (file !== undefined) { formData.append('file', file as any); }
return this.request({
- path: '/pet/{petId}/uploadImage'.replace('{petId}', encodeURI(requestParameters.petId)),
+ path: '/pet/{petId}/uploadImage'.replace('{petId}', encodeURI(petId)),
method: 'POST',
headers,
body: formData,
diff --git a/samples/client/petstore/typescript-rxjs/builds/with-npm-version/apis/StoreApi.ts b/samples/client/petstore/typescript-rxjs/builds/with-npm-version/apis/StoreApi.ts
index 623b48bdede..aac36206d60 100644
--- a/samples/client/petstore/typescript-rxjs/builds/with-npm-version/apis/StoreApi.ts
+++ b/samples/client/petstore/typescript-rxjs/builds/with-npm-version/apis/StoreApi.ts
@@ -12,7 +12,7 @@
*/
import { Observable } from 'rxjs';
-import { BaseAPI, HttpHeaders, throwIfRequired, encodeURI } from '../runtime';
+import { BaseAPI, HttpHeaders, throwIfNullOrUndefined, encodeURI } from '../runtime';
import {
Order,
} from '../models';
@@ -38,11 +38,11 @@ export class StoreApi extends BaseAPI {
* For valid response try integer IDs with value < 1000. Anything above 1000 or nonintegers will generate API errors
* Delete purchase order by ID
*/
- deleteOrder = (requestParameters: DeleteOrderRequest): Observable => {
- throwIfRequired(requestParameters, 'orderId', 'deleteOrder');
+ deleteOrder = ({ orderId }: DeleteOrderRequest): Observable => {
+ throwIfNullOrUndefined(orderId, 'deleteOrder');
return this.request({
- path: '/store/order/{orderId}'.replace('{orderId}', encodeURI(requestParameters.orderId)),
+ path: '/store/order/{orderId}'.replace('{orderId}', encodeURI(orderId)),
method: 'DELETE',
});
};
@@ -67,11 +67,11 @@ export class StoreApi extends BaseAPI {
* For valid response try integer IDs with value <= 5 or > 10. Other values will generated exceptions
* Find purchase order by ID
*/
- getOrderById = (requestParameters: GetOrderByIdRequest): Observable => {
- throwIfRequired(requestParameters, 'orderId', 'getOrderById');
+ getOrderById = ({ orderId }: GetOrderByIdRequest): Observable => {
+ throwIfNullOrUndefined(orderId, 'getOrderById');
return this.request({
- path: '/store/order/{orderId}'.replace('{orderId}', encodeURI(requestParameters.orderId)),
+ path: '/store/order/{orderId}'.replace('{orderId}', encodeURI(orderId)),
method: 'GET',
});
};
@@ -79,8 +79,8 @@ export class StoreApi extends BaseAPI {
/**
* Place an order for a pet
*/
- placeOrder = (requestParameters: PlaceOrderRequest): Observable => {
- throwIfRequired(requestParameters, 'body', 'placeOrder');
+ placeOrder = ({ body }: PlaceOrderRequest): Observable => {
+ throwIfNullOrUndefined(body, 'placeOrder');
const headers: HttpHeaders = {
'Content-Type': 'application/json',
@@ -90,7 +90,7 @@ export class StoreApi extends BaseAPI {
path: '/store/order',
method: 'POST',
headers,
- body: requestParameters.body,
+ body: body,
});
};
diff --git a/samples/client/petstore/typescript-rxjs/builds/with-npm-version/apis/UserApi.ts b/samples/client/petstore/typescript-rxjs/builds/with-npm-version/apis/UserApi.ts
index 2194fdfe9f6..1b3c07eea4f 100644
--- a/samples/client/petstore/typescript-rxjs/builds/with-npm-version/apis/UserApi.ts
+++ b/samples/client/petstore/typescript-rxjs/builds/with-npm-version/apis/UserApi.ts
@@ -12,7 +12,7 @@
*/
import { Observable } from 'rxjs';
-import { BaseAPI, HttpHeaders, HttpQuery, throwIfRequired, encodeURI } from '../runtime';
+import { BaseAPI, HttpHeaders, HttpQuery, throwIfNullOrUndefined, encodeURI } from '../runtime';
import {
User,
} from '../models';
@@ -56,8 +56,8 @@ export class UserApi extends BaseAPI {
* This can only be done by the logged in user.
* Create user
*/
- createUser = (requestParameters: CreateUserRequest): Observable => {
- throwIfRequired(requestParameters, 'body', 'createUser');
+ createUser = ({ body }: CreateUserRequest): Observable => {
+ throwIfNullOrUndefined(body, 'createUser');
const headers: HttpHeaders = {
'Content-Type': 'application/json',
@@ -67,15 +67,15 @@ export class UserApi extends BaseAPI {
path: '/user',
method: 'POST',
headers,
- body: requestParameters.body,
+ body: body,
});
};
/**
* Creates list of users with given input array
*/
- createUsersWithArrayInput = (requestParameters: CreateUsersWithArrayInputRequest): Observable => {
- throwIfRequired(requestParameters, 'body', 'createUsersWithArrayInput');
+ createUsersWithArrayInput = ({ body }: CreateUsersWithArrayInputRequest): Observable => {
+ throwIfNullOrUndefined(body, 'createUsersWithArrayInput');
const headers: HttpHeaders = {
'Content-Type': 'application/json',
@@ -85,15 +85,15 @@ export class UserApi extends BaseAPI {
path: '/user/createWithArray',
method: 'POST',
headers,
- body: requestParameters.body,
+ body: body,
});
};
/**
* Creates list of users with given input array
*/
- createUsersWithListInput = (requestParameters: CreateUsersWithListInputRequest): Observable => {
- throwIfRequired(requestParameters, 'body', 'createUsersWithListInput');
+ createUsersWithListInput = ({ body }: CreateUsersWithListInputRequest): Observable => {
+ throwIfNullOrUndefined(body, 'createUsersWithListInput');
const headers: HttpHeaders = {
'Content-Type': 'application/json',
@@ -103,7 +103,7 @@ export class UserApi extends BaseAPI {
path: '/user/createWithList',
method: 'POST',
headers,
- body: requestParameters.body,
+ body: body,
});
};
@@ -111,11 +111,11 @@ export class UserApi extends BaseAPI {
* This can only be done by the logged in user.
* Delete user
*/
- deleteUser = (requestParameters: DeleteUserRequest): Observable => {
- throwIfRequired(requestParameters, 'username', 'deleteUser');
+ deleteUser = ({ username }: DeleteUserRequest): Observable => {
+ throwIfNullOrUndefined(username, 'deleteUser');
return this.request({
- path: '/user/{username}'.replace('{username}', encodeURI(requestParameters.username)),
+ path: '/user/{username}'.replace('{username}', encodeURI(username)),
method: 'DELETE',
});
};
@@ -123,11 +123,11 @@ export class UserApi extends BaseAPI {
/**
* Get user by user name
*/
- getUserByName = (requestParameters: GetUserByNameRequest): Observable