From 66f93dd81349626e3095848224502c96755ced1a Mon Sep 17 00:00:00 2001
From: Mario Gualtieri <mario.gualtieri2012@gmail.com>
Date: Thu, 2 May 2019 15:55:15 +0200
Subject: [PATCH 01/10] Add support to http patch method

---
 .../typescript-inversify/HttpClient.mustache  | 31 ++++++++++++++-----
 .../typescript-inversify/IHttpClient.mustache |  8 ++++-
 2 files changed, 31 insertions(+), 8 deletions(-)

diff --git a/modules/openapi-generator/src/main/resources/typescript-inversify/HttpClient.mustache b/modules/openapi-generator/src/main/resources/typescript-inversify/HttpClient.mustache
index 64fe12a3045..5862c9a3fad 100644
--- a/modules/openapi-generator/src/main/resources/typescript-inversify/HttpClient.mustache
+++ b/modules/openapi-generator/src/main/resources/typescript-inversify/HttpClient.mustache
@@ -1,28 +1,39 @@
 import IHttpClient from "./IHttpClient";
-import { Observable } from "rxjs/Observable";
+
+{{^useRxJS6}}
+import { Observable } from 'rxjs/Observable';
+{{/useRxJS6}}
+{{#useRxJS6}}
+import { Observable, from } from 'rxjs';
+{{/useRxJS6}}
+
 import "whatwg-fetch";
 import HttpResponse from "./HttpResponse";
 import {injectable} from "inversify";
-import "rxjs/add/observable/fromPromise";
 import { Headers } from "./Headers";
 
 @injectable()
 class HttpClient implements IHttpClient {
 
     get(url:string, headers?: Headers):Observable<HttpResponse> {
-        return this.performNetworkCall(url, "get", undefined, headers);
+        return this.performNetworkCall(url, "GET", undefined, headers);
     }
 
     post(url: string, body: {}|FormData, headers?: Headers): Observable<HttpResponse> {
-        return this.performNetworkCall(url, "post", this.getJsonBody(body), this.addJsonHeaders(headers));
+        return this.performNetworkCall(url, "POST", this.getJsonBody(body), this.addJsonHeaders(headers));
     }
 
     put(url: string, body: {}, headers?: Headers): Observable<HttpResponse> {
-        return this.performNetworkCall(url, "put", this.getJsonBody(body), this.addJsonHeaders(headers));
+        return this.performNetworkCall(url, "PUT", this.getJsonBody(body), this.addJsonHeaders(headers));
+    }
+
+    patch(url: string, body: {}, headers?: Headers): Observable<HttpResponse> {
+        return this.performNetworkCall(url, "PATCH", this.getJsonBody(body), this.addJsonHeaders(headers));
     }
 
+
     delete(url: string, headers?: Headers): Observable<HttpResponse> {
-        return this.performNetworkCall(url, "delete", undefined, headers);
+        return this.performNetworkCall(url, "DELETE", undefined, headers);
     }
 
     private getJsonBody(body: {}|FormData) {
@@ -56,7 +67,13 @@ class HttpClient implements IHttpClient {
                 return httpResponse;
             });
         });
-        return Observable.fromPromise(promise);
+
+        {{^useRxJS6}}
+            return Observable.fromPromise(promise);
+        {{/useRxJS6}}
+        {{#useRxJS6}}
+            return from(promise);
+        {{/useRxJS6}}
     }
 }
 
diff --git a/modules/openapi-generator/src/main/resources/typescript-inversify/IHttpClient.mustache b/modules/openapi-generator/src/main/resources/typescript-inversify/IHttpClient.mustache
index 22d9e07c903..5272d254ec3 100644
--- a/modules/openapi-generator/src/main/resources/typescript-inversify/IHttpClient.mustache
+++ b/modules/openapi-generator/src/main/resources/typescript-inversify/IHttpClient.mustache
@@ -1,4 +1,9 @@
-import { Observable } from "rxjs/Observable";
+{{^useRxJS6}}
+import { Observable } from 'rxjs/Observable';
+{{/useRxJS6}}
+{{#useRxJS6}}
+import { Observable, from } from 'rxjs';
+{{/useRxJS6}}
 import HttpResponse from "./HttpResponse";
 import { Headers } from "./Headers";
 
@@ -6,6 +11,7 @@ interface IHttpClient {
     get(url:string, headers?: Headers):Observable<HttpResponse>
     post(url:string, body:{}|FormData, headers?: Headers):Observable<HttpResponse>
     put(url:string, body:{}, headers?: Headers):Observable<HttpResponse>
+    patch(url:string, body:{}, headers?: Headers):Observable<HttpResponse>
     delete(url:string, headers?: Headers):Observable<HttpResponse>
 }
 
-- 
GitLab


From ee663f317465c151931150df7d003f3d49d5d1a7 Mon Sep 17 00:00:00 2001
From: Mario Gualtieri <mario.gualtieri2012@gmail.com>
Date: Thu, 2 May 2019 15:59:43 +0200
Subject: [PATCH 02/10] Add support to rxjs6

---
 .../TypeScriptInversifyClientCodegen.java       |  8 +++++---
 .../typescript-angular/package.mustache         |  7 ++++++-
 .../typescript-inversify/api.service.mustache   | 17 ++++++++++++-----
 .../typescript-inversify/apiInterface.mustache  | 11 +++++++++--
 .../typescript-inversify/package.mustache       |  2 +-
 5 files changed, 33 insertions(+), 12 deletions(-)

diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptInversifyClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptInversifyClientCodegen.java
index 05464d1a1fa..24327c08402 100644
--- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptInversifyClientCodegen.java
+++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptInversifyClientCodegen.java
@@ -23,10 +23,8 @@ import io.swagger.v3.oas.models.media.Schema;
 import io.swagger.v3.parser.util.SchemaTypeUtil;
 import org.openapitools.codegen.*;
 import org.openapitools.codegen.utils.ModelUtils;
-import org.openapitools.codegen.utils.StringUtils;
 
 import java.io.File;
-import java.text.SimpleDateFormat;
 import java.util.*;
 
 import static org.openapitools.codegen.utils.StringUtils.camelize;
@@ -39,6 +37,7 @@ public class TypeScriptInversifyClientCodegen extends AbstractTypeScriptClientCo
     public static final String SNAPSHOT = "snapshot";
     public static final String WITH_INTERFACES = "withInterfaces";
     public static final String USE_PROMISE = "usePromise";
+    public static final String USE_RXJS6 = "useRxJS6";
     public static final String TAGGED_UNIONS = "taggedUnions";
 
     protected String npmVersion = null;
@@ -71,6 +70,9 @@ public class TypeScriptInversifyClientCodegen extends AbstractTypeScriptClientCo
         this.cliOptions.add(new CliOption(USE_PROMISE,
                 "Setting this property to use promise instead of observable inside every service.",
                 SchemaTypeUtil.BOOLEAN_TYPE).defaultValue(Boolean.FALSE.toString()));
+        this.cliOptions.add(new CliOption(USE_RXJS6,
+                "Setting this property to use rxjs 6 instead of rxjs 5.",
+                SchemaTypeUtil.BOOLEAN_TYPE).defaultValue(Boolean.FALSE.toString()));
         this.cliOptions.add(new CliOption(TAGGED_UNIONS,
                 "Use discriminators to create tagged unions instead of extending interfaces.",
                 SchemaTypeUtil.BOOLEAN_TYPE).defaultValue(Boolean.FALSE.toString()));
@@ -95,7 +97,7 @@ public class TypeScriptInversifyClientCodegen extends AbstractTypeScriptClientCo
     @Override
     public void processOpts() {
         super.processOpts();
-        // HttpClient
+        // HttpCliens
         supportingFiles.add(new SupportingFile("IHttpClient.mustache", getIndexDirectory(), "IHttpClient.ts"));
         supportingFiles.add(new SupportingFile("IAPIConfiguration.mustache", getIndexDirectory(), "IAPIConfiguration.ts"));
         supportingFiles.add(new SupportingFile("HttpClient.mustache", getIndexDirectory(), "HttpClient.ts"));
diff --git a/modules/openapi-generator/src/main/resources/typescript-angular/package.mustache b/modules/openapi-generator/src/main/resources/typescript-angular/package.mustache
index 0caee1c44c0..c5c47b61dde 100644
--- a/modules/openapi-generator/src/main/resources/typescript-angular/package.mustache
+++ b/modules/openapi-generator/src/main/resources/typescript-angular/package.mustache
@@ -28,7 +28,12 @@
     "@angular/compiler": "^{{ngVersion}}",
     "core-js": "^2.4.0",
     "reflect-metadata": "^0.1.3",
-    "rxjs": "^{{rxjsVersion}}"
+    {{^useRxJS6}}
+    "rxjs": "^6.0.0"
+    {{/useRxJS6}}
+    {{#useRxJS6}}
+    "rxjs": "^5.0.0"
+    {{/useRxJS6}}
   },
   "devDependencies": {
     "@angular/common": "^{{ngVersion}}",
diff --git a/modules/openapi-generator/src/main/resources/typescript-inversify/api.service.mustache b/modules/openapi-generator/src/main/resources/typescript-inversify/api.service.mustache
index 703a3d0573a..f627c6cb82e 100644
--- a/modules/openapi-generator/src/main/resources/typescript-inversify/api.service.mustache
+++ b/modules/openapi-generator/src/main/resources/typescript-inversify/api.service.mustache
@@ -1,9 +1,14 @@
 {{>licenseInfo}}
 /* tslint:disable:no-unused-variable member-ordering */
 
-import { Observable } from "rxjs/Observable";
-import 'rxjs/add/operator/map';
-import 'rxjs/add/operator/toPromise';
+{{^useRxJS6}}
+import { Observable } from 'rxjs/Observable';
+{{/useRxJS6}}
+{{#useRxJS6}}
+import { Observable } from 'rxjs';
+{{/useRxJS6}}
+
+import { map } from 'rxjs/operators';
 import IHttpClient from "../IHttpClient";
 import { inject, injectable } from "inversify";
 import { IAPIConfiguration } from "../IAPIConfiguration";
@@ -16,7 +21,7 @@ import { {{classname}} } from '../{{filename}}';
 
 import { COLLECTION_FORMATS }  from '../variables';
 {{#withInterfaces}}
-import { {{classname}}Interface }  from './{{classname}}Interface';
+import { {{classname}}Interface }  from './{{classFilename}}Interface';
 {{/withInterfaces}}
 
 {{#operations}}
@@ -171,7 +176,9 @@ export class {{classname}} {
 {{/hasFormParams}}
         const response: Observable<HttpResponse<{{#returnType}}{{{returnType}}}{{#isResponseTypeFile}}|undefined{{/isResponseTypeFile}}{{/returnType}}{{^returnType}}any{{/returnType}}>> = this.httpClient.{{httpMethod}}(`${this.basePath}{{{path}}}{{#hasQueryParams}}?${queryParameters.join('&')}{{/hasQueryParams}}`{{#bodyParam}}, {{paramName}} {{/bodyParam}}{{#hasFormParams}}, body{{/hasFormParams}}, headers);
         if (observe == 'body') {
-               return response.map(httpResponse => <{{#returnType}}{{{returnType}}}{{#isResponseTypeFile}}|undefined{{/isResponseTypeFile}}{{/returnType}}{{^returnType}}any{{/returnType}}>(httpResponse.response)){{#usePromise}}.toPromise(){{/usePromise}};
+               return response.pipe(
+                   map(httpResponse => <{{#returnType}}{{{returnType}}}{{#isResponseTypeFile}}|undefined{{/isResponseTypeFile}}{{/returnType}}{{^returnType}}any{{/returnType}}>(httpResponse.response))
+               ){{#usePromise}}.toPromise(){{/usePromise}};
         }
         return response{{#usePromise}}.toPromise(){{/usePromise}};
     }
diff --git a/modules/openapi-generator/src/main/resources/typescript-inversify/apiInterface.mustache b/modules/openapi-generator/src/main/resources/typescript-inversify/apiInterface.mustache
index cb31c6396b9..0412fc3d518 100644
--- a/modules/openapi-generator/src/main/resources/typescript-inversify/apiInterface.mustache
+++ b/modules/openapi-generator/src/main/resources/typescript-inversify/apiInterface.mustache
@@ -1,7 +1,14 @@
 {{>licenseInfo}}
 import { Headers } from "../Headers";
-import { Observable } from "rxjs/Observable";
-import * as models from "../model/models";
+{{^useRxJS6}}
+import { Observable } from 'rxjs/Observable';
+{{/useRxJS6}}
+{{#useRxJS6}}
+import { Observable } from 'rxjs';
+{{/useRxJS6}}
+{{#imports}}
+import { {{classname}} } from '../{{filename}}';
+{{/imports}}
 import HttpResponse from "../HttpResponse";
 
 {{#operations}}
diff --git a/modules/openapi-generator/src/main/resources/typescript-inversify/package.mustache b/modules/openapi-generator/src/main/resources/typescript-inversify/package.mustache
index 9f60773c2f0..637445a7185 100644
--- a/modules/openapi-generator/src/main/resources/typescript-inversify/package.mustache
+++ b/modules/openapi-generator/src/main/resources/typescript-inversify/package.mustache
@@ -16,7 +16,7 @@
   },
   "dependencies": {
     "inversify": "^4.3.0",
-    "rxjs": "~5.5.7",
+    "rxjs": "^6.0.0",
     "whatwg-fetch": "~2.0.1",
     "reflect-metadata": "0.1.8"
   },
-- 
GitLab


From 7d3f2c656cb5f1e77ffe0038d034e956b17311f6 Mon Sep 17 00:00:00 2001
From: Mario Gualtieri <mario.gualtieri2012@gmail.com>
Date: Thu, 2 May 2019 16:00:04 +0200
Subject: [PATCH 03/10] Align sample

---
 .../typescript-inversify/HttpClient.ts        | 21 ++++++----
 .../typescript-inversify/IHttpClient.ts       |  3 +-
 .../typescript-inversify/api/pet.service.ts   | 38 +++++++++++++------
 .../typescript-inversify/api/store.service.ts | 22 +++++++----
 .../typescript-inversify/api/user.service.ts  | 38 +++++++++++++------
 5 files changed, 85 insertions(+), 37 deletions(-)

diff --git a/samples/client/petstore/typescript-inversify/HttpClient.ts b/samples/client/petstore/typescript-inversify/HttpClient.ts
index 64fe12a3045..0e8e3763590 100644
--- a/samples/client/petstore/typescript-inversify/HttpClient.ts
+++ b/samples/client/petstore/typescript-inversify/HttpClient.ts
@@ -1,28 +1,34 @@
 import IHttpClient from "./IHttpClient";
-import { Observable } from "rxjs/Observable";
+
+import { Observable } from 'rxjs/Observable';
+
 import "whatwg-fetch";
 import HttpResponse from "./HttpResponse";
 import {injectable} from "inversify";
-import "rxjs/add/observable/fromPromise";
 import { Headers } from "./Headers";
 
 @injectable()
 class HttpClient implements IHttpClient {
 
     get(url:string, headers?: Headers):Observable<HttpResponse> {
-        return this.performNetworkCall(url, "get", undefined, headers);
+        return this.performNetworkCall(url, "GET", undefined, headers);
     }
 
     post(url: string, body: {}|FormData, headers?: Headers): Observable<HttpResponse> {
-        return this.performNetworkCall(url, "post", this.getJsonBody(body), this.addJsonHeaders(headers));
+        return this.performNetworkCall(url, "POST", this.getJsonBody(body), this.addJsonHeaders(headers));
     }
 
     put(url: string, body: {}, headers?: Headers): Observable<HttpResponse> {
-        return this.performNetworkCall(url, "put", this.getJsonBody(body), this.addJsonHeaders(headers));
+        return this.performNetworkCall(url, "PUT", this.getJsonBody(body), this.addJsonHeaders(headers));
+    }
+
+    patch(url: string, body: {}, headers?: Headers): Observable<HttpResponse> {
+        return this.performNetworkCall(url, "PATCH", this.getJsonBody(body), this.addJsonHeaders(headers));
     }
 
+
     delete(url: string, headers?: Headers): Observable<HttpResponse> {
-        return this.performNetworkCall(url, "delete", undefined, headers);
+        return this.performNetworkCall(url, "DELETE", undefined, headers);
     }
 
     private getJsonBody(body: {}|FormData) {
@@ -56,7 +62,8 @@ class HttpClient implements IHttpClient {
                 return httpResponse;
             });
         });
-        return Observable.fromPromise(promise);
+
+            return Observable.fromPromise(promise);
     }
 }
 
diff --git a/samples/client/petstore/typescript-inversify/IHttpClient.ts b/samples/client/petstore/typescript-inversify/IHttpClient.ts
index 22d9e07c903..b81c80a92a1 100644
--- a/samples/client/petstore/typescript-inversify/IHttpClient.ts
+++ b/samples/client/petstore/typescript-inversify/IHttpClient.ts
@@ -1,4 +1,4 @@
-import { Observable } from "rxjs/Observable";
+import { Observable } from 'rxjs/Observable';
 import HttpResponse from "./HttpResponse";
 import { Headers } from "./Headers";
 
@@ -6,6 +6,7 @@ interface IHttpClient {
     get(url:string, headers?: Headers):Observable<HttpResponse>
     post(url:string, body:{}|FormData, headers?: Headers):Observable<HttpResponse>
     put(url:string, body:{}, headers?: Headers):Observable<HttpResponse>
+    patch(url:string, body:{}, headers?: Headers):Observable<HttpResponse>
     delete(url:string, headers?: Headers):Observable<HttpResponse>
 }
 
diff --git a/samples/client/petstore/typescript-inversify/api/pet.service.ts b/samples/client/petstore/typescript-inversify/api/pet.service.ts
index b0df73b34e0..d4cdb729de0 100644
--- a/samples/client/petstore/typescript-inversify/api/pet.service.ts
+++ b/samples/client/petstore/typescript-inversify/api/pet.service.ts
@@ -11,9 +11,9 @@
  */
 /* tslint:disable:no-unused-variable member-ordering */
 
-import { Observable } from "rxjs/Observable";
-import 'rxjs/add/operator/map';
-import 'rxjs/add/operator/toPromise';
+import { Observable } from 'rxjs/Observable';
+
+import { map } from 'rxjs/operators';
 import IHttpClient from "../IHttpClient";
 import { inject, injectable } from "inversify";
 import { IAPIConfiguration } from "../IAPIConfiguration";
@@ -62,7 +62,9 @@ export class PetService {
 
         const response: Observable<HttpResponse<any>> = this.httpClient.post(`${this.basePath}/pet`, body , headers);
         if (observe == 'body') {
-               return response.map(httpResponse => <any>(httpResponse.response));
+               return response.pipe(
+                   map(httpResponse => <any>(httpResponse.response))
+               );
         }
         return response;
     }
@@ -97,7 +99,9 @@ export class PetService {
 
         const response: Observable<HttpResponse<any>> = this.httpClient.delete(`${this.basePath}/pet/${encodeURIComponent(String(petId))}`, headers);
         if (observe == 'body') {
-               return response.map(httpResponse => <any>(httpResponse.response));
+               return response.pipe(
+                   map(httpResponse => <any>(httpResponse.response))
+               );
         }
         return response;
     }
@@ -132,7 +136,9 @@ export class PetService {
 
         const response: Observable<HttpResponse<Array<Pet>>> = this.httpClient.get(`${this.basePath}/pet/findByStatus?${queryParameters.join('&')}`, headers);
         if (observe == 'body') {
-               return response.map(httpResponse => <Array<Pet>>(httpResponse.response));
+               return response.pipe(
+                   map(httpResponse => <Array<Pet>>(httpResponse.response))
+               );
         }
         return response;
     }
@@ -167,7 +173,9 @@ export class PetService {
 
         const response: Observable<HttpResponse<Array<Pet>>> = this.httpClient.get(`${this.basePath}/pet/findByTags?${queryParameters.join('&')}`, headers);
         if (observe == 'body') {
-               return response.map(httpResponse => <Array<Pet>>(httpResponse.response));
+               return response.pipe(
+                   map(httpResponse => <Array<Pet>>(httpResponse.response))
+               );
         }
         return response;
     }
@@ -194,7 +202,9 @@ export class PetService {
 
         const response: Observable<HttpResponse<Pet>> = this.httpClient.get(`${this.basePath}/pet/${encodeURIComponent(String(petId))}`, headers);
         if (observe == 'body') {
-               return response.map(httpResponse => <Pet>(httpResponse.response));
+               return response.pipe(
+                   map(httpResponse => <Pet>(httpResponse.response))
+               );
         }
         return response;
     }
@@ -225,7 +235,9 @@ export class PetService {
 
         const response: Observable<HttpResponse<any>> = this.httpClient.put(`${this.basePath}/pet`, body , headers);
         if (observe == 'body') {
-               return response.map(httpResponse => <any>(httpResponse.response));
+               return response.pipe(
+                   map(httpResponse => <any>(httpResponse.response))
+               );
         }
         return response;
     }
@@ -266,7 +278,9 @@ export class PetService {
 
         const response: Observable<HttpResponse<any>> = this.httpClient.post(`${this.basePath}/pet/${encodeURIComponent(String(petId))}`, body, headers);
         if (observe == 'body') {
-               return response.map(httpResponse => <any>(httpResponse.response));
+               return response.pipe(
+                   map(httpResponse => <any>(httpResponse.response))
+               );
         }
         return response;
     }
@@ -307,7 +321,9 @@ export class PetService {
 
         const response: Observable<HttpResponse<ApiResponse>> = this.httpClient.post(`${this.basePath}/pet/${encodeURIComponent(String(petId))}/uploadImage`, body, headers);
         if (observe == 'body') {
-               return response.map(httpResponse => <ApiResponse>(httpResponse.response));
+               return response.pipe(
+                   map(httpResponse => <ApiResponse>(httpResponse.response))
+               );
         }
         return response;
     }
diff --git a/samples/client/petstore/typescript-inversify/api/store.service.ts b/samples/client/petstore/typescript-inversify/api/store.service.ts
index f4c204db479..f2c581d13e9 100644
--- a/samples/client/petstore/typescript-inversify/api/store.service.ts
+++ b/samples/client/petstore/typescript-inversify/api/store.service.ts
@@ -11,9 +11,9 @@
  */
 /* tslint:disable:no-unused-variable member-ordering */
 
-import { Observable } from "rxjs/Observable";
-import 'rxjs/add/operator/map';
-import 'rxjs/add/operator/toPromise';
+import { Observable } from 'rxjs/Observable';
+
+import { map } from 'rxjs/operators';
 import IHttpClient from "../IHttpClient";
 import { inject, injectable } from "inversify";
 import { IAPIConfiguration } from "../IAPIConfiguration";
@@ -53,7 +53,9 @@ export class StoreService {
 
         const response: Observable<HttpResponse<any>> = this.httpClient.delete(`${this.basePath}/store/order/${encodeURIComponent(String(orderId))}`, headers);
         if (observe == 'body') {
-               return response.map(httpResponse => <any>(httpResponse.response));
+               return response.pipe(
+                   map(httpResponse => <any>(httpResponse.response))
+               );
         }
         return response;
     }
@@ -75,7 +77,9 @@ export class StoreService {
 
         const response: Observable<HttpResponse<{ [key: string]: number; }>> = this.httpClient.get(`${this.basePath}/store/inventory`, headers);
         if (observe == 'body') {
-               return response.map(httpResponse => <{ [key: string]: number; }>(httpResponse.response));
+               return response.pipe(
+                   map(httpResponse => <{ [key: string]: number; }>(httpResponse.response))
+               );
         }
         return response;
     }
@@ -98,7 +102,9 @@ export class StoreService {
 
         const response: Observable<HttpResponse<Order>> = this.httpClient.get(`${this.basePath}/store/order/${encodeURIComponent(String(orderId))}`, headers);
         if (observe == 'body') {
-               return response.map(httpResponse => <Order>(httpResponse.response));
+               return response.pipe(
+                   map(httpResponse => <Order>(httpResponse.response))
+               );
         }
         return response;
     }
@@ -122,7 +128,9 @@ export class StoreService {
 
         const response: Observable<HttpResponse<Order>> = this.httpClient.post(`${this.basePath}/store/order`, body , headers);
         if (observe == 'body') {
-               return response.map(httpResponse => <Order>(httpResponse.response));
+               return response.pipe(
+                   map(httpResponse => <Order>(httpResponse.response))
+               );
         }
         return response;
     }
diff --git a/samples/client/petstore/typescript-inversify/api/user.service.ts b/samples/client/petstore/typescript-inversify/api/user.service.ts
index 45e10dece9c..2a5d2dcc7bc 100644
--- a/samples/client/petstore/typescript-inversify/api/user.service.ts
+++ b/samples/client/petstore/typescript-inversify/api/user.service.ts
@@ -11,9 +11,9 @@
  */
 /* tslint:disable:no-unused-variable member-ordering */
 
-import { Observable } from "rxjs/Observable";
-import 'rxjs/add/operator/map';
-import 'rxjs/add/operator/toPromise';
+import { Observable } from 'rxjs/Observable';
+
+import { map } from 'rxjs/operators';
 import IHttpClient from "../IHttpClient";
 import { inject, injectable } from "inversify";
 import { IAPIConfiguration } from "../IAPIConfiguration";
@@ -54,7 +54,9 @@ export class UserService {
 
         const response: Observable<HttpResponse<any>> = this.httpClient.post(`${this.basePath}/user`, body , headers);
         if (observe == 'body') {
-               return response.map(httpResponse => <any>(httpResponse.response));
+               return response.pipe(
+                   map(httpResponse => <any>(httpResponse.response))
+               );
         }
         return response;
     }
@@ -78,7 +80,9 @@ export class UserService {
 
         const response: Observable<HttpResponse<any>> = this.httpClient.post(`${this.basePath}/user/createWithArray`, body , headers);
         if (observe == 'body') {
-               return response.map(httpResponse => <any>(httpResponse.response));
+               return response.pipe(
+                   map(httpResponse => <any>(httpResponse.response))
+               );
         }
         return response;
     }
@@ -102,7 +106,9 @@ export class UserService {
 
         const response: Observable<HttpResponse<any>> = this.httpClient.post(`${this.basePath}/user/createWithList`, body , headers);
         if (observe == 'body') {
-               return response.map(httpResponse => <any>(httpResponse.response));
+               return response.pipe(
+                   map(httpResponse => <any>(httpResponse.response))
+               );
         }
         return response;
     }
@@ -125,7 +131,9 @@ export class UserService {
 
         const response: Observable<HttpResponse<any>> = this.httpClient.delete(`${this.basePath}/user/${encodeURIComponent(String(username))}`, headers);
         if (observe == 'body') {
-               return response.map(httpResponse => <any>(httpResponse.response));
+               return response.pipe(
+                   map(httpResponse => <any>(httpResponse.response))
+               );
         }
         return response;
     }
@@ -148,7 +156,9 @@ export class UserService {
 
         const response: Observable<HttpResponse<User>> = this.httpClient.get(`${this.basePath}/user/${encodeURIComponent(String(username))}`, headers);
         if (observe == 'body') {
-               return response.map(httpResponse => <User>(httpResponse.response));
+               return response.pipe(
+                   map(httpResponse => <User>(httpResponse.response))
+               );
         }
         return response;
     }
@@ -184,7 +194,9 @@ export class UserService {
 
         const response: Observable<HttpResponse<string>> = this.httpClient.get(`${this.basePath}/user/login?${queryParameters.join('&')}`, headers);
         if (observe == 'body') {
-               return response.map(httpResponse => <string>(httpResponse.response));
+               return response.pipe(
+                   map(httpResponse => <string>(httpResponse.response))
+               );
         }
         return response;
     }
@@ -202,7 +214,9 @@ export class UserService {
 
         const response: Observable<HttpResponse<any>> = this.httpClient.get(`${this.basePath}/user/logout`, headers);
         if (observe == 'body') {
-               return response.map(httpResponse => <any>(httpResponse.response));
+               return response.pipe(
+                   map(httpResponse => <any>(httpResponse.response))
+               );
         }
         return response;
     }
@@ -231,7 +245,9 @@ export class UserService {
 
         const response: Observable<HttpResponse<any>> = this.httpClient.put(`${this.basePath}/user/${encodeURIComponent(String(username))}`, body , headers);
         if (observe == 'body') {
-               return response.map(httpResponse => <any>(httpResponse.response));
+               return response.pipe(
+                   map(httpResponse => <any>(httpResponse.response))
+               );
         }
         return response;
     }
-- 
GitLab


From d2062a4900eb82cad578ed7c759ba1dc4608408d Mon Sep 17 00:00:00 2001
From: Mario Gualtieri <mario.gualtieri2012@gmail.com>
Date: Thu, 2 May 2019 16:03:19 +0200
Subject: [PATCH 04/10] Add sample for openapi3

---
 .../typescript-inversify/api/pet.service.ts   | 38 +++++++-----
 .../typescript-inversify/api/store.service.ts | 14 ++---
 .../typescript-inversify/api/user.service.ts  | 62 ++++++++++---------
 .../model/inlineObject.ts                     | 23 +++++++
 .../model/inlineObject1.ts                    | 23 +++++++
 5 files changed, 108 insertions(+), 52 deletions(-)
 create mode 100644 samples/client/petstore/typescript-inversify/model/inlineObject.ts
 create mode 100644 samples/client/petstore/typescript-inversify/model/inlineObject1.ts

diff --git a/samples/client/petstore/typescript-inversify/api/pet.service.ts b/samples/client/petstore/typescript-inversify/api/pet.service.ts
index d4cdb729de0..9be28b6565e 100644
--- a/samples/client/petstore/typescript-inversify/api/pet.service.ts
+++ b/samples/client/petstore/typescript-inversify/api/pet.service.ts
@@ -40,14 +40,14 @@ export class PetService {
     /**
      * Add a new pet to the store
      * 
-     * @param body Pet object that needs to be added to the store
+     * @param pet Pet object that needs to be added to the store
      
      */
-    public addPet(body: Pet, observe?: 'body', headers?: Headers): Observable<any>;
-    public addPet(body: Pet, observe?: 'response', headers?: Headers): Observable<HttpResponse<any>>;
-    public addPet(body: Pet, observe: any = 'body', headers: Headers = {}): Observable<any> {
-        if (!body){
-            throw new Error('Required parameter body was null or undefined when calling addPet.');
+    public addPet(pet: Pet, observe?: 'body', headers?: Headers): Observable<any>;
+    public addPet(pet: Pet, observe?: 'response', headers?: Headers): Observable<HttpResponse<any>>;
+    public addPet(pet: Pet, observe: any = 'body', headers: Headers = {}): Observable<any> {
+        if (!pet){
+            throw new Error('Required parameter pet was null or undefined when calling addPet.');
         }
 
         // authentication (petstore_auth) required
@@ -60,7 +60,7 @@ export class PetService {
         headers['Accept'] = 'application/json';
         headers['Content-Type'] = 'application/json';
 
-        const response: Observable<HttpResponse<any>> = this.httpClient.post(`${this.basePath}/pet`, body , headers);
+        const response: Observable<HttpResponse<any>> = this.httpClient.post(`${this.basePath}/pet`, pet , headers);
         if (observe == 'body') {
                return response.pipe(
                    map(httpResponse => <any>(httpResponse.response))
@@ -148,11 +148,12 @@ export class PetService {
      * Finds Pets by tags
      * Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing.
      * @param tags Tags to filter by
+     * @param maxCount Maximum number of items to return
      
      */
-    public findPetsByTags(tags: Array<string>, observe?: 'body', headers?: Headers): Observable<Array<Pet>>;
-    public findPetsByTags(tags: Array<string>, observe?: 'response', headers?: Headers): Observable<HttpResponse<Array<Pet>>>;
-    public findPetsByTags(tags: Array<string>, observe: any = 'body', headers: Headers = {}): Observable<any> {
+    public findPetsByTags(tags: Array<string>, maxCount?: number, observe?: 'body', headers?: Headers): Observable<Array<Pet>>;
+    public findPetsByTags(tags: Array<string>, maxCount?: number, observe?: 'response', headers?: Headers): Observable<HttpResponse<Array<Pet>>>;
+    public findPetsByTags(tags: Array<string>, maxCount?: number, observe: any = 'body', headers: Headers = {}): Observable<any> {
         if (!tags){
             throw new Error('Required parameter tags was null or undefined when calling findPetsByTags.');
         }
@@ -161,6 +162,9 @@ export class PetService {
         if (tags) {
             queryParameters.push("tags="+encodeURIComponent(tags.join(COLLECTION_FORMATS['csv'])));
         }
+        if (maxCount !== undefined) {
+            queryParameters.push("maxCount="+encodeURIComponent(String(maxCount)));
+        }
 
         // authentication (petstore_auth) required
         if (this.APIConfiguration.accessToken) {
@@ -213,14 +217,14 @@ export class PetService {
     /**
      * Update an existing pet
      * 
-     * @param body Pet object that needs to be added to the store
+     * @param pet Pet object that needs to be added to the store
      
      */
-    public updatePet(body: Pet, observe?: 'body', headers?: Headers): Observable<any>;
-    public updatePet(body: Pet, observe?: 'response', headers?: Headers): Observable<HttpResponse<any>>;
-    public updatePet(body: Pet, observe: any = 'body', headers: Headers = {}): Observable<any> {
-        if (!body){
-            throw new Error('Required parameter body was null or undefined when calling updatePet.');
+    public updatePet(pet: Pet, observe?: 'body', headers?: Headers): Observable<any>;
+    public updatePet(pet: Pet, observe?: 'response', headers?: Headers): Observable<HttpResponse<any>>;
+    public updatePet(pet: Pet, observe: any = 'body', headers: Headers = {}): Observable<any> {
+        if (!pet){
+            throw new Error('Required parameter pet was null or undefined when calling updatePet.');
         }
 
         // authentication (petstore_auth) required
@@ -233,7 +237,7 @@ export class PetService {
         headers['Accept'] = 'application/json';
         headers['Content-Type'] = 'application/json';
 
-        const response: Observable<HttpResponse<any>> = this.httpClient.put(`${this.basePath}/pet`, body , headers);
+        const response: Observable<HttpResponse<any>> = this.httpClient.put(`${this.basePath}/pet`, pet , headers);
         if (observe == 'body') {
                return response.pipe(
                    map(httpResponse => <any>(httpResponse.response))
diff --git a/samples/client/petstore/typescript-inversify/api/store.service.ts b/samples/client/petstore/typescript-inversify/api/store.service.ts
index f2c581d13e9..407a8b99966 100644
--- a/samples/client/petstore/typescript-inversify/api/store.service.ts
+++ b/samples/client/petstore/typescript-inversify/api/store.service.ts
@@ -113,20 +113,20 @@ export class StoreService {
     /**
      * Place an order for a pet
      * 
-     * @param body order placed for purchasing the pet
+     * @param order order placed for purchasing the pet
      
      */
-    public placeOrder(body: Order, observe?: 'body', headers?: Headers): Observable<Order>;
-    public placeOrder(body: Order, observe?: 'response', headers?: Headers): Observable<HttpResponse<Order>>;
-    public placeOrder(body: Order, observe: any = 'body', headers: Headers = {}): Observable<any> {
-        if (!body){
-            throw new Error('Required parameter body was null or undefined when calling placeOrder.');
+    public placeOrder(order: Order, observe?: 'body', headers?: Headers): Observable<Order>;
+    public placeOrder(order: Order, observe?: 'response', headers?: Headers): Observable<HttpResponse<Order>>;
+    public placeOrder(order: Order, observe: any = 'body', headers: Headers = {}): Observable<any> {
+        if (!order){
+            throw new Error('Required parameter order was null or undefined when calling placeOrder.');
         }
 
         headers['Accept'] = 'application/xml';
         headers['Content-Type'] = 'application/json';
 
-        const response: Observable<HttpResponse<Order>> = this.httpClient.post(`${this.basePath}/store/order`, body , headers);
+        const response: Observable<HttpResponse<Order>> = this.httpClient.post(`${this.basePath}/store/order`, order , headers);
         if (observe == 'body') {
                return response.pipe(
                    map(httpResponse => <Order>(httpResponse.response))
diff --git a/samples/client/petstore/typescript-inversify/api/user.service.ts b/samples/client/petstore/typescript-inversify/api/user.service.ts
index 2a5d2dcc7bc..934b5e015d9 100644
--- a/samples/client/petstore/typescript-inversify/api/user.service.ts
+++ b/samples/client/petstore/typescript-inversify/api/user.service.ts
@@ -39,20 +39,21 @@ export class UserService {
     /**
      * Create user
      * This can only be done by the logged in user.
-     * @param body Created user object
+     * @param user Created user object
      
      */
-    public createUser(body: User, observe?: 'body', headers?: Headers): Observable<any>;
-    public createUser(body: User, observe?: 'response', headers?: Headers): Observable<HttpResponse<any>>;
-    public createUser(body: User, observe: any = 'body', headers: Headers = {}): Observable<any> {
-        if (!body){
-            throw new Error('Required parameter body was null or undefined when calling createUser.');
+    public createUser(user: User, observe?: 'body', headers?: Headers): Observable<any>;
+    public createUser(user: User, observe?: 'response', headers?: Headers): Observable<HttpResponse<any>>;
+    public createUser(user: User, observe: any = 'body', headers: Headers = {}): Observable<any> {
+        if (!user){
+            throw new Error('Required parameter user was null or undefined when calling createUser.');
         }
 
+        // authentication (auth_cookie) required
         headers['Accept'] = 'application/json';
         headers['Content-Type'] = 'application/json';
 
-        const response: Observable<HttpResponse<any>> = this.httpClient.post(`${this.basePath}/user`, body , headers);
+        const response: Observable<HttpResponse<any>> = this.httpClient.post(`${this.basePath}/user`, user , headers);
         if (observe == 'body') {
                return response.pipe(
                    map(httpResponse => <any>(httpResponse.response))
@@ -65,20 +66,21 @@ export class UserService {
     /**
      * Creates list of users with given input array
      * 
-     * @param body List of user object
+     * @param user List of user object
      
      */
-    public createUsersWithArrayInput(body: Array<User>, observe?: 'body', headers?: Headers): Observable<any>;
-    public createUsersWithArrayInput(body: Array<User>, observe?: 'response', headers?: Headers): Observable<HttpResponse<any>>;
-    public createUsersWithArrayInput(body: Array<User>, observe: any = 'body', headers: Headers = {}): Observable<any> {
-        if (!body){
-            throw new Error('Required parameter body was null or undefined when calling createUsersWithArrayInput.');
+    public createUsersWithArrayInput(user: Array<User>, observe?: 'body', headers?: Headers): Observable<any>;
+    public createUsersWithArrayInput(user: Array<User>, observe?: 'response', headers?: Headers): Observable<HttpResponse<any>>;
+    public createUsersWithArrayInput(user: Array<User>, observe: any = 'body', headers: Headers = {}): Observable<any> {
+        if (!user){
+            throw new Error('Required parameter user was null or undefined when calling createUsersWithArrayInput.');
         }
 
+        // authentication (auth_cookie) required
         headers['Accept'] = 'application/json';
         headers['Content-Type'] = 'application/json';
 
-        const response: Observable<HttpResponse<any>> = this.httpClient.post(`${this.basePath}/user/createWithArray`, body , headers);
+        const response: Observable<HttpResponse<any>> = this.httpClient.post(`${this.basePath}/user/createWithArray`, user , headers);
         if (observe == 'body') {
                return response.pipe(
                    map(httpResponse => <any>(httpResponse.response))
@@ -91,20 +93,21 @@ export class UserService {
     /**
      * Creates list of users with given input array
      * 
-     * @param body List of user object
+     * @param user List of user object
      
      */
-    public createUsersWithListInput(body: Array<User>, observe?: 'body', headers?: Headers): Observable<any>;
-    public createUsersWithListInput(body: Array<User>, observe?: 'response', headers?: Headers): Observable<HttpResponse<any>>;
-    public createUsersWithListInput(body: Array<User>, observe: any = 'body', headers: Headers = {}): Observable<any> {
-        if (!body){
-            throw new Error('Required parameter body was null or undefined when calling createUsersWithListInput.');
+    public createUsersWithListInput(user: Array<User>, observe?: 'body', headers?: Headers): Observable<any>;
+    public createUsersWithListInput(user: Array<User>, observe?: 'response', headers?: Headers): Observable<HttpResponse<any>>;
+    public createUsersWithListInput(user: Array<User>, observe: any = 'body', headers: Headers = {}): Observable<any> {
+        if (!user){
+            throw new Error('Required parameter user was null or undefined when calling createUsersWithListInput.');
         }
 
+        // authentication (auth_cookie) required
         headers['Accept'] = 'application/json';
         headers['Content-Type'] = 'application/json';
 
-        const response: Observable<HttpResponse<any>> = this.httpClient.post(`${this.basePath}/user/createWithList`, body , headers);
+        const response: Observable<HttpResponse<any>> = this.httpClient.post(`${this.basePath}/user/createWithList`, user , headers);
         if (observe == 'body') {
                return response.pipe(
                    map(httpResponse => <any>(httpResponse.response))
@@ -127,6 +130,7 @@ export class UserService {
             throw new Error('Required parameter username was null or undefined when calling deleteUser.');
         }
 
+        // authentication (auth_cookie) required
         headers['Accept'] = 'application/json';
 
         const response: Observable<HttpResponse<any>> = this.httpClient.delete(`${this.basePath}/user/${encodeURIComponent(String(username))}`, headers);
@@ -210,6 +214,7 @@ export class UserService {
     public logoutUser(observe?: 'body', headers?: Headers): Observable<any>;
     public logoutUser(observe?: 'response', headers?: Headers): Observable<HttpResponse<any>>;
     public logoutUser(observe: any = 'body', headers: Headers = {}): Observable<any> {
+        // authentication (auth_cookie) required
         headers['Accept'] = 'application/json';
 
         const response: Observable<HttpResponse<any>> = this.httpClient.get(`${this.basePath}/user/logout`, headers);
@@ -226,24 +231,25 @@ export class UserService {
      * Updated user
      * This can only be done by the logged in user.
      * @param username name that need to be deleted
-     * @param body Updated user object
+     * @param user Updated user object
      
      */
-    public updateUser(username: string, body: User, observe?: 'body', headers?: Headers): Observable<any>;
-    public updateUser(username: string, body: User, observe?: 'response', headers?: Headers): Observable<HttpResponse<any>>;
-    public updateUser(username: string, body: User, observe: any = 'body', headers: Headers = {}): Observable<any> {
+    public updateUser(username: string, user: User, observe?: 'body', headers?: Headers): Observable<any>;
+    public updateUser(username: string, user: User, observe?: 'response', headers?: Headers): Observable<HttpResponse<any>>;
+    public updateUser(username: string, user: User, observe: any = 'body', headers: Headers = {}): Observable<any> {
         if (!username){
             throw new Error('Required parameter username was null or undefined when calling updateUser.');
         }
 
-        if (!body){
-            throw new Error('Required parameter body was null or undefined when calling updateUser.');
+        if (!user){
+            throw new Error('Required parameter user was null or undefined when calling updateUser.');
         }
 
+        // authentication (auth_cookie) required
         headers['Accept'] = 'application/json';
         headers['Content-Type'] = 'application/json';
 
-        const response: Observable<HttpResponse<any>> = this.httpClient.put(`${this.basePath}/user/${encodeURIComponent(String(username))}`, body , headers);
+        const response: Observable<HttpResponse<any>> = this.httpClient.put(`${this.basePath}/user/${encodeURIComponent(String(username))}`, user , headers);
         if (observe == 'body') {
                return response.pipe(
                    map(httpResponse => <any>(httpResponse.response))
diff --git a/samples/client/petstore/typescript-inversify/model/inlineObject.ts b/samples/client/petstore/typescript-inversify/model/inlineObject.ts
new file mode 100644
index 00000000000..7ebc2ff4916
--- /dev/null
+++ b/samples/client/petstore/typescript-inversify/model/inlineObject.ts
@@ -0,0 +1,23 @@
+/**
+ * OpenAPI Petstore
+ * This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters.
+ *
+ * OpenAPI spec version: 1.0.0
+ * 
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+
+export interface InlineObject { 
+    /**
+     * Updated name of the pet
+     */
+    name?: string;
+    /**
+     * Updated status of the pet
+     */
+    status?: string;
+}
diff --git a/samples/client/petstore/typescript-inversify/model/inlineObject1.ts b/samples/client/petstore/typescript-inversify/model/inlineObject1.ts
new file mode 100644
index 00000000000..3f35ccedd9b
--- /dev/null
+++ b/samples/client/petstore/typescript-inversify/model/inlineObject1.ts
@@ -0,0 +1,23 @@
+/**
+ * OpenAPI Petstore
+ * This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters.
+ *
+ * OpenAPI spec version: 1.0.0
+ * 
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+
+export interface InlineObject1 { 
+    /**
+     * Additional data to pass to server
+     */
+    additionalMetadata?: string;
+    /**
+     * file to upload
+     */
+    file?: Blob;
+}
-- 
GitLab


From 50fddc701eabeb3025cc4df25212b9b757caeb40 Mon Sep 17 00:00:00 2001
From: Mario Gualtieri <mario.gualtieri2012@gmail.com>
Date: Thu, 2 May 2019 17:41:18 +0200
Subject: [PATCH 05/10] Change usage of single quote to use only double ones

---
 .../typescript-inversify/HttpClient.mustache         |  4 ++--
 .../typescript-inversify/IHttpClient.mustache        |  4 ++--
 .../typescript-inversify/api.service.mustache        | 12 ++++++------
 .../typescript-inversify/apiInterface.mustache       |  6 +++---
 4 files changed, 13 insertions(+), 13 deletions(-)

diff --git a/modules/openapi-generator/src/main/resources/typescript-inversify/HttpClient.mustache b/modules/openapi-generator/src/main/resources/typescript-inversify/HttpClient.mustache
index 5862c9a3fad..2599345d141 100644
--- a/modules/openapi-generator/src/main/resources/typescript-inversify/HttpClient.mustache
+++ b/modules/openapi-generator/src/main/resources/typescript-inversify/HttpClient.mustache
@@ -1,10 +1,10 @@
 import IHttpClient from "./IHttpClient";
 
 {{^useRxJS6}}
-import { Observable } from 'rxjs/Observable';
+import { Observable } from "rxjs/Observable";
 {{/useRxJS6}}
 {{#useRxJS6}}
-import { Observable, from } from 'rxjs';
+import { Observable, from } from "rxjs";
 {{/useRxJS6}}
 
 import "whatwg-fetch";
diff --git a/modules/openapi-generator/src/main/resources/typescript-inversify/IHttpClient.mustache b/modules/openapi-generator/src/main/resources/typescript-inversify/IHttpClient.mustache
index 5272d254ec3..8f898481903 100644
--- a/modules/openapi-generator/src/main/resources/typescript-inversify/IHttpClient.mustache
+++ b/modules/openapi-generator/src/main/resources/typescript-inversify/IHttpClient.mustache
@@ -1,8 +1,8 @@
 {{^useRxJS6}}
-import { Observable } from 'rxjs/Observable';
+import { Observable } from "rxjs/Observable";
 {{/useRxJS6}}
 {{#useRxJS6}}
-import { Observable, from } from 'rxjs';
+import { Observable, from } from "rxjs";
 {{/useRxJS6}}
 import HttpResponse from "./HttpResponse";
 import { Headers } from "./Headers";
diff --git a/modules/openapi-generator/src/main/resources/typescript-inversify/api.service.mustache b/modules/openapi-generator/src/main/resources/typescript-inversify/api.service.mustache
index f627c6cb82e..547055863b7 100644
--- a/modules/openapi-generator/src/main/resources/typescript-inversify/api.service.mustache
+++ b/modules/openapi-generator/src/main/resources/typescript-inversify/api.service.mustache
@@ -2,13 +2,13 @@
 /* tslint:disable:no-unused-variable member-ordering */
 
 {{^useRxJS6}}
-import { Observable } from 'rxjs/Observable';
+import { Observable } from "rxjs/Observable";
 {{/useRxJS6}}
 {{#useRxJS6}}
-import { Observable } from 'rxjs';
+import { Observable } from "rxjs";
 {{/useRxJS6}}
 
-import { map } from 'rxjs/operators';
+import { map } from "rxjs/operators";
 import IHttpClient from "../IHttpClient";
 import { inject, injectable } from "inversify";
 import { IAPIConfiguration } from "../IAPIConfiguration";
@@ -16,12 +16,12 @@ import { Headers } from "../Headers";
 import HttpResponse from "../HttpResponse";
 
 {{#imports}}
-import { {{classname}} } from '../{{filename}}';
+import { {{classname}} } from "../{{filename}}";
 {{/imports}}
 
-import { COLLECTION_FORMATS }  from '../variables';
+import { COLLECTION_FORMATS }  from "../variables";
 {{#withInterfaces}}
-import { {{classname}}Interface }  from './{{classFilename}}Interface';
+import { {{classname}}Interface }  from "./{{classFilename}}Interface";
 {{/withInterfaces}}
 
 {{#operations}}
diff --git a/modules/openapi-generator/src/main/resources/typescript-inversify/apiInterface.mustache b/modules/openapi-generator/src/main/resources/typescript-inversify/apiInterface.mustache
index 0412fc3d518..f6c4c03e5cc 100644
--- a/modules/openapi-generator/src/main/resources/typescript-inversify/apiInterface.mustache
+++ b/modules/openapi-generator/src/main/resources/typescript-inversify/apiInterface.mustache
@@ -1,13 +1,13 @@
 {{>licenseInfo}}
 import { Headers } from "../Headers";
 {{^useRxJS6}}
-import { Observable } from 'rxjs/Observable';
+import { Observable } from "rxjs/Observable";
 {{/useRxJS6}}
 {{#useRxJS6}}
-import { Observable } from 'rxjs';
+import { Observable } from "rxjs";
 {{/useRxJS6}}
 {{#imports}}
-import { {{classname}} } from '../{{filename}}';
+import { {{classname}} } from "../{{filename}}";
 {{/imports}}
 import HttpResponse from "../HttpResponse";
 
-- 
GitLab


From 84a7f98758f4ea3b924d15cb5bf70ceda6794ff4 Mon Sep 17 00:00:00 2001
From: Mario Gualtieri <mario.gualtieri2012@gmail.com>
Date: Thu, 2 May 2019 17:56:23 +0200
Subject: [PATCH 06/10] Fix wrong changes of typescript-angular package.json
 template

---
 .../main/resources/typescript-angular/package.mustache   | 7 +------
 .../main/resources/typescript-inversify/package.mustache | 9 +++++++--
 2 files changed, 8 insertions(+), 8 deletions(-)

diff --git a/modules/openapi-generator/src/main/resources/typescript-angular/package.mustache b/modules/openapi-generator/src/main/resources/typescript-angular/package.mustache
index c5c47b61dde..0caee1c44c0 100644
--- a/modules/openapi-generator/src/main/resources/typescript-angular/package.mustache
+++ b/modules/openapi-generator/src/main/resources/typescript-angular/package.mustache
@@ -28,12 +28,7 @@
     "@angular/compiler": "^{{ngVersion}}",
     "core-js": "^2.4.0",
     "reflect-metadata": "^0.1.3",
-    {{^useRxJS6}}
-    "rxjs": "^6.0.0"
-    {{/useRxJS6}}
-    {{#useRxJS6}}
-    "rxjs": "^5.0.0"
-    {{/useRxJS6}}
+    "rxjs": "^{{rxjsVersion}}"
   },
   "devDependencies": {
     "@angular/common": "^{{ngVersion}}",
diff --git a/modules/openapi-generator/src/main/resources/typescript-inversify/package.mustache b/modules/openapi-generator/src/main/resources/typescript-inversify/package.mustache
index 637445a7185..78a4c93bab9 100644
--- a/modules/openapi-generator/src/main/resources/typescript-inversify/package.mustache
+++ b/modules/openapi-generator/src/main/resources/typescript-inversify/package.mustache
@@ -16,9 +16,14 @@
   },
   "dependencies": {
     "inversify": "^4.3.0",
-    "rxjs": "^6.0.0",
     "whatwg-fetch": "~2.0.1",
-    "reflect-metadata": "0.1.8"
+    "reflect-metadata": "0.1.8",
+    {{^useRxJS6}}
+    "rxjs": "^6.0.0"
+    {{/useRxJS6}}
+    {{#useRxJS6}}
+    "rxjs": "^5.0.0"
+    {{/useRxJS6}}
   },
   "devDependencies": {
   }{{#npmRepository}},{{/npmRepository}}
-- 
GitLab


From 85d51018f24da6460b90be821db473b68f947c54 Mon Sep 17 00:00:00 2001
From: Mario Gualtieri <mario.gualtieri2012@gmail.com>
Date: Wed, 8 May 2019 11:09:40 +0200
Subject: [PATCH 07/10] Add `map` keyword inside reservedWords

---
 .../codegen/languages/TypeScriptInversifyClientCodegen.java     | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptInversifyClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptInversifyClientCodegen.java
index 24327c08402..4fafaf45845 100644
--- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptInversifyClientCodegen.java
+++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptInversifyClientCodegen.java
@@ -57,6 +57,8 @@ public class TypeScriptInversifyClientCodegen extends AbstractTypeScriptClientCo
         apiPackage = "api";
         modelPackage = "model";
 
+        this.reservedWords.add("map");
+
         this.cliOptions.add(new CliOption(NPM_NAME, "The name under which you want to publish generated npm package"));
         this.cliOptions.add(new CliOption(NPM_VERSION, "The version of your npm package"));
         this.cliOptions.add(new CliOption(NPM_REPOSITORY,
-- 
GitLab


From ed34de6d4413030bb5d6776fc6a60b9e9cbae5d6 Mon Sep 17 00:00:00 2001
From: Mario Gualtieri <mario.gualtieri2012@gmail.com>
Date: Wed, 8 May 2019 15:29:06 +0200
Subject: [PATCH 08/10] Add typescript-inversify inside README

Add typescript-inversify inside README
---
 README.md | 1 +
 1 file changed, 1 insertion(+)

diff --git a/README.md b/README.md
index ac23eef4dd1..99109c3218b 100644
--- a/README.md
+++ b/README.md
@@ -651,6 +651,7 @@ Here is a list of template creators:
    * TypeScript (jQuery): @bherila
    * TypeScript (Node):  @mhardorf
    * TypeScript (Rxjs): @denyo
+   * TypeScript (Inversify): @gualtierim
  * Server Stubs
    * Ada: @stcarrez
    * C# ASP.NET5: @jimschubert [:heart:](https://www.patreon.com/jimschubert)
-- 
GitLab


From fccd02c28fab6b15520bcc0db11d93fad58c6e1a Mon Sep 17 00:00:00 2001
From: William Cheng <wing328hk@gmail.com>
Date: Mon, 20 May 2019 21:08:30 +0800
Subject: [PATCH 09/10] fix merge issue, update petstore

---
 .../TypeScriptInversifyClientCodegen.java     |  2 -
 .../typescript-inversify/HttpClient.ts        |  2 +-
 .../typescript-inversify/IHttpClient.ts       |  2 +-
 .../typescript-inversify/api/pet.service.ts   | 48 ++++++-------
 .../typescript-inversify/api/store.service.ts | 22 +++---
 .../typescript-inversify/api/user.service.ts  | 70 +++++++++----------
 6 files changed, 67 insertions(+), 79 deletions(-)

diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptInversifyClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptInversifyClientCodegen.java
index 4c59b846a3e..1fbe90664df 100644
--- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptInversifyClientCodegen.java
+++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptInversifyClientCodegen.java
@@ -54,8 +54,6 @@ public class TypeScriptInversifyClientCodegen extends AbstractTypeScriptClientCo
 
         this.reservedWords.add("map");
 
-        this.cliOptions.add(new CliOption(NPM_NAME, "The name under which you want to publish generated npm package"));
-        this.cliOptions.add(new CliOption(NPM_VERSION, "The version of your npm package"));
         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,
diff --git a/samples/client/petstore/typescript-inversify/HttpClient.ts b/samples/client/petstore/typescript-inversify/HttpClient.ts
index 0e8e3763590..391f4852977 100644
--- a/samples/client/petstore/typescript-inversify/HttpClient.ts
+++ b/samples/client/petstore/typescript-inversify/HttpClient.ts
@@ -1,6 +1,6 @@
 import IHttpClient from "./IHttpClient";
 
-import { Observable } from 'rxjs/Observable';
+import { Observable } from "rxjs/Observable";
 
 import "whatwg-fetch";
 import HttpResponse from "./HttpResponse";
diff --git a/samples/client/petstore/typescript-inversify/IHttpClient.ts b/samples/client/petstore/typescript-inversify/IHttpClient.ts
index b81c80a92a1..09f8fff96db 100644
--- a/samples/client/petstore/typescript-inversify/IHttpClient.ts
+++ b/samples/client/petstore/typescript-inversify/IHttpClient.ts
@@ -1,4 +1,4 @@
-import { Observable } from 'rxjs/Observable';
+import { Observable } from "rxjs/Observable";
 import HttpResponse from "./HttpResponse";
 import { Headers } from "./Headers";
 
diff --git a/samples/client/petstore/typescript-inversify/api/pet.service.ts b/samples/client/petstore/typescript-inversify/api/pet.service.ts
index 52107821af5..06dbd62cdf3 100644
--- a/samples/client/petstore/typescript-inversify/api/pet.service.ts
+++ b/samples/client/petstore/typescript-inversify/api/pet.service.ts
@@ -11,19 +11,19 @@
  */
 /* tslint:disable:no-unused-variable member-ordering */
 
-import { Observable } from 'rxjs/Observable';
+import { Observable } from "rxjs/Observable";
 
-import { map } from 'rxjs/operators';
+import { map } from "rxjs/operators";
 import IHttpClient from "../IHttpClient";
 import { inject, injectable } from "inversify";
 import { IAPIConfiguration } from "../IAPIConfiguration";
 import { Headers } from "../Headers";
 import HttpResponse from "../HttpResponse";
 
-import { ApiResponse } from '../model/apiResponse';
-import { Pet } from '../model/pet';
+import { ApiResponse } from "../model/apiResponse";
+import { Pet } from "../model/pet";
 
-import { COLLECTION_FORMATS }  from '../variables';
+import { COLLECTION_FORMATS }  from "../variables";
 
 
 
@@ -40,14 +40,14 @@ export class PetService {
     /**
      * Add a new pet to the store
      * 
-     * @param pet Pet object that needs to be added to the store
+     * @param body Pet object that needs to be added to the store
      
      */
-    public addPet(pet: Pet, observe?: 'body', headers?: Headers): Observable<any>;
-    public addPet(pet: Pet, observe?: 'response', headers?: Headers): Observable<HttpResponse<any>>;
-    public addPet(pet: Pet, observe: any = 'body', headers: Headers = {}): Observable<any> {
-        if (!pet){
-            throw new Error('Required parameter pet was null or undefined when calling addPet.');
+    public addPet(body: Pet, observe?: 'body', headers?: Headers): Observable<any>;
+    public addPet(body: Pet, observe?: 'response', headers?: Headers): Observable<HttpResponse<any>>;
+    public addPet(body: Pet, observe: any = 'body', headers: Headers = {}): Observable<any> {
+        if (!body){
+            throw new Error('Required parameter body was null or undefined when calling addPet.');
         }
 
         // authentication (petstore_auth) required
@@ -60,7 +60,7 @@ export class PetService {
         headers['Accept'] = 'application/json';
         headers['Content-Type'] = 'application/json';
 
-        const response: Observable<HttpResponse<any>> = this.httpClient.post(`${this.basePath}/pet`, pet , headers);
+        const response: Observable<HttpResponse<any>> = this.httpClient.post(`${this.basePath}/pet`, body , headers);
         if (observe == 'body') {
                return response.pipe(
                    map(httpResponse => <any>(httpResponse.response))
@@ -148,12 +148,11 @@ export class PetService {
      * Finds Pets by tags
      * Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing.
      * @param tags Tags to filter by
-     * @param maxCount Maximum number of items to return
      
      */
-    public findPetsByTags(tags: Array<string>, maxCount?: number, observe?: 'body', headers?: Headers): Observable<Array<Pet>>;
-    public findPetsByTags(tags: Array<string>, maxCount?: number, observe?: 'response', headers?: Headers): Observable<HttpResponse<Array<Pet>>>;
-    public findPetsByTags(tags: Array<string>, maxCount?: number, observe: any = 'body', headers: Headers = {}): Observable<any> {
+    public findPetsByTags(tags: Array<string>, observe?: 'body', headers?: Headers): Observable<Array<Pet>>;
+    public findPetsByTags(tags: Array<string>, observe?: 'response', headers?: Headers): Observable<HttpResponse<Array<Pet>>>;
+    public findPetsByTags(tags: Array<string>, observe: any = 'body', headers: Headers = {}): Observable<any> {
         if (!tags){
             throw new Error('Required parameter tags was null or undefined when calling findPetsByTags.');
         }
@@ -162,9 +161,6 @@ export class PetService {
         if (tags) {
             queryParameters.push("tags="+encodeURIComponent(tags.join(COLLECTION_FORMATS['csv'])));
         }
-        if (maxCount !== undefined) {
-            queryParameters.push("maxCount="+encodeURIComponent(String(maxCount)));
-        }
 
         // authentication (petstore_auth) required
         if (this.APIConfiguration.accessToken) {
@@ -217,14 +213,14 @@ export class PetService {
     /**
      * Update an existing pet
      * 
-     * @param pet Pet object that needs to be added to the store
+     * @param body Pet object that needs to be added to the store
      
      */
-    public updatePet(pet: Pet, observe?: 'body', headers?: Headers): Observable<any>;
-    public updatePet(pet: Pet, observe?: 'response', headers?: Headers): Observable<HttpResponse<any>>;
-    public updatePet(pet: Pet, observe: any = 'body', headers: Headers = {}): Observable<any> {
-        if (!pet){
-            throw new Error('Required parameter pet was null or undefined when calling updatePet.');
+    public updatePet(body: Pet, observe?: 'body', headers?: Headers): Observable<any>;
+    public updatePet(body: Pet, observe?: 'response', headers?: Headers): Observable<HttpResponse<any>>;
+    public updatePet(body: Pet, observe: any = 'body', headers: Headers = {}): Observable<any> {
+        if (!body){
+            throw new Error('Required parameter body was null or undefined when calling updatePet.');
         }
 
         // authentication (petstore_auth) required
@@ -237,7 +233,7 @@ export class PetService {
         headers['Accept'] = 'application/json';
         headers['Content-Type'] = 'application/json';
 
-        const response: Observable<HttpResponse<any>> = this.httpClient.put(`${this.basePath}/pet`, pet , headers);
+        const response: Observable<HttpResponse<any>> = this.httpClient.put(`${this.basePath}/pet`, body , headers);
         if (observe == 'body') {
                return response.pipe(
                    map(httpResponse => <any>(httpResponse.response))
diff --git a/samples/client/petstore/typescript-inversify/api/store.service.ts b/samples/client/petstore/typescript-inversify/api/store.service.ts
index f27c8c8178f..778e00e5c3a 100644
--- a/samples/client/petstore/typescript-inversify/api/store.service.ts
+++ b/samples/client/petstore/typescript-inversify/api/store.service.ts
@@ -11,18 +11,18 @@
  */
 /* tslint:disable:no-unused-variable member-ordering */
 
-import { Observable } from 'rxjs/Observable';
+import { Observable } from "rxjs/Observable";
 
-import { map } from 'rxjs/operators';
+import { map } from "rxjs/operators";
 import IHttpClient from "../IHttpClient";
 import { inject, injectable } from "inversify";
 import { IAPIConfiguration } from "../IAPIConfiguration";
 import { Headers } from "../Headers";
 import HttpResponse from "../HttpResponse";
 
-import { Order } from '../model/order';
+import { Order } from "../model/order";
 
-import { COLLECTION_FORMATS }  from '../variables';
+import { COLLECTION_FORMATS }  from "../variables";
 
 
 
@@ -113,20 +113,20 @@ export class StoreService {
     /**
      * Place an order for a pet
      * 
-     * @param order order placed for purchasing the pet
+     * @param body order placed for purchasing the pet
      
      */
-    public placeOrder(order: Order, observe?: 'body', headers?: Headers): Observable<Order>;
-    public placeOrder(order: Order, observe?: 'response', headers?: Headers): Observable<HttpResponse<Order>>;
-    public placeOrder(order: Order, observe: any = 'body', headers: Headers = {}): Observable<any> {
-        if (!order){
-            throw new Error('Required parameter order was null or undefined when calling placeOrder.');
+    public placeOrder(body: Order, observe?: 'body', headers?: Headers): Observable<Order>;
+    public placeOrder(body: Order, observe?: 'response', headers?: Headers): Observable<HttpResponse<Order>>;
+    public placeOrder(body: Order, observe: any = 'body', headers: Headers = {}): Observable<any> {
+        if (!body){
+            throw new Error('Required parameter body was null or undefined when calling placeOrder.');
         }
 
         headers['Accept'] = 'application/xml';
         headers['Content-Type'] = 'application/json';
 
-        const response: Observable<HttpResponse<Order>> = this.httpClient.post(`${this.basePath}/store/order`, order , headers);
+        const response: Observable<HttpResponse<Order>> = this.httpClient.post(`${this.basePath}/store/order`, body , headers);
         if (observe == 'body') {
                return response.pipe(
                    map(httpResponse => <Order>(httpResponse.response))
diff --git a/samples/client/petstore/typescript-inversify/api/user.service.ts b/samples/client/petstore/typescript-inversify/api/user.service.ts
index 1fd0e98afe7..f2e8b83c4ab 100644
--- a/samples/client/petstore/typescript-inversify/api/user.service.ts
+++ b/samples/client/petstore/typescript-inversify/api/user.service.ts
@@ -11,18 +11,18 @@
  */
 /* tslint:disable:no-unused-variable member-ordering */
 
-import { Observable } from 'rxjs/Observable';
+import { Observable } from "rxjs/Observable";
 
-import { map } from 'rxjs/operators';
+import { map } from "rxjs/operators";
 import IHttpClient from "../IHttpClient";
 import { inject, injectable } from "inversify";
 import { IAPIConfiguration } from "../IAPIConfiguration";
 import { Headers } from "../Headers";
 import HttpResponse from "../HttpResponse";
 
-import { User } from '../model/user';
+import { User } from "../model/user";
 
-import { COLLECTION_FORMATS }  from '../variables';
+import { COLLECTION_FORMATS }  from "../variables";
 
 
 
@@ -39,21 +39,20 @@ export class UserService {
     /**
      * Create user
      * This can only be done by the logged in user.
-     * @param user Created user object
+     * @param body Created user object
      
      */
-    public createUser(user: User, observe?: 'body', headers?: Headers): Observable<any>;
-    public createUser(user: User, observe?: 'response', headers?: Headers): Observable<HttpResponse<any>>;
-    public createUser(user: User, observe: any = 'body', headers: Headers = {}): Observable<any> {
-        if (!user){
-            throw new Error('Required parameter user was null or undefined when calling createUser.');
+    public createUser(body: User, observe?: 'body', headers?: Headers): Observable<any>;
+    public createUser(body: User, observe?: 'response', headers?: Headers): Observable<HttpResponse<any>>;
+    public createUser(body: User, observe: any = 'body', headers: Headers = {}): Observable<any> {
+        if (!body){
+            throw new Error('Required parameter body was null or undefined when calling createUser.');
         }
 
-        // authentication (auth_cookie) required
         headers['Accept'] = 'application/json';
         headers['Content-Type'] = 'application/json';
 
-        const response: Observable<HttpResponse<any>> = this.httpClient.post(`${this.basePath}/user`, user , headers);
+        const response: Observable<HttpResponse<any>> = this.httpClient.post(`${this.basePath}/user`, body , headers);
         if (observe == 'body') {
                return response.pipe(
                    map(httpResponse => <any>(httpResponse.response))
@@ -66,21 +65,20 @@ export class UserService {
     /**
      * Creates list of users with given input array
      * 
-     * @param user List of user object
+     * @param body List of user object
      
      */
-    public createUsersWithArrayInput(user: Array<User>, observe?: 'body', headers?: Headers): Observable<any>;
-    public createUsersWithArrayInput(user: Array<User>, observe?: 'response', headers?: Headers): Observable<HttpResponse<any>>;
-    public createUsersWithArrayInput(user: Array<User>, observe: any = 'body', headers: Headers = {}): Observable<any> {
-        if (!user){
-            throw new Error('Required parameter user was null or undefined when calling createUsersWithArrayInput.');
+    public createUsersWithArrayInput(body: Array<User>, observe?: 'body', headers?: Headers): Observable<any>;
+    public createUsersWithArrayInput(body: Array<User>, observe?: 'response', headers?: Headers): Observable<HttpResponse<any>>;
+    public createUsersWithArrayInput(body: Array<User>, observe: any = 'body', headers: Headers = {}): Observable<any> {
+        if (!body){
+            throw new Error('Required parameter body was null or undefined when calling createUsersWithArrayInput.');
         }
 
-        // authentication (auth_cookie) required
         headers['Accept'] = 'application/json';
         headers['Content-Type'] = 'application/json';
 
-        const response: Observable<HttpResponse<any>> = this.httpClient.post(`${this.basePath}/user/createWithArray`, user , headers);
+        const response: Observable<HttpResponse<any>> = this.httpClient.post(`${this.basePath}/user/createWithArray`, body , headers);
         if (observe == 'body') {
                return response.pipe(
                    map(httpResponse => <any>(httpResponse.response))
@@ -93,21 +91,20 @@ export class UserService {
     /**
      * Creates list of users with given input array
      * 
-     * @param user List of user object
+     * @param body List of user object
      
      */
-    public createUsersWithListInput(user: Array<User>, observe?: 'body', headers?: Headers): Observable<any>;
-    public createUsersWithListInput(user: Array<User>, observe?: 'response', headers?: Headers): Observable<HttpResponse<any>>;
-    public createUsersWithListInput(user: Array<User>, observe: any = 'body', headers: Headers = {}): Observable<any> {
-        if (!user){
-            throw new Error('Required parameter user was null or undefined when calling createUsersWithListInput.');
+    public createUsersWithListInput(body: Array<User>, observe?: 'body', headers?: Headers): Observable<any>;
+    public createUsersWithListInput(body: Array<User>, observe?: 'response', headers?: Headers): Observable<HttpResponse<any>>;
+    public createUsersWithListInput(body: Array<User>, observe: any = 'body', headers: Headers = {}): Observable<any> {
+        if (!body){
+            throw new Error('Required parameter body was null or undefined when calling createUsersWithListInput.');
         }
 
-        // authentication (auth_cookie) required
         headers['Accept'] = 'application/json';
         headers['Content-Type'] = 'application/json';
 
-        const response: Observable<HttpResponse<any>> = this.httpClient.post(`${this.basePath}/user/createWithList`, user , headers);
+        const response: Observable<HttpResponse<any>> = this.httpClient.post(`${this.basePath}/user/createWithList`, body , headers);
         if (observe == 'body') {
                return response.pipe(
                    map(httpResponse => <any>(httpResponse.response))
@@ -130,7 +127,6 @@ export class UserService {
             throw new Error('Required parameter username was null or undefined when calling deleteUser.');
         }
 
-        // authentication (auth_cookie) required
         headers['Accept'] = 'application/json';
 
         const response: Observable<HttpResponse<any>> = this.httpClient.delete(`${this.basePath}/user/${encodeURIComponent(String(username))}`, headers);
@@ -214,7 +210,6 @@ export class UserService {
     public logoutUser(observe?: 'body', headers?: Headers): Observable<any>;
     public logoutUser(observe?: 'response', headers?: Headers): Observable<HttpResponse<any>>;
     public logoutUser(observe: any = 'body', headers: Headers = {}): Observable<any> {
-        // authentication (auth_cookie) required
         headers['Accept'] = 'application/json';
 
         const response: Observable<HttpResponse<any>> = this.httpClient.get(`${this.basePath}/user/logout`, headers);
@@ -231,25 +226,24 @@ export class UserService {
      * Updated user
      * This can only be done by the logged in user.
      * @param username name that need to be deleted
-     * @param user Updated user object
+     * @param body Updated user object
      
      */
-    public updateUser(username: string, user: User, observe?: 'body', headers?: Headers): Observable<any>;
-    public updateUser(username: string, user: User, observe?: 'response', headers?: Headers): Observable<HttpResponse<any>>;
-    public updateUser(username: string, user: User, observe: any = 'body', headers: Headers = {}): Observable<any> {
+    public updateUser(username: string, body: User, observe?: 'body', headers?: Headers): Observable<any>;
+    public updateUser(username: string, body: User, observe?: 'response', headers?: Headers): Observable<HttpResponse<any>>;
+    public updateUser(username: string, body: User, observe: any = 'body', headers: Headers = {}): Observable<any> {
         if (!username){
             throw new Error('Required parameter username was null or undefined when calling updateUser.');
         }
 
-        if (!user){
-            throw new Error('Required parameter user was null or undefined when calling updateUser.');
+        if (!body){
+            throw new Error('Required parameter body was null or undefined when calling updateUser.');
         }
 
-        // authentication (auth_cookie) required
         headers['Accept'] = 'application/json';
         headers['Content-Type'] = 'application/json';
 
-        const response: Observable<HttpResponse<any>> = this.httpClient.put(`${this.basePath}/user/${encodeURIComponent(String(username))}`, user , headers);
+        const response: Observable<HttpResponse<any>> = this.httpClient.put(`${this.basePath}/user/${encodeURIComponent(String(username))}`, body , headers);
         if (observe == 'body') {
                return response.pipe(
                    map(httpResponse => <any>(httpResponse.response))
-- 
GitLab


From 2005c109a80f31a39368ab3d706d70a893b052f7 Mon Sep 17 00:00:00 2001
From: William Cheng <wing328hk@gmail.com>
Date: Mon, 27 May 2019 21:13:12 +0800
Subject: [PATCH 10/10] update doc

---
 docs/generators/typescript-inversify.md | 1 +
 1 file changed, 1 insertion(+)

diff --git a/docs/generators/typescript-inversify.md b/docs/generators/typescript-inversify.md
index 4a7cbc73c4c..21e7c7dd326 100644
--- a/docs/generators/typescript-inversify.md
+++ b/docs/generators/typescript-inversify.md
@@ -19,4 +19,5 @@ sidebar_label: typescript-inversify
 |npmRepository|Use this property to set an url your private npmRepo in the package.json| |null|
 |withInterfaces|Setting this property to true will generate interfaces next to the default class implementations.| |false|
 |usePromise|Setting this property to use promise instead of observable inside every service.| |false|
+|useRxJS6|Setting this property to use rxjs 6 instead of rxjs 5.| |false|
 |taggedUnions|Use discriminators to create tagged unions instead of extending interfaces.| |false|
-- 
GitLab