diff --git a/.travis.yml b/.travis.yml index f093d94055bc..0ab1028d5378 100644 --- a/.travis.yml +++ b/.travis.yml @@ -3,6 +3,7 @@ language: java jdk: - openjdk8 + cache: directories: - $HOME/.m2 @@ -25,13 +26,17 @@ cache: - $HOME/samples/client/petstore/typescript-fetch/npm/with-npm-version/typings - $HOME/samples/client/petstore/typescript-angular/node_modules - $HOME/samples/client/petstore/typescript-angular/typings + - $HOME/samples/server/petstore/rust-server/target - $HOME/perl5 + - $HOME/.cargo + - $HOME/.stack services: - docker # comment out the host table change to use the public petstore server addons: + chrome: stable hosts: - petstore.swagger.io @@ -41,7 +46,7 @@ before_install: - stack upgrade - stack --version # install rust - - curl -sSf https://static.rust-lang.org/rustup.sh | sh + - curl https://sh.rustup.rs -sSf | sh -s -- -y -v # required when sudo: required for the Ruby petstore tests - gem install bundler - npm install -g typescript @@ -83,7 +88,7 @@ install: # Add Godeps dependencies to GOPATH and PATH - eval "$(curl -sL https://raw.githubusercontent.com/travis-ci/gimme/master/gimme | GIMME_GO_VERSION=1.4 bash)" - export GOPATH="${TRAVIS_BUILD_DIR}/Godeps/_workspace" - - export PATH="${TRAVIS_BUILD_DIR}/Godeps/_workspace/bin:$PATH" + - export PATH="${TRAVIS_BUILD_DIR}/Godeps/_workspace/bin:$HOME/.cargo/bin:$PATH" - go version script: @@ -100,14 +105,24 @@ script: - mvn --quiet verify -Psamples after_success: # push to maven repo - - if [ $SONATYPE_USERNAME ] && [ -z $TRAVIS_TAG ] && ([ "$TRAVIS_BRANCH" = "master" ] || [ "$TRAVIS_BRANCH" = "3.1.x" ] || [ "$TRAVIS_BRANCH" = "4.0.x" ]) && [ "$TRAVIS_PULL_REQUEST" == "false" ]; then - mvn clean deploy -DskipTests=true -B -U -P release --settings CI/settings.xml; - echo "Finished mvn clean deploy for $TRAVIS_BRANCH"; - pushd .; - cd modules/openapi-generator-gradle-plugin; - ./gradlew -Psigning.keyId="$SIGNING_KEY" -Psigning.password="$SIGNING_PASSPHRASE" -Psigning.secretKeyRingFile="${TRAVIS_BUILD_DIR}/sec.gpg" -PossrhUsername="${SONATYPE_USERNAME}" -PossrhPassword="${SONATYPE_PASSWORD}" uploadArchives --no-daemon; - echo "Finished ./gradlew uploadArchives"; - popd; + - if [ $SONATYPE_USERNAME ] && [ -z $TRAVIS_TAG ] && [ "$TRAVIS_PULL_REQUEST" == "false" ]; then + if [ "$TRAVIS_BRANCH" = "master" ]; then + mvn clean deploy -DskipTests=true -B -U -P release --settings CI/settings.xml; + echo "Finished mvn clean deploy for $TRAVIS_BRANCH"; + pushd .; + cd modules/openapi-generator-gradle-plugin; + ./gradlew -Psigning.keyId="$SIGNING_KEY" -Psigning.password="$SIGNING_PASSPHRASE" -Psigning.secretKeyRingFile="${TRAVIS_BUILD_DIR}/sec.gpg" -PossrhUsername="${SONATYPE_USERNAME}" -PossrhPassword="${SONATYPE_PASSWORD}" uploadArchives --no-daemon; + echo "Finished ./gradlew uploadArchives"; + popd; + elif ([ "$TRAVIS_BRANCH" == "3.1.x" ] || [ "$TRAVIS_BRANCH" == "4.0.x" ]) ; then + mvn clean deploy --settings CI/settings.xml; + echo "Finished mvn clean deploy for $TRAVIS_BRANCH"; + pushd .; + cd modules/openapi-generator-gradle-plugin; + ./gradlew -PossrhUsername="${SONATYPE_USERNAME}" -PossrhPassword="${SONATYPE_PASSWORD}" uploadArchives --no-daemon; + echo "Finished ./gradlew uploadArchives"; + popd; + fi; fi; ## docker: build and push openapi-generator-online to DockerHub - if [ $DOCKER_HUB_USERNAME ]; then echo "$DOCKER_HUB_PASSWORD" | docker login --username=$DOCKER_HUB_USERNAME --password-stdin && docker build -t $DOCKER_GENERATOR_IMAGE_NAME ./modules/openapi-generator-online && if [ ! -z "$TRAVIS_TAG" ]; then docker tag $DOCKER_GENERATOR_IMAGE_NAME:latest $DOCKER_GENERATOR_IMAGE_NAME:$TRAVIS_TAG; fi && if [ ! -z "$TRAVIS_TAG" ] || [ "$TRAVIS_BRANCH" = "master" ]; then docker push $DOCKER_GENERATOR_IMAGE_NAME && echo "Pushed to $DOCKER_GENERATOR_IMAGE_NAME"; fi; fi diff --git a/CI/pom.xml.bash b/CI/pom.xml.bash index 65f0a63a6c39..16ccb163c552 100644 --- a/CI/pom.xml.bash +++ b/CI/pom.xml.bash @@ -9,7 +9,7 @@ openapi-generator-project pom openapi-generator-project - 3.0.2-SNAPSHOT + 3.0.3-SNAPSHOT https://github.com/openapi-tools/openapi-generator scm:git:git@github.com:openapi-tools/openapi-generator.git diff --git a/CI/pom.xml.circleci b/CI/pom.xml.circleci index 2b641dfc36ca..76ae65693117 100644 --- a/CI/pom.xml.circleci +++ b/CI/pom.xml.circleci @@ -10,7 +10,7 @@ openapi-generator-project pom openapi-generator-project - 3.0.2-SNAPSHOT + 3.0.3-SNAPSHOT https://github.com/openapitools/openapi-generator scm:git:git@github.com:openapitools/openapi-generator.git @@ -833,6 +833,9 @@ + + samples/client/petstore/go + samples/client/petstore/typescript-angular-v6-provided-in-root samples/client/petstore/akka-scala samples/client/petstore/scala @@ -855,8 +858,6 @@ samples/client/petstore/kotlin/ samples/client/petstore/kotlin-threetenbp/ samples/client/petstore/kotlin-string/ - - samples/client/petstore/go samples/server/petstore/java-vertx/rx samples/server/petstore/java-vertx/async @@ -873,9 +874,10 @@ samples/server/petstore/java-play-framework-api-package-override samples/server/petstore/undertow samples/server/petstore/jaxrs/jersey1 - samples/server/petstore/jaxrs/jersey2 samples/server/petstore/jaxrs/jersey1-useTags - samples/server/petstore/jaxrs/jersey2-useTags + samples/server/petstore/jaxrs-datelib-j8 samples/server/petstore/jaxrs-resteasy/default samples/server/petstore/jaxrs-resteasy/eap @@ -883,9 +885,10 @@ samples/server/petstore/jaxrs-resteasy/eap-java8 samples/server/petstore/jaxrs-resteasy/joda + samples/client/petstore/spring-cloud samples/server/petstore/springboot samples/server/petstore/springboot-beanvalidation @@ -898,6 +901,7 @@ samples/server/petstore/jaxrs-spec-interface samples/server/petstore/scala-lagom-server samples/server/petstore/scalatra + samples/server/petstore/finch diff --git a/CI/pom.xml.circleci.java7 b/CI/pom.xml.circleci.java7 index 1cf4d90e80f0..da7c53f4ff41 100644 --- a/CI/pom.xml.circleci.java7 +++ b/CI/pom.xml.circleci.java7 @@ -10,7 +10,7 @@ openapi-generator-project pom openapi-generator-project - 3.0.2-SNAPSHOT + 3.0.3-SNAPSHOT https://github.com/openapitools/openapi-generator scm:git:git@github.com:openapitools/openapi-generator.git @@ -854,6 +854,7 @@ samples/client/petstore/kotlin/ + samples/client/petstore/typescript-angular-v6-provided-in-root samples/server/petstore/java-vertx/rx samples/server/petstore/java-vertx/async diff --git a/CI/pom.xml.ios b/CI/pom.xml.ios index ad7e1d409b5f..24a69f1b6d36 100644 --- a/CI/pom.xml.ios +++ b/CI/pom.xml.ios @@ -9,7 +9,7 @@ openapi-generator-project pom openapi-generator-project - 3.0.2-SNAPSHOT + 3.0.3-SNAPSHOT https://github.com/openapitools/openapi-generator scm:git:git@github.com:openapitools/openapi-generator.git diff --git a/CI/pom.xml.shippable b/CI/pom.xml.shippable deleted file mode 100644 index c15e5d89db40..000000000000 --- a/CI/pom.xml.shippable +++ /dev/null @@ -1,944 +0,0 @@ - - - org.sonatype.oss - oss-parent - 5 - - 4.0.0 - org.openapitools - openapi-generator-shippable-pom - pom - openapi-generator-shippable-pom - 3.0.2-SNAPSHOT - https://github.com/openapitools/openapi-generator - - scm:git:git@github.com:openapitools/openapi-generator.git - scm:git:git@github.com:openapitools/openapi-generator.git - https://github.com/openapitools/openapi-generator - - - - - fehguy - Tony Tam - fehguy@gmail.com - - - - wing328 - William Cheng - wing328hk@gmail.com - - - jimschubert - Jim Schubert - james.schubert@gmail.com - - - cbornet - Christophe Bornet - - - jaz-ah - Joseph Zuromski - - - ackintosh - Akihito Nakano - - - JFCote - Jean-François Côté - - - jmini - Jérémie Bresson - dev@jmini.fr - - - - github - https://github.com/openapitools/openapi-generator/issues - - - - Apache License 2.0 - http://www.apache.org/licenses/LICENSE-2.0.html - repo - - - - src/main/java - target/classes - - - org.jvnet.wagon-svn - wagon-svn - 1.8 - - - org.apache.maven.wagon - wagon-ssh-external - 1.0-alpha-6 - - - org.apache.maven.wagon - wagon-webdav - 1.0-beta-1 - - - install - target - ${project.artifactId}-${project.version} - - - net.revelc.code - formatter-maven-plugin - - - - 1.8 - 1.8 - 1.8 - LF - - - - org.apache.maven.plugins - maven-checkstyle-plugin - 2.17 - - - validate - validate - - ../google_checkstyle.xml - - ${project.build.sourceDirectory} - UTF-8 - true - true - false - - - check - - - - - - com.puppycrawl.tools - checkstyle - 6.19 - - - - - org.apache.maven.plugins - maven-surefire-plugin - ${surefire-version} - - none:none - -XX:+StartAttachListener - - - - test-testng - test - - test - - - none:none - org.testng:testng - - - - - - maven-dependency-plugin - - - package - - copy-dependencies - - - ${project.build.directory}/lib - - - - - - maven-compiler-plugin - 3.6.1 - - 1.8 - 1.8 - - - - org.apache.maven.plugins - maven-jar-plugin - 3.0.2 - - - - development - ${project.url} - ${project.version} - org.openapitools - - - - - - org.apache.maven.plugins - maven-site-plugin - 3.5.1 - - - org.apache.maven.plugins - maven-release-plugin - 2.5.3 - - - - org.apache.maven.plugins - maven-javadoc-plugin - 3.0.1 - - true - 1.8 - UTF-8 - 1g - true - ${javadoc.package.exclude} - - - - attach-javadocs - verify - - jar - - - - - - org.apache.maven.plugins - maven-source-plugin - 3.0.1 - - - attach-sources - verify - - jar-no-fork - - - - - - org.apache.maven.plugins - maven-enforcer-plugin - 1.4.1 - - - enforce-versions - - enforce - - - - - 3.2.5 - - - - - - - - - - - net.revelc.code - formatter-maven-plugin - 0.5.2 - - - - - - - release-profile - - true - - - - - net.alchim31.maven - scala-maven-plugin - - - - compile - testCompile - - - - - - - org.codehaus.mojo - build-helper-maven-plugin - - - add-source - prepare-package - - add-source - - - - src/main/scala - - - - - - - - - - release-sign-artifacts - - - performRelease - true - - - - - - org.apache.maven.plugins - maven-gpg-plugin - - - sign-artifacts - verify - - sign - - - - - - - - - - android-client - - - env - java - - - - ../samples/client/petstore/android/volley - - - - bash-client - - - env - java - - - - ../samples/client/petstore/bash - - - - clojure-client - - - env - clojure - - - - ../samples/client/petstore/clojure - - - - haskell-http-client - - - env - haskell-http-client - - - - - - - - haskell-http-client-integration-test - - - env - haskell-http-client - - - - ../samples/client/petstore/haskell-http-client/tests-integration - - - - java-client-jersey1 - - - env - java - - - - ../samples/client/petstore/java/jersey1 - - - - java-client-jersey2 - - - env - java - - - - ../samples/client/petstore/java/jersey2 - - - - java-client-jersey2-java6 - - - env - java - - - - ../samples/client/petstore/java/jersey2-java6 - - - - java-client-okhttp-gson - - - env - java - - - - ../samples/client/petstore/java/okhttp-gson - - - - java-client-okhttp-gson-parcelable - - - env - java - - - - ../samples/client/petstore/java/okhttp-gson/parcelableModel - - - - java-client-retrofit - - - env - java - - - - ../samples/client/petstore/java/retrofit - - - - java-client-retrofit2 - - - env - java - - - - ../samples/client/petstore/java/retrofit2 - - - - java-client-retrofit2-rx - - - env - java - - - - ../samples/client/petstore/java/retrofit2rx - - - - java-client-feign - - - env - java - - - - ../samples/client/petstore/java/feign - - - - javascript-client - - - env - javascript - - - - ../samples/client/petstore/javascript - - - - scala-client - - - env - scala - - - - ../samples/client/petstore/scala - - - - java-msf4j-server - - - env - java - - - - ../samples/server/petstore/java-msf4/ - - - - jaxrs-cxf-server - - - env - java - - - - ../samples/server/petstore/jaxrs-cxf - - - - jaxrs-resteasy-server - - - env - java - - - - ../samples/server/petstore/jaxrs-resteasy/default - - - - jaxrs-resteasy-server-joda - - - env - java - - - - ../samples/server/petstore/jaxrs-resteasy/joda - - - - jaxrs-resteasy-eap-server - - - env - java - - - - ../samples/server/petstore/jaxrs-resteasy/eap - - - - jaxrs-resteasy-eap-server-joda - - - env - java - - - - ../samples/server/petstore/jaxrs-resteasy/eap-joda - - - - jaxrs-server - - - env - java - - - - ../samples/server/petstore/jaxrs/jersey2 - - - - jaxrs-server-jersey1 - - - env - java - - - - ../samples/server/petstore/jaxrs/jersey1 - - - - typescript-fetch-client-tests-default - - - env - java - - - - ../samples/client/petstore/typescript-fetch/tests/default - - - - typescript-fetch-client-builds-default - - - env - java - - - - ../samples/client/petstore/typescript-fetch/builds/default - - - - typescript-fetch-client-builds-es6-target - - - env - java - - - - ../samples/client/petstore/typescript-fetch/builds/es6-target - - - - typescript-fetch-client-builds-with-npm-version - - - env - java - - - - ../samples/client/petstore/typescript-fetch/builds/with-npm-version - - - - typescript-angularjs-client - - - env - java - - - - ../samples/client/petstore/typescript-angularjs/npm - - - - typescript-node-npm-client - - - env - java - - - - ../samples/client/petstore/typescript-node/npm - - - - python-client - - - env - java - - - - ../samples/client/petstore/python - - - - ruby-client - - - env - java - - - - ../samples/client/petstore/ruby - - - - go-client - - - env - java - - - - ../samples/client/petstore/go - - - - spring-mvc - - - env - java - - - - ../samples/server/petstore/spring-mvc - - - - springboot-beanvalidation - - - env - java - - - - ../samples/server/petstore/springboot-beanvalidation - - - - springboot-reactive - - - env - java - - - - ../samples/server/petstore/springboot-reactive - - - - springboot - - - env - java - - - - ../samples/server/petstore/springboot - - - - spring-cloud - - - env - java - - - - ../samples/client/petstore/spring-cloud - - - - scalatra-server - - - env - java - - - - ../samples/server/petstore/scalatra - - - - java-inflector - - - env - java - - - - ../samples/server/petstore/java-inflector - - - - java-undertowr - - - env - java - - - - ../samples/server/petstore/undertow - - - - samples - - - env - samples - - - - - ../samples/client/petstore/elixir - - ../samples/client/petstore/erlang-client - - ../samples/server/petstore/erlang-server - - - - - ../ - - - target/site - - - net.alchim31.maven - scala-maven-plugin - ${scala-maven-plugin-version} - - - org.apache.maven.plugins - maven-jxr-plugin - 2.5 - - true - - - - org.apache.maven.plugins - maven-project-info-reports-plugin - 2.9 - - - - project-team - - - - - - - - - - junit - junit - ${junit-version} - test - - - org.testng - testng - ${testng-version} - test - - - org.jmockit - jmockit - ${jmockit-version} - test - - - - - - sonatype-snapshots - https://oss.sonatype.org/content/repositories/snapshots - - true - - - - - 2.0.1 - 2.0.1 - 2.11.1 - 3.3.0 - 2.4 - 1.2 - 4.8.1 - 2.8.9 - 1.0.0 - 3.4 - 1.7.12 - 3.2.1 - 1.12 - 6.9.6 - 2.19.1 - 1.25 - 0.9.10 - 2.0.2.RELEASE - - diff --git a/CI/samples.ci/client/petstore/java/test-manual/common/ConfigurationTest.java b/CI/samples.ci/client/petstore/java/test-manual/common/ConfigurationTest.java new file mode 100644 index 000000000000..f05c230dc758 --- /dev/null +++ b/CI/samples.ci/client/petstore/java/test-manual/common/ConfigurationTest.java @@ -0,0 +1,15 @@ +package org.openapitools.client; + +import org.junit.*; +import static org.junit.Assert.*; + + +public class ConfigurationTest { + @Test + public void testDefaultApiClient() { + ApiClient apiClient = Configuration.getDefaultApiClient(); + assertNotNull(apiClient); + assertEquals("http://petstore.swagger.io:80/v2", apiClient.getBasePath()); + assertFalse(apiClient.isDebugging()); + } +} diff --git a/CI/samples.ci/client/petstore/java/test-manual/common/StringUtilTest.java b/CI/samples.ci/client/petstore/java/test-manual/common/StringUtilTest.java new file mode 100644 index 000000000000..aa7c81759ec4 --- /dev/null +++ b/CI/samples.ci/client/petstore/java/test-manual/common/StringUtilTest.java @@ -0,0 +1,33 @@ +package org.openapitools.client; + +import org.junit.*; +import static org.junit.Assert.*; + + +public class StringUtilTest { + @Test + public void testContainsIgnoreCase() { + assertTrue(StringUtil.containsIgnoreCase(new String[]{"abc"}, "abc")); + assertTrue(StringUtil.containsIgnoreCase(new String[]{"abc"}, "ABC")); + assertTrue(StringUtil.containsIgnoreCase(new String[]{"ABC"}, "abc")); + assertTrue(StringUtil.containsIgnoreCase(new String[]{null, "abc"}, "ABC")); + assertTrue(StringUtil.containsIgnoreCase(new String[]{null, "abc"}, null)); + + assertFalse(StringUtil.containsIgnoreCase(new String[]{"abc"}, "def")); + assertFalse(StringUtil.containsIgnoreCase(new String[]{}, "ABC")); + assertFalse(StringUtil.containsIgnoreCase(new String[]{}, null)); + } + + @Test + public void testJoin() { + String[] array = {"aa", "bb", "cc"}; + assertEquals("aa,bb,cc", StringUtil.join(array, ",")); + assertEquals("aa, bb, cc", StringUtil.join(array, ", ")); + assertEquals("aabbcc", StringUtil.join(array, "")); + assertEquals("aa bb cc", StringUtil.join(array, " ")); + assertEquals("aa\nbb\ncc", StringUtil.join(array, "\n")); + + assertEquals("", StringUtil.join(new String[]{}, ",")); + assertEquals("abc", StringUtil.join(new String[]{"abc"}, ",")); + } +} diff --git a/CI/samples.ci/client/petstore/java/test-manual/jersey1/ApiClientTest.java b/CI/samples.ci/client/petstore/java/test-manual/jersey1/ApiClientTest.java new file mode 100644 index 000000000000..a890ead935f8 --- /dev/null +++ b/CI/samples.ci/client/petstore/java/test-manual/jersey1/ApiClientTest.java @@ -0,0 +1,292 @@ +package org.openapitools.client; + +import org.openapitools.client.auth.*; + +import java.text.DateFormat; +import java.text.SimpleDateFormat; +import java.util.*; + +import org.junit.*; +import static org.junit.Assert.*; + + +public class ApiClientTest { + ApiClient apiClient = null; + + @Before + public void setup() { + apiClient = new ApiClient(); + } + + @Test + public void testParseAndFormatDate() { + // default date format + String dateStr = "2015-11-07T03:49:09.356Z"; + assertEquals(dateStr, apiClient.formatDate(apiClient.parseDate("2015-11-07T03:49:09.356+00:00"))); + assertEquals(dateStr, apiClient.formatDate(apiClient.parseDate("2015-11-07T03:49:09.356Z"))); + assertEquals(dateStr, apiClient.formatDate(apiClient.parseDate("2015-11-07T05:49:09.356+02:00"))); + assertEquals(dateStr, apiClient.formatDate(apiClient.parseDate("2015-11-07T02:49:09.356-01:00"))); + + // custom date format: without milli-seconds, custom time zone + DateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssXXX"); + format.setTimeZone(TimeZone.getTimeZone("GMT+10")); + apiClient.setDateFormat(format); + dateStr = "2015-11-07T13:49:09+10:00"; + assertEquals(dateStr, apiClient.formatDate(apiClient.parseDate("2015-11-07T03:49:09+00:00"))); + assertEquals(dateStr, apiClient.formatDate(apiClient.parseDate("2015-11-07T03:49:09Z"))); + assertEquals(dateStr, apiClient.formatDate(apiClient.parseDate("2015-11-07T00:49:09-03:00"))); + assertEquals(dateStr, apiClient.formatDate(apiClient.parseDate("2015-11-07T13:49:09+10:00"))); + } + + @Test + public void testIsJsonMime() { + assertFalse(apiClient.isJsonMime(null)); + assertFalse(apiClient.isJsonMime("")); + assertFalse(apiClient.isJsonMime("text/plain")); + assertFalse(apiClient.isJsonMime("application/xml")); + assertFalse(apiClient.isJsonMime("application/jsonp")); + assertFalse(apiClient.isJsonMime("example/json")); + assertFalse(apiClient.isJsonMime("example/foo+bar+jsonx")); + assertFalse(apiClient.isJsonMime("example/foo+bar+xjson")); + + assertTrue(apiClient.isJsonMime("application/json")); + assertTrue(apiClient.isJsonMime("application/json; charset=UTF8")); + assertTrue(apiClient.isJsonMime("APPLICATION/JSON")); + + assertTrue(apiClient.isJsonMime("application/problem+json")); + assertTrue(apiClient.isJsonMime("APPLICATION/PROBLEM+JSON")); + assertTrue(apiClient.isJsonMime("application/json\t")); + assertTrue(apiClient.isJsonMime("example/foo+bar+json")); + assertTrue(apiClient.isJsonMime("example/foo+json;x;y")); + assertTrue(apiClient.isJsonMime("example/foo+json\t;")); + assertTrue(apiClient.isJsonMime("Example/fOO+JSON")); + } + + @Test + public void testSelectHeaderAccept() { + String[] accepts = {"application/json", "application/xml"}; + assertEquals("application/json", apiClient.selectHeaderAccept(accepts)); + + accepts = new String[]{"APPLICATION/XML", "APPLICATION/JSON"}; + assertEquals("APPLICATION/JSON", apiClient.selectHeaderAccept(accepts)); + + accepts = new String[]{"application/xml", "application/json; charset=UTF8"}; + assertEquals("application/json; charset=UTF8", apiClient.selectHeaderAccept(accepts)); + + accepts = new String[]{"text/plain", "application/xml"}; + assertEquals("text/plain,application/xml", apiClient.selectHeaderAccept(accepts)); + + accepts = new String[]{}; + assertNull(apiClient.selectHeaderAccept(accepts)); + } + + @Test + public void testSelectHeaderContentType() { + String[] contentTypes = {"application/json", "application/xml"}; + assertEquals("application/json", apiClient.selectHeaderContentType(contentTypes)); + + contentTypes = new String[]{"APPLICATION/JSON", "APPLICATION/XML"}; + assertEquals("APPLICATION/JSON", apiClient.selectHeaderContentType(contentTypes)); + + contentTypes = new String[]{"application/xml", "application/json; charset=UTF8"}; + assertEquals("application/json; charset=UTF8", apiClient.selectHeaderContentType(contentTypes)); + + contentTypes = new String[]{"text/plain", "application/xml"}; + assertEquals("text/plain", apiClient.selectHeaderContentType(contentTypes)); + + contentTypes = new String[]{}; + assertEquals("application/json", apiClient.selectHeaderContentType(contentTypes)); + } + + @Test + public void testGetAuthentications() { + Map auths = apiClient.getAuthentications(); + + Authentication auth = auths.get("api_key"); + assertNotNull(auth); + assertTrue(auth instanceof ApiKeyAuth); + ApiKeyAuth apiKeyAuth = (ApiKeyAuth) auth; + assertEquals("header", apiKeyAuth.getLocation()); + assertEquals("api_key", apiKeyAuth.getParamName()); + + auth = auths.get("petstore_auth"); + assertTrue(auth instanceof OAuth); + assertSame(auth, apiClient.getAuthentication("petstore_auth")); + + assertNull(auths.get("unknown")); + + try { + auths.put("my_auth", new HttpBasicAuth()); + fail("the authentications returned should not be modifiable"); + } catch (UnsupportedOperationException e) { + } + } + + @Ignore("There is no more basic auth in petstore security definitions") + @Test + public void testSetUsernameAndPassword() { + HttpBasicAuth auth = null; + for (Authentication _auth : apiClient.getAuthentications().values()) { + if (_auth instanceof HttpBasicAuth) { + auth = (HttpBasicAuth) _auth; + break; + } + } + auth.setUsername(null); + auth.setPassword(null); + + apiClient.setUsername("my-username"); + apiClient.setPassword("my-password"); + assertEquals("my-username", auth.getUsername()); + assertEquals("my-password", auth.getPassword()); + + // reset values + auth.setUsername(null); + auth.setPassword(null); + } + + @Test + public void testSetApiKeyAndPrefix() { + ApiKeyAuth auth = null; + for (Authentication _auth : apiClient.getAuthentications().values()) { + if (_auth instanceof ApiKeyAuth) { + auth = (ApiKeyAuth) _auth; + break; + } + } + auth.setApiKey(null); + auth.setApiKeyPrefix(null); + + apiClient.setApiKey("my-api-key"); + apiClient.setApiKeyPrefix("Token"); + assertEquals("my-api-key", auth.getApiKey()); + assertEquals("Token", auth.getApiKeyPrefix()); + + // reset values + auth.setApiKey(null); + auth.setApiKeyPrefix(null); + } + + @Test + public void testParameterToPairWhenNameIsInvalid() throws Exception { + List pairs_a = apiClient.parameterToPair(null, new Integer(1)); + List pairs_b = apiClient.parameterToPair("", new Integer(1)); + + assertTrue(pairs_a.isEmpty()); + assertTrue(pairs_b.isEmpty()); + } + + @Test + public void testParameterToPairWhenValueIsNull() throws Exception { + List pairs = apiClient.parameterToPair("param-a", null); + + assertTrue(pairs.isEmpty()); + } + + @Test + public void testParameterToPairWhenValueIsEmptyString() throws Exception { + // single empty string + List pairs = apiClient.parameterToPair("param-a", " "); + assertEquals(1, pairs.size()); + } + + @Test + public void testParameterToPairWhenValueIsNotCollection() throws Exception { + String name = "param-a"; + Integer value = 1; + + List pairs = apiClient.parameterToPair(name, value); + + assertEquals(1, pairs.size()); + assertEquals(value, Integer.valueOf(pairs.get(0).getValue())); + } + + @Test + public void testParameterToPairWhenValueIsCollection() throws Exception { + List values = new ArrayList(); + values.add("value-a"); + values.add(123); + values.add(new Date()); + + List pairs = apiClient.parameterToPair("param-a", values); + assertEquals(0, pairs.size()); + } + + @Test + public void testParameterToPairsWhenNameIsInvalid() throws Exception { + List objects = new ArrayList(); + objects.add(new Integer(1)); + + List pairs_a = apiClient.parameterToPairs("csv", null, objects); + List pairs_b = apiClient.parameterToPairs("csv", "", objects); + + assertTrue(pairs_a.isEmpty()); + assertTrue(pairs_b.isEmpty()); + } + + @Test + public void testParameterToPairsWhenValueIsNull() throws Exception { + List pairs = apiClient.parameterToPairs("csv", "param-a", null); + + assertTrue(pairs.isEmpty()); + } + + @Test + public void testParameterToPairsWhenValueIsEmptyStrings() throws Exception { + // list of empty strings + List strs = new ArrayList(); + strs.add(" "); + strs.add(" "); + strs.add(" "); + + List concatStrings = apiClient.parameterToPairs("csv", "param-a", strs); + + assertEquals(1, concatStrings.size()); + assertFalse(concatStrings.get(0).getValue().isEmpty()); // should contain some delimiters + } + + @Test + public void testParameterToPairsWhenValueIsCollection() throws Exception { + Map collectionFormatMap = new HashMap(); + collectionFormatMap.put("csv", ","); + collectionFormatMap.put("tsv", "\t"); + collectionFormatMap.put("ssv", " "); + collectionFormatMap.put("pipes", "|"); + collectionFormatMap.put("", ","); // no format, must default to csv + collectionFormatMap.put("unknown", ","); // all other formats, must default to csv + + String name = "param-a"; + + List values = new ArrayList(); + values.add("value-a"); + values.add(123); + values.add(new Date()); + + // check for multi separately + List multiPairs = apiClient.parameterToPairs("multi", name, values); + assertEquals(values.size(), multiPairs.size()); + for (int i = 0; i < values.size(); i++) { + assertEquals(apiClient.escapeString(apiClient.parameterToString(values.get(i))), multiPairs.get(i).getValue()); + } + + // all other formats + for (String collectionFormat : collectionFormatMap.keySet()) { + List pairs = apiClient.parameterToPairs(collectionFormat, name, values); + + assertEquals(1, pairs.size()); + + String delimiter = collectionFormatMap.get(collectionFormat); + if (!delimiter.equals(",")) { + // commas are not escaped because they are reserved characters in URIs + delimiter = apiClient.escapeString(delimiter); + } + String[] pairValueSplit = pairs.get(0).getValue().split(delimiter); + + // must equal input values + assertEquals(values.size(), pairValueSplit.length); + for (int i = 0; i < values.size(); i++) { + assertEquals(apiClient.escapeString(apiClient.parameterToString(values.get(i))), pairValueSplit[i]); + } + } + } +} diff --git a/CI/samples.ci/client/petstore/java/test-manual/jersey1/auth/ApiKeyAuthTest.java b/CI/samples.ci/client/petstore/java/test-manual/jersey1/auth/ApiKeyAuthTest.java new file mode 100644 index 000000000000..d9b17065f7ca --- /dev/null +++ b/CI/samples.ci/client/petstore/java/test-manual/jersey1/auth/ApiKeyAuthTest.java @@ -0,0 +1,47 @@ +package org.openapitools.client.auth; + +import java.util.HashMap; +import java.util.ArrayList; +import java.util.Map; +import java.util.List; + +import org.openapitools.client.Pair; +import org.junit.*; +import static org.junit.Assert.*; + + +public class ApiKeyAuthTest { + @Test + public void testApplyToParamsInQuery() { + List queryParams = new ArrayList(); + Map headerParams = new HashMap(); + + ApiKeyAuth auth = new ApiKeyAuth("query", "api_key"); + auth.setApiKey("my-api-key"); + auth.applyToParams(queryParams, headerParams); + + assertEquals(1, queryParams.size()); + for (Pair queryParam : queryParams) { + assertEquals("my-api-key", queryParam.getValue()); + } + + // no changes to header parameters + assertEquals(0, headerParams.size()); + } + + @Test + public void testApplyToParamsInHeaderWithPrefix() { + List queryParams = new ArrayList(); + Map headerParams = new HashMap(); + + ApiKeyAuth auth = new ApiKeyAuth("header", "X-API-TOKEN"); + auth.setApiKey("my-api-token"); + auth.setApiKeyPrefix("Token"); + auth.applyToParams(queryParams, headerParams); + + // no changes to query parameters + assertEquals(0, queryParams.size()); + assertEquals(1, headerParams.size()); + assertEquals("Token my-api-token", headerParams.get("X-API-TOKEN")); + } +} diff --git a/CI/samples.ci/client/petstore/java/test-manual/jersey1/auth/HttpBasicAuthTest.java b/CI/samples.ci/client/petstore/java/test-manual/jersey1/auth/HttpBasicAuthTest.java new file mode 100644 index 000000000000..668342d96d7c --- /dev/null +++ b/CI/samples.ci/client/petstore/java/test-manual/jersey1/auth/HttpBasicAuthTest.java @@ -0,0 +1,52 @@ +package org.openapitools.client.auth; + +import java.util.HashMap; +import java.util.ArrayList; +import java.util.Map; +import java.util.List; + +import org.openapitools.client.Pair; +import org.junit.*; +import static org.junit.Assert.*; + + +public class HttpBasicAuthTest { + HttpBasicAuth auth = null; + + @Before + public void setup() { + auth = new HttpBasicAuth(); + } + + @Test + public void testApplyToParams() { + List queryParams = new ArrayList(); + Map headerParams = new HashMap(); + + auth.setUsername("my-username"); + auth.setPassword("my-password"); + auth.applyToParams(queryParams, headerParams); + + // no changes to query parameters + assertEquals(0, queryParams.size()); + assertEquals(1, headerParams.size()); + // the string below is base64-encoded result of "my-username:my-password" with the "Basic " prefix + String expected = "Basic bXktdXNlcm5hbWU6bXktcGFzc3dvcmQ="; + assertEquals(expected, headerParams.get("Authorization")); + + // null username should be treated as empty string + auth.setUsername(null); + auth.applyToParams(queryParams, headerParams); + // the string below is base64-encoded result of ":my-password" with the "Basic " prefix + expected = "Basic Om15LXBhc3N3b3Jk"; + assertEquals(expected, headerParams.get("Authorization")); + + // null password should be treated as empty string + auth.setUsername("my-username"); + auth.setPassword(null); + auth.applyToParams(queryParams, headerParams); + // the string below is base64-encoded result of "my-username:" with the "Basic " prefix + expected = "Basic bXktdXNlcm5hbWU6"; + assertEquals(expected, headerParams.get("Authorization")); + } +} diff --git a/CI/samples.ci/client/petstore/java/test-manual/jersey1/model/EnumValueTest.java b/CI/samples.ci/client/petstore/java/test-manual/jersey1/model/EnumValueTest.java new file mode 100644 index 000000000000..47bfe940d3c3 --- /dev/null +++ b/CI/samples.ci/client/petstore/java/test-manual/jersey1/model/EnumValueTest.java @@ -0,0 +1,63 @@ +package org.openapitools.client.model; + +import org.junit.Test; + +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.ObjectWriter; +import com.fasterxml.jackson.databind.SerializationFeature; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; +import static org.junit.Assert.fail; + +public class EnumValueTest { + + @Test + public void testEnumClass() { + assertEquals(EnumClass._ABC.toString(), "_abc"); + assertEquals(EnumClass._EFG.toString(), "-efg"); + assertEquals(EnumClass._XYZ_.toString(), "(xyz)"); + } + + @Test + public void testEnumTest() { + // test enum value + EnumTest enumTest = new EnumTest(); + enumTest.setEnumString(EnumTest.EnumStringEnum.LOWER); + enumTest.setEnumInteger(EnumTest.EnumIntegerEnum.NUMBER_1); + enumTest.setEnumNumber(EnumTest.EnumNumberEnum.NUMBER_1_DOT_1); + + assertEquals(EnumTest.EnumStringEnum.UPPER.toString(), "UPPER"); + assertEquals(EnumTest.EnumStringEnum.UPPER.getValue(), "UPPER"); + assertEquals(EnumTest.EnumStringEnum.LOWER.toString(), "lower"); + assertEquals(EnumTest.EnumStringEnum.LOWER.getValue(), "lower"); + + assertEquals(EnumTest.EnumIntegerEnum.NUMBER_1.toString(), "1"); + assertTrue(EnumTest.EnumIntegerEnum.NUMBER_1.getValue() == 1); + assertEquals(EnumTest.EnumIntegerEnum.NUMBER_MINUS_1.toString(), "-1"); + assertTrue(EnumTest.EnumIntegerEnum.NUMBER_MINUS_1.getValue() == -1); + + assertEquals(EnumTest.EnumNumberEnum.NUMBER_1_DOT_1.toString(), "1.1"); + assertTrue(EnumTest.EnumNumberEnum.NUMBER_1_DOT_1.getValue() == 1.1); + assertEquals(EnumTest.EnumNumberEnum.NUMBER_MINUS_1_DOT_2.toString(), "-1.2"); + assertTrue(EnumTest.EnumNumberEnum.NUMBER_MINUS_1_DOT_2.getValue() == -1.2); + + try { + // test serialization (object => json) + ObjectMapper mapper = new ObjectMapper(); + mapper.enable(SerializationFeature.WRITE_ENUMS_USING_TO_STRING); + ObjectWriter ow = mapper.writer(); + String json = ow.writeValueAsString(enumTest); + assertEquals(json, "{\"enum_string\":\"lower\",\"enum_string_required\":null,\"enum_integer\":1,\"enum_number\":1.1,\"outerEnum\":null}"); + + // test deserialization (json => object) + EnumTest fromString = mapper.readValue(json, EnumTest.class); + assertEquals(fromString.getEnumString().toString(), "lower"); + assertEquals(fromString.getEnumInteger().toString(), "1"); + assertEquals(fromString.getEnumNumber().toString(), "1.1"); + + } catch (Exception e) { + fail("Exception thrown during serialization/deserialzation of JSON: " + e.getMessage()); + } + } +} diff --git a/CI/samples.ci/client/petstore/java/test-manual/jersey2-java8/JSONTest.java b/CI/samples.ci/client/petstore/java/test-manual/jersey2-java8/JSONTest.java new file mode 100644 index 000000000000..7fb307a3df8d --- /dev/null +++ b/CI/samples.ci/client/petstore/java/test-manual/jersey2-java8/JSONTest.java @@ -0,0 +1,45 @@ +package org.openapitools.client; + +import org.openapitools.client.model.Order; + +import java.lang.Exception; + +import java.time.OffsetDateTime; +import java.time.ZoneId; +import java.time.format.DateTimeFormatter; +import org.junit.*; +import static org.junit.Assert.*; + + +public class JSONTest { + JSON json = null; + Order order = null; + + @Before + public void setup() { + json = new JSON(); + order = new Order(); + } + + @Test + public void testDefaultDate() throws Exception { + final DateTimeFormatter dateFormat = DateTimeFormatter.ISO_OFFSET_DATE_TIME; + final String dateStr = "2015-11-07T14:11:05.267Z"; + order.setShipDate(dateFormat.parse(dateStr, OffsetDateTime::from)); + + String str = json.getContext(null).writeValueAsString(order); + Order o = json.getContext(null).readValue(str, Order.class); + assertEquals(dateStr, dateFormat.format(o.getShipDate())); + } + + @Test + public void testCustomDate() throws Exception { + final DateTimeFormatter dateFormat = DateTimeFormatter.ISO_OFFSET_DATE_TIME.withZone(ZoneId.of("Etc/GMT+2")); + final String dateStr = "2015-11-07T14:11:05-02:00"; + order.setShipDate(dateFormat.parse(dateStr, OffsetDateTime::from)); + + String str = json.getContext(null).writeValueAsString(order); + Order o = json.getContext(null).readValue(str, Order.class); + assertEquals(dateStr, dateFormat.format(o.getShipDate())); + } +} \ No newline at end of file diff --git a/CI/samples.ci/client/petstore/java/test-manual/jersey2/ApiClientTest.java b/CI/samples.ci/client/petstore/java/test-manual/jersey2/ApiClientTest.java new file mode 100644 index 000000000000..6fb1e54b679b --- /dev/null +++ b/CI/samples.ci/client/petstore/java/test-manual/jersey2/ApiClientTest.java @@ -0,0 +1,250 @@ +package org.openapitools.client; + +import org.openapitools.client.auth.*; + +import java.text.DateFormat; +import java.text.SimpleDateFormat; +import java.util.*; + +import org.junit.*; +import static org.junit.Assert.*; + + +public class ApiClientTest { + ApiClient apiClient = null; + + @Before + public void setup() { + apiClient = new ApiClient(); + } + + @Test + public void testParseAndFormatDate() { + // default date format + String dateStr = "2015-11-07T03:49:09.356Z"; + assertEquals(dateStr, apiClient.formatDate(apiClient.parseDate("2015-11-07T03:49:09.356+00:00"))); + assertEquals(dateStr, apiClient.formatDate(apiClient.parseDate("2015-11-07T03:49:09.356Z"))); + assertEquals(dateStr, apiClient.formatDate(apiClient.parseDate("2015-11-07T05:49:09.356+02:00"))); + assertEquals(dateStr, apiClient.formatDate(apiClient.parseDate("2015-11-07T02:49:09.356-01:00"))); + + // custom date format: without milli-seconds, custom time zone + DateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssXXX"); + format.setTimeZone(TimeZone.getTimeZone("GMT+10")); + apiClient.setDateFormat(format); + dateStr = "2015-11-07T13:49:09+10:00"; + assertEquals(dateStr, apiClient.formatDate(apiClient.parseDate("2015-11-07T03:49:09+00:00"))); + assertEquals(dateStr, apiClient.formatDate(apiClient.parseDate("2015-11-07T03:49:09Z"))); + assertEquals(dateStr, apiClient.formatDate(apiClient.parseDate("2015-11-07T00:49:09-03:00"))); + assertEquals(dateStr, apiClient.formatDate(apiClient.parseDate("2015-11-07T13:49:09+10:00"))); + } + + @Test + public void testIsJsonMime() { + assertFalse(apiClient.isJsonMime(null)); + assertFalse(apiClient.isJsonMime("")); + assertFalse(apiClient.isJsonMime("text/plain")); + assertFalse(apiClient.isJsonMime("application/xml")); + assertFalse(apiClient.isJsonMime("application/jsonp")); + assertFalse(apiClient.isJsonMime("example/json")); + assertFalse(apiClient.isJsonMime("example/foo+bar+jsonx")); + assertFalse(apiClient.isJsonMime("example/foo+bar+xjson")); + + assertTrue(apiClient.isJsonMime("application/json")); + assertTrue(apiClient.isJsonMime("application/json; charset=UTF8")); + assertTrue(apiClient.isJsonMime("APPLICATION/JSON")); + + assertTrue(apiClient.isJsonMime("application/problem+json")); + assertTrue(apiClient.isJsonMime("APPLICATION/PROBLEM+JSON")); + assertTrue(apiClient.isJsonMime("application/json\t")); + assertTrue(apiClient.isJsonMime("example/foo+bar+json")); + assertTrue(apiClient.isJsonMime("example/foo+json;x;y")); + assertTrue(apiClient.isJsonMime("example/foo+json\t;")); + assertTrue(apiClient.isJsonMime("Example/fOO+JSON")); + } + + @Test + public void testSelectHeaderAccept() { + String[] accepts = {"application/json", "application/xml"}; + assertEquals("application/json", apiClient.selectHeaderAccept(accepts)); + + accepts = new String[]{"APPLICATION/XML", "APPLICATION/JSON"}; + assertEquals("APPLICATION/JSON", apiClient.selectHeaderAccept(accepts)); + + accepts = new String[]{"application/xml", "application/json; charset=UTF8"}; + assertEquals("application/json; charset=UTF8", apiClient.selectHeaderAccept(accepts)); + + accepts = new String[]{"text/plain", "application/xml"}; + assertEquals("text/plain,application/xml", apiClient.selectHeaderAccept(accepts)); + + accepts = new String[]{}; + assertNull(apiClient.selectHeaderAccept(accepts)); + } + + @Test + public void testSelectHeaderContentType() { + String[] contentTypes = {"application/json", "application/xml"}; + assertEquals("application/json", apiClient.selectHeaderContentType(contentTypes)); + + contentTypes = new String[]{"APPLICATION/JSON", "APPLICATION/XML"}; + assertEquals("APPLICATION/JSON", apiClient.selectHeaderContentType(contentTypes)); + + contentTypes = new String[]{"application/xml", "application/json; charset=UTF8"}; + assertEquals("application/json; charset=UTF8", apiClient.selectHeaderContentType(contentTypes)); + + contentTypes = new String[]{"text/plain", "application/xml"}; + assertEquals("text/plain", apiClient.selectHeaderContentType(contentTypes)); + + contentTypes = new String[]{}; + assertEquals("application/json", apiClient.selectHeaderContentType(contentTypes)); + } + + @Test + public void testGetAuthentications() { + Map auths = apiClient.getAuthentications(); + + Authentication auth = auths.get("api_key"); + assertNotNull(auth); + assertTrue(auth instanceof ApiKeyAuth); + ApiKeyAuth apiKeyAuth = (ApiKeyAuth) auth; + assertEquals("header", apiKeyAuth.getLocation()); + assertEquals("api_key", apiKeyAuth.getParamName()); + + auth = auths.get("petstore_auth"); + assertTrue(auth instanceof OAuth); + assertSame(auth, apiClient.getAuthentication("petstore_auth")); + + assertNull(auths.get("unknown")); + + try { + auths.put("my_auth", new HttpBasicAuth()); + fail("the authentications returned should not be modifiable"); + } catch (UnsupportedOperationException e) { + } + } + + @Ignore("There is no more basic auth in petstore security definitions") + @Test + public void testSetUsernameAndPassword() { + HttpBasicAuth auth = null; + for (Authentication _auth : apiClient.getAuthentications().values()) { + if (_auth instanceof HttpBasicAuth) { + auth = (HttpBasicAuth) _auth; + break; + } + } + auth.setUsername(null); + auth.setPassword(null); + + apiClient.setUsername("my-username"); + apiClient.setPassword("my-password"); + assertEquals("my-username", auth.getUsername()); + assertEquals("my-password", auth.getPassword()); + + // reset values + auth.setUsername(null); + auth.setPassword(null); + } + + @Test + public void testSetApiKeyAndPrefix() { + ApiKeyAuth auth = null; + for (Authentication _auth : apiClient.getAuthentications().values()) { + if (_auth instanceof ApiKeyAuth) { + auth = (ApiKeyAuth) _auth; + break; + } + } + auth.setApiKey(null); + auth.setApiKeyPrefix(null); + + apiClient.setApiKey("my-api-key"); + apiClient.setApiKeyPrefix("Token"); + assertEquals("my-api-key", auth.getApiKey()); + assertEquals("Token", auth.getApiKeyPrefix()); + + // reset values + auth.setApiKey(null); + auth.setApiKeyPrefix(null); + } + + @Test + public void testParameterToPairsWhenNameIsInvalid() throws Exception { + List pairs_a = apiClient.parameterToPairs("csv", null, new Integer(1)); + List pairs_b = apiClient.parameterToPairs("csv", "", new Integer(1)); + + assertTrue(pairs_a.isEmpty()); + assertTrue(pairs_b.isEmpty()); + } + + @Test + public void testParameterToPairsWhenValueIsNull() throws Exception { + List pairs = apiClient.parameterToPairs("csv", "param-a", null); + + assertTrue(pairs.isEmpty()); + } + + @Test + public void testParameterToPairsWhenValueIsEmptyStrings() throws Exception { + + // single empty string + List pairs = apiClient.parameterToPairs("csv", "param-a", " "); + assertEquals(1, pairs.size()); + + // list of empty strings + List strs = new ArrayList(); + strs.add(" "); + strs.add(" "); + strs.add(" "); + + List concatStrings = apiClient.parameterToPairs("csv", "param-a", strs); + + assertEquals(1, concatStrings.size()); + assertFalse(concatStrings.get(0).getValue().isEmpty()); // should contain some delimiters + } + + @Test + public void testParameterToPairsWhenValueIsNotCollection() throws Exception { + String name = "param-a"; + Integer value = 1; + + List pairs = apiClient.parameterToPairs("csv", name, value); + + assertEquals(1, pairs.size()); + assertEquals(value, Integer.valueOf(pairs.get(0).getValue())); + } + + @Test + public void testParameterToPairsWhenValueIsCollection() throws Exception { + Map collectionFormatMap = new HashMap(); + collectionFormatMap.put("csv", ","); + collectionFormatMap.put("tsv", "\t"); + collectionFormatMap.put("ssv", " "); + collectionFormatMap.put("pipes", "\\|"); + collectionFormatMap.put("", ","); // no format, must default to csv + collectionFormatMap.put("unknown", ","); // all other formats, must default to csv + + String name = "param-a"; + + List values = new ArrayList(); + values.add("value-a"); + values.add(123); + values.add(new Date()); + + // check for multi separately + List multiPairs = apiClient.parameterToPairs("multi", name, values); + assertEquals(values.size(), multiPairs.size()); + + // all other formats + for (String collectionFormat : collectionFormatMap.keySet()) { + List pairs = apiClient.parameterToPairs(collectionFormat, name, values); + + assertEquals(1, pairs.size()); + + String delimiter = collectionFormatMap.get(collectionFormat); + String[] pairValueSplit = pairs.get(0).getValue().split(delimiter); + + // must equal input values + assertEquals(values.size(), pairValueSplit.length); + } + } +} diff --git a/CI/samples.ci/client/petstore/java/test-manual/jersey2/JSONTest.java b/CI/samples.ci/client/petstore/java/test-manual/jersey2/JSONTest.java new file mode 100644 index 000000000000..f21b852065c3 --- /dev/null +++ b/CI/samples.ci/client/petstore/java/test-manual/jersey2/JSONTest.java @@ -0,0 +1,58 @@ +package org.openapitools.client; + +import org.openapitools.client.model.Order; +import org.junit.Before; +import org.junit.Test; +import org.threeten.bp.OffsetDateTime; +import org.threeten.bp.ZoneId; +import org.threeten.bp.format.DateTimeFormatter; + +import static org.junit.Assert.*; + + +public class JSONTest { + private JSON json = null; + private Order order = null; + + @Before + public void setup() { + json = new ApiClient().getJSON(); + order = new Order(); + } + + @Test + public void testDefaultDate() throws Exception { + final DateTimeFormatter dateFormat = DateTimeFormatter.ISO_OFFSET_DATE_TIME; + final String dateStr = "2015-11-07T14:11:05.267Z"; + order.setShipDate(dateFormat.parse(dateStr, OffsetDateTime.FROM)); + + String str = json.getContext(null).writeValueAsString(order); + Order o = json.getContext(null).readValue(str, Order.class); + assertEquals(dateStr, dateFormat.format(o.getShipDate())); + } + + @Test + public void testCustomDate() throws Exception { + final DateTimeFormatter dateFormat = DateTimeFormatter.ISO_OFFSET_DATE_TIME.withZone(ZoneId.of("Etc/GMT+2")); + final String dateStr = "2015-11-07T14:11:05-02:00"; + order.setShipDate(dateFormat.parse(dateStr, OffsetDateTime.FROM)); + + String str = json.getContext(null).writeValueAsString(order); + Order o = json.getContext(null).readValue(str, Order.class); + assertEquals(dateStr, dateFormat.format(o.getShipDate())); + } + + @Test + public void testSqlDateSerialization() throws Exception { + String str = json.getContext(null).writeValueAsString(new java.sql.Date(10)); + assertEquals("\"1970-01-01\"", str); + } + + @Test + public void testSqlDateDeserialization() throws Exception { + final String str = "1970-01-01"; + java.sql.Date date = json.getContext(null).readValue("\"" + str + "\"", java.sql.Date.class); + assertEquals(date.toString(), str); + } + +} \ No newline at end of file diff --git a/CI/samples.ci/client/petstore/java/test-manual/jersey2/auth/ApiKeyAuthTest.java b/CI/samples.ci/client/petstore/java/test-manual/jersey2/auth/ApiKeyAuthTest.java new file mode 100644 index 000000000000..d9b17065f7ca --- /dev/null +++ b/CI/samples.ci/client/petstore/java/test-manual/jersey2/auth/ApiKeyAuthTest.java @@ -0,0 +1,47 @@ +package org.openapitools.client.auth; + +import java.util.HashMap; +import java.util.ArrayList; +import java.util.Map; +import java.util.List; + +import org.openapitools.client.Pair; +import org.junit.*; +import static org.junit.Assert.*; + + +public class ApiKeyAuthTest { + @Test + public void testApplyToParamsInQuery() { + List queryParams = new ArrayList(); + Map headerParams = new HashMap(); + + ApiKeyAuth auth = new ApiKeyAuth("query", "api_key"); + auth.setApiKey("my-api-key"); + auth.applyToParams(queryParams, headerParams); + + assertEquals(1, queryParams.size()); + for (Pair queryParam : queryParams) { + assertEquals("my-api-key", queryParam.getValue()); + } + + // no changes to header parameters + assertEquals(0, headerParams.size()); + } + + @Test + public void testApplyToParamsInHeaderWithPrefix() { + List queryParams = new ArrayList(); + Map headerParams = new HashMap(); + + ApiKeyAuth auth = new ApiKeyAuth("header", "X-API-TOKEN"); + auth.setApiKey("my-api-token"); + auth.setApiKeyPrefix("Token"); + auth.applyToParams(queryParams, headerParams); + + // no changes to query parameters + assertEquals(0, queryParams.size()); + assertEquals(1, headerParams.size()); + assertEquals("Token my-api-token", headerParams.get("X-API-TOKEN")); + } +} diff --git a/CI/samples.ci/client/petstore/java/test-manual/jersey2/auth/HttpBasicAuthTest.java b/CI/samples.ci/client/petstore/java/test-manual/jersey2/auth/HttpBasicAuthTest.java new file mode 100644 index 000000000000..668342d96d7c --- /dev/null +++ b/CI/samples.ci/client/petstore/java/test-manual/jersey2/auth/HttpBasicAuthTest.java @@ -0,0 +1,52 @@ +package org.openapitools.client.auth; + +import java.util.HashMap; +import java.util.ArrayList; +import java.util.Map; +import java.util.List; + +import org.openapitools.client.Pair; +import org.junit.*; +import static org.junit.Assert.*; + + +public class HttpBasicAuthTest { + HttpBasicAuth auth = null; + + @Before + public void setup() { + auth = new HttpBasicAuth(); + } + + @Test + public void testApplyToParams() { + List queryParams = new ArrayList(); + Map headerParams = new HashMap(); + + auth.setUsername("my-username"); + auth.setPassword("my-password"); + auth.applyToParams(queryParams, headerParams); + + // no changes to query parameters + assertEquals(0, queryParams.size()); + assertEquals(1, headerParams.size()); + // the string below is base64-encoded result of "my-username:my-password" with the "Basic " prefix + String expected = "Basic bXktdXNlcm5hbWU6bXktcGFzc3dvcmQ="; + assertEquals(expected, headerParams.get("Authorization")); + + // null username should be treated as empty string + auth.setUsername(null); + auth.applyToParams(queryParams, headerParams); + // the string below is base64-encoded result of ":my-password" with the "Basic " prefix + expected = "Basic Om15LXBhc3N3b3Jk"; + assertEquals(expected, headerParams.get("Authorization")); + + // null password should be treated as empty string + auth.setUsername("my-username"); + auth.setPassword(null); + auth.applyToParams(queryParams, headerParams); + // the string below is base64-encoded result of "my-username:" with the "Basic " prefix + expected = "Basic bXktdXNlcm5hbWU6"; + assertEquals(expected, headerParams.get("Authorization")); + } +} diff --git a/CI/samples.ci/client/petstore/java/test-manual/jersey2/model/EnumValueTest.java b/CI/samples.ci/client/petstore/java/test-manual/jersey2/model/EnumValueTest.java new file mode 100644 index 000000000000..47bfe940d3c3 --- /dev/null +++ b/CI/samples.ci/client/petstore/java/test-manual/jersey2/model/EnumValueTest.java @@ -0,0 +1,63 @@ +package org.openapitools.client.model; + +import org.junit.Test; + +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.ObjectWriter; +import com.fasterxml.jackson.databind.SerializationFeature; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; +import static org.junit.Assert.fail; + +public class EnumValueTest { + + @Test + public void testEnumClass() { + assertEquals(EnumClass._ABC.toString(), "_abc"); + assertEquals(EnumClass._EFG.toString(), "-efg"); + assertEquals(EnumClass._XYZ_.toString(), "(xyz)"); + } + + @Test + public void testEnumTest() { + // test enum value + EnumTest enumTest = new EnumTest(); + enumTest.setEnumString(EnumTest.EnumStringEnum.LOWER); + enumTest.setEnumInteger(EnumTest.EnumIntegerEnum.NUMBER_1); + enumTest.setEnumNumber(EnumTest.EnumNumberEnum.NUMBER_1_DOT_1); + + assertEquals(EnumTest.EnumStringEnum.UPPER.toString(), "UPPER"); + assertEquals(EnumTest.EnumStringEnum.UPPER.getValue(), "UPPER"); + assertEquals(EnumTest.EnumStringEnum.LOWER.toString(), "lower"); + assertEquals(EnumTest.EnumStringEnum.LOWER.getValue(), "lower"); + + assertEquals(EnumTest.EnumIntegerEnum.NUMBER_1.toString(), "1"); + assertTrue(EnumTest.EnumIntegerEnum.NUMBER_1.getValue() == 1); + assertEquals(EnumTest.EnumIntegerEnum.NUMBER_MINUS_1.toString(), "-1"); + assertTrue(EnumTest.EnumIntegerEnum.NUMBER_MINUS_1.getValue() == -1); + + assertEquals(EnumTest.EnumNumberEnum.NUMBER_1_DOT_1.toString(), "1.1"); + assertTrue(EnumTest.EnumNumberEnum.NUMBER_1_DOT_1.getValue() == 1.1); + assertEquals(EnumTest.EnumNumberEnum.NUMBER_MINUS_1_DOT_2.toString(), "-1.2"); + assertTrue(EnumTest.EnumNumberEnum.NUMBER_MINUS_1_DOT_2.getValue() == -1.2); + + try { + // test serialization (object => json) + ObjectMapper mapper = new ObjectMapper(); + mapper.enable(SerializationFeature.WRITE_ENUMS_USING_TO_STRING); + ObjectWriter ow = mapper.writer(); + String json = ow.writeValueAsString(enumTest); + assertEquals(json, "{\"enum_string\":\"lower\",\"enum_string_required\":null,\"enum_integer\":1,\"enum_number\":1.1,\"outerEnum\":null}"); + + // test deserialization (json => object) + EnumTest fromString = mapper.readValue(json, EnumTest.class); + assertEquals(fromString.getEnumString().toString(), "lower"); + assertEquals(fromString.getEnumInteger().toString(), "1"); + assertEquals(fromString.getEnumNumber().toString(), "1.1"); + + } catch (Exception e) { + fail("Exception thrown during serialization/deserialzation of JSON: " + e.getMessage()); + } + } +} diff --git a/CI/samples.ci/client/petstore/java/test-manual/okhttp-gson/ApiClientTest.java b/CI/samples.ci/client/petstore/java/test-manual/okhttp-gson/ApiClientTest.java new file mode 100644 index 000000000000..5167afc326b6 --- /dev/null +++ b/CI/samples.ci/client/petstore/java/test-manual/okhttp-gson/ApiClientTest.java @@ -0,0 +1,330 @@ +package org.openapitools.client; + +import org.openapitools.client.auth.*; + +import java.text.DateFormat; +import java.text.SimpleDateFormat; +import java.util.*; +import java.util.TimeZone; + +import org.junit.*; +import static org.junit.Assert.*; + + +public class ApiClientTest { + ApiClient apiClient; + JSON json; + + @Before + public void setup() { + apiClient = new ApiClient(); + json = apiClient.getJSON(); + } + + @Test + public void testIsJsonMime() { + assertFalse(apiClient.isJsonMime(null)); + assertFalse(apiClient.isJsonMime("")); + assertFalse(apiClient.isJsonMime("text/plain")); + assertFalse(apiClient.isJsonMime("application/xml")); + assertFalse(apiClient.isJsonMime("application/jsonp")); + assertFalse(apiClient.isJsonMime("example/json")); + assertFalse(apiClient.isJsonMime("example/foo+bar+jsonx")); + assertFalse(apiClient.isJsonMime("example/foo+bar+xjson")); + + assertTrue(apiClient.isJsonMime("application/json")); + assertTrue(apiClient.isJsonMime("application/json; charset=UTF8")); + assertTrue(apiClient.isJsonMime("APPLICATION/JSON")); + + assertTrue(apiClient.isJsonMime("application/problem+json")); + assertTrue(apiClient.isJsonMime("APPLICATION/PROBLEM+JSON")); + assertTrue(apiClient.isJsonMime("application/json\t")); + assertTrue(apiClient.isJsonMime("example/foo+bar+json")); + assertTrue(apiClient.isJsonMime("example/foo+json;x;y")); + assertTrue(apiClient.isJsonMime("example/foo+json\t;")); + assertTrue(apiClient.isJsonMime("Example/fOO+JSON")); + + assertTrue(apiClient.isJsonMime("application/json-patch+json")); + } + + @Test + public void testSelectHeaderAccept() { + String[] accepts = {"application/json", "application/xml"}; + assertEquals("application/json", apiClient.selectHeaderAccept(accepts)); + + accepts = new String[]{"APPLICATION/XML", "APPLICATION/JSON"}; + assertEquals("APPLICATION/JSON", apiClient.selectHeaderAccept(accepts)); + + accepts = new String[]{"application/xml", "application/json; charset=UTF8"}; + assertEquals("application/json; charset=UTF8", apiClient.selectHeaderAccept(accepts)); + + accepts = new String[]{"text/plain", "application/xml"}; + assertEquals("text/plain,application/xml", apiClient.selectHeaderAccept(accepts)); + + accepts = new String[]{}; + assertNull(apiClient.selectHeaderAccept(accepts)); + } + + @Test + public void testSelectHeaderContentType() { + String[] contentTypes = {"application/json", "application/xml"}; + assertEquals("application/json", apiClient.selectHeaderContentType(contentTypes)); + + contentTypes = new String[]{"APPLICATION/JSON", "APPLICATION/XML"}; + assertEquals("APPLICATION/JSON", apiClient.selectHeaderContentType(contentTypes)); + + contentTypes = new String[]{"application/xml", "application/json; charset=UTF8"}; + assertEquals("application/json; charset=UTF8", apiClient.selectHeaderContentType(contentTypes)); + + contentTypes = new String[]{"text/plain", "application/xml"}; + assertEquals("text/plain", apiClient.selectHeaderContentType(contentTypes)); + + contentTypes = new String[]{}; + assertEquals("application/json", apiClient.selectHeaderContentType(contentTypes)); + } + + @Test + public void testGetAuthentications() { + Map auths = apiClient.getAuthentications(); + + Authentication auth = auths.get("api_key"); + assertNotNull(auth); + assertTrue(auth instanceof ApiKeyAuth); + ApiKeyAuth apiKeyAuth = (ApiKeyAuth) auth; + assertEquals("header", apiKeyAuth.getLocation()); + assertEquals("api_key", apiKeyAuth.getParamName()); + + auth = auths.get("petstore_auth"); + assertTrue(auth instanceof OAuth); + assertSame(auth, apiClient.getAuthentication("petstore_auth")); + + assertNull(auths.get("unknown")); + + try { + auths.put("my_auth", new HttpBasicAuth()); + fail("the authentications returned should not be modifiable"); + } catch (UnsupportedOperationException e) { + } + } + + /* + @Test + public void testSetUsernameAndPassword() { + HttpBasicAuth auth = null; + for (Authentication _auth : apiClient.getAuthentications().values()) { + if (_auth instanceof HttpBasicAuth) { + auth = (HttpBasicAuth) _auth; + break; + } + } + auth.setUsername(null); + auth.setPassword(null); + + apiClient.setUsername("my-username"); + apiClient.setPassword("my-password"); + assertEquals("my-username", auth.getUsername()); + assertEquals("my-password", auth.getPassword()); + + // reset values + auth.setUsername(null); + auth.setPassword(null); + } + */ + + @Test + public void testSetApiKeyAndPrefix() { + ApiKeyAuth auth = null; + for (Authentication _auth : apiClient.getAuthentications().values()) { + if (_auth instanceof ApiKeyAuth) { + auth = (ApiKeyAuth) _auth; + break; + } + } + auth.setApiKey(null); + auth.setApiKeyPrefix(null); + + apiClient.setApiKey("my-api-key"); + apiClient.setApiKeyPrefix("Token"); + assertEquals("my-api-key", auth.getApiKey()); + assertEquals("Token", auth.getApiKeyPrefix()); + + // reset values + auth.setApiKey(null); + auth.setApiKeyPrefix(null); + } + + @Test + public void testGetAndSetConnectTimeout() { + // connect timeout defaults to 10 seconds + assertEquals(10000, apiClient.getConnectTimeout()); + assertEquals(10000, apiClient.getHttpClient().getConnectTimeout()); + + apiClient.setConnectTimeout(0); + assertEquals(0, apiClient.getConnectTimeout()); + assertEquals(0, apiClient.getHttpClient().getConnectTimeout()); + + apiClient.setConnectTimeout(10000); + } + + @Test + public void testGetAndSetReadTimeout() { + // read timeout defaults to 10 seconds + assertEquals(10000, apiClient.getReadTimeout()); + assertEquals(10000, apiClient.getHttpClient().getReadTimeout()); + + apiClient.setReadTimeout(0); + assertEquals(0, apiClient.getReadTimeout()); + assertEquals(0, apiClient.getHttpClient().getReadTimeout()); + + apiClient.setReadTimeout(10000); + } + + @Test + public void testGetAndSetWriteTimeout() { + // write timeout defaults to 10 seconds + assertEquals(10000, apiClient.getWriteTimeout()); + assertEquals(10000, apiClient.getHttpClient().getWriteTimeout()); + + apiClient.setWriteTimeout(0); + assertEquals(0, apiClient.getWriteTimeout()); + assertEquals(0, apiClient.getHttpClient().getWriteTimeout()); + + apiClient.setWriteTimeout(10000); + } + + @Test + public void testParameterToPairWhenNameIsInvalid() throws Exception { + List pairs_a = apiClient.parameterToPair(null, new Integer(1)); + List pairs_b = apiClient.parameterToPair("", new Integer(1)); + + assertTrue(pairs_a.isEmpty()); + assertTrue(pairs_b.isEmpty()); + } + + @Test + public void testParameterToPairWhenValueIsNull() throws Exception { + List pairs = apiClient.parameterToPair("param-a", null); + + assertTrue(pairs.isEmpty()); + } + + @Test + public void testParameterToPairWhenValueIsEmptyString() throws Exception { + // single empty string + List pairs = apiClient.parameterToPair("param-a", " "); + assertEquals(1, pairs.size()); + } + + @Test + public void testParameterToPairWhenValueIsNotCollection() throws Exception { + String name = "param-a"; + Integer value = 1; + + List pairs = apiClient.parameterToPair(name, value); + + assertEquals(1, pairs.size()); + assertEquals(value, Integer.valueOf(pairs.get(0).getValue())); + } + + @Test + public void testParameterToPairWhenValueIsCollection() throws Exception { + List values = new ArrayList(); + values.add("value-a"); + values.add(123); + values.add(new Date()); + + List pairs = apiClient.parameterToPair("param-a", values); + assertEquals(0, pairs.size()); + } + + @Test + public void testParameterToPairsWhenNameIsInvalid() throws Exception { + List objects = new ArrayList(); + objects.add(new Integer(1)); + + List pairs_a = apiClient.parameterToPairs("csv", null, objects); + List pairs_b = apiClient.parameterToPairs("csv", "", objects); + + assertTrue(pairs_a.isEmpty()); + assertTrue(pairs_b.isEmpty()); + } + + @Test + public void testParameterToPairsWhenValueIsNull() throws Exception { + List pairs = apiClient.parameterToPairs("csv", "param-a", null); + + assertTrue(pairs.isEmpty()); + } + + @Test + public void testParameterToPairsWhenValueIsEmptyStrings() throws Exception { + // list of empty strings + List strs = new ArrayList(); + strs.add(" "); + strs.add(" "); + strs.add(" "); + + List concatStrings = apiClient.parameterToPairs("csv", "param-a", strs); + + assertEquals(1, concatStrings.size()); + assertFalse(concatStrings.get(0).getValue().isEmpty()); // should contain some delimiters + } + + @Test + public void testParameterToPairsWhenValueIsCollection() throws Exception { + Map collectionFormatMap = new HashMap(); + collectionFormatMap.put("csv", ","); + collectionFormatMap.put("tsv", "\t"); + collectionFormatMap.put("ssv", " "); + collectionFormatMap.put("pipes", "|"); + collectionFormatMap.put("", ","); // no format, must default to csv + collectionFormatMap.put("unknown", ","); // all other formats, must default to csv + + String name = "param-a"; + + List values = new ArrayList(); + values.add("value-a"); + values.add(123); + values.add(new Date()); + + // check for multi separately + List multiPairs = apiClient.parameterToPairs("multi", name, values); + assertEquals(values.size(), multiPairs.size()); + for (int i = 0; i < values.size(); i++) { + assertEquals(apiClient.escapeString(apiClient.parameterToString(values.get(i))), multiPairs.get(i).getValue()); + } + + // all other formats + for (String collectionFormat : collectionFormatMap.keySet()) { + List pairs = apiClient.parameterToPairs(collectionFormat, name, values); + + assertEquals(1, pairs.size()); + + String delimiter = collectionFormatMap.get(collectionFormat); + if (!delimiter.equals(",")) { + // commas are not escaped because they are reserved characters in URIs + delimiter = apiClient.escapeString(delimiter); + } + String[] pairValueSplit = pairs.get(0).getValue().split(delimiter); + + // must equal input values + assertEquals(values.size(), pairValueSplit.length); + for (int i = 0; i < values.size(); i++) { + assertEquals(apiClient.escapeString(apiClient.parameterToString(values.get(i))), pairValueSplit[i]); + } + } + } + + @Test + public void testSanitizeFilename() { + assertEquals("sun", apiClient.sanitizeFilename("sun")); + assertEquals("sun.gif", apiClient.sanitizeFilename("sun.gif")); + assertEquals("sun.gif", apiClient.sanitizeFilename("../sun.gif")); + assertEquals("sun.gif", apiClient.sanitizeFilename("/var/tmp/sun.gif")); + assertEquals("sun.gif", apiClient.sanitizeFilename("./sun.gif")); + assertEquals("sun.gif", apiClient.sanitizeFilename("..\\sun.gif")); + assertEquals("sun.gif", apiClient.sanitizeFilename("\\var\\tmp\\sun.gif")); + assertEquals("sun.gif", apiClient.sanitizeFilename("c:\\var\\tmp\\sun.gif")); + assertEquals("sun.gif", apiClient.sanitizeFilename(".\\sun.gif")); + } +} diff --git a/CI/samples.ci/client/petstore/java/test-manual/okhttp-gson/JSONTest.java b/CI/samples.ci/client/petstore/java/test-manual/okhttp-gson/JSONTest.java new file mode 100644 index 000000000000..e7687d0b33b1 --- /dev/null +++ b/CI/samples.ci/client/petstore/java/test-manual/okhttp-gson/JSONTest.java @@ -0,0 +1,201 @@ +package org.openapitools.client; + +import com.google.gson.reflect.TypeToken; + +import org.openapitools.client.model.Order; + +import java.lang.Exception; +import java.lang.reflect.Type; +import java.nio.charset.StandardCharsets; +import java.text.DateFormat; +import java.text.SimpleDateFormat; +import java.util.Calendar; +import java.util.Date; +import java.util.GregorianCalendar; +import java.util.TimeZone; + +import okio.ByteString; +import org.junit.*; +import org.threeten.bp.LocalDate; +import org.threeten.bp.OffsetDateTime; +import org.threeten.bp.ZoneId; +import org.threeten.bp.ZoneOffset; +import org.threeten.bp.format.DateTimeFormatter; + +import static org.junit.Assert.*; + +public class JSONTest { + private ApiClient apiClient = null; + private JSON json = null; + private Order order = null; + + @Before + public void setup() { + apiClient = new ApiClient(); + json = apiClient.getJSON(); + order = new Order(); + } + + @Test + public void testSqlDateTypeAdapter() { + final String str = "\"2015-11-07\""; + final java.sql.Date date = java.sql.Date.valueOf("2015-11-07"); + + assertEquals(str, json.serialize(date)); + assertEquals(json.deserialize(str, java.sql.Date.class), date); + assertEquals(json.deserialize("\"2015-11-07T03:49:09.356" + getCurrentTimezoneOffset() + "\"", java.sql.Date.class).toString(), date.toString()); + + // custom date format: without day + DateFormat format = new SimpleDateFormat("yyyy-MM"); + apiClient.setSqlDateFormat(format); + String dateStr = "\"2015-11\""; + assertEquals(dateStr, json.serialize(json.deserialize("\"2015-11-07T03:49:09Z\"", java.sql.Date.class))); + assertEquals(dateStr, json.serialize(json.deserialize("\"2015-11\"", java.sql.Date.class))); + } + + @Test + public void testDateTypeAdapter() { + Calendar cal = new GregorianCalendar(2015, 10, 7, 3, 49, 9); + cal.setTimeZone(TimeZone.getTimeZone("UTC")); + + assertEquals(json.deserialize("\"2015-11-07T05:49:09+02\"", Date.class), cal.getTime()); + + cal.set(Calendar.MILLISECOND, 300); + assertEquals(json.deserialize("\"2015-11-07T03:49:09.3Z\"", Date.class), cal.getTime()); + + cal.set(Calendar.MILLISECOND, 356); + Date date = cal.getTime(); + + final String utcDate = "\"2015-11-07T03:49:09.356Z\""; + assertEquals(json.deserialize(utcDate, Date.class), date); + assertEquals(json.deserialize("\"2015-11-07T03:49:09.356+00:00\"", Date.class), date); + assertEquals(json.deserialize("\"2015-11-07T05:49:09.356+02:00\"", Date.class), date); + assertEquals(json.deserialize("\"2015-11-07T02:49:09.356-01:00\"", Date.class), date); + assertEquals(json.deserialize("\"2015-11-07T03:49:09.356Z\"", Date.class), date); + assertEquals(json.deserialize("\"2015-11-07T03:49:09.356+00\"", Date.class), date); + assertEquals(json.deserialize("\"2015-11-07T02:49:09.356-0100\"", Date.class), date); + assertEquals(json.deserialize("\"2015-11-07T03:49:09.356456789Z\"", Date.class), date); + + assertEquals(utcDate, json.serialize(date)); + + // custom datetime format: without milli-seconds, custom time zone + DateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssXXX"); + format.setTimeZone(TimeZone.getTimeZone("GMT+10")); + apiClient.setDateFormat(format); + + String dateStr = "\"2015-11-07T13:49:09+10:00\""; + assertEquals(dateStr, json.serialize(json.deserialize("\"2015-11-07T03:49:09+00:00\"", Date.class))); + assertEquals(dateStr, json.serialize(json.deserialize("\"2015-11-07T03:49:09Z\"", Date.class))); + assertEquals(dateStr, json.serialize(json.deserialize("\"2015-11-07T00:49:09-03:00\"", Date.class))); + + try { + // invalid time zone format + json.deserialize("\"2015-11-07T03:49:09+00\"", Date.class); + fail("json parsing should fail"); + } catch (RuntimeException e) { + // OK + } + try { + // unexpected miliseconds + json.deserialize("\"2015-11-07T03:49:09.000Z\"", Date.class); + fail("json parsing should fail"); + } catch (RuntimeException e) { + // OK + } + + } + + @Test + public void testOffsetDateTimeTypeAdapter() { + final String str = "\"2016-09-09T08:02:03.123-03:00\""; + OffsetDateTime date = OffsetDateTime.of(2016, 9, 9, 8, 2, 3, 123000000, ZoneOffset.of("-3")); + + assertEquals(str, json.serialize(date)); + //Use toString() instead of isEqual to verify that the offset is preserved + assertEquals(json.deserialize(str, OffsetDateTime.class).toString(), date.toString()); + } + + @Test + public void testLocalDateTypeAdapter() { + final String str = "\"2016-09-09\""; + final LocalDate date = LocalDate.of(2016, 9, 9); + + assertEquals(str, json.serialize(date)); + assertEquals(json.deserialize(str, LocalDate.class), date); + } + + + @Test + public void testDefaultDate() throws Exception { + final DateTimeFormatter datetimeFormat = DateTimeFormatter.ISO_OFFSET_DATE_TIME; + final String dateStr = "2015-11-07T14:11:05.267Z"; + order.setShipDate(datetimeFormat.parse(dateStr, OffsetDateTime.FROM)); + + String str = json.serialize(order); + Type type = new TypeToken() { }.getType(); + Order o = json.deserialize(str, type); + assertEquals(dateStr, datetimeFormat.format(o.getShipDate())); + } + + @Test + public void testCustomDate() throws Exception { + final DateTimeFormatter datetimeFormat = DateTimeFormatter.ISO_OFFSET_DATE_TIME.withZone(ZoneId.of("Etc/GMT+2")); + final String dateStr = "2015-11-07T14:11:05-02:00"; + order.setShipDate(datetimeFormat.parse(dateStr, OffsetDateTime.FROM)); + + String str = json.serialize(order); + Type type = new TypeToken() { }.getType(); + Order o = json.deserialize(str, type); + assertEquals(dateStr, datetimeFormat.format(o.getShipDate())); + } + + @Test + public void testByteArrayTypeAdapterSerialization() { + // Arrange + final String expectedBytesAsString = "Let's pretend this a jpg or something"; + final byte[] expectedBytes = expectedBytesAsString.getBytes(StandardCharsets.UTF_8); + + // Act + String serializedBytesWithQuotes = json.serialize(expectedBytes); + + // Assert + String serializedBytes = serializedBytesWithQuotes.substring(1, serializedBytesWithQuotes.length() - 1); + if (json.getGson().htmlSafe()) { + serializedBytes = serializedBytes.replaceAll("\\\\u003d", "="); + } + ByteString actualAsByteString = ByteString.decodeBase64(serializedBytes); + byte[] actualBytes = actualAsByteString.toByteArray(); + assertEquals(expectedBytesAsString, new String(actualBytes, StandardCharsets.UTF_8)); + } + + @Test + public void testByteArrayTypeAdapterDeserialization() { + // Arrange + final String expectedBytesAsString = "Let's pretend this a jpg or something"; + final byte[] expectedBytes = expectedBytesAsString.getBytes(StandardCharsets.UTF_8); + final ByteString expectedByteString = ByteString.of(expectedBytes); + final String serializedBytes = expectedByteString.base64(); + final String serializedBytesWithQuotes = "\"" + serializedBytes + "\""; + Type type = new TypeToken() { }.getType(); + + // Act + byte[] actualDeserializedBytes = json.deserialize(serializedBytesWithQuotes, type); + + // Assert + assertEquals(expectedBytesAsString, new String(actualDeserializedBytes, StandardCharsets.UTF_8)); + } + + // Obtained 22JAN2018 from stackoverflow answer by PuguaSoft https://stackoverflow.com/questions/11399491/java-timezone-offset + // Direct link https://stackoverflow.com/a/16680815/3166133 + public static String getCurrentTimezoneOffset() { + + TimeZone tz = TimeZone.getDefault(); + Calendar cal = GregorianCalendar.getInstance(tz); + int offsetInMillis = tz.getOffset(cal.getTimeInMillis()); + + String offset = String.format("%02d:%02d", Math.abs(offsetInMillis / 3600000), Math.abs((offsetInMillis / 60000) % 60)); + offset = (offsetInMillis >= 0 ? "+" : "-") + offset; + + return offset; + } +} \ No newline at end of file diff --git a/CI/samples.ci/client/petstore/java/test-manual/okhttp-gson/auth/ApiKeyAuthTest.java b/CI/samples.ci/client/petstore/java/test-manual/okhttp-gson/auth/ApiKeyAuthTest.java new file mode 100644 index 000000000000..d5a88132307c --- /dev/null +++ b/CI/samples.ci/client/petstore/java/test-manual/okhttp-gson/auth/ApiKeyAuthTest.java @@ -0,0 +1,76 @@ +package org.openapitools.client.auth; + +import java.util.HashMap; +import java.util.ArrayList; +import java.util.Map; +import java.util.List; + +import org.openapitools.client.Pair; +import org.junit.*; +import static org.junit.Assert.*; + + +public class ApiKeyAuthTest { + @Test + public void testApplyToParamsInQuery() { + List queryParams = new ArrayList(); + Map headerParams = new HashMap(); + + ApiKeyAuth auth = new ApiKeyAuth("query", "api_key"); + auth.setApiKey("my-api-key"); + auth.applyToParams(queryParams, headerParams); + + assertEquals(1, queryParams.size()); + for (Pair queryParam : queryParams) { + assertEquals("my-api-key", queryParam.getValue()); + } + + // no changes to header parameters + assertEquals(0, headerParams.size()); + } + + @Test + public void testApplyToParamsInQueryWithNullValue() { + List queryParams = new ArrayList(); + Map headerParams = new HashMap(); + + ApiKeyAuth auth = new ApiKeyAuth("query", "api_key"); + auth.setApiKey(null); + auth.applyToParams(queryParams, headerParams); + + // no changes to parameters + assertEquals(0, queryParams.size()); + assertEquals(0, headerParams.size()); + } + + @Test + public void testApplyToParamsInHeaderWithPrefix() { + List queryParams = new ArrayList(); + Map headerParams = new HashMap(); + + ApiKeyAuth auth = new ApiKeyAuth("header", "X-API-TOKEN"); + auth.setApiKey("my-api-token"); + auth.setApiKeyPrefix("Token"); + auth.applyToParams(queryParams, headerParams); + + // no changes to query parameters + assertEquals(0, queryParams.size()); + assertEquals(1, headerParams.size()); + assertEquals("Token my-api-token", headerParams.get("X-API-TOKEN")); + } + + @Test + public void testApplyToParamsInHeaderWithNullValue() { + List queryParams = new ArrayList(); + Map headerParams = new HashMap(); + + ApiKeyAuth auth = new ApiKeyAuth("header", "X-API-TOKEN"); + auth.setApiKey(null); + auth.setApiKeyPrefix("Token"); + auth.applyToParams(queryParams, headerParams); + + // no changes to parameters + assertEquals(0, queryParams.size()); + assertEquals(0, headerParams.size()); + } +} diff --git a/CI/samples.ci/client/petstore/java/test-manual/okhttp-gson/auth/HttpBasicAuthTest.java b/CI/samples.ci/client/petstore/java/test-manual/okhttp-gson/auth/HttpBasicAuthTest.java new file mode 100644 index 000000000000..d27a15f4dc07 --- /dev/null +++ b/CI/samples.ci/client/petstore/java/test-manual/okhttp-gson/auth/HttpBasicAuthTest.java @@ -0,0 +1,62 @@ +package org.openapitools.client.auth; + +import java.util.HashMap; +import java.util.ArrayList; +import java.util.Map; +import java.util.List; + +import org.openapitools.client.Pair; +import org.junit.*; +import static org.junit.Assert.*; + + +public class HttpBasicAuthTest { + HttpBasicAuth auth = null; + + @Before + public void setup() { + auth = new HttpBasicAuth(); + } + + @Test + public void testApplyToParams() { + List queryParams = new ArrayList(); + Map headerParams = new HashMap(); + + auth.setUsername("my-username"); + auth.setPassword("my-password"); + auth.applyToParams(queryParams, headerParams); + + // no changes to query parameters + assertEquals(0, queryParams.size()); + assertEquals(1, headerParams.size()); + // the string below is base64-encoded result of "my-username:my-password" with the "Basic " prefix + String expected = "Basic bXktdXNlcm5hbWU6bXktcGFzc3dvcmQ="; + assertEquals(expected, headerParams.get("Authorization")); + + // null username should be treated as empty string + auth.setUsername(null); + auth.applyToParams(queryParams, headerParams); + // the string below is base64-encoded result of ":my-password" with the "Basic " prefix + expected = "Basic Om15LXBhc3N3b3Jk"; + assertEquals(expected, headerParams.get("Authorization")); + + // null password should be treated as empty string + auth.setUsername("my-username"); + auth.setPassword(null); + auth.applyToParams(queryParams, headerParams); + // the string below is base64-encoded result of "my-username:" with the "Basic " prefix + expected = "Basic bXktdXNlcm5hbWU6"; + assertEquals(expected, headerParams.get("Authorization")); + + // null username and password should be ignored + queryParams = new ArrayList(); + headerParams = new HashMap(); + auth.setUsername(null); + auth.setPassword(null); + auth.applyToParams(queryParams, headerParams); + // no changes to parameters + assertEquals(0, queryParams.size()); + assertEquals(0, headerParams.size()); + } +} diff --git a/CI/samples.ci/client/petstore/java/test-manual/okhttp-gson/model/EnumValueTest.java b/CI/samples.ci/client/petstore/java/test-manual/okhttp-gson/model/EnumValueTest.java new file mode 100644 index 000000000000..73440e547b25 --- /dev/null +++ b/CI/samples.ci/client/petstore/java/test-manual/okhttp-gson/model/EnumValueTest.java @@ -0,0 +1,56 @@ +package org.openapitools.client.model; + +import org.junit.Test; + +import com.google.gson.Gson; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; + +public class EnumValueTest { + + @Test + public void testEnumClass() { + assertEquals(EnumClass._ABC.toString(), "_abc"); + assertEquals(EnumClass._EFG.toString(), "-efg"); + assertEquals(EnumClass._XYZ_.toString(), "(xyz)"); + } + + @Test + public void testEnumTest() { + // test enum value + EnumTest enumTest = new EnumTest(); + enumTest.setEnumString(EnumTest.EnumStringEnum.LOWER); + enumTest.setEnumInteger(EnumTest.EnumIntegerEnum.NUMBER_1); + enumTest.setEnumNumber(EnumTest.EnumNumberEnum.NUMBER_1_DOT_1); + + assertEquals(EnumTest.EnumStringEnum.UPPER.toString(), "UPPER"); + assertEquals(EnumTest.EnumStringEnum.UPPER.getValue(), "UPPER"); + assertEquals(EnumTest.EnumStringEnum.LOWER.toString(), "lower"); + assertEquals(EnumTest.EnumStringEnum.LOWER.getValue(), "lower"); + + assertEquals(EnumTest.EnumIntegerEnum.NUMBER_1.toString(), "1"); + assertTrue(EnumTest.EnumIntegerEnum.NUMBER_1.getValue() == 1); + assertEquals(EnumTest.EnumIntegerEnum.NUMBER_MINUS_1.toString(), "-1"); + assertTrue(EnumTest.EnumIntegerEnum.NUMBER_MINUS_1.getValue() == -1); + + assertEquals(EnumTest.EnumNumberEnum.NUMBER_1_DOT_1.toString(), "1.1"); + assertTrue(EnumTest.EnumNumberEnum.NUMBER_1_DOT_1.getValue() == 1.1); + assertEquals(EnumTest.EnumNumberEnum.NUMBER_MINUS_1_DOT_2.toString(), "-1.2"); + assertTrue(EnumTest.EnumNumberEnum.NUMBER_MINUS_1_DOT_2.getValue() == -1.2); + + // test serialization + Gson gson = new Gson(); + String json = gson.toJson(enumTest); + assertEquals(json, "{\"enum_string\":\"lower\",\"enum_integer\":1,\"enum_number\":1.1}"); + + // test deserialization + EnumTest fromString = gson.fromJson(json, EnumTest.class); + assertEquals(fromString.getEnumString().toString(), "lower"); + assertEquals(fromString.getEnumString().getValue(), "lower"); + assertEquals(fromString.getEnumInteger().toString(), "1"); + assertTrue(fromString.getEnumInteger().getValue() == 1); + assertEquals(fromString.getEnumNumber().toString(), "1.1"); + assertTrue(fromString.getEnumNumber().getValue() == 1.1); + } +} diff --git a/CI/samples.ci/client/petstore/java/test-manual/resttemplate/ApiClientTest.java b/CI/samples.ci/client/petstore/java/test-manual/resttemplate/ApiClientTest.java new file mode 100644 index 000000000000..2113f5d24535 --- /dev/null +++ b/CI/samples.ci/client/petstore/java/test-manual/resttemplate/ApiClientTest.java @@ -0,0 +1,254 @@ +package org.openapitools.client; + +import org.openapitools.client.auth.*; + +import java.text.DateFormat; +import java.text.SimpleDateFormat; +import java.util.*; + +import org.junit.*; +import org.springframework.http.MediaType; +import org.springframework.util.MultiValueMap; + +import static org.junit.Assert.*; + + +public class ApiClientTest { + ApiClient apiClient = null; + + @Before + public void setup() { + apiClient = new ApiClient(); + } + + /** + * + */ + @Test + public void testParseAndFormatDate() { + // default date format + String dateStr = "2015-11-07T03:49:09.356Z"; + assertEquals(dateStr, apiClient.formatDate(apiClient.parseDate("2015-11-07T03:49:09.356+00:00"))); + assertEquals(dateStr, apiClient.formatDate(apiClient.parseDate("2015-11-07T03:49:09.356Z"))); + assertEquals(dateStr, apiClient.formatDate(apiClient.parseDate("2015-11-07T05:49:09.356+02:00"))); + assertEquals(dateStr, apiClient.formatDate(apiClient.parseDate("2015-11-07T02:49:09.356-01:00"))); + + // custom date format: without milli-seconds, custom time zone + DateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssXXX"); + format.setTimeZone(TimeZone.getTimeZone("GMT+10")); + apiClient.setDateFormat(format); + dateStr = "2015-11-07T13:49:09+10:00"; + assertEquals(dateStr, apiClient.formatDate(apiClient.parseDate("2015-11-07T03:49:09+00:00"))); + assertEquals(dateStr, apiClient.formatDate(apiClient.parseDate("2015-11-07T03:49:09Z"))); + assertEquals(dateStr, apiClient.formatDate(apiClient.parseDate("2015-11-07T00:49:09-03:00"))); + assertEquals(dateStr, apiClient.formatDate(apiClient.parseDate("2015-11-07T13:49:09+10:00"))); + } + + @Test + public void testIsJsonMime() { + assertFalse(apiClient.isJsonMime((String) null)); + assertFalse(apiClient.isJsonMime("")); + assertFalse(apiClient.isJsonMime("text/plain")); + assertFalse(apiClient.isJsonMime("application/xml")); + assertFalse(apiClient.isJsonMime("application/jsonp")); + assertFalse(apiClient.isJsonMime("example/json")); + assertFalse(apiClient.isJsonMime("example/foo+bar+jsonx")); + assertFalse(apiClient.isJsonMime("example/foo+bar+xjson")); + + assertTrue(apiClient.isJsonMime("application/json")); + assertTrue(apiClient.isJsonMime("application/json; charset=UTF8")); + assertTrue(apiClient.isJsonMime("APPLICATION/JSON")); + + assertTrue(apiClient.isJsonMime("application/problem+json")); + assertTrue(apiClient.isJsonMime("APPLICATION/PROBLEM+JSON")); + assertTrue(apiClient.isJsonMime("application/json\t")); + assertTrue(apiClient.isJsonMime("example/foo+bar+json")); + assertTrue(apiClient.isJsonMime("example/foo+json;x;y")); + assertTrue(apiClient.isJsonMime("example/foo+json\t;")); + assertTrue(apiClient.isJsonMime("Example/fOO+JSON")); + } + + @Test + public void testSelectHeaderAccept() { + String[] accepts = {"application/json", "application/xml"}; + assertEquals(Arrays.asList(MediaType.parseMediaType("application/json")), apiClient.selectHeaderAccept(accepts)); + + accepts = new String[]{"APPLICATION/XML", "APPLICATION/JSON"}; + assertEquals(Arrays.asList(MediaType.parseMediaType("APPLICATION/JSON")), apiClient.selectHeaderAccept(accepts)); + + accepts = new String[]{"application/xml", "application/json; charset=UTF8"}; + assertEquals(Arrays.asList(MediaType.parseMediaType("application/json; charset=UTF8")), apiClient.selectHeaderAccept(accepts)); + + accepts = new String[]{"text/plain", "application/xml"}; + assertEquals(Arrays.asList(MediaType.parseMediaType("text/plain"),MediaType.parseMediaType("application/xml")), apiClient.selectHeaderAccept(accepts)); + + accepts = new String[]{}; + assertNull(apiClient.selectHeaderAccept(accepts)); + } + + @Test + public void testSelectHeaderContentType() { + String[] contentTypes = {"application/json", "application/xml"}; + assertEquals(MediaType.parseMediaType("application/json"), apiClient.selectHeaderContentType(contentTypes)); + + contentTypes = new String[]{"APPLICATION/JSON", "APPLICATION/XML"}; + assertEquals(MediaType.parseMediaType("APPLICATION/JSON"), apiClient.selectHeaderContentType(contentTypes)); + + contentTypes = new String[]{"application/xml", "application/json; charset=UTF8"}; + assertEquals(MediaType.parseMediaType("application/json; charset=UTF8"), apiClient.selectHeaderContentType(contentTypes)); + + contentTypes = new String[]{"text/plain", "application/xml"}; + assertEquals(MediaType.parseMediaType("text/plain"), apiClient.selectHeaderContentType(contentTypes)); + + contentTypes = new String[]{}; + assertEquals(MediaType.parseMediaType("application/json"), apiClient.selectHeaderContentType(contentTypes)); + } + + @Test + public void testGetAuthentications() { + Map auths = apiClient.getAuthentications(); + + Authentication auth = auths.get("api_key"); + assertNotNull(auth); + assertTrue(auth instanceof ApiKeyAuth); + ApiKeyAuth apiKeyAuth = (ApiKeyAuth) auth; + assertEquals("header", apiKeyAuth.getLocation()); + assertEquals("api_key", apiKeyAuth.getParamName()); + + auth = auths.get("petstore_auth"); + assertTrue(auth instanceof OAuth); + assertSame(auth, apiClient.getAuthentication("petstore_auth")); + + assertNull(auths.get("unknown")); + + try { + auths.put("my_auth", new HttpBasicAuth()); + fail("the authentications returned should not be modifiable"); + } catch (UnsupportedOperationException e) { + } + } + + @Ignore("There is no more basic auth in petstore security definitions") + @Test + public void testSetUsernameAndPassword() { + HttpBasicAuth auth = null; + for (Authentication _auth : apiClient.getAuthentications().values()) { + if (_auth instanceof HttpBasicAuth) { + auth = (HttpBasicAuth) _auth; + break; + } + } + auth.setUsername(null); + auth.setPassword(null); + + apiClient.setUsername("my-username"); + apiClient.setPassword("my-password"); + assertEquals("my-username", auth.getUsername()); + assertEquals("my-password", auth.getPassword()); + + // reset values + auth.setUsername(null); + auth.setPassword(null); + } + + @Test + public void testSetApiKeyAndPrefix() { + ApiKeyAuth auth = null; + for (Authentication _auth : apiClient.getAuthentications().values()) { + if (_auth instanceof ApiKeyAuth) { + auth = (ApiKeyAuth) _auth; + break; + } + } + auth.setApiKey(null); + auth.setApiKeyPrefix(null); + + apiClient.setApiKey("my-api-key"); + apiClient.setApiKeyPrefix("Token"); + assertEquals("my-api-key", auth.getApiKey()); + assertEquals("Token", auth.getApiKeyPrefix()); + + // reset values + auth.setApiKey(null); + auth.setApiKeyPrefix(null); + } + + @Test + public void testParameterToMultiValueMapWhenNameIsInvalid() throws Exception { + MultiValueMap pairs_a = apiClient.parameterToMultiValueMap(ApiClient.CollectionFormat.CSV, null, new Integer(1)); + MultiValueMap pairs_b = apiClient.parameterToMultiValueMap(ApiClient.CollectionFormat.CSV, "", new Integer(1)); + + assertTrue(pairs_a.isEmpty()); + assertTrue(pairs_b.isEmpty()); + } + + @Test + public void testParameterToMultiValueMapWhenValueIsNull() throws Exception { + MultiValueMap pairs = apiClient.parameterToMultiValueMap(ApiClient.CollectionFormat.CSV, "param-a", null); + + assertTrue(pairs.isEmpty()); + } + + @Test + public void testParameterToMultiValueMapWhenValueIsEmptyStrings() throws Exception { + + // single empty string + MultiValueMap pairs = apiClient.parameterToMultiValueMap(ApiClient.CollectionFormat.CSV, "param-a", " "); + assertEquals(1, pairs.size()); + + // list of empty strings + List strs = new ArrayList(); + strs.add(" "); + strs.add(" "); + strs.add(" "); + + MultiValueMap concatStrings = apiClient.parameterToMultiValueMap(ApiClient.CollectionFormat.CSV, "param-a", strs); + + assertEquals(1, concatStrings.get("param-a").size()); + assertFalse(concatStrings.get("param-a").isEmpty()); // should contain some delimiters + } + + @Test + public void testParameterToMultiValueMapWhenValueIsNotCollection() throws Exception { + String name = "param-a"; + Integer value = 1; + + MultiValueMap pairs = apiClient.parameterToMultiValueMap(ApiClient.CollectionFormat.CSV, name, value); + + assertEquals(1, pairs.get(name).size()); + assertEquals(value, Integer.valueOf(pairs.get(name).get(0))); + } + + @Test + public void testParameterToMultiValueMapWhenValueIsCollection() throws Exception { + Map collectionFormatMap = new HashMap(); + collectionFormatMap.put(ApiClient.CollectionFormat.CSV, ","); + collectionFormatMap.put(ApiClient.CollectionFormat.TSV, "\t"); + collectionFormatMap.put(ApiClient.CollectionFormat.SSV, " "); + collectionFormatMap.put(ApiClient.CollectionFormat.PIPES, "\\|"); + collectionFormatMap.put(null, ","); // no format, must default to csv + + String name = "param-a"; + + List values = new ArrayList(); + values.add("value-a"); + values.add(123); + values.add(new Date()); + + // check for multi separately + MultiValueMap multiValueMap = apiClient.parameterToMultiValueMap(ApiClient.CollectionFormat.MULTI, name, values); + assertEquals(values.size(), multiValueMap.get(name).size()); + + // all other formats + for (ApiClient.CollectionFormat collectionFormat : collectionFormatMap.keySet()) { + MultiValueMap pairs = apiClient.parameterToMultiValueMap(collectionFormat, name, values); + + assertEquals(1, pairs.size()); + + String delimiter = collectionFormatMap.get(collectionFormat); + String[] pairValueSplit = pairs.get(name).get(0).split(delimiter); + + assertEquals(values.size(), pairValueSplit.length); + } + } +} diff --git a/CI/samples.ci/client/petstore/java/test-manual/resttemplate/auth/ApiKeyAuthTest.java b/CI/samples.ci/client/petstore/java/test-manual/resttemplate/auth/ApiKeyAuthTest.java new file mode 100644 index 000000000000..eef07a5309c8 --- /dev/null +++ b/CI/samples.ci/client/petstore/java/test-manual/resttemplate/auth/ApiKeyAuthTest.java @@ -0,0 +1,47 @@ +package org.openapitools.client.auth; + +import java.util.HashMap; +import java.util.ArrayList; +import java.util.Map; +import java.util.List; + +import org.junit.*; +import org.springframework.http.HttpHeaders; +import org.springframework.util.LinkedMultiValueMap; +import org.springframework.util.MultiValueMap; + +import static org.junit.Assert.*; + +public class ApiKeyAuthTest { + @Test + public void testApplyToParamsInQuery() { + MultiValueMap queryParams = new LinkedMultiValueMap(); + HttpHeaders headerParams = new HttpHeaders(); + + ApiKeyAuth auth = new ApiKeyAuth("query", "api_key"); + auth.setApiKey("my-api-key"); + auth.applyToParams(queryParams, headerParams); + + assertEquals(1, queryParams.size()); + assertEquals("my-api-key", queryParams.get("api_key").get(0)); + + // no changes to header parameters + assertEquals(0, headerParams.size()); + } + + @Test + public void testApplyToParamsInHeaderWithPrefix() { + MultiValueMap queryParams = new LinkedMultiValueMap(); + HttpHeaders headerParams = new HttpHeaders(); + + ApiKeyAuth auth = new ApiKeyAuth("header", "X-API-TOKEN"); + auth.setApiKey("my-api-token"); + auth.setApiKeyPrefix("Token"); + auth.applyToParams(queryParams, headerParams); + + // no changes to query parameters + assertEquals(0, queryParams.size()); + assertEquals(1, headerParams.size()); + assertEquals("Token my-api-token", headerParams.get("X-API-TOKEN").get(0)); + } +} diff --git a/CI/samples.ci/client/petstore/java/test-manual/resttemplate/auth/HttpBasicAuthTest.java b/CI/samples.ci/client/petstore/java/test-manual/resttemplate/auth/HttpBasicAuthTest.java new file mode 100644 index 000000000000..04522ec56c5b --- /dev/null +++ b/CI/samples.ci/client/petstore/java/test-manual/resttemplate/auth/HttpBasicAuthTest.java @@ -0,0 +1,54 @@ +package org.openapitools.client.auth; + +import java.util.HashMap; +import java.util.ArrayList; +import java.util.Map; +import java.util.List; + +import org.junit.*; +import org.springframework.http.HttpHeaders; +import org.springframework.util.LinkedMultiValueMap; +import org.springframework.util.MultiValueMap; + +import static org.junit.Assert.*; + +public class HttpBasicAuthTest { + HttpBasicAuth auth = null; + + @Before + public void setup() { + auth = new HttpBasicAuth(); + } + + @Test + public void testApplyToParams() { + MultiValueMap queryParams = new LinkedMultiValueMap(); + HttpHeaders headerParams = new HttpHeaders(); + + auth.setUsername("my-username"); + auth.setPassword("my-password"); + auth.applyToParams(queryParams, headerParams); + + // no changes to query parameters + assertEquals(0, queryParams.size()); + assertEquals(1, headerParams.size()); + // the string below is base64-encoded result of "my-username:my-password" with the "Basic " prefix + String expected = "Basic bXktdXNlcm5hbWU6bXktcGFzc3dvcmQ="; + assertEquals(expected, headerParams.get("Authorization").get(0)); + + // null username should be treated as empty string + auth.setUsername(null); + auth.applyToParams(queryParams, headerParams); + // the string below is base64-encoded result of ":my-password" with the "Basic " prefix + expected = "Basic Om15LXBhc3N3b3Jk"; + assertEquals(expected, headerParams.get("Authorization").get(1)); + + // null password should be treated as empty string + auth.setUsername("my-username"); + auth.setPassword(null); + auth.applyToParams(queryParams, headerParams); + // the string below is base64-encoded result of "my-username:" with the "Basic " prefix + expected = "Basic bXktdXNlcm5hbWU6"; + assertEquals(expected, headerParams.get("Authorization").get(2)); + } +} diff --git a/CI/samples.ci/client/petstore/java/test-manual/resttemplate/model/EnumValueTest.java b/CI/samples.ci/client/petstore/java/test-manual/resttemplate/model/EnumValueTest.java new file mode 100644 index 000000000000..47bfe940d3c3 --- /dev/null +++ b/CI/samples.ci/client/petstore/java/test-manual/resttemplate/model/EnumValueTest.java @@ -0,0 +1,63 @@ +package org.openapitools.client.model; + +import org.junit.Test; + +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.ObjectWriter; +import com.fasterxml.jackson.databind.SerializationFeature; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; +import static org.junit.Assert.fail; + +public class EnumValueTest { + + @Test + public void testEnumClass() { + assertEquals(EnumClass._ABC.toString(), "_abc"); + assertEquals(EnumClass._EFG.toString(), "-efg"); + assertEquals(EnumClass._XYZ_.toString(), "(xyz)"); + } + + @Test + public void testEnumTest() { + // test enum value + EnumTest enumTest = new EnumTest(); + enumTest.setEnumString(EnumTest.EnumStringEnum.LOWER); + enumTest.setEnumInteger(EnumTest.EnumIntegerEnum.NUMBER_1); + enumTest.setEnumNumber(EnumTest.EnumNumberEnum.NUMBER_1_DOT_1); + + assertEquals(EnumTest.EnumStringEnum.UPPER.toString(), "UPPER"); + assertEquals(EnumTest.EnumStringEnum.UPPER.getValue(), "UPPER"); + assertEquals(EnumTest.EnumStringEnum.LOWER.toString(), "lower"); + assertEquals(EnumTest.EnumStringEnum.LOWER.getValue(), "lower"); + + assertEquals(EnumTest.EnumIntegerEnum.NUMBER_1.toString(), "1"); + assertTrue(EnumTest.EnumIntegerEnum.NUMBER_1.getValue() == 1); + assertEquals(EnumTest.EnumIntegerEnum.NUMBER_MINUS_1.toString(), "-1"); + assertTrue(EnumTest.EnumIntegerEnum.NUMBER_MINUS_1.getValue() == -1); + + assertEquals(EnumTest.EnumNumberEnum.NUMBER_1_DOT_1.toString(), "1.1"); + assertTrue(EnumTest.EnumNumberEnum.NUMBER_1_DOT_1.getValue() == 1.1); + assertEquals(EnumTest.EnumNumberEnum.NUMBER_MINUS_1_DOT_2.toString(), "-1.2"); + assertTrue(EnumTest.EnumNumberEnum.NUMBER_MINUS_1_DOT_2.getValue() == -1.2); + + try { + // test serialization (object => json) + ObjectMapper mapper = new ObjectMapper(); + mapper.enable(SerializationFeature.WRITE_ENUMS_USING_TO_STRING); + ObjectWriter ow = mapper.writer(); + String json = ow.writeValueAsString(enumTest); + assertEquals(json, "{\"enum_string\":\"lower\",\"enum_string_required\":null,\"enum_integer\":1,\"enum_number\":1.1,\"outerEnum\":null}"); + + // test deserialization (json => object) + EnumTest fromString = mapper.readValue(json, EnumTest.class); + assertEquals(fromString.getEnumString().toString(), "lower"); + assertEquals(fromString.getEnumInteger().toString(), "1"); + assertEquals(fromString.getEnumNumber().toString(), "1.1"); + + } catch (Exception e) { + fail("Exception thrown during serialization/deserialzation of JSON: " + e.getMessage()); + } + } +} diff --git a/README.md b/README.md index 841fdd8da97f..f5c7c52b3939 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@
-[Master](https://github.com/OpenAPITools/openapi-generator/tree/master) (`3.0.2-SNAPSHOT`): [![Build Status](https://img.shields.io/travis/OpenAPITools/openapi-generator/master.svg?label=Integration%20Test)](https://travis-ci.org/OpenAPITools/openapi-generator) +[Master](https://github.com/OpenAPITools/openapi-generator/tree/master) (`3.0.3-SNAPSHOT`): [![Build Status](https://img.shields.io/travis/OpenAPITools/openapi-generator/master.svg?label=Integration%20Test)](https://travis-ci.org/OpenAPITools/openapi-generator) [![Integration Test2](https://circleci.com/gh/OpenAPITools/openapi-generator.svg?style=shield)](https://circleci.com/gh/OpenAPITools/openapi-generator) [![Run Status](https://api.shippable.com/projects/5af6bf74e790f4070084a115/badge?branch=master)](https://app.shippable.com/github/OpenAPITools/openapi-generator) [![Windows Test](https://ci.appveyor.com/api/projects/status/github/openapitools/openapi-generator?branch=master&svg=true&passingText=Windows%20Test%20-%20OK&failingText=Windows%20Test%20-%20Fails)](https://ci.appveyor.com/project/WilliamCheng/openapi-generator-wh2wu) @@ -85,9 +85,10 @@ OpenAPI Generator Version | Release Date | OpenAPI Spec compatibility | Notes ---------------------------- | ------------ | -------------------------- | ----- 4.0.0 (upcoming major release) [SNAPSHOT](https://oss.sonatype.org/content/repositories/snapshots/org/openapitools/openapi-generator-cli/4.0.0-SNAPSHOT/)| TBD | 1.0, 1.1, 1.2, 2.0, 3.0 | Major release with breaking changes (no fallback) 3.1.0 (upcoming minor release) [SNAPSHOT](https://oss.sonatype.org/content/repositories/snapshots/org/openapitools/openapi-generator-cli/3.1.0-SNAPSHOT/)| TBD | 1.0, 1.1, 1.2, 2.0, 3.0 | Minor release with breaking changes (with fallbacks) -3.0.2 (current master, upcoming release) [SNAPSHOT](https://oss.sonatype.org/content/repositories/snapshots/org/openapitools/openapi-generator-cli/3.0.2-SNAPSHOT/)| TBD | 1.0, 1.1, 1.2, -3.0.1 | 11.06.2018 | 1.0, 1.1, 1.2, 2.0, 3.0 | Bugfix release -3.0.0 | 01.06.2018 | 1.0, 1.1, 1.2, 2.0, 3.0 | First release with breaking changes +3.0.3 (current master, upcoming release) [SNAPSHOT](https://oss.sonatype.org/content/repositories/snapshots/org/openapitools/openapi-generator-cli/3.0.3-SNAPSHOT/)| TBD | 1.0, 1.1, 1.2, +[3.0.2](https://github.com/OpenAPITools/openapi-generator/releases/tag/v3.0.2) | 18.06.2018 | 1.0, 1.1, 1.2, 2.0, 3.0 | Bugfix release +[3.0.1](https://github.com/OpenAPITools/openapi-generator/releases/tag/v3.0.1) | 11.06.2018 | 1.0, 1.1, 1.2, 2.0, 3.0 | Bugfix release +[3.0.0](https://github.com/OpenAPITools/openapi-generator/releases/tag/v3.0.0) | 01.06.2018 | 1.0, 1.1, 1.2, 2.0, 3.0 | First release with breaking changes ### [1.2 - Artifacts on Maven Central](#table-of-contents) @@ -143,12 +144,12 @@ JAR location: `http://central.maven.org/maven2/org/openapitools/openapi-generato For **Mac/Linux** users: ```sh -wget http://central.maven.org/maven2/org/openapitools/openapi-generator-cli/3.0.1/openapi-generator-cli-3.0.1.jar -O openapi-generator-cli.jar +wget http://central.maven.org/maven2/org/openapitools/openapi-generator-cli/3.0.2/openapi-generator-cli-3.0.2.jar -O openapi-generator-cli.jar ``` For **Windows** users, you will need to install [wget](http://gnuwin32.sourceforge.net/packages/wget.htm) or you can use Invoke-WebRequest in PowerShell (3.0+), e.g. ``` -Invoke-WebRequest -OutFile openapi-generator-cli.jar http://central.maven.org/maven2/org/openapitools/openapi-generator-cli/3.0.1/openapi-generator-cli-3.0.1.jar +Invoke-WebRequest -OutFile openapi-generator-cli.jar http://central.maven.org/maven2/org/openapitools/openapi-generator-cli/3.0.2/openapi-generator-cli-3.0.2.jar ``` After downloading the JAR, run `java -jar openapi-generator-cli.jar help` to show the usage. @@ -179,13 +180,15 @@ If you don't have maven installed, you may directly use the included [maven wrap ### [1.5 - Homebrew](#table-of-contents) -To install, run `brew install openapi-generator` (the new brew formula is pending https://github.com/Homebrew/homebrew-core/pull/28584) +To install, run `brew install openapi-generator` Here is an example usage to generate a Ruby client: ```sh openapi-generator generate -i https://raw.githubusercontent.com/openapitools/openapi-generator/master/modules/openapi-generator/src/test/resources/2_0/petstore.yaml -g ruby -o /tmp/test/ ``` +To reinstall with the latest master, run `brew reinstall --HEAD openapi-generator` + ### [1.6 - Docker](#table-of-contents) #### Public Pre-built Docker images @@ -410,6 +413,7 @@ Here are some companies/projects (alphabetical order) using OpenAPI Generator in - [GMO Pepabo](https://pepabo.com/en/) - [Raiffeisen Schweiz Genossenschaft](https://www.raiffeisen.ch) - [REST United](https://restunited.com) +- [Telstra](https://dev.telstra.com) - [unblu inc.](https://www.unblu.com/) diff --git a/bin/cpp-qt5-petstore.sh b/bin/cpp-qt5-petstore.sh index fdca2260d5ec..3ed26ff9fe8a 100755 --- a/bin/cpp-qt5-petstore.sh +++ b/bin/cpp-qt5-petstore.sh @@ -27,6 +27,6 @@ fi # if you've executed sbt assembly previously it will use that instead. export JAVA_OPTS="${JAVA_OPTS} -XX:MaxPermSize=256M -Xmx1024M -DloggerPath=conf/log4j.properties" -ags="generate -t modules/openapi-generator/src/main/resources/qt5cpp -i modules/openapi-generator/src/test/resources/2_0/petstore.yaml -g cpp-qt5 -o samples/client/petstore/cpp-qt5 $@" +ags="generate -t modules/openapi-generator/src/main/resources/cpp-qt5-client -i modules/openapi-generator/src/test/resources/2_0/petstore.yaml -g cpp-qt5 -o samples/client/petstore/cpp-qt5 $@" java $JAVA_OPTS -jar $executable $ags diff --git a/bin/cpp-restsdk-petstore.sh b/bin/cpp-restsdk-petstore.sh index 0a33cb36e3e8..3eecfa7a0271 100755 --- a/bin/cpp-restsdk-petstore.sh +++ b/bin/cpp-restsdk-petstore.sh @@ -27,6 +27,6 @@ fi # if you've executed sbt assembly previously it will use that instead. export JAVA_OPTS="${JAVA_OPTS} -XX:MaxPermSize=256M -Xmx1024M -DloggerPath=conf/log4j.properties" -ags="generate -t modules/openapi-generator/src/main/resources/cpprest -i modules/openapi-generator/src/test/resources/2_0/petstore.yaml -g cpp-restsdk -o samples/client/petstore/cpp-restsdk $@" +ags="generate -t modules/openapi-generator/src/main/resources/cpp-rest-sdk-client -i modules/openapi-generator/src/test/resources/2_0/petstore.yaml -g cpp-restsdk -o samples/client/petstore/cpp-restsdk $@" java $JAVA_OPTS -jar $executable $ags diff --git a/bin/cpp-tizen-petstore.sh b/bin/cpp-tizen-petstore.sh index 82d9d9cd3ae7..72b0fbe71349 100755 --- a/bin/cpp-tizen-petstore.sh +++ b/bin/cpp-tizen-petstore.sh @@ -27,6 +27,6 @@ fi # if you've executed sbt assembly previously it will use that instead. export JAVA_OPTS="${JAVA_OPTS} -XX:MaxPermSize=256M -Xmx1024M -DloggerPath=conf/log4j.properties" -ags="generate -t modules/openapi-generator/src/main/resources/tizen -i modules/openapi-generator/src/test/resources/2_0/petstore.yaml -g cpp-tizen -o samples/client/petstore/cpp-tizen $@" +ags="generate -t modules/openapi-generator/src/main/resources/cpp-tizen-client -i modules/openapi-generator/src/test/resources/2_0/petstore.yaml -g cpp-tizen -o samples/client/petstore/cpp-tizen $@" java $JAVA_OPTS -jar $executable $ags diff --git a/bin/ensure-up-to-date b/bin/ensure-up-to-date deleted file mode 100755 index 0bc9d8a7b555..000000000000 --- a/bin/ensure-up-to-date +++ /dev/null @@ -1,41 +0,0 @@ -#!/bin/bash -# this bash script run the scripts for the 'mature' generators -# it ensures that all changes are commited into the 'samples/' folder - -echo "# START SCRIPT: $0" - -echo "IMPORTANT: this script should be run by the CI (e.g. Shippable) to ensure that the 'samples/' folder is up to date." -echo "Please press CTRL+C to stop or the script will continue in 5 seconds." - -sleep 5 - -# LIST OF SCRIPTS: -./bin/ruby-petstore.sh -./bin/java-petstore-all.sh -./bin/java-jaxrs-petstore-server-all.sh -./bin/spring-all-pestore.sh -./bin/kotlin-client-petstore.sh -./bin/kotlin-client-string.sh -./bin/kotlin-client-threetenbp.sh -./bin/kotlin-server-petstore.sh -./bin/php-petstore.sh -./bin/php-silex-petstore-server.sh -./bin/php-symfony-petstore.sh -./bin/php-lumen-petstore-server.sh -./bin/php-slim-petstore-server.sh -./bin/php-ze-ph-petstore-server.sh -./bin/openapi3/php-petstore.sh - -# Check: -if [ -n "$(git status --porcelain)" ]; then - echo "UNCOMMITTED CHANGES ERROR" - echo "There are uncommitted changes in working tree after execution of 'bin/ensure-up-to-date'" - echo "Perform git diff" - git --no-pager diff - echo "Perform git status" - git status - echo "Please run 'bin/ensure-up-to-date' locally and commit changes (UNCOMMITTED CHANGES ERROR)" - exit 1 -else - echo "Git working tree is clean" -fi diff --git a/bin/java-petstore-feign.sh b/bin/java-petstore-feign.sh index 5acd593dfcd0..d60d977be735 100755 --- a/bin/java-petstore-feign.sh +++ b/bin/java-petstore-feign.sh @@ -33,3 +33,8 @@ echo "Removing files and folders under samples/client/petstore/java/feign/src/ma rm -rf samples/client/petstore/java/feign/src/main find samples/client/petstore/java/feign -maxdepth 1 -type f ! -name "README.md" -exec rm {} + java $JAVA_OPTS -jar $executable $ags + +# copy additional manually written unit-tests +mkdir samples/client/petstore/java/feign/src/test/java/org/openapitools/client + +cp CI/samples.ci/client/petstore/java/test-manual/common/StringUtilTest.java samples/client/petstore/java/feign/src/test/java/org/openapitools/client/StringUtilTest.java \ No newline at end of file diff --git a/bin/java-petstore-jersey1.sh b/bin/java-petstore-jersey1.sh index 5ea0947fc6d0..caa69adfafbe 100755 --- a/bin/java-petstore-jersey1.sh +++ b/bin/java-petstore-jersey1.sh @@ -33,3 +33,15 @@ echo "Removing files and folders under samples/client/petstore/java/jersey1/src/ rm -rf samples/client/petstore/java/jersey1/src/main find samples/client/petstore/java/jersey1 -maxdepth 1 -type f ! -name "README.md" -exec rm {} + java $JAVA_OPTS -jar $executable $ags + +# copy additional manually written unit-tests +mkdir samples/client/petstore/java/jersey1/src/test/java/org/openapitools/client +mkdir samples/client/petstore/java/jersey1/src/test/java/org/openapitools/client/auth +mkdir samples/client/petstore/java/jersey1/src/test/java/org/openapitools/client/model + +cp CI/samples.ci/client/petstore/java/test-manual/common/StringUtilTest.java samples/client/petstore/java/jersey1/src/test/java/org/openapitools/client/StringUtilTest.java +cp CI/samples.ci/client/petstore/java/test-manual/jersey1/ApiClientTest.java samples/client/petstore/java/jersey1/src/test/java/org/openapitools/client/ApiClientTest.java +cp CI/samples.ci/client/petstore/java/test-manual/common/ConfigurationTest.java samples/client/petstore/java/jersey1/src/test/java/org/openapitools/client/ConfigurationTest.java +cp CI/samples.ci/client/petstore/java/test-manual/jersey1/auth/ApiKeyAuthTest.java samples/client/petstore/java/jersey1/src/test/java/org/openapitools/client/auth/ApiKeyAuthTest.java +cp CI/samples.ci/client/petstore/java/test-manual/jersey1/auth/HttpBasicAuthTest.java samples/client/petstore/java/jersey1/src/test/java/org/openapitools/client/auth/HttpBasicAuthTest.java +cp CI/samples.ci/client/petstore/java/test-manual/jersey1/model/EnumValueTest.java samples/client/petstore/java/jersey1/src/test/java/org/openapitools/client/model/EnumValueTest.java diff --git a/bin/java-petstore-jersey2-java6.sh b/bin/java-petstore-jersey2-java6.sh index fb887669a2ab..c9e71d722c7b 100755 --- a/bin/java-petstore-jersey2-java6.sh +++ b/bin/java-petstore-jersey2-java6.sh @@ -29,7 +29,7 @@ fi export JAVA_OPTS="${JAVA_OPTS} -XX:MaxPermSize=256M -Xmx1024M -DloggerPath=conf/log4j.properties" ags="generate --artifact-id petstore-jersey2-java6 -i modules/openapi-generator/src/test/resources/2_0/petstore-with-fake-endpoints-models-for-testing.yaml -g java -c bin/java-petstore-jersey2.json -o samples/client/petstore/java/jersey2-java6 -DhideGenerationTimestamp=true,supportJava6=true $@" -echo "Removing files and folders under samples/client/petstore/java/jersey2/src/main" +echo "Removing files and folders under samples/client/petstore/java/jersey2-java6/src/main" rm -rf samples/client/petstore/java/jersey2-java6/src/main find samples/client/petstore/java/jersey2-java6 -maxdepth 1 -type f ! -name "README.md" -exec rm {} + java $JAVA_OPTS -jar $executable $ags diff --git a/bin/java-petstore-jersey2.sh b/bin/java-petstore-jersey2.sh index 6b37fa31940d..dda1a2da8c20 100755 --- a/bin/java-petstore-jersey2.sh +++ b/bin/java-petstore-jersey2.sh @@ -33,3 +33,16 @@ echo "Removing files and folders under samples/client/petstore/java/jersey2/src/ rm -rf samples/client/petstore/java/jersey2/src/main find samples/client/petstore/java/jersey2 -maxdepth 1 -type f ! -name "README.md" -exec rm {} + java $JAVA_OPTS -jar $executable $ags + +# copy additional manually written unit-tests +mkdir samples/client/petstore/java/jersey2/src/test/java/org/openapitools/client +mkdir samples/client/petstore/java/jersey2/src/test/java/org/openapitools/client/auth +mkdir samples/client/petstore/java/jersey2/src/test/java/org/openapitools/client/model + +cp CI/samples.ci/client/petstore/java/test-manual/common/StringUtilTest.java samples/client/petstore/java/jersey2/src/test/java/org/openapitools/client/StringUtilTest.java +cp CI/samples.ci/client/petstore/java/test-manual/jersey2/ApiClientTest.java samples/client/petstore/java/jersey2/src/test/java/org/openapitools/client/ApiClientTest.java +cp CI/samples.ci/client/petstore/java/test-manual/common/ConfigurationTest.java samples/client/petstore/java/jersey2/src/test/java/org/openapitools/client/ConfigurationTest.java +cp CI/samples.ci/client/petstore/java/test-manual/jersey2/auth/ApiKeyAuthTest.java samples/client/petstore/java/jersey2/src/test/java/org/openapitools/client/auth/ApiKeyAuthTest.java +cp CI/samples.ci/client/petstore/java/test-manual/jersey2/auth/HttpBasicAuthTest.java samples/client/petstore/java/jersey2/src/test/java/org/openapitools/client/auth/HttpBasicAuthTest.java +cp CI/samples.ci/client/petstore/java/test-manual/jersey2/model/EnumValueTest.java samples/client/petstore/java/jersey2/src/test/java/org/openapitools/client/model/EnumValueTest.java +cp CI/samples.ci/client/petstore/java/test-manual/jersey2/JSONTest.java samples/client/petstore/java/jersey2/src/test/java/org/openapitools/client/JSONTest.java diff --git a/bin/java-petstore-okhttp-gson.sh b/bin/java-petstore-okhttp-gson.sh index 755267573fe4..33a3c1903d2d 100755 --- a/bin/java-petstore-okhttp-gson.sh +++ b/bin/java-petstore-okhttp-gson.sh @@ -32,3 +32,16 @@ ags="generate -t modules/openapi-generator/src/main/resources/Java/libraries/okh rm -rf samples/client/petstore/java/okhttp-gson/src/main find samples/client/petstore/java/okhttp-gson -maxdepth 1 -type f ! -name "README.md" -exec rm {} + java $JAVA_OPTS -jar $executable $ags + +# copy additional manually written unit-tests +mkdir samples/client/petstore/java/okhttp-gson/src/test/java/org/openapitools/client +mkdir samples/client/petstore/java/okhttp-gson/src/test/java/org/openapitools/client/auth +mkdir samples/client/petstore/java/okhttp-gson/src/test/java/org/openapitools/client/model + +cp CI/samples.ci/client/petstore/java/test-manual/common/StringUtilTest.java samples/client/petstore/java/okhttp-gson/src/test/java/org/openapitools/client/StringUtilTest.java +cp CI/samples.ci/client/petstore/java/test-manual/okhttp-gson/ApiClientTest.java samples/client/petstore/java/okhttp-gson/src/test/java/org/openapitools/client/ApiClientTest.java +cp CI/samples.ci/client/petstore/java/test-manual/common/ConfigurationTest.java samples/client/petstore/java/okhttp-gson/src/test/java/org/openapitools/client/ConfigurationTest.java +cp CI/samples.ci/client/petstore/java/test-manual/okhttp-gson/auth/ApiKeyAuthTest.java samples/client/petstore/java/okhttp-gson/src/test/java/org/openapitools/client/auth/ApiKeyAuthTest.java +cp CI/samples.ci/client/petstore/java/test-manual/okhttp-gson/auth/HttpBasicAuthTest.java samples/client/petstore/java/okhttp-gson/src/test/java/org/openapitools/client/auth/HttpBasicAuthTest.java +cp CI/samples.ci/client/petstore/java/test-manual/okhttp-gson/model/EnumValueTest.java samples/client/petstore/java/okhttp-gson/src/test/java/org/openapitools/client/model/EnumValueTest.java +cp CI/samples.ci/client/petstore/java/test-manual/okhttp-gson/JSONTest.java samples/client/petstore/java/okhttp-gson/src/test/java/org/openapitools/client/JSONTest.java diff --git a/bin/java-petstore-resttemplate.sh b/bin/java-petstore-resttemplate.sh index 3ff4a22189ea..dbf04c44cc3d 100755 --- a/bin/java-petstore-resttemplate.sh +++ b/bin/java-petstore-resttemplate.sh @@ -33,3 +33,13 @@ echo "Removing files and folders under samples/client/petstore/java/resttemplate rm -rf samples/client/petstore/java/resttemplate/src/main find samples/client/petstore/java/resttemplate -maxdepth 1 -type f ! -name "README.md" -exec rm {} + java $JAVA_OPTS -jar $executable $ags + +# copy additional manually written unit-tests +mkdir samples/client/petstore/java/resttemplate/src/test/java/org/openapitools/client +mkdir samples/client/petstore/java/resttemplate/src/test/java/org/openapitools/client/auth +mkdir samples/client/petstore/java/resttemplate/src/test/java/org/openapitools/client/model + +cp CI/samples.ci/client/petstore/java/test-manual/resttemplate/ApiClientTest.java samples/client/petstore/java/resttemplate/src/test/java/org/openapitools/client/ApiClientTest.java +cp CI/samples.ci/client/petstore/java/test-manual/resttemplate/auth/ApiKeyAuthTest.java samples/client/petstore/java/resttemplate/src/test/java/org/openapitools/client/auth/ApiKeyAuthTest.java +cp CI/samples.ci/client/petstore/java/test-manual/resttemplate/auth/HttpBasicAuthTest.java samples/client/petstore/java/resttemplate/src/test/java/org/openapitools/client/auth/HttpBasicAuthTest.java +cp CI/samples.ci/client/petstore/java/test-manual/resttemplate/model/EnumValueTest.java samples/client/petstore/java/resttemplate/src/test/java/org/openapitools/client/model/EnumValueTest.java diff --git a/bin/java8-petstore-jersey2.sh b/bin/java8-petstore-jersey2.sh index 93338d9ad647..8f32b341209d 100755 --- a/bin/java8-petstore-jersey2.sh +++ b/bin/java8-petstore-jersey2.sh @@ -33,3 +33,16 @@ echo "Removing files and folders under samples/client/petstore/java/jersey2-java rm -rf samples/client/petstore/java/jersey2-java8/src/main find samples/client/petstore/java/jersey2-java8 -maxdepth 1 -type f ! -name "README.md" -exec rm {} + java $JAVA_OPTS -jar $executable $ags + +# copy additional manually written unit-tests +mkdir samples/client/petstore/java/jersey2-java8/src/test/java/org/openapitools/client +mkdir samples/client/petstore/java/jersey2-java8/src/test/java/org/openapitools/client/auth +mkdir samples/client/petstore/java/jersey2-java8/src/test/java/org/openapitools/client/model + +cp CI/samples.ci/client/petstore/java/test-manual/common/StringUtilTest.java samples/client/petstore/java/jersey2-java8/src/test/java/org/openapitools/client/StringUtilTest.java +cp CI/samples.ci/client/petstore/java/test-manual/jersey2/ApiClientTest.java samples/client/petstore/java/jersey2-java8/src/test/java/org/openapitools/client/ApiClientTest.java +cp CI/samples.ci/client/petstore/java/test-manual/common/ConfigurationTest.java samples/client/petstore/java/jersey2-java8/src/test/java/org/openapitools/client/ConfigurationTest.java +cp CI/samples.ci/client/petstore/java/test-manual/jersey2/auth/ApiKeyAuthTest.java samples/client/petstore/java/jersey2-java8/src/test/java/org/openapitools/client/auth/ApiKeyAuthTest.java +cp CI/samples.ci/client/petstore/java/test-manual/jersey2/auth/HttpBasicAuthTest.java samples/client/petstore/java/jersey2-java8/src/test/java/org/openapitools/client/auth/HttpBasicAuthTest.java +cp CI/samples.ci/client/petstore/java/test-manual/jersey2/model/EnumValueTest.java samples/client/petstore/java/jersey2-java8/src/test/java/org/openapitools/client/model/EnumValueTest.java +cp CI/samples.ci/client/petstore/java/test-manual/jersey2-java8/JSONTest.java samples/client/petstore/java/jersey2-java8/src/test/java/org/openapitools/client/JSONTest.java \ No newline at end of file diff --git a/bin/openapi3/pistache-server-petstore.sh b/bin/openapi3/cpp-pistache-server-petstore.sh similarity index 97% rename from bin/openapi3/pistache-server-petstore.sh rename to bin/openapi3/cpp-pistache-server-petstore.sh index b785bc047fd0..5f7dd337691f 100755 --- a/bin/openapi3/pistache-server-petstore.sh +++ b/bin/openapi3/cpp-pistache-server-petstore.sh @@ -27,6 +27,6 @@ fi # if you've executed sbt assembly previously it will use that instead. export JAVA_OPTS="${JAVA_OPTS} -XX:MaxPermSize=256M -Xmx1024M -DloggerPath=conf/log4j.properties" -ags="generate -g cpp-pistache-server -i modules/openapi-generator/src/test/resources/3_0/petstore.yaml -o samples/server/petstore/pistache-server $@" +ags="generate -g cpp-pistache-server -i modules/openapi-generator/src/test/resources/3_0/petstore.yaml -o samples/server/petstore/cpp-pistache $@" java $JAVA_OPTS -jar $executable $ags diff --git a/bin/openapi3/cpp-qt5-petstore.sh b/bin/openapi3/cpp-qt5-petstore.sh index d9e1835cc244..aa92aa3b5732 100755 --- a/bin/openapi3/cpp-qt5-petstore.sh +++ b/bin/openapi3/cpp-qt5-petstore.sh @@ -27,6 +27,6 @@ fi # if you've executed sbt assembly previously it will use that instead. export JAVA_OPTS="${JAVA_OPTS} -XX:MaxPermSize=256M -Xmx1024M -DloggerPath=conf/log4j.properties" -ags="generate -t modules/openapi-generator/src/main/resources/qt5cpp -i modules/openapi-generator/src/test/resources/3_0/petstore.yaml -g cpp-qt5 -o samples/client/petstore/cpp-qt5 $@" +ags="generate -t modules/openapi-generator/src/main/resources/cpp-qt5-client -i modules/openapi-generator/src/test/resources/3_0/petstore.yaml -g cpp-qt5 -o samples/client/petstore/cpp-qt5 $@" java $JAVA_OPTS -jar $executable $ags diff --git a/bin/openapi3/restbed-petstore-server.sh b/bin/openapi3/cpp-restbed-petstore-server.sh similarity index 98% rename from bin/openapi3/restbed-petstore-server.sh rename to bin/openapi3/cpp-restbed-petstore-server.sh index fd19d7ed676b..e86c7a772b6e 100755 --- a/bin/openapi3/restbed-petstore-server.sh +++ b/bin/openapi3/cpp-restbed-petstore-server.sh @@ -27,6 +27,6 @@ fi # if you've executed sbt assembly previously it will use that instead. export JAVA_OPTS="${JAVA_OPTS} -XX:MaxPermSize=256M -Xmx1024M -DloggerPath=conf/log4j.properties" -ags="generate -g cpp-restbed-server -i modules/openapi-generator/src/test/resources/3_0/petstore.yaml -o samples/server/petstore/restbed $@" +ags="generate -g cpp-restbed-server -i modules/openapi-generator/src/test/resources/3_0/petstore.yaml -o samples/server/petstore/cpp-restbed $@" java $JAVA_OPTS -jar $executable $ags diff --git a/bin/openapi3/cpp-tizen-petstore.sh b/bin/openapi3/cpp-tizen-petstore.sh index 2b1179642af2..149ec49339c8 100755 --- a/bin/openapi3/cpp-tizen-petstore.sh +++ b/bin/openapi3/cpp-tizen-petstore.sh @@ -27,6 +27,6 @@ fi # if you've executed sbt assembly previously it will use that instead. export JAVA_OPTS="${JAVA_OPTS} -XX:MaxPermSize=256M -Xmx1024M -DloggerPath=conf/log4j.properties" -ags="generate -t modules/openapi-generator/src/main/resources/tizen -i modules/openapi-generator/src/test/resources/3_0/petstore.yaml -g cpp-tizen -o samples/client/petstore/cpp-tizen $@" +ags="generate -t modules/openapi-generator/src/main/resources/cpp-tizen-client -i modules/openapi-generator/src/test/resources/3_0/petstore.yaml -g cpp-tizen -o samples/client/petstore/cpp-tizen $@" java $JAVA_OPTS -jar $executable $ags diff --git a/bin/rust-server-petstore.sh b/bin/rust-server-petstore.sh index 2f44b80c45c7..06a8c4d02023 100755 --- a/bin/rust-server-petstore.sh +++ b/bin/rust-server-petstore.sh @@ -27,6 +27,6 @@ fi # if you've executed sbt assembly previously it will use that instead. export JAVA_OPTS="${JAVA_OPTS} -XX:MaxPermSize=256M -Xmx1024M -DloggerPath=conf/log4j.properties" -ags="generate -t modules/openapi-generator/src/main/resources/rust-server -i modules/openapi-generator/src/test/resources/2_0/petstore-with-fake-endpoints-models-for-testing.yaml -g rust-server -o samples/server/petstore/rust-server -DpackageName=petstore_api $@" +ags="generate -t modules/openapi-generator/src/main/resources/rust-server -i modules/openapi-generator/src/test/resources/2_0/rust-server/petstore-with-fake-endpoints-models-for-testing.yaml -g rust-server -o samples/server/petstore/rust-server -DpackageName=petstore_api --additional-properties hideGenerationTimestamp=true $@" java $JAVA_OPTS -jar $executable $ags diff --git a/bin/security/cpp-qt5-petstore.sh b/bin/security/cpp-qt5-petstore.sh index 1a2b5e76a16e..47ec7af45483 100755 --- a/bin/security/cpp-qt5-petstore.sh +++ b/bin/security/cpp-qt5-petstore.sh @@ -27,6 +27,6 @@ fi # if you've executed sbt assembly previously it will use that instead. export JAVA_OPTS="${JAVA_OPTS} -XX:MaxPermSize=256M -Xmx1024M -DloggerPath=conf/log4j.properties" -ags="generate -t modules/openapi-generator/src/main/resources/qt5cpp -i modules/openapi-generator/src/test/resources/2_0/petstore-security-test.yaml -g cpp-qt5 -o samples/client/petstore-security-test/cpp-qt5 $@" +ags="generate -t modules/openapi-generator/src/main/resources/cpp-qt5-client -i modules/openapi-generator/src/test/resources/2_0/petstore-security-test.yaml -g cpp-qt5 -o samples/client/petstore-security-test/cpp-qt5 $@" java $JAVA_OPTS -jar $executable $ags diff --git a/bin/security/windows/qt5cpp-petstore.bat b/bin/security/windows/qt5cpp-petstore.bat index 6cb8a45dbe13..57d6b6c5f9ec 100644 --- a/bin/security/windows/qt5cpp-petstore.bat +++ b/bin/security/windows/qt5cpp-petstore.bat @@ -5,6 +5,6 @@ If Not Exist %executable% ( ) REM set JAVA_OPTS=%JAVA_OPTS% -Xmx1024M -set ags=generate -t modules/openapi-generator/src/main/resources/qt5cpp -i modules\openapi-generator\src\test\resources\2_0\petstore-security-test.yaml -g qt5cpp -o samples\client\petstore-security-test\qt5cpp +set ags=generate -t modules/openapi-generator/src/main/resources/cpp-qt5-client -i modules\openapi-generator\src\test\resources\2_0\petstore-security-test.yaml -g qt5cpp -o samples\client\petstore-security-test\qt5cpp java %JAVA_OPTS% -jar %executable% %ags% diff --git a/bin/typescript-angular-petstore-all.sh b/bin/typescript-angular-petstore-all.sh index 6e532d840ba1..eb94794cb077 100755 --- a/bin/typescript-angular-petstore-all.sh +++ b/bin/typescript-angular-petstore-all.sh @@ -5,3 +5,7 @@ ./bin/typescript-angular-v2-petstore-interfaces.sh ./bin/typescript-angular-v4-petstore-with-npm.sh ./bin/typescript-angular-v4.3-petstore-with-npm.sh +./bin/typescript-angular-v6-petstore-not-provided-in-root.sh +./bin/typescript-angular-v6-petstore-not-provided-in-root-with-npm.sh +./bin/typescript-angular-v6-petstore-provided-in-root.sh +./bin/typescript-angular-v6-petstore-provided-in-root-with-npm.sh diff --git a/bin/typescript-angular-v6-petstore-not-provided-in-root-with-npm.json b/bin/typescript-angular-v6-petstore-not-provided-in-root-with-npm.json new file mode 100644 index 000000000000..999bde52439c --- /dev/null +++ b/bin/typescript-angular-v6-petstore-not-provided-in-root-with-npm.json @@ -0,0 +1,6 @@ +{ + "npmName": "@swagger/typescript-angular-petstore", + "npmVersion": "1.0.0", + "npmRepository" : "https://skimdb.npmjs.com/registry", + "snapshot" : false +} diff --git a/bin/typescript-angular-v6-petstore-not-provided-in-root-with-npm.sh b/bin/typescript-angular-v6-petstore-not-provided-in-root-with-npm.sh new file mode 100755 index 000000000000..856e56d14077 --- /dev/null +++ b/bin/typescript-angular-v6-petstore-not-provided-in-root-with-npm.sh @@ -0,0 +1,32 @@ +#!/bin/sh + +SCRIPT="$0" +echo "# START SCRIPT: $SCRIPT" + +while [ -h "$SCRIPT" ] ; do + ls=`ls -ld "$SCRIPT"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + SCRIPT="$link" + else + SCRIPT=`dirname "$SCRIPT"`/"$link" + fi +done + +if [ ! -d "${APP_DIR}" ]; then + APP_DIR=`dirname "$SCRIPT"`/.. + APP_DIR=`cd "${APP_DIR}"; pwd` +fi + +executable="./modules/openapi-generator-cli/target/openapi-generator-cli.jar" + +if [ ! -f "$executable" ] +then + mvn -B clean package +fi + +# if you've executed sbt assembly previously it will use that instead. +export JAVA_OPTS="${JAVA_OPTS} -XX:MaxPermSize=256M -Xmx1024M -DloggerPath=conf/log4j.properties" +ags="generate -i modules/openapi-generator/src/test\resources/2_0/petstore.yaml -g typescript-angular -c bin/typescript-angular-v6-petstore-not-provided-in-root-with-npm.json -o samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/with-npm -D providedInRoot=false --additional-properties ngVersion=6.0.0 $@" + +java $JAVA_OPTS -jar $executable $ags diff --git a/bin/typescript-angular-v6-petstore-not-provided-in-root.sh b/bin/typescript-angular-v6-petstore-not-provided-in-root.sh new file mode 100755 index 000000000000..c33a15d4b497 --- /dev/null +++ b/bin/typescript-angular-v6-petstore-not-provided-in-root.sh @@ -0,0 +1,32 @@ +#!/bin/sh + +SCRIPT="$0" +echo "# START SCRIPT: $SCRIPT" + +while [ -h "$SCRIPT" ] ; do + ls=`ls -ld "$SCRIPT"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + SCRIPT="$link" + else + SCRIPT=`dirname "$SCRIPT"`/"$link" + fi +done + +if [ ! -d "${APP_DIR}" ]; then + APP_DIR=`dirname "$SCRIPT"`/.. + APP_DIR=`cd "${APP_DIR}"; pwd` +fi + +executable="./modules/openapi-generator-cli/target/openapi-generator-cli.jar" + +if [ ! -f "$executable" ] +then + mvn -B clean package +fi + +# if you've executed sbt assembly previously it will use that instead. +export JAVA_OPTS="${JAVA_OPTS} -XX:MaxPermSize=256M -Xmx1024M -DloggerPath=conf/log4j.properties" +ags="generate -i modules/openapi-generator/src/test\resources/2_0/petstore.yaml -g typescript-angular -o samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/default -D providedInRoot=false --additional-properties ngVersion=6.0.0 $@" + +java $JAVA_OPTS -jar $executable $ags diff --git a/bin/typescript-angular-v6-petstore-provided-in-root-with-npm.json b/bin/typescript-angular-v6-petstore-provided-in-root-with-npm.json new file mode 100644 index 000000000000..999bde52439c --- /dev/null +++ b/bin/typescript-angular-v6-petstore-provided-in-root-with-npm.json @@ -0,0 +1,6 @@ +{ + "npmName": "@swagger/typescript-angular-petstore", + "npmVersion": "1.0.0", + "npmRepository" : "https://skimdb.npmjs.com/registry", + "snapshot" : false +} diff --git a/bin/typescript-angular-v6-petstore-provided-in-root-with-npm.sh b/bin/typescript-angular-v6-petstore-provided-in-root-with-npm.sh new file mode 100755 index 000000000000..a12f62832c5d --- /dev/null +++ b/bin/typescript-angular-v6-petstore-provided-in-root-with-npm.sh @@ -0,0 +1,32 @@ +#!/bin/sh + +SCRIPT="$0" +echo "# START SCRIPT: $SCRIPT" + +while [ -h "$SCRIPT" ] ; do + ls=`ls -ld "$SCRIPT"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + SCRIPT="$link" + else + SCRIPT=`dirname "$SCRIPT"`/"$link" + fi +done + +if [ ! -d "${APP_DIR}" ]; then + APP_DIR=`dirname "$SCRIPT"`/.. + APP_DIR=`cd "${APP_DIR}"; pwd` +fi + +executable="./modules/openapi-generator-cli/target/openapi-generator-cli.jar" + +if [ ! -f "$executable" ] +then + mvn -B clean package +fi + +# if you've executed sbt assembly previously it will use that instead. +export JAVA_OPTS="${JAVA_OPTS} -XX:MaxPermSize=256M -Xmx1024M -DloggerPath=conf/log4j.properties" +ags="generate -i modules/openapi-generator/src/test/resources/2_0/petstore.yaml -g typescript-angular -c bin/typescript-angular-v6-petstore-provided-in-root-with-npm.json -o samples/client/petstore/typescript-angular-v6-provided-in-root/builds/with-npm --additional-properties ngVersion=6.0.0 $@" + +java $JAVA_OPTS -jar $executable $ags diff --git a/bin/typescript-angular-v6-petstore-provided-in-root.sh b/bin/typescript-angular-v6-petstore-provided-in-root.sh new file mode 100755 index 000000000000..540f233c1062 --- /dev/null +++ b/bin/typescript-angular-v6-petstore-provided-in-root.sh @@ -0,0 +1,32 @@ +#!/bin/sh + +SCRIPT="$0" +echo "# START SCRIPT: $SCRIPT" + +while [ -h "$SCRIPT" ] ; do + ls=`ls -ld "$SCRIPT"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + SCRIPT="$link" + else + SCRIPT=`dirname "$SCRIPT"`/"$link" + fi +done + +if [ ! -d "${APP_DIR}" ]; then + APP_DIR=`dirname "$SCRIPT"`/.. + APP_DIR=`cd "${APP_DIR}"; pwd` +fi + +executable="./modules/openapi-generator-cli/target/openapi-generator-cli.jar" + +if [ ! -f "$executable" ] +then + mvn -B clean package +fi + +# if you've executed sbt assembly previously it will use that instead. +export JAVA_OPTS="${JAVA_OPTS} -XX:MaxPermSize=256M -Xmx1024M -DloggerPath=conf/log4j.properties" +ags="generate -i modules/openapi-generator/src/test/resources/2_0/petstore.yaml -g typescript-angular -o samples/client/petstore/typescript-angular-v6-provided-in-root/builds/default --additional-properties ngVersion=6.0.0 $@" + +java $JAVA_OPTS -jar $executable $ags diff --git a/bin/utils/ensure-up-to-date b/bin/utils/ensure-up-to-date new file mode 100755 index 000000000000..f8f84d393ef0 --- /dev/null +++ b/bin/utils/ensure-up-to-date @@ -0,0 +1,41 @@ +#!/bin/bash +# this bash script run the scripts for the 'mature' generators +# it ensures that all changes are committed into the 'samples/' folder + +echo "# START SCRIPT: $0" + +echo "IMPORTANT: this script should be run by the CI (e.g. Shippable) to ensure that the 'samples/' folder is up to date." +echo "Please press CTRL+C to stop or the script will continue in 5 seconds." + +sleep 5 + +# LIST OF SCRIPTS: +./bin/ruby-petstore.sh > /dev/null 2>&1 +./bin/java-petstore-all.sh > /dev/null 2>&1 +./bin/java-jaxrs-petstore-server-all.sh > /dev/null 2>&1 +./bin/spring-all-pestore.sh > /dev/null 2>&1 +./bin/kotlin-client-petstore.sh > /dev/null 2>&1 +./bin/kotlin-client-string.sh > /dev/null 2>&1 +./bin/kotlin-client-threetenbp.sh > /dev/null 2>&1 +./bin/kotlin-server-petstore.shl> /dev/null 2>&1 +./bin/php-petstore.sh > /dev/null 2>&1 +./bin/php-silex-petstore-server.shj> /dev/null 2>&1 +./bin/php-symfony-petstore.sh > /dev/null 2>&1 +./bin/php-lumen-petstore-server.sh > /dev/null 2>&1 +./bin/php-slim-petstore-server.sh > /dev/null 2>&1 +./bin/php-ze-ph-petstore-server.sh > /dev/null 2>&1 +./bin/openapi3/php-petstore.sh > /dev/null 2>&1 + +# Check: +if [ -n "$(git status --porcelain)" ]; then + echo "UNCOMMITTED CHANGES ERROR" + echo "There are uncommitted changes in working tree after execution of 'bin/ensure-up-to-date'" + echo "Perform git diff" + git --no-pager diff + echo "Perform git status" + git status + echo "Please run 'bin/ensure-up-to-date' locally and commit changes (UNCOMMITTED CHANGES ERROR)" + exit 1 +else + echo "Git working tree is clean" +fi diff --git a/bin/utils/release_version_update.sh b/bin/utils/release_version_update.sh index c76175b0bdf1..91f70d67f0f7 100755 --- a/bin/utils/release_version_update.sh +++ b/bin/utils/release_version_update.sh @@ -39,7 +39,6 @@ declare -a files=("CI/pom.xml.bash" "CI/pom.xml.circleci" "CI/pom.xml.circleci.java7" "CI/pom.xml.ios" - "CI/pom.xml.shippable" "modules/openapi-generator-cli/pom.xml" "modules/openapi-generator-gradle-plugin/README.adoc" "modules/openapi-generator-gradle-plugin/gradle.properties" diff --git a/bin/windows/pistache-server-petstore.bat b/bin/windows/cpp-pistache-server-petstore.bat similarity index 94% rename from bin/windows/pistache-server-petstore.bat rename to bin/windows/cpp-pistache-server-petstore.bat index f1b1b96faa6f..3f9e53029b53 100644 --- a/bin/windows/pistache-server-petstore.bat +++ b/bin/windows/cpp-pistache-server-petstore.bat @@ -5,6 +5,6 @@ If Not Exist %executable% ( ) REM set JAVA_OPTS=%JAVA_OPTS% -Xmx1024M -DloggerPath=conf/log4j.properties -set ags=generate -i modules\openapi-generator\src\test\resources\2_0\petstore.yaml -g cpp-pistache-server -o samples\server\petstore\pistache-server\ +set ags=generate -i modules\openapi-generator\src\test\resources\2_0\petstore.yaml -g cpp-pistache-server -o samples\server\petstore\cpp-pistache\ java %JAVA_OPTS% -jar %executable% %ags% diff --git a/bin/windows/restbed-petstore-server.bat b/bin/windows/cpp-restbed-petstore-server.bat similarity index 95% rename from bin/windows/restbed-petstore-server.bat rename to bin/windows/cpp-restbed-petstore-server.bat index 6ffb881c28f9..e3a76db3f913 100644 --- a/bin/windows/restbed-petstore-server.bat +++ b/bin/windows/cpp-restbed-petstore-server.bat @@ -5,6 +5,6 @@ If Not Exist %executable% ( ) REM set JAVA_OPTS=%JAVA_OPTS% -Xmx1024M -DloggerPath=conf/log4j.properties -set ags=generate -i modules\openapi-generator\src\test\resources\2_0\petstore.yaml -g cpp-restbed-server -o samples\server\petstore\restbed\ +set ags=generate -i modules\openapi-generator\src\test\resources\2_0\petstore.yaml -g cpp-restbed-server -o samples\server\petstore\cpp-restbed\ java %JAVA_OPTS% -jar %executable% %ags% diff --git a/bin/windows/typescript-angular-petstore-all.bat b/bin/windows/typescript-angular-petstore-all.bat index 7f153399d15f..9dc201638379 100644 --- a/bin/windows/typescript-angular-petstore-all.bat +++ b/bin/windows/typescript-angular-petstore-all.bat @@ -4,6 +4,8 @@ call .\bin\windows\typescript-angular-v2.bat call .\bin\windows\typescript-angular-v4-with-npm.bat call .\bin\windows\typescript-angular-v4.3-with-npm.bat call .\bin\windows\typescript-angular-v6-provided-in-root.bat +call .\bin\windows\typescript-angular-v6-provided-in-root-with-npm.bat call .\bin\windows\typescript-angular-v6-not-provided-in-root.bat +call .\bin\windows\typescript-angular-v6-not-provided-in-root-with-npm.bat diff --git a/bin/windows/typescript-angular-v6-not-provided-in-root-with-npm.bat b/bin/windows/typescript-angular-v6-not-provided-in-root-with-npm.bat new file mode 100644 index 000000000000..a60b83960c57 --- /dev/null +++ b/bin/windows/typescript-angular-v6-not-provided-in-root-with-npm.bat @@ -0,0 +1,10 @@ +set executable=.\modules\openapi-generator-cli\target\openapi-generator-cli.jar + +If Not Exist %executable% ( + mvn clean package +) + +REM set JAVA_OPTS=%JAVA_OPTS% -Xmx1024M +set ags=generate -i modules\openapi-generator\src\test\resources\2_0\petstore.yaml -l typescript-angular -c bin\typescript-angular-v6-petstore-not-provided-in-root-with-npm.json -o samples\client\petstore\typescript-angular-v6-not-provided-in-root\builds\with-npm -D providedInRoot=false --additional-properties ngVersion=6.0.0 + +java %JAVA_OPTS% -jar %executable% %ags% diff --git a/bin/windows/typescript-angular-v6-not-provided-in-root.bat b/bin/windows/typescript-angular-v6-not-provided-in-root.bat index c59b71c62759..478a0905e5f7 100644 --- a/bin/windows/typescript-angular-v6-not-provided-in-root.bat +++ b/bin/windows/typescript-angular-v6-not-provided-in-root.bat @@ -5,6 +5,6 @@ If Not Exist %executable% ( ) REM set JAVA_OPTS=%JAVA_OPTS% -Xmx1024M -set ags=generate -i modules\openapi-generator\src\test\resources\2_0\petstore.yaml -l typescript-angular -o samples\client\petstore\typescript-angular-v6-not-provided-in-root\default -D providedInRoot=false --additional-properties ngVersion=6.0.0 +set ags=generate -i modules\openapi-generator\src\test\resources\2_0\petstore.yaml -l typescript-angular -o samples\client\petstore\typescript-angular-v6-not-provided-in-root\builds\default -D providedInRoot=false --additional-properties ngVersion=6.0.0 java %JAVA_OPTS% -jar %executable% %ags% diff --git a/bin/windows/typescript-angular-v6-provided-in-root-with-npm.bat b/bin/windows/typescript-angular-v6-provided-in-root-with-npm.bat new file mode 100644 index 000000000000..d8f607d763df --- /dev/null +++ b/bin/windows/typescript-angular-v6-provided-in-root-with-npm.bat @@ -0,0 +1,12 @@ +set executable=.\modules\openapi-generator-cli\target\openapi-generator-cli.jar + +If Not Exist %executable% ( + mvn clean package +) + +REM set JAVA_OPTS=%JAVA_OPTS% -Xmx1024M +set ags=generate -i modules\openapi-generator\src\test\resources\2_0\petstore.yaml -l typescript-angular -o samples\client\petstore\typescript-angular-v6-provided-in-root\default --additional-properties ngVersion=6.0.0 +REM it is same like like setting -D providedInRoot=true +REM set ags=generate -i modules\openapi-generator\src\test\resources\2_0\petstore.yaml -l typescript-angular -c bin\typescript-angular-v6-petstore-provided-in-root-with-npm.json -o samples\client\petstore\typescript-angular-v6-provided-in-root\builds\with-npm -D providedInRoot=true --additional-properties ngVersion=6.0.0 + +java %JAVA_OPTS% -jar %executable% %ags% diff --git a/bin/windows/typescript-angular-v6-provided-in-root.bat b/bin/windows/typescript-angular-v6-provided-in-root.bat index f597efabc178..962892e73cb0 100644 --- a/bin/windows/typescript-angular-v6-provided-in-root.bat +++ b/bin/windows/typescript-angular-v6-provided-in-root.bat @@ -7,6 +7,6 @@ If Not Exist %executable% ( REM set JAVA_OPTS=%JAVA_OPTS% -Xmx1024M set ags=generate -i modules\openapi-generator\src\test\resources\2_0\petstore.yaml -l typescript-angular -o samples\client\petstore\typescript-angular-v6-provided-in-root\default --additional-properties ngVersion=6.0.0 REM it is same like like setting -D providedInRoot=true -REM set ags=generate -i modules\openapi-generator\src\test\resources\2_0\petstore.yaml -l typescript-angular -o samples\client\petstore\typescript-angular-v6-provided-in-root\default -D providedInRoot=true --additional-properties ngVersion=6.0.0 +REM set ags=generate -i modules\openapi-generator\src\test\resources\2_0\petstore.yaml -l typescript-angular -o samples\client\petstore\typescript-angular-v6-provided-in-root\builds\default -D providedInRoot=true --additional-properties ngVersion=6.0.0 java %JAVA_OPTS% -jar %executable% %ags% diff --git a/circle.yml b/circle.yml index 9dabe4b5d863..2cc3e707778b 100644 --- a/circle.yml +++ b/circle.yml @@ -1,54 +1,108 @@ -# Java-related client, server tests -machine: - java: - version: openjdk8 - services: - - docker - # Override /etc/hosts - hosts: - petstore.swagger.io: 127.0.0.1 - environment: - DOCKER_GENERATOR_IMAGE_NAME: openapitools/openapi-generator - DOCKER_CODEGEN_CLI_IMAGE_NAME: openapitools/openapi-generator-cli +version: 2 +jobs: + build: + machine: + docker_layer_caching: true + working_directory: ~/OpenAPITools/openapi-generator + parallelism: 1 + shell: /bin/bash --login + environment: + CIRCLE_ARTIFACTS: /tmp/circleci-artifacts + CIRCLE_TEST_REPORTS: /tmp/circleci-test-results + DOCKER_GENERATOR_IMAGE_NAME: openapitools/openapi-generator + DOCKER_CODEGEN_CLI_IMAGE_NAME: openapitools/openapi-generator-cli + steps: + # Machine Setup + # If you break your build into multiple jobs with workflows, you will probably want to do the parts of this that are relevant in each + # The following `checkout` command checks out your code to your working directory. In 1.0 we did this implicitly. In 2.0 you can choose where in the course of a job your code should be checked out. + - checkout + # Prepare for artifact and test results collection equivalent to how it was done on 1.0. + # In many cases you can simplify this from what is generated here. + # 'See docs on artifact collection here https://circleci.com/docs/2.0/artifacts/' + - run: mkdir -p $CIRCLE_ARTIFACTS $CIRCLE_TEST_REPORTS + # This is based on your 1.0 configuration file or project settings + - run: + command: sudo update-alternatives --set java /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java; sudo update-alternatives --set javac /usr/lib/jvm/java-8-openjdk-amd64/bin/javac; echo -e "export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64" >> $BASH_ENV + - run: + command: 'sudo docker info >/dev/null 2>&1 || sudo service docker start; ' + - run: + command: |- + printf '127.0.0.1 petstore.swagger.io + ' | sudo tee -a /etc/hosts + # Dependencies + # This would typically go in either a build or a build-and-test job when using workflows + # Restore the dependency cache + - restore_cache: + keys: + # This branch if available + - v1-dep-{{ .Branch }}- + # Default branch if not + - v1-dep-master- + # This is based on your 1.0 configuration file or project settings + - run: sudo add-apt-repository ppa:duggan/bats --yes + - run: sudo apt-get update -qq + - run: sudo apt-get install -qq bats + - run: sudo apt-get install -qq curl + # Install latest stable node for angular 6 + - run: + name: Install node@stable (for angular 6) + command: | + set +e + curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.11/install.sh | bash + export NVM_DIR="/opt/circleci/.nvm" + [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" + nvm install stable + nvm alias default stable -dependencies: - cache_directories: - - "~/.m2" - - "~/.sbt" - - "~/.ivy2/cache" - - pre: - - sudo add-apt-repository ppa:duggan/bats --yes - - sudo apt-get update -qq - - sudo apt-get install -qq bats - - sudo apt-get install -qq curl - # to run petstore server locally via docker - - docker pull swaggerapi/petstore - - docker run -d -e SWAGGER_HOST=http://petstore.swagger.io -e SWAGGER_BASE_PATH=/v2 -p 80:8080 swaggerapi/petstore - - docker ps -a - # show host table to confirm petstore.swagger.io is mapped to localhost - - cat /etc/hosts - override: - - cp CI/pom.xml.circleci pom.xml - -test: - override: - ## test with jdk8 - - java -version - - mvn --quiet clean install - - mvn --quiet verify -Psamples - # skip the rest if previous mvn task fails - - if [ $? -ne 0 ]; then exit 1; fi - ## test with jdk7 - - sudo update-java-alternatives -s java-1.7.0-openjdk-amd64 - - java -version - - cp CI/pom.xml.circleci.java7 pom.xml # use jdk7 pom - - mvn --quiet clean install - - mvn --quiet verify -Psamples - # skip the rest if previous mvn task fails - - if [ $? -ne 0 ]; then exit 1; fi - ## docker push done in Travis instead - ## docker: build generator image and push to Docker Hub - #- if [ $DOCKER_HUB_USERNAME ]; then docker login --email=$DOCKER_HUB_EMAIL --username=$DOCKER_HUB_USERNAME --password=$DOCKER_HUB_PASSWORD && docker build --rm=false -t $DOCKER_GENERATOR_IMAGE_NAME ./modules/opeanapi-generator && if [ ! -z "$CIRCLE_TAG" ]; then docker tag $DOCKER_GENERATOR_IMAGE_NAME:latest $DOCKER_GENERATOR_IMAGE_NAME:$CIRCLE_TAG; fi && if [ ! -z "$CIRCLE_TAG" ] || [ "$CIRCLE_BRANCH" = "master" ]; then docker push $DOCKER_GENERATOR_IMAGE_NAME; fi; fi - ### docker: build cli image and push to Docker Hub - #- if [ $DOCKER_HUB_USERNAME ]; then docker login --email=$DOCKER_HUB_EMAIL --username=$DOCKER_HUB_USERNAME --password=$DOCKER_HUB_PASSWORD && docker build --rm=false -t $DOCKER_CODEGEN_CLI_IMAGE_NAME ./modules/openapi-generator-cli && if [ ! -z "$CIRCLE_TAG" ]; then docker tag $DOCKER_CODEGEN_CLI_IMAGE_NAME:latest $DOCKER_CODEGEN_CLI_IMAGE_NAME:$CIRCLE_TAG; fi && if [ ! -z "$CIRCLE_TAG" ] || [ "$CIRCLE_BRANCH" = "master" ]; then docker push $DOCKER_CODEGEN_CLI_IMAGE_NAME; fi; fi + # Each step uses the same `$BASH_ENV`, so need to modify it + echo 'export NVM_DIR="/opt/circleci/.nvm"' >> $BASH_ENV + echo "[ -s \"$NVM_DIR/nvm.sh\" ] && . \"$NVM_DIR/nvm.sh\"" >> $BASH_ENV + - run: node --version +# - run: docker pull openapitools/openapi-petstore +# - run: docker run -d -e OPENAPI_BASE_PATH=/v3 -e DISABLE_API_KEY=1 -e DISABLE_OAUTH=1 -p 80:8080 openapitools/openapi-petstore + - run: docker pull swaggerapi/petstore + - run: docker run -d -e SWAGGER_HOST=http://petstore.swagger.io -e SWAGGER_BASE_PATH=/v2 -p 80:8080 swaggerapi/petstore + - run: docker ps -a + - run: sleep 30 + - run: cat /etc/hosts + # This is based on your 1.0 configuration file or project settings + - run: cp CI/pom.xml.circleci pom.xml + # Save dependency cache + - save_cache: + key: v1-dep-{{ .Branch }} + paths: + # This is a broad list of cache paths to include many possible development environments + # You can probably delete some of these entries + - vendor/bundle + - ~/virtualenvs + - ~/.m2 + - ~/.ivy2 + - ~/.bundle + - ~/.go_workspace + - ~/.gradle + - ~/.cache/bower + # These cache paths were specified in the 1.0 config + - ~/.sbt + # Test + # This would typically be a build job when using workflows, possibly combined with build + # This is based on your 1.0 configuration file or project settings + - run: java -version + - run: mvn --quiet clean install + - run: mvn --quiet verify -Psamples + - run: if [ $? -ne 0 ]; then exit 1; fi + - run: sudo update-java-alternatives -s java-1.7.0-openjdk-amd64 + - run: java -version + - run: cp CI/pom.xml.circleci.java7 pom.xml + - run: mvn --quiet clean install + - run: mvn --quiet verify -Psamples + - run: if [ $? -ne 0 ]; then exit 1; fi + # Teardown + # If you break your build into multiple jobs with workflows, you will probably want to do the parts of this that are relevant in each + # Save test results + - store_test_results: + path: /tmp/circleci-test-results + # Save artifacts + - store_artifacts: + path: /tmp/circleci-artifacts + - store_artifacts: + path: /tmp/circleci-test-results diff --git a/docs/3.0.0-release-note.md b/docs/3.0.0-release-note.md index 1bb85e97de06..12a20c149e56 100644 --- a/docs/3.0.0-release-note.md +++ b/docs/3.0.0-release-note.md @@ -166,7 +166,7 @@ cf8d8d56f [PHP] Fix code example from README. Variable name was missing when usi 76907cacd [PHP] declare property headerSelector ### Python -7184f1ec6 [python] asyncio supports _preload_content; remove unsed imports (#107) +7184f1ec6 [python] asyncio supports _preload_content; remove unused imports (#107) d74d2ba03 fix: python clients 8e0a0ebd6 Fix python / tornado body handling b39c35c76 Fix inconsistency between model name and file name in python client @@ -250,7 +250,7 @@ ce930e7a6 [Jaxrs-cxf] Add bean-level cascaded beanvalidation for pojos (@Valid) ff1178ad7 [Java][Spring] fix missing optional query params 2103fadab Fix package declaration for play-framework 2c6380c84 fix inner item (list, map) for play framework -e33b350c8 Fix an issue in Play Framework generator where a CSV is empty and transfered to the controllerImp with an empty item. +e33b350c8 Fix an issue in Play Framework generator where a CSV is empty and transferred to the controllerImp with an empty item. 99fc27246 [JAX-RS][Spec] Removes throws Exception. fe2a44339 Fixes issue (SpringCodeGen dateLibrary "java8-localdatetime" option is ignored). d890d733f [JaxRS][Java] issue with implFolder on windows, and required fields generation for containers (#88) diff --git a/docs/customization.md b/docs/customization.md index 565a7678d27c..ec1a534c98da 100644 --- a/docs/customization.md +++ b/docs/customization.md @@ -1,38 +1,58 @@ ## Customization -### Modifying the client library format -Don't like the default client syntax? Want a different language supported? No problem! OpenAPI Generator processes mustache templates with the [jmustache](https://github.com/samskivert/jmustache) engine. You can modify our templates or make your own. +### Modifying a template -You can look at `modules/openapi-generator/src/main/resources/${your-language}` for examples. To make your own templates, create your own files and use the `-t` flag to specify your template folder. It actually is that easy. +Clone OpenAPI Generator and navigate to `modules/openapi-generator/src/main/resources/${template}`, where `${template}` is the name of the generator you wish to modify. For example, if you are looking for the C# template, it's named `csharp`. This directory contains all the templates used to generate your target client/server/doc output. -### Making your own codegen modules +Templates consist of multiple mustache files. [Mustache](https://mustache.github.io/) is used as the templating language for these templates, and the specific engine used is [jmustache](https://github.com/samskivert/jmustache). -If you're starting a project with a new language and don't see what you need, openapi-generator can help you create a project to generate your own libraries: +If you wish to modify one of these templates, copy and paste the template you're interested in to a templates directory you control. To let OpenAPI Generator know where this templates directory is, use the `-t` option (e.g: `-t ./templates/`). + +To tie that all together (example for modifying ruby templates): + +```sh +mkdir templates +export template=ruby +cp -r modules/openapi-generator/src/main/resources/${template} templates/${template} +java -jar modules/openapi-generator-cli/target/openapi-generator-cli.jar generate \ + -t ./templates/${template} -g ruby -i ./foo.yml -o ./out/ruby +``` + +_**Note:** You cannot use this approach to create new templates, only override existing ones. If you'd like to create a new generator within the project, see `new.sh` in the repository root._ + +### Creating a new template + +If none of the templates suit your needs, you can create a brand new template. OpenAPI Generator can help with this, using the `meta` command: ```sh java -jar modules/openapi-generator-cli/target/openapi-generator-cli.jar meta \ - -o output/myLibrary -n myClientCodegen -p com.my.company.codegen + -o out/generators/my-codegen -n my-codegen -p com.my.company.codegen ``` -This will write, in the folder `output/myLibrary`, all the files you need to get started, including a `README.md. Once modified and compiled, you can load your library with the codegen and generate clients with your own, custom-rolled logic. +This will create a new directory `out/generators/my-codegen`, with all the files you need to get started - including a `README.md`. Once modified and compiled, you can use your new codegen just like any other, with your own custom-rolled logic. + +These names can be anything you like. If you are building a client for the whitespace language, maybe you'd use the options `-o out/generators/whitespace -n whitespace`. They can be the same, or different, it doesn't matter. The `-n` value will be become the template name. -You would then compile your library in the `output/myLibrary` folder with `mvn package` and execute the codegen like such: +**NOTE** Convention is to use kebab casing for names passed to `-n`. Example, `scala-finatra` would become `ScalaFinatraGenerator`. + +To compile your library, enter the `out/generators/my-codegen` directory, run `mvn package` and execute the generator: ```sh -java -cp output/myLibrary/target/myClientCodegen-openapi-generator-1.0.0.jar:modules/openapi-generator-cli/target/openapi-generator-cli.jar org.openapitools.codegen.OpenAPIGenerator +java -cp out/generators/my-codegen/target/my-codegen-openapi-generator-1.0.0.jar:modules/openapi-generator-cli/target/openapi-generator-cli.jar org.openapitools.codegen.OpenAPIGenerator ``` + For Windows users, you will need to use `;` instead of `:` in the classpath, e.g. ``` -java -cp output/myLibrary/target/myClientCodegen-openapi-generator-1.0.0.jar;modules/openapi-generator-cli/target/openapi-generator-cli.jar org.openapitools.codegen.OpenAPIGenerator +java -cp out/generators/my-codegen/target/my-codegen-openapi-generator-1.0.0.jar;modules/openapi-generator-cli/target/openapi-generator-cli.jar org.openapitools.codegen.OpenAPIGenerator ``` -Note the `myClientCodegen` is an option now, and you can use the usual arguments for generating your library: +Note the `my-codegen` is an option for `-g` now, and you can use the usual arguments for generating your code: ```sh -java -cp output/myLibrary/target/myClientCodegen-openapi-generator-1.0.0.jar:modules/openapi-generator-cli/target/openapi-generator-cli.jar \ - io.openapitools.codegen.OpenAPIGenerator generate -g myClientCodegen\ +java -cp out/codegens/customCodegen/target/my-codegen-openapi-generator-1.0.0.jar:modules/openapi-generator-cli/target/openapi-generator-cli.jar \ + io.openapitools.codegen.OpenAPIGenerator generate -g my-codegen \ -i https://raw.githubusercontent.com/openapitools/openapi-generator/master/modules/openapi-generator/src/test/resources/2_0/petstore.yaml \ - -o myClient + -o ./out/myClient ``` diff --git a/docs/roadmap.adoc b/docs/roadmap.adoc new file mode 100644 index 000000000000..e6d1a0af6ace --- /dev/null +++ b/docs/roadmap.adoc @@ -0,0 +1,79 @@ +== Roadmap + +This document lists short-term, medium-term, and long-term goals for the project. + +[NOTE] +==== +These are goals, not necessarily commitments. The sections are not intended to represent exclusive focus during these terms. For example, when you start at a college or university you may have a long-term goal to graduate and a short-term goal to find a job for supplemental income. We will similarly work toward many of our medium-term and long-term goals in the near future as we move toward meeting our short-term goals. +==== + +=== Short-term + +> Usability, stability, and marketing. + +Short term are focused on improving contributor and user productivity (part of this is getting the word out). + +* CLI improvements +** Search functionality (e.g. what generators support retrofit, what generators are available for kotlin) +* Build automation improvements +** Discuss consolidating current third-party build systems +** Investigate custom docker containerization for prepared build environments +** Automated release stability +* General +** OAS3.0 features support: anyOf, oneOf, callbacks, etc +** Consider opt-in telemetry about generators being used, limited to a counter of invocations by generator name). This would allow us to make prioritization decisions based on statistics. +** Code clean up +*** centralize build scripts +*** organize samples/bin scripts according to new generator names +*** consolidate typescript generators +*** jaxrs => use Swagger core v3 (see https://github.com/OpenAPITools/openapi-generator/issues/27[#27]) +* Documentation +** Static pages, preferably on gh-pages, devoted to each generator +** Explain generator options +** Centralized docs on generated code usage/examples/configuration + +=== Medium-term + +> Feature set, well-defined API (code and templates), and extensibility improvements. + +* API +** Typed representation of the model bound to our templates. As it is, everything is treated an an Object, and this can lead to changes in the interface which might be unexpected from the template perspective. +* Feature set (potential generators to add; not an exhaustive list) +** Azure functions (node.js, server) +** Finagle HTTP Client (Scala, client) +** Finagle Http Server (Scala, server) +** Finatra (Scala, server) +** Kotlin Spring MVC/Springboot (server) +** C++ Server, any framework (server) +* General +** Migrate from Maven to Gradle +** Java 9+ support +* Feature set (other options to investigate) +** SPI plugins +*** Templating engine +*** Language extensions +*** Custom extensions (e.g. allowing users to load support for https://github.com/Azure/azure-rest-api-specs[azure-rest-api-specs]) +** Customizable templating engines (handlebars support) +** Unit-testing templates (to previously mentioned explicit type as an interface to the template) +* Reduce coupling +** Make types extending `CodegenConfig` become the generation entrypoint +** Allow current `CodegenConfig` types to define templating engine +** Allow current `CodegenConfig` types to modify workflow (currently encapsulated in `DefaultGenerator` and tightly coupled to the template engine +** Clearer reuse of "language" features, outside of "generator" types. That is, rather than enforcing polymorphic sharing of "language" which currently allows the super type to redefine framework-specific mapping functionality, generators could compose one or more language support types. +* Define template deprecation/removal process + +=== Long-term + +> Expanding tooling offered, integrations, potentially SaaS offering to partially fund efforts. + +* Generator UI wrappers +** Move jimschubert/intellij-swagger-codegen plugin under the org, and rename +** Look into an Eclipse UI wrapper around the generator +** Look at Visual Studio Code (and/or Atom, sublime text) integration +* Provide a native GUI for viewing/editing specs. Most tools are currently geared toward developers, but often times it may be non-technical business users who are interested in an API. +* A paid service (SaaS) for generation may be enticing for some users. Such a service would allow for statistics (mentioned earlier in telemetry) +* Additional tools +** node.js build system(s) integration (grunt/gulp/webpack/etc) +** ruby gem +** others (which may require previously mentioned SaaS API) + diff --git a/modules/openapi-generator-cli/pom.xml b/modules/openapi-generator-cli/pom.xml index 72eec3431162..1d897ca1c430 100644 --- a/modules/openapi-generator-cli/pom.xml +++ b/modules/openapi-generator-cli/pom.xml @@ -3,7 +3,7 @@ org.openapitools openapi-generator-project - 3.0.2-SNAPSHOT + 3.0.3-SNAPSHOT ../.. 4.0.0 diff --git a/modules/openapi-generator-cli/src/main/java/org/openapitools/codegen/cmd/Validate.java b/modules/openapi-generator-cli/src/main/java/org/openapitools/codegen/cmd/Validate.java index 4da5b318c6a1..fc8624586d6a 100644 --- a/modules/openapi-generator-cli/src/main/java/org/openapitools/codegen/cmd/Validate.java +++ b/modules/openapi-generator-cli/src/main/java/org/openapitools/codegen/cmd/Validate.java @@ -21,7 +21,9 @@ import io.airlift.airline.Option; import io.swagger.parser.OpenAPIParser; +import io.swagger.v3.oas.models.OpenAPI; import io.swagger.v3.parser.core.models.SwaggerParseResult; +import org.openapitools.codegen.utils.ModelUtils; import java.util.HashSet; import java.util.List; @@ -34,26 +36,58 @@ public class Validate implements Runnable { description = "location of the OpenAPI spec, as URL or file (required)") private String spec; + @Option(name = { "--recommend"}, title = "recommend spec improvements") + private Boolean recommend; + @Override public void run() { System.out.println("Validating spec (" + spec + ")"); SwaggerParseResult result = new OpenAPIParser().readLocation(spec, null, null); List messageList = result.getMessages(); - Set messages = new HashSet(messageList); + Set errors = new HashSet(messageList); + Set warnings = new HashSet(); - if (messages.size() > 0) { - StringBuilder sb = new StringBuilder(); - sb.append(System.lineSeparator()); - for (String message : messages) { - sb.append(String.format("\t- %s%s", message, System.lineSeparator())); + StringBuilder sb = new StringBuilder(); + OpenAPI specification = result.getOpenAPI(); + + if (Boolean.TRUE.equals(recommend)) { + if (specification != null) { + // Add information about unused models to the warnings set. + List unusedModels = ModelUtils.getUnusedSchemas(specification); + if (unusedModels != null) { + unusedModels.forEach(name -> warnings.add("Unused model: " + name)); + } } + } + + if (errors.size() > 0) { + sb.append("Errors:").append(System.lineSeparator()); + errors.forEach(msg -> + sb.append("\t-").append(msg).append(System.lineSeparator()) + ); + } + + if (!warnings.isEmpty()) { + sb.append("Warnings: ").append(System.lineSeparator()); + warnings.forEach(msg -> + sb.append("\t-").append(msg).append(System.lineSeparator()) + ); + } + + if (!errors.isEmpty()) { sb.append(System.lineSeparator()); - sb.append("[error] Spec is invalid."); + sb.append("[error] Spec has ").append(errors.size()).append(" errors."); System.err.println(sb.toString()); System.exit(1); + } else if (!warnings.isEmpty()) { + sb.append(System.lineSeparator()); + sb.append("[info] Spec has ").append(warnings.size()).append(" recommendation(s)."); } else { - System.out.println("No validation errors detected."); + // we say "issues" here rather than "errors" to account for both errors and issues. + sb.append("No validation issues detected."); } + + System.out.println(sb.toString()); } } diff --git a/modules/openapi-generator-gradle-plugin/README.adoc b/modules/openapi-generator-gradle-plugin/README.adoc index 2abe081e5ffc..ee2879db4b2f 100644 --- a/modules/openapi-generator-gradle-plugin/README.adoc +++ b/modules/openapi-generator-gradle-plugin/README.adoc @@ -34,7 +34,7 @@ buildscript { mavenCentral() } dependencies { - classpath "org.openapitools:openapi-generator-gradle-plugin:3.0.1" + classpath "org.openapitools:openapi-generator-gradle-plugin:3.0.2" } } diff --git a/modules/openapi-generator-gradle-plugin/gradle.properties b/modules/openapi-generator-gradle-plugin/gradle.properties index 06fa903c3954..99cfada5e57b 100644 --- a/modules/openapi-generator-gradle-plugin/gradle.properties +++ b/modules/openapi-generator-gradle-plugin/gradle.properties @@ -1,4 +1,4 @@ -openApiGeneratorVersion=3.0.2-SNAPSHOT +openApiGeneratorVersion=3.0.3-SNAPSHOT # BEGIN placeholders # these are just placeholders to allow contributors to build directly diff --git a/modules/openapi-generator-gradle-plugin/pom.xml b/modules/openapi-generator-gradle-plugin/pom.xml index 6a5d4f499c43..4e85925416a8 100644 --- a/modules/openapi-generator-gradle-plugin/pom.xml +++ b/modules/openapi-generator-gradle-plugin/pom.xml @@ -3,7 +3,7 @@ org.openapitools openapi-generator-project - 3.0.2-SNAPSHOT + 3.0.3-SNAPSHOT ../.. 4.0.0 diff --git a/modules/openapi-generator-gradle-plugin/samples/local-spec/README.md b/modules/openapi-generator-gradle-plugin/samples/local-spec/README.md index d2223673c2b1..ed9369357d84 100644 --- a/modules/openapi-generator-gradle-plugin/samples/local-spec/README.md +++ b/modules/openapi-generator-gradle-plugin/samples/local-spec/README.md @@ -16,5 +16,5 @@ gradle buildGoSdk The samples can be tested against other versions of the plugin using the `openApiGeneratorVersion` property. For example: ```bash -gradle -PopenApiGeneratorVersion=3.0.1 openApiValidate +gradle -PopenApiGeneratorVersion=3.0.2 openApiValidate ``` diff --git a/modules/openapi-generator-maven-plugin/README.md b/modules/openapi-generator-maven-plugin/README.md index e2326f863d64..b544a6c8a2a1 100644 --- a/modules/openapi-generator-maven-plugin/README.md +++ b/modules/openapi-generator-maven-plugin/README.md @@ -11,7 +11,7 @@ Add to your `build->plugins` section (default phase is `generate-sources` phase) org.openapitools openapi-generator-maven-plugin - 3.0.1 + 3.0.2 diff --git a/modules/openapi-generator-maven-plugin/pom.xml b/modules/openapi-generator-maven-plugin/pom.xml index 4c86fd889281..4bc7e20ab507 100644 --- a/modules/openapi-generator-maven-plugin/pom.xml +++ b/modules/openapi-generator-maven-plugin/pom.xml @@ -4,7 +4,7 @@ org.openapitools openapi-generator-project - 3.0.2-SNAPSHOT + 3.0.3-SNAPSHOT ../.. openapi-generator-maven-plugin diff --git a/modules/openapi-generator-online/Dockerfile b/modules/openapi-generator-online/Dockerfile index 3063a9c3e8f3..48c635efacf0 100644 --- a/modules/openapi-generator-online/Dockerfile +++ b/modules/openapi-generator-online/Dockerfile @@ -2,7 +2,7 @@ FROM openjdk:8-jre-alpine WORKDIR /generator -COPY target/openapi-generator-online-3.0.2-SNAPSHOT.jar /generator/openapi-generator-online.jar +COPY target/openapi-generator-online-3.0.3-SNAPSHOT.jar /generator/openapi-generator-online.jar ENV GENERATOR_HOST=http://localhost diff --git a/modules/openapi-generator-online/README.md b/modules/openapi-generator-online/README.md index a12a59c79ed0..b6dde7e276c6 100644 --- a/modules/openapi-generator-online/README.md +++ b/modules/openapi-generator-online/README.md @@ -10,6 +10,6 @@ This is an example of building a OpenAPI-enabled server in Java using the Spring The underlying library integrating OpenAPI to SpringBoot is [springfox](https://github.com/springfox/springfox) -Start your server as an simple java application +Start your server as a simple java application -Change default port value in application.properties \ No newline at end of file +Change default port value in application.properties diff --git a/modules/openapi-generator-online/pom.xml b/modules/openapi-generator-online/pom.xml index b3ce2817cc6c..ca7df291fa05 100644 --- a/modules/openapi-generator-online/pom.xml +++ b/modules/openapi-generator-online/pom.xml @@ -3,7 +3,7 @@ org.openapitools openapi-generator-project - 3.0.2-SNAPSHOT + 3.0.3-SNAPSHOT ../.. openapi-generator-online diff --git a/modules/openapi-generator/pom.xml b/modules/openapi-generator/pom.xml index 10af7f48fe7c..7ddbfd290f34 100644 --- a/modules/openapi-generator/pom.xml +++ b/modules/openapi-generator/pom.xml @@ -3,7 +3,7 @@ org.openapitools openapi-generator-project - 3.0.2-SNAPSHOT + 3.0.3-SNAPSHOT ../.. 4.0.0 diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java index 5901ea677601..7c37731bc63e 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java @@ -210,7 +210,7 @@ public Map postProcessAllModels(Map objs) { for (String name : allModels.keySet()) { CodegenModel cm = allModels.get(name); CodegenModel parent = allModels.get(cm.getParent()); - // if a discriminator exists on the parent, don't add this child to the inheritance heirarchy + // if a discriminator exists on the parent, don't add this child to the inheritance hierarchy // TODO Determine what to do if the parent discriminator name == the grandparent discriminator name while (parent != null) { if (parent.getChildren() == null) { @@ -1201,7 +1201,7 @@ public String getSchemaType(Schema schema) { */ private static String getPrimitiveType(Schema schema) { if (schema == null) { - throw new RuntimeException("schema cannnot be null in getPrimitiveType"); + throw new RuntimeException("schema cannot be null in getPrimitiveType"); } else if (ModelUtils.isStringSchema(schema) && "number".equals(schema.getFormat())) { // special handle of type: string, format: number return "BigDecimal"; @@ -1300,7 +1300,7 @@ public String getTypeDeclaration(Schema schema) { /** * Determine the type alias for the given type if it exists. This feature - * was original developed for Java because the language does not have a aliasing + * was originally developed for Java because the language does not have an aliasing * mechanism of its own but later extends to handle other languages * * @param name The type name. @@ -2055,7 +2055,7 @@ public CodegenOperation fromOperation(String path, } if (operation == null) - throw new RuntimeException("operation cannnot be null in fromOperation"); + throw new RuntimeException("operation cannot be null in fromOperation"); // store the original operationId for plug-in op.operationIdOriginal = operation.getOperationId(); @@ -3853,7 +3853,7 @@ public static Set getConsumesInfo(OpenAPI openAPI, Operation operation) RequestBody requestBody = ModelUtils.getReferencedRequestBody(openAPI, operation.getRequestBody()); if (requestBody == null || requestBody.getContent() == null || requestBody.getContent().isEmpty()) { - return Collections.emptySet(); // return emtpy set + return Collections.emptySet(); // return empty set } return requestBody.getContent().keySet(); } @@ -4249,7 +4249,7 @@ public CodegenParameter fromRequestBody(RequestBody body, Map sc if (schema.getAdditionalProperties() != null) {// http body is map LOGGER.error("Map should be supported. Please report to openapi-generator github repo about the issue."); } else if (codegenProperty != null) { - LOGGER.warn("The folowing schema has undefined (null) baseType. " + + LOGGER.warn("The following schema has undefined (null) baseType. " + "It could be due to form parameter defined in OpenAPI v2 spec with incorrect consumes. " + "A correct 'consumes' for form parameters should be " + "'application/x-www-form-urlencoded' or 'multipart/form-data'"); diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultGenerator.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultGenerator.java index 3eb29c62dc8d..228d1ac59be2 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultGenerator.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultGenerator.java @@ -1012,7 +1012,7 @@ private Map processModels(CodegenConfig config, Map mo = new HashMap(); mo.put("model", cm); diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractAdaCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractAdaCodegen.java index 12abb58094ee..5a9a70bcff68 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractAdaCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractAdaCodegen.java @@ -378,7 +378,7 @@ public void postProcessParameter(CodegenParameter parameter) { /** * Post process the media types (produces and consumes) for Ada code generator. *

- * For each media type, add a adaMediaType member that gives the Ada enum constant + * For each media type, add an adaMediaType member that gives the Ada enum constant * for the corresponding type. * * @param types the list of media types. diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractCSharpCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractCSharpCodegen.java index a385c4ddabb2..4a6a827932b5 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractCSharpCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractCSharpCodegen.java @@ -341,7 +341,7 @@ private void addMustacheLambdas(Map objs) { .build(); if (objs.containsKey("lambda")) { - LOGGER.warn("An property named 'lambda' already exists. Mustache lambdas renamed from 'lambda' to '_lambda'. " + + LOGGER.warn("A property named 'lambda' already exists. Mustache lambdas renamed from 'lambda' to '_lambda'. " + "You'll likely need to use a custom template, " + "see https://github.com/swagger-api/swagger-codegen#modifying-the-client-library-format. "); objs.put("_lambda", lambdas); diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractJavaCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractJavaCodegen.java index b377f59f1944..33d07d7455bd 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractJavaCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractJavaCodegen.java @@ -62,6 +62,7 @@ public abstract class AbstractJavaCodegen extends DefaultCodegen implements Code public static final String SUPPORT_ASYNC = "supportAsync"; public static final String WITH_XML = "withXml"; public static final String SUPPORT_JAVA6 = "supportJava6"; + public static final String DISABLE_HTML_ESCAPING = "disableHtmlEscaping"; protected String dateLibrary = "threetenbp"; protected boolean supportAsync = false; @@ -93,7 +94,8 @@ public abstract class AbstractJavaCodegen extends DefaultCodegen implements Code protected boolean serializeBigDecimalAsString = false; protected String apiDocPath = "docs/"; protected String modelDocPath = "docs/"; - protected boolean supportJava6 = false; + protected boolean supportJava6= false; + protected boolean disableHtmlEscaping = false; public AbstractJavaCodegen() { super(); @@ -185,6 +187,7 @@ public AbstractJavaCodegen() { java8Mode.setEnum(java8ModeOptions); cliOptions.add(java8Mode); + cliOptions.add(CliOption.newBoolean(DISABLE_HTML_ESCAPING, "Disable HTML escaping of JSON strings when using gson (needed to avoid problems with byte[] fields)")); } @Override @@ -196,6 +199,10 @@ public void processOpts() { } additionalProperties.put(SUPPORT_JAVA6, supportJava6); + if (additionalProperties.containsKey(DISABLE_HTML_ESCAPING)) { + this.setDisableHtmlEscaping(Boolean.valueOf(additionalProperties.get(DISABLE_HTML_ESCAPING).toString())); + } + additionalProperties.put(DISABLE_HTML_ESCAPING, disableHtmlEscaping); if (additionalProperties.containsKey(CodegenConstants.INVOKER_PACKAGE)) { this.setInvokerPackage((String) additionalProperties.get(CodegenConstants.INVOKER_PACKAGE)); @@ -1222,6 +1229,10 @@ public void setSupportAsync(boolean enabled) { this.supportAsync = enabled; } + public void setDisableHtmlEscaping(boolean disabled) { + this.disableHtmlEscaping = disabled; + } + @Override public String escapeQuotationMark(String input) { // remove " to avoid code injection diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractTypeScriptClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractTypeScriptClientCodegen.java index 44268803c437..7f2801a7be39 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractTypeScriptClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractTypeScriptClientCodegen.java @@ -325,11 +325,10 @@ public String toDefaultValue(Schema p) { } else if (ModelUtils.isDateTimeSchema(p)) { return UNDEFINED_VALUE; } else if (ModelUtils.isNumberSchema(p)) { - NumberSchema dp = (NumberSchema) p; - if (dp.getDefault() != null) { - return dp.getDefault().toString(); - } - return UNDEFINED_VALUE; + if (p.getDefault() != null) { + return p.getDefault().toString(); + } + return UNDEFINED_VALUE; } else if (ModelUtils.isIntegerSchema(p)) { if (p.getDefault() != null) { return p.getDefault().toString(); diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppPistacheServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppPistacheServerCodegen.java index b11c02f6329c..1bbfafbce377 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppPistacheServerCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppPistacheServerCodegen.java @@ -74,7 +74,7 @@ public CppPistacheServerCodegen() { apiTemplateFiles.put("api-impl-source.mustache", ".cpp"); apiTemplateFiles.put("main-api-server.mustache", ".cpp"); - embeddedTemplateDir = templateDir = "pistache-server"; + embeddedTemplateDir = templateDir = "cpp-pistache-server"; cliOptions.clear(); diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppQt5ClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppQt5ClientCodegen.java index dab947d9dd7f..fa3e9ca643de 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppQt5ClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppQt5ClientCodegen.java @@ -92,7 +92,7 @@ public CppQt5ClientCodegen() { * Template Location. This is the location which templates will be read from. The generator * will use the resource stream to attempt to read the templates. */ - embeddedTemplateDir = templateDir = "qt5cpp"; + embeddedTemplateDir = templateDir = "cpp-qt5-client"; // CLI options addOption(CPP_NAMESPACE, CPP_NAMESPACE_DESC, this.cppNamespace); diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppRestSdkClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppRestSdkClientCodegen.java index d8aed6bd8636..8cf9a14af6d6 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppRestSdkClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppRestSdkClientCodegen.java @@ -99,7 +99,7 @@ public CppRestSdkClientCodegen() { apiTemplateFiles.put("api-header.mustache", ".h"); apiTemplateFiles.put("api-source.mustache", ".cpp"); - embeddedTemplateDir = templateDir = "cpprest"; + embeddedTemplateDir = templateDir = "cpp-rest-sdk-client"; cliOptions.clear(); diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppRestbedServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppRestbedServerCodegen.java index 69e0ebe17f68..fb8e289b3af4 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppRestbedServerCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppRestbedServerCodegen.java @@ -53,7 +53,7 @@ public CppRestbedServerCodegen() { apiTemplateFiles.put("api-header.mustache", ".h"); apiTemplateFiles.put("api-source.mustache", ".cpp"); - embeddedTemplateDir = templateDir = "restbed"; + embeddedTemplateDir = templateDir = "cpp-restbed-server"; cliOptions.clear(); diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppTizenClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppTizenClientCodegen.java index 2f2afe39139b..1e3f1a849f1e 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppTizenClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppTizenClientCodegen.java @@ -44,7 +44,7 @@ public CppTizenClientCodegen() { modelTemplateFiles.put("model-body.mustache", ".cpp"); apiTemplateFiles.put("api-header.mustache", ".h"); apiTemplateFiles.put("api-body.mustache", ".cpp"); - embeddedTemplateDir = templateDir = "tizen"; + embeddedTemplateDir = templateDir = "cpp-tizen-client"; modelPackage = ""; defaultIncludes = new HashSet( diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/GoServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/GoServerCodegen.java index f953acd4e2f8..6e650b9ad56e 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/GoServerCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/GoServerCodegen.java @@ -110,6 +110,7 @@ public void processOpts() { */ supportingFiles.add(new SupportingFile("openapi.mustache", "api", "openapi.yaml")); supportingFiles.add(new SupportingFile("main.mustache", "", "main.go")); + supportingFiles.add(new SupportingFile("Dockerfile.mustache", "", "Dockerfile")); supportingFiles.add(new SupportingFile("routers.mustache", apiPath, "routers.go")); supportingFiles.add(new SupportingFile("logger.mustache", apiPath, "logger.go")); writeOptional(outputFolder, new SupportingFile("README.mustache", apiPath, "README.md")); diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavascriptClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavascriptClientCodegen.java index 15c39dd6a42e..198a9bff5466 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavascriptClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavascriptClientCodegen.java @@ -102,6 +102,7 @@ public class JavascriptClientCodegen extends DefaultCodegen implements CodegenCo protected String apiTestPath = "api/"; protected String modelTestPath = "model/"; protected boolean useES6 = false; // default is ES5 + private String modelPropertyNaming = "camelCase"; public JavascriptClientCodegen() { super(); @@ -206,6 +207,7 @@ public JavascriptClientCodegen() { cliOptions.add(new CliOption(USE_ES6, "use JavaScript ES6 (ECMAScript 6) (beta). Default is ES5.") .defaultValue(Boolean.FALSE.toString())); + cliOptions.add(new CliOption(CodegenConstants.MODEL_PROPERTY_NAMING, CodegenConstants.MODEL_PROPERTY_NAMING_DESC).defaultValue("camelCase")); } @Override @@ -271,6 +273,9 @@ public void processOpts() { if (additionalProperties.containsKey(EMIT_JS_DOC)) { setEmitJSDoc(convertPropertyToBooleanAndWriteBack(EMIT_JS_DOC)); } + if (additionalProperties.containsKey(CodegenConstants.MODEL_PROPERTY_NAMING)) { + setModelPropertyNaming((String) additionalProperties.get(CodegenConstants.MODEL_PROPERTY_NAMING)); + } } @Override @@ -492,6 +497,22 @@ public String toModelTestFilename(String name) { return toModelName(name) + ".spec"; } + public String getModelPropertyNaming() { + return this.modelPropertyNaming; + } + + private String getNameUsingModelPropertyNaming(String name) { + switch (CodegenConstants.MODEL_PROPERTY_NAMING_TYPE.valueOf(getModelPropertyNaming())) { + case original: return name; + case camelCase: return camelize(name, true); + case PascalCase: return camelize(name); + case snake_case: return underscore(name); + default: throw new IllegalArgumentException("Invalid model property naming '" + + name + "'. Must be 'original', 'camelCase', " + + "'PascalCase' or 'snake_case'"); + } + } + @Override public String toVarName(String name) { // sanitize name @@ -508,7 +529,7 @@ public String toVarName(String name) { // camelize (lower first character) the variable name // pet_id => petId - name = camelize(name, true); + name = getNameUsingModelPropertyNaming(name); // for reserved word or word starting with number, append _ if (isReservedWord(name) || name.matches("^\\d.*")) { @@ -613,6 +634,17 @@ public String toDefaultValue(Schema p) { return null; } + public void setModelPropertyNaming(String naming) { + if ("original".equals(naming) || "camelCase".equals(naming) || + "PascalCase".equals(naming) || "snake_case".equals(naming)) { + this.modelPropertyNaming = naming; + } else { + throw new IllegalArgumentException("Invalid model property naming '" + + naming + "'. Must be 'original', 'camelCase', " + + "'PascalCase' or 'snake_case'"); + } + } + @Override public String toDefaultValueWithParam(String name, Schema p) { String type = normalizeType(getTypeDeclaration(p)); @@ -954,6 +986,11 @@ public Map postProcessOperations(Map objs) { } String jsdocType = getJSDocType(operation); operation.vendorExtensions.put("x-jsdoc-type", jsdocType); + + // Format the return type correctly + if (operation.returnType != null) { + operation.vendorExtensions.put("x-return-type", normalizeType(operation.returnType)); + } } } return objs; diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/KotlinServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/KotlinServerCodegen.java index 54295a751438..5da9953f6364 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/KotlinServerCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/KotlinServerCodegen.java @@ -229,7 +229,7 @@ private void addMustacheLambdas(Map objs) { .build(); if (objs.containsKey("lambda")) { - LOGGER.warn("An property named 'lambda' already exists. Mustache lambdas renamed from 'lambda' to '_lambda'. " + + LOGGER.warn("A property named 'lambda' already exists. Mustache lambdas renamed from 'lambda' to '_lambda'. " + "You'll likely need to use a custom template, " + "see https://github.com/swagger-api/swagger-codegen#modifying-the-client-library-format. "); // TODO: update the URL objs.put("_lambda", lambdas); diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/RustServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/RustServerCodegen.java index f21ea2a9bc2c..40ba1c8f2f1d 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/RustServerCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/RustServerCodegen.java @@ -77,6 +77,9 @@ public class RustServerCodegen extends DefaultCodegen implements CodegenConfig { public RustServerCodegen() { super(); + // Show the generation timestamp by default + hideGenerationTimestamp = Boolean.FALSE; + // set the output folder here outputFolder = "generated-code/rust-server"; @@ -529,19 +532,6 @@ public CodegenOperation fromOperation(String path, String httpMethod, Operation List consumes = new ArrayList(); - /* comment out the following logic as there's no consume in operation/global definition - if (consumes != null) { - if (!consumes.isEmpty()) { - // use consumes defined in the operation - consumes = operation.getConsumes(); - } - } else if (openAPI != null && openAPI.getConsumes() != null && swagger.getConsumes().size() > 0) { - // use consumes defined globally - consumes = swagger.getConsumes(); - LOGGER.debug("No consumes defined in operation. Using global consumes (" + swagger.getConsumes() + ") for " + op.operationId); - } - */ - boolean consumesPlainText = false; boolean consumesXml = false; // if "consumes" is defined (per operation or using global definition) @@ -569,19 +559,6 @@ public CodegenOperation fromOperation(String path, String httpMethod, Operation List produces = new ArrayList(getProducesInfo(openAPI, operation)); - // if "consumes" is defined (per operation or using global definition) - /* - if (operation.getProduces() != null) { - if (operation.getProduces().size() > 0) { - // use produces defined in the operation - produces = operation.getProduces(); - } - } else if (swagger != null && swagger.getProduces() != null && swagger.getProduces().size() > 0) { - // use produces defined globally - produces = swagger.getProduces(); - LOGGER.debug("No produces defined in operation. Using global produces (" + swagger.getProduces() + ") for " + op.operationId); - } - */ boolean producesXml = false; boolean producesPlainText = false; @@ -604,51 +581,6 @@ public CodegenOperation fromOperation(String path, String httpMethod, Operation op.hasProduces = true; } - - /* TODO move the following logic to postProcessOperations as there's no body/form parameter in OAS 3.0 - if (op.bodyParam != null) { - if (paramHasXmlNamespace(op.bodyParam, definitions)) { - op.bodyParam.vendorExtensions.put("has_namespace", "true"); - } - for (String key : definitions.keySet()) { - op.bodyParam.vendorExtensions.put("model_key", key); - } - - // Default to consuming json - op.bodyParam.vendorExtensions.put("uppercase_operation_id", underscore(op.operationId).toUpperCase()); - if (consumesXml) { - op.bodyParam.vendorExtensions.put("consumesXml", true); - } else if (consumesPlainText) { - op.bodyParam.vendorExtensions.put("consumesPlainText", true); - } else { - op.bodyParam.vendorExtensions.put("consumesJson", true); - } - - } - for (CodegenParameter param : op.bodyParams) { - processParam(param, op); - - if (paramHasXmlNamespace(param, definitions)) { - param.vendorExtensions.put("has_namespace", "true"); - } - - param.vendorExtensions.put("uppercase_operation_id", underscore(op.operationId).toUpperCase()); - - // Default to producing json if nothing else is specified - if (consumesXml) { - param.vendorExtensions.put("consumesXml", true); - } else if (consumesPlainText) { - param.vendorExtensions.put("consumesPlainText", true); - } else { - param.vendorExtensions.put("consumesJson", true); - } - } - - for (CodegenParameter param : op.formParams) { - processParam(param, op); - } - */ - for (CodegenParameter param : op.headerParams) { // If a header uses UUIDs, we need to import the UUID package. if (param.dataType.equals("uuid::Uuid")) { @@ -714,6 +646,77 @@ public CodegenOperation fromOperation(String path, String httpMethod, Operation return op; } + @Override + public Map postProcessOperations(Map objs) { + Map operations = (Map) objs.get("operations"); + List operationList = (List) operations.get("operation"); + + + for (CodegenOperation op : operationList) { + boolean consumesPlainText = false; + boolean consumesXml = false; + + if (op.consumes != null) { + for (Map consume : op.consumes) { + if (consume.get("mediaType") != null) { + String mediaType = consume.get("mediaType"); + + if (isMimetypeXml(mediaType)) { + additionalProperties.put("usesXml", true); + consumesXml = true; + } else if (isMimetypePlainText(mediaType)) { + consumesPlainText = true; + } else if (isMimetypeWwwFormUrlEncoded(mediaType)) { + additionalProperties.put("usesUrlEncodedForm", true); + } + } + } + } + + if (op.bodyParam != null) { + // Default to consuming json + op.bodyParam.vendorExtensions.put("uppercase_operation_id", underscore(op.operationId).toUpperCase()); + if (consumesXml) { + op.bodyParam.vendorExtensions.put("consumesXml", true); + } else if (consumesPlainText) { + op.bodyParam.vendorExtensions.put("consumesPlainText", true); + } else { + op.bodyParam.vendorExtensions.put("consumesJson", true); + } + + } + for (CodegenParameter param : op.bodyParams) { + processParam(param, op); + + param.vendorExtensions.put("uppercase_operation_id", underscore(op.operationId).toUpperCase()); + + // Default to producing json if nothing else is specified + if (consumesXml) { + param.vendorExtensions.put("consumesXml", true); + } else if (consumesPlainText) { + param.vendorExtensions.put("consumesPlainText", true); + } else { + param.vendorExtensions.put("consumesJson", true); + } + } + + for (CodegenParameter param : op.formParams) { + processParam(param, op); + } + + for (CodegenProperty header : op.responseHeaders) { + if (header.dataType.equals("uuid::Uuid")) { + additionalProperties.put("apiUsesUuid", true); + } + header.nameInCamelCase = toModelName(header.baseName); + } + + additionalProperties.put("apiHasFile", true); + } + + return objs; + } + @Override public boolean isDataTypeFile(final String dataType) { return dataType != null && dataType.equals(typeMapping.get("File").toString()); @@ -726,26 +729,22 @@ public String getTypeDeclaration(Schema p) { Schema inner = ap.getItems(); String innerType = getTypeDeclaration(inner); StringBuilder typeDeclaration = new StringBuilder(typeMapping.get("array")).append("<"); - if (!StringUtils.isEmpty(inner.get$ref())) { - typeDeclaration.append("models::"); - } typeDeclaration.append(innerType).append(">"); return typeDeclaration.toString(); } else if (ModelUtils.isMapSchema(p)) { Schema inner = (Schema) p.getAdditionalProperties(); String innerType = getTypeDeclaration(inner); StringBuilder typeDeclaration = new StringBuilder(typeMapping.get("map")).append("<").append(typeMapping.get("string")).append(", "); - if (!StringUtils.isEmpty(inner.get$ref())) { - typeDeclaration.append("models::"); - } typeDeclaration.append(innerType).append(">"); return typeDeclaration.toString(); } else if (!StringUtils.isEmpty(p.get$ref())) { String datatype; try { datatype = p.get$ref(); - if (datatype.indexOf("#/definitions/") == 0) { - datatype = toModelName(datatype.substring("#/definitions/".length())); + + if (datatype.indexOf("#/components/schemas/") == 0) { + datatype = toModelName(datatype.substring("#/components/schemas/".length())); + datatype = "models::" + datatype; } } catch (Exception e) { LOGGER.warn("Error obtaining the datatype from schema (model):" + p + ". Datatype default to Object"); @@ -756,50 +755,41 @@ public String getTypeDeclaration(Schema p) { } else if (p instanceof FileSchema) { return typeMapping.get("File").toString(); } + return super.getTypeDeclaration(p); } @Override public CodegenParameter fromParameter(Parameter param, Set imports) { CodegenParameter parameter = super.fromParameter(param, imports); - /* TODO need ot revise the logic below as there's no body parameter - if (param instanceof BodyParameter) { - BodyParameter bp = (BodyParameter) param; - Model model = bp.getSchema(); - if (model instanceof RefModel) { - String name = ((RefModel) model).getSimpleRef(); - name = toModelName(name); - // We need to be able to look up the model in the model definitions later. - parameter.vendorExtensions.put("uppercase_data_type", name.toUpperCase()); - - name = "models::" + getTypeDeclaration(name); - parameter.baseType = name; - parameter.dataType = name; - - String refName = ((RefModel) model).get$ref(); - if (refName.indexOf("#/definitions/") == 0) { - refName = refName.substring("#/definitions/".length()); - } - parameter.vendorExtensions.put("refName", refName); - - } else if (model instanceof ModelImpl) { - parameter.vendorExtensions.put("refName", ((ModelImpl) model).getName()); - } + if (!parameter.isString && !parameter.isNumeric && !parameter.isByteArray && + !parameter.isBinary && !parameter.isFile && !parameter.isBoolean && + !parameter.isDate && !parameter.isDateTime && !parameter.isUuid && + !parameter.isListContainer && !parameter.isMapContainer && + !languageSpecificPrimitives.contains(parameter.dataType)) { + + String name = "models::" + getTypeDeclaration(parameter.dataType); + parameter.dataType = name; + parameter.baseType = name; } - */ + return parameter; } @Override - public CodegenProperty fromProperty(String name, Schema p) { - CodegenProperty property = super.fromProperty(name, p); - - /* need to revise the logic below. Is this for alias? - if (p instanceof RefProperty) { - property.datatype = "models::" + property.datatype; + public void postProcessParameter(CodegenParameter parameter) { + // If this parameter is not a primitive type, prefix it with "models::" + // to ensure it's namespaced correctly in the Rust code. + if (!parameter.isString && !parameter.isNumeric && !parameter.isByteArray && + !parameter.isBinary && !parameter.isFile && !parameter.isBoolean && + !parameter.isDate && !parameter.isDateTime && !parameter.isUuid && + !parameter.isListContainer && !parameter.isMapContainer && + !languageSpecificPrimitives.contains(parameter.dataType)) { + + String name = "models::" + getTypeDeclaration(parameter.dataType); + parameter.dataType = name; + parameter.baseType = name; } - */ - return property; } @Override @@ -1037,6 +1027,24 @@ static String matchingIntType(boolean unsigned, Long inclusiveMin, Long inclusiv @Override public Map postProcessModels(Map objs) { + List models = (List) objs.get("models"); + for (Object _mo : models) { + Map mo = (Map) _mo; + CodegenModel cm = (CodegenModel) mo.get("model"); + + + if (cm.dataType != null && cm.dataType.equals("object")) { + // Object isn't a sensible default. Instead, we set it to + // 'null'. This ensures that we treat this model as a struct + // with multiple parameters. + cm.dataType = null; + } else if (cm.dataType != null) { + // We need to hack about with single-parameter models to get + // them recognised correctly. + cm.isAlias = false; + cm.dataType = typeMapping.get(cm.dataType); + } + } return super.postProcessModelsEnum(objs); } @@ -1061,7 +1069,12 @@ private boolean paramHasXmlNamespace(CodegenParameter param, Map private void processParam(CodegenParameter param, CodegenOperation op) { String example = null; - if (param.isString) { + if (param.isFile) { + param.vendorExtensions.put("formatString", "{:?}"); + op.vendorExtensions.put("hasFile", true); + additionalProperties.put("apiHasFile", true); + example = "Box::new(stream::once(Ok(b\"hello\".to_vec()))) as Box + Send>"; + } else if (param.isString) { if (param.dataFormat != null && param.dataFormat.equals("byte")) { param.vendorExtensions.put("formatString", "\\\"{:?}\\\""); example = "swagger::ByteArray(\"" + ((param.example != null) ? param.example : "") + "\".to_string().into_bytes())"; @@ -1082,11 +1095,6 @@ private void processParam(CodegenParameter param, CodegenOperation op) { } else if (param.isListContainer) { param.vendorExtensions.put("formatString", "{:?}"); example = (param.example != null) ? param.example : "&Vec::new()"; - } else if (param.isFile) { - param.vendorExtensions.put("formatString", "{:?}"); - op.vendorExtensions.put("hasFile", true); - additionalProperties.put("apiHasFile", true); - example = "Box::new(stream::once(Ok(b\"hello\".to_vec()))) as Box + Send>"; } else { param.vendorExtensions.put("formatString", "{:?}"); if (param.example != null) { diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/utils/ModelUtils.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/utils/ModelUtils.java index ee8a1a8dfa29..78c4a20407dd 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/utils/ModelUtils.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/utils/ModelUtils.java @@ -137,7 +137,7 @@ public static List getSchemasUsedOnlyInFormParam(OpenAPI openAPI) { visitOpenAPI(openAPI, (s, t) -> { if(s.get$ref() != null) { String ref = getSimpleRef(s.get$ref()); - if ("application/x-www-form-urlencoded".equalsIgnoreCase(t) || + if ("application/x-www-form-urlencoded".equalsIgnoreCase(t) || "multipart/form-data".equalsIgnoreCase(t)) { schemasUsedInFormParam.add(ref); } else { @@ -153,7 +153,7 @@ public static List getSchemasUsedOnlyInFormParam(OpenAPI openAPI) { * {@link #getUnusedSchemas(OpenAPI)}, * {@link #getSchemasUsedOnlyInFormParam(OpenAPI)}, ...) to traverse all paths of an * OpenAPI instance and call the visitor functional interface when a schema is found. - * + * * @param openAPI specification * @param visitor functional interface (can be defined as a lambda) called each time a schema is found. */ @@ -492,7 +492,7 @@ public static Schema getReferencedSchema(OpenAPI openAPI, Schema schema) { } return schema; } - + public static Schema getSchema(OpenAPI openAPI, String name) { if (name == null) { return null; diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/utils/URLPathUtils.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/utils/URLPathUtils.java index 52c423f74cf8..2a71b197c8a4 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/utils/URLPathUtils.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/utils/URLPathUtils.java @@ -39,7 +39,7 @@ public static URL getServerURL(OpenAPI openAPI) { LOGGER.warn("Server information seems not defined in the spec. Default to {}.", LOCAL_HOST); return getDefaultUrl(); } - // TOOD need a way to obtain all server URLs + // TODO need a way to obtain all server URLs final Server server = servers.get(0); String url = sanitizeUrl(server.getUrl()); @@ -150,4 +150,4 @@ private static URL getDefaultUrl() { return null; } } -} \ No newline at end of file +} diff --git a/modules/openapi-generator/src/main/resources/Ada/README.mustache b/modules/openapi-generator/src/main/resources/Ada/README.mustache index d74b9c912f78..563610833436 100644 --- a/modules/openapi-generator/src/main/resources/Ada/README.mustache +++ b/modules/openapi-generator/src/main/resources/Ada/README.mustache @@ -18,7 +18,7 @@ run the following command: gprbuild -p -P{{projectName}} ``` -After the build is successfull, you will get the server binary +After the build is successful, you will get the server binary in bin/{{packageName}}-server and you can start it as follows: ``` ./bin/{{packageName}}-server diff --git a/modules/openapi-generator/src/main/resources/Eiffel/framework/serialization/api_json_deserializer.mustache b/modules/openapi-generator/src/main/resources/Eiffel/framework/serialization/api_json_deserializer.mustache index 3423a142cb28..07afc39b4eaa 100644 --- a/modules/openapi-generator/src/main/resources/Eiffel/framework/serialization/api_json_deserializer.mustache +++ b/modules/openapi-generator/src/main/resources/Eiffel/framework/serialization/api_json_deserializer.mustache @@ -7,7 +7,7 @@ expanded class feature -- Access from_json (a_val:STRING; a_type: TYPE [detachable ANY] ): detachable ANY - -- Deserialize a a json representation `a_val' to an object + -- Deserialize a json representation `a_val' to an object -- of type `a_type' local conv_from: JSON_BASIC_REFLECTOR_DESERIALIZER diff --git a/modules/openapi-generator/src/main/resources/Java/JSON.mustache b/modules/openapi-generator/src/main/resources/Java/JSON.mustache index a717df178e3e..4ab6cee5cb1a 100644 --- a/modules/openapi-generator/src/main/resources/Java/JSON.mustache +++ b/modules/openapi-generator/src/main/resources/Java/JSON.mustache @@ -76,7 +76,11 @@ public class JSON { }) {{/parent}} ; - return fireBuilder.createGsonBuilder(); + GsonBuilder builder = fireBuilder.createGsonBuilder(); + {{#disableHtmlEscaping}} + builder.disableHtmlEscaping(); + {{/disableHtmlEscaping}} + return builder; } private static String getDiscriminatorValue(JsonElement readElement, String discriminatorField) { diff --git a/modules/openapi-generator/src/main/resources/Java/libraries/okhttp-gson/ApiClient.mustache b/modules/openapi-generator/src/main/resources/Java/libraries/okhttp-gson/ApiClient.mustache index 0c7bbed53151..5af1e2285f93 100644 --- a/modules/openapi-generator/src/main/resources/Java/libraries/okhttp-gson/ApiClient.mustache +++ b/modules/openapi-generator/src/main/resources/Java/libraries/okhttp-gson/ApiClient.mustache @@ -915,7 +915,7 @@ public class ApiClient { * @param Type * @param response Response * @param returnType Return type - * @throws ApiException If the response has a unsuccessful status code or + * @throws ApiException If the response has an unsuccessful status code or * fail to deserialize the response body * @return Type */ diff --git a/modules/openapi-generator/src/main/resources/JavaSpring/libraries/spring-boot/README.mustache b/modules/openapi-generator/src/main/resources/JavaSpring/libraries/spring-boot/README.mustache index b10f3dca28a6..f824f03035fc 100644 --- a/modules/openapi-generator/src/main/resources/JavaSpring/libraries/spring-boot/README.mustache +++ b/modules/openapi-generator/src/main/resources/JavaSpring/libraries/spring-boot/README.mustache @@ -12,7 +12,7 @@ This is an example of building a OpenAPI-enabled server in Java using the Spring The underlying library integrating OpenAPI to SpringBoot is [springfox](https://github.com/springfox/springfox) {{/useSpringfox}} -Start your server as an simple java application +Start your server as a simple java application {{^reactive}} You can view the api documentation in swagger-ui by pointing to @@ -46,4 +46,4 @@ public interface PetClient extends PetApi { } ``` -{{/interfaceOnly}} \ No newline at end of file +{{/interfaceOnly}} diff --git a/modules/openapi-generator/src/main/resources/Javascript/api.mustache b/modules/openapi-generator/src/main/resources/Javascript/api.mustache index fedb65f421b8..089ae3b32835 100644 --- a/modules/openapi-generator/src/main/resources/Javascript/api.mustache +++ b/modules/openapi-generator/src/main/resources/Javascript/api.mustache @@ -84,7 +84,7 @@ var authNames = [<#authMethods>''<#hasMore>, ]; var contentTypes = [<#consumes>'<& mediaType>'<#hasMore>, ]; var accepts = [<#produces>'<& mediaType>'<#hasMore>, ]; - var returnType = <#returnType><&returnType><^returnType>null; + var returnType = <#vendorExtensions.x-return-type><&vendorExtensions.x-return-type><^vendorExtensions.x-return-type>null; return this.apiClient.callApi( '<&path>', '', diff --git a/modules/openapi-generator/src/main/resources/Javascript/es6/ApiClient.mustache b/modules/openapi-generator/src/main/resources/Javascript/es6/ApiClient.mustache index c3caec291018..7ba837e183d4 100644 --- a/modules/openapi-generator/src/main/resources/Javascript/es6/ApiClient.mustache +++ b/modules/openapi-generator/src/main/resources/Javascript/es6/ApiClient.mustache @@ -15,7 +15,7 @@ import querystring from "querystring"; * @alias module:{{#invokerPackage}}{{invokerPackage}}/{{/invokerPackage}}ApiClient * @class */{{/emitJSDoc}} -export default class ApiClient { +class ApiClient { constructor() { {{#emitJSDoc}}/** * The base URL against which to resolve every API call's (relative) path. @@ -221,43 +221,6 @@ export default class ApiClient { return newParams; } - {{#emitJSDoc}}/** - * Enumeration of collection format separator strategies. - * @enum {String} - * @readonly - */{{/emitJSDoc}} - static CollectionFormatEnum = { - {{#emitJSDoc}}/** - * Comma-separated values. Value: csv - * @const - */{{/emitJSDoc}} - CSV: ',', - - {{#emitJSDoc}}/** - * Space-separated values. Value: ssv - * @const - */{{/emitJSDoc}} - SSV: ' ', - - {{#emitJSDoc}}/** - * Tab-separated values. Value: tsv - * @const - */{{/emitJSDoc}} - TSV: '\t', - - {{#emitJSDoc}}/** - * Pipe(|)-separated values. Value: pipes - * @const - */{{/emitJSDoc}} - PIPES: '|', - - {{#emitJSDoc}}/** - * Native array. Value: multi - * @const - */{{/emitJSDoc}} - MULTI: 'multi' - }; - {{#emitJSDoc}}/** * Builds a string representation of an array-type actual parameter, according to the given collection format. * @param {Array} param An array parameter. @@ -597,8 +560,46 @@ export default class ApiClient { }; } +{{#emitJSDoc}}/** + * Enumeration of collection format separator strategies. + * @enum {String} + * @readonly + */{{/emitJSDoc}} +ApiClient.CollectionFormatEnum = { + {{#emitJSDoc}}/** + * Comma-separated values. Value: csv + * @const + */{{/emitJSDoc}} + CSV: ',', + + {{#emitJSDoc}}/** + * Space-separated values. Value: ssv + * @const + */{{/emitJSDoc}} + SSV: ' ', + + {{#emitJSDoc}}/** + * Tab-separated values. Value: tsv + * @const + */{{/emitJSDoc}} + TSV: '\t', + + {{#emitJSDoc}}/** + * Pipe(|)-separated values. Value: pipes + * @const + */{{/emitJSDoc}} + PIPES: '|', + + {{#emitJSDoc}}/** + * Native array. Value: multi + * @const + */{{/emitJSDoc}} + MULTI: 'multi' +}; + {{#emitJSDoc}}/** * The default API client implementation. * @type {module:{{#invokerPackage}}{{invokerPackage}}/{{/invokerPackage}}ApiClient} */{{/emitJSDoc}} ApiClient.instance = new ApiClient(); +export default ApiClient; \ No newline at end of file diff --git a/modules/openapi-generator/src/main/resources/Javascript/es6/api.mustache b/modules/openapi-generator/src/main/resources/Javascript/es6/api.mustache index 0615a0461d4d..a6b7b0379cfa 100644 --- a/modules/openapi-generator/src/main/resources/Javascript/es6/api.mustache +++ b/modules/openapi-generator/src/main/resources/Javascript/es6/api.mustache @@ -69,7 +69,7 @@ export default class { let authNames = [<#authMethods>''<#hasMore>, ]; let contentTypes = [<#consumes>'<& mediaType>'<#hasMore>, ]; let accepts = [<#produces>'<& mediaType>'<#hasMore>, ]; - let returnType = <#returnType><&returnType><^returnType>null; + let returnType = <#vendorExtensions.x-return-type><&vendorExtensions.x-return-type><^vendorExtensions.x-return-type>null; return this.apiClient.callApi( '<&path>', '', diff --git a/modules/openapi-generator/src/main/resources/Javascript/es6/model.mustache b/modules/openapi-generator/src/main/resources/Javascript/es6/model.mustache index d45b6e9b6730..3ddf83730f5c 100644 --- a/modules/openapi-generator/src/main/resources/Javascript/es6/model.mustache +++ b/modules/openapi-generator/src/main/resources/Javascript/es6/model.mustache @@ -1,9 +1,4 @@ {{>licenseInfo}} - import ApiClient from '../ApiClient'; {{#imports}}import {{import}} from './{{import}}'; -{{/imports}} - -{{#models}}{{#model}} -{{#isEnum}}{{>partial_model_enum_class}}{{/isEnum}}{{^isEnum}}{{>partial_model_generic}}{{/isEnum}} -{{/model}}{{/models}} +{{/imports}}{{#models}}{{#model}}{{#isEnum}}{{>partial_model_enum_class}}{{/isEnum}}{{^isEnum}}{{>partial_model_generic}}{{/isEnum}}{{/model}}{{/models}} diff --git a/modules/openapi-generator/src/main/resources/Javascript/es6/partial_model_enum_class.mustache b/modules/openapi-generator/src/main/resources/Javascript/es6/partial_model_enum_class.mustache index 5503ab886af1..e88ddd9cfb5c 100644 --- a/modules/openapi-generator/src/main/resources/Javascript/es6/partial_model_enum_class.mustache +++ b/modules/openapi-generator/src/main/resources/Javascript/es6/partial_model_enum_class.mustache @@ -9,7 +9,7 @@ export default class {{classname}} { * value: {{{value}}} * @const */{{/emitJSDoc}} - {{name}} = {{{value}}}; + "{{name}}" = {{{value}}}; {{/enumVars}}{{/allowableValues}} diff --git a/modules/openapi-generator/src/main/resources/Javascript/es6/partial_model_generic.mustache b/modules/openapi-generator/src/main/resources/Javascript/es6/partial_model_generic.mustache index bcfb59dbfdbe..3b60625bd800 100644 --- a/modules/openapi-generator/src/main/resources/Javascript/es6/partial_model_generic.mustache +++ b/modules/openapi-generator/src/main/resources/Javascript/es6/partial_model_generic.mustache @@ -1,54 +1,49 @@ -{{#models}}{{#model}} - -{{#emitJSDoc}}/** -* The {{classname}} model module. -* @module {{#invokerPackage}}{{invokerPackage}}/{{/invokerPackage}}{{#modelPackage}}{{modelPackage}}/{{/modelPackage}}{{classname}} -* @version {{projectVersion}} -*/{{/emitJSDoc}} -export default class {{classname}} {{#parent}}{{^parentModel}}{{#vendorExtensions.x-isArray}}extends Array {{/vendorExtensions.x-isArray}}{{/parentModel}}{{/parent}}{ +{{#models}}{{#model}}{{#emitJSDoc}}/** + * The {{classname}} model module. + * @module {{#invokerPackage}}{{invokerPackage}}/{{/invokerPackage}}{{#modelPackage}}{{modelPackage}}/{{/modelPackage}}{{classname}} + * @version {{projectVersion}} + */{{/emitJSDoc}} +class {{classname}} {{#parent}}{{^parentModel}}{{#vendorExtensions.x-isArray}}extends Array {{/vendorExtensions.x-isArray}}{{/parentModel}}{{/parent}}{ {{#emitJSDoc}}/** - * Constructs a new {{classname}}.{{#description}} - * {{description}}{{/description}} - * @alias module:{{#invokerPackage}}{{invokerPackage}}/{{/invokerPackage}}{{#modelPackage}}{{modelPackage}}/{{/modelPackage}}{{classname}} - * @class{{#useInheritance}}{{#parent}} - * @extends {{#parentModel}}module:{{#invokerPackage}}{{invokerPackage}}/{{/invokerPackage}}{{#modelPackage}}{{modelPackage}}/{{/modelPackage}}{{classname}}{{/parentModel}}{{^parentModel}}{{#vendorExtensions.x-isArray}}Array{{/vendorExtensions.x-isArray}}{{#vendorExtensions.x-isMap}}Object{{/vendorExtensions.x-isMap}}{{/parentModel}}{{/parent}}{{#interfaces}} - * @implements module:{{#invokerPackage}}{{invokerPackage}}/{{/invokerPackage}}{{#modelPackage}}{{modelPackage}}/{{/modelPackage}}{{.}}{{/interfaces}}{{/useInheritance}}{{#vendorExtensions.x-all-required}} - * @param {{name}} {{=< >=}}{<&vendorExtensions.x-jsdoc-type>}<={{ }}=> {{#description}}{{{description}}}{{/description}}{{/vendorExtensions.x-all-required}} - */{{/emitJSDoc}} - - constructor({{#vendorExtensions.x-all-required}}{{name}}{{^-last}}, {{/-last}}{{/vendorExtensions.x-all-required}}) { - {{#parent}}{{^parentModel}}{{#vendorExtensions.x-isArray}} + * Constructs a new {{classname}}.{{#description}} + * {{description}}{{/description}} + * @alias module:{{#invokerPackage}}{{invokerPackage}}/{{/invokerPackage}}{{#modelPackage}}{{modelPackage}}/{{/modelPackage}}{{classname}}{{#useInheritance}}{{#parent}} + * @extends {{#parentModel}}module:{{#invokerPackage}}{{invokerPackage}}/{{/invokerPackage}}{{#modelPackage}}{{modelPackage}}/{{/modelPackage}}{{classname}}{{/parentModel}}{{^parentModel}}{{#vendorExtensions.x-isArray}}Array{{/vendorExtensions.x-isArray}}{{#vendorExtensions.x-isMap}}Object{{/vendorExtensions.x-isMap}}{{/parentModel}}{{/parent}}{{#interfaces}} + * @implements module:{{#invokerPackage}}{{invokerPackage}}/{{/invokerPackage}}{{#modelPackage}}{{modelPackage}}/{{/modelPackage}}{{.}}{{/interfaces}}{{/useInheritance}}{{#vendorExtensions.x-all-required}} + * @param {{name}} {{=< >=}}{<&vendorExtensions.x-jsdoc-type>}<={{ }}=> {{#description}}{{{description}}}{{/description}}{{/vendorExtensions.x-all-required}} + */{{/emitJSDoc}} + constructor({{#vendorExtensions.x-all-required}}{{name}}{{^-last}}, {{/-last}}{{/vendorExtensions.x-all-required}}) { {{#parent}}{{^parentModel}}{{#vendorExtensions.x-isArray}} super(); - {{/vendorExtensions.x-isArray}}{{/parentModel}}{{/parent}} - - {{#useInheritance}} - {{#parentModel}}{{classname}}.call(this{{#vendorExtensions.x-all-required}}, {{name}}{{/vendorExtensions.x-all-required}});{{/parentModel}} - {{#interfaceModels}}{{classname}}.call(this{{#vendorExtensions.x-all-required}}, {{name}}{{/vendorExtensions.x-all-required}});{{/interfaceModels}} - {{/useInheritance}} - - {{#vars}}{{#required}}this['{{baseName}}'] = {{name}};{{/required}}{{/vars}} + {{/vendorExtensions.x-isArray}}{{/parentModel}}{{/parent}}{{#useInheritance}} + {{#interfaceModels}}{{classname}}.initialize(this{{#vendorExtensions.x-all-required}}, {{name}}{{/vendorExtensions.x-all-required}});{{/interfaceModels}}{{/useInheritance}} + {{classname}}.initialize(this{{#vendorExtensions.x-all-required}}, {{name}}{{/vendorExtensions.x-all-required}}); + } - {{#parent}}{{^parentModel}}return this;{{/parentModel}}{{/parent}} + {{#emitJSDoc}}/** + * Initializes the fields of this object. + * This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins). + * Only for internal use. + */{{/emitJSDoc}} + static initialize(obj{{#vendorExtensions.x-all-required}}, {{name}}{{/vendorExtensions.x-all-required}}) { {{#vars}}{{#required}} + obj['{{baseName}}'] = {{name}};{{/required}}{{/vars}} } {{#emitJSDoc}}/** - * Constructs a {{classname}} from a plain JavaScript object, optionally creating a new instance. - * Copies all relevant properties from data to obj if supplied or a new instance if not. - * @param {Object} data The plain JavaScript object bearing properties of interest. - * @param {{=< >=}}{module:<#invokerPackage>/<#modelPackage>/}<={{ }}=> obj Optional instance to populate. - * @return {{=< >=}}{module:<#invokerPackage>/<#modelPackage>/}<={{ }}=> The populated {{classname}} instance. - */{{/emitJSDoc}} + * Constructs a {{classname}} from a plain JavaScript object, optionally creating a new instance. + * Copies all relevant properties from data to obj if supplied or a new instance if not. + * @param {Object} data The plain JavaScript object bearing properties of interest. + * @param {{=< >=}}{module:<#invokerPackage>/<#modelPackage>/}<={{ }}=> obj Optional instance to populate. + * @return {{=< >=}}{module:<#invokerPackage>/<#modelPackage>/}<={{ }}=> The populated {{classname}} instance. + */{{/emitJSDoc}} static constructFromObject(data, obj) { if (data){{! TODO: support polymorphism: discriminator property on data determines class to instantiate.}} { - obj = obj || new {{classname}}(); - - {{#parent}}{{^parentModel}}ApiClient.constructFromObject(data, obj, '{{vendorExtensions.x-itemType}}');{{/parentModel}} - {{/parent}} + obj = obj || new {{classname}}();{{#parent}}{{^parentModel}} - {{#useInheritance}}{{#parentModel}}{{classname}}.constructFromObject(data, obj);{{/parentModel}} - {{#interfaces}}{{.}}.constructFromObject(data, obj);{{/interfaces}} - {{/useInheritance}} + ApiClient.constructFromObject(data, obj, '{{vendorExtensions.x-itemType}}'); + {{/parentModel}}{{/parent}}{{#useInheritance}}{{#parentModel}} + {{classname}}.constructFromObject(data, obj);{{/parentModel}}{{#interfaces}} + {{.}}.constructFromObject(data, obj);{{/interfaces}}{{/useInheritance}} {{#vars}} if (data.hasOwnProperty('{{baseName}}')) { @@ -59,61 +54,49 @@ export default class {{classname}} {{#parent}}{{^parentModel}}{{#vendorExtension return obj; } -{{#vars}} - {{#emitJSDoc}}/**{{#description}} - * {{{description}}}{{/description}} - * @member {{=< >=}}{<&vendorExtensions.x-jsdoc-type>}<={{ }}=> {{baseName}}{{#defaultValue}} - * @default {{{defaultValue}}}{{/defaultValue}} - */{{/emitJSDoc}} - {{baseName}} = {{#defaultValue}}{{{defaultValue}}}{{/defaultValue}}{{^defaultValue}}undefined{{/defaultValue}}; -{{/vars}} - -{{#useInheritance}}{{#interfaceModels}} - // Implement {{classname}} interface: - {{#allVars}}{{#emitJSDoc}}/**{{#description}} - * {{{description}}}{{/description}} - * @member {{=< >=}}{<&vendorExtensions.x-jsdoc-type>}<={{ }}=> {{baseName}}{{#defaultValue}} - * @default {{{defaultValue}}}{{/defaultValue}} - */{{/emitJSDoc}} - {{baseName}} = {{#defaultValue}}{{{defaultValue}}}{{/defaultValue}}{{^defaultValue}}undefined{{/defaultValue}}; - {{/allVars}} -{{/interfaceModels}}{{/useInheritance}} - - -{{#emitModelMethods}}{{#vars}} - {{#emitJSDoc}}/**{{#description}} - * Returns {{{description}}}{{/description}}{{#minimum}} - * minimum: {{minimum}}{{/minimum}}{{#maximum}} - * maximum: {{maximum}}{{/maximum}} - * @return {{=< >=}}{<&vendorExtensions.x-jsdoc-type>}<={{ }}=> - */{{/emitJSDoc}} +{{#emitModelMethods}}{{#vars}}{{#emitJSDoc}}/**{{#description}} + * Returns {{{description}}}{{/description}}{{#minimum}} + * minimum: {{minimum}}{{/minimum}}{{#maximum}} + * maximum: {{maximum}}{{/maximum}} + * @return {{=< >=}}{<&vendorExtensions.x-jsdoc-type>}<={{ }}=> + */{{/emitJSDoc}} {{getter}}() { return this.{{baseName}}; } {{#emitJSDoc}}/**{{#description}} - * Sets {{{description}}}{{/description}} - * @param {{=< >=}}{<&vendorExtensions.x-jsdoc-type>}<={{ }}=> {{name}}{{#description}} {{{description}}}{{/description}} - */{{/emitJSDoc}} + * Sets {{{description}}}{{/description}} + * @param {{=< >=}}{<&vendorExtensions.x-jsdoc-type>}<={{ }}=> {{name}}{{#description}} {{{description}}}{{/description}} + */{{/emitJSDoc}} {{setter}}({{name}}) { this['{{baseName}}'] = {{name}}; } -{{/vars}}{{/emitModelMethods}} +{{/vars}}{{/emitModelMethods}}{{/model}} +} + +{{#vars}}{{#emitJSDoc}}/**{{#description}} + * {{{description}}}{{/description}} + * @member {{=< >=}}{<&vendorExtensions.x-jsdoc-type>}<={{ }}=> {{baseName}}{{#defaultValue}} + * @default {{{defaultValue}}}{{/defaultValue}} + */{{/emitJSDoc}} +{{classname}}.prototype['{{baseName}}'] = {{#defaultValue}}{{{defaultValue}}}{{/defaultValue}}{{^defaultValue}}undefined{{/defaultValue}}; -{{#vars}} -{{#isEnum}} -{{^isContainer}} +{{/vars}} + +{{#useInheritance}}{{#interfaceModels}}// Implement {{classname}} interface: +{{#allVars}}{{#emitJSDoc}}/**{{#description}} + * {{{description}}}{{/description}} + * @member {{=< >=}}{<&vendorExtensions.x-jsdoc-type>}<={{ }}=> {{baseName}}{{#defaultValue}} + * @default {{{defaultValue}}}{{/defaultValue}} + */{{/emitJSDoc}} +{{classname}}.prototype['{{baseName}}'] = {{#defaultValue}}{{{defaultValue}}}{{/defaultValue}}{{^defaultValue}}undefined{{/defaultValue}}; +{{/allVars}}{{/interfaceModels}}{{/useInheritance}} + +{{#vars}}{{#isEnum}}{{^isContainer}} {{>partial_model_inner_enum}} -{{/isContainer}} -{{/isEnum}} -{{#items.isEnum}} -{{#items}} -{{^isContainer}} +{{/isContainer}}{{/isEnum}}{{#items.isEnum}}{{#items}}{{^isContainer}} {{>partial_model_inner_enum}} -{{/isContainer}} -{{/items}} -{{/items.isEnum}} -{{/vars}} +{{/isContainer}}{{/items}}{{/items.isEnum}}{{/vars}} -{{/model}}{{/models}} -} +export default {{classname}}; +{{/models}} diff --git a/modules/openapi-generator/src/main/resources/Javascript/es6/partial_model_inner_enum.mustache b/modules/openapi-generator/src/main/resources/Javascript/es6/partial_model_inner_enum.mustache index 521e497ba0cf..17cea4407d5a 100644 --- a/modules/openapi-generator/src/main/resources/Javascript/es6/partial_model_inner_enum.mustache +++ b/modules/openapi-generator/src/main/resources/Javascript/es6/partial_model_inner_enum.mustache @@ -1,15 +1,15 @@ +{{#emitJSDoc}}/** + * Allowed values for the {{baseName}} property. + * @enum {{=<% %>=}}{<%datatype%>}<%={{ }}=%> + * @readonly + */{{/emitJSDoc}} +{{classname}}['{{datatypeWithEnum}}'] = { +{{#allowableValues}}{{#enumVars}} {{#emitJSDoc}}/** - * Allowed values for the {{baseName}} property. - * @enum {{=<% %>=}}{<%datatype%>}<%={{ }}=%> - * @readonly - */{{/emitJSDoc}} - static {{datatypeWithEnum}} = { - {{#allowableValues}}{{#enumVars}} - {{#emitJSDoc}}/** - * value: {{{value}}} - * @const - */{{/emitJSDoc}} - "{{name}}": {{{value}}}{{^-last}}, - {{/-last}} - {{/enumVars}}{{/allowableValues}} - }; + * value: {{{value}}} + * @const + */{{/emitJSDoc}} + "{{name}}": {{{value}}}{{^-last}}, + {{/-last}} +{{/enumVars}}{{/allowableValues}} +}; diff --git a/modules/openapi-generator/src/main/resources/pistache-server/README.mustache b/modules/openapi-generator/src/main/resources/cpp-pistache-server/README.mustache similarity index 100% rename from modules/openapi-generator/src/main/resources/pistache-server/README.mustache rename to modules/openapi-generator/src/main/resources/cpp-pistache-server/README.mustache diff --git a/modules/openapi-generator/src/main/resources/pistache-server/api-header.mustache b/modules/openapi-generator/src/main/resources/cpp-pistache-server/api-header.mustache similarity index 100% rename from modules/openapi-generator/src/main/resources/pistache-server/api-header.mustache rename to modules/openapi-generator/src/main/resources/cpp-pistache-server/api-header.mustache diff --git a/modules/openapi-generator/src/main/resources/pistache-server/api-impl-header.mustache b/modules/openapi-generator/src/main/resources/cpp-pistache-server/api-impl-header.mustache similarity index 100% rename from modules/openapi-generator/src/main/resources/pistache-server/api-impl-header.mustache rename to modules/openapi-generator/src/main/resources/cpp-pistache-server/api-impl-header.mustache diff --git a/modules/openapi-generator/src/main/resources/pistache-server/api-impl-source.mustache b/modules/openapi-generator/src/main/resources/cpp-pistache-server/api-impl-source.mustache similarity index 100% rename from modules/openapi-generator/src/main/resources/pistache-server/api-impl-source.mustache rename to modules/openapi-generator/src/main/resources/cpp-pistache-server/api-impl-source.mustache diff --git a/modules/openapi-generator/src/main/resources/pistache-server/api-source.mustache b/modules/openapi-generator/src/main/resources/cpp-pistache-server/api-source.mustache similarity index 100% rename from modules/openapi-generator/src/main/resources/pistache-server/api-source.mustache rename to modules/openapi-generator/src/main/resources/cpp-pistache-server/api-source.mustache diff --git a/modules/openapi-generator/src/main/resources/pistache-server/cmake.mustache b/modules/openapi-generator/src/main/resources/cpp-pistache-server/cmake.mustache similarity index 100% rename from modules/openapi-generator/src/main/resources/pistache-server/cmake.mustache rename to modules/openapi-generator/src/main/resources/cpp-pistache-server/cmake.mustache diff --git a/modules/openapi-generator/src/main/resources/pistache-server/licenseInfo.mustache b/modules/openapi-generator/src/main/resources/cpp-pistache-server/licenseInfo.mustache similarity index 100% rename from modules/openapi-generator/src/main/resources/pistache-server/licenseInfo.mustache rename to modules/openapi-generator/src/main/resources/cpp-pistache-server/licenseInfo.mustache diff --git a/modules/openapi-generator/src/main/resources/pistache-server/main-api-server.mustache b/modules/openapi-generator/src/main/resources/cpp-pistache-server/main-api-server.mustache similarity index 100% rename from modules/openapi-generator/src/main/resources/pistache-server/main-api-server.mustache rename to modules/openapi-generator/src/main/resources/cpp-pistache-server/main-api-server.mustache diff --git a/modules/openapi-generator/src/main/resources/pistache-server/model-header.mustache b/modules/openapi-generator/src/main/resources/cpp-pistache-server/model-header.mustache similarity index 100% rename from modules/openapi-generator/src/main/resources/pistache-server/model-header.mustache rename to modules/openapi-generator/src/main/resources/cpp-pistache-server/model-header.mustache diff --git a/modules/openapi-generator/src/main/resources/pistache-server/model-source.mustache b/modules/openapi-generator/src/main/resources/cpp-pistache-server/model-source.mustache similarity index 100% rename from modules/openapi-generator/src/main/resources/pistache-server/model-source.mustache rename to modules/openapi-generator/src/main/resources/cpp-pistache-server/model-source.mustache diff --git a/modules/openapi-generator/src/main/resources/pistache-server/modelbase-header.mustache b/modules/openapi-generator/src/main/resources/cpp-pistache-server/modelbase-header.mustache similarity index 100% rename from modules/openapi-generator/src/main/resources/pistache-server/modelbase-header.mustache rename to modules/openapi-generator/src/main/resources/cpp-pistache-server/modelbase-header.mustache diff --git a/modules/openapi-generator/src/main/resources/pistache-server/modelbase-source.mustache b/modules/openapi-generator/src/main/resources/cpp-pistache-server/modelbase-source.mustache similarity index 100% rename from modules/openapi-generator/src/main/resources/pistache-server/modelbase-source.mustache rename to modules/openapi-generator/src/main/resources/cpp-pistache-server/modelbase-source.mustache diff --git a/modules/openapi-generator/src/main/resources/qt5cpp/HttpRequest.cpp.mustache b/modules/openapi-generator/src/main/resources/cpp-qt5-client/HttpRequest.cpp.mustache similarity index 100% rename from modules/openapi-generator/src/main/resources/qt5cpp/HttpRequest.cpp.mustache rename to modules/openapi-generator/src/main/resources/cpp-qt5-client/HttpRequest.cpp.mustache diff --git a/modules/openapi-generator/src/main/resources/qt5cpp/HttpRequest.h.mustache b/modules/openapi-generator/src/main/resources/cpp-qt5-client/HttpRequest.h.mustache similarity index 100% rename from modules/openapi-generator/src/main/resources/qt5cpp/HttpRequest.h.mustache rename to modules/openapi-generator/src/main/resources/cpp-qt5-client/HttpRequest.h.mustache diff --git a/modules/openapi-generator/src/main/resources/qt5cpp/Project.mustache b/modules/openapi-generator/src/main/resources/cpp-qt5-client/Project.mustache similarity index 100% rename from modules/openapi-generator/src/main/resources/qt5cpp/Project.mustache rename to modules/openapi-generator/src/main/resources/cpp-qt5-client/Project.mustache diff --git a/modules/openapi-generator/src/main/resources/qt5cpp/QObjectWrapper.h.mustache b/modules/openapi-generator/src/main/resources/cpp-qt5-client/QObjectWrapper.h.mustache similarity index 100% rename from modules/openapi-generator/src/main/resources/qt5cpp/QObjectWrapper.h.mustache rename to modules/openapi-generator/src/main/resources/cpp-qt5-client/QObjectWrapper.h.mustache diff --git a/modules/openapi-generator/src/main/resources/qt5cpp/api-body.mustache b/modules/openapi-generator/src/main/resources/cpp-qt5-client/api-body.mustache similarity index 100% rename from modules/openapi-generator/src/main/resources/qt5cpp/api-body.mustache rename to modules/openapi-generator/src/main/resources/cpp-qt5-client/api-body.mustache diff --git a/modules/openapi-generator/src/main/resources/qt5cpp/api-header.mustache b/modules/openapi-generator/src/main/resources/cpp-qt5-client/api-header.mustache similarity index 100% rename from modules/openapi-generator/src/main/resources/qt5cpp/api-header.mustache rename to modules/openapi-generator/src/main/resources/cpp-qt5-client/api-header.mustache diff --git a/modules/openapi-generator/src/main/resources/qt5cpp/helpers-body.mustache b/modules/openapi-generator/src/main/resources/cpp-qt5-client/helpers-body.mustache similarity index 100% rename from modules/openapi-generator/src/main/resources/qt5cpp/helpers-body.mustache rename to modules/openapi-generator/src/main/resources/cpp-qt5-client/helpers-body.mustache diff --git a/modules/openapi-generator/src/main/resources/qt5cpp/helpers-header.mustache b/modules/openapi-generator/src/main/resources/cpp-qt5-client/helpers-header.mustache similarity index 100% rename from modules/openapi-generator/src/main/resources/qt5cpp/helpers-header.mustache rename to modules/openapi-generator/src/main/resources/cpp-qt5-client/helpers-header.mustache diff --git a/modules/openapi-generator/src/main/resources/qt5cpp/licenseInfo.mustache b/modules/openapi-generator/src/main/resources/cpp-qt5-client/licenseInfo.mustache similarity index 100% rename from modules/openapi-generator/src/main/resources/qt5cpp/licenseInfo.mustache rename to modules/openapi-generator/src/main/resources/cpp-qt5-client/licenseInfo.mustache diff --git a/modules/openapi-generator/src/main/resources/qt5cpp/model-body.mustache b/modules/openapi-generator/src/main/resources/cpp-qt5-client/model-body.mustache similarity index 100% rename from modules/openapi-generator/src/main/resources/qt5cpp/model-body.mustache rename to modules/openapi-generator/src/main/resources/cpp-qt5-client/model-body.mustache diff --git a/modules/openapi-generator/src/main/resources/qt5cpp/model-header.mustache b/modules/openapi-generator/src/main/resources/cpp-qt5-client/model-header.mustache similarity index 100% rename from modules/openapi-generator/src/main/resources/qt5cpp/model-header.mustache rename to modules/openapi-generator/src/main/resources/cpp-qt5-client/model-header.mustache diff --git a/modules/openapi-generator/src/main/resources/qt5cpp/modelFactory.mustache b/modules/openapi-generator/src/main/resources/cpp-qt5-client/modelFactory.mustache similarity index 100% rename from modules/openapi-generator/src/main/resources/qt5cpp/modelFactory.mustache rename to modules/openapi-generator/src/main/resources/cpp-qt5-client/modelFactory.mustache diff --git a/modules/openapi-generator/src/main/resources/qt5cpp/object.mustache b/modules/openapi-generator/src/main/resources/cpp-qt5-client/object.mustache similarity index 100% rename from modules/openapi-generator/src/main/resources/qt5cpp/object.mustache rename to modules/openapi-generator/src/main/resources/cpp-qt5-client/object.mustache diff --git a/modules/openapi-generator/src/main/resources/cpprest/api-header.mustache b/modules/openapi-generator/src/main/resources/cpp-rest-sdk-client/api-header.mustache similarity index 100% rename from modules/openapi-generator/src/main/resources/cpprest/api-header.mustache rename to modules/openapi-generator/src/main/resources/cpp-rest-sdk-client/api-header.mustache diff --git a/modules/openapi-generator/src/main/resources/cpprest/api-source.mustache b/modules/openapi-generator/src/main/resources/cpp-rest-sdk-client/api-source.mustache similarity index 100% rename from modules/openapi-generator/src/main/resources/cpprest/api-source.mustache rename to modules/openapi-generator/src/main/resources/cpp-rest-sdk-client/api-source.mustache diff --git a/modules/openapi-generator/src/main/resources/cpprest/apiclient-header.mustache b/modules/openapi-generator/src/main/resources/cpp-rest-sdk-client/apiclient-header.mustache similarity index 100% rename from modules/openapi-generator/src/main/resources/cpprest/apiclient-header.mustache rename to modules/openapi-generator/src/main/resources/cpp-rest-sdk-client/apiclient-header.mustache diff --git a/modules/openapi-generator/src/main/resources/cpprest/apiclient-source.mustache b/modules/openapi-generator/src/main/resources/cpp-rest-sdk-client/apiclient-source.mustache similarity index 100% rename from modules/openapi-generator/src/main/resources/cpprest/apiclient-source.mustache rename to modules/openapi-generator/src/main/resources/cpp-rest-sdk-client/apiclient-source.mustache diff --git a/modules/openapi-generator/src/main/resources/cpprest/apiconfiguration-header.mustache b/modules/openapi-generator/src/main/resources/cpp-rest-sdk-client/apiconfiguration-header.mustache similarity index 100% rename from modules/openapi-generator/src/main/resources/cpprest/apiconfiguration-header.mustache rename to modules/openapi-generator/src/main/resources/cpp-rest-sdk-client/apiconfiguration-header.mustache diff --git a/modules/openapi-generator/src/main/resources/cpprest/apiconfiguration-source.mustache b/modules/openapi-generator/src/main/resources/cpp-rest-sdk-client/apiconfiguration-source.mustache similarity index 100% rename from modules/openapi-generator/src/main/resources/cpprest/apiconfiguration-source.mustache rename to modules/openapi-generator/src/main/resources/cpp-rest-sdk-client/apiconfiguration-source.mustache diff --git a/modules/openapi-generator/src/main/resources/cpprest/apiexception-header.mustache b/modules/openapi-generator/src/main/resources/cpp-rest-sdk-client/apiexception-header.mustache similarity index 100% rename from modules/openapi-generator/src/main/resources/cpprest/apiexception-header.mustache rename to modules/openapi-generator/src/main/resources/cpp-rest-sdk-client/apiexception-header.mustache diff --git a/modules/openapi-generator/src/main/resources/cpprest/apiexception-source.mustache b/modules/openapi-generator/src/main/resources/cpp-rest-sdk-client/apiexception-source.mustache similarity index 100% rename from modules/openapi-generator/src/main/resources/cpprest/apiexception-source.mustache rename to modules/openapi-generator/src/main/resources/cpp-rest-sdk-client/apiexception-source.mustache diff --git a/modules/openapi-generator/src/main/resources/cpprest/cmake-lists.mustache b/modules/openapi-generator/src/main/resources/cpp-rest-sdk-client/cmake-lists.mustache similarity index 100% rename from modules/openapi-generator/src/main/resources/cpprest/cmake-lists.mustache rename to modules/openapi-generator/src/main/resources/cpp-rest-sdk-client/cmake-lists.mustache diff --git a/modules/openapi-generator/src/main/resources/cpprest/git_push.sh.mustache b/modules/openapi-generator/src/main/resources/cpp-rest-sdk-client/git_push.sh.mustache similarity index 100% rename from modules/openapi-generator/src/main/resources/cpprest/git_push.sh.mustache rename to modules/openapi-generator/src/main/resources/cpp-rest-sdk-client/git_push.sh.mustache diff --git a/modules/openapi-generator/src/main/resources/cpprest/gitignore.mustache b/modules/openapi-generator/src/main/resources/cpp-rest-sdk-client/gitignore.mustache similarity index 100% rename from modules/openapi-generator/src/main/resources/cpprest/gitignore.mustache rename to modules/openapi-generator/src/main/resources/cpp-rest-sdk-client/gitignore.mustache diff --git a/modules/openapi-generator/src/main/resources/cpprest/httpcontent-header.mustache b/modules/openapi-generator/src/main/resources/cpp-rest-sdk-client/httpcontent-header.mustache similarity index 100% rename from modules/openapi-generator/src/main/resources/cpprest/httpcontent-header.mustache rename to modules/openapi-generator/src/main/resources/cpp-rest-sdk-client/httpcontent-header.mustache diff --git a/modules/openapi-generator/src/main/resources/cpprest/httpcontent-source.mustache b/modules/openapi-generator/src/main/resources/cpp-rest-sdk-client/httpcontent-source.mustache similarity index 100% rename from modules/openapi-generator/src/main/resources/cpprest/httpcontent-source.mustache rename to modules/openapi-generator/src/main/resources/cpp-rest-sdk-client/httpcontent-source.mustache diff --git a/modules/openapi-generator/src/main/resources/cpprest/ihttpbody-header.mustache b/modules/openapi-generator/src/main/resources/cpp-rest-sdk-client/ihttpbody-header.mustache similarity index 100% rename from modules/openapi-generator/src/main/resources/cpprest/ihttpbody-header.mustache rename to modules/openapi-generator/src/main/resources/cpp-rest-sdk-client/ihttpbody-header.mustache diff --git a/modules/openapi-generator/src/main/resources/cpprest/jsonbody-header.mustache b/modules/openapi-generator/src/main/resources/cpp-rest-sdk-client/jsonbody-header.mustache similarity index 100% rename from modules/openapi-generator/src/main/resources/cpprest/jsonbody-header.mustache rename to modules/openapi-generator/src/main/resources/cpp-rest-sdk-client/jsonbody-header.mustache diff --git a/modules/openapi-generator/src/main/resources/cpprest/jsonbody-source.mustache b/modules/openapi-generator/src/main/resources/cpp-rest-sdk-client/jsonbody-source.mustache similarity index 100% rename from modules/openapi-generator/src/main/resources/cpprest/jsonbody-source.mustache rename to modules/openapi-generator/src/main/resources/cpp-rest-sdk-client/jsonbody-source.mustache diff --git a/modules/openapi-generator/src/main/resources/cpprest/licenseInfo.mustache b/modules/openapi-generator/src/main/resources/cpp-rest-sdk-client/licenseInfo.mustache similarity index 100% rename from modules/openapi-generator/src/main/resources/cpprest/licenseInfo.mustache rename to modules/openapi-generator/src/main/resources/cpp-rest-sdk-client/licenseInfo.mustache diff --git a/modules/openapi-generator/src/main/resources/cpprest/model-header.mustache b/modules/openapi-generator/src/main/resources/cpp-rest-sdk-client/model-header.mustache similarity index 100% rename from modules/openapi-generator/src/main/resources/cpprest/model-header.mustache rename to modules/openapi-generator/src/main/resources/cpp-rest-sdk-client/model-header.mustache diff --git a/modules/openapi-generator/src/main/resources/cpprest/model-source.mustache b/modules/openapi-generator/src/main/resources/cpp-rest-sdk-client/model-source.mustache similarity index 100% rename from modules/openapi-generator/src/main/resources/cpprest/model-source.mustache rename to modules/openapi-generator/src/main/resources/cpp-rest-sdk-client/model-source.mustache diff --git a/modules/openapi-generator/src/main/resources/cpprest/modelbase-header.mustache b/modules/openapi-generator/src/main/resources/cpp-rest-sdk-client/modelbase-header.mustache similarity index 100% rename from modules/openapi-generator/src/main/resources/cpprest/modelbase-header.mustache rename to modules/openapi-generator/src/main/resources/cpp-rest-sdk-client/modelbase-header.mustache diff --git a/modules/openapi-generator/src/main/resources/cpprest/modelbase-source.mustache b/modules/openapi-generator/src/main/resources/cpp-rest-sdk-client/modelbase-source.mustache similarity index 100% rename from modules/openapi-generator/src/main/resources/cpprest/modelbase-source.mustache rename to modules/openapi-generator/src/main/resources/cpp-rest-sdk-client/modelbase-source.mustache diff --git a/modules/openapi-generator/src/main/resources/cpprest/multipart-header.mustache b/modules/openapi-generator/src/main/resources/cpp-rest-sdk-client/multipart-header.mustache similarity index 92% rename from modules/openapi-generator/src/main/resources/cpprest/multipart-header.mustache rename to modules/openapi-generator/src/main/resources/cpp-rest-sdk-client/multipart-header.mustache index 17dba42a34ae..c34109e989eb 100644 --- a/modules/openapi-generator/src/main/resources/cpprest/multipart-header.mustache +++ b/modules/openapi-generator/src/main/resources/cpp-rest-sdk-client/multipart-header.mustache @@ -2,7 +2,7 @@ /* * MultipartFormData.h * - * This class represents a container for building a application/x-multipart-formdata requests. + * This class represents a container for building application/x-multipart-formdata requests. */ #ifndef {{modelHeaderGuardPrefix}}_MultipartFormData_H_ diff --git a/modules/openapi-generator/src/main/resources/cpprest/multipart-source.mustache b/modules/openapi-generator/src/main/resources/cpp-rest-sdk-client/multipart-source.mustache similarity index 100% rename from modules/openapi-generator/src/main/resources/cpprest/multipart-source.mustache rename to modules/openapi-generator/src/main/resources/cpp-rest-sdk-client/multipart-source.mustache diff --git a/modules/openapi-generator/src/main/resources/cpprest/object-header.mustache b/modules/openapi-generator/src/main/resources/cpp-rest-sdk-client/object-header.mustache similarity index 100% rename from modules/openapi-generator/src/main/resources/cpprest/object-header.mustache rename to modules/openapi-generator/src/main/resources/cpp-rest-sdk-client/object-header.mustache diff --git a/modules/openapi-generator/src/main/resources/cpprest/object-source.mustache b/modules/openapi-generator/src/main/resources/cpp-rest-sdk-client/object-source.mustache similarity index 100% rename from modules/openapi-generator/src/main/resources/cpprest/object-source.mustache rename to modules/openapi-generator/src/main/resources/cpp-rest-sdk-client/object-source.mustache diff --git a/modules/openapi-generator/src/main/resources/restbed/README.mustache b/modules/openapi-generator/src/main/resources/cpp-restbed-server/README.mustache similarity index 100% rename from modules/openapi-generator/src/main/resources/restbed/README.mustache rename to modules/openapi-generator/src/main/resources/cpp-restbed-server/README.mustache diff --git a/modules/openapi-generator/src/main/resources/restbed/api-header.mustache b/modules/openapi-generator/src/main/resources/cpp-restbed-server/api-header.mustache similarity index 100% rename from modules/openapi-generator/src/main/resources/restbed/api-header.mustache rename to modules/openapi-generator/src/main/resources/cpp-restbed-server/api-header.mustache diff --git a/modules/openapi-generator/src/main/resources/restbed/api-source.mustache b/modules/openapi-generator/src/main/resources/cpp-restbed-server/api-source.mustache similarity index 100% rename from modules/openapi-generator/src/main/resources/restbed/api-source.mustache rename to modules/openapi-generator/src/main/resources/cpp-restbed-server/api-source.mustache diff --git a/modules/openapi-generator/src/main/resources/restbed/git_push.sh.mustache b/modules/openapi-generator/src/main/resources/cpp-restbed-server/git_push.sh.mustache similarity index 100% rename from modules/openapi-generator/src/main/resources/restbed/git_push.sh.mustache rename to modules/openapi-generator/src/main/resources/cpp-restbed-server/git_push.sh.mustache diff --git a/modules/openapi-generator/src/main/resources/restbed/gitignore.mustache b/modules/openapi-generator/src/main/resources/cpp-restbed-server/gitignore.mustache similarity index 100% rename from modules/openapi-generator/src/main/resources/restbed/gitignore.mustache rename to modules/openapi-generator/src/main/resources/cpp-restbed-server/gitignore.mustache diff --git a/modules/openapi-generator/src/main/resources/restbed/licenseInfo.mustache b/modules/openapi-generator/src/main/resources/cpp-restbed-server/licenseInfo.mustache similarity index 100% rename from modules/openapi-generator/src/main/resources/restbed/licenseInfo.mustache rename to modules/openapi-generator/src/main/resources/cpp-restbed-server/licenseInfo.mustache diff --git a/modules/openapi-generator/src/main/resources/restbed/model-header.mustache b/modules/openapi-generator/src/main/resources/cpp-restbed-server/model-header.mustache similarity index 100% rename from modules/openapi-generator/src/main/resources/restbed/model-header.mustache rename to modules/openapi-generator/src/main/resources/cpp-restbed-server/model-header.mustache diff --git a/modules/openapi-generator/src/main/resources/restbed/model-source.mustache b/modules/openapi-generator/src/main/resources/cpp-restbed-server/model-source.mustache similarity index 100% rename from modules/openapi-generator/src/main/resources/restbed/model-source.mustache rename to modules/openapi-generator/src/main/resources/cpp-restbed-server/model-source.mustache diff --git a/modules/openapi-generator/src/main/resources/tizen/Doxyfile.mustache b/modules/openapi-generator/src/main/resources/cpp-tizen-client/Doxyfile.mustache similarity index 99% rename from modules/openapi-generator/src/main/resources/tizen/Doxyfile.mustache rename to modules/openapi-generator/src/main/resources/cpp-tizen-client/Doxyfile.mustache index f306cd7bcf69..a1bae5840c68 100644 --- a/modules/openapi-generator/src/main/resources/tizen/Doxyfile.mustache +++ b/modules/openapi-generator/src/main/resources/cpp-tizen-client/Doxyfile.mustache @@ -46,7 +46,7 @@ PROJECT_NUMBER = {{#openAPI}}{{#info}}{{version}}{{/info}}{{/openAPI}} PROJECT_BRIEF = "An SDK for creating client applications for {{#openAPI}}{{#info}}{{title}}{{/info}}{{/openAPI}} on Tizen Platform (http://tizen.org/)" -# With the PROJECT_LOGO tag one can specify an logo or icon that is included in +# With the PROJECT_LOGO tag one can specify a logo or icon that is included in # the documentation. The maximum height of the logo should not exceed 55 pixels # and the maximum width should not exceed 200 pixels. Doxygen will copy the logo # to the output directory. diff --git a/modules/openapi-generator/src/main/resources/tizen/api-body.mustache b/modules/openapi-generator/src/main/resources/cpp-tizen-client/api-body.mustache similarity index 100% rename from modules/openapi-generator/src/main/resources/tizen/api-body.mustache rename to modules/openapi-generator/src/main/resources/cpp-tizen-client/api-body.mustache diff --git a/modules/openapi-generator/src/main/resources/tizen/api-header.mustache b/modules/openapi-generator/src/main/resources/cpp-tizen-client/api-header.mustache similarity index 100% rename from modules/openapi-generator/src/main/resources/tizen/api-header.mustache rename to modules/openapi-generator/src/main/resources/cpp-tizen-client/api-header.mustache diff --git a/modules/openapi-generator/src/main/resources/tizen/doc-readme.mustache b/modules/openapi-generator/src/main/resources/cpp-tizen-client/doc-readme.mustache similarity index 100% rename from modules/openapi-generator/src/main/resources/tizen/doc-readme.mustache rename to modules/openapi-generator/src/main/resources/cpp-tizen-client/doc-readme.mustache diff --git a/modules/openapi-generator/src/main/resources/tizen/error-body.mustache b/modules/openapi-generator/src/main/resources/cpp-tizen-client/error-body.mustache similarity index 100% rename from modules/openapi-generator/src/main/resources/tizen/error-body.mustache rename to modules/openapi-generator/src/main/resources/cpp-tizen-client/error-body.mustache diff --git a/modules/openapi-generator/src/main/resources/tizen/error-header.mustache b/modules/openapi-generator/src/main/resources/cpp-tizen-client/error-header.mustache similarity index 100% rename from modules/openapi-generator/src/main/resources/tizen/error-header.mustache rename to modules/openapi-generator/src/main/resources/cpp-tizen-client/error-header.mustache diff --git a/modules/openapi-generator/src/main/resources/tizen/generateDocumentation.mustache b/modules/openapi-generator/src/main/resources/cpp-tizen-client/generateDocumentation.mustache similarity index 100% rename from modules/openapi-generator/src/main/resources/tizen/generateDocumentation.mustache rename to modules/openapi-generator/src/main/resources/cpp-tizen-client/generateDocumentation.mustache diff --git a/modules/openapi-generator/src/main/resources/tizen/helpers-body.mustache b/modules/openapi-generator/src/main/resources/cpp-tizen-client/helpers-body.mustache similarity index 100% rename from modules/openapi-generator/src/main/resources/tizen/helpers-body.mustache rename to modules/openapi-generator/src/main/resources/cpp-tizen-client/helpers-body.mustache diff --git a/modules/openapi-generator/src/main/resources/tizen/helpers-header.mustache b/modules/openapi-generator/src/main/resources/cpp-tizen-client/helpers-header.mustache similarity index 100% rename from modules/openapi-generator/src/main/resources/tizen/helpers-header.mustache rename to modules/openapi-generator/src/main/resources/cpp-tizen-client/helpers-header.mustache diff --git a/modules/openapi-generator/src/main/resources/tizen/model-body.mustache b/modules/openapi-generator/src/main/resources/cpp-tizen-client/model-body.mustache similarity index 100% rename from modules/openapi-generator/src/main/resources/tizen/model-body.mustache rename to modules/openapi-generator/src/main/resources/cpp-tizen-client/model-body.mustache diff --git a/modules/openapi-generator/src/main/resources/tizen/model-header.mustache b/modules/openapi-generator/src/main/resources/cpp-tizen-client/model-header.mustache similarity index 100% rename from modules/openapi-generator/src/main/resources/tizen/model-header.mustache rename to modules/openapi-generator/src/main/resources/cpp-tizen-client/model-header.mustache diff --git a/modules/openapi-generator/src/main/resources/tizen/netclient-body.mustache b/modules/openapi-generator/src/main/resources/cpp-tizen-client/netclient-body.mustache similarity index 100% rename from modules/openapi-generator/src/main/resources/tizen/netclient-body.mustache rename to modules/openapi-generator/src/main/resources/cpp-tizen-client/netclient-body.mustache diff --git a/modules/openapi-generator/src/main/resources/tizen/netclient-header.mustache b/modules/openapi-generator/src/main/resources/cpp-tizen-client/netclient-header.mustache similarity index 100% rename from modules/openapi-generator/src/main/resources/tizen/netclient-header.mustache rename to modules/openapi-generator/src/main/resources/cpp-tizen-client/netclient-header.mustache diff --git a/modules/openapi-generator/src/main/resources/tizen/object.mustache b/modules/openapi-generator/src/main/resources/cpp-tizen-client/object.mustache similarity index 100% rename from modules/openapi-generator/src/main/resources/tizen/object.mustache rename to modules/openapi-generator/src/main/resources/cpp-tizen-client/object.mustache diff --git a/modules/openapi-generator/src/main/resources/tizen/requestinfo.mustache b/modules/openapi-generator/src/main/resources/cpp-tizen-client/requestinfo.mustache similarity index 100% rename from modules/openapi-generator/src/main/resources/tizen/requestinfo.mustache rename to modules/openapi-generator/src/main/resources/cpp-tizen-client/requestinfo.mustache diff --git a/modules/openapi-generator/src/main/resources/elixir/connection.ex.mustache b/modules/openapi-generator/src/main/resources/elixir/connection.ex.mustache index 9e10634e2856..052a9d357e47 100644 --- a/modules/openapi-generator/src/main/resources/elixir/connection.ex.mustache +++ b/modules/openapi-generator/src/main/resources/elixir/connection.ex.mustache @@ -58,7 +58,7 @@ defmodule {{moduleName}}.Connection do {{/isOAuth}} {{#isBasic}} @doc """ - Configure an client connection using Basic authentication. + Configure a client connection using Basic authentication. ## Parameters diff --git a/modules/openapi-generator/src/main/resources/flash/ApiClientEvent.as b/modules/openapi-generator/src/main/resources/flash/ApiClientEvent.as index 964dbc26d692..abb0fe121fb2 100644 --- a/modules/openapi-generator/src/main/resources/flash/ApiClientEvent.as +++ b/modules/openapi-generator/src/main/resources/flash/ApiClientEvent.as @@ -11,7 +11,7 @@ import flash.events.Event; public class ApiClientEvent extends Event{ /** - * Event type to indicate a unsuccessful invocation + * Event type to indicate an unsuccessful invocation */ public static const FAILURE_EVENT:String = "unsuccesfulInvocation"; @@ -33,4 +33,4 @@ public class ApiClientEvent extends Event{ super(type, bubbles, cancelable); } } -} \ No newline at end of file +} diff --git a/modules/openapi-generator/src/main/resources/flash/build.xml b/modules/openapi-generator/src/main/resources/flash/build.xml index da3c67f83443..dedf7e030081 100644 --- a/modules/openapi-generator/src/main/resources/flash/build.xml +++ b/modules/openapi-generator/src/main/resources/flash/build.xml @@ -15,7 +15,7 @@ - + @@ -28,7 +28,7 @@ - + @@ -189,4 +189,4 @@ - \ No newline at end of file + diff --git a/modules/openapi-generator/src/main/resources/flaskConnexion/util.mustache b/modules/openapi-generator/src/main/resources/flaskConnexion/util.mustache index 4321570d5a0e..c7340cd00059 100644 --- a/modules/openapi-generator/src/main/resources/flaskConnexion/util.mustache +++ b/modules/openapi-generator/src/main/resources/flaskConnexion/util.mustache @@ -51,7 +51,7 @@ def _deserialize_primitive(data, klass): def _deserialize_object(value): - """Return a original value. + """Return an original value. :return: object. """ diff --git a/modules/openapi-generator/src/main/resources/go-server/Dockerfile.mustache b/modules/openapi-generator/src/main/resources/go-server/Dockerfile.mustache new file mode 100644 index 000000000000..114243086fa2 --- /dev/null +++ b/modules/openapi-generator/src/main/resources/go-server/Dockerfile.mustache @@ -0,0 +1,14 @@ +FROM golang:1.10 AS build +WORKDIR /go/src +COPY {{apiPath}} ./{{apiPath}} +COPY main.go . + +ENV CGO_ENABLED=0 +RUN go get -d -v ./... + +RUN go build -a -installsuffix cgo -o {{packageName}} . + +FROM scratch AS runtime +COPY --from=build /go/src/{{packageName}} ./ +EXPOSE 8080/tcp +ENTRYPOINT ["./{{packageName}}"] diff --git a/modules/openapi-generator/src/main/resources/go-server/README.mustache b/modules/openapi-generator/src/main/resources/go-server/README.mustache index 90814cbfb047..aedb0a341344 100644 --- a/modules/openapi-generator/src/main/resources/go-server/README.mustache +++ b/modules/openapi-generator/src/main/resources/go-server/README.mustache @@ -28,3 +28,14 @@ To run the server, follow these simple steps: go run main.go ``` +To run the server in a docker container +``` +docker build --network=host -t {{{packageName}}} . +``` + +Once image is built use +``` +docker run --rm -it {{{packageName}}} +``` + + diff --git a/modules/openapi-generator/src/main/resources/go-server/controller-api.mustache b/modules/openapi-generator/src/main/resources/go-server/controller-api.mustache index 528e71fa21c1..bfde1e51a5bb 100644 --- a/modules/openapi-generator/src/main/resources/go-server/controller-api.mustache +++ b/modules/openapi-generator/src/main/resources/go-server/controller-api.mustache @@ -6,6 +6,7 @@ import ( "net/http" ){{#operation}} +// {{nickname}} - {{{summary}}} func {{nickname}}(w http.ResponseWriter, r *http.Request) { w.Header().Set("Content-Type", "application/json; charset=UTF-8") w.WriteHeader(http.StatusOK) diff --git a/modules/openapi-generator/src/main/resources/go-server/logger.mustache b/modules/openapi-generator/src/main/resources/go-server/logger.mustache index aa0d894d83af..e8464d6ad5f5 100644 --- a/modules/openapi-generator/src/main/resources/go-server/logger.mustache +++ b/modules/openapi-generator/src/main/resources/go-server/logger.mustache @@ -2,23 +2,23 @@ package {{packageName}} import ( - "log" - "net/http" - "time" + "log" + "net/http" + "time" ) func Logger(inner http.Handler, name string) http.Handler { - return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - start := time.Now() + return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + start := time.Now() - inner.ServeHTTP(w, r) + inner.ServeHTTP(w, r) - log.Printf( - "%s %s %s %s", - r.Method, - r.RequestURI, - name, - time.Since(start), - ) - }) + log.Printf( + "%s %s %s %s", + r.Method, + r.RequestURI, + name, + time.Since(start), + ) + }) } diff --git a/modules/openapi-generator/src/main/resources/go-server/model.mustache b/modules/openapi-generator/src/main/resources/go-server/model.mustache index d6562a39eb81..d006e1aa050a 100644 --- a/modules/openapi-generator/src/main/resources/go-server/model.mustache +++ b/modules/openapi-generator/src/main/resources/go-server/model.mustache @@ -15,7 +15,7 @@ const ( {{/enumVars}} {{/allowableValues}} ){{/isEnum}}{{^isEnum}}{{#description}} -// {{{description}}}{{/description}} +// {{classname}} - {{{description}}}{{/description}} type {{classname}} struct { {{#vars}}{{#description}} // {{{description}}}{{/description}} diff --git a/modules/openapi-generator/src/main/resources/go-server/routers.mustache b/modules/openapi-generator/src/main/resources/go-server/routers.mustache index e3f5bdf34555..815fc5f75a5e 100644 --- a/modules/openapi-generator/src/main/resources/go-server/routers.mustache +++ b/modules/openapi-generator/src/main/resources/go-server/routers.mustache @@ -40,14 +40,14 @@ func Index(w http.ResponseWriter, r *http.Request) { } var routes = Routes{ - Route{ + { "Index", "GET", "{{{basePathWithoutHost}}}/", Index, },{{#apiInfo}}{{#apis}}{{#operations}}{{#operation}} - Route{ + { "{{operationId}}", strings.ToUpper("{{httpMethod}}"), "{{{basePathWithoutHost}}}{{{path}}}", diff --git a/modules/openapi-generator/src/main/resources/go/configuration.mustache b/modules/openapi-generator/src/main/resources/go/configuration.mustache index ccea4ba3876c..81d3a41b7bdf 100644 --- a/modules/openapi-generator/src/main/resources/go/configuration.mustache +++ b/modules/openapi-generator/src/main/resources/go/configuration.mustache @@ -16,7 +16,7 @@ func (c contextKey) String() string { } var ( - // ContextOAuth2 takes a oauth2.TokenSource as authentication for the request. + // ContextOAuth2 takes an oauth2.TokenSource as authentication for the request. ContextOAuth2 = contextKey("token") // ContextBasicAuth takes BasicAuth as authentication for the request. diff --git a/modules/openapi-generator/src/main/resources/java-pkmst/readme.mustache b/modules/openapi-generator/src/main/resources/java-pkmst/readme.mustache index d56055c1e0c2..9867e11590b6 100644 --- a/modules/openapi-generator/src/main/resources/java-pkmst/readme.mustache +++ b/modules/openapi-generator/src/main/resources/java-pkmst/readme.mustache @@ -17,9 +17,9 @@ g)Allow you to integrate with tracing server (Example Zipkin) h)Allow you to capture log in your microservice and send to Log management server (Ex ELK or splunk) i)Allow you to configure Oauth2 security based authorization for your microservice - Additonal Features + Additional Features j)generate sample cucumber file and dependency to drive your Behaviour driven development. - k)generate gatling based perfromance test , which can be excuted via build pipeline like jenkins etc. + k)generate gatling based performance test, which can be excuted via build pipeline like jenkins etc. Working: @@ -136,7 +136,7 @@ HttpLogging filter is provided for logging in the request and response. Can be f Spring security is also provided to secure the resources. Please modify according to your needs. First run: -Import the project in to the eclipse. Run the app as an spring boot application.The project will run on http://localhost:8008 +Import the project in to the eclipse. Run the app as a spring boot application.The project will run on http://localhost:8008 Swagger ui available on: http://localhost:8008/swagger-ui.html If all the configurations have been enabled(depending on the port) below are some of the URls to access: @@ -152,4 +152,4 @@ Pkmst examples https://github.com/ProKarma-Inc/pkmst-getting-started-examples Pkmst Extensions -https://github.com/ProKarma-Inc/pkmst-extention \ No newline at end of file +https://github.com/ProKarma-Inc/pkmst-extention diff --git a/modules/openapi-generator/src/main/resources/objc/DefaultConfiguration-header.mustache b/modules/openapi-generator/src/main/resources/objc/DefaultConfiguration-header.mustache index 438ddb5b38c4..f64bb5b0614a 100644 --- a/modules/openapi-generator/src/main/resources/objc/DefaultConfiguration-header.mustache +++ b/modules/openapi-generator/src/main/resources/objc/DefaultConfiguration-header.mustache @@ -82,7 +82,7 @@ /** * Sets API key * - * To remove a apiKey for an identifier, just set the apiKey to nil. + * To remove an apiKey for an identifier, just set the apiKey to nil. * * @param apiKey API key or token. * @param identifier API key identifier (authentication schema). diff --git a/modules/openapi-generator/src/main/resources/objc/ResponseDeserializer-header.mustache b/modules/openapi-generator/src/main/resources/objc/ResponseDeserializer-header.mustache index 774fe1ee5af5..3ee2ecbdb861 100644 --- a/modules/openapi-generator/src/main/resources/objc/ResponseDeserializer-header.mustache +++ b/modules/openapi-generator/src/main/resources/objc/ResponseDeserializer-header.mustache @@ -38,7 +38,7 @@ extern NSInteger const {{classPrefix}}UnknownResponseObjectErrorCode; @interface {{classPrefix}}ResponseDeserializer : NSObject <{{classPrefix}}ResponseDeserializer> /** - * If an null value occurs in dictionary or array if set to YES whole response will be invalid else will be ignored + * If a null value occurs in dictionary or array if set to YES whole response will be invalid else will be ignored * @default NO */ @property (nonatomic, assign) BOOL treatNullAsError; diff --git a/modules/openapi-generator/src/main/resources/php/ObjectSerializer.mustache b/modules/openapi-generator/src/main/resources/php/ObjectSerializer.mustache index 6f22dd8ab408..3b526da5fec8 100644 --- a/modules/openapi-generator/src/main/resources/php/ObjectSerializer.mustache +++ b/modules/openapi-generator/src/main/resources/php/ObjectSerializer.mustache @@ -213,7 +213,7 @@ class ObjectSerializer * @param string[] $httpHeaders HTTP headers * @param string $discriminator discriminator if polymorphism is used * - * @return object|array|null an single or an array of $class instances + * @return object|array|null a single or an array of $class instances */ public static function deserialize($data, $class, $httpHeaders = null) { diff --git a/modules/openapi-generator/src/main/resources/php/api.mustache b/modules/openapi-generator/src/main/resources/php/api.mustache index 15a18da56bf4..776ebc14207d 100644 --- a/modules/openapi-generator/src/main/resources/php/api.mustache +++ b/modules/openapi-generator/src/main/resources/php/api.mustache @@ -95,7 +95,7 @@ use {{invokerPackage}}\ObjectSerializer; * * @throws \{{invokerPackage}}\ApiException on non-2xx response * @throws \InvalidArgumentException - * @return {{#returnType}}{{{returnType}}}{{/returnType}}{{^returnType}}void{{/returnType}} + * @return {{#returnType}}{{#responses}}{{#dataType}}{{^-first}}|{{/-first}}{{/dataType}}{{{dataType}}}{{/responses}}{{/returnType}}{{^returnType}}void{{/returnType}} */ public function {{operationId}}({{#allParams}}${{paramName}}{{^required}} = {{#defaultValue}}{{{.}}}{{/defaultValue}}{{^defaultValue}}null{{/defaultValue}}{{/required}}{{#hasMore}}, {{/hasMore}}{{/allParams}}) { @@ -120,11 +120,10 @@ use {{invokerPackage}}\ObjectSerializer; * * @throws \{{invokerPackage}}\ApiException on non-2xx response * @throws \InvalidArgumentException - * @return array of {{#returnType}}{{{returnType}}}{{/returnType}}{{^returnType}}null{{/returnType}}, HTTP status code, HTTP response headers (array of strings) + * @return array of {{#returnType}}{{#responses}}{{#dataType}}{{^-first}}|{{/-first}}{{/dataType}}{{{dataType}}}{{/responses}}{{/returnType}}{{^returnType}}null{{/returnType}}, HTTP status code, HTTP response headers (array of strings) */ public function {{operationId}}WithHttpInfo({{#allParams}}${{paramName}}{{^required}} = {{#defaultValue}}{{{.}}}{{/defaultValue}}{{^defaultValue}}null{{/defaultValue}}{{/required}}{{#hasMore}}, {{/hasMore}}{{/allParams}}) { - $returnType = '{{returnType}}'; $request = $this->{{operationId}}Request({{#allParams}}${{paramName}}{{#hasMore}}, {{/hasMore}}{{/allParams}}); try { @@ -154,8 +153,36 @@ use {{invokerPackage}}\ObjectSerializer; $response->getBody() ); } - {{#returnType}} + {{#responses}} + {{#-first}} + + $responseBody = $response->getBody(); + switch($statusCode) { + {{/-first}} + {{#dataType}} + {{^isWildcard}}case {{code}}:{{/isWildcard}}{{#isWildcard}}default:{{/isWildcard}} + if ('{{dataType}}' === '\SplFileObject') { + $content = $responseBody; //stream goes to serializer + } else { + $content = $responseBody->getContents(); + if ('{{dataType}}' !== 'string') { + $content = json_decode($content); + } + } + + return [ + ObjectSerializer::deserialize($content, '{{dataType}}', []), + $response->getStatusCode(), + $response->getHeaders() + ]; + {{/dataType}} + {{#-last}} + } + {{/-last}} + {{/responses}} + + $returnType = '{{returnType}}'; $responseBody = $response->getBody(); if ($returnType === '\SplFileObject') { $content = $responseBody; //stream goes to serializer @@ -173,6 +200,7 @@ use {{invokerPackage}}\ObjectSerializer; ]; {{/returnType}} {{^returnType}} + return [null, $statusCode, $response->getHeaders()]; {{/returnType}} diff --git a/modules/openapi-generator/src/main/resources/python/api_client.mustache b/modules/openapi-generator/src/main/resources/python/api_client.mustache index b04422982835..61807efaec75 100644 --- a/modules/openapi-generator/src/main/resources/python/api_client.mustache +++ b/modules/openapi-generator/src/main/resources/python/api_client.mustache @@ -552,7 +552,7 @@ class ApiClient(object): return data def __deserialize_object(self, value): - """Return a original value. + """Return an original value. :return: object. """ diff --git a/modules/openapi-generator/src/main/resources/rust-server/README.mustache b/modules/openapi-generator/src/main/resources/rust-server/README.mustache index 8d0986e4c455..e65b06491c3c 100644 --- a/modules/openapi-generator/src/main/resources/rust-server/README.mustache +++ b/modules/openapi-generator/src/main/resources/rust-server/README.mustache @@ -15,7 +15,9 @@ To see how to make this your own, look here: [README]((https://openapi-generator.tech)) - API version: {{appVersion}} +{{^hideGenerationTimestamp}} - Build date: {{generatedDate}} +{{/hideGenerationTimestamp}} {{#infoUrl}} For more information, please visit [{{{infoUrl}}}]({{{infoUrl}}}) {{/infoUrl}} diff --git a/modules/openapi-generator/src/main/resources/rust-server/openapi.mustache b/modules/openapi-generator/src/main/resources/rust-server/openapi.mustache index 51560926bba1..34fbb53f3317 100644 --- a/modules/openapi-generator/src/main/resources/rust-server/openapi.mustache +++ b/modules/openapi-generator/src/main/resources/rust-server/openapi.mustache @@ -1 +1 @@ -{{{swagger-yaml}}} \ No newline at end of file +{{{openapi-yaml}}} diff --git a/modules/openapi-generator/src/main/resources/typescript-angular/api.service.mustache b/modules/openapi-generator/src/main/resources/typescript-angular/api.service.mustache index 106f7127e231..23b832cfabff 100644 --- a/modules/openapi-generator/src/main/resources/typescript-angular/api.service.mustache +++ b/modules/openapi-generator/src/main/resources/typescript-angular/api.service.mustache @@ -61,12 +61,13 @@ export class {{classname}} { public configuration = new Configuration(); constructor(protected {{#useHttpClient}}httpClient: HttpClient{{/useHttpClient}}{{^useHttpClient}}http: Http{{/useHttpClient}}, @Optional()@Inject(BASE_PATH) basePath: string, @Optional() configuration: Configuration) { - if (basePath) { - this.basePath = basePath; - } + if (configuration) { this.configuration = configuration; - this.basePath = basePath || configuration.basePath || this.basePath; + this.configuration.basePath = configuration.basePath || basePath || this.basePath; + + } else { + this.configuration.basePath = basePath || this.basePath; } } @@ -303,7 +304,7 @@ export class {{classname}} { {{/hasFormParams}} {{#useHttpClient}} - return this.httpClient.{{httpMethod}}{{^isResponseFile}}<{{#returnType}}{{{returnType}}}{{#isResponseTypeFile}}|undefined{{/isResponseTypeFile}}{{/returnType}}{{^returnType}}any{{/returnType}}>{{/isResponseFile}}(`${this.basePath}{{{path}}}`,{{#isBodyAllowed}} + return this.httpClient.{{httpMethod}}{{^isResponseFile}}<{{#returnType}}{{{returnType}}}{{#isResponseTypeFile}}|undefined{{/isResponseTypeFile}}{{/returnType}}{{^returnType}}any{{/returnType}}>{{/isResponseFile}}(`${this.configuration.basePath}{{{path}}}`,{{#isBodyAllowed}} {{#bodyParam}}{{paramName}}{{/bodyParam}}{{^bodyParam}}{{#hasFormParams}}convertFormParamsToString ? formParams.toString() : formParams{{/hasFormParams}}{{^hasFormParams}}null{{/hasFormParams}}{{/bodyParam}},{{/isBodyAllowed}} { {{#hasQueryParams}} @@ -342,7 +343,7 @@ export class {{classname}} { requestOptions = (Object).assign(requestOptions, extraHttpRequestParams); } - return this.http.request(`${this.basePath}{{{path}}}`, requestOptions); + return this.http.request(`${this.configuration.basePath}{{{path}}}`, requestOptions); {{/useHttpClient}} } diff --git a/modules/openapi-generator/src/main/resources/typescript-fetch/README.mustache b/modules/openapi-generator/src/main/resources/typescript-fetch/README.mustache index 0139231eaff2..4cf502cb67a4 100644 --- a/modules/openapi-generator/src/main/resources/typescript-fetch/README.mustache +++ b/modules/openapi-generator/src/main/resources/typescript-fetch/README.mustache @@ -19,7 +19,7 @@ It can be used in both TypeScript and JavaScript. In TypeScript, the definition ### Building -To build an compile the typescript sources to javascript use: +To build and compile the typescript sources to javascript use: ``` npm install npm run build diff --git a/modules/openapi-generator/src/main/resources/typescript-inversify/README.mustache b/modules/openapi-generator/src/main/resources/typescript-inversify/README.mustache index 4da4e854d960..2156b184ba43 100644 --- a/modules/openapi-generator/src/main/resources/typescript-inversify/README.mustache +++ b/modules/openapi-generator/src/main/resources/typescript-inversify/README.mustache @@ -2,7 +2,7 @@ ### Building -To build an compile the typescript sources to javascript use: +To build and compile the typescript sources to javascript use: ``` npm install npm run build diff --git a/modules/openapi-generator/src/main/resources/typescript-jquery/README.mustache b/modules/openapi-generator/src/main/resources/typescript-jquery/README.mustache index 31fe0fd5b001..ef14fdbbf334 100644 --- a/modules/openapi-generator/src/main/resources/typescript-jquery/README.mustache +++ b/modules/openapi-generator/src/main/resources/typescript-jquery/README.mustache @@ -19,7 +19,7 @@ It can be used in both TypeScript and JavaScript. In TypeScript, the definition ### Building -To build an compile the typescript sources to javascript use: +To build and compile the typescript sources to javascript use: ``` npm install npm run build diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/csharp/CSharpModelTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/csharp/CSharpModelTest.java index 9aba711b9f41..0232ec3e7b5d 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/csharp/CSharpModelTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/csharp/CSharpModelTest.java @@ -322,7 +322,7 @@ public void arrayModelTest() { Assert.assertEquals(Sets.intersection(cm.imports, Sets.newHashSet("Children")).size(), 1); } - @Test(description = "convert an map model") + @Test(description = "convert a map model") public void mapModelTest() { final Schema schema = new Schema() .description("a map model") diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/go/GoModelTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/go/GoModelTest.java index 5f67a83299a0..55e71df8aef6 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/go/GoModelTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/go/GoModelTest.java @@ -238,7 +238,7 @@ public void arrayModelTest() { Assert.assertEquals(cm.imports.size(), 1); } - @Test(description = "convert an map model") + @Test(description = "convert a map model") public void mapModelTest() { final Schema model = new Schema() .additionalProperties(new Schema().$ref("#/definitions/Children")) diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/JavaModelTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/JavaModelTest.java index 96bc926f1881..701d90fa0a74 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/JavaModelTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/JavaModelTest.java @@ -384,17 +384,17 @@ public void arrayModelTest() { Assert.assertEquals(Sets.intersection(cm.imports, Sets.newHashSet("ApiModel", "List", "ArrayList", "Children")).size(), 4); } - @Test(description = "convert an map model") + @Test(description = "convert a map model") public void mapModelTest() { final Schema schema = new Schema() - .description("an map model") + .description("a map model") .additionalProperties(new Schema().$ref("#/components/schemas/Children")); final DefaultCodegen codegen = new JavaClientCodegen(); final CodegenModel cm = codegen.fromModel("sample", schema, Collections.singletonMap("sample", schema)); Assert.assertEquals(cm.name, "sample"); Assert.assertEquals(cm.classname, "Sample"); - Assert.assertEquals(cm.description, "an map model"); + Assert.assertEquals(cm.description, "a map model"); Assert.assertEquals(cm.vars.size(), 0); Assert.assertEquals(cm.parent, "HashMap"); Assert.assertEquals(cm.imports.size(), 4); @@ -1007,7 +1007,7 @@ public void arraySchemaTestInRequestBody() { Assert.assertTrue(co.imports.contains("Pet")); } - @Test(description = "convert an array schema in a ApiResponse") + @Test(description = "convert an array schema in an ApiResponse") public void arraySchemaTestInOperationResponse() { final Schema testSchema = new ArraySchema() .items(new Schema<>().$ref("#/components/schemas/Pet")); @@ -1029,7 +1029,7 @@ public void arraySchemaTestInOperationResponse() { Assert.assertTrue(co.imports.contains("Pet")); } - @Test(description = "convert a array of array schema") + @Test(description = "convert an array of array schema") public void arrayOfArraySchemaTest() { final Schema testSchema = new ObjectSchema() .addProperties("pets", new ArraySchema() @@ -1087,7 +1087,7 @@ public void arrayOfArraySchemaTestInRequestBody() { Assert.assertTrue(co.imports.contains("List")); } - @Test(description = "convert a array schema in a ApiResponse") + @Test(description = "convert an array schema in an ApiResponse") public void arrayOfArraySchemaTestInOperationResponse() { final Schema testSchema = new ArraySchema() .items(new ArraySchema() diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/objc/ObjcModelTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/objc/ObjcModelTest.java index 4a4aac68d211..99279bd2f10a 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/objc/ObjcModelTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/objc/ObjcModelTest.java @@ -47,7 +47,7 @@ @SuppressWarnings("static-method") public class ObjcModelTest { - @Test(description = "convert a model with a advanced map property") + @Test(description = "convert a model with an advanced map property") public void advancedMapPropertyTest() { final Schema model = new Schema() .description("a sample model") @@ -282,7 +282,7 @@ public void arrayModelTest() { Assert.assertEquals(Sets.intersection(cm.imports, Sets.newHashSet("OAIChildren")).size(), 1); } - @Test(description = "convert an map model") + @Test(description = "convert a map model") public void mapModelTest() { final Schema model = new Schema() .description("a map model for testing ObjC generator") diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/php/PhpModelTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/php/PhpModelTest.java index 8e496e294a81..27f76bc236c1 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/php/PhpModelTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/php/PhpModelTest.java @@ -255,7 +255,7 @@ public void arrayModelTest() { // skip import test as import is not used by PHP codegen } - @Test(description = "convert an map model") + @Test(description = "convert a map model") public void mapModelTest() { final Schema model = new Schema() .description("a map model") diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/python/PythonTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/python/PythonTest.java index 105eded56fcf..655ed844b4d4 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/python/PythonTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/python/PythonTest.java @@ -272,7 +272,7 @@ public void arrayModelTest() { } // should not start with 'null'. need help from the community to investigate further - @Test(description = "convert an map model") + @Test(description = "convert a map model") public void mapModelTest() { final Schema model = new Schema() .description("a map model") diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/scalaakka/ScalaAkkaClientCodegenTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/scalaakka/ScalaAkkaClientCodegenTest.java index cd08c59cb5b7..acc12cc6d4ac 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/scalaakka/ScalaAkkaClientCodegenTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/scalaakka/ScalaAkkaClientCodegenTest.java @@ -251,7 +251,7 @@ public void arrayModelTest() { Assert.assertEquals(Sets.intersection(cm.imports, Sets.newHashSet("ListBuffer", "Children")).size(), 2); } - @Test(description = "convert an map model") + @Test(description = "convert a map model") public void mapModelTest() { final Schema model = new Schema() .description("a map model") diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/scalahttpclient/ScalaHttpClientModelTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/scalahttpclient/ScalaHttpClientModelTest.java index 092e800b07b2..db217b409ffe 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/scalahttpclient/ScalaHttpClientModelTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/scalahttpclient/ScalaHttpClientModelTest.java @@ -250,7 +250,7 @@ public void arrayModelTest() { Assert.assertEquals(Sets.intersection(cm.imports, Sets.newHashSet("ListBuffer", "Children")).size(), 2); } - @Test(description = "convert an map model") + @Test(description = "convert a map model") public void mapModelTest() { final Schema model = new Schema() .description("a map model") diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/utils/ModelUtilsTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/utils/ModelUtilsTest.java index 9927008ffd92..ac9648e0243e 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/utils/ModelUtilsTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/utils/ModelUtilsTest.java @@ -92,11 +92,11 @@ public void testSchemasUsedOnlyInFormParam() { final OpenAPI openAPI = new OpenAPIParser().readLocation("src/test/resources/3_0/unusedSchemas.yaml", null, new ParseOptions()).getOpenAPI(); List unusedSchemas = ModelUtils.getSchemasUsedOnlyInFormParam(openAPI); Assert.assertEquals(unusedSchemas.size(), 3); - //SomeObj2 is only used in a 'application/x-www-form-urlencoded' request + //SomeObj2 is only used in an 'application/x-www-form-urlencoded' request Assert.assertTrue(unusedSchemas.contains("SomeObj2"), "contains 'SomeObj2'"); //SomeObj3 is only used in a 'multipart/form-data' request Assert.assertTrue(unusedSchemas.contains("SomeObj3"), "contains 'SomeObj3'"); - //SomeObj7 is only used in a 'application/x-www-form-urlencoded' request (with referenced request body) + //SomeObj7 is only used in an 'application/x-www-form-urlencoded' request (with referenced request body) Assert.assertTrue(unusedSchemas.contains("SomeObj7"), "contains 'SomeObj7'"); } diff --git a/modules/openapi-generator/src/test/resources/2_0/rust-server/petstore-with-fake-endpoints-models-for-testing.yaml b/modules/openapi-generator/src/test/resources/2_0/rust-server/petstore-with-fake-endpoints-models-for-testing.yaml new file mode 100644 index 000000000000..cf930089b974 --- /dev/null +++ b/modules/openapi-generator/src/test/resources/2_0/rust-server/petstore-with-fake-endpoints-models-for-testing.yaml @@ -0,0 +1,1454 @@ +swagger: '2.0' +info: + description: "This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\" + version: 1.0.0 + title: OpenAPI Petstore + license: + name: Apache-2.0 + url: 'http://www.apache.org/licenses/LICENSE-2.0.html' +host: petstore.swagger.io:80 +basePath: /v2 +tags: + - name: pet + description: Everything about your Pets + - name: store + description: Access to Petstore orders + - name: user + description: Operations about user +schemes: + - http +paths: + /pet: + post: + tags: + - pet + summary: Add a new pet to the store + description: '' + operationId: addPet + consumes: + - application/json + - application/xml + produces: + - application/xml + - application/json + parameters: + - in: body + name: body + description: Pet object that needs to be added to the store + required: true + schema: + $ref: '#/definitions/Pet' + responses: + '405': + description: Invalid input + security: + - petstore_auth: + - 'write:pets' + - 'read:pets' + put: + tags: + - pet + summary: Update an existing pet + description: '' + operationId: updatePet + consumes: + - application/json + - application/xml + produces: + - application/xml + - application/json + parameters: + - in: body + name: body + description: Pet object that needs to be added to the store + required: true + schema: + $ref: '#/definitions/Pet' + responses: + '400': + description: Invalid ID supplied + '404': + description: Pet not found + '405': + description: Validation exception + security: + - petstore_auth: + - 'write:pets' + - 'read:pets' + /pet/findByStatus: + get: + tags: + - pet + summary: Finds Pets by status + description: Multiple status values can be provided with comma separated strings + operationId: findPetsByStatus + produces: + - application/xml + - application/json + parameters: + - name: status + in: query + description: Status values that need to be considered for filter + required: true + type: array + items: + type: string + enum: + - available + - pending + - sold + default: available + collectionFormat: csv + responses: + '200': + description: successful operation + schema: + type: array + items: + $ref: '#/definitions/Pet' + '400': + description: Invalid status value + security: + - petstore_auth: + - 'write:pets' + - 'read:pets' + /pet/findByTags: + get: + tags: + - pet + summary: Finds Pets by tags + description: 'Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing.' + operationId: findPetsByTags + produces: + - application/xml + - application/json + parameters: + - name: tags + in: query + description: Tags to filter by + required: true + type: array + items: + type: string + collectionFormat: csv + responses: + '200': + description: successful operation + schema: + type: array + items: + $ref: '#/definitions/Pet' + '400': + description: Invalid tag value + security: + - petstore_auth: + - 'write:pets' + - 'read:pets' + deprecated: true + '/pet/{petId}': + get: + tags: + - pet + summary: Find pet by ID + description: Returns a single pet + operationId: getPetById + produces: + - application/xml + - application/json + parameters: + - name: petId + in: path + description: ID of pet to return + required: true + type: integer + format: int64 + responses: + '200': + description: successful operation + schema: + $ref: '#/definitions/Pet' + '400': + description: Invalid ID supplied + '404': + description: Pet not found + security: + - api_key: [] + post: + tags: + - pet + summary: Updates a pet in the store with form data + description: '' + operationId: updatePetWithForm + consumes: + - application/x-www-form-urlencoded + produces: + - application/xml + - application/json + parameters: + - name: petId + in: path + description: ID of pet that needs to be updated + required: true + type: integer + format: int64 + - name: name + in: formData + description: Updated name of the pet + required: false + type: string + - name: status + in: formData + description: Updated status of the pet + required: false + type: string + responses: + '405': + description: Invalid input + security: + - petstore_auth: + - 'write:pets' + - 'read:pets' + delete: + tags: + - pet + summary: Deletes a pet + description: '' + operationId: deletePet + produces: + - application/xml + - application/json + parameters: + - name: api_key + in: header + required: false + type: string + - name: petId + in: path + description: Pet id to delete + required: true + type: integer + format: int64 + responses: + '400': + description: Invalid pet value + security: + - petstore_auth: + - 'write:pets' + - 'read:pets' + '/pet/{petId}/uploadImage': + post: + tags: + - pet + summary: uploads an image + description: '' + operationId: uploadFile + consumes: + - multipart/form-data + produces: + - application/json + parameters: + - name: petId + in: path + description: ID of pet to update + required: true + type: integer + format: int64 + - name: additionalMetadata + in: formData + description: Additional data to pass to server + required: false + type: string + - name: file + in: formData + description: file to upload + required: false + type: file + responses: + '200': + description: successful operation + schema: + $ref: '#/definitions/ApiResponse' + security: + - petstore_auth: + - 'write:pets' + - 'read:pets' + /store/inventory: + get: + tags: + - store + summary: Returns pet inventories by status + description: Returns a map of status codes to quantities + operationId: getInventory + produces: + - application/json + parameters: [] + responses: + '200': + description: successful operation + schema: + type: object + additionalProperties: + type: integer + format: int32 + security: + - api_key: [] + /store/order: + post: + tags: + - store + summary: Place an order for a pet + description: '' + operationId: placeOrder + produces: + - application/xml + - application/json + parameters: + - in: body + name: body + description: order placed for purchasing the pet + required: true + schema: + $ref: '#/definitions/Order' + responses: + '200': + description: successful operation + schema: + $ref: '#/definitions/Order' + '400': + description: Invalid Order + '/store/order/{order_id}': + get: + tags: + - store + summary: Find purchase order by ID + description: 'For valid response try integer IDs with value <= 5 or > 10. Other values will generated exceptions' + operationId: getOrderById + produces: + - application/xml + - application/json + parameters: + - name: order_id + in: path + description: ID of pet that needs to be fetched + required: true + type: integer + maximum: 5 + minimum: 1 + format: int64 + responses: + '200': + description: successful operation + schema: + $ref: '#/definitions/Order' + '400': + description: Invalid ID supplied + '404': + description: Order not found + delete: + tags: + - store + summary: Delete purchase order by ID + description: For valid response try integer IDs with value < 1000. Anything above 1000 or nonintegers will generate API errors + operationId: deleteOrder + produces: + - application/xml + - application/json + parameters: + - name: order_id + in: path + description: ID of the order that needs to be deleted + required: true + type: string + responses: + '400': + description: Invalid ID supplied + '404': + description: Order not found + /user: + post: + tags: + - user + summary: Create user + description: This can only be done by the logged in user. + operationId: createUser + produces: + - application/xml + - application/json + parameters: + - in: body + name: body + description: Created user object + required: true + schema: + $ref: '#/definitions/User' + responses: + default: + description: successful operation + /user/createWithArray: + post: + tags: + - user + summary: Creates list of users with given input array + description: '' + operationId: createUsersWithArrayInput + produces: + - application/xml + - application/json + parameters: + - in: body + name: body + description: List of user object + required: true + schema: + type: array + items: + $ref: '#/definitions/User' + responses: + default: + description: successful operation + /user/createWithList: + post: + tags: + - user + summary: Creates list of users with given input array + description: '' + operationId: createUsersWithListInput + produces: + - application/xml + - application/json + parameters: + - in: body + name: body + description: List of user object + required: true + schema: + type: array + items: + $ref: '#/definitions/User' + responses: + default: + description: successful operation + /user/login: + get: + tags: + - user + summary: Logs user into the system + description: '' + operationId: loginUser + produces: + - application/xml + - application/json + parameters: + - name: username + in: query + description: The user name for login + required: true + type: string + - name: password + in: query + description: The password for login in clear text + required: true + type: string + responses: + # '200': + # description: successful operation + # schema: + # type: string + # headers: + # X-Rate-Limit: + # type: integer + # format: int32 + # description: calls per hour allowed by the user + # X-Expires-After: + # type: string + # format: date-time + # description: date in UTC when token expires + '400': + description: Invalid username/password supplied + /user/logout: + get: + tags: + - user + summary: Logs out current logged in user session + description: '' + operationId: logoutUser + produces: + - application/xml + - application/json + parameters: [] + responses: + default: + description: successful operation + '/user/{username}': + get: + tags: + - user + summary: Get user by user name + description: '' + operationId: getUserByName + produces: + - application/xml + - application/json + parameters: + - name: username + in: path + description: 'The name that needs to be fetched. Use user1 for testing.' + required: true + type: string + responses: + '200': + description: successful operation + schema: + $ref: '#/definitions/User' + '400': + description: Invalid username supplied + '404': + description: User not found + put: + tags: + - user + summary: Updated user + description: This can only be done by the logged in user. + operationId: updateUser + produces: + - application/xml + - application/json + parameters: + - name: username + in: path + description: name that need to be deleted + required: true + type: string + - in: body + name: body + description: Updated user object + required: true + schema: + $ref: '#/definitions/User' + responses: + '400': + description: Invalid user supplied + '404': + description: User not found + delete: + tags: + - user + summary: Delete user + description: This can only be done by the logged in user. + operationId: deleteUser + produces: + - application/xml + - application/json + parameters: + - name: username + in: path + description: The name that needs to be deleted + required: true + type: string + responses: + '400': + description: Invalid username supplied + '404': + description: User not found + + /fake_classname_test: + patch: + tags: + - "fake_classname_tags 123#$%^" + summary: To test class name in snake case + description: To test class name in snake case + operationId: testClassname + consumes: + - application/json + produces: + - application/json + parameters: + - in: body + name: body + description: client model + required: true + schema: + $ref: '#/definitions/Client' + responses: + '200': + description: successful operation + schema: + $ref: '#/definitions/Client' + security: + - api_key_query: [] + /fake: + patch: + tags: + - fake + summary: To test "client" model + description: To test "client" model + operationId: testClientModel + consumes: + - application/json + produces: + - application/json + parameters: + - in: body + name: body + description: client model + required: true + schema: + $ref: '#/definitions/Client' + responses: + '200': + description: successful operation + schema: + $ref: '#/definitions/Client' + get: + tags: + - fake + summary: To test enum parameters + description: To test enum parameters + operationId: testEnumParameters + consumes: + - "application/x-www-form-urlencoded" + parameters: + # - name: enum_form_string_array + # type: array + # items: + # type: string + # default: '$' + # enum: + # - '>' + # - '$' + # in: formData + # description: Form parameter enum test (string array) + # - name: enum_form_string + # type: string + # default: '-efg' + # enum: + # - _abc + # - '-efg' + # - (xyz) + # in: formData + # description: Form parameter enum test (string) + - name: enum_header_string_array + type: array + items: + type: string + default: '$' + enum: + - '>' + - '$' + in: header + description: Header parameter enum test (string array) + - name: enum_header_string + type: string + default: '-efg' + enum: + - _abc + - '-efg' + - (xyz) + in: header + description: Header parameter enum test (string) + - name: enum_query_string_array + type: array + items: + type: string + default: '$' + enum: + - '>' + - '$' + in: query + description: Query parameter enum test (string array) + - name: enum_query_string + type: string + default: '-efg' + enum: + - _abc + - '-efg' + - (xyz) + in: query + description: Query parameter enum test (string) + - name: enum_query_integer + type: integer + format: int32 + enum: + - 1 + - -2 + in: query + description: Query parameter enum test (double) + - name: enum_query_double + type: number + format: double + enum: + - 1.1 + - -1.2 + in: query + description: Query parameter enum test (double) + responses: + '400': + description: Invalid request + '404': + description: Not found + post: + tags: + - fake + summary: | + Fake endpoint for testing various parameters + 假端點 + 偽のエンドポイント + 가짜 엔드 포인트 + description: | + Fake endpoint for testing various parameters + 假端點 + 偽のエンドポイント + 가짜 엔드 포인트 + operationId: testEndpointParameters + consumes: + - application/x-www-form-urlencoded + parameters: + - name: integer + type: integer + maximum: 100 + minimum: 10 + in: formData + description: None + - name: int32 + type: integer + format: int32 + maximum: 200 + minimum: 20 + in: formData + description: None + - name: int64 + type: integer + format: int64 + in: formData + description: None + - name: number + type: number + maximum: 543.2 + minimum: 32.1 + in: formData + description: None + required: true + - name: float + type: number + format: float + maximum: 987.6 + in: formData + description: None + - name: double + type: number + in: formData + format: double + maximum: 123.4 + minimum: 67.8 + required: true + description: None + - name: string + type: string + pattern: /[a-z]/i + in: formData + description: None + - name: pattern_without_delimiter + type: string + pattern: "^[A-Z].*" + in: formData + description: None + required: true + # - name: byte + # type: string + # format: byte + # in: formData + # description: None + # required: true + - name: binary + type: string + format: binary + in: formData + description: None + - name: date + type: string + format: date + in: formData + description: None + - name: dateTime + type: string + format: date-time + in: formData + description: None + - name: password + type: string + format: password + maxLength: 64 + minLength: 10 + in: formData + description: None + - name: callback + type: string + in: formData + description: None + responses: + '400': + description: Invalid username supplied + '404': + description: User not found + security: + - http_basic_test: [] + /fake/outer/number: + post: + tags: + - fake + description: Test serialization of outer number types + operationId: fakeOuterNumberSerialize + parameters: + - name: body + in: body + description: Input number as post body + schema: + $ref: '#/definitions/OuterNumber' + responses: + '200': + description: Output number + schema: + $ref: '#/definitions/OuterNumber' + /fake/outer/string: + post: + tags: + - fake + description: Test serialization of outer string types + operationId: fakeOuterStringSerialize + parameters: + - name: body + in: body + description: Input string as post body + schema: + $ref: '#/definitions/OuterString' + responses: + '200': + description: Output string + schema: + $ref: '#/definitions/OuterString' + /fake/outer/boolean: + post: + tags: + - fake + description: Test serialization of outer boolean types + operationId: fakeOuterBooleanSerialize + parameters: + - name: body + in: body + description: Input boolean as post body + schema: + $ref: '#/definitions/OuterBoolean' + responses: + '200': + description: Output boolean + schema: + $ref: '#/definitions/OuterBoolean' + /fake/outer/composite: + post: + tags: + - fake + description: Test serialization of object with outer number type + operationId: fakeOuterCompositeSerialize + parameters: + - name: body + in: body + description: Input composite as post body + schema: + $ref: '#/definitions/OuterComposite' + responses: + '200': + description: Output composite + schema: + $ref: '#/definitions/OuterComposite' + /fake/jsonFormData: + get: + tags: + - fake + summary: test json serialization of form data + description: '' + operationId: testJsonFormData + consumes: + - application/x-www-form-urlencoded + parameters: + - name: param + in: formData + description: field1 + required: true + type: string + - name: param2 + in: formData + description: field2 + required: true + type: string + responses: + '200': + description: successful operation + /fake/inline-additionalProperties: + post: + tags: + - fake + summary: test inline additionalProperties + description: '' + operationId: testInlineAdditionalProperties + consumes: + - application/json + parameters: + - name: param + in: body + description: request body + required: true + schema: + type: object + additionalProperties: + type: string + responses: + '200': + description: successful operation + /fake/body-with-query-params: + put: + tags: + - fake + operationId: testBodyWithQueryParams + parameters: + - name: body + in: body + required: true + schema: + $ref: '#/definitions/User' + - name: query + in: query + required: true + type: string + consumes: + - application/json + responses: + '200': + description: Success + /another-fake/dummy: + patch: + tags: + - "$another-fake?" + summary: To test special tags + description: To test special tags + operationId: test_special_tags + consumes: + - application/json + produces: + - application/json + parameters: + - in: body + name: body + description: client model + required: true + schema: + $ref: '#/definitions/Client' + responses: + '200': + description: successful operation + schema: + $ref: '#/definitions/Client' +securityDefinitions: + petstore_auth: + type: oauth2 + authorizationUrl: 'http://petstore.swagger.io/api/oauth/dialog' + flow: implicit + scopes: + 'write:pets': modify pets in your account + 'read:pets': read your pets + api_key: + type: apiKey + name: api_key + in: header + api_key_query: + type: apiKey + name: api_key_query + in: query + http_basic_test: + type: basic +definitions: + Order: + type: object + properties: + id: + type: integer + format: int64 + petId: + type: integer + format: int64 + quantity: + type: integer + format: int32 + shipDate: + type: string + format: date-time + status: + type: string + description: Order Status + enum: + - placed + - approved + - delivered + complete: + type: boolean + default: false + xml: + name: Order + Category: + type: object + properties: + id: + type: integer + format: int64 + name: + type: string + xml: + name: Category + User: + type: object + properties: + id: + type: integer + format: int64 + x-is-unique: true + username: + type: string + firstName: + type: string + lastName: + type: string + email: + type: string + password: + type: string + phone: + type: string + userStatus: + type: integer + format: int32 + description: User Status + xml: + name: User + Tag: + type: object + properties: + id: + type: integer + format: int64 + name: + type: string + xml: + name: Tag + Pet: + type: object + required: + - name + - photoUrls + properties: + id: + type: integer + format: int64 + x-is-unique: true + category: + $ref: '#/definitions/Category' + name: + type: string + example: doggie + photoUrls: + type: array + xml: + name: photoUrl + wrapped: true + items: + type: string + tags: + type: array + xml: + name: tag + wrapped: true + items: + $ref: '#/definitions/Tag' + status: + type: string + description: pet status in the store + enum: + - available + - pending + - sold + xml: + name: Pet + ApiResponse: + type: object + properties: + code: + type: integer + format: int32 + type: + type: string + message: + type: string + '$special[model.name]': + properties: + '$special[property.name]': + type: integer + format: int64 + xml: + name: '$special[model.name]' + Return: + description: Model for testing reserved words + properties: + return: + type: integer + format: int32 + xml: + name: Return + Name: + description: Model for testing model name same as property name + required: + - name + properties: + name: + type: integer + format: int32 + snake_case: + readOnly: true + type: integer + format: int32 + property: + type: string + 123Number: + type: integer + readOnly: true + xml: + name: Name + 200_response: + description: Model for testing model name starting with number + properties: + name: + type: integer + format: int32 + class: + type: string + xml: + name: Name + ClassModel: + description: Model for testing model with "_class" property + properties: + _class: + type: string + Dog: + allOf: + - $ref: '#/definitions/Animal' + - type: object + properties: + breed: + type: string + Cat: + allOf: + - $ref: '#/definitions/Animal' + - type: object + properties: + declawed: + type: boolean + Animal: + type: object + discriminator: className + required: + - className + properties: + className: + type: string + color: + type: string + default: 'red' + AnimalFarm: + type: array + items: + $ref: '#/definitions/Animal' + format_test: + type: object + required: + - number + - byte + - date + - password + properties: + integer: + type: integer + maximum: 100 + minimum: 10 + int32: + type: integer + format: int32 + maximum: 200 + minimum: 20 + int64: + type: integer + format: int64 + number: + maximum: 543.2 + minimum: 32.1 + type: number + float: + type: number + format: float + maximum: 987.6 + minimum: 54.3 + double: + type: number + format: double + maximum: 123.4 + minimum: 67.8 + string: + type: string + pattern: /[a-z]/i + byte: + type: string + format: byte + # binary: + # type: string + # format: binary + date: + type: string + format: date + dateTime: + type: string + format: date-time + uuid: + type: string + format: uuid + password: + type: string + format: password + maxLength: 64 + minLength: 10 + EnumClass: + type: string + default: '-efg' + enum: + - _abc + - '-efg' + - (xyz) + Enum_Test: + type: object + required: + - enum_string_required + properties: + enum_string: + type: string + enum: + - UPPER + - lower + - '' + enum_string_required: + type: string + enum: + - UPPER + - lower + - '' + enum_integer: + type: integer + format: int32 + enum: + - 1 + - -1 + enum_number: + type: number + format: double + enum: + - 1.1 + - -1.2 + outerEnum: + $ref: '#/definitions/OuterEnum' + AdditionalPropertiesClass: + type: object + properties: + map_property: + type: object + additionalProperties: + type: string + map_of_map_property: + type: object + additionalProperties: + type: object + additionalProperties: + type: string + MixedPropertiesAndAdditionalPropertiesClass: + type: object + properties: + uuid: + type: string + format: uuid + dateTime: + type: string + format: date-time + map: + type: object + additionalProperties: + $ref: '#/definitions/Animal' + List: + type: object + properties: + 123-list: + type: string + Client: + type: object + properties: + client: + type: string + ReadOnlyFirst: + type: object + properties: + bar: + type: string + readOnly: true + baz: + type: string + hasOnlyReadOnly: + type: object + properties: + bar: + type: string + readOnly: true + foo: + type: string + readOnly: true + Capitalization: + type: object + properties: + smallCamel: + type: string + CapitalCamel: + type: string + small_Snake: + type: string + Capital_Snake: + type: string + SCA_ETH_Flow_Points: + type: string + ATT_NAME: + description: > + Name of the pet + type: string + MapTest: + type: object + properties: + map_map_of_string: + type: object + additionalProperties: + type: object + additionalProperties: + type: string + # comment out the following (map of map of enum) as many language not yet support this + #map_map_of_enum: + # type: object + # additionalProperties: + # type: object + # additionalProperties: + # type: string + # enum: + # - UPPER + # - lower + map_of_enum_string: + type: object + additionalProperties: + type: string + enum: + - UPPER + - lower + ArrayTest: + type: object + properties: + array_of_string: + type: array + items: + type: string + array_array_of_integer: + type: array + items: + type: array + items: + type: integer + format: int64 + array_array_of_model: + type: array + items: + type: array + items: + $ref: '#/definitions/ReadOnlyFirst' + # commented out the below test case for array of enum for the time being + # as not all language can handle it + #array_of_enum: + # type: array + # items: + # type: string + # enum: + # - UPPER + # - lower + NumberOnly: + type: object + properties: + JustNumber: + type: number + ArrayOfNumberOnly: + type: object + properties: + ArrayNumber: + type: array + items: + type: number + ArrayOfArrayOfNumberOnly: + type: object + properties: + ArrayArrayNumber: + type: array + items: + type: array + items: + type: number + EnumArrays: + type: object + properties: + just_symbol: + type: string + enum: + - ">=" + - "$" + array_enum: + type: array + items: + type: string + enum: + - fish + - crab + # comment out the following as 2d array of enum is not supported at the moment + #array_array_enum: + # type: array + # items: + # type: array + # items: + # type: string + # enum: + # - Cat + # - Dog + OuterEnum: + type: "string" + enum: + - "placed" + - "approved" + - "delivered" + OuterComposite: + type: object + properties: + my_number: + $ref: '#/definitions/OuterNumber' + my_string: + $ref: '#/definitions/OuterString' + my_boolean: + $ref: '#/definitions/OuterBoolean' + OuterNumber: + type: number + OuterString: + type: string + OuterBoolean: + type: boolean + x-codegen-body-parameter-name: boolean_post_body diff --git a/modules/openapi-generator/src/test/resources/2_0/swift4Test.json b/modules/openapi-generator/src/test/resources/2_0/swift4Test.json index c2f217bf84e1..f5e60112f051 100644 --- a/modules/openapi-generator/src/test/resources/2_0/swift4Test.json +++ b/modules/openapi-generator/src/test/resources/2_0/swift4Test.json @@ -377,7 +377,7 @@ }, "SampleBase": { "type": "object", - "description": "This is an base class object from which other classes will derive.", + "description": "This is a base class object from which other classes will derive.", "properties": { "baseClassStringProp": { "type": "string" @@ -389,7 +389,7 @@ } }, "SampleSubClass": { - "description": "This is an subclass defived from the SampleBase class.", + "description": "This is a subclass defived from the SampleBase class.", "allOf": [ { "$ref": "#/definitions/SampleBase" @@ -423,7 +423,7 @@ } }, "PersonCard": { - "description": "This is an card object for a Person derived from BaseCard.", + "description": "This is a card object for a Person derived from BaseCard.", "x-unit-tests": ["B45"], "allOf": [ { @@ -443,7 +443,7 @@ ] }, "PlaceCard": { - "description": "This is an card object for a Person derived from BaseCard.", + "description": "This is a card object for a Person derived from BaseCard.", "x-unit-tests": ["B45"], "allOf": [ { diff --git a/modules/openapi-generator/src/test/resources/integrationtests/typescript/additional-properties-expected/README.md b/modules/openapi-generator/src/test/resources/integrationtests/typescript/additional-properties-expected/README.md index 654efaf000bf..3ae010d2a430 100644 --- a/modules/openapi-generator/src/test/resources/integrationtests/typescript/additional-properties-expected/README.md +++ b/modules/openapi-generator/src/test/resources/integrationtests/typescript/additional-properties-expected/README.md @@ -2,7 +2,7 @@ ### Building -To build an compile the typescript sources to javascript use: +To build and compile the typescript sources to javascript use: ``` npm install npm run build @@ -41,4 +41,4 @@ import { BASE_PATH } from './path-to-swagger-gen-service/index'; bootstrap(AppComponent, [ { provide: BASE_PATH, useValue: 'https://your-web-service.com' }, ]); -``` \ No newline at end of file +``` diff --git a/modules/openapi-generator/src/test/resources/integrationtests/typescript/array-and-object-expected/README.md b/modules/openapi-generator/src/test/resources/integrationtests/typescript/array-and-object-expected/README.md index fbcbf6e6dcd2..0dead26a31e0 100644 --- a/modules/openapi-generator/src/test/resources/integrationtests/typescript/array-and-object-expected/README.md +++ b/modules/openapi-generator/src/test/resources/integrationtests/typescript/array-and-object-expected/README.md @@ -2,7 +2,7 @@ ### Building -To build an compile the typescript sources to javascript use: +To build and compile the typescript sources to javascript use: ``` npm install npm run build @@ -41,4 +41,4 @@ import { BASE_PATH } from './path-to-swagger-gen-service/index'; bootstrap(AppComponent, [ { provide: BASE_PATH, useValue: 'https://your-web-service.com' }, ]); -``` \ No newline at end of file +``` diff --git a/modules/openapi-generator/src/test/resources/integrationtests/typescript/petstore-expected/README.md b/modules/openapi-generator/src/test/resources/integrationtests/typescript/petstore-expected/README.md index 3f1d74e23e8f..25b7aaaf39a5 100644 --- a/modules/openapi-generator/src/test/resources/integrationtests/typescript/petstore-expected/README.md +++ b/modules/openapi-generator/src/test/resources/integrationtests/typescript/petstore-expected/README.md @@ -2,7 +2,7 @@ ### Building -To build an compile the typescript sources to javascript use: +To build and compile the typescript sources to javascript use: ``` npm install npm run build @@ -41,4 +41,4 @@ import { BASE_PATH } from './path-to-swagger-gen-service/index'; bootstrap(AppComponent, [ { provide: BASE_PATH, useValue: 'https://your-web-service.com' }, ]); -``` \ No newline at end of file +``` diff --git a/pom.xml b/pom.xml index 877428f18c8b..d5709960606e 100644 --- a/pom.xml +++ b/pom.xml @@ -9,7 +9,7 @@ openapi-generator-project pom openapi-generator-project - 3.0.2-SNAPSHOT + 3.0.3-SNAPSHOT https://github.com/openapitools/openapi-generator scm:git:git@github.com:openapitools/openapi-generator.git @@ -571,6 +571,42 @@ samples/client/petstore/javascript + + javascript-client-es6 + + + env + javascript + + + + samples/client/petstore/javascript-es6 + + + + javascript-client-promise + + + env + javascript + + + + samples/client/petstore/javascript-promise + + + + javascript-client-promise-es6 + + + env + javascript + + + + samples/client/petstore/javascript-promise-es6 + + scala-client @@ -904,6 +940,9 @@ samples/client/petstore/scala samples/client/petstore/akka-scala samples/client/petstore/javascript + samples/client/petstore/javascript-es6 + samples/client/petstore/javascript-promise + samples/client/petstore/javascript-promise-es6 samples/client/petstore/python samples/client/petstore/python-tornado samples/client/petstore/python-asyncio @@ -919,8 +958,31 @@ samples/client/petstore/typescript-angular-v4/npm samples/client/petstore/typescript-angular-v4.3/npm + samples/client/petstore/typescript-angular-v6-provided-in-root samples/client/petstore/ruby + samples/server/petstore/rust-server + + + + samples.shippable + + + env + samples.shippable + + + + + samples/client/petstore/elixir + samples/client/petstore/erlang-client + + samples/server/petstore/erlang-server + samples/server/petstore/jaxrs/jersey2 + samples/server/petstore/jaxrs/jersey2-useTags + samples/server/petstore/spring-mvc + samples/server/petstore/spring-mvc-j8-async + samples/server/petstore/spring-mvc-j8-localdatetime diff --git a/samples/client/petstore-security-test/php/OpenAPIClient-php/lib/Api/FakeApi.php b/samples/client/petstore-security-test/php/OpenAPIClient-php/lib/Api/FakeApi.php index 3043c1e09782..e7c29a0121a5 100644 --- a/samples/client/petstore-security-test/php/OpenAPIClient-php/lib/Api/FakeApi.php +++ b/samples/client/petstore-security-test/php/OpenAPIClient-php/lib/Api/FakeApi.php @@ -116,7 +116,6 @@ public function testCodeInjectEndRnNR($unknown_base_type = null) */ public function testCodeInjectEndRnNRWithHttpInfo($unknown_base_type = null) { - $returnType = ''; $request = $this->testCodeInjectEndRnNRRequest($unknown_base_type); try { diff --git a/samples/client/petstore/go/store_api_test.go b/samples/client/petstore/go/store_api_test.go new file mode 100644 index 000000000000..0a0a70291e92 --- /dev/null +++ b/samples/client/petstore/go/store_api_test.go @@ -0,0 +1,29 @@ +package main + +import ( + "testing" + "time" + + sw "./go-petstore" + "golang.org/x/net/context" +) + +func TestPlaceOrder(t *testing.T) { + newOrder := sw.Order{ + Id: 0, + PetId: 0, + Quantity: 0, + ShipDate: time.Now().UTC(), + Status: "placed", + Complete: false} + + _, r, err := client.StoreApi.PlaceOrder(context.Background(), newOrder) + + if err != nil { + t.Errorf("Error while placing order") + t.Log(err) + } + if r.StatusCode != 200 { + t.Log(r) + } +} diff --git a/samples/client/petstore/java/feign/.openapi-generator/VERSION b/samples/client/petstore/java/feign/.openapi-generator/VERSION index 1c00c5181548..82602aa4190d 100644 --- a/samples/client/petstore/java/feign/.openapi-generator/VERSION +++ b/samples/client/petstore/java/feign/.openapi-generator/VERSION @@ -1 +1 @@ -3.0.2-SNAPSHOT \ No newline at end of file +3.0.3-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/java/feign/src/test/java/org/openapitools/client/StringUtilTest.java b/samples/client/petstore/java/feign/src/test/java/org/openapitools/client/StringUtilTest.java new file mode 100644 index 000000000000..aa7c81759ec4 --- /dev/null +++ b/samples/client/petstore/java/feign/src/test/java/org/openapitools/client/StringUtilTest.java @@ -0,0 +1,33 @@ +package org.openapitools.client; + +import org.junit.*; +import static org.junit.Assert.*; + + +public class StringUtilTest { + @Test + public void testContainsIgnoreCase() { + assertTrue(StringUtil.containsIgnoreCase(new String[]{"abc"}, "abc")); + assertTrue(StringUtil.containsIgnoreCase(new String[]{"abc"}, "ABC")); + assertTrue(StringUtil.containsIgnoreCase(new String[]{"ABC"}, "abc")); + assertTrue(StringUtil.containsIgnoreCase(new String[]{null, "abc"}, "ABC")); + assertTrue(StringUtil.containsIgnoreCase(new String[]{null, "abc"}, null)); + + assertFalse(StringUtil.containsIgnoreCase(new String[]{"abc"}, "def")); + assertFalse(StringUtil.containsIgnoreCase(new String[]{}, "ABC")); + assertFalse(StringUtil.containsIgnoreCase(new String[]{}, null)); + } + + @Test + public void testJoin() { + String[] array = {"aa", "bb", "cc"}; + assertEquals("aa,bb,cc", StringUtil.join(array, ",")); + assertEquals("aa, bb, cc", StringUtil.join(array, ", ")); + assertEquals("aabbcc", StringUtil.join(array, "")); + assertEquals("aa bb cc", StringUtil.join(array, " ")); + assertEquals("aa\nbb\ncc", StringUtil.join(array, "\n")); + + assertEquals("", StringUtil.join(new String[]{}, ",")); + assertEquals("abc", StringUtil.join(new String[]{"abc"}, ",")); + } +} diff --git a/samples/client/petstore/java/google-api-client/.openapi-generator/VERSION b/samples/client/petstore/java/google-api-client/.openapi-generator/VERSION index 1c00c5181548..82602aa4190d 100644 --- a/samples/client/petstore/java/google-api-client/.openapi-generator/VERSION +++ b/samples/client/petstore/java/google-api-client/.openapi-generator/VERSION @@ -1 +1 @@ -3.0.2-SNAPSHOT \ No newline at end of file +3.0.3-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/java/jersey1/.openapi-generator/VERSION b/samples/client/petstore/java/jersey1/.openapi-generator/VERSION index 1c00c5181548..82602aa4190d 100644 --- a/samples/client/petstore/java/jersey1/.openapi-generator/VERSION +++ b/samples/client/petstore/java/jersey1/.openapi-generator/VERSION @@ -1 +1 @@ -3.0.2-SNAPSHOT \ No newline at end of file +3.0.3-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/java/jersey1/src/test/java/org/openapitools/client/ApiClientTest.java b/samples/client/petstore/java/jersey1/src/test/java/org/openapitools/client/ApiClientTest.java new file mode 100644 index 000000000000..a890ead935f8 --- /dev/null +++ b/samples/client/petstore/java/jersey1/src/test/java/org/openapitools/client/ApiClientTest.java @@ -0,0 +1,292 @@ +package org.openapitools.client; + +import org.openapitools.client.auth.*; + +import java.text.DateFormat; +import java.text.SimpleDateFormat; +import java.util.*; + +import org.junit.*; +import static org.junit.Assert.*; + + +public class ApiClientTest { + ApiClient apiClient = null; + + @Before + public void setup() { + apiClient = new ApiClient(); + } + + @Test + public void testParseAndFormatDate() { + // default date format + String dateStr = "2015-11-07T03:49:09.356Z"; + assertEquals(dateStr, apiClient.formatDate(apiClient.parseDate("2015-11-07T03:49:09.356+00:00"))); + assertEquals(dateStr, apiClient.formatDate(apiClient.parseDate("2015-11-07T03:49:09.356Z"))); + assertEquals(dateStr, apiClient.formatDate(apiClient.parseDate("2015-11-07T05:49:09.356+02:00"))); + assertEquals(dateStr, apiClient.formatDate(apiClient.parseDate("2015-11-07T02:49:09.356-01:00"))); + + // custom date format: without milli-seconds, custom time zone + DateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssXXX"); + format.setTimeZone(TimeZone.getTimeZone("GMT+10")); + apiClient.setDateFormat(format); + dateStr = "2015-11-07T13:49:09+10:00"; + assertEquals(dateStr, apiClient.formatDate(apiClient.parseDate("2015-11-07T03:49:09+00:00"))); + assertEquals(dateStr, apiClient.formatDate(apiClient.parseDate("2015-11-07T03:49:09Z"))); + assertEquals(dateStr, apiClient.formatDate(apiClient.parseDate("2015-11-07T00:49:09-03:00"))); + assertEquals(dateStr, apiClient.formatDate(apiClient.parseDate("2015-11-07T13:49:09+10:00"))); + } + + @Test + public void testIsJsonMime() { + assertFalse(apiClient.isJsonMime(null)); + assertFalse(apiClient.isJsonMime("")); + assertFalse(apiClient.isJsonMime("text/plain")); + assertFalse(apiClient.isJsonMime("application/xml")); + assertFalse(apiClient.isJsonMime("application/jsonp")); + assertFalse(apiClient.isJsonMime("example/json")); + assertFalse(apiClient.isJsonMime("example/foo+bar+jsonx")); + assertFalse(apiClient.isJsonMime("example/foo+bar+xjson")); + + assertTrue(apiClient.isJsonMime("application/json")); + assertTrue(apiClient.isJsonMime("application/json; charset=UTF8")); + assertTrue(apiClient.isJsonMime("APPLICATION/JSON")); + + assertTrue(apiClient.isJsonMime("application/problem+json")); + assertTrue(apiClient.isJsonMime("APPLICATION/PROBLEM+JSON")); + assertTrue(apiClient.isJsonMime("application/json\t")); + assertTrue(apiClient.isJsonMime("example/foo+bar+json")); + assertTrue(apiClient.isJsonMime("example/foo+json;x;y")); + assertTrue(apiClient.isJsonMime("example/foo+json\t;")); + assertTrue(apiClient.isJsonMime("Example/fOO+JSON")); + } + + @Test + public void testSelectHeaderAccept() { + String[] accepts = {"application/json", "application/xml"}; + assertEquals("application/json", apiClient.selectHeaderAccept(accepts)); + + accepts = new String[]{"APPLICATION/XML", "APPLICATION/JSON"}; + assertEquals("APPLICATION/JSON", apiClient.selectHeaderAccept(accepts)); + + accepts = new String[]{"application/xml", "application/json; charset=UTF8"}; + assertEquals("application/json; charset=UTF8", apiClient.selectHeaderAccept(accepts)); + + accepts = new String[]{"text/plain", "application/xml"}; + assertEquals("text/plain,application/xml", apiClient.selectHeaderAccept(accepts)); + + accepts = new String[]{}; + assertNull(apiClient.selectHeaderAccept(accepts)); + } + + @Test + public void testSelectHeaderContentType() { + String[] contentTypes = {"application/json", "application/xml"}; + assertEquals("application/json", apiClient.selectHeaderContentType(contentTypes)); + + contentTypes = new String[]{"APPLICATION/JSON", "APPLICATION/XML"}; + assertEquals("APPLICATION/JSON", apiClient.selectHeaderContentType(contentTypes)); + + contentTypes = new String[]{"application/xml", "application/json; charset=UTF8"}; + assertEquals("application/json; charset=UTF8", apiClient.selectHeaderContentType(contentTypes)); + + contentTypes = new String[]{"text/plain", "application/xml"}; + assertEquals("text/plain", apiClient.selectHeaderContentType(contentTypes)); + + contentTypes = new String[]{}; + assertEquals("application/json", apiClient.selectHeaderContentType(contentTypes)); + } + + @Test + public void testGetAuthentications() { + Map auths = apiClient.getAuthentications(); + + Authentication auth = auths.get("api_key"); + assertNotNull(auth); + assertTrue(auth instanceof ApiKeyAuth); + ApiKeyAuth apiKeyAuth = (ApiKeyAuth) auth; + assertEquals("header", apiKeyAuth.getLocation()); + assertEquals("api_key", apiKeyAuth.getParamName()); + + auth = auths.get("petstore_auth"); + assertTrue(auth instanceof OAuth); + assertSame(auth, apiClient.getAuthentication("petstore_auth")); + + assertNull(auths.get("unknown")); + + try { + auths.put("my_auth", new HttpBasicAuth()); + fail("the authentications returned should not be modifiable"); + } catch (UnsupportedOperationException e) { + } + } + + @Ignore("There is no more basic auth in petstore security definitions") + @Test + public void testSetUsernameAndPassword() { + HttpBasicAuth auth = null; + for (Authentication _auth : apiClient.getAuthentications().values()) { + if (_auth instanceof HttpBasicAuth) { + auth = (HttpBasicAuth) _auth; + break; + } + } + auth.setUsername(null); + auth.setPassword(null); + + apiClient.setUsername("my-username"); + apiClient.setPassword("my-password"); + assertEquals("my-username", auth.getUsername()); + assertEquals("my-password", auth.getPassword()); + + // reset values + auth.setUsername(null); + auth.setPassword(null); + } + + @Test + public void testSetApiKeyAndPrefix() { + ApiKeyAuth auth = null; + for (Authentication _auth : apiClient.getAuthentications().values()) { + if (_auth instanceof ApiKeyAuth) { + auth = (ApiKeyAuth) _auth; + break; + } + } + auth.setApiKey(null); + auth.setApiKeyPrefix(null); + + apiClient.setApiKey("my-api-key"); + apiClient.setApiKeyPrefix("Token"); + assertEquals("my-api-key", auth.getApiKey()); + assertEquals("Token", auth.getApiKeyPrefix()); + + // reset values + auth.setApiKey(null); + auth.setApiKeyPrefix(null); + } + + @Test + public void testParameterToPairWhenNameIsInvalid() throws Exception { + List pairs_a = apiClient.parameterToPair(null, new Integer(1)); + List pairs_b = apiClient.parameterToPair("", new Integer(1)); + + assertTrue(pairs_a.isEmpty()); + assertTrue(pairs_b.isEmpty()); + } + + @Test + public void testParameterToPairWhenValueIsNull() throws Exception { + List pairs = apiClient.parameterToPair("param-a", null); + + assertTrue(pairs.isEmpty()); + } + + @Test + public void testParameterToPairWhenValueIsEmptyString() throws Exception { + // single empty string + List pairs = apiClient.parameterToPair("param-a", " "); + assertEquals(1, pairs.size()); + } + + @Test + public void testParameterToPairWhenValueIsNotCollection() throws Exception { + String name = "param-a"; + Integer value = 1; + + List pairs = apiClient.parameterToPair(name, value); + + assertEquals(1, pairs.size()); + assertEquals(value, Integer.valueOf(pairs.get(0).getValue())); + } + + @Test + public void testParameterToPairWhenValueIsCollection() throws Exception { + List values = new ArrayList(); + values.add("value-a"); + values.add(123); + values.add(new Date()); + + List pairs = apiClient.parameterToPair("param-a", values); + assertEquals(0, pairs.size()); + } + + @Test + public void testParameterToPairsWhenNameIsInvalid() throws Exception { + List objects = new ArrayList(); + objects.add(new Integer(1)); + + List pairs_a = apiClient.parameterToPairs("csv", null, objects); + List pairs_b = apiClient.parameterToPairs("csv", "", objects); + + assertTrue(pairs_a.isEmpty()); + assertTrue(pairs_b.isEmpty()); + } + + @Test + public void testParameterToPairsWhenValueIsNull() throws Exception { + List pairs = apiClient.parameterToPairs("csv", "param-a", null); + + assertTrue(pairs.isEmpty()); + } + + @Test + public void testParameterToPairsWhenValueIsEmptyStrings() throws Exception { + // list of empty strings + List strs = new ArrayList(); + strs.add(" "); + strs.add(" "); + strs.add(" "); + + List concatStrings = apiClient.parameterToPairs("csv", "param-a", strs); + + assertEquals(1, concatStrings.size()); + assertFalse(concatStrings.get(0).getValue().isEmpty()); // should contain some delimiters + } + + @Test + public void testParameterToPairsWhenValueIsCollection() throws Exception { + Map collectionFormatMap = new HashMap(); + collectionFormatMap.put("csv", ","); + collectionFormatMap.put("tsv", "\t"); + collectionFormatMap.put("ssv", " "); + collectionFormatMap.put("pipes", "|"); + collectionFormatMap.put("", ","); // no format, must default to csv + collectionFormatMap.put("unknown", ","); // all other formats, must default to csv + + String name = "param-a"; + + List values = new ArrayList(); + values.add("value-a"); + values.add(123); + values.add(new Date()); + + // check for multi separately + List multiPairs = apiClient.parameterToPairs("multi", name, values); + assertEquals(values.size(), multiPairs.size()); + for (int i = 0; i < values.size(); i++) { + assertEquals(apiClient.escapeString(apiClient.parameterToString(values.get(i))), multiPairs.get(i).getValue()); + } + + // all other formats + for (String collectionFormat : collectionFormatMap.keySet()) { + List pairs = apiClient.parameterToPairs(collectionFormat, name, values); + + assertEquals(1, pairs.size()); + + String delimiter = collectionFormatMap.get(collectionFormat); + if (!delimiter.equals(",")) { + // commas are not escaped because they are reserved characters in URIs + delimiter = apiClient.escapeString(delimiter); + } + String[] pairValueSplit = pairs.get(0).getValue().split(delimiter); + + // must equal input values + assertEquals(values.size(), pairValueSplit.length); + for (int i = 0; i < values.size(); i++) { + assertEquals(apiClient.escapeString(apiClient.parameterToString(values.get(i))), pairValueSplit[i]); + } + } + } +} diff --git a/samples/client/petstore/java/jersey1/src/test/java/org/openapitools/client/ConfigurationTest.java b/samples/client/petstore/java/jersey1/src/test/java/org/openapitools/client/ConfigurationTest.java new file mode 100644 index 000000000000..f05c230dc758 --- /dev/null +++ b/samples/client/petstore/java/jersey1/src/test/java/org/openapitools/client/ConfigurationTest.java @@ -0,0 +1,15 @@ +package org.openapitools.client; + +import org.junit.*; +import static org.junit.Assert.*; + + +public class ConfigurationTest { + @Test + public void testDefaultApiClient() { + ApiClient apiClient = Configuration.getDefaultApiClient(); + assertNotNull(apiClient); + assertEquals("http://petstore.swagger.io:80/v2", apiClient.getBasePath()); + assertFalse(apiClient.isDebugging()); + } +} diff --git a/samples/client/petstore/java/jersey1/src/test/java/org/openapitools/client/StringUtilTest.java b/samples/client/petstore/java/jersey1/src/test/java/org/openapitools/client/StringUtilTest.java new file mode 100644 index 000000000000..aa7c81759ec4 --- /dev/null +++ b/samples/client/petstore/java/jersey1/src/test/java/org/openapitools/client/StringUtilTest.java @@ -0,0 +1,33 @@ +package org.openapitools.client; + +import org.junit.*; +import static org.junit.Assert.*; + + +public class StringUtilTest { + @Test + public void testContainsIgnoreCase() { + assertTrue(StringUtil.containsIgnoreCase(new String[]{"abc"}, "abc")); + assertTrue(StringUtil.containsIgnoreCase(new String[]{"abc"}, "ABC")); + assertTrue(StringUtil.containsIgnoreCase(new String[]{"ABC"}, "abc")); + assertTrue(StringUtil.containsIgnoreCase(new String[]{null, "abc"}, "ABC")); + assertTrue(StringUtil.containsIgnoreCase(new String[]{null, "abc"}, null)); + + assertFalse(StringUtil.containsIgnoreCase(new String[]{"abc"}, "def")); + assertFalse(StringUtil.containsIgnoreCase(new String[]{}, "ABC")); + assertFalse(StringUtil.containsIgnoreCase(new String[]{}, null)); + } + + @Test + public void testJoin() { + String[] array = {"aa", "bb", "cc"}; + assertEquals("aa,bb,cc", StringUtil.join(array, ",")); + assertEquals("aa, bb, cc", StringUtil.join(array, ", ")); + assertEquals("aabbcc", StringUtil.join(array, "")); + assertEquals("aa bb cc", StringUtil.join(array, " ")); + assertEquals("aa\nbb\ncc", StringUtil.join(array, "\n")); + + assertEquals("", StringUtil.join(new String[]{}, ",")); + assertEquals("abc", StringUtil.join(new String[]{"abc"}, ",")); + } +} diff --git a/samples/client/petstore/java/jersey1/src/test/java/org/openapitools/client/auth/ApiKeyAuthTest.java b/samples/client/petstore/java/jersey1/src/test/java/org/openapitools/client/auth/ApiKeyAuthTest.java new file mode 100644 index 000000000000..d9b17065f7ca --- /dev/null +++ b/samples/client/petstore/java/jersey1/src/test/java/org/openapitools/client/auth/ApiKeyAuthTest.java @@ -0,0 +1,47 @@ +package org.openapitools.client.auth; + +import java.util.HashMap; +import java.util.ArrayList; +import java.util.Map; +import java.util.List; + +import org.openapitools.client.Pair; +import org.junit.*; +import static org.junit.Assert.*; + + +public class ApiKeyAuthTest { + @Test + public void testApplyToParamsInQuery() { + List queryParams = new ArrayList(); + Map headerParams = new HashMap(); + + ApiKeyAuth auth = new ApiKeyAuth("query", "api_key"); + auth.setApiKey("my-api-key"); + auth.applyToParams(queryParams, headerParams); + + assertEquals(1, queryParams.size()); + for (Pair queryParam : queryParams) { + assertEquals("my-api-key", queryParam.getValue()); + } + + // no changes to header parameters + assertEquals(0, headerParams.size()); + } + + @Test + public void testApplyToParamsInHeaderWithPrefix() { + List queryParams = new ArrayList(); + Map headerParams = new HashMap(); + + ApiKeyAuth auth = new ApiKeyAuth("header", "X-API-TOKEN"); + auth.setApiKey("my-api-token"); + auth.setApiKeyPrefix("Token"); + auth.applyToParams(queryParams, headerParams); + + // no changes to query parameters + assertEquals(0, queryParams.size()); + assertEquals(1, headerParams.size()); + assertEquals("Token my-api-token", headerParams.get("X-API-TOKEN")); + } +} diff --git a/samples/client/petstore/java/jersey1/src/test/java/org/openapitools/client/auth/HttpBasicAuthTest.java b/samples/client/petstore/java/jersey1/src/test/java/org/openapitools/client/auth/HttpBasicAuthTest.java new file mode 100644 index 000000000000..668342d96d7c --- /dev/null +++ b/samples/client/petstore/java/jersey1/src/test/java/org/openapitools/client/auth/HttpBasicAuthTest.java @@ -0,0 +1,52 @@ +package org.openapitools.client.auth; + +import java.util.HashMap; +import java.util.ArrayList; +import java.util.Map; +import java.util.List; + +import org.openapitools.client.Pair; +import org.junit.*; +import static org.junit.Assert.*; + + +public class HttpBasicAuthTest { + HttpBasicAuth auth = null; + + @Before + public void setup() { + auth = new HttpBasicAuth(); + } + + @Test + public void testApplyToParams() { + List queryParams = new ArrayList(); + Map headerParams = new HashMap(); + + auth.setUsername("my-username"); + auth.setPassword("my-password"); + auth.applyToParams(queryParams, headerParams); + + // no changes to query parameters + assertEquals(0, queryParams.size()); + assertEquals(1, headerParams.size()); + // the string below is base64-encoded result of "my-username:my-password" with the "Basic " prefix + String expected = "Basic bXktdXNlcm5hbWU6bXktcGFzc3dvcmQ="; + assertEquals(expected, headerParams.get("Authorization")); + + // null username should be treated as empty string + auth.setUsername(null); + auth.applyToParams(queryParams, headerParams); + // the string below is base64-encoded result of ":my-password" with the "Basic " prefix + expected = "Basic Om15LXBhc3N3b3Jk"; + assertEquals(expected, headerParams.get("Authorization")); + + // null password should be treated as empty string + auth.setUsername("my-username"); + auth.setPassword(null); + auth.applyToParams(queryParams, headerParams); + // the string below is base64-encoded result of "my-username:" with the "Basic " prefix + expected = "Basic bXktdXNlcm5hbWU6"; + assertEquals(expected, headerParams.get("Authorization")); + } +} diff --git a/samples/client/petstore/java/jersey1/src/test/java/org/openapitools/client/model/EnumValueTest.java b/samples/client/petstore/java/jersey1/src/test/java/org/openapitools/client/model/EnumValueTest.java new file mode 100644 index 000000000000..47bfe940d3c3 --- /dev/null +++ b/samples/client/petstore/java/jersey1/src/test/java/org/openapitools/client/model/EnumValueTest.java @@ -0,0 +1,63 @@ +package org.openapitools.client.model; + +import org.junit.Test; + +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.ObjectWriter; +import com.fasterxml.jackson.databind.SerializationFeature; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; +import static org.junit.Assert.fail; + +public class EnumValueTest { + + @Test + public void testEnumClass() { + assertEquals(EnumClass._ABC.toString(), "_abc"); + assertEquals(EnumClass._EFG.toString(), "-efg"); + assertEquals(EnumClass._XYZ_.toString(), "(xyz)"); + } + + @Test + public void testEnumTest() { + // test enum value + EnumTest enumTest = new EnumTest(); + enumTest.setEnumString(EnumTest.EnumStringEnum.LOWER); + enumTest.setEnumInteger(EnumTest.EnumIntegerEnum.NUMBER_1); + enumTest.setEnumNumber(EnumTest.EnumNumberEnum.NUMBER_1_DOT_1); + + assertEquals(EnumTest.EnumStringEnum.UPPER.toString(), "UPPER"); + assertEquals(EnumTest.EnumStringEnum.UPPER.getValue(), "UPPER"); + assertEquals(EnumTest.EnumStringEnum.LOWER.toString(), "lower"); + assertEquals(EnumTest.EnumStringEnum.LOWER.getValue(), "lower"); + + assertEquals(EnumTest.EnumIntegerEnum.NUMBER_1.toString(), "1"); + assertTrue(EnumTest.EnumIntegerEnum.NUMBER_1.getValue() == 1); + assertEquals(EnumTest.EnumIntegerEnum.NUMBER_MINUS_1.toString(), "-1"); + assertTrue(EnumTest.EnumIntegerEnum.NUMBER_MINUS_1.getValue() == -1); + + assertEquals(EnumTest.EnumNumberEnum.NUMBER_1_DOT_1.toString(), "1.1"); + assertTrue(EnumTest.EnumNumberEnum.NUMBER_1_DOT_1.getValue() == 1.1); + assertEquals(EnumTest.EnumNumberEnum.NUMBER_MINUS_1_DOT_2.toString(), "-1.2"); + assertTrue(EnumTest.EnumNumberEnum.NUMBER_MINUS_1_DOT_2.getValue() == -1.2); + + try { + // test serialization (object => json) + ObjectMapper mapper = new ObjectMapper(); + mapper.enable(SerializationFeature.WRITE_ENUMS_USING_TO_STRING); + ObjectWriter ow = mapper.writer(); + String json = ow.writeValueAsString(enumTest); + assertEquals(json, "{\"enum_string\":\"lower\",\"enum_string_required\":null,\"enum_integer\":1,\"enum_number\":1.1,\"outerEnum\":null}"); + + // test deserialization (json => object) + EnumTest fromString = mapper.readValue(json, EnumTest.class); + assertEquals(fromString.getEnumString().toString(), "lower"); + assertEquals(fromString.getEnumInteger().toString(), "1"); + assertEquals(fromString.getEnumNumber().toString(), "1.1"); + + } catch (Exception e) { + fail("Exception thrown during serialization/deserialzation of JSON: " + e.getMessage()); + } + } +} diff --git a/samples/client/petstore/java/jersey2-java6/.openapi-generator/VERSION b/samples/client/petstore/java/jersey2-java6/.openapi-generator/VERSION index 1c00c5181548..82602aa4190d 100644 --- a/samples/client/petstore/java/jersey2-java6/.openapi-generator/VERSION +++ b/samples/client/petstore/java/jersey2-java6/.openapi-generator/VERSION @@ -1 +1 @@ -3.0.2-SNAPSHOT \ No newline at end of file +3.0.3-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/java/jersey2-java8/.openapi-generator/VERSION b/samples/client/petstore/java/jersey2-java8/.openapi-generator/VERSION index 1c00c5181548..82602aa4190d 100644 --- a/samples/client/petstore/java/jersey2-java8/.openapi-generator/VERSION +++ b/samples/client/petstore/java/jersey2-java8/.openapi-generator/VERSION @@ -1 +1 @@ -3.0.2-SNAPSHOT \ No newline at end of file +3.0.3-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/java/jersey2-java8/src/test/java/org/openapitools/client/ApiClientTest.java b/samples/client/petstore/java/jersey2-java8/src/test/java/org/openapitools/client/ApiClientTest.java new file mode 100644 index 000000000000..6fb1e54b679b --- /dev/null +++ b/samples/client/petstore/java/jersey2-java8/src/test/java/org/openapitools/client/ApiClientTest.java @@ -0,0 +1,250 @@ +package org.openapitools.client; + +import org.openapitools.client.auth.*; + +import java.text.DateFormat; +import java.text.SimpleDateFormat; +import java.util.*; + +import org.junit.*; +import static org.junit.Assert.*; + + +public class ApiClientTest { + ApiClient apiClient = null; + + @Before + public void setup() { + apiClient = new ApiClient(); + } + + @Test + public void testParseAndFormatDate() { + // default date format + String dateStr = "2015-11-07T03:49:09.356Z"; + assertEquals(dateStr, apiClient.formatDate(apiClient.parseDate("2015-11-07T03:49:09.356+00:00"))); + assertEquals(dateStr, apiClient.formatDate(apiClient.parseDate("2015-11-07T03:49:09.356Z"))); + assertEquals(dateStr, apiClient.formatDate(apiClient.parseDate("2015-11-07T05:49:09.356+02:00"))); + assertEquals(dateStr, apiClient.formatDate(apiClient.parseDate("2015-11-07T02:49:09.356-01:00"))); + + // custom date format: without milli-seconds, custom time zone + DateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssXXX"); + format.setTimeZone(TimeZone.getTimeZone("GMT+10")); + apiClient.setDateFormat(format); + dateStr = "2015-11-07T13:49:09+10:00"; + assertEquals(dateStr, apiClient.formatDate(apiClient.parseDate("2015-11-07T03:49:09+00:00"))); + assertEquals(dateStr, apiClient.formatDate(apiClient.parseDate("2015-11-07T03:49:09Z"))); + assertEquals(dateStr, apiClient.formatDate(apiClient.parseDate("2015-11-07T00:49:09-03:00"))); + assertEquals(dateStr, apiClient.formatDate(apiClient.parseDate("2015-11-07T13:49:09+10:00"))); + } + + @Test + public void testIsJsonMime() { + assertFalse(apiClient.isJsonMime(null)); + assertFalse(apiClient.isJsonMime("")); + assertFalse(apiClient.isJsonMime("text/plain")); + assertFalse(apiClient.isJsonMime("application/xml")); + assertFalse(apiClient.isJsonMime("application/jsonp")); + assertFalse(apiClient.isJsonMime("example/json")); + assertFalse(apiClient.isJsonMime("example/foo+bar+jsonx")); + assertFalse(apiClient.isJsonMime("example/foo+bar+xjson")); + + assertTrue(apiClient.isJsonMime("application/json")); + assertTrue(apiClient.isJsonMime("application/json; charset=UTF8")); + assertTrue(apiClient.isJsonMime("APPLICATION/JSON")); + + assertTrue(apiClient.isJsonMime("application/problem+json")); + assertTrue(apiClient.isJsonMime("APPLICATION/PROBLEM+JSON")); + assertTrue(apiClient.isJsonMime("application/json\t")); + assertTrue(apiClient.isJsonMime("example/foo+bar+json")); + assertTrue(apiClient.isJsonMime("example/foo+json;x;y")); + assertTrue(apiClient.isJsonMime("example/foo+json\t;")); + assertTrue(apiClient.isJsonMime("Example/fOO+JSON")); + } + + @Test + public void testSelectHeaderAccept() { + String[] accepts = {"application/json", "application/xml"}; + assertEquals("application/json", apiClient.selectHeaderAccept(accepts)); + + accepts = new String[]{"APPLICATION/XML", "APPLICATION/JSON"}; + assertEquals("APPLICATION/JSON", apiClient.selectHeaderAccept(accepts)); + + accepts = new String[]{"application/xml", "application/json; charset=UTF8"}; + assertEquals("application/json; charset=UTF8", apiClient.selectHeaderAccept(accepts)); + + accepts = new String[]{"text/plain", "application/xml"}; + assertEquals("text/plain,application/xml", apiClient.selectHeaderAccept(accepts)); + + accepts = new String[]{}; + assertNull(apiClient.selectHeaderAccept(accepts)); + } + + @Test + public void testSelectHeaderContentType() { + String[] contentTypes = {"application/json", "application/xml"}; + assertEquals("application/json", apiClient.selectHeaderContentType(contentTypes)); + + contentTypes = new String[]{"APPLICATION/JSON", "APPLICATION/XML"}; + assertEquals("APPLICATION/JSON", apiClient.selectHeaderContentType(contentTypes)); + + contentTypes = new String[]{"application/xml", "application/json; charset=UTF8"}; + assertEquals("application/json; charset=UTF8", apiClient.selectHeaderContentType(contentTypes)); + + contentTypes = new String[]{"text/plain", "application/xml"}; + assertEquals("text/plain", apiClient.selectHeaderContentType(contentTypes)); + + contentTypes = new String[]{}; + assertEquals("application/json", apiClient.selectHeaderContentType(contentTypes)); + } + + @Test + public void testGetAuthentications() { + Map auths = apiClient.getAuthentications(); + + Authentication auth = auths.get("api_key"); + assertNotNull(auth); + assertTrue(auth instanceof ApiKeyAuth); + ApiKeyAuth apiKeyAuth = (ApiKeyAuth) auth; + assertEquals("header", apiKeyAuth.getLocation()); + assertEquals("api_key", apiKeyAuth.getParamName()); + + auth = auths.get("petstore_auth"); + assertTrue(auth instanceof OAuth); + assertSame(auth, apiClient.getAuthentication("petstore_auth")); + + assertNull(auths.get("unknown")); + + try { + auths.put("my_auth", new HttpBasicAuth()); + fail("the authentications returned should not be modifiable"); + } catch (UnsupportedOperationException e) { + } + } + + @Ignore("There is no more basic auth in petstore security definitions") + @Test + public void testSetUsernameAndPassword() { + HttpBasicAuth auth = null; + for (Authentication _auth : apiClient.getAuthentications().values()) { + if (_auth instanceof HttpBasicAuth) { + auth = (HttpBasicAuth) _auth; + break; + } + } + auth.setUsername(null); + auth.setPassword(null); + + apiClient.setUsername("my-username"); + apiClient.setPassword("my-password"); + assertEquals("my-username", auth.getUsername()); + assertEquals("my-password", auth.getPassword()); + + // reset values + auth.setUsername(null); + auth.setPassword(null); + } + + @Test + public void testSetApiKeyAndPrefix() { + ApiKeyAuth auth = null; + for (Authentication _auth : apiClient.getAuthentications().values()) { + if (_auth instanceof ApiKeyAuth) { + auth = (ApiKeyAuth) _auth; + break; + } + } + auth.setApiKey(null); + auth.setApiKeyPrefix(null); + + apiClient.setApiKey("my-api-key"); + apiClient.setApiKeyPrefix("Token"); + assertEquals("my-api-key", auth.getApiKey()); + assertEquals("Token", auth.getApiKeyPrefix()); + + // reset values + auth.setApiKey(null); + auth.setApiKeyPrefix(null); + } + + @Test + public void testParameterToPairsWhenNameIsInvalid() throws Exception { + List pairs_a = apiClient.parameterToPairs("csv", null, new Integer(1)); + List pairs_b = apiClient.parameterToPairs("csv", "", new Integer(1)); + + assertTrue(pairs_a.isEmpty()); + assertTrue(pairs_b.isEmpty()); + } + + @Test + public void testParameterToPairsWhenValueIsNull() throws Exception { + List pairs = apiClient.parameterToPairs("csv", "param-a", null); + + assertTrue(pairs.isEmpty()); + } + + @Test + public void testParameterToPairsWhenValueIsEmptyStrings() throws Exception { + + // single empty string + List pairs = apiClient.parameterToPairs("csv", "param-a", " "); + assertEquals(1, pairs.size()); + + // list of empty strings + List strs = new ArrayList(); + strs.add(" "); + strs.add(" "); + strs.add(" "); + + List concatStrings = apiClient.parameterToPairs("csv", "param-a", strs); + + assertEquals(1, concatStrings.size()); + assertFalse(concatStrings.get(0).getValue().isEmpty()); // should contain some delimiters + } + + @Test + public void testParameterToPairsWhenValueIsNotCollection() throws Exception { + String name = "param-a"; + Integer value = 1; + + List pairs = apiClient.parameterToPairs("csv", name, value); + + assertEquals(1, pairs.size()); + assertEquals(value, Integer.valueOf(pairs.get(0).getValue())); + } + + @Test + public void testParameterToPairsWhenValueIsCollection() throws Exception { + Map collectionFormatMap = new HashMap(); + collectionFormatMap.put("csv", ","); + collectionFormatMap.put("tsv", "\t"); + collectionFormatMap.put("ssv", " "); + collectionFormatMap.put("pipes", "\\|"); + collectionFormatMap.put("", ","); // no format, must default to csv + collectionFormatMap.put("unknown", ","); // all other formats, must default to csv + + String name = "param-a"; + + List values = new ArrayList(); + values.add("value-a"); + values.add(123); + values.add(new Date()); + + // check for multi separately + List multiPairs = apiClient.parameterToPairs("multi", name, values); + assertEquals(values.size(), multiPairs.size()); + + // all other formats + for (String collectionFormat : collectionFormatMap.keySet()) { + List pairs = apiClient.parameterToPairs(collectionFormat, name, values); + + assertEquals(1, pairs.size()); + + String delimiter = collectionFormatMap.get(collectionFormat); + String[] pairValueSplit = pairs.get(0).getValue().split(delimiter); + + // must equal input values + assertEquals(values.size(), pairValueSplit.length); + } + } +} diff --git a/samples/client/petstore/java/jersey2-java8/src/test/java/org/openapitools/client/ConfigurationTest.java b/samples/client/petstore/java/jersey2-java8/src/test/java/org/openapitools/client/ConfigurationTest.java new file mode 100644 index 000000000000..f05c230dc758 --- /dev/null +++ b/samples/client/petstore/java/jersey2-java8/src/test/java/org/openapitools/client/ConfigurationTest.java @@ -0,0 +1,15 @@ +package org.openapitools.client; + +import org.junit.*; +import static org.junit.Assert.*; + + +public class ConfigurationTest { + @Test + public void testDefaultApiClient() { + ApiClient apiClient = Configuration.getDefaultApiClient(); + assertNotNull(apiClient); + assertEquals("http://petstore.swagger.io:80/v2", apiClient.getBasePath()); + assertFalse(apiClient.isDebugging()); + } +} diff --git a/samples/client/petstore/java/jersey2-java8/src/test/java/org/openapitools/client/JSONTest.java b/samples/client/petstore/java/jersey2-java8/src/test/java/org/openapitools/client/JSONTest.java new file mode 100644 index 000000000000..7fb307a3df8d --- /dev/null +++ b/samples/client/petstore/java/jersey2-java8/src/test/java/org/openapitools/client/JSONTest.java @@ -0,0 +1,45 @@ +package org.openapitools.client; + +import org.openapitools.client.model.Order; + +import java.lang.Exception; + +import java.time.OffsetDateTime; +import java.time.ZoneId; +import java.time.format.DateTimeFormatter; +import org.junit.*; +import static org.junit.Assert.*; + + +public class JSONTest { + JSON json = null; + Order order = null; + + @Before + public void setup() { + json = new JSON(); + order = new Order(); + } + + @Test + public void testDefaultDate() throws Exception { + final DateTimeFormatter dateFormat = DateTimeFormatter.ISO_OFFSET_DATE_TIME; + final String dateStr = "2015-11-07T14:11:05.267Z"; + order.setShipDate(dateFormat.parse(dateStr, OffsetDateTime::from)); + + String str = json.getContext(null).writeValueAsString(order); + Order o = json.getContext(null).readValue(str, Order.class); + assertEquals(dateStr, dateFormat.format(o.getShipDate())); + } + + @Test + public void testCustomDate() throws Exception { + final DateTimeFormatter dateFormat = DateTimeFormatter.ISO_OFFSET_DATE_TIME.withZone(ZoneId.of("Etc/GMT+2")); + final String dateStr = "2015-11-07T14:11:05-02:00"; + order.setShipDate(dateFormat.parse(dateStr, OffsetDateTime::from)); + + String str = json.getContext(null).writeValueAsString(order); + Order o = json.getContext(null).readValue(str, Order.class); + assertEquals(dateStr, dateFormat.format(o.getShipDate())); + } +} \ No newline at end of file diff --git a/samples/client/petstore/java/jersey2-java8/src/test/java/org/openapitools/client/StringUtilTest.java b/samples/client/petstore/java/jersey2-java8/src/test/java/org/openapitools/client/StringUtilTest.java new file mode 100644 index 000000000000..aa7c81759ec4 --- /dev/null +++ b/samples/client/petstore/java/jersey2-java8/src/test/java/org/openapitools/client/StringUtilTest.java @@ -0,0 +1,33 @@ +package org.openapitools.client; + +import org.junit.*; +import static org.junit.Assert.*; + + +public class StringUtilTest { + @Test + public void testContainsIgnoreCase() { + assertTrue(StringUtil.containsIgnoreCase(new String[]{"abc"}, "abc")); + assertTrue(StringUtil.containsIgnoreCase(new String[]{"abc"}, "ABC")); + assertTrue(StringUtil.containsIgnoreCase(new String[]{"ABC"}, "abc")); + assertTrue(StringUtil.containsIgnoreCase(new String[]{null, "abc"}, "ABC")); + assertTrue(StringUtil.containsIgnoreCase(new String[]{null, "abc"}, null)); + + assertFalse(StringUtil.containsIgnoreCase(new String[]{"abc"}, "def")); + assertFalse(StringUtil.containsIgnoreCase(new String[]{}, "ABC")); + assertFalse(StringUtil.containsIgnoreCase(new String[]{}, null)); + } + + @Test + public void testJoin() { + String[] array = {"aa", "bb", "cc"}; + assertEquals("aa,bb,cc", StringUtil.join(array, ",")); + assertEquals("aa, bb, cc", StringUtil.join(array, ", ")); + assertEquals("aabbcc", StringUtil.join(array, "")); + assertEquals("aa bb cc", StringUtil.join(array, " ")); + assertEquals("aa\nbb\ncc", StringUtil.join(array, "\n")); + + assertEquals("", StringUtil.join(new String[]{}, ",")); + assertEquals("abc", StringUtil.join(new String[]{"abc"}, ",")); + } +} diff --git a/samples/client/petstore/java/jersey2-java8/src/test/java/org/openapitools/client/auth/ApiKeyAuthTest.java b/samples/client/petstore/java/jersey2-java8/src/test/java/org/openapitools/client/auth/ApiKeyAuthTest.java new file mode 100644 index 000000000000..d9b17065f7ca --- /dev/null +++ b/samples/client/petstore/java/jersey2-java8/src/test/java/org/openapitools/client/auth/ApiKeyAuthTest.java @@ -0,0 +1,47 @@ +package org.openapitools.client.auth; + +import java.util.HashMap; +import java.util.ArrayList; +import java.util.Map; +import java.util.List; + +import org.openapitools.client.Pair; +import org.junit.*; +import static org.junit.Assert.*; + + +public class ApiKeyAuthTest { + @Test + public void testApplyToParamsInQuery() { + List queryParams = new ArrayList(); + Map headerParams = new HashMap(); + + ApiKeyAuth auth = new ApiKeyAuth("query", "api_key"); + auth.setApiKey("my-api-key"); + auth.applyToParams(queryParams, headerParams); + + assertEquals(1, queryParams.size()); + for (Pair queryParam : queryParams) { + assertEquals("my-api-key", queryParam.getValue()); + } + + // no changes to header parameters + assertEquals(0, headerParams.size()); + } + + @Test + public void testApplyToParamsInHeaderWithPrefix() { + List queryParams = new ArrayList(); + Map headerParams = new HashMap(); + + ApiKeyAuth auth = new ApiKeyAuth("header", "X-API-TOKEN"); + auth.setApiKey("my-api-token"); + auth.setApiKeyPrefix("Token"); + auth.applyToParams(queryParams, headerParams); + + // no changes to query parameters + assertEquals(0, queryParams.size()); + assertEquals(1, headerParams.size()); + assertEquals("Token my-api-token", headerParams.get("X-API-TOKEN")); + } +} diff --git a/samples/client/petstore/java/jersey2-java8/src/test/java/org/openapitools/client/auth/HttpBasicAuthTest.java b/samples/client/petstore/java/jersey2-java8/src/test/java/org/openapitools/client/auth/HttpBasicAuthTest.java new file mode 100644 index 000000000000..668342d96d7c --- /dev/null +++ b/samples/client/petstore/java/jersey2-java8/src/test/java/org/openapitools/client/auth/HttpBasicAuthTest.java @@ -0,0 +1,52 @@ +package org.openapitools.client.auth; + +import java.util.HashMap; +import java.util.ArrayList; +import java.util.Map; +import java.util.List; + +import org.openapitools.client.Pair; +import org.junit.*; +import static org.junit.Assert.*; + + +public class HttpBasicAuthTest { + HttpBasicAuth auth = null; + + @Before + public void setup() { + auth = new HttpBasicAuth(); + } + + @Test + public void testApplyToParams() { + List queryParams = new ArrayList(); + Map headerParams = new HashMap(); + + auth.setUsername("my-username"); + auth.setPassword("my-password"); + auth.applyToParams(queryParams, headerParams); + + // no changes to query parameters + assertEquals(0, queryParams.size()); + assertEquals(1, headerParams.size()); + // the string below is base64-encoded result of "my-username:my-password" with the "Basic " prefix + String expected = "Basic bXktdXNlcm5hbWU6bXktcGFzc3dvcmQ="; + assertEquals(expected, headerParams.get("Authorization")); + + // null username should be treated as empty string + auth.setUsername(null); + auth.applyToParams(queryParams, headerParams); + // the string below is base64-encoded result of ":my-password" with the "Basic " prefix + expected = "Basic Om15LXBhc3N3b3Jk"; + assertEquals(expected, headerParams.get("Authorization")); + + // null password should be treated as empty string + auth.setUsername("my-username"); + auth.setPassword(null); + auth.applyToParams(queryParams, headerParams); + // the string below is base64-encoded result of "my-username:" with the "Basic " prefix + expected = "Basic bXktdXNlcm5hbWU6"; + assertEquals(expected, headerParams.get("Authorization")); + } +} diff --git a/samples/client/petstore/java/jersey2-java8/src/test/java/org/openapitools/client/model/EnumValueTest.java b/samples/client/petstore/java/jersey2-java8/src/test/java/org/openapitools/client/model/EnumValueTest.java new file mode 100644 index 000000000000..47bfe940d3c3 --- /dev/null +++ b/samples/client/petstore/java/jersey2-java8/src/test/java/org/openapitools/client/model/EnumValueTest.java @@ -0,0 +1,63 @@ +package org.openapitools.client.model; + +import org.junit.Test; + +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.ObjectWriter; +import com.fasterxml.jackson.databind.SerializationFeature; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; +import static org.junit.Assert.fail; + +public class EnumValueTest { + + @Test + public void testEnumClass() { + assertEquals(EnumClass._ABC.toString(), "_abc"); + assertEquals(EnumClass._EFG.toString(), "-efg"); + assertEquals(EnumClass._XYZ_.toString(), "(xyz)"); + } + + @Test + public void testEnumTest() { + // test enum value + EnumTest enumTest = new EnumTest(); + enumTest.setEnumString(EnumTest.EnumStringEnum.LOWER); + enumTest.setEnumInteger(EnumTest.EnumIntegerEnum.NUMBER_1); + enumTest.setEnumNumber(EnumTest.EnumNumberEnum.NUMBER_1_DOT_1); + + assertEquals(EnumTest.EnumStringEnum.UPPER.toString(), "UPPER"); + assertEquals(EnumTest.EnumStringEnum.UPPER.getValue(), "UPPER"); + assertEquals(EnumTest.EnumStringEnum.LOWER.toString(), "lower"); + assertEquals(EnumTest.EnumStringEnum.LOWER.getValue(), "lower"); + + assertEquals(EnumTest.EnumIntegerEnum.NUMBER_1.toString(), "1"); + assertTrue(EnumTest.EnumIntegerEnum.NUMBER_1.getValue() == 1); + assertEquals(EnumTest.EnumIntegerEnum.NUMBER_MINUS_1.toString(), "-1"); + assertTrue(EnumTest.EnumIntegerEnum.NUMBER_MINUS_1.getValue() == -1); + + assertEquals(EnumTest.EnumNumberEnum.NUMBER_1_DOT_1.toString(), "1.1"); + assertTrue(EnumTest.EnumNumberEnum.NUMBER_1_DOT_1.getValue() == 1.1); + assertEquals(EnumTest.EnumNumberEnum.NUMBER_MINUS_1_DOT_2.toString(), "-1.2"); + assertTrue(EnumTest.EnumNumberEnum.NUMBER_MINUS_1_DOT_2.getValue() == -1.2); + + try { + // test serialization (object => json) + ObjectMapper mapper = new ObjectMapper(); + mapper.enable(SerializationFeature.WRITE_ENUMS_USING_TO_STRING); + ObjectWriter ow = mapper.writer(); + String json = ow.writeValueAsString(enumTest); + assertEquals(json, "{\"enum_string\":\"lower\",\"enum_string_required\":null,\"enum_integer\":1,\"enum_number\":1.1,\"outerEnum\":null}"); + + // test deserialization (json => object) + EnumTest fromString = mapper.readValue(json, EnumTest.class); + assertEquals(fromString.getEnumString().toString(), "lower"); + assertEquals(fromString.getEnumInteger().toString(), "1"); + assertEquals(fromString.getEnumNumber().toString(), "1.1"); + + } catch (Exception e) { + fail("Exception thrown during serialization/deserialzation of JSON: " + e.getMessage()); + } + } +} diff --git a/samples/client/petstore/java/jersey2/.openapi-generator/VERSION b/samples/client/petstore/java/jersey2/.openapi-generator/VERSION index 1c00c5181548..82602aa4190d 100644 --- a/samples/client/petstore/java/jersey2/.openapi-generator/VERSION +++ b/samples/client/petstore/java/jersey2/.openapi-generator/VERSION @@ -1 +1 @@ -3.0.2-SNAPSHOT \ No newline at end of file +3.0.3-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/java/jersey2/src/test/java/org/openapitools/client/ApiClientTest.java b/samples/client/petstore/java/jersey2/src/test/java/org/openapitools/client/ApiClientTest.java new file mode 100644 index 000000000000..6fb1e54b679b --- /dev/null +++ b/samples/client/petstore/java/jersey2/src/test/java/org/openapitools/client/ApiClientTest.java @@ -0,0 +1,250 @@ +package org.openapitools.client; + +import org.openapitools.client.auth.*; + +import java.text.DateFormat; +import java.text.SimpleDateFormat; +import java.util.*; + +import org.junit.*; +import static org.junit.Assert.*; + + +public class ApiClientTest { + ApiClient apiClient = null; + + @Before + public void setup() { + apiClient = new ApiClient(); + } + + @Test + public void testParseAndFormatDate() { + // default date format + String dateStr = "2015-11-07T03:49:09.356Z"; + assertEquals(dateStr, apiClient.formatDate(apiClient.parseDate("2015-11-07T03:49:09.356+00:00"))); + assertEquals(dateStr, apiClient.formatDate(apiClient.parseDate("2015-11-07T03:49:09.356Z"))); + assertEquals(dateStr, apiClient.formatDate(apiClient.parseDate("2015-11-07T05:49:09.356+02:00"))); + assertEquals(dateStr, apiClient.formatDate(apiClient.parseDate("2015-11-07T02:49:09.356-01:00"))); + + // custom date format: without milli-seconds, custom time zone + DateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssXXX"); + format.setTimeZone(TimeZone.getTimeZone("GMT+10")); + apiClient.setDateFormat(format); + dateStr = "2015-11-07T13:49:09+10:00"; + assertEquals(dateStr, apiClient.formatDate(apiClient.parseDate("2015-11-07T03:49:09+00:00"))); + assertEquals(dateStr, apiClient.formatDate(apiClient.parseDate("2015-11-07T03:49:09Z"))); + assertEquals(dateStr, apiClient.formatDate(apiClient.parseDate("2015-11-07T00:49:09-03:00"))); + assertEquals(dateStr, apiClient.formatDate(apiClient.parseDate("2015-11-07T13:49:09+10:00"))); + } + + @Test + public void testIsJsonMime() { + assertFalse(apiClient.isJsonMime(null)); + assertFalse(apiClient.isJsonMime("")); + assertFalse(apiClient.isJsonMime("text/plain")); + assertFalse(apiClient.isJsonMime("application/xml")); + assertFalse(apiClient.isJsonMime("application/jsonp")); + assertFalse(apiClient.isJsonMime("example/json")); + assertFalse(apiClient.isJsonMime("example/foo+bar+jsonx")); + assertFalse(apiClient.isJsonMime("example/foo+bar+xjson")); + + assertTrue(apiClient.isJsonMime("application/json")); + assertTrue(apiClient.isJsonMime("application/json; charset=UTF8")); + assertTrue(apiClient.isJsonMime("APPLICATION/JSON")); + + assertTrue(apiClient.isJsonMime("application/problem+json")); + assertTrue(apiClient.isJsonMime("APPLICATION/PROBLEM+JSON")); + assertTrue(apiClient.isJsonMime("application/json\t")); + assertTrue(apiClient.isJsonMime("example/foo+bar+json")); + assertTrue(apiClient.isJsonMime("example/foo+json;x;y")); + assertTrue(apiClient.isJsonMime("example/foo+json\t;")); + assertTrue(apiClient.isJsonMime("Example/fOO+JSON")); + } + + @Test + public void testSelectHeaderAccept() { + String[] accepts = {"application/json", "application/xml"}; + assertEquals("application/json", apiClient.selectHeaderAccept(accepts)); + + accepts = new String[]{"APPLICATION/XML", "APPLICATION/JSON"}; + assertEquals("APPLICATION/JSON", apiClient.selectHeaderAccept(accepts)); + + accepts = new String[]{"application/xml", "application/json; charset=UTF8"}; + assertEquals("application/json; charset=UTF8", apiClient.selectHeaderAccept(accepts)); + + accepts = new String[]{"text/plain", "application/xml"}; + assertEquals("text/plain,application/xml", apiClient.selectHeaderAccept(accepts)); + + accepts = new String[]{}; + assertNull(apiClient.selectHeaderAccept(accepts)); + } + + @Test + public void testSelectHeaderContentType() { + String[] contentTypes = {"application/json", "application/xml"}; + assertEquals("application/json", apiClient.selectHeaderContentType(contentTypes)); + + contentTypes = new String[]{"APPLICATION/JSON", "APPLICATION/XML"}; + assertEquals("APPLICATION/JSON", apiClient.selectHeaderContentType(contentTypes)); + + contentTypes = new String[]{"application/xml", "application/json; charset=UTF8"}; + assertEquals("application/json; charset=UTF8", apiClient.selectHeaderContentType(contentTypes)); + + contentTypes = new String[]{"text/plain", "application/xml"}; + assertEquals("text/plain", apiClient.selectHeaderContentType(contentTypes)); + + contentTypes = new String[]{}; + assertEquals("application/json", apiClient.selectHeaderContentType(contentTypes)); + } + + @Test + public void testGetAuthentications() { + Map auths = apiClient.getAuthentications(); + + Authentication auth = auths.get("api_key"); + assertNotNull(auth); + assertTrue(auth instanceof ApiKeyAuth); + ApiKeyAuth apiKeyAuth = (ApiKeyAuth) auth; + assertEquals("header", apiKeyAuth.getLocation()); + assertEquals("api_key", apiKeyAuth.getParamName()); + + auth = auths.get("petstore_auth"); + assertTrue(auth instanceof OAuth); + assertSame(auth, apiClient.getAuthentication("petstore_auth")); + + assertNull(auths.get("unknown")); + + try { + auths.put("my_auth", new HttpBasicAuth()); + fail("the authentications returned should not be modifiable"); + } catch (UnsupportedOperationException e) { + } + } + + @Ignore("There is no more basic auth in petstore security definitions") + @Test + public void testSetUsernameAndPassword() { + HttpBasicAuth auth = null; + for (Authentication _auth : apiClient.getAuthentications().values()) { + if (_auth instanceof HttpBasicAuth) { + auth = (HttpBasicAuth) _auth; + break; + } + } + auth.setUsername(null); + auth.setPassword(null); + + apiClient.setUsername("my-username"); + apiClient.setPassword("my-password"); + assertEquals("my-username", auth.getUsername()); + assertEquals("my-password", auth.getPassword()); + + // reset values + auth.setUsername(null); + auth.setPassword(null); + } + + @Test + public void testSetApiKeyAndPrefix() { + ApiKeyAuth auth = null; + for (Authentication _auth : apiClient.getAuthentications().values()) { + if (_auth instanceof ApiKeyAuth) { + auth = (ApiKeyAuth) _auth; + break; + } + } + auth.setApiKey(null); + auth.setApiKeyPrefix(null); + + apiClient.setApiKey("my-api-key"); + apiClient.setApiKeyPrefix("Token"); + assertEquals("my-api-key", auth.getApiKey()); + assertEquals("Token", auth.getApiKeyPrefix()); + + // reset values + auth.setApiKey(null); + auth.setApiKeyPrefix(null); + } + + @Test + public void testParameterToPairsWhenNameIsInvalid() throws Exception { + List pairs_a = apiClient.parameterToPairs("csv", null, new Integer(1)); + List pairs_b = apiClient.parameterToPairs("csv", "", new Integer(1)); + + assertTrue(pairs_a.isEmpty()); + assertTrue(pairs_b.isEmpty()); + } + + @Test + public void testParameterToPairsWhenValueIsNull() throws Exception { + List pairs = apiClient.parameterToPairs("csv", "param-a", null); + + assertTrue(pairs.isEmpty()); + } + + @Test + public void testParameterToPairsWhenValueIsEmptyStrings() throws Exception { + + // single empty string + List pairs = apiClient.parameterToPairs("csv", "param-a", " "); + assertEquals(1, pairs.size()); + + // list of empty strings + List strs = new ArrayList(); + strs.add(" "); + strs.add(" "); + strs.add(" "); + + List concatStrings = apiClient.parameterToPairs("csv", "param-a", strs); + + assertEquals(1, concatStrings.size()); + assertFalse(concatStrings.get(0).getValue().isEmpty()); // should contain some delimiters + } + + @Test + public void testParameterToPairsWhenValueIsNotCollection() throws Exception { + String name = "param-a"; + Integer value = 1; + + List pairs = apiClient.parameterToPairs("csv", name, value); + + assertEquals(1, pairs.size()); + assertEquals(value, Integer.valueOf(pairs.get(0).getValue())); + } + + @Test + public void testParameterToPairsWhenValueIsCollection() throws Exception { + Map collectionFormatMap = new HashMap(); + collectionFormatMap.put("csv", ","); + collectionFormatMap.put("tsv", "\t"); + collectionFormatMap.put("ssv", " "); + collectionFormatMap.put("pipes", "\\|"); + collectionFormatMap.put("", ","); // no format, must default to csv + collectionFormatMap.put("unknown", ","); // all other formats, must default to csv + + String name = "param-a"; + + List values = new ArrayList(); + values.add("value-a"); + values.add(123); + values.add(new Date()); + + // check for multi separately + List multiPairs = apiClient.parameterToPairs("multi", name, values); + assertEquals(values.size(), multiPairs.size()); + + // all other formats + for (String collectionFormat : collectionFormatMap.keySet()) { + List pairs = apiClient.parameterToPairs(collectionFormat, name, values); + + assertEquals(1, pairs.size()); + + String delimiter = collectionFormatMap.get(collectionFormat); + String[] pairValueSplit = pairs.get(0).getValue().split(delimiter); + + // must equal input values + assertEquals(values.size(), pairValueSplit.length); + } + } +} diff --git a/samples/client/petstore/java/jersey2/src/test/java/org/openapitools/client/ConfigurationTest.java b/samples/client/petstore/java/jersey2/src/test/java/org/openapitools/client/ConfigurationTest.java new file mode 100644 index 000000000000..f05c230dc758 --- /dev/null +++ b/samples/client/petstore/java/jersey2/src/test/java/org/openapitools/client/ConfigurationTest.java @@ -0,0 +1,15 @@ +package org.openapitools.client; + +import org.junit.*; +import static org.junit.Assert.*; + + +public class ConfigurationTest { + @Test + public void testDefaultApiClient() { + ApiClient apiClient = Configuration.getDefaultApiClient(); + assertNotNull(apiClient); + assertEquals("http://petstore.swagger.io:80/v2", apiClient.getBasePath()); + assertFalse(apiClient.isDebugging()); + } +} diff --git a/samples/client/petstore/java/jersey2/src/test/java/org/openapitools/client/JSONTest.java b/samples/client/petstore/java/jersey2/src/test/java/org/openapitools/client/JSONTest.java new file mode 100644 index 000000000000..f21b852065c3 --- /dev/null +++ b/samples/client/petstore/java/jersey2/src/test/java/org/openapitools/client/JSONTest.java @@ -0,0 +1,58 @@ +package org.openapitools.client; + +import org.openapitools.client.model.Order; +import org.junit.Before; +import org.junit.Test; +import org.threeten.bp.OffsetDateTime; +import org.threeten.bp.ZoneId; +import org.threeten.bp.format.DateTimeFormatter; + +import static org.junit.Assert.*; + + +public class JSONTest { + private JSON json = null; + private Order order = null; + + @Before + public void setup() { + json = new ApiClient().getJSON(); + order = new Order(); + } + + @Test + public void testDefaultDate() throws Exception { + final DateTimeFormatter dateFormat = DateTimeFormatter.ISO_OFFSET_DATE_TIME; + final String dateStr = "2015-11-07T14:11:05.267Z"; + order.setShipDate(dateFormat.parse(dateStr, OffsetDateTime.FROM)); + + String str = json.getContext(null).writeValueAsString(order); + Order o = json.getContext(null).readValue(str, Order.class); + assertEquals(dateStr, dateFormat.format(o.getShipDate())); + } + + @Test + public void testCustomDate() throws Exception { + final DateTimeFormatter dateFormat = DateTimeFormatter.ISO_OFFSET_DATE_TIME.withZone(ZoneId.of("Etc/GMT+2")); + final String dateStr = "2015-11-07T14:11:05-02:00"; + order.setShipDate(dateFormat.parse(dateStr, OffsetDateTime.FROM)); + + String str = json.getContext(null).writeValueAsString(order); + Order o = json.getContext(null).readValue(str, Order.class); + assertEquals(dateStr, dateFormat.format(o.getShipDate())); + } + + @Test + public void testSqlDateSerialization() throws Exception { + String str = json.getContext(null).writeValueAsString(new java.sql.Date(10)); + assertEquals("\"1970-01-01\"", str); + } + + @Test + public void testSqlDateDeserialization() throws Exception { + final String str = "1970-01-01"; + java.sql.Date date = json.getContext(null).readValue("\"" + str + "\"", java.sql.Date.class); + assertEquals(date.toString(), str); + } + +} \ No newline at end of file diff --git a/samples/client/petstore/java/jersey2/src/test/java/org/openapitools/client/StringUtilTest.java b/samples/client/petstore/java/jersey2/src/test/java/org/openapitools/client/StringUtilTest.java new file mode 100644 index 000000000000..aa7c81759ec4 --- /dev/null +++ b/samples/client/petstore/java/jersey2/src/test/java/org/openapitools/client/StringUtilTest.java @@ -0,0 +1,33 @@ +package org.openapitools.client; + +import org.junit.*; +import static org.junit.Assert.*; + + +public class StringUtilTest { + @Test + public void testContainsIgnoreCase() { + assertTrue(StringUtil.containsIgnoreCase(new String[]{"abc"}, "abc")); + assertTrue(StringUtil.containsIgnoreCase(new String[]{"abc"}, "ABC")); + assertTrue(StringUtil.containsIgnoreCase(new String[]{"ABC"}, "abc")); + assertTrue(StringUtil.containsIgnoreCase(new String[]{null, "abc"}, "ABC")); + assertTrue(StringUtil.containsIgnoreCase(new String[]{null, "abc"}, null)); + + assertFalse(StringUtil.containsIgnoreCase(new String[]{"abc"}, "def")); + assertFalse(StringUtil.containsIgnoreCase(new String[]{}, "ABC")); + assertFalse(StringUtil.containsIgnoreCase(new String[]{}, null)); + } + + @Test + public void testJoin() { + String[] array = {"aa", "bb", "cc"}; + assertEquals("aa,bb,cc", StringUtil.join(array, ",")); + assertEquals("aa, bb, cc", StringUtil.join(array, ", ")); + assertEquals("aabbcc", StringUtil.join(array, "")); + assertEquals("aa bb cc", StringUtil.join(array, " ")); + assertEquals("aa\nbb\ncc", StringUtil.join(array, "\n")); + + assertEquals("", StringUtil.join(new String[]{}, ",")); + assertEquals("abc", StringUtil.join(new String[]{"abc"}, ",")); + } +} diff --git a/samples/client/petstore/java/jersey2/src/test/java/org/openapitools/client/auth/ApiKeyAuthTest.java b/samples/client/petstore/java/jersey2/src/test/java/org/openapitools/client/auth/ApiKeyAuthTest.java new file mode 100644 index 000000000000..d9b17065f7ca --- /dev/null +++ b/samples/client/petstore/java/jersey2/src/test/java/org/openapitools/client/auth/ApiKeyAuthTest.java @@ -0,0 +1,47 @@ +package org.openapitools.client.auth; + +import java.util.HashMap; +import java.util.ArrayList; +import java.util.Map; +import java.util.List; + +import org.openapitools.client.Pair; +import org.junit.*; +import static org.junit.Assert.*; + + +public class ApiKeyAuthTest { + @Test + public void testApplyToParamsInQuery() { + List queryParams = new ArrayList(); + Map headerParams = new HashMap(); + + ApiKeyAuth auth = new ApiKeyAuth("query", "api_key"); + auth.setApiKey("my-api-key"); + auth.applyToParams(queryParams, headerParams); + + assertEquals(1, queryParams.size()); + for (Pair queryParam : queryParams) { + assertEquals("my-api-key", queryParam.getValue()); + } + + // no changes to header parameters + assertEquals(0, headerParams.size()); + } + + @Test + public void testApplyToParamsInHeaderWithPrefix() { + List queryParams = new ArrayList(); + Map headerParams = new HashMap(); + + ApiKeyAuth auth = new ApiKeyAuth("header", "X-API-TOKEN"); + auth.setApiKey("my-api-token"); + auth.setApiKeyPrefix("Token"); + auth.applyToParams(queryParams, headerParams); + + // no changes to query parameters + assertEquals(0, queryParams.size()); + assertEquals(1, headerParams.size()); + assertEquals("Token my-api-token", headerParams.get("X-API-TOKEN")); + } +} diff --git a/samples/client/petstore/java/jersey2/src/test/java/org/openapitools/client/auth/HttpBasicAuthTest.java b/samples/client/petstore/java/jersey2/src/test/java/org/openapitools/client/auth/HttpBasicAuthTest.java new file mode 100644 index 000000000000..668342d96d7c --- /dev/null +++ b/samples/client/petstore/java/jersey2/src/test/java/org/openapitools/client/auth/HttpBasicAuthTest.java @@ -0,0 +1,52 @@ +package org.openapitools.client.auth; + +import java.util.HashMap; +import java.util.ArrayList; +import java.util.Map; +import java.util.List; + +import org.openapitools.client.Pair; +import org.junit.*; +import static org.junit.Assert.*; + + +public class HttpBasicAuthTest { + HttpBasicAuth auth = null; + + @Before + public void setup() { + auth = new HttpBasicAuth(); + } + + @Test + public void testApplyToParams() { + List queryParams = new ArrayList(); + Map headerParams = new HashMap(); + + auth.setUsername("my-username"); + auth.setPassword("my-password"); + auth.applyToParams(queryParams, headerParams); + + // no changes to query parameters + assertEquals(0, queryParams.size()); + assertEquals(1, headerParams.size()); + // the string below is base64-encoded result of "my-username:my-password" with the "Basic " prefix + String expected = "Basic bXktdXNlcm5hbWU6bXktcGFzc3dvcmQ="; + assertEquals(expected, headerParams.get("Authorization")); + + // null username should be treated as empty string + auth.setUsername(null); + auth.applyToParams(queryParams, headerParams); + // the string below is base64-encoded result of ":my-password" with the "Basic " prefix + expected = "Basic Om15LXBhc3N3b3Jk"; + assertEquals(expected, headerParams.get("Authorization")); + + // null password should be treated as empty string + auth.setUsername("my-username"); + auth.setPassword(null); + auth.applyToParams(queryParams, headerParams); + // the string below is base64-encoded result of "my-username:" with the "Basic " prefix + expected = "Basic bXktdXNlcm5hbWU6"; + assertEquals(expected, headerParams.get("Authorization")); + } +} diff --git a/samples/client/petstore/java/jersey2/src/test/java/org/openapitools/client/model/EnumValueTest.java b/samples/client/petstore/java/jersey2/src/test/java/org/openapitools/client/model/EnumValueTest.java new file mode 100644 index 000000000000..47bfe940d3c3 --- /dev/null +++ b/samples/client/petstore/java/jersey2/src/test/java/org/openapitools/client/model/EnumValueTest.java @@ -0,0 +1,63 @@ +package org.openapitools.client.model; + +import org.junit.Test; + +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.ObjectWriter; +import com.fasterxml.jackson.databind.SerializationFeature; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; +import static org.junit.Assert.fail; + +public class EnumValueTest { + + @Test + public void testEnumClass() { + assertEquals(EnumClass._ABC.toString(), "_abc"); + assertEquals(EnumClass._EFG.toString(), "-efg"); + assertEquals(EnumClass._XYZ_.toString(), "(xyz)"); + } + + @Test + public void testEnumTest() { + // test enum value + EnumTest enumTest = new EnumTest(); + enumTest.setEnumString(EnumTest.EnumStringEnum.LOWER); + enumTest.setEnumInteger(EnumTest.EnumIntegerEnum.NUMBER_1); + enumTest.setEnumNumber(EnumTest.EnumNumberEnum.NUMBER_1_DOT_1); + + assertEquals(EnumTest.EnumStringEnum.UPPER.toString(), "UPPER"); + assertEquals(EnumTest.EnumStringEnum.UPPER.getValue(), "UPPER"); + assertEquals(EnumTest.EnumStringEnum.LOWER.toString(), "lower"); + assertEquals(EnumTest.EnumStringEnum.LOWER.getValue(), "lower"); + + assertEquals(EnumTest.EnumIntegerEnum.NUMBER_1.toString(), "1"); + assertTrue(EnumTest.EnumIntegerEnum.NUMBER_1.getValue() == 1); + assertEquals(EnumTest.EnumIntegerEnum.NUMBER_MINUS_1.toString(), "-1"); + assertTrue(EnumTest.EnumIntegerEnum.NUMBER_MINUS_1.getValue() == -1); + + assertEquals(EnumTest.EnumNumberEnum.NUMBER_1_DOT_1.toString(), "1.1"); + assertTrue(EnumTest.EnumNumberEnum.NUMBER_1_DOT_1.getValue() == 1.1); + assertEquals(EnumTest.EnumNumberEnum.NUMBER_MINUS_1_DOT_2.toString(), "-1.2"); + assertTrue(EnumTest.EnumNumberEnum.NUMBER_MINUS_1_DOT_2.getValue() == -1.2); + + try { + // test serialization (object => json) + ObjectMapper mapper = new ObjectMapper(); + mapper.enable(SerializationFeature.WRITE_ENUMS_USING_TO_STRING); + ObjectWriter ow = mapper.writer(); + String json = ow.writeValueAsString(enumTest); + assertEquals(json, "{\"enum_string\":\"lower\",\"enum_string_required\":null,\"enum_integer\":1,\"enum_number\":1.1,\"outerEnum\":null}"); + + // test deserialization (json => object) + EnumTest fromString = mapper.readValue(json, EnumTest.class); + assertEquals(fromString.getEnumString().toString(), "lower"); + assertEquals(fromString.getEnumInteger().toString(), "1"); + assertEquals(fromString.getEnumNumber().toString(), "1.1"); + + } catch (Exception e) { + fail("Exception thrown during serialization/deserialzation of JSON: " + e.getMessage()); + } + } +} diff --git a/samples/client/petstore/java/okhttp-gson-parcelableModel/.openapi-generator/VERSION b/samples/client/petstore/java/okhttp-gson-parcelableModel/.openapi-generator/VERSION index 1c00c5181548..82602aa4190d 100644 --- a/samples/client/petstore/java/okhttp-gson-parcelableModel/.openapi-generator/VERSION +++ b/samples/client/petstore/java/okhttp-gson-parcelableModel/.openapi-generator/VERSION @@ -1 +1 @@ -3.0.2-SNAPSHOT \ No newline at end of file +3.0.3-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/java/okhttp-gson-parcelableModel/src/main/java/org/openapitools/client/ApiClient.java b/samples/client/petstore/java/okhttp-gson-parcelableModel/src/main/java/org/openapitools/client/ApiClient.java index b77423e8cac8..86ce63c9b936 100644 --- a/samples/client/petstore/java/okhttp-gson-parcelableModel/src/main/java/org/openapitools/client/ApiClient.java +++ b/samples/client/petstore/java/okhttp-gson-parcelableModel/src/main/java/org/openapitools/client/ApiClient.java @@ -897,7 +897,7 @@ public void onResponse(Response response) throws IOException { * @param Type * @param response Response * @param returnType Return type - * @throws ApiException If the response has a unsuccessful status code or + * @throws ApiException If the response has an unsuccessful status code or * fail to deserialize the response body * @return Type */ diff --git a/samples/client/petstore/java/okhttp-gson-parcelableModel/src/main/java/org/openapitools/client/JSON.java b/samples/client/petstore/java/okhttp-gson-parcelableModel/src/main/java/org/openapitools/client/JSON.java index d9bc6e301ef8..f9f55a2d3821 100644 --- a/samples/client/petstore/java/okhttp-gson-parcelableModel/src/main/java/org/openapitools/client/JSON.java +++ b/samples/client/petstore/java/okhttp-gson-parcelableModel/src/main/java/org/openapitools/client/JSON.java @@ -64,7 +64,8 @@ public Class getClassForElement(JsonElement readElement) { } }) ; - return fireBuilder.createGsonBuilder(); + GsonBuilder builder = fireBuilder.createGsonBuilder(); + return builder; } private static String getDiscriminatorValue(JsonElement readElement, String discriminatorField) { diff --git a/samples/client/petstore/java/okhttp-gson/.openapi-generator/VERSION b/samples/client/petstore/java/okhttp-gson/.openapi-generator/VERSION index 1c00c5181548..82602aa4190d 100644 --- a/samples/client/petstore/java/okhttp-gson/.openapi-generator/VERSION +++ b/samples/client/petstore/java/okhttp-gson/.openapi-generator/VERSION @@ -1 +1 @@ -3.0.2-SNAPSHOT \ No newline at end of file +3.0.3-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/java/okhttp-gson/src/main/java/org/openapitools/client/ApiClient.java b/samples/client/petstore/java/okhttp-gson/src/main/java/org/openapitools/client/ApiClient.java index b77423e8cac8..86ce63c9b936 100644 --- a/samples/client/petstore/java/okhttp-gson/src/main/java/org/openapitools/client/ApiClient.java +++ b/samples/client/petstore/java/okhttp-gson/src/main/java/org/openapitools/client/ApiClient.java @@ -897,7 +897,7 @@ public void onResponse(Response response) throws IOException { * @param Type * @param response Response * @param returnType Return type - * @throws ApiException If the response has a unsuccessful status code or + * @throws ApiException If the response has an unsuccessful status code or * fail to deserialize the response body * @return Type */ diff --git a/samples/client/petstore/java/okhttp-gson/src/main/java/org/openapitools/client/JSON.java b/samples/client/petstore/java/okhttp-gson/src/main/java/org/openapitools/client/JSON.java index d9bc6e301ef8..f9f55a2d3821 100644 --- a/samples/client/petstore/java/okhttp-gson/src/main/java/org/openapitools/client/JSON.java +++ b/samples/client/petstore/java/okhttp-gson/src/main/java/org/openapitools/client/JSON.java @@ -64,7 +64,8 @@ public Class getClassForElement(JsonElement readElement) { } }) ; - return fireBuilder.createGsonBuilder(); + GsonBuilder builder = fireBuilder.createGsonBuilder(); + return builder; } private static String getDiscriminatorValue(JsonElement readElement, String discriminatorField) { diff --git a/samples/client/petstore/java/okhttp-gson/src/test/java/org/openapitools/client/ApiClientTest.java b/samples/client/petstore/java/okhttp-gson/src/test/java/org/openapitools/client/ApiClientTest.java new file mode 100644 index 000000000000..5167afc326b6 --- /dev/null +++ b/samples/client/petstore/java/okhttp-gson/src/test/java/org/openapitools/client/ApiClientTest.java @@ -0,0 +1,330 @@ +package org.openapitools.client; + +import org.openapitools.client.auth.*; + +import java.text.DateFormat; +import java.text.SimpleDateFormat; +import java.util.*; +import java.util.TimeZone; + +import org.junit.*; +import static org.junit.Assert.*; + + +public class ApiClientTest { + ApiClient apiClient; + JSON json; + + @Before + public void setup() { + apiClient = new ApiClient(); + json = apiClient.getJSON(); + } + + @Test + public void testIsJsonMime() { + assertFalse(apiClient.isJsonMime(null)); + assertFalse(apiClient.isJsonMime("")); + assertFalse(apiClient.isJsonMime("text/plain")); + assertFalse(apiClient.isJsonMime("application/xml")); + assertFalse(apiClient.isJsonMime("application/jsonp")); + assertFalse(apiClient.isJsonMime("example/json")); + assertFalse(apiClient.isJsonMime("example/foo+bar+jsonx")); + assertFalse(apiClient.isJsonMime("example/foo+bar+xjson")); + + assertTrue(apiClient.isJsonMime("application/json")); + assertTrue(apiClient.isJsonMime("application/json; charset=UTF8")); + assertTrue(apiClient.isJsonMime("APPLICATION/JSON")); + + assertTrue(apiClient.isJsonMime("application/problem+json")); + assertTrue(apiClient.isJsonMime("APPLICATION/PROBLEM+JSON")); + assertTrue(apiClient.isJsonMime("application/json\t")); + assertTrue(apiClient.isJsonMime("example/foo+bar+json")); + assertTrue(apiClient.isJsonMime("example/foo+json;x;y")); + assertTrue(apiClient.isJsonMime("example/foo+json\t;")); + assertTrue(apiClient.isJsonMime("Example/fOO+JSON")); + + assertTrue(apiClient.isJsonMime("application/json-patch+json")); + } + + @Test + public void testSelectHeaderAccept() { + String[] accepts = {"application/json", "application/xml"}; + assertEquals("application/json", apiClient.selectHeaderAccept(accepts)); + + accepts = new String[]{"APPLICATION/XML", "APPLICATION/JSON"}; + assertEquals("APPLICATION/JSON", apiClient.selectHeaderAccept(accepts)); + + accepts = new String[]{"application/xml", "application/json; charset=UTF8"}; + assertEquals("application/json; charset=UTF8", apiClient.selectHeaderAccept(accepts)); + + accepts = new String[]{"text/plain", "application/xml"}; + assertEquals("text/plain,application/xml", apiClient.selectHeaderAccept(accepts)); + + accepts = new String[]{}; + assertNull(apiClient.selectHeaderAccept(accepts)); + } + + @Test + public void testSelectHeaderContentType() { + String[] contentTypes = {"application/json", "application/xml"}; + assertEquals("application/json", apiClient.selectHeaderContentType(contentTypes)); + + contentTypes = new String[]{"APPLICATION/JSON", "APPLICATION/XML"}; + assertEquals("APPLICATION/JSON", apiClient.selectHeaderContentType(contentTypes)); + + contentTypes = new String[]{"application/xml", "application/json; charset=UTF8"}; + assertEquals("application/json; charset=UTF8", apiClient.selectHeaderContentType(contentTypes)); + + contentTypes = new String[]{"text/plain", "application/xml"}; + assertEquals("text/plain", apiClient.selectHeaderContentType(contentTypes)); + + contentTypes = new String[]{}; + assertEquals("application/json", apiClient.selectHeaderContentType(contentTypes)); + } + + @Test + public void testGetAuthentications() { + Map auths = apiClient.getAuthentications(); + + Authentication auth = auths.get("api_key"); + assertNotNull(auth); + assertTrue(auth instanceof ApiKeyAuth); + ApiKeyAuth apiKeyAuth = (ApiKeyAuth) auth; + assertEquals("header", apiKeyAuth.getLocation()); + assertEquals("api_key", apiKeyAuth.getParamName()); + + auth = auths.get("petstore_auth"); + assertTrue(auth instanceof OAuth); + assertSame(auth, apiClient.getAuthentication("petstore_auth")); + + assertNull(auths.get("unknown")); + + try { + auths.put("my_auth", new HttpBasicAuth()); + fail("the authentications returned should not be modifiable"); + } catch (UnsupportedOperationException e) { + } + } + + /* + @Test + public void testSetUsernameAndPassword() { + HttpBasicAuth auth = null; + for (Authentication _auth : apiClient.getAuthentications().values()) { + if (_auth instanceof HttpBasicAuth) { + auth = (HttpBasicAuth) _auth; + break; + } + } + auth.setUsername(null); + auth.setPassword(null); + + apiClient.setUsername("my-username"); + apiClient.setPassword("my-password"); + assertEquals("my-username", auth.getUsername()); + assertEquals("my-password", auth.getPassword()); + + // reset values + auth.setUsername(null); + auth.setPassword(null); + } + */ + + @Test + public void testSetApiKeyAndPrefix() { + ApiKeyAuth auth = null; + for (Authentication _auth : apiClient.getAuthentications().values()) { + if (_auth instanceof ApiKeyAuth) { + auth = (ApiKeyAuth) _auth; + break; + } + } + auth.setApiKey(null); + auth.setApiKeyPrefix(null); + + apiClient.setApiKey("my-api-key"); + apiClient.setApiKeyPrefix("Token"); + assertEquals("my-api-key", auth.getApiKey()); + assertEquals("Token", auth.getApiKeyPrefix()); + + // reset values + auth.setApiKey(null); + auth.setApiKeyPrefix(null); + } + + @Test + public void testGetAndSetConnectTimeout() { + // connect timeout defaults to 10 seconds + assertEquals(10000, apiClient.getConnectTimeout()); + assertEquals(10000, apiClient.getHttpClient().getConnectTimeout()); + + apiClient.setConnectTimeout(0); + assertEquals(0, apiClient.getConnectTimeout()); + assertEquals(0, apiClient.getHttpClient().getConnectTimeout()); + + apiClient.setConnectTimeout(10000); + } + + @Test + public void testGetAndSetReadTimeout() { + // read timeout defaults to 10 seconds + assertEquals(10000, apiClient.getReadTimeout()); + assertEquals(10000, apiClient.getHttpClient().getReadTimeout()); + + apiClient.setReadTimeout(0); + assertEquals(0, apiClient.getReadTimeout()); + assertEquals(0, apiClient.getHttpClient().getReadTimeout()); + + apiClient.setReadTimeout(10000); + } + + @Test + public void testGetAndSetWriteTimeout() { + // write timeout defaults to 10 seconds + assertEquals(10000, apiClient.getWriteTimeout()); + assertEquals(10000, apiClient.getHttpClient().getWriteTimeout()); + + apiClient.setWriteTimeout(0); + assertEquals(0, apiClient.getWriteTimeout()); + assertEquals(0, apiClient.getHttpClient().getWriteTimeout()); + + apiClient.setWriteTimeout(10000); + } + + @Test + public void testParameterToPairWhenNameIsInvalid() throws Exception { + List pairs_a = apiClient.parameterToPair(null, new Integer(1)); + List pairs_b = apiClient.parameterToPair("", new Integer(1)); + + assertTrue(pairs_a.isEmpty()); + assertTrue(pairs_b.isEmpty()); + } + + @Test + public void testParameterToPairWhenValueIsNull() throws Exception { + List pairs = apiClient.parameterToPair("param-a", null); + + assertTrue(pairs.isEmpty()); + } + + @Test + public void testParameterToPairWhenValueIsEmptyString() throws Exception { + // single empty string + List pairs = apiClient.parameterToPair("param-a", " "); + assertEquals(1, pairs.size()); + } + + @Test + public void testParameterToPairWhenValueIsNotCollection() throws Exception { + String name = "param-a"; + Integer value = 1; + + List pairs = apiClient.parameterToPair(name, value); + + assertEquals(1, pairs.size()); + assertEquals(value, Integer.valueOf(pairs.get(0).getValue())); + } + + @Test + public void testParameterToPairWhenValueIsCollection() throws Exception { + List values = new ArrayList(); + values.add("value-a"); + values.add(123); + values.add(new Date()); + + List pairs = apiClient.parameterToPair("param-a", values); + assertEquals(0, pairs.size()); + } + + @Test + public void testParameterToPairsWhenNameIsInvalid() throws Exception { + List objects = new ArrayList(); + objects.add(new Integer(1)); + + List pairs_a = apiClient.parameterToPairs("csv", null, objects); + List pairs_b = apiClient.parameterToPairs("csv", "", objects); + + assertTrue(pairs_a.isEmpty()); + assertTrue(pairs_b.isEmpty()); + } + + @Test + public void testParameterToPairsWhenValueIsNull() throws Exception { + List pairs = apiClient.parameterToPairs("csv", "param-a", null); + + assertTrue(pairs.isEmpty()); + } + + @Test + public void testParameterToPairsWhenValueIsEmptyStrings() throws Exception { + // list of empty strings + List strs = new ArrayList(); + strs.add(" "); + strs.add(" "); + strs.add(" "); + + List concatStrings = apiClient.parameterToPairs("csv", "param-a", strs); + + assertEquals(1, concatStrings.size()); + assertFalse(concatStrings.get(0).getValue().isEmpty()); // should contain some delimiters + } + + @Test + public void testParameterToPairsWhenValueIsCollection() throws Exception { + Map collectionFormatMap = new HashMap(); + collectionFormatMap.put("csv", ","); + collectionFormatMap.put("tsv", "\t"); + collectionFormatMap.put("ssv", " "); + collectionFormatMap.put("pipes", "|"); + collectionFormatMap.put("", ","); // no format, must default to csv + collectionFormatMap.put("unknown", ","); // all other formats, must default to csv + + String name = "param-a"; + + List values = new ArrayList(); + values.add("value-a"); + values.add(123); + values.add(new Date()); + + // check for multi separately + List multiPairs = apiClient.parameterToPairs("multi", name, values); + assertEquals(values.size(), multiPairs.size()); + for (int i = 0; i < values.size(); i++) { + assertEquals(apiClient.escapeString(apiClient.parameterToString(values.get(i))), multiPairs.get(i).getValue()); + } + + // all other formats + for (String collectionFormat : collectionFormatMap.keySet()) { + List pairs = apiClient.parameterToPairs(collectionFormat, name, values); + + assertEquals(1, pairs.size()); + + String delimiter = collectionFormatMap.get(collectionFormat); + if (!delimiter.equals(",")) { + // commas are not escaped because they are reserved characters in URIs + delimiter = apiClient.escapeString(delimiter); + } + String[] pairValueSplit = pairs.get(0).getValue().split(delimiter); + + // must equal input values + assertEquals(values.size(), pairValueSplit.length); + for (int i = 0; i < values.size(); i++) { + assertEquals(apiClient.escapeString(apiClient.parameterToString(values.get(i))), pairValueSplit[i]); + } + } + } + + @Test + public void testSanitizeFilename() { + assertEquals("sun", apiClient.sanitizeFilename("sun")); + assertEquals("sun.gif", apiClient.sanitizeFilename("sun.gif")); + assertEquals("sun.gif", apiClient.sanitizeFilename("../sun.gif")); + assertEquals("sun.gif", apiClient.sanitizeFilename("/var/tmp/sun.gif")); + assertEquals("sun.gif", apiClient.sanitizeFilename("./sun.gif")); + assertEquals("sun.gif", apiClient.sanitizeFilename("..\\sun.gif")); + assertEquals("sun.gif", apiClient.sanitizeFilename("\\var\\tmp\\sun.gif")); + assertEquals("sun.gif", apiClient.sanitizeFilename("c:\\var\\tmp\\sun.gif")); + assertEquals("sun.gif", apiClient.sanitizeFilename(".\\sun.gif")); + } +} diff --git a/samples/client/petstore/java/okhttp-gson/src/test/java/org/openapitools/client/ConfigurationTest.java b/samples/client/petstore/java/okhttp-gson/src/test/java/org/openapitools/client/ConfigurationTest.java new file mode 100644 index 000000000000..f05c230dc758 --- /dev/null +++ b/samples/client/petstore/java/okhttp-gson/src/test/java/org/openapitools/client/ConfigurationTest.java @@ -0,0 +1,15 @@ +package org.openapitools.client; + +import org.junit.*; +import static org.junit.Assert.*; + + +public class ConfigurationTest { + @Test + public void testDefaultApiClient() { + ApiClient apiClient = Configuration.getDefaultApiClient(); + assertNotNull(apiClient); + assertEquals("http://petstore.swagger.io:80/v2", apiClient.getBasePath()); + assertFalse(apiClient.isDebugging()); + } +} diff --git a/samples/client/petstore/java/okhttp-gson/src/test/java/org/openapitools/client/JSONTest.java b/samples/client/petstore/java/okhttp-gson/src/test/java/org/openapitools/client/JSONTest.java new file mode 100644 index 000000000000..e7687d0b33b1 --- /dev/null +++ b/samples/client/petstore/java/okhttp-gson/src/test/java/org/openapitools/client/JSONTest.java @@ -0,0 +1,201 @@ +package org.openapitools.client; + +import com.google.gson.reflect.TypeToken; + +import org.openapitools.client.model.Order; + +import java.lang.Exception; +import java.lang.reflect.Type; +import java.nio.charset.StandardCharsets; +import java.text.DateFormat; +import java.text.SimpleDateFormat; +import java.util.Calendar; +import java.util.Date; +import java.util.GregorianCalendar; +import java.util.TimeZone; + +import okio.ByteString; +import org.junit.*; +import org.threeten.bp.LocalDate; +import org.threeten.bp.OffsetDateTime; +import org.threeten.bp.ZoneId; +import org.threeten.bp.ZoneOffset; +import org.threeten.bp.format.DateTimeFormatter; + +import static org.junit.Assert.*; + +public class JSONTest { + private ApiClient apiClient = null; + private JSON json = null; + private Order order = null; + + @Before + public void setup() { + apiClient = new ApiClient(); + json = apiClient.getJSON(); + order = new Order(); + } + + @Test + public void testSqlDateTypeAdapter() { + final String str = "\"2015-11-07\""; + final java.sql.Date date = java.sql.Date.valueOf("2015-11-07"); + + assertEquals(str, json.serialize(date)); + assertEquals(json.deserialize(str, java.sql.Date.class), date); + assertEquals(json.deserialize("\"2015-11-07T03:49:09.356" + getCurrentTimezoneOffset() + "\"", java.sql.Date.class).toString(), date.toString()); + + // custom date format: without day + DateFormat format = new SimpleDateFormat("yyyy-MM"); + apiClient.setSqlDateFormat(format); + String dateStr = "\"2015-11\""; + assertEquals(dateStr, json.serialize(json.deserialize("\"2015-11-07T03:49:09Z\"", java.sql.Date.class))); + assertEquals(dateStr, json.serialize(json.deserialize("\"2015-11\"", java.sql.Date.class))); + } + + @Test + public void testDateTypeAdapter() { + Calendar cal = new GregorianCalendar(2015, 10, 7, 3, 49, 9); + cal.setTimeZone(TimeZone.getTimeZone("UTC")); + + assertEquals(json.deserialize("\"2015-11-07T05:49:09+02\"", Date.class), cal.getTime()); + + cal.set(Calendar.MILLISECOND, 300); + assertEquals(json.deserialize("\"2015-11-07T03:49:09.3Z\"", Date.class), cal.getTime()); + + cal.set(Calendar.MILLISECOND, 356); + Date date = cal.getTime(); + + final String utcDate = "\"2015-11-07T03:49:09.356Z\""; + assertEquals(json.deserialize(utcDate, Date.class), date); + assertEquals(json.deserialize("\"2015-11-07T03:49:09.356+00:00\"", Date.class), date); + assertEquals(json.deserialize("\"2015-11-07T05:49:09.356+02:00\"", Date.class), date); + assertEquals(json.deserialize("\"2015-11-07T02:49:09.356-01:00\"", Date.class), date); + assertEquals(json.deserialize("\"2015-11-07T03:49:09.356Z\"", Date.class), date); + assertEquals(json.deserialize("\"2015-11-07T03:49:09.356+00\"", Date.class), date); + assertEquals(json.deserialize("\"2015-11-07T02:49:09.356-0100\"", Date.class), date); + assertEquals(json.deserialize("\"2015-11-07T03:49:09.356456789Z\"", Date.class), date); + + assertEquals(utcDate, json.serialize(date)); + + // custom datetime format: without milli-seconds, custom time zone + DateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssXXX"); + format.setTimeZone(TimeZone.getTimeZone("GMT+10")); + apiClient.setDateFormat(format); + + String dateStr = "\"2015-11-07T13:49:09+10:00\""; + assertEquals(dateStr, json.serialize(json.deserialize("\"2015-11-07T03:49:09+00:00\"", Date.class))); + assertEquals(dateStr, json.serialize(json.deserialize("\"2015-11-07T03:49:09Z\"", Date.class))); + assertEquals(dateStr, json.serialize(json.deserialize("\"2015-11-07T00:49:09-03:00\"", Date.class))); + + try { + // invalid time zone format + json.deserialize("\"2015-11-07T03:49:09+00\"", Date.class); + fail("json parsing should fail"); + } catch (RuntimeException e) { + // OK + } + try { + // unexpected miliseconds + json.deserialize("\"2015-11-07T03:49:09.000Z\"", Date.class); + fail("json parsing should fail"); + } catch (RuntimeException e) { + // OK + } + + } + + @Test + public void testOffsetDateTimeTypeAdapter() { + final String str = "\"2016-09-09T08:02:03.123-03:00\""; + OffsetDateTime date = OffsetDateTime.of(2016, 9, 9, 8, 2, 3, 123000000, ZoneOffset.of("-3")); + + assertEquals(str, json.serialize(date)); + //Use toString() instead of isEqual to verify that the offset is preserved + assertEquals(json.deserialize(str, OffsetDateTime.class).toString(), date.toString()); + } + + @Test + public void testLocalDateTypeAdapter() { + final String str = "\"2016-09-09\""; + final LocalDate date = LocalDate.of(2016, 9, 9); + + assertEquals(str, json.serialize(date)); + assertEquals(json.deserialize(str, LocalDate.class), date); + } + + + @Test + public void testDefaultDate() throws Exception { + final DateTimeFormatter datetimeFormat = DateTimeFormatter.ISO_OFFSET_DATE_TIME; + final String dateStr = "2015-11-07T14:11:05.267Z"; + order.setShipDate(datetimeFormat.parse(dateStr, OffsetDateTime.FROM)); + + String str = json.serialize(order); + Type type = new TypeToken() { }.getType(); + Order o = json.deserialize(str, type); + assertEquals(dateStr, datetimeFormat.format(o.getShipDate())); + } + + @Test + public void testCustomDate() throws Exception { + final DateTimeFormatter datetimeFormat = DateTimeFormatter.ISO_OFFSET_DATE_TIME.withZone(ZoneId.of("Etc/GMT+2")); + final String dateStr = "2015-11-07T14:11:05-02:00"; + order.setShipDate(datetimeFormat.parse(dateStr, OffsetDateTime.FROM)); + + String str = json.serialize(order); + Type type = new TypeToken() { }.getType(); + Order o = json.deserialize(str, type); + assertEquals(dateStr, datetimeFormat.format(o.getShipDate())); + } + + @Test + public void testByteArrayTypeAdapterSerialization() { + // Arrange + final String expectedBytesAsString = "Let's pretend this a jpg or something"; + final byte[] expectedBytes = expectedBytesAsString.getBytes(StandardCharsets.UTF_8); + + // Act + String serializedBytesWithQuotes = json.serialize(expectedBytes); + + // Assert + String serializedBytes = serializedBytesWithQuotes.substring(1, serializedBytesWithQuotes.length() - 1); + if (json.getGson().htmlSafe()) { + serializedBytes = serializedBytes.replaceAll("\\\\u003d", "="); + } + ByteString actualAsByteString = ByteString.decodeBase64(serializedBytes); + byte[] actualBytes = actualAsByteString.toByteArray(); + assertEquals(expectedBytesAsString, new String(actualBytes, StandardCharsets.UTF_8)); + } + + @Test + public void testByteArrayTypeAdapterDeserialization() { + // Arrange + final String expectedBytesAsString = "Let's pretend this a jpg or something"; + final byte[] expectedBytes = expectedBytesAsString.getBytes(StandardCharsets.UTF_8); + final ByteString expectedByteString = ByteString.of(expectedBytes); + final String serializedBytes = expectedByteString.base64(); + final String serializedBytesWithQuotes = "\"" + serializedBytes + "\""; + Type type = new TypeToken() { }.getType(); + + // Act + byte[] actualDeserializedBytes = json.deserialize(serializedBytesWithQuotes, type); + + // Assert + assertEquals(expectedBytesAsString, new String(actualDeserializedBytes, StandardCharsets.UTF_8)); + } + + // Obtained 22JAN2018 from stackoverflow answer by PuguaSoft https://stackoverflow.com/questions/11399491/java-timezone-offset + // Direct link https://stackoverflow.com/a/16680815/3166133 + public static String getCurrentTimezoneOffset() { + + TimeZone tz = TimeZone.getDefault(); + Calendar cal = GregorianCalendar.getInstance(tz); + int offsetInMillis = tz.getOffset(cal.getTimeInMillis()); + + String offset = String.format("%02d:%02d", Math.abs(offsetInMillis / 3600000), Math.abs((offsetInMillis / 60000) % 60)); + offset = (offsetInMillis >= 0 ? "+" : "-") + offset; + + return offset; + } +} \ No newline at end of file diff --git a/samples/client/petstore/java/okhttp-gson/src/test/java/org/openapitools/client/StringUtilTest.java b/samples/client/petstore/java/okhttp-gson/src/test/java/org/openapitools/client/StringUtilTest.java new file mode 100644 index 000000000000..aa7c81759ec4 --- /dev/null +++ b/samples/client/petstore/java/okhttp-gson/src/test/java/org/openapitools/client/StringUtilTest.java @@ -0,0 +1,33 @@ +package org.openapitools.client; + +import org.junit.*; +import static org.junit.Assert.*; + + +public class StringUtilTest { + @Test + public void testContainsIgnoreCase() { + assertTrue(StringUtil.containsIgnoreCase(new String[]{"abc"}, "abc")); + assertTrue(StringUtil.containsIgnoreCase(new String[]{"abc"}, "ABC")); + assertTrue(StringUtil.containsIgnoreCase(new String[]{"ABC"}, "abc")); + assertTrue(StringUtil.containsIgnoreCase(new String[]{null, "abc"}, "ABC")); + assertTrue(StringUtil.containsIgnoreCase(new String[]{null, "abc"}, null)); + + assertFalse(StringUtil.containsIgnoreCase(new String[]{"abc"}, "def")); + assertFalse(StringUtil.containsIgnoreCase(new String[]{}, "ABC")); + assertFalse(StringUtil.containsIgnoreCase(new String[]{}, null)); + } + + @Test + public void testJoin() { + String[] array = {"aa", "bb", "cc"}; + assertEquals("aa,bb,cc", StringUtil.join(array, ",")); + assertEquals("aa, bb, cc", StringUtil.join(array, ", ")); + assertEquals("aabbcc", StringUtil.join(array, "")); + assertEquals("aa bb cc", StringUtil.join(array, " ")); + assertEquals("aa\nbb\ncc", StringUtil.join(array, "\n")); + + assertEquals("", StringUtil.join(new String[]{}, ",")); + assertEquals("abc", StringUtil.join(new String[]{"abc"}, ",")); + } +} diff --git a/samples/client/petstore/java/okhttp-gson/src/test/java/org/openapitools/client/auth/ApiKeyAuthTest.java b/samples/client/petstore/java/okhttp-gson/src/test/java/org/openapitools/client/auth/ApiKeyAuthTest.java new file mode 100644 index 000000000000..d5a88132307c --- /dev/null +++ b/samples/client/petstore/java/okhttp-gson/src/test/java/org/openapitools/client/auth/ApiKeyAuthTest.java @@ -0,0 +1,76 @@ +package org.openapitools.client.auth; + +import java.util.HashMap; +import java.util.ArrayList; +import java.util.Map; +import java.util.List; + +import org.openapitools.client.Pair; +import org.junit.*; +import static org.junit.Assert.*; + + +public class ApiKeyAuthTest { + @Test + public void testApplyToParamsInQuery() { + List queryParams = new ArrayList(); + Map headerParams = new HashMap(); + + ApiKeyAuth auth = new ApiKeyAuth("query", "api_key"); + auth.setApiKey("my-api-key"); + auth.applyToParams(queryParams, headerParams); + + assertEquals(1, queryParams.size()); + for (Pair queryParam : queryParams) { + assertEquals("my-api-key", queryParam.getValue()); + } + + // no changes to header parameters + assertEquals(0, headerParams.size()); + } + + @Test + public void testApplyToParamsInQueryWithNullValue() { + List queryParams = new ArrayList(); + Map headerParams = new HashMap(); + + ApiKeyAuth auth = new ApiKeyAuth("query", "api_key"); + auth.setApiKey(null); + auth.applyToParams(queryParams, headerParams); + + // no changes to parameters + assertEquals(0, queryParams.size()); + assertEquals(0, headerParams.size()); + } + + @Test + public void testApplyToParamsInHeaderWithPrefix() { + List queryParams = new ArrayList(); + Map headerParams = new HashMap(); + + ApiKeyAuth auth = new ApiKeyAuth("header", "X-API-TOKEN"); + auth.setApiKey("my-api-token"); + auth.setApiKeyPrefix("Token"); + auth.applyToParams(queryParams, headerParams); + + // no changes to query parameters + assertEquals(0, queryParams.size()); + assertEquals(1, headerParams.size()); + assertEquals("Token my-api-token", headerParams.get("X-API-TOKEN")); + } + + @Test + public void testApplyToParamsInHeaderWithNullValue() { + List queryParams = new ArrayList(); + Map headerParams = new HashMap(); + + ApiKeyAuth auth = new ApiKeyAuth("header", "X-API-TOKEN"); + auth.setApiKey(null); + auth.setApiKeyPrefix("Token"); + auth.applyToParams(queryParams, headerParams); + + // no changes to parameters + assertEquals(0, queryParams.size()); + assertEquals(0, headerParams.size()); + } +} diff --git a/samples/client/petstore/java/okhttp-gson/src/test/java/org/openapitools/client/auth/HttpBasicAuthTest.java b/samples/client/petstore/java/okhttp-gson/src/test/java/org/openapitools/client/auth/HttpBasicAuthTest.java new file mode 100644 index 000000000000..d27a15f4dc07 --- /dev/null +++ b/samples/client/petstore/java/okhttp-gson/src/test/java/org/openapitools/client/auth/HttpBasicAuthTest.java @@ -0,0 +1,62 @@ +package org.openapitools.client.auth; + +import java.util.HashMap; +import java.util.ArrayList; +import java.util.Map; +import java.util.List; + +import org.openapitools.client.Pair; +import org.junit.*; +import static org.junit.Assert.*; + + +public class HttpBasicAuthTest { + HttpBasicAuth auth = null; + + @Before + public void setup() { + auth = new HttpBasicAuth(); + } + + @Test + public void testApplyToParams() { + List queryParams = new ArrayList(); + Map headerParams = new HashMap(); + + auth.setUsername("my-username"); + auth.setPassword("my-password"); + auth.applyToParams(queryParams, headerParams); + + // no changes to query parameters + assertEquals(0, queryParams.size()); + assertEquals(1, headerParams.size()); + // the string below is base64-encoded result of "my-username:my-password" with the "Basic " prefix + String expected = "Basic bXktdXNlcm5hbWU6bXktcGFzc3dvcmQ="; + assertEquals(expected, headerParams.get("Authorization")); + + // null username should be treated as empty string + auth.setUsername(null); + auth.applyToParams(queryParams, headerParams); + // the string below is base64-encoded result of ":my-password" with the "Basic " prefix + expected = "Basic Om15LXBhc3N3b3Jk"; + assertEquals(expected, headerParams.get("Authorization")); + + // null password should be treated as empty string + auth.setUsername("my-username"); + auth.setPassword(null); + auth.applyToParams(queryParams, headerParams); + // the string below is base64-encoded result of "my-username:" with the "Basic " prefix + expected = "Basic bXktdXNlcm5hbWU6"; + assertEquals(expected, headerParams.get("Authorization")); + + // null username and password should be ignored + queryParams = new ArrayList(); + headerParams = new HashMap(); + auth.setUsername(null); + auth.setPassword(null); + auth.applyToParams(queryParams, headerParams); + // no changes to parameters + assertEquals(0, queryParams.size()); + assertEquals(0, headerParams.size()); + } +} diff --git a/samples/client/petstore/java/okhttp-gson/src/test/java/org/openapitools/client/model/EnumValueTest.java b/samples/client/petstore/java/okhttp-gson/src/test/java/org/openapitools/client/model/EnumValueTest.java new file mode 100644 index 000000000000..73440e547b25 --- /dev/null +++ b/samples/client/petstore/java/okhttp-gson/src/test/java/org/openapitools/client/model/EnumValueTest.java @@ -0,0 +1,56 @@ +package org.openapitools.client.model; + +import org.junit.Test; + +import com.google.gson.Gson; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; + +public class EnumValueTest { + + @Test + public void testEnumClass() { + assertEquals(EnumClass._ABC.toString(), "_abc"); + assertEquals(EnumClass._EFG.toString(), "-efg"); + assertEquals(EnumClass._XYZ_.toString(), "(xyz)"); + } + + @Test + public void testEnumTest() { + // test enum value + EnumTest enumTest = new EnumTest(); + enumTest.setEnumString(EnumTest.EnumStringEnum.LOWER); + enumTest.setEnumInteger(EnumTest.EnumIntegerEnum.NUMBER_1); + enumTest.setEnumNumber(EnumTest.EnumNumberEnum.NUMBER_1_DOT_1); + + assertEquals(EnumTest.EnumStringEnum.UPPER.toString(), "UPPER"); + assertEquals(EnumTest.EnumStringEnum.UPPER.getValue(), "UPPER"); + assertEquals(EnumTest.EnumStringEnum.LOWER.toString(), "lower"); + assertEquals(EnumTest.EnumStringEnum.LOWER.getValue(), "lower"); + + assertEquals(EnumTest.EnumIntegerEnum.NUMBER_1.toString(), "1"); + assertTrue(EnumTest.EnumIntegerEnum.NUMBER_1.getValue() == 1); + assertEquals(EnumTest.EnumIntegerEnum.NUMBER_MINUS_1.toString(), "-1"); + assertTrue(EnumTest.EnumIntegerEnum.NUMBER_MINUS_1.getValue() == -1); + + assertEquals(EnumTest.EnumNumberEnum.NUMBER_1_DOT_1.toString(), "1.1"); + assertTrue(EnumTest.EnumNumberEnum.NUMBER_1_DOT_1.getValue() == 1.1); + assertEquals(EnumTest.EnumNumberEnum.NUMBER_MINUS_1_DOT_2.toString(), "-1.2"); + assertTrue(EnumTest.EnumNumberEnum.NUMBER_MINUS_1_DOT_2.getValue() == -1.2); + + // test serialization + Gson gson = new Gson(); + String json = gson.toJson(enumTest); + assertEquals(json, "{\"enum_string\":\"lower\",\"enum_integer\":1,\"enum_number\":1.1}"); + + // test deserialization + EnumTest fromString = gson.fromJson(json, EnumTest.class); + assertEquals(fromString.getEnumString().toString(), "lower"); + assertEquals(fromString.getEnumString().getValue(), "lower"); + assertEquals(fromString.getEnumInteger().toString(), "1"); + assertTrue(fromString.getEnumInteger().getValue() == 1); + assertEquals(fromString.getEnumNumber().toString(), "1.1"); + assertTrue(fromString.getEnumNumber().getValue() == 1.1); + } +} diff --git a/samples/client/petstore/java/rest-assured/.openapi-generator/VERSION b/samples/client/petstore/java/rest-assured/.openapi-generator/VERSION index 1c00c5181548..82602aa4190d 100644 --- a/samples/client/petstore/java/rest-assured/.openapi-generator/VERSION +++ b/samples/client/petstore/java/rest-assured/.openapi-generator/VERSION @@ -1 +1 @@ -3.0.2-SNAPSHOT \ No newline at end of file +3.0.3-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/java/rest-assured/src/main/java/org/openapitools/client/JSON.java b/samples/client/petstore/java/rest-assured/src/main/java/org/openapitools/client/JSON.java index d9bc6e301ef8..f9f55a2d3821 100644 --- a/samples/client/petstore/java/rest-assured/src/main/java/org/openapitools/client/JSON.java +++ b/samples/client/petstore/java/rest-assured/src/main/java/org/openapitools/client/JSON.java @@ -64,7 +64,8 @@ public Class getClassForElement(JsonElement readElement) { } }) ; - return fireBuilder.createGsonBuilder(); + GsonBuilder builder = fireBuilder.createGsonBuilder(); + return builder; } private static String getDiscriminatorValue(JsonElement readElement, String discriminatorField) { diff --git a/samples/client/petstore/java/resteasy/.openapi-generator/VERSION b/samples/client/petstore/java/resteasy/.openapi-generator/VERSION index 1c00c5181548..82602aa4190d 100644 --- a/samples/client/petstore/java/resteasy/.openapi-generator/VERSION +++ b/samples/client/petstore/java/resteasy/.openapi-generator/VERSION @@ -1 +1 @@ -3.0.2-SNAPSHOT \ No newline at end of file +3.0.3-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/java/resttemplate-withXml/.openapi-generator/VERSION b/samples/client/petstore/java/resttemplate-withXml/.openapi-generator/VERSION index 1c00c5181548..82602aa4190d 100644 --- a/samples/client/petstore/java/resttemplate-withXml/.openapi-generator/VERSION +++ b/samples/client/petstore/java/resttemplate-withXml/.openapi-generator/VERSION @@ -1 +1 @@ -3.0.2-SNAPSHOT \ No newline at end of file +3.0.3-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/java/resttemplate/.openapi-generator/VERSION b/samples/client/petstore/java/resttemplate/.openapi-generator/VERSION index 1c00c5181548..82602aa4190d 100644 --- a/samples/client/petstore/java/resttemplate/.openapi-generator/VERSION +++ b/samples/client/petstore/java/resttemplate/.openapi-generator/VERSION @@ -1 +1 @@ -3.0.2-SNAPSHOT \ No newline at end of file +3.0.3-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/java/resttemplate/src/test/java/org/openapitools/client/ApiClientTest.java b/samples/client/petstore/java/resttemplate/src/test/java/org/openapitools/client/ApiClientTest.java new file mode 100644 index 000000000000..2113f5d24535 --- /dev/null +++ b/samples/client/petstore/java/resttemplate/src/test/java/org/openapitools/client/ApiClientTest.java @@ -0,0 +1,254 @@ +package org.openapitools.client; + +import org.openapitools.client.auth.*; + +import java.text.DateFormat; +import java.text.SimpleDateFormat; +import java.util.*; + +import org.junit.*; +import org.springframework.http.MediaType; +import org.springframework.util.MultiValueMap; + +import static org.junit.Assert.*; + + +public class ApiClientTest { + ApiClient apiClient = null; + + @Before + public void setup() { + apiClient = new ApiClient(); + } + + /** + * + */ + @Test + public void testParseAndFormatDate() { + // default date format + String dateStr = "2015-11-07T03:49:09.356Z"; + assertEquals(dateStr, apiClient.formatDate(apiClient.parseDate("2015-11-07T03:49:09.356+00:00"))); + assertEquals(dateStr, apiClient.formatDate(apiClient.parseDate("2015-11-07T03:49:09.356Z"))); + assertEquals(dateStr, apiClient.formatDate(apiClient.parseDate("2015-11-07T05:49:09.356+02:00"))); + assertEquals(dateStr, apiClient.formatDate(apiClient.parseDate("2015-11-07T02:49:09.356-01:00"))); + + // custom date format: without milli-seconds, custom time zone + DateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssXXX"); + format.setTimeZone(TimeZone.getTimeZone("GMT+10")); + apiClient.setDateFormat(format); + dateStr = "2015-11-07T13:49:09+10:00"; + assertEquals(dateStr, apiClient.formatDate(apiClient.parseDate("2015-11-07T03:49:09+00:00"))); + assertEquals(dateStr, apiClient.formatDate(apiClient.parseDate("2015-11-07T03:49:09Z"))); + assertEquals(dateStr, apiClient.formatDate(apiClient.parseDate("2015-11-07T00:49:09-03:00"))); + assertEquals(dateStr, apiClient.formatDate(apiClient.parseDate("2015-11-07T13:49:09+10:00"))); + } + + @Test + public void testIsJsonMime() { + assertFalse(apiClient.isJsonMime((String) null)); + assertFalse(apiClient.isJsonMime("")); + assertFalse(apiClient.isJsonMime("text/plain")); + assertFalse(apiClient.isJsonMime("application/xml")); + assertFalse(apiClient.isJsonMime("application/jsonp")); + assertFalse(apiClient.isJsonMime("example/json")); + assertFalse(apiClient.isJsonMime("example/foo+bar+jsonx")); + assertFalse(apiClient.isJsonMime("example/foo+bar+xjson")); + + assertTrue(apiClient.isJsonMime("application/json")); + assertTrue(apiClient.isJsonMime("application/json; charset=UTF8")); + assertTrue(apiClient.isJsonMime("APPLICATION/JSON")); + + assertTrue(apiClient.isJsonMime("application/problem+json")); + assertTrue(apiClient.isJsonMime("APPLICATION/PROBLEM+JSON")); + assertTrue(apiClient.isJsonMime("application/json\t")); + assertTrue(apiClient.isJsonMime("example/foo+bar+json")); + assertTrue(apiClient.isJsonMime("example/foo+json;x;y")); + assertTrue(apiClient.isJsonMime("example/foo+json\t;")); + assertTrue(apiClient.isJsonMime("Example/fOO+JSON")); + } + + @Test + public void testSelectHeaderAccept() { + String[] accepts = {"application/json", "application/xml"}; + assertEquals(Arrays.asList(MediaType.parseMediaType("application/json")), apiClient.selectHeaderAccept(accepts)); + + accepts = new String[]{"APPLICATION/XML", "APPLICATION/JSON"}; + assertEquals(Arrays.asList(MediaType.parseMediaType("APPLICATION/JSON")), apiClient.selectHeaderAccept(accepts)); + + accepts = new String[]{"application/xml", "application/json; charset=UTF8"}; + assertEquals(Arrays.asList(MediaType.parseMediaType("application/json; charset=UTF8")), apiClient.selectHeaderAccept(accepts)); + + accepts = new String[]{"text/plain", "application/xml"}; + assertEquals(Arrays.asList(MediaType.parseMediaType("text/plain"),MediaType.parseMediaType("application/xml")), apiClient.selectHeaderAccept(accepts)); + + accepts = new String[]{}; + assertNull(apiClient.selectHeaderAccept(accepts)); + } + + @Test + public void testSelectHeaderContentType() { + String[] contentTypes = {"application/json", "application/xml"}; + assertEquals(MediaType.parseMediaType("application/json"), apiClient.selectHeaderContentType(contentTypes)); + + contentTypes = new String[]{"APPLICATION/JSON", "APPLICATION/XML"}; + assertEquals(MediaType.parseMediaType("APPLICATION/JSON"), apiClient.selectHeaderContentType(contentTypes)); + + contentTypes = new String[]{"application/xml", "application/json; charset=UTF8"}; + assertEquals(MediaType.parseMediaType("application/json; charset=UTF8"), apiClient.selectHeaderContentType(contentTypes)); + + contentTypes = new String[]{"text/plain", "application/xml"}; + assertEquals(MediaType.parseMediaType("text/plain"), apiClient.selectHeaderContentType(contentTypes)); + + contentTypes = new String[]{}; + assertEquals(MediaType.parseMediaType("application/json"), apiClient.selectHeaderContentType(contentTypes)); + } + + @Test + public void testGetAuthentications() { + Map auths = apiClient.getAuthentications(); + + Authentication auth = auths.get("api_key"); + assertNotNull(auth); + assertTrue(auth instanceof ApiKeyAuth); + ApiKeyAuth apiKeyAuth = (ApiKeyAuth) auth; + assertEquals("header", apiKeyAuth.getLocation()); + assertEquals("api_key", apiKeyAuth.getParamName()); + + auth = auths.get("petstore_auth"); + assertTrue(auth instanceof OAuth); + assertSame(auth, apiClient.getAuthentication("petstore_auth")); + + assertNull(auths.get("unknown")); + + try { + auths.put("my_auth", new HttpBasicAuth()); + fail("the authentications returned should not be modifiable"); + } catch (UnsupportedOperationException e) { + } + } + + @Ignore("There is no more basic auth in petstore security definitions") + @Test + public void testSetUsernameAndPassword() { + HttpBasicAuth auth = null; + for (Authentication _auth : apiClient.getAuthentications().values()) { + if (_auth instanceof HttpBasicAuth) { + auth = (HttpBasicAuth) _auth; + break; + } + } + auth.setUsername(null); + auth.setPassword(null); + + apiClient.setUsername("my-username"); + apiClient.setPassword("my-password"); + assertEquals("my-username", auth.getUsername()); + assertEquals("my-password", auth.getPassword()); + + // reset values + auth.setUsername(null); + auth.setPassword(null); + } + + @Test + public void testSetApiKeyAndPrefix() { + ApiKeyAuth auth = null; + for (Authentication _auth : apiClient.getAuthentications().values()) { + if (_auth instanceof ApiKeyAuth) { + auth = (ApiKeyAuth) _auth; + break; + } + } + auth.setApiKey(null); + auth.setApiKeyPrefix(null); + + apiClient.setApiKey("my-api-key"); + apiClient.setApiKeyPrefix("Token"); + assertEquals("my-api-key", auth.getApiKey()); + assertEquals("Token", auth.getApiKeyPrefix()); + + // reset values + auth.setApiKey(null); + auth.setApiKeyPrefix(null); + } + + @Test + public void testParameterToMultiValueMapWhenNameIsInvalid() throws Exception { + MultiValueMap pairs_a = apiClient.parameterToMultiValueMap(ApiClient.CollectionFormat.CSV, null, new Integer(1)); + MultiValueMap pairs_b = apiClient.parameterToMultiValueMap(ApiClient.CollectionFormat.CSV, "", new Integer(1)); + + assertTrue(pairs_a.isEmpty()); + assertTrue(pairs_b.isEmpty()); + } + + @Test + public void testParameterToMultiValueMapWhenValueIsNull() throws Exception { + MultiValueMap pairs = apiClient.parameterToMultiValueMap(ApiClient.CollectionFormat.CSV, "param-a", null); + + assertTrue(pairs.isEmpty()); + } + + @Test + public void testParameterToMultiValueMapWhenValueIsEmptyStrings() throws Exception { + + // single empty string + MultiValueMap pairs = apiClient.parameterToMultiValueMap(ApiClient.CollectionFormat.CSV, "param-a", " "); + assertEquals(1, pairs.size()); + + // list of empty strings + List strs = new ArrayList(); + strs.add(" "); + strs.add(" "); + strs.add(" "); + + MultiValueMap concatStrings = apiClient.parameterToMultiValueMap(ApiClient.CollectionFormat.CSV, "param-a", strs); + + assertEquals(1, concatStrings.get("param-a").size()); + assertFalse(concatStrings.get("param-a").isEmpty()); // should contain some delimiters + } + + @Test + public void testParameterToMultiValueMapWhenValueIsNotCollection() throws Exception { + String name = "param-a"; + Integer value = 1; + + MultiValueMap pairs = apiClient.parameterToMultiValueMap(ApiClient.CollectionFormat.CSV, name, value); + + assertEquals(1, pairs.get(name).size()); + assertEquals(value, Integer.valueOf(pairs.get(name).get(0))); + } + + @Test + public void testParameterToMultiValueMapWhenValueIsCollection() throws Exception { + Map collectionFormatMap = new HashMap(); + collectionFormatMap.put(ApiClient.CollectionFormat.CSV, ","); + collectionFormatMap.put(ApiClient.CollectionFormat.TSV, "\t"); + collectionFormatMap.put(ApiClient.CollectionFormat.SSV, " "); + collectionFormatMap.put(ApiClient.CollectionFormat.PIPES, "\\|"); + collectionFormatMap.put(null, ","); // no format, must default to csv + + String name = "param-a"; + + List values = new ArrayList(); + values.add("value-a"); + values.add(123); + values.add(new Date()); + + // check for multi separately + MultiValueMap multiValueMap = apiClient.parameterToMultiValueMap(ApiClient.CollectionFormat.MULTI, name, values); + assertEquals(values.size(), multiValueMap.get(name).size()); + + // all other formats + for (ApiClient.CollectionFormat collectionFormat : collectionFormatMap.keySet()) { + MultiValueMap pairs = apiClient.parameterToMultiValueMap(collectionFormat, name, values); + + assertEquals(1, pairs.size()); + + String delimiter = collectionFormatMap.get(collectionFormat); + String[] pairValueSplit = pairs.get(name).get(0).split(delimiter); + + assertEquals(values.size(), pairValueSplit.length); + } + } +} diff --git a/samples/client/petstore/java/resttemplate/src/test/java/org/openapitools/client/auth/ApiKeyAuthTest.java b/samples/client/petstore/java/resttemplate/src/test/java/org/openapitools/client/auth/ApiKeyAuthTest.java new file mode 100644 index 000000000000..eef07a5309c8 --- /dev/null +++ b/samples/client/petstore/java/resttemplate/src/test/java/org/openapitools/client/auth/ApiKeyAuthTest.java @@ -0,0 +1,47 @@ +package org.openapitools.client.auth; + +import java.util.HashMap; +import java.util.ArrayList; +import java.util.Map; +import java.util.List; + +import org.junit.*; +import org.springframework.http.HttpHeaders; +import org.springframework.util.LinkedMultiValueMap; +import org.springframework.util.MultiValueMap; + +import static org.junit.Assert.*; + +public class ApiKeyAuthTest { + @Test + public void testApplyToParamsInQuery() { + MultiValueMap queryParams = new LinkedMultiValueMap(); + HttpHeaders headerParams = new HttpHeaders(); + + ApiKeyAuth auth = new ApiKeyAuth("query", "api_key"); + auth.setApiKey("my-api-key"); + auth.applyToParams(queryParams, headerParams); + + assertEquals(1, queryParams.size()); + assertEquals("my-api-key", queryParams.get("api_key").get(0)); + + // no changes to header parameters + assertEquals(0, headerParams.size()); + } + + @Test + public void testApplyToParamsInHeaderWithPrefix() { + MultiValueMap queryParams = new LinkedMultiValueMap(); + HttpHeaders headerParams = new HttpHeaders(); + + ApiKeyAuth auth = new ApiKeyAuth("header", "X-API-TOKEN"); + auth.setApiKey("my-api-token"); + auth.setApiKeyPrefix("Token"); + auth.applyToParams(queryParams, headerParams); + + // no changes to query parameters + assertEquals(0, queryParams.size()); + assertEquals(1, headerParams.size()); + assertEquals("Token my-api-token", headerParams.get("X-API-TOKEN").get(0)); + } +} diff --git a/samples/client/petstore/java/resttemplate/src/test/java/org/openapitools/client/auth/HttpBasicAuthTest.java b/samples/client/petstore/java/resttemplate/src/test/java/org/openapitools/client/auth/HttpBasicAuthTest.java new file mode 100644 index 000000000000..04522ec56c5b --- /dev/null +++ b/samples/client/petstore/java/resttemplate/src/test/java/org/openapitools/client/auth/HttpBasicAuthTest.java @@ -0,0 +1,54 @@ +package org.openapitools.client.auth; + +import java.util.HashMap; +import java.util.ArrayList; +import java.util.Map; +import java.util.List; + +import org.junit.*; +import org.springframework.http.HttpHeaders; +import org.springframework.util.LinkedMultiValueMap; +import org.springframework.util.MultiValueMap; + +import static org.junit.Assert.*; + +public class HttpBasicAuthTest { + HttpBasicAuth auth = null; + + @Before + public void setup() { + auth = new HttpBasicAuth(); + } + + @Test + public void testApplyToParams() { + MultiValueMap queryParams = new LinkedMultiValueMap(); + HttpHeaders headerParams = new HttpHeaders(); + + auth.setUsername("my-username"); + auth.setPassword("my-password"); + auth.applyToParams(queryParams, headerParams); + + // no changes to query parameters + assertEquals(0, queryParams.size()); + assertEquals(1, headerParams.size()); + // the string below is base64-encoded result of "my-username:my-password" with the "Basic " prefix + String expected = "Basic bXktdXNlcm5hbWU6bXktcGFzc3dvcmQ="; + assertEquals(expected, headerParams.get("Authorization").get(0)); + + // null username should be treated as empty string + auth.setUsername(null); + auth.applyToParams(queryParams, headerParams); + // the string below is base64-encoded result of ":my-password" with the "Basic " prefix + expected = "Basic Om15LXBhc3N3b3Jk"; + assertEquals(expected, headerParams.get("Authorization").get(1)); + + // null password should be treated as empty string + auth.setUsername("my-username"); + auth.setPassword(null); + auth.applyToParams(queryParams, headerParams); + // the string below is base64-encoded result of "my-username:" with the "Basic " prefix + expected = "Basic bXktdXNlcm5hbWU6"; + assertEquals(expected, headerParams.get("Authorization").get(2)); + } +} diff --git a/samples/client/petstore/java/resttemplate/src/test/java/org/openapitools/client/model/EnumValueTest.java b/samples/client/petstore/java/resttemplate/src/test/java/org/openapitools/client/model/EnumValueTest.java new file mode 100644 index 000000000000..47bfe940d3c3 --- /dev/null +++ b/samples/client/petstore/java/resttemplate/src/test/java/org/openapitools/client/model/EnumValueTest.java @@ -0,0 +1,63 @@ +package org.openapitools.client.model; + +import org.junit.Test; + +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.ObjectWriter; +import com.fasterxml.jackson.databind.SerializationFeature; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; +import static org.junit.Assert.fail; + +public class EnumValueTest { + + @Test + public void testEnumClass() { + assertEquals(EnumClass._ABC.toString(), "_abc"); + assertEquals(EnumClass._EFG.toString(), "-efg"); + assertEquals(EnumClass._XYZ_.toString(), "(xyz)"); + } + + @Test + public void testEnumTest() { + // test enum value + EnumTest enumTest = new EnumTest(); + enumTest.setEnumString(EnumTest.EnumStringEnum.LOWER); + enumTest.setEnumInteger(EnumTest.EnumIntegerEnum.NUMBER_1); + enumTest.setEnumNumber(EnumTest.EnumNumberEnum.NUMBER_1_DOT_1); + + assertEquals(EnumTest.EnumStringEnum.UPPER.toString(), "UPPER"); + assertEquals(EnumTest.EnumStringEnum.UPPER.getValue(), "UPPER"); + assertEquals(EnumTest.EnumStringEnum.LOWER.toString(), "lower"); + assertEquals(EnumTest.EnumStringEnum.LOWER.getValue(), "lower"); + + assertEquals(EnumTest.EnumIntegerEnum.NUMBER_1.toString(), "1"); + assertTrue(EnumTest.EnumIntegerEnum.NUMBER_1.getValue() == 1); + assertEquals(EnumTest.EnumIntegerEnum.NUMBER_MINUS_1.toString(), "-1"); + assertTrue(EnumTest.EnumIntegerEnum.NUMBER_MINUS_1.getValue() == -1); + + assertEquals(EnumTest.EnumNumberEnum.NUMBER_1_DOT_1.toString(), "1.1"); + assertTrue(EnumTest.EnumNumberEnum.NUMBER_1_DOT_1.getValue() == 1.1); + assertEquals(EnumTest.EnumNumberEnum.NUMBER_MINUS_1_DOT_2.toString(), "-1.2"); + assertTrue(EnumTest.EnumNumberEnum.NUMBER_MINUS_1_DOT_2.getValue() == -1.2); + + try { + // test serialization (object => json) + ObjectMapper mapper = new ObjectMapper(); + mapper.enable(SerializationFeature.WRITE_ENUMS_USING_TO_STRING); + ObjectWriter ow = mapper.writer(); + String json = ow.writeValueAsString(enumTest); + assertEquals(json, "{\"enum_string\":\"lower\",\"enum_string_required\":null,\"enum_integer\":1,\"enum_number\":1.1,\"outerEnum\":null}"); + + // test deserialization (json => object) + EnumTest fromString = mapper.readValue(json, EnumTest.class); + assertEquals(fromString.getEnumString().toString(), "lower"); + assertEquals(fromString.getEnumInteger().toString(), "1"); + assertEquals(fromString.getEnumNumber().toString(), "1.1"); + + } catch (Exception e) { + fail("Exception thrown during serialization/deserialzation of JSON: " + e.getMessage()); + } + } +} diff --git a/samples/client/petstore/java/retrofit/.openapi-generator/VERSION b/samples/client/petstore/java/retrofit/.openapi-generator/VERSION index 1c00c5181548..82602aa4190d 100644 --- a/samples/client/petstore/java/retrofit/.openapi-generator/VERSION +++ b/samples/client/petstore/java/retrofit/.openapi-generator/VERSION @@ -1 +1 @@ -3.0.2-SNAPSHOT \ No newline at end of file +3.0.3-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/java/retrofit2-play24/.openapi-generator/VERSION b/samples/client/petstore/java/retrofit2-play24/.openapi-generator/VERSION index 1c00c5181548..82602aa4190d 100644 --- a/samples/client/petstore/java/retrofit2-play24/.openapi-generator/VERSION +++ b/samples/client/petstore/java/retrofit2-play24/.openapi-generator/VERSION @@ -1 +1 @@ -3.0.2-SNAPSHOT \ No newline at end of file +3.0.3-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/java/retrofit2-play25/.openapi-generator/VERSION b/samples/client/petstore/java/retrofit2-play25/.openapi-generator/VERSION index 1c00c5181548..82602aa4190d 100644 --- a/samples/client/petstore/java/retrofit2-play25/.openapi-generator/VERSION +++ b/samples/client/petstore/java/retrofit2-play25/.openapi-generator/VERSION @@ -1 +1 @@ -3.0.2-SNAPSHOT \ No newline at end of file +3.0.3-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/java/retrofit2/.openapi-generator/VERSION b/samples/client/petstore/java/retrofit2/.openapi-generator/VERSION index 1c00c5181548..82602aa4190d 100644 --- a/samples/client/petstore/java/retrofit2/.openapi-generator/VERSION +++ b/samples/client/petstore/java/retrofit2/.openapi-generator/VERSION @@ -1 +1 @@ -3.0.2-SNAPSHOT \ No newline at end of file +3.0.3-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/java/retrofit2rx/.openapi-generator/VERSION b/samples/client/petstore/java/retrofit2rx/.openapi-generator/VERSION index 1c00c5181548..82602aa4190d 100644 --- a/samples/client/petstore/java/retrofit2rx/.openapi-generator/VERSION +++ b/samples/client/petstore/java/retrofit2rx/.openapi-generator/VERSION @@ -1 +1 @@ -3.0.2-SNAPSHOT \ No newline at end of file +3.0.3-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/java/retrofit2rx2/.openapi-generator/VERSION b/samples/client/petstore/java/retrofit2rx2/.openapi-generator/VERSION index 1c00c5181548..82602aa4190d 100644 --- a/samples/client/petstore/java/retrofit2rx2/.openapi-generator/VERSION +++ b/samples/client/petstore/java/retrofit2rx2/.openapi-generator/VERSION @@ -1 +1 @@ -3.0.2-SNAPSHOT \ No newline at end of file +3.0.3-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/java/vertx/.openapi-generator/VERSION b/samples/client/petstore/java/vertx/.openapi-generator/VERSION index 1c00c5181548..82602aa4190d 100644 --- a/samples/client/petstore/java/vertx/.openapi-generator/VERSION +++ b/samples/client/petstore/java/vertx/.openapi-generator/VERSION @@ -1 +1 @@ -3.0.2-SNAPSHOT \ No newline at end of file +3.0.3-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/javascript-es6/.openapi-generator/VERSION b/samples/client/petstore/javascript-es6/.openapi-generator/VERSION index f9f7450d1359..1c00c5181548 100644 --- a/samples/client/petstore/javascript-es6/.openapi-generator/VERSION +++ b/samples/client/petstore/javascript-es6/.openapi-generator/VERSION @@ -1 +1 @@ -2.3.0-SNAPSHOT \ No newline at end of file +3.0.2-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/javascript-es6/README.md b/samples/client/petstore/javascript-es6/README.md index bbf7a369ff4c..9503c4fd15ae 100644 --- a/samples/client/petstore/javascript-es6/README.md +++ b/samples/client/petstore/javascript-es6/README.md @@ -1,12 +1,12 @@ -# swagger_petstore +# open_api_petstore -SwaggerPetstore - JavaScript client for swagger_petstore +OpenApiPetstore - JavaScript client for open_api_petstore This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ -This SDK is automatically generated by the [Swagger Codegen](https://github.com/swagger-api/swagger-codegen) project: +This SDK is automatically generated by the [OpenAPI Generator](https://openapi-generator.tech) project: - API version: 1.0.0 - Package version: 1.0.0 -- Build package: io.swagger.codegen.languages.JavascriptClientCodegen +- Build package: org.openapitools.codegen.languages.JavascriptClientCodegen ## Installation @@ -20,7 +20,7 @@ please follow the procedure in ["Publishing npm packages"](https://docs.npmjs.co Then install it via: ```shell -npm install swagger_petstore --save +npm install open_api_petstore --save ``` #### git @@ -68,13 +68,11 @@ module: { Please follow the [installation](#installation) instruction and execute the following JS code: ```javascript -var SwaggerPetstore = require('swagger_petstore'); - -var api = new SwaggerPetstore.AnotherFakeApi() - -var body = new SwaggerPetstore.Client(); // {Client} client model +var OpenApiPetstore = require('open_api_petstore'); +var api = new OpenApiPetstore.AnotherFakeApi() +var client = new OpenApiPetstore.Client(); // {Client} client model var callback = function(error, data, response) { if (error) { console.error(error); @@ -82,7 +80,7 @@ var callback = function(error, data, response) { console.log('API called successfully. Returned data: ' + data); } }; -api.testSpecialTags(body, callback); +api.testSpecialTags(client, callback); ``` @@ -92,77 +90,75 @@ All URIs are relative to *http://petstore.swagger.io:80/v2* Class | Method | HTTP request | Description ------------ | ------------- | ------------- | ------------- -*SwaggerPetstore.AnotherFakeApi* | [**testSpecialTags**](docs/AnotherFakeApi.md#testSpecialTags) | **PATCH** /another-fake/dummy | To test special tags -*SwaggerPetstore.FakeApi* | [**fakeOuterBooleanSerialize**](docs/FakeApi.md#fakeOuterBooleanSerialize) | **POST** /fake/outer/boolean | -*SwaggerPetstore.FakeApi* | [**fakeOuterCompositeSerialize**](docs/FakeApi.md#fakeOuterCompositeSerialize) | **POST** /fake/outer/composite | -*SwaggerPetstore.FakeApi* | [**fakeOuterNumberSerialize**](docs/FakeApi.md#fakeOuterNumberSerialize) | **POST** /fake/outer/number | -*SwaggerPetstore.FakeApi* | [**fakeOuterStringSerialize**](docs/FakeApi.md#fakeOuterStringSerialize) | **POST** /fake/outer/string | -*SwaggerPetstore.FakeApi* | [**testClientModel**](docs/FakeApi.md#testClientModel) | **PATCH** /fake | To test \"client\" model -*SwaggerPetstore.FakeApi* | [**testEndpointParameters**](docs/FakeApi.md#testEndpointParameters) | **POST** /fake | Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 -*SwaggerPetstore.FakeApi* | [**testEnumParameters**](docs/FakeApi.md#testEnumParameters) | **GET** /fake | To test enum parameters -*SwaggerPetstore.FakeApi* | [**testInlineAdditionalProperties**](docs/FakeApi.md#testInlineAdditionalProperties) | **POST** /fake/inline-additionalProperties | test inline additionalProperties -*SwaggerPetstore.FakeApi* | [**testJsonFormData**](docs/FakeApi.md#testJsonFormData) | **GET** /fake/jsonFormData | test json serialization of form data -*SwaggerPetstore.FakeClassnameTags123Api* | [**testClassname**](docs/FakeClassnameTags123Api.md#testClassname) | **PATCH** /fake_classname_test | To test class name in snake case -*SwaggerPetstore.PetApi* | [**addPet**](docs/PetApi.md#addPet) | **POST** /pet | Add a new pet to the store -*SwaggerPetstore.PetApi* | [**deletePet**](docs/PetApi.md#deletePet) | **DELETE** /pet/{petId} | Deletes a pet -*SwaggerPetstore.PetApi* | [**findPetsByStatus**](docs/PetApi.md#findPetsByStatus) | **GET** /pet/findByStatus | Finds Pets by status -*SwaggerPetstore.PetApi* | [**findPetsByTags**](docs/PetApi.md#findPetsByTags) | **GET** /pet/findByTags | Finds Pets by tags -*SwaggerPetstore.PetApi* | [**getPetById**](docs/PetApi.md#getPetById) | **GET** /pet/{petId} | Find pet by ID -*SwaggerPetstore.PetApi* | [**updatePet**](docs/PetApi.md#updatePet) | **PUT** /pet | Update an existing pet -*SwaggerPetstore.PetApi* | [**updatePetWithForm**](docs/PetApi.md#updatePetWithForm) | **POST** /pet/{petId} | Updates a pet in the store with form data -*SwaggerPetstore.PetApi* | [**uploadFile**](docs/PetApi.md#uploadFile) | **POST** /pet/{petId}/uploadImage | uploads an image -*SwaggerPetstore.StoreApi* | [**deleteOrder**](docs/StoreApi.md#deleteOrder) | **DELETE** /store/order/{order_id} | Delete purchase order by ID -*SwaggerPetstore.StoreApi* | [**getInventory**](docs/StoreApi.md#getInventory) | **GET** /store/inventory | Returns pet inventories by status -*SwaggerPetstore.StoreApi* | [**getOrderById**](docs/StoreApi.md#getOrderById) | **GET** /store/order/{order_id} | Find purchase order by ID -*SwaggerPetstore.StoreApi* | [**placeOrder**](docs/StoreApi.md#placeOrder) | **POST** /store/order | Place an order for a pet -*SwaggerPetstore.UserApi* | [**createUser**](docs/UserApi.md#createUser) | **POST** /user | Create user -*SwaggerPetstore.UserApi* | [**createUsersWithArrayInput**](docs/UserApi.md#createUsersWithArrayInput) | **POST** /user/createWithArray | Creates list of users with given input array -*SwaggerPetstore.UserApi* | [**createUsersWithListInput**](docs/UserApi.md#createUsersWithListInput) | **POST** /user/createWithList | Creates list of users with given input array -*SwaggerPetstore.UserApi* | [**deleteUser**](docs/UserApi.md#deleteUser) | **DELETE** /user/{username} | Delete user -*SwaggerPetstore.UserApi* | [**getUserByName**](docs/UserApi.md#getUserByName) | **GET** /user/{username} | Get user by user name -*SwaggerPetstore.UserApi* | [**loginUser**](docs/UserApi.md#loginUser) | **GET** /user/login | Logs user into the system -*SwaggerPetstore.UserApi* | [**logoutUser**](docs/UserApi.md#logoutUser) | **GET** /user/logout | Logs out current logged in user session -*SwaggerPetstore.UserApi* | [**updateUser**](docs/UserApi.md#updateUser) | **PUT** /user/{username} | Updated user +*OpenApiPetstore.AnotherFakeApi* | [**testSpecialTags**](docs/AnotherFakeApi.md#testSpecialTags) | **PATCH** /another-fake/dummy | To test special tags +*OpenApiPetstore.FakeApi* | [**fakeOuterBooleanSerialize**](docs/FakeApi.md#fakeOuterBooleanSerialize) | **POST** /fake/outer/boolean | +*OpenApiPetstore.FakeApi* | [**fakeOuterCompositeSerialize**](docs/FakeApi.md#fakeOuterCompositeSerialize) | **POST** /fake/outer/composite | +*OpenApiPetstore.FakeApi* | [**fakeOuterNumberSerialize**](docs/FakeApi.md#fakeOuterNumberSerialize) | **POST** /fake/outer/number | +*OpenApiPetstore.FakeApi* | [**fakeOuterStringSerialize**](docs/FakeApi.md#fakeOuterStringSerialize) | **POST** /fake/outer/string | +*OpenApiPetstore.FakeApi* | [**testBodyWithQueryParams**](docs/FakeApi.md#testBodyWithQueryParams) | **PUT** /fake/body-with-query-params | +*OpenApiPetstore.FakeApi* | [**testClientModel**](docs/FakeApi.md#testClientModel) | **PATCH** /fake | To test \"client\" model +*OpenApiPetstore.FakeApi* | [**testEndpointParameters**](docs/FakeApi.md#testEndpointParameters) | **POST** /fake | Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 +*OpenApiPetstore.FakeApi* | [**testEnumParameters**](docs/FakeApi.md#testEnumParameters) | **GET** /fake | To test enum parameters +*OpenApiPetstore.FakeApi* | [**testInlineAdditionalProperties**](docs/FakeApi.md#testInlineAdditionalProperties) | **POST** /fake/inline-additionalProperties | test inline additionalProperties +*OpenApiPetstore.FakeApi* | [**testJsonFormData**](docs/FakeApi.md#testJsonFormData) | **GET** /fake/jsonFormData | test json serialization of form data +*OpenApiPetstore.FakeClassnameTags123Api* | [**testClassname**](docs/FakeClassnameTags123Api.md#testClassname) | **PATCH** /fake_classname_test | To test class name in snake case +*OpenApiPetstore.PetApi* | [**addPet**](docs/PetApi.md#addPet) | **POST** /pet | Add a new pet to the store +*OpenApiPetstore.PetApi* | [**deletePet**](docs/PetApi.md#deletePet) | **DELETE** /pet/{petId} | Deletes a pet +*OpenApiPetstore.PetApi* | [**findPetsByStatus**](docs/PetApi.md#findPetsByStatus) | **GET** /pet/findByStatus | Finds Pets by status +*OpenApiPetstore.PetApi* | [**findPetsByTags**](docs/PetApi.md#findPetsByTags) | **GET** /pet/findByTags | Finds Pets by tags +*OpenApiPetstore.PetApi* | [**getPetById**](docs/PetApi.md#getPetById) | **GET** /pet/{petId} | Find pet by ID +*OpenApiPetstore.PetApi* | [**updatePet**](docs/PetApi.md#updatePet) | **PUT** /pet | Update an existing pet +*OpenApiPetstore.PetApi* | [**updatePetWithForm**](docs/PetApi.md#updatePetWithForm) | **POST** /pet/{petId} | Updates a pet in the store with form data +*OpenApiPetstore.PetApi* | [**uploadFile**](docs/PetApi.md#uploadFile) | **POST** /pet/{petId}/uploadImage | uploads an image +*OpenApiPetstore.StoreApi* | [**deleteOrder**](docs/StoreApi.md#deleteOrder) | **DELETE** /store/order/{order_id} | Delete purchase order by ID +*OpenApiPetstore.StoreApi* | [**getInventory**](docs/StoreApi.md#getInventory) | **GET** /store/inventory | Returns pet inventories by status +*OpenApiPetstore.StoreApi* | [**getOrderById**](docs/StoreApi.md#getOrderById) | **GET** /store/order/{order_id} | Find purchase order by ID +*OpenApiPetstore.StoreApi* | [**placeOrder**](docs/StoreApi.md#placeOrder) | **POST** /store/order | Place an order for a pet +*OpenApiPetstore.UserApi* | [**createUser**](docs/UserApi.md#createUser) | **POST** /user | Create user +*OpenApiPetstore.UserApi* | [**createUsersWithArrayInput**](docs/UserApi.md#createUsersWithArrayInput) | **POST** /user/createWithArray | Creates list of users with given input array +*OpenApiPetstore.UserApi* | [**createUsersWithListInput**](docs/UserApi.md#createUsersWithListInput) | **POST** /user/createWithList | Creates list of users with given input array +*OpenApiPetstore.UserApi* | [**deleteUser**](docs/UserApi.md#deleteUser) | **DELETE** /user/{username} | Delete user +*OpenApiPetstore.UserApi* | [**getUserByName**](docs/UserApi.md#getUserByName) | **GET** /user/{username} | Get user by user name +*OpenApiPetstore.UserApi* | [**loginUser**](docs/UserApi.md#loginUser) | **GET** /user/login | Logs user into the system +*OpenApiPetstore.UserApi* | [**logoutUser**](docs/UserApi.md#logoutUser) | **GET** /user/logout | Logs out current logged in user session +*OpenApiPetstore.UserApi* | [**updateUser**](docs/UserApi.md#updateUser) | **PUT** /user/{username} | Updated user ## Documentation for Models - - [SwaggerPetstore.AdditionalPropertiesClass](docs/AdditionalPropertiesClass.md) - - [SwaggerPetstore.Animal](docs/Animal.md) - - [SwaggerPetstore.AnimalFarm](docs/AnimalFarm.md) - - [SwaggerPetstore.ApiResponse](docs/ApiResponse.md) - - [SwaggerPetstore.ArrayOfArrayOfNumberOnly](docs/ArrayOfArrayOfNumberOnly.md) - - [SwaggerPetstore.ArrayOfNumberOnly](docs/ArrayOfNumberOnly.md) - - [SwaggerPetstore.ArrayTest](docs/ArrayTest.md) - - [SwaggerPetstore.Capitalization](docs/Capitalization.md) - - [SwaggerPetstore.Category](docs/Category.md) - - [SwaggerPetstore.ClassModel](docs/ClassModel.md) - - [SwaggerPetstore.Client](docs/Client.md) - - [SwaggerPetstore.EnumArrays](docs/EnumArrays.md) - - [SwaggerPetstore.EnumClass](docs/EnumClass.md) - - [SwaggerPetstore.EnumTest](docs/EnumTest.md) - - [SwaggerPetstore.FormatTest](docs/FormatTest.md) - - [SwaggerPetstore.HasOnlyReadOnly](docs/HasOnlyReadOnly.md) - - [SwaggerPetstore.List](docs/List.md) - - [SwaggerPetstore.MapTest](docs/MapTest.md) - - [SwaggerPetstore.MixedPropertiesAndAdditionalPropertiesClass](docs/MixedPropertiesAndAdditionalPropertiesClass.md) - - [SwaggerPetstore.Model200Response](docs/Model200Response.md) - - [SwaggerPetstore.ModelReturn](docs/ModelReturn.md) - - [SwaggerPetstore.Name](docs/Name.md) - - [SwaggerPetstore.NumberOnly](docs/NumberOnly.md) - - [SwaggerPetstore.Order](docs/Order.md) - - [SwaggerPetstore.OuterBoolean](docs/OuterBoolean.md) - - [SwaggerPetstore.OuterComposite](docs/OuterComposite.md) - - [SwaggerPetstore.OuterEnum](docs/OuterEnum.md) - - [SwaggerPetstore.OuterNumber](docs/OuterNumber.md) - - [SwaggerPetstore.OuterString](docs/OuterString.md) - - [SwaggerPetstore.Pet](docs/Pet.md) - - [SwaggerPetstore.ReadOnlyFirst](docs/ReadOnlyFirst.md) - - [SwaggerPetstore.SpecialModelName](docs/SpecialModelName.md) - - [SwaggerPetstore.Tag](docs/Tag.md) - - [SwaggerPetstore.User](docs/User.md) - - [SwaggerPetstore.Cat](docs/Cat.md) - - [SwaggerPetstore.Dog](docs/Dog.md) + - [OpenApiPetstore.AdditionalPropertiesClass](docs/AdditionalPropertiesClass.md) + - [OpenApiPetstore.Animal](docs/Animal.md) + - [OpenApiPetstore.AnimalFarm](docs/AnimalFarm.md) + - [OpenApiPetstore.ApiResponse](docs/ApiResponse.md) + - [OpenApiPetstore.ArrayOfArrayOfNumberOnly](docs/ArrayOfArrayOfNumberOnly.md) + - [OpenApiPetstore.ArrayOfNumberOnly](docs/ArrayOfNumberOnly.md) + - [OpenApiPetstore.ArrayTest](docs/ArrayTest.md) + - [OpenApiPetstore.Capitalization](docs/Capitalization.md) + - [OpenApiPetstore.Cat](docs/Cat.md) + - [OpenApiPetstore.Category](docs/Category.md) + - [OpenApiPetstore.ClassModel](docs/ClassModel.md) + - [OpenApiPetstore.Client](docs/Client.md) + - [OpenApiPetstore.Dog](docs/Dog.md) + - [OpenApiPetstore.EnumArrays](docs/EnumArrays.md) + - [OpenApiPetstore.EnumClass](docs/EnumClass.md) + - [OpenApiPetstore.EnumTest](docs/EnumTest.md) + - [OpenApiPetstore.FormatTest](docs/FormatTest.md) + - [OpenApiPetstore.HasOnlyReadOnly](docs/HasOnlyReadOnly.md) + - [OpenApiPetstore.List](docs/List.md) + - [OpenApiPetstore.MapTest](docs/MapTest.md) + - [OpenApiPetstore.MixedPropertiesAndAdditionalPropertiesClass](docs/MixedPropertiesAndAdditionalPropertiesClass.md) + - [OpenApiPetstore.Model200Response](docs/Model200Response.md) + - [OpenApiPetstore.ModelReturn](docs/ModelReturn.md) + - [OpenApiPetstore.Name](docs/Name.md) + - [OpenApiPetstore.NumberOnly](docs/NumberOnly.md) + - [OpenApiPetstore.Order](docs/Order.md) + - [OpenApiPetstore.OuterComposite](docs/OuterComposite.md) + - [OpenApiPetstore.OuterEnum](docs/OuterEnum.md) + - [OpenApiPetstore.Pet](docs/Pet.md) + - [OpenApiPetstore.ReadOnlyFirst](docs/ReadOnlyFirst.md) + - [OpenApiPetstore.SpecialModelName](docs/SpecialModelName.md) + - [OpenApiPetstore.Tag](docs/Tag.md) + - [OpenApiPetstore.User](docs/User.md) ## Documentation for Authorization diff --git a/samples/client/petstore/javascript-es6/docs/AdditionalPropertiesClass.md b/samples/client/petstore/javascript-es6/docs/AdditionalPropertiesClass.md index 0ea13d4bb64f..7df1c7b33949 100644 --- a/samples/client/petstore/javascript-es6/docs/AdditionalPropertiesClass.md +++ b/samples/client/petstore/javascript-es6/docs/AdditionalPropertiesClass.md @@ -1,4 +1,4 @@ -# SwaggerPetstore.AdditionalPropertiesClass +# OpenApiPetstore.AdditionalPropertiesClass ## Properties Name | Type | Description | Notes diff --git a/samples/client/petstore/javascript-es6/docs/Animal.md b/samples/client/petstore/javascript-es6/docs/Animal.md index 3ae52d9db17c..7bff01675818 100644 --- a/samples/client/petstore/javascript-es6/docs/Animal.md +++ b/samples/client/petstore/javascript-es6/docs/Animal.md @@ -1,4 +1,4 @@ -# SwaggerPetstore.Animal +# OpenApiPetstore.Animal ## Properties Name | Type | Description | Notes diff --git a/samples/client/petstore/javascript-es6/docs/AnimalFarm.md b/samples/client/petstore/javascript-es6/docs/AnimalFarm.md index b72739a44c42..ab153513ca9a 100644 --- a/samples/client/petstore/javascript-es6/docs/AnimalFarm.md +++ b/samples/client/petstore/javascript-es6/docs/AnimalFarm.md @@ -1,4 +1,4 @@ -# SwaggerPetstore.AnimalFarm +# OpenApiPetstore.AnimalFarm ## Properties Name | Type | Description | Notes diff --git a/samples/client/petstore/javascript-es6/docs/AnotherFakeApi.md b/samples/client/petstore/javascript-es6/docs/AnotherFakeApi.md index 5617fa29d639..c70f1769bf62 100644 --- a/samples/client/petstore/javascript-es6/docs/AnotherFakeApi.md +++ b/samples/client/petstore/javascript-es6/docs/AnotherFakeApi.md @@ -1,4 +1,4 @@ -# SwaggerPetstore.AnotherFakeApi +# OpenApiPetstore.AnotherFakeApi All URIs are relative to *http://petstore.swagger.io:80/v2* @@ -9,7 +9,7 @@ Method | HTTP request | Description # **testSpecialTags** -> Client testSpecialTags(body) +> Client testSpecialTags(client) To test special tags @@ -17,14 +17,11 @@ To test special tags ### Example ```javascript -import SwaggerPetstore from 'swagger_petstore'; +import OpenApiPetstore from 'open_api_petstore'; -let apiInstance = new SwaggerPetstore.AnotherFakeApi(); - -let body = new SwaggerPetstore.Client(); // Client | client model - - -apiInstance.testSpecialTags(body, (error, data, response) => { +let apiInstance = new OpenApiPetstore.AnotherFakeApi(); +let client = new OpenApiPetstore.Client(); // Client | client model +apiInstance.testSpecialTags(client, (error, data, response) => { if (error) { console.error(error); } else { @@ -37,7 +34,7 @@ apiInstance.testSpecialTags(body, (error, data, response) => { Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- - **body** | [**Client**](Client.md)| client model | + **client** | [**Client**](Client.md)| client model | ### Return type diff --git a/samples/client/petstore/javascript-es6/docs/ApiResponse.md b/samples/client/petstore/javascript-es6/docs/ApiResponse.md index 7f023aff6015..e60378fcbfcb 100644 --- a/samples/client/petstore/javascript-es6/docs/ApiResponse.md +++ b/samples/client/petstore/javascript-es6/docs/ApiResponse.md @@ -1,4 +1,4 @@ -# SwaggerPetstore.ApiResponse +# OpenApiPetstore.ApiResponse ## Properties Name | Type | Description | Notes diff --git a/samples/client/petstore/javascript-es6/docs/ArrayOfArrayOfNumberOnly.md b/samples/client/petstore/javascript-es6/docs/ArrayOfArrayOfNumberOnly.md index 1d38c9d2ed58..7a1426ef8183 100644 --- a/samples/client/petstore/javascript-es6/docs/ArrayOfArrayOfNumberOnly.md +++ b/samples/client/petstore/javascript-es6/docs/ArrayOfArrayOfNumberOnly.md @@ -1,4 +1,4 @@ -# SwaggerPetstore.ArrayOfArrayOfNumberOnly +# OpenApiPetstore.ArrayOfArrayOfNumberOnly ## Properties Name | Type | Description | Notes diff --git a/samples/client/petstore/javascript-es6/docs/ArrayOfNumberOnly.md b/samples/client/petstore/javascript-es6/docs/ArrayOfNumberOnly.md index 07a86a3cef6a..7cec2e71d4b7 100644 --- a/samples/client/petstore/javascript-es6/docs/ArrayOfNumberOnly.md +++ b/samples/client/petstore/javascript-es6/docs/ArrayOfNumberOnly.md @@ -1,4 +1,4 @@ -# SwaggerPetstore.ArrayOfNumberOnly +# OpenApiPetstore.ArrayOfNumberOnly ## Properties Name | Type | Description | Notes diff --git a/samples/client/petstore/javascript-es6/docs/ArrayTest.md b/samples/client/petstore/javascript-es6/docs/ArrayTest.md index e6048e9ea912..5828f6ee75bd 100644 --- a/samples/client/petstore/javascript-es6/docs/ArrayTest.md +++ b/samples/client/petstore/javascript-es6/docs/ArrayTest.md @@ -1,4 +1,4 @@ -# SwaggerPetstore.ArrayTest +# OpenApiPetstore.ArrayTest ## Properties Name | Type | Description | Notes diff --git a/samples/client/petstore/javascript-es6/docs/Capitalization.md b/samples/client/petstore/javascript-es6/docs/Capitalization.md index c223a4ee9821..abeff984c628 100644 --- a/samples/client/petstore/javascript-es6/docs/Capitalization.md +++ b/samples/client/petstore/javascript-es6/docs/Capitalization.md @@ -1,4 +1,4 @@ -# SwaggerPetstore.Capitalization +# OpenApiPetstore.Capitalization ## Properties Name | Type | Description | Notes diff --git a/samples/client/petstore/javascript-es6/docs/Cat.md b/samples/client/petstore/javascript-es6/docs/Cat.md index 8cd391bc911d..6dd0f057c857 100644 --- a/samples/client/petstore/javascript-es6/docs/Cat.md +++ b/samples/client/petstore/javascript-es6/docs/Cat.md @@ -1,4 +1,4 @@ -# SwaggerPetstore.Cat +# OpenApiPetstore.Cat ## Properties Name | Type | Description | Notes diff --git a/samples/client/petstore/javascript-es6/docs/Category.md b/samples/client/petstore/javascript-es6/docs/Category.md index 02b2488a27a3..e3f934442abc 100644 --- a/samples/client/petstore/javascript-es6/docs/Category.md +++ b/samples/client/petstore/javascript-es6/docs/Category.md @@ -1,4 +1,4 @@ -# SwaggerPetstore.Category +# OpenApiPetstore.Category ## Properties Name | Type | Description | Notes diff --git a/samples/client/petstore/javascript-es6/docs/ClassModel.md b/samples/client/petstore/javascript-es6/docs/ClassModel.md index bf8343b84b3f..6fe9c501a5d2 100644 --- a/samples/client/petstore/javascript-es6/docs/ClassModel.md +++ b/samples/client/petstore/javascript-es6/docs/ClassModel.md @@ -1,4 +1,4 @@ -# SwaggerPetstore.ClassModel +# OpenApiPetstore.ClassModel ## Properties Name | Type | Description | Notes diff --git a/samples/client/petstore/javascript-es6/docs/Client.md b/samples/client/petstore/javascript-es6/docs/Client.md index 6ba28319684f..a6c7711e74e7 100644 --- a/samples/client/petstore/javascript-es6/docs/Client.md +++ b/samples/client/petstore/javascript-es6/docs/Client.md @@ -1,4 +1,4 @@ -# SwaggerPetstore.Client +# OpenApiPetstore.Client ## Properties Name | Type | Description | Notes diff --git a/samples/client/petstore/javascript-es6/docs/Dog.md b/samples/client/petstore/javascript-es6/docs/Dog.md index 9253eace011b..f35663407e83 100644 --- a/samples/client/petstore/javascript-es6/docs/Dog.md +++ b/samples/client/petstore/javascript-es6/docs/Dog.md @@ -1,4 +1,4 @@ -# SwaggerPetstore.Dog +# OpenApiPetstore.Dog ## Properties Name | Type | Description | Notes diff --git a/samples/client/petstore/javascript-es6/docs/EnumArrays.md b/samples/client/petstore/javascript-es6/docs/EnumArrays.md index 449a96fdbbd4..5f624e5db484 100644 --- a/samples/client/petstore/javascript-es6/docs/EnumArrays.md +++ b/samples/client/petstore/javascript-es6/docs/EnumArrays.md @@ -1,4 +1,4 @@ -# SwaggerPetstore.EnumArrays +# OpenApiPetstore.EnumArrays ## Properties Name | Type | Description | Notes diff --git a/samples/client/petstore/javascript-es6/docs/EnumClass.md b/samples/client/petstore/javascript-es6/docs/EnumClass.md index 04b89362941b..cef9bb57a56c 100644 --- a/samples/client/petstore/javascript-es6/docs/EnumClass.md +++ b/samples/client/petstore/javascript-es6/docs/EnumClass.md @@ -1,4 +1,4 @@ -# SwaggerPetstore.EnumClass +# OpenApiPetstore.EnumClass ## Enum diff --git a/samples/client/petstore/javascript-es6/docs/EnumTest.md b/samples/client/petstore/javascript-es6/docs/EnumTest.md index 9d85a20016d8..c9e7ce86fea5 100644 --- a/samples/client/petstore/javascript-es6/docs/EnumTest.md +++ b/samples/client/petstore/javascript-es6/docs/EnumTest.md @@ -1,9 +1,10 @@ -# SwaggerPetstore.EnumTest +# OpenApiPetstore.EnumTest ## Properties Name | Type | Description | Notes ------------ | ------------- | ------------- | ------------- **enumString** | **String** | | [optional] +**enumStringRequired** | **String** | | **enumInteger** | **Number** | | [optional] **enumNumber** | **Number** | | [optional] **outerEnum** | [**OuterEnum**](OuterEnum.md) | | [optional] @@ -22,6 +23,19 @@ Name | Type | Description | Notes + +## Enum: EnumStringRequiredEnum + + +* `UPPER` (value: `"UPPER"`) + +* `lower` (value: `"lower"`) + +* `empty` (value: `""`) + + + + ## Enum: EnumIntegerEnum diff --git a/samples/client/petstore/javascript-es6/docs/FakeApi.md b/samples/client/petstore/javascript-es6/docs/FakeApi.md index f723e93e06c8..3327bfce4e6f 100644 --- a/samples/client/petstore/javascript-es6/docs/FakeApi.md +++ b/samples/client/petstore/javascript-es6/docs/FakeApi.md @@ -1,4 +1,4 @@ -# SwaggerPetstore.FakeApi +# OpenApiPetstore.FakeApi All URIs are relative to *http://petstore.swagger.io:80/v2* @@ -8,6 +8,7 @@ Method | HTTP request | Description [**fakeOuterCompositeSerialize**](FakeApi.md#fakeOuterCompositeSerialize) | **POST** /fake/outer/composite | [**fakeOuterNumberSerialize**](FakeApi.md#fakeOuterNumberSerialize) | **POST** /fake/outer/number | [**fakeOuterStringSerialize**](FakeApi.md#fakeOuterStringSerialize) | **POST** /fake/outer/string | +[**testBodyWithQueryParams**](FakeApi.md#testBodyWithQueryParams) | **PUT** /fake/body-with-query-params | [**testClientModel**](FakeApi.md#testClientModel) | **PATCH** /fake | To test \"client\" model [**testEndpointParameters**](FakeApi.md#testEndpointParameters) | **POST** /fake | Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 [**testEnumParameters**](FakeApi.md#testEnumParameters) | **GET** /fake | To test enum parameters @@ -17,7 +18,7 @@ Method | HTTP request | Description # **fakeOuterBooleanSerialize** -> OuterBoolean fakeOuterBooleanSerialize(opts) +> Boolean fakeOuterBooleanSerialize(opts) @@ -25,14 +26,12 @@ Test serialization of outer boolean types ### Example ```javascript -import SwaggerPetstore from 'swagger_petstore'; +import OpenApiPetstore from 'open_api_petstore'; -let apiInstance = new SwaggerPetstore.FakeApi(); - -let opts = { - 'body': new SwaggerPetstore.OuterBoolean() // OuterBoolean | Input boolean as post body +let apiInstance = new OpenApiPetstore.FakeApi(); +let opts = { + 'body': true // Boolean | Input boolean as post body }; - apiInstance.fakeOuterBooleanSerialize(opts, (error, data, response) => { if (error) { console.error(error); @@ -46,11 +45,11 @@ apiInstance.fakeOuterBooleanSerialize(opts, (error, data, response) => { Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- - **body** | [**OuterBoolean**](OuterBoolean.md)| Input boolean as post body | [optional] + **body** | **Boolean**| Input boolean as post body | [optional] ### Return type -[**OuterBoolean**](OuterBoolean.md) +**Boolean** ### Authorization @@ -59,7 +58,7 @@ No authorization required ### HTTP request headers - **Content-Type**: Not defined - - **Accept**: Not defined + - **Accept**: */* # **fakeOuterCompositeSerialize** @@ -71,14 +70,12 @@ Test serialization of object with outer number type ### Example ```javascript -import SwaggerPetstore from 'swagger_petstore'; - -let apiInstance = new SwaggerPetstore.FakeApi(); +import OpenApiPetstore from 'open_api_petstore'; -let opts = { - 'body': new SwaggerPetstore.OuterComposite() // OuterComposite | Input composite as post body +let apiInstance = new OpenApiPetstore.FakeApi(); +let opts = { + 'outerComposite': new OpenApiPetstore.OuterComposite() // OuterComposite | Input composite as post body }; - apiInstance.fakeOuterCompositeSerialize(opts, (error, data, response) => { if (error) { console.error(error); @@ -92,7 +89,7 @@ apiInstance.fakeOuterCompositeSerialize(opts, (error, data, response) => { Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- - **body** | [**OuterComposite**](OuterComposite.md)| Input composite as post body | [optional] + **outerComposite** | [**OuterComposite**](OuterComposite.md)| Input composite as post body | [optional] ### Return type @@ -105,11 +102,11 @@ No authorization required ### HTTP request headers - **Content-Type**: Not defined - - **Accept**: Not defined + - **Accept**: */* # **fakeOuterNumberSerialize** -> OuterNumber fakeOuterNumberSerialize(opts) +> Number fakeOuterNumberSerialize(opts) @@ -117,14 +114,12 @@ Test serialization of outer number types ### Example ```javascript -import SwaggerPetstore from 'swagger_petstore'; +import OpenApiPetstore from 'open_api_petstore'; -let apiInstance = new SwaggerPetstore.FakeApi(); - -let opts = { - 'body': new SwaggerPetstore.OuterNumber() // OuterNumber | Input number as post body +let apiInstance = new OpenApiPetstore.FakeApi(); +let opts = { + 'body': 3.4 // Number | Input number as post body }; - apiInstance.fakeOuterNumberSerialize(opts, (error, data, response) => { if (error) { console.error(error); @@ -138,11 +133,11 @@ apiInstance.fakeOuterNumberSerialize(opts, (error, data, response) => { Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- - **body** | [**OuterNumber**](OuterNumber.md)| Input number as post body | [optional] + **body** | **Number**| Input number as post body | [optional] ### Return type -[**OuterNumber**](OuterNumber.md) +**Number** ### Authorization @@ -151,11 +146,11 @@ No authorization required ### HTTP request headers - **Content-Type**: Not defined - - **Accept**: Not defined + - **Accept**: */* # **fakeOuterStringSerialize** -> OuterString fakeOuterStringSerialize(opts) +> String fakeOuterStringSerialize(opts) @@ -163,14 +158,12 @@ Test serialization of outer string types ### Example ```javascript -import SwaggerPetstore from 'swagger_petstore'; - -let apiInstance = new SwaggerPetstore.FakeApi(); +import OpenApiPetstore from 'open_api_petstore'; -let opts = { - 'body': new SwaggerPetstore.OuterString() // OuterString | Input string as post body +let apiInstance = new OpenApiPetstore.FakeApi(); +let opts = { + 'body': "body_example" // String | Input string as post body }; - apiInstance.fakeOuterStringSerialize(opts, (error, data, response) => { if (error) { console.error(error); @@ -184,11 +177,11 @@ apiInstance.fakeOuterStringSerialize(opts, (error, data, response) => { Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- - **body** | [**OuterString**](OuterString.md)| Input string as post body | [optional] + **body** | **String**| Input string as post body | [optional] ### Return type -[**OuterString**](OuterString.md) +**String** ### Authorization @@ -197,11 +190,53 @@ No authorization required ### HTTP request headers - **Content-Type**: Not defined + - **Accept**: */* + + +# **testBodyWithQueryParams** +> testBodyWithQueryParams(query, user) + + + +### Example +```javascript +import OpenApiPetstore from 'open_api_petstore'; + +let apiInstance = new OpenApiPetstore.FakeApi(); +let query = "query_example"; // String | +let user = new OpenApiPetstore.User(); // User | +apiInstance.testBodyWithQueryParams(query, user, (error, data, response) => { + if (error) { + console.error(error); + } else { + console.log('API called successfully.'); + } +}); +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **query** | **String**| | + **user** | [**User**](User.md)| | + +### Return type + +null (empty response body) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: application/json - **Accept**: Not defined # **testClientModel** -> Client testClientModel(body) +> Client testClientModel(client) To test \"client\" model @@ -209,14 +244,11 @@ To test \"client\" model ### Example ```javascript -import SwaggerPetstore from 'swagger_petstore'; +import OpenApiPetstore from 'open_api_petstore'; -let apiInstance = new SwaggerPetstore.FakeApi(); - -let body = new SwaggerPetstore.Client(); // Client | client model - - -apiInstance.testClientModel(body, (error, data, response) => { +let apiInstance = new OpenApiPetstore.FakeApi(); +let client = new OpenApiPetstore.Client(); // Client | client model +apiInstance.testClientModel(client, (error, data, response) => { if (error) { console.error(error); } else { @@ -229,7 +261,7 @@ apiInstance.testClientModel(body, (error, data, response) => { Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- - **body** | [**Client**](Client.md)| client model | + **client** | [**Client**](Client.md)| client model | ### Return type @@ -254,37 +286,31 @@ Fake endpoint for testing various parameters 假端點 偽のエンドポイン ### Example ```javascript -import SwaggerPetstore from 'swagger_petstore'; -let defaultClient = SwaggerPetstore.ApiClient.instance; +import OpenApiPetstore from 'open_api_petstore'; +let defaultClient = OpenApiPetstore.ApiClient.instance; // Configure HTTP basic authorization: http_basic_test let http_basic_test = defaultClient.authentications['http_basic_test']; http_basic_test.username = 'YOUR USERNAME'; http_basic_test.password = 'YOUR PASSWORD'; -let apiInstance = new SwaggerPetstore.FakeApi(); - -let _number = 8.14; // Number | None - -let _double = 1.2; // Number | None - +let apiInstance = new OpenApiPetstore.FakeApi(); +let _number = 3.4; // Number | None +let _double = 3.4; // Number | None let patternWithoutDelimiter = "patternWithoutDelimiter_example"; // String | None - -let _byte = B; // Blob | None - -let opts = { +let _byte = null; // Blob | None +let opts = { 'integer': 56, // Number | None 'int32': 56, // Number | None 'int64': 789, // Number | None '_float': 3.4, // Number | None '_string': "_string_example", // String | None - 'binary': B, // Blob | None + 'binary': "/path/to/file", // File | None '_date': new Date("2013-10-20"), // Date | None 'dateTime': new Date("2013-10-20T19:20:30+01:00"), // Date | None 'password': "password_example", // String | None 'callback': "callback_example" // String | None }; - apiInstance.testEndpointParameters(_number, _double, patternWithoutDelimiter, _byte, opts, (error, data, response) => { if (error) { console.error(error); @@ -307,7 +333,7 @@ Name | Type | Description | Notes **int64** | **Number**| None | [optional] **_float** | **Number**| None | [optional] **_string** | **String**| None | [optional] - **binary** | **Blob**| None | [optional] + **binary** | **File**| None | [optional] **_date** | **Date**| None | [optional] **dateTime** | **Date**| None | [optional] **password** | **String**| None | [optional] @@ -323,8 +349,8 @@ null (empty response body) ### HTTP request headers - - **Content-Type**: application/xml; charset=utf-8, application/json; charset=utf-8 - - **Accept**: application/xml; charset=utf-8, application/json; charset=utf-8 + - **Content-Type**: application/x-www-form-urlencoded + - **Accept**: Not defined # **testEnumParameters** @@ -336,21 +362,19 @@ To test enum parameters ### Example ```javascript -import SwaggerPetstore from 'swagger_petstore'; - -let apiInstance = new SwaggerPetstore.FakeApi(); - -let opts = { - 'enumFormStringArray': ["enumFormStringArray_example"], // [String] | Form parameter enum test (string array) - 'enumFormString': "-efg", // String | Form parameter enum test (string) - 'enumHeaderStringArray': ["enumHeaderStringArray_example"], // [String] | Header parameter enum test (string array) - 'enumHeaderString': "-efg", // String | Header parameter enum test (string) - 'enumQueryStringArray': ["enumQueryStringArray_example"], // [String] | Query parameter enum test (string array) - 'enumQueryString': "-efg", // String | Query parameter enum test (string) +import OpenApiPetstore from 'open_api_petstore'; + +let apiInstance = new OpenApiPetstore.FakeApi(); +let opts = { + 'enumHeaderStringArray': ["'$'"], // [String] | Header parameter enum test (string array) + 'enumHeaderString': "'-efg'", // String | Header parameter enum test (string) + 'enumQueryStringArray': ["'$'"], // [String] | Query parameter enum test (string array) + 'enumQueryString': "'-efg'", // String | Query parameter enum test (string) 'enumQueryInteger': 56, // Number | Query parameter enum test (double) - 'enumQueryDouble': 1.2 // Number | Query parameter enum test (double) + 'enumQueryDouble': 3.4, // Number | Query parameter enum test (double) + 'enumFormStringArray': "'$'", // [String] | Form parameter enum test (string array) + 'enumFormString': "'-efg'" // String | Form parameter enum test (string) }; - apiInstance.testEnumParameters(opts, (error, data, response) => { if (error) { console.error(error); @@ -364,14 +388,14 @@ apiInstance.testEnumParameters(opts, (error, data, response) => { Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- - **enumFormStringArray** | [**[String]**](String.md)| Form parameter enum test (string array) | [optional] - **enumFormString** | **String**| Form parameter enum test (string) | [optional] [default to -efg] **enumHeaderStringArray** | [**[String]**](String.md)| Header parameter enum test (string array) | [optional] - **enumHeaderString** | **String**| Header parameter enum test (string) | [optional] [default to -efg] + **enumHeaderString** | **String**| Header parameter enum test (string) | [optional] [default to '-efg'] **enumQueryStringArray** | [**[String]**](String.md)| Query parameter enum test (string array) | [optional] - **enumQueryString** | **String**| Query parameter enum test (string) | [optional] [default to -efg] + **enumQueryString** | **String**| Query parameter enum test (string) | [optional] [default to '-efg'] **enumQueryInteger** | **Number**| Query parameter enum test (double) | [optional] **enumQueryDouble** | **Number**| Query parameter enum test (double) | [optional] + **enumFormStringArray** | [**[String]**](String.md)| Form parameter enum test (string array) | [optional] [default to '$'] + **enumFormString** | **String**| Form parameter enum test (string) | [optional] [default to '-efg'] ### Return type @@ -383,27 +407,22 @@ No authorization required ### HTTP request headers - - **Content-Type**: */* - - **Accept**: */* + - **Content-Type**: application/x-www-form-urlencoded + - **Accept**: Not defined # **testInlineAdditionalProperties** -> testInlineAdditionalProperties(param) +> testInlineAdditionalProperties(requestBody) test inline additionalProperties - - ### Example ```javascript -import SwaggerPetstore from 'swagger_petstore'; - -let apiInstance = new SwaggerPetstore.FakeApi(); +import OpenApiPetstore from 'open_api_petstore'; -let param = null; // Object | request body - - -apiInstance.testInlineAdditionalProperties(param, (error, data, response) => { +let apiInstance = new OpenApiPetstore.FakeApi(); +let requestBody = {key: "inner_example"}; // {String: String} | request body +apiInstance.testInlineAdditionalProperties(requestBody, (error, data, response) => { if (error) { console.error(error); } else { @@ -416,7 +435,7 @@ apiInstance.testInlineAdditionalProperties(param, (error, data, response) => { Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- - **param** | **Object**| request body | + **requestBody** | [**{String: String}**](String.md)| request body | ### Return type @@ -437,19 +456,13 @@ No authorization required test json serialization of form data - - ### Example ```javascript -import SwaggerPetstore from 'swagger_petstore'; - -let apiInstance = new SwaggerPetstore.FakeApi(); +import OpenApiPetstore from 'open_api_petstore'; +let apiInstance = new OpenApiPetstore.FakeApi(); let param = "param_example"; // String | field1 - let param2 = "param2_example"; // String | field2 - - apiInstance.testJsonFormData(param, param2, (error, data, response) => { if (error) { console.error(error); @@ -476,6 +489,6 @@ No authorization required ### HTTP request headers - - **Content-Type**: application/json + - **Content-Type**: application/x-www-form-urlencoded - **Accept**: Not defined diff --git a/samples/client/petstore/javascript-es6/docs/FakeClassnameTags123Api.md b/samples/client/petstore/javascript-es6/docs/FakeClassnameTags123Api.md index 9b2c6dcd4189..7414f66e70c2 100644 --- a/samples/client/petstore/javascript-es6/docs/FakeClassnameTags123Api.md +++ b/samples/client/petstore/javascript-es6/docs/FakeClassnameTags123Api.md @@ -1,4 +1,4 @@ -# SwaggerPetstore.FakeClassnameTags123Api +# OpenApiPetstore.FakeClassnameTags123Api All URIs are relative to *http://petstore.swagger.io:80/v2* @@ -9,14 +9,16 @@ Method | HTTP request | Description # **testClassname** -> Client testClassname(body) +> Client testClassname(client) + +To test class name in snake case To test class name in snake case ### Example ```javascript -import SwaggerPetstore from 'swagger_petstore'; -let defaultClient = SwaggerPetstore.ApiClient.instance; +import OpenApiPetstore from 'open_api_petstore'; +let defaultClient = OpenApiPetstore.ApiClient.instance; // Configure API key authorization: api_key_query let api_key_query = defaultClient.authentications['api_key_query']; @@ -24,12 +26,9 @@ api_key_query.apiKey = 'YOUR API KEY'; // Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null) //api_key_query.apiKeyPrefix = 'Token'; -let apiInstance = new SwaggerPetstore.FakeClassnameTags123Api(); - -let body = new SwaggerPetstore.Client(); // Client | client model - - -apiInstance.testClassname(body, (error, data, response) => { +let apiInstance = new OpenApiPetstore.FakeClassnameTags123Api(); +let client = new OpenApiPetstore.Client(); // Client | client model +apiInstance.testClassname(client, (error, data, response) => { if (error) { console.error(error); } else { @@ -42,7 +41,7 @@ apiInstance.testClassname(body, (error, data, response) => { Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- - **body** | [**Client**](Client.md)| client model | + **client** | [**Client**](Client.md)| client model | ### Return type diff --git a/samples/client/petstore/javascript-es6/docs/FormatTest.md b/samples/client/petstore/javascript-es6/docs/FormatTest.md index cb5b11416faa..0f4a8405449d 100644 --- a/samples/client/petstore/javascript-es6/docs/FormatTest.md +++ b/samples/client/petstore/javascript-es6/docs/FormatTest.md @@ -1,4 +1,4 @@ -# SwaggerPetstore.FormatTest +# OpenApiPetstore.FormatTest ## Properties Name | Type | Description | Notes @@ -11,7 +11,7 @@ Name | Type | Description | Notes **_double** | **Number** | | [optional] **_string** | **String** | | [optional] **_byte** | **Blob** | | -**binary** | **Blob** | | [optional] +**binary** | **File** | | [optional] **_date** | **Date** | | **dateTime** | **Date** | | [optional] **uuid** | **String** | | [optional] diff --git a/samples/client/petstore/javascript-es6/docs/HasOnlyReadOnly.md b/samples/client/petstore/javascript-es6/docs/HasOnlyReadOnly.md index b9b975fced0a..abc4ce62184c 100644 --- a/samples/client/petstore/javascript-es6/docs/HasOnlyReadOnly.md +++ b/samples/client/petstore/javascript-es6/docs/HasOnlyReadOnly.md @@ -1,4 +1,4 @@ -# SwaggerPetstore.HasOnlyReadOnly +# OpenApiPetstore.HasOnlyReadOnly ## Properties Name | Type | Description | Notes diff --git a/samples/client/petstore/javascript-es6/docs/List.md b/samples/client/petstore/javascript-es6/docs/List.md index 12166562e891..3a9555e34e0a 100644 --- a/samples/client/petstore/javascript-es6/docs/List.md +++ b/samples/client/petstore/javascript-es6/docs/List.md @@ -1,8 +1,8 @@ -# SwaggerPetstore.List +# OpenApiPetstore.List ## Properties Name | Type | Description | Notes ------------ | ------------- | ------------- | ------------- -**_123List** | **String** | | [optional] +**_123list** | **String** | | [optional] diff --git a/samples/client/petstore/javascript-es6/docs/MapTest.md b/samples/client/petstore/javascript-es6/docs/MapTest.md index 8550252a3f19..4a128da00fd0 100644 --- a/samples/client/petstore/javascript-es6/docs/MapTest.md +++ b/samples/client/petstore/javascript-es6/docs/MapTest.md @@ -1,4 +1,4 @@ -# SwaggerPetstore.MapTest +# OpenApiPetstore.MapTest ## Properties Name | Type | Description | Notes diff --git a/samples/client/petstore/javascript-es6/docs/MixedPropertiesAndAdditionalPropertiesClass.md b/samples/client/petstore/javascript-es6/docs/MixedPropertiesAndAdditionalPropertiesClass.md index 31bf8b314ca4..051f771930ea 100644 --- a/samples/client/petstore/javascript-es6/docs/MixedPropertiesAndAdditionalPropertiesClass.md +++ b/samples/client/petstore/javascript-es6/docs/MixedPropertiesAndAdditionalPropertiesClass.md @@ -1,4 +1,4 @@ -# SwaggerPetstore.MixedPropertiesAndAdditionalPropertiesClass +# OpenApiPetstore.MixedPropertiesAndAdditionalPropertiesClass ## Properties Name | Type | Description | Notes diff --git a/samples/client/petstore/javascript-es6/docs/Model200Response.md b/samples/client/petstore/javascript-es6/docs/Model200Response.md index f18f963c96d8..0a0d02cc32e1 100644 --- a/samples/client/petstore/javascript-es6/docs/Model200Response.md +++ b/samples/client/petstore/javascript-es6/docs/Model200Response.md @@ -1,4 +1,4 @@ -# SwaggerPetstore.Model200Response +# OpenApiPetstore.Model200Response ## Properties Name | Type | Description | Notes diff --git a/samples/client/petstore/javascript-es6/docs/ModelReturn.md b/samples/client/petstore/javascript-es6/docs/ModelReturn.md index b602b39b0c58..9ce6e2038787 100644 --- a/samples/client/petstore/javascript-es6/docs/ModelReturn.md +++ b/samples/client/petstore/javascript-es6/docs/ModelReturn.md @@ -1,4 +1,4 @@ -# SwaggerPetstore.ModelReturn +# OpenApiPetstore.ModelReturn ## Properties Name | Type | Description | Notes diff --git a/samples/client/petstore/javascript-es6/docs/Name.md b/samples/client/petstore/javascript-es6/docs/Name.md index 51dad9ca5783..8dfcc460361f 100644 --- a/samples/client/petstore/javascript-es6/docs/Name.md +++ b/samples/client/petstore/javascript-es6/docs/Name.md @@ -1,4 +1,4 @@ -# SwaggerPetstore.Name +# OpenApiPetstore.Name ## Properties Name | Type | Description | Notes @@ -6,6 +6,6 @@ Name | Type | Description | Notes **name** | **Number** | | **snakeCase** | **Number** | | [optional] **property** | **String** | | [optional] -**_123Number** | **Number** | | [optional] +**_123number** | **Number** | | [optional] diff --git a/samples/client/petstore/javascript-es6/docs/NumberOnly.md b/samples/client/petstore/javascript-es6/docs/NumberOnly.md index f7bf0abd4250..cf84674ed4e0 100644 --- a/samples/client/petstore/javascript-es6/docs/NumberOnly.md +++ b/samples/client/petstore/javascript-es6/docs/NumberOnly.md @@ -1,4 +1,4 @@ -# SwaggerPetstore.NumberOnly +# OpenApiPetstore.NumberOnly ## Properties Name | Type | Description | Notes diff --git a/samples/client/petstore/javascript-es6/docs/Order.md b/samples/client/petstore/javascript-es6/docs/Order.md index 6dc0b19cd251..987992caa70a 100644 --- a/samples/client/petstore/javascript-es6/docs/Order.md +++ b/samples/client/petstore/javascript-es6/docs/Order.md @@ -1,4 +1,4 @@ -# SwaggerPetstore.Order +# OpenApiPetstore.Order ## Properties Name | Type | Description | Notes diff --git a/samples/client/petstore/javascript-es6/docs/OuterComposite.md b/samples/client/petstore/javascript-es6/docs/OuterComposite.md index e4cb57f35afc..c49b32ff3290 100644 --- a/samples/client/petstore/javascript-es6/docs/OuterComposite.md +++ b/samples/client/petstore/javascript-es6/docs/OuterComposite.md @@ -1,10 +1,10 @@ -# SwaggerPetstore.OuterComposite +# OpenApiPetstore.OuterComposite ## Properties Name | Type | Description | Notes ------------ | ------------- | ------------- | ------------- -**myNumber** | [**OuterNumber**](OuterNumber.md) | | [optional] -**myString** | [**OuterString**](OuterString.md) | | [optional] -**myBoolean** | [**OuterBoolean**](OuterBoolean.md) | | [optional] +**myNumber** | **Number** | | [optional] +**myString** | **String** | | [optional] +**myBoolean** | **Boolean** | | [optional] diff --git a/samples/client/petstore/javascript-es6/docs/OuterEnum.md b/samples/client/petstore/javascript-es6/docs/OuterEnum.md index 4caf04ae09da..445d3f4074c8 100644 --- a/samples/client/petstore/javascript-es6/docs/OuterEnum.md +++ b/samples/client/petstore/javascript-es6/docs/OuterEnum.md @@ -1,4 +1,4 @@ -# SwaggerPetstore.OuterEnum +# OpenApiPetstore.OuterEnum ## Enum diff --git a/samples/client/petstore/javascript-es6/docs/Pet.md b/samples/client/petstore/javascript-es6/docs/Pet.md index cae89de06d4c..e91ae688aad1 100644 --- a/samples/client/petstore/javascript-es6/docs/Pet.md +++ b/samples/client/petstore/javascript-es6/docs/Pet.md @@ -1,4 +1,4 @@ -# SwaggerPetstore.Pet +# OpenApiPetstore.Pet ## Properties Name | Type | Description | Notes diff --git a/samples/client/petstore/javascript-es6/docs/PetApi.md b/samples/client/petstore/javascript-es6/docs/PetApi.md index 9901993bf12f..324ecfbe867a 100644 --- a/samples/client/petstore/javascript-es6/docs/PetApi.md +++ b/samples/client/petstore/javascript-es6/docs/PetApi.md @@ -1,4 +1,4 @@ -# SwaggerPetstore.PetApi +# OpenApiPetstore.PetApi All URIs are relative to *http://petstore.swagger.io:80/v2* @@ -16,27 +16,22 @@ Method | HTTP request | Description # **addPet** -> addPet(body) +> addPet(pet) Add a new pet to the store - - ### Example ```javascript -import SwaggerPetstore from 'swagger_petstore'; -let defaultClient = SwaggerPetstore.ApiClient.instance; +import OpenApiPetstore from 'open_api_petstore'; +let defaultClient = OpenApiPetstore.ApiClient.instance; // Configure OAuth2 access token for authorization: petstore_auth let petstore_auth = defaultClient.authentications['petstore_auth']; petstore_auth.accessToken = 'YOUR ACCESS TOKEN'; -let apiInstance = new SwaggerPetstore.PetApi(); - -let body = new SwaggerPetstore.Pet(); // Pet | Pet object that needs to be added to the store - - -apiInstance.addPet(body, (error, data, response) => { +let apiInstance = new OpenApiPetstore.PetApi(); +let pet = new OpenApiPetstore.Pet(); // Pet | Pet object that needs to be added to the store +apiInstance.addPet(pet, (error, data, response) => { if (error) { console.error(error); } else { @@ -49,7 +44,7 @@ apiInstance.addPet(body, (error, data, response) => { Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- - **body** | [**Pet**](Pet.md)| Pet object that needs to be added to the store | + **pet** | [**Pet**](Pet.md)| Pet object that needs to be added to the store | ### Return type @@ -62,7 +57,7 @@ null (empty response body) ### HTTP request headers - **Content-Type**: application/json, application/xml - - **Accept**: application/xml, application/json + - **Accept**: Not defined # **deletePet** @@ -70,25 +65,20 @@ null (empty response body) Deletes a pet - - ### Example ```javascript -import SwaggerPetstore from 'swagger_petstore'; -let defaultClient = SwaggerPetstore.ApiClient.instance; +import OpenApiPetstore from 'open_api_petstore'; +let defaultClient = OpenApiPetstore.ApiClient.instance; // Configure OAuth2 access token for authorization: petstore_auth let petstore_auth = defaultClient.authentications['petstore_auth']; petstore_auth.accessToken = 'YOUR ACCESS TOKEN'; -let apiInstance = new SwaggerPetstore.PetApi(); - +let apiInstance = new OpenApiPetstore.PetApi(); let petId = 789; // Number | Pet id to delete - -let opts = { +let opts = { 'apiKey': "apiKey_example" // String | }; - apiInstance.deletePet(petId, opts, (error, data, response) => { if (error) { console.error(error); @@ -116,7 +106,7 @@ null (empty response body) ### HTTP request headers - **Content-Type**: Not defined - - **Accept**: application/xml, application/json + - **Accept**: Not defined # **findPetsByStatus** @@ -128,18 +118,15 @@ Multiple status values can be provided with comma separated strings ### Example ```javascript -import SwaggerPetstore from 'swagger_petstore'; -let defaultClient = SwaggerPetstore.ApiClient.instance; +import OpenApiPetstore from 'open_api_petstore'; +let defaultClient = OpenApiPetstore.ApiClient.instance; // Configure OAuth2 access token for authorization: petstore_auth let petstore_auth = defaultClient.authentications['petstore_auth']; petstore_auth.accessToken = 'YOUR ACCESS TOKEN'; -let apiInstance = new SwaggerPetstore.PetApi(); - -let status = ["status_example"]; // [String] | Status values that need to be considered for filter - - +let apiInstance = new OpenApiPetstore.PetApi(); +let status = ["'available'"]; // [String] | Status values that need to be considered for filter apiInstance.findPetsByStatus(status, (error, data, response) => { if (error) { console.error(error); @@ -178,18 +165,15 @@ Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 ### Example ```javascript -import SwaggerPetstore from 'swagger_petstore'; -let defaultClient = SwaggerPetstore.ApiClient.instance; +import OpenApiPetstore from 'open_api_petstore'; +let defaultClient = OpenApiPetstore.ApiClient.instance; // Configure OAuth2 access token for authorization: petstore_auth let petstore_auth = defaultClient.authentications['petstore_auth']; petstore_auth.accessToken = 'YOUR ACCESS TOKEN'; -let apiInstance = new SwaggerPetstore.PetApi(); - -let tags = ["tags_example"]; // [String] | Tags to filter by - - +let apiInstance = new OpenApiPetstore.PetApi(); +let tags = ["inner_example"]; // [String] | Tags to filter by apiInstance.findPetsByTags(tags, (error, data, response) => { if (error) { console.error(error); @@ -228,8 +212,8 @@ Returns a single pet ### Example ```javascript -import SwaggerPetstore from 'swagger_petstore'; -let defaultClient = SwaggerPetstore.ApiClient.instance; +import OpenApiPetstore from 'open_api_petstore'; +let defaultClient = OpenApiPetstore.ApiClient.instance; // Configure API key authorization: api_key let api_key = defaultClient.authentications['api_key']; @@ -237,11 +221,8 @@ api_key.apiKey = 'YOUR API KEY'; // Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null) //api_key.apiKeyPrefix = 'Token'; -let apiInstance = new SwaggerPetstore.PetApi(); - +let apiInstance = new OpenApiPetstore.PetApi(); let petId = 789; // Number | ID of pet to return - - apiInstance.getPetById(petId, (error, data, response) => { if (error) { console.error(error); @@ -272,27 +253,22 @@ Name | Type | Description | Notes # **updatePet** -> updatePet(body) +> updatePet(pet) Update an existing pet - - ### Example ```javascript -import SwaggerPetstore from 'swagger_petstore'; -let defaultClient = SwaggerPetstore.ApiClient.instance; +import OpenApiPetstore from 'open_api_petstore'; +let defaultClient = OpenApiPetstore.ApiClient.instance; // Configure OAuth2 access token for authorization: petstore_auth let petstore_auth = defaultClient.authentications['petstore_auth']; petstore_auth.accessToken = 'YOUR ACCESS TOKEN'; -let apiInstance = new SwaggerPetstore.PetApi(); - -let body = new SwaggerPetstore.Pet(); // Pet | Pet object that needs to be added to the store - - -apiInstance.updatePet(body, (error, data, response) => { +let apiInstance = new OpenApiPetstore.PetApi(); +let pet = new OpenApiPetstore.Pet(); // Pet | Pet object that needs to be added to the store +apiInstance.updatePet(pet, (error, data, response) => { if (error) { console.error(error); } else { @@ -305,7 +281,7 @@ apiInstance.updatePet(body, (error, data, response) => { Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- - **body** | [**Pet**](Pet.md)| Pet object that needs to be added to the store | + **pet** | [**Pet**](Pet.md)| Pet object that needs to be added to the store | ### Return type @@ -318,7 +294,7 @@ null (empty response body) ### HTTP request headers - **Content-Type**: application/json, application/xml - - **Accept**: application/xml, application/json + - **Accept**: Not defined # **updatePetWithForm** @@ -326,26 +302,21 @@ null (empty response body) Updates a pet in the store with form data - - ### Example ```javascript -import SwaggerPetstore from 'swagger_petstore'; -let defaultClient = SwaggerPetstore.ApiClient.instance; +import OpenApiPetstore from 'open_api_petstore'; +let defaultClient = OpenApiPetstore.ApiClient.instance; // Configure OAuth2 access token for authorization: petstore_auth let petstore_auth = defaultClient.authentications['petstore_auth']; petstore_auth.accessToken = 'YOUR ACCESS TOKEN'; -let apiInstance = new SwaggerPetstore.PetApi(); - +let apiInstance = new OpenApiPetstore.PetApi(); let petId = 789; // Number | ID of pet that needs to be updated - -let opts = { +let opts = { 'name': "name_example", // String | Updated name of the pet 'status': "status_example" // String | Updated status of the pet }; - apiInstance.updatePetWithForm(petId, opts, (error, data, response) => { if (error) { console.error(error); @@ -374,7 +345,7 @@ null (empty response body) ### HTTP request headers - **Content-Type**: application/x-www-form-urlencoded - - **Accept**: application/xml, application/json + - **Accept**: Not defined # **uploadFile** @@ -382,26 +353,21 @@ null (empty response body) uploads an image - - ### Example ```javascript -import SwaggerPetstore from 'swagger_petstore'; -let defaultClient = SwaggerPetstore.ApiClient.instance; +import OpenApiPetstore from 'open_api_petstore'; +let defaultClient = OpenApiPetstore.ApiClient.instance; // Configure OAuth2 access token for authorization: petstore_auth let petstore_auth = defaultClient.authentications['petstore_auth']; petstore_auth.accessToken = 'YOUR ACCESS TOKEN'; -let apiInstance = new SwaggerPetstore.PetApi(); - +let apiInstance = new OpenApiPetstore.PetApi(); let petId = 789; // Number | ID of pet to update - -let opts = { +let opts = { 'additionalMetadata': "additionalMetadata_example", // String | Additional data to pass to server - 'file': "/path/to/file.txt" // File | file to upload + 'file': "/path/to/file" // File | file to upload }; - apiInstance.uploadFile(petId, opts, (error, data, response) => { if (error) { console.error(error); diff --git a/samples/client/petstore/javascript-es6/docs/ReadOnlyFirst.md b/samples/client/petstore/javascript-es6/docs/ReadOnlyFirst.md index 5a16f8acce0d..671280fba339 100644 --- a/samples/client/petstore/javascript-es6/docs/ReadOnlyFirst.md +++ b/samples/client/petstore/javascript-es6/docs/ReadOnlyFirst.md @@ -1,4 +1,4 @@ -# SwaggerPetstore.ReadOnlyFirst +# OpenApiPetstore.ReadOnlyFirst ## Properties Name | Type | Description | Notes diff --git a/samples/client/petstore/javascript-es6/docs/SpecialModelName.md b/samples/client/petstore/javascript-es6/docs/SpecialModelName.md index a204af143a58..6039f53de367 100644 --- a/samples/client/petstore/javascript-es6/docs/SpecialModelName.md +++ b/samples/client/petstore/javascript-es6/docs/SpecialModelName.md @@ -1,4 +1,4 @@ -# SwaggerPetstore.SpecialModelName +# OpenApiPetstore.SpecialModelName ## Properties Name | Type | Description | Notes diff --git a/samples/client/petstore/javascript-es6/docs/StoreApi.md b/samples/client/petstore/javascript-es6/docs/StoreApi.md index 2581dc0b7d33..0f099a740dab 100644 --- a/samples/client/petstore/javascript-es6/docs/StoreApi.md +++ b/samples/client/petstore/javascript-es6/docs/StoreApi.md @@ -1,4 +1,4 @@ -# SwaggerPetstore.StoreApi +# OpenApiPetstore.StoreApi All URIs are relative to *http://petstore.swagger.io:80/v2* @@ -20,13 +20,10 @@ For valid response try integer IDs with value < 1000. Anything above 1000 or ### Example ```javascript -import SwaggerPetstore from 'swagger_petstore'; - -let apiInstance = new SwaggerPetstore.StoreApi(); +import OpenApiPetstore from 'open_api_petstore'; +let apiInstance = new OpenApiPetstore.StoreApi(); let orderId = "orderId_example"; // String | ID of the order that needs to be deleted - - apiInstance.deleteOrder(orderId, (error, data, response) => { if (error) { console.error(error); @@ -53,11 +50,11 @@ No authorization required ### HTTP request headers - **Content-Type**: Not defined - - **Accept**: application/xml, application/json + - **Accept**: Not defined # **getInventory** -> {'String': 'Number'} getInventory() +> {String: Number} getInventory() Returns pet inventories by status @@ -65,8 +62,8 @@ Returns a map of status codes to quantities ### Example ```javascript -import SwaggerPetstore from 'swagger_petstore'; -let defaultClient = SwaggerPetstore.ApiClient.instance; +import OpenApiPetstore from 'open_api_petstore'; +let defaultClient = OpenApiPetstore.ApiClient.instance; // Configure API key authorization: api_key let api_key = defaultClient.authentications['api_key']; @@ -74,8 +71,7 @@ api_key.apiKey = 'YOUR API KEY'; // Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null) //api_key.apiKeyPrefix = 'Token'; -let apiInstance = new SwaggerPetstore.StoreApi(); - +let apiInstance = new OpenApiPetstore.StoreApi(); apiInstance.getInventory((error, data, response) => { if (error) { console.error(error); @@ -90,7 +86,7 @@ This endpoint does not need any parameter. ### Return type -**{'String': 'Number'}** +**{String: Number}** ### Authorization @@ -111,13 +107,10 @@ For valid response try integer IDs with value <= 5 or > 10. Other val ### Example ```javascript -import SwaggerPetstore from 'swagger_petstore'; - -let apiInstance = new SwaggerPetstore.StoreApi(); +import OpenApiPetstore from 'open_api_petstore'; +let apiInstance = new OpenApiPetstore.StoreApi(); let orderId = 789; // Number | ID of pet that needs to be fetched - - apiInstance.getOrderById(orderId, (error, data, response) => { if (error) { console.error(error); @@ -148,22 +141,17 @@ No authorization required # **placeOrder** -> Order placeOrder(body) +> Order placeOrder(order) Place an order for a pet - - ### Example ```javascript -import SwaggerPetstore from 'swagger_petstore'; - -let apiInstance = new SwaggerPetstore.StoreApi(); - -let body = new SwaggerPetstore.Order(); // Order | order placed for purchasing the pet - +import OpenApiPetstore from 'open_api_petstore'; -apiInstance.placeOrder(body, (error, data, response) => { +let apiInstance = new OpenApiPetstore.StoreApi(); +let order = new OpenApiPetstore.Order(); // Order | order placed for purchasing the pet +apiInstance.placeOrder(order, (error, data, response) => { if (error) { console.error(error); } else { @@ -176,7 +164,7 @@ apiInstance.placeOrder(body, (error, data, response) => { Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- - **body** | [**Order**](Order.md)| order placed for purchasing the pet | + **order** | [**Order**](Order.md)| order placed for purchasing the pet | ### Return type diff --git a/samples/client/petstore/javascript-es6/docs/Tag.md b/samples/client/petstore/javascript-es6/docs/Tag.md index c0277cae8ffe..a53941e80e0c 100644 --- a/samples/client/petstore/javascript-es6/docs/Tag.md +++ b/samples/client/petstore/javascript-es6/docs/Tag.md @@ -1,4 +1,4 @@ -# SwaggerPetstore.Tag +# OpenApiPetstore.Tag ## Properties Name | Type | Description | Notes diff --git a/samples/client/petstore/javascript-es6/docs/User.md b/samples/client/petstore/javascript-es6/docs/User.md index 2cac604cfa0b..2e86dd378bfa 100644 --- a/samples/client/petstore/javascript-es6/docs/User.md +++ b/samples/client/petstore/javascript-es6/docs/User.md @@ -1,4 +1,4 @@ -# SwaggerPetstore.User +# OpenApiPetstore.User ## Properties Name | Type | Description | Notes diff --git a/samples/client/petstore/javascript-es6/docs/UserApi.md b/samples/client/petstore/javascript-es6/docs/UserApi.md index d77e8413fd3d..14feafae45fc 100644 --- a/samples/client/petstore/javascript-es6/docs/UserApi.md +++ b/samples/client/petstore/javascript-es6/docs/UserApi.md @@ -1,4 +1,4 @@ -# SwaggerPetstore.UserApi +# OpenApiPetstore.UserApi All URIs are relative to *http://petstore.swagger.io:80/v2* @@ -16,7 +16,7 @@ Method | HTTP request | Description # **createUser** -> createUser(body) +> createUser(user) Create user @@ -24,14 +24,11 @@ This can only be done by the logged in user. ### Example ```javascript -import SwaggerPetstore from 'swagger_petstore'; +import OpenApiPetstore from 'open_api_petstore'; -let apiInstance = new SwaggerPetstore.UserApi(); - -let body = new SwaggerPetstore.User(); // User | Created user object - - -apiInstance.createUser(body, (error, data, response) => { +let apiInstance = new OpenApiPetstore.UserApi(); +let user = new OpenApiPetstore.User(); // User | Created user object +apiInstance.createUser(user, (error, data, response) => { if (error) { console.error(error); } else { @@ -44,7 +41,7 @@ apiInstance.createUser(body, (error, data, response) => { Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- - **body** | [**User**](User.md)| Created user object | + **user** | [**User**](User.md)| Created user object | ### Return type @@ -57,26 +54,21 @@ No authorization required ### HTTP request headers - **Content-Type**: Not defined - - **Accept**: application/xml, application/json + - **Accept**: Not defined # **createUsersWithArrayInput** -> createUsersWithArrayInput(body) +> createUsersWithArrayInput(user) Creates list of users with given input array - - ### Example ```javascript -import SwaggerPetstore from 'swagger_petstore'; - -let apiInstance = new SwaggerPetstore.UserApi(); - -let body = [new SwaggerPetstore.User()]; // [User] | List of user object +import OpenApiPetstore from 'open_api_petstore'; - -apiInstance.createUsersWithArrayInput(body, (error, data, response) => { +let apiInstance = new OpenApiPetstore.UserApi(); +let user = [new OpenApiPetstore.User()]; // [User] | List of user object +apiInstance.createUsersWithArrayInput(user, (error, data, response) => { if (error) { console.error(error); } else { @@ -89,7 +81,7 @@ apiInstance.createUsersWithArrayInput(body, (error, data, response) => { Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- - **body** | [**[User]**](User.md)| List of user object | + **user** | [**[User]**](Array.md)| List of user object | ### Return type @@ -102,26 +94,21 @@ No authorization required ### HTTP request headers - **Content-Type**: Not defined - - **Accept**: application/xml, application/json + - **Accept**: Not defined # **createUsersWithListInput** -> createUsersWithListInput(body) +> createUsersWithListInput(user) Creates list of users with given input array - - ### Example ```javascript -import SwaggerPetstore from 'swagger_petstore'; - -let apiInstance = new SwaggerPetstore.UserApi(); - -let body = [new SwaggerPetstore.User()]; // [User] | List of user object - +import OpenApiPetstore from 'open_api_petstore'; -apiInstance.createUsersWithListInput(body, (error, data, response) => { +let apiInstance = new OpenApiPetstore.UserApi(); +let user = [new OpenApiPetstore.User()]; // [User] | List of user object +apiInstance.createUsersWithListInput(user, (error, data, response) => { if (error) { console.error(error); } else { @@ -134,7 +121,7 @@ apiInstance.createUsersWithListInput(body, (error, data, response) => { Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- - **body** | [**[User]**](User.md)| List of user object | + **user** | [**[User]**](Array.md)| List of user object | ### Return type @@ -147,7 +134,7 @@ No authorization required ### HTTP request headers - **Content-Type**: Not defined - - **Accept**: application/xml, application/json + - **Accept**: Not defined # **deleteUser** @@ -159,13 +146,10 @@ This can only be done by the logged in user. ### Example ```javascript -import SwaggerPetstore from 'swagger_petstore'; - -let apiInstance = new SwaggerPetstore.UserApi(); +import OpenApiPetstore from 'open_api_petstore'; +let apiInstance = new OpenApiPetstore.UserApi(); let username = "username_example"; // String | The name that needs to be deleted - - apiInstance.deleteUser(username, (error, data, response) => { if (error) { console.error(error); @@ -192,7 +176,7 @@ No authorization required ### HTTP request headers - **Content-Type**: Not defined - - **Accept**: application/xml, application/json + - **Accept**: Not defined # **getUserByName** @@ -200,17 +184,12 @@ No authorization required Get user by user name - - ### Example ```javascript -import SwaggerPetstore from 'swagger_petstore'; - -let apiInstance = new SwaggerPetstore.UserApi(); - -let username = "username_example"; // String | The name that needs to be fetched. Use user1 for testing. - +import OpenApiPetstore from 'open_api_petstore'; +let apiInstance = new OpenApiPetstore.UserApi(); +let username = "username_example"; // String | The name that needs to be fetched. Use user1 for testing. apiInstance.getUserByName(username, (error, data, response) => { if (error) { console.error(error); @@ -224,7 +203,7 @@ apiInstance.getUserByName(username, (error, data, response) => { Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- - **username** | **String**| The name that needs to be fetched. Use user1 for testing. | + **username** | **String**| The name that needs to be fetched. Use user1 for testing. | ### Return type @@ -241,23 +220,17 @@ No authorization required # **loginUser** -> 'String' loginUser(username, password) +> String loginUser(username, password) Logs user into the system - - ### Example ```javascript -import SwaggerPetstore from 'swagger_petstore'; - -let apiInstance = new SwaggerPetstore.UserApi(); +import OpenApiPetstore from 'open_api_petstore'; +let apiInstance = new OpenApiPetstore.UserApi(); let username = "username_example"; // String | The user name for login - let password = "password_example"; // String | The password for login in clear text - - apiInstance.loginUser(username, password, (error, data, response) => { if (error) { console.error(error); @@ -276,7 +249,7 @@ Name | Type | Description | Notes ### Return type -**'String'** +**String** ### Authorization @@ -293,14 +266,11 @@ No authorization required Logs out current logged in user session - - ### Example ```javascript -import SwaggerPetstore from 'swagger_petstore'; - -let apiInstance = new SwaggerPetstore.UserApi(); +import OpenApiPetstore from 'open_api_petstore'; +let apiInstance = new OpenApiPetstore.UserApi(); apiInstance.logoutUser((error, data, response) => { if (error) { console.error(error); @@ -324,11 +294,11 @@ No authorization required ### HTTP request headers - **Content-Type**: Not defined - - **Accept**: application/xml, application/json + - **Accept**: Not defined # **updateUser** -> updateUser(username, body) +> updateUser(username, user) Updated user @@ -336,16 +306,12 @@ This can only be done by the logged in user. ### Example ```javascript -import SwaggerPetstore from 'swagger_petstore'; - -let apiInstance = new SwaggerPetstore.UserApi(); +import OpenApiPetstore from 'open_api_petstore'; +let apiInstance = new OpenApiPetstore.UserApi(); let username = "username_example"; // String | name that need to be deleted - -let body = new SwaggerPetstore.User(); // User | Updated user object - - -apiInstance.updateUser(username, body, (error, data, response) => { +let user = new OpenApiPetstore.User(); // User | Updated user object +apiInstance.updateUser(username, user, (error, data, response) => { if (error) { console.error(error); } else { @@ -359,7 +325,7 @@ apiInstance.updateUser(username, body, (error, data, response) => { Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- **username** | **String**| name that need to be deleted | - **body** | [**User**](User.md)| Updated user object | + **user** | [**User**](User.md)| Updated user object | ### Return type @@ -372,5 +338,5 @@ No authorization required ### HTTP request headers - **Content-Type**: Not defined - - **Accept**: application/xml, application/json + - **Accept**: Not defined diff --git a/samples/client/petstore/javascript-es6/git_push.sh b/samples/client/petstore/javascript-es6/git_push.sh index 0d041ad0ba49..04dd5df38e83 100644 --- a/samples/client/petstore/javascript-es6/git_push.sh +++ b/samples/client/petstore/javascript-es6/git_push.sh @@ -1,7 +1,7 @@ #!/bin/sh # ref: https://help.github.com/articles/adding-an-existing-project-to-github-using-the-command-line/ # -# Usage example: /bin/sh ./git_push.sh wing328 swagger-petstore-perl "minor update" +# Usage example: /bin/sh ./git_push.sh wing328 openapi-pestore-perl "minor update" git_user_id=$1 git_repo_id=$2 diff --git a/samples/client/petstore/javascript-es6/package.json b/samples/client/petstore/javascript-es6/package.json index afb99e8a97a0..df2fea63d600 100644 --- a/samples/client/petstore/javascript-es6/package.json +++ b/samples/client/petstore/javascript-es6/package.json @@ -1,5 +1,5 @@ { - "name": "swagger_petstore", + "name": "open_api_petstore", "version": "1.0.0", "description": "This_spec_is_mainly_for_testing_Petstore_server_and_contains_fake_endpoints_models__Please_do_not_use_this_for_any_other_purpose__Special_characters__", "license": "Apache-2.0", diff --git a/samples/client/petstore/javascript-es6/pom.xml b/samples/client/petstore/javascript-es6/pom.xml new file mode 100644 index 000000000000..66f75f962f93 --- /dev/null +++ b/samples/client/petstore/javascript-es6/pom.xml @@ -0,0 +1,45 @@ + + 4.0.0 + org.openapitools + openapi-petstore-javascript-es6 + pom + 1.0-SNAPSHOT + OpenAPI Petstore JS Client (ES6) + + + + org.codehaus.mojo + exec-maven-plugin + 1.2.1 + + + npm-install + pre-integration-test + + exec + + + npm + + install + + + + + mocha + integration-test + + exec + + + npm + + test + + + + + + + + diff --git a/samples/client/petstore/javascript-es6/src/ApiClient.js b/samples/client/petstore/javascript-es6/src/ApiClient.js index 11497febbe96..85db2a42984a 100644 --- a/samples/client/petstore/javascript-es6/src/ApiClient.js +++ b/samples/client/petstore/javascript-es6/src/ApiClient.js @@ -1,12 +1,12 @@ /** - * Swagger Petstore + * OpenAPI Petstore * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ * * OpenAPI spec version: 1.0.0 - * Contact: apiteam@swagger.io + * * - * NOTE: This class is auto generated by the swagger code generator program. - * https://github.com/swagger-api/swagger-codegen.git + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech * Do not edit the class manually. * */ @@ -27,7 +27,7 @@ import querystring from "querystring"; * @alias module:ApiClient * @class */ -export default class ApiClient { +class ApiClient { constructor() { /** * The base URL against which to resolve every API call's (relative) path. @@ -225,43 +225,6 @@ export default class ApiClient { return newParams; } - /** - * Enumeration of collection format separator strategies. - * @enum {String} - * @readonly - */ - static CollectionFormatEnum = { - /** - * Comma-separated values. Value: csv - * @const - */ - CSV: ',', - - /** - * Space-separated values. Value: ssv - * @const - */ - SSV: ' ', - - /** - * Tab-separated values. Value: tsv - * @const - */ - TSV: '\t', - - /** - * Pipe(|)-separated values. Value: pipes - * @const - */ - PIPES: '|', - - /** - * Native array. Value: multi - * @const - */ - MULTI: 'multi' - }; - /** * Builds a string representation of an array-type actual parameter, according to the given collection format. * @param {Array} param An array parameter. @@ -490,7 +453,7 @@ export default class ApiClient { * @returns {Date} The parsed date object. */ static parseDate(str) { - return new Date(str.replace(/T/i, ' ')); + return new Date(str); } /** @@ -581,8 +544,46 @@ export default class ApiClient { }; } +/** + * Enumeration of collection format separator strategies. + * @enum {String} + * @readonly + */ +ApiClient.CollectionFormatEnum = { + /** + * Comma-separated values. Value: csv + * @const + */ + CSV: ',', + + /** + * Space-separated values. Value: ssv + * @const + */ + SSV: ' ', + + /** + * Tab-separated values. Value: tsv + * @const + */ + TSV: '\t', + + /** + * Pipe(|)-separated values. Value: pipes + * @const + */ + PIPES: '|', + + /** + * Native array. Value: multi + * @const + */ + MULTI: 'multi' +}; + /** * The default API client implementation. * @type {module:ApiClient} */ ApiClient.instance = new ApiClient(); +export default ApiClient; \ No newline at end of file diff --git a/samples/client/petstore/javascript-es6/src/api/AnotherFakeApi.js b/samples/client/petstore/javascript-es6/src/api/AnotherFakeApi.js index ed170379f3b4..601a54725e33 100644 --- a/samples/client/petstore/javascript-es6/src/api/AnotherFakeApi.js +++ b/samples/client/petstore/javascript-es6/src/api/AnotherFakeApi.js @@ -1,12 +1,12 @@ /** - * Swagger Petstore + * OpenAPI Petstore * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ * * OpenAPI spec version: 1.0.0 - * Contact: apiteam@swagger.io + * * - * NOTE: This class is auto generated by the swagger code generator program. - * https://github.com/swagger-api/swagger-codegen.git + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech * Do not edit the class manually. * */ @@ -45,16 +45,16 @@ export default class AnotherFakeApi { /** * To test special tags * To test special tags - * @param {module:model/Client} body client model + * @param {module:model/Client} client client model * @param {module:api/AnotherFakeApi~testSpecialTagsCallback} callback The callback function, accepting three arguments: error, data, response * data is of type: {@link module:model/Client} */ - testSpecialTags(body, callback) { - let postBody = body; + testSpecialTags(client, callback) { + let postBody = client; - // verify the required parameter 'body' is set - if (body === undefined || body === null) { - throw new Error("Missing the required parameter 'body' when calling testSpecialTags"); + // verify the required parameter 'client' is set + if (client === undefined || client === null) { + throw new Error("Missing the required parameter 'client' when calling testSpecialTags"); } diff --git a/samples/client/petstore/javascript-es6/src/api/FakeApi.js b/samples/client/petstore/javascript-es6/src/api/FakeApi.js index 1a5f16e94bc6..725872e09963 100644 --- a/samples/client/petstore/javascript-es6/src/api/FakeApi.js +++ b/samples/client/petstore/javascript-es6/src/api/FakeApi.js @@ -1,12 +1,12 @@ /** - * Swagger Petstore + * OpenAPI Petstore * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ * * OpenAPI spec version: 1.0.0 - * Contact: apiteam@swagger.io + * * - * NOTE: This class is auto generated by the swagger code generator program. - * https://github.com/swagger-api/swagger-codegen.git + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech * Do not edit the class manually. * */ @@ -14,10 +14,8 @@ import ApiClient from "../ApiClient"; import Client from '../model/Client'; -import OuterBoolean from '../model/OuterBoolean'; import OuterComposite from '../model/OuterComposite'; -import OuterNumber from '../model/OuterNumber'; -import OuterString from '../model/OuterString'; +import User from '../model/User'; /** * Fake service. @@ -42,16 +40,16 @@ export default class FakeApi { * Callback function to receive the result of the fakeOuterBooleanSerialize operation. * @callback module:api/FakeApi~fakeOuterBooleanSerializeCallback * @param {String} error Error message, if any. - * @param {module:model/OuterBoolean} data The data returned by the service call. + * @param {Boolean} data The data returned by the service call. * @param {String} response The complete HTTP response. */ /** * Test serialization of outer boolean types * @param {Object} opts Optional parameters - * @param {module:model/OuterBoolean} opts.body Input boolean as post body + * @param {Boolean} opts.body Input boolean as post body * @param {module:api/FakeApi~fakeOuterBooleanSerializeCallback} callback The callback function, accepting three arguments: error, data, response - * data is of type: {@link module:model/OuterBoolean} + * data is of type: {@link Boolean} */ fakeOuterBooleanSerialize(opts, callback) { opts = opts || {}; @@ -69,8 +67,8 @@ export default class FakeApi { let authNames = []; let contentTypes = []; - let accepts = []; - let returnType = OuterBoolean; + let accepts = ['*/*']; + let returnType = 'Boolean'; return this.apiClient.callApi( '/fake/outer/boolean', 'POST', @@ -90,13 +88,13 @@ export default class FakeApi { /** * Test serialization of object with outer number type * @param {Object} opts Optional parameters - * @param {module:model/OuterComposite} opts.body Input composite as post body + * @param {module:model/OuterComposite} opts.outerComposite Input composite as post body * @param {module:api/FakeApi~fakeOuterCompositeSerializeCallback} callback The callback function, accepting three arguments: error, data, response * data is of type: {@link module:model/OuterComposite} */ fakeOuterCompositeSerialize(opts, callback) { opts = opts || {}; - let postBody = opts['body']; + let postBody = opts['outerComposite']; let pathParams = { @@ -110,7 +108,7 @@ export default class FakeApi { let authNames = []; let contentTypes = []; - let accepts = []; + let accepts = ['*/*']; let returnType = OuterComposite; return this.apiClient.callApi( @@ -124,16 +122,16 @@ export default class FakeApi { * Callback function to receive the result of the fakeOuterNumberSerialize operation. * @callback module:api/FakeApi~fakeOuterNumberSerializeCallback * @param {String} error Error message, if any. - * @param {module:model/OuterNumber} data The data returned by the service call. + * @param {Number} data The data returned by the service call. * @param {String} response The complete HTTP response. */ /** * Test serialization of outer number types * @param {Object} opts Optional parameters - * @param {module:model/OuterNumber} opts.body Input number as post body + * @param {Number} opts.body Input number as post body * @param {module:api/FakeApi~fakeOuterNumberSerializeCallback} callback The callback function, accepting three arguments: error, data, response - * data is of type: {@link module:model/OuterNumber} + * data is of type: {@link Number} */ fakeOuterNumberSerialize(opts, callback) { opts = opts || {}; @@ -151,8 +149,8 @@ export default class FakeApi { let authNames = []; let contentTypes = []; - let accepts = []; - let returnType = OuterNumber; + let accepts = ['*/*']; + let returnType = 'Number'; return this.apiClient.callApi( '/fake/outer/number', 'POST', @@ -165,16 +163,16 @@ export default class FakeApi { * Callback function to receive the result of the fakeOuterStringSerialize operation. * @callback module:api/FakeApi~fakeOuterStringSerializeCallback * @param {String} error Error message, if any. - * @param {module:model/OuterString} data The data returned by the service call. + * @param {String} data The data returned by the service call. * @param {String} response The complete HTTP response. */ /** * Test serialization of outer string types * @param {Object} opts Optional parameters - * @param {module:model/OuterString} opts.body Input string as post body + * @param {String} opts.body Input string as post body * @param {module:api/FakeApi~fakeOuterStringSerializeCallback} callback The callback function, accepting three arguments: error, data, response - * data is of type: {@link module:model/OuterString} + * data is of type: {@link String} */ fakeOuterStringSerialize(opts, callback) { opts = opts || {}; @@ -192,8 +190,8 @@ export default class FakeApi { let authNames = []; let contentTypes = []; - let accepts = []; - let returnType = OuterString; + let accepts = ['*/*']; + let returnType = 'String'; return this.apiClient.callApi( '/fake/outer/string', 'POST', @@ -202,6 +200,55 @@ export default class FakeApi { ); } + /** + * Callback function to receive the result of the testBodyWithQueryParams operation. + * @callback module:api/FakeApi~testBodyWithQueryParamsCallback + * @param {String} error Error message, if any. + * @param data This operation does not return a value. + * @param {String} response The complete HTTP response. + */ + + /** + * @param {String} query + * @param {module:model/User} user + * @param {module:api/FakeApi~testBodyWithQueryParamsCallback} callback The callback function, accepting three arguments: error, data, response + */ + testBodyWithQueryParams(query, user, callback) { + let postBody = user; + + // verify the required parameter 'query' is set + if (query === undefined || query === null) { + throw new Error("Missing the required parameter 'query' when calling testBodyWithQueryParams"); + } + + // verify the required parameter 'user' is set + if (user === undefined || user === null) { + throw new Error("Missing the required parameter 'user' when calling testBodyWithQueryParams"); + } + + + let pathParams = { + }; + let queryParams = { + 'query': query + }; + let headerParams = { + }; + let formParams = { + }; + + let authNames = []; + let contentTypes = ['application/json']; + let accepts = []; + let returnType = null; + + return this.apiClient.callApi( + '/fake/body-with-query-params', 'PUT', + pathParams, queryParams, headerParams, formParams, postBody, + authNames, contentTypes, accepts, returnType, callback + ); + } + /** * Callback function to receive the result of the testClientModel operation. * @callback module:api/FakeApi~testClientModelCallback @@ -213,16 +260,16 @@ export default class FakeApi { /** * To test \"client\" model * To test \"client\" model - * @param {module:model/Client} body client model + * @param {module:model/Client} client client model * @param {module:api/FakeApi~testClientModelCallback} callback The callback function, accepting three arguments: error, data, response * data is of type: {@link module:model/Client} */ - testClientModel(body, callback) { - let postBody = body; + testClientModel(client, callback) { + let postBody = client; - // verify the required parameter 'body' is set - if (body === undefined || body === null) { - throw new Error("Missing the required parameter 'body' when calling testClientModel"); + // verify the required parameter 'client' is set + if (client === undefined || client === null) { + throw new Error("Missing the required parameter 'client' when calling testClientModel"); } @@ -268,7 +315,7 @@ export default class FakeApi { * @param {Number} opts.int64 None * @param {Number} opts._float None * @param {String} opts._string None - * @param {Blob} opts.binary None + * @param {File} opts.binary None * @param {Date} opts._date None * @param {Date} opts.dateTime None * @param {String} opts.password None @@ -324,8 +371,8 @@ export default class FakeApi { }; let authNames = ['http_basic_test']; - let contentTypes = ['application/xml; charset=utf-8', 'application/json; charset=utf-8']; - let accepts = ['application/xml; charset=utf-8', 'application/json; charset=utf-8']; + let contentTypes = ['application/x-www-form-urlencoded']; + let accepts = []; let returnType = null; return this.apiClient.callApi( @@ -347,14 +394,14 @@ export default class FakeApi { * To test enum parameters * To test enum parameters * @param {Object} opts Optional parameters - * @param {Array.} opts.enumFormStringArray Form parameter enum test (string array) - * @param {module:model/String} opts.enumFormString Form parameter enum test (string) (default to -efg) * @param {Array.} opts.enumHeaderStringArray Header parameter enum test (string array) - * @param {module:model/String} opts.enumHeaderString Header parameter enum test (string) (default to -efg) + * @param {module:model/String} opts.enumHeaderString Header parameter enum test (string) (default to '-efg') * @param {Array.} opts.enumQueryStringArray Query parameter enum test (string array) - * @param {module:model/String} opts.enumQueryString Query parameter enum test (string) (default to -efg) + * @param {module:model/String} opts.enumQueryString Query parameter enum test (string) (default to '-efg') * @param {module:model/Number} opts.enumQueryInteger Query parameter enum test (double) * @param {module:model/Number} opts.enumQueryDouble Query parameter enum test (double) + * @param {Array.} opts.enumFormStringArray Form parameter enum test (string array) (default to '$') + * @param {module:model/String} opts.enumFormString Form parameter enum test (string) (default to '-efg') * @param {module:api/FakeApi~testEnumParametersCallback} callback The callback function, accepting three arguments: error, data, response */ testEnumParameters(opts, callback) { @@ -367,7 +414,8 @@ export default class FakeApi { let queryParams = { 'enum_query_string_array': this.apiClient.buildCollectionParam(opts['enumQueryStringArray'], 'csv'), 'enum_query_string': opts['enumQueryString'], - 'enum_query_integer': opts['enumQueryInteger'] + 'enum_query_integer': opts['enumQueryInteger'], + 'enum_query_double': opts['enumQueryDouble'] }; let headerParams = { 'enum_header_string_array': opts['enumHeaderStringArray'], @@ -375,13 +423,12 @@ export default class FakeApi { }; let formParams = { 'enum_form_string_array': this.apiClient.buildCollectionParam(opts['enumFormStringArray'], 'csv'), - 'enum_form_string': opts['enumFormString'], - 'enum_query_double': opts['enumQueryDouble'] + 'enum_form_string': opts['enumFormString'] }; let authNames = []; - let contentTypes = ['*/*']; - let accepts = ['*/*']; + let contentTypes = ['application/x-www-form-urlencoded']; + let accepts = []; let returnType = null; return this.apiClient.callApi( @@ -401,16 +448,15 @@ export default class FakeApi { /** * test inline additionalProperties - * - * @param {Object} param request body + * @param {Object.} requestBody request body * @param {module:api/FakeApi~testInlineAdditionalPropertiesCallback} callback The callback function, accepting three arguments: error, data, response */ - testInlineAdditionalProperties(param, callback) { - let postBody = param; + testInlineAdditionalProperties(requestBody, callback) { + let postBody = requestBody; - // verify the required parameter 'param' is set - if (param === undefined || param === null) { - throw new Error("Missing the required parameter 'param' when calling testInlineAdditionalProperties"); + // verify the required parameter 'requestBody' is set + if (requestBody === undefined || requestBody === null) { + throw new Error("Missing the required parameter 'requestBody' when calling testInlineAdditionalProperties"); } @@ -445,7 +491,6 @@ export default class FakeApi { /** * test json serialization of form data - * * @param {String} param field1 * @param {String} param2 field2 * @param {module:api/FakeApi~testJsonFormDataCallback} callback The callback function, accepting three arguments: error, data, response @@ -476,7 +521,7 @@ export default class FakeApi { }; let authNames = []; - let contentTypes = ['application/json']; + let contentTypes = ['application/x-www-form-urlencoded']; let accepts = []; let returnType = null; diff --git a/samples/client/petstore/javascript-es6/src/api/FakeClassnameTags123Api.js b/samples/client/petstore/javascript-es6/src/api/FakeClassnameTags123Api.js index 11ece0534a77..32ab1cadb525 100644 --- a/samples/client/petstore/javascript-es6/src/api/FakeClassnameTags123Api.js +++ b/samples/client/petstore/javascript-es6/src/api/FakeClassnameTags123Api.js @@ -1,12 +1,12 @@ /** - * Swagger Petstore + * OpenAPI Petstore * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ * * OpenAPI spec version: 1.0.0 - * Contact: apiteam@swagger.io + * * - * NOTE: This class is auto generated by the swagger code generator program. - * https://github.com/swagger-api/swagger-codegen.git + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech * Do not edit the class manually. * */ @@ -44,16 +44,17 @@ export default class FakeClassnameTags123Api { /** * To test class name in snake case - * @param {module:model/Client} body client model + * To test class name in snake case + * @param {module:model/Client} client client model * @param {module:api/FakeClassnameTags123Api~testClassnameCallback} callback The callback function, accepting three arguments: error, data, response * data is of type: {@link module:model/Client} */ - testClassname(body, callback) { - let postBody = body; + testClassname(client, callback) { + let postBody = client; - // verify the required parameter 'body' is set - if (body === undefined || body === null) { - throw new Error("Missing the required parameter 'body' when calling testClassname"); + // verify the required parameter 'client' is set + if (client === undefined || client === null) { + throw new Error("Missing the required parameter 'client' when calling testClassname"); } diff --git a/samples/client/petstore/javascript-es6/src/api/Fake_classname_tags123Api.js b/samples/client/petstore/javascript-es6/src/api/Fake_classname_tags123Api.js deleted file mode 100644 index 1240fbf42c1b..000000000000 --- a/samples/client/petstore/javascript-es6/src/api/Fake_classname_tags123Api.js +++ /dev/null @@ -1,82 +0,0 @@ -/** - * Swagger Petstore - * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ - * - * OpenAPI spec version: 1.0.0 - * Contact: apiteam@swagger.io - * - * NOTE: This class is auto generated by the swagger code generator program. - * https://github.com/swagger-api/swagger-codegen.git - * Do not edit the class manually. - * - */ - - -import ApiClient from "../ApiClient"; -import Client from '../model/Client'; - -/** -* Fake_classname_tags123 service. -* @module api/Fake_classname_tags123Api -* @version 1.0.0 -*/ -export default class Fake_classname_tags123Api { - - /** - * Constructs a new Fake_classname_tags123Api. - * @alias module:api/Fake_classname_tags123Api - * @class - * @param {module:ApiClient} [apiClient] Optional API client implementation to use, - * default to {@link module:ApiClient#instance} if unspecified. - */ - constructor(apiClient) { - this.apiClient = apiClient || ApiClient.instance; - } - - - /** - * Callback function to receive the result of the testClassname operation. - * @callback module:api/Fake_classname_tags123Api~testClassnameCallback - * @param {String} error Error message, if any. - * @param {module:model/Client} data The data returned by the service call. - * @param {String} response The complete HTTP response. - */ - - /** - * To test class name in snake case - * @param {module:model/Client} body client model - * @param {module:api/Fake_classname_tags123Api~testClassnameCallback} callback The callback function, accepting three arguments: error, data, response - * data is of type: {@link module:model/Client} - */ - testClassname(body, callback) { - let postBody = body; - - // verify the required parameter 'body' is set - if (body === undefined || body === null) { - throw new Error("Missing the required parameter 'body' when calling testClassname"); - } - - - let pathParams = { - }; - let queryParams = { - }; - let headerParams = { - }; - let formParams = { - }; - - let authNames = ['api_key_query']; - let contentTypes = ['application/json']; - let accepts = ['application/json']; - let returnType = Client; - - return this.apiClient.callApi( - '/fake_classname_test', 'PATCH', - pathParams, queryParams, headerParams, formParams, postBody, - authNames, contentTypes, accepts, returnType, callback - ); - } - - -} diff --git a/samples/client/petstore/javascript-es6/src/api/PetApi.js b/samples/client/petstore/javascript-es6/src/api/PetApi.js index aea4c0049b22..d6b39c8671b8 100644 --- a/samples/client/petstore/javascript-es6/src/api/PetApi.js +++ b/samples/client/petstore/javascript-es6/src/api/PetApi.js @@ -1,12 +1,12 @@ /** - * Swagger Petstore + * OpenAPI Petstore * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ * * OpenAPI spec version: 1.0.0 - * Contact: apiteam@swagger.io + * * - * NOTE: This class is auto generated by the swagger code generator program. - * https://github.com/swagger-api/swagger-codegen.git + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech * Do not edit the class manually. * */ @@ -45,16 +45,15 @@ export default class PetApi { /** * Add a new pet to the store - * - * @param {module:model/Pet} body Pet object that needs to be added to the store + * @param {module:model/Pet} pet Pet object that needs to be added to the store * @param {module:api/PetApi~addPetCallback} callback The callback function, accepting three arguments: error, data, response */ - addPet(body, callback) { - let postBody = body; + addPet(pet, callback) { + let postBody = pet; - // verify the required parameter 'body' is set - if (body === undefined || body === null) { - throw new Error("Missing the required parameter 'body' when calling addPet"); + // verify the required parameter 'pet' is set + if (pet === undefined || pet === null) { + throw new Error("Missing the required parameter 'pet' when calling addPet"); } @@ -69,7 +68,7 @@ export default class PetApi { let authNames = ['petstore_auth']; let contentTypes = ['application/json', 'application/xml']; - let accepts = ['application/xml', 'application/json']; + let accepts = []; let returnType = null; return this.apiClient.callApi( @@ -89,7 +88,6 @@ export default class PetApi { /** * Deletes a pet - * * @param {Number} petId Pet id to delete * @param {Object} opts Optional parameters * @param {String} opts.apiKey @@ -118,7 +116,7 @@ export default class PetApi { let authNames = ['petstore_auth']; let contentTypes = []; - let accepts = ['application/xml', 'application/json']; + let accepts = []; let returnType = null; return this.apiClient.callApi( @@ -276,16 +274,15 @@ export default class PetApi { /** * Update an existing pet - * - * @param {module:model/Pet} body Pet object that needs to be added to the store + * @param {module:model/Pet} pet Pet object that needs to be added to the store * @param {module:api/PetApi~updatePetCallback} callback The callback function, accepting three arguments: error, data, response */ - updatePet(body, callback) { - let postBody = body; + updatePet(pet, callback) { + let postBody = pet; - // verify the required parameter 'body' is set - if (body === undefined || body === null) { - throw new Error("Missing the required parameter 'body' when calling updatePet"); + // verify the required parameter 'pet' is set + if (pet === undefined || pet === null) { + throw new Error("Missing the required parameter 'pet' when calling updatePet"); } @@ -300,7 +297,7 @@ export default class PetApi { let authNames = ['petstore_auth']; let contentTypes = ['application/json', 'application/xml']; - let accepts = ['application/xml', 'application/json']; + let accepts = []; let returnType = null; return this.apiClient.callApi( @@ -320,7 +317,6 @@ export default class PetApi { /** * Updates a pet in the store with form data - * * @param {Number} petId ID of pet that needs to be updated * @param {Object} opts Optional parameters * @param {String} opts.name Updated name of the pet @@ -351,7 +347,7 @@ export default class PetApi { let authNames = ['petstore_auth']; let contentTypes = ['application/x-www-form-urlencoded']; - let accepts = ['application/xml', 'application/json']; + let accepts = []; let returnType = null; return this.apiClient.callApi( @@ -371,7 +367,6 @@ export default class PetApi { /** * uploads an image - * * @param {Number} petId ID of pet to update * @param {Object} opts Optional parameters * @param {String} opts.additionalMetadata Additional data to pass to server diff --git a/samples/client/petstore/javascript-es6/src/api/StoreApi.js b/samples/client/petstore/javascript-es6/src/api/StoreApi.js index 28fe086c2e4d..9c719f5ad22a 100644 --- a/samples/client/petstore/javascript-es6/src/api/StoreApi.js +++ b/samples/client/petstore/javascript-es6/src/api/StoreApi.js @@ -1,12 +1,12 @@ /** - * Swagger Petstore + * OpenAPI Petstore * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ * * OpenAPI spec version: 1.0.0 - * Contact: apiteam@swagger.io + * * - * NOTE: This class is auto generated by the swagger code generator program. - * https://github.com/swagger-api/swagger-codegen.git + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech * Do not edit the class manually. * */ @@ -69,7 +69,7 @@ export default class StoreApi { let authNames = []; let contentTypes = []; - let accepts = ['application/xml', 'application/json']; + let accepts = []; let returnType = null; return this.apiClient.callApi( @@ -83,7 +83,7 @@ export default class StoreApi { * Callback function to receive the result of the getInventory operation. * @callback module:api/StoreApi~getInventoryCallback * @param {String} error Error message, if any. - * @param {Object.} data The data returned by the service call. + * @param {Object.} data The data returned by the service call. * @param {String} response The complete HTTP response. */ @@ -91,7 +91,7 @@ export default class StoreApi { * Returns pet inventories by status * Returns a map of status codes to quantities * @param {module:api/StoreApi~getInventoryCallback} callback The callback function, accepting three arguments: error, data, response - * data is of type: {@link Object.} + * data is of type: {@link Object.} */ getInventory(callback) { let postBody = null; @@ -174,17 +174,16 @@ export default class StoreApi { /** * Place an order for a pet - * - * @param {module:model/Order} body order placed for purchasing the pet + * @param {module:model/Order} order order placed for purchasing the pet * @param {module:api/StoreApi~placeOrderCallback} callback The callback function, accepting three arguments: error, data, response * data is of type: {@link module:model/Order} */ - placeOrder(body, callback) { - let postBody = body; + placeOrder(order, callback) { + let postBody = order; - // verify the required parameter 'body' is set - if (body === undefined || body === null) { - throw new Error("Missing the required parameter 'body' when calling placeOrder"); + // verify the required parameter 'order' is set + if (order === undefined || order === null) { + throw new Error("Missing the required parameter 'order' when calling placeOrder"); } diff --git a/samples/client/petstore/javascript-es6/src/api/UserApi.js b/samples/client/petstore/javascript-es6/src/api/UserApi.js index 600ca5f42004..c3e574b95885 100644 --- a/samples/client/petstore/javascript-es6/src/api/UserApi.js +++ b/samples/client/petstore/javascript-es6/src/api/UserApi.js @@ -1,12 +1,12 @@ /** - * Swagger Petstore + * OpenAPI Petstore * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ * * OpenAPI spec version: 1.0.0 - * Contact: apiteam@swagger.io + * * - * NOTE: This class is auto generated by the swagger code generator program. - * https://github.com/swagger-api/swagger-codegen.git + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech * Do not edit the class manually. * */ @@ -45,15 +45,15 @@ export default class UserApi { /** * Create user * This can only be done by the logged in user. - * @param {module:model/User} body Created user object + * @param {module:model/User} user Created user object * @param {module:api/UserApi~createUserCallback} callback The callback function, accepting three arguments: error, data, response */ - createUser(body, callback) { - let postBody = body; + createUser(user, callback) { + let postBody = user; - // verify the required parameter 'body' is set - if (body === undefined || body === null) { - throw new Error("Missing the required parameter 'body' when calling createUser"); + // verify the required parameter 'user' is set + if (user === undefined || user === null) { + throw new Error("Missing the required parameter 'user' when calling createUser"); } @@ -68,7 +68,7 @@ export default class UserApi { let authNames = []; let contentTypes = []; - let accepts = ['application/xml', 'application/json']; + let accepts = []; let returnType = null; return this.apiClient.callApi( @@ -88,16 +88,15 @@ export default class UserApi { /** * Creates list of users with given input array - * - * @param {Array.} body List of user object + * @param {Array.} user List of user object * @param {module:api/UserApi~createUsersWithArrayInputCallback} callback The callback function, accepting three arguments: error, data, response */ - createUsersWithArrayInput(body, callback) { - let postBody = body; + createUsersWithArrayInput(user, callback) { + let postBody = user; - // verify the required parameter 'body' is set - if (body === undefined || body === null) { - throw new Error("Missing the required parameter 'body' when calling createUsersWithArrayInput"); + // verify the required parameter 'user' is set + if (user === undefined || user === null) { + throw new Error("Missing the required parameter 'user' when calling createUsersWithArrayInput"); } @@ -112,7 +111,7 @@ export default class UserApi { let authNames = []; let contentTypes = []; - let accepts = ['application/xml', 'application/json']; + let accepts = []; let returnType = null; return this.apiClient.callApi( @@ -132,16 +131,15 @@ export default class UserApi { /** * Creates list of users with given input array - * - * @param {Array.} body List of user object + * @param {Array.} user List of user object * @param {module:api/UserApi~createUsersWithListInputCallback} callback The callback function, accepting three arguments: error, data, response */ - createUsersWithListInput(body, callback) { - let postBody = body; + createUsersWithListInput(user, callback) { + let postBody = user; - // verify the required parameter 'body' is set - if (body === undefined || body === null) { - throw new Error("Missing the required parameter 'body' when calling createUsersWithListInput"); + // verify the required parameter 'user' is set + if (user === undefined || user === null) { + throw new Error("Missing the required parameter 'user' when calling createUsersWithListInput"); } @@ -156,7 +154,7 @@ export default class UserApi { let authNames = []; let contentTypes = []; - let accepts = ['application/xml', 'application/json']; + let accepts = []; let returnType = null; return this.apiClient.callApi( @@ -201,7 +199,7 @@ export default class UserApi { let authNames = []; let contentTypes = []; - let accepts = ['application/xml', 'application/json']; + let accepts = []; let returnType = null; return this.apiClient.callApi( @@ -221,8 +219,7 @@ export default class UserApi { /** * Get user by user name - * - * @param {String} username The name that needs to be fetched. Use user1 for testing. + * @param {String} username The name that needs to be fetched. Use user1 for testing. * @param {module:api/UserApi~getUserByNameCallback} callback The callback function, accepting three arguments: error, data, response * data is of type: {@link module:model/User} */ @@ -261,17 +258,16 @@ export default class UserApi { * Callback function to receive the result of the loginUser operation. * @callback module:api/UserApi~loginUserCallback * @param {String} error Error message, if any. - * @param {'String'} data The data returned by the service call. + * @param {String} data The data returned by the service call. * @param {String} response The complete HTTP response. */ /** * Logs user into the system - * * @param {String} username The user name for login * @param {String} password The password for login in clear text * @param {module:api/UserApi~loginUserCallback} callback The callback function, accepting three arguments: error, data, response - * data is of type: {@link 'String'} + * data is of type: {@link String} */ loginUser(username, password, callback) { let postBody = null; @@ -320,7 +316,6 @@ export default class UserApi { /** * Logs out current logged in user session - * * @param {module:api/UserApi~logoutUserCallback} callback The callback function, accepting three arguments: error, data, response */ logoutUser(callback) { @@ -338,7 +333,7 @@ export default class UserApi { let authNames = []; let contentTypes = []; - let accepts = ['application/xml', 'application/json']; + let accepts = []; let returnType = null; return this.apiClient.callApi( @@ -360,20 +355,20 @@ export default class UserApi { * Updated user * This can only be done by the logged in user. * @param {String} username name that need to be deleted - * @param {module:model/User} body Updated user object + * @param {module:model/User} user Updated user object * @param {module:api/UserApi~updateUserCallback} callback The callback function, accepting three arguments: error, data, response */ - updateUser(username, body, callback) { - let postBody = body; + updateUser(username, user, callback) { + let postBody = user; // verify the required parameter 'username' is set if (username === undefined || username === null) { throw new Error("Missing the required parameter 'username' when calling updateUser"); } - // verify the required parameter 'body' is set - if (body === undefined || body === null) { - throw new Error("Missing the required parameter 'body' when calling updateUser"); + // verify the required parameter 'user' is set + if (user === undefined || user === null) { + throw new Error("Missing the required parameter 'user' when calling updateUser"); } @@ -389,7 +384,7 @@ export default class UserApi { let authNames = []; let contentTypes = []; - let accepts = ['application/xml', 'application/json']; + let accepts = []; let returnType = null; return this.apiClient.callApi( diff --git a/samples/client/petstore/javascript-es6/src/index.js b/samples/client/petstore/javascript-es6/src/index.js index ebcad866e7af..95bcba6b5d54 100644 --- a/samples/client/petstore/javascript-es6/src/index.js +++ b/samples/client/petstore/javascript-es6/src/index.js @@ -1,12 +1,12 @@ /** - * Swagger Petstore + * OpenAPI Petstore * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ * * OpenAPI spec version: 1.0.0 - * Contact: apiteam@swagger.io + * * - * NOTE: This class is auto generated by the swagger code generator program. - * https://github.com/swagger-api/swagger-codegen.git + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech * Do not edit the class manually. * */ @@ -21,9 +21,11 @@ import ArrayOfArrayOfNumberOnly from './model/ArrayOfArrayOfNumberOnly'; import ArrayOfNumberOnly from './model/ArrayOfNumberOnly'; import ArrayTest from './model/ArrayTest'; import Capitalization from './model/Capitalization'; +import Cat from './model/Cat'; import Category from './model/Category'; import ClassModel from './model/ClassModel'; import Client from './model/Client'; +import Dog from './model/Dog'; import EnumArrays from './model/EnumArrays'; import EnumClass from './model/EnumClass'; import EnumTest from './model/EnumTest'; @@ -37,18 +39,13 @@ import ModelReturn from './model/ModelReturn'; import Name from './model/Name'; import NumberOnly from './model/NumberOnly'; import Order from './model/Order'; -import OuterBoolean from './model/OuterBoolean'; import OuterComposite from './model/OuterComposite'; import OuterEnum from './model/OuterEnum'; -import OuterNumber from './model/OuterNumber'; -import OuterString from './model/OuterString'; import Pet from './model/Pet'; import ReadOnlyFirst from './model/ReadOnlyFirst'; import SpecialModelName from './model/SpecialModelName'; import Tag from './model/Tag'; import User from './model/User'; -import Cat from './model/Cat'; -import Dog from './model/Dog'; import AnotherFakeApi from './api/AnotherFakeApi'; import FakeApi from './api/FakeApi'; import FakeClassnameTags123Api from './api/FakeClassnameTags123Api'; @@ -63,9 +60,9 @@ import UserApi from './api/UserApi'; *

* An AMD (recommended!) or CommonJS application will generally do something equivalent to the following: *

-* var SwaggerPetstore = require('index'); // See note below*.
-* var xxxSvc = new SwaggerPetstore.XxxApi(); // Allocate the API class we're going to use.
-* var yyyModel = new SwaggerPetstore.Yyy(); // Construct a model instance.
+* var OpenApiPetstore = require('index'); // See note below*.
+* var xxxSvc = new OpenApiPetstore.XxxApi(); // Allocate the API class we're going to use.
+* var yyyModel = new OpenApiPetstore.Yyy(); // Construct a model instance.
 * yyyModel.someProperty = 'someValue';
 * ...
 * var zzz = xxxSvc.doSomething(yyyModel); // Invoke the service.
@@ -77,8 +74,8 @@ import UserApi from './api/UserApi';
 * 

* A non-AMD browser application (discouraged) might do something like this: *

-* var xxxSvc = new SwaggerPetstore.XxxApi(); // Allocate the API class we're going to use.
-* var yyy = new SwaggerPetstore.Yyy(); // Construct a model instance.
+* var xxxSvc = new OpenApiPetstore.XxxApi(); // Allocate the API class we're going to use.
+* var yyy = new OpenApiPetstore.Yyy(); // Construct a model instance.
 * yyyModel.someProperty = 'someValue';
 * ...
 * var zzz = xxxSvc.doSomething(yyyModel); // Invoke the service.
@@ -143,6 +140,12 @@ export {
      */
     Capitalization,
 
+    /**
+     * The Cat model constructor.
+     * @property {module:model/Cat}
+     */
+    Cat,
+
     /**
      * The Category model constructor.
      * @property {module:model/Category}
@@ -161,6 +164,12 @@ export {
      */
     Client,
 
+    /**
+     * The Dog model constructor.
+     * @property {module:model/Dog}
+     */
+    Dog,
+
     /**
      * The EnumArrays model constructor.
      * @property {module:model/EnumArrays}
@@ -239,12 +248,6 @@ export {
      */
     Order,
 
-    /**
-     * The OuterBoolean model constructor.
-     * @property {module:model/OuterBoolean}
-     */
-    OuterBoolean,
-
     /**
      * The OuterComposite model constructor.
      * @property {module:model/OuterComposite}
@@ -257,18 +260,6 @@ export {
      */
     OuterEnum,
 
-    /**
-     * The OuterNumber model constructor.
-     * @property {module:model/OuterNumber}
-     */
-    OuterNumber,
-
-    /**
-     * The OuterString model constructor.
-     * @property {module:model/OuterString}
-     */
-    OuterString,
-
     /**
      * The Pet model constructor.
      * @property {module:model/Pet}
@@ -299,18 +290,6 @@ export {
      */
     User,
 
-    /**
-     * The Cat model constructor.
-     * @property {module:model/Cat}
-     */
-    Cat,
-
-    /**
-     * The Dog model constructor.
-     * @property {module:model/Dog}
-     */
-    Dog,
-
     /**
     * The AnotherFakeApi service constructor.
     * @property {module:api/AnotherFakeApi}
diff --git a/samples/client/petstore/javascript-es6/src/model/AdditionalPropertiesClass.js b/samples/client/petstore/javascript-es6/src/model/AdditionalPropertiesClass.js
index 088cbb29b35f..d6e898a5ab09 100644
--- a/samples/client/petstore/javascript-es6/src/model/AdditionalPropertiesClass.js
+++ b/samples/client/petstore/javascript-es6/src/model/AdditionalPropertiesClass.js
@@ -1,61 +1,52 @@
 /**
- * Swagger Petstore
+ * OpenAPI Petstore
  * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
  *
  * OpenAPI spec version: 1.0.0
- * Contact: apiteam@swagger.io
+ * 
  *
- * NOTE: This class is auto generated by the swagger code generator program.
- * https://github.com/swagger-api/swagger-codegen.git
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
  * Do not edit the class manually.
  *
  */
 
-
 import ApiClient from '../ApiClient';
 
-
-
-
-
 /**
-* The AdditionalPropertiesClass model module.
-* @module model/AdditionalPropertiesClass
-* @version 1.0.0
-*/
-export default class AdditionalPropertiesClass {
+ * The AdditionalPropertiesClass model module.
+ * @module model/AdditionalPropertiesClass
+ * @version 1.0.0
+ */
+class AdditionalPropertiesClass {
     /**
-    * Constructs a new AdditionalPropertiesClass.
-    * @alias module:model/AdditionalPropertiesClass
-    * @class
-    */
-
-    constructor() {
-        
-
-        
-        
-
+     * Constructs a new AdditionalPropertiesClass.
+     * @alias module:model/AdditionalPropertiesClass
+     */
+    constructor() { 
         
+        AdditionalPropertiesClass.initialize(this);
+    }
 
-        
+    /**
+     * Initializes the fields of this object.
+     * This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins).
+     * Only for internal use.
+     */
+    static initialize(obj) { 
     }
 
     /**
-    * Constructs a AdditionalPropertiesClass from a plain JavaScript object, optionally creating a new instance.
-    * Copies all relevant properties from data to obj if supplied or a new instance if not.
-    * @param {Object} data The plain JavaScript object bearing properties of interest.
-    * @param {module:model/AdditionalPropertiesClass} obj Optional instance to populate.
-    * @return {module:model/AdditionalPropertiesClass} The populated AdditionalPropertiesClass instance.
-    */
+     * Constructs a AdditionalPropertiesClass from a plain JavaScript object, optionally creating a new instance.
+     * Copies all relevant properties from data to obj if supplied or a new instance if not.
+     * @param {Object} data The plain JavaScript object bearing properties of interest.
+     * @param {module:model/AdditionalPropertiesClass} obj Optional instance to populate.
+     * @return {module:model/AdditionalPropertiesClass} The populated AdditionalPropertiesClass instance.
+     */
     static constructFromObject(data, obj) {
         if (data) {
             obj = obj || new AdditionalPropertiesClass();
 
-            
-            
-            
-
             if (data.hasOwnProperty('map_property')) {
                 obj['map_property'] = ApiClient.convertToType(data['map_property'], {'String': 'String'});
             }
@@ -66,22 +57,23 @@ export default class AdditionalPropertiesClass {
         return obj;
     }
 
-    /**
-    * @member {Object.} map_property
-    */
-    map_property = undefined;
-    /**
-    * @member {Object.>} map_of_map_property
-    */
-    map_of_map_property = undefined;
 
+}
 
+/**
+ * @member {Object.} map_property
+ */
+AdditionalPropertiesClass.prototype['map_property'] = undefined;
 
+/**
+ * @member {Object.>} map_of_map_property
+ */
+AdditionalPropertiesClass.prototype['map_of_map_property'] = undefined;
 
 
 
 
 
-}
 
+export default AdditionalPropertiesClass;
 
diff --git a/samples/client/petstore/javascript-es6/src/model/Animal.js b/samples/client/petstore/javascript-es6/src/model/Animal.js
index b3fb1a63f325..c55d0c758f00 100644
--- a/samples/client/petstore/javascript-es6/src/model/Animal.js
+++ b/samples/client/petstore/javascript-es6/src/model/Animal.js
@@ -1,62 +1,54 @@
 /**
- * Swagger Petstore
+ * OpenAPI Petstore
  * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
  *
  * OpenAPI spec version: 1.0.0
- * Contact: apiteam@swagger.io
+ * 
  *
- * NOTE: This class is auto generated by the swagger code generator program.
- * https://github.com/swagger-api/swagger-codegen.git
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
  * Do not edit the class manually.
  *
  */
 
-
 import ApiClient from '../ApiClient';
 
-
-
-
-
 /**
-* The Animal model module.
-* @module model/Animal
-* @version 1.0.0
-*/
-export default class Animal {
+ * The Animal model module.
+ * @module model/Animal
+ * @version 1.0.0
+ */
+class Animal {
     /**
-    * Constructs a new Animal.
-    * @alias module:model/Animal
-    * @class
-    * @param className {String} 
-    */
-
-    constructor(className) {
-        
-
+     * Constructs a new Animal.
+     * @alias module:model/Animal
+     * @param className {String} 
+     */
+    constructor(className) { 
         
-        
-
-        this['className'] = className;
+        Animal.initialize(this, className);
+    }
 
-        
+    /**
+     * Initializes the fields of this object.
+     * This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins).
+     * Only for internal use.
+     */
+    static initialize(obj, className) { 
+        obj['className'] = className;
     }
 
     /**
-    * Constructs a Animal from a plain JavaScript object, optionally creating a new instance.
-    * Copies all relevant properties from data to obj if supplied or a new instance if not.
-    * @param {Object} data The plain JavaScript object bearing properties of interest.
-    * @param {module:model/Animal} obj Optional instance to populate.
-    * @return {module:model/Animal} The populated Animal instance.
-    */
+     * Constructs a Animal from a plain JavaScript object, optionally creating a new instance.
+     * Copies all relevant properties from data to obj if supplied or a new instance if not.
+     * @param {Object} data The plain JavaScript object bearing properties of interest.
+     * @param {module:model/Animal} obj Optional instance to populate.
+     * @return {module:model/Animal} The populated Animal instance.
+     */
     static constructFromObject(data, obj) {
         if (data) {
             obj = obj || new Animal();
 
-            
-            
-            
-
             if (data.hasOwnProperty('className')) {
                 obj['className'] = ApiClient.convertToType(data['className'], 'String');
             }
@@ -67,23 +59,24 @@ export default class Animal {
         return obj;
     }
 
-    /**
-    * @member {String} className
-    */
-    className = undefined;
-    /**
-    * @member {String} color
-    * @default 'red'
-    */
-    color = 'red';
 
+}
 
+/**
+ * @member {String} className
+ */
+Animal.prototype['className'] = undefined;
 
+/**
+ * @member {String} color
+ * @default 'red'
+ */
+Animal.prototype['color'] = 'red';
 
 
 
 
 
-}
 
+export default Animal;
 
diff --git a/samples/client/petstore/javascript-es6/src/model/AnimalFarm.js b/samples/client/petstore/javascript-es6/src/model/AnimalFarm.js
index eb9a14b1b44f..3b9cc01f03da 100644
--- a/samples/client/petstore/javascript-es6/src/model/AnimalFarm.js
+++ b/samples/client/petstore/javascript-es6/src/model/AnimalFarm.js
@@ -1,64 +1,57 @@
 /**
- * Swagger Petstore
+ * OpenAPI Petstore
  * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
  *
  * OpenAPI spec version: 1.0.0
- * Contact: apiteam@swagger.io
+ * 
  *
- * NOTE: This class is auto generated by the swagger code generator program.
- * https://github.com/swagger-api/swagger-codegen.git
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
  * Do not edit the class manually.
  *
  */
 
-
 import ApiClient from '../ApiClient';
 import Animal from './Animal';
 
-
-
-
-
 /**
-* The AnimalFarm model module.
-* @module model/AnimalFarm
-* @version 1.0.0
-*/
-export default class AnimalFarm extends Array {
+ * The AnimalFarm model module.
+ * @module model/AnimalFarm
+ * @version 1.0.0
+ */
+class AnimalFarm extends Array {
     /**
-    * Constructs a new AnimalFarm.
-    * @alias module:model/AnimalFarm
-    * @class
-    * @extends Array
-    */
-
-    constructor() {
-        
+     * Constructs a new AnimalFarm.
+     * @alias module:model/AnimalFarm
+     * @extends Array
+     */
+    constructor() { 
         super();
         
-
-        
-        
-
         
+        AnimalFarm.initialize(this);
+    }
 
-        return this;
+    /**
+     * Initializes the fields of this object.
+     * This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins).
+     * Only for internal use.
+     */
+    static initialize(obj) { 
     }
 
     /**
-    * Constructs a AnimalFarm from a plain JavaScript object, optionally creating a new instance.
-    * Copies all relevant properties from data to obj if supplied or a new instance if not.
-    * @param {Object} data The plain JavaScript object bearing properties of interest.
-    * @param {module:model/AnimalFarm} obj Optional instance to populate.
-    * @return {module:model/AnimalFarm} The populated AnimalFarm instance.
-    */
+     * Constructs a AnimalFarm from a plain JavaScript object, optionally creating a new instance.
+     * Copies all relevant properties from data to obj if supplied or a new instance if not.
+     * @param {Object} data The plain JavaScript object bearing properties of interest.
+     * @param {module:model/AnimalFarm} obj Optional instance to populate.
+     * @return {module:model/AnimalFarm} The populated AnimalFarm instance.
+     */
     static constructFromObject(data, obj) {
         if (data) {
             obj = obj || new AnimalFarm();
 
             ApiClient.constructFromObject(data, obj, 'Animal');
-
-            
             
 
         }
@@ -66,13 +59,12 @@ export default class AnimalFarm extends Array {
     }
 
 
+}
 
 
 
 
 
 
-
-}
-
+export default AnimalFarm;
 
diff --git a/samples/client/petstore/javascript-es6/src/model/ApiResponse.js b/samples/client/petstore/javascript-es6/src/model/ApiResponse.js
index 49ddd1ac27f7..4f5fb55291c1 100644
--- a/samples/client/petstore/javascript-es6/src/model/ApiResponse.js
+++ b/samples/client/petstore/javascript-es6/src/model/ApiResponse.js
@@ -1,61 +1,52 @@
 /**
- * Swagger Petstore
+ * OpenAPI Petstore
  * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
  *
  * OpenAPI spec version: 1.0.0
- * Contact: apiteam@swagger.io
+ * 
  *
- * NOTE: This class is auto generated by the swagger code generator program.
- * https://github.com/swagger-api/swagger-codegen.git
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
  * Do not edit the class manually.
  *
  */
 
-
 import ApiClient from '../ApiClient';
 
-
-
-
-
 /**
-* The ApiResponse model module.
-* @module model/ApiResponse
-* @version 1.0.0
-*/
-export default class ApiResponse {
+ * The ApiResponse model module.
+ * @module model/ApiResponse
+ * @version 1.0.0
+ */
+class ApiResponse {
     /**
-    * Constructs a new ApiResponse.
-    * @alias module:model/ApiResponse
-    * @class
-    */
-
-    constructor() {
-        
-
-        
-        
-
+     * Constructs a new ApiResponse.
+     * @alias module:model/ApiResponse
+     */
+    constructor() { 
         
+        ApiResponse.initialize(this);
+    }
 
-        
+    /**
+     * Initializes the fields of this object.
+     * This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins).
+     * Only for internal use.
+     */
+    static initialize(obj) { 
     }
 
     /**
-    * Constructs a ApiResponse from a plain JavaScript object, optionally creating a new instance.
-    * Copies all relevant properties from data to obj if supplied or a new instance if not.
-    * @param {Object} data The plain JavaScript object bearing properties of interest.
-    * @param {module:model/ApiResponse} obj Optional instance to populate.
-    * @return {module:model/ApiResponse} The populated ApiResponse instance.
-    */
+     * Constructs a ApiResponse from a plain JavaScript object, optionally creating a new instance.
+     * Copies all relevant properties from data to obj if supplied or a new instance if not.
+     * @param {Object} data The plain JavaScript object bearing properties of interest.
+     * @param {module:model/ApiResponse} obj Optional instance to populate.
+     * @return {module:model/ApiResponse} The populated ApiResponse instance.
+     */
     static constructFromObject(data, obj) {
         if (data) {
             obj = obj || new ApiResponse();
 
-            
-            
-            
-
             if (data.hasOwnProperty('code')) {
                 obj['code'] = ApiClient.convertToType(data['code'], 'Number');
             }
@@ -69,26 +60,28 @@ export default class ApiResponse {
         return obj;
     }
 
-    /**
-    * @member {Number} code
-    */
-    code = undefined;
-    /**
-    * @member {String} type
-    */
-    type = undefined;
-    /**
-    * @member {String} message
-    */
-    message = undefined;
 
+}
+
+/**
+ * @member {Number} code
+ */
+ApiResponse.prototype['code'] = undefined;
 
+/**
+ * @member {String} type
+ */
+ApiResponse.prototype['type'] = undefined;
 
+/**
+ * @member {String} message
+ */
+ApiResponse.prototype['message'] = undefined;
 
 
 
 
 
-}
 
+export default ApiResponse;
 
diff --git a/samples/client/petstore/javascript-es6/src/model/ArrayOfArrayOfNumberOnly.js b/samples/client/petstore/javascript-es6/src/model/ArrayOfArrayOfNumberOnly.js
index 1dfd4487c62d..e8d959f36898 100644
--- a/samples/client/petstore/javascript-es6/src/model/ArrayOfArrayOfNumberOnly.js
+++ b/samples/client/petstore/javascript-es6/src/model/ArrayOfArrayOfNumberOnly.js
@@ -1,61 +1,52 @@
 /**
- * Swagger Petstore
+ * OpenAPI Petstore
  * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
  *
  * OpenAPI spec version: 1.0.0
- * Contact: apiteam@swagger.io
+ * 
  *
- * NOTE: This class is auto generated by the swagger code generator program.
- * https://github.com/swagger-api/swagger-codegen.git
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
  * Do not edit the class manually.
  *
  */
 
-
 import ApiClient from '../ApiClient';
 
-
-
-
-
 /**
-* The ArrayOfArrayOfNumberOnly model module.
-* @module model/ArrayOfArrayOfNumberOnly
-* @version 1.0.0
-*/
-export default class ArrayOfArrayOfNumberOnly {
+ * The ArrayOfArrayOfNumberOnly model module.
+ * @module model/ArrayOfArrayOfNumberOnly
+ * @version 1.0.0
+ */
+class ArrayOfArrayOfNumberOnly {
     /**
-    * Constructs a new ArrayOfArrayOfNumberOnly.
-    * @alias module:model/ArrayOfArrayOfNumberOnly
-    * @class
-    */
-
-    constructor() {
-        
-
-        
-        
-
+     * Constructs a new ArrayOfArrayOfNumberOnly.
+     * @alias module:model/ArrayOfArrayOfNumberOnly
+     */
+    constructor() { 
         
+        ArrayOfArrayOfNumberOnly.initialize(this);
+    }
 
-        
+    /**
+     * Initializes the fields of this object.
+     * This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins).
+     * Only for internal use.
+     */
+    static initialize(obj) { 
     }
 
     /**
-    * Constructs a ArrayOfArrayOfNumberOnly from a plain JavaScript object, optionally creating a new instance.
-    * Copies all relevant properties from data to obj if supplied or a new instance if not.
-    * @param {Object} data The plain JavaScript object bearing properties of interest.
-    * @param {module:model/ArrayOfArrayOfNumberOnly} obj Optional instance to populate.
-    * @return {module:model/ArrayOfArrayOfNumberOnly} The populated ArrayOfArrayOfNumberOnly instance.
-    */
+     * Constructs a ArrayOfArrayOfNumberOnly from a plain JavaScript object, optionally creating a new instance.
+     * Copies all relevant properties from data to obj if supplied or a new instance if not.
+     * @param {Object} data The plain JavaScript object bearing properties of interest.
+     * @param {module:model/ArrayOfArrayOfNumberOnly} obj Optional instance to populate.
+     * @return {module:model/ArrayOfArrayOfNumberOnly} The populated ArrayOfArrayOfNumberOnly instance.
+     */
     static constructFromObject(data, obj) {
         if (data) {
             obj = obj || new ArrayOfArrayOfNumberOnly();
 
-            
-            
-            
-
             if (data.hasOwnProperty('ArrayArrayNumber')) {
                 obj['ArrayArrayNumber'] = ApiClient.convertToType(data['ArrayArrayNumber'], [['Number']]);
             }
@@ -63,18 +54,18 @@ export default class ArrayOfArrayOfNumberOnly {
         return obj;
     }
 
-    /**
-    * @member {Array.>} ArrayArrayNumber
-    */
-    ArrayArrayNumber = undefined;
-
 
+}
 
+/**
+ * @member {Array.>} ArrayArrayNumber
+ */
+ArrayOfArrayOfNumberOnly.prototype['ArrayArrayNumber'] = undefined;
 
 
 
 
 
-}
 
+export default ArrayOfArrayOfNumberOnly;
 
diff --git a/samples/client/petstore/javascript-es6/src/model/ArrayOfNumberOnly.js b/samples/client/petstore/javascript-es6/src/model/ArrayOfNumberOnly.js
index 379a19ba3fff..4fb72e435e60 100644
--- a/samples/client/petstore/javascript-es6/src/model/ArrayOfNumberOnly.js
+++ b/samples/client/petstore/javascript-es6/src/model/ArrayOfNumberOnly.js
@@ -1,61 +1,52 @@
 /**
- * Swagger Petstore
+ * OpenAPI Petstore
  * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
  *
  * OpenAPI spec version: 1.0.0
- * Contact: apiteam@swagger.io
+ * 
  *
- * NOTE: This class is auto generated by the swagger code generator program.
- * https://github.com/swagger-api/swagger-codegen.git
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
  * Do not edit the class manually.
  *
  */
 
-
 import ApiClient from '../ApiClient';
 
-
-
-
-
 /**
-* The ArrayOfNumberOnly model module.
-* @module model/ArrayOfNumberOnly
-* @version 1.0.0
-*/
-export default class ArrayOfNumberOnly {
+ * The ArrayOfNumberOnly model module.
+ * @module model/ArrayOfNumberOnly
+ * @version 1.0.0
+ */
+class ArrayOfNumberOnly {
     /**
-    * Constructs a new ArrayOfNumberOnly.
-    * @alias module:model/ArrayOfNumberOnly
-    * @class
-    */
-
-    constructor() {
-        
-
-        
-        
-
+     * Constructs a new ArrayOfNumberOnly.
+     * @alias module:model/ArrayOfNumberOnly
+     */
+    constructor() { 
         
+        ArrayOfNumberOnly.initialize(this);
+    }
 
-        
+    /**
+     * Initializes the fields of this object.
+     * This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins).
+     * Only for internal use.
+     */
+    static initialize(obj) { 
     }
 
     /**
-    * Constructs a ArrayOfNumberOnly from a plain JavaScript object, optionally creating a new instance.
-    * Copies all relevant properties from data to obj if supplied or a new instance if not.
-    * @param {Object} data The plain JavaScript object bearing properties of interest.
-    * @param {module:model/ArrayOfNumberOnly} obj Optional instance to populate.
-    * @return {module:model/ArrayOfNumberOnly} The populated ArrayOfNumberOnly instance.
-    */
+     * Constructs a ArrayOfNumberOnly from a plain JavaScript object, optionally creating a new instance.
+     * Copies all relevant properties from data to obj if supplied or a new instance if not.
+     * @param {Object} data The plain JavaScript object bearing properties of interest.
+     * @param {module:model/ArrayOfNumberOnly} obj Optional instance to populate.
+     * @return {module:model/ArrayOfNumberOnly} The populated ArrayOfNumberOnly instance.
+     */
     static constructFromObject(data, obj) {
         if (data) {
             obj = obj || new ArrayOfNumberOnly();
 
-            
-            
-            
-
             if (data.hasOwnProperty('ArrayNumber')) {
                 obj['ArrayNumber'] = ApiClient.convertToType(data['ArrayNumber'], ['Number']);
             }
@@ -63,18 +54,18 @@ export default class ArrayOfNumberOnly {
         return obj;
     }
 
-    /**
-    * @member {Array.} ArrayNumber
-    */
-    ArrayNumber = undefined;
-
 
+}
 
+/**
+ * @member {Array.} ArrayNumber
+ */
+ArrayOfNumberOnly.prototype['ArrayNumber'] = undefined;
 
 
 
 
 
-}
 
+export default ArrayOfNumberOnly;
 
diff --git a/samples/client/petstore/javascript-es6/src/model/ArrayTest.js b/samples/client/petstore/javascript-es6/src/model/ArrayTest.js
index 58e9ac58840f..8096c2c4f7f7 100644
--- a/samples/client/petstore/javascript-es6/src/model/ArrayTest.js
+++ b/samples/client/petstore/javascript-es6/src/model/ArrayTest.js
@@ -1,62 +1,53 @@
 /**
- * Swagger Petstore
+ * OpenAPI Petstore
  * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
  *
  * OpenAPI spec version: 1.0.0
- * Contact: apiteam@swagger.io
+ * 
  *
- * NOTE: This class is auto generated by the swagger code generator program.
- * https://github.com/swagger-api/swagger-codegen.git
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
  * Do not edit the class manually.
  *
  */
 
-
 import ApiClient from '../ApiClient';
 import ReadOnlyFirst from './ReadOnlyFirst';
 
-
-
-
-
 /**
-* The ArrayTest model module.
-* @module model/ArrayTest
-* @version 1.0.0
-*/
-export default class ArrayTest {
+ * The ArrayTest model module.
+ * @module model/ArrayTest
+ * @version 1.0.0
+ */
+class ArrayTest {
     /**
-    * Constructs a new ArrayTest.
-    * @alias module:model/ArrayTest
-    * @class
-    */
-
-    constructor() {
-        
-
-        
-        
-
+     * Constructs a new ArrayTest.
+     * @alias module:model/ArrayTest
+     */
+    constructor() { 
         
+        ArrayTest.initialize(this);
+    }
 
-        
+    /**
+     * Initializes the fields of this object.
+     * This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins).
+     * Only for internal use.
+     */
+    static initialize(obj) { 
     }
 
     /**
-    * Constructs a ArrayTest from a plain JavaScript object, optionally creating a new instance.
-    * Copies all relevant properties from data to obj if supplied or a new instance if not.
-    * @param {Object} data The plain JavaScript object bearing properties of interest.
-    * @param {module:model/ArrayTest} obj Optional instance to populate.
-    * @return {module:model/ArrayTest} The populated ArrayTest instance.
-    */
+     * Constructs a ArrayTest from a plain JavaScript object, optionally creating a new instance.
+     * Copies all relevant properties from data to obj if supplied or a new instance if not.
+     * @param {Object} data The plain JavaScript object bearing properties of interest.
+     * @param {module:model/ArrayTest} obj Optional instance to populate.
+     * @return {module:model/ArrayTest} The populated ArrayTest instance.
+     */
     static constructFromObject(data, obj) {
         if (data) {
             obj = obj || new ArrayTest();
 
-            
-            
-            
-
             if (data.hasOwnProperty('array_of_string')) {
                 obj['array_of_string'] = ApiClient.convertToType(data['array_of_string'], ['String']);
             }
@@ -70,26 +61,28 @@ export default class ArrayTest {
         return obj;
     }
 
-    /**
-    * @member {Array.} array_of_string
-    */
-    array_of_string = undefined;
-    /**
-    * @member {Array.>} array_array_of_integer
-    */
-    array_array_of_integer = undefined;
-    /**
-    * @member {Array.>} array_array_of_model
-    */
-    array_array_of_model = undefined;
 
+}
+
+/**
+ * @member {Array.} array_of_string
+ */
+ArrayTest.prototype['array_of_string'] = undefined;
 
+/**
+ * @member {Array.>} array_array_of_integer
+ */
+ArrayTest.prototype['array_array_of_integer'] = undefined;
 
+/**
+ * @member {Array.>} array_array_of_model
+ */
+ArrayTest.prototype['array_array_of_model'] = undefined;
 
 
 
 
 
-}
 
+export default ArrayTest;
 
diff --git a/samples/client/petstore/javascript-es6/src/model/Capitalization.js b/samples/client/petstore/javascript-es6/src/model/Capitalization.js
index 12f3f3f55936..bc1cdefb71bc 100644
--- a/samples/client/petstore/javascript-es6/src/model/Capitalization.js
+++ b/samples/client/petstore/javascript-es6/src/model/Capitalization.js
@@ -1,61 +1,52 @@
 /**
- * Swagger Petstore
+ * OpenAPI Petstore
  * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
  *
  * OpenAPI spec version: 1.0.0
- * Contact: apiteam@swagger.io
+ * 
  *
- * NOTE: This class is auto generated by the swagger code generator program.
- * https://github.com/swagger-api/swagger-codegen.git
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
  * Do not edit the class manually.
  *
  */
 
-
 import ApiClient from '../ApiClient';
 
-
-
-
-
 /**
-* The Capitalization model module.
-* @module model/Capitalization
-* @version 1.0.0
-*/
-export default class Capitalization {
+ * The Capitalization model module.
+ * @module model/Capitalization
+ * @version 1.0.0
+ */
+class Capitalization {
     /**
-    * Constructs a new Capitalization.
-    * @alias module:model/Capitalization
-    * @class
-    */
-
-    constructor() {
-        
-
-        
-        
-
+     * Constructs a new Capitalization.
+     * @alias module:model/Capitalization
+     */
+    constructor() { 
         
+        Capitalization.initialize(this);
+    }
 
-        
+    /**
+     * Initializes the fields of this object.
+     * This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins).
+     * Only for internal use.
+     */
+    static initialize(obj) { 
     }
 
     /**
-    * Constructs a Capitalization from a plain JavaScript object, optionally creating a new instance.
-    * Copies all relevant properties from data to obj if supplied or a new instance if not.
-    * @param {Object} data The plain JavaScript object bearing properties of interest.
-    * @param {module:model/Capitalization} obj Optional instance to populate.
-    * @return {module:model/Capitalization} The populated Capitalization instance.
-    */
+     * Constructs a Capitalization from a plain JavaScript object, optionally creating a new instance.
+     * Copies all relevant properties from data to obj if supplied or a new instance if not.
+     * @param {Object} data The plain JavaScript object bearing properties of interest.
+     * @param {module:model/Capitalization} obj Optional instance to populate.
+     * @return {module:model/Capitalization} The populated Capitalization instance.
+     */
     static constructFromObject(data, obj) {
         if (data) {
             obj = obj || new Capitalization();
 
-            
-            
-            
-
             if (data.hasOwnProperty('smallCamel')) {
                 obj['smallCamel'] = ApiClient.convertToType(data['smallCamel'], 'String');
             }
@@ -78,39 +69,44 @@ export default class Capitalization {
         return obj;
     }
 
-    /**
-    * @member {String} smallCamel
-    */
-    smallCamel = undefined;
-    /**
-    * @member {String} CapitalCamel
-    */
-    CapitalCamel = undefined;
-    /**
-    * @member {String} small_Snake
-    */
-    small_Snake = undefined;
-    /**
-    * @member {String} Capital_Snake
-    */
-    Capital_Snake = undefined;
-    /**
-    * @member {String} SCA_ETH_Flow_Points
-    */
-    SCA_ETH_Flow_Points = undefined;
-    /**
-    * Name of the pet 
-    * @member {String} ATT_NAME
-    */
-    ATT_NAME = undefined;
 
+}
+
+/**
+ * @member {String} smallCamel
+ */
+Capitalization.prototype['smallCamel'] = undefined;
+
+/**
+ * @member {String} CapitalCamel
+ */
+Capitalization.prototype['CapitalCamel'] = undefined;
+
+/**
+ * @member {String} small_Snake
+ */
+Capitalization.prototype['small_Snake'] = undefined;
+
+/**
+ * @member {String} Capital_Snake
+ */
+Capitalization.prototype['Capital_Snake'] = undefined;
 
+/**
+ * @member {String} SCA_ETH_Flow_Points
+ */
+Capitalization.prototype['SCA_ETH_Flow_Points'] = undefined;
 
+/**
+ * Name of the pet 
+ * @member {String} ATT_NAME
+ */
+Capitalization.prototype['ATT_NAME'] = undefined;
 
 
 
 
 
-}
 
+export default Capitalization;
 
diff --git a/samples/client/petstore/javascript-es6/src/model/Cat.js b/samples/client/petstore/javascript-es6/src/model/Cat.js
index da946664d082..5ad5fb402860 100644
--- a/samples/client/petstore/javascript-es6/src/model/Cat.js
+++ b/samples/client/petstore/javascript-es6/src/model/Cat.js
@@ -1,64 +1,57 @@
 /**
- * Swagger Petstore
+ * OpenAPI Petstore
  * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
  *
  * OpenAPI spec version: 1.0.0
- * Contact: apiteam@swagger.io
+ * 
  *
- * NOTE: This class is auto generated by the swagger code generator program.
- * https://github.com/swagger-api/swagger-codegen.git
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
  * Do not edit the class manually.
  *
  */
 
-
 import ApiClient from '../ApiClient';
 import Animal from './Animal';
 
-
-
-
-
 /**
-* The Cat model module.
-* @module model/Cat
-* @version 1.0.0
-*/
-export default class Cat {
+ * The Cat model module.
+ * @module model/Cat
+ * @version 1.0.0
+ */
+class Cat {
     /**
-    * Constructs a new Cat.
-    * @alias module:model/Cat
-    * @class
-    * @extends module:model/Animal
-    * @param className {String} 
-    */
-
-    constructor(className) {
-        
-
-        Animal.call(this, className);
-        
-
-        
+     * Constructs a new Cat.
+     * @alias module:model/Cat
+     * @extends module:model/Animal
+     * @implements module:model/Animal
+     * @param className {} 
+     */
+    constructor(className) { 
+        Animal.initialize(this, className);
+        Cat.initialize(this, className);
+    }
 
-        
+    /**
+     * Initializes the fields of this object.
+     * This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins).
+     * Only for internal use.
+     */
+    static initialize(obj, className) { 
     }
 
     /**
-    * Constructs a Cat from a plain JavaScript object, optionally creating a new instance.
-    * Copies all relevant properties from data to obj if supplied or a new instance if not.
-    * @param {Object} data The plain JavaScript object bearing properties of interest.
-    * @param {module:model/Cat} obj Optional instance to populate.
-    * @return {module:model/Cat} The populated Cat instance.
-    */
+     * Constructs a Cat from a plain JavaScript object, optionally creating a new instance.
+     * Copies all relevant properties from data to obj if supplied or a new instance if not.
+     * @param {Object} data The plain JavaScript object bearing properties of interest.
+     * @param {module:model/Cat} obj Optional instance to populate.
+     * @return {module:model/Cat} The populated Cat instance.
+     */
     static constructFromObject(data, obj) {
         if (data) {
             obj = obj || new Cat();
-
-            
-
             Animal.constructFromObject(data, obj);
-            
+            Animal.constructFromObject(data, obj);
 
             if (data.hasOwnProperty('declawed')) {
                 obj['declawed'] = ApiClient.convertToType(data['declawed'], 'Boolean');
@@ -67,18 +60,28 @@ export default class Cat {
         return obj;
     }
 
-    /**
-    * @member {Boolean} declawed
-    */
-    declawed = undefined;
-
 
+}
 
+/**
+ * @member {Boolean} declawed
+ */
+Cat.prototype['declawed'] = undefined;
 
 
+// Implement Animal interface:
+/**
+ * @member {String} className
+ */
+Animal.prototype['className'] = undefined;
+/**
+ * @member {String} color
+ * @default 'red'
+ */
+Animal.prototype['color'] = 'red';
 
 
 
-}
 
+export default Cat;
 
diff --git a/samples/client/petstore/javascript-es6/src/model/Category.js b/samples/client/petstore/javascript-es6/src/model/Category.js
index a281817b72ff..fd0bf79dafb3 100644
--- a/samples/client/petstore/javascript-es6/src/model/Category.js
+++ b/samples/client/petstore/javascript-es6/src/model/Category.js
@@ -1,61 +1,52 @@
 /**
- * Swagger Petstore
+ * OpenAPI Petstore
  * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
  *
  * OpenAPI spec version: 1.0.0
- * Contact: apiteam@swagger.io
+ * 
  *
- * NOTE: This class is auto generated by the swagger code generator program.
- * https://github.com/swagger-api/swagger-codegen.git
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
  * Do not edit the class manually.
  *
  */
 
-
 import ApiClient from '../ApiClient';
 
-
-
-
-
 /**
-* The Category model module.
-* @module model/Category
-* @version 1.0.0
-*/
-export default class Category {
+ * The Category model module.
+ * @module model/Category
+ * @version 1.0.0
+ */
+class Category {
     /**
-    * Constructs a new Category.
-    * @alias module:model/Category
-    * @class
-    */
-
-    constructor() {
-        
-
-        
-        
-
+     * Constructs a new Category.
+     * @alias module:model/Category
+     */
+    constructor() { 
         
+        Category.initialize(this);
+    }
 
-        
+    /**
+     * Initializes the fields of this object.
+     * This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins).
+     * Only for internal use.
+     */
+    static initialize(obj) { 
     }
 
     /**
-    * Constructs a Category from a plain JavaScript object, optionally creating a new instance.
-    * Copies all relevant properties from data to obj if supplied or a new instance if not.
-    * @param {Object} data The plain JavaScript object bearing properties of interest.
-    * @param {module:model/Category} obj Optional instance to populate.
-    * @return {module:model/Category} The populated Category instance.
-    */
+     * Constructs a Category from a plain JavaScript object, optionally creating a new instance.
+     * Copies all relevant properties from data to obj if supplied or a new instance if not.
+     * @param {Object} data The plain JavaScript object bearing properties of interest.
+     * @param {module:model/Category} obj Optional instance to populate.
+     * @return {module:model/Category} The populated Category instance.
+     */
     static constructFromObject(data, obj) {
         if (data) {
             obj = obj || new Category();
 
-            
-            
-            
-
             if (data.hasOwnProperty('id')) {
                 obj['id'] = ApiClient.convertToType(data['id'], 'Number');
             }
@@ -66,22 +57,23 @@ export default class Category {
         return obj;
     }
 
-    /**
-    * @member {Number} id
-    */
-    id = undefined;
-    /**
-    * @member {String} name
-    */
-    name = undefined;
 
+}
 
+/**
+ * @member {Number} id
+ */
+Category.prototype['id'] = undefined;
 
+/**
+ * @member {String} name
+ */
+Category.prototype['name'] = undefined;
 
 
 
 
 
-}
 
+export default Category;
 
diff --git a/samples/client/petstore/javascript-es6/src/model/ClassModel.js b/samples/client/petstore/javascript-es6/src/model/ClassModel.js
index 6a558444adeb..2e55c2a6342e 100644
--- a/samples/client/petstore/javascript-es6/src/model/ClassModel.js
+++ b/samples/client/petstore/javascript-es6/src/model/ClassModel.js
@@ -1,62 +1,53 @@
 /**
- * Swagger Petstore
+ * OpenAPI Petstore
  * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
  *
  * OpenAPI spec version: 1.0.0
- * Contact: apiteam@swagger.io
+ * 
  *
- * NOTE: This class is auto generated by the swagger code generator program.
- * https://github.com/swagger-api/swagger-codegen.git
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
  * Do not edit the class manually.
  *
  */
 
-
 import ApiClient from '../ApiClient';
 
-
-
-
-
 /**
-* The ClassModel model module.
-* @module model/ClassModel
-* @version 1.0.0
-*/
-export default class ClassModel {
+ * The ClassModel model module.
+ * @module model/ClassModel
+ * @version 1.0.0
+ */
+class ClassModel {
     /**
-    * Constructs a new ClassModel.
-    * Model for testing model with \"_class\" property
-    * @alias module:model/ClassModel
-    * @class
-    */
-
-    constructor() {
-        
-
-        
-        
-
+     * Constructs a new ClassModel.
+     * Model for testing model with \"_class\" property
+     * @alias module:model/ClassModel
+     */
+    constructor() { 
         
+        ClassModel.initialize(this);
+    }
 
-        
+    /**
+     * Initializes the fields of this object.
+     * This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins).
+     * Only for internal use.
+     */
+    static initialize(obj) { 
     }
 
     /**
-    * Constructs a ClassModel from a plain JavaScript object, optionally creating a new instance.
-    * Copies all relevant properties from data to obj if supplied or a new instance if not.
-    * @param {Object} data The plain JavaScript object bearing properties of interest.
-    * @param {module:model/ClassModel} obj Optional instance to populate.
-    * @return {module:model/ClassModel} The populated ClassModel instance.
-    */
+     * Constructs a ClassModel from a plain JavaScript object, optionally creating a new instance.
+     * Copies all relevant properties from data to obj if supplied or a new instance if not.
+     * @param {Object} data The plain JavaScript object bearing properties of interest.
+     * @param {module:model/ClassModel} obj Optional instance to populate.
+     * @return {module:model/ClassModel} The populated ClassModel instance.
+     */
     static constructFromObject(data, obj) {
         if (data) {
             obj = obj || new ClassModel();
 
-            
-            
-            
-
             if (data.hasOwnProperty('_class')) {
                 obj['_class'] = ApiClient.convertToType(data['_class'], 'String');
             }
@@ -64,18 +55,18 @@ export default class ClassModel {
         return obj;
     }
 
-    /**
-    * @member {String} _class
-    */
-    _class = undefined;
-
 
+}
 
+/**
+ * @member {String} _class
+ */
+ClassModel.prototype['_class'] = undefined;
 
 
 
 
 
-}
 
+export default ClassModel;
 
diff --git a/samples/client/petstore/javascript-es6/src/model/Client.js b/samples/client/petstore/javascript-es6/src/model/Client.js
index a4f9b235154c..c506d2fa174d 100644
--- a/samples/client/petstore/javascript-es6/src/model/Client.js
+++ b/samples/client/petstore/javascript-es6/src/model/Client.js
@@ -1,61 +1,52 @@
 /**
- * Swagger Petstore
+ * OpenAPI Petstore
  * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
  *
  * OpenAPI spec version: 1.0.0
- * Contact: apiteam@swagger.io
+ * 
  *
- * NOTE: This class is auto generated by the swagger code generator program.
- * https://github.com/swagger-api/swagger-codegen.git
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
  * Do not edit the class manually.
  *
  */
 
-
 import ApiClient from '../ApiClient';
 
-
-
-
-
 /**
-* The Client model module.
-* @module model/Client
-* @version 1.0.0
-*/
-export default class Client {
+ * The Client model module.
+ * @module model/Client
+ * @version 1.0.0
+ */
+class Client {
     /**
-    * Constructs a new Client.
-    * @alias module:model/Client
-    * @class
-    */
-
-    constructor() {
-        
-
-        
-        
-
+     * Constructs a new Client.
+     * @alias module:model/Client
+     */
+    constructor() { 
         
+        Client.initialize(this);
+    }
 
-        
+    /**
+     * Initializes the fields of this object.
+     * This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins).
+     * Only for internal use.
+     */
+    static initialize(obj) { 
     }
 
     /**
-    * Constructs a Client from a plain JavaScript object, optionally creating a new instance.
-    * Copies all relevant properties from data to obj if supplied or a new instance if not.
-    * @param {Object} data The plain JavaScript object bearing properties of interest.
-    * @param {module:model/Client} obj Optional instance to populate.
-    * @return {module:model/Client} The populated Client instance.
-    */
+     * Constructs a Client from a plain JavaScript object, optionally creating a new instance.
+     * Copies all relevant properties from data to obj if supplied or a new instance if not.
+     * @param {Object} data The plain JavaScript object bearing properties of interest.
+     * @param {module:model/Client} obj Optional instance to populate.
+     * @return {module:model/Client} The populated Client instance.
+     */
     static constructFromObject(data, obj) {
         if (data) {
             obj = obj || new Client();
 
-            
-            
-            
-
             if (data.hasOwnProperty('client')) {
                 obj['client'] = ApiClient.convertToType(data['client'], 'String');
             }
@@ -63,18 +54,18 @@ export default class Client {
         return obj;
     }
 
-    /**
-    * @member {String} client
-    */
-    client = undefined;
-
 
+}
 
+/**
+ * @member {String} client
+ */
+Client.prototype['client'] = undefined;
 
 
 
 
 
-}
 
+export default Client;
 
diff --git a/samples/client/petstore/javascript-es6/src/model/Dog.js b/samples/client/petstore/javascript-es6/src/model/Dog.js
index e5bc0d3cecf1..ba225630e93c 100644
--- a/samples/client/petstore/javascript-es6/src/model/Dog.js
+++ b/samples/client/petstore/javascript-es6/src/model/Dog.js
@@ -1,64 +1,57 @@
 /**
- * Swagger Petstore
+ * OpenAPI Petstore
  * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
  *
  * OpenAPI spec version: 1.0.0
- * Contact: apiteam@swagger.io
+ * 
  *
- * NOTE: This class is auto generated by the swagger code generator program.
- * https://github.com/swagger-api/swagger-codegen.git
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
  * Do not edit the class manually.
  *
  */
 
-
 import ApiClient from '../ApiClient';
 import Animal from './Animal';
 
-
-
-
-
 /**
-* The Dog model module.
-* @module model/Dog
-* @version 1.0.0
-*/
-export default class Dog {
+ * The Dog model module.
+ * @module model/Dog
+ * @version 1.0.0
+ */
+class Dog {
     /**
-    * Constructs a new Dog.
-    * @alias module:model/Dog
-    * @class
-    * @extends module:model/Animal
-    * @param className {String} 
-    */
-
-    constructor(className) {
-        
-
-        Animal.call(this, className);
-        
-
-        
+     * Constructs a new Dog.
+     * @alias module:model/Dog
+     * @extends module:model/Animal
+     * @implements module:model/Animal
+     * @param className {} 
+     */
+    constructor(className) { 
+        Animal.initialize(this, className);
+        Dog.initialize(this, className);
+    }
 
-        
+    /**
+     * Initializes the fields of this object.
+     * This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins).
+     * Only for internal use.
+     */
+    static initialize(obj, className) { 
     }
 
     /**
-    * Constructs a Dog from a plain JavaScript object, optionally creating a new instance.
-    * Copies all relevant properties from data to obj if supplied or a new instance if not.
-    * @param {Object} data The plain JavaScript object bearing properties of interest.
-    * @param {module:model/Dog} obj Optional instance to populate.
-    * @return {module:model/Dog} The populated Dog instance.
-    */
+     * Constructs a Dog from a plain JavaScript object, optionally creating a new instance.
+     * Copies all relevant properties from data to obj if supplied or a new instance if not.
+     * @param {Object} data The plain JavaScript object bearing properties of interest.
+     * @param {module:model/Dog} obj Optional instance to populate.
+     * @return {module:model/Dog} The populated Dog instance.
+     */
     static constructFromObject(data, obj) {
         if (data) {
             obj = obj || new Dog();
-
-            
-
             Animal.constructFromObject(data, obj);
-            
+            Animal.constructFromObject(data, obj);
 
             if (data.hasOwnProperty('breed')) {
                 obj['breed'] = ApiClient.convertToType(data['breed'], 'String');
@@ -67,18 +60,28 @@ export default class Dog {
         return obj;
     }
 
-    /**
-    * @member {String} breed
-    */
-    breed = undefined;
-
 
+}
 
+/**
+ * @member {String} breed
+ */
+Dog.prototype['breed'] = undefined;
 
 
+// Implement Animal interface:
+/**
+ * @member {String} className
+ */
+Animal.prototype['className'] = undefined;
+/**
+ * @member {String} color
+ * @default 'red'
+ */
+Animal.prototype['color'] = 'red';
 
 
 
-}
 
+export default Dog;
 
diff --git a/samples/client/petstore/javascript-es6/src/model/EnumArrays.js b/samples/client/petstore/javascript-es6/src/model/EnumArrays.js
index 20a74f0d8839..9426d4735ac1 100644
--- a/samples/client/petstore/javascript-es6/src/model/EnumArrays.js
+++ b/samples/client/petstore/javascript-es6/src/model/EnumArrays.js
@@ -1,61 +1,52 @@
 /**
- * Swagger Petstore
+ * OpenAPI Petstore
  * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
  *
  * OpenAPI spec version: 1.0.0
- * Contact: apiteam@swagger.io
+ * 
  *
- * NOTE: This class is auto generated by the swagger code generator program.
- * https://github.com/swagger-api/swagger-codegen.git
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
  * Do not edit the class manually.
  *
  */
 
-
 import ApiClient from '../ApiClient';
 
-
-
-
-
 /**
-* The EnumArrays model module.
-* @module model/EnumArrays
-* @version 1.0.0
-*/
-export default class EnumArrays {
+ * The EnumArrays model module.
+ * @module model/EnumArrays
+ * @version 1.0.0
+ */
+class EnumArrays {
     /**
-    * Constructs a new EnumArrays.
-    * @alias module:model/EnumArrays
-    * @class
-    */
-
-    constructor() {
-        
-
-        
-        
-
+     * Constructs a new EnumArrays.
+     * @alias module:model/EnumArrays
+     */
+    constructor() { 
         
+        EnumArrays.initialize(this);
+    }
 
-        
+    /**
+     * Initializes the fields of this object.
+     * This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins).
+     * Only for internal use.
+     */
+    static initialize(obj) { 
     }
 
     /**
-    * Constructs a EnumArrays from a plain JavaScript object, optionally creating a new instance.
-    * Copies all relevant properties from data to obj if supplied or a new instance if not.
-    * @param {Object} data The plain JavaScript object bearing properties of interest.
-    * @param {module:model/EnumArrays} obj Optional instance to populate.
-    * @return {module:model/EnumArrays} The populated EnumArrays instance.
-    */
+     * Constructs a EnumArrays from a plain JavaScript object, optionally creating a new instance.
+     * Copies all relevant properties from data to obj if supplied or a new instance if not.
+     * @param {Object} data The plain JavaScript object bearing properties of interest.
+     * @param {module:model/EnumArrays} obj Optional instance to populate.
+     * @return {module:model/EnumArrays} The populated EnumArrays instance.
+     */
     static constructFromObject(data, obj) {
         if (data) {
             obj = obj || new EnumArrays();
 
-            
-            
-            
-
             if (data.hasOwnProperty('just_symbol')) {
                 obj['just_symbol'] = ApiClient.convertToType(data['just_symbol'], 'String');
             }
@@ -66,62 +57,65 @@ export default class EnumArrays {
         return obj;
     }
 
-    /**
-    * @member {module:model/EnumArrays.JustSymbolEnum} just_symbol
-    */
-    just_symbol = undefined;
-    /**
-    * @member {Array.} array_enum
-    */
-    array_enum = undefined;
+
+}
+
+/**
+ * @member {module:model/EnumArrays.JustSymbolEnum} just_symbol
+ */
+EnumArrays.prototype['just_symbol'] = undefined;
+
+/**
+ * @member {Array.} array_enum
+ */
+EnumArrays.prototype['array_enum'] = undefined;
+
 
 
 
 
+/**
+ * Allowed values for the just_symbol property.
+ * @enum {String}
+ * @readonly
+ */
+EnumArrays['JustSymbolEnum'] = {
 
+    /**
+     * value: ">="
+     * @const
+     */
+    "GREATER_THAN_OR_EQUAL_TO": ">=",
 
     /**
-    * Allowed values for the just_symbol property.
-    * @enum {String}
-    * @readonly
-    */
-    static JustSymbolEnum = {
-    
-        /**
-         * value: ">="
-         * @const
-         */
-        "GREATER_THAN_OR_EQUAL_TO": ">=",
-    
-        /**
-         * value: "$"
-         * @const
-         */
-        "DOLLAR": "$"    
-    };
+     * value: "$"
+     * @const
+     */
+    "DOLLAR": "$"
+};
+
+
+/**
+ * Allowed values for the arrayEnum property.
+ * @enum {String}
+ * @readonly
+ */
+EnumArrays['ArrayEnumEnum'] = {
 
     /**
-    * Allowed values for the arrayEnum property.
-    * @enum {String}
-    * @readonly
-    */
-    static ArrayEnumEnum = {
-    
-        /**
-         * value: "fish"
-         * @const
-         */
-        "fish": "fish",
-    
-        /**
-         * value: "crab"
-         * @const
-         */
-        "crab": "crab"    
-    };
+     * value: "fish"
+     * @const
+     */
+    "fish": "fish",
 
+    /**
+     * value: "crab"
+     * @const
+     */
+    "crab": "crab"
+};
 
 
-}
 
+export default EnumArrays;
 
diff --git a/samples/client/petstore/javascript-es6/src/model/EnumClass.js b/samples/client/petstore/javascript-es6/src/model/EnumClass.js
index eeb08ca2864b..65ac9f1f1bc3 100644
--- a/samples/client/petstore/javascript-es6/src/model/EnumClass.js
+++ b/samples/client/petstore/javascript-es6/src/model/EnumClass.js
@@ -1,20 +1,17 @@
 /**
- * Swagger Petstore
+ * OpenAPI Petstore
  * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
  *
  * OpenAPI spec version: 1.0.0
- * Contact: apiteam@swagger.io
+ * 
  *
- * NOTE: This class is auto generated by the swagger code generator program.
- * https://github.com/swagger-api/swagger-codegen.git
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
  * Do not edit the class manually.
  *
  */
 
-
 import ApiClient from '../ApiClient';
-
-
 /**
 * Enum class EnumClass.
 * @enum {}
@@ -26,21 +23,21 @@ export default class EnumClass {
          * value: "_abc"
          * @const
          */
-        _abc = "_abc";
+        "_abc" = "_abc";
 
     
         /**
          * value: "-efg"
          * @const
          */
-        -efg = "-efg";
+        "-efg" = "-efg";
 
     
         /**
          * value: "(xyz)"
          * @const
          */
-        (xyz) = "(xyz)";
+        "(xyz)" = "(xyz)";
 
     
 
@@ -54,4 +51,3 @@ export default class EnumClass {
     }
 }
 
-
diff --git a/samples/client/petstore/javascript-es6/src/model/EnumTest.js b/samples/client/petstore/javascript-es6/src/model/EnumTest.js
index b1f9b0b6c693..08828485c183 100644
--- a/samples/client/petstore/javascript-es6/src/model/EnumTest.js
+++ b/samples/client/petstore/javascript-es6/src/model/EnumTest.js
@@ -1,65 +1,61 @@
 /**
- * Swagger Petstore
+ * OpenAPI Petstore
  * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
  *
  * OpenAPI spec version: 1.0.0
- * Contact: apiteam@swagger.io
+ * 
  *
- * NOTE: This class is auto generated by the swagger code generator program.
- * https://github.com/swagger-api/swagger-codegen.git
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
  * Do not edit the class manually.
  *
  */
 
-
 import ApiClient from '../ApiClient';
 import OuterEnum from './OuterEnum';
 
-
-
-
-
 /**
-* The EnumTest model module.
-* @module model/EnumTest
-* @version 1.0.0
-*/
-export default class EnumTest {
+ * The EnumTest model module.
+ * @module model/EnumTest
+ * @version 1.0.0
+ */
+class EnumTest {
     /**
-    * Constructs a new EnumTest.
-    * @alias module:model/EnumTest
-    * @class
-    */
-
-    constructor() {
-        
-
-        
-        
-
+     * Constructs a new EnumTest.
+     * @alias module:model/EnumTest
+     * @param enumStringRequired {module:model/EnumTest.EnumStringRequiredEnum} 
+     */
+    constructor(enumStringRequired) { 
         
+        EnumTest.initialize(this, enumStringRequired);
+    }
 
-        
+    /**
+     * Initializes the fields of this object.
+     * This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins).
+     * Only for internal use.
+     */
+    static initialize(obj, enumStringRequired) { 
+        obj['enum_string_required'] = enumStringRequired;
     }
 
     /**
-    * Constructs a EnumTest from a plain JavaScript object, optionally creating a new instance.
-    * Copies all relevant properties from data to obj if supplied or a new instance if not.
-    * @param {Object} data The plain JavaScript object bearing properties of interest.
-    * @param {module:model/EnumTest} obj Optional instance to populate.
-    * @return {module:model/EnumTest} The populated EnumTest instance.
-    */
+     * Constructs a EnumTest from a plain JavaScript object, optionally creating a new instance.
+     * Copies all relevant properties from data to obj if supplied or a new instance if not.
+     * @param {Object} data The plain JavaScript object bearing properties of interest.
+     * @param {module:model/EnumTest} obj Optional instance to populate.
+     * @return {module:model/EnumTest} The populated EnumTest instance.
+     */
     static constructFromObject(data, obj) {
         if (data) {
             obj = obj || new EnumTest();
 
-            
-            
-            
-
             if (data.hasOwnProperty('enum_string')) {
                 obj['enum_string'] = ApiClient.convertToType(data['enum_string'], 'String');
             }
+            if (data.hasOwnProperty('enum_string_required')) {
+                obj['enum_string_required'] = ApiClient.convertToType(data['enum_string_required'], 'String');
+            }
             if (data.hasOwnProperty('enum_integer')) {
                 obj['enum_integer'] = ApiClient.convertToType(data['enum_integer'], 'Number');
             }
@@ -73,96 +69,134 @@ export default class EnumTest {
         return obj;
     }
 
+
+}
+
+/**
+ * @member {module:model/EnumTest.EnumStringEnum} enum_string
+ */
+EnumTest.prototype['enum_string'] = undefined;
+
+/**
+ * @member {module:model/EnumTest.EnumStringRequiredEnum} enum_string_required
+ */
+EnumTest.prototype['enum_string_required'] = undefined;
+
+/**
+ * @member {module:model/EnumTest.EnumIntegerEnum} enum_integer
+ */
+EnumTest.prototype['enum_integer'] = undefined;
+
+/**
+ * @member {module:model/EnumTest.EnumNumberEnum} enum_number
+ */
+EnumTest.prototype['enum_number'] = undefined;
+
+/**
+ * @member {module:model/OuterEnum} outerEnum
+ */
+EnumTest.prototype['outerEnum'] = undefined;
+
+
+
+
+
+/**
+ * Allowed values for the enum_string property.
+ * @enum {String}
+ * @readonly
+ */
+EnumTest['EnumStringEnum'] = {
+
     /**
-    * @member {module:model/EnumTest.EnumStringEnum} enum_string
-    */
-    enum_string = undefined;
-    /**
-    * @member {module:model/EnumTest.EnumIntegerEnum} enum_integer
-    */
-    enum_integer = undefined;
+     * value: "UPPER"
+     * @const
+     */
+    "UPPER": "UPPER",
+
     /**
-    * @member {module:model/EnumTest.EnumNumberEnum} enum_number
-    */
-    enum_number = undefined;
+     * value: "lower"
+     * @const
+     */
+    "lower": "lower",
+
     /**
-    * @member {module:model/OuterEnum} outerEnum
-    */
-    outerEnum = undefined;
+     * value: ""
+     * @const
+     */
+    "empty": ""
+};
 
 
+/**
+ * Allowed values for the enum_string_required property.
+ * @enum {String}
+ * @readonly
+ */
+EnumTest['EnumStringRequiredEnum'] = {
+
+    /**
+     * value: "UPPER"
+     * @const
+     */
+    "UPPER": "UPPER",
 
+    /**
+     * value: "lower"
+     * @const
+     */
+    "lower": "lower",
 
+    /**
+     * value: ""
+     * @const
+     */
+    "empty": ""
+};
 
 
+/**
+ * Allowed values for the enum_integer property.
+ * @enum {Number}
+ * @readonly
+ */
+EnumTest['EnumIntegerEnum'] = {
+
     /**
-    * Allowed values for the enum_string property.
-    * @enum {String}
-    * @readonly
-    */
-    static EnumStringEnum = {
-    
-        /**
-         * value: "UPPER"
-         * @const
-         */
-        "UPPER": "UPPER",
-    
-        /**
-         * value: "lower"
-         * @const
-         */
-        "lower": "lower",
-    
-        /**
-         * value: ""
-         * @const
-         */
-        "empty": ""    
-    };
+     * value: 1
+     * @const
+     */
+    "1": 1,
 
     /**
-    * Allowed values for the enum_integer property.
-    * @enum {Number}
-    * @readonly
-    */
-    static EnumIntegerEnum = {
-    
-        /**
-         * value: 1
-         * @const
-         */
-        "1": 1,
-    
-        /**
-         * value: -1
-         * @const
-         */
-        "-1": -1    
-    };
+     * value: -1
+     * @const
+     */
+    "-1": -1
+};
+
+
+/**
+ * Allowed values for the enum_number property.
+ * @enum {Number}
+ * @readonly
+ */
+EnumTest['EnumNumberEnum'] = {
 
     /**
-    * Allowed values for the enum_number property.
-    * @enum {Number}
-    * @readonly
-    */
-    static EnumNumberEnum = {
-    
-        /**
-         * value: 1.1
-         * @const
-         */
-        "1.1": 1.1,
-    
-        /**
-         * value: -1.2
-         * @const
-         */
-        "-1.2": -1.2    
-    };
+     * value: 1.1
+     * @const
+     */
+    "1.1": 1.1,
 
+    /**
+     * value: -1.2
+     * @const
+     */
+    "-1.2": -1.2
+};
 
 
-}
 
+export default EnumTest;
 
diff --git a/samples/client/petstore/javascript-es6/src/model/FormatTest.js b/samples/client/petstore/javascript-es6/src/model/FormatTest.js
index 8773a3a77558..87fa2afe86ba 100644
--- a/samples/client/petstore/javascript-es6/src/model/FormatTest.js
+++ b/samples/client/petstore/javascript-es6/src/model/FormatTest.js
@@ -1,65 +1,60 @@
 /**
- * Swagger Petstore
+ * OpenAPI Petstore
  * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
  *
  * OpenAPI spec version: 1.0.0
- * Contact: apiteam@swagger.io
+ * 
  *
- * NOTE: This class is auto generated by the swagger code generator program.
- * https://github.com/swagger-api/swagger-codegen.git
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
  * Do not edit the class manually.
  *
  */
 
-
 import ApiClient from '../ApiClient';
 
-
-
-
-
 /**
-* The FormatTest model module.
-* @module model/FormatTest
-* @version 1.0.0
-*/
-export default class FormatTest {
+ * The FormatTest model module.
+ * @module model/FormatTest
+ * @version 1.0.0
+ */
+class FormatTest {
     /**
-    * Constructs a new FormatTest.
-    * @alias module:model/FormatTest
-    * @class
-    * @param _number {Number} 
-    * @param _byte {Blob} 
-    * @param _date {Date} 
-    * @param password {String} 
-    */
-
-    constructor(_number, _byte, _date, password) {
-        
-
-        
+     * Constructs a new FormatTest.
+     * @alias module:model/FormatTest
+     * @param _number {Number} 
+     * @param _byte {Blob} 
+     * @param _date {Date} 
+     * @param password {String} 
+     */
+    constructor(_number, _byte, _date, password) { 
         
+        FormatTest.initialize(this, _number, _byte, _date, password);
+    }
 
-        this['number'] = _number;this['byte'] = _byte;this['date'] = _date;this['password'] = password;
-
-        
+    /**
+     * Initializes the fields of this object.
+     * This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins).
+     * Only for internal use.
+     */
+    static initialize(obj, _number, _byte, _date, password) { 
+        obj['number'] = _number;
+        obj['byte'] = _byte;
+        obj['date'] = _date;
+        obj['password'] = password;
     }
 
     /**
-    * Constructs a FormatTest from a plain JavaScript object, optionally creating a new instance.
-    * Copies all relevant properties from data to obj if supplied or a new instance if not.
-    * @param {Object} data The plain JavaScript object bearing properties of interest.
-    * @param {module:model/FormatTest} obj Optional instance to populate.
-    * @return {module:model/FormatTest} The populated FormatTest instance.
-    */
+     * Constructs a FormatTest from a plain JavaScript object, optionally creating a new instance.
+     * Copies all relevant properties from data to obj if supplied or a new instance if not.
+     * @param {Object} data The plain JavaScript object bearing properties of interest.
+     * @param {module:model/FormatTest} obj Optional instance to populate.
+     * @return {module:model/FormatTest} The populated FormatTest instance.
+     */
     static constructFromObject(data, obj) {
         if (data) {
             obj = obj || new FormatTest();
 
-            
-            
-            
-
             if (data.hasOwnProperty('integer')) {
                 obj['integer'] = ApiClient.convertToType(data['integer'], 'Number');
             }
@@ -85,7 +80,7 @@ export default class FormatTest {
                 obj['byte'] = ApiClient.convertToType(data['byte'], 'Blob');
             }
             if (data.hasOwnProperty('binary')) {
-                obj['binary'] = ApiClient.convertToType(data['binary'], 'Blob');
+                obj['binary'] = ApiClient.convertToType(data['binary'], File);
             }
             if (data.hasOwnProperty('date')) {
                 obj['date'] = ApiClient.convertToType(data['date'], 'Date');
@@ -103,66 +98,78 @@ export default class FormatTest {
         return obj;
     }
 
-    /**
-    * @member {Number} integer
-    */
-    integer = undefined;
-    /**
-    * @member {Number} int32
-    */
-    int32 = undefined;
-    /**
-    * @member {Number} int64
-    */
-    int64 = undefined;
-    /**
-    * @member {Number} number
-    */
-    number = undefined;
-    /**
-    * @member {Number} float
-    */
-    float = undefined;
-    /**
-    * @member {Number} double
-    */
-    double = undefined;
-    /**
-    * @member {String} string
-    */
-    string = undefined;
-    /**
-    * @member {Blob} byte
-    */
-    byte = undefined;
-    /**
-    * @member {Blob} binary
-    */
-    binary = undefined;
-    /**
-    * @member {Date} date
-    */
-    date = undefined;
-    /**
-    * @member {Date} dateTime
-    */
-    dateTime = undefined;
-    /**
-    * @member {String} uuid
-    */
-    uuid = undefined;
-    /**
-    * @member {String} password
-    */
-    password = undefined;
 
+}
+
+/**
+ * @member {Number} integer
+ */
+FormatTest.prototype['integer'] = undefined;
+
+/**
+ * @member {Number} int32
+ */
+FormatTest.prototype['int32'] = undefined;
+
+/**
+ * @member {Number} int64
+ */
+FormatTest.prototype['int64'] = undefined;
 
+/**
+ * @member {Number} number
+ */
+FormatTest.prototype['number'] = undefined;
 
+/**
+ * @member {Number} float
+ */
+FormatTest.prototype['float'] = undefined;
+
+/**
+ * @member {Number} double
+ */
+FormatTest.prototype['double'] = undefined;
+
+/**
+ * @member {String} string
+ */
+FormatTest.prototype['string'] = undefined;
+
+/**
+ * @member {Blob} byte
+ */
+FormatTest.prototype['byte'] = undefined;
+
+/**
+ * @member {File} binary
+ */
+FormatTest.prototype['binary'] = undefined;
+
+/**
+ * @member {Date} date
+ */
+FormatTest.prototype['date'] = undefined;
+
+/**
+ * @member {Date} dateTime
+ */
+FormatTest.prototype['dateTime'] = undefined;
+
+/**
+ * @member {String} uuid
+ */
+FormatTest.prototype['uuid'] = undefined;
+
+/**
+ * @member {String} password
+ */
+FormatTest.prototype['password'] = undefined;
 
 
 
 
 
-}
 
+export default FormatTest;
 
diff --git a/samples/client/petstore/javascript-es6/src/model/HasOnlyReadOnly.js b/samples/client/petstore/javascript-es6/src/model/HasOnlyReadOnly.js
index cb859fe3e504..9c11ae559c9e 100644
--- a/samples/client/petstore/javascript-es6/src/model/HasOnlyReadOnly.js
+++ b/samples/client/petstore/javascript-es6/src/model/HasOnlyReadOnly.js
@@ -1,61 +1,52 @@
 /**
- * Swagger Petstore
+ * OpenAPI Petstore
  * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
  *
  * OpenAPI spec version: 1.0.0
- * Contact: apiteam@swagger.io
+ * 
  *
- * NOTE: This class is auto generated by the swagger code generator program.
- * https://github.com/swagger-api/swagger-codegen.git
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
  * Do not edit the class manually.
  *
  */
 
-
 import ApiClient from '../ApiClient';
 
-
-
-
-
 /**
-* The HasOnlyReadOnly model module.
-* @module model/HasOnlyReadOnly
-* @version 1.0.0
-*/
-export default class HasOnlyReadOnly {
+ * The HasOnlyReadOnly model module.
+ * @module model/HasOnlyReadOnly
+ * @version 1.0.0
+ */
+class HasOnlyReadOnly {
     /**
-    * Constructs a new HasOnlyReadOnly.
-    * @alias module:model/HasOnlyReadOnly
-    * @class
-    */
-
-    constructor() {
-        
-
-        
-        
-
+     * Constructs a new HasOnlyReadOnly.
+     * @alias module:model/HasOnlyReadOnly
+     */
+    constructor() { 
         
+        HasOnlyReadOnly.initialize(this);
+    }
 
-        
+    /**
+     * Initializes the fields of this object.
+     * This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins).
+     * Only for internal use.
+     */
+    static initialize(obj) { 
     }
 
     /**
-    * Constructs a HasOnlyReadOnly from a plain JavaScript object, optionally creating a new instance.
-    * Copies all relevant properties from data to obj if supplied or a new instance if not.
-    * @param {Object} data The plain JavaScript object bearing properties of interest.
-    * @param {module:model/HasOnlyReadOnly} obj Optional instance to populate.
-    * @return {module:model/HasOnlyReadOnly} The populated HasOnlyReadOnly instance.
-    */
+     * Constructs a HasOnlyReadOnly from a plain JavaScript object, optionally creating a new instance.
+     * Copies all relevant properties from data to obj if supplied or a new instance if not.
+     * @param {Object} data The plain JavaScript object bearing properties of interest.
+     * @param {module:model/HasOnlyReadOnly} obj Optional instance to populate.
+     * @return {module:model/HasOnlyReadOnly} The populated HasOnlyReadOnly instance.
+     */
     static constructFromObject(data, obj) {
         if (data) {
             obj = obj || new HasOnlyReadOnly();
 
-            
-            
-            
-
             if (data.hasOwnProperty('bar')) {
                 obj['bar'] = ApiClient.convertToType(data['bar'], 'String');
             }
@@ -66,22 +57,23 @@ export default class HasOnlyReadOnly {
         return obj;
     }
 
-    /**
-    * @member {String} bar
-    */
-    bar = undefined;
-    /**
-    * @member {String} foo
-    */
-    foo = undefined;
 
+}
 
+/**
+ * @member {String} bar
+ */
+HasOnlyReadOnly.prototype['bar'] = undefined;
 
+/**
+ * @member {String} foo
+ */
+HasOnlyReadOnly.prototype['foo'] = undefined;
 
 
 
 
 
-}
 
+export default HasOnlyReadOnly;
 
diff --git a/samples/client/petstore/javascript-es6/src/model/List.js b/samples/client/petstore/javascript-es6/src/model/List.js
index 513acd45aff9..d4d342319e7f 100644
--- a/samples/client/petstore/javascript-es6/src/model/List.js
+++ b/samples/client/petstore/javascript-es6/src/model/List.js
@@ -1,61 +1,52 @@
 /**
- * Swagger Petstore
+ * OpenAPI Petstore
  * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
  *
  * OpenAPI spec version: 1.0.0
- * Contact: apiteam@swagger.io
+ * 
  *
- * NOTE: This class is auto generated by the swagger code generator program.
- * https://github.com/swagger-api/swagger-codegen.git
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
  * Do not edit the class manually.
  *
  */
 
-
 import ApiClient from '../ApiClient';
 
-
-
-
-
 /**
-* The List model module.
-* @module model/List
-* @version 1.0.0
-*/
-export default class List {
+ * The List model module.
+ * @module model/List
+ * @version 1.0.0
+ */
+class List {
     /**
-    * Constructs a new List.
-    * @alias module:model/List
-    * @class
-    */
-
-    constructor() {
-        
-
-        
-        
-
+     * Constructs a new List.
+     * @alias module:model/List
+     */
+    constructor() { 
         
+        List.initialize(this);
+    }
 
-        
+    /**
+     * Initializes the fields of this object.
+     * This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins).
+     * Only for internal use.
+     */
+    static initialize(obj) { 
     }
 
     /**
-    * Constructs a List from a plain JavaScript object, optionally creating a new instance.
-    * Copies all relevant properties from data to obj if supplied or a new instance if not.
-    * @param {Object} data The plain JavaScript object bearing properties of interest.
-    * @param {module:model/List} obj Optional instance to populate.
-    * @return {module:model/List} The populated List instance.
-    */
+     * Constructs a List from a plain JavaScript object, optionally creating a new instance.
+     * Copies all relevant properties from data to obj if supplied or a new instance if not.
+     * @param {Object} data The plain JavaScript object bearing properties of interest.
+     * @param {module:model/List} obj Optional instance to populate.
+     * @return {module:model/List} The populated List instance.
+     */
     static constructFromObject(data, obj) {
         if (data) {
             obj = obj || new List();
 
-            
-            
-            
-
             if (data.hasOwnProperty('123-list')) {
                 obj['123-list'] = ApiClient.convertToType(data['123-list'], 'String');
             }
@@ -63,18 +54,18 @@ export default class List {
         return obj;
     }
 
-    /**
-    * @member {String} 123-list
-    */
-    123-list = undefined;
-
 
+}
 
+/**
+ * @member {String} 123-list
+ */
+List.prototype['123-list'] = undefined;
 
 
 
 
 
-}
 
+export default List;
 
diff --git a/samples/client/petstore/javascript-es6/src/model/MapTest.js b/samples/client/petstore/javascript-es6/src/model/MapTest.js
index b7a60cd8d9d3..8cc6640c9d4f 100644
--- a/samples/client/petstore/javascript-es6/src/model/MapTest.js
+++ b/samples/client/petstore/javascript-es6/src/model/MapTest.js
@@ -1,61 +1,52 @@
 /**
- * Swagger Petstore
+ * OpenAPI Petstore
  * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
  *
  * OpenAPI spec version: 1.0.0
- * Contact: apiteam@swagger.io
+ * 
  *
- * NOTE: This class is auto generated by the swagger code generator program.
- * https://github.com/swagger-api/swagger-codegen.git
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
  * Do not edit the class manually.
  *
  */
 
-
 import ApiClient from '../ApiClient';
 
-
-
-
-
 /**
-* The MapTest model module.
-* @module model/MapTest
-* @version 1.0.0
-*/
-export default class MapTest {
+ * The MapTest model module.
+ * @module model/MapTest
+ * @version 1.0.0
+ */
+class MapTest {
     /**
-    * Constructs a new MapTest.
-    * @alias module:model/MapTest
-    * @class
-    */
-
-    constructor() {
-        
-
-        
-        
-
+     * Constructs a new MapTest.
+     * @alias module:model/MapTest
+     */
+    constructor() { 
         
+        MapTest.initialize(this);
+    }
 
-        
+    /**
+     * Initializes the fields of this object.
+     * This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins).
+     * Only for internal use.
+     */
+    static initialize(obj) { 
     }
 
     /**
-    * Constructs a MapTest from a plain JavaScript object, optionally creating a new instance.
-    * Copies all relevant properties from data to obj if supplied or a new instance if not.
-    * @param {Object} data The plain JavaScript object bearing properties of interest.
-    * @param {module:model/MapTest} obj Optional instance to populate.
-    * @return {module:model/MapTest} The populated MapTest instance.
-    */
+     * Constructs a MapTest from a plain JavaScript object, optionally creating a new instance.
+     * Copies all relevant properties from data to obj if supplied or a new instance if not.
+     * @param {Object} data The plain JavaScript object bearing properties of interest.
+     * @param {module:model/MapTest} obj Optional instance to populate.
+     * @return {module:model/MapTest} The populated MapTest instance.
+     */
     static constructFromObject(data, obj) {
         if (data) {
             obj = obj || new MapTest();
 
-            
-            
-            
-
             if (data.hasOwnProperty('map_map_of_string')) {
                 obj['map_map_of_string'] = ApiClient.convertToType(data['map_map_of_string'], {'String': {'String': 'String'}});
             }
@@ -66,42 +57,44 @@ export default class MapTest {
         return obj;
     }
 
-    /**
-    * @member {Object.>} map_map_of_string
-    */
-    map_map_of_string = undefined;
-    /**
-    * @member {Object.} map_of_enum_string
-    */
-    map_of_enum_string = undefined;
 
+}
 
+/**
+ * @member {Object.>} map_map_of_string
+ */
+MapTest.prototype['map_map_of_string'] = undefined;
 
+/**
+ * @member {Object.} map_of_enum_string
+ */
+MapTest.prototype['map_of_enum_string'] = undefined;
 
 
 
+
+
+/**
+ * Allowed values for the inner property.
+ * @enum {String}
+ * @readonly
+ */
+MapTest['InnerEnum'] = {
+
     /**
-    * Allowed values for the inner property.
-    * @enum {String}
-    * @readonly
-    */
-    static InnerEnum = {
-    
-        /**
-         * value: "UPPER"
-         * @const
-         */
-        "UPPER": "UPPER",
-    
-        /**
-         * value: "lower"
-         * @const
-         */
-        "lower": "lower"    
-    };
+     * value: "UPPER"
+     * @const
+     */
+    "UPPER": "UPPER",
 
+    /**
+     * value: "lower"
+     * @const
+     */
+    "lower": "lower"
+};
 
 
-}
 
+export default MapTest;
 
diff --git a/samples/client/petstore/javascript-es6/src/model/MixedPropertiesAndAdditionalPropertiesClass.js b/samples/client/petstore/javascript-es6/src/model/MixedPropertiesAndAdditionalPropertiesClass.js
index 6d912ceeb9be..5568d3a6e96f 100644
--- a/samples/client/petstore/javascript-es6/src/model/MixedPropertiesAndAdditionalPropertiesClass.js
+++ b/samples/client/petstore/javascript-es6/src/model/MixedPropertiesAndAdditionalPropertiesClass.js
@@ -1,62 +1,53 @@
 /**
- * Swagger Petstore
+ * OpenAPI Petstore
  * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
  *
  * OpenAPI spec version: 1.0.0
- * Contact: apiteam@swagger.io
+ * 
  *
- * NOTE: This class is auto generated by the swagger code generator program.
- * https://github.com/swagger-api/swagger-codegen.git
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
  * Do not edit the class manually.
  *
  */
 
-
 import ApiClient from '../ApiClient';
 import Animal from './Animal';
 
-
-
-
-
 /**
-* The MixedPropertiesAndAdditionalPropertiesClass model module.
-* @module model/MixedPropertiesAndAdditionalPropertiesClass
-* @version 1.0.0
-*/
-export default class MixedPropertiesAndAdditionalPropertiesClass {
+ * The MixedPropertiesAndAdditionalPropertiesClass model module.
+ * @module model/MixedPropertiesAndAdditionalPropertiesClass
+ * @version 1.0.0
+ */
+class MixedPropertiesAndAdditionalPropertiesClass {
     /**
-    * Constructs a new MixedPropertiesAndAdditionalPropertiesClass.
-    * @alias module:model/MixedPropertiesAndAdditionalPropertiesClass
-    * @class
-    */
-
-    constructor() {
-        
-
-        
-        
-
+     * Constructs a new MixedPropertiesAndAdditionalPropertiesClass.
+     * @alias module:model/MixedPropertiesAndAdditionalPropertiesClass
+     */
+    constructor() { 
         
+        MixedPropertiesAndAdditionalPropertiesClass.initialize(this);
+    }
 
-        
+    /**
+     * Initializes the fields of this object.
+     * This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins).
+     * Only for internal use.
+     */
+    static initialize(obj) { 
     }
 
     /**
-    * Constructs a MixedPropertiesAndAdditionalPropertiesClass from a plain JavaScript object, optionally creating a new instance.
-    * Copies all relevant properties from data to obj if supplied or a new instance if not.
-    * @param {Object} data The plain JavaScript object bearing properties of interest.
-    * @param {module:model/MixedPropertiesAndAdditionalPropertiesClass} obj Optional instance to populate.
-    * @return {module:model/MixedPropertiesAndAdditionalPropertiesClass} The populated MixedPropertiesAndAdditionalPropertiesClass instance.
-    */
+     * Constructs a MixedPropertiesAndAdditionalPropertiesClass from a plain JavaScript object, optionally creating a new instance.
+     * Copies all relevant properties from data to obj if supplied or a new instance if not.
+     * @param {Object} data The plain JavaScript object bearing properties of interest.
+     * @param {module:model/MixedPropertiesAndAdditionalPropertiesClass} obj Optional instance to populate.
+     * @return {module:model/MixedPropertiesAndAdditionalPropertiesClass} The populated MixedPropertiesAndAdditionalPropertiesClass instance.
+     */
     static constructFromObject(data, obj) {
         if (data) {
             obj = obj || new MixedPropertiesAndAdditionalPropertiesClass();
 
-            
-            
-            
-
             if (data.hasOwnProperty('uuid')) {
                 obj['uuid'] = ApiClient.convertToType(data['uuid'], 'String');
             }
@@ -70,26 +61,28 @@ export default class MixedPropertiesAndAdditionalPropertiesClass {
         return obj;
     }
 
-    /**
-    * @member {String} uuid
-    */
-    uuid = undefined;
-    /**
-    * @member {Date} dateTime
-    */
-    dateTime = undefined;
-    /**
-    * @member {Object.} map
-    */
-    map = undefined;
 
+}
+
+/**
+ * @member {String} uuid
+ */
+MixedPropertiesAndAdditionalPropertiesClass.prototype['uuid'] = undefined;
 
+/**
+ * @member {Date} dateTime
+ */
+MixedPropertiesAndAdditionalPropertiesClass.prototype['dateTime'] = undefined;
 
+/**
+ * @member {Object.} map
+ */
+MixedPropertiesAndAdditionalPropertiesClass.prototype['map'] = undefined;
 
 
 
 
 
-}
 
+export default MixedPropertiesAndAdditionalPropertiesClass;
 
diff --git a/samples/client/petstore/javascript-es6/src/model/Model200Response.js b/samples/client/petstore/javascript-es6/src/model/Model200Response.js
index df4d957df7ce..629b0f0c75a1 100644
--- a/samples/client/petstore/javascript-es6/src/model/Model200Response.js
+++ b/samples/client/petstore/javascript-es6/src/model/Model200Response.js
@@ -1,62 +1,53 @@
 /**
- * Swagger Petstore
+ * OpenAPI Petstore
  * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
  *
  * OpenAPI spec version: 1.0.0
- * Contact: apiteam@swagger.io
+ * 
  *
- * NOTE: This class is auto generated by the swagger code generator program.
- * https://github.com/swagger-api/swagger-codegen.git
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
  * Do not edit the class manually.
  *
  */
 
-
 import ApiClient from '../ApiClient';
 
-
-
-
-
 /**
-* The Model200Response model module.
-* @module model/Model200Response
-* @version 1.0.0
-*/
-export default class Model200Response {
+ * The Model200Response model module.
+ * @module model/Model200Response
+ * @version 1.0.0
+ */
+class Model200Response {
     /**
-    * Constructs a new Model200Response.
-    * Model for testing model name starting with number
-    * @alias module:model/Model200Response
-    * @class
-    */
-
-    constructor() {
-        
-
-        
-        
-
+     * Constructs a new Model200Response.
+     * Model for testing model name starting with number
+     * @alias module:model/Model200Response
+     */
+    constructor() { 
         
+        Model200Response.initialize(this);
+    }
 
-        
+    /**
+     * Initializes the fields of this object.
+     * This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins).
+     * Only for internal use.
+     */
+    static initialize(obj) { 
     }
 
     /**
-    * Constructs a Model200Response from a plain JavaScript object, optionally creating a new instance.
-    * Copies all relevant properties from data to obj if supplied or a new instance if not.
-    * @param {Object} data The plain JavaScript object bearing properties of interest.
-    * @param {module:model/Model200Response} obj Optional instance to populate.
-    * @return {module:model/Model200Response} The populated Model200Response instance.
-    */
+     * Constructs a Model200Response from a plain JavaScript object, optionally creating a new instance.
+     * Copies all relevant properties from data to obj if supplied or a new instance if not.
+     * @param {Object} data The plain JavaScript object bearing properties of interest.
+     * @param {module:model/Model200Response} obj Optional instance to populate.
+     * @return {module:model/Model200Response} The populated Model200Response instance.
+     */
     static constructFromObject(data, obj) {
         if (data) {
             obj = obj || new Model200Response();
 
-            
-            
-            
-
             if (data.hasOwnProperty('name')) {
                 obj['name'] = ApiClient.convertToType(data['name'], 'Number');
             }
@@ -67,22 +58,23 @@ export default class Model200Response {
         return obj;
     }
 
-    /**
-    * @member {Number} name
-    */
-    name = undefined;
-    /**
-    * @member {String} class
-    */
-    class = undefined;
 
+}
 
+/**
+ * @member {Number} name
+ */
+Model200Response.prototype['name'] = undefined;
 
+/**
+ * @member {String} class
+ */
+Model200Response.prototype['class'] = undefined;
 
 
 
 
 
-}
 
+export default Model200Response;
 
diff --git a/samples/client/petstore/javascript-es6/src/model/ModelReturn.js b/samples/client/petstore/javascript-es6/src/model/ModelReturn.js
index 88fd97ab85f8..9ad0c11befcf 100644
--- a/samples/client/petstore/javascript-es6/src/model/ModelReturn.js
+++ b/samples/client/petstore/javascript-es6/src/model/ModelReturn.js
@@ -1,62 +1,53 @@
 /**
- * Swagger Petstore
+ * OpenAPI Petstore
  * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
  *
  * OpenAPI spec version: 1.0.0
- * Contact: apiteam@swagger.io
+ * 
  *
- * NOTE: This class is auto generated by the swagger code generator program.
- * https://github.com/swagger-api/swagger-codegen.git
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
  * Do not edit the class manually.
  *
  */
 
-
 import ApiClient from '../ApiClient';
 
-
-
-
-
 /**
-* The ModelReturn model module.
-* @module model/ModelReturn
-* @version 1.0.0
-*/
-export default class ModelReturn {
+ * The ModelReturn model module.
+ * @module model/ModelReturn
+ * @version 1.0.0
+ */
+class ModelReturn {
     /**
-    * Constructs a new ModelReturn.
-    * Model for testing reserved words
-    * @alias module:model/ModelReturn
-    * @class
-    */
-
-    constructor() {
-        
-
-        
-        
-
+     * Constructs a new ModelReturn.
+     * Model for testing reserved words
+     * @alias module:model/ModelReturn
+     */
+    constructor() { 
         
+        ModelReturn.initialize(this);
+    }
 
-        
+    /**
+     * Initializes the fields of this object.
+     * This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins).
+     * Only for internal use.
+     */
+    static initialize(obj) { 
     }
 
     /**
-    * Constructs a ModelReturn from a plain JavaScript object, optionally creating a new instance.
-    * Copies all relevant properties from data to obj if supplied or a new instance if not.
-    * @param {Object} data The plain JavaScript object bearing properties of interest.
-    * @param {module:model/ModelReturn} obj Optional instance to populate.
-    * @return {module:model/ModelReturn} The populated ModelReturn instance.
-    */
+     * Constructs a ModelReturn from a plain JavaScript object, optionally creating a new instance.
+     * Copies all relevant properties from data to obj if supplied or a new instance if not.
+     * @param {Object} data The plain JavaScript object bearing properties of interest.
+     * @param {module:model/ModelReturn} obj Optional instance to populate.
+     * @return {module:model/ModelReturn} The populated ModelReturn instance.
+     */
     static constructFromObject(data, obj) {
         if (data) {
             obj = obj || new ModelReturn();
 
-            
-            
-            
-
             if (data.hasOwnProperty('return')) {
                 obj['return'] = ApiClient.convertToType(data['return'], 'Number');
             }
@@ -64,18 +55,18 @@ export default class ModelReturn {
         return obj;
     }
 
-    /**
-    * @member {Number} return
-    */
-    return = undefined;
-
 
+}
 
+/**
+ * @member {Number} return
+ */
+ModelReturn.prototype['return'] = undefined;
 
 
 
 
 
-}
 
+export default ModelReturn;
 
diff --git a/samples/client/petstore/javascript-es6/src/model/Name.js b/samples/client/petstore/javascript-es6/src/model/Name.js
index f355fbdd4036..63e7d52e5ff6 100644
--- a/samples/client/petstore/javascript-es6/src/model/Name.js
+++ b/samples/client/petstore/javascript-es6/src/model/Name.js
@@ -1,63 +1,55 @@
 /**
- * Swagger Petstore
+ * OpenAPI Petstore
  * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
  *
  * OpenAPI spec version: 1.0.0
- * Contact: apiteam@swagger.io
+ * 
  *
- * NOTE: This class is auto generated by the swagger code generator program.
- * https://github.com/swagger-api/swagger-codegen.git
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
  * Do not edit the class manually.
  *
  */
 
-
 import ApiClient from '../ApiClient';
 
-
-
-
-
 /**
-* The Name model module.
-* @module model/Name
-* @version 1.0.0
-*/
-export default class Name {
+ * The Name model module.
+ * @module model/Name
+ * @version 1.0.0
+ */
+class Name {
     /**
-    * Constructs a new Name.
-    * Model for testing model name same as property name
-    * @alias module:model/Name
-    * @class
-    * @param name {Number} 
-    */
-
-    constructor(name) {
-        
-
+     * Constructs a new Name.
+     * Model for testing model name same as property name
+     * @alias module:model/Name
+     * @param name {Number} 
+     */
+    constructor(name) { 
         
-        
-
-        this['name'] = name;
+        Name.initialize(this, name);
+    }
 
-        
+    /**
+     * Initializes the fields of this object.
+     * This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins).
+     * Only for internal use.
+     */
+    static initialize(obj, name) { 
+        obj['name'] = name;
     }
 
     /**
-    * Constructs a Name from a plain JavaScript object, optionally creating a new instance.
-    * Copies all relevant properties from data to obj if supplied or a new instance if not.
-    * @param {Object} data The plain JavaScript object bearing properties of interest.
-    * @param {module:model/Name} obj Optional instance to populate.
-    * @return {module:model/Name} The populated Name instance.
-    */
+     * Constructs a Name from a plain JavaScript object, optionally creating a new instance.
+     * Copies all relevant properties from data to obj if supplied or a new instance if not.
+     * @param {Object} data The plain JavaScript object bearing properties of interest.
+     * @param {module:model/Name} obj Optional instance to populate.
+     * @return {module:model/Name} The populated Name instance.
+     */
     static constructFromObject(data, obj) {
         if (data) {
             obj = obj || new Name();
 
-            
-            
-            
-
             if (data.hasOwnProperty('name')) {
                 obj['name'] = ApiClient.convertToType(data['name'], 'Number');
             }
@@ -74,30 +66,33 @@ export default class Name {
         return obj;
     }
 
-    /**
-    * @member {Number} name
-    */
-    name = undefined;
-    /**
-    * @member {Number} snake_case
-    */
-    snake_case = undefined;
-    /**
-    * @member {String} property
-    */
-    property = undefined;
-    /**
-    * @member {Number} 123Number
-    */
-    123Number = undefined;
 
+}
 
+/**
+ * @member {Number} name
+ */
+Name.prototype['name'] = undefined;
 
+/**
+ * @member {Number} snake_case
+ */
+Name.prototype['snake_case'] = undefined;
+
+/**
+ * @member {String} property
+ */
+Name.prototype['property'] = undefined;
+
+/**
+ * @member {Number} 123Number
+ */
+Name.prototype['123Number'] = undefined;
 
 
 
 
 
-}
 
+export default Name;
 
diff --git a/samples/client/petstore/javascript-es6/src/model/NumberOnly.js b/samples/client/petstore/javascript-es6/src/model/NumberOnly.js
index bee66870891b..ec5ad812b401 100644
--- a/samples/client/petstore/javascript-es6/src/model/NumberOnly.js
+++ b/samples/client/petstore/javascript-es6/src/model/NumberOnly.js
@@ -1,61 +1,52 @@
 /**
- * Swagger Petstore
+ * OpenAPI Petstore
  * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
  *
  * OpenAPI spec version: 1.0.0
- * Contact: apiteam@swagger.io
+ * 
  *
- * NOTE: This class is auto generated by the swagger code generator program.
- * https://github.com/swagger-api/swagger-codegen.git
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
  * Do not edit the class manually.
  *
  */
 
-
 import ApiClient from '../ApiClient';
 
-
-
-
-
 /**
-* The NumberOnly model module.
-* @module model/NumberOnly
-* @version 1.0.0
-*/
-export default class NumberOnly {
+ * The NumberOnly model module.
+ * @module model/NumberOnly
+ * @version 1.0.0
+ */
+class NumberOnly {
     /**
-    * Constructs a new NumberOnly.
-    * @alias module:model/NumberOnly
-    * @class
-    */
-
-    constructor() {
-        
-
-        
-        
-
+     * Constructs a new NumberOnly.
+     * @alias module:model/NumberOnly
+     */
+    constructor() { 
         
+        NumberOnly.initialize(this);
+    }
 
-        
+    /**
+     * Initializes the fields of this object.
+     * This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins).
+     * Only for internal use.
+     */
+    static initialize(obj) { 
     }
 
     /**
-    * Constructs a NumberOnly from a plain JavaScript object, optionally creating a new instance.
-    * Copies all relevant properties from data to obj if supplied or a new instance if not.
-    * @param {Object} data The plain JavaScript object bearing properties of interest.
-    * @param {module:model/NumberOnly} obj Optional instance to populate.
-    * @return {module:model/NumberOnly} The populated NumberOnly instance.
-    */
+     * Constructs a NumberOnly from a plain JavaScript object, optionally creating a new instance.
+     * Copies all relevant properties from data to obj if supplied or a new instance if not.
+     * @param {Object} data The plain JavaScript object bearing properties of interest.
+     * @param {module:model/NumberOnly} obj Optional instance to populate.
+     * @return {module:model/NumberOnly} The populated NumberOnly instance.
+     */
     static constructFromObject(data, obj) {
         if (data) {
             obj = obj || new NumberOnly();
 
-            
-            
-            
-
             if (data.hasOwnProperty('JustNumber')) {
                 obj['JustNumber'] = ApiClient.convertToType(data['JustNumber'], 'Number');
             }
@@ -63,18 +54,18 @@ export default class NumberOnly {
         return obj;
     }
 
-    /**
-    * @member {Number} JustNumber
-    */
-    JustNumber = undefined;
-
 
+}
 
+/**
+ * @member {Number} JustNumber
+ */
+NumberOnly.prototype['JustNumber'] = undefined;
 
 
 
 
 
-}
 
+export default NumberOnly;
 
diff --git a/samples/client/petstore/javascript-es6/src/model/Order.js b/samples/client/petstore/javascript-es6/src/model/Order.js
index ff704900bbce..8c07a5cd0f3f 100644
--- a/samples/client/petstore/javascript-es6/src/model/Order.js
+++ b/samples/client/petstore/javascript-es6/src/model/Order.js
@@ -1,61 +1,52 @@
 /**
- * Swagger Petstore
+ * OpenAPI Petstore
  * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
  *
  * OpenAPI spec version: 1.0.0
- * Contact: apiteam@swagger.io
+ * 
  *
- * NOTE: This class is auto generated by the swagger code generator program.
- * https://github.com/swagger-api/swagger-codegen.git
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
  * Do not edit the class manually.
  *
  */
 
-
 import ApiClient from '../ApiClient';
 
-
-
-
-
 /**
-* The Order model module.
-* @module model/Order
-* @version 1.0.0
-*/
-export default class Order {
+ * The Order model module.
+ * @module model/Order
+ * @version 1.0.0
+ */
+class Order {
     /**
-    * Constructs a new Order.
-    * @alias module:model/Order
-    * @class
-    */
-
-    constructor() {
-        
-
-        
-        
-
+     * Constructs a new Order.
+     * @alias module:model/Order
+     */
+    constructor() { 
         
+        Order.initialize(this);
+    }
 
-        
+    /**
+     * Initializes the fields of this object.
+     * This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins).
+     * Only for internal use.
+     */
+    static initialize(obj) { 
     }
 
     /**
-    * Constructs a Order from a plain JavaScript object, optionally creating a new instance.
-    * Copies all relevant properties from data to obj if supplied or a new instance if not.
-    * @param {Object} data The plain JavaScript object bearing properties of interest.
-    * @param {module:model/Order} obj Optional instance to populate.
-    * @return {module:model/Order} The populated Order instance.
-    */
+     * Constructs a Order from a plain JavaScript object, optionally creating a new instance.
+     * Copies all relevant properties from data to obj if supplied or a new instance if not.
+     * @param {Object} data The plain JavaScript object bearing properties of interest.
+     * @param {module:model/Order} obj Optional instance to populate.
+     * @return {module:model/Order} The populated Order instance.
+     */
     static constructFromObject(data, obj) {
         if (data) {
             obj = obj || new Order();
 
-            
-            
-            
-
             if (data.hasOwnProperty('id')) {
                 obj['id'] = ApiClient.convertToType(data['id'], 'Number');
             }
@@ -78,66 +69,72 @@ export default class Order {
         return obj;
     }
 
-    /**
-    * @member {Number} id
-    */
-    id = undefined;
-    /**
-    * @member {Number} petId
-    */
-    petId = undefined;
-    /**
-    * @member {Number} quantity
-    */
-    quantity = undefined;
-    /**
-    * @member {Date} shipDate
-    */
-    shipDate = undefined;
-    /**
-    * Order Status
-    * @member {module:model/Order.StatusEnum} status
-    */
-    status = undefined;
-    /**
-    * @member {Boolean} complete
-    * @default false
-    */
-    complete = false;
+
+}
+
+/**
+ * @member {Number} id
+ */
+Order.prototype['id'] = undefined;
+
+/**
+ * @member {Number} petId
+ */
+Order.prototype['petId'] = undefined;
+
+/**
+ * @member {Number} quantity
+ */
+Order.prototype['quantity'] = undefined;
+
+/**
+ * @member {Date} shipDate
+ */
+Order.prototype['shipDate'] = undefined;
+
+/**
+ * Order Status
+ * @member {module:model/Order.StatusEnum} status
+ */
+Order.prototype['status'] = undefined;
+
+/**
+ * @member {Boolean} complete
+ * @default false
+ */
+Order.prototype['complete'] = false;
 
 
 
 
 
+/**
+ * Allowed values for the status property.
+ * @enum {String}
+ * @readonly
+ */
+Order['StatusEnum'] = {
+
+    /**
+     * value: "placed"
+     * @const
+     */
+    "placed": "placed",
 
     /**
-    * Allowed values for the status property.
-    * @enum {String}
-    * @readonly
-    */
-    static StatusEnum = {
-    
-        /**
-         * value: "placed"
-         * @const
-         */
-        "placed": "placed",
-    
-        /**
-         * value: "approved"
-         * @const
-         */
-        "approved": "approved",
-    
-        /**
-         * value: "delivered"
-         * @const
-         */
-        "delivered": "delivered"    
-    };
+     * value: "approved"
+     * @const
+     */
+    "approved": "approved",
 
+    /**
+     * value: "delivered"
+     * @const
+     */
+    "delivered": "delivered"
+};
 
 
-}
 
+export default Order;
 
diff --git a/samples/client/petstore/javascript-es6/src/model/OuterBoolean.js b/samples/client/petstore/javascript-es6/src/model/OuterBoolean.js
deleted file mode 100644
index 592a0b698647..000000000000
--- a/samples/client/petstore/javascript-es6/src/model/OuterBoolean.js
+++ /dev/null
@@ -1,73 +0,0 @@
-/**
- * Swagger Petstore
- * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
- *
- * OpenAPI spec version: 1.0.0
- * Contact: apiteam@swagger.io
- *
- * NOTE: This class is auto generated by the swagger code generator program.
- * https://github.com/swagger-api/swagger-codegen.git
- * Do not edit the class manually.
- *
- */
-
-
-import ApiClient from '../ApiClient';
-
-
-
-
-
-/**
-* The OuterBoolean model module.
-* @module model/OuterBoolean
-* @version 1.0.0
-*/
-export default class OuterBoolean {
-    /**
-    * Constructs a new OuterBoolean.
-    * @alias module:model/OuterBoolean
-    * @class
-    */
-
-    constructor() {
-        
-
-        
-        
-
-        
-
-        
-    }
-
-    /**
-    * Constructs a OuterBoolean from a plain JavaScript object, optionally creating a new instance.
-    * Copies all relevant properties from data to obj if supplied or a new instance if not.
-    * @param {Object} data The plain JavaScript object bearing properties of interest.
-    * @param {module:model/OuterBoolean} obj Optional instance to populate.
-    * @return {module:model/OuterBoolean} The populated OuterBoolean instance.
-    */
-    static constructFromObject(data, obj) {
-        if (data) {
-            obj = obj || new OuterBoolean();
-
-            
-            
-            
-
-        }
-        return obj;
-    }
-
-
-
-
-
-
-
-
-
-}
-
-
diff --git a/samples/client/petstore/javascript-es6/src/model/OuterComposite.js b/samples/client/petstore/javascript-es6/src/model/OuterComposite.js
index 327e303467a0..8b61cb8f654b 100644
--- a/samples/client/petstore/javascript-es6/src/model/OuterComposite.js
+++ b/samples/client/petstore/javascript-es6/src/model/OuterComposite.js
@@ -1,97 +1,87 @@
 /**
- * Swagger Petstore
+ * OpenAPI Petstore
  * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
  *
  * OpenAPI spec version: 1.0.0
- * Contact: apiteam@swagger.io
+ * 
  *
- * NOTE: This class is auto generated by the swagger code generator program.
- * https://github.com/swagger-api/swagger-codegen.git
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
  * Do not edit the class manually.
  *
  */
 
-
 import ApiClient from '../ApiClient';
-import OuterBoolean from './OuterBoolean';
-import OuterNumber from './OuterNumber';
-import OuterString from './OuterString';
-
-
-
-
 
 /**
-* The OuterComposite model module.
-* @module model/OuterComposite
-* @version 1.0.0
-*/
-export default class OuterComposite {
+ * The OuterComposite model module.
+ * @module model/OuterComposite
+ * @version 1.0.0
+ */
+class OuterComposite {
     /**
-    * Constructs a new OuterComposite.
-    * @alias module:model/OuterComposite
-    * @class
-    */
-
-    constructor() {
-        
-
-        
-        
-
+     * Constructs a new OuterComposite.
+     * @alias module:model/OuterComposite
+     */
+    constructor() { 
         
+        OuterComposite.initialize(this);
+    }
 
-        
+    /**
+     * Initializes the fields of this object.
+     * This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins).
+     * Only for internal use.
+     */
+    static initialize(obj) { 
     }
 
     /**
-    * Constructs a OuterComposite from a plain JavaScript object, optionally creating a new instance.
-    * Copies all relevant properties from data to obj if supplied or a new instance if not.
-    * @param {Object} data The plain JavaScript object bearing properties of interest.
-    * @param {module:model/OuterComposite} obj Optional instance to populate.
-    * @return {module:model/OuterComposite} The populated OuterComposite instance.
-    */
+     * Constructs a OuterComposite from a plain JavaScript object, optionally creating a new instance.
+     * Copies all relevant properties from data to obj if supplied or a new instance if not.
+     * @param {Object} data The plain JavaScript object bearing properties of interest.
+     * @param {module:model/OuterComposite} obj Optional instance to populate.
+     * @return {module:model/OuterComposite} The populated OuterComposite instance.
+     */
     static constructFromObject(data, obj) {
         if (data) {
             obj = obj || new OuterComposite();
 
-            
-            
-            
-
             if (data.hasOwnProperty('my_number')) {
-                obj['my_number'] = OuterNumber.constructFromObject(data['my_number']);
+                obj['my_number'] = 'Number'.constructFromObject(data['my_number']);
             }
             if (data.hasOwnProperty('my_string')) {
-                obj['my_string'] = OuterString.constructFromObject(data['my_string']);
+                obj['my_string'] = 'String'.constructFromObject(data['my_string']);
             }
             if (data.hasOwnProperty('my_boolean')) {
-                obj['my_boolean'] = OuterBoolean.constructFromObject(data['my_boolean']);
+                obj['my_boolean'] = 'Boolean'.constructFromObject(data['my_boolean']);
             }
         }
         return obj;
     }
 
-    /**
-    * @member {module:model/OuterNumber} my_number
-    */
-    my_number = undefined;
-    /**
-    * @member {module:model/OuterString} my_string
-    */
-    my_string = undefined;
-    /**
-    * @member {module:model/OuterBoolean} my_boolean
-    */
-    my_boolean = undefined;
 
+}
+
+/**
+ * @member {Number} my_number
+ */
+OuterComposite.prototype['my_number'] = undefined;
 
+/**
+ * @member {String} my_string
+ */
+OuterComposite.prototype['my_string'] = undefined;
 
+/**
+ * @member {Boolean} my_boolean
+ */
+OuterComposite.prototype['my_boolean'] = undefined;
 
 
 
 
 
-}
 
+export default OuterComposite;
 
diff --git a/samples/client/petstore/javascript-es6/src/model/OuterEnum.js b/samples/client/petstore/javascript-es6/src/model/OuterEnum.js
index bf264fd8f641..0404b03b0611 100644
--- a/samples/client/petstore/javascript-es6/src/model/OuterEnum.js
+++ b/samples/client/petstore/javascript-es6/src/model/OuterEnum.js
@@ -1,20 +1,17 @@
 /**
- * Swagger Petstore
+ * OpenAPI Petstore
  * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
  *
  * OpenAPI spec version: 1.0.0
- * Contact: apiteam@swagger.io
+ * 
  *
- * NOTE: This class is auto generated by the swagger code generator program.
- * https://github.com/swagger-api/swagger-codegen.git
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
  * Do not edit the class manually.
  *
  */
 
-
 import ApiClient from '../ApiClient';
-
-
 /**
 * Enum class OuterEnum.
 * @enum {}
@@ -26,21 +23,21 @@ export default class OuterEnum {
          * value: "placed"
          * @const
          */
-        placed = "placed";
+        "placed" = "placed";
 
     
         /**
          * value: "approved"
          * @const
          */
-        approved = "approved";
+        "approved" = "approved";
 
     
         /**
          * value: "delivered"
          * @const
          */
-        delivered = "delivered";
+        "delivered" = "delivered";
 
     
 
@@ -54,4 +51,3 @@ export default class OuterEnum {
     }
 }
 
-
diff --git a/samples/client/petstore/javascript-es6/src/model/OuterNumber.js b/samples/client/petstore/javascript-es6/src/model/OuterNumber.js
deleted file mode 100644
index ff65b1588b77..000000000000
--- a/samples/client/petstore/javascript-es6/src/model/OuterNumber.js
+++ /dev/null
@@ -1,73 +0,0 @@
-/**
- * Swagger Petstore
- * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
- *
- * OpenAPI spec version: 1.0.0
- * Contact: apiteam@swagger.io
- *
- * NOTE: This class is auto generated by the swagger code generator program.
- * https://github.com/swagger-api/swagger-codegen.git
- * Do not edit the class manually.
- *
- */
-
-
-import ApiClient from '../ApiClient';
-
-
-
-
-
-/**
-* The OuterNumber model module.
-* @module model/OuterNumber
-* @version 1.0.0
-*/
-export default class OuterNumber {
-    /**
-    * Constructs a new OuterNumber.
-    * @alias module:model/OuterNumber
-    * @class
-    */
-
-    constructor() {
-        
-
-        
-        
-
-        
-
-        
-    }
-
-    /**
-    * Constructs a OuterNumber from a plain JavaScript object, optionally creating a new instance.
-    * Copies all relevant properties from data to obj if supplied or a new instance if not.
-    * @param {Object} data The plain JavaScript object bearing properties of interest.
-    * @param {module:model/OuterNumber} obj Optional instance to populate.
-    * @return {module:model/OuterNumber} The populated OuterNumber instance.
-    */
-    static constructFromObject(data, obj) {
-        if (data) {
-            obj = obj || new OuterNumber();
-
-            
-            
-            
-
-        }
-        return obj;
-    }
-
-
-
-
-
-
-
-
-
-}
-
-
diff --git a/samples/client/petstore/javascript-es6/src/model/OuterString.js b/samples/client/petstore/javascript-es6/src/model/OuterString.js
deleted file mode 100644
index 6921029ede1a..000000000000
--- a/samples/client/petstore/javascript-es6/src/model/OuterString.js
+++ /dev/null
@@ -1,73 +0,0 @@
-/**
- * Swagger Petstore
- * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
- *
- * OpenAPI spec version: 1.0.0
- * Contact: apiteam@swagger.io
- *
- * NOTE: This class is auto generated by the swagger code generator program.
- * https://github.com/swagger-api/swagger-codegen.git
- * Do not edit the class manually.
- *
- */
-
-
-import ApiClient from '../ApiClient';
-
-
-
-
-
-/**
-* The OuterString model module.
-* @module model/OuterString
-* @version 1.0.0
-*/
-export default class OuterString {
-    /**
-    * Constructs a new OuterString.
-    * @alias module:model/OuterString
-    * @class
-    */
-
-    constructor() {
-        
-
-        
-        
-
-        
-
-        
-    }
-
-    /**
-    * Constructs a OuterString from a plain JavaScript object, optionally creating a new instance.
-    * Copies all relevant properties from data to obj if supplied or a new instance if not.
-    * @param {Object} data The plain JavaScript object bearing properties of interest.
-    * @param {module:model/OuterString} obj Optional instance to populate.
-    * @return {module:model/OuterString} The populated OuterString instance.
-    */
-    static constructFromObject(data, obj) {
-        if (data) {
-            obj = obj || new OuterString();
-
-            
-            
-            
-
-        }
-        return obj;
-    }
-
-
-
-
-
-
-
-
-
-}
-
-
diff --git a/samples/client/petstore/javascript-es6/src/model/Pet.js b/samples/client/petstore/javascript-es6/src/model/Pet.js
index bb8491520279..37b987fdf81a 100644
--- a/samples/client/petstore/javascript-es6/src/model/Pet.js
+++ b/samples/client/petstore/javascript-es6/src/model/Pet.js
@@ -1,65 +1,58 @@
 /**
- * Swagger Petstore
+ * OpenAPI Petstore
  * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
  *
  * OpenAPI spec version: 1.0.0
- * Contact: apiteam@swagger.io
+ * 
  *
- * NOTE: This class is auto generated by the swagger code generator program.
- * https://github.com/swagger-api/swagger-codegen.git
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
  * Do not edit the class manually.
  *
  */
 
-
 import ApiClient from '../ApiClient';
 import Category from './Category';
 import Tag from './Tag';
 
-
-
-
-
 /**
-* The Pet model module.
-* @module model/Pet
-* @version 1.0.0
-*/
-export default class Pet {
+ * The Pet model module.
+ * @module model/Pet
+ * @version 1.0.0
+ */
+class Pet {
     /**
-    * Constructs a new Pet.
-    * @alias module:model/Pet
-    * @class
-    * @param name {String} 
-    * @param photoUrls {Array.} 
-    */
-
-    constructor(name, photoUrls) {
+     * Constructs a new Pet.
+     * @alias module:model/Pet
+     * @param name {String} 
+     * @param photoUrls {Array.} 
+     */
+    constructor(name, photoUrls) { 
         
+        Pet.initialize(this, name, photoUrls);
+    }
 
-        
-        
-
-        this['name'] = name;this['photoUrls'] = photoUrls;
-
-        
+    /**
+     * Initializes the fields of this object.
+     * This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins).
+     * Only for internal use.
+     */
+    static initialize(obj, name, photoUrls) { 
+        obj['name'] = name;
+        obj['photoUrls'] = photoUrls;
     }
 
     /**
-    * Constructs a Pet from a plain JavaScript object, optionally creating a new instance.
-    * Copies all relevant properties from data to obj if supplied or a new instance if not.
-    * @param {Object} data The plain JavaScript object bearing properties of interest.
-    * @param {module:model/Pet} obj Optional instance to populate.
-    * @return {module:model/Pet} The populated Pet instance.
-    */
+     * Constructs a Pet from a plain JavaScript object, optionally creating a new instance.
+     * Copies all relevant properties from data to obj if supplied or a new instance if not.
+     * @param {Object} data The plain JavaScript object bearing properties of interest.
+     * @param {module:model/Pet} obj Optional instance to populate.
+     * @return {module:model/Pet} The populated Pet instance.
+     */
     static constructFromObject(data, obj) {
         if (data) {
             obj = obj || new Pet();
 
-            
-            
-            
-
             if (data.hasOwnProperty('id')) {
                 obj['id'] = ApiClient.convertToType(data['id'], 'Number');
             }
@@ -82,65 +75,71 @@ export default class Pet {
         return obj;
     }
 
-    /**
-    * @member {Number} id
-    */
-    id = undefined;
-    /**
-    * @member {module:model/Category} category
-    */
-    category = undefined;
-    /**
-    * @member {String} name
-    */
-    name = undefined;
-    /**
-    * @member {Array.} photoUrls
-    */
-    photoUrls = undefined;
-    /**
-    * @member {Array.} tags
-    */
-    tags = undefined;
-    /**
-    * pet status in the store
-    * @member {module:model/Pet.StatusEnum} status
-    */
-    status = undefined;
 
+}
+
+/**
+ * @member {Number} id
+ */
+Pet.prototype['id'] = undefined;
+
+/**
+ * @member {module:model/Category} category
+ */
+Pet.prototype['category'] = undefined;
 
+/**
+ * @member {String} name
+ */
+Pet.prototype['name'] = undefined;
 
+/**
+ * @member {Array.} photoUrls
+ */
+Pet.prototype['photoUrls'] = undefined;
 
+/**
+ * @member {Array.} tags
+ */
+Pet.prototype['tags'] = undefined;
 
+/**
+ * pet status in the store
+ * @member {module:model/Pet.StatusEnum} status
+ */
+Pet.prototype['status'] = undefined;
+
+
+
+
+
+/**
+ * Allowed values for the status property.
+ * @enum {String}
+ * @readonly
+ */
+Pet['StatusEnum'] = {
 
     /**
-    * Allowed values for the status property.
-    * @enum {String}
-    * @readonly
-    */
-    static StatusEnum = {
-    
-        /**
-         * value: "available"
-         * @const
-         */
-        "available": "available",
-    
-        /**
-         * value: "pending"
-         * @const
-         */
-        "pending": "pending",
-    
-        /**
-         * value: "sold"
-         * @const
-         */
-        "sold": "sold"    
-    };
+     * value: "available"
+     * @const
+     */
+    "available": "available",
 
+    /**
+     * value: "pending"
+     * @const
+     */
+    "pending": "pending",
+
+    /**
+     * value: "sold"
+     * @const
+     */
+    "sold": "sold"
+};
 
 
-}
 
+export default Pet;
 
diff --git a/samples/client/petstore/javascript-es6/src/model/ReadOnlyFirst.js b/samples/client/petstore/javascript-es6/src/model/ReadOnlyFirst.js
index 143b34f3eb11..289277c191d6 100644
--- a/samples/client/petstore/javascript-es6/src/model/ReadOnlyFirst.js
+++ b/samples/client/petstore/javascript-es6/src/model/ReadOnlyFirst.js
@@ -1,61 +1,52 @@
 /**
- * Swagger Petstore
+ * OpenAPI Petstore
  * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
  *
  * OpenAPI spec version: 1.0.0
- * Contact: apiteam@swagger.io
+ * 
  *
- * NOTE: This class is auto generated by the swagger code generator program.
- * https://github.com/swagger-api/swagger-codegen.git
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
  * Do not edit the class manually.
  *
  */
 
-
 import ApiClient from '../ApiClient';
 
-
-
-
-
 /**
-* The ReadOnlyFirst model module.
-* @module model/ReadOnlyFirst
-* @version 1.0.0
-*/
-export default class ReadOnlyFirst {
+ * The ReadOnlyFirst model module.
+ * @module model/ReadOnlyFirst
+ * @version 1.0.0
+ */
+class ReadOnlyFirst {
     /**
-    * Constructs a new ReadOnlyFirst.
-    * @alias module:model/ReadOnlyFirst
-    * @class
-    */
-
-    constructor() {
-        
-
-        
-        
-
+     * Constructs a new ReadOnlyFirst.
+     * @alias module:model/ReadOnlyFirst
+     */
+    constructor() { 
         
+        ReadOnlyFirst.initialize(this);
+    }
 
-        
+    /**
+     * Initializes the fields of this object.
+     * This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins).
+     * Only for internal use.
+     */
+    static initialize(obj) { 
     }
 
     /**
-    * Constructs a ReadOnlyFirst from a plain JavaScript object, optionally creating a new instance.
-    * Copies all relevant properties from data to obj if supplied or a new instance if not.
-    * @param {Object} data The plain JavaScript object bearing properties of interest.
-    * @param {module:model/ReadOnlyFirst} obj Optional instance to populate.
-    * @return {module:model/ReadOnlyFirst} The populated ReadOnlyFirst instance.
-    */
+     * Constructs a ReadOnlyFirst from a plain JavaScript object, optionally creating a new instance.
+     * Copies all relevant properties from data to obj if supplied or a new instance if not.
+     * @param {Object} data The plain JavaScript object bearing properties of interest.
+     * @param {module:model/ReadOnlyFirst} obj Optional instance to populate.
+     * @return {module:model/ReadOnlyFirst} The populated ReadOnlyFirst instance.
+     */
     static constructFromObject(data, obj) {
         if (data) {
             obj = obj || new ReadOnlyFirst();
 
-            
-            
-            
-
             if (data.hasOwnProperty('bar')) {
                 obj['bar'] = ApiClient.convertToType(data['bar'], 'String');
             }
@@ -66,22 +57,23 @@ export default class ReadOnlyFirst {
         return obj;
     }
 
-    /**
-    * @member {String} bar
-    */
-    bar = undefined;
-    /**
-    * @member {String} baz
-    */
-    baz = undefined;
 
+}
 
+/**
+ * @member {String} bar
+ */
+ReadOnlyFirst.prototype['bar'] = undefined;
 
+/**
+ * @member {String} baz
+ */
+ReadOnlyFirst.prototype['baz'] = undefined;
 
 
 
 
 
-}
 
+export default ReadOnlyFirst;
 
diff --git a/samples/client/petstore/javascript-es6/src/model/SpecialModelName.js b/samples/client/petstore/javascript-es6/src/model/SpecialModelName.js
index 4e0dd379b198..be9f36a855f5 100644
--- a/samples/client/petstore/javascript-es6/src/model/SpecialModelName.js
+++ b/samples/client/petstore/javascript-es6/src/model/SpecialModelName.js
@@ -1,61 +1,52 @@
 /**
- * Swagger Petstore
+ * OpenAPI Petstore
  * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
  *
  * OpenAPI spec version: 1.0.0
- * Contact: apiteam@swagger.io
+ * 
  *
- * NOTE: This class is auto generated by the swagger code generator program.
- * https://github.com/swagger-api/swagger-codegen.git
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
  * Do not edit the class manually.
  *
  */
 
-
 import ApiClient from '../ApiClient';
 
-
-
-
-
 /**
-* The SpecialModelName model module.
-* @module model/SpecialModelName
-* @version 1.0.0
-*/
-export default class SpecialModelName {
+ * The SpecialModelName model module.
+ * @module model/SpecialModelName
+ * @version 1.0.0
+ */
+class SpecialModelName {
     /**
-    * Constructs a new SpecialModelName.
-    * @alias module:model/SpecialModelName
-    * @class
-    */
-
-    constructor() {
-        
-
-        
-        
-
+     * Constructs a new SpecialModelName.
+     * @alias module:model/SpecialModelName
+     */
+    constructor() { 
         
+        SpecialModelName.initialize(this);
+    }
 
-        
+    /**
+     * Initializes the fields of this object.
+     * This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins).
+     * Only for internal use.
+     */
+    static initialize(obj) { 
     }
 
     /**
-    * Constructs a SpecialModelName from a plain JavaScript object, optionally creating a new instance.
-    * Copies all relevant properties from data to obj if supplied or a new instance if not.
-    * @param {Object} data The plain JavaScript object bearing properties of interest.
-    * @param {module:model/SpecialModelName} obj Optional instance to populate.
-    * @return {module:model/SpecialModelName} The populated SpecialModelName instance.
-    */
+     * Constructs a SpecialModelName from a plain JavaScript object, optionally creating a new instance.
+     * Copies all relevant properties from data to obj if supplied or a new instance if not.
+     * @param {Object} data The plain JavaScript object bearing properties of interest.
+     * @param {module:model/SpecialModelName} obj Optional instance to populate.
+     * @return {module:model/SpecialModelName} The populated SpecialModelName instance.
+     */
     static constructFromObject(data, obj) {
         if (data) {
             obj = obj || new SpecialModelName();
 
-            
-            
-            
-
             if (data.hasOwnProperty('$special[property.name]')) {
                 obj['$special[property.name]'] = ApiClient.convertToType(data['$special[property.name]'], 'Number');
             }
@@ -63,18 +54,18 @@ export default class SpecialModelName {
         return obj;
     }
 
-    /**
-    * @member {Number} $special[property.name]
-    */
-    $special[property.name] = undefined;
-
 
+}
 
+/**
+ * @member {Number} $special[property.name]
+ */
+SpecialModelName.prototype['$special[property.name]'] = undefined;
 
 
 
 
 
-}
 
+export default SpecialModelName;
 
diff --git a/samples/client/petstore/javascript-es6/src/model/Tag.js b/samples/client/petstore/javascript-es6/src/model/Tag.js
index 759b3fa04e3c..0d39a36833ad 100644
--- a/samples/client/petstore/javascript-es6/src/model/Tag.js
+++ b/samples/client/petstore/javascript-es6/src/model/Tag.js
@@ -1,61 +1,52 @@
 /**
- * Swagger Petstore
+ * OpenAPI Petstore
  * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
  *
  * OpenAPI spec version: 1.0.0
- * Contact: apiteam@swagger.io
+ * 
  *
- * NOTE: This class is auto generated by the swagger code generator program.
- * https://github.com/swagger-api/swagger-codegen.git
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
  * Do not edit the class manually.
  *
  */
 
-
 import ApiClient from '../ApiClient';
 
-
-
-
-
 /**
-* The Tag model module.
-* @module model/Tag
-* @version 1.0.0
-*/
-export default class Tag {
+ * The Tag model module.
+ * @module model/Tag
+ * @version 1.0.0
+ */
+class Tag {
     /**
-    * Constructs a new Tag.
-    * @alias module:model/Tag
-    * @class
-    */
-
-    constructor() {
-        
-
-        
-        
-
+     * Constructs a new Tag.
+     * @alias module:model/Tag
+     */
+    constructor() { 
         
+        Tag.initialize(this);
+    }
 
-        
+    /**
+     * Initializes the fields of this object.
+     * This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins).
+     * Only for internal use.
+     */
+    static initialize(obj) { 
     }
 
     /**
-    * Constructs a Tag from a plain JavaScript object, optionally creating a new instance.
-    * Copies all relevant properties from data to obj if supplied or a new instance if not.
-    * @param {Object} data The plain JavaScript object bearing properties of interest.
-    * @param {module:model/Tag} obj Optional instance to populate.
-    * @return {module:model/Tag} The populated Tag instance.
-    */
+     * Constructs a Tag from a plain JavaScript object, optionally creating a new instance.
+     * Copies all relevant properties from data to obj if supplied or a new instance if not.
+     * @param {Object} data The plain JavaScript object bearing properties of interest.
+     * @param {module:model/Tag} obj Optional instance to populate.
+     * @return {module:model/Tag} The populated Tag instance.
+     */
     static constructFromObject(data, obj) {
         if (data) {
             obj = obj || new Tag();
 
-            
-            
-            
-
             if (data.hasOwnProperty('id')) {
                 obj['id'] = ApiClient.convertToType(data['id'], 'Number');
             }
@@ -66,22 +57,23 @@ export default class Tag {
         return obj;
     }
 
-    /**
-    * @member {Number} id
-    */
-    id = undefined;
-    /**
-    * @member {String} name
-    */
-    name = undefined;
 
+}
 
+/**
+ * @member {Number} id
+ */
+Tag.prototype['id'] = undefined;
 
+/**
+ * @member {String} name
+ */
+Tag.prototype['name'] = undefined;
 
 
 
 
 
-}
 
+export default Tag;
 
diff --git a/samples/client/petstore/javascript-es6/src/model/User.js b/samples/client/petstore/javascript-es6/src/model/User.js
index 36311e759387..7f8e2848e18f 100644
--- a/samples/client/petstore/javascript-es6/src/model/User.js
+++ b/samples/client/petstore/javascript-es6/src/model/User.js
@@ -1,61 +1,52 @@
 /**
- * Swagger Petstore
+ * OpenAPI Petstore
  * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
  *
  * OpenAPI spec version: 1.0.0
- * Contact: apiteam@swagger.io
+ * 
  *
- * NOTE: This class is auto generated by the swagger code generator program.
- * https://github.com/swagger-api/swagger-codegen.git
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
  * Do not edit the class manually.
  *
  */
 
-
 import ApiClient from '../ApiClient';
 
-
-
-
-
 /**
-* The User model module.
-* @module model/User
-* @version 1.0.0
-*/
-export default class User {
+ * The User model module.
+ * @module model/User
+ * @version 1.0.0
+ */
+class User {
     /**
-    * Constructs a new User.
-    * @alias module:model/User
-    * @class
-    */
-
-    constructor() {
-        
-
-        
-        
-
+     * Constructs a new User.
+     * @alias module:model/User
+     */
+    constructor() { 
         
+        User.initialize(this);
+    }
 
-        
+    /**
+     * Initializes the fields of this object.
+     * This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins).
+     * Only for internal use.
+     */
+    static initialize(obj) { 
     }
 
     /**
-    * Constructs a User from a plain JavaScript object, optionally creating a new instance.
-    * Copies all relevant properties from data to obj if supplied or a new instance if not.
-    * @param {Object} data The plain JavaScript object bearing properties of interest.
-    * @param {module:model/User} obj Optional instance to populate.
-    * @return {module:model/User} The populated User instance.
-    */
+     * Constructs a User from a plain JavaScript object, optionally creating a new instance.
+     * Copies all relevant properties from data to obj if supplied or a new instance if not.
+     * @param {Object} data The plain JavaScript object bearing properties of interest.
+     * @param {module:model/User} obj Optional instance to populate.
+     * @return {module:model/User} The populated User instance.
+     */
     static constructFromObject(data, obj) {
         if (data) {
             obj = obj || new User();
 
-            
-            
-            
-
             if (data.hasOwnProperty('id')) {
                 obj['id'] = ApiClient.convertToType(data['id'], 'Number');
             }
@@ -84,47 +75,54 @@ export default class User {
         return obj;
     }
 
-    /**
-    * @member {Number} id
-    */
-    id = undefined;
-    /**
-    * @member {String} username
-    */
-    username = undefined;
-    /**
-    * @member {String} firstName
-    */
-    firstName = undefined;
-    /**
-    * @member {String} lastName
-    */
-    lastName = undefined;
-    /**
-    * @member {String} email
-    */
-    email = undefined;
-    /**
-    * @member {String} password
-    */
-    password = undefined;
-    /**
-    * @member {String} phone
-    */
-    phone = undefined;
-    /**
-    * User Status
-    * @member {Number} userStatus
-    */
-    userStatus = undefined;
 
+}
+
+/**
+ * @member {Number} id
+ */
+User.prototype['id'] = undefined;
+
+/**
+ * @member {String} username
+ */
+User.prototype['username'] = undefined;
+
+/**
+ * @member {String} firstName
+ */
+User.prototype['firstName'] = undefined;
+
+/**
+ * @member {String} lastName
+ */
+User.prototype['lastName'] = undefined;
+
+/**
+ * @member {String} email
+ */
+User.prototype['email'] = undefined;
+
+/**
+ * @member {String} password
+ */
+User.prototype['password'] = undefined;
 
+/**
+ * @member {String} phone
+ */
+User.prototype['phone'] = undefined;
 
+/**
+ * User Status
+ * @member {Number} userStatus
+ */
+User.prototype['userStatus'] = undefined;
 
 
 
 
 
-}
 
+export default User;
 
diff --git a/samples/client/petstore/javascript-es6/src/test/ApiClientTest.js b/samples/client/petstore/javascript-es6/src/test/ApiClientTest.js
new file mode 100644
index 000000000000..5e98b685a911
--- /dev/null
+++ b/samples/client/petstore/javascript-es6/src/test/ApiClientTest.js
@@ -0,0 +1,393 @@
+if (typeof module === 'object' && module.exports) {
+  var expect = require('expect.js');
+  var SwaggerPetstore = require('../src/index');
+  var sinon = require('sinon');
+}
+
+var apiClient = SwaggerPetstore.ApiClient.instance;
+
+describe('ApiClient', function() {
+  describe('defaults', function() {
+    it('should have correct default values with the default API client', function() {
+      expect(apiClient).to.be.ok();
+      expect(apiClient.basePath).to.be('http://petstore.swagger.io:80/v2');
+      expect(apiClient.authentications).to.eql({
+        petstore_auth: {type: 'oauth2'},
+        http_basic_test: {type: 'basic'},
+        api_key: {type: 'apiKey', 'in': 'header', name: 'api_key'},
+        api_key_query: {type: 'apiKey', 'in': 'query', name: 'api_key_query'},
+      /* comment out the following as these fake security def (testing purpose)
+       * are removed from the spec, we'll add these back after updating the 
+       * petstore server
+       *
+        test_http_basic: {type: 'basic'},
+        test_api_client_id: {
+          type: 'apiKey',
+          'in': 'header',
+          name: 'x-test_api_client_id'
+        },
+        test_api_client_secret: {
+          type: 'apiKey',
+          'in': 'header',
+          name: 'x-test_api_client_secret'
+        },
+        test_api_key_query: {
+          type: 'apiKey',
+          'in': 'query',
+          name: 'test_api_key_query'
+        },
+        test_api_key_header: {
+          type: 'apiKey',
+          'in': 'header',
+          name: 'test_api_key_header'
+        }*/
+      });
+    });
+
+    it('should have correct default values with new API client and can customize it', function() {
+      var newClient = new SwaggerPetstore.ApiClient;
+      expect(newClient.basePath).to.be('http://petstore.swagger.io:80/v2');
+      expect(newClient.buildUrl('/abc', {})).to.be('http://petstore.swagger.io:80/v2/abc');
+
+      newClient.basePath = 'http://example.com';
+      expect(newClient.basePath).to.be('http://example.com');
+      expect(newClient.buildUrl('/abc', {})).to.be('http://example.com/abc');
+    });
+  });
+
+  describe('#paramToString', function() {
+    it('should return empty string for null and undefined', function() {
+      expect(apiClient.paramToString(null)).to.be('');
+      expect(apiClient.paramToString(undefined)).to.be('');
+    });
+
+    it('should return string', function() {
+      expect(apiClient.paramToString('')).to.be('');
+      expect(apiClient.paramToString('abc')).to.be('abc');
+      expect(apiClient.paramToString(123)).to.be('123');
+    });
+  });
+
+  describe('#buildCollectionParam', function() {
+    var param;
+
+    beforeEach(function() {
+      param = ['aa', 'bb', 123];
+    });
+
+    it('works for csv', function() {
+      expect(apiClient.buildCollectionParam(param, 'csv')).to.be('aa,bb,123');
+    });
+
+    it('works for ssv', function() {
+      expect(apiClient.buildCollectionParam(param, 'ssv')).to.be('aa bb 123');
+    });
+
+    it('works for tsv', function() {
+      expect(apiClient.buildCollectionParam(param, 'tsv')).to.be('aa\tbb\t123');
+    });
+
+    it('works for pipes', function() {
+      expect(apiClient.buildCollectionParam(param, 'pipes')).to.be('aa|bb|123');
+    });
+
+    it('works for multi', function() {
+      expect(apiClient.buildCollectionParam(param, 'multi')).to.eql(['aa', 'bb', '123']);
+    });
+
+    it('fails for invalid collection format', function() {
+      expect(function() { apiClient.buildCollectionParam(param, 'INVALID'); }).to.throwError();
+    });
+  });
+
+  describe('#buildUrl', function() {
+    it('should work without path parameters in the path', function() {
+      expect(apiClient.buildUrl('/abc', {})).to
+        .be('http://petstore.swagger.io:80/v2/abc');
+      expect(apiClient.buildUrl('/abc/def?ok', {id: 123})).to
+        .be('http://petstore.swagger.io:80/v2/abc/def?ok');
+    });
+
+    it('should work with path parameters in the path', function() {
+      expect(apiClient.buildUrl('/{id}', {id: 123})).to
+        .be('http://petstore.swagger.io:80/v2/123');
+      expect(apiClient.buildUrl('/abc/{id}/{name}?ok', {id: 456, name: 'a b'})).to.
+        be('http://petstore.swagger.io:80/v2/abc/456/a%20b?ok');
+    });
+  });
+
+  describe('#isJsonMime', function() {
+    it('should return true for JSON MIME', function() {
+      expect(apiClient.isJsonMime('application/json')).to.be(true);
+      expect(apiClient.isJsonMime('application/json; charset=UTF8')).to.be(true);
+      expect(apiClient.isJsonMime('APPLICATION/JSON')).to.be(true);
+    });
+
+    it('should return false for non-JSON MIME', function() {
+      expect(apiClient.isJsonMime('')).to.be(false);
+      expect(apiClient.isJsonMime('text/plain')).to.be(false);
+      expect(apiClient.isJsonMime('application/xml')).to.be(false);
+      expect(apiClient.isJsonMime('application/jsonp')).to.be(false);
+    });
+  });
+
+  describe('#applyAuthToRequest', function() {
+    var req, newClient;
+
+    beforeEach(function() {
+      req = {
+        auth: function() {},
+        set: function() {},
+        query: function() {}
+      };
+      sinon.stub(req, 'auth');
+      sinon.stub(req, 'set');
+      sinon.stub(req, 'query');
+      newClient = new SwaggerPetstore.ApiClient();
+    });
+
+    describe('basic', function() {
+      var authName = 'testBasicAuth';
+      var authNames = [authName];
+      var auth;
+
+      beforeEach(function() {
+        newClient.authentications[authName] = {type: 'basic'};
+        auth = newClient.authentications[authName];
+      });
+
+      it('sets auth header with username and password set', function() {
+        auth.username = 'user';
+        auth.password = 'pass';
+        newClient.applyAuthToRequest(req, authNames);
+        sinon.assert.calledOnce(req.auth);
+        // 'dXNlcjpwYXNz' is base64-encoded string of 'user:pass'
+        sinon.assert.calledWithMatch(req.auth, 'user', 'pass');
+        sinon.assert.notCalled(req.set);
+        sinon.assert.notCalled(req.query);
+      });
+
+      it('sets header with only username set', function() {
+        auth.username = 'user';
+        newClient.applyAuthToRequest(req, authNames);
+        sinon.assert.calledOnce(req.auth);
+        // 'dXNlcjo=' is base64-encoded string of 'user:'
+        sinon.assert.calledWithMatch(req.auth, 'user', '');
+        sinon.assert.notCalled(req.set);
+        sinon.assert.notCalled(req.query);
+      });
+
+      it('sets header with only password set', function() {
+        auth.password = 'pass';
+        newClient.applyAuthToRequest(req, authNames);
+        sinon.assert.calledOnce(req.auth);
+        // 'OnBhc3M=' is base64-encoded string of ':pass'
+        sinon.assert.calledWithMatch(req.auth, '', 'pass');
+        sinon.assert.notCalled(req.set);
+        sinon.assert.notCalled(req.query);
+      });
+
+      it('does not set header when username and password are not set', function() {
+        newClient.applyAuthToRequest(req, authNames);
+        sinon.assert.notCalled(req.auth);
+        sinon.assert.notCalled(req.set);
+        sinon.assert.notCalled(req.query);
+      });
+    });
+
+    describe('apiKey', function() {
+      var authName = 'testApiKey';
+      var authNames = [authName];
+      var auth;
+
+      beforeEach(function() {
+        newClient.authentications[authName] = {type: 'apiKey', name: 'api_key'};
+        auth = newClient.authentications[authName];
+      });
+
+      it('sets api key in header', function() {
+        auth.in = 'header';
+        auth.apiKey = 'my-api-key';
+        newClient.applyAuthToRequest(req, authNames);
+        sinon.assert.calledOnce(req.set);
+        sinon.assert.calledWithMatch(req.set, {'api_key': 'my-api-key'});
+        sinon.assert.notCalled(req.auth);
+        sinon.assert.notCalled(req.query);
+      });
+
+      it('sets api key in query', function() {
+        auth.in = 'query';
+        auth.apiKey = 'my-api-key';
+        newClient.applyAuthToRequest(req, authNames);
+        sinon.assert.calledOnce(req.query);
+        sinon.assert.calledWithMatch(req.query, {'api_key': 'my-api-key'});
+        sinon.assert.notCalled(req.auth);
+        sinon.assert.notCalled(req.set);
+      });
+
+      it('sets api key in header with prefix', function() {
+        auth.in = 'header';
+        auth.apiKey = 'my-api-key';
+        auth.apiKeyPrefix = 'Key';
+        newClient.applyAuthToRequest(req, authNames);
+        sinon.assert.calledOnce(req.set);
+        sinon.assert.calledWithMatch(req.set, {'api_key': 'Key my-api-key'});
+        sinon.assert.notCalled(req.auth);
+        sinon.assert.notCalled(req.query);
+      });
+
+      it('works when api key is not set', function() {
+        auth.in = 'query';
+        auth.apiKey = null;
+        newClient.applyAuthToRequest(req, authNames);
+        sinon.assert.notCalled(req.query);
+        sinon.assert.notCalled(req.auth);
+        sinon.assert.notCalled(req.set);
+      });
+    });
+
+    describe('oauth2', function() {
+      var authName = 'testOAuth2';
+      var authNames = [authName];
+      var auth;
+
+      beforeEach(function() {
+        newClient.authentications[authName] = {type: 'oauth2'};
+        auth = newClient.authentications[authName];
+      });
+
+      it('sets access token in header', function() {
+        auth.accessToken = 'my-access-token';
+        newClient.applyAuthToRequest(req, authNames);
+        sinon.assert.calledOnce(req.set);
+        sinon.assert.calledWithMatch(req.set, {'Authorization': 'Bearer my-access-token'});
+        sinon.assert.notCalled(req.auth);
+        sinon.assert.notCalled(req.query);
+      });
+
+      it('works when access token is not set', function() {
+        auth.accessToken = null;
+        newClient.applyAuthToRequest(req, authNames);
+        sinon.assert.notCalled(req.query);
+        sinon.assert.notCalled(req.auth);
+        sinon.assert.notCalled(req.set);
+      });
+    });
+
+    describe('apiKey and oauth2', function() {
+      var apiKeyAuthName = 'testApiKey';
+      var oauth2Name = 'testOAuth2';
+      var authNames = [apiKeyAuthName, oauth2Name];
+      var apiKeyAuth, oauth2;
+
+      beforeEach(function() {
+        newClient.authentications[apiKeyAuthName] = {type: 'apiKey', name: 'api_key', 'in': 'query'};
+        newClient.authentications[oauth2Name] = {type: 'oauth2'};
+        apiKeyAuth = newClient.authentications[apiKeyAuthName];
+        oauth2 = newClient.authentications[oauth2Name];
+      });
+
+      it('works when setting both api key and access token', function() {
+        apiKeyAuth.apiKey = 'my-api-key';
+        oauth2.accessToken = 'my-access-token';
+        newClient.applyAuthToRequest(req, authNames);
+        sinon.assert.calledOnce(req.query);
+        sinon.assert.calledWithMatch(req.query, {'api_key': 'my-api-key'});
+        sinon.assert.calledOnce(req.set);
+        sinon.assert.calledWithMatch(req.set, {'Authorization': 'Bearer my-access-token'});
+        sinon.assert.notCalled(req.auth);
+      });
+
+      it('works when setting only api key', function() {
+        apiKeyAuth.apiKey = 'my-api-key';
+        oauth2.accessToken = null;
+        newClient.applyAuthToRequest(req, authNames);
+        sinon.assert.calledOnce(req.query);
+        sinon.assert.calledWithMatch(req.query, {'api_key': 'my-api-key'});
+        sinon.assert.notCalled(req.set);
+        sinon.assert.notCalled(req.auth);
+      });
+
+      it('works when neither api key nor access token is set', function() {
+        apiKeyAuth.apiKey = null;
+        oauth2.accessToken = null;
+        newClient.applyAuthToRequest(req, authNames);
+        sinon.assert.notCalled(req.query);
+        sinon.assert.notCalled(req.auth);
+        sinon.assert.notCalled(req.set);
+      });
+    });
+
+    describe('unknown type', function() {
+      var authName = 'unknown';
+      var authNames = [authName];
+
+      beforeEach(function() {
+        newClient.authentications[authName] = {type: 'UNKNOWN'};
+      });
+
+      it('throws error for unknown auth type', function() {
+        expect(function() {
+          newClient.applyAuthToRequest(req, authNames);
+        }).to.throwError();
+        sinon.assert.notCalled(req.set);
+        sinon.assert.notCalled(req.auth);
+        sinon.assert.notCalled(req.query);
+      });
+    });
+  });
+
+  /*
+  describe('#defaultHeaders', function() {
+    it('should initialize default headers to be an empty object', function() {
+      expect(apiClient.defaultHeaders).to.eql({});
+    });
+
+    it('should put default headers in request', function() {
+      var newClient = new SwaggerPetstore.ApiClient;
+      newClient.defaultHeaders['Content-Type'] = 'text/plain'
+      newClient.defaultHeaders['api_key'] = 'special-key'
+
+      var expected = {'Content-Type': 'text/plain', 'api_key': 'special-key'};
+      expect(newClient.defaultHeaders).to.eql(expected);
+      var req = makeDumbRequest(newClient);
+      req.unset('User-Agent');
+      expect(req.header).to.eql(expected);
+    });
+
+    it('should override default headers with provided header params', function() {
+      var newClient = new SwaggerPetstore.ApiClient;
+      newClient.defaultHeaders['Content-Type'] = 'text/plain'
+      newClient.defaultHeaders['api_key'] = 'special-key'
+
+      var headerParams = {'Content-Type': 'application/json', 'Authorization': 'Bearer test-token'}
+      var expected = {
+        'Content-Type': 'application/json',
+        'api_key': 'special-key',
+        'Authorization': 'Bearer test-token'
+      };
+      var req = makeDumbRequest(newClient, {headerParams: headerParams});
+      req.unset('User-Agent');
+      expect(req.header).to.eql(expected);
+    });
+  });
+*/
+
+});
+
+function makeDumbRequest(apiClient, opts) {
+  opts = opts || {};
+  var path = opts.path || '/store/inventory';
+  var httpMethod = opts.httpMethod || 'GET';
+  var pathParams = opts.pathParams || {};
+  var queryParams = opts.queryParams || {};
+  var headerParams = opts.headerParams || {};
+  var formParams = opts.formParams || {};
+  var bodyParam = opts.bodyParam;
+  var authNames = [];
+  var contentTypes = opts.contentTypes || [];
+  var accepts = opts.accepts || [];
+  var callback = opts.callback;
+  return apiClient.callApi(path, httpMethod, pathParams, queryParams,
+    headerParams, formParams, bodyParam, authNames, contentTypes, accepts);
+}
diff --git a/samples/client/petstore/javascript-es6/src/test/api/AnotherFakeApi.spec.js b/samples/client/petstore/javascript-es6/src/test/api/AnotherFakeApi.spec.js
new file mode 100644
index 000000000000..f55538a53e72
--- /dev/null
+++ b/samples/client/petstore/javascript-es6/src/test/api/AnotherFakeApi.spec.js
@@ -0,0 +1,63 @@
+/**
+ * Swagger Petstore
+ * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
+ *
+ * OpenAPI spec version: 1.0.0
+ * Contact: apiteam@swagger.io
+ *
+ * NOTE: This class is auto generated by the swagger code generator program.
+ * https://github.com/swagger-api/swagger-codegen.git
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+  if (typeof define === 'function' && define.amd) {
+    // AMD.
+    define(['expect.js', '../../src/index'], factory);
+  } else if (typeof module === 'object' && module.exports) {
+    // CommonJS-like environments that support module.exports, like Node.
+    factory(require('expect.js'), require('../../src/index'));
+  } else {
+    // Browser globals (root is window)
+    factory(root.expect, root.SwaggerPetstore);
+  }
+}(this, function(expect, SwaggerPetstore) {
+  'use strict';
+
+  var instance;
+
+  beforeEach(function() {
+    instance = new SwaggerPetstore.AnotherFakeApi();
+  });
+
+  var getProperty = function(object, getter, property) {
+    // Use getter method if present; otherwise, get the property directly.
+    if (typeof object[getter] === 'function')
+      return object[getter]();
+    else
+      return object[property];
+  }
+
+  var setProperty = function(object, setter, property, value) {
+    // Use setter method if present; otherwise, set the property directly.
+    if (typeof object[setter] === 'function')
+      object[setter](value);
+    else
+      object[property] = value;
+  }
+
+  describe('AnotherFakeApi', function() {
+    describe('testSpecialTags', function() {
+      it('should call testSpecialTags successfully', function(done) {
+        //uncomment below and update the code to test testSpecialTags
+        //instance.testSpecialTags(function(error) {
+        //  if (error) throw error;
+        //expect().to.be();
+        //});
+        done();
+      });
+    });
+  });
+
+}));
diff --git a/samples/client/petstore/javascript-es6/src/test/api/FakeApi.spec.js b/samples/client/petstore/javascript-es6/src/test/api/FakeApi.spec.js
new file mode 100644
index 000000000000..f2903d6612ca
--- /dev/null
+++ b/samples/client/petstore/javascript-es6/src/test/api/FakeApi.spec.js
@@ -0,0 +1,123 @@
+/**
+ * Swagger Petstore
+ * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
+ *
+ * OpenAPI spec version: 1.0.0
+ * Contact: apiteam@swagger.io
+ *
+ * NOTE: This class is auto generated by the swagger code generator program.
+ * https://github.com/swagger-api/swagger-codegen.git
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+  if (typeof define === 'function' && define.amd) {
+    // AMD.
+    define(['expect.js', '../../src/index'], factory);
+  } else if (typeof module === 'object' && module.exports) {
+    // CommonJS-like environments that support module.exports, like Node.
+    factory(require('expect.js'), require('../../src/index'));
+  } else {
+    // Browser globals (root is window)
+    factory(root.expect, root.SwaggerPetstore);
+  }
+}(this, function(expect, SwaggerPetstore) {
+  'use strict';
+
+  var instance;
+
+  beforeEach(function() {
+    instance = new SwaggerPetstore.FakeApi();
+  });
+
+  var getProperty = function(object, getter, property) {
+    // Use getter method if present; otherwise, get the property directly.
+    if (typeof object[getter] === 'function')
+      return object[getter]();
+    else
+      return object[property];
+  }
+
+  var setProperty = function(object, setter, property, value) {
+    // Use setter method if present; otherwise, set the property directly.
+    if (typeof object[setter] === 'function')
+      object[setter](value);
+    else
+      object[property] = value;
+  }
+
+  describe('FakeApi', function() {
+    describe('fakeOuterBooleanSerialize', function() {
+      it('should call fakeOuterBooleanSerialize successfully', function(done) {
+        //uncomment below and update the code to test fakeOuterBooleanSerialize
+        //instance.fakeOuterBooleanSerialize(function(error) {
+        //  if (error) throw error;
+        //expect().to.be();
+        //});
+        done();
+      });
+    });
+    describe('fakeOuterCompositeSerialize', function() {
+      it('should call fakeOuterCompositeSerialize successfully', function(done) {
+        //uncomment below and update the code to test fakeOuterCompositeSerialize
+        //instance.fakeOuterCompositeSerialize(function(error) {
+        //  if (error) throw error;
+        //expect().to.be();
+        //});
+        done();
+      });
+    });
+    describe('fakeOuterNumberSerialize', function() {
+      it('should call fakeOuterNumberSerialize successfully', function(done) {
+        //uncomment below and update the code to test fakeOuterNumberSerialize
+        //instance.fakeOuterNumberSerialize(function(error) {
+        //  if (error) throw error;
+        //expect().to.be();
+        //});
+        done();
+      });
+    });
+    describe('fakeOuterStringSerialize', function() {
+      it('should call fakeOuterStringSerialize successfully', function(done) {
+        //uncomment below and update the code to test fakeOuterStringSerialize
+        //instance.fakeOuterStringSerialize(function(error) {
+        //  if (error) throw error;
+        //expect().to.be();
+        //});
+        done();
+      });
+    });
+    describe('testClientModel', function() {
+      it('should call testClientModel successfully', function(done) {
+        //uncomment below and update the code to test testClientModel
+        //instance.testClientModel(function(error) {
+        //  if (error) throw error;
+        //expect().to.be();
+        //});
+        done();
+      });
+    });
+    describe('testEndpointParameters', function() {
+      it('should call testEndpointParameters successfully', function(done) {
+        //uncomment below and update the code to test testEndpointParameters
+        //instance.testEndpointParameters(function(error) {
+        //  if (error) throw error;
+        //expect().to.be();
+        //});
+        done();
+      });
+    });
+    describe('testEnumParameters', function() {
+      it('should call testEnumParameters successfully', function(done) {
+        //uncomment below and update the code to test testEnumParameters
+        //instance.testEnumParameters(function(error) {
+        //  if (error) throw error;
+        //expect().to.be();
+        //});
+        done();
+      });
+    });
+  });
+
+}));
diff --git a/samples/client/petstore/javascript-es6/src/test/api/FakeClassnameTags123Api.spec.js b/samples/client/petstore/javascript-es6/src/test/api/FakeClassnameTags123Api.spec.js
new file mode 100644
index 000000000000..10e20e7778a2
--- /dev/null
+++ b/samples/client/petstore/javascript-es6/src/test/api/FakeClassnameTags123Api.spec.js
@@ -0,0 +1,63 @@
+/**
+ * Swagger Petstore
+ * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
+ *
+ * OpenAPI spec version: 1.0.0
+ * Contact: apiteam@swagger.io
+ *
+ * NOTE: This class is auto generated by the swagger code generator program.
+ * https://github.com/swagger-api/swagger-codegen.git
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+  if (typeof define === 'function' && define.amd) {
+    // AMD.
+    define(['expect.js', '../../src/index'], factory);
+  } else if (typeof module === 'object' && module.exports) {
+    // CommonJS-like environments that support module.exports, like Node.
+    factory(require('expect.js'), require('../../src/index'));
+  } else {
+    // Browser globals (root is window)
+    factory(root.expect, root.SwaggerPetstore);
+  }
+}(this, function(expect, SwaggerPetstore) {
+  'use strict';
+
+  var instance;
+
+  beforeEach(function() {
+    instance = new SwaggerPetstore.FakeClassnameTags123Api();
+  });
+
+  var getProperty = function(object, getter, property) {
+    // Use getter method if present; otherwise, get the property directly.
+    if (typeof object[getter] === 'function')
+      return object[getter]();
+    else
+      return object[property];
+  }
+
+  var setProperty = function(object, setter, property, value) {
+    // Use setter method if present; otherwise, set the property directly.
+    if (typeof object[setter] === 'function')
+      object[setter](value);
+    else
+      object[property] = value;
+  }
+
+  describe('FakeClassnameTags123Api', function() {
+    describe('testClassname', function() {
+      it('should call testClassname successfully', function(done) {
+        //uncomment below and update the code to test testClassname
+        //instance.testClassname(function(error) {
+        //  if (error) throw error;
+        //expect().to.be();
+        //});
+        done();
+      });
+    });
+  });
+
+}));
diff --git a/samples/client/petstore/javascript-es6/src/test/api/PetApi.spec.js b/samples/client/petstore/javascript-es6/src/test/api/PetApi.spec.js
new file mode 100644
index 000000000000..5259a2c66650
--- /dev/null
+++ b/samples/client/petstore/javascript-es6/src/test/api/PetApi.spec.js
@@ -0,0 +1,133 @@
+/**
+ * Swagger Petstore
+ * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
+ *
+ * OpenAPI spec version: 1.0.0
+ * Contact: apiteam@swagger.io
+ *
+ * NOTE: This class is auto generated by the swagger code generator program.
+ * https://github.com/swagger-api/swagger-codegen.git
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+  if (typeof define === 'function' && define.amd) {
+    // AMD.
+    define(['expect.js', '../../src/index'], factory);
+  } else if (typeof module === 'object' && module.exports) {
+    // CommonJS-like environments that support module.exports, like Node.
+    factory(require('expect.js'), require('../../src/index'));
+  } else {
+    // Browser globals (root is window)
+    factory(root.expect, root.SwaggerPetstore);
+  }
+}(this, function(expect, SwaggerPetstore) {
+  'use strict';
+
+  var instance;
+
+  beforeEach(function() {
+    instance = new SwaggerPetstore.PetApi();
+  });
+
+  var getProperty = function(object, getter, property) {
+    // Use getter method if present; otherwise, get the property directly.
+    if (typeof object[getter] === 'function')
+      return object[getter]();
+    else
+      return object[property];
+  }
+
+  var setProperty = function(object, setter, property, value) {
+    // Use setter method if present; otherwise, set the property directly.
+    if (typeof object[setter] === 'function')
+      object[setter](value);
+    else
+      object[property] = value;
+  }
+
+  describe('PetApi', function() {
+    describe('addPet', function() {
+      it('should call addPet successfully', function(done) {
+        //uncomment below and update the code to test addPet
+        //instance.addPet(function(error) {
+        //  if (error) throw error;
+        //expect().to.be();
+        //});
+        done();
+      });
+    });
+    describe('deletePet', function() {
+      it('should call deletePet successfully', function(done) {
+        //uncomment below and update the code to test deletePet
+        //instance.deletePet(function(error) {
+        //  if (error) throw error;
+        //expect().to.be();
+        //});
+        done();
+      });
+    });
+    describe('findPetsByStatus', function() {
+      it('should call findPetsByStatus successfully', function(done) {
+        //uncomment below and update the code to test findPetsByStatus
+        //instance.findPetsByStatus(function(error) {
+        //  if (error) throw error;
+        //expect().to.be();
+        //});
+        done();
+      });
+    });
+    describe('findPetsByTags', function() {
+      it('should call findPetsByTags successfully', function(done) {
+        //uncomment below and update the code to test findPetsByTags
+        //instance.findPetsByTags(function(error) {
+        //  if (error) throw error;
+        //expect().to.be();
+        //});
+        done();
+      });
+    });
+    describe('getPetById', function() {
+      it('should call getPetById successfully', function(done) {
+        //uncomment below and update the code to test getPetById
+        //instance.getPetById(function(error) {
+        //  if (error) throw error;
+        //expect().to.be();
+        //});
+        done();
+      });
+    });
+    describe('updatePet', function() {
+      it('should call updatePet successfully', function(done) {
+        //uncomment below and update the code to test updatePet
+        //instance.updatePet(function(error) {
+        //  if (error) throw error;
+        //expect().to.be();
+        //});
+        done();
+      });
+    });
+    describe('updatePetWithForm', function() {
+      it('should call updatePetWithForm successfully', function(done) {
+        //uncomment below and update the code to test updatePetWithForm
+        //instance.updatePetWithForm(function(error) {
+        //  if (error) throw error;
+        //expect().to.be();
+        //});
+        done();
+      });
+    });
+    describe('uploadFile', function() {
+      it('should call uploadFile successfully', function(done) {
+        //uncomment below and update the code to test uploadFile
+        //instance.uploadFile(function(error) {
+        //  if (error) throw error;
+        //expect().to.be();
+        //});
+        done();
+      });
+    });
+  });
+
+}));
diff --git a/samples/client/petstore/javascript-es6/src/test/api/StoreApi.spec.js b/samples/client/petstore/javascript-es6/src/test/api/StoreApi.spec.js
new file mode 100644
index 000000000000..d19da2f28d82
--- /dev/null
+++ b/samples/client/petstore/javascript-es6/src/test/api/StoreApi.spec.js
@@ -0,0 +1,93 @@
+/**
+ * Swagger Petstore
+ * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
+ *
+ * OpenAPI spec version: 1.0.0
+ * Contact: apiteam@swagger.io
+ *
+ * NOTE: This class is auto generated by the swagger code generator program.
+ * https://github.com/swagger-api/swagger-codegen.git
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+  if (typeof define === 'function' && define.amd) {
+    // AMD.
+    define(['expect.js', '../../src/index'], factory);
+  } else if (typeof module === 'object' && module.exports) {
+    // CommonJS-like environments that support module.exports, like Node.
+    factory(require('expect.js'), require('../../src/index'));
+  } else {
+    // Browser globals (root is window)
+    factory(root.expect, root.SwaggerPetstore);
+  }
+}(this, function(expect, SwaggerPetstore) {
+  'use strict';
+
+  var instance;
+
+  beforeEach(function() {
+    instance = new SwaggerPetstore.StoreApi();
+  });
+
+  var getProperty = function(object, getter, property) {
+    // Use getter method if present; otherwise, get the property directly.
+    if (typeof object[getter] === 'function')
+      return object[getter]();
+    else
+      return object[property];
+  }
+
+  var setProperty = function(object, setter, property, value) {
+    // Use setter method if present; otherwise, set the property directly.
+    if (typeof object[setter] === 'function')
+      object[setter](value);
+    else
+      object[property] = value;
+  }
+
+  describe('StoreApi', function() {
+    describe('deleteOrder', function() {
+      it('should call deleteOrder successfully', function(done) {
+        //uncomment below and update the code to test deleteOrder
+        //instance.deleteOrder(function(error) {
+        //  if (error) throw error;
+        //expect().to.be();
+        //});
+        done();
+      });
+    });
+    describe('getInventory', function() {
+      it('should call getInventory successfully', function(done) {
+        //uncomment below and update the code to test getInventory
+        //instance.getInventory(function(error) {
+        //  if (error) throw error;
+        //expect().to.be();
+        //});
+        done();
+      });
+    });
+    describe('getOrderById', function() {
+      it('should call getOrderById successfully', function(done) {
+        //uncomment below and update the code to test getOrderById
+        //instance.getOrderById(function(error) {
+        //  if (error) throw error;
+        //expect().to.be();
+        //});
+        done();
+      });
+    });
+    describe('placeOrder', function() {
+      it('should call placeOrder successfully', function(done) {
+        //uncomment below and update the code to test placeOrder
+        //instance.placeOrder(function(error) {
+        //  if (error) throw error;
+        //expect().to.be();
+        //});
+        done();
+      });
+    });
+  });
+
+}));
diff --git a/samples/client/petstore/javascript-es6/src/test/api/UserApi.spec.js b/samples/client/petstore/javascript-es6/src/test/api/UserApi.spec.js
new file mode 100644
index 000000000000..55c8967f13b7
--- /dev/null
+++ b/samples/client/petstore/javascript-es6/src/test/api/UserApi.spec.js
@@ -0,0 +1,133 @@
+/**
+ * Swagger Petstore
+ * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
+ *
+ * OpenAPI spec version: 1.0.0
+ * Contact: apiteam@swagger.io
+ *
+ * NOTE: This class is auto generated by the swagger code generator program.
+ * https://github.com/swagger-api/swagger-codegen.git
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+  if (typeof define === 'function' && define.amd) {
+    // AMD.
+    define(['expect.js', '../../src/index'], factory);
+  } else if (typeof module === 'object' && module.exports) {
+    // CommonJS-like environments that support module.exports, like Node.
+    factory(require('expect.js'), require('../../src/index'));
+  } else {
+    // Browser globals (root is window)
+    factory(root.expect, root.SwaggerPetstore);
+  }
+}(this, function(expect, SwaggerPetstore) {
+  'use strict';
+
+  var instance;
+
+  beforeEach(function() {
+    instance = new SwaggerPetstore.UserApi();
+  });
+
+  var getProperty = function(object, getter, property) {
+    // Use getter method if present; otherwise, get the property directly.
+    if (typeof object[getter] === 'function')
+      return object[getter]();
+    else
+      return object[property];
+  }
+
+  var setProperty = function(object, setter, property, value) {
+    // Use setter method if present; otherwise, set the property directly.
+    if (typeof object[setter] === 'function')
+      object[setter](value);
+    else
+      object[property] = value;
+  }
+
+  describe('UserApi', function() {
+    describe('createUser', function() {
+      it('should call createUser successfully', function(done) {
+        //uncomment below and update the code to test createUser
+        //instance.createUser(function(error) {
+        //  if (error) throw error;
+        //expect().to.be();
+        //});
+        done();
+      });
+    });
+    describe('createUsersWithArrayInput', function() {
+      it('should call createUsersWithArrayInput successfully', function(done) {
+        //uncomment below and update the code to test createUsersWithArrayInput
+        //instance.createUsersWithArrayInput(function(error) {
+        //  if (error) throw error;
+        //expect().to.be();
+        //});
+        done();
+      });
+    });
+    describe('createUsersWithListInput', function() {
+      it('should call createUsersWithListInput successfully', function(done) {
+        //uncomment below and update the code to test createUsersWithListInput
+        //instance.createUsersWithListInput(function(error) {
+        //  if (error) throw error;
+        //expect().to.be();
+        //});
+        done();
+      });
+    });
+    describe('deleteUser', function() {
+      it('should call deleteUser successfully', function(done) {
+        //uncomment below and update the code to test deleteUser
+        //instance.deleteUser(function(error) {
+        //  if (error) throw error;
+        //expect().to.be();
+        //});
+        done();
+      });
+    });
+    describe('getUserByName', function() {
+      it('should call getUserByName successfully', function(done) {
+        //uncomment below and update the code to test getUserByName
+        //instance.getUserByName(function(error) {
+        //  if (error) throw error;
+        //expect().to.be();
+        //});
+        done();
+      });
+    });
+    describe('loginUser', function() {
+      it('should call loginUser successfully', function(done) {
+        //uncomment below and update the code to test loginUser
+        //instance.loginUser(function(error) {
+        //  if (error) throw error;
+        //expect().to.be();
+        //});
+        done();
+      });
+    });
+    describe('logoutUser', function() {
+      it('should call logoutUser successfully', function(done) {
+        //uncomment below and update the code to test logoutUser
+        //instance.logoutUser(function(error) {
+        //  if (error) throw error;
+        //expect().to.be();
+        //});
+        done();
+      });
+    });
+    describe('updateUser', function() {
+      it('should call updateUser successfully', function(done) {
+        //uncomment below and update the code to test updateUser
+        //instance.updateUser(function(error) {
+        //  if (error) throw error;
+        //expect().to.be();
+        //});
+        done();
+      });
+    });
+  });
+
+}));
diff --git a/samples/client/petstore/javascript-es6/src/test/model/AdditionalPropertiesClass.spec.js b/samples/client/petstore/javascript-es6/src/test/model/AdditionalPropertiesClass.spec.js
new file mode 100644
index 000000000000..887052c0109d
--- /dev/null
+++ b/samples/client/petstore/javascript-es6/src/test/model/AdditionalPropertiesClass.spec.js
@@ -0,0 +1,71 @@
+/**
+ * Swagger Petstore
+ * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
+ *
+ * OpenAPI spec version: 1.0.0
+ * Contact: apiteam@swagger.io
+ *
+ * NOTE: This class is auto generated by the swagger code generator program.
+ * https://github.com/swagger-api/swagger-codegen.git
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+  if (typeof define === 'function' && define.amd) {
+    // AMD.
+    define(['expect.js', '../../src/index'], factory);
+  } else if (typeof module === 'object' && module.exports) {
+    // CommonJS-like environments that support module.exports, like Node.
+    factory(require('expect.js'), require('../../src/index'));
+  } else {
+    // Browser globals (root is window)
+    factory(root.expect, root.SwaggerPetstore);
+  }
+}(this, function(expect, SwaggerPetstore) {
+  'use strict';
+
+  var instance;
+
+  beforeEach(function() {
+    instance = new SwaggerPetstore.AdditionalPropertiesClass();
+  });
+
+  var getProperty = function(object, getter, property) {
+    // Use getter method if present; otherwise, get the property directly.
+    if (typeof object[getter] === 'function')
+      return object[getter]();
+    else
+      return object[property];
+  }
+
+  var setProperty = function(object, setter, property, value) {
+    // Use setter method if present; otherwise, set the property directly.
+    if (typeof object[setter] === 'function')
+      object[setter](value);
+    else
+      object[property] = value;
+  }
+
+  describe('AdditionalPropertiesClass', function() {
+    it('should create an instance of AdditionalPropertiesClass', function() {
+      // uncomment below and update the code to test AdditionalPropertiesClass
+      //var instane = new SwaggerPetstore.AdditionalPropertiesClass();
+      //expect(instance).to.be.a(SwaggerPetstore.AdditionalPropertiesClass);
+    });
+
+    it('should have the property mapProperty (base name: "map_property")', function() {
+      // uncomment below and update the code to test the property mapProperty
+      //var instane = new SwaggerPetstore.AdditionalPropertiesClass();
+      //expect(instance).to.be();
+    });
+
+    it('should have the property mapOfMapProperty (base name: "map_of_map_property")', function() {
+      // uncomment below and update the code to test the property mapOfMapProperty
+      //var instane = new SwaggerPetstore.AdditionalPropertiesClass();
+      //expect(instance).to.be();
+    });
+
+  });
+
+}));
diff --git a/samples/client/petstore/javascript-es6/src/test/model/Animal.spec.js b/samples/client/petstore/javascript-es6/src/test/model/Animal.spec.js
new file mode 100644
index 000000000000..4270461cc5ec
--- /dev/null
+++ b/samples/client/petstore/javascript-es6/src/test/model/Animal.spec.js
@@ -0,0 +1,71 @@
+/**
+ * Swagger Petstore
+ * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
+ *
+ * OpenAPI spec version: 1.0.0
+ * Contact: apiteam@swagger.io
+ *
+ * NOTE: This class is auto generated by the swagger code generator program.
+ * https://github.com/swagger-api/swagger-codegen.git
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+  if (typeof define === 'function' && define.amd) {
+    // AMD.
+    define(['expect.js', '../../src/index'], factory);
+  } else if (typeof module === 'object' && module.exports) {
+    // CommonJS-like environments that support module.exports, like Node.
+    factory(require('expect.js'), require('../../src/index'));
+  } else {
+    // Browser globals (root is window)
+    factory(root.expect, root.SwaggerPetstore);
+  }
+}(this, function(expect, SwaggerPetstore) {
+  'use strict';
+
+  var instance;
+
+  beforeEach(function() {
+    instance = new SwaggerPetstore.Animal();
+  });
+
+  var getProperty = function(object, getter, property) {
+    // Use getter method if present; otherwise, get the property directly.
+    if (typeof object[getter] === 'function')
+      return object[getter]();
+    else
+      return object[property];
+  }
+
+  var setProperty = function(object, setter, property, value) {
+    // Use setter method if present; otherwise, set the property directly.
+    if (typeof object[setter] === 'function')
+      object[setter](value);
+    else
+      object[property] = value;
+  }
+
+  describe('Animal', function() {
+    it('should create an instance of Animal', function() {
+      // uncomment below and update the code to test Animal
+      //var instane = new SwaggerPetstore.Animal();
+      //expect(instance).to.be.a(SwaggerPetstore.Animal);
+    });
+
+    it('should have the property className (base name: "className")', function() {
+      // uncomment below and update the code to test the property className
+      //var instane = new SwaggerPetstore.Animal();
+      //expect(instance).to.be();
+    });
+
+    it('should have the property color (base name: "color")', function() {
+      // uncomment below and update the code to test the property color
+      //var instane = new SwaggerPetstore.Animal();
+      //expect(instance).to.be();
+    });
+
+  });
+
+}));
diff --git a/samples/client/petstore/javascript-es6/src/test/model/AnimalFarm.spec.js b/samples/client/petstore/javascript-es6/src/test/model/AnimalFarm.spec.js
new file mode 100644
index 000000000000..ffc54a3c3817
--- /dev/null
+++ b/samples/client/petstore/javascript-es6/src/test/model/AnimalFarm.spec.js
@@ -0,0 +1,59 @@
+/**
+ * Swagger Petstore
+ * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
+ *
+ * OpenAPI spec version: 1.0.0
+ * Contact: apiteam@swagger.io
+ *
+ * NOTE: This class is auto generated by the swagger code generator program.
+ * https://github.com/swagger-api/swagger-codegen.git
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+  if (typeof define === 'function' && define.amd) {
+    // AMD.
+    define(['expect.js', '../../src/index'], factory);
+  } else if (typeof module === 'object' && module.exports) {
+    // CommonJS-like environments that support module.exports, like Node.
+    factory(require('expect.js'), require('../../src/index'));
+  } else {
+    // Browser globals (root is window)
+    factory(root.expect, root.SwaggerPetstore);
+  }
+}(this, function(expect, SwaggerPetstore) {
+  'use strict';
+
+  var instance;
+
+  beforeEach(function() {
+    instance = new SwaggerPetstore.AnimalFarm();
+  });
+
+  var getProperty = function(object, getter, property) {
+    // Use getter method if present; otherwise, get the property directly.
+    if (typeof object[getter] === 'function')
+      return object[getter]();
+    else
+      return object[property];
+  }
+
+  var setProperty = function(object, setter, property, value) {
+    // Use setter method if present; otherwise, set the property directly.
+    if (typeof object[setter] === 'function')
+      object[setter](value);
+    else
+      object[property] = value;
+  }
+
+  describe('AnimalFarm', function() {
+    it('should create an instance of AnimalFarm', function() {
+      // uncomment below and update the code to test AnimalFarm
+      //var instane = new SwaggerPetstore.AnimalFarm();
+      //expect(instance).to.be.a(SwaggerPetstore.AnimalFarm);
+    });
+
+  });
+
+}));
diff --git a/samples/client/petstore/javascript-es6/src/test/model/ApiResponse.spec.js b/samples/client/petstore/javascript-es6/src/test/model/ApiResponse.spec.js
new file mode 100644
index 000000000000..1070013e367f
--- /dev/null
+++ b/samples/client/petstore/javascript-es6/src/test/model/ApiResponse.spec.js
@@ -0,0 +1,77 @@
+/**
+ * Swagger Petstore
+ * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
+ *
+ * OpenAPI spec version: 1.0.0
+ * Contact: apiteam@swagger.io
+ *
+ * NOTE: This class is auto generated by the swagger code generator program.
+ * https://github.com/swagger-api/swagger-codegen.git
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+  if (typeof define === 'function' && define.amd) {
+    // AMD.
+    define(['expect.js', '../../src/index'], factory);
+  } else if (typeof module === 'object' && module.exports) {
+    // CommonJS-like environments that support module.exports, like Node.
+    factory(require('expect.js'), require('../../src/index'));
+  } else {
+    // Browser globals (root is window)
+    factory(root.expect, root.SwaggerPetstore);
+  }
+}(this, function(expect, SwaggerPetstore) {
+  'use strict';
+
+  var instance;
+
+  beforeEach(function() {
+    instance = new SwaggerPetstore.ApiResponse();
+  });
+
+  var getProperty = function(object, getter, property) {
+    // Use getter method if present; otherwise, get the property directly.
+    if (typeof object[getter] === 'function')
+      return object[getter]();
+    else
+      return object[property];
+  }
+
+  var setProperty = function(object, setter, property, value) {
+    // Use setter method if present; otherwise, set the property directly.
+    if (typeof object[setter] === 'function')
+      object[setter](value);
+    else
+      object[property] = value;
+  }
+
+  describe('ApiResponse', function() {
+    it('should create an instance of ApiResponse', function() {
+      // uncomment below and update the code to test ApiResponse
+      //var instane = new SwaggerPetstore.ApiResponse();
+      //expect(instance).to.be.a(SwaggerPetstore.ApiResponse);
+    });
+
+    it('should have the property code (base name: "code")', function() {
+      // uncomment below and update the code to test the property code
+      //var instane = new SwaggerPetstore.ApiResponse();
+      //expect(instance).to.be();
+    });
+
+    it('should have the property type (base name: "type")', function() {
+      // uncomment below and update the code to test the property type
+      //var instane = new SwaggerPetstore.ApiResponse();
+      //expect(instance).to.be();
+    });
+
+    it('should have the property message (base name: "message")', function() {
+      // uncomment below and update the code to test the property message
+      //var instane = new SwaggerPetstore.ApiResponse();
+      //expect(instance).to.be();
+    });
+
+  });
+
+}));
diff --git a/samples/client/petstore/javascript-es6/src/test/model/ArrayOfArrayOfNumberOnly.spec.js b/samples/client/petstore/javascript-es6/src/test/model/ArrayOfArrayOfNumberOnly.spec.js
new file mode 100644
index 000000000000..9fcd218fbb34
--- /dev/null
+++ b/samples/client/petstore/javascript-es6/src/test/model/ArrayOfArrayOfNumberOnly.spec.js
@@ -0,0 +1,65 @@
+/**
+ * Swagger Petstore
+ * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
+ *
+ * OpenAPI spec version: 1.0.0
+ * Contact: apiteam@swagger.io
+ *
+ * NOTE: This class is auto generated by the swagger code generator program.
+ * https://github.com/swagger-api/swagger-codegen.git
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+  if (typeof define === 'function' && define.amd) {
+    // AMD.
+    define(['expect.js', '../../src/index'], factory);
+  } else if (typeof module === 'object' && module.exports) {
+    // CommonJS-like environments that support module.exports, like Node.
+    factory(require('expect.js'), require('../../src/index'));
+  } else {
+    // Browser globals (root is window)
+    factory(root.expect, root.SwaggerPetstore);
+  }
+}(this, function(expect, SwaggerPetstore) {
+  'use strict';
+
+  var instance;
+
+  beforeEach(function() {
+    instance = new SwaggerPetstore.ArrayOfArrayOfNumberOnly();
+  });
+
+  var getProperty = function(object, getter, property) {
+    // Use getter method if present; otherwise, get the property directly.
+    if (typeof object[getter] === 'function')
+      return object[getter]();
+    else
+      return object[property];
+  }
+
+  var setProperty = function(object, setter, property, value) {
+    // Use setter method if present; otherwise, set the property directly.
+    if (typeof object[setter] === 'function')
+      object[setter](value);
+    else
+      object[property] = value;
+  }
+
+  describe('ArrayOfArrayOfNumberOnly', function() {
+    it('should create an instance of ArrayOfArrayOfNumberOnly', function() {
+      // uncomment below and update the code to test ArrayOfArrayOfNumberOnly
+      //var instane = new SwaggerPetstore.ArrayOfArrayOfNumberOnly();
+      //expect(instance).to.be.a(SwaggerPetstore.ArrayOfArrayOfNumberOnly);
+    });
+
+    it('should have the property arrayArrayNumber (base name: "ArrayArrayNumber")', function() {
+      // uncomment below and update the code to test the property arrayArrayNumber
+      //var instane = new SwaggerPetstore.ArrayOfArrayOfNumberOnly();
+      //expect(instance).to.be();
+    });
+
+  });
+
+}));
diff --git a/samples/client/petstore/javascript-es6/src/test/model/ArrayOfNumberOnly.spec.js b/samples/client/petstore/javascript-es6/src/test/model/ArrayOfNumberOnly.spec.js
new file mode 100644
index 000000000000..32d5f98586a9
--- /dev/null
+++ b/samples/client/petstore/javascript-es6/src/test/model/ArrayOfNumberOnly.spec.js
@@ -0,0 +1,65 @@
+/**
+ * Swagger Petstore
+ * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
+ *
+ * OpenAPI spec version: 1.0.0
+ * Contact: apiteam@swagger.io
+ *
+ * NOTE: This class is auto generated by the swagger code generator program.
+ * https://github.com/swagger-api/swagger-codegen.git
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+  if (typeof define === 'function' && define.amd) {
+    // AMD.
+    define(['expect.js', '../../src/index'], factory);
+  } else if (typeof module === 'object' && module.exports) {
+    // CommonJS-like environments that support module.exports, like Node.
+    factory(require('expect.js'), require('../../src/index'));
+  } else {
+    // Browser globals (root is window)
+    factory(root.expect, root.SwaggerPetstore);
+  }
+}(this, function(expect, SwaggerPetstore) {
+  'use strict';
+
+  var instance;
+
+  beforeEach(function() {
+    instance = new SwaggerPetstore.ArrayOfNumberOnly();
+  });
+
+  var getProperty = function(object, getter, property) {
+    // Use getter method if present; otherwise, get the property directly.
+    if (typeof object[getter] === 'function')
+      return object[getter]();
+    else
+      return object[property];
+  }
+
+  var setProperty = function(object, setter, property, value) {
+    // Use setter method if present; otherwise, set the property directly.
+    if (typeof object[setter] === 'function')
+      object[setter](value);
+    else
+      object[property] = value;
+  }
+
+  describe('ArrayOfNumberOnly', function() {
+    it('should create an instance of ArrayOfNumberOnly', function() {
+      // uncomment below and update the code to test ArrayOfNumberOnly
+      //var instane = new SwaggerPetstore.ArrayOfNumberOnly();
+      //expect(instance).to.be.a(SwaggerPetstore.ArrayOfNumberOnly);
+    });
+
+    it('should have the property arrayNumber (base name: "ArrayNumber")', function() {
+      // uncomment below and update the code to test the property arrayNumber
+      //var instane = new SwaggerPetstore.ArrayOfNumberOnly();
+      //expect(instance).to.be();
+    });
+
+  });
+
+}));
diff --git a/samples/client/petstore/javascript-es6/src/test/model/ArrayTest.spec.js b/samples/client/petstore/javascript-es6/src/test/model/ArrayTest.spec.js
new file mode 100644
index 000000000000..1d93d897a9d8
--- /dev/null
+++ b/samples/client/petstore/javascript-es6/src/test/model/ArrayTest.spec.js
@@ -0,0 +1,77 @@
+/**
+ * Swagger Petstore
+ * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
+ *
+ * OpenAPI spec version: 1.0.0
+ * Contact: apiteam@swagger.io
+ *
+ * NOTE: This class is auto generated by the swagger code generator program.
+ * https://github.com/swagger-api/swagger-codegen.git
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+  if (typeof define === 'function' && define.amd) {
+    // AMD.
+    define(['expect.js', '../../src/index'], factory);
+  } else if (typeof module === 'object' && module.exports) {
+    // CommonJS-like environments that support module.exports, like Node.
+    factory(require('expect.js'), require('../../src/index'));
+  } else {
+    // Browser globals (root is window)
+    factory(root.expect, root.SwaggerPetstore);
+  }
+}(this, function(expect, SwaggerPetstore) {
+  'use strict';
+
+  var instance;
+
+  beforeEach(function() {
+    instance = new SwaggerPetstore.ArrayTest();
+  });
+
+  var getProperty = function(object, getter, property) {
+    // Use getter method if present; otherwise, get the property directly.
+    if (typeof object[getter] === 'function')
+      return object[getter]();
+    else
+      return object[property];
+  }
+
+  var setProperty = function(object, setter, property, value) {
+    // Use setter method if present; otherwise, set the property directly.
+    if (typeof object[setter] === 'function')
+      object[setter](value);
+    else
+      object[property] = value;
+  }
+
+  describe('ArrayTest', function() {
+    it('should create an instance of ArrayTest', function() {
+      // uncomment below and update the code to test ArrayTest
+      //var instane = new SwaggerPetstore.ArrayTest();
+      //expect(instance).to.be.a(SwaggerPetstore.ArrayTest);
+    });
+
+    it('should have the property arrayOfString (base name: "array_of_string")', function() {
+      // uncomment below and update the code to test the property arrayOfString
+      //var instane = new SwaggerPetstore.ArrayTest();
+      //expect(instance).to.be();
+    });
+
+    it('should have the property arrayArrayOfInteger (base name: "array_array_of_integer")', function() {
+      // uncomment below and update the code to test the property arrayArrayOfInteger
+      //var instane = new SwaggerPetstore.ArrayTest();
+      //expect(instance).to.be();
+    });
+
+    it('should have the property arrayArrayOfModel (base name: "array_array_of_model")', function() {
+      // uncomment below and update the code to test the property arrayArrayOfModel
+      //var instane = new SwaggerPetstore.ArrayTest();
+      //expect(instance).to.be();
+    });
+
+  });
+
+}));
diff --git a/samples/client/petstore/javascript-es6/src/test/model/Capitalization.spec.js b/samples/client/petstore/javascript-es6/src/test/model/Capitalization.spec.js
new file mode 100644
index 000000000000..f1aa695c3fd3
--- /dev/null
+++ b/samples/client/petstore/javascript-es6/src/test/model/Capitalization.spec.js
@@ -0,0 +1,95 @@
+/**
+ * Swagger Petstore
+ * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
+ *
+ * OpenAPI spec version: 1.0.0
+ * Contact: apiteam@swagger.io
+ *
+ * NOTE: This class is auto generated by the swagger code generator program.
+ * https://github.com/swagger-api/swagger-codegen.git
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+  if (typeof define === 'function' && define.amd) {
+    // AMD.
+    define(['expect.js', '../../src/index'], factory);
+  } else if (typeof module === 'object' && module.exports) {
+    // CommonJS-like environments that support module.exports, like Node.
+    factory(require('expect.js'), require('../../src/index'));
+  } else {
+    // Browser globals (root is window)
+    factory(root.expect, root.SwaggerPetstore);
+  }
+}(this, function(expect, SwaggerPetstore) {
+  'use strict';
+
+  var instance;
+
+  beforeEach(function() {
+    instance = new SwaggerPetstore.Capitalization();
+  });
+
+  var getProperty = function(object, getter, property) {
+    // Use getter method if present; otherwise, get the property directly.
+    if (typeof object[getter] === 'function')
+      return object[getter]();
+    else
+      return object[property];
+  }
+
+  var setProperty = function(object, setter, property, value) {
+    // Use setter method if present; otherwise, set the property directly.
+    if (typeof object[setter] === 'function')
+      object[setter](value);
+    else
+      object[property] = value;
+  }
+
+  describe('Capitalization', function() {
+    it('should create an instance of Capitalization', function() {
+      // uncomment below and update the code to test Capitalization
+      //var instane = new SwaggerPetstore.Capitalization();
+      //expect(instance).to.be.a(SwaggerPetstore.Capitalization);
+    });
+
+    it('should have the property smallCamel (base name: "smallCamel")', function() {
+      // uncomment below and update the code to test the property smallCamel
+      //var instane = new SwaggerPetstore.Capitalization();
+      //expect(instance).to.be();
+    });
+
+    it('should have the property capitalCamel (base name: "CapitalCamel")', function() {
+      // uncomment below and update the code to test the property capitalCamel
+      //var instane = new SwaggerPetstore.Capitalization();
+      //expect(instance).to.be();
+    });
+
+    it('should have the property smallSnake (base name: "small_Snake")', function() {
+      // uncomment below and update the code to test the property smallSnake
+      //var instane = new SwaggerPetstore.Capitalization();
+      //expect(instance).to.be();
+    });
+
+    it('should have the property capitalSnake (base name: "Capital_Snake")', function() {
+      // uncomment below and update the code to test the property capitalSnake
+      //var instane = new SwaggerPetstore.Capitalization();
+      //expect(instance).to.be();
+    });
+
+    it('should have the property sCAETHFlowPoints (base name: "SCA_ETH_Flow_Points")', function() {
+      // uncomment below and update the code to test the property sCAETHFlowPoints
+      //var instane = new SwaggerPetstore.Capitalization();
+      //expect(instance).to.be();
+    });
+
+    it('should have the property ATT_NAME (base name: "ATT_NAME")', function() {
+      // uncomment below and update the code to test the property ATT_NAME
+      //var instane = new SwaggerPetstore.Capitalization();
+      //expect(instance).to.be();
+    });
+
+  });
+
+}));
diff --git a/samples/client/petstore/javascript-es6/src/test/model/Cat.spec.js b/samples/client/petstore/javascript-es6/src/test/model/Cat.spec.js
new file mode 100644
index 000000000000..f0d5476b268f
--- /dev/null
+++ b/samples/client/petstore/javascript-es6/src/test/model/Cat.spec.js
@@ -0,0 +1,65 @@
+/**
+ * Swagger Petstore
+ * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
+ *
+ * OpenAPI spec version: 1.0.0
+ * Contact: apiteam@swagger.io
+ *
+ * NOTE: This class is auto generated by the swagger code generator program.
+ * https://github.com/swagger-api/swagger-codegen.git
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+  if (typeof define === 'function' && define.amd) {
+    // AMD.
+    define(['expect.js', '../../src/index'], factory);
+  } else if (typeof module === 'object' && module.exports) {
+    // CommonJS-like environments that support module.exports, like Node.
+    factory(require('expect.js'), require('../../src/index'));
+  } else {
+    // Browser globals (root is window)
+    factory(root.expect, root.SwaggerPetstore);
+  }
+}(this, function(expect, SwaggerPetstore) {
+  'use strict';
+
+  var instance;
+
+  beforeEach(function() {
+    instance = new SwaggerPetstore.Cat();
+  });
+
+  var getProperty = function(object, getter, property) {
+    // Use getter method if present; otherwise, get the property directly.
+    if (typeof object[getter] === 'function')
+      return object[getter]();
+    else
+      return object[property];
+  }
+
+  var setProperty = function(object, setter, property, value) {
+    // Use setter method if present; otherwise, set the property directly.
+    if (typeof object[setter] === 'function')
+      object[setter](value);
+    else
+      object[property] = value;
+  }
+
+  describe('Cat', function() {
+    it('should create an instance of Cat', function() {
+      // uncomment below and update the code to test Cat
+      //var instane = new SwaggerPetstore.Cat();
+      //expect(instance).to.be.a(SwaggerPetstore.Cat);
+    });
+
+    it('should have the property declawed (base name: "declawed")', function() {
+      // uncomment below and update the code to test the property declawed
+      //var instane = new SwaggerPetstore.Cat();
+      //expect(instance).to.be();
+    });
+
+  });
+
+}));
diff --git a/samples/client/petstore/javascript-es6/src/test/model/Category.spec.js b/samples/client/petstore/javascript-es6/src/test/model/Category.spec.js
new file mode 100644
index 000000000000..561eaf8373ee
--- /dev/null
+++ b/samples/client/petstore/javascript-es6/src/test/model/Category.spec.js
@@ -0,0 +1,71 @@
+/**
+ * Swagger Petstore
+ * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
+ *
+ * OpenAPI spec version: 1.0.0
+ * Contact: apiteam@swagger.io
+ *
+ * NOTE: This class is auto generated by the swagger code generator program.
+ * https://github.com/swagger-api/swagger-codegen.git
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+  if (typeof define === 'function' && define.amd) {
+    // AMD.
+    define(['expect.js', '../../src/index'], factory);
+  } else if (typeof module === 'object' && module.exports) {
+    // CommonJS-like environments that support module.exports, like Node.
+    factory(require('expect.js'), require('../../src/index'));
+  } else {
+    // Browser globals (root is window)
+    factory(root.expect, root.SwaggerPetstore);
+  }
+}(this, function(expect, SwaggerPetstore) {
+  'use strict';
+
+  var instance;
+
+  beforeEach(function() {
+    instance = new SwaggerPetstore.Category();
+  });
+
+  var getProperty = function(object, getter, property) {
+    // Use getter method if present; otherwise, get the property directly.
+    if (typeof object[getter] === 'function')
+      return object[getter]();
+    else
+      return object[property];
+  }
+
+  var setProperty = function(object, setter, property, value) {
+    // Use setter method if present; otherwise, set the property directly.
+    if (typeof object[setter] === 'function')
+      object[setter](value);
+    else
+      object[property] = value;
+  }
+
+  describe('Category', function() {
+    it('should create an instance of Category', function() {
+      // uncomment below and update the code to test Category
+      //var instane = new SwaggerPetstore.Category();
+      //expect(instance).to.be.a(SwaggerPetstore.Category);
+    });
+
+    it('should have the property id (base name: "id")', function() {
+      // uncomment below and update the code to test the property id
+      //var instane = new SwaggerPetstore.Category();
+      //expect(instance).to.be();
+    });
+
+    it('should have the property name (base name: "name")', function() {
+      // uncomment below and update the code to test the property name
+      //var instane = new SwaggerPetstore.Category();
+      //expect(instance).to.be();
+    });
+
+  });
+
+}));
diff --git a/samples/client/petstore/javascript-es6/src/test/model/ClassModel.spec.js b/samples/client/petstore/javascript-es6/src/test/model/ClassModel.spec.js
new file mode 100644
index 000000000000..5ee2e49a0de1
--- /dev/null
+++ b/samples/client/petstore/javascript-es6/src/test/model/ClassModel.spec.js
@@ -0,0 +1,65 @@
+/**
+ * Swagger Petstore
+ * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
+ *
+ * OpenAPI spec version: 1.0.0
+ * Contact: apiteam@swagger.io
+ *
+ * NOTE: This class is auto generated by the swagger code generator program.
+ * https://github.com/swagger-api/swagger-codegen.git
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+  if (typeof define === 'function' && define.amd) {
+    // AMD.
+    define(['expect.js', '../../src/index'], factory);
+  } else if (typeof module === 'object' && module.exports) {
+    // CommonJS-like environments that support module.exports, like Node.
+    factory(require('expect.js'), require('../../src/index'));
+  } else {
+    // Browser globals (root is window)
+    factory(root.expect, root.SwaggerPetstore);
+  }
+}(this, function(expect, SwaggerPetstore) {
+  'use strict';
+
+  var instance;
+
+  beforeEach(function() {
+    instance = new SwaggerPetstore.ClassModel();
+  });
+
+  var getProperty = function(object, getter, property) {
+    // Use getter method if present; otherwise, get the property directly.
+    if (typeof object[getter] === 'function')
+      return object[getter]();
+    else
+      return object[property];
+  }
+
+  var setProperty = function(object, setter, property, value) {
+    // Use setter method if present; otherwise, set the property directly.
+    if (typeof object[setter] === 'function')
+      object[setter](value);
+    else
+      object[property] = value;
+  }
+
+  describe('ClassModel', function() {
+    it('should create an instance of ClassModel', function() {
+      // uncomment below and update the code to test ClassModel
+      //var instane = new SwaggerPetstore.ClassModel();
+      //expect(instance).to.be.a(SwaggerPetstore.ClassModel);
+    });
+
+    it('should have the property _class (base name: "_class")', function() {
+      // uncomment below and update the code to test the property _class
+      //var instane = new SwaggerPetstore.ClassModel();
+      //expect(instance).to.be();
+    });
+
+  });
+
+}));
diff --git a/samples/client/petstore/javascript-es6/src/test/model/Client.spec.js b/samples/client/petstore/javascript-es6/src/test/model/Client.spec.js
new file mode 100644
index 000000000000..03af5ef730ec
--- /dev/null
+++ b/samples/client/petstore/javascript-es6/src/test/model/Client.spec.js
@@ -0,0 +1,65 @@
+/**
+ * Swagger Petstore
+ * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
+ *
+ * OpenAPI spec version: 1.0.0
+ * Contact: apiteam@swagger.io
+ *
+ * NOTE: This class is auto generated by the swagger code generator program.
+ * https://github.com/swagger-api/swagger-codegen.git
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+  if (typeof define === 'function' && define.amd) {
+    // AMD.
+    define(['expect.js', '../../src/index'], factory);
+  } else if (typeof module === 'object' && module.exports) {
+    // CommonJS-like environments that support module.exports, like Node.
+    factory(require('expect.js'), require('../../src/index'));
+  } else {
+    // Browser globals (root is window)
+    factory(root.expect, root.SwaggerPetstore);
+  }
+}(this, function(expect, SwaggerPetstore) {
+  'use strict';
+
+  var instance;
+
+  beforeEach(function() {
+    instance = new SwaggerPetstore.Client();
+  });
+
+  var getProperty = function(object, getter, property) {
+    // Use getter method if present; otherwise, get the property directly.
+    if (typeof object[getter] === 'function')
+      return object[getter]();
+    else
+      return object[property];
+  }
+
+  var setProperty = function(object, setter, property, value) {
+    // Use setter method if present; otherwise, set the property directly.
+    if (typeof object[setter] === 'function')
+      object[setter](value);
+    else
+      object[property] = value;
+  }
+
+  describe('Client', function() {
+    it('should create an instance of Client', function() {
+      // uncomment below and update the code to test Client
+      //var instane = new SwaggerPetstore.Client();
+      //expect(instance).to.be.a(SwaggerPetstore.Client);
+    });
+
+    it('should have the property client (base name: "client")', function() {
+      // uncomment below and update the code to test the property client
+      //var instane = new SwaggerPetstore.Client();
+      //expect(instance).to.be();
+    });
+
+  });
+
+}));
diff --git a/samples/client/petstore/javascript-es6/src/test/model/Dog.spec.js b/samples/client/petstore/javascript-es6/src/test/model/Dog.spec.js
new file mode 100644
index 000000000000..6421a501134c
--- /dev/null
+++ b/samples/client/petstore/javascript-es6/src/test/model/Dog.spec.js
@@ -0,0 +1,65 @@
+/**
+ * Swagger Petstore
+ * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
+ *
+ * OpenAPI spec version: 1.0.0
+ * Contact: apiteam@swagger.io
+ *
+ * NOTE: This class is auto generated by the swagger code generator program.
+ * https://github.com/swagger-api/swagger-codegen.git
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+  if (typeof define === 'function' && define.amd) {
+    // AMD.
+    define(['expect.js', '../../src/index'], factory);
+  } else if (typeof module === 'object' && module.exports) {
+    // CommonJS-like environments that support module.exports, like Node.
+    factory(require('expect.js'), require('../../src/index'));
+  } else {
+    // Browser globals (root is window)
+    factory(root.expect, root.SwaggerPetstore);
+  }
+}(this, function(expect, SwaggerPetstore) {
+  'use strict';
+
+  var instance;
+
+  beforeEach(function() {
+    instance = new SwaggerPetstore.Dog();
+  });
+
+  var getProperty = function(object, getter, property) {
+    // Use getter method if present; otherwise, get the property directly.
+    if (typeof object[getter] === 'function')
+      return object[getter]();
+    else
+      return object[property];
+  }
+
+  var setProperty = function(object, setter, property, value) {
+    // Use setter method if present; otherwise, set the property directly.
+    if (typeof object[setter] === 'function')
+      object[setter](value);
+    else
+      object[property] = value;
+  }
+
+  describe('Dog', function() {
+    it('should create an instance of Dog', function() {
+      // uncomment below and update the code to test Dog
+      //var instane = new SwaggerPetstore.Dog();
+      //expect(instance).to.be.a(SwaggerPetstore.Dog);
+    });
+
+    it('should have the property breed (base name: "breed")', function() {
+      // uncomment below and update the code to test the property breed
+      //var instane = new SwaggerPetstore.Dog();
+      //expect(instance).to.be();
+    });
+
+  });
+
+}));
diff --git a/samples/client/petstore/javascript-es6/src/test/model/EnumArrays.spec.js b/samples/client/petstore/javascript-es6/src/test/model/EnumArrays.spec.js
new file mode 100644
index 000000000000..45c8d595bb64
--- /dev/null
+++ b/samples/client/petstore/javascript-es6/src/test/model/EnumArrays.spec.js
@@ -0,0 +1,71 @@
+/**
+ * Swagger Petstore
+ * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
+ *
+ * OpenAPI spec version: 1.0.0
+ * Contact: apiteam@swagger.io
+ *
+ * NOTE: This class is auto generated by the swagger code generator program.
+ * https://github.com/swagger-api/swagger-codegen.git
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+  if (typeof define === 'function' && define.amd) {
+    // AMD.
+    define(['expect.js', '../../src/index'], factory);
+  } else if (typeof module === 'object' && module.exports) {
+    // CommonJS-like environments that support module.exports, like Node.
+    factory(require('expect.js'), require('../../src/index'));
+  } else {
+    // Browser globals (root is window)
+    factory(root.expect, root.SwaggerPetstore);
+  }
+}(this, function(expect, SwaggerPetstore) {
+  'use strict';
+
+  var instance;
+
+  beforeEach(function() {
+    instance = new SwaggerPetstore.EnumArrays();
+  });
+
+  var getProperty = function(object, getter, property) {
+    // Use getter method if present; otherwise, get the property directly.
+    if (typeof object[getter] === 'function')
+      return object[getter]();
+    else
+      return object[property];
+  }
+
+  var setProperty = function(object, setter, property, value) {
+    // Use setter method if present; otherwise, set the property directly.
+    if (typeof object[setter] === 'function')
+      object[setter](value);
+    else
+      object[property] = value;
+  }
+
+  describe('EnumArrays', function() {
+    it('should create an instance of EnumArrays', function() {
+      // uncomment below and update the code to test EnumArrays
+      //var instane = new SwaggerPetstore.EnumArrays();
+      //expect(instance).to.be.a(SwaggerPetstore.EnumArrays);
+    });
+
+    it('should have the property justSymbol (base name: "just_symbol")', function() {
+      // uncomment below and update the code to test the property justSymbol
+      //var instane = new SwaggerPetstore.EnumArrays();
+      //expect(instance).to.be();
+    });
+
+    it('should have the property arrayEnum (base name: "array_enum")', function() {
+      // uncomment below and update the code to test the property arrayEnum
+      //var instane = new SwaggerPetstore.EnumArrays();
+      //expect(instance).to.be();
+    });
+
+  });
+
+}));
diff --git a/samples/client/petstore/javascript-es6/src/test/model/EnumClass.spec.js b/samples/client/petstore/javascript-es6/src/test/model/EnumClass.spec.js
new file mode 100644
index 000000000000..2f60b4fc4a4f
--- /dev/null
+++ b/samples/client/petstore/javascript-es6/src/test/model/EnumClass.spec.js
@@ -0,0 +1,58 @@
+/**
+ * Swagger Petstore
+ * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
+ *
+ * OpenAPI spec version: 1.0.0
+ * Contact: apiteam@swagger.io
+ *
+ * NOTE: This class is auto generated by the swagger code generator program.
+ * https://github.com/swagger-api/swagger-codegen.git
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+  if (typeof define === 'function' && define.amd) {
+    // AMD.
+    define(['expect.js', '../../src/index'], factory);
+  } else if (typeof module === 'object' && module.exports) {
+    // CommonJS-like environments that support module.exports, like Node.
+    factory(require('expect.js'), require('../../src/index'));
+  } else {
+    // Browser globals (root is window)
+    factory(root.expect, root.SwaggerPetstore);
+  }
+}(this, function(expect, SwaggerPetstore) {
+  'use strict';
+
+  var instance;
+
+  beforeEach(function() {
+  });
+
+  var getProperty = function(object, getter, property) {
+    // Use getter method if present; otherwise, get the property directly.
+    if (typeof object[getter] === 'function')
+      return object[getter]();
+    else
+      return object[property];
+  }
+
+  var setProperty = function(object, setter, property, value) {
+    // Use setter method if present; otherwise, set the property directly.
+    if (typeof object[setter] === 'function')
+      object[setter](value);
+    else
+      object[property] = value;
+  }
+
+  describe('EnumClass', function() {
+    it('should create an instance of EnumClass', function() {
+      // uncomment below and update the code to test EnumClass
+      //var instane = new SwaggerPetstore.EnumClass();
+      //expect(instance).to.be.a(SwaggerPetstore.EnumClass);
+    });
+
+  });
+
+}));
diff --git a/samples/client/petstore/javascript-es6/src/test/model/EnumTest.spec.js b/samples/client/petstore/javascript-es6/src/test/model/EnumTest.spec.js
new file mode 100644
index 000000000000..1a08cba3d727
--- /dev/null
+++ b/samples/client/petstore/javascript-es6/src/test/model/EnumTest.spec.js
@@ -0,0 +1,83 @@
+/**
+ * Swagger Petstore
+ * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
+ *
+ * OpenAPI spec version: 1.0.0
+ * Contact: apiteam@swagger.io
+ *
+ * NOTE: This class is auto generated by the swagger code generator program.
+ * https://github.com/swagger-api/swagger-codegen.git
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+  if (typeof define === 'function' && define.amd) {
+    // AMD.
+    define(['expect.js', '../../src/index'], factory);
+  } else if (typeof module === 'object' && module.exports) {
+    // CommonJS-like environments that support module.exports, like Node.
+    factory(require('expect.js'), require('../../src/index'));
+  } else {
+    // Browser globals (root is window)
+    factory(root.expect, root.SwaggerPetstore);
+  }
+}(this, function(expect, SwaggerPetstore) {
+  'use strict';
+
+  var instance;
+
+  beforeEach(function() {
+    instance = new SwaggerPetstore.EnumTest();
+  });
+
+  var getProperty = function(object, getter, property) {
+    // Use getter method if present; otherwise, get the property directly.
+    if (typeof object[getter] === 'function')
+      return object[getter]();
+    else
+      return object[property];
+  }
+
+  var setProperty = function(object, setter, property, value) {
+    // Use setter method if present; otherwise, set the property directly.
+    if (typeof object[setter] === 'function')
+      object[setter](value);
+    else
+      object[property] = value;
+  }
+
+  describe('EnumTest', function() {
+    it('should create an instance of EnumTest', function() {
+      // uncomment below and update the code to test EnumTest
+      //var instane = new SwaggerPetstore.EnumTest();
+      //expect(instance).to.be.a(SwaggerPetstore.EnumTest);
+    });
+
+    it('should have the property enumString (base name: "enum_string")', function() {
+      // uncomment below and update the code to test the property enumString
+      //var instane = new SwaggerPetstore.EnumTest();
+      //expect(instance).to.be();
+    });
+
+    it('should have the property enumInteger (base name: "enum_integer")', function() {
+      // uncomment below and update the code to test the property enumInteger
+      //var instane = new SwaggerPetstore.EnumTest();
+      //expect(instance).to.be();
+    });
+
+    it('should have the property enumNumber (base name: "enum_number")', function() {
+      // uncomment below and update the code to test the property enumNumber
+      //var instane = new SwaggerPetstore.EnumTest();
+      //expect(instance).to.be();
+    });
+
+    it('should have the property outerEnum (base name: "outerEnum")', function() {
+      // uncomment below and update the code to test the property outerEnum
+      //var instane = new SwaggerPetstore.EnumTest();
+      //expect(instance).to.be();
+    });
+
+  });
+
+}));
diff --git a/samples/client/petstore/javascript-es6/src/test/model/FormatTest.spec.js b/samples/client/petstore/javascript-es6/src/test/model/FormatTest.spec.js
new file mode 100644
index 000000000000..74b0b80c74e2
--- /dev/null
+++ b/samples/client/petstore/javascript-es6/src/test/model/FormatTest.spec.js
@@ -0,0 +1,137 @@
+/**
+ * Swagger Petstore
+ * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
+ *
+ * OpenAPI spec version: 1.0.0
+ * Contact: apiteam@swagger.io
+ *
+ * NOTE: This class is auto generated by the swagger code generator program.
+ * https://github.com/swagger-api/swagger-codegen.git
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+  if (typeof define === 'function' && define.amd) {
+    // AMD.
+    define(['expect.js', '../../src/index'], factory);
+  } else if (typeof module === 'object' && module.exports) {
+    // CommonJS-like environments that support module.exports, like Node.
+    factory(require('expect.js'), require('../../src/index'));
+  } else {
+    // Browser globals (root is window)
+    factory(root.expect, root.SwaggerPetstore);
+  }
+}(this, function(expect, SwaggerPetstore) {
+  'use strict';
+
+  var instance;
+
+  beforeEach(function() {
+    instance = new SwaggerPetstore.FormatTest();
+  });
+
+  var getProperty = function(object, getter, property) {
+    // Use getter method if present; otherwise, get the property directly.
+    if (typeof object[getter] === 'function')
+      return object[getter]();
+    else
+      return object[property];
+  }
+
+  var setProperty = function(object, setter, property, value) {
+    // Use setter method if present; otherwise, set the property directly.
+    if (typeof object[setter] === 'function')
+      object[setter](value);
+    else
+      object[property] = value;
+  }
+
+  describe('FormatTest', function() {
+    it('should create an instance of FormatTest', function() {
+      // uncomment below and update the code to test FormatTest
+      //var instane = new SwaggerPetstore.FormatTest();
+      //expect(instance).to.be.a(SwaggerPetstore.FormatTest);
+    });
+
+    it('should have the property integer (base name: "integer")', function() {
+      // uncomment below and update the code to test the property integer
+      //var instane = new SwaggerPetstore.FormatTest();
+      //expect(instance).to.be();
+    });
+
+    it('should have the property int32 (base name: "int32")', function() {
+      // uncomment below and update the code to test the property int32
+      //var instane = new SwaggerPetstore.FormatTest();
+      //expect(instance).to.be();
+    });
+
+    it('should have the property int64 (base name: "int64")', function() {
+      // uncomment below and update the code to test the property int64
+      //var instane = new SwaggerPetstore.FormatTest();
+      //expect(instance).to.be();
+    });
+
+    it('should have the property _number (base name: "number")', function() {
+      // uncomment below and update the code to test the property _number
+      //var instane = new SwaggerPetstore.FormatTest();
+      //expect(instance).to.be();
+    });
+
+    it('should have the property _float (base name: "float")', function() {
+      // uncomment below and update the code to test the property _float
+      //var instane = new SwaggerPetstore.FormatTest();
+      //expect(instance).to.be();
+    });
+
+    it('should have the property _double (base name: "double")', function() {
+      // uncomment below and update the code to test the property _double
+      //var instane = new SwaggerPetstore.FormatTest();
+      //expect(instance).to.be();
+    });
+
+    it('should have the property _string (base name: "string")', function() {
+      // uncomment below and update the code to test the property _string
+      //var instane = new SwaggerPetstore.FormatTest();
+      //expect(instance).to.be();
+    });
+
+    it('should have the property _byte (base name: "byte")', function() {
+      // uncomment below and update the code to test the property _byte
+      //var instane = new SwaggerPetstore.FormatTest();
+      //expect(instance).to.be();
+    });
+
+    it('should have the property binary (base name: "binary")', function() {
+      // uncomment below and update the code to test the property binary
+      //var instane = new SwaggerPetstore.FormatTest();
+      //expect(instance).to.be();
+    });
+
+    it('should have the property _date (base name: "date")', function() {
+      // uncomment below and update the code to test the property _date
+      //var instane = new SwaggerPetstore.FormatTest();
+      //expect(instance).to.be();
+    });
+
+    it('should have the property dateTime (base name: "dateTime")', function() {
+      // uncomment below and update the code to test the property dateTime
+      //var instane = new SwaggerPetstore.FormatTest();
+      //expect(instance).to.be();
+    });
+
+    it('should have the property uuid (base name: "uuid")', function() {
+      // uncomment below and update the code to test the property uuid
+      //var instane = new SwaggerPetstore.FormatTest();
+      //expect(instance).to.be();
+    });
+
+    it('should have the property password (base name: "password")', function() {
+      // uncomment below and update the code to test the property password
+      //var instane = new SwaggerPetstore.FormatTest();
+      //expect(instance).to.be();
+    });
+
+  });
+
+}));
diff --git a/samples/client/petstore/javascript-es6/src/test/model/HasOnlyReadOnly.spec.js b/samples/client/petstore/javascript-es6/src/test/model/HasOnlyReadOnly.spec.js
new file mode 100644
index 000000000000..ad4f4ba6d71e
--- /dev/null
+++ b/samples/client/petstore/javascript-es6/src/test/model/HasOnlyReadOnly.spec.js
@@ -0,0 +1,71 @@
+/**
+ * Swagger Petstore
+ * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
+ *
+ * OpenAPI spec version: 1.0.0
+ * Contact: apiteam@swagger.io
+ *
+ * NOTE: This class is auto generated by the swagger code generator program.
+ * https://github.com/swagger-api/swagger-codegen.git
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+  if (typeof define === 'function' && define.amd) {
+    // AMD.
+    define(['expect.js', '../../src/index'], factory);
+  } else if (typeof module === 'object' && module.exports) {
+    // CommonJS-like environments that support module.exports, like Node.
+    factory(require('expect.js'), require('../../src/index'));
+  } else {
+    // Browser globals (root is window)
+    factory(root.expect, root.SwaggerPetstore);
+  }
+}(this, function(expect, SwaggerPetstore) {
+  'use strict';
+
+  var instance;
+
+  beforeEach(function() {
+    instance = new SwaggerPetstore.HasOnlyReadOnly();
+  });
+
+  var getProperty = function(object, getter, property) {
+    // Use getter method if present; otherwise, get the property directly.
+    if (typeof object[getter] === 'function')
+      return object[getter]();
+    else
+      return object[property];
+  }
+
+  var setProperty = function(object, setter, property, value) {
+    // Use setter method if present; otherwise, set the property directly.
+    if (typeof object[setter] === 'function')
+      object[setter](value);
+    else
+      object[property] = value;
+  }
+
+  describe('HasOnlyReadOnly', function() {
+    it('should create an instance of HasOnlyReadOnly', function() {
+      // uncomment below and update the code to test HasOnlyReadOnly
+      //var instane = new SwaggerPetstore.HasOnlyReadOnly();
+      //expect(instance).to.be.a(SwaggerPetstore.HasOnlyReadOnly);
+    });
+
+    it('should have the property bar (base name: "bar")', function() {
+      // uncomment below and update the code to test the property bar
+      //var instane = new SwaggerPetstore.HasOnlyReadOnly();
+      //expect(instance).to.be();
+    });
+
+    it('should have the property foo (base name: "foo")', function() {
+      // uncomment below and update the code to test the property foo
+      //var instane = new SwaggerPetstore.HasOnlyReadOnly();
+      //expect(instance).to.be();
+    });
+
+  });
+
+}));
diff --git a/samples/client/petstore/javascript-es6/src/test/model/List.spec.js b/samples/client/petstore/javascript-es6/src/test/model/List.spec.js
new file mode 100644
index 000000000000..7ea30e82fc81
--- /dev/null
+++ b/samples/client/petstore/javascript-es6/src/test/model/List.spec.js
@@ -0,0 +1,65 @@
+/**
+ * Swagger Petstore
+ * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
+ *
+ * OpenAPI spec version: 1.0.0
+ * Contact: apiteam@swagger.io
+ *
+ * NOTE: This class is auto generated by the swagger code generator program.
+ * https://github.com/swagger-api/swagger-codegen.git
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+  if (typeof define === 'function' && define.amd) {
+    // AMD.
+    define(['expect.js', '../../src/index'], factory);
+  } else if (typeof module === 'object' && module.exports) {
+    // CommonJS-like environments that support module.exports, like Node.
+    factory(require('expect.js'), require('../../src/index'));
+  } else {
+    // Browser globals (root is window)
+    factory(root.expect, root.SwaggerPetstore);
+  }
+}(this, function(expect, SwaggerPetstore) {
+  'use strict';
+
+  var instance;
+
+  beforeEach(function() {
+    instance = new SwaggerPetstore.List();
+  });
+
+  var getProperty = function(object, getter, property) {
+    // Use getter method if present; otherwise, get the property directly.
+    if (typeof object[getter] === 'function')
+      return object[getter]();
+    else
+      return object[property];
+  }
+
+  var setProperty = function(object, setter, property, value) {
+    // Use setter method if present; otherwise, set the property directly.
+    if (typeof object[setter] === 'function')
+      object[setter](value);
+    else
+      object[property] = value;
+  }
+
+  describe('List', function() {
+    it('should create an instance of List', function() {
+      // uncomment below and update the code to test List
+      //var instane = new SwaggerPetstore.List();
+      //expect(instance).to.be.a(SwaggerPetstore.List);
+    });
+
+    it('should have the property _123List (base name: "123-list")', function() {
+      // uncomment below and update the code to test the property _123List
+      //var instane = new SwaggerPetstore.List();
+      //expect(instance).to.be();
+    });
+
+  });
+
+}));
diff --git a/samples/client/petstore/javascript-es6/src/test/model/MapTest.spec.js b/samples/client/petstore/javascript-es6/src/test/model/MapTest.spec.js
new file mode 100644
index 000000000000..1a67fcf7ae6b
--- /dev/null
+++ b/samples/client/petstore/javascript-es6/src/test/model/MapTest.spec.js
@@ -0,0 +1,71 @@
+/**
+ * Swagger Petstore
+ * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
+ *
+ * OpenAPI spec version: 1.0.0
+ * Contact: apiteam@swagger.io
+ *
+ * NOTE: This class is auto generated by the swagger code generator program.
+ * https://github.com/swagger-api/swagger-codegen.git
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+  if (typeof define === 'function' && define.amd) {
+    // AMD.
+    define(['expect.js', '../../src/index'], factory);
+  } else if (typeof module === 'object' && module.exports) {
+    // CommonJS-like environments that support module.exports, like Node.
+    factory(require('expect.js'), require('../../src/index'));
+  } else {
+    // Browser globals (root is window)
+    factory(root.expect, root.SwaggerPetstore);
+  }
+}(this, function(expect, SwaggerPetstore) {
+  'use strict';
+
+  var instance;
+
+  beforeEach(function() {
+    instance = new SwaggerPetstore.MapTest();
+  });
+
+  var getProperty = function(object, getter, property) {
+    // Use getter method if present; otherwise, get the property directly.
+    if (typeof object[getter] === 'function')
+      return object[getter]();
+    else
+      return object[property];
+  }
+
+  var setProperty = function(object, setter, property, value) {
+    // Use setter method if present; otherwise, set the property directly.
+    if (typeof object[setter] === 'function')
+      object[setter](value);
+    else
+      object[property] = value;
+  }
+
+  describe('MapTest', function() {
+    it('should create an instance of MapTest', function() {
+      // uncomment below and update the code to test MapTest
+      //var instane = new SwaggerPetstore.MapTest();
+      //expect(instance).to.be.a(SwaggerPetstore.MapTest);
+    });
+
+    it('should have the property mapMapOfString (base name: "map_map_of_string")', function() {
+      // uncomment below and update the code to test the property mapMapOfString
+      //var instane = new SwaggerPetstore.MapTest();
+      //expect(instance).to.be();
+    });
+
+    it('should have the property mapOfEnumString (base name: "map_of_enum_string")', function() {
+      // uncomment below and update the code to test the property mapOfEnumString
+      //var instane = new SwaggerPetstore.MapTest();
+      //expect(instance).to.be();
+    });
+
+  });
+
+}));
diff --git a/samples/client/petstore/javascript-es6/src/test/model/MixedPropertiesAndAdditionalPropertiesClass.spec.js b/samples/client/petstore/javascript-es6/src/test/model/MixedPropertiesAndAdditionalPropertiesClass.spec.js
new file mode 100644
index 000000000000..be493898584e
--- /dev/null
+++ b/samples/client/petstore/javascript-es6/src/test/model/MixedPropertiesAndAdditionalPropertiesClass.spec.js
@@ -0,0 +1,77 @@
+/**
+ * Swagger Petstore
+ * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
+ *
+ * OpenAPI spec version: 1.0.0
+ * Contact: apiteam@swagger.io
+ *
+ * NOTE: This class is auto generated by the swagger code generator program.
+ * https://github.com/swagger-api/swagger-codegen.git
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+  if (typeof define === 'function' && define.amd) {
+    // AMD.
+    define(['expect.js', '../../src/index'], factory);
+  } else if (typeof module === 'object' && module.exports) {
+    // CommonJS-like environments that support module.exports, like Node.
+    factory(require('expect.js'), require('../../src/index'));
+  } else {
+    // Browser globals (root is window)
+    factory(root.expect, root.SwaggerPetstore);
+  }
+}(this, function(expect, SwaggerPetstore) {
+  'use strict';
+
+  var instance;
+
+  beforeEach(function() {
+    instance = new SwaggerPetstore.MixedPropertiesAndAdditionalPropertiesClass();
+  });
+
+  var getProperty = function(object, getter, property) {
+    // Use getter method if present; otherwise, get the property directly.
+    if (typeof object[getter] === 'function')
+      return object[getter]();
+    else
+      return object[property];
+  }
+
+  var setProperty = function(object, setter, property, value) {
+    // Use setter method if present; otherwise, set the property directly.
+    if (typeof object[setter] === 'function')
+      object[setter](value);
+    else
+      object[property] = value;
+  }
+
+  describe('MixedPropertiesAndAdditionalPropertiesClass', function() {
+    it('should create an instance of MixedPropertiesAndAdditionalPropertiesClass', function() {
+      // uncomment below and update the code to test MixedPropertiesAndAdditionalPropertiesClass
+      //var instane = new SwaggerPetstore.MixedPropertiesAndAdditionalPropertiesClass();
+      //expect(instance).to.be.a(SwaggerPetstore.MixedPropertiesAndAdditionalPropertiesClass);
+    });
+
+    it('should have the property uuid (base name: "uuid")', function() {
+      // uncomment below and update the code to test the property uuid
+      //var instane = new SwaggerPetstore.MixedPropertiesAndAdditionalPropertiesClass();
+      //expect(instance).to.be();
+    });
+
+    it('should have the property dateTime (base name: "dateTime")', function() {
+      // uncomment below and update the code to test the property dateTime
+      //var instane = new SwaggerPetstore.MixedPropertiesAndAdditionalPropertiesClass();
+      //expect(instance).to.be();
+    });
+
+    it('should have the property map (base name: "map")', function() {
+      // uncomment below and update the code to test the property map
+      //var instane = new SwaggerPetstore.MixedPropertiesAndAdditionalPropertiesClass();
+      //expect(instance).to.be();
+    });
+
+  });
+
+}));
diff --git a/samples/client/petstore/javascript-es6/src/test/model/Model200Response.spec.js b/samples/client/petstore/javascript-es6/src/test/model/Model200Response.spec.js
new file mode 100644
index 000000000000..5c513a36e1ac
--- /dev/null
+++ b/samples/client/petstore/javascript-es6/src/test/model/Model200Response.spec.js
@@ -0,0 +1,71 @@
+/**
+ * Swagger Petstore
+ * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
+ *
+ * OpenAPI spec version: 1.0.0
+ * Contact: apiteam@swagger.io
+ *
+ * NOTE: This class is auto generated by the swagger code generator program.
+ * https://github.com/swagger-api/swagger-codegen.git
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+  if (typeof define === 'function' && define.amd) {
+    // AMD.
+    define(['expect.js', '../../src/index'], factory);
+  } else if (typeof module === 'object' && module.exports) {
+    // CommonJS-like environments that support module.exports, like Node.
+    factory(require('expect.js'), require('../../src/index'));
+  } else {
+    // Browser globals (root is window)
+    factory(root.expect, root.SwaggerPetstore);
+  }
+}(this, function(expect, SwaggerPetstore) {
+  'use strict';
+
+  var instance;
+
+  beforeEach(function() {
+    instance = new SwaggerPetstore.Model200Response();
+  });
+
+  var getProperty = function(object, getter, property) {
+    // Use getter method if present; otherwise, get the property directly.
+    if (typeof object[getter] === 'function')
+      return object[getter]();
+    else
+      return object[property];
+  }
+
+  var setProperty = function(object, setter, property, value) {
+    // Use setter method if present; otherwise, set the property directly.
+    if (typeof object[setter] === 'function')
+      object[setter](value);
+    else
+      object[property] = value;
+  }
+
+  describe('Model200Response', function() {
+    it('should create an instance of Model200Response', function() {
+      // uncomment below and update the code to test Model200Response
+      //var instane = new SwaggerPetstore.Model200Response();
+      //expect(instance).to.be.a(SwaggerPetstore.Model200Response);
+    });
+
+    it('should have the property name (base name: "name")', function() {
+      // uncomment below and update the code to test the property name
+      //var instane = new SwaggerPetstore.Model200Response();
+      //expect(instance).to.be();
+    });
+
+    it('should have the property _class (base name: "class")', function() {
+      // uncomment below and update the code to test the property _class
+      //var instane = new SwaggerPetstore.Model200Response();
+      //expect(instance).to.be();
+    });
+
+  });
+
+}));
diff --git a/samples/client/petstore/javascript-es6/src/test/model/ModelReturn.spec.js b/samples/client/petstore/javascript-es6/src/test/model/ModelReturn.spec.js
new file mode 100644
index 000000000000..62b5f6ba57d3
--- /dev/null
+++ b/samples/client/petstore/javascript-es6/src/test/model/ModelReturn.spec.js
@@ -0,0 +1,65 @@
+/**
+ * Swagger Petstore
+ * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
+ *
+ * OpenAPI spec version: 1.0.0
+ * Contact: apiteam@swagger.io
+ *
+ * NOTE: This class is auto generated by the swagger code generator program.
+ * https://github.com/swagger-api/swagger-codegen.git
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+  if (typeof define === 'function' && define.amd) {
+    // AMD.
+    define(['expect.js', '../../src/index'], factory);
+  } else if (typeof module === 'object' && module.exports) {
+    // CommonJS-like environments that support module.exports, like Node.
+    factory(require('expect.js'), require('../../src/index'));
+  } else {
+    // Browser globals (root is window)
+    factory(root.expect, root.SwaggerPetstore);
+  }
+}(this, function(expect, SwaggerPetstore) {
+  'use strict';
+
+  var instance;
+
+  beforeEach(function() {
+    instance = new SwaggerPetstore.ModelReturn();
+  });
+
+  var getProperty = function(object, getter, property) {
+    // Use getter method if present; otherwise, get the property directly.
+    if (typeof object[getter] === 'function')
+      return object[getter]();
+    else
+      return object[property];
+  }
+
+  var setProperty = function(object, setter, property, value) {
+    // Use setter method if present; otherwise, set the property directly.
+    if (typeof object[setter] === 'function')
+      object[setter](value);
+    else
+      object[property] = value;
+  }
+
+  describe('ModelReturn', function() {
+    it('should create an instance of ModelReturn', function() {
+      // uncomment below and update the code to test ModelReturn
+      //var instane = new SwaggerPetstore.ModelReturn();
+      //expect(instance).to.be.a(SwaggerPetstore.ModelReturn);
+    });
+
+    it('should have the property _return (base name: "return")', function() {
+      // uncomment below and update the code to test the property _return
+      //var instane = new SwaggerPetstore.ModelReturn();
+      //expect(instance).to.be();
+    });
+
+  });
+
+}));
diff --git a/samples/client/petstore/javascript-es6/src/test/model/Name.spec.js b/samples/client/petstore/javascript-es6/src/test/model/Name.spec.js
new file mode 100644
index 000000000000..c9caf576bd02
--- /dev/null
+++ b/samples/client/petstore/javascript-es6/src/test/model/Name.spec.js
@@ -0,0 +1,83 @@
+/**
+ * Swagger Petstore
+ * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
+ *
+ * OpenAPI spec version: 1.0.0
+ * Contact: apiteam@swagger.io
+ *
+ * NOTE: This class is auto generated by the swagger code generator program.
+ * https://github.com/swagger-api/swagger-codegen.git
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+  if (typeof define === 'function' && define.amd) {
+    // AMD.
+    define(['expect.js', '../../src/index'], factory);
+  } else if (typeof module === 'object' && module.exports) {
+    // CommonJS-like environments that support module.exports, like Node.
+    factory(require('expect.js'), require('../../src/index'));
+  } else {
+    // Browser globals (root is window)
+    factory(root.expect, root.SwaggerPetstore);
+  }
+}(this, function(expect, SwaggerPetstore) {
+  'use strict';
+
+  var instance;
+
+  beforeEach(function() {
+    instance = new SwaggerPetstore.Name();
+  });
+
+  var getProperty = function(object, getter, property) {
+    // Use getter method if present; otherwise, get the property directly.
+    if (typeof object[getter] === 'function')
+      return object[getter]();
+    else
+      return object[property];
+  }
+
+  var setProperty = function(object, setter, property, value) {
+    // Use setter method if present; otherwise, set the property directly.
+    if (typeof object[setter] === 'function')
+      object[setter](value);
+    else
+      object[property] = value;
+  }
+
+  describe('Name', function() {
+    it('should create an instance of Name', function() {
+      // uncomment below and update the code to test Name
+      //var instane = new SwaggerPetstore.Name();
+      //expect(instance).to.be.a(SwaggerPetstore.Name);
+    });
+
+    it('should have the property name (base name: "name")', function() {
+      // uncomment below and update the code to test the property name
+      //var instane = new SwaggerPetstore.Name();
+      //expect(instance).to.be();
+    });
+
+    it('should have the property snakeCase (base name: "snake_case")', function() {
+      // uncomment below and update the code to test the property snakeCase
+      //var instane = new SwaggerPetstore.Name();
+      //expect(instance).to.be();
+    });
+
+    it('should have the property property (base name: "property")', function() {
+      // uncomment below and update the code to test the property property
+      //var instane = new SwaggerPetstore.Name();
+      //expect(instance).to.be();
+    });
+
+    it('should have the property _123Number (base name: "123Number")', function() {
+      // uncomment below and update the code to test the property _123Number
+      //var instane = new SwaggerPetstore.Name();
+      //expect(instance).to.be();
+    });
+
+  });
+
+}));
diff --git a/samples/client/petstore/javascript-es6/src/test/model/NumberOnly.spec.js b/samples/client/petstore/javascript-es6/src/test/model/NumberOnly.spec.js
new file mode 100644
index 000000000000..641c03b13a49
--- /dev/null
+++ b/samples/client/petstore/javascript-es6/src/test/model/NumberOnly.spec.js
@@ -0,0 +1,65 @@
+/**
+ * Swagger Petstore
+ * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
+ *
+ * OpenAPI spec version: 1.0.0
+ * Contact: apiteam@swagger.io
+ *
+ * NOTE: This class is auto generated by the swagger code generator program.
+ * https://github.com/swagger-api/swagger-codegen.git
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+  if (typeof define === 'function' && define.amd) {
+    // AMD.
+    define(['expect.js', '../../src/index'], factory);
+  } else if (typeof module === 'object' && module.exports) {
+    // CommonJS-like environments that support module.exports, like Node.
+    factory(require('expect.js'), require('../../src/index'));
+  } else {
+    // Browser globals (root is window)
+    factory(root.expect, root.SwaggerPetstore);
+  }
+}(this, function(expect, SwaggerPetstore) {
+  'use strict';
+
+  var instance;
+
+  beforeEach(function() {
+    instance = new SwaggerPetstore.NumberOnly();
+  });
+
+  var getProperty = function(object, getter, property) {
+    // Use getter method if present; otherwise, get the property directly.
+    if (typeof object[getter] === 'function')
+      return object[getter]();
+    else
+      return object[property];
+  }
+
+  var setProperty = function(object, setter, property, value) {
+    // Use setter method if present; otherwise, set the property directly.
+    if (typeof object[setter] === 'function')
+      object[setter](value);
+    else
+      object[property] = value;
+  }
+
+  describe('NumberOnly', function() {
+    it('should create an instance of NumberOnly', function() {
+      // uncomment below and update the code to test NumberOnly
+      //var instane = new SwaggerPetstore.NumberOnly();
+      //expect(instance).to.be.a(SwaggerPetstore.NumberOnly);
+    });
+
+    it('should have the property justNumber (base name: "JustNumber")', function() {
+      // uncomment below and update the code to test the property justNumber
+      //var instane = new SwaggerPetstore.NumberOnly();
+      //expect(instance).to.be();
+    });
+
+  });
+
+}));
diff --git a/samples/client/petstore/javascript-es6/src/test/model/Order.spec.js b/samples/client/petstore/javascript-es6/src/test/model/Order.spec.js
new file mode 100644
index 000000000000..69527dc8fdbd
--- /dev/null
+++ b/samples/client/petstore/javascript-es6/src/test/model/Order.spec.js
@@ -0,0 +1,95 @@
+/**
+ * Swagger Petstore
+ * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
+ *
+ * OpenAPI spec version: 1.0.0
+ * Contact: apiteam@swagger.io
+ *
+ * NOTE: This class is auto generated by the swagger code generator program.
+ * https://github.com/swagger-api/swagger-codegen.git
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+  if (typeof define === 'function' && define.amd) {
+    // AMD.
+    define(['expect.js', '../../src/index'], factory);
+  } else if (typeof module === 'object' && module.exports) {
+    // CommonJS-like environments that support module.exports, like Node.
+    factory(require('expect.js'), require('../../src/index'));
+  } else {
+    // Browser globals (root is window)
+    factory(root.expect, root.SwaggerPetstore);
+  }
+}(this, function(expect, SwaggerPetstore) {
+  'use strict';
+
+  var instance;
+
+  beforeEach(function() {
+    instance = new SwaggerPetstore.Order();
+  });
+
+  var getProperty = function(object, getter, property) {
+    // Use getter method if present; otherwise, get the property directly.
+    if (typeof object[getter] === 'function')
+      return object[getter]();
+    else
+      return object[property];
+  }
+
+  var setProperty = function(object, setter, property, value) {
+    // Use setter method if present; otherwise, set the property directly.
+    if (typeof object[setter] === 'function')
+      object[setter](value);
+    else
+      object[property] = value;
+  }
+
+  describe('Order', function() {
+    it('should create an instance of Order', function() {
+      // uncomment below and update the code to test Order
+      //var instane = new SwaggerPetstore.Order();
+      //expect(instance).to.be.a(SwaggerPetstore.Order);
+    });
+
+    it('should have the property id (base name: "id")', function() {
+      // uncomment below and update the code to test the property id
+      //var instane = new SwaggerPetstore.Order();
+      //expect(instance).to.be();
+    });
+
+    it('should have the property petId (base name: "petId")', function() {
+      // uncomment below and update the code to test the property petId
+      //var instane = new SwaggerPetstore.Order();
+      //expect(instance).to.be();
+    });
+
+    it('should have the property quantity (base name: "quantity")', function() {
+      // uncomment below and update the code to test the property quantity
+      //var instane = new SwaggerPetstore.Order();
+      //expect(instance).to.be();
+    });
+
+    it('should have the property shipDate (base name: "shipDate")', function() {
+      // uncomment below and update the code to test the property shipDate
+      //var instane = new SwaggerPetstore.Order();
+      //expect(instance).to.be();
+    });
+
+    it('should have the property status (base name: "status")', function() {
+      // uncomment below and update the code to test the property status
+      //var instane = new SwaggerPetstore.Order();
+      //expect(instance).to.be();
+    });
+
+    it('should have the property complete (base name: "complete")', function() {
+      // uncomment below and update the code to test the property complete
+      //var instane = new SwaggerPetstore.Order();
+      //expect(instance).to.be();
+    });
+
+  });
+
+}));
diff --git a/samples/client/petstore/javascript-es6/src/test/model/OuterBoolean.spec.js b/samples/client/petstore/javascript-es6/src/test/model/OuterBoolean.spec.js
new file mode 100644
index 000000000000..765f758cd095
--- /dev/null
+++ b/samples/client/petstore/javascript-es6/src/test/model/OuterBoolean.spec.js
@@ -0,0 +1,60 @@
+/**
+ * Swagger Petstore
+ * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
+ *
+ * OpenAPI spec version: 1.0.0
+ * Contact: apiteam@swagger.io
+ *
+ * NOTE: This class is auto generated by the swagger code generator program.
+ * https://github.com/swagger-api/swagger-codegen.git
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+  if (typeof define === 'function' && define.amd) {
+    // AMD.
+    define(['expect.js', '../../src/index'], factory);
+  } else if (typeof module === 'object' && module.exports) {
+    // CommonJS-like environments that support module.exports, like Node.
+    factory(require('expect.js'), require('../../src/index'));
+  } else {
+    // Browser globals (root is window)
+    factory(root.expect, root.SwaggerPetstore);
+  }
+}(this, function(expect, SwaggerPetstore) {
+  'use strict';
+
+  var instance;
+
+  beforeEach(function() {
+    // OuterBoolean is not a member of SwaggerPetstore
+    //instance = new SwaggerPetstore.OuterBoolean();
+  });
+
+  var getProperty = function(object, getter, property) {
+    // Use getter method if present; otherwise, get the property directly.
+    if (typeof object[getter] === 'function')
+      return object[getter]();
+    else
+      return object[property];
+  }
+
+  var setProperty = function(object, setter, property, value) {
+    // Use setter method if present; otherwise, set the property directly.
+    if (typeof object[setter] === 'function')
+      object[setter](value);
+    else
+      object[property] = value;
+  }
+
+  describe('OuterBoolean', function() {
+    it('should create an instance of OuterBoolean', function() {
+      // uncomment below and update the code to test OuterBoolean
+      //var instane = new SwaggerPetstore.OuterBoolean();
+      //expect(instance).to.be.a(SwaggerPetstore.OuterBoolean);
+    });
+
+  });
+
+}));
diff --git a/samples/client/petstore/javascript-es6/src/test/model/OuterComposite.spec.js b/samples/client/petstore/javascript-es6/src/test/model/OuterComposite.spec.js
new file mode 100644
index 000000000000..6fd830b7c0e2
--- /dev/null
+++ b/samples/client/petstore/javascript-es6/src/test/model/OuterComposite.spec.js
@@ -0,0 +1,77 @@
+/**
+ * Swagger Petstore
+ * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
+ *
+ * OpenAPI spec version: 1.0.0
+ * Contact: apiteam@swagger.io
+ *
+ * NOTE: This class is auto generated by the swagger code generator program.
+ * https://github.com/swagger-api/swagger-codegen.git
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+  if (typeof define === 'function' && define.amd) {
+    // AMD.
+    define(['expect.js', '../../src/index'], factory);
+  } else if (typeof module === 'object' && module.exports) {
+    // CommonJS-like environments that support module.exports, like Node.
+    factory(require('expect.js'), require('../../src/index'));
+  } else {
+    // Browser globals (root is window)
+    factory(root.expect, root.SwaggerPetstore);
+  }
+}(this, function(expect, SwaggerPetstore) {
+  'use strict';
+
+  var instance;
+
+  beforeEach(function() {
+    instance = new SwaggerPetstore.OuterComposite();
+  });
+
+  var getProperty = function(object, getter, property) {
+    // Use getter method if present; otherwise, get the property directly.
+    if (typeof object[getter] === 'function')
+      return object[getter]();
+    else
+      return object[property];
+  }
+
+  var setProperty = function(object, setter, property, value) {
+    // Use setter method if present; otherwise, set the property directly.
+    if (typeof object[setter] === 'function')
+      object[setter](value);
+    else
+      object[property] = value;
+  }
+
+  describe('OuterComposite', function() {
+    it('should create an instance of OuterComposite', function() {
+      // uncomment below and update the code to test OuterComposite
+      //var instane = new SwaggerPetstore.OuterComposite();
+      //expect(instance).to.be.a(SwaggerPetstore.OuterComposite);
+    });
+
+    it('should have the property myNumber (base name: "my_number")', function() {
+      // uncomment below and update the code to test the property myNumber
+      //var instane = new SwaggerPetstore.OuterComposite();
+      //expect(instance).to.be();
+    });
+
+    it('should have the property myString (base name: "my_string")', function() {
+      // uncomment below and update the code to test the property myString
+      //var instane = new SwaggerPetstore.OuterComposite();
+      //expect(instance).to.be();
+    });
+
+    it('should have the property myBoolean (base name: "my_boolean")', function() {
+      // uncomment below and update the code to test the property myBoolean
+      //var instane = new SwaggerPetstore.OuterComposite();
+      //expect(instance).to.be();
+    });
+
+  });
+
+}));
diff --git a/samples/client/petstore/javascript-es6/src/test/model/OuterEnum.spec.js b/samples/client/petstore/javascript-es6/src/test/model/OuterEnum.spec.js
new file mode 100644
index 000000000000..14c26a3aef56
--- /dev/null
+++ b/samples/client/petstore/javascript-es6/src/test/model/OuterEnum.spec.js
@@ -0,0 +1,58 @@
+/**
+ * Swagger Petstore
+ * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
+ *
+ * OpenAPI spec version: 1.0.0
+ * Contact: apiteam@swagger.io
+ *
+ * NOTE: This class is auto generated by the swagger code generator program.
+ * https://github.com/swagger-api/swagger-codegen.git
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+  if (typeof define === 'function' && define.amd) {
+    // AMD.
+    define(['expect.js', '../../src/index'], factory);
+  } else if (typeof module === 'object' && module.exports) {
+    // CommonJS-like environments that support module.exports, like Node.
+    factory(require('expect.js'), require('../../src/index'));
+  } else {
+    // Browser globals (root is window)
+    factory(root.expect, root.SwaggerPetstore);
+  }
+}(this, function(expect, SwaggerPetstore) {
+  'use strict';
+
+  var instance;
+
+  beforeEach(function() {
+  });
+
+  var getProperty = function(object, getter, property) {
+    // Use getter method if present; otherwise, get the property directly.
+    if (typeof object[getter] === 'function')
+      return object[getter]();
+    else
+      return object[property];
+  }
+
+  var setProperty = function(object, setter, property, value) {
+    // Use setter method if present; otherwise, set the property directly.
+    if (typeof object[setter] === 'function')
+      object[setter](value);
+    else
+      object[property] = value;
+  }
+
+  describe('OuterEnum', function() {
+    it('should create an instance of OuterEnum', function() {
+      // uncomment below and update the code to test OuterEnum
+      //var instane = new SwaggerPetstore.OuterEnum();
+      //expect(instance).to.be.a(SwaggerPetstore.OuterEnum);
+    });
+
+  });
+
+}));
diff --git a/samples/client/petstore/javascript-es6/src/test/model/OuterNumber.spec.js b/samples/client/petstore/javascript-es6/src/test/model/OuterNumber.spec.js
new file mode 100644
index 000000000000..2466fbe6dc9f
--- /dev/null
+++ b/samples/client/petstore/javascript-es6/src/test/model/OuterNumber.spec.js
@@ -0,0 +1,60 @@
+/**
+ * Swagger Petstore
+ * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
+ *
+ * OpenAPI spec version: 1.0.0
+ * Contact: apiteam@swagger.io
+ *
+ * NOTE: This class is auto generated by the swagger code generator program.
+ * https://github.com/swagger-api/swagger-codegen.git
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+  if (typeof define === 'function' && define.amd) {
+    // AMD.
+    define(['expect.js', '../../src/index'], factory);
+  } else if (typeof module === 'object' && module.exports) {
+    // CommonJS-like environments that support module.exports, like Node.
+    factory(require('expect.js'), require('../../src/index'));
+  } else {
+    // Browser globals (root is window)
+    factory(root.expect, root.SwaggerPetstore);
+  }
+}(this, function(expect, SwaggerPetstore) {
+  'use strict';
+
+  var instance;
+
+  beforeEach(function() {
+    // OuterNumber is not a member of SwaggerPetstore
+    //instance = new SwaggerPetstore.OuterNumber();
+  });
+
+  var getProperty = function(object, getter, property) {
+    // Use getter method if present; otherwise, get the property directly.
+    if (typeof object[getter] === 'function')
+      return object[getter]();
+    else
+      return object[property];
+  }
+
+  var setProperty = function(object, setter, property, value) {
+    // Use setter method if present; otherwise, set the property directly.
+    if (typeof object[setter] === 'function')
+      object[setter](value);
+    else
+      object[property] = value;
+  }
+
+  describe('OuterNumber', function() {
+    it('should create an instance of OuterNumber', function() {
+      // uncomment below and update the code to test OuterNumber
+      //var instane = new SwaggerPetstore.OuterNumber();
+      //expect(instance).to.be.a(SwaggerPetstore.OuterNumber);
+    });
+
+  });
+
+}));
diff --git a/samples/client/petstore/javascript-es6/src/test/model/OuterString.spec.js b/samples/client/petstore/javascript-es6/src/test/model/OuterString.spec.js
new file mode 100644
index 000000000000..46d6c579bc9f
--- /dev/null
+++ b/samples/client/petstore/javascript-es6/src/test/model/OuterString.spec.js
@@ -0,0 +1,60 @@
+/**
+ * Swagger Petstore
+ * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
+ *
+ * OpenAPI spec version: 1.0.0
+ * Contact: apiteam@swagger.io
+ *
+ * NOTE: This class is auto generated by the swagger code generator program.
+ * https://github.com/swagger-api/swagger-codegen.git
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+  if (typeof define === 'function' && define.amd) {
+    // AMD.
+    define(['expect.js', '../../src/index'], factory);
+  } else if (typeof module === 'object' && module.exports) {
+    // CommonJS-like environments that support module.exports, like Node.
+    factory(require('expect.js'), require('../../src/index'));
+  } else {
+    // Browser globals (root is window)
+    factory(root.expect, root.SwaggerPetstore);
+  }
+}(this, function(expect, SwaggerPetstore) {
+  'use strict';
+
+  var instance;
+
+  beforeEach(function() {
+    // OuterString is not a member of SwaggerPetstore
+    //instance = new SwaggerPetstore.OuterString();
+  });
+
+  var getProperty = function(object, getter, property) {
+    // Use getter method if present; otherwise, get the property directly.
+    if (typeof object[getter] === 'function')
+      return object[getter]();
+    else
+      return object[property];
+  }
+
+  var setProperty = function(object, setter, property, value) {
+    // Use setter method if present; otherwise, set the property directly.
+    if (typeof object[setter] === 'function')
+      object[setter](value);
+    else
+      object[property] = value;
+  }
+
+  describe('OuterString', function() {
+    it('should create an instance of OuterString', function() {
+      // uncomment below and update the code to test OuterString
+      //var instane = new SwaggerPetstore.OuterString();
+      //expect(instance).to.be.a(SwaggerPetstore.OuterString);
+    });
+
+  });
+
+}));
diff --git a/samples/client/petstore/javascript-es6/src/test/model/Pet.spec.js b/samples/client/petstore/javascript-es6/src/test/model/Pet.spec.js
new file mode 100644
index 000000000000..0da95d086620
--- /dev/null
+++ b/samples/client/petstore/javascript-es6/src/test/model/Pet.spec.js
@@ -0,0 +1,95 @@
+/**
+ * Swagger Petstore
+ * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
+ *
+ * OpenAPI spec version: 1.0.0
+ * Contact: apiteam@swagger.io
+ *
+ * NOTE: This class is auto generated by the swagger code generator program.
+ * https://github.com/swagger-api/swagger-codegen.git
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+  if (typeof define === 'function' && define.amd) {
+    // AMD.
+    define(['expect.js', '../../src/index'], factory);
+  } else if (typeof module === 'object' && module.exports) {
+    // CommonJS-like environments that support module.exports, like Node.
+    factory(require('expect.js'), require('../../src/index'));
+  } else {
+    // Browser globals (root is window)
+    factory(root.expect, root.SwaggerPetstore);
+  }
+}(this, function(expect, SwaggerPetstore) {
+  'use strict';
+
+  var instance;
+
+  beforeEach(function() {
+    instance = new SwaggerPetstore.Pet();
+  });
+
+  var getProperty = function(object, getter, property) {
+    // Use getter method if present; otherwise, get the property directly.
+    if (typeof object[getter] === 'function')
+      return object[getter]();
+    else
+      return object[property];
+  }
+
+  var setProperty = function(object, setter, property, value) {
+    // Use setter method if present; otherwise, set the property directly.
+    if (typeof object[setter] === 'function')
+      object[setter](value);
+    else
+      object[property] = value;
+  }
+
+  describe('Pet', function() {
+    it('should create an instance of Pet', function() {
+      // uncomment below and update the code to test Pet
+      //var instane = new SwaggerPetstore.Pet();
+      //expect(instance).to.be.a(SwaggerPetstore.Pet);
+    });
+
+    it('should have the property id (base name: "id")', function() {
+      // uncomment below and update the code to test the property id
+      //var instane = new SwaggerPetstore.Pet();
+      //expect(instance).to.be();
+    });
+
+    it('should have the property category (base name: "category")', function() {
+      // uncomment below and update the code to test the property category
+      //var instane = new SwaggerPetstore.Pet();
+      //expect(instance).to.be();
+    });
+
+    it('should have the property name (base name: "name")', function() {
+      // uncomment below and update the code to test the property name
+      //var instane = new SwaggerPetstore.Pet();
+      //expect(instance).to.be();
+    });
+
+    it('should have the property photoUrls (base name: "photoUrls")', function() {
+      // uncomment below and update the code to test the property photoUrls
+      //var instane = new SwaggerPetstore.Pet();
+      //expect(instance).to.be();
+    });
+
+    it('should have the property tags (base name: "tags")', function() {
+      // uncomment below and update the code to test the property tags
+      //var instane = new SwaggerPetstore.Pet();
+      //expect(instance).to.be();
+    });
+
+    it('should have the property status (base name: "status")', function() {
+      // uncomment below and update the code to test the property status
+      //var instane = new SwaggerPetstore.Pet();
+      //expect(instance).to.be();
+    });
+
+  });
+
+}));
diff --git a/samples/client/petstore/javascript-es6/src/test/model/ReadOnlyFirst.spec.js b/samples/client/petstore/javascript-es6/src/test/model/ReadOnlyFirst.spec.js
new file mode 100644
index 000000000000..375856a5abcb
--- /dev/null
+++ b/samples/client/petstore/javascript-es6/src/test/model/ReadOnlyFirst.spec.js
@@ -0,0 +1,71 @@
+/**
+ * Swagger Petstore
+ * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
+ *
+ * OpenAPI spec version: 1.0.0
+ * Contact: apiteam@swagger.io
+ *
+ * NOTE: This class is auto generated by the swagger code generator program.
+ * https://github.com/swagger-api/swagger-codegen.git
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+  if (typeof define === 'function' && define.amd) {
+    // AMD.
+    define(['expect.js', '../../src/index'], factory);
+  } else if (typeof module === 'object' && module.exports) {
+    // CommonJS-like environments that support module.exports, like Node.
+    factory(require('expect.js'), require('../../src/index'));
+  } else {
+    // Browser globals (root is window)
+    factory(root.expect, root.SwaggerPetstore);
+  }
+}(this, function(expect, SwaggerPetstore) {
+  'use strict';
+
+  var instance;
+
+  beforeEach(function() {
+    instance = new SwaggerPetstore.ReadOnlyFirst();
+  });
+
+  var getProperty = function(object, getter, property) {
+    // Use getter method if present; otherwise, get the property directly.
+    if (typeof object[getter] === 'function')
+      return object[getter]();
+    else
+      return object[property];
+  }
+
+  var setProperty = function(object, setter, property, value) {
+    // Use setter method if present; otherwise, set the property directly.
+    if (typeof object[setter] === 'function')
+      object[setter](value);
+    else
+      object[property] = value;
+  }
+
+  describe('ReadOnlyFirst', function() {
+    it('should create an instance of ReadOnlyFirst', function() {
+      // uncomment below and update the code to test ReadOnlyFirst
+      //var instane = new SwaggerPetstore.ReadOnlyFirst();
+      //expect(instance).to.be.a(SwaggerPetstore.ReadOnlyFirst);
+    });
+
+    it('should have the property bar (base name: "bar")', function() {
+      // uncomment below and update the code to test the property bar
+      //var instane = new SwaggerPetstore.ReadOnlyFirst();
+      //expect(instance).to.be();
+    });
+
+    it('should have the property baz (base name: "baz")', function() {
+      // uncomment below and update the code to test the property baz
+      //var instane = new SwaggerPetstore.ReadOnlyFirst();
+      //expect(instance).to.be();
+    });
+
+  });
+
+}));
diff --git a/samples/client/petstore/javascript-es6/src/test/model/SpecialModelName.spec.js b/samples/client/petstore/javascript-es6/src/test/model/SpecialModelName.spec.js
new file mode 100644
index 000000000000..1d821d94f2a3
--- /dev/null
+++ b/samples/client/petstore/javascript-es6/src/test/model/SpecialModelName.spec.js
@@ -0,0 +1,65 @@
+/**
+ * Swagger Petstore
+ * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
+ *
+ * OpenAPI spec version: 1.0.0
+ * Contact: apiteam@swagger.io
+ *
+ * NOTE: This class is auto generated by the swagger code generator program.
+ * https://github.com/swagger-api/swagger-codegen.git
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+  if (typeof define === 'function' && define.amd) {
+    // AMD.
+    define(['expect.js', '../../src/index'], factory);
+  } else if (typeof module === 'object' && module.exports) {
+    // CommonJS-like environments that support module.exports, like Node.
+    factory(require('expect.js'), require('../../src/index'));
+  } else {
+    // Browser globals (root is window)
+    factory(root.expect, root.SwaggerPetstore);
+  }
+}(this, function(expect, SwaggerPetstore) {
+  'use strict';
+
+  var instance;
+
+  beforeEach(function() {
+    instance = new SwaggerPetstore.SpecialModelName();
+  });
+
+  var getProperty = function(object, getter, property) {
+    // Use getter method if present; otherwise, get the property directly.
+    if (typeof object[getter] === 'function')
+      return object[getter]();
+    else
+      return object[property];
+  }
+
+  var setProperty = function(object, setter, property, value) {
+    // Use setter method if present; otherwise, set the property directly.
+    if (typeof object[setter] === 'function')
+      object[setter](value);
+    else
+      object[property] = value;
+  }
+
+  describe('SpecialModelName', function() {
+    it('should create an instance of SpecialModelName', function() {
+      // uncomment below and update the code to test SpecialModelName
+      //var instane = new SwaggerPetstore.SpecialModelName();
+      //expect(instance).to.be.a(SwaggerPetstore.SpecialModelName);
+    });
+
+    it('should have the property specialPropertyName (base name: "$special[property.name]")', function() {
+      // uncomment below and update the code to test the property specialPropertyName
+      //var instane = new SwaggerPetstore.SpecialModelName();
+      //expect(instance).to.be();
+    });
+
+  });
+
+}));
diff --git a/samples/client/petstore/javascript-es6/src/test/model/Tag.spec.js b/samples/client/petstore/javascript-es6/src/test/model/Tag.spec.js
new file mode 100644
index 000000000000..b4aaf43538ee
--- /dev/null
+++ b/samples/client/petstore/javascript-es6/src/test/model/Tag.spec.js
@@ -0,0 +1,71 @@
+/**
+ * Swagger Petstore
+ * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
+ *
+ * OpenAPI spec version: 1.0.0
+ * Contact: apiteam@swagger.io
+ *
+ * NOTE: This class is auto generated by the swagger code generator program.
+ * https://github.com/swagger-api/swagger-codegen.git
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+  if (typeof define === 'function' && define.amd) {
+    // AMD.
+    define(['expect.js', '../../src/index'], factory);
+  } else if (typeof module === 'object' && module.exports) {
+    // CommonJS-like environments that support module.exports, like Node.
+    factory(require('expect.js'), require('../../src/index'));
+  } else {
+    // Browser globals (root is window)
+    factory(root.expect, root.SwaggerPetstore);
+  }
+}(this, function(expect, SwaggerPetstore) {
+  'use strict';
+
+  var instance;
+
+  beforeEach(function() {
+    instance = new SwaggerPetstore.Tag();
+  });
+
+  var getProperty = function(object, getter, property) {
+    // Use getter method if present; otherwise, get the property directly.
+    if (typeof object[getter] === 'function')
+      return object[getter]();
+    else
+      return object[property];
+  }
+
+  var setProperty = function(object, setter, property, value) {
+    // Use setter method if present; otherwise, set the property directly.
+    if (typeof object[setter] === 'function')
+      object[setter](value);
+    else
+      object[property] = value;
+  }
+
+  describe('Tag', function() {
+    it('should create an instance of Tag', function() {
+      // uncomment below and update the code to test Tag
+      //var instane = new SwaggerPetstore.Tag();
+      //expect(instance).to.be.a(SwaggerPetstore.Tag);
+    });
+
+    it('should have the property id (base name: "id")', function() {
+      // uncomment below and update the code to test the property id
+      //var instane = new SwaggerPetstore.Tag();
+      //expect(instance).to.be();
+    });
+
+    it('should have the property name (base name: "name")', function() {
+      // uncomment below and update the code to test the property name
+      //var instane = new SwaggerPetstore.Tag();
+      //expect(instance).to.be();
+    });
+
+  });
+
+}));
diff --git a/samples/client/petstore/javascript-es6/src/test/model/User.spec.js b/samples/client/petstore/javascript-es6/src/test/model/User.spec.js
new file mode 100644
index 000000000000..19db8f90bfd9
--- /dev/null
+++ b/samples/client/petstore/javascript-es6/src/test/model/User.spec.js
@@ -0,0 +1,107 @@
+/**
+ * Swagger Petstore
+ * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
+ *
+ * OpenAPI spec version: 1.0.0
+ * Contact: apiteam@swagger.io
+ *
+ * NOTE: This class is auto generated by the swagger code generator program.
+ * https://github.com/swagger-api/swagger-codegen.git
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+  if (typeof define === 'function' && define.amd) {
+    // AMD.
+    define(['expect.js', '../../src/index'], factory);
+  } else if (typeof module === 'object' && module.exports) {
+    // CommonJS-like environments that support module.exports, like Node.
+    factory(require('expect.js'), require('../../src/index'));
+  } else {
+    // Browser globals (root is window)
+    factory(root.expect, root.SwaggerPetstore);
+  }
+}(this, function(expect, SwaggerPetstore) {
+  'use strict';
+
+  var instance;
+
+  beforeEach(function() {
+    instance = new SwaggerPetstore.User();
+  });
+
+  var getProperty = function(object, getter, property) {
+    // Use getter method if present; otherwise, get the property directly.
+    if (typeof object[getter] === 'function')
+      return object[getter]();
+    else
+      return object[property];
+  }
+
+  var setProperty = function(object, setter, property, value) {
+    // Use setter method if present; otherwise, set the property directly.
+    if (typeof object[setter] === 'function')
+      object[setter](value);
+    else
+      object[property] = value;
+  }
+
+  describe('User', function() {
+    it('should create an instance of User', function() {
+      // uncomment below and update the code to test User
+      //var instane = new SwaggerPetstore.User();
+      //expect(instance).to.be.a(SwaggerPetstore.User);
+    });
+
+    it('should have the property id (base name: "id")', function() {
+      // uncomment below and update the code to test the property id
+      //var instane = new SwaggerPetstore.User();
+      //expect(instance).to.be();
+    });
+
+    it('should have the property username (base name: "username")', function() {
+      // uncomment below and update the code to test the property username
+      //var instane = new SwaggerPetstore.User();
+      //expect(instance).to.be();
+    });
+
+    it('should have the property firstName (base name: "firstName")', function() {
+      // uncomment below and update the code to test the property firstName
+      //var instane = new SwaggerPetstore.User();
+      //expect(instance).to.be();
+    });
+
+    it('should have the property lastName (base name: "lastName")', function() {
+      // uncomment below and update the code to test the property lastName
+      //var instane = new SwaggerPetstore.User();
+      //expect(instance).to.be();
+    });
+
+    it('should have the property email (base name: "email")', function() {
+      // uncomment below and update the code to test the property email
+      //var instane = new SwaggerPetstore.User();
+      //expect(instance).to.be();
+    });
+
+    it('should have the property password (base name: "password")', function() {
+      // uncomment below and update the code to test the property password
+      //var instane = new SwaggerPetstore.User();
+      //expect(instance).to.be();
+    });
+
+    it('should have the property phone (base name: "phone")', function() {
+      // uncomment below and update the code to test the property phone
+      //var instane = new SwaggerPetstore.User();
+      //expect(instance).to.be();
+    });
+
+    it('should have the property userStatus (base name: "userStatus")', function() {
+      // uncomment below and update the code to test the property userStatus
+      //var instane = new SwaggerPetstore.User();
+      //expect(instance).to.be();
+    });
+
+  });
+
+}));
diff --git a/samples/client/petstore/javascript-es6/test/ApiClientTest.js b/samples/client/petstore/javascript-es6/test/ApiClientTest.js
new file mode 100644
index 000000000000..5e98b685a911
--- /dev/null
+++ b/samples/client/petstore/javascript-es6/test/ApiClientTest.js
@@ -0,0 +1,393 @@
+if (typeof module === 'object' && module.exports) {
+  var expect = require('expect.js');
+  var SwaggerPetstore = require('../src/index');
+  var sinon = require('sinon');
+}
+
+var apiClient = SwaggerPetstore.ApiClient.instance;
+
+describe('ApiClient', function() {
+  describe('defaults', function() {
+    it('should have correct default values with the default API client', function() {
+      expect(apiClient).to.be.ok();
+      expect(apiClient.basePath).to.be('http://petstore.swagger.io:80/v2');
+      expect(apiClient.authentications).to.eql({
+        petstore_auth: {type: 'oauth2'},
+        http_basic_test: {type: 'basic'},
+        api_key: {type: 'apiKey', 'in': 'header', name: 'api_key'},
+        api_key_query: {type: 'apiKey', 'in': 'query', name: 'api_key_query'},
+      /* comment out the following as these fake security def (testing purpose)
+       * are removed from the spec, we'll add these back after updating the 
+       * petstore server
+       *
+        test_http_basic: {type: 'basic'},
+        test_api_client_id: {
+          type: 'apiKey',
+          'in': 'header',
+          name: 'x-test_api_client_id'
+        },
+        test_api_client_secret: {
+          type: 'apiKey',
+          'in': 'header',
+          name: 'x-test_api_client_secret'
+        },
+        test_api_key_query: {
+          type: 'apiKey',
+          'in': 'query',
+          name: 'test_api_key_query'
+        },
+        test_api_key_header: {
+          type: 'apiKey',
+          'in': 'header',
+          name: 'test_api_key_header'
+        }*/
+      });
+    });
+
+    it('should have correct default values with new API client and can customize it', function() {
+      var newClient = new SwaggerPetstore.ApiClient;
+      expect(newClient.basePath).to.be('http://petstore.swagger.io:80/v2');
+      expect(newClient.buildUrl('/abc', {})).to.be('http://petstore.swagger.io:80/v2/abc');
+
+      newClient.basePath = 'http://example.com';
+      expect(newClient.basePath).to.be('http://example.com');
+      expect(newClient.buildUrl('/abc', {})).to.be('http://example.com/abc');
+    });
+  });
+
+  describe('#paramToString', function() {
+    it('should return empty string for null and undefined', function() {
+      expect(apiClient.paramToString(null)).to.be('');
+      expect(apiClient.paramToString(undefined)).to.be('');
+    });
+
+    it('should return string', function() {
+      expect(apiClient.paramToString('')).to.be('');
+      expect(apiClient.paramToString('abc')).to.be('abc');
+      expect(apiClient.paramToString(123)).to.be('123');
+    });
+  });
+
+  describe('#buildCollectionParam', function() {
+    var param;
+
+    beforeEach(function() {
+      param = ['aa', 'bb', 123];
+    });
+
+    it('works for csv', function() {
+      expect(apiClient.buildCollectionParam(param, 'csv')).to.be('aa,bb,123');
+    });
+
+    it('works for ssv', function() {
+      expect(apiClient.buildCollectionParam(param, 'ssv')).to.be('aa bb 123');
+    });
+
+    it('works for tsv', function() {
+      expect(apiClient.buildCollectionParam(param, 'tsv')).to.be('aa\tbb\t123');
+    });
+
+    it('works for pipes', function() {
+      expect(apiClient.buildCollectionParam(param, 'pipes')).to.be('aa|bb|123');
+    });
+
+    it('works for multi', function() {
+      expect(apiClient.buildCollectionParam(param, 'multi')).to.eql(['aa', 'bb', '123']);
+    });
+
+    it('fails for invalid collection format', function() {
+      expect(function() { apiClient.buildCollectionParam(param, 'INVALID'); }).to.throwError();
+    });
+  });
+
+  describe('#buildUrl', function() {
+    it('should work without path parameters in the path', function() {
+      expect(apiClient.buildUrl('/abc', {})).to
+        .be('http://petstore.swagger.io:80/v2/abc');
+      expect(apiClient.buildUrl('/abc/def?ok', {id: 123})).to
+        .be('http://petstore.swagger.io:80/v2/abc/def?ok');
+    });
+
+    it('should work with path parameters in the path', function() {
+      expect(apiClient.buildUrl('/{id}', {id: 123})).to
+        .be('http://petstore.swagger.io:80/v2/123');
+      expect(apiClient.buildUrl('/abc/{id}/{name}?ok', {id: 456, name: 'a b'})).to.
+        be('http://petstore.swagger.io:80/v2/abc/456/a%20b?ok');
+    });
+  });
+
+  describe('#isJsonMime', function() {
+    it('should return true for JSON MIME', function() {
+      expect(apiClient.isJsonMime('application/json')).to.be(true);
+      expect(apiClient.isJsonMime('application/json; charset=UTF8')).to.be(true);
+      expect(apiClient.isJsonMime('APPLICATION/JSON')).to.be(true);
+    });
+
+    it('should return false for non-JSON MIME', function() {
+      expect(apiClient.isJsonMime('')).to.be(false);
+      expect(apiClient.isJsonMime('text/plain')).to.be(false);
+      expect(apiClient.isJsonMime('application/xml')).to.be(false);
+      expect(apiClient.isJsonMime('application/jsonp')).to.be(false);
+    });
+  });
+
+  describe('#applyAuthToRequest', function() {
+    var req, newClient;
+
+    beforeEach(function() {
+      req = {
+        auth: function() {},
+        set: function() {},
+        query: function() {}
+      };
+      sinon.stub(req, 'auth');
+      sinon.stub(req, 'set');
+      sinon.stub(req, 'query');
+      newClient = new SwaggerPetstore.ApiClient();
+    });
+
+    describe('basic', function() {
+      var authName = 'testBasicAuth';
+      var authNames = [authName];
+      var auth;
+
+      beforeEach(function() {
+        newClient.authentications[authName] = {type: 'basic'};
+        auth = newClient.authentications[authName];
+      });
+
+      it('sets auth header with username and password set', function() {
+        auth.username = 'user';
+        auth.password = 'pass';
+        newClient.applyAuthToRequest(req, authNames);
+        sinon.assert.calledOnce(req.auth);
+        // 'dXNlcjpwYXNz' is base64-encoded string of 'user:pass'
+        sinon.assert.calledWithMatch(req.auth, 'user', 'pass');
+        sinon.assert.notCalled(req.set);
+        sinon.assert.notCalled(req.query);
+      });
+
+      it('sets header with only username set', function() {
+        auth.username = 'user';
+        newClient.applyAuthToRequest(req, authNames);
+        sinon.assert.calledOnce(req.auth);
+        // 'dXNlcjo=' is base64-encoded string of 'user:'
+        sinon.assert.calledWithMatch(req.auth, 'user', '');
+        sinon.assert.notCalled(req.set);
+        sinon.assert.notCalled(req.query);
+      });
+
+      it('sets header with only password set', function() {
+        auth.password = 'pass';
+        newClient.applyAuthToRequest(req, authNames);
+        sinon.assert.calledOnce(req.auth);
+        // 'OnBhc3M=' is base64-encoded string of ':pass'
+        sinon.assert.calledWithMatch(req.auth, '', 'pass');
+        sinon.assert.notCalled(req.set);
+        sinon.assert.notCalled(req.query);
+      });
+
+      it('does not set header when username and password are not set', function() {
+        newClient.applyAuthToRequest(req, authNames);
+        sinon.assert.notCalled(req.auth);
+        sinon.assert.notCalled(req.set);
+        sinon.assert.notCalled(req.query);
+      });
+    });
+
+    describe('apiKey', function() {
+      var authName = 'testApiKey';
+      var authNames = [authName];
+      var auth;
+
+      beforeEach(function() {
+        newClient.authentications[authName] = {type: 'apiKey', name: 'api_key'};
+        auth = newClient.authentications[authName];
+      });
+
+      it('sets api key in header', function() {
+        auth.in = 'header';
+        auth.apiKey = 'my-api-key';
+        newClient.applyAuthToRequest(req, authNames);
+        sinon.assert.calledOnce(req.set);
+        sinon.assert.calledWithMatch(req.set, {'api_key': 'my-api-key'});
+        sinon.assert.notCalled(req.auth);
+        sinon.assert.notCalled(req.query);
+      });
+
+      it('sets api key in query', function() {
+        auth.in = 'query';
+        auth.apiKey = 'my-api-key';
+        newClient.applyAuthToRequest(req, authNames);
+        sinon.assert.calledOnce(req.query);
+        sinon.assert.calledWithMatch(req.query, {'api_key': 'my-api-key'});
+        sinon.assert.notCalled(req.auth);
+        sinon.assert.notCalled(req.set);
+      });
+
+      it('sets api key in header with prefix', function() {
+        auth.in = 'header';
+        auth.apiKey = 'my-api-key';
+        auth.apiKeyPrefix = 'Key';
+        newClient.applyAuthToRequest(req, authNames);
+        sinon.assert.calledOnce(req.set);
+        sinon.assert.calledWithMatch(req.set, {'api_key': 'Key my-api-key'});
+        sinon.assert.notCalled(req.auth);
+        sinon.assert.notCalled(req.query);
+      });
+
+      it('works when api key is not set', function() {
+        auth.in = 'query';
+        auth.apiKey = null;
+        newClient.applyAuthToRequest(req, authNames);
+        sinon.assert.notCalled(req.query);
+        sinon.assert.notCalled(req.auth);
+        sinon.assert.notCalled(req.set);
+      });
+    });
+
+    describe('oauth2', function() {
+      var authName = 'testOAuth2';
+      var authNames = [authName];
+      var auth;
+
+      beforeEach(function() {
+        newClient.authentications[authName] = {type: 'oauth2'};
+        auth = newClient.authentications[authName];
+      });
+
+      it('sets access token in header', function() {
+        auth.accessToken = 'my-access-token';
+        newClient.applyAuthToRequest(req, authNames);
+        sinon.assert.calledOnce(req.set);
+        sinon.assert.calledWithMatch(req.set, {'Authorization': 'Bearer my-access-token'});
+        sinon.assert.notCalled(req.auth);
+        sinon.assert.notCalled(req.query);
+      });
+
+      it('works when access token is not set', function() {
+        auth.accessToken = null;
+        newClient.applyAuthToRequest(req, authNames);
+        sinon.assert.notCalled(req.query);
+        sinon.assert.notCalled(req.auth);
+        sinon.assert.notCalled(req.set);
+      });
+    });
+
+    describe('apiKey and oauth2', function() {
+      var apiKeyAuthName = 'testApiKey';
+      var oauth2Name = 'testOAuth2';
+      var authNames = [apiKeyAuthName, oauth2Name];
+      var apiKeyAuth, oauth2;
+
+      beforeEach(function() {
+        newClient.authentications[apiKeyAuthName] = {type: 'apiKey', name: 'api_key', 'in': 'query'};
+        newClient.authentications[oauth2Name] = {type: 'oauth2'};
+        apiKeyAuth = newClient.authentications[apiKeyAuthName];
+        oauth2 = newClient.authentications[oauth2Name];
+      });
+
+      it('works when setting both api key and access token', function() {
+        apiKeyAuth.apiKey = 'my-api-key';
+        oauth2.accessToken = 'my-access-token';
+        newClient.applyAuthToRequest(req, authNames);
+        sinon.assert.calledOnce(req.query);
+        sinon.assert.calledWithMatch(req.query, {'api_key': 'my-api-key'});
+        sinon.assert.calledOnce(req.set);
+        sinon.assert.calledWithMatch(req.set, {'Authorization': 'Bearer my-access-token'});
+        sinon.assert.notCalled(req.auth);
+      });
+
+      it('works when setting only api key', function() {
+        apiKeyAuth.apiKey = 'my-api-key';
+        oauth2.accessToken = null;
+        newClient.applyAuthToRequest(req, authNames);
+        sinon.assert.calledOnce(req.query);
+        sinon.assert.calledWithMatch(req.query, {'api_key': 'my-api-key'});
+        sinon.assert.notCalled(req.set);
+        sinon.assert.notCalled(req.auth);
+      });
+
+      it('works when neither api key nor access token is set', function() {
+        apiKeyAuth.apiKey = null;
+        oauth2.accessToken = null;
+        newClient.applyAuthToRequest(req, authNames);
+        sinon.assert.notCalled(req.query);
+        sinon.assert.notCalled(req.auth);
+        sinon.assert.notCalled(req.set);
+      });
+    });
+
+    describe('unknown type', function() {
+      var authName = 'unknown';
+      var authNames = [authName];
+
+      beforeEach(function() {
+        newClient.authentications[authName] = {type: 'UNKNOWN'};
+      });
+
+      it('throws error for unknown auth type', function() {
+        expect(function() {
+          newClient.applyAuthToRequest(req, authNames);
+        }).to.throwError();
+        sinon.assert.notCalled(req.set);
+        sinon.assert.notCalled(req.auth);
+        sinon.assert.notCalled(req.query);
+      });
+    });
+  });
+
+  /*
+  describe('#defaultHeaders', function() {
+    it('should initialize default headers to be an empty object', function() {
+      expect(apiClient.defaultHeaders).to.eql({});
+    });
+
+    it('should put default headers in request', function() {
+      var newClient = new SwaggerPetstore.ApiClient;
+      newClient.defaultHeaders['Content-Type'] = 'text/plain'
+      newClient.defaultHeaders['api_key'] = 'special-key'
+
+      var expected = {'Content-Type': 'text/plain', 'api_key': 'special-key'};
+      expect(newClient.defaultHeaders).to.eql(expected);
+      var req = makeDumbRequest(newClient);
+      req.unset('User-Agent');
+      expect(req.header).to.eql(expected);
+    });
+
+    it('should override default headers with provided header params', function() {
+      var newClient = new SwaggerPetstore.ApiClient;
+      newClient.defaultHeaders['Content-Type'] = 'text/plain'
+      newClient.defaultHeaders['api_key'] = 'special-key'
+
+      var headerParams = {'Content-Type': 'application/json', 'Authorization': 'Bearer test-token'}
+      var expected = {
+        'Content-Type': 'application/json',
+        'api_key': 'special-key',
+        'Authorization': 'Bearer test-token'
+      };
+      var req = makeDumbRequest(newClient, {headerParams: headerParams});
+      req.unset('User-Agent');
+      expect(req.header).to.eql(expected);
+    });
+  });
+*/
+
+});
+
+function makeDumbRequest(apiClient, opts) {
+  opts = opts || {};
+  var path = opts.path || '/store/inventory';
+  var httpMethod = opts.httpMethod || 'GET';
+  var pathParams = opts.pathParams || {};
+  var queryParams = opts.queryParams || {};
+  var headerParams = opts.headerParams || {};
+  var formParams = opts.formParams || {};
+  var bodyParam = opts.bodyParam;
+  var authNames = [];
+  var contentTypes = opts.contentTypes || [];
+  var accepts = opts.accepts || [];
+  var callback = opts.callback;
+  return apiClient.callApi(path, httpMethod, pathParams, queryParams,
+    headerParams, formParams, bodyParam, authNames, contentTypes, accepts);
+}
diff --git a/samples/client/petstore/javascript-es6/test/api/AnotherFakeApi.spec.js b/samples/client/petstore/javascript-es6/test/api/AnotherFakeApi.spec.js
index f55538a53e72..750840784236 100644
--- a/samples/client/petstore/javascript-es6/test/api/AnotherFakeApi.spec.js
+++ b/samples/client/petstore/javascript-es6/test/api/AnotherFakeApi.spec.js
@@ -1,12 +1,12 @@
 /**
- * Swagger Petstore
+ * OpenAPI Petstore
  * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
  *
  * OpenAPI spec version: 1.0.0
- * Contact: apiteam@swagger.io
+ * 
  *
- * NOTE: This class is auto generated by the swagger code generator program.
- * https://github.com/swagger-api/swagger-codegen.git
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
  * Do not edit the class manually.
  *
  */
@@ -20,15 +20,15 @@
     factory(require('expect.js'), require('../../src/index'));
   } else {
     // Browser globals (root is window)
-    factory(root.expect, root.SwaggerPetstore);
+    factory(root.expect, root.OpenApiPetstore);
   }
-}(this, function(expect, SwaggerPetstore) {
+}(this, function(expect, OpenApiPetstore) {
   'use strict';
 
   var instance;
 
   beforeEach(function() {
-    instance = new SwaggerPetstore.AnotherFakeApi();
+    instance = new OpenApiPetstore.AnotherFakeApi();
   });
 
   var getProperty = function(object, getter, property) {
diff --git a/samples/client/petstore/javascript-es6/test/api/FakeApi.spec.js b/samples/client/petstore/javascript-es6/test/api/FakeApi.spec.js
index f2903d6612ca..7931dbdd6c8d 100644
--- a/samples/client/petstore/javascript-es6/test/api/FakeApi.spec.js
+++ b/samples/client/petstore/javascript-es6/test/api/FakeApi.spec.js
@@ -1,12 +1,12 @@
 /**
- * Swagger Petstore
+ * OpenAPI Petstore
  * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
  *
  * OpenAPI spec version: 1.0.0
- * Contact: apiteam@swagger.io
+ * 
  *
- * NOTE: This class is auto generated by the swagger code generator program.
- * https://github.com/swagger-api/swagger-codegen.git
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
  * Do not edit the class manually.
  *
  */
@@ -20,15 +20,15 @@
     factory(require('expect.js'), require('../../src/index'));
   } else {
     // Browser globals (root is window)
-    factory(root.expect, root.SwaggerPetstore);
+    factory(root.expect, root.OpenApiPetstore);
   }
-}(this, function(expect, SwaggerPetstore) {
+}(this, function(expect, OpenApiPetstore) {
   'use strict';
 
   var instance;
 
   beforeEach(function() {
-    instance = new SwaggerPetstore.FakeApi();
+    instance = new OpenApiPetstore.FakeApi();
   });
 
   var getProperty = function(object, getter, property) {
@@ -88,6 +88,16 @@
         done();
       });
     });
+    describe('testBodyWithQueryParams', function() {
+      it('should call testBodyWithQueryParams successfully', function(done) {
+        //uncomment below and update the code to test testBodyWithQueryParams
+        //instance.testBodyWithQueryParams(function(error) {
+        //  if (error) throw error;
+        //expect().to.be();
+        //});
+        done();
+      });
+    });
     describe('testClientModel', function() {
       it('should call testClientModel successfully', function(done) {
         //uncomment below and update the code to test testClientModel
@@ -118,6 +128,26 @@
         done();
       });
     });
+    describe('testInlineAdditionalProperties', function() {
+      it('should call testInlineAdditionalProperties successfully', function(done) {
+        //uncomment below and update the code to test testInlineAdditionalProperties
+        //instance.testInlineAdditionalProperties(function(error) {
+        //  if (error) throw error;
+        //expect().to.be();
+        //});
+        done();
+      });
+    });
+    describe('testJsonFormData', function() {
+      it('should call testJsonFormData successfully', function(done) {
+        //uncomment below and update the code to test testJsonFormData
+        //instance.testJsonFormData(function(error) {
+        //  if (error) throw error;
+        //expect().to.be();
+        //});
+        done();
+      });
+    });
   });
 
 }));
diff --git a/samples/client/petstore/javascript-es6/test/api/FakeClassnameTags123Api.spec.js b/samples/client/petstore/javascript-es6/test/api/FakeClassnameTags123Api.spec.js
index 10e20e7778a2..a9f0780a18fd 100644
--- a/samples/client/petstore/javascript-es6/test/api/FakeClassnameTags123Api.spec.js
+++ b/samples/client/petstore/javascript-es6/test/api/FakeClassnameTags123Api.spec.js
@@ -1,12 +1,12 @@
 /**
- * Swagger Petstore
+ * OpenAPI Petstore
  * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
  *
  * OpenAPI spec version: 1.0.0
- * Contact: apiteam@swagger.io
+ * 
  *
- * NOTE: This class is auto generated by the swagger code generator program.
- * https://github.com/swagger-api/swagger-codegen.git
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
  * Do not edit the class manually.
  *
  */
@@ -20,15 +20,15 @@
     factory(require('expect.js'), require('../../src/index'));
   } else {
     // Browser globals (root is window)
-    factory(root.expect, root.SwaggerPetstore);
+    factory(root.expect, root.OpenApiPetstore);
   }
-}(this, function(expect, SwaggerPetstore) {
+}(this, function(expect, OpenApiPetstore) {
   'use strict';
 
   var instance;
 
   beforeEach(function() {
-    instance = new SwaggerPetstore.FakeClassnameTags123Api();
+    instance = new OpenApiPetstore.FakeClassnameTags123Api();
   });
 
   var getProperty = function(object, getter, property) {
diff --git a/samples/client/petstore/javascript-es6/test/api/PetApi.spec.js b/samples/client/petstore/javascript-es6/test/api/PetApi.spec.js
index 5259a2c66650..259dfabb3f04 100644
--- a/samples/client/petstore/javascript-es6/test/api/PetApi.spec.js
+++ b/samples/client/petstore/javascript-es6/test/api/PetApi.spec.js
@@ -1,12 +1,12 @@
 /**
- * Swagger Petstore
+ * OpenAPI Petstore
  * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
  *
  * OpenAPI spec version: 1.0.0
- * Contact: apiteam@swagger.io
+ * 
  *
- * NOTE: This class is auto generated by the swagger code generator program.
- * https://github.com/swagger-api/swagger-codegen.git
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
  * Do not edit the class manually.
  *
  */
@@ -20,15 +20,15 @@
     factory(require('expect.js'), require('../../src/index'));
   } else {
     // Browser globals (root is window)
-    factory(root.expect, root.SwaggerPetstore);
+    factory(root.expect, root.OpenApiPetstore);
   }
-}(this, function(expect, SwaggerPetstore) {
+}(this, function(expect, OpenApiPetstore) {
   'use strict';
 
   var instance;
 
   beforeEach(function() {
-    instance = new SwaggerPetstore.PetApi();
+    instance = new OpenApiPetstore.PetApi();
   });
 
   var getProperty = function(object, getter, property) {
diff --git a/samples/client/petstore/javascript-es6/test/api/StoreApi.spec.js b/samples/client/petstore/javascript-es6/test/api/StoreApi.spec.js
index d19da2f28d82..cd542e15f5d1 100644
--- a/samples/client/petstore/javascript-es6/test/api/StoreApi.spec.js
+++ b/samples/client/petstore/javascript-es6/test/api/StoreApi.spec.js
@@ -1,12 +1,12 @@
 /**
- * Swagger Petstore
+ * OpenAPI Petstore
  * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
  *
  * OpenAPI spec version: 1.0.0
- * Contact: apiteam@swagger.io
+ * 
  *
- * NOTE: This class is auto generated by the swagger code generator program.
- * https://github.com/swagger-api/swagger-codegen.git
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
  * Do not edit the class manually.
  *
  */
@@ -20,15 +20,15 @@
     factory(require('expect.js'), require('../../src/index'));
   } else {
     // Browser globals (root is window)
-    factory(root.expect, root.SwaggerPetstore);
+    factory(root.expect, root.OpenApiPetstore);
   }
-}(this, function(expect, SwaggerPetstore) {
+}(this, function(expect, OpenApiPetstore) {
   'use strict';
 
   var instance;
 
   beforeEach(function() {
-    instance = new SwaggerPetstore.StoreApi();
+    instance = new OpenApiPetstore.StoreApi();
   });
 
   var getProperty = function(object, getter, property) {
diff --git a/samples/client/petstore/javascript-es6/test/api/UserApi.spec.js b/samples/client/petstore/javascript-es6/test/api/UserApi.spec.js
index 55c8967f13b7..c5ba7e4e4bc0 100644
--- a/samples/client/petstore/javascript-es6/test/api/UserApi.spec.js
+++ b/samples/client/petstore/javascript-es6/test/api/UserApi.spec.js
@@ -1,12 +1,12 @@
 /**
- * Swagger Petstore
+ * OpenAPI Petstore
  * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
  *
  * OpenAPI spec version: 1.0.0
- * Contact: apiteam@swagger.io
+ * 
  *
- * NOTE: This class is auto generated by the swagger code generator program.
- * https://github.com/swagger-api/swagger-codegen.git
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
  * Do not edit the class manually.
  *
  */
@@ -20,15 +20,15 @@
     factory(require('expect.js'), require('../../src/index'));
   } else {
     // Browser globals (root is window)
-    factory(root.expect, root.SwaggerPetstore);
+    factory(root.expect, root.OpenApiPetstore);
   }
-}(this, function(expect, SwaggerPetstore) {
+}(this, function(expect, OpenApiPetstore) {
   'use strict';
 
   var instance;
 
   beforeEach(function() {
-    instance = new SwaggerPetstore.UserApi();
+    instance = new OpenApiPetstore.UserApi();
   });
 
   var getProperty = function(object, getter, property) {
diff --git a/samples/client/petstore/javascript-es6/test/model/AdditionalPropertiesClass.spec.js b/samples/client/petstore/javascript-es6/test/model/AdditionalPropertiesClass.spec.js
index 887052c0109d..4c472d5ac5f3 100644
--- a/samples/client/petstore/javascript-es6/test/model/AdditionalPropertiesClass.spec.js
+++ b/samples/client/petstore/javascript-es6/test/model/AdditionalPropertiesClass.spec.js
@@ -1,12 +1,12 @@
 /**
- * Swagger Petstore
+ * OpenAPI Petstore
  * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
  *
  * OpenAPI spec version: 1.0.0
- * Contact: apiteam@swagger.io
+ * 
  *
- * NOTE: This class is auto generated by the swagger code generator program.
- * https://github.com/swagger-api/swagger-codegen.git
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
  * Do not edit the class manually.
  *
  */
@@ -20,15 +20,15 @@
     factory(require('expect.js'), require('../../src/index'));
   } else {
     // Browser globals (root is window)
-    factory(root.expect, root.SwaggerPetstore);
+    factory(root.expect, root.OpenApiPetstore);
   }
-}(this, function(expect, SwaggerPetstore) {
+}(this, function(expect, OpenApiPetstore) {
   'use strict';
 
   var instance;
 
   beforeEach(function() {
-    instance = new SwaggerPetstore.AdditionalPropertiesClass();
+    instance = new OpenApiPetstore.AdditionalPropertiesClass();
   });
 
   var getProperty = function(object, getter, property) {
@@ -50,19 +50,19 @@
   describe('AdditionalPropertiesClass', function() {
     it('should create an instance of AdditionalPropertiesClass', function() {
       // uncomment below and update the code to test AdditionalPropertiesClass
-      //var instane = new SwaggerPetstore.AdditionalPropertiesClass();
-      //expect(instance).to.be.a(SwaggerPetstore.AdditionalPropertiesClass);
+      //var instane = new OpenApiPetstore.AdditionalPropertiesClass();
+      //expect(instance).to.be.a(OpenApiPetstore.AdditionalPropertiesClass);
     });
 
     it('should have the property mapProperty (base name: "map_property")', function() {
       // uncomment below and update the code to test the property mapProperty
-      //var instane = new SwaggerPetstore.AdditionalPropertiesClass();
+      //var instane = new OpenApiPetstore.AdditionalPropertiesClass();
       //expect(instance).to.be();
     });
 
     it('should have the property mapOfMapProperty (base name: "map_of_map_property")', function() {
       // uncomment below and update the code to test the property mapOfMapProperty
-      //var instane = new SwaggerPetstore.AdditionalPropertiesClass();
+      //var instane = new OpenApiPetstore.AdditionalPropertiesClass();
       //expect(instance).to.be();
     });
 
diff --git a/samples/client/petstore/javascript-es6/test/model/Animal.spec.js b/samples/client/petstore/javascript-es6/test/model/Animal.spec.js
index 4270461cc5ec..dbe9ef41d144 100644
--- a/samples/client/petstore/javascript-es6/test/model/Animal.spec.js
+++ b/samples/client/petstore/javascript-es6/test/model/Animal.spec.js
@@ -1,12 +1,12 @@
 /**
- * Swagger Petstore
+ * OpenAPI Petstore
  * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
  *
  * OpenAPI spec version: 1.0.0
- * Contact: apiteam@swagger.io
+ * 
  *
- * NOTE: This class is auto generated by the swagger code generator program.
- * https://github.com/swagger-api/swagger-codegen.git
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
  * Do not edit the class manually.
  *
  */
@@ -20,15 +20,15 @@
     factory(require('expect.js'), require('../../src/index'));
   } else {
     // Browser globals (root is window)
-    factory(root.expect, root.SwaggerPetstore);
+    factory(root.expect, root.OpenApiPetstore);
   }
-}(this, function(expect, SwaggerPetstore) {
+}(this, function(expect, OpenApiPetstore) {
   'use strict';
 
   var instance;
 
   beforeEach(function() {
-    instance = new SwaggerPetstore.Animal();
+    instance = new OpenApiPetstore.Animal();
   });
 
   var getProperty = function(object, getter, property) {
@@ -50,19 +50,19 @@
   describe('Animal', function() {
     it('should create an instance of Animal', function() {
       // uncomment below and update the code to test Animal
-      //var instane = new SwaggerPetstore.Animal();
-      //expect(instance).to.be.a(SwaggerPetstore.Animal);
+      //var instane = new OpenApiPetstore.Animal();
+      //expect(instance).to.be.a(OpenApiPetstore.Animal);
     });
 
     it('should have the property className (base name: "className")', function() {
       // uncomment below and update the code to test the property className
-      //var instane = new SwaggerPetstore.Animal();
+      //var instane = new OpenApiPetstore.Animal();
       //expect(instance).to.be();
     });
 
     it('should have the property color (base name: "color")', function() {
       // uncomment below and update the code to test the property color
-      //var instane = new SwaggerPetstore.Animal();
+      //var instane = new OpenApiPetstore.Animal();
       //expect(instance).to.be();
     });
 
diff --git a/samples/client/petstore/javascript-es6/test/model/AnimalFarm.spec.js b/samples/client/petstore/javascript-es6/test/model/AnimalFarm.spec.js
index ffc54a3c3817..4c616e5e3080 100644
--- a/samples/client/petstore/javascript-es6/test/model/AnimalFarm.spec.js
+++ b/samples/client/petstore/javascript-es6/test/model/AnimalFarm.spec.js
@@ -1,12 +1,12 @@
 /**
- * Swagger Petstore
+ * OpenAPI Petstore
  * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
  *
  * OpenAPI spec version: 1.0.0
- * Contact: apiteam@swagger.io
+ * 
  *
- * NOTE: This class is auto generated by the swagger code generator program.
- * https://github.com/swagger-api/swagger-codegen.git
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
  * Do not edit the class manually.
  *
  */
@@ -20,15 +20,15 @@
     factory(require('expect.js'), require('../../src/index'));
   } else {
     // Browser globals (root is window)
-    factory(root.expect, root.SwaggerPetstore);
+    factory(root.expect, root.OpenApiPetstore);
   }
-}(this, function(expect, SwaggerPetstore) {
+}(this, function(expect, OpenApiPetstore) {
   'use strict';
 
   var instance;
 
   beforeEach(function() {
-    instance = new SwaggerPetstore.AnimalFarm();
+    instance = new OpenApiPetstore.AnimalFarm();
   });
 
   var getProperty = function(object, getter, property) {
@@ -50,8 +50,8 @@
   describe('AnimalFarm', function() {
     it('should create an instance of AnimalFarm', function() {
       // uncomment below and update the code to test AnimalFarm
-      //var instane = new SwaggerPetstore.AnimalFarm();
-      //expect(instance).to.be.a(SwaggerPetstore.AnimalFarm);
+      //var instane = new OpenApiPetstore.AnimalFarm();
+      //expect(instance).to.be.a(OpenApiPetstore.AnimalFarm);
     });
 
   });
diff --git a/samples/client/petstore/javascript-es6/test/model/ApiResponse.spec.js b/samples/client/petstore/javascript-es6/test/model/ApiResponse.spec.js
index 1070013e367f..1165094a73c0 100644
--- a/samples/client/petstore/javascript-es6/test/model/ApiResponse.spec.js
+++ b/samples/client/petstore/javascript-es6/test/model/ApiResponse.spec.js
@@ -1,12 +1,12 @@
 /**
- * Swagger Petstore
+ * OpenAPI Petstore
  * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
  *
  * OpenAPI spec version: 1.0.0
- * Contact: apiteam@swagger.io
+ * 
  *
- * NOTE: This class is auto generated by the swagger code generator program.
- * https://github.com/swagger-api/swagger-codegen.git
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
  * Do not edit the class manually.
  *
  */
@@ -20,15 +20,15 @@
     factory(require('expect.js'), require('../../src/index'));
   } else {
     // Browser globals (root is window)
-    factory(root.expect, root.SwaggerPetstore);
+    factory(root.expect, root.OpenApiPetstore);
   }
-}(this, function(expect, SwaggerPetstore) {
+}(this, function(expect, OpenApiPetstore) {
   'use strict';
 
   var instance;
 
   beforeEach(function() {
-    instance = new SwaggerPetstore.ApiResponse();
+    instance = new OpenApiPetstore.ApiResponse();
   });
 
   var getProperty = function(object, getter, property) {
@@ -50,25 +50,25 @@
   describe('ApiResponse', function() {
     it('should create an instance of ApiResponse', function() {
       // uncomment below and update the code to test ApiResponse
-      //var instane = new SwaggerPetstore.ApiResponse();
-      //expect(instance).to.be.a(SwaggerPetstore.ApiResponse);
+      //var instane = new OpenApiPetstore.ApiResponse();
+      //expect(instance).to.be.a(OpenApiPetstore.ApiResponse);
     });
 
     it('should have the property code (base name: "code")', function() {
       // uncomment below and update the code to test the property code
-      //var instane = new SwaggerPetstore.ApiResponse();
+      //var instane = new OpenApiPetstore.ApiResponse();
       //expect(instance).to.be();
     });
 
     it('should have the property type (base name: "type")', function() {
       // uncomment below and update the code to test the property type
-      //var instane = new SwaggerPetstore.ApiResponse();
+      //var instane = new OpenApiPetstore.ApiResponse();
       //expect(instance).to.be();
     });
 
     it('should have the property message (base name: "message")', function() {
       // uncomment below and update the code to test the property message
-      //var instane = new SwaggerPetstore.ApiResponse();
+      //var instane = new OpenApiPetstore.ApiResponse();
       //expect(instance).to.be();
     });
 
diff --git a/samples/client/petstore/javascript-es6/test/model/ArrayOfArrayOfNumberOnly.spec.js b/samples/client/petstore/javascript-es6/test/model/ArrayOfArrayOfNumberOnly.spec.js
index 9fcd218fbb34..f30c53f5ed65 100644
--- a/samples/client/petstore/javascript-es6/test/model/ArrayOfArrayOfNumberOnly.spec.js
+++ b/samples/client/petstore/javascript-es6/test/model/ArrayOfArrayOfNumberOnly.spec.js
@@ -1,12 +1,12 @@
 /**
- * Swagger Petstore
+ * OpenAPI Petstore
  * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
  *
  * OpenAPI spec version: 1.0.0
- * Contact: apiteam@swagger.io
+ * 
  *
- * NOTE: This class is auto generated by the swagger code generator program.
- * https://github.com/swagger-api/swagger-codegen.git
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
  * Do not edit the class manually.
  *
  */
@@ -20,15 +20,15 @@
     factory(require('expect.js'), require('../../src/index'));
   } else {
     // Browser globals (root is window)
-    factory(root.expect, root.SwaggerPetstore);
+    factory(root.expect, root.OpenApiPetstore);
   }
-}(this, function(expect, SwaggerPetstore) {
+}(this, function(expect, OpenApiPetstore) {
   'use strict';
 
   var instance;
 
   beforeEach(function() {
-    instance = new SwaggerPetstore.ArrayOfArrayOfNumberOnly();
+    instance = new OpenApiPetstore.ArrayOfArrayOfNumberOnly();
   });
 
   var getProperty = function(object, getter, property) {
@@ -50,13 +50,13 @@
   describe('ArrayOfArrayOfNumberOnly', function() {
     it('should create an instance of ArrayOfArrayOfNumberOnly', function() {
       // uncomment below and update the code to test ArrayOfArrayOfNumberOnly
-      //var instane = new SwaggerPetstore.ArrayOfArrayOfNumberOnly();
-      //expect(instance).to.be.a(SwaggerPetstore.ArrayOfArrayOfNumberOnly);
+      //var instane = new OpenApiPetstore.ArrayOfArrayOfNumberOnly();
+      //expect(instance).to.be.a(OpenApiPetstore.ArrayOfArrayOfNumberOnly);
     });
 
     it('should have the property arrayArrayNumber (base name: "ArrayArrayNumber")', function() {
       // uncomment below and update the code to test the property arrayArrayNumber
-      //var instane = new SwaggerPetstore.ArrayOfArrayOfNumberOnly();
+      //var instane = new OpenApiPetstore.ArrayOfArrayOfNumberOnly();
       //expect(instance).to.be();
     });
 
diff --git a/samples/client/petstore/javascript-es6/test/model/ArrayOfNumberOnly.spec.js b/samples/client/petstore/javascript-es6/test/model/ArrayOfNumberOnly.spec.js
index 32d5f98586a9..6c2bc8807d93 100644
--- a/samples/client/petstore/javascript-es6/test/model/ArrayOfNumberOnly.spec.js
+++ b/samples/client/petstore/javascript-es6/test/model/ArrayOfNumberOnly.spec.js
@@ -1,12 +1,12 @@
 /**
- * Swagger Petstore
+ * OpenAPI Petstore
  * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
  *
  * OpenAPI spec version: 1.0.0
- * Contact: apiteam@swagger.io
+ * 
  *
- * NOTE: This class is auto generated by the swagger code generator program.
- * https://github.com/swagger-api/swagger-codegen.git
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
  * Do not edit the class manually.
  *
  */
@@ -20,15 +20,15 @@
     factory(require('expect.js'), require('../../src/index'));
   } else {
     // Browser globals (root is window)
-    factory(root.expect, root.SwaggerPetstore);
+    factory(root.expect, root.OpenApiPetstore);
   }
-}(this, function(expect, SwaggerPetstore) {
+}(this, function(expect, OpenApiPetstore) {
   'use strict';
 
   var instance;
 
   beforeEach(function() {
-    instance = new SwaggerPetstore.ArrayOfNumberOnly();
+    instance = new OpenApiPetstore.ArrayOfNumberOnly();
   });
 
   var getProperty = function(object, getter, property) {
@@ -50,13 +50,13 @@
   describe('ArrayOfNumberOnly', function() {
     it('should create an instance of ArrayOfNumberOnly', function() {
       // uncomment below and update the code to test ArrayOfNumberOnly
-      //var instane = new SwaggerPetstore.ArrayOfNumberOnly();
-      //expect(instance).to.be.a(SwaggerPetstore.ArrayOfNumberOnly);
+      //var instane = new OpenApiPetstore.ArrayOfNumberOnly();
+      //expect(instance).to.be.a(OpenApiPetstore.ArrayOfNumberOnly);
     });
 
     it('should have the property arrayNumber (base name: "ArrayNumber")', function() {
       // uncomment below and update the code to test the property arrayNumber
-      //var instane = new SwaggerPetstore.ArrayOfNumberOnly();
+      //var instane = new OpenApiPetstore.ArrayOfNumberOnly();
       //expect(instance).to.be();
     });
 
diff --git a/samples/client/petstore/javascript-es6/test/model/ArrayTest.spec.js b/samples/client/petstore/javascript-es6/test/model/ArrayTest.spec.js
index 1d93d897a9d8..ab9294b159cd 100644
--- a/samples/client/petstore/javascript-es6/test/model/ArrayTest.spec.js
+++ b/samples/client/petstore/javascript-es6/test/model/ArrayTest.spec.js
@@ -1,12 +1,12 @@
 /**
- * Swagger Petstore
+ * OpenAPI Petstore
  * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
  *
  * OpenAPI spec version: 1.0.0
- * Contact: apiteam@swagger.io
+ * 
  *
- * NOTE: This class is auto generated by the swagger code generator program.
- * https://github.com/swagger-api/swagger-codegen.git
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
  * Do not edit the class manually.
  *
  */
@@ -20,15 +20,15 @@
     factory(require('expect.js'), require('../../src/index'));
   } else {
     // Browser globals (root is window)
-    factory(root.expect, root.SwaggerPetstore);
+    factory(root.expect, root.OpenApiPetstore);
   }
-}(this, function(expect, SwaggerPetstore) {
+}(this, function(expect, OpenApiPetstore) {
   'use strict';
 
   var instance;
 
   beforeEach(function() {
-    instance = new SwaggerPetstore.ArrayTest();
+    instance = new OpenApiPetstore.ArrayTest();
   });
 
   var getProperty = function(object, getter, property) {
@@ -50,25 +50,25 @@
   describe('ArrayTest', function() {
     it('should create an instance of ArrayTest', function() {
       // uncomment below and update the code to test ArrayTest
-      //var instane = new SwaggerPetstore.ArrayTest();
-      //expect(instance).to.be.a(SwaggerPetstore.ArrayTest);
+      //var instane = new OpenApiPetstore.ArrayTest();
+      //expect(instance).to.be.a(OpenApiPetstore.ArrayTest);
     });
 
     it('should have the property arrayOfString (base name: "array_of_string")', function() {
       // uncomment below and update the code to test the property arrayOfString
-      //var instane = new SwaggerPetstore.ArrayTest();
+      //var instane = new OpenApiPetstore.ArrayTest();
       //expect(instance).to.be();
     });
 
     it('should have the property arrayArrayOfInteger (base name: "array_array_of_integer")', function() {
       // uncomment below and update the code to test the property arrayArrayOfInteger
-      //var instane = new SwaggerPetstore.ArrayTest();
+      //var instane = new OpenApiPetstore.ArrayTest();
       //expect(instance).to.be();
     });
 
     it('should have the property arrayArrayOfModel (base name: "array_array_of_model")', function() {
       // uncomment below and update the code to test the property arrayArrayOfModel
-      //var instane = new SwaggerPetstore.ArrayTest();
+      //var instane = new OpenApiPetstore.ArrayTest();
       //expect(instance).to.be();
     });
 
diff --git a/samples/client/petstore/javascript-es6/test/model/Capitalization.spec.js b/samples/client/petstore/javascript-es6/test/model/Capitalization.spec.js
index f1aa695c3fd3..8be47e3e132d 100644
--- a/samples/client/petstore/javascript-es6/test/model/Capitalization.spec.js
+++ b/samples/client/petstore/javascript-es6/test/model/Capitalization.spec.js
@@ -1,12 +1,12 @@
 /**
- * Swagger Petstore
+ * OpenAPI Petstore
  * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
  *
  * OpenAPI spec version: 1.0.0
- * Contact: apiteam@swagger.io
+ * 
  *
- * NOTE: This class is auto generated by the swagger code generator program.
- * https://github.com/swagger-api/swagger-codegen.git
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
  * Do not edit the class manually.
  *
  */
@@ -20,15 +20,15 @@
     factory(require('expect.js'), require('../../src/index'));
   } else {
     // Browser globals (root is window)
-    factory(root.expect, root.SwaggerPetstore);
+    factory(root.expect, root.OpenApiPetstore);
   }
-}(this, function(expect, SwaggerPetstore) {
+}(this, function(expect, OpenApiPetstore) {
   'use strict';
 
   var instance;
 
   beforeEach(function() {
-    instance = new SwaggerPetstore.Capitalization();
+    instance = new OpenApiPetstore.Capitalization();
   });
 
   var getProperty = function(object, getter, property) {
@@ -50,43 +50,43 @@
   describe('Capitalization', function() {
     it('should create an instance of Capitalization', function() {
       // uncomment below and update the code to test Capitalization
-      //var instane = new SwaggerPetstore.Capitalization();
-      //expect(instance).to.be.a(SwaggerPetstore.Capitalization);
+      //var instane = new OpenApiPetstore.Capitalization();
+      //expect(instance).to.be.a(OpenApiPetstore.Capitalization);
     });
 
     it('should have the property smallCamel (base name: "smallCamel")', function() {
       // uncomment below and update the code to test the property smallCamel
-      //var instane = new SwaggerPetstore.Capitalization();
+      //var instane = new OpenApiPetstore.Capitalization();
       //expect(instance).to.be();
     });
 
     it('should have the property capitalCamel (base name: "CapitalCamel")', function() {
       // uncomment below and update the code to test the property capitalCamel
-      //var instane = new SwaggerPetstore.Capitalization();
+      //var instane = new OpenApiPetstore.Capitalization();
       //expect(instance).to.be();
     });
 
     it('should have the property smallSnake (base name: "small_Snake")', function() {
       // uncomment below and update the code to test the property smallSnake
-      //var instane = new SwaggerPetstore.Capitalization();
+      //var instane = new OpenApiPetstore.Capitalization();
       //expect(instance).to.be();
     });
 
     it('should have the property capitalSnake (base name: "Capital_Snake")', function() {
       // uncomment below and update the code to test the property capitalSnake
-      //var instane = new SwaggerPetstore.Capitalization();
+      //var instane = new OpenApiPetstore.Capitalization();
       //expect(instance).to.be();
     });
 
     it('should have the property sCAETHFlowPoints (base name: "SCA_ETH_Flow_Points")', function() {
       // uncomment below and update the code to test the property sCAETHFlowPoints
-      //var instane = new SwaggerPetstore.Capitalization();
+      //var instane = new OpenApiPetstore.Capitalization();
       //expect(instance).to.be();
     });
 
     it('should have the property ATT_NAME (base name: "ATT_NAME")', function() {
       // uncomment below and update the code to test the property ATT_NAME
-      //var instane = new SwaggerPetstore.Capitalization();
+      //var instane = new OpenApiPetstore.Capitalization();
       //expect(instance).to.be();
     });
 
diff --git a/samples/client/petstore/javascript-es6/test/model/Cat.spec.js b/samples/client/petstore/javascript-es6/test/model/Cat.spec.js
index f0d5476b268f..99b7496450db 100644
--- a/samples/client/petstore/javascript-es6/test/model/Cat.spec.js
+++ b/samples/client/petstore/javascript-es6/test/model/Cat.spec.js
@@ -1,12 +1,12 @@
 /**
- * Swagger Petstore
+ * OpenAPI Petstore
  * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
  *
  * OpenAPI spec version: 1.0.0
- * Contact: apiteam@swagger.io
+ * 
  *
- * NOTE: This class is auto generated by the swagger code generator program.
- * https://github.com/swagger-api/swagger-codegen.git
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
  * Do not edit the class manually.
  *
  */
@@ -20,15 +20,15 @@
     factory(require('expect.js'), require('../../src/index'));
   } else {
     // Browser globals (root is window)
-    factory(root.expect, root.SwaggerPetstore);
+    factory(root.expect, root.OpenApiPetstore);
   }
-}(this, function(expect, SwaggerPetstore) {
+}(this, function(expect, OpenApiPetstore) {
   'use strict';
 
   var instance;
 
   beforeEach(function() {
-    instance = new SwaggerPetstore.Cat();
+    instance = new OpenApiPetstore.Cat();
   });
 
   var getProperty = function(object, getter, property) {
@@ -50,13 +50,13 @@
   describe('Cat', function() {
     it('should create an instance of Cat', function() {
       // uncomment below and update the code to test Cat
-      //var instane = new SwaggerPetstore.Cat();
-      //expect(instance).to.be.a(SwaggerPetstore.Cat);
+      //var instane = new OpenApiPetstore.Cat();
+      //expect(instance).to.be.a(OpenApiPetstore.Cat);
     });
 
     it('should have the property declawed (base name: "declawed")', function() {
       // uncomment below and update the code to test the property declawed
-      //var instane = new SwaggerPetstore.Cat();
+      //var instane = new OpenApiPetstore.Cat();
       //expect(instance).to.be();
     });
 
diff --git a/samples/client/petstore/javascript-es6/test/model/Category.spec.js b/samples/client/petstore/javascript-es6/test/model/Category.spec.js
index 561eaf8373ee..2a02a9e4708b 100644
--- a/samples/client/petstore/javascript-es6/test/model/Category.spec.js
+++ b/samples/client/petstore/javascript-es6/test/model/Category.spec.js
@@ -1,12 +1,12 @@
 /**
- * Swagger Petstore
+ * OpenAPI Petstore
  * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
  *
  * OpenAPI spec version: 1.0.0
- * Contact: apiteam@swagger.io
+ * 
  *
- * NOTE: This class is auto generated by the swagger code generator program.
- * https://github.com/swagger-api/swagger-codegen.git
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
  * Do not edit the class manually.
  *
  */
@@ -20,15 +20,15 @@
     factory(require('expect.js'), require('../../src/index'));
   } else {
     // Browser globals (root is window)
-    factory(root.expect, root.SwaggerPetstore);
+    factory(root.expect, root.OpenApiPetstore);
   }
-}(this, function(expect, SwaggerPetstore) {
+}(this, function(expect, OpenApiPetstore) {
   'use strict';
 
   var instance;
 
   beforeEach(function() {
-    instance = new SwaggerPetstore.Category();
+    instance = new OpenApiPetstore.Category();
   });
 
   var getProperty = function(object, getter, property) {
@@ -50,19 +50,19 @@
   describe('Category', function() {
     it('should create an instance of Category', function() {
       // uncomment below and update the code to test Category
-      //var instane = new SwaggerPetstore.Category();
-      //expect(instance).to.be.a(SwaggerPetstore.Category);
+      //var instane = new OpenApiPetstore.Category();
+      //expect(instance).to.be.a(OpenApiPetstore.Category);
     });
 
     it('should have the property id (base name: "id")', function() {
       // uncomment below and update the code to test the property id
-      //var instane = new SwaggerPetstore.Category();
+      //var instane = new OpenApiPetstore.Category();
       //expect(instance).to.be();
     });
 
     it('should have the property name (base name: "name")', function() {
       // uncomment below and update the code to test the property name
-      //var instane = new SwaggerPetstore.Category();
+      //var instane = new OpenApiPetstore.Category();
       //expect(instance).to.be();
     });
 
diff --git a/samples/client/petstore/javascript-es6/test/model/ClassModel.spec.js b/samples/client/petstore/javascript-es6/test/model/ClassModel.spec.js
index 5ee2e49a0de1..d87a995d19b6 100644
--- a/samples/client/petstore/javascript-es6/test/model/ClassModel.spec.js
+++ b/samples/client/petstore/javascript-es6/test/model/ClassModel.spec.js
@@ -1,12 +1,12 @@
 /**
- * Swagger Petstore
+ * OpenAPI Petstore
  * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
  *
  * OpenAPI spec version: 1.0.0
- * Contact: apiteam@swagger.io
+ * 
  *
- * NOTE: This class is auto generated by the swagger code generator program.
- * https://github.com/swagger-api/swagger-codegen.git
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
  * Do not edit the class manually.
  *
  */
@@ -20,15 +20,15 @@
     factory(require('expect.js'), require('../../src/index'));
   } else {
     // Browser globals (root is window)
-    factory(root.expect, root.SwaggerPetstore);
+    factory(root.expect, root.OpenApiPetstore);
   }
-}(this, function(expect, SwaggerPetstore) {
+}(this, function(expect, OpenApiPetstore) {
   'use strict';
 
   var instance;
 
   beforeEach(function() {
-    instance = new SwaggerPetstore.ClassModel();
+    instance = new OpenApiPetstore.ClassModel();
   });
 
   var getProperty = function(object, getter, property) {
@@ -50,13 +50,13 @@
   describe('ClassModel', function() {
     it('should create an instance of ClassModel', function() {
       // uncomment below and update the code to test ClassModel
-      //var instane = new SwaggerPetstore.ClassModel();
-      //expect(instance).to.be.a(SwaggerPetstore.ClassModel);
+      //var instane = new OpenApiPetstore.ClassModel();
+      //expect(instance).to.be.a(OpenApiPetstore.ClassModel);
     });
 
     it('should have the property _class (base name: "_class")', function() {
       // uncomment below and update the code to test the property _class
-      //var instane = new SwaggerPetstore.ClassModel();
+      //var instane = new OpenApiPetstore.ClassModel();
       //expect(instance).to.be();
     });
 
diff --git a/samples/client/petstore/javascript-es6/test/model/Client.spec.js b/samples/client/petstore/javascript-es6/test/model/Client.spec.js
index 03af5ef730ec..182ad6244341 100644
--- a/samples/client/petstore/javascript-es6/test/model/Client.spec.js
+++ b/samples/client/petstore/javascript-es6/test/model/Client.spec.js
@@ -1,12 +1,12 @@
 /**
- * Swagger Petstore
+ * OpenAPI Petstore
  * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
  *
  * OpenAPI spec version: 1.0.0
- * Contact: apiteam@swagger.io
+ * 
  *
- * NOTE: This class is auto generated by the swagger code generator program.
- * https://github.com/swagger-api/swagger-codegen.git
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
  * Do not edit the class manually.
  *
  */
@@ -20,15 +20,15 @@
     factory(require('expect.js'), require('../../src/index'));
   } else {
     // Browser globals (root is window)
-    factory(root.expect, root.SwaggerPetstore);
+    factory(root.expect, root.OpenApiPetstore);
   }
-}(this, function(expect, SwaggerPetstore) {
+}(this, function(expect, OpenApiPetstore) {
   'use strict';
 
   var instance;
 
   beforeEach(function() {
-    instance = new SwaggerPetstore.Client();
+    instance = new OpenApiPetstore.Client();
   });
 
   var getProperty = function(object, getter, property) {
@@ -50,13 +50,13 @@
   describe('Client', function() {
     it('should create an instance of Client', function() {
       // uncomment below and update the code to test Client
-      //var instane = new SwaggerPetstore.Client();
-      //expect(instance).to.be.a(SwaggerPetstore.Client);
+      //var instane = new OpenApiPetstore.Client();
+      //expect(instance).to.be.a(OpenApiPetstore.Client);
     });
 
     it('should have the property client (base name: "client")', function() {
       // uncomment below and update the code to test the property client
-      //var instane = new SwaggerPetstore.Client();
+      //var instane = new OpenApiPetstore.Client();
       //expect(instance).to.be();
     });
 
diff --git a/samples/client/petstore/javascript-es6/test/model/Dog.spec.js b/samples/client/petstore/javascript-es6/test/model/Dog.spec.js
index 6421a501134c..13d1584d01a0 100644
--- a/samples/client/petstore/javascript-es6/test/model/Dog.spec.js
+++ b/samples/client/petstore/javascript-es6/test/model/Dog.spec.js
@@ -1,12 +1,12 @@
 /**
- * Swagger Petstore
+ * OpenAPI Petstore
  * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
  *
  * OpenAPI spec version: 1.0.0
- * Contact: apiteam@swagger.io
+ * 
  *
- * NOTE: This class is auto generated by the swagger code generator program.
- * https://github.com/swagger-api/swagger-codegen.git
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
  * Do not edit the class manually.
  *
  */
@@ -20,15 +20,15 @@
     factory(require('expect.js'), require('../../src/index'));
   } else {
     // Browser globals (root is window)
-    factory(root.expect, root.SwaggerPetstore);
+    factory(root.expect, root.OpenApiPetstore);
   }
-}(this, function(expect, SwaggerPetstore) {
+}(this, function(expect, OpenApiPetstore) {
   'use strict';
 
   var instance;
 
   beforeEach(function() {
-    instance = new SwaggerPetstore.Dog();
+    instance = new OpenApiPetstore.Dog();
   });
 
   var getProperty = function(object, getter, property) {
@@ -50,13 +50,13 @@
   describe('Dog', function() {
     it('should create an instance of Dog', function() {
       // uncomment below and update the code to test Dog
-      //var instane = new SwaggerPetstore.Dog();
-      //expect(instance).to.be.a(SwaggerPetstore.Dog);
+      //var instane = new OpenApiPetstore.Dog();
+      //expect(instance).to.be.a(OpenApiPetstore.Dog);
     });
 
     it('should have the property breed (base name: "breed")', function() {
       // uncomment below and update the code to test the property breed
-      //var instane = new SwaggerPetstore.Dog();
+      //var instane = new OpenApiPetstore.Dog();
       //expect(instance).to.be();
     });
 
diff --git a/samples/client/petstore/javascript-es6/test/model/EnumArrays.spec.js b/samples/client/petstore/javascript-es6/test/model/EnumArrays.spec.js
index 45c8d595bb64..dae8d83d7f2a 100644
--- a/samples/client/petstore/javascript-es6/test/model/EnumArrays.spec.js
+++ b/samples/client/petstore/javascript-es6/test/model/EnumArrays.spec.js
@@ -1,12 +1,12 @@
 /**
- * Swagger Petstore
+ * OpenAPI Petstore
  * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
  *
  * OpenAPI spec version: 1.0.0
- * Contact: apiteam@swagger.io
+ * 
  *
- * NOTE: This class is auto generated by the swagger code generator program.
- * https://github.com/swagger-api/swagger-codegen.git
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
  * Do not edit the class manually.
  *
  */
@@ -20,15 +20,15 @@
     factory(require('expect.js'), require('../../src/index'));
   } else {
     // Browser globals (root is window)
-    factory(root.expect, root.SwaggerPetstore);
+    factory(root.expect, root.OpenApiPetstore);
   }
-}(this, function(expect, SwaggerPetstore) {
+}(this, function(expect, OpenApiPetstore) {
   'use strict';
 
   var instance;
 
   beforeEach(function() {
-    instance = new SwaggerPetstore.EnumArrays();
+    instance = new OpenApiPetstore.EnumArrays();
   });
 
   var getProperty = function(object, getter, property) {
@@ -50,19 +50,19 @@
   describe('EnumArrays', function() {
     it('should create an instance of EnumArrays', function() {
       // uncomment below and update the code to test EnumArrays
-      //var instane = new SwaggerPetstore.EnumArrays();
-      //expect(instance).to.be.a(SwaggerPetstore.EnumArrays);
+      //var instane = new OpenApiPetstore.EnumArrays();
+      //expect(instance).to.be.a(OpenApiPetstore.EnumArrays);
     });
 
     it('should have the property justSymbol (base name: "just_symbol")', function() {
       // uncomment below and update the code to test the property justSymbol
-      //var instane = new SwaggerPetstore.EnumArrays();
+      //var instane = new OpenApiPetstore.EnumArrays();
       //expect(instance).to.be();
     });
 
     it('should have the property arrayEnum (base name: "array_enum")', function() {
       // uncomment below and update the code to test the property arrayEnum
-      //var instane = new SwaggerPetstore.EnumArrays();
+      //var instane = new OpenApiPetstore.EnumArrays();
       //expect(instance).to.be();
     });
 
diff --git a/samples/client/petstore/javascript-es6/test/model/EnumClass.spec.js b/samples/client/petstore/javascript-es6/test/model/EnumClass.spec.js
index 2f60b4fc4a4f..eb5a1117918f 100644
--- a/samples/client/petstore/javascript-es6/test/model/EnumClass.spec.js
+++ b/samples/client/petstore/javascript-es6/test/model/EnumClass.spec.js
@@ -1,12 +1,12 @@
 /**
- * Swagger Petstore
+ * OpenAPI Petstore
  * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
  *
  * OpenAPI spec version: 1.0.0
- * Contact: apiteam@swagger.io
+ * 
  *
- * NOTE: This class is auto generated by the swagger code generator program.
- * https://github.com/swagger-api/swagger-codegen.git
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
  * Do not edit the class manually.
  *
  */
@@ -20,9 +20,9 @@
     factory(require('expect.js'), require('../../src/index'));
   } else {
     // Browser globals (root is window)
-    factory(root.expect, root.SwaggerPetstore);
+    factory(root.expect, root.OpenApiPetstore);
   }
-}(this, function(expect, SwaggerPetstore) {
+}(this, function(expect, OpenApiPetstore) {
   'use strict';
 
   var instance;
@@ -49,8 +49,8 @@
   describe('EnumClass', function() {
     it('should create an instance of EnumClass', function() {
       // uncomment below and update the code to test EnumClass
-      //var instane = new SwaggerPetstore.EnumClass();
-      //expect(instance).to.be.a(SwaggerPetstore.EnumClass);
+      //var instane = new OpenApiPetstore.EnumClass();
+      //expect(instance).to.be.a(OpenApiPetstore.EnumClass);
     });
 
   });
diff --git a/samples/client/petstore/javascript-es6/test/model/EnumTest.spec.js b/samples/client/petstore/javascript-es6/test/model/EnumTest.spec.js
index 1a08cba3d727..6d7c2519e684 100644
--- a/samples/client/petstore/javascript-es6/test/model/EnumTest.spec.js
+++ b/samples/client/petstore/javascript-es6/test/model/EnumTest.spec.js
@@ -1,12 +1,12 @@
 /**
- * Swagger Petstore
+ * OpenAPI Petstore
  * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
  *
  * OpenAPI spec version: 1.0.0
- * Contact: apiteam@swagger.io
+ * 
  *
- * NOTE: This class is auto generated by the swagger code generator program.
- * https://github.com/swagger-api/swagger-codegen.git
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
  * Do not edit the class manually.
  *
  */
@@ -20,15 +20,15 @@
     factory(require('expect.js'), require('../../src/index'));
   } else {
     // Browser globals (root is window)
-    factory(root.expect, root.SwaggerPetstore);
+    factory(root.expect, root.OpenApiPetstore);
   }
-}(this, function(expect, SwaggerPetstore) {
+}(this, function(expect, OpenApiPetstore) {
   'use strict';
 
   var instance;
 
   beforeEach(function() {
-    instance = new SwaggerPetstore.EnumTest();
+    instance = new OpenApiPetstore.EnumTest();
   });
 
   var getProperty = function(object, getter, property) {
@@ -50,31 +50,37 @@
   describe('EnumTest', function() {
     it('should create an instance of EnumTest', function() {
       // uncomment below and update the code to test EnumTest
-      //var instane = new SwaggerPetstore.EnumTest();
-      //expect(instance).to.be.a(SwaggerPetstore.EnumTest);
+      //var instane = new OpenApiPetstore.EnumTest();
+      //expect(instance).to.be.a(OpenApiPetstore.EnumTest);
     });
 
     it('should have the property enumString (base name: "enum_string")', function() {
       // uncomment below and update the code to test the property enumString
-      //var instane = new SwaggerPetstore.EnumTest();
+      //var instane = new OpenApiPetstore.EnumTest();
+      //expect(instance).to.be();
+    });
+
+    it('should have the property enumStringRequired (base name: "enum_string_required")', function() {
+      // uncomment below and update the code to test the property enumStringRequired
+      //var instane = new OpenApiPetstore.EnumTest();
       //expect(instance).to.be();
     });
 
     it('should have the property enumInteger (base name: "enum_integer")', function() {
       // uncomment below and update the code to test the property enumInteger
-      //var instane = new SwaggerPetstore.EnumTest();
+      //var instane = new OpenApiPetstore.EnumTest();
       //expect(instance).to.be();
     });
 
     it('should have the property enumNumber (base name: "enum_number")', function() {
       // uncomment below and update the code to test the property enumNumber
-      //var instane = new SwaggerPetstore.EnumTest();
+      //var instane = new OpenApiPetstore.EnumTest();
       //expect(instance).to.be();
     });
 
     it('should have the property outerEnum (base name: "outerEnum")', function() {
       // uncomment below and update the code to test the property outerEnum
-      //var instane = new SwaggerPetstore.EnumTest();
+      //var instane = new OpenApiPetstore.EnumTest();
       //expect(instance).to.be();
     });
 
diff --git a/samples/client/petstore/javascript-es6/test/model/FormatTest.spec.js b/samples/client/petstore/javascript-es6/test/model/FormatTest.spec.js
index 74b0b80c74e2..2e61e4f8ed94 100644
--- a/samples/client/petstore/javascript-es6/test/model/FormatTest.spec.js
+++ b/samples/client/petstore/javascript-es6/test/model/FormatTest.spec.js
@@ -1,12 +1,12 @@
 /**
- * Swagger Petstore
+ * OpenAPI Petstore
  * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
  *
  * OpenAPI spec version: 1.0.0
- * Contact: apiteam@swagger.io
+ * 
  *
- * NOTE: This class is auto generated by the swagger code generator program.
- * https://github.com/swagger-api/swagger-codegen.git
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
  * Do not edit the class manually.
  *
  */
@@ -20,15 +20,15 @@
     factory(require('expect.js'), require('../../src/index'));
   } else {
     // Browser globals (root is window)
-    factory(root.expect, root.SwaggerPetstore);
+    factory(root.expect, root.OpenApiPetstore);
   }
-}(this, function(expect, SwaggerPetstore) {
+}(this, function(expect, OpenApiPetstore) {
   'use strict';
 
   var instance;
 
   beforeEach(function() {
-    instance = new SwaggerPetstore.FormatTest();
+    instance = new OpenApiPetstore.FormatTest();
   });
 
   var getProperty = function(object, getter, property) {
@@ -50,85 +50,85 @@
   describe('FormatTest', function() {
     it('should create an instance of FormatTest', function() {
       // uncomment below and update the code to test FormatTest
-      //var instane = new SwaggerPetstore.FormatTest();
-      //expect(instance).to.be.a(SwaggerPetstore.FormatTest);
+      //var instane = new OpenApiPetstore.FormatTest();
+      //expect(instance).to.be.a(OpenApiPetstore.FormatTest);
     });
 
     it('should have the property integer (base name: "integer")', function() {
       // uncomment below and update the code to test the property integer
-      //var instane = new SwaggerPetstore.FormatTest();
+      //var instane = new OpenApiPetstore.FormatTest();
       //expect(instance).to.be();
     });
 
     it('should have the property int32 (base name: "int32")', function() {
       // uncomment below and update the code to test the property int32
-      //var instane = new SwaggerPetstore.FormatTest();
+      //var instane = new OpenApiPetstore.FormatTest();
       //expect(instance).to.be();
     });
 
     it('should have the property int64 (base name: "int64")', function() {
       // uncomment below and update the code to test the property int64
-      //var instane = new SwaggerPetstore.FormatTest();
+      //var instane = new OpenApiPetstore.FormatTest();
       //expect(instance).to.be();
     });
 
     it('should have the property _number (base name: "number")', function() {
       // uncomment below and update the code to test the property _number
-      //var instane = new SwaggerPetstore.FormatTest();
+      //var instane = new OpenApiPetstore.FormatTest();
       //expect(instance).to.be();
     });
 
     it('should have the property _float (base name: "float")', function() {
       // uncomment below and update the code to test the property _float
-      //var instane = new SwaggerPetstore.FormatTest();
+      //var instane = new OpenApiPetstore.FormatTest();
       //expect(instance).to.be();
     });
 
     it('should have the property _double (base name: "double")', function() {
       // uncomment below and update the code to test the property _double
-      //var instane = new SwaggerPetstore.FormatTest();
+      //var instane = new OpenApiPetstore.FormatTest();
       //expect(instance).to.be();
     });
 
     it('should have the property _string (base name: "string")', function() {
       // uncomment below and update the code to test the property _string
-      //var instane = new SwaggerPetstore.FormatTest();
+      //var instane = new OpenApiPetstore.FormatTest();
       //expect(instance).to.be();
     });
 
     it('should have the property _byte (base name: "byte")', function() {
       // uncomment below and update the code to test the property _byte
-      //var instane = new SwaggerPetstore.FormatTest();
+      //var instane = new OpenApiPetstore.FormatTest();
       //expect(instance).to.be();
     });
 
     it('should have the property binary (base name: "binary")', function() {
       // uncomment below and update the code to test the property binary
-      //var instane = new SwaggerPetstore.FormatTest();
+      //var instane = new OpenApiPetstore.FormatTest();
       //expect(instance).to.be();
     });
 
     it('should have the property _date (base name: "date")', function() {
       // uncomment below and update the code to test the property _date
-      //var instane = new SwaggerPetstore.FormatTest();
+      //var instane = new OpenApiPetstore.FormatTest();
       //expect(instance).to.be();
     });
 
     it('should have the property dateTime (base name: "dateTime")', function() {
       // uncomment below and update the code to test the property dateTime
-      //var instane = new SwaggerPetstore.FormatTest();
+      //var instane = new OpenApiPetstore.FormatTest();
       //expect(instance).to.be();
     });
 
     it('should have the property uuid (base name: "uuid")', function() {
       // uncomment below and update the code to test the property uuid
-      //var instane = new SwaggerPetstore.FormatTest();
+      //var instane = new OpenApiPetstore.FormatTest();
       //expect(instance).to.be();
     });
 
     it('should have the property password (base name: "password")', function() {
       // uncomment below and update the code to test the property password
-      //var instane = new SwaggerPetstore.FormatTest();
+      //var instane = new OpenApiPetstore.FormatTest();
       //expect(instance).to.be();
     });
 
diff --git a/samples/client/petstore/javascript-es6/test/model/HasOnlyReadOnly.spec.js b/samples/client/petstore/javascript-es6/test/model/HasOnlyReadOnly.spec.js
index ad4f4ba6d71e..409e06ad823c 100644
--- a/samples/client/petstore/javascript-es6/test/model/HasOnlyReadOnly.spec.js
+++ b/samples/client/petstore/javascript-es6/test/model/HasOnlyReadOnly.spec.js
@@ -1,12 +1,12 @@
 /**
- * Swagger Petstore
+ * OpenAPI Petstore
  * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
  *
  * OpenAPI spec version: 1.0.0
- * Contact: apiteam@swagger.io
+ * 
  *
- * NOTE: This class is auto generated by the swagger code generator program.
- * https://github.com/swagger-api/swagger-codegen.git
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
  * Do not edit the class manually.
  *
  */
@@ -20,15 +20,15 @@
     factory(require('expect.js'), require('../../src/index'));
   } else {
     // Browser globals (root is window)
-    factory(root.expect, root.SwaggerPetstore);
+    factory(root.expect, root.OpenApiPetstore);
   }
-}(this, function(expect, SwaggerPetstore) {
+}(this, function(expect, OpenApiPetstore) {
   'use strict';
 
   var instance;
 
   beforeEach(function() {
-    instance = new SwaggerPetstore.HasOnlyReadOnly();
+    instance = new OpenApiPetstore.HasOnlyReadOnly();
   });
 
   var getProperty = function(object, getter, property) {
@@ -50,19 +50,19 @@
   describe('HasOnlyReadOnly', function() {
     it('should create an instance of HasOnlyReadOnly', function() {
       // uncomment below and update the code to test HasOnlyReadOnly
-      //var instane = new SwaggerPetstore.HasOnlyReadOnly();
-      //expect(instance).to.be.a(SwaggerPetstore.HasOnlyReadOnly);
+      //var instane = new OpenApiPetstore.HasOnlyReadOnly();
+      //expect(instance).to.be.a(OpenApiPetstore.HasOnlyReadOnly);
     });
 
     it('should have the property bar (base name: "bar")', function() {
       // uncomment below and update the code to test the property bar
-      //var instane = new SwaggerPetstore.HasOnlyReadOnly();
+      //var instane = new OpenApiPetstore.HasOnlyReadOnly();
       //expect(instance).to.be();
     });
 
     it('should have the property foo (base name: "foo")', function() {
       // uncomment below and update the code to test the property foo
-      //var instane = new SwaggerPetstore.HasOnlyReadOnly();
+      //var instane = new OpenApiPetstore.HasOnlyReadOnly();
       //expect(instance).to.be();
     });
 
diff --git a/samples/client/petstore/javascript-es6/test/model/List.spec.js b/samples/client/petstore/javascript-es6/test/model/List.spec.js
index 7ea30e82fc81..e3a8574d9aef 100644
--- a/samples/client/petstore/javascript-es6/test/model/List.spec.js
+++ b/samples/client/petstore/javascript-es6/test/model/List.spec.js
@@ -1,12 +1,12 @@
 /**
- * Swagger Petstore
+ * OpenAPI Petstore
  * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
  *
  * OpenAPI spec version: 1.0.0
- * Contact: apiteam@swagger.io
+ * 
  *
- * NOTE: This class is auto generated by the swagger code generator program.
- * https://github.com/swagger-api/swagger-codegen.git
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
  * Do not edit the class manually.
  *
  */
@@ -20,15 +20,15 @@
     factory(require('expect.js'), require('../../src/index'));
   } else {
     // Browser globals (root is window)
-    factory(root.expect, root.SwaggerPetstore);
+    factory(root.expect, root.OpenApiPetstore);
   }
-}(this, function(expect, SwaggerPetstore) {
+}(this, function(expect, OpenApiPetstore) {
   'use strict';
 
   var instance;
 
   beforeEach(function() {
-    instance = new SwaggerPetstore.List();
+    instance = new OpenApiPetstore.List();
   });
 
   var getProperty = function(object, getter, property) {
@@ -50,13 +50,13 @@
   describe('List', function() {
     it('should create an instance of List', function() {
       // uncomment below and update the code to test List
-      //var instane = new SwaggerPetstore.List();
-      //expect(instance).to.be.a(SwaggerPetstore.List);
+      //var instane = new OpenApiPetstore.List();
+      //expect(instance).to.be.a(OpenApiPetstore.List);
     });
 
-    it('should have the property _123List (base name: "123-list")', function() {
-      // uncomment below and update the code to test the property _123List
-      //var instane = new SwaggerPetstore.List();
+    it('should have the property _123list (base name: "123-list")', function() {
+      // uncomment below and update the code to test the property _123list
+      //var instane = new OpenApiPetstore.List();
       //expect(instance).to.be();
     });
 
diff --git a/samples/client/petstore/javascript-es6/test/model/MapTest.spec.js b/samples/client/petstore/javascript-es6/test/model/MapTest.spec.js
index 1a67fcf7ae6b..da009beec4eb 100644
--- a/samples/client/petstore/javascript-es6/test/model/MapTest.spec.js
+++ b/samples/client/petstore/javascript-es6/test/model/MapTest.spec.js
@@ -1,12 +1,12 @@
 /**
- * Swagger Petstore
+ * OpenAPI Petstore
  * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
  *
  * OpenAPI spec version: 1.0.0
- * Contact: apiteam@swagger.io
+ * 
  *
- * NOTE: This class is auto generated by the swagger code generator program.
- * https://github.com/swagger-api/swagger-codegen.git
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
  * Do not edit the class manually.
  *
  */
@@ -20,15 +20,15 @@
     factory(require('expect.js'), require('../../src/index'));
   } else {
     // Browser globals (root is window)
-    factory(root.expect, root.SwaggerPetstore);
+    factory(root.expect, root.OpenApiPetstore);
   }
-}(this, function(expect, SwaggerPetstore) {
+}(this, function(expect, OpenApiPetstore) {
   'use strict';
 
   var instance;
 
   beforeEach(function() {
-    instance = new SwaggerPetstore.MapTest();
+    instance = new OpenApiPetstore.MapTest();
   });
 
   var getProperty = function(object, getter, property) {
@@ -50,19 +50,19 @@
   describe('MapTest', function() {
     it('should create an instance of MapTest', function() {
       // uncomment below and update the code to test MapTest
-      //var instane = new SwaggerPetstore.MapTest();
-      //expect(instance).to.be.a(SwaggerPetstore.MapTest);
+      //var instane = new OpenApiPetstore.MapTest();
+      //expect(instance).to.be.a(OpenApiPetstore.MapTest);
     });
 
     it('should have the property mapMapOfString (base name: "map_map_of_string")', function() {
       // uncomment below and update the code to test the property mapMapOfString
-      //var instane = new SwaggerPetstore.MapTest();
+      //var instane = new OpenApiPetstore.MapTest();
       //expect(instance).to.be();
     });
 
     it('should have the property mapOfEnumString (base name: "map_of_enum_string")', function() {
       // uncomment below and update the code to test the property mapOfEnumString
-      //var instane = new SwaggerPetstore.MapTest();
+      //var instane = new OpenApiPetstore.MapTest();
       //expect(instance).to.be();
     });
 
diff --git a/samples/client/petstore/javascript-es6/test/model/MixedPropertiesAndAdditionalPropertiesClass.spec.js b/samples/client/petstore/javascript-es6/test/model/MixedPropertiesAndAdditionalPropertiesClass.spec.js
index be493898584e..c9174f561547 100644
--- a/samples/client/petstore/javascript-es6/test/model/MixedPropertiesAndAdditionalPropertiesClass.spec.js
+++ b/samples/client/petstore/javascript-es6/test/model/MixedPropertiesAndAdditionalPropertiesClass.spec.js
@@ -1,12 +1,12 @@
 /**
- * Swagger Petstore
+ * OpenAPI Petstore
  * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
  *
  * OpenAPI spec version: 1.0.0
- * Contact: apiteam@swagger.io
+ * 
  *
- * NOTE: This class is auto generated by the swagger code generator program.
- * https://github.com/swagger-api/swagger-codegen.git
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
  * Do not edit the class manually.
  *
  */
@@ -20,15 +20,15 @@
     factory(require('expect.js'), require('../../src/index'));
   } else {
     // Browser globals (root is window)
-    factory(root.expect, root.SwaggerPetstore);
+    factory(root.expect, root.OpenApiPetstore);
   }
-}(this, function(expect, SwaggerPetstore) {
+}(this, function(expect, OpenApiPetstore) {
   'use strict';
 
   var instance;
 
   beforeEach(function() {
-    instance = new SwaggerPetstore.MixedPropertiesAndAdditionalPropertiesClass();
+    instance = new OpenApiPetstore.MixedPropertiesAndAdditionalPropertiesClass();
   });
 
   var getProperty = function(object, getter, property) {
@@ -50,25 +50,25 @@
   describe('MixedPropertiesAndAdditionalPropertiesClass', function() {
     it('should create an instance of MixedPropertiesAndAdditionalPropertiesClass', function() {
       // uncomment below and update the code to test MixedPropertiesAndAdditionalPropertiesClass
-      //var instane = new SwaggerPetstore.MixedPropertiesAndAdditionalPropertiesClass();
-      //expect(instance).to.be.a(SwaggerPetstore.MixedPropertiesAndAdditionalPropertiesClass);
+      //var instane = new OpenApiPetstore.MixedPropertiesAndAdditionalPropertiesClass();
+      //expect(instance).to.be.a(OpenApiPetstore.MixedPropertiesAndAdditionalPropertiesClass);
     });
 
     it('should have the property uuid (base name: "uuid")', function() {
       // uncomment below and update the code to test the property uuid
-      //var instane = new SwaggerPetstore.MixedPropertiesAndAdditionalPropertiesClass();
+      //var instane = new OpenApiPetstore.MixedPropertiesAndAdditionalPropertiesClass();
       //expect(instance).to.be();
     });
 
     it('should have the property dateTime (base name: "dateTime")', function() {
       // uncomment below and update the code to test the property dateTime
-      //var instane = new SwaggerPetstore.MixedPropertiesAndAdditionalPropertiesClass();
+      //var instane = new OpenApiPetstore.MixedPropertiesAndAdditionalPropertiesClass();
       //expect(instance).to.be();
     });
 
     it('should have the property map (base name: "map")', function() {
       // uncomment below and update the code to test the property map
-      //var instane = new SwaggerPetstore.MixedPropertiesAndAdditionalPropertiesClass();
+      //var instane = new OpenApiPetstore.MixedPropertiesAndAdditionalPropertiesClass();
       //expect(instance).to.be();
     });
 
diff --git a/samples/client/petstore/javascript-es6/test/model/Model200Response.spec.js b/samples/client/petstore/javascript-es6/test/model/Model200Response.spec.js
index 5c513a36e1ac..13f768e97307 100644
--- a/samples/client/petstore/javascript-es6/test/model/Model200Response.spec.js
+++ b/samples/client/petstore/javascript-es6/test/model/Model200Response.spec.js
@@ -1,12 +1,12 @@
 /**
- * Swagger Petstore
+ * OpenAPI Petstore
  * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
  *
  * OpenAPI spec version: 1.0.0
- * Contact: apiteam@swagger.io
+ * 
  *
- * NOTE: This class is auto generated by the swagger code generator program.
- * https://github.com/swagger-api/swagger-codegen.git
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
  * Do not edit the class manually.
  *
  */
@@ -20,15 +20,15 @@
     factory(require('expect.js'), require('../../src/index'));
   } else {
     // Browser globals (root is window)
-    factory(root.expect, root.SwaggerPetstore);
+    factory(root.expect, root.OpenApiPetstore);
   }
-}(this, function(expect, SwaggerPetstore) {
+}(this, function(expect, OpenApiPetstore) {
   'use strict';
 
   var instance;
 
   beforeEach(function() {
-    instance = new SwaggerPetstore.Model200Response();
+    instance = new OpenApiPetstore.Model200Response();
   });
 
   var getProperty = function(object, getter, property) {
@@ -50,19 +50,19 @@
   describe('Model200Response', function() {
     it('should create an instance of Model200Response', function() {
       // uncomment below and update the code to test Model200Response
-      //var instane = new SwaggerPetstore.Model200Response();
-      //expect(instance).to.be.a(SwaggerPetstore.Model200Response);
+      //var instane = new OpenApiPetstore.Model200Response();
+      //expect(instance).to.be.a(OpenApiPetstore.Model200Response);
     });
 
     it('should have the property name (base name: "name")', function() {
       // uncomment below and update the code to test the property name
-      //var instane = new SwaggerPetstore.Model200Response();
+      //var instane = new OpenApiPetstore.Model200Response();
       //expect(instance).to.be();
     });
 
     it('should have the property _class (base name: "class")', function() {
       // uncomment below and update the code to test the property _class
-      //var instane = new SwaggerPetstore.Model200Response();
+      //var instane = new OpenApiPetstore.Model200Response();
       //expect(instance).to.be();
     });
 
diff --git a/samples/client/petstore/javascript-es6/test/model/ModelReturn.spec.js b/samples/client/petstore/javascript-es6/test/model/ModelReturn.spec.js
index 62b5f6ba57d3..bda09c52366d 100644
--- a/samples/client/petstore/javascript-es6/test/model/ModelReturn.spec.js
+++ b/samples/client/petstore/javascript-es6/test/model/ModelReturn.spec.js
@@ -1,12 +1,12 @@
 /**
- * Swagger Petstore
+ * OpenAPI Petstore
  * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
  *
  * OpenAPI spec version: 1.0.0
- * Contact: apiteam@swagger.io
+ * 
  *
- * NOTE: This class is auto generated by the swagger code generator program.
- * https://github.com/swagger-api/swagger-codegen.git
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
  * Do not edit the class manually.
  *
  */
@@ -20,15 +20,15 @@
     factory(require('expect.js'), require('../../src/index'));
   } else {
     // Browser globals (root is window)
-    factory(root.expect, root.SwaggerPetstore);
+    factory(root.expect, root.OpenApiPetstore);
   }
-}(this, function(expect, SwaggerPetstore) {
+}(this, function(expect, OpenApiPetstore) {
   'use strict';
 
   var instance;
 
   beforeEach(function() {
-    instance = new SwaggerPetstore.ModelReturn();
+    instance = new OpenApiPetstore.ModelReturn();
   });
 
   var getProperty = function(object, getter, property) {
@@ -50,13 +50,13 @@
   describe('ModelReturn', function() {
     it('should create an instance of ModelReturn', function() {
       // uncomment below and update the code to test ModelReturn
-      //var instane = new SwaggerPetstore.ModelReturn();
-      //expect(instance).to.be.a(SwaggerPetstore.ModelReturn);
+      //var instane = new OpenApiPetstore.ModelReturn();
+      //expect(instance).to.be.a(OpenApiPetstore.ModelReturn);
     });
 
     it('should have the property _return (base name: "return")', function() {
       // uncomment below and update the code to test the property _return
-      //var instane = new SwaggerPetstore.ModelReturn();
+      //var instane = new OpenApiPetstore.ModelReturn();
       //expect(instance).to.be();
     });
 
diff --git a/samples/client/petstore/javascript-es6/test/model/Name.spec.js b/samples/client/petstore/javascript-es6/test/model/Name.spec.js
index c9caf576bd02..3726b8867b4c 100644
--- a/samples/client/petstore/javascript-es6/test/model/Name.spec.js
+++ b/samples/client/petstore/javascript-es6/test/model/Name.spec.js
@@ -1,12 +1,12 @@
 /**
- * Swagger Petstore
+ * OpenAPI Petstore
  * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
  *
  * OpenAPI spec version: 1.0.0
- * Contact: apiteam@swagger.io
+ * 
  *
- * NOTE: This class is auto generated by the swagger code generator program.
- * https://github.com/swagger-api/swagger-codegen.git
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
  * Do not edit the class manually.
  *
  */
@@ -20,15 +20,15 @@
     factory(require('expect.js'), require('../../src/index'));
   } else {
     // Browser globals (root is window)
-    factory(root.expect, root.SwaggerPetstore);
+    factory(root.expect, root.OpenApiPetstore);
   }
-}(this, function(expect, SwaggerPetstore) {
+}(this, function(expect, OpenApiPetstore) {
   'use strict';
 
   var instance;
 
   beforeEach(function() {
-    instance = new SwaggerPetstore.Name();
+    instance = new OpenApiPetstore.Name();
   });
 
   var getProperty = function(object, getter, property) {
@@ -50,31 +50,31 @@
   describe('Name', function() {
     it('should create an instance of Name', function() {
       // uncomment below and update the code to test Name
-      //var instane = new SwaggerPetstore.Name();
-      //expect(instance).to.be.a(SwaggerPetstore.Name);
+      //var instane = new OpenApiPetstore.Name();
+      //expect(instance).to.be.a(OpenApiPetstore.Name);
     });
 
     it('should have the property name (base name: "name")', function() {
       // uncomment below and update the code to test the property name
-      //var instane = new SwaggerPetstore.Name();
+      //var instane = new OpenApiPetstore.Name();
       //expect(instance).to.be();
     });
 
     it('should have the property snakeCase (base name: "snake_case")', function() {
       // uncomment below and update the code to test the property snakeCase
-      //var instane = new SwaggerPetstore.Name();
+      //var instane = new OpenApiPetstore.Name();
       //expect(instance).to.be();
     });
 
     it('should have the property property (base name: "property")', function() {
       // uncomment below and update the code to test the property property
-      //var instane = new SwaggerPetstore.Name();
+      //var instane = new OpenApiPetstore.Name();
       //expect(instance).to.be();
     });
 
-    it('should have the property _123Number (base name: "123Number")', function() {
-      // uncomment below and update the code to test the property _123Number
-      //var instane = new SwaggerPetstore.Name();
+    it('should have the property _123number (base name: "123Number")', function() {
+      // uncomment below and update the code to test the property _123number
+      //var instane = new OpenApiPetstore.Name();
       //expect(instance).to.be();
     });
 
diff --git a/samples/client/petstore/javascript-es6/test/model/NumberOnly.spec.js b/samples/client/petstore/javascript-es6/test/model/NumberOnly.spec.js
index 641c03b13a49..2261973c9af1 100644
--- a/samples/client/petstore/javascript-es6/test/model/NumberOnly.spec.js
+++ b/samples/client/petstore/javascript-es6/test/model/NumberOnly.spec.js
@@ -1,12 +1,12 @@
 /**
- * Swagger Petstore
+ * OpenAPI Petstore
  * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
  *
  * OpenAPI spec version: 1.0.0
- * Contact: apiteam@swagger.io
+ * 
  *
- * NOTE: This class is auto generated by the swagger code generator program.
- * https://github.com/swagger-api/swagger-codegen.git
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
  * Do not edit the class manually.
  *
  */
@@ -20,15 +20,15 @@
     factory(require('expect.js'), require('../../src/index'));
   } else {
     // Browser globals (root is window)
-    factory(root.expect, root.SwaggerPetstore);
+    factory(root.expect, root.OpenApiPetstore);
   }
-}(this, function(expect, SwaggerPetstore) {
+}(this, function(expect, OpenApiPetstore) {
   'use strict';
 
   var instance;
 
   beforeEach(function() {
-    instance = new SwaggerPetstore.NumberOnly();
+    instance = new OpenApiPetstore.NumberOnly();
   });
 
   var getProperty = function(object, getter, property) {
@@ -50,13 +50,13 @@
   describe('NumberOnly', function() {
     it('should create an instance of NumberOnly', function() {
       // uncomment below and update the code to test NumberOnly
-      //var instane = new SwaggerPetstore.NumberOnly();
-      //expect(instance).to.be.a(SwaggerPetstore.NumberOnly);
+      //var instane = new OpenApiPetstore.NumberOnly();
+      //expect(instance).to.be.a(OpenApiPetstore.NumberOnly);
     });
 
     it('should have the property justNumber (base name: "JustNumber")', function() {
       // uncomment below and update the code to test the property justNumber
-      //var instane = new SwaggerPetstore.NumberOnly();
+      //var instane = new OpenApiPetstore.NumberOnly();
       //expect(instance).to.be();
     });
 
diff --git a/samples/client/petstore/javascript-es6/test/model/Order.spec.js b/samples/client/petstore/javascript-es6/test/model/Order.spec.js
index 69527dc8fdbd..536d217cc5be 100644
--- a/samples/client/petstore/javascript-es6/test/model/Order.spec.js
+++ b/samples/client/petstore/javascript-es6/test/model/Order.spec.js
@@ -1,12 +1,12 @@
 /**
- * Swagger Petstore
+ * OpenAPI Petstore
  * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
  *
  * OpenAPI spec version: 1.0.0
- * Contact: apiteam@swagger.io
+ * 
  *
- * NOTE: This class is auto generated by the swagger code generator program.
- * https://github.com/swagger-api/swagger-codegen.git
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
  * Do not edit the class manually.
  *
  */
@@ -20,15 +20,15 @@
     factory(require('expect.js'), require('../../src/index'));
   } else {
     // Browser globals (root is window)
-    factory(root.expect, root.SwaggerPetstore);
+    factory(root.expect, root.OpenApiPetstore);
   }
-}(this, function(expect, SwaggerPetstore) {
+}(this, function(expect, OpenApiPetstore) {
   'use strict';
 
   var instance;
 
   beforeEach(function() {
-    instance = new SwaggerPetstore.Order();
+    instance = new OpenApiPetstore.Order();
   });
 
   var getProperty = function(object, getter, property) {
@@ -50,43 +50,43 @@
   describe('Order', function() {
     it('should create an instance of Order', function() {
       // uncomment below and update the code to test Order
-      //var instane = new SwaggerPetstore.Order();
-      //expect(instance).to.be.a(SwaggerPetstore.Order);
+      //var instane = new OpenApiPetstore.Order();
+      //expect(instance).to.be.a(OpenApiPetstore.Order);
     });
 
     it('should have the property id (base name: "id")', function() {
       // uncomment below and update the code to test the property id
-      //var instane = new SwaggerPetstore.Order();
+      //var instane = new OpenApiPetstore.Order();
       //expect(instance).to.be();
     });
 
     it('should have the property petId (base name: "petId")', function() {
       // uncomment below and update the code to test the property petId
-      //var instane = new SwaggerPetstore.Order();
+      //var instane = new OpenApiPetstore.Order();
       //expect(instance).to.be();
     });
 
     it('should have the property quantity (base name: "quantity")', function() {
       // uncomment below and update the code to test the property quantity
-      //var instane = new SwaggerPetstore.Order();
+      //var instane = new OpenApiPetstore.Order();
       //expect(instance).to.be();
     });
 
     it('should have the property shipDate (base name: "shipDate")', function() {
       // uncomment below and update the code to test the property shipDate
-      //var instane = new SwaggerPetstore.Order();
+      //var instane = new OpenApiPetstore.Order();
       //expect(instance).to.be();
     });
 
     it('should have the property status (base name: "status")', function() {
       // uncomment below and update the code to test the property status
-      //var instane = new SwaggerPetstore.Order();
+      //var instane = new OpenApiPetstore.Order();
       //expect(instance).to.be();
     });
 
     it('should have the property complete (base name: "complete")', function() {
       // uncomment below and update the code to test the property complete
-      //var instane = new SwaggerPetstore.Order();
+      //var instane = new OpenApiPetstore.Order();
       //expect(instance).to.be();
     });
 
diff --git a/samples/client/petstore/javascript-es6/test/model/OuterBoolean.spec.js b/samples/client/petstore/javascript-es6/test/model/OuterBoolean.spec.js
index d5495a638d81..765f758cd095 100644
--- a/samples/client/petstore/javascript-es6/test/model/OuterBoolean.spec.js
+++ b/samples/client/petstore/javascript-es6/test/model/OuterBoolean.spec.js
@@ -28,7 +28,8 @@
   var instance;
 
   beforeEach(function() {
-    instance = new SwaggerPetstore.OuterBoolean();
+    // OuterBoolean is not a member of SwaggerPetstore
+    //instance = new SwaggerPetstore.OuterBoolean();
   });
 
   var getProperty = function(object, getter, property) {
diff --git a/samples/client/petstore/javascript-es6/test/model/OuterComposite.spec.js b/samples/client/petstore/javascript-es6/test/model/OuterComposite.spec.js
index 6fd830b7c0e2..3309d6194223 100644
--- a/samples/client/petstore/javascript-es6/test/model/OuterComposite.spec.js
+++ b/samples/client/petstore/javascript-es6/test/model/OuterComposite.spec.js
@@ -1,12 +1,12 @@
 /**
- * Swagger Petstore
+ * OpenAPI Petstore
  * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
  *
  * OpenAPI spec version: 1.0.0
- * Contact: apiteam@swagger.io
+ * 
  *
- * NOTE: This class is auto generated by the swagger code generator program.
- * https://github.com/swagger-api/swagger-codegen.git
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
  * Do not edit the class manually.
  *
  */
@@ -20,15 +20,15 @@
     factory(require('expect.js'), require('../../src/index'));
   } else {
     // Browser globals (root is window)
-    factory(root.expect, root.SwaggerPetstore);
+    factory(root.expect, root.OpenApiPetstore);
   }
-}(this, function(expect, SwaggerPetstore) {
+}(this, function(expect, OpenApiPetstore) {
   'use strict';
 
   var instance;
 
   beforeEach(function() {
-    instance = new SwaggerPetstore.OuterComposite();
+    instance = new OpenApiPetstore.OuterComposite();
   });
 
   var getProperty = function(object, getter, property) {
@@ -50,25 +50,25 @@
   describe('OuterComposite', function() {
     it('should create an instance of OuterComposite', function() {
       // uncomment below and update the code to test OuterComposite
-      //var instane = new SwaggerPetstore.OuterComposite();
-      //expect(instance).to.be.a(SwaggerPetstore.OuterComposite);
+      //var instane = new OpenApiPetstore.OuterComposite();
+      //expect(instance).to.be.a(OpenApiPetstore.OuterComposite);
     });
 
     it('should have the property myNumber (base name: "my_number")', function() {
       // uncomment below and update the code to test the property myNumber
-      //var instane = new SwaggerPetstore.OuterComposite();
+      //var instane = new OpenApiPetstore.OuterComposite();
       //expect(instance).to.be();
     });
 
     it('should have the property myString (base name: "my_string")', function() {
       // uncomment below and update the code to test the property myString
-      //var instane = new SwaggerPetstore.OuterComposite();
+      //var instane = new OpenApiPetstore.OuterComposite();
       //expect(instance).to.be();
     });
 
     it('should have the property myBoolean (base name: "my_boolean")', function() {
       // uncomment below and update the code to test the property myBoolean
-      //var instane = new SwaggerPetstore.OuterComposite();
+      //var instane = new OpenApiPetstore.OuterComposite();
       //expect(instance).to.be();
     });
 
diff --git a/samples/client/petstore/javascript-es6/test/model/OuterEnum.spec.js b/samples/client/petstore/javascript-es6/test/model/OuterEnum.spec.js
index 14c26a3aef56..fa51fa90cb45 100644
--- a/samples/client/petstore/javascript-es6/test/model/OuterEnum.spec.js
+++ b/samples/client/petstore/javascript-es6/test/model/OuterEnum.spec.js
@@ -1,12 +1,12 @@
 /**
- * Swagger Petstore
+ * OpenAPI Petstore
  * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
  *
  * OpenAPI spec version: 1.0.0
- * Contact: apiteam@swagger.io
+ * 
  *
- * NOTE: This class is auto generated by the swagger code generator program.
- * https://github.com/swagger-api/swagger-codegen.git
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
  * Do not edit the class manually.
  *
  */
@@ -20,9 +20,9 @@
     factory(require('expect.js'), require('../../src/index'));
   } else {
     // Browser globals (root is window)
-    factory(root.expect, root.SwaggerPetstore);
+    factory(root.expect, root.OpenApiPetstore);
   }
-}(this, function(expect, SwaggerPetstore) {
+}(this, function(expect, OpenApiPetstore) {
   'use strict';
 
   var instance;
@@ -49,8 +49,8 @@
   describe('OuterEnum', function() {
     it('should create an instance of OuterEnum', function() {
       // uncomment below and update the code to test OuterEnum
-      //var instane = new SwaggerPetstore.OuterEnum();
-      //expect(instance).to.be.a(SwaggerPetstore.OuterEnum);
+      //var instane = new OpenApiPetstore.OuterEnum();
+      //expect(instance).to.be.a(OpenApiPetstore.OuterEnum);
     });
 
   });
diff --git a/samples/client/petstore/javascript-es6/test/model/OuterNumber.spec.js b/samples/client/petstore/javascript-es6/test/model/OuterNumber.spec.js
index 7b0e4ebf1193..2466fbe6dc9f 100644
--- a/samples/client/petstore/javascript-es6/test/model/OuterNumber.spec.js
+++ b/samples/client/petstore/javascript-es6/test/model/OuterNumber.spec.js
@@ -28,7 +28,8 @@
   var instance;
 
   beforeEach(function() {
-    instance = new SwaggerPetstore.OuterNumber();
+    // OuterNumber is not a member of SwaggerPetstore
+    //instance = new SwaggerPetstore.OuterNumber();
   });
 
   var getProperty = function(object, getter, property) {
diff --git a/samples/client/petstore/javascript-es6/test/model/OuterString.spec.js b/samples/client/petstore/javascript-es6/test/model/OuterString.spec.js
index 4e7f99ca88d1..46d6c579bc9f 100644
--- a/samples/client/petstore/javascript-es6/test/model/OuterString.spec.js
+++ b/samples/client/petstore/javascript-es6/test/model/OuterString.spec.js
@@ -28,7 +28,8 @@
   var instance;
 
   beforeEach(function() {
-    instance = new SwaggerPetstore.OuterString();
+    // OuterString is not a member of SwaggerPetstore
+    //instance = new SwaggerPetstore.OuterString();
   });
 
   var getProperty = function(object, getter, property) {
diff --git a/samples/client/petstore/javascript-es6/test/model/Pet.spec.js b/samples/client/petstore/javascript-es6/test/model/Pet.spec.js
index 0da95d086620..f8ce9b93a3cd 100644
--- a/samples/client/petstore/javascript-es6/test/model/Pet.spec.js
+++ b/samples/client/petstore/javascript-es6/test/model/Pet.spec.js
@@ -1,12 +1,12 @@
 /**
- * Swagger Petstore
+ * OpenAPI Petstore
  * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
  *
  * OpenAPI spec version: 1.0.0
- * Contact: apiteam@swagger.io
+ * 
  *
- * NOTE: This class is auto generated by the swagger code generator program.
- * https://github.com/swagger-api/swagger-codegen.git
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
  * Do not edit the class manually.
  *
  */
@@ -20,15 +20,15 @@
     factory(require('expect.js'), require('../../src/index'));
   } else {
     // Browser globals (root is window)
-    factory(root.expect, root.SwaggerPetstore);
+    factory(root.expect, root.OpenApiPetstore);
   }
-}(this, function(expect, SwaggerPetstore) {
+}(this, function(expect, OpenApiPetstore) {
   'use strict';
 
   var instance;
 
   beforeEach(function() {
-    instance = new SwaggerPetstore.Pet();
+    instance = new OpenApiPetstore.Pet();
   });
 
   var getProperty = function(object, getter, property) {
@@ -50,43 +50,43 @@
   describe('Pet', function() {
     it('should create an instance of Pet', function() {
       // uncomment below and update the code to test Pet
-      //var instane = new SwaggerPetstore.Pet();
-      //expect(instance).to.be.a(SwaggerPetstore.Pet);
+      //var instane = new OpenApiPetstore.Pet();
+      //expect(instance).to.be.a(OpenApiPetstore.Pet);
     });
 
     it('should have the property id (base name: "id")', function() {
       // uncomment below and update the code to test the property id
-      //var instane = new SwaggerPetstore.Pet();
+      //var instane = new OpenApiPetstore.Pet();
       //expect(instance).to.be();
     });
 
     it('should have the property category (base name: "category")', function() {
       // uncomment below and update the code to test the property category
-      //var instane = new SwaggerPetstore.Pet();
+      //var instane = new OpenApiPetstore.Pet();
       //expect(instance).to.be();
     });
 
     it('should have the property name (base name: "name")', function() {
       // uncomment below and update the code to test the property name
-      //var instane = new SwaggerPetstore.Pet();
+      //var instane = new OpenApiPetstore.Pet();
       //expect(instance).to.be();
     });
 
     it('should have the property photoUrls (base name: "photoUrls")', function() {
       // uncomment below and update the code to test the property photoUrls
-      //var instane = new SwaggerPetstore.Pet();
+      //var instane = new OpenApiPetstore.Pet();
       //expect(instance).to.be();
     });
 
     it('should have the property tags (base name: "tags")', function() {
       // uncomment below and update the code to test the property tags
-      //var instane = new SwaggerPetstore.Pet();
+      //var instane = new OpenApiPetstore.Pet();
       //expect(instance).to.be();
     });
 
     it('should have the property status (base name: "status")', function() {
       // uncomment below and update the code to test the property status
-      //var instane = new SwaggerPetstore.Pet();
+      //var instane = new OpenApiPetstore.Pet();
       //expect(instance).to.be();
     });
 
diff --git a/samples/client/petstore/javascript-es6/test/model/ReadOnlyFirst.spec.js b/samples/client/petstore/javascript-es6/test/model/ReadOnlyFirst.spec.js
index 375856a5abcb..5bc5cb3a7005 100644
--- a/samples/client/petstore/javascript-es6/test/model/ReadOnlyFirst.spec.js
+++ b/samples/client/petstore/javascript-es6/test/model/ReadOnlyFirst.spec.js
@@ -1,12 +1,12 @@
 /**
- * Swagger Petstore
+ * OpenAPI Petstore
  * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
  *
  * OpenAPI spec version: 1.0.0
- * Contact: apiteam@swagger.io
+ * 
  *
- * NOTE: This class is auto generated by the swagger code generator program.
- * https://github.com/swagger-api/swagger-codegen.git
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
  * Do not edit the class manually.
  *
  */
@@ -20,15 +20,15 @@
     factory(require('expect.js'), require('../../src/index'));
   } else {
     // Browser globals (root is window)
-    factory(root.expect, root.SwaggerPetstore);
+    factory(root.expect, root.OpenApiPetstore);
   }
-}(this, function(expect, SwaggerPetstore) {
+}(this, function(expect, OpenApiPetstore) {
   'use strict';
 
   var instance;
 
   beforeEach(function() {
-    instance = new SwaggerPetstore.ReadOnlyFirst();
+    instance = new OpenApiPetstore.ReadOnlyFirst();
   });
 
   var getProperty = function(object, getter, property) {
@@ -50,19 +50,19 @@
   describe('ReadOnlyFirst', function() {
     it('should create an instance of ReadOnlyFirst', function() {
       // uncomment below and update the code to test ReadOnlyFirst
-      //var instane = new SwaggerPetstore.ReadOnlyFirst();
-      //expect(instance).to.be.a(SwaggerPetstore.ReadOnlyFirst);
+      //var instane = new OpenApiPetstore.ReadOnlyFirst();
+      //expect(instance).to.be.a(OpenApiPetstore.ReadOnlyFirst);
     });
 
     it('should have the property bar (base name: "bar")', function() {
       // uncomment below and update the code to test the property bar
-      //var instane = new SwaggerPetstore.ReadOnlyFirst();
+      //var instane = new OpenApiPetstore.ReadOnlyFirst();
       //expect(instance).to.be();
     });
 
     it('should have the property baz (base name: "baz")', function() {
       // uncomment below and update the code to test the property baz
-      //var instane = new SwaggerPetstore.ReadOnlyFirst();
+      //var instane = new OpenApiPetstore.ReadOnlyFirst();
       //expect(instance).to.be();
     });
 
diff --git a/samples/client/petstore/javascript-es6/test/model/SpecialModelName.spec.js b/samples/client/petstore/javascript-es6/test/model/SpecialModelName.spec.js
index 1d821d94f2a3..f459d2e0cd6f 100644
--- a/samples/client/petstore/javascript-es6/test/model/SpecialModelName.spec.js
+++ b/samples/client/petstore/javascript-es6/test/model/SpecialModelName.spec.js
@@ -1,12 +1,12 @@
 /**
- * Swagger Petstore
+ * OpenAPI Petstore
  * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
  *
  * OpenAPI spec version: 1.0.0
- * Contact: apiteam@swagger.io
+ * 
  *
- * NOTE: This class is auto generated by the swagger code generator program.
- * https://github.com/swagger-api/swagger-codegen.git
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
  * Do not edit the class manually.
  *
  */
@@ -20,15 +20,15 @@
     factory(require('expect.js'), require('../../src/index'));
   } else {
     // Browser globals (root is window)
-    factory(root.expect, root.SwaggerPetstore);
+    factory(root.expect, root.OpenApiPetstore);
   }
-}(this, function(expect, SwaggerPetstore) {
+}(this, function(expect, OpenApiPetstore) {
   'use strict';
 
   var instance;
 
   beforeEach(function() {
-    instance = new SwaggerPetstore.SpecialModelName();
+    instance = new OpenApiPetstore.SpecialModelName();
   });
 
   var getProperty = function(object, getter, property) {
@@ -50,13 +50,13 @@
   describe('SpecialModelName', function() {
     it('should create an instance of SpecialModelName', function() {
       // uncomment below and update the code to test SpecialModelName
-      //var instane = new SwaggerPetstore.SpecialModelName();
-      //expect(instance).to.be.a(SwaggerPetstore.SpecialModelName);
+      //var instane = new OpenApiPetstore.SpecialModelName();
+      //expect(instance).to.be.a(OpenApiPetstore.SpecialModelName);
     });
 
     it('should have the property specialPropertyName (base name: "$special[property.name]")', function() {
       // uncomment below and update the code to test the property specialPropertyName
-      //var instane = new SwaggerPetstore.SpecialModelName();
+      //var instane = new OpenApiPetstore.SpecialModelName();
       //expect(instance).to.be();
     });
 
diff --git a/samples/client/petstore/javascript-es6/test/model/Tag.spec.js b/samples/client/petstore/javascript-es6/test/model/Tag.spec.js
index b4aaf43538ee..2213b06d5090 100644
--- a/samples/client/petstore/javascript-es6/test/model/Tag.spec.js
+++ b/samples/client/petstore/javascript-es6/test/model/Tag.spec.js
@@ -1,12 +1,12 @@
 /**
- * Swagger Petstore
+ * OpenAPI Petstore
  * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
  *
  * OpenAPI spec version: 1.0.0
- * Contact: apiteam@swagger.io
+ * 
  *
- * NOTE: This class is auto generated by the swagger code generator program.
- * https://github.com/swagger-api/swagger-codegen.git
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
  * Do not edit the class manually.
  *
  */
@@ -20,15 +20,15 @@
     factory(require('expect.js'), require('../../src/index'));
   } else {
     // Browser globals (root is window)
-    factory(root.expect, root.SwaggerPetstore);
+    factory(root.expect, root.OpenApiPetstore);
   }
-}(this, function(expect, SwaggerPetstore) {
+}(this, function(expect, OpenApiPetstore) {
   'use strict';
 
   var instance;
 
   beforeEach(function() {
-    instance = new SwaggerPetstore.Tag();
+    instance = new OpenApiPetstore.Tag();
   });
 
   var getProperty = function(object, getter, property) {
@@ -50,19 +50,19 @@
   describe('Tag', function() {
     it('should create an instance of Tag', function() {
       // uncomment below and update the code to test Tag
-      //var instane = new SwaggerPetstore.Tag();
-      //expect(instance).to.be.a(SwaggerPetstore.Tag);
+      //var instane = new OpenApiPetstore.Tag();
+      //expect(instance).to.be.a(OpenApiPetstore.Tag);
     });
 
     it('should have the property id (base name: "id")', function() {
       // uncomment below and update the code to test the property id
-      //var instane = new SwaggerPetstore.Tag();
+      //var instane = new OpenApiPetstore.Tag();
       //expect(instance).to.be();
     });
 
     it('should have the property name (base name: "name")', function() {
       // uncomment below and update the code to test the property name
-      //var instane = new SwaggerPetstore.Tag();
+      //var instane = new OpenApiPetstore.Tag();
       //expect(instance).to.be();
     });
 
diff --git a/samples/client/petstore/javascript-es6/test/model/User.spec.js b/samples/client/petstore/javascript-es6/test/model/User.spec.js
index 19db8f90bfd9..f0cd8819ec88 100644
--- a/samples/client/petstore/javascript-es6/test/model/User.spec.js
+++ b/samples/client/petstore/javascript-es6/test/model/User.spec.js
@@ -1,12 +1,12 @@
 /**
- * Swagger Petstore
+ * OpenAPI Petstore
  * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
  *
  * OpenAPI spec version: 1.0.0
- * Contact: apiteam@swagger.io
+ * 
  *
- * NOTE: This class is auto generated by the swagger code generator program.
- * https://github.com/swagger-api/swagger-codegen.git
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
  * Do not edit the class manually.
  *
  */
@@ -20,15 +20,15 @@
     factory(require('expect.js'), require('../../src/index'));
   } else {
     // Browser globals (root is window)
-    factory(root.expect, root.SwaggerPetstore);
+    factory(root.expect, root.OpenApiPetstore);
   }
-}(this, function(expect, SwaggerPetstore) {
+}(this, function(expect, OpenApiPetstore) {
   'use strict';
 
   var instance;
 
   beforeEach(function() {
-    instance = new SwaggerPetstore.User();
+    instance = new OpenApiPetstore.User();
   });
 
   var getProperty = function(object, getter, property) {
@@ -50,55 +50,55 @@
   describe('User', function() {
     it('should create an instance of User', function() {
       // uncomment below and update the code to test User
-      //var instane = new SwaggerPetstore.User();
-      //expect(instance).to.be.a(SwaggerPetstore.User);
+      //var instane = new OpenApiPetstore.User();
+      //expect(instance).to.be.a(OpenApiPetstore.User);
     });
 
     it('should have the property id (base name: "id")', function() {
       // uncomment below and update the code to test the property id
-      //var instane = new SwaggerPetstore.User();
+      //var instane = new OpenApiPetstore.User();
       //expect(instance).to.be();
     });
 
     it('should have the property username (base name: "username")', function() {
       // uncomment below and update the code to test the property username
-      //var instane = new SwaggerPetstore.User();
+      //var instane = new OpenApiPetstore.User();
       //expect(instance).to.be();
     });
 
     it('should have the property firstName (base name: "firstName")', function() {
       // uncomment below and update the code to test the property firstName
-      //var instane = new SwaggerPetstore.User();
+      //var instane = new OpenApiPetstore.User();
       //expect(instance).to.be();
     });
 
     it('should have the property lastName (base name: "lastName")', function() {
       // uncomment below and update the code to test the property lastName
-      //var instane = new SwaggerPetstore.User();
+      //var instane = new OpenApiPetstore.User();
       //expect(instance).to.be();
     });
 
     it('should have the property email (base name: "email")', function() {
       // uncomment below and update the code to test the property email
-      //var instane = new SwaggerPetstore.User();
+      //var instane = new OpenApiPetstore.User();
       //expect(instance).to.be();
     });
 
     it('should have the property password (base name: "password")', function() {
       // uncomment below and update the code to test the property password
-      //var instane = new SwaggerPetstore.User();
+      //var instane = new OpenApiPetstore.User();
       //expect(instance).to.be();
     });
 
     it('should have the property phone (base name: "phone")', function() {
       // uncomment below and update the code to test the property phone
-      //var instane = new SwaggerPetstore.User();
+      //var instane = new OpenApiPetstore.User();
       //expect(instance).to.be();
     });
 
     it('should have the property userStatus (base name: "userStatus")', function() {
       // uncomment below and update the code to test the property userStatus
-      //var instane = new SwaggerPetstore.User();
+      //var instane = new OpenApiPetstore.User();
       //expect(instance).to.be();
     });
 
diff --git a/samples/client/petstore/javascript-promise-es6/.openapi-generator/VERSION b/samples/client/petstore/javascript-promise-es6/.openapi-generator/VERSION
index f9f7450d1359..1c00c5181548 100644
--- a/samples/client/petstore/javascript-promise-es6/.openapi-generator/VERSION
+++ b/samples/client/petstore/javascript-promise-es6/.openapi-generator/VERSION
@@ -1 +1 @@
-2.3.0-SNAPSHOT
\ No newline at end of file
+3.0.2-SNAPSHOT
\ No newline at end of file
diff --git a/samples/client/petstore/javascript-promise-es6/README.md b/samples/client/petstore/javascript-promise-es6/README.md
index 67af003b88dc..fa41841dab26 100644
--- a/samples/client/petstore/javascript-promise-es6/README.md
+++ b/samples/client/petstore/javascript-promise-es6/README.md
@@ -1,12 +1,12 @@
-# swagger_petstore
+# open_api_petstore
 
-SwaggerPetstore - JavaScript client for swagger_petstore
+OpenApiPetstore - JavaScript client for open_api_petstore
 This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
-This SDK is automatically generated by the [Swagger Codegen](https://github.com/swagger-api/swagger-codegen) project:
+This SDK is automatically generated by the [OpenAPI Generator](https://openapi-generator.tech) project:
 
 - API version: 1.0.0
 - Package version: 1.0.0
-- Build package: io.swagger.codegen.languages.JavascriptClientCodegen
+- Build package: org.openapitools.codegen.languages.JavascriptClientCodegen
 
 ## Installation
 
@@ -20,7 +20,7 @@ please follow the procedure in ["Publishing npm packages"](https://docs.npmjs.co
 Then install it via:
 
 ```shell
-npm install swagger_petstore --save
+npm install open_api_petstore --save
 ```
 
 #### git
@@ -68,13 +68,12 @@ module: {
 Please follow the [installation](#installation) instruction and execute the following JS code:
 
 ```javascript
-var SwaggerPetstore = require('swagger_petstore');
+var OpenApiPetstore = require('open_api_petstore');
 
-var api = new SwaggerPetstore.AnotherFakeApi()
 
-var body = new SwaggerPetstore.Client(); // {Client} client model
-
-api.testSpecialTags(body).then(function(data) {
+var api = new OpenApiPetstore.AnotherFakeApi()
+var client = new OpenApiPetstore.Client(); // {Client} client model
+api.testSpecialTags(client).then(function(data) {
   console.log('API called successfully. Returned data: ' + data);
 }, function(error) {
   console.error(error);
@@ -89,77 +88,75 @@ All URIs are relative to *http://petstore.swagger.io:80/v2*
 
 Class | Method | HTTP request | Description
 ------------ | ------------- | ------------- | -------------
-*SwaggerPetstore.AnotherFakeApi* | [**testSpecialTags**](docs/AnotherFakeApi.md#testSpecialTags) | **PATCH** /another-fake/dummy | To test special tags
-*SwaggerPetstore.FakeApi* | [**fakeOuterBooleanSerialize**](docs/FakeApi.md#fakeOuterBooleanSerialize) | **POST** /fake/outer/boolean | 
-*SwaggerPetstore.FakeApi* | [**fakeOuterCompositeSerialize**](docs/FakeApi.md#fakeOuterCompositeSerialize) | **POST** /fake/outer/composite | 
-*SwaggerPetstore.FakeApi* | [**fakeOuterNumberSerialize**](docs/FakeApi.md#fakeOuterNumberSerialize) | **POST** /fake/outer/number | 
-*SwaggerPetstore.FakeApi* | [**fakeOuterStringSerialize**](docs/FakeApi.md#fakeOuterStringSerialize) | **POST** /fake/outer/string | 
-*SwaggerPetstore.FakeApi* | [**testClientModel**](docs/FakeApi.md#testClientModel) | **PATCH** /fake | To test \"client\" model
-*SwaggerPetstore.FakeApi* | [**testEndpointParameters**](docs/FakeApi.md#testEndpointParameters) | **POST** /fake | Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 
-*SwaggerPetstore.FakeApi* | [**testEnumParameters**](docs/FakeApi.md#testEnumParameters) | **GET** /fake | To test enum parameters
-*SwaggerPetstore.FakeApi* | [**testInlineAdditionalProperties**](docs/FakeApi.md#testInlineAdditionalProperties) | **POST** /fake/inline-additionalProperties | test inline additionalProperties
-*SwaggerPetstore.FakeApi* | [**testJsonFormData**](docs/FakeApi.md#testJsonFormData) | **GET** /fake/jsonFormData | test json serialization of form data
-*SwaggerPetstore.FakeClassnameTags123Api* | [**testClassname**](docs/FakeClassnameTags123Api.md#testClassname) | **PATCH** /fake_classname_test | To test class name in snake case
-*SwaggerPetstore.PetApi* | [**addPet**](docs/PetApi.md#addPet) | **POST** /pet | Add a new pet to the store
-*SwaggerPetstore.PetApi* | [**deletePet**](docs/PetApi.md#deletePet) | **DELETE** /pet/{petId} | Deletes a pet
-*SwaggerPetstore.PetApi* | [**findPetsByStatus**](docs/PetApi.md#findPetsByStatus) | **GET** /pet/findByStatus | Finds Pets by status
-*SwaggerPetstore.PetApi* | [**findPetsByTags**](docs/PetApi.md#findPetsByTags) | **GET** /pet/findByTags | Finds Pets by tags
-*SwaggerPetstore.PetApi* | [**getPetById**](docs/PetApi.md#getPetById) | **GET** /pet/{petId} | Find pet by ID
-*SwaggerPetstore.PetApi* | [**updatePet**](docs/PetApi.md#updatePet) | **PUT** /pet | Update an existing pet
-*SwaggerPetstore.PetApi* | [**updatePetWithForm**](docs/PetApi.md#updatePetWithForm) | **POST** /pet/{petId} | Updates a pet in the store with form data
-*SwaggerPetstore.PetApi* | [**uploadFile**](docs/PetApi.md#uploadFile) | **POST** /pet/{petId}/uploadImage | uploads an image
-*SwaggerPetstore.StoreApi* | [**deleteOrder**](docs/StoreApi.md#deleteOrder) | **DELETE** /store/order/{order_id} | Delete purchase order by ID
-*SwaggerPetstore.StoreApi* | [**getInventory**](docs/StoreApi.md#getInventory) | **GET** /store/inventory | Returns pet inventories by status
-*SwaggerPetstore.StoreApi* | [**getOrderById**](docs/StoreApi.md#getOrderById) | **GET** /store/order/{order_id} | Find purchase order by ID
-*SwaggerPetstore.StoreApi* | [**placeOrder**](docs/StoreApi.md#placeOrder) | **POST** /store/order | Place an order for a pet
-*SwaggerPetstore.UserApi* | [**createUser**](docs/UserApi.md#createUser) | **POST** /user | Create user
-*SwaggerPetstore.UserApi* | [**createUsersWithArrayInput**](docs/UserApi.md#createUsersWithArrayInput) | **POST** /user/createWithArray | Creates list of users with given input array
-*SwaggerPetstore.UserApi* | [**createUsersWithListInput**](docs/UserApi.md#createUsersWithListInput) | **POST** /user/createWithList | Creates list of users with given input array
-*SwaggerPetstore.UserApi* | [**deleteUser**](docs/UserApi.md#deleteUser) | **DELETE** /user/{username} | Delete user
-*SwaggerPetstore.UserApi* | [**getUserByName**](docs/UserApi.md#getUserByName) | **GET** /user/{username} | Get user by user name
-*SwaggerPetstore.UserApi* | [**loginUser**](docs/UserApi.md#loginUser) | **GET** /user/login | Logs user into the system
-*SwaggerPetstore.UserApi* | [**logoutUser**](docs/UserApi.md#logoutUser) | **GET** /user/logout | Logs out current logged in user session
-*SwaggerPetstore.UserApi* | [**updateUser**](docs/UserApi.md#updateUser) | **PUT** /user/{username} | Updated user
+*OpenApiPetstore.AnotherFakeApi* | [**testSpecialTags**](docs/AnotherFakeApi.md#testSpecialTags) | **PATCH** /another-fake/dummy | To test special tags
+*OpenApiPetstore.FakeApi* | [**fakeOuterBooleanSerialize**](docs/FakeApi.md#fakeOuterBooleanSerialize) | **POST** /fake/outer/boolean | 
+*OpenApiPetstore.FakeApi* | [**fakeOuterCompositeSerialize**](docs/FakeApi.md#fakeOuterCompositeSerialize) | **POST** /fake/outer/composite | 
+*OpenApiPetstore.FakeApi* | [**fakeOuterNumberSerialize**](docs/FakeApi.md#fakeOuterNumberSerialize) | **POST** /fake/outer/number | 
+*OpenApiPetstore.FakeApi* | [**fakeOuterStringSerialize**](docs/FakeApi.md#fakeOuterStringSerialize) | **POST** /fake/outer/string | 
+*OpenApiPetstore.FakeApi* | [**testBodyWithQueryParams**](docs/FakeApi.md#testBodyWithQueryParams) | **PUT** /fake/body-with-query-params | 
+*OpenApiPetstore.FakeApi* | [**testClientModel**](docs/FakeApi.md#testClientModel) | **PATCH** /fake | To test \"client\" model
+*OpenApiPetstore.FakeApi* | [**testEndpointParameters**](docs/FakeApi.md#testEndpointParameters) | **POST** /fake | Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 
+*OpenApiPetstore.FakeApi* | [**testEnumParameters**](docs/FakeApi.md#testEnumParameters) | **GET** /fake | To test enum parameters
+*OpenApiPetstore.FakeApi* | [**testInlineAdditionalProperties**](docs/FakeApi.md#testInlineAdditionalProperties) | **POST** /fake/inline-additionalProperties | test inline additionalProperties
+*OpenApiPetstore.FakeApi* | [**testJsonFormData**](docs/FakeApi.md#testJsonFormData) | **GET** /fake/jsonFormData | test json serialization of form data
+*OpenApiPetstore.FakeClassnameTags123Api* | [**testClassname**](docs/FakeClassnameTags123Api.md#testClassname) | **PATCH** /fake_classname_test | To test class name in snake case
+*OpenApiPetstore.PetApi* | [**addPet**](docs/PetApi.md#addPet) | **POST** /pet | Add a new pet to the store
+*OpenApiPetstore.PetApi* | [**deletePet**](docs/PetApi.md#deletePet) | **DELETE** /pet/{petId} | Deletes a pet
+*OpenApiPetstore.PetApi* | [**findPetsByStatus**](docs/PetApi.md#findPetsByStatus) | **GET** /pet/findByStatus | Finds Pets by status
+*OpenApiPetstore.PetApi* | [**findPetsByTags**](docs/PetApi.md#findPetsByTags) | **GET** /pet/findByTags | Finds Pets by tags
+*OpenApiPetstore.PetApi* | [**getPetById**](docs/PetApi.md#getPetById) | **GET** /pet/{petId} | Find pet by ID
+*OpenApiPetstore.PetApi* | [**updatePet**](docs/PetApi.md#updatePet) | **PUT** /pet | Update an existing pet
+*OpenApiPetstore.PetApi* | [**updatePetWithForm**](docs/PetApi.md#updatePetWithForm) | **POST** /pet/{petId} | Updates a pet in the store with form data
+*OpenApiPetstore.PetApi* | [**uploadFile**](docs/PetApi.md#uploadFile) | **POST** /pet/{petId}/uploadImage | uploads an image
+*OpenApiPetstore.StoreApi* | [**deleteOrder**](docs/StoreApi.md#deleteOrder) | **DELETE** /store/order/{order_id} | Delete purchase order by ID
+*OpenApiPetstore.StoreApi* | [**getInventory**](docs/StoreApi.md#getInventory) | **GET** /store/inventory | Returns pet inventories by status
+*OpenApiPetstore.StoreApi* | [**getOrderById**](docs/StoreApi.md#getOrderById) | **GET** /store/order/{order_id} | Find purchase order by ID
+*OpenApiPetstore.StoreApi* | [**placeOrder**](docs/StoreApi.md#placeOrder) | **POST** /store/order | Place an order for a pet
+*OpenApiPetstore.UserApi* | [**createUser**](docs/UserApi.md#createUser) | **POST** /user | Create user
+*OpenApiPetstore.UserApi* | [**createUsersWithArrayInput**](docs/UserApi.md#createUsersWithArrayInput) | **POST** /user/createWithArray | Creates list of users with given input array
+*OpenApiPetstore.UserApi* | [**createUsersWithListInput**](docs/UserApi.md#createUsersWithListInput) | **POST** /user/createWithList | Creates list of users with given input array
+*OpenApiPetstore.UserApi* | [**deleteUser**](docs/UserApi.md#deleteUser) | **DELETE** /user/{username} | Delete user
+*OpenApiPetstore.UserApi* | [**getUserByName**](docs/UserApi.md#getUserByName) | **GET** /user/{username} | Get user by user name
+*OpenApiPetstore.UserApi* | [**loginUser**](docs/UserApi.md#loginUser) | **GET** /user/login | Logs user into the system
+*OpenApiPetstore.UserApi* | [**logoutUser**](docs/UserApi.md#logoutUser) | **GET** /user/logout | Logs out current logged in user session
+*OpenApiPetstore.UserApi* | [**updateUser**](docs/UserApi.md#updateUser) | **PUT** /user/{username} | Updated user
 
 
 ## Documentation for Models
 
- - [SwaggerPetstore.AdditionalPropertiesClass](docs/AdditionalPropertiesClass.md)
- - [SwaggerPetstore.Animal](docs/Animal.md)
- - [SwaggerPetstore.AnimalFarm](docs/AnimalFarm.md)
- - [SwaggerPetstore.ApiResponse](docs/ApiResponse.md)
- - [SwaggerPetstore.ArrayOfArrayOfNumberOnly](docs/ArrayOfArrayOfNumberOnly.md)
- - [SwaggerPetstore.ArrayOfNumberOnly](docs/ArrayOfNumberOnly.md)
- - [SwaggerPetstore.ArrayTest](docs/ArrayTest.md)
- - [SwaggerPetstore.Capitalization](docs/Capitalization.md)
- - [SwaggerPetstore.Category](docs/Category.md)
- - [SwaggerPetstore.ClassModel](docs/ClassModel.md)
- - [SwaggerPetstore.Client](docs/Client.md)
- - [SwaggerPetstore.EnumArrays](docs/EnumArrays.md)
- - [SwaggerPetstore.EnumClass](docs/EnumClass.md)
- - [SwaggerPetstore.EnumTest](docs/EnumTest.md)
- - [SwaggerPetstore.FormatTest](docs/FormatTest.md)
- - [SwaggerPetstore.HasOnlyReadOnly](docs/HasOnlyReadOnly.md)
- - [SwaggerPetstore.List](docs/List.md)
- - [SwaggerPetstore.MapTest](docs/MapTest.md)
- - [SwaggerPetstore.MixedPropertiesAndAdditionalPropertiesClass](docs/MixedPropertiesAndAdditionalPropertiesClass.md)
- - [SwaggerPetstore.Model200Response](docs/Model200Response.md)
- - [SwaggerPetstore.ModelReturn](docs/ModelReturn.md)
- - [SwaggerPetstore.Name](docs/Name.md)
- - [SwaggerPetstore.NumberOnly](docs/NumberOnly.md)
- - [SwaggerPetstore.Order](docs/Order.md)
- - [SwaggerPetstore.OuterBoolean](docs/OuterBoolean.md)
- - [SwaggerPetstore.OuterComposite](docs/OuterComposite.md)
- - [SwaggerPetstore.OuterEnum](docs/OuterEnum.md)
- - [SwaggerPetstore.OuterNumber](docs/OuterNumber.md)
- - [SwaggerPetstore.OuterString](docs/OuterString.md)
- - [SwaggerPetstore.Pet](docs/Pet.md)
- - [SwaggerPetstore.ReadOnlyFirst](docs/ReadOnlyFirst.md)
- - [SwaggerPetstore.SpecialModelName](docs/SpecialModelName.md)
- - [SwaggerPetstore.Tag](docs/Tag.md)
- - [SwaggerPetstore.User](docs/User.md)
- - [SwaggerPetstore.Cat](docs/Cat.md)
- - [SwaggerPetstore.Dog](docs/Dog.md)
+ - [OpenApiPetstore.AdditionalPropertiesClass](docs/AdditionalPropertiesClass.md)
+ - [OpenApiPetstore.Animal](docs/Animal.md)
+ - [OpenApiPetstore.AnimalFarm](docs/AnimalFarm.md)
+ - [OpenApiPetstore.ApiResponse](docs/ApiResponse.md)
+ - [OpenApiPetstore.ArrayOfArrayOfNumberOnly](docs/ArrayOfArrayOfNumberOnly.md)
+ - [OpenApiPetstore.ArrayOfNumberOnly](docs/ArrayOfNumberOnly.md)
+ - [OpenApiPetstore.ArrayTest](docs/ArrayTest.md)
+ - [OpenApiPetstore.Capitalization](docs/Capitalization.md)
+ - [OpenApiPetstore.Cat](docs/Cat.md)
+ - [OpenApiPetstore.Category](docs/Category.md)
+ - [OpenApiPetstore.ClassModel](docs/ClassModel.md)
+ - [OpenApiPetstore.Client](docs/Client.md)
+ - [OpenApiPetstore.Dog](docs/Dog.md)
+ - [OpenApiPetstore.EnumArrays](docs/EnumArrays.md)
+ - [OpenApiPetstore.EnumClass](docs/EnumClass.md)
+ - [OpenApiPetstore.EnumTest](docs/EnumTest.md)
+ - [OpenApiPetstore.FormatTest](docs/FormatTest.md)
+ - [OpenApiPetstore.HasOnlyReadOnly](docs/HasOnlyReadOnly.md)
+ - [OpenApiPetstore.List](docs/List.md)
+ - [OpenApiPetstore.MapTest](docs/MapTest.md)
+ - [OpenApiPetstore.MixedPropertiesAndAdditionalPropertiesClass](docs/MixedPropertiesAndAdditionalPropertiesClass.md)
+ - [OpenApiPetstore.Model200Response](docs/Model200Response.md)
+ - [OpenApiPetstore.ModelReturn](docs/ModelReturn.md)
+ - [OpenApiPetstore.Name](docs/Name.md)
+ - [OpenApiPetstore.NumberOnly](docs/NumberOnly.md)
+ - [OpenApiPetstore.Order](docs/Order.md)
+ - [OpenApiPetstore.OuterComposite](docs/OuterComposite.md)
+ - [OpenApiPetstore.OuterEnum](docs/OuterEnum.md)
+ - [OpenApiPetstore.Pet](docs/Pet.md)
+ - [OpenApiPetstore.ReadOnlyFirst](docs/ReadOnlyFirst.md)
+ - [OpenApiPetstore.SpecialModelName](docs/SpecialModelName.md)
+ - [OpenApiPetstore.Tag](docs/Tag.md)
+ - [OpenApiPetstore.User](docs/User.md)
 
 
 ## Documentation for Authorization
diff --git a/samples/client/petstore/javascript-promise-es6/docs/AdditionalPropertiesClass.md b/samples/client/petstore/javascript-promise-es6/docs/AdditionalPropertiesClass.md
index 0ea13d4bb64f..7df1c7b33949 100644
--- a/samples/client/petstore/javascript-promise-es6/docs/AdditionalPropertiesClass.md
+++ b/samples/client/petstore/javascript-promise-es6/docs/AdditionalPropertiesClass.md
@@ -1,4 +1,4 @@
-# SwaggerPetstore.AdditionalPropertiesClass
+# OpenApiPetstore.AdditionalPropertiesClass
 
 ## Properties
 Name | Type | Description | Notes
diff --git a/samples/client/petstore/javascript-promise-es6/docs/Animal.md b/samples/client/petstore/javascript-promise-es6/docs/Animal.md
index 3ae52d9db17c..7bff01675818 100644
--- a/samples/client/petstore/javascript-promise-es6/docs/Animal.md
+++ b/samples/client/petstore/javascript-promise-es6/docs/Animal.md
@@ -1,4 +1,4 @@
-# SwaggerPetstore.Animal
+# OpenApiPetstore.Animal
 
 ## Properties
 Name | Type | Description | Notes
diff --git a/samples/client/petstore/javascript-promise-es6/docs/AnimalFarm.md b/samples/client/petstore/javascript-promise-es6/docs/AnimalFarm.md
index b72739a44c42..ab153513ca9a 100644
--- a/samples/client/petstore/javascript-promise-es6/docs/AnimalFarm.md
+++ b/samples/client/petstore/javascript-promise-es6/docs/AnimalFarm.md
@@ -1,4 +1,4 @@
-# SwaggerPetstore.AnimalFarm
+# OpenApiPetstore.AnimalFarm
 
 ## Properties
 Name | Type | Description | Notes
diff --git a/samples/client/petstore/javascript-promise-es6/docs/AnotherFakeApi.md b/samples/client/petstore/javascript-promise-es6/docs/AnotherFakeApi.md
index e6e6f0bf9f96..2eccfe5f4798 100644
--- a/samples/client/petstore/javascript-promise-es6/docs/AnotherFakeApi.md
+++ b/samples/client/petstore/javascript-promise-es6/docs/AnotherFakeApi.md
@@ -1,4 +1,4 @@
-# SwaggerPetstore.AnotherFakeApi
+# OpenApiPetstore.AnotherFakeApi
 
 All URIs are relative to *http://petstore.swagger.io:80/v2*
 
@@ -9,7 +9,7 @@ Method | HTTP request | Description
 
 
 # **testSpecialTags**
-> Client testSpecialTags(body)
+> Client testSpecialTags(client)
 
 To test special tags
 
@@ -17,13 +17,11 @@ To test special tags
 
 ### Example
 ```javascript
-import SwaggerPetstore from 'swagger_petstore';
+import OpenApiPetstore from 'open_api_petstore';
 
-let apiInstance = new SwaggerPetstore.AnotherFakeApi();
-
-let body = new SwaggerPetstore.Client(); // Client | client model
-
-apiInstance.testSpecialTags(body).then((data) => {
+let apiInstance = new OpenApiPetstore.AnotherFakeApi();
+let client = new OpenApiPetstore.Client(); // Client | client model
+apiInstance.testSpecialTags(client).then((data) => {
   console.log('API called successfully. Returned data: ' + data);
 }, (error) => {
   console.error(error);
@@ -35,7 +33,7 @@ apiInstance.testSpecialTags(body).then((data) => {
 
 Name | Type | Description  | Notes
 ------------- | ------------- | ------------- | -------------
- **body** | [**Client**](Client.md)| client model | 
+ **client** | [**Client**](Client.md)| client model | 
 
 ### Return type
 
diff --git a/samples/client/petstore/javascript-promise-es6/docs/ApiResponse.md b/samples/client/petstore/javascript-promise-es6/docs/ApiResponse.md
index 7f023aff6015..e60378fcbfcb 100644
--- a/samples/client/petstore/javascript-promise-es6/docs/ApiResponse.md
+++ b/samples/client/petstore/javascript-promise-es6/docs/ApiResponse.md
@@ -1,4 +1,4 @@
-# SwaggerPetstore.ApiResponse
+# OpenApiPetstore.ApiResponse
 
 ## Properties
 Name | Type | Description | Notes
diff --git a/samples/client/petstore/javascript-promise-es6/docs/ArrayOfArrayOfNumberOnly.md b/samples/client/petstore/javascript-promise-es6/docs/ArrayOfArrayOfNumberOnly.md
index 1d38c9d2ed58..7a1426ef8183 100644
--- a/samples/client/petstore/javascript-promise-es6/docs/ArrayOfArrayOfNumberOnly.md
+++ b/samples/client/petstore/javascript-promise-es6/docs/ArrayOfArrayOfNumberOnly.md
@@ -1,4 +1,4 @@
-# SwaggerPetstore.ArrayOfArrayOfNumberOnly
+# OpenApiPetstore.ArrayOfArrayOfNumberOnly
 
 ## Properties
 Name | Type | Description | Notes
diff --git a/samples/client/petstore/javascript-promise-es6/docs/ArrayOfNumberOnly.md b/samples/client/petstore/javascript-promise-es6/docs/ArrayOfNumberOnly.md
index 07a86a3cef6a..7cec2e71d4b7 100644
--- a/samples/client/petstore/javascript-promise-es6/docs/ArrayOfNumberOnly.md
+++ b/samples/client/petstore/javascript-promise-es6/docs/ArrayOfNumberOnly.md
@@ -1,4 +1,4 @@
-# SwaggerPetstore.ArrayOfNumberOnly
+# OpenApiPetstore.ArrayOfNumberOnly
 
 ## Properties
 Name | Type | Description | Notes
diff --git a/samples/client/petstore/javascript-promise-es6/docs/ArrayTest.md b/samples/client/petstore/javascript-promise-es6/docs/ArrayTest.md
index e6048e9ea912..5828f6ee75bd 100644
--- a/samples/client/petstore/javascript-promise-es6/docs/ArrayTest.md
+++ b/samples/client/petstore/javascript-promise-es6/docs/ArrayTest.md
@@ -1,4 +1,4 @@
-# SwaggerPetstore.ArrayTest
+# OpenApiPetstore.ArrayTest
 
 ## Properties
 Name | Type | Description | Notes
diff --git a/samples/client/petstore/javascript-promise-es6/docs/Capitalization.md b/samples/client/petstore/javascript-promise-es6/docs/Capitalization.md
index c223a4ee9821..abeff984c628 100644
--- a/samples/client/petstore/javascript-promise-es6/docs/Capitalization.md
+++ b/samples/client/petstore/javascript-promise-es6/docs/Capitalization.md
@@ -1,4 +1,4 @@
-# SwaggerPetstore.Capitalization
+# OpenApiPetstore.Capitalization
 
 ## Properties
 Name | Type | Description | Notes
diff --git a/samples/client/petstore/javascript-promise-es6/docs/Cat.md b/samples/client/petstore/javascript-promise-es6/docs/Cat.md
index 8cd391bc911d..6dd0f057c857 100644
--- a/samples/client/petstore/javascript-promise-es6/docs/Cat.md
+++ b/samples/client/petstore/javascript-promise-es6/docs/Cat.md
@@ -1,4 +1,4 @@
-# SwaggerPetstore.Cat
+# OpenApiPetstore.Cat
 
 ## Properties
 Name | Type | Description | Notes
diff --git a/samples/client/petstore/javascript-promise-es6/docs/Category.md b/samples/client/petstore/javascript-promise-es6/docs/Category.md
index 02b2488a27a3..e3f934442abc 100644
--- a/samples/client/petstore/javascript-promise-es6/docs/Category.md
+++ b/samples/client/petstore/javascript-promise-es6/docs/Category.md
@@ -1,4 +1,4 @@
-# SwaggerPetstore.Category
+# OpenApiPetstore.Category
 
 ## Properties
 Name | Type | Description | Notes
diff --git a/samples/client/petstore/javascript-promise-es6/docs/ClassModel.md b/samples/client/petstore/javascript-promise-es6/docs/ClassModel.md
index bf8343b84b3f..6fe9c501a5d2 100644
--- a/samples/client/petstore/javascript-promise-es6/docs/ClassModel.md
+++ b/samples/client/petstore/javascript-promise-es6/docs/ClassModel.md
@@ -1,4 +1,4 @@
-# SwaggerPetstore.ClassModel
+# OpenApiPetstore.ClassModel
 
 ## Properties
 Name | Type | Description | Notes
diff --git a/samples/client/petstore/javascript-promise-es6/docs/Client.md b/samples/client/petstore/javascript-promise-es6/docs/Client.md
index 6ba28319684f..a6c7711e74e7 100644
--- a/samples/client/petstore/javascript-promise-es6/docs/Client.md
+++ b/samples/client/petstore/javascript-promise-es6/docs/Client.md
@@ -1,4 +1,4 @@
-# SwaggerPetstore.Client
+# OpenApiPetstore.Client
 
 ## Properties
 Name | Type | Description | Notes
diff --git a/samples/client/petstore/javascript-promise-es6/docs/Dog.md b/samples/client/petstore/javascript-promise-es6/docs/Dog.md
index 9253eace011b..f35663407e83 100644
--- a/samples/client/petstore/javascript-promise-es6/docs/Dog.md
+++ b/samples/client/petstore/javascript-promise-es6/docs/Dog.md
@@ -1,4 +1,4 @@
-# SwaggerPetstore.Dog
+# OpenApiPetstore.Dog
 
 ## Properties
 Name | Type | Description | Notes
diff --git a/samples/client/petstore/javascript-promise-es6/docs/EnumArrays.md b/samples/client/petstore/javascript-promise-es6/docs/EnumArrays.md
index 449a96fdbbd4..5f624e5db484 100644
--- a/samples/client/petstore/javascript-promise-es6/docs/EnumArrays.md
+++ b/samples/client/petstore/javascript-promise-es6/docs/EnumArrays.md
@@ -1,4 +1,4 @@
-# SwaggerPetstore.EnumArrays
+# OpenApiPetstore.EnumArrays
 
 ## Properties
 Name | Type | Description | Notes
diff --git a/samples/client/petstore/javascript-promise-es6/docs/EnumClass.md b/samples/client/petstore/javascript-promise-es6/docs/EnumClass.md
index 04b89362941b..cef9bb57a56c 100644
--- a/samples/client/petstore/javascript-promise-es6/docs/EnumClass.md
+++ b/samples/client/petstore/javascript-promise-es6/docs/EnumClass.md
@@ -1,4 +1,4 @@
-# SwaggerPetstore.EnumClass
+# OpenApiPetstore.EnumClass
 
 ## Enum
 
diff --git a/samples/client/petstore/javascript-promise-es6/docs/EnumTest.md b/samples/client/petstore/javascript-promise-es6/docs/EnumTest.md
index 9d85a20016d8..c9e7ce86fea5 100644
--- a/samples/client/petstore/javascript-promise-es6/docs/EnumTest.md
+++ b/samples/client/petstore/javascript-promise-es6/docs/EnumTest.md
@@ -1,9 +1,10 @@
-# SwaggerPetstore.EnumTest
+# OpenApiPetstore.EnumTest
 
 ## Properties
 Name | Type | Description | Notes
 ------------ | ------------- | ------------- | -------------
 **enumString** | **String** |  | [optional] 
+**enumStringRequired** | **String** |  | 
 **enumInteger** | **Number** |  | [optional] 
 **enumNumber** | **Number** |  | [optional] 
 **outerEnum** | [**OuterEnum**](OuterEnum.md) |  | [optional] 
@@ -22,6 +23,19 @@ Name | Type | Description | Notes
 
 
 
+
+## Enum: EnumStringRequiredEnum
+
+
+* `UPPER` (value: `"UPPER"`)
+
+* `lower` (value: `"lower"`)
+
+* `empty` (value: `""`)
+
+
+
+
 
 ## Enum: EnumIntegerEnum
 
diff --git a/samples/client/petstore/javascript-promise-es6/docs/FakeApi.md b/samples/client/petstore/javascript-promise-es6/docs/FakeApi.md
index 51f2a77b8fdd..8a2a57c8b669 100644
--- a/samples/client/petstore/javascript-promise-es6/docs/FakeApi.md
+++ b/samples/client/petstore/javascript-promise-es6/docs/FakeApi.md
@@ -1,4 +1,4 @@
-# SwaggerPetstore.FakeApi
+# OpenApiPetstore.FakeApi
 
 All URIs are relative to *http://petstore.swagger.io:80/v2*
 
@@ -8,6 +8,7 @@ Method | HTTP request | Description
 [**fakeOuterCompositeSerialize**](FakeApi.md#fakeOuterCompositeSerialize) | **POST** /fake/outer/composite | 
 [**fakeOuterNumberSerialize**](FakeApi.md#fakeOuterNumberSerialize) | **POST** /fake/outer/number | 
 [**fakeOuterStringSerialize**](FakeApi.md#fakeOuterStringSerialize) | **POST** /fake/outer/string | 
+[**testBodyWithQueryParams**](FakeApi.md#testBodyWithQueryParams) | **PUT** /fake/body-with-query-params | 
 [**testClientModel**](FakeApi.md#testClientModel) | **PATCH** /fake | To test \"client\" model
 [**testEndpointParameters**](FakeApi.md#testEndpointParameters) | **POST** /fake | Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 
 [**testEnumParameters**](FakeApi.md#testEnumParameters) | **GET** /fake | To test enum parameters
@@ -17,7 +18,7 @@ Method | HTTP request | Description
 
 
 # **fakeOuterBooleanSerialize**
-> OuterBoolean fakeOuterBooleanSerialize(opts)
+> Boolean fakeOuterBooleanSerialize(opts)
 
 
 
@@ -25,12 +26,11 @@ Test serialization of outer boolean types
 
 ### Example
 ```javascript
-import SwaggerPetstore from 'swagger_petstore';
+import OpenApiPetstore from 'open_api_petstore';
 
-let apiInstance = new SwaggerPetstore.FakeApi();
-
-let opts = { 
-  'body': new SwaggerPetstore.OuterBoolean() // OuterBoolean | Input boolean as post body
+let apiInstance = new OpenApiPetstore.FakeApi();
+let opts = {
+  'body': true // Boolean | Input boolean as post body
 };
 apiInstance.fakeOuterBooleanSerialize(opts).then((data) => {
   console.log('API called successfully. Returned data: ' + data);
@@ -44,11 +44,11 @@ apiInstance.fakeOuterBooleanSerialize(opts).then((data) => {
 
 Name | Type | Description  | Notes
 ------------- | ------------- | ------------- | -------------
- **body** | [**OuterBoolean**](OuterBoolean.md)| Input boolean as post body | [optional] 
+ **body** | **Boolean**| Input boolean as post body | [optional] 
 
 ### Return type
 
-[**OuterBoolean**](OuterBoolean.md)
+**Boolean**
 
 ### Authorization
 
@@ -57,7 +57,7 @@ No authorization required
 ### HTTP request headers
 
  - **Content-Type**: Not defined
- - **Accept**: Not defined
+ - **Accept**: */*
 
 
 # **fakeOuterCompositeSerialize**
@@ -69,12 +69,11 @@ Test serialization of object with outer number type
 
 ### Example
 ```javascript
-import SwaggerPetstore from 'swagger_petstore';
-
-let apiInstance = new SwaggerPetstore.FakeApi();
+import OpenApiPetstore from 'open_api_petstore';
 
-let opts = { 
-  'body': new SwaggerPetstore.OuterComposite() // OuterComposite | Input composite as post body
+let apiInstance = new OpenApiPetstore.FakeApi();
+let opts = {
+  'outerComposite': new OpenApiPetstore.OuterComposite() // OuterComposite | Input composite as post body
 };
 apiInstance.fakeOuterCompositeSerialize(opts).then((data) => {
   console.log('API called successfully. Returned data: ' + data);
@@ -88,7 +87,7 @@ apiInstance.fakeOuterCompositeSerialize(opts).then((data) => {
 
 Name | Type | Description  | Notes
 ------------- | ------------- | ------------- | -------------
- **body** | [**OuterComposite**](OuterComposite.md)| Input composite as post body | [optional] 
+ **outerComposite** | [**OuterComposite**](OuterComposite.md)| Input composite as post body | [optional] 
 
 ### Return type
 
@@ -101,11 +100,11 @@ No authorization required
 ### HTTP request headers
 
  - **Content-Type**: Not defined
- - **Accept**: Not defined
+ - **Accept**: */*
 
 
 # **fakeOuterNumberSerialize**
-> OuterNumber fakeOuterNumberSerialize(opts)
+> Number fakeOuterNumberSerialize(opts)
 
 
 
@@ -113,12 +112,11 @@ Test serialization of outer number types
 
 ### Example
 ```javascript
-import SwaggerPetstore from 'swagger_petstore';
+import OpenApiPetstore from 'open_api_petstore';
 
-let apiInstance = new SwaggerPetstore.FakeApi();
-
-let opts = { 
-  'body': new SwaggerPetstore.OuterNumber() // OuterNumber | Input number as post body
+let apiInstance = new OpenApiPetstore.FakeApi();
+let opts = {
+  'body': 3.4 // Number | Input number as post body
 };
 apiInstance.fakeOuterNumberSerialize(opts).then((data) => {
   console.log('API called successfully. Returned data: ' + data);
@@ -132,11 +130,11 @@ apiInstance.fakeOuterNumberSerialize(opts).then((data) => {
 
 Name | Type | Description  | Notes
 ------------- | ------------- | ------------- | -------------
- **body** | [**OuterNumber**](OuterNumber.md)| Input number as post body | [optional] 
+ **body** | **Number**| Input number as post body | [optional] 
 
 ### Return type
 
-[**OuterNumber**](OuterNumber.md)
+**Number**
 
 ### Authorization
 
@@ -145,11 +143,11 @@ No authorization required
 ### HTTP request headers
 
  - **Content-Type**: Not defined
- - **Accept**: Not defined
+ - **Accept**: */*
 
 
 # **fakeOuterStringSerialize**
-> OuterString fakeOuterStringSerialize(opts)
+> String fakeOuterStringSerialize(opts)
 
 
 
@@ -157,12 +155,11 @@ Test serialization of outer string types
 
 ### Example
 ```javascript
-import SwaggerPetstore from 'swagger_petstore';
-
-let apiInstance = new SwaggerPetstore.FakeApi();
+import OpenApiPetstore from 'open_api_petstore';
 
-let opts = { 
-  'body': new SwaggerPetstore.OuterString() // OuterString | Input string as post body
+let apiInstance = new OpenApiPetstore.FakeApi();
+let opts = {
+  'body': "body_example" // String | Input string as post body
 };
 apiInstance.fakeOuterStringSerialize(opts).then((data) => {
   console.log('API called successfully. Returned data: ' + data);
@@ -176,11 +173,11 @@ apiInstance.fakeOuterStringSerialize(opts).then((data) => {
 
 Name | Type | Description  | Notes
 ------------- | ------------- | ------------- | -------------
- **body** | [**OuterString**](OuterString.md)| Input string as post body | [optional] 
+ **body** | **String**| Input string as post body | [optional] 
 
 ### Return type
 
-[**OuterString**](OuterString.md)
+**String**
 
 ### Authorization
 
@@ -189,11 +186,52 @@ No authorization required
 ### HTTP request headers
 
  - **Content-Type**: Not defined
+ - **Accept**: */*
+
+
+# **testBodyWithQueryParams**
+> testBodyWithQueryParams(query, user)
+
+
+
+### Example
+```javascript
+import OpenApiPetstore from 'open_api_petstore';
+
+let apiInstance = new OpenApiPetstore.FakeApi();
+let query = "query_example"; // String | 
+let user = new OpenApiPetstore.User(); // User | 
+apiInstance.testBodyWithQueryParams(query, user).then(() => {
+  console.log('API called successfully.');
+}, (error) => {
+  console.error(error);
+});
+
+```
+
+### Parameters
+
+Name | Type | Description  | Notes
+------------- | ------------- | ------------- | -------------
+ **query** | **String**|  | 
+ **user** | [**User**](User.md)|  | 
+
+### Return type
+
+null (empty response body)
+
+### Authorization
+
+No authorization required
+
+### HTTP request headers
+
+ - **Content-Type**: application/json
  - **Accept**: Not defined
 
 
 # **testClientModel**
-> Client testClientModel(body)
+> Client testClientModel(client)
 
 To test \"client\" model
 
@@ -201,13 +239,11 @@ To test \"client\" model
 
 ### Example
 ```javascript
-import SwaggerPetstore from 'swagger_petstore';
-
-let apiInstance = new SwaggerPetstore.FakeApi();
+import OpenApiPetstore from 'open_api_petstore';
 
-let body = new SwaggerPetstore.Client(); // Client | client model
-
-apiInstance.testClientModel(body).then((data) => {
+let apiInstance = new OpenApiPetstore.FakeApi();
+let client = new OpenApiPetstore.Client(); // Client | client model
+apiInstance.testClientModel(client).then((data) => {
   console.log('API called successfully. Returned data: ' + data);
 }, (error) => {
   console.error(error);
@@ -219,7 +255,7 @@ apiInstance.testClientModel(body).then((data) => {
 
 Name | Type | Description  | Notes
 ------------- | ------------- | ------------- | -------------
- **body** | [**Client**](Client.md)| client model | 
+ **client** | [**Client**](Client.md)| client model | 
 
 ### Return type
 
@@ -244,31 +280,26 @@ Fake endpoint for testing various parameters 假端點 偽のエンドポイン
 
 ### Example
 ```javascript
-import SwaggerPetstore from 'swagger_petstore';
-let defaultClient = SwaggerPetstore.ApiClient.instance;
+import OpenApiPetstore from 'open_api_petstore';
+let defaultClient = OpenApiPetstore.ApiClient.instance;
 
 // Configure HTTP basic authorization: http_basic_test
 let http_basic_test = defaultClient.authentications['http_basic_test'];
 http_basic_test.username = 'YOUR USERNAME';
 http_basic_test.password = 'YOUR PASSWORD';
 
-let apiInstance = new SwaggerPetstore.FakeApi();
-
-let _number = 8.14; // Number | None
-
-let _double = 1.2; // Number | None
-
+let apiInstance = new OpenApiPetstore.FakeApi();
+let _number = 3.4; // Number | None
+let _double = 3.4; // Number | None
 let patternWithoutDelimiter = "patternWithoutDelimiter_example"; // String | None
-
-let _byte = B; // Blob | None
-
-let opts = { 
+let _byte = null; // Blob | None
+let opts = {
   'integer': 56, // Number | None
   'int32': 56, // Number | None
   'int64': 789, // Number | None
   '_float': 3.4, // Number | None
   '_string': "_string_example", // String | None
-  'binary': B, // Blob | None
+  'binary': "/path/to/file", // File | None
   '_date': new Date("2013-10-20"), // Date | None
   'dateTime': new Date("2013-10-20T19:20:30+01:00"), // Date | None
   'password': "password_example", // String | None
@@ -295,7 +326,7 @@ Name | Type | Description  | Notes
  **int64** | **Number**| None | [optional] 
  **_float** | **Number**| None | [optional] 
  **_string** | **String**| None | [optional] 
- **binary** | **Blob**| None | [optional] 
+ **binary** | **File**| None | [optional] 
  **_date** | **Date**| None | [optional] 
  **dateTime** | **Date**| None | [optional] 
  **password** | **String**| None | [optional] 
@@ -311,8 +342,8 @@ null (empty response body)
 
 ### HTTP request headers
 
- - **Content-Type**: application/xml; charset=utf-8, application/json; charset=utf-8
- - **Accept**: application/xml; charset=utf-8, application/json; charset=utf-8
+ - **Content-Type**: application/x-www-form-urlencoded
+ - **Accept**: Not defined
 
 
 # **testEnumParameters**
@@ -324,19 +355,18 @@ To test enum parameters
 
 ### Example
 ```javascript
-import SwaggerPetstore from 'swagger_petstore';
-
-let apiInstance = new SwaggerPetstore.FakeApi();
-
-let opts = { 
-  'enumFormStringArray': ["enumFormStringArray_example"], // [String] | Form parameter enum test (string array)
-  'enumFormString': "-efg", // String | Form parameter enum test (string)
-  'enumHeaderStringArray': ["enumHeaderStringArray_example"], // [String] | Header parameter enum test (string array)
-  'enumHeaderString': "-efg", // String | Header parameter enum test (string)
-  'enumQueryStringArray': ["enumQueryStringArray_example"], // [String] | Query parameter enum test (string array)
-  'enumQueryString': "-efg", // String | Query parameter enum test (string)
+import OpenApiPetstore from 'open_api_petstore';
+
+let apiInstance = new OpenApiPetstore.FakeApi();
+let opts = {
+  'enumHeaderStringArray': ["'$'"], // [String] | Header parameter enum test (string array)
+  'enumHeaderString': "'-efg'", // String | Header parameter enum test (string)
+  'enumQueryStringArray': ["'$'"], // [String] | Query parameter enum test (string array)
+  'enumQueryString': "'-efg'", // String | Query parameter enum test (string)
   'enumQueryInteger': 56, // Number | Query parameter enum test (double)
-  'enumQueryDouble': 1.2 // Number | Query parameter enum test (double)
+  'enumQueryDouble': 3.4, // Number | Query parameter enum test (double)
+  'enumFormStringArray': "'$'", // [String] | Form parameter enum test (string array)
+  'enumFormString': "'-efg'" // String | Form parameter enum test (string)
 };
 apiInstance.testEnumParameters(opts).then(() => {
   console.log('API called successfully.');
@@ -350,14 +380,14 @@ apiInstance.testEnumParameters(opts).then(() => {
 
 Name | Type | Description  | Notes
 ------------- | ------------- | ------------- | -------------
- **enumFormStringArray** | [**[String]**](String.md)| Form parameter enum test (string array) | [optional] 
- **enumFormString** | **String**| Form parameter enum test (string) | [optional] [default to -efg]
  **enumHeaderStringArray** | [**[String]**](String.md)| Header parameter enum test (string array) | [optional] 
- **enumHeaderString** | **String**| Header parameter enum test (string) | [optional] [default to -efg]
+ **enumHeaderString** | **String**| Header parameter enum test (string) | [optional] [default to '-efg']
  **enumQueryStringArray** | [**[String]**](String.md)| Query parameter enum test (string array) | [optional] 
- **enumQueryString** | **String**| Query parameter enum test (string) | [optional] [default to -efg]
+ **enumQueryString** | **String**| Query parameter enum test (string) | [optional] [default to '-efg']
  **enumQueryInteger** | **Number**| Query parameter enum test (double) | [optional] 
  **enumQueryDouble** | **Number**| Query parameter enum test (double) | [optional] 
+ **enumFormStringArray** | [**[String]**](String.md)| Form parameter enum test (string array) | [optional] [default to '$']
+ **enumFormString** | **String**| Form parameter enum test (string) | [optional] [default to '-efg']
 
 ### Return type
 
@@ -369,26 +399,22 @@ No authorization required
 
 ### HTTP request headers
 
- - **Content-Type**: */*
- - **Accept**: */*
+ - **Content-Type**: application/x-www-form-urlencoded
+ - **Accept**: Not defined
 
 
 # **testInlineAdditionalProperties**
-> testInlineAdditionalProperties(param)
+> testInlineAdditionalProperties(requestBody)
 
 test inline additionalProperties
 
-
-
 ### Example
 ```javascript
-import SwaggerPetstore from 'swagger_petstore';
-
-let apiInstance = new SwaggerPetstore.FakeApi();
+import OpenApiPetstore from 'open_api_petstore';
 
-let param = null; // Object | request body
-
-apiInstance.testInlineAdditionalProperties(param).then(() => {
+let apiInstance = new OpenApiPetstore.FakeApi();
+let requestBody = {key: "inner_example"}; // {String: String} | request body
+apiInstance.testInlineAdditionalProperties(requestBody).then(() => {
   console.log('API called successfully.');
 }, (error) => {
   console.error(error);
@@ -400,7 +426,7 @@ apiInstance.testInlineAdditionalProperties(param).then(() => {
 
 Name | Type | Description  | Notes
 ------------- | ------------- | ------------- | -------------
- **param** | **Object**| request body | 
+ **requestBody** | [**{String: String}**](String.md)| request body | 
 
 ### Return type
 
@@ -421,18 +447,13 @@ No authorization required
 
 test json serialization of form data
 
-
-
 ### Example
 ```javascript
-import SwaggerPetstore from 'swagger_petstore';
-
-let apiInstance = new SwaggerPetstore.FakeApi();
+import OpenApiPetstore from 'open_api_petstore';
 
+let apiInstance = new OpenApiPetstore.FakeApi();
 let param = "param_example"; // String | field1
-
 let param2 = "param2_example"; // String | field2
-
 apiInstance.testJsonFormData(param, param2).then(() => {
   console.log('API called successfully.');
 }, (error) => {
@@ -458,6 +479,6 @@ No authorization required
 
 ### HTTP request headers
 
- - **Content-Type**: application/json
+ - **Content-Type**: application/x-www-form-urlencoded
  - **Accept**: Not defined
 
diff --git a/samples/client/petstore/javascript-promise-es6/docs/FakeClassnameTags123Api.md b/samples/client/petstore/javascript-promise-es6/docs/FakeClassnameTags123Api.md
index 1595c9b35f41..08b9458b0e62 100644
--- a/samples/client/petstore/javascript-promise-es6/docs/FakeClassnameTags123Api.md
+++ b/samples/client/petstore/javascript-promise-es6/docs/FakeClassnameTags123Api.md
@@ -1,4 +1,4 @@
-# SwaggerPetstore.FakeClassnameTags123Api
+# OpenApiPetstore.FakeClassnameTags123Api
 
 All URIs are relative to *http://petstore.swagger.io:80/v2*
 
@@ -9,14 +9,16 @@ Method | HTTP request | Description
 
 
 # **testClassname**
-> Client testClassname(body)
+> Client testClassname(client)
+
+To test class name in snake case
 
 To test class name in snake case
 
 ### Example
 ```javascript
-import SwaggerPetstore from 'swagger_petstore';
-let defaultClient = SwaggerPetstore.ApiClient.instance;
+import OpenApiPetstore from 'open_api_petstore';
+let defaultClient = OpenApiPetstore.ApiClient.instance;
 
 // Configure API key authorization: api_key_query
 let api_key_query = defaultClient.authentications['api_key_query'];
@@ -24,11 +26,9 @@ api_key_query.apiKey = 'YOUR API KEY';
 // Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
 //api_key_query.apiKeyPrefix = 'Token';
 
-let apiInstance = new SwaggerPetstore.FakeClassnameTags123Api();
-
-let body = new SwaggerPetstore.Client(); // Client | client model
-
-apiInstance.testClassname(body).then((data) => {
+let apiInstance = new OpenApiPetstore.FakeClassnameTags123Api();
+let client = new OpenApiPetstore.Client(); // Client | client model
+apiInstance.testClassname(client).then((data) => {
   console.log('API called successfully. Returned data: ' + data);
 }, (error) => {
   console.error(error);
@@ -40,7 +40,7 @@ apiInstance.testClassname(body).then((data) => {
 
 Name | Type | Description  | Notes
 ------------- | ------------- | ------------- | -------------
- **body** | [**Client**](Client.md)| client model | 
+ **client** | [**Client**](Client.md)| client model | 
 
 ### Return type
 
diff --git a/samples/client/petstore/javascript-promise-es6/docs/FormatTest.md b/samples/client/petstore/javascript-promise-es6/docs/FormatTest.md
index cb5b11416faa..0f4a8405449d 100644
--- a/samples/client/petstore/javascript-promise-es6/docs/FormatTest.md
+++ b/samples/client/petstore/javascript-promise-es6/docs/FormatTest.md
@@ -1,4 +1,4 @@
-# SwaggerPetstore.FormatTest
+# OpenApiPetstore.FormatTest
 
 ## Properties
 Name | Type | Description | Notes
@@ -11,7 +11,7 @@ Name | Type | Description | Notes
 **_double** | **Number** |  | [optional] 
 **_string** | **String** |  | [optional] 
 **_byte** | **Blob** |  | 
-**binary** | **Blob** |  | [optional] 
+**binary** | **File** |  | [optional] 
 **_date** | **Date** |  | 
 **dateTime** | **Date** |  | [optional] 
 **uuid** | **String** |  | [optional] 
diff --git a/samples/client/petstore/javascript-promise-es6/docs/HasOnlyReadOnly.md b/samples/client/petstore/javascript-promise-es6/docs/HasOnlyReadOnly.md
index b9b975fced0a..abc4ce62184c 100644
--- a/samples/client/petstore/javascript-promise-es6/docs/HasOnlyReadOnly.md
+++ b/samples/client/petstore/javascript-promise-es6/docs/HasOnlyReadOnly.md
@@ -1,4 +1,4 @@
-# SwaggerPetstore.HasOnlyReadOnly
+# OpenApiPetstore.HasOnlyReadOnly
 
 ## Properties
 Name | Type | Description | Notes
diff --git a/samples/client/petstore/javascript-promise-es6/docs/List.md b/samples/client/petstore/javascript-promise-es6/docs/List.md
index 12166562e891..3a9555e34e0a 100644
--- a/samples/client/petstore/javascript-promise-es6/docs/List.md
+++ b/samples/client/petstore/javascript-promise-es6/docs/List.md
@@ -1,8 +1,8 @@
-# SwaggerPetstore.List
+# OpenApiPetstore.List
 
 ## Properties
 Name | Type | Description | Notes
 ------------ | ------------- | ------------- | -------------
-**_123List** | **String** |  | [optional] 
+**_123list** | **String** |  | [optional] 
 
 
diff --git a/samples/client/petstore/javascript-promise-es6/docs/MapTest.md b/samples/client/petstore/javascript-promise-es6/docs/MapTest.md
index 8550252a3f19..4a128da00fd0 100644
--- a/samples/client/petstore/javascript-promise-es6/docs/MapTest.md
+++ b/samples/client/petstore/javascript-promise-es6/docs/MapTest.md
@@ -1,4 +1,4 @@
-# SwaggerPetstore.MapTest
+# OpenApiPetstore.MapTest
 
 ## Properties
 Name | Type | Description | Notes
diff --git a/samples/client/petstore/javascript-promise-es6/docs/MixedPropertiesAndAdditionalPropertiesClass.md b/samples/client/petstore/javascript-promise-es6/docs/MixedPropertiesAndAdditionalPropertiesClass.md
index 31bf8b314ca4..051f771930ea 100644
--- a/samples/client/petstore/javascript-promise-es6/docs/MixedPropertiesAndAdditionalPropertiesClass.md
+++ b/samples/client/petstore/javascript-promise-es6/docs/MixedPropertiesAndAdditionalPropertiesClass.md
@@ -1,4 +1,4 @@
-# SwaggerPetstore.MixedPropertiesAndAdditionalPropertiesClass
+# OpenApiPetstore.MixedPropertiesAndAdditionalPropertiesClass
 
 ## Properties
 Name | Type | Description | Notes
diff --git a/samples/client/petstore/javascript-promise-es6/docs/Model200Response.md b/samples/client/petstore/javascript-promise-es6/docs/Model200Response.md
index f18f963c96d8..0a0d02cc32e1 100644
--- a/samples/client/petstore/javascript-promise-es6/docs/Model200Response.md
+++ b/samples/client/petstore/javascript-promise-es6/docs/Model200Response.md
@@ -1,4 +1,4 @@
-# SwaggerPetstore.Model200Response
+# OpenApiPetstore.Model200Response
 
 ## Properties
 Name | Type | Description | Notes
diff --git a/samples/client/petstore/javascript-promise-es6/docs/ModelReturn.md b/samples/client/petstore/javascript-promise-es6/docs/ModelReturn.md
index b602b39b0c58..9ce6e2038787 100644
--- a/samples/client/petstore/javascript-promise-es6/docs/ModelReturn.md
+++ b/samples/client/petstore/javascript-promise-es6/docs/ModelReturn.md
@@ -1,4 +1,4 @@
-# SwaggerPetstore.ModelReturn
+# OpenApiPetstore.ModelReturn
 
 ## Properties
 Name | Type | Description | Notes
diff --git a/samples/client/petstore/javascript-promise-es6/docs/Name.md b/samples/client/petstore/javascript-promise-es6/docs/Name.md
index 51dad9ca5783..8dfcc460361f 100644
--- a/samples/client/petstore/javascript-promise-es6/docs/Name.md
+++ b/samples/client/petstore/javascript-promise-es6/docs/Name.md
@@ -1,4 +1,4 @@
-# SwaggerPetstore.Name
+# OpenApiPetstore.Name
 
 ## Properties
 Name | Type | Description | Notes
@@ -6,6 +6,6 @@ Name | Type | Description | Notes
 **name** | **Number** |  | 
 **snakeCase** | **Number** |  | [optional] 
 **property** | **String** |  | [optional] 
-**_123Number** | **Number** |  | [optional] 
+**_123number** | **Number** |  | [optional] 
 
 
diff --git a/samples/client/petstore/javascript-promise-es6/docs/NumberOnly.md b/samples/client/petstore/javascript-promise-es6/docs/NumberOnly.md
index f7bf0abd4250..cf84674ed4e0 100644
--- a/samples/client/petstore/javascript-promise-es6/docs/NumberOnly.md
+++ b/samples/client/petstore/javascript-promise-es6/docs/NumberOnly.md
@@ -1,4 +1,4 @@
-# SwaggerPetstore.NumberOnly
+# OpenApiPetstore.NumberOnly
 
 ## Properties
 Name | Type | Description | Notes
diff --git a/samples/client/petstore/javascript-promise-es6/docs/Order.md b/samples/client/petstore/javascript-promise-es6/docs/Order.md
index 6dc0b19cd251..987992caa70a 100644
--- a/samples/client/petstore/javascript-promise-es6/docs/Order.md
+++ b/samples/client/petstore/javascript-promise-es6/docs/Order.md
@@ -1,4 +1,4 @@
-# SwaggerPetstore.Order
+# OpenApiPetstore.Order
 
 ## Properties
 Name | Type | Description | Notes
diff --git a/samples/client/petstore/javascript-promise-es6/docs/OuterComposite.md b/samples/client/petstore/javascript-promise-es6/docs/OuterComposite.md
index e4cb57f35afc..c49b32ff3290 100644
--- a/samples/client/petstore/javascript-promise-es6/docs/OuterComposite.md
+++ b/samples/client/petstore/javascript-promise-es6/docs/OuterComposite.md
@@ -1,10 +1,10 @@
-# SwaggerPetstore.OuterComposite
+# OpenApiPetstore.OuterComposite
 
 ## Properties
 Name | Type | Description | Notes
 ------------ | ------------- | ------------- | -------------
-**myNumber** | [**OuterNumber**](OuterNumber.md) |  | [optional] 
-**myString** | [**OuterString**](OuterString.md) |  | [optional] 
-**myBoolean** | [**OuterBoolean**](OuterBoolean.md) |  | [optional] 
+**myNumber** | **Number** |  | [optional] 
+**myString** | **String** |  | [optional] 
+**myBoolean** | **Boolean** |  | [optional] 
 
 
diff --git a/samples/client/petstore/javascript-promise-es6/docs/OuterEnum.md b/samples/client/petstore/javascript-promise-es6/docs/OuterEnum.md
index 4caf04ae09da..445d3f4074c8 100644
--- a/samples/client/petstore/javascript-promise-es6/docs/OuterEnum.md
+++ b/samples/client/petstore/javascript-promise-es6/docs/OuterEnum.md
@@ -1,4 +1,4 @@
-# SwaggerPetstore.OuterEnum
+# OpenApiPetstore.OuterEnum
 
 ## Enum
 
diff --git a/samples/client/petstore/javascript-promise-es6/docs/Pet.md b/samples/client/petstore/javascript-promise-es6/docs/Pet.md
index cae89de06d4c..e91ae688aad1 100644
--- a/samples/client/petstore/javascript-promise-es6/docs/Pet.md
+++ b/samples/client/petstore/javascript-promise-es6/docs/Pet.md
@@ -1,4 +1,4 @@
-# SwaggerPetstore.Pet
+# OpenApiPetstore.Pet
 
 ## Properties
 Name | Type | Description | Notes
diff --git a/samples/client/petstore/javascript-promise-es6/docs/PetApi.md b/samples/client/petstore/javascript-promise-es6/docs/PetApi.md
index 1d5d78f6d7ad..3a402233a9ec 100644
--- a/samples/client/petstore/javascript-promise-es6/docs/PetApi.md
+++ b/samples/client/petstore/javascript-promise-es6/docs/PetApi.md
@@ -1,4 +1,4 @@
-# SwaggerPetstore.PetApi
+# OpenApiPetstore.PetApi
 
 All URIs are relative to *http://petstore.swagger.io:80/v2*
 
@@ -16,26 +16,22 @@ Method | HTTP request | Description
 
 
 # **addPet**
-> addPet(body)
+> addPet(pet)
 
 Add a new pet to the store
 
-
-
 ### Example
 ```javascript
-import SwaggerPetstore from 'swagger_petstore';
-let defaultClient = SwaggerPetstore.ApiClient.instance;
+import OpenApiPetstore from 'open_api_petstore';
+let defaultClient = OpenApiPetstore.ApiClient.instance;
 
 // Configure OAuth2 access token for authorization: petstore_auth
 let petstore_auth = defaultClient.authentications['petstore_auth'];
 petstore_auth.accessToken = 'YOUR ACCESS TOKEN';
 
-let apiInstance = new SwaggerPetstore.PetApi();
-
-let body = new SwaggerPetstore.Pet(); // Pet | Pet object that needs to be added to the store
-
-apiInstance.addPet(body).then(() => {
+let apiInstance = new OpenApiPetstore.PetApi();
+let pet = new OpenApiPetstore.Pet(); // Pet | Pet object that needs to be added to the store
+apiInstance.addPet(pet).then(() => {
   console.log('API called successfully.');
 }, (error) => {
   console.error(error);
@@ -47,7 +43,7 @@ apiInstance.addPet(body).then(() => {
 
 Name | Type | Description  | Notes
 ------------- | ------------- | ------------- | -------------
- **body** | [**Pet**](Pet.md)| Pet object that needs to be added to the store | 
+ **pet** | [**Pet**](Pet.md)| Pet object that needs to be added to the store | 
 
 ### Return type
 
@@ -60,7 +56,7 @@ null (empty response body)
 ### HTTP request headers
 
  - **Content-Type**: application/json, application/xml
- - **Accept**: application/xml, application/json
+ - **Accept**: Not defined
 
 
 # **deletePet**
@@ -68,22 +64,18 @@ null (empty response body)
 
 Deletes a pet
 
-
-
 ### Example
 ```javascript
-import SwaggerPetstore from 'swagger_petstore';
-let defaultClient = SwaggerPetstore.ApiClient.instance;
+import OpenApiPetstore from 'open_api_petstore';
+let defaultClient = OpenApiPetstore.ApiClient.instance;
 
 // Configure OAuth2 access token for authorization: petstore_auth
 let petstore_auth = defaultClient.authentications['petstore_auth'];
 petstore_auth.accessToken = 'YOUR ACCESS TOKEN';
 
-let apiInstance = new SwaggerPetstore.PetApi();
-
+let apiInstance = new OpenApiPetstore.PetApi();
 let petId = 789; // Number | Pet id to delete
-
-let opts = { 
+let opts = {
   'apiKey': "apiKey_example" // String | 
 };
 apiInstance.deletePet(petId, opts).then(() => {
@@ -112,7 +104,7 @@ null (empty response body)
 ### HTTP request headers
 
  - **Content-Type**: Not defined
- - **Accept**: application/xml, application/json
+ - **Accept**: Not defined
 
 
 # **findPetsByStatus**
@@ -124,17 +116,15 @@ Multiple status values can be provided with comma separated strings
 
 ### Example
 ```javascript
-import SwaggerPetstore from 'swagger_petstore';
-let defaultClient = SwaggerPetstore.ApiClient.instance;
+import OpenApiPetstore from 'open_api_petstore';
+let defaultClient = OpenApiPetstore.ApiClient.instance;
 
 // Configure OAuth2 access token for authorization: petstore_auth
 let petstore_auth = defaultClient.authentications['petstore_auth'];
 petstore_auth.accessToken = 'YOUR ACCESS TOKEN';
 
-let apiInstance = new SwaggerPetstore.PetApi();
-
-let status = ["status_example"]; // [String] | Status values that need to be considered for filter
-
+let apiInstance = new OpenApiPetstore.PetApi();
+let status = ["'available'"]; // [String] | Status values that need to be considered for filter
 apiInstance.findPetsByStatus(status).then((data) => {
   console.log('API called successfully. Returned data: ' + data);
 }, (error) => {
@@ -172,17 +162,15 @@ Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3
 
 ### Example
 ```javascript
-import SwaggerPetstore from 'swagger_petstore';
-let defaultClient = SwaggerPetstore.ApiClient.instance;
+import OpenApiPetstore from 'open_api_petstore';
+let defaultClient = OpenApiPetstore.ApiClient.instance;
 
 // Configure OAuth2 access token for authorization: petstore_auth
 let petstore_auth = defaultClient.authentications['petstore_auth'];
 petstore_auth.accessToken = 'YOUR ACCESS TOKEN';
 
-let apiInstance = new SwaggerPetstore.PetApi();
-
-let tags = ["tags_example"]; // [String] | Tags to filter by
-
+let apiInstance = new OpenApiPetstore.PetApi();
+let tags = ["inner_example"]; // [String] | Tags to filter by
 apiInstance.findPetsByTags(tags).then((data) => {
   console.log('API called successfully. Returned data: ' + data);
 }, (error) => {
@@ -220,8 +208,8 @@ Returns a single pet
 
 ### Example
 ```javascript
-import SwaggerPetstore from 'swagger_petstore';
-let defaultClient = SwaggerPetstore.ApiClient.instance;
+import OpenApiPetstore from 'open_api_petstore';
+let defaultClient = OpenApiPetstore.ApiClient.instance;
 
 // Configure API key authorization: api_key
 let api_key = defaultClient.authentications['api_key'];
@@ -229,10 +217,8 @@ api_key.apiKey = 'YOUR API KEY';
 // Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
 //api_key.apiKeyPrefix = 'Token';
 
-let apiInstance = new SwaggerPetstore.PetApi();
-
+let apiInstance = new OpenApiPetstore.PetApi();
 let petId = 789; // Number | ID of pet to return
-
 apiInstance.getPetById(petId).then((data) => {
   console.log('API called successfully. Returned data: ' + data);
 }, (error) => {
@@ -262,26 +248,22 @@ Name | Type | Description  | Notes
 
 
 # **updatePet**
-> updatePet(body)
+> updatePet(pet)
 
 Update an existing pet
 
-
-
 ### Example
 ```javascript
-import SwaggerPetstore from 'swagger_petstore';
-let defaultClient = SwaggerPetstore.ApiClient.instance;
+import OpenApiPetstore from 'open_api_petstore';
+let defaultClient = OpenApiPetstore.ApiClient.instance;
 
 // Configure OAuth2 access token for authorization: petstore_auth
 let petstore_auth = defaultClient.authentications['petstore_auth'];
 petstore_auth.accessToken = 'YOUR ACCESS TOKEN';
 
-let apiInstance = new SwaggerPetstore.PetApi();
-
-let body = new SwaggerPetstore.Pet(); // Pet | Pet object that needs to be added to the store
-
-apiInstance.updatePet(body).then(() => {
+let apiInstance = new OpenApiPetstore.PetApi();
+let pet = new OpenApiPetstore.Pet(); // Pet | Pet object that needs to be added to the store
+apiInstance.updatePet(pet).then(() => {
   console.log('API called successfully.');
 }, (error) => {
   console.error(error);
@@ -293,7 +275,7 @@ apiInstance.updatePet(body).then(() => {
 
 Name | Type | Description  | Notes
 ------------- | ------------- | ------------- | -------------
- **body** | [**Pet**](Pet.md)| Pet object that needs to be added to the store | 
+ **pet** | [**Pet**](Pet.md)| Pet object that needs to be added to the store | 
 
 ### Return type
 
@@ -306,7 +288,7 @@ null (empty response body)
 ### HTTP request headers
 
  - **Content-Type**: application/json, application/xml
- - **Accept**: application/xml, application/json
+ - **Accept**: Not defined
 
 
 # **updatePetWithForm**
@@ -314,22 +296,18 @@ null (empty response body)
 
 Updates a pet in the store with form data
 
-
-
 ### Example
 ```javascript
-import SwaggerPetstore from 'swagger_petstore';
-let defaultClient = SwaggerPetstore.ApiClient.instance;
+import OpenApiPetstore from 'open_api_petstore';
+let defaultClient = OpenApiPetstore.ApiClient.instance;
 
 // Configure OAuth2 access token for authorization: petstore_auth
 let petstore_auth = defaultClient.authentications['petstore_auth'];
 petstore_auth.accessToken = 'YOUR ACCESS TOKEN';
 
-let apiInstance = new SwaggerPetstore.PetApi();
-
+let apiInstance = new OpenApiPetstore.PetApi();
 let petId = 789; // Number | ID of pet that needs to be updated
-
-let opts = { 
+let opts = {
   'name': "name_example", // String | Updated name of the pet
   'status': "status_example" // String | Updated status of the pet
 };
@@ -360,7 +338,7 @@ null (empty response body)
 ### HTTP request headers
 
  - **Content-Type**: application/x-www-form-urlencoded
- - **Accept**: application/xml, application/json
+ - **Accept**: Not defined
 
 
 # **uploadFile**
@@ -368,24 +346,20 @@ null (empty response body)
 
 uploads an image
 
-
-
 ### Example
 ```javascript
-import SwaggerPetstore from 'swagger_petstore';
-let defaultClient = SwaggerPetstore.ApiClient.instance;
+import OpenApiPetstore from 'open_api_petstore';
+let defaultClient = OpenApiPetstore.ApiClient.instance;
 
 // Configure OAuth2 access token for authorization: petstore_auth
 let petstore_auth = defaultClient.authentications['petstore_auth'];
 petstore_auth.accessToken = 'YOUR ACCESS TOKEN';
 
-let apiInstance = new SwaggerPetstore.PetApi();
-
+let apiInstance = new OpenApiPetstore.PetApi();
 let petId = 789; // Number | ID of pet to update
-
-let opts = { 
+let opts = {
   'additionalMetadata': "additionalMetadata_example", // String | Additional data to pass to server
-  'file': "/path/to/file.txt" // File | file to upload
+  'file': "/path/to/file" // File | file to upload
 };
 apiInstance.uploadFile(petId, opts).then((data) => {
   console.log('API called successfully. Returned data: ' + data);
diff --git a/samples/client/petstore/javascript-promise-es6/docs/ReadOnlyFirst.md b/samples/client/petstore/javascript-promise-es6/docs/ReadOnlyFirst.md
index 5a16f8acce0d..671280fba339 100644
--- a/samples/client/petstore/javascript-promise-es6/docs/ReadOnlyFirst.md
+++ b/samples/client/petstore/javascript-promise-es6/docs/ReadOnlyFirst.md
@@ -1,4 +1,4 @@
-# SwaggerPetstore.ReadOnlyFirst
+# OpenApiPetstore.ReadOnlyFirst
 
 ## Properties
 Name | Type | Description | Notes
diff --git a/samples/client/petstore/javascript-promise-es6/docs/SpecialModelName.md b/samples/client/petstore/javascript-promise-es6/docs/SpecialModelName.md
index a204af143a58..6039f53de367 100644
--- a/samples/client/petstore/javascript-promise-es6/docs/SpecialModelName.md
+++ b/samples/client/petstore/javascript-promise-es6/docs/SpecialModelName.md
@@ -1,4 +1,4 @@
-# SwaggerPetstore.SpecialModelName
+# OpenApiPetstore.SpecialModelName
 
 ## Properties
 Name | Type | Description | Notes
diff --git a/samples/client/petstore/javascript-promise-es6/docs/StoreApi.md b/samples/client/petstore/javascript-promise-es6/docs/StoreApi.md
index 9f931097e037..01725c88e557 100644
--- a/samples/client/petstore/javascript-promise-es6/docs/StoreApi.md
+++ b/samples/client/petstore/javascript-promise-es6/docs/StoreApi.md
@@ -1,4 +1,4 @@
-# SwaggerPetstore.StoreApi
+# OpenApiPetstore.StoreApi
 
 All URIs are relative to *http://petstore.swagger.io:80/v2*
 
@@ -20,12 +20,10 @@ For valid response try integer IDs with value < 1000. Anything above 1000 or
 
 ### Example
 ```javascript
-import SwaggerPetstore from 'swagger_petstore';
-
-let apiInstance = new SwaggerPetstore.StoreApi();
+import OpenApiPetstore from 'open_api_petstore';
 
+let apiInstance = new OpenApiPetstore.StoreApi();
 let orderId = "orderId_example"; // String | ID of the order that needs to be deleted
-
 apiInstance.deleteOrder(orderId).then(() => {
   console.log('API called successfully.');
 }, (error) => {
@@ -51,11 +49,11 @@ No authorization required
 ### HTTP request headers
 
  - **Content-Type**: Not defined
- - **Accept**: application/xml, application/json
+ - **Accept**: Not defined
 
 
 # **getInventory**
-> {'String': 'Number'} getInventory()
+> {String: Number} getInventory()
 
 Returns pet inventories by status
 
@@ -63,8 +61,8 @@ Returns a map of status codes to quantities
 
 ### Example
 ```javascript
-import SwaggerPetstore from 'swagger_petstore';
-let defaultClient = SwaggerPetstore.ApiClient.instance;
+import OpenApiPetstore from 'open_api_petstore';
+let defaultClient = OpenApiPetstore.ApiClient.instance;
 
 // Configure API key authorization: api_key
 let api_key = defaultClient.authentications['api_key'];
@@ -72,7 +70,7 @@ api_key.apiKey = 'YOUR API KEY';
 // Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
 //api_key.apiKeyPrefix = 'Token';
 
-let apiInstance = new SwaggerPetstore.StoreApi();
+let apiInstance = new OpenApiPetstore.StoreApi();
 apiInstance.getInventory().then((data) => {
   console.log('API called successfully. Returned data: ' + data);
 }, (error) => {
@@ -86,7 +84,7 @@ This endpoint does not need any parameter.
 
 ### Return type
 
-**{'String': 'Number'}**
+**{String: Number}**
 
 ### Authorization
 
@@ -107,12 +105,10 @@ For valid response try integer IDs with value <= 5 or > 10. Other val
 
 ### Example
 ```javascript
-import SwaggerPetstore from 'swagger_petstore';
-
-let apiInstance = new SwaggerPetstore.StoreApi();
+import OpenApiPetstore from 'open_api_petstore';
 
+let apiInstance = new OpenApiPetstore.StoreApi();
 let orderId = 789; // Number | ID of pet that needs to be fetched
-
 apiInstance.getOrderById(orderId).then((data) => {
   console.log('API called successfully. Returned data: ' + data);
 }, (error) => {
@@ -142,21 +138,17 @@ No authorization required
 
 
 # **placeOrder**
-> Order placeOrder(body)
+> Order placeOrder(order)
 
 Place an order for a pet
 
-
-
 ### Example
 ```javascript
-import SwaggerPetstore from 'swagger_petstore';
-
-let apiInstance = new SwaggerPetstore.StoreApi();
-
-let body = new SwaggerPetstore.Order(); // Order | order placed for purchasing the pet
+import OpenApiPetstore from 'open_api_petstore';
 
-apiInstance.placeOrder(body).then((data) => {
+let apiInstance = new OpenApiPetstore.StoreApi();
+let order = new OpenApiPetstore.Order(); // Order | order placed for purchasing the pet
+apiInstance.placeOrder(order).then((data) => {
   console.log('API called successfully. Returned data: ' + data);
 }, (error) => {
   console.error(error);
@@ -168,7 +160,7 @@ apiInstance.placeOrder(body).then((data) => {
 
 Name | Type | Description  | Notes
 ------------- | ------------- | ------------- | -------------
- **body** | [**Order**](Order.md)| order placed for purchasing the pet | 
+ **order** | [**Order**](Order.md)| order placed for purchasing the pet | 
 
 ### Return type
 
diff --git a/samples/client/petstore/javascript-promise-es6/docs/Tag.md b/samples/client/petstore/javascript-promise-es6/docs/Tag.md
index c0277cae8ffe..a53941e80e0c 100644
--- a/samples/client/petstore/javascript-promise-es6/docs/Tag.md
+++ b/samples/client/petstore/javascript-promise-es6/docs/Tag.md
@@ -1,4 +1,4 @@
-# SwaggerPetstore.Tag
+# OpenApiPetstore.Tag
 
 ## Properties
 Name | Type | Description | Notes
diff --git a/samples/client/petstore/javascript-promise-es6/docs/User.md b/samples/client/petstore/javascript-promise-es6/docs/User.md
index 2cac604cfa0b..2e86dd378bfa 100644
--- a/samples/client/petstore/javascript-promise-es6/docs/User.md
+++ b/samples/client/petstore/javascript-promise-es6/docs/User.md
@@ -1,4 +1,4 @@
-# SwaggerPetstore.User
+# OpenApiPetstore.User
 
 ## Properties
 Name | Type | Description | Notes
diff --git a/samples/client/petstore/javascript-promise-es6/docs/UserApi.md b/samples/client/petstore/javascript-promise-es6/docs/UserApi.md
index df53e06d15bb..7513a886c7ba 100644
--- a/samples/client/petstore/javascript-promise-es6/docs/UserApi.md
+++ b/samples/client/petstore/javascript-promise-es6/docs/UserApi.md
@@ -1,4 +1,4 @@
-# SwaggerPetstore.UserApi
+# OpenApiPetstore.UserApi
 
 All URIs are relative to *http://petstore.swagger.io:80/v2*
 
@@ -16,7 +16,7 @@ Method | HTTP request | Description
 
 
 # **createUser**
-> createUser(body)
+> createUser(user)
 
 Create user
 
@@ -24,13 +24,11 @@ This can only be done by the logged in user.
 
 ### Example
 ```javascript
-import SwaggerPetstore from 'swagger_petstore';
+import OpenApiPetstore from 'open_api_petstore';
 
-let apiInstance = new SwaggerPetstore.UserApi();
-
-let body = new SwaggerPetstore.User(); // User | Created user object
-
-apiInstance.createUser(body).then(() => {
+let apiInstance = new OpenApiPetstore.UserApi();
+let user = new OpenApiPetstore.User(); // User | Created user object
+apiInstance.createUser(user).then(() => {
   console.log('API called successfully.');
 }, (error) => {
   console.error(error);
@@ -42,7 +40,7 @@ apiInstance.createUser(body).then(() => {
 
 Name | Type | Description  | Notes
 ------------- | ------------- | ------------- | -------------
- **body** | [**User**](User.md)| Created user object | 
+ **user** | [**User**](User.md)| Created user object | 
 
 ### Return type
 
@@ -55,25 +53,21 @@ No authorization required
 ### HTTP request headers
 
  - **Content-Type**: Not defined
- - **Accept**: application/xml, application/json
+ - **Accept**: Not defined
 
 
 # **createUsersWithArrayInput**
-> createUsersWithArrayInput(body)
+> createUsersWithArrayInput(user)
 
 Creates list of users with given input array
 
-
-
 ### Example
 ```javascript
-import SwaggerPetstore from 'swagger_petstore';
-
-let apiInstance = new SwaggerPetstore.UserApi();
+import OpenApiPetstore from 'open_api_petstore';
 
-let body = [new SwaggerPetstore.User()]; // [User] | List of user object
-
-apiInstance.createUsersWithArrayInput(body).then(() => {
+let apiInstance = new OpenApiPetstore.UserApi();
+let user = [new OpenApiPetstore.User()]; // [User] | List of user object
+apiInstance.createUsersWithArrayInput(user).then(() => {
   console.log('API called successfully.');
 }, (error) => {
   console.error(error);
@@ -85,7 +79,7 @@ apiInstance.createUsersWithArrayInput(body).then(() => {
 
 Name | Type | Description  | Notes
 ------------- | ------------- | ------------- | -------------
- **body** | [**[User]**](User.md)| List of user object | 
+ **user** | [**[User]**](Array.md)| List of user object | 
 
 ### Return type
 
@@ -98,25 +92,21 @@ No authorization required
 ### HTTP request headers
 
  - **Content-Type**: Not defined
- - **Accept**: application/xml, application/json
+ - **Accept**: Not defined
 
 
 # **createUsersWithListInput**
-> createUsersWithListInput(body)
+> createUsersWithListInput(user)
 
 Creates list of users with given input array
 
-
-
 ### Example
 ```javascript
-import SwaggerPetstore from 'swagger_petstore';
-
-let apiInstance = new SwaggerPetstore.UserApi();
-
-let body = [new SwaggerPetstore.User()]; // [User] | List of user object
+import OpenApiPetstore from 'open_api_petstore';
 
-apiInstance.createUsersWithListInput(body).then(() => {
+let apiInstance = new OpenApiPetstore.UserApi();
+let user = [new OpenApiPetstore.User()]; // [User] | List of user object
+apiInstance.createUsersWithListInput(user).then(() => {
   console.log('API called successfully.');
 }, (error) => {
   console.error(error);
@@ -128,7 +118,7 @@ apiInstance.createUsersWithListInput(body).then(() => {
 
 Name | Type | Description  | Notes
 ------------- | ------------- | ------------- | -------------
- **body** | [**[User]**](User.md)| List of user object | 
+ **user** | [**[User]**](Array.md)| List of user object | 
 
 ### Return type
 
@@ -141,7 +131,7 @@ No authorization required
 ### HTTP request headers
 
  - **Content-Type**: Not defined
- - **Accept**: application/xml, application/json
+ - **Accept**: Not defined
 
 
 # **deleteUser**
@@ -153,12 +143,10 @@ This can only be done by the logged in user.
 
 ### Example
 ```javascript
-import SwaggerPetstore from 'swagger_petstore';
-
-let apiInstance = new SwaggerPetstore.UserApi();
+import OpenApiPetstore from 'open_api_petstore';
 
+let apiInstance = new OpenApiPetstore.UserApi();
 let username = "username_example"; // String | The name that needs to be deleted
-
 apiInstance.deleteUser(username).then(() => {
   console.log('API called successfully.');
 }, (error) => {
@@ -184,7 +172,7 @@ No authorization required
 ### HTTP request headers
 
  - **Content-Type**: Not defined
- - **Accept**: application/xml, application/json
+ - **Accept**: Not defined
 
 
 # **getUserByName**
@@ -192,16 +180,12 @@ No authorization required
 
 Get user by user name
 
-
-
 ### Example
 ```javascript
-import SwaggerPetstore from 'swagger_petstore';
-
-let apiInstance = new SwaggerPetstore.UserApi();
-
-let username = "username_example"; // String | The name that needs to be fetched. Use user1 for testing. 
+import OpenApiPetstore from 'open_api_petstore';
 
+let apiInstance = new OpenApiPetstore.UserApi();
+let username = "username_example"; // String | The name that needs to be fetched. Use user1 for testing.
 apiInstance.getUserByName(username).then((data) => {
   console.log('API called successfully. Returned data: ' + data);
 }, (error) => {
@@ -214,7 +198,7 @@ apiInstance.getUserByName(username).then((data) => {
 
 Name | Type | Description  | Notes
 ------------- | ------------- | ------------- | -------------
- **username** | **String**| The name that needs to be fetched. Use user1 for testing.  | 
+ **username** | **String**| The name that needs to be fetched. Use user1 for testing. | 
 
 ### Return type
 
@@ -231,22 +215,17 @@ No authorization required
 
 
 # **loginUser**
-> 'String' loginUser(username, password)
+> String loginUser(username, password)
 
 Logs user into the system
 
-
-
 ### Example
 ```javascript
-import SwaggerPetstore from 'swagger_petstore';
-
-let apiInstance = new SwaggerPetstore.UserApi();
+import OpenApiPetstore from 'open_api_petstore';
 
+let apiInstance = new OpenApiPetstore.UserApi();
 let username = "username_example"; // String | The user name for login
-
 let password = "password_example"; // String | The password for login in clear text
-
 apiInstance.loginUser(username, password).then((data) => {
   console.log('API called successfully. Returned data: ' + data);
 }, (error) => {
@@ -264,7 +243,7 @@ Name | Type | Description  | Notes
 
 ### Return type
 
-**'String'**
+**String**
 
 ### Authorization
 
@@ -281,13 +260,11 @@ No authorization required
 
 Logs out current logged in user session
 
-
-
 ### Example
 ```javascript
-import SwaggerPetstore from 'swagger_petstore';
+import OpenApiPetstore from 'open_api_petstore';
 
-let apiInstance = new SwaggerPetstore.UserApi();
+let apiInstance = new OpenApiPetstore.UserApi();
 apiInstance.logoutUser().then(() => {
   console.log('API called successfully.');
 }, (error) => {
@@ -310,11 +287,11 @@ No authorization required
 ### HTTP request headers
 
  - **Content-Type**: Not defined
- - **Accept**: application/xml, application/json
+ - **Accept**: Not defined
 
 
 # **updateUser**
-> updateUser(username, body)
+> updateUser(username, user)
 
 Updated user
 
@@ -322,15 +299,12 @@ This can only be done by the logged in user.
 
 ### Example
 ```javascript
-import SwaggerPetstore from 'swagger_petstore';
-
-let apiInstance = new SwaggerPetstore.UserApi();
+import OpenApiPetstore from 'open_api_petstore';
 
+let apiInstance = new OpenApiPetstore.UserApi();
 let username = "username_example"; // String | name that need to be deleted
-
-let body = new SwaggerPetstore.User(); // User | Updated user object
-
-apiInstance.updateUser(username, body).then(() => {
+let user = new OpenApiPetstore.User(); // User | Updated user object
+apiInstance.updateUser(username, user).then(() => {
   console.log('API called successfully.');
 }, (error) => {
   console.error(error);
@@ -343,7 +317,7 @@ apiInstance.updateUser(username, body).then(() => {
 Name | Type | Description  | Notes
 ------------- | ------------- | ------------- | -------------
  **username** | **String**| name that need to be deleted | 
- **body** | [**User**](User.md)| Updated user object | 
+ **user** | [**User**](User.md)| Updated user object | 
 
 ### Return type
 
@@ -356,5 +330,5 @@ No authorization required
 ### HTTP request headers
 
  - **Content-Type**: Not defined
- - **Accept**: application/xml, application/json
+ - **Accept**: Not defined
 
diff --git a/samples/client/petstore/javascript-promise-es6/git_push.sh b/samples/client/petstore/javascript-promise-es6/git_push.sh
index 0d041ad0ba49..04dd5df38e83 100644
--- a/samples/client/petstore/javascript-promise-es6/git_push.sh
+++ b/samples/client/petstore/javascript-promise-es6/git_push.sh
@@ -1,7 +1,7 @@
 #!/bin/sh
 # ref: https://help.github.com/articles/adding-an-existing-project-to-github-using-the-command-line/
 #
-# Usage example: /bin/sh ./git_push.sh wing328 swagger-petstore-perl "minor update"
+# Usage example: /bin/sh ./git_push.sh wing328 openapi-pestore-perl "minor update"
 
 git_user_id=$1
 git_repo_id=$2
diff --git a/samples/client/petstore/javascript-promise-es6/package.json b/samples/client/petstore/javascript-promise-es6/package.json
index afb99e8a97a0..df2fea63d600 100644
--- a/samples/client/petstore/javascript-promise-es6/package.json
+++ b/samples/client/petstore/javascript-promise-es6/package.json
@@ -1,5 +1,5 @@
 {
-  "name": "swagger_petstore",
+  "name": "open_api_petstore",
   "version": "1.0.0",
   "description": "This_spec_is_mainly_for_testing_Petstore_server_and_contains_fake_endpoints_models__Please_do_not_use_this_for_any_other_purpose__Special_characters__",
   "license": "Apache-2.0",
diff --git a/samples/client/petstore/javascript-promise-es6/pom.xml b/samples/client/petstore/javascript-promise-es6/pom.xml
index 3892dedffa2b..793a531b460e 100644
--- a/samples/client/petstore/javascript-promise-es6/pom.xml
+++ b/samples/client/petstore/javascript-promise-es6/pom.xml
@@ -1,10 +1,10 @@
 
     4.0.0
-    io.swagger
-    swagger-petstore-javascript-promise-es6
+    org.openapitools
+    openapi-petstore-javascript-promise-es6
     pom
     1.0-SNAPSHOT
-    Swagger Petstore JS ES6 Client (Promise version)
+    OpenAPI Petstore JS Client (ES6, Promise)
     
         
             
diff --git a/samples/client/petstore/javascript-promise-es6/src/ApiClient.js b/samples/client/petstore/javascript-promise-es6/src/ApiClient.js
index a6a1dddd8ef4..330df9845a08 100644
--- a/samples/client/petstore/javascript-promise-es6/src/ApiClient.js
+++ b/samples/client/petstore/javascript-promise-es6/src/ApiClient.js
@@ -1,12 +1,12 @@
 /**
- * Swagger Petstore
+ * OpenAPI Petstore
  * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
  *
  * OpenAPI spec version: 1.0.0
- * Contact: apiteam@swagger.io
+ * 
  *
- * NOTE: This class is auto generated by the swagger code generator program.
- * https://github.com/swagger-api/swagger-codegen.git
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
  * Do not edit the class manually.
  *
  */
@@ -27,7 +27,7 @@ import querystring from "querystring";
 * @alias module:ApiClient
 * @class
 */
-export default class ApiClient {
+class ApiClient {
     constructor() {
         /**
          * The base URL against which to resolve every API call's (relative) path.
@@ -225,43 +225,6 @@ export default class ApiClient {
         return newParams;
     }
 
-    /**
-    * Enumeration of collection format separator strategies.
-    * @enum {String}
-    * @readonly
-    */
-    static CollectionFormatEnum = {
-        /**
-         * Comma-separated values. Value: csv
-         * @const
-         */
-        CSV: ',',
-
-        /**
-         * Space-separated values. Value: ssv
-         * @const
-         */
-        SSV: ' ',
-
-        /**
-         * Tab-separated values. Value: tsv
-         * @const
-         */
-        TSV: '\t',
-
-        /**
-         * Pipe(|)-separated values. Value: pipes
-         * @const
-         */
-        PIPES: '|',
-
-        /**
-         * Native array. Value: multi
-         * @const
-         */
-        MULTI: 'multi'
-    };
-
     /**
     * Builds a string representation of an array-type actual parameter, according to the given collection format.
     * @param {Array} param An array parameter.
@@ -482,7 +445,7 @@ export default class ApiClient {
     * @returns {Date} The parsed date object.
     */
     static parseDate(str) {
-        return new Date(str.replace(/T/i, ' '));
+        return new Date(str);
     }
 
     /**
@@ -573,8 +536,46 @@ export default class ApiClient {
     };
 }
 
+/**
+ * Enumeration of collection format separator strategies.
+ * @enum {String}
+ * @readonly
+ */
+ApiClient.CollectionFormatEnum = {
+    /**
+     * Comma-separated values. Value: csv
+     * @const
+     */
+    CSV: ',',
+
+    /**
+     * Space-separated values. Value: ssv
+     * @const
+     */
+    SSV: ' ',
+
+    /**
+     * Tab-separated values. Value: tsv
+     * @const
+     */
+    TSV: '\t',
+
+    /**
+     * Pipe(|)-separated values. Value: pipes
+     * @const
+     */
+    PIPES: '|',
+
+    /**
+     * Native array. Value: multi
+     * @const
+     */
+    MULTI: 'multi'
+};
+
 /**
 * The default API client implementation.
 * @type {module:ApiClient}
 */
 ApiClient.instance = new ApiClient();
+export default ApiClient;
\ No newline at end of file
diff --git a/samples/client/petstore/javascript-promise-es6/src/api/AnotherFakeApi.js b/samples/client/petstore/javascript-promise-es6/src/api/AnotherFakeApi.js
index 94185c14bc33..a9a409d6336a 100644
--- a/samples/client/petstore/javascript-promise-es6/src/api/AnotherFakeApi.js
+++ b/samples/client/petstore/javascript-promise-es6/src/api/AnotherFakeApi.js
@@ -1,12 +1,12 @@
 /**
- * Swagger Petstore
+ * OpenAPI Petstore
  * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
  *
  * OpenAPI spec version: 1.0.0
- * Contact: apiteam@swagger.io
+ * 
  *
- * NOTE: This class is auto generated by the swagger code generator program.
- * https://github.com/swagger-api/swagger-codegen.git
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
  * Do not edit the class manually.
  *
  */
@@ -38,15 +38,15 @@ export default class AnotherFakeApi {
     /**
      * To test special tags
      * To test special tags
-     * @param {module:model/Client} body client model
+     * @param {module:model/Client} client client model
      * @return {Promise} a {@link https://www.promisejs.org/|Promise}, with an object containing data of type {@link module:model/Client} and HTTP response
      */
-    testSpecialTagsWithHttpInfo(body) {
-      let postBody = body;
+    testSpecialTagsWithHttpInfo(client) {
+      let postBody = client;
 
-      // verify the required parameter 'body' is set
-      if (body === undefined || body === null) {
-        throw new Error("Missing the required parameter 'body' when calling testSpecialTags");
+      // verify the required parameter 'client' is set
+      if (client === undefined || client === null) {
+        throw new Error("Missing the required parameter 'client' when calling testSpecialTags");
       }
 
 
@@ -74,11 +74,11 @@ export default class AnotherFakeApi {
     /**
      * To test special tags
      * To test special tags
-     * @param {module:model/Client} body client model
+     * @param {module:model/Client} client client model
      * @return {Promise} a {@link https://www.promisejs.org/|Promise}, with data of type {@link module:model/Client}
      */
-    testSpecialTags(body) {
-      return this.testSpecialTagsWithHttpInfo(body)
+    testSpecialTags(client) {
+      return this.testSpecialTagsWithHttpInfo(client)
         .then(function(response_and_data) {
           return response_and_data.data;
         });
diff --git a/samples/client/petstore/javascript-promise-es6/src/api/FakeApi.js b/samples/client/petstore/javascript-promise-es6/src/api/FakeApi.js
index 0b0b8a1a816b..87cfae006597 100644
--- a/samples/client/petstore/javascript-promise-es6/src/api/FakeApi.js
+++ b/samples/client/petstore/javascript-promise-es6/src/api/FakeApi.js
@@ -1,12 +1,12 @@
 /**
- * Swagger Petstore
+ * OpenAPI Petstore
  * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
  *
  * OpenAPI spec version: 1.0.0
- * Contact: apiteam@swagger.io
+ * 
  *
- * NOTE: This class is auto generated by the swagger code generator program.
- * https://github.com/swagger-api/swagger-codegen.git
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
  * Do not edit the class manually.
  *
  */
@@ -14,10 +14,8 @@
 
 import ApiClient from "../ApiClient";
 import Client from '../model/Client';
-import OuterBoolean from '../model/OuterBoolean';
 import OuterComposite from '../model/OuterComposite';
-import OuterNumber from '../model/OuterNumber';
-import OuterString from '../model/OuterString';
+import User from '../model/User';
 
 /**
 * Fake service.
@@ -42,8 +40,8 @@ export default class FakeApi {
     /**
      * Test serialization of outer boolean types
      * @param {Object} opts Optional parameters
-     * @param {module:model/OuterBoolean} opts.body Input boolean as post body
-     * @return {Promise} a {@link https://www.promisejs.org/|Promise}, with an object containing data of type {@link module:model/OuterBoolean} and HTTP response
+     * @param {Boolean} opts.body Input boolean as post body
+     * @return {Promise} a {@link https://www.promisejs.org/|Promise}, with an object containing data of type {@link Boolean} and HTTP response
      */
     fakeOuterBooleanSerializeWithHttpInfo(opts) {
       opts = opts || {};
@@ -61,8 +59,8 @@ export default class FakeApi {
 
       let authNames = [];
       let contentTypes = [];
-      let accepts = [];
-      let returnType = OuterBoolean;
+      let accepts = ['*/*'];
+      let returnType = 'Boolean';
 
       return this.apiClient.callApi(
         '/fake/outer/boolean', 'POST',
@@ -74,8 +72,8 @@ export default class FakeApi {
     /**
      * Test serialization of outer boolean types
      * @param {Object} opts Optional parameters
-     * @param {module:model/OuterBoolean} opts.body Input boolean as post body
-     * @return {Promise} a {@link https://www.promisejs.org/|Promise}, with data of type {@link module:model/OuterBoolean}
+     * @param {Boolean} opts.body Input boolean as post body
+     * @return {Promise} a {@link https://www.promisejs.org/|Promise}, with data of type {@link Boolean}
      */
     fakeOuterBooleanSerialize(opts) {
       return this.fakeOuterBooleanSerializeWithHttpInfo(opts)
@@ -88,12 +86,12 @@ export default class FakeApi {
     /**
      * Test serialization of object with outer number type
      * @param {Object} opts Optional parameters
-     * @param {module:model/OuterComposite} opts.body Input composite as post body
+     * @param {module:model/OuterComposite} opts.outerComposite Input composite as post body
      * @return {Promise} a {@link https://www.promisejs.org/|Promise}, with an object containing data of type {@link module:model/OuterComposite} and HTTP response
      */
     fakeOuterCompositeSerializeWithHttpInfo(opts) {
       opts = opts || {};
-      let postBody = opts['body'];
+      let postBody = opts['outerComposite'];
 
 
       let pathParams = {
@@ -107,7 +105,7 @@ export default class FakeApi {
 
       let authNames = [];
       let contentTypes = [];
-      let accepts = [];
+      let accepts = ['*/*'];
       let returnType = OuterComposite;
 
       return this.apiClient.callApi(
@@ -120,7 +118,7 @@ export default class FakeApi {
     /**
      * Test serialization of object with outer number type
      * @param {Object} opts Optional parameters
-     * @param {module:model/OuterComposite} opts.body Input composite as post body
+     * @param {module:model/OuterComposite} opts.outerComposite Input composite as post body
      * @return {Promise} a {@link https://www.promisejs.org/|Promise}, with data of type {@link module:model/OuterComposite}
      */
     fakeOuterCompositeSerialize(opts) {
@@ -134,8 +132,8 @@ export default class FakeApi {
     /**
      * Test serialization of outer number types
      * @param {Object} opts Optional parameters
-     * @param {module:model/OuterNumber} opts.body Input number as post body
-     * @return {Promise} a {@link https://www.promisejs.org/|Promise}, with an object containing data of type {@link module:model/OuterNumber} and HTTP response
+     * @param {Number} opts.body Input number as post body
+     * @return {Promise} a {@link https://www.promisejs.org/|Promise}, with an object containing data of type {@link Number} and HTTP response
      */
     fakeOuterNumberSerializeWithHttpInfo(opts) {
       opts = opts || {};
@@ -153,8 +151,8 @@ export default class FakeApi {
 
       let authNames = [];
       let contentTypes = [];
-      let accepts = [];
-      let returnType = OuterNumber;
+      let accepts = ['*/*'];
+      let returnType = 'Number';
 
       return this.apiClient.callApi(
         '/fake/outer/number', 'POST',
@@ -166,8 +164,8 @@ export default class FakeApi {
     /**
      * Test serialization of outer number types
      * @param {Object} opts Optional parameters
-     * @param {module:model/OuterNumber} opts.body Input number as post body
-     * @return {Promise} a {@link https://www.promisejs.org/|Promise}, with data of type {@link module:model/OuterNumber}
+     * @param {Number} opts.body Input number as post body
+     * @return {Promise} a {@link https://www.promisejs.org/|Promise}, with data of type {@link Number}
      */
     fakeOuterNumberSerialize(opts) {
       return this.fakeOuterNumberSerializeWithHttpInfo(opts)
@@ -180,8 +178,8 @@ export default class FakeApi {
     /**
      * Test serialization of outer string types
      * @param {Object} opts Optional parameters
-     * @param {module:model/OuterString} opts.body Input string as post body
-     * @return {Promise} a {@link https://www.promisejs.org/|Promise}, with an object containing data of type {@link module:model/OuterString} and HTTP response
+     * @param {String} opts.body Input string as post body
+     * @return {Promise} a {@link https://www.promisejs.org/|Promise}, with an object containing data of type {@link String} and HTTP response
      */
     fakeOuterStringSerializeWithHttpInfo(opts) {
       opts = opts || {};
@@ -199,8 +197,8 @@ export default class FakeApi {
 
       let authNames = [];
       let contentTypes = [];
-      let accepts = [];
-      let returnType = OuterString;
+      let accepts = ['*/*'];
+      let returnType = 'String';
 
       return this.apiClient.callApi(
         '/fake/outer/string', 'POST',
@@ -212,8 +210,8 @@ export default class FakeApi {
     /**
      * Test serialization of outer string types
      * @param {Object} opts Optional parameters
-     * @param {module:model/OuterString} opts.body Input string as post body
-     * @return {Promise} a {@link https://www.promisejs.org/|Promise}, with data of type {@link module:model/OuterString}
+     * @param {String} opts.body Input string as post body
+     * @return {Promise} a {@link https://www.promisejs.org/|Promise}, with data of type {@link String}
      */
     fakeOuterStringSerialize(opts) {
       return this.fakeOuterStringSerializeWithHttpInfo(opts)
@@ -223,18 +221,72 @@ export default class FakeApi {
     }
 
 
+    /**
+     * @param {String} query 
+     * @param {module:model/User} user 
+     * @return {Promise} a {@link https://www.promisejs.org/|Promise}, with an object containing HTTP response
+     */
+    testBodyWithQueryParamsWithHttpInfo(query, user) {
+      let postBody = user;
+
+      // verify the required parameter 'query' is set
+      if (query === undefined || query === null) {
+        throw new Error("Missing the required parameter 'query' when calling testBodyWithQueryParams");
+      }
+
+      // verify the required parameter 'user' is set
+      if (user === undefined || user === null) {
+        throw new Error("Missing the required parameter 'user' when calling testBodyWithQueryParams");
+      }
+
+
+      let pathParams = {
+      };
+      let queryParams = {
+        'query': query
+      };
+      let headerParams = {
+      };
+      let formParams = {
+      };
+
+      let authNames = [];
+      let contentTypes = ['application/json'];
+      let accepts = [];
+      let returnType = null;
+
+      return this.apiClient.callApi(
+        '/fake/body-with-query-params', 'PUT',
+        pathParams, queryParams, headerParams, formParams, postBody,
+        authNames, contentTypes, accepts, returnType
+      );
+    }
+
+    /**
+     * @param {String} query 
+     * @param {module:model/User} user 
+     * @return {Promise} a {@link https://www.promisejs.org/|Promise}
+     */
+    testBodyWithQueryParams(query, user) {
+      return this.testBodyWithQueryParamsWithHttpInfo(query, user)
+        .then(function(response_and_data) {
+          return response_and_data.data;
+        });
+    }
+
+
     /**
      * To test \"client\" model
      * To test \"client\" model
-     * @param {module:model/Client} body client model
+     * @param {module:model/Client} client client model
      * @return {Promise} a {@link https://www.promisejs.org/|Promise}, with an object containing data of type {@link module:model/Client} and HTTP response
      */
-    testClientModelWithHttpInfo(body) {
-      let postBody = body;
+    testClientModelWithHttpInfo(client) {
+      let postBody = client;
 
-      // verify the required parameter 'body' is set
-      if (body === undefined || body === null) {
-        throw new Error("Missing the required parameter 'body' when calling testClientModel");
+      // verify the required parameter 'client' is set
+      if (client === undefined || client === null) {
+        throw new Error("Missing the required parameter 'client' when calling testClientModel");
       }
 
 
@@ -262,11 +314,11 @@ export default class FakeApi {
     /**
      * To test \"client\" model
      * To test \"client\" model
-     * @param {module:model/Client} body client model
+     * @param {module:model/Client} client client model
      * @return {Promise} a {@link https://www.promisejs.org/|Promise}, with data of type {@link module:model/Client}
      */
-    testClientModel(body) {
-      return this.testClientModelWithHttpInfo(body)
+    testClientModel(client) {
+      return this.testClientModelWithHttpInfo(client)
         .then(function(response_and_data) {
           return response_and_data.data;
         });
@@ -286,7 +338,7 @@ export default class FakeApi {
      * @param {Number} opts.int64 None
      * @param {Number} opts._float None
      * @param {String} opts._string None
-     * @param {Blob} opts.binary None
+     * @param {File} opts.binary None
      * @param {Date} opts._date None
      * @param {Date} opts.dateTime None
      * @param {String} opts.password None
@@ -342,8 +394,8 @@ export default class FakeApi {
       };
 
       let authNames = ['http_basic_test'];
-      let contentTypes = ['application/xml; charset=utf-8', 'application/json; charset=utf-8'];
-      let accepts = ['application/xml; charset=utf-8', 'application/json; charset=utf-8'];
+      let contentTypes = ['application/x-www-form-urlencoded'];
+      let accepts = [];
       let returnType = null;
 
       return this.apiClient.callApi(
@@ -366,7 +418,7 @@ export default class FakeApi {
      * @param {Number} opts.int64 None
      * @param {Number} opts._float None
      * @param {String} opts._string None
-     * @param {Blob} opts.binary None
+     * @param {File} opts.binary None
      * @param {Date} opts._date None
      * @param {Date} opts.dateTime None
      * @param {String} opts.password None
@@ -385,14 +437,14 @@ export default class FakeApi {
      * To test enum parameters
      * To test enum parameters
      * @param {Object} opts Optional parameters
-     * @param {Array.} opts.enumFormStringArray Form parameter enum test (string array)
-     * @param {module:model/String} opts.enumFormString Form parameter enum test (string) (default to -efg)
      * @param {Array.} opts.enumHeaderStringArray Header parameter enum test (string array)
-     * @param {module:model/String} opts.enumHeaderString Header parameter enum test (string) (default to -efg)
+     * @param {module:model/String} opts.enumHeaderString Header parameter enum test (string) (default to '-efg')
      * @param {Array.} opts.enumQueryStringArray Query parameter enum test (string array)
-     * @param {module:model/String} opts.enumQueryString Query parameter enum test (string) (default to -efg)
+     * @param {module:model/String} opts.enumQueryString Query parameter enum test (string) (default to '-efg')
      * @param {module:model/Number} opts.enumQueryInteger Query parameter enum test (double)
      * @param {module:model/Number} opts.enumQueryDouble Query parameter enum test (double)
+     * @param {Array.} opts.enumFormStringArray Form parameter enum test (string array) (default to '$')
+     * @param {module:model/String} opts.enumFormString Form parameter enum test (string) (default to '-efg')
      * @return {Promise} a {@link https://www.promisejs.org/|Promise}, with an object containing HTTP response
      */
     testEnumParametersWithHttpInfo(opts) {
@@ -405,7 +457,8 @@ export default class FakeApi {
       let queryParams = {
         'enum_query_string_array': this.apiClient.buildCollectionParam(opts['enumQueryStringArray'], 'csv'),
         'enum_query_string': opts['enumQueryString'],
-        'enum_query_integer': opts['enumQueryInteger']
+        'enum_query_integer': opts['enumQueryInteger'],
+        'enum_query_double': opts['enumQueryDouble']
       };
       let headerParams = {
         'enum_header_string_array': opts['enumHeaderStringArray'],
@@ -413,13 +466,12 @@ export default class FakeApi {
       };
       let formParams = {
         'enum_form_string_array': this.apiClient.buildCollectionParam(opts['enumFormStringArray'], 'csv'),
-        'enum_form_string': opts['enumFormString'],
-        'enum_query_double': opts['enumQueryDouble']
+        'enum_form_string': opts['enumFormString']
       };
 
       let authNames = [];
-      let contentTypes = ['*/*'];
-      let accepts = ['*/*'];
+      let contentTypes = ['application/x-www-form-urlencoded'];
+      let accepts = [];
       let returnType = null;
 
       return this.apiClient.callApi(
@@ -433,14 +485,14 @@ export default class FakeApi {
      * To test enum parameters
      * To test enum parameters
      * @param {Object} opts Optional parameters
-     * @param {Array.} opts.enumFormStringArray Form parameter enum test (string array)
-     * @param {module:model/String} opts.enumFormString Form parameter enum test (string) (default to -efg)
      * @param {Array.} opts.enumHeaderStringArray Header parameter enum test (string array)
-     * @param {module:model/String} opts.enumHeaderString Header parameter enum test (string) (default to -efg)
+     * @param {module:model/String} opts.enumHeaderString Header parameter enum test (string) (default to '-efg')
      * @param {Array.} opts.enumQueryStringArray Query parameter enum test (string array)
-     * @param {module:model/String} opts.enumQueryString Query parameter enum test (string) (default to -efg)
+     * @param {module:model/String} opts.enumQueryString Query parameter enum test (string) (default to '-efg')
      * @param {module:model/Number} opts.enumQueryInteger Query parameter enum test (double)
      * @param {module:model/Number} opts.enumQueryDouble Query parameter enum test (double)
+     * @param {Array.} opts.enumFormStringArray Form parameter enum test (string array) (default to '$')
+     * @param {module:model/String} opts.enumFormString Form parameter enum test (string) (default to '-efg')
      * @return {Promise} a {@link https://www.promisejs.org/|Promise}
      */
     testEnumParameters(opts) {
@@ -453,16 +505,15 @@ export default class FakeApi {
 
     /**
      * test inline additionalProperties
-     * 
-     * @param {Object} param request body
+     * @param {Object.} requestBody request body
      * @return {Promise} a {@link https://www.promisejs.org/|Promise}, with an object containing HTTP response
      */
-    testInlineAdditionalPropertiesWithHttpInfo(param) {
-      let postBody = param;
+    testInlineAdditionalPropertiesWithHttpInfo(requestBody) {
+      let postBody = requestBody;
 
-      // verify the required parameter 'param' is set
-      if (param === undefined || param === null) {
-        throw new Error("Missing the required parameter 'param' when calling testInlineAdditionalProperties");
+      // verify the required parameter 'requestBody' is set
+      if (requestBody === undefined || requestBody === null) {
+        throw new Error("Missing the required parameter 'requestBody' when calling testInlineAdditionalProperties");
       }
 
 
@@ -489,12 +540,11 @@ export default class FakeApi {
 
     /**
      * test inline additionalProperties
-     * 
-     * @param {Object} param request body
+     * @param {Object.} requestBody request body
      * @return {Promise} a {@link https://www.promisejs.org/|Promise}
      */
-    testInlineAdditionalProperties(param) {
-      return this.testInlineAdditionalPropertiesWithHttpInfo(param)
+    testInlineAdditionalProperties(requestBody) {
+      return this.testInlineAdditionalPropertiesWithHttpInfo(requestBody)
         .then(function(response_and_data) {
           return response_and_data.data;
         });
@@ -503,7 +553,6 @@ export default class FakeApi {
 
     /**
      * test json serialization of form data
-     * 
      * @param {String} param field1
      * @param {String} param2 field2
      * @return {Promise} a {@link https://www.promisejs.org/|Promise}, with an object containing HTTP response
@@ -534,7 +583,7 @@ export default class FakeApi {
       };
 
       let authNames = [];
-      let contentTypes = ['application/json'];
+      let contentTypes = ['application/x-www-form-urlencoded'];
       let accepts = [];
       let returnType = null;
 
@@ -547,7 +596,6 @@ export default class FakeApi {
 
     /**
      * test json serialization of form data
-     * 
      * @param {String} param field1
      * @param {String} param2 field2
      * @return {Promise} a {@link https://www.promisejs.org/|Promise}
diff --git a/samples/client/petstore/javascript-promise-es6/src/api/FakeClassnameTags123Api.js b/samples/client/petstore/javascript-promise-es6/src/api/FakeClassnameTags123Api.js
index 89dddfd7a92a..11e8a4712094 100644
--- a/samples/client/petstore/javascript-promise-es6/src/api/FakeClassnameTags123Api.js
+++ b/samples/client/petstore/javascript-promise-es6/src/api/FakeClassnameTags123Api.js
@@ -1,12 +1,12 @@
 /**
- * Swagger Petstore
+ * OpenAPI Petstore
  * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
  *
  * OpenAPI spec version: 1.0.0
- * Contact: apiteam@swagger.io
+ * 
  *
- * NOTE: This class is auto generated by the swagger code generator program.
- * https://github.com/swagger-api/swagger-codegen.git
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
  * Do not edit the class manually.
  *
  */
@@ -37,15 +37,16 @@ export default class FakeClassnameTags123Api {
 
     /**
      * To test class name in snake case
-     * @param {module:model/Client} body client model
+     * To test class name in snake case
+     * @param {module:model/Client} client client model
      * @return {Promise} a {@link https://www.promisejs.org/|Promise}, with an object containing data of type {@link module:model/Client} and HTTP response
      */
-    testClassnameWithHttpInfo(body) {
-      let postBody = body;
+    testClassnameWithHttpInfo(client) {
+      let postBody = client;
 
-      // verify the required parameter 'body' is set
-      if (body === undefined || body === null) {
-        throw new Error("Missing the required parameter 'body' when calling testClassname");
+      // verify the required parameter 'client' is set
+      if (client === undefined || client === null) {
+        throw new Error("Missing the required parameter 'client' when calling testClassname");
       }
 
 
@@ -72,11 +73,12 @@ export default class FakeClassnameTags123Api {
 
     /**
      * To test class name in snake case
-     * @param {module:model/Client} body client model
+     * To test class name in snake case
+     * @param {module:model/Client} client client model
      * @return {Promise} a {@link https://www.promisejs.org/|Promise}, with data of type {@link module:model/Client}
      */
-    testClassname(body) {
-      return this.testClassnameWithHttpInfo(body)
+    testClassname(client) {
+      return this.testClassnameWithHttpInfo(client)
         .then(function(response_and_data) {
           return response_and_data.data;
         });
diff --git a/samples/client/petstore/javascript-promise-es6/src/api/Fake_classname_tags123Api.js b/samples/client/petstore/javascript-promise-es6/src/api/Fake_classname_tags123Api.js
deleted file mode 100644
index 9ce405845a5f..000000000000
--- a/samples/client/petstore/javascript-promise-es6/src/api/Fake_classname_tags123Api.js
+++ /dev/null
@@ -1,86 +0,0 @@
-/**
- * Swagger Petstore
- * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
- *
- * OpenAPI spec version: 1.0.0
- * Contact: apiteam@swagger.io
- *
- * NOTE: This class is auto generated by the swagger code generator program.
- * https://github.com/swagger-api/swagger-codegen.git
- * Do not edit the class manually.
- *
- */
-
-
-import ApiClient from "../ApiClient";
-import Client from '../model/Client';
-
-/**
-* Fake_classname_tags123 service.
-* @module api/Fake_classname_tags123Api
-* @version 1.0.0
-*/
-export default class Fake_classname_tags123Api {
-
-    /**
-    * Constructs a new Fake_classname_tags123Api. 
-    * @alias module:api/Fake_classname_tags123Api
-    * @class
-    * @param {module:ApiClient} [apiClient] Optional API client implementation to use,
-    * default to {@link module:ApiClient#instance} if unspecified.
-    */
-    constructor(apiClient) {
-        this.apiClient = apiClient || ApiClient.instance;
-    }
-
-
-
-    /**
-     * To test class name in snake case
-     * @param {module:model/Client} body client model
-     * @return {Promise} a {@link https://www.promisejs.org/|Promise}, with an object containing data of type {@link module:model/Client} and HTTP response
-     */
-    testClassnameWithHttpInfo(body) {
-      let postBody = body;
-
-      // verify the required parameter 'body' is set
-      if (body === undefined || body === null) {
-        throw new Error("Missing the required parameter 'body' when calling testClassname");
-      }
-
-
-      let pathParams = {
-      };
-      let queryParams = {
-      };
-      let headerParams = {
-      };
-      let formParams = {
-      };
-
-      let authNames = ['api_key_query'];
-      let contentTypes = ['application/json'];
-      let accepts = ['application/json'];
-      let returnType = Client;
-
-      return this.apiClient.callApi(
-        '/fake_classname_test', 'PATCH',
-        pathParams, queryParams, headerParams, formParams, postBody,
-        authNames, contentTypes, accepts, returnType
-      );
-    }
-
-    /**
-     * To test class name in snake case
-     * @param {module:model/Client} body client model
-     * @return {Promise} a {@link https://www.promisejs.org/|Promise}, with data of type {@link module:model/Client}
-     */
-    testClassname(body) {
-      return this.testClassnameWithHttpInfo(body)
-        .then(function(response_and_data) {
-          return response_and_data.data;
-        });
-    }
-
-
-}
diff --git a/samples/client/petstore/javascript-promise-es6/src/api/PetApi.js b/samples/client/petstore/javascript-promise-es6/src/api/PetApi.js
index 7e79f14a48f9..a8a8d91c9502 100644
--- a/samples/client/petstore/javascript-promise-es6/src/api/PetApi.js
+++ b/samples/client/petstore/javascript-promise-es6/src/api/PetApi.js
@@ -1,12 +1,12 @@
 /**
- * Swagger Petstore
+ * OpenAPI Petstore
  * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
  *
  * OpenAPI spec version: 1.0.0
- * Contact: apiteam@swagger.io
+ * 
  *
- * NOTE: This class is auto generated by the swagger code generator program.
- * https://github.com/swagger-api/swagger-codegen.git
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
  * Do not edit the class manually.
  *
  */
@@ -38,16 +38,15 @@ export default class PetApi {
 
     /**
      * Add a new pet to the store
-     * 
-     * @param {module:model/Pet} body Pet object that needs to be added to the store
+     * @param {module:model/Pet} pet Pet object that needs to be added to the store
      * @return {Promise} a {@link https://www.promisejs.org/|Promise}, with an object containing HTTP response
      */
-    addPetWithHttpInfo(body) {
-      let postBody = body;
+    addPetWithHttpInfo(pet) {
+      let postBody = pet;
 
-      // verify the required parameter 'body' is set
-      if (body === undefined || body === null) {
-        throw new Error("Missing the required parameter 'body' when calling addPet");
+      // verify the required parameter 'pet' is set
+      if (pet === undefined || pet === null) {
+        throw new Error("Missing the required parameter 'pet' when calling addPet");
       }
 
 
@@ -62,7 +61,7 @@ export default class PetApi {
 
       let authNames = ['petstore_auth'];
       let contentTypes = ['application/json', 'application/xml'];
-      let accepts = ['application/xml', 'application/json'];
+      let accepts = [];
       let returnType = null;
 
       return this.apiClient.callApi(
@@ -74,12 +73,11 @@ export default class PetApi {
 
     /**
      * Add a new pet to the store
-     * 
-     * @param {module:model/Pet} body Pet object that needs to be added to the store
+     * @param {module:model/Pet} pet Pet object that needs to be added to the store
      * @return {Promise} a {@link https://www.promisejs.org/|Promise}
      */
-    addPet(body) {
-      return this.addPetWithHttpInfo(body)
+    addPet(pet) {
+      return this.addPetWithHttpInfo(pet)
         .then(function(response_and_data) {
           return response_and_data.data;
         });
@@ -88,7 +86,6 @@ export default class PetApi {
 
     /**
      * Deletes a pet
-     * 
      * @param {Number} petId Pet id to delete
      * @param {Object} opts Optional parameters
      * @param {String} opts.apiKey 
@@ -117,7 +114,7 @@ export default class PetApi {
 
       let authNames = ['petstore_auth'];
       let contentTypes = [];
-      let accepts = ['application/xml', 'application/json'];
+      let accepts = [];
       let returnType = null;
 
       return this.apiClient.callApi(
@@ -129,7 +126,6 @@ export default class PetApi {
 
     /**
      * Deletes a pet
-     * 
      * @param {Number} petId Pet id to delete
      * @param {Object} opts Optional parameters
      * @param {String} opts.apiKey 
@@ -298,16 +294,15 @@ export default class PetApi {
 
     /**
      * Update an existing pet
-     * 
-     * @param {module:model/Pet} body Pet object that needs to be added to the store
+     * @param {module:model/Pet} pet Pet object that needs to be added to the store
      * @return {Promise} a {@link https://www.promisejs.org/|Promise}, with an object containing HTTP response
      */
-    updatePetWithHttpInfo(body) {
-      let postBody = body;
+    updatePetWithHttpInfo(pet) {
+      let postBody = pet;
 
-      // verify the required parameter 'body' is set
-      if (body === undefined || body === null) {
-        throw new Error("Missing the required parameter 'body' when calling updatePet");
+      // verify the required parameter 'pet' is set
+      if (pet === undefined || pet === null) {
+        throw new Error("Missing the required parameter 'pet' when calling updatePet");
       }
 
 
@@ -322,7 +317,7 @@ export default class PetApi {
 
       let authNames = ['petstore_auth'];
       let contentTypes = ['application/json', 'application/xml'];
-      let accepts = ['application/xml', 'application/json'];
+      let accepts = [];
       let returnType = null;
 
       return this.apiClient.callApi(
@@ -334,12 +329,11 @@ export default class PetApi {
 
     /**
      * Update an existing pet
-     * 
-     * @param {module:model/Pet} body Pet object that needs to be added to the store
+     * @param {module:model/Pet} pet Pet object that needs to be added to the store
      * @return {Promise} a {@link https://www.promisejs.org/|Promise}
      */
-    updatePet(body) {
-      return this.updatePetWithHttpInfo(body)
+    updatePet(pet) {
+      return this.updatePetWithHttpInfo(pet)
         .then(function(response_and_data) {
           return response_and_data.data;
         });
@@ -348,7 +342,6 @@ export default class PetApi {
 
     /**
      * Updates a pet in the store with form data
-     * 
      * @param {Number} petId ID of pet that needs to be updated
      * @param {Object} opts Optional parameters
      * @param {String} opts.name Updated name of the pet
@@ -379,7 +372,7 @@ export default class PetApi {
 
       let authNames = ['petstore_auth'];
       let contentTypes = ['application/x-www-form-urlencoded'];
-      let accepts = ['application/xml', 'application/json'];
+      let accepts = [];
       let returnType = null;
 
       return this.apiClient.callApi(
@@ -391,7 +384,6 @@ export default class PetApi {
 
     /**
      * Updates a pet in the store with form data
-     * 
      * @param {Number} petId ID of pet that needs to be updated
      * @param {Object} opts Optional parameters
      * @param {String} opts.name Updated name of the pet
@@ -408,7 +400,6 @@ export default class PetApi {
 
     /**
      * uploads an image
-     * 
      * @param {Number} petId ID of pet to update
      * @param {Object} opts Optional parameters
      * @param {String} opts.additionalMetadata Additional data to pass to server
@@ -451,7 +442,6 @@ export default class PetApi {
 
     /**
      * uploads an image
-     * 
      * @param {Number} petId ID of pet to update
      * @param {Object} opts Optional parameters
      * @param {String} opts.additionalMetadata Additional data to pass to server
diff --git a/samples/client/petstore/javascript-promise-es6/src/api/StoreApi.js b/samples/client/petstore/javascript-promise-es6/src/api/StoreApi.js
index 689d4ffb6388..583a5e44fc15 100644
--- a/samples/client/petstore/javascript-promise-es6/src/api/StoreApi.js
+++ b/samples/client/petstore/javascript-promise-es6/src/api/StoreApi.js
@@ -1,12 +1,12 @@
 /**
- * Swagger Petstore
+ * OpenAPI Petstore
  * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
  *
  * OpenAPI spec version: 1.0.0
- * Contact: apiteam@swagger.io
+ * 
  *
- * NOTE: This class is auto generated by the swagger code generator program.
- * https://github.com/swagger-api/swagger-codegen.git
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
  * Do not edit the class manually.
  *
  */
@@ -62,7 +62,7 @@ export default class StoreApi {
 
       let authNames = [];
       let contentTypes = [];
-      let accepts = ['application/xml', 'application/json'];
+      let accepts = [];
       let returnType = null;
 
       return this.apiClient.callApi(
@@ -89,7 +89,7 @@ export default class StoreApi {
     /**
      * Returns pet inventories by status
      * Returns a map of status codes to quantities
-     * @return {Promise} a {@link https://www.promisejs.org/|Promise}, with an object containing data of type {@link Object.} and HTTP response
+     * @return {Promise} a {@link https://www.promisejs.org/|Promise}, with an object containing data of type {@link Object.} and HTTP response
      */
     getInventoryWithHttpInfo() {
       let postBody = null;
@@ -119,7 +119,7 @@ export default class StoreApi {
     /**
      * Returns pet inventories by status
      * Returns a map of status codes to quantities
-     * @return {Promise} a {@link https://www.promisejs.org/|Promise}, with data of type {@link Object.}
+     * @return {Promise} a {@link https://www.promisejs.org/|Promise}, with data of type {@link Object.}
      */
     getInventory() {
       return this.getInventoryWithHttpInfo()
@@ -182,16 +182,15 @@ export default class StoreApi {
 
     /**
      * Place an order for a pet
-     * 
-     * @param {module:model/Order} body order placed for purchasing the pet
+     * @param {module:model/Order} order order placed for purchasing the pet
      * @return {Promise} a {@link https://www.promisejs.org/|Promise}, with an object containing data of type {@link module:model/Order} and HTTP response
      */
-    placeOrderWithHttpInfo(body) {
-      let postBody = body;
+    placeOrderWithHttpInfo(order) {
+      let postBody = order;
 
-      // verify the required parameter 'body' is set
-      if (body === undefined || body === null) {
-        throw new Error("Missing the required parameter 'body' when calling placeOrder");
+      // verify the required parameter 'order' is set
+      if (order === undefined || order === null) {
+        throw new Error("Missing the required parameter 'order' when calling placeOrder");
       }
 
 
@@ -218,12 +217,11 @@ export default class StoreApi {
 
     /**
      * Place an order for a pet
-     * 
-     * @param {module:model/Order} body order placed for purchasing the pet
+     * @param {module:model/Order} order order placed for purchasing the pet
      * @return {Promise} a {@link https://www.promisejs.org/|Promise}, with data of type {@link module:model/Order}
      */
-    placeOrder(body) {
-      return this.placeOrderWithHttpInfo(body)
+    placeOrder(order) {
+      return this.placeOrderWithHttpInfo(order)
         .then(function(response_and_data) {
           return response_and_data.data;
         });
diff --git a/samples/client/petstore/javascript-promise-es6/src/api/UserApi.js b/samples/client/petstore/javascript-promise-es6/src/api/UserApi.js
index c2c19d2f3115..c58384b97c3e 100644
--- a/samples/client/petstore/javascript-promise-es6/src/api/UserApi.js
+++ b/samples/client/petstore/javascript-promise-es6/src/api/UserApi.js
@@ -1,12 +1,12 @@
 /**
- * Swagger Petstore
+ * OpenAPI Petstore
  * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
  *
  * OpenAPI spec version: 1.0.0
- * Contact: apiteam@swagger.io
+ * 
  *
- * NOTE: This class is auto generated by the swagger code generator program.
- * https://github.com/swagger-api/swagger-codegen.git
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
  * Do not edit the class manually.
  *
  */
@@ -38,15 +38,15 @@ export default class UserApi {
     /**
      * Create user
      * This can only be done by the logged in user.
-     * @param {module:model/User} body Created user object
+     * @param {module:model/User} user Created user object
      * @return {Promise} a {@link https://www.promisejs.org/|Promise}, with an object containing HTTP response
      */
-    createUserWithHttpInfo(body) {
-      let postBody = body;
+    createUserWithHttpInfo(user) {
+      let postBody = user;
 
-      // verify the required parameter 'body' is set
-      if (body === undefined || body === null) {
-        throw new Error("Missing the required parameter 'body' when calling createUser");
+      // verify the required parameter 'user' is set
+      if (user === undefined || user === null) {
+        throw new Error("Missing the required parameter 'user' when calling createUser");
       }
 
 
@@ -61,7 +61,7 @@ export default class UserApi {
 
       let authNames = [];
       let contentTypes = [];
-      let accepts = ['application/xml', 'application/json'];
+      let accepts = [];
       let returnType = null;
 
       return this.apiClient.callApi(
@@ -74,11 +74,11 @@ export default class UserApi {
     /**
      * Create user
      * This can only be done by the logged in user.
-     * @param {module:model/User} body Created user object
+     * @param {module:model/User} user Created user object
      * @return {Promise} a {@link https://www.promisejs.org/|Promise}
      */
-    createUser(body) {
-      return this.createUserWithHttpInfo(body)
+    createUser(user) {
+      return this.createUserWithHttpInfo(user)
         .then(function(response_and_data) {
           return response_and_data.data;
         });
@@ -87,16 +87,15 @@ export default class UserApi {
 
     /**
      * Creates list of users with given input array
-     * 
-     * @param {Array.} body List of user object
+     * @param {Array.} user List of user object
      * @return {Promise} a {@link https://www.promisejs.org/|Promise}, with an object containing HTTP response
      */
-    createUsersWithArrayInputWithHttpInfo(body) {
-      let postBody = body;
+    createUsersWithArrayInputWithHttpInfo(user) {
+      let postBody = user;
 
-      // verify the required parameter 'body' is set
-      if (body === undefined || body === null) {
-        throw new Error("Missing the required parameter 'body' when calling createUsersWithArrayInput");
+      // verify the required parameter 'user' is set
+      if (user === undefined || user === null) {
+        throw new Error("Missing the required parameter 'user' when calling createUsersWithArrayInput");
       }
 
 
@@ -111,7 +110,7 @@ export default class UserApi {
 
       let authNames = [];
       let contentTypes = [];
-      let accepts = ['application/xml', 'application/json'];
+      let accepts = [];
       let returnType = null;
 
       return this.apiClient.callApi(
@@ -123,12 +122,11 @@ export default class UserApi {
 
     /**
      * Creates list of users with given input array
-     * 
-     * @param {Array.} body List of user object
+     * @param {Array.} user List of user object
      * @return {Promise} a {@link https://www.promisejs.org/|Promise}
      */
-    createUsersWithArrayInput(body) {
-      return this.createUsersWithArrayInputWithHttpInfo(body)
+    createUsersWithArrayInput(user) {
+      return this.createUsersWithArrayInputWithHttpInfo(user)
         .then(function(response_and_data) {
           return response_and_data.data;
         });
@@ -137,16 +135,15 @@ export default class UserApi {
 
     /**
      * Creates list of users with given input array
-     * 
-     * @param {Array.} body List of user object
+     * @param {Array.} user List of user object
      * @return {Promise} a {@link https://www.promisejs.org/|Promise}, with an object containing HTTP response
      */
-    createUsersWithListInputWithHttpInfo(body) {
-      let postBody = body;
+    createUsersWithListInputWithHttpInfo(user) {
+      let postBody = user;
 
-      // verify the required parameter 'body' is set
-      if (body === undefined || body === null) {
-        throw new Error("Missing the required parameter 'body' when calling createUsersWithListInput");
+      // verify the required parameter 'user' is set
+      if (user === undefined || user === null) {
+        throw new Error("Missing the required parameter 'user' when calling createUsersWithListInput");
       }
 
 
@@ -161,7 +158,7 @@ export default class UserApi {
 
       let authNames = [];
       let contentTypes = [];
-      let accepts = ['application/xml', 'application/json'];
+      let accepts = [];
       let returnType = null;
 
       return this.apiClient.callApi(
@@ -173,12 +170,11 @@ export default class UserApi {
 
     /**
      * Creates list of users with given input array
-     * 
-     * @param {Array.} body List of user object
+     * @param {Array.} user List of user object
      * @return {Promise} a {@link https://www.promisejs.org/|Promise}
      */
-    createUsersWithListInput(body) {
-      return this.createUsersWithListInputWithHttpInfo(body)
+    createUsersWithListInput(user) {
+      return this.createUsersWithListInputWithHttpInfo(user)
         .then(function(response_and_data) {
           return response_and_data.data;
         });
@@ -212,7 +208,7 @@ export default class UserApi {
 
       let authNames = [];
       let contentTypes = [];
-      let accepts = ['application/xml', 'application/json'];
+      let accepts = [];
       let returnType = null;
 
       return this.apiClient.callApi(
@@ -238,8 +234,7 @@ export default class UserApi {
 
     /**
      * Get user by user name
-     * 
-     * @param {String} username The name that needs to be fetched. Use user1 for testing. 
+     * @param {String} username The name that needs to be fetched. Use user1 for testing.
      * @return {Promise} a {@link https://www.promisejs.org/|Promise}, with an object containing data of type {@link module:model/User} and HTTP response
      */
     getUserByNameWithHttpInfo(username) {
@@ -275,8 +270,7 @@ export default class UserApi {
 
     /**
      * Get user by user name
-     * 
-     * @param {String} username The name that needs to be fetched. Use user1 for testing. 
+     * @param {String} username The name that needs to be fetched. Use user1 for testing.
      * @return {Promise} a {@link https://www.promisejs.org/|Promise}, with data of type {@link module:model/User}
      */
     getUserByName(username) {
@@ -289,10 +283,9 @@ export default class UserApi {
 
     /**
      * Logs user into the system
-     * 
      * @param {String} username The user name for login
      * @param {String} password The password for login in clear text
-     * @return {Promise} a {@link https://www.promisejs.org/|Promise}, with an object containing data of type {@link 'String'} and HTTP response
+     * @return {Promise} a {@link https://www.promisejs.org/|Promise}, with an object containing data of type {@link String} and HTTP response
      */
     loginUserWithHttpInfo(username, password) {
       let postBody = null;
@@ -333,10 +326,9 @@ export default class UserApi {
 
     /**
      * Logs user into the system
-     * 
      * @param {String} username The user name for login
      * @param {String} password The password for login in clear text
-     * @return {Promise} a {@link https://www.promisejs.org/|Promise}, with data of type {@link 'String'}
+     * @return {Promise} a {@link https://www.promisejs.org/|Promise}, with data of type {@link String}
      */
     loginUser(username, password) {
       return this.loginUserWithHttpInfo(username, password)
@@ -348,7 +340,6 @@ export default class UserApi {
 
     /**
      * Logs out current logged in user session
-     * 
      * @return {Promise} a {@link https://www.promisejs.org/|Promise}, with an object containing HTTP response
      */
     logoutUserWithHttpInfo() {
@@ -366,7 +357,7 @@ export default class UserApi {
 
       let authNames = [];
       let contentTypes = [];
-      let accepts = ['application/xml', 'application/json'];
+      let accepts = [];
       let returnType = null;
 
       return this.apiClient.callApi(
@@ -378,7 +369,6 @@ export default class UserApi {
 
     /**
      * Logs out current logged in user session
-     * 
      * @return {Promise} a {@link https://www.promisejs.org/|Promise}
      */
     logoutUser() {
@@ -393,20 +383,20 @@ export default class UserApi {
      * Updated user
      * This can only be done by the logged in user.
      * @param {String} username name that need to be deleted
-     * @param {module:model/User} body Updated user object
+     * @param {module:model/User} user Updated user object
      * @return {Promise} a {@link https://www.promisejs.org/|Promise}, with an object containing HTTP response
      */
-    updateUserWithHttpInfo(username, body) {
-      let postBody = body;
+    updateUserWithHttpInfo(username, user) {
+      let postBody = user;
 
       // verify the required parameter 'username' is set
       if (username === undefined || username === null) {
         throw new Error("Missing the required parameter 'username' when calling updateUser");
       }
 
-      // verify the required parameter 'body' is set
-      if (body === undefined || body === null) {
-        throw new Error("Missing the required parameter 'body' when calling updateUser");
+      // verify the required parameter 'user' is set
+      if (user === undefined || user === null) {
+        throw new Error("Missing the required parameter 'user' when calling updateUser");
       }
 
 
@@ -422,7 +412,7 @@ export default class UserApi {
 
       let authNames = [];
       let contentTypes = [];
-      let accepts = ['application/xml', 'application/json'];
+      let accepts = [];
       let returnType = null;
 
       return this.apiClient.callApi(
@@ -436,11 +426,11 @@ export default class UserApi {
      * Updated user
      * This can only be done by the logged in user.
      * @param {String} username name that need to be deleted
-     * @param {module:model/User} body Updated user object
+     * @param {module:model/User} user Updated user object
      * @return {Promise} a {@link https://www.promisejs.org/|Promise}
      */
-    updateUser(username, body) {
-      return this.updateUserWithHttpInfo(username, body)
+    updateUser(username, user) {
+      return this.updateUserWithHttpInfo(username, user)
         .then(function(response_and_data) {
           return response_and_data.data;
         });
diff --git a/samples/client/petstore/javascript-promise-es6/src/index.js b/samples/client/petstore/javascript-promise-es6/src/index.js
index ebcad866e7af..95bcba6b5d54 100644
--- a/samples/client/petstore/javascript-promise-es6/src/index.js
+++ b/samples/client/petstore/javascript-promise-es6/src/index.js
@@ -1,12 +1,12 @@
 /**
- * Swagger Petstore
+ * OpenAPI Petstore
  * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
  *
  * OpenAPI spec version: 1.0.0
- * Contact: apiteam@swagger.io
+ * 
  *
- * NOTE: This class is auto generated by the swagger code generator program.
- * https://github.com/swagger-api/swagger-codegen.git
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
  * Do not edit the class manually.
  *
  */
@@ -21,9 +21,11 @@ import ArrayOfArrayOfNumberOnly from './model/ArrayOfArrayOfNumberOnly';
 import ArrayOfNumberOnly from './model/ArrayOfNumberOnly';
 import ArrayTest from './model/ArrayTest';
 import Capitalization from './model/Capitalization';
+import Cat from './model/Cat';
 import Category from './model/Category';
 import ClassModel from './model/ClassModel';
 import Client from './model/Client';
+import Dog from './model/Dog';
 import EnumArrays from './model/EnumArrays';
 import EnumClass from './model/EnumClass';
 import EnumTest from './model/EnumTest';
@@ -37,18 +39,13 @@ import ModelReturn from './model/ModelReturn';
 import Name from './model/Name';
 import NumberOnly from './model/NumberOnly';
 import Order from './model/Order';
-import OuterBoolean from './model/OuterBoolean';
 import OuterComposite from './model/OuterComposite';
 import OuterEnum from './model/OuterEnum';
-import OuterNumber from './model/OuterNumber';
-import OuterString from './model/OuterString';
 import Pet from './model/Pet';
 import ReadOnlyFirst from './model/ReadOnlyFirst';
 import SpecialModelName from './model/SpecialModelName';
 import Tag from './model/Tag';
 import User from './model/User';
-import Cat from './model/Cat';
-import Dog from './model/Dog';
 import AnotherFakeApi from './api/AnotherFakeApi';
 import FakeApi from './api/FakeApi';
 import FakeClassnameTags123Api from './api/FakeClassnameTags123Api';
@@ -63,9 +60,9 @@ import UserApi from './api/UserApi';
 * 

* An AMD (recommended!) or CommonJS application will generally do something equivalent to the following: *

-* var SwaggerPetstore = require('index'); // See note below*.
-* var xxxSvc = new SwaggerPetstore.XxxApi(); // Allocate the API class we're going to use.
-* var yyyModel = new SwaggerPetstore.Yyy(); // Construct a model instance.
+* var OpenApiPetstore = require('index'); // See note below*.
+* var xxxSvc = new OpenApiPetstore.XxxApi(); // Allocate the API class we're going to use.
+* var yyyModel = new OpenApiPetstore.Yyy(); // Construct a model instance.
 * yyyModel.someProperty = 'someValue';
 * ...
 * var zzz = xxxSvc.doSomething(yyyModel); // Invoke the service.
@@ -77,8 +74,8 @@ import UserApi from './api/UserApi';
 * 

* A non-AMD browser application (discouraged) might do something like this: *

-* var xxxSvc = new SwaggerPetstore.XxxApi(); // Allocate the API class we're going to use.
-* var yyy = new SwaggerPetstore.Yyy(); // Construct a model instance.
+* var xxxSvc = new OpenApiPetstore.XxxApi(); // Allocate the API class we're going to use.
+* var yyy = new OpenApiPetstore.Yyy(); // Construct a model instance.
 * yyyModel.someProperty = 'someValue';
 * ...
 * var zzz = xxxSvc.doSomething(yyyModel); // Invoke the service.
@@ -143,6 +140,12 @@ export {
      */
     Capitalization,
 
+    /**
+     * The Cat model constructor.
+     * @property {module:model/Cat}
+     */
+    Cat,
+
     /**
      * The Category model constructor.
      * @property {module:model/Category}
@@ -161,6 +164,12 @@ export {
      */
     Client,
 
+    /**
+     * The Dog model constructor.
+     * @property {module:model/Dog}
+     */
+    Dog,
+
     /**
      * The EnumArrays model constructor.
      * @property {module:model/EnumArrays}
@@ -239,12 +248,6 @@ export {
      */
     Order,
 
-    /**
-     * The OuterBoolean model constructor.
-     * @property {module:model/OuterBoolean}
-     */
-    OuterBoolean,
-
     /**
      * The OuterComposite model constructor.
      * @property {module:model/OuterComposite}
@@ -257,18 +260,6 @@ export {
      */
     OuterEnum,
 
-    /**
-     * The OuterNumber model constructor.
-     * @property {module:model/OuterNumber}
-     */
-    OuterNumber,
-
-    /**
-     * The OuterString model constructor.
-     * @property {module:model/OuterString}
-     */
-    OuterString,
-
     /**
      * The Pet model constructor.
      * @property {module:model/Pet}
@@ -299,18 +290,6 @@ export {
      */
     User,
 
-    /**
-     * The Cat model constructor.
-     * @property {module:model/Cat}
-     */
-    Cat,
-
-    /**
-     * The Dog model constructor.
-     * @property {module:model/Dog}
-     */
-    Dog,
-
     /**
     * The AnotherFakeApi service constructor.
     * @property {module:api/AnotherFakeApi}
diff --git a/samples/client/petstore/javascript-promise-es6/src/model/AdditionalPropertiesClass.js b/samples/client/petstore/javascript-promise-es6/src/model/AdditionalPropertiesClass.js
index 088cbb29b35f..d6e898a5ab09 100644
--- a/samples/client/petstore/javascript-promise-es6/src/model/AdditionalPropertiesClass.js
+++ b/samples/client/petstore/javascript-promise-es6/src/model/AdditionalPropertiesClass.js
@@ -1,61 +1,52 @@
 /**
- * Swagger Petstore
+ * OpenAPI Petstore
  * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
  *
  * OpenAPI spec version: 1.0.0
- * Contact: apiteam@swagger.io
+ * 
  *
- * NOTE: This class is auto generated by the swagger code generator program.
- * https://github.com/swagger-api/swagger-codegen.git
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
  * Do not edit the class manually.
  *
  */
 
-
 import ApiClient from '../ApiClient';
 
-
-
-
-
 /**
-* The AdditionalPropertiesClass model module.
-* @module model/AdditionalPropertiesClass
-* @version 1.0.0
-*/
-export default class AdditionalPropertiesClass {
+ * The AdditionalPropertiesClass model module.
+ * @module model/AdditionalPropertiesClass
+ * @version 1.0.0
+ */
+class AdditionalPropertiesClass {
     /**
-    * Constructs a new AdditionalPropertiesClass.
-    * @alias module:model/AdditionalPropertiesClass
-    * @class
-    */
-
-    constructor() {
-        
-
-        
-        
-
+     * Constructs a new AdditionalPropertiesClass.
+     * @alias module:model/AdditionalPropertiesClass
+     */
+    constructor() { 
         
+        AdditionalPropertiesClass.initialize(this);
+    }
 
-        
+    /**
+     * Initializes the fields of this object.
+     * This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins).
+     * Only for internal use.
+     */
+    static initialize(obj) { 
     }
 
     /**
-    * Constructs a AdditionalPropertiesClass from a plain JavaScript object, optionally creating a new instance.
-    * Copies all relevant properties from data to obj if supplied or a new instance if not.
-    * @param {Object} data The plain JavaScript object bearing properties of interest.
-    * @param {module:model/AdditionalPropertiesClass} obj Optional instance to populate.
-    * @return {module:model/AdditionalPropertiesClass} The populated AdditionalPropertiesClass instance.
-    */
+     * Constructs a AdditionalPropertiesClass from a plain JavaScript object, optionally creating a new instance.
+     * Copies all relevant properties from data to obj if supplied or a new instance if not.
+     * @param {Object} data The plain JavaScript object bearing properties of interest.
+     * @param {module:model/AdditionalPropertiesClass} obj Optional instance to populate.
+     * @return {module:model/AdditionalPropertiesClass} The populated AdditionalPropertiesClass instance.
+     */
     static constructFromObject(data, obj) {
         if (data) {
             obj = obj || new AdditionalPropertiesClass();
 
-            
-            
-            
-
             if (data.hasOwnProperty('map_property')) {
                 obj['map_property'] = ApiClient.convertToType(data['map_property'], {'String': 'String'});
             }
@@ -66,22 +57,23 @@ export default class AdditionalPropertiesClass {
         return obj;
     }
 
-    /**
-    * @member {Object.} map_property
-    */
-    map_property = undefined;
-    /**
-    * @member {Object.>} map_of_map_property
-    */
-    map_of_map_property = undefined;
 
+}
 
+/**
+ * @member {Object.} map_property
+ */
+AdditionalPropertiesClass.prototype['map_property'] = undefined;
 
+/**
+ * @member {Object.>} map_of_map_property
+ */
+AdditionalPropertiesClass.prototype['map_of_map_property'] = undefined;
 
 
 
 
 
-}
 
+export default AdditionalPropertiesClass;
 
diff --git a/samples/client/petstore/javascript-promise-es6/src/model/Animal.js b/samples/client/petstore/javascript-promise-es6/src/model/Animal.js
index b3fb1a63f325..c55d0c758f00 100644
--- a/samples/client/petstore/javascript-promise-es6/src/model/Animal.js
+++ b/samples/client/petstore/javascript-promise-es6/src/model/Animal.js
@@ -1,62 +1,54 @@
 /**
- * Swagger Petstore
+ * OpenAPI Petstore
  * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
  *
  * OpenAPI spec version: 1.0.0
- * Contact: apiteam@swagger.io
+ * 
  *
- * NOTE: This class is auto generated by the swagger code generator program.
- * https://github.com/swagger-api/swagger-codegen.git
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
  * Do not edit the class manually.
  *
  */
 
-
 import ApiClient from '../ApiClient';
 
-
-
-
-
 /**
-* The Animal model module.
-* @module model/Animal
-* @version 1.0.0
-*/
-export default class Animal {
+ * The Animal model module.
+ * @module model/Animal
+ * @version 1.0.0
+ */
+class Animal {
     /**
-    * Constructs a new Animal.
-    * @alias module:model/Animal
-    * @class
-    * @param className {String} 
-    */
-
-    constructor(className) {
-        
-
+     * Constructs a new Animal.
+     * @alias module:model/Animal
+     * @param className {String} 
+     */
+    constructor(className) { 
         
-        
-
-        this['className'] = className;
+        Animal.initialize(this, className);
+    }
 
-        
+    /**
+     * Initializes the fields of this object.
+     * This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins).
+     * Only for internal use.
+     */
+    static initialize(obj, className) { 
+        obj['className'] = className;
     }
 
     /**
-    * Constructs a Animal from a plain JavaScript object, optionally creating a new instance.
-    * Copies all relevant properties from data to obj if supplied or a new instance if not.
-    * @param {Object} data The plain JavaScript object bearing properties of interest.
-    * @param {module:model/Animal} obj Optional instance to populate.
-    * @return {module:model/Animal} The populated Animal instance.
-    */
+     * Constructs a Animal from a plain JavaScript object, optionally creating a new instance.
+     * Copies all relevant properties from data to obj if supplied or a new instance if not.
+     * @param {Object} data The plain JavaScript object bearing properties of interest.
+     * @param {module:model/Animal} obj Optional instance to populate.
+     * @return {module:model/Animal} The populated Animal instance.
+     */
     static constructFromObject(data, obj) {
         if (data) {
             obj = obj || new Animal();
 
-            
-            
-            
-
             if (data.hasOwnProperty('className')) {
                 obj['className'] = ApiClient.convertToType(data['className'], 'String');
             }
@@ -67,23 +59,24 @@ export default class Animal {
         return obj;
     }
 
-    /**
-    * @member {String} className
-    */
-    className = undefined;
-    /**
-    * @member {String} color
-    * @default 'red'
-    */
-    color = 'red';
 
+}
 
+/**
+ * @member {String} className
+ */
+Animal.prototype['className'] = undefined;
 
+/**
+ * @member {String} color
+ * @default 'red'
+ */
+Animal.prototype['color'] = 'red';
 
 
 
 
 
-}
 
+export default Animal;
 
diff --git a/samples/client/petstore/javascript-promise-es6/src/model/AnimalFarm.js b/samples/client/petstore/javascript-promise-es6/src/model/AnimalFarm.js
index eb9a14b1b44f..3b9cc01f03da 100644
--- a/samples/client/petstore/javascript-promise-es6/src/model/AnimalFarm.js
+++ b/samples/client/petstore/javascript-promise-es6/src/model/AnimalFarm.js
@@ -1,64 +1,57 @@
 /**
- * Swagger Petstore
+ * OpenAPI Petstore
  * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
  *
  * OpenAPI spec version: 1.0.0
- * Contact: apiteam@swagger.io
+ * 
  *
- * NOTE: This class is auto generated by the swagger code generator program.
- * https://github.com/swagger-api/swagger-codegen.git
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
  * Do not edit the class manually.
  *
  */
 
-
 import ApiClient from '../ApiClient';
 import Animal from './Animal';
 
-
-
-
-
 /**
-* The AnimalFarm model module.
-* @module model/AnimalFarm
-* @version 1.0.0
-*/
-export default class AnimalFarm extends Array {
+ * The AnimalFarm model module.
+ * @module model/AnimalFarm
+ * @version 1.0.0
+ */
+class AnimalFarm extends Array {
     /**
-    * Constructs a new AnimalFarm.
-    * @alias module:model/AnimalFarm
-    * @class
-    * @extends Array
-    */
-
-    constructor() {
-        
+     * Constructs a new AnimalFarm.
+     * @alias module:model/AnimalFarm
+     * @extends Array
+     */
+    constructor() { 
         super();
         
-
-        
-        
-
         
+        AnimalFarm.initialize(this);
+    }
 
-        return this;
+    /**
+     * Initializes the fields of this object.
+     * This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins).
+     * Only for internal use.
+     */
+    static initialize(obj) { 
     }
 
     /**
-    * Constructs a AnimalFarm from a plain JavaScript object, optionally creating a new instance.
-    * Copies all relevant properties from data to obj if supplied or a new instance if not.
-    * @param {Object} data The plain JavaScript object bearing properties of interest.
-    * @param {module:model/AnimalFarm} obj Optional instance to populate.
-    * @return {module:model/AnimalFarm} The populated AnimalFarm instance.
-    */
+     * Constructs a AnimalFarm from a plain JavaScript object, optionally creating a new instance.
+     * Copies all relevant properties from data to obj if supplied or a new instance if not.
+     * @param {Object} data The plain JavaScript object bearing properties of interest.
+     * @param {module:model/AnimalFarm} obj Optional instance to populate.
+     * @return {module:model/AnimalFarm} The populated AnimalFarm instance.
+     */
     static constructFromObject(data, obj) {
         if (data) {
             obj = obj || new AnimalFarm();
 
             ApiClient.constructFromObject(data, obj, 'Animal');
-
-            
             
 
         }
@@ -66,13 +59,12 @@ export default class AnimalFarm extends Array {
     }
 
 
+}
 
 
 
 
 
 
-
-}
-
+export default AnimalFarm;
 
diff --git a/samples/client/petstore/javascript-promise-es6/src/model/ApiResponse.js b/samples/client/petstore/javascript-promise-es6/src/model/ApiResponse.js
index 49ddd1ac27f7..4f5fb55291c1 100644
--- a/samples/client/petstore/javascript-promise-es6/src/model/ApiResponse.js
+++ b/samples/client/petstore/javascript-promise-es6/src/model/ApiResponse.js
@@ -1,61 +1,52 @@
 /**
- * Swagger Petstore
+ * OpenAPI Petstore
  * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
  *
  * OpenAPI spec version: 1.0.0
- * Contact: apiteam@swagger.io
+ * 
  *
- * NOTE: This class is auto generated by the swagger code generator program.
- * https://github.com/swagger-api/swagger-codegen.git
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
  * Do not edit the class manually.
  *
  */
 
-
 import ApiClient from '../ApiClient';
 
-
-
-
-
 /**
-* The ApiResponse model module.
-* @module model/ApiResponse
-* @version 1.0.0
-*/
-export default class ApiResponse {
+ * The ApiResponse model module.
+ * @module model/ApiResponse
+ * @version 1.0.0
+ */
+class ApiResponse {
     /**
-    * Constructs a new ApiResponse.
-    * @alias module:model/ApiResponse
-    * @class
-    */
-
-    constructor() {
-        
-
-        
-        
-
+     * Constructs a new ApiResponse.
+     * @alias module:model/ApiResponse
+     */
+    constructor() { 
         
+        ApiResponse.initialize(this);
+    }
 
-        
+    /**
+     * Initializes the fields of this object.
+     * This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins).
+     * Only for internal use.
+     */
+    static initialize(obj) { 
     }
 
     /**
-    * Constructs a ApiResponse from a plain JavaScript object, optionally creating a new instance.
-    * Copies all relevant properties from data to obj if supplied or a new instance if not.
-    * @param {Object} data The plain JavaScript object bearing properties of interest.
-    * @param {module:model/ApiResponse} obj Optional instance to populate.
-    * @return {module:model/ApiResponse} The populated ApiResponse instance.
-    */
+     * Constructs a ApiResponse from a plain JavaScript object, optionally creating a new instance.
+     * Copies all relevant properties from data to obj if supplied or a new instance if not.
+     * @param {Object} data The plain JavaScript object bearing properties of interest.
+     * @param {module:model/ApiResponse} obj Optional instance to populate.
+     * @return {module:model/ApiResponse} The populated ApiResponse instance.
+     */
     static constructFromObject(data, obj) {
         if (data) {
             obj = obj || new ApiResponse();
 
-            
-            
-            
-
             if (data.hasOwnProperty('code')) {
                 obj['code'] = ApiClient.convertToType(data['code'], 'Number');
             }
@@ -69,26 +60,28 @@ export default class ApiResponse {
         return obj;
     }
 
-    /**
-    * @member {Number} code
-    */
-    code = undefined;
-    /**
-    * @member {String} type
-    */
-    type = undefined;
-    /**
-    * @member {String} message
-    */
-    message = undefined;
 
+}
+
+/**
+ * @member {Number} code
+ */
+ApiResponse.prototype['code'] = undefined;
 
+/**
+ * @member {String} type
+ */
+ApiResponse.prototype['type'] = undefined;
 
+/**
+ * @member {String} message
+ */
+ApiResponse.prototype['message'] = undefined;
 
 
 
 
 
-}
 
+export default ApiResponse;
 
diff --git a/samples/client/petstore/javascript-promise-es6/src/model/ArrayOfArrayOfNumberOnly.js b/samples/client/petstore/javascript-promise-es6/src/model/ArrayOfArrayOfNumberOnly.js
index 1dfd4487c62d..e8d959f36898 100644
--- a/samples/client/petstore/javascript-promise-es6/src/model/ArrayOfArrayOfNumberOnly.js
+++ b/samples/client/petstore/javascript-promise-es6/src/model/ArrayOfArrayOfNumberOnly.js
@@ -1,61 +1,52 @@
 /**
- * Swagger Petstore
+ * OpenAPI Petstore
  * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
  *
  * OpenAPI spec version: 1.0.0
- * Contact: apiteam@swagger.io
+ * 
  *
- * NOTE: This class is auto generated by the swagger code generator program.
- * https://github.com/swagger-api/swagger-codegen.git
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
  * Do not edit the class manually.
  *
  */
 
-
 import ApiClient from '../ApiClient';
 
-
-
-
-
 /**
-* The ArrayOfArrayOfNumberOnly model module.
-* @module model/ArrayOfArrayOfNumberOnly
-* @version 1.0.0
-*/
-export default class ArrayOfArrayOfNumberOnly {
+ * The ArrayOfArrayOfNumberOnly model module.
+ * @module model/ArrayOfArrayOfNumberOnly
+ * @version 1.0.0
+ */
+class ArrayOfArrayOfNumberOnly {
     /**
-    * Constructs a new ArrayOfArrayOfNumberOnly.
-    * @alias module:model/ArrayOfArrayOfNumberOnly
-    * @class
-    */
-
-    constructor() {
-        
-
-        
-        
-
+     * Constructs a new ArrayOfArrayOfNumberOnly.
+     * @alias module:model/ArrayOfArrayOfNumberOnly
+     */
+    constructor() { 
         
+        ArrayOfArrayOfNumberOnly.initialize(this);
+    }
 
-        
+    /**
+     * Initializes the fields of this object.
+     * This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins).
+     * Only for internal use.
+     */
+    static initialize(obj) { 
     }
 
     /**
-    * Constructs a ArrayOfArrayOfNumberOnly from a plain JavaScript object, optionally creating a new instance.
-    * Copies all relevant properties from data to obj if supplied or a new instance if not.
-    * @param {Object} data The plain JavaScript object bearing properties of interest.
-    * @param {module:model/ArrayOfArrayOfNumberOnly} obj Optional instance to populate.
-    * @return {module:model/ArrayOfArrayOfNumberOnly} The populated ArrayOfArrayOfNumberOnly instance.
-    */
+     * Constructs a ArrayOfArrayOfNumberOnly from a plain JavaScript object, optionally creating a new instance.
+     * Copies all relevant properties from data to obj if supplied or a new instance if not.
+     * @param {Object} data The plain JavaScript object bearing properties of interest.
+     * @param {module:model/ArrayOfArrayOfNumberOnly} obj Optional instance to populate.
+     * @return {module:model/ArrayOfArrayOfNumberOnly} The populated ArrayOfArrayOfNumberOnly instance.
+     */
     static constructFromObject(data, obj) {
         if (data) {
             obj = obj || new ArrayOfArrayOfNumberOnly();
 
-            
-            
-            
-
             if (data.hasOwnProperty('ArrayArrayNumber')) {
                 obj['ArrayArrayNumber'] = ApiClient.convertToType(data['ArrayArrayNumber'], [['Number']]);
             }
@@ -63,18 +54,18 @@ export default class ArrayOfArrayOfNumberOnly {
         return obj;
     }
 
-    /**
-    * @member {Array.>} ArrayArrayNumber
-    */
-    ArrayArrayNumber = undefined;
-
 
+}
 
+/**
+ * @member {Array.>} ArrayArrayNumber
+ */
+ArrayOfArrayOfNumberOnly.prototype['ArrayArrayNumber'] = undefined;
 
 
 
 
 
-}
 
+export default ArrayOfArrayOfNumberOnly;
 
diff --git a/samples/client/petstore/javascript-promise-es6/src/model/ArrayOfNumberOnly.js b/samples/client/petstore/javascript-promise-es6/src/model/ArrayOfNumberOnly.js
index 379a19ba3fff..4fb72e435e60 100644
--- a/samples/client/petstore/javascript-promise-es6/src/model/ArrayOfNumberOnly.js
+++ b/samples/client/petstore/javascript-promise-es6/src/model/ArrayOfNumberOnly.js
@@ -1,61 +1,52 @@
 /**
- * Swagger Petstore
+ * OpenAPI Petstore
  * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
  *
  * OpenAPI spec version: 1.0.0
- * Contact: apiteam@swagger.io
+ * 
  *
- * NOTE: This class is auto generated by the swagger code generator program.
- * https://github.com/swagger-api/swagger-codegen.git
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
  * Do not edit the class manually.
  *
  */
 
-
 import ApiClient from '../ApiClient';
 
-
-
-
-
 /**
-* The ArrayOfNumberOnly model module.
-* @module model/ArrayOfNumberOnly
-* @version 1.0.0
-*/
-export default class ArrayOfNumberOnly {
+ * The ArrayOfNumberOnly model module.
+ * @module model/ArrayOfNumberOnly
+ * @version 1.0.0
+ */
+class ArrayOfNumberOnly {
     /**
-    * Constructs a new ArrayOfNumberOnly.
-    * @alias module:model/ArrayOfNumberOnly
-    * @class
-    */
-
-    constructor() {
-        
-
-        
-        
-
+     * Constructs a new ArrayOfNumberOnly.
+     * @alias module:model/ArrayOfNumberOnly
+     */
+    constructor() { 
         
+        ArrayOfNumberOnly.initialize(this);
+    }
 
-        
+    /**
+     * Initializes the fields of this object.
+     * This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins).
+     * Only for internal use.
+     */
+    static initialize(obj) { 
     }
 
     /**
-    * Constructs a ArrayOfNumberOnly from a plain JavaScript object, optionally creating a new instance.
-    * Copies all relevant properties from data to obj if supplied or a new instance if not.
-    * @param {Object} data The plain JavaScript object bearing properties of interest.
-    * @param {module:model/ArrayOfNumberOnly} obj Optional instance to populate.
-    * @return {module:model/ArrayOfNumberOnly} The populated ArrayOfNumberOnly instance.
-    */
+     * Constructs a ArrayOfNumberOnly from a plain JavaScript object, optionally creating a new instance.
+     * Copies all relevant properties from data to obj if supplied or a new instance if not.
+     * @param {Object} data The plain JavaScript object bearing properties of interest.
+     * @param {module:model/ArrayOfNumberOnly} obj Optional instance to populate.
+     * @return {module:model/ArrayOfNumberOnly} The populated ArrayOfNumberOnly instance.
+     */
     static constructFromObject(data, obj) {
         if (data) {
             obj = obj || new ArrayOfNumberOnly();
 
-            
-            
-            
-
             if (data.hasOwnProperty('ArrayNumber')) {
                 obj['ArrayNumber'] = ApiClient.convertToType(data['ArrayNumber'], ['Number']);
             }
@@ -63,18 +54,18 @@ export default class ArrayOfNumberOnly {
         return obj;
     }
 
-    /**
-    * @member {Array.} ArrayNumber
-    */
-    ArrayNumber = undefined;
-
 
+}
 
+/**
+ * @member {Array.} ArrayNumber
+ */
+ArrayOfNumberOnly.prototype['ArrayNumber'] = undefined;
 
 
 
 
 
-}
 
+export default ArrayOfNumberOnly;
 
diff --git a/samples/client/petstore/javascript-promise-es6/src/model/ArrayTest.js b/samples/client/petstore/javascript-promise-es6/src/model/ArrayTest.js
index 58e9ac58840f..8096c2c4f7f7 100644
--- a/samples/client/petstore/javascript-promise-es6/src/model/ArrayTest.js
+++ b/samples/client/petstore/javascript-promise-es6/src/model/ArrayTest.js
@@ -1,62 +1,53 @@
 /**
- * Swagger Petstore
+ * OpenAPI Petstore
  * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
  *
  * OpenAPI spec version: 1.0.0
- * Contact: apiteam@swagger.io
+ * 
  *
- * NOTE: This class is auto generated by the swagger code generator program.
- * https://github.com/swagger-api/swagger-codegen.git
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
  * Do not edit the class manually.
  *
  */
 
-
 import ApiClient from '../ApiClient';
 import ReadOnlyFirst from './ReadOnlyFirst';
 
-
-
-
-
 /**
-* The ArrayTest model module.
-* @module model/ArrayTest
-* @version 1.0.0
-*/
-export default class ArrayTest {
+ * The ArrayTest model module.
+ * @module model/ArrayTest
+ * @version 1.0.0
+ */
+class ArrayTest {
     /**
-    * Constructs a new ArrayTest.
-    * @alias module:model/ArrayTest
-    * @class
-    */
-
-    constructor() {
-        
-
-        
-        
-
+     * Constructs a new ArrayTest.
+     * @alias module:model/ArrayTest
+     */
+    constructor() { 
         
+        ArrayTest.initialize(this);
+    }
 
-        
+    /**
+     * Initializes the fields of this object.
+     * This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins).
+     * Only for internal use.
+     */
+    static initialize(obj) { 
     }
 
     /**
-    * Constructs a ArrayTest from a plain JavaScript object, optionally creating a new instance.
-    * Copies all relevant properties from data to obj if supplied or a new instance if not.
-    * @param {Object} data The plain JavaScript object bearing properties of interest.
-    * @param {module:model/ArrayTest} obj Optional instance to populate.
-    * @return {module:model/ArrayTest} The populated ArrayTest instance.
-    */
+     * Constructs a ArrayTest from a plain JavaScript object, optionally creating a new instance.
+     * Copies all relevant properties from data to obj if supplied or a new instance if not.
+     * @param {Object} data The plain JavaScript object bearing properties of interest.
+     * @param {module:model/ArrayTest} obj Optional instance to populate.
+     * @return {module:model/ArrayTest} The populated ArrayTest instance.
+     */
     static constructFromObject(data, obj) {
         if (data) {
             obj = obj || new ArrayTest();
 
-            
-            
-            
-
             if (data.hasOwnProperty('array_of_string')) {
                 obj['array_of_string'] = ApiClient.convertToType(data['array_of_string'], ['String']);
             }
@@ -70,26 +61,28 @@ export default class ArrayTest {
         return obj;
     }
 
-    /**
-    * @member {Array.} array_of_string
-    */
-    array_of_string = undefined;
-    /**
-    * @member {Array.>} array_array_of_integer
-    */
-    array_array_of_integer = undefined;
-    /**
-    * @member {Array.>} array_array_of_model
-    */
-    array_array_of_model = undefined;
 
+}
+
+/**
+ * @member {Array.} array_of_string
+ */
+ArrayTest.prototype['array_of_string'] = undefined;
 
+/**
+ * @member {Array.>} array_array_of_integer
+ */
+ArrayTest.prototype['array_array_of_integer'] = undefined;
 
+/**
+ * @member {Array.>} array_array_of_model
+ */
+ArrayTest.prototype['array_array_of_model'] = undefined;
 
 
 
 
 
-}
 
+export default ArrayTest;
 
diff --git a/samples/client/petstore/javascript-promise-es6/src/model/Capitalization.js b/samples/client/petstore/javascript-promise-es6/src/model/Capitalization.js
index 12f3f3f55936..bc1cdefb71bc 100644
--- a/samples/client/petstore/javascript-promise-es6/src/model/Capitalization.js
+++ b/samples/client/petstore/javascript-promise-es6/src/model/Capitalization.js
@@ -1,61 +1,52 @@
 /**
- * Swagger Petstore
+ * OpenAPI Petstore
  * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
  *
  * OpenAPI spec version: 1.0.0
- * Contact: apiteam@swagger.io
+ * 
  *
- * NOTE: This class is auto generated by the swagger code generator program.
- * https://github.com/swagger-api/swagger-codegen.git
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
  * Do not edit the class manually.
  *
  */
 
-
 import ApiClient from '../ApiClient';
 
-
-
-
-
 /**
-* The Capitalization model module.
-* @module model/Capitalization
-* @version 1.0.0
-*/
-export default class Capitalization {
+ * The Capitalization model module.
+ * @module model/Capitalization
+ * @version 1.0.0
+ */
+class Capitalization {
     /**
-    * Constructs a new Capitalization.
-    * @alias module:model/Capitalization
-    * @class
-    */
-
-    constructor() {
-        
-
-        
-        
-
+     * Constructs a new Capitalization.
+     * @alias module:model/Capitalization
+     */
+    constructor() { 
         
+        Capitalization.initialize(this);
+    }
 
-        
+    /**
+     * Initializes the fields of this object.
+     * This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins).
+     * Only for internal use.
+     */
+    static initialize(obj) { 
     }
 
     /**
-    * Constructs a Capitalization from a plain JavaScript object, optionally creating a new instance.
-    * Copies all relevant properties from data to obj if supplied or a new instance if not.
-    * @param {Object} data The plain JavaScript object bearing properties of interest.
-    * @param {module:model/Capitalization} obj Optional instance to populate.
-    * @return {module:model/Capitalization} The populated Capitalization instance.
-    */
+     * Constructs a Capitalization from a plain JavaScript object, optionally creating a new instance.
+     * Copies all relevant properties from data to obj if supplied or a new instance if not.
+     * @param {Object} data The plain JavaScript object bearing properties of interest.
+     * @param {module:model/Capitalization} obj Optional instance to populate.
+     * @return {module:model/Capitalization} The populated Capitalization instance.
+     */
     static constructFromObject(data, obj) {
         if (data) {
             obj = obj || new Capitalization();
 
-            
-            
-            
-
             if (data.hasOwnProperty('smallCamel')) {
                 obj['smallCamel'] = ApiClient.convertToType(data['smallCamel'], 'String');
             }
@@ -78,39 +69,44 @@ export default class Capitalization {
         return obj;
     }
 
-    /**
-    * @member {String} smallCamel
-    */
-    smallCamel = undefined;
-    /**
-    * @member {String} CapitalCamel
-    */
-    CapitalCamel = undefined;
-    /**
-    * @member {String} small_Snake
-    */
-    small_Snake = undefined;
-    /**
-    * @member {String} Capital_Snake
-    */
-    Capital_Snake = undefined;
-    /**
-    * @member {String} SCA_ETH_Flow_Points
-    */
-    SCA_ETH_Flow_Points = undefined;
-    /**
-    * Name of the pet 
-    * @member {String} ATT_NAME
-    */
-    ATT_NAME = undefined;
 
+}
+
+/**
+ * @member {String} smallCamel
+ */
+Capitalization.prototype['smallCamel'] = undefined;
+
+/**
+ * @member {String} CapitalCamel
+ */
+Capitalization.prototype['CapitalCamel'] = undefined;
+
+/**
+ * @member {String} small_Snake
+ */
+Capitalization.prototype['small_Snake'] = undefined;
+
+/**
+ * @member {String} Capital_Snake
+ */
+Capitalization.prototype['Capital_Snake'] = undefined;
 
+/**
+ * @member {String} SCA_ETH_Flow_Points
+ */
+Capitalization.prototype['SCA_ETH_Flow_Points'] = undefined;
 
+/**
+ * Name of the pet 
+ * @member {String} ATT_NAME
+ */
+Capitalization.prototype['ATT_NAME'] = undefined;
 
 
 
 
 
-}
 
+export default Capitalization;
 
diff --git a/samples/client/petstore/javascript-promise-es6/src/model/Cat.js b/samples/client/petstore/javascript-promise-es6/src/model/Cat.js
index da946664d082..5ad5fb402860 100644
--- a/samples/client/petstore/javascript-promise-es6/src/model/Cat.js
+++ b/samples/client/petstore/javascript-promise-es6/src/model/Cat.js
@@ -1,64 +1,57 @@
 /**
- * Swagger Petstore
+ * OpenAPI Petstore
  * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
  *
  * OpenAPI spec version: 1.0.0
- * Contact: apiteam@swagger.io
+ * 
  *
- * NOTE: This class is auto generated by the swagger code generator program.
- * https://github.com/swagger-api/swagger-codegen.git
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
  * Do not edit the class manually.
  *
  */
 
-
 import ApiClient from '../ApiClient';
 import Animal from './Animal';
 
-
-
-
-
 /**
-* The Cat model module.
-* @module model/Cat
-* @version 1.0.0
-*/
-export default class Cat {
+ * The Cat model module.
+ * @module model/Cat
+ * @version 1.0.0
+ */
+class Cat {
     /**
-    * Constructs a new Cat.
-    * @alias module:model/Cat
-    * @class
-    * @extends module:model/Animal
-    * @param className {String} 
-    */
-
-    constructor(className) {
-        
-
-        Animal.call(this, className);
-        
-
-        
+     * Constructs a new Cat.
+     * @alias module:model/Cat
+     * @extends module:model/Animal
+     * @implements module:model/Animal
+     * @param className {} 
+     */
+    constructor(className) { 
+        Animal.initialize(this, className);
+        Cat.initialize(this, className);
+    }
 
-        
+    /**
+     * Initializes the fields of this object.
+     * This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins).
+     * Only for internal use.
+     */
+    static initialize(obj, className) { 
     }
 
     /**
-    * Constructs a Cat from a plain JavaScript object, optionally creating a new instance.
-    * Copies all relevant properties from data to obj if supplied or a new instance if not.
-    * @param {Object} data The plain JavaScript object bearing properties of interest.
-    * @param {module:model/Cat} obj Optional instance to populate.
-    * @return {module:model/Cat} The populated Cat instance.
-    */
+     * Constructs a Cat from a plain JavaScript object, optionally creating a new instance.
+     * Copies all relevant properties from data to obj if supplied or a new instance if not.
+     * @param {Object} data The plain JavaScript object bearing properties of interest.
+     * @param {module:model/Cat} obj Optional instance to populate.
+     * @return {module:model/Cat} The populated Cat instance.
+     */
     static constructFromObject(data, obj) {
         if (data) {
             obj = obj || new Cat();
-
-            
-
             Animal.constructFromObject(data, obj);
-            
+            Animal.constructFromObject(data, obj);
 
             if (data.hasOwnProperty('declawed')) {
                 obj['declawed'] = ApiClient.convertToType(data['declawed'], 'Boolean');
@@ -67,18 +60,28 @@ export default class Cat {
         return obj;
     }
 
-    /**
-    * @member {Boolean} declawed
-    */
-    declawed = undefined;
-
 
+}
 
+/**
+ * @member {Boolean} declawed
+ */
+Cat.prototype['declawed'] = undefined;
 
 
+// Implement Animal interface:
+/**
+ * @member {String} className
+ */
+Animal.prototype['className'] = undefined;
+/**
+ * @member {String} color
+ * @default 'red'
+ */
+Animal.prototype['color'] = 'red';
 
 
 
-}
 
+export default Cat;
 
diff --git a/samples/client/petstore/javascript-promise-es6/src/model/Category.js b/samples/client/petstore/javascript-promise-es6/src/model/Category.js
index a281817b72ff..fd0bf79dafb3 100644
--- a/samples/client/petstore/javascript-promise-es6/src/model/Category.js
+++ b/samples/client/petstore/javascript-promise-es6/src/model/Category.js
@@ -1,61 +1,52 @@
 /**
- * Swagger Petstore
+ * OpenAPI Petstore
  * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
  *
  * OpenAPI spec version: 1.0.0
- * Contact: apiteam@swagger.io
+ * 
  *
- * NOTE: This class is auto generated by the swagger code generator program.
- * https://github.com/swagger-api/swagger-codegen.git
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
  * Do not edit the class manually.
  *
  */
 
-
 import ApiClient from '../ApiClient';
 
-
-
-
-
 /**
-* The Category model module.
-* @module model/Category
-* @version 1.0.0
-*/
-export default class Category {
+ * The Category model module.
+ * @module model/Category
+ * @version 1.0.0
+ */
+class Category {
     /**
-    * Constructs a new Category.
-    * @alias module:model/Category
-    * @class
-    */
-
-    constructor() {
-        
-
-        
-        
-
+     * Constructs a new Category.
+     * @alias module:model/Category
+     */
+    constructor() { 
         
+        Category.initialize(this);
+    }
 
-        
+    /**
+     * Initializes the fields of this object.
+     * This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins).
+     * Only for internal use.
+     */
+    static initialize(obj) { 
     }
 
     /**
-    * Constructs a Category from a plain JavaScript object, optionally creating a new instance.
-    * Copies all relevant properties from data to obj if supplied or a new instance if not.
-    * @param {Object} data The plain JavaScript object bearing properties of interest.
-    * @param {module:model/Category} obj Optional instance to populate.
-    * @return {module:model/Category} The populated Category instance.
-    */
+     * Constructs a Category from a plain JavaScript object, optionally creating a new instance.
+     * Copies all relevant properties from data to obj if supplied or a new instance if not.
+     * @param {Object} data The plain JavaScript object bearing properties of interest.
+     * @param {module:model/Category} obj Optional instance to populate.
+     * @return {module:model/Category} The populated Category instance.
+     */
     static constructFromObject(data, obj) {
         if (data) {
             obj = obj || new Category();
 
-            
-            
-            
-
             if (data.hasOwnProperty('id')) {
                 obj['id'] = ApiClient.convertToType(data['id'], 'Number');
             }
@@ -66,22 +57,23 @@ export default class Category {
         return obj;
     }
 
-    /**
-    * @member {Number} id
-    */
-    id = undefined;
-    /**
-    * @member {String} name
-    */
-    name = undefined;
 
+}
 
+/**
+ * @member {Number} id
+ */
+Category.prototype['id'] = undefined;
 
+/**
+ * @member {String} name
+ */
+Category.prototype['name'] = undefined;
 
 
 
 
 
-}
 
+export default Category;
 
diff --git a/samples/client/petstore/javascript-promise-es6/src/model/ClassModel.js b/samples/client/petstore/javascript-promise-es6/src/model/ClassModel.js
index 6a558444adeb..2e55c2a6342e 100644
--- a/samples/client/petstore/javascript-promise-es6/src/model/ClassModel.js
+++ b/samples/client/petstore/javascript-promise-es6/src/model/ClassModel.js
@@ -1,62 +1,53 @@
 /**
- * Swagger Petstore
+ * OpenAPI Petstore
  * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
  *
  * OpenAPI spec version: 1.0.0
- * Contact: apiteam@swagger.io
+ * 
  *
- * NOTE: This class is auto generated by the swagger code generator program.
- * https://github.com/swagger-api/swagger-codegen.git
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
  * Do not edit the class manually.
  *
  */
 
-
 import ApiClient from '../ApiClient';
 
-
-
-
-
 /**
-* The ClassModel model module.
-* @module model/ClassModel
-* @version 1.0.0
-*/
-export default class ClassModel {
+ * The ClassModel model module.
+ * @module model/ClassModel
+ * @version 1.0.0
+ */
+class ClassModel {
     /**
-    * Constructs a new ClassModel.
-    * Model for testing model with \"_class\" property
-    * @alias module:model/ClassModel
-    * @class
-    */
-
-    constructor() {
-        
-
-        
-        
-
+     * Constructs a new ClassModel.
+     * Model for testing model with \"_class\" property
+     * @alias module:model/ClassModel
+     */
+    constructor() { 
         
+        ClassModel.initialize(this);
+    }
 
-        
+    /**
+     * Initializes the fields of this object.
+     * This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins).
+     * Only for internal use.
+     */
+    static initialize(obj) { 
     }
 
     /**
-    * Constructs a ClassModel from a plain JavaScript object, optionally creating a new instance.
-    * Copies all relevant properties from data to obj if supplied or a new instance if not.
-    * @param {Object} data The plain JavaScript object bearing properties of interest.
-    * @param {module:model/ClassModel} obj Optional instance to populate.
-    * @return {module:model/ClassModel} The populated ClassModel instance.
-    */
+     * Constructs a ClassModel from a plain JavaScript object, optionally creating a new instance.
+     * Copies all relevant properties from data to obj if supplied or a new instance if not.
+     * @param {Object} data The plain JavaScript object bearing properties of interest.
+     * @param {module:model/ClassModel} obj Optional instance to populate.
+     * @return {module:model/ClassModel} The populated ClassModel instance.
+     */
     static constructFromObject(data, obj) {
         if (data) {
             obj = obj || new ClassModel();
 
-            
-            
-            
-
             if (data.hasOwnProperty('_class')) {
                 obj['_class'] = ApiClient.convertToType(data['_class'], 'String');
             }
@@ -64,18 +55,18 @@ export default class ClassModel {
         return obj;
     }
 
-    /**
-    * @member {String} _class
-    */
-    _class = undefined;
-
 
+}
 
+/**
+ * @member {String} _class
+ */
+ClassModel.prototype['_class'] = undefined;
 
 
 
 
 
-}
 
+export default ClassModel;
 
diff --git a/samples/client/petstore/javascript-promise-es6/src/model/Client.js b/samples/client/petstore/javascript-promise-es6/src/model/Client.js
index a4f9b235154c..c506d2fa174d 100644
--- a/samples/client/petstore/javascript-promise-es6/src/model/Client.js
+++ b/samples/client/petstore/javascript-promise-es6/src/model/Client.js
@@ -1,61 +1,52 @@
 /**
- * Swagger Petstore
+ * OpenAPI Petstore
  * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
  *
  * OpenAPI spec version: 1.0.0
- * Contact: apiteam@swagger.io
+ * 
  *
- * NOTE: This class is auto generated by the swagger code generator program.
- * https://github.com/swagger-api/swagger-codegen.git
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
  * Do not edit the class manually.
  *
  */
 
-
 import ApiClient from '../ApiClient';
 
-
-
-
-
 /**
-* The Client model module.
-* @module model/Client
-* @version 1.0.0
-*/
-export default class Client {
+ * The Client model module.
+ * @module model/Client
+ * @version 1.0.0
+ */
+class Client {
     /**
-    * Constructs a new Client.
-    * @alias module:model/Client
-    * @class
-    */
-
-    constructor() {
-        
-
-        
-        
-
+     * Constructs a new Client.
+     * @alias module:model/Client
+     */
+    constructor() { 
         
+        Client.initialize(this);
+    }
 
-        
+    /**
+     * Initializes the fields of this object.
+     * This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins).
+     * Only for internal use.
+     */
+    static initialize(obj) { 
     }
 
     /**
-    * Constructs a Client from a plain JavaScript object, optionally creating a new instance.
-    * Copies all relevant properties from data to obj if supplied or a new instance if not.
-    * @param {Object} data The plain JavaScript object bearing properties of interest.
-    * @param {module:model/Client} obj Optional instance to populate.
-    * @return {module:model/Client} The populated Client instance.
-    */
+     * Constructs a Client from a plain JavaScript object, optionally creating a new instance.
+     * Copies all relevant properties from data to obj if supplied or a new instance if not.
+     * @param {Object} data The plain JavaScript object bearing properties of interest.
+     * @param {module:model/Client} obj Optional instance to populate.
+     * @return {module:model/Client} The populated Client instance.
+     */
     static constructFromObject(data, obj) {
         if (data) {
             obj = obj || new Client();
 
-            
-            
-            
-
             if (data.hasOwnProperty('client')) {
                 obj['client'] = ApiClient.convertToType(data['client'], 'String');
             }
@@ -63,18 +54,18 @@ export default class Client {
         return obj;
     }
 
-    /**
-    * @member {String} client
-    */
-    client = undefined;
-
 
+}
 
+/**
+ * @member {String} client
+ */
+Client.prototype['client'] = undefined;
 
 
 
 
 
-}
 
+export default Client;
 
diff --git a/samples/client/petstore/javascript-promise-es6/src/model/Dog.js b/samples/client/petstore/javascript-promise-es6/src/model/Dog.js
index e5bc0d3cecf1..ba225630e93c 100644
--- a/samples/client/petstore/javascript-promise-es6/src/model/Dog.js
+++ b/samples/client/petstore/javascript-promise-es6/src/model/Dog.js
@@ -1,64 +1,57 @@
 /**
- * Swagger Petstore
+ * OpenAPI Petstore
  * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
  *
  * OpenAPI spec version: 1.0.0
- * Contact: apiteam@swagger.io
+ * 
  *
- * NOTE: This class is auto generated by the swagger code generator program.
- * https://github.com/swagger-api/swagger-codegen.git
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
  * Do not edit the class manually.
  *
  */
 
-
 import ApiClient from '../ApiClient';
 import Animal from './Animal';
 
-
-
-
-
 /**
-* The Dog model module.
-* @module model/Dog
-* @version 1.0.0
-*/
-export default class Dog {
+ * The Dog model module.
+ * @module model/Dog
+ * @version 1.0.0
+ */
+class Dog {
     /**
-    * Constructs a new Dog.
-    * @alias module:model/Dog
-    * @class
-    * @extends module:model/Animal
-    * @param className {String} 
-    */
-
-    constructor(className) {
-        
-
-        Animal.call(this, className);
-        
-
-        
+     * Constructs a new Dog.
+     * @alias module:model/Dog
+     * @extends module:model/Animal
+     * @implements module:model/Animal
+     * @param className {} 
+     */
+    constructor(className) { 
+        Animal.initialize(this, className);
+        Dog.initialize(this, className);
+    }
 
-        
+    /**
+     * Initializes the fields of this object.
+     * This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins).
+     * Only for internal use.
+     */
+    static initialize(obj, className) { 
     }
 
     /**
-    * Constructs a Dog from a plain JavaScript object, optionally creating a new instance.
-    * Copies all relevant properties from data to obj if supplied or a new instance if not.
-    * @param {Object} data The plain JavaScript object bearing properties of interest.
-    * @param {module:model/Dog} obj Optional instance to populate.
-    * @return {module:model/Dog} The populated Dog instance.
-    */
+     * Constructs a Dog from a plain JavaScript object, optionally creating a new instance.
+     * Copies all relevant properties from data to obj if supplied or a new instance if not.
+     * @param {Object} data The plain JavaScript object bearing properties of interest.
+     * @param {module:model/Dog} obj Optional instance to populate.
+     * @return {module:model/Dog} The populated Dog instance.
+     */
     static constructFromObject(data, obj) {
         if (data) {
             obj = obj || new Dog();
-
-            
-
             Animal.constructFromObject(data, obj);
-            
+            Animal.constructFromObject(data, obj);
 
             if (data.hasOwnProperty('breed')) {
                 obj['breed'] = ApiClient.convertToType(data['breed'], 'String');
@@ -67,18 +60,28 @@ export default class Dog {
         return obj;
     }
 
-    /**
-    * @member {String} breed
-    */
-    breed = undefined;
-
 
+}
 
+/**
+ * @member {String} breed
+ */
+Dog.prototype['breed'] = undefined;
 
 
+// Implement Animal interface:
+/**
+ * @member {String} className
+ */
+Animal.prototype['className'] = undefined;
+/**
+ * @member {String} color
+ * @default 'red'
+ */
+Animal.prototype['color'] = 'red';
 
 
 
-}
 
+export default Dog;
 
diff --git a/samples/client/petstore/javascript-promise-es6/src/model/EnumArrays.js b/samples/client/petstore/javascript-promise-es6/src/model/EnumArrays.js
index 20a74f0d8839..9426d4735ac1 100644
--- a/samples/client/petstore/javascript-promise-es6/src/model/EnumArrays.js
+++ b/samples/client/petstore/javascript-promise-es6/src/model/EnumArrays.js
@@ -1,61 +1,52 @@
 /**
- * Swagger Petstore
+ * OpenAPI Petstore
  * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
  *
  * OpenAPI spec version: 1.0.0
- * Contact: apiteam@swagger.io
+ * 
  *
- * NOTE: This class is auto generated by the swagger code generator program.
- * https://github.com/swagger-api/swagger-codegen.git
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
  * Do not edit the class manually.
  *
  */
 
-
 import ApiClient from '../ApiClient';
 
-
-
-
-
 /**
-* The EnumArrays model module.
-* @module model/EnumArrays
-* @version 1.0.0
-*/
-export default class EnumArrays {
+ * The EnumArrays model module.
+ * @module model/EnumArrays
+ * @version 1.0.0
+ */
+class EnumArrays {
     /**
-    * Constructs a new EnumArrays.
-    * @alias module:model/EnumArrays
-    * @class
-    */
-
-    constructor() {
-        
-
-        
-        
-
+     * Constructs a new EnumArrays.
+     * @alias module:model/EnumArrays
+     */
+    constructor() { 
         
+        EnumArrays.initialize(this);
+    }
 
-        
+    /**
+     * Initializes the fields of this object.
+     * This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins).
+     * Only for internal use.
+     */
+    static initialize(obj) { 
     }
 
     /**
-    * Constructs a EnumArrays from a plain JavaScript object, optionally creating a new instance.
-    * Copies all relevant properties from data to obj if supplied or a new instance if not.
-    * @param {Object} data The plain JavaScript object bearing properties of interest.
-    * @param {module:model/EnumArrays} obj Optional instance to populate.
-    * @return {module:model/EnumArrays} The populated EnumArrays instance.
-    */
+     * Constructs a EnumArrays from a plain JavaScript object, optionally creating a new instance.
+     * Copies all relevant properties from data to obj if supplied or a new instance if not.
+     * @param {Object} data The plain JavaScript object bearing properties of interest.
+     * @param {module:model/EnumArrays} obj Optional instance to populate.
+     * @return {module:model/EnumArrays} The populated EnumArrays instance.
+     */
     static constructFromObject(data, obj) {
         if (data) {
             obj = obj || new EnumArrays();
 
-            
-            
-            
-
             if (data.hasOwnProperty('just_symbol')) {
                 obj['just_symbol'] = ApiClient.convertToType(data['just_symbol'], 'String');
             }
@@ -66,62 +57,65 @@ export default class EnumArrays {
         return obj;
     }
 
-    /**
-    * @member {module:model/EnumArrays.JustSymbolEnum} just_symbol
-    */
-    just_symbol = undefined;
-    /**
-    * @member {Array.} array_enum
-    */
-    array_enum = undefined;
+
+}
+
+/**
+ * @member {module:model/EnumArrays.JustSymbolEnum} just_symbol
+ */
+EnumArrays.prototype['just_symbol'] = undefined;
+
+/**
+ * @member {Array.} array_enum
+ */
+EnumArrays.prototype['array_enum'] = undefined;
+
 
 
 
 
+/**
+ * Allowed values for the just_symbol property.
+ * @enum {String}
+ * @readonly
+ */
+EnumArrays['JustSymbolEnum'] = {
 
+    /**
+     * value: ">="
+     * @const
+     */
+    "GREATER_THAN_OR_EQUAL_TO": ">=",
 
     /**
-    * Allowed values for the just_symbol property.
-    * @enum {String}
-    * @readonly
-    */
-    static JustSymbolEnum = {
-    
-        /**
-         * value: ">="
-         * @const
-         */
-        "GREATER_THAN_OR_EQUAL_TO": ">=",
-    
-        /**
-         * value: "$"
-         * @const
-         */
-        "DOLLAR": "$"    
-    };
+     * value: "$"
+     * @const
+     */
+    "DOLLAR": "$"
+};
+
+
+/**
+ * Allowed values for the arrayEnum property.
+ * @enum {String}
+ * @readonly
+ */
+EnumArrays['ArrayEnumEnum'] = {
 
     /**
-    * Allowed values for the arrayEnum property.
-    * @enum {String}
-    * @readonly
-    */
-    static ArrayEnumEnum = {
-    
-        /**
-         * value: "fish"
-         * @const
-         */
-        "fish": "fish",
-    
-        /**
-         * value: "crab"
-         * @const
-         */
-        "crab": "crab"    
-    };
+     * value: "fish"
+     * @const
+     */
+    "fish": "fish",
 
+    /**
+     * value: "crab"
+     * @const
+     */
+    "crab": "crab"
+};
 
 
-}
 
+export default EnumArrays;
 
diff --git a/samples/client/petstore/javascript-promise-es6/src/model/EnumClass.js b/samples/client/petstore/javascript-promise-es6/src/model/EnumClass.js
index eeb08ca2864b..65ac9f1f1bc3 100644
--- a/samples/client/petstore/javascript-promise-es6/src/model/EnumClass.js
+++ b/samples/client/petstore/javascript-promise-es6/src/model/EnumClass.js
@@ -1,20 +1,17 @@
 /**
- * Swagger Petstore
+ * OpenAPI Petstore
  * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
  *
  * OpenAPI spec version: 1.0.0
- * Contact: apiteam@swagger.io
+ * 
  *
- * NOTE: This class is auto generated by the swagger code generator program.
- * https://github.com/swagger-api/swagger-codegen.git
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
  * Do not edit the class manually.
  *
  */
 
-
 import ApiClient from '../ApiClient';
-
-
 /**
 * Enum class EnumClass.
 * @enum {}
@@ -26,21 +23,21 @@ export default class EnumClass {
          * value: "_abc"
          * @const
          */
-        _abc = "_abc";
+        "_abc" = "_abc";
 
     
         /**
          * value: "-efg"
          * @const
          */
-        -efg = "-efg";
+        "-efg" = "-efg";
 
     
         /**
          * value: "(xyz)"
          * @const
          */
-        (xyz) = "(xyz)";
+        "(xyz)" = "(xyz)";
 
     
 
@@ -54,4 +51,3 @@ export default class EnumClass {
     }
 }
 
-
diff --git a/samples/client/petstore/javascript-promise-es6/src/model/EnumTest.js b/samples/client/petstore/javascript-promise-es6/src/model/EnumTest.js
index b1f9b0b6c693..08828485c183 100644
--- a/samples/client/petstore/javascript-promise-es6/src/model/EnumTest.js
+++ b/samples/client/petstore/javascript-promise-es6/src/model/EnumTest.js
@@ -1,65 +1,61 @@
 /**
- * Swagger Petstore
+ * OpenAPI Petstore
  * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
  *
  * OpenAPI spec version: 1.0.0
- * Contact: apiteam@swagger.io
+ * 
  *
- * NOTE: This class is auto generated by the swagger code generator program.
- * https://github.com/swagger-api/swagger-codegen.git
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
  * Do not edit the class manually.
  *
  */
 
-
 import ApiClient from '../ApiClient';
 import OuterEnum from './OuterEnum';
 
-
-
-
-
 /**
-* The EnumTest model module.
-* @module model/EnumTest
-* @version 1.0.0
-*/
-export default class EnumTest {
+ * The EnumTest model module.
+ * @module model/EnumTest
+ * @version 1.0.0
+ */
+class EnumTest {
     /**
-    * Constructs a new EnumTest.
-    * @alias module:model/EnumTest
-    * @class
-    */
-
-    constructor() {
-        
-
-        
-        
-
+     * Constructs a new EnumTest.
+     * @alias module:model/EnumTest
+     * @param enumStringRequired {module:model/EnumTest.EnumStringRequiredEnum} 
+     */
+    constructor(enumStringRequired) { 
         
+        EnumTest.initialize(this, enumStringRequired);
+    }
 
-        
+    /**
+     * Initializes the fields of this object.
+     * This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins).
+     * Only for internal use.
+     */
+    static initialize(obj, enumStringRequired) { 
+        obj['enum_string_required'] = enumStringRequired;
     }
 
     /**
-    * Constructs a EnumTest from a plain JavaScript object, optionally creating a new instance.
-    * Copies all relevant properties from data to obj if supplied or a new instance if not.
-    * @param {Object} data The plain JavaScript object bearing properties of interest.
-    * @param {module:model/EnumTest} obj Optional instance to populate.
-    * @return {module:model/EnumTest} The populated EnumTest instance.
-    */
+     * Constructs a EnumTest from a plain JavaScript object, optionally creating a new instance.
+     * Copies all relevant properties from data to obj if supplied or a new instance if not.
+     * @param {Object} data The plain JavaScript object bearing properties of interest.
+     * @param {module:model/EnumTest} obj Optional instance to populate.
+     * @return {module:model/EnumTest} The populated EnumTest instance.
+     */
     static constructFromObject(data, obj) {
         if (data) {
             obj = obj || new EnumTest();
 
-            
-            
-            
-
             if (data.hasOwnProperty('enum_string')) {
                 obj['enum_string'] = ApiClient.convertToType(data['enum_string'], 'String');
             }
+            if (data.hasOwnProperty('enum_string_required')) {
+                obj['enum_string_required'] = ApiClient.convertToType(data['enum_string_required'], 'String');
+            }
             if (data.hasOwnProperty('enum_integer')) {
                 obj['enum_integer'] = ApiClient.convertToType(data['enum_integer'], 'Number');
             }
@@ -73,96 +69,134 @@ export default class EnumTest {
         return obj;
     }
 
+
+}
+
+/**
+ * @member {module:model/EnumTest.EnumStringEnum} enum_string
+ */
+EnumTest.prototype['enum_string'] = undefined;
+
+/**
+ * @member {module:model/EnumTest.EnumStringRequiredEnum} enum_string_required
+ */
+EnumTest.prototype['enum_string_required'] = undefined;
+
+/**
+ * @member {module:model/EnumTest.EnumIntegerEnum} enum_integer
+ */
+EnumTest.prototype['enum_integer'] = undefined;
+
+/**
+ * @member {module:model/EnumTest.EnumNumberEnum} enum_number
+ */
+EnumTest.prototype['enum_number'] = undefined;
+
+/**
+ * @member {module:model/OuterEnum} outerEnum
+ */
+EnumTest.prototype['outerEnum'] = undefined;
+
+
+
+
+
+/**
+ * Allowed values for the enum_string property.
+ * @enum {String}
+ * @readonly
+ */
+EnumTest['EnumStringEnum'] = {
+
     /**
-    * @member {module:model/EnumTest.EnumStringEnum} enum_string
-    */
-    enum_string = undefined;
-    /**
-    * @member {module:model/EnumTest.EnumIntegerEnum} enum_integer
-    */
-    enum_integer = undefined;
+     * value: "UPPER"
+     * @const
+     */
+    "UPPER": "UPPER",
+
     /**
-    * @member {module:model/EnumTest.EnumNumberEnum} enum_number
-    */
-    enum_number = undefined;
+     * value: "lower"
+     * @const
+     */
+    "lower": "lower",
+
     /**
-    * @member {module:model/OuterEnum} outerEnum
-    */
-    outerEnum = undefined;
+     * value: ""
+     * @const
+     */
+    "empty": ""
+};
 
 
+/**
+ * Allowed values for the enum_string_required property.
+ * @enum {String}
+ * @readonly
+ */
+EnumTest['EnumStringRequiredEnum'] = {
+
+    /**
+     * value: "UPPER"
+     * @const
+     */
+    "UPPER": "UPPER",
 
+    /**
+     * value: "lower"
+     * @const
+     */
+    "lower": "lower",
 
+    /**
+     * value: ""
+     * @const
+     */
+    "empty": ""
+};
 
 
+/**
+ * Allowed values for the enum_integer property.
+ * @enum {Number}
+ * @readonly
+ */
+EnumTest['EnumIntegerEnum'] = {
+
     /**
-    * Allowed values for the enum_string property.
-    * @enum {String}
-    * @readonly
-    */
-    static EnumStringEnum = {
-    
-        /**
-         * value: "UPPER"
-         * @const
-         */
-        "UPPER": "UPPER",
-    
-        /**
-         * value: "lower"
-         * @const
-         */
-        "lower": "lower",
-    
-        /**
-         * value: ""
-         * @const
-         */
-        "empty": ""    
-    };
+     * value: 1
+     * @const
+     */
+    "1": 1,
 
     /**
-    * Allowed values for the enum_integer property.
-    * @enum {Number}
-    * @readonly
-    */
-    static EnumIntegerEnum = {
-    
-        /**
-         * value: 1
-         * @const
-         */
-        "1": 1,
-    
-        /**
-         * value: -1
-         * @const
-         */
-        "-1": -1    
-    };
+     * value: -1
+     * @const
+     */
+    "-1": -1
+};
+
+
+/**
+ * Allowed values for the enum_number property.
+ * @enum {Number}
+ * @readonly
+ */
+EnumTest['EnumNumberEnum'] = {
 
     /**
-    * Allowed values for the enum_number property.
-    * @enum {Number}
-    * @readonly
-    */
-    static EnumNumberEnum = {
-    
-        /**
-         * value: 1.1
-         * @const
-         */
-        "1.1": 1.1,
-    
-        /**
-         * value: -1.2
-         * @const
-         */
-        "-1.2": -1.2    
-    };
+     * value: 1.1
+     * @const
+     */
+    "1.1": 1.1,
 
+    /**
+     * value: -1.2
+     * @const
+     */
+    "-1.2": -1.2
+};
 
 
-}
 
+export default EnumTest;
 
diff --git a/samples/client/petstore/javascript-promise-es6/src/model/FormatTest.js b/samples/client/petstore/javascript-promise-es6/src/model/FormatTest.js
index 8773a3a77558..87fa2afe86ba 100644
--- a/samples/client/petstore/javascript-promise-es6/src/model/FormatTest.js
+++ b/samples/client/petstore/javascript-promise-es6/src/model/FormatTest.js
@@ -1,65 +1,60 @@
 /**
- * Swagger Petstore
+ * OpenAPI Petstore
  * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
  *
  * OpenAPI spec version: 1.0.0
- * Contact: apiteam@swagger.io
+ * 
  *
- * NOTE: This class is auto generated by the swagger code generator program.
- * https://github.com/swagger-api/swagger-codegen.git
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
  * Do not edit the class manually.
  *
  */
 
-
 import ApiClient from '../ApiClient';
 
-
-
-
-
 /**
-* The FormatTest model module.
-* @module model/FormatTest
-* @version 1.0.0
-*/
-export default class FormatTest {
+ * The FormatTest model module.
+ * @module model/FormatTest
+ * @version 1.0.0
+ */
+class FormatTest {
     /**
-    * Constructs a new FormatTest.
-    * @alias module:model/FormatTest
-    * @class
-    * @param _number {Number} 
-    * @param _byte {Blob} 
-    * @param _date {Date} 
-    * @param password {String} 
-    */
-
-    constructor(_number, _byte, _date, password) {
-        
-
-        
+     * Constructs a new FormatTest.
+     * @alias module:model/FormatTest
+     * @param _number {Number} 
+     * @param _byte {Blob} 
+     * @param _date {Date} 
+     * @param password {String} 
+     */
+    constructor(_number, _byte, _date, password) { 
         
+        FormatTest.initialize(this, _number, _byte, _date, password);
+    }
 
-        this['number'] = _number;this['byte'] = _byte;this['date'] = _date;this['password'] = password;
-
-        
+    /**
+     * Initializes the fields of this object.
+     * This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins).
+     * Only for internal use.
+     */
+    static initialize(obj, _number, _byte, _date, password) { 
+        obj['number'] = _number;
+        obj['byte'] = _byte;
+        obj['date'] = _date;
+        obj['password'] = password;
     }
 
     /**
-    * Constructs a FormatTest from a plain JavaScript object, optionally creating a new instance.
-    * Copies all relevant properties from data to obj if supplied or a new instance if not.
-    * @param {Object} data The plain JavaScript object bearing properties of interest.
-    * @param {module:model/FormatTest} obj Optional instance to populate.
-    * @return {module:model/FormatTest} The populated FormatTest instance.
-    */
+     * Constructs a FormatTest from a plain JavaScript object, optionally creating a new instance.
+     * Copies all relevant properties from data to obj if supplied or a new instance if not.
+     * @param {Object} data The plain JavaScript object bearing properties of interest.
+     * @param {module:model/FormatTest} obj Optional instance to populate.
+     * @return {module:model/FormatTest} The populated FormatTest instance.
+     */
     static constructFromObject(data, obj) {
         if (data) {
             obj = obj || new FormatTest();
 
-            
-            
-            
-
             if (data.hasOwnProperty('integer')) {
                 obj['integer'] = ApiClient.convertToType(data['integer'], 'Number');
             }
@@ -85,7 +80,7 @@ export default class FormatTest {
                 obj['byte'] = ApiClient.convertToType(data['byte'], 'Blob');
             }
             if (data.hasOwnProperty('binary')) {
-                obj['binary'] = ApiClient.convertToType(data['binary'], 'Blob');
+                obj['binary'] = ApiClient.convertToType(data['binary'], File);
             }
             if (data.hasOwnProperty('date')) {
                 obj['date'] = ApiClient.convertToType(data['date'], 'Date');
@@ -103,66 +98,78 @@ export default class FormatTest {
         return obj;
     }
 
-    /**
-    * @member {Number} integer
-    */
-    integer = undefined;
-    /**
-    * @member {Number} int32
-    */
-    int32 = undefined;
-    /**
-    * @member {Number} int64
-    */
-    int64 = undefined;
-    /**
-    * @member {Number} number
-    */
-    number = undefined;
-    /**
-    * @member {Number} float
-    */
-    float = undefined;
-    /**
-    * @member {Number} double
-    */
-    double = undefined;
-    /**
-    * @member {String} string
-    */
-    string = undefined;
-    /**
-    * @member {Blob} byte
-    */
-    byte = undefined;
-    /**
-    * @member {Blob} binary
-    */
-    binary = undefined;
-    /**
-    * @member {Date} date
-    */
-    date = undefined;
-    /**
-    * @member {Date} dateTime
-    */
-    dateTime = undefined;
-    /**
-    * @member {String} uuid
-    */
-    uuid = undefined;
-    /**
-    * @member {String} password
-    */
-    password = undefined;
 
+}
+
+/**
+ * @member {Number} integer
+ */
+FormatTest.prototype['integer'] = undefined;
+
+/**
+ * @member {Number} int32
+ */
+FormatTest.prototype['int32'] = undefined;
+
+/**
+ * @member {Number} int64
+ */
+FormatTest.prototype['int64'] = undefined;
 
+/**
+ * @member {Number} number
+ */
+FormatTest.prototype['number'] = undefined;
 
+/**
+ * @member {Number} float
+ */
+FormatTest.prototype['float'] = undefined;
+
+/**
+ * @member {Number} double
+ */
+FormatTest.prototype['double'] = undefined;
+
+/**
+ * @member {String} string
+ */
+FormatTest.prototype['string'] = undefined;
+
+/**
+ * @member {Blob} byte
+ */
+FormatTest.prototype['byte'] = undefined;
+
+/**
+ * @member {File} binary
+ */
+FormatTest.prototype['binary'] = undefined;
+
+/**
+ * @member {Date} date
+ */
+FormatTest.prototype['date'] = undefined;
+
+/**
+ * @member {Date} dateTime
+ */
+FormatTest.prototype['dateTime'] = undefined;
+
+/**
+ * @member {String} uuid
+ */
+FormatTest.prototype['uuid'] = undefined;
+
+/**
+ * @member {String} password
+ */
+FormatTest.prototype['password'] = undefined;
 
 
 
 
 
-}
 
+export default FormatTest;
 
diff --git a/samples/client/petstore/javascript-promise-es6/src/model/HasOnlyReadOnly.js b/samples/client/petstore/javascript-promise-es6/src/model/HasOnlyReadOnly.js
index cb859fe3e504..9c11ae559c9e 100644
--- a/samples/client/petstore/javascript-promise-es6/src/model/HasOnlyReadOnly.js
+++ b/samples/client/petstore/javascript-promise-es6/src/model/HasOnlyReadOnly.js
@@ -1,61 +1,52 @@
 /**
- * Swagger Petstore
+ * OpenAPI Petstore
  * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
  *
  * OpenAPI spec version: 1.0.0
- * Contact: apiteam@swagger.io
+ * 
  *
- * NOTE: This class is auto generated by the swagger code generator program.
- * https://github.com/swagger-api/swagger-codegen.git
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
  * Do not edit the class manually.
  *
  */
 
-
 import ApiClient from '../ApiClient';
 
-
-
-
-
 /**
-* The HasOnlyReadOnly model module.
-* @module model/HasOnlyReadOnly
-* @version 1.0.0
-*/
-export default class HasOnlyReadOnly {
+ * The HasOnlyReadOnly model module.
+ * @module model/HasOnlyReadOnly
+ * @version 1.0.0
+ */
+class HasOnlyReadOnly {
     /**
-    * Constructs a new HasOnlyReadOnly.
-    * @alias module:model/HasOnlyReadOnly
-    * @class
-    */
-
-    constructor() {
-        
-
-        
-        
-
+     * Constructs a new HasOnlyReadOnly.
+     * @alias module:model/HasOnlyReadOnly
+     */
+    constructor() { 
         
+        HasOnlyReadOnly.initialize(this);
+    }
 
-        
+    /**
+     * Initializes the fields of this object.
+     * This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins).
+     * Only for internal use.
+     */
+    static initialize(obj) { 
     }
 
     /**
-    * Constructs a HasOnlyReadOnly from a plain JavaScript object, optionally creating a new instance.
-    * Copies all relevant properties from data to obj if supplied or a new instance if not.
-    * @param {Object} data The plain JavaScript object bearing properties of interest.
-    * @param {module:model/HasOnlyReadOnly} obj Optional instance to populate.
-    * @return {module:model/HasOnlyReadOnly} The populated HasOnlyReadOnly instance.
-    */
+     * Constructs a HasOnlyReadOnly from a plain JavaScript object, optionally creating a new instance.
+     * Copies all relevant properties from data to obj if supplied or a new instance if not.
+     * @param {Object} data The plain JavaScript object bearing properties of interest.
+     * @param {module:model/HasOnlyReadOnly} obj Optional instance to populate.
+     * @return {module:model/HasOnlyReadOnly} The populated HasOnlyReadOnly instance.
+     */
     static constructFromObject(data, obj) {
         if (data) {
             obj = obj || new HasOnlyReadOnly();
 
-            
-            
-            
-
             if (data.hasOwnProperty('bar')) {
                 obj['bar'] = ApiClient.convertToType(data['bar'], 'String');
             }
@@ -66,22 +57,23 @@ export default class HasOnlyReadOnly {
         return obj;
     }
 
-    /**
-    * @member {String} bar
-    */
-    bar = undefined;
-    /**
-    * @member {String} foo
-    */
-    foo = undefined;
 
+}
 
+/**
+ * @member {String} bar
+ */
+HasOnlyReadOnly.prototype['bar'] = undefined;
 
+/**
+ * @member {String} foo
+ */
+HasOnlyReadOnly.prototype['foo'] = undefined;
 
 
 
 
 
-}
 
+export default HasOnlyReadOnly;
 
diff --git a/samples/client/petstore/javascript-promise-es6/src/model/List.js b/samples/client/petstore/javascript-promise-es6/src/model/List.js
index 513acd45aff9..d4d342319e7f 100644
--- a/samples/client/petstore/javascript-promise-es6/src/model/List.js
+++ b/samples/client/petstore/javascript-promise-es6/src/model/List.js
@@ -1,61 +1,52 @@
 /**
- * Swagger Petstore
+ * OpenAPI Petstore
  * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
  *
  * OpenAPI spec version: 1.0.0
- * Contact: apiteam@swagger.io
+ * 
  *
- * NOTE: This class is auto generated by the swagger code generator program.
- * https://github.com/swagger-api/swagger-codegen.git
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
  * Do not edit the class manually.
  *
  */
 
-
 import ApiClient from '../ApiClient';
 
-
-
-
-
 /**
-* The List model module.
-* @module model/List
-* @version 1.0.0
-*/
-export default class List {
+ * The List model module.
+ * @module model/List
+ * @version 1.0.0
+ */
+class List {
     /**
-    * Constructs a new List.
-    * @alias module:model/List
-    * @class
-    */
-
-    constructor() {
-        
-
-        
-        
-
+     * Constructs a new List.
+     * @alias module:model/List
+     */
+    constructor() { 
         
+        List.initialize(this);
+    }
 
-        
+    /**
+     * Initializes the fields of this object.
+     * This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins).
+     * Only for internal use.
+     */
+    static initialize(obj) { 
     }
 
     /**
-    * Constructs a List from a plain JavaScript object, optionally creating a new instance.
-    * Copies all relevant properties from data to obj if supplied or a new instance if not.
-    * @param {Object} data The plain JavaScript object bearing properties of interest.
-    * @param {module:model/List} obj Optional instance to populate.
-    * @return {module:model/List} The populated List instance.
-    */
+     * Constructs a List from a plain JavaScript object, optionally creating a new instance.
+     * Copies all relevant properties from data to obj if supplied or a new instance if not.
+     * @param {Object} data The plain JavaScript object bearing properties of interest.
+     * @param {module:model/List} obj Optional instance to populate.
+     * @return {module:model/List} The populated List instance.
+     */
     static constructFromObject(data, obj) {
         if (data) {
             obj = obj || new List();
 
-            
-            
-            
-
             if (data.hasOwnProperty('123-list')) {
                 obj['123-list'] = ApiClient.convertToType(data['123-list'], 'String');
             }
@@ -63,18 +54,18 @@ export default class List {
         return obj;
     }
 
-    /**
-    * @member {String} 123-list
-    */
-    123-list = undefined;
-
 
+}
 
+/**
+ * @member {String} 123-list
+ */
+List.prototype['123-list'] = undefined;
 
 
 
 
 
-}
 
+export default List;
 
diff --git a/samples/client/petstore/javascript-promise-es6/src/model/MapTest.js b/samples/client/petstore/javascript-promise-es6/src/model/MapTest.js
index b7a60cd8d9d3..8cc6640c9d4f 100644
--- a/samples/client/petstore/javascript-promise-es6/src/model/MapTest.js
+++ b/samples/client/petstore/javascript-promise-es6/src/model/MapTest.js
@@ -1,61 +1,52 @@
 /**
- * Swagger Petstore
+ * OpenAPI Petstore
  * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
  *
  * OpenAPI spec version: 1.0.0
- * Contact: apiteam@swagger.io
+ * 
  *
- * NOTE: This class is auto generated by the swagger code generator program.
- * https://github.com/swagger-api/swagger-codegen.git
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
  * Do not edit the class manually.
  *
  */
 
-
 import ApiClient from '../ApiClient';
 
-
-
-
-
 /**
-* The MapTest model module.
-* @module model/MapTest
-* @version 1.0.0
-*/
-export default class MapTest {
+ * The MapTest model module.
+ * @module model/MapTest
+ * @version 1.0.0
+ */
+class MapTest {
     /**
-    * Constructs a new MapTest.
-    * @alias module:model/MapTest
-    * @class
-    */
-
-    constructor() {
-        
-
-        
-        
-
+     * Constructs a new MapTest.
+     * @alias module:model/MapTest
+     */
+    constructor() { 
         
+        MapTest.initialize(this);
+    }
 
-        
+    /**
+     * Initializes the fields of this object.
+     * This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins).
+     * Only for internal use.
+     */
+    static initialize(obj) { 
     }
 
     /**
-    * Constructs a MapTest from a plain JavaScript object, optionally creating a new instance.
-    * Copies all relevant properties from data to obj if supplied or a new instance if not.
-    * @param {Object} data The plain JavaScript object bearing properties of interest.
-    * @param {module:model/MapTest} obj Optional instance to populate.
-    * @return {module:model/MapTest} The populated MapTest instance.
-    */
+     * Constructs a MapTest from a plain JavaScript object, optionally creating a new instance.
+     * Copies all relevant properties from data to obj if supplied or a new instance if not.
+     * @param {Object} data The plain JavaScript object bearing properties of interest.
+     * @param {module:model/MapTest} obj Optional instance to populate.
+     * @return {module:model/MapTest} The populated MapTest instance.
+     */
     static constructFromObject(data, obj) {
         if (data) {
             obj = obj || new MapTest();
 
-            
-            
-            
-
             if (data.hasOwnProperty('map_map_of_string')) {
                 obj['map_map_of_string'] = ApiClient.convertToType(data['map_map_of_string'], {'String': {'String': 'String'}});
             }
@@ -66,42 +57,44 @@ export default class MapTest {
         return obj;
     }
 
-    /**
-    * @member {Object.>} map_map_of_string
-    */
-    map_map_of_string = undefined;
-    /**
-    * @member {Object.} map_of_enum_string
-    */
-    map_of_enum_string = undefined;
 
+}
 
+/**
+ * @member {Object.>} map_map_of_string
+ */
+MapTest.prototype['map_map_of_string'] = undefined;
 
+/**
+ * @member {Object.} map_of_enum_string
+ */
+MapTest.prototype['map_of_enum_string'] = undefined;
 
 
 
+
+
+/**
+ * Allowed values for the inner property.
+ * @enum {String}
+ * @readonly
+ */
+MapTest['InnerEnum'] = {
+
     /**
-    * Allowed values for the inner property.
-    * @enum {String}
-    * @readonly
-    */
-    static InnerEnum = {
-    
-        /**
-         * value: "UPPER"
-         * @const
-         */
-        "UPPER": "UPPER",
-    
-        /**
-         * value: "lower"
-         * @const
-         */
-        "lower": "lower"    
-    };
+     * value: "UPPER"
+     * @const
+     */
+    "UPPER": "UPPER",
 
+    /**
+     * value: "lower"
+     * @const
+     */
+    "lower": "lower"
+};
 
 
-}
 
+export default MapTest;
 
diff --git a/samples/client/petstore/javascript-promise-es6/src/model/MixedPropertiesAndAdditionalPropertiesClass.js b/samples/client/petstore/javascript-promise-es6/src/model/MixedPropertiesAndAdditionalPropertiesClass.js
index 6d912ceeb9be..5568d3a6e96f 100644
--- a/samples/client/petstore/javascript-promise-es6/src/model/MixedPropertiesAndAdditionalPropertiesClass.js
+++ b/samples/client/petstore/javascript-promise-es6/src/model/MixedPropertiesAndAdditionalPropertiesClass.js
@@ -1,62 +1,53 @@
 /**
- * Swagger Petstore
+ * OpenAPI Petstore
  * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
  *
  * OpenAPI spec version: 1.0.0
- * Contact: apiteam@swagger.io
+ * 
  *
- * NOTE: This class is auto generated by the swagger code generator program.
- * https://github.com/swagger-api/swagger-codegen.git
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
  * Do not edit the class manually.
  *
  */
 
-
 import ApiClient from '../ApiClient';
 import Animal from './Animal';
 
-
-
-
-
 /**
-* The MixedPropertiesAndAdditionalPropertiesClass model module.
-* @module model/MixedPropertiesAndAdditionalPropertiesClass
-* @version 1.0.0
-*/
-export default class MixedPropertiesAndAdditionalPropertiesClass {
+ * The MixedPropertiesAndAdditionalPropertiesClass model module.
+ * @module model/MixedPropertiesAndAdditionalPropertiesClass
+ * @version 1.0.0
+ */
+class MixedPropertiesAndAdditionalPropertiesClass {
     /**
-    * Constructs a new MixedPropertiesAndAdditionalPropertiesClass.
-    * @alias module:model/MixedPropertiesAndAdditionalPropertiesClass
-    * @class
-    */
-
-    constructor() {
-        
-
-        
-        
-
+     * Constructs a new MixedPropertiesAndAdditionalPropertiesClass.
+     * @alias module:model/MixedPropertiesAndAdditionalPropertiesClass
+     */
+    constructor() { 
         
+        MixedPropertiesAndAdditionalPropertiesClass.initialize(this);
+    }
 
-        
+    /**
+     * Initializes the fields of this object.
+     * This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins).
+     * Only for internal use.
+     */
+    static initialize(obj) { 
     }
 
     /**
-    * Constructs a MixedPropertiesAndAdditionalPropertiesClass from a plain JavaScript object, optionally creating a new instance.
-    * Copies all relevant properties from data to obj if supplied or a new instance if not.
-    * @param {Object} data The plain JavaScript object bearing properties of interest.
-    * @param {module:model/MixedPropertiesAndAdditionalPropertiesClass} obj Optional instance to populate.
-    * @return {module:model/MixedPropertiesAndAdditionalPropertiesClass} The populated MixedPropertiesAndAdditionalPropertiesClass instance.
-    */
+     * Constructs a MixedPropertiesAndAdditionalPropertiesClass from a plain JavaScript object, optionally creating a new instance.
+     * Copies all relevant properties from data to obj if supplied or a new instance if not.
+     * @param {Object} data The plain JavaScript object bearing properties of interest.
+     * @param {module:model/MixedPropertiesAndAdditionalPropertiesClass} obj Optional instance to populate.
+     * @return {module:model/MixedPropertiesAndAdditionalPropertiesClass} The populated MixedPropertiesAndAdditionalPropertiesClass instance.
+     */
     static constructFromObject(data, obj) {
         if (data) {
             obj = obj || new MixedPropertiesAndAdditionalPropertiesClass();
 
-            
-            
-            
-
             if (data.hasOwnProperty('uuid')) {
                 obj['uuid'] = ApiClient.convertToType(data['uuid'], 'String');
             }
@@ -70,26 +61,28 @@ export default class MixedPropertiesAndAdditionalPropertiesClass {
         return obj;
     }
 
-    /**
-    * @member {String} uuid
-    */
-    uuid = undefined;
-    /**
-    * @member {Date} dateTime
-    */
-    dateTime = undefined;
-    /**
-    * @member {Object.} map
-    */
-    map = undefined;
 
+}
+
+/**
+ * @member {String} uuid
+ */
+MixedPropertiesAndAdditionalPropertiesClass.prototype['uuid'] = undefined;
 
+/**
+ * @member {Date} dateTime
+ */
+MixedPropertiesAndAdditionalPropertiesClass.prototype['dateTime'] = undefined;
 
+/**
+ * @member {Object.} map
+ */
+MixedPropertiesAndAdditionalPropertiesClass.prototype['map'] = undefined;
 
 
 
 
 
-}
 
+export default MixedPropertiesAndAdditionalPropertiesClass;
 
diff --git a/samples/client/petstore/javascript-promise-es6/src/model/Model200Response.js b/samples/client/petstore/javascript-promise-es6/src/model/Model200Response.js
index df4d957df7ce..629b0f0c75a1 100644
--- a/samples/client/petstore/javascript-promise-es6/src/model/Model200Response.js
+++ b/samples/client/petstore/javascript-promise-es6/src/model/Model200Response.js
@@ -1,62 +1,53 @@
 /**
- * Swagger Petstore
+ * OpenAPI Petstore
  * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
  *
  * OpenAPI spec version: 1.0.0
- * Contact: apiteam@swagger.io
+ * 
  *
- * NOTE: This class is auto generated by the swagger code generator program.
- * https://github.com/swagger-api/swagger-codegen.git
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
  * Do not edit the class manually.
  *
  */
 
-
 import ApiClient from '../ApiClient';
 
-
-
-
-
 /**
-* The Model200Response model module.
-* @module model/Model200Response
-* @version 1.0.0
-*/
-export default class Model200Response {
+ * The Model200Response model module.
+ * @module model/Model200Response
+ * @version 1.0.0
+ */
+class Model200Response {
     /**
-    * Constructs a new Model200Response.
-    * Model for testing model name starting with number
-    * @alias module:model/Model200Response
-    * @class
-    */
-
-    constructor() {
-        
-
-        
-        
-
+     * Constructs a new Model200Response.
+     * Model for testing model name starting with number
+     * @alias module:model/Model200Response
+     */
+    constructor() { 
         
+        Model200Response.initialize(this);
+    }
 
-        
+    /**
+     * Initializes the fields of this object.
+     * This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins).
+     * Only for internal use.
+     */
+    static initialize(obj) { 
     }
 
     /**
-    * Constructs a Model200Response from a plain JavaScript object, optionally creating a new instance.
-    * Copies all relevant properties from data to obj if supplied or a new instance if not.
-    * @param {Object} data The plain JavaScript object bearing properties of interest.
-    * @param {module:model/Model200Response} obj Optional instance to populate.
-    * @return {module:model/Model200Response} The populated Model200Response instance.
-    */
+     * Constructs a Model200Response from a plain JavaScript object, optionally creating a new instance.
+     * Copies all relevant properties from data to obj if supplied or a new instance if not.
+     * @param {Object} data The plain JavaScript object bearing properties of interest.
+     * @param {module:model/Model200Response} obj Optional instance to populate.
+     * @return {module:model/Model200Response} The populated Model200Response instance.
+     */
     static constructFromObject(data, obj) {
         if (data) {
             obj = obj || new Model200Response();
 
-            
-            
-            
-
             if (data.hasOwnProperty('name')) {
                 obj['name'] = ApiClient.convertToType(data['name'], 'Number');
             }
@@ -67,22 +58,23 @@ export default class Model200Response {
         return obj;
     }
 
-    /**
-    * @member {Number} name
-    */
-    name = undefined;
-    /**
-    * @member {String} class
-    */
-    class = undefined;
 
+}
 
+/**
+ * @member {Number} name
+ */
+Model200Response.prototype['name'] = undefined;
 
+/**
+ * @member {String} class
+ */
+Model200Response.prototype['class'] = undefined;
 
 
 
 
 
-}
 
+export default Model200Response;
 
diff --git a/samples/client/petstore/javascript-promise-es6/src/model/ModelReturn.js b/samples/client/petstore/javascript-promise-es6/src/model/ModelReturn.js
index 88fd97ab85f8..9ad0c11befcf 100644
--- a/samples/client/petstore/javascript-promise-es6/src/model/ModelReturn.js
+++ b/samples/client/petstore/javascript-promise-es6/src/model/ModelReturn.js
@@ -1,62 +1,53 @@
 /**
- * Swagger Petstore
+ * OpenAPI Petstore
  * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
  *
  * OpenAPI spec version: 1.0.0
- * Contact: apiteam@swagger.io
+ * 
  *
- * NOTE: This class is auto generated by the swagger code generator program.
- * https://github.com/swagger-api/swagger-codegen.git
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
  * Do not edit the class manually.
  *
  */
 
-
 import ApiClient from '../ApiClient';
 
-
-
-
-
 /**
-* The ModelReturn model module.
-* @module model/ModelReturn
-* @version 1.0.0
-*/
-export default class ModelReturn {
+ * The ModelReturn model module.
+ * @module model/ModelReturn
+ * @version 1.0.0
+ */
+class ModelReturn {
     /**
-    * Constructs a new ModelReturn.
-    * Model for testing reserved words
-    * @alias module:model/ModelReturn
-    * @class
-    */
-
-    constructor() {
-        
-
-        
-        
-
+     * Constructs a new ModelReturn.
+     * Model for testing reserved words
+     * @alias module:model/ModelReturn
+     */
+    constructor() { 
         
+        ModelReturn.initialize(this);
+    }
 
-        
+    /**
+     * Initializes the fields of this object.
+     * This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins).
+     * Only for internal use.
+     */
+    static initialize(obj) { 
     }
 
     /**
-    * Constructs a ModelReturn from a plain JavaScript object, optionally creating a new instance.
-    * Copies all relevant properties from data to obj if supplied or a new instance if not.
-    * @param {Object} data The plain JavaScript object bearing properties of interest.
-    * @param {module:model/ModelReturn} obj Optional instance to populate.
-    * @return {module:model/ModelReturn} The populated ModelReturn instance.
-    */
+     * Constructs a ModelReturn from a plain JavaScript object, optionally creating a new instance.
+     * Copies all relevant properties from data to obj if supplied or a new instance if not.
+     * @param {Object} data The plain JavaScript object bearing properties of interest.
+     * @param {module:model/ModelReturn} obj Optional instance to populate.
+     * @return {module:model/ModelReturn} The populated ModelReturn instance.
+     */
     static constructFromObject(data, obj) {
         if (data) {
             obj = obj || new ModelReturn();
 
-            
-            
-            
-
             if (data.hasOwnProperty('return')) {
                 obj['return'] = ApiClient.convertToType(data['return'], 'Number');
             }
@@ -64,18 +55,18 @@ export default class ModelReturn {
         return obj;
     }
 
-    /**
-    * @member {Number} return
-    */
-    return = undefined;
-
 
+}
 
+/**
+ * @member {Number} return
+ */
+ModelReturn.prototype['return'] = undefined;
 
 
 
 
 
-}
 
+export default ModelReturn;
 
diff --git a/samples/client/petstore/javascript-promise-es6/src/model/Name.js b/samples/client/petstore/javascript-promise-es6/src/model/Name.js
index f355fbdd4036..63e7d52e5ff6 100644
--- a/samples/client/petstore/javascript-promise-es6/src/model/Name.js
+++ b/samples/client/petstore/javascript-promise-es6/src/model/Name.js
@@ -1,63 +1,55 @@
 /**
- * Swagger Petstore
+ * OpenAPI Petstore
  * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
  *
  * OpenAPI spec version: 1.0.0
- * Contact: apiteam@swagger.io
+ * 
  *
- * NOTE: This class is auto generated by the swagger code generator program.
- * https://github.com/swagger-api/swagger-codegen.git
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
  * Do not edit the class manually.
  *
  */
 
-
 import ApiClient from '../ApiClient';
 
-
-
-
-
 /**
-* The Name model module.
-* @module model/Name
-* @version 1.0.0
-*/
-export default class Name {
+ * The Name model module.
+ * @module model/Name
+ * @version 1.0.0
+ */
+class Name {
     /**
-    * Constructs a new Name.
-    * Model for testing model name same as property name
-    * @alias module:model/Name
-    * @class
-    * @param name {Number} 
-    */
-
-    constructor(name) {
-        
-
+     * Constructs a new Name.
+     * Model for testing model name same as property name
+     * @alias module:model/Name
+     * @param name {Number} 
+     */
+    constructor(name) { 
         
-        
-
-        this['name'] = name;
+        Name.initialize(this, name);
+    }
 
-        
+    /**
+     * Initializes the fields of this object.
+     * This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins).
+     * Only for internal use.
+     */
+    static initialize(obj, name) { 
+        obj['name'] = name;
     }
 
     /**
-    * Constructs a Name from a plain JavaScript object, optionally creating a new instance.
-    * Copies all relevant properties from data to obj if supplied or a new instance if not.
-    * @param {Object} data The plain JavaScript object bearing properties of interest.
-    * @param {module:model/Name} obj Optional instance to populate.
-    * @return {module:model/Name} The populated Name instance.
-    */
+     * Constructs a Name from a plain JavaScript object, optionally creating a new instance.
+     * Copies all relevant properties from data to obj if supplied or a new instance if not.
+     * @param {Object} data The plain JavaScript object bearing properties of interest.
+     * @param {module:model/Name} obj Optional instance to populate.
+     * @return {module:model/Name} The populated Name instance.
+     */
     static constructFromObject(data, obj) {
         if (data) {
             obj = obj || new Name();
 
-            
-            
-            
-
             if (data.hasOwnProperty('name')) {
                 obj['name'] = ApiClient.convertToType(data['name'], 'Number');
             }
@@ -74,30 +66,33 @@ export default class Name {
         return obj;
     }
 
-    /**
-    * @member {Number} name
-    */
-    name = undefined;
-    /**
-    * @member {Number} snake_case
-    */
-    snake_case = undefined;
-    /**
-    * @member {String} property
-    */
-    property = undefined;
-    /**
-    * @member {Number} 123Number
-    */
-    123Number = undefined;
 
+}
 
+/**
+ * @member {Number} name
+ */
+Name.prototype['name'] = undefined;
 
+/**
+ * @member {Number} snake_case
+ */
+Name.prototype['snake_case'] = undefined;
+
+/**
+ * @member {String} property
+ */
+Name.prototype['property'] = undefined;
+
+/**
+ * @member {Number} 123Number
+ */
+Name.prototype['123Number'] = undefined;
 
 
 
 
 
-}
 
+export default Name;
 
diff --git a/samples/client/petstore/javascript-promise-es6/src/model/NumberOnly.js b/samples/client/petstore/javascript-promise-es6/src/model/NumberOnly.js
index bee66870891b..ec5ad812b401 100644
--- a/samples/client/petstore/javascript-promise-es6/src/model/NumberOnly.js
+++ b/samples/client/petstore/javascript-promise-es6/src/model/NumberOnly.js
@@ -1,61 +1,52 @@
 /**
- * Swagger Petstore
+ * OpenAPI Petstore
  * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
  *
  * OpenAPI spec version: 1.0.0
- * Contact: apiteam@swagger.io
+ * 
  *
- * NOTE: This class is auto generated by the swagger code generator program.
- * https://github.com/swagger-api/swagger-codegen.git
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
  * Do not edit the class manually.
  *
  */
 
-
 import ApiClient from '../ApiClient';
 
-
-
-
-
 /**
-* The NumberOnly model module.
-* @module model/NumberOnly
-* @version 1.0.0
-*/
-export default class NumberOnly {
+ * The NumberOnly model module.
+ * @module model/NumberOnly
+ * @version 1.0.0
+ */
+class NumberOnly {
     /**
-    * Constructs a new NumberOnly.
-    * @alias module:model/NumberOnly
-    * @class
-    */
-
-    constructor() {
-        
-
-        
-        
-
+     * Constructs a new NumberOnly.
+     * @alias module:model/NumberOnly
+     */
+    constructor() { 
         
+        NumberOnly.initialize(this);
+    }
 
-        
+    /**
+     * Initializes the fields of this object.
+     * This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins).
+     * Only for internal use.
+     */
+    static initialize(obj) { 
     }
 
     /**
-    * Constructs a NumberOnly from a plain JavaScript object, optionally creating a new instance.
-    * Copies all relevant properties from data to obj if supplied or a new instance if not.
-    * @param {Object} data The plain JavaScript object bearing properties of interest.
-    * @param {module:model/NumberOnly} obj Optional instance to populate.
-    * @return {module:model/NumberOnly} The populated NumberOnly instance.
-    */
+     * Constructs a NumberOnly from a plain JavaScript object, optionally creating a new instance.
+     * Copies all relevant properties from data to obj if supplied or a new instance if not.
+     * @param {Object} data The plain JavaScript object bearing properties of interest.
+     * @param {module:model/NumberOnly} obj Optional instance to populate.
+     * @return {module:model/NumberOnly} The populated NumberOnly instance.
+     */
     static constructFromObject(data, obj) {
         if (data) {
             obj = obj || new NumberOnly();
 
-            
-            
-            
-
             if (data.hasOwnProperty('JustNumber')) {
                 obj['JustNumber'] = ApiClient.convertToType(data['JustNumber'], 'Number');
             }
@@ -63,18 +54,18 @@ export default class NumberOnly {
         return obj;
     }
 
-    /**
-    * @member {Number} JustNumber
-    */
-    JustNumber = undefined;
-
 
+}
 
+/**
+ * @member {Number} JustNumber
+ */
+NumberOnly.prototype['JustNumber'] = undefined;
 
 
 
 
 
-}
 
+export default NumberOnly;
 
diff --git a/samples/client/petstore/javascript-promise-es6/src/model/Order.js b/samples/client/petstore/javascript-promise-es6/src/model/Order.js
index ff704900bbce..8c07a5cd0f3f 100644
--- a/samples/client/petstore/javascript-promise-es6/src/model/Order.js
+++ b/samples/client/petstore/javascript-promise-es6/src/model/Order.js
@@ -1,61 +1,52 @@
 /**
- * Swagger Petstore
+ * OpenAPI Petstore
  * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
  *
  * OpenAPI spec version: 1.0.0
- * Contact: apiteam@swagger.io
+ * 
  *
- * NOTE: This class is auto generated by the swagger code generator program.
- * https://github.com/swagger-api/swagger-codegen.git
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
  * Do not edit the class manually.
  *
  */
 
-
 import ApiClient from '../ApiClient';
 
-
-
-
-
 /**
-* The Order model module.
-* @module model/Order
-* @version 1.0.0
-*/
-export default class Order {
+ * The Order model module.
+ * @module model/Order
+ * @version 1.0.0
+ */
+class Order {
     /**
-    * Constructs a new Order.
-    * @alias module:model/Order
-    * @class
-    */
-
-    constructor() {
-        
-
-        
-        
-
+     * Constructs a new Order.
+     * @alias module:model/Order
+     */
+    constructor() { 
         
+        Order.initialize(this);
+    }
 
-        
+    /**
+     * Initializes the fields of this object.
+     * This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins).
+     * Only for internal use.
+     */
+    static initialize(obj) { 
     }
 
     /**
-    * Constructs a Order from a plain JavaScript object, optionally creating a new instance.
-    * Copies all relevant properties from data to obj if supplied or a new instance if not.
-    * @param {Object} data The plain JavaScript object bearing properties of interest.
-    * @param {module:model/Order} obj Optional instance to populate.
-    * @return {module:model/Order} The populated Order instance.
-    */
+     * Constructs a Order from a plain JavaScript object, optionally creating a new instance.
+     * Copies all relevant properties from data to obj if supplied or a new instance if not.
+     * @param {Object} data The plain JavaScript object bearing properties of interest.
+     * @param {module:model/Order} obj Optional instance to populate.
+     * @return {module:model/Order} The populated Order instance.
+     */
     static constructFromObject(data, obj) {
         if (data) {
             obj = obj || new Order();
 
-            
-            
-            
-
             if (data.hasOwnProperty('id')) {
                 obj['id'] = ApiClient.convertToType(data['id'], 'Number');
             }
@@ -78,66 +69,72 @@ export default class Order {
         return obj;
     }
 
-    /**
-    * @member {Number} id
-    */
-    id = undefined;
-    /**
-    * @member {Number} petId
-    */
-    petId = undefined;
-    /**
-    * @member {Number} quantity
-    */
-    quantity = undefined;
-    /**
-    * @member {Date} shipDate
-    */
-    shipDate = undefined;
-    /**
-    * Order Status
-    * @member {module:model/Order.StatusEnum} status
-    */
-    status = undefined;
-    /**
-    * @member {Boolean} complete
-    * @default false
-    */
-    complete = false;
+
+}
+
+/**
+ * @member {Number} id
+ */
+Order.prototype['id'] = undefined;
+
+/**
+ * @member {Number} petId
+ */
+Order.prototype['petId'] = undefined;
+
+/**
+ * @member {Number} quantity
+ */
+Order.prototype['quantity'] = undefined;
+
+/**
+ * @member {Date} shipDate
+ */
+Order.prototype['shipDate'] = undefined;
+
+/**
+ * Order Status
+ * @member {module:model/Order.StatusEnum} status
+ */
+Order.prototype['status'] = undefined;
+
+/**
+ * @member {Boolean} complete
+ * @default false
+ */
+Order.prototype['complete'] = false;
 
 
 
 
 
+/**
+ * Allowed values for the status property.
+ * @enum {String}
+ * @readonly
+ */
+Order['StatusEnum'] = {
+
+    /**
+     * value: "placed"
+     * @const
+     */
+    "placed": "placed",
 
     /**
-    * Allowed values for the status property.
-    * @enum {String}
-    * @readonly
-    */
-    static StatusEnum = {
-    
-        /**
-         * value: "placed"
-         * @const
-         */
-        "placed": "placed",
-    
-        /**
-         * value: "approved"
-         * @const
-         */
-        "approved": "approved",
-    
-        /**
-         * value: "delivered"
-         * @const
-         */
-        "delivered": "delivered"    
-    };
+     * value: "approved"
+     * @const
+     */
+    "approved": "approved",
 
+    /**
+     * value: "delivered"
+     * @const
+     */
+    "delivered": "delivered"
+};
 
 
-}
 
+export default Order;
 
diff --git a/samples/client/petstore/javascript-promise-es6/src/model/OuterBoolean.js b/samples/client/petstore/javascript-promise-es6/src/model/OuterBoolean.js
deleted file mode 100644
index 592a0b698647..000000000000
--- a/samples/client/petstore/javascript-promise-es6/src/model/OuterBoolean.js
+++ /dev/null
@@ -1,73 +0,0 @@
-/**
- * Swagger Petstore
- * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
- *
- * OpenAPI spec version: 1.0.0
- * Contact: apiteam@swagger.io
- *
- * NOTE: This class is auto generated by the swagger code generator program.
- * https://github.com/swagger-api/swagger-codegen.git
- * Do not edit the class manually.
- *
- */
-
-
-import ApiClient from '../ApiClient';
-
-
-
-
-
-/**
-* The OuterBoolean model module.
-* @module model/OuterBoolean
-* @version 1.0.0
-*/
-export default class OuterBoolean {
-    /**
-    * Constructs a new OuterBoolean.
-    * @alias module:model/OuterBoolean
-    * @class
-    */
-
-    constructor() {
-        
-
-        
-        
-
-        
-
-        
-    }
-
-    /**
-    * Constructs a OuterBoolean from a plain JavaScript object, optionally creating a new instance.
-    * Copies all relevant properties from data to obj if supplied or a new instance if not.
-    * @param {Object} data The plain JavaScript object bearing properties of interest.
-    * @param {module:model/OuterBoolean} obj Optional instance to populate.
-    * @return {module:model/OuterBoolean} The populated OuterBoolean instance.
-    */
-    static constructFromObject(data, obj) {
-        if (data) {
-            obj = obj || new OuterBoolean();
-
-            
-            
-            
-
-        }
-        return obj;
-    }
-
-
-
-
-
-
-
-
-
-}
-
-
diff --git a/samples/client/petstore/javascript-promise-es6/src/model/OuterComposite.js b/samples/client/petstore/javascript-promise-es6/src/model/OuterComposite.js
index 327e303467a0..8b61cb8f654b 100644
--- a/samples/client/petstore/javascript-promise-es6/src/model/OuterComposite.js
+++ b/samples/client/petstore/javascript-promise-es6/src/model/OuterComposite.js
@@ -1,97 +1,87 @@
 /**
- * Swagger Petstore
+ * OpenAPI Petstore
  * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
  *
  * OpenAPI spec version: 1.0.0
- * Contact: apiteam@swagger.io
+ * 
  *
- * NOTE: This class is auto generated by the swagger code generator program.
- * https://github.com/swagger-api/swagger-codegen.git
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
  * Do not edit the class manually.
  *
  */
 
-
 import ApiClient from '../ApiClient';
-import OuterBoolean from './OuterBoolean';
-import OuterNumber from './OuterNumber';
-import OuterString from './OuterString';
-
-
-
-
 
 /**
-* The OuterComposite model module.
-* @module model/OuterComposite
-* @version 1.0.0
-*/
-export default class OuterComposite {
+ * The OuterComposite model module.
+ * @module model/OuterComposite
+ * @version 1.0.0
+ */
+class OuterComposite {
     /**
-    * Constructs a new OuterComposite.
-    * @alias module:model/OuterComposite
-    * @class
-    */
-
-    constructor() {
-        
-
-        
-        
-
+     * Constructs a new OuterComposite.
+     * @alias module:model/OuterComposite
+     */
+    constructor() { 
         
+        OuterComposite.initialize(this);
+    }
 
-        
+    /**
+     * Initializes the fields of this object.
+     * This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins).
+     * Only for internal use.
+     */
+    static initialize(obj) { 
     }
 
     /**
-    * Constructs a OuterComposite from a plain JavaScript object, optionally creating a new instance.
-    * Copies all relevant properties from data to obj if supplied or a new instance if not.
-    * @param {Object} data The plain JavaScript object bearing properties of interest.
-    * @param {module:model/OuterComposite} obj Optional instance to populate.
-    * @return {module:model/OuterComposite} The populated OuterComposite instance.
-    */
+     * Constructs a OuterComposite from a plain JavaScript object, optionally creating a new instance.
+     * Copies all relevant properties from data to obj if supplied or a new instance if not.
+     * @param {Object} data The plain JavaScript object bearing properties of interest.
+     * @param {module:model/OuterComposite} obj Optional instance to populate.
+     * @return {module:model/OuterComposite} The populated OuterComposite instance.
+     */
     static constructFromObject(data, obj) {
         if (data) {
             obj = obj || new OuterComposite();
 
-            
-            
-            
-
             if (data.hasOwnProperty('my_number')) {
-                obj['my_number'] = OuterNumber.constructFromObject(data['my_number']);
+                obj['my_number'] = 'Number'.constructFromObject(data['my_number']);
             }
             if (data.hasOwnProperty('my_string')) {
-                obj['my_string'] = OuterString.constructFromObject(data['my_string']);
+                obj['my_string'] = 'String'.constructFromObject(data['my_string']);
             }
             if (data.hasOwnProperty('my_boolean')) {
-                obj['my_boolean'] = OuterBoolean.constructFromObject(data['my_boolean']);
+                obj['my_boolean'] = 'Boolean'.constructFromObject(data['my_boolean']);
             }
         }
         return obj;
     }
 
-    /**
-    * @member {module:model/OuterNumber} my_number
-    */
-    my_number = undefined;
-    /**
-    * @member {module:model/OuterString} my_string
-    */
-    my_string = undefined;
-    /**
-    * @member {module:model/OuterBoolean} my_boolean
-    */
-    my_boolean = undefined;
 
+}
+
+/**
+ * @member {Number} my_number
+ */
+OuterComposite.prototype['my_number'] = undefined;
 
+/**
+ * @member {String} my_string
+ */
+OuterComposite.prototype['my_string'] = undefined;
 
+/**
+ * @member {Boolean} my_boolean
+ */
+OuterComposite.prototype['my_boolean'] = undefined;
 
 
 
 
 
-}
 
+export default OuterComposite;
 
diff --git a/samples/client/petstore/javascript-promise-es6/src/model/OuterEnum.js b/samples/client/petstore/javascript-promise-es6/src/model/OuterEnum.js
index bf264fd8f641..0404b03b0611 100644
--- a/samples/client/petstore/javascript-promise-es6/src/model/OuterEnum.js
+++ b/samples/client/petstore/javascript-promise-es6/src/model/OuterEnum.js
@@ -1,20 +1,17 @@
 /**
- * Swagger Petstore
+ * OpenAPI Petstore
  * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
  *
  * OpenAPI spec version: 1.0.0
- * Contact: apiteam@swagger.io
+ * 
  *
- * NOTE: This class is auto generated by the swagger code generator program.
- * https://github.com/swagger-api/swagger-codegen.git
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
  * Do not edit the class manually.
  *
  */
 
-
 import ApiClient from '../ApiClient';
-
-
 /**
 * Enum class OuterEnum.
 * @enum {}
@@ -26,21 +23,21 @@ export default class OuterEnum {
          * value: "placed"
          * @const
          */
-        placed = "placed";
+        "placed" = "placed";
 
     
         /**
          * value: "approved"
          * @const
          */
-        approved = "approved";
+        "approved" = "approved";
 
     
         /**
          * value: "delivered"
          * @const
          */
-        delivered = "delivered";
+        "delivered" = "delivered";
 
     
 
@@ -54,4 +51,3 @@ export default class OuterEnum {
     }
 }
 
-
diff --git a/samples/client/petstore/javascript-promise-es6/src/model/OuterNumber.js b/samples/client/petstore/javascript-promise-es6/src/model/OuterNumber.js
deleted file mode 100644
index ff65b1588b77..000000000000
--- a/samples/client/petstore/javascript-promise-es6/src/model/OuterNumber.js
+++ /dev/null
@@ -1,73 +0,0 @@
-/**
- * Swagger Petstore
- * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
- *
- * OpenAPI spec version: 1.0.0
- * Contact: apiteam@swagger.io
- *
- * NOTE: This class is auto generated by the swagger code generator program.
- * https://github.com/swagger-api/swagger-codegen.git
- * Do not edit the class manually.
- *
- */
-
-
-import ApiClient from '../ApiClient';
-
-
-
-
-
-/**
-* The OuterNumber model module.
-* @module model/OuterNumber
-* @version 1.0.0
-*/
-export default class OuterNumber {
-    /**
-    * Constructs a new OuterNumber.
-    * @alias module:model/OuterNumber
-    * @class
-    */
-
-    constructor() {
-        
-
-        
-        
-
-        
-
-        
-    }
-
-    /**
-    * Constructs a OuterNumber from a plain JavaScript object, optionally creating a new instance.
-    * Copies all relevant properties from data to obj if supplied or a new instance if not.
-    * @param {Object} data The plain JavaScript object bearing properties of interest.
-    * @param {module:model/OuterNumber} obj Optional instance to populate.
-    * @return {module:model/OuterNumber} The populated OuterNumber instance.
-    */
-    static constructFromObject(data, obj) {
-        if (data) {
-            obj = obj || new OuterNumber();
-
-            
-            
-            
-
-        }
-        return obj;
-    }
-
-
-
-
-
-
-
-
-
-}
-
-
diff --git a/samples/client/petstore/javascript-promise-es6/src/model/OuterString.js b/samples/client/petstore/javascript-promise-es6/src/model/OuterString.js
deleted file mode 100644
index 6921029ede1a..000000000000
--- a/samples/client/petstore/javascript-promise-es6/src/model/OuterString.js
+++ /dev/null
@@ -1,73 +0,0 @@
-/**
- * Swagger Petstore
- * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
- *
- * OpenAPI spec version: 1.0.0
- * Contact: apiteam@swagger.io
- *
- * NOTE: This class is auto generated by the swagger code generator program.
- * https://github.com/swagger-api/swagger-codegen.git
- * Do not edit the class manually.
- *
- */
-
-
-import ApiClient from '../ApiClient';
-
-
-
-
-
-/**
-* The OuterString model module.
-* @module model/OuterString
-* @version 1.0.0
-*/
-export default class OuterString {
-    /**
-    * Constructs a new OuterString.
-    * @alias module:model/OuterString
-    * @class
-    */
-
-    constructor() {
-        
-
-        
-        
-
-        
-
-        
-    }
-
-    /**
-    * Constructs a OuterString from a plain JavaScript object, optionally creating a new instance.
-    * Copies all relevant properties from data to obj if supplied or a new instance if not.
-    * @param {Object} data The plain JavaScript object bearing properties of interest.
-    * @param {module:model/OuterString} obj Optional instance to populate.
-    * @return {module:model/OuterString} The populated OuterString instance.
-    */
-    static constructFromObject(data, obj) {
-        if (data) {
-            obj = obj || new OuterString();
-
-            
-            
-            
-
-        }
-        return obj;
-    }
-
-
-
-
-
-
-
-
-
-}
-
-
diff --git a/samples/client/petstore/javascript-promise-es6/src/model/Pet.js b/samples/client/petstore/javascript-promise-es6/src/model/Pet.js
index bb8491520279..37b987fdf81a 100644
--- a/samples/client/petstore/javascript-promise-es6/src/model/Pet.js
+++ b/samples/client/petstore/javascript-promise-es6/src/model/Pet.js
@@ -1,65 +1,58 @@
 /**
- * Swagger Petstore
+ * OpenAPI Petstore
  * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
  *
  * OpenAPI spec version: 1.0.0
- * Contact: apiteam@swagger.io
+ * 
  *
- * NOTE: This class is auto generated by the swagger code generator program.
- * https://github.com/swagger-api/swagger-codegen.git
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
  * Do not edit the class manually.
  *
  */
 
-
 import ApiClient from '../ApiClient';
 import Category from './Category';
 import Tag from './Tag';
 
-
-
-
-
 /**
-* The Pet model module.
-* @module model/Pet
-* @version 1.0.0
-*/
-export default class Pet {
+ * The Pet model module.
+ * @module model/Pet
+ * @version 1.0.0
+ */
+class Pet {
     /**
-    * Constructs a new Pet.
-    * @alias module:model/Pet
-    * @class
-    * @param name {String} 
-    * @param photoUrls {Array.} 
-    */
-
-    constructor(name, photoUrls) {
+     * Constructs a new Pet.
+     * @alias module:model/Pet
+     * @param name {String} 
+     * @param photoUrls {Array.} 
+     */
+    constructor(name, photoUrls) { 
         
+        Pet.initialize(this, name, photoUrls);
+    }
 
-        
-        
-
-        this['name'] = name;this['photoUrls'] = photoUrls;
-
-        
+    /**
+     * Initializes the fields of this object.
+     * This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins).
+     * Only for internal use.
+     */
+    static initialize(obj, name, photoUrls) { 
+        obj['name'] = name;
+        obj['photoUrls'] = photoUrls;
     }
 
     /**
-    * Constructs a Pet from a plain JavaScript object, optionally creating a new instance.
-    * Copies all relevant properties from data to obj if supplied or a new instance if not.
-    * @param {Object} data The plain JavaScript object bearing properties of interest.
-    * @param {module:model/Pet} obj Optional instance to populate.
-    * @return {module:model/Pet} The populated Pet instance.
-    */
+     * Constructs a Pet from a plain JavaScript object, optionally creating a new instance.
+     * Copies all relevant properties from data to obj if supplied or a new instance if not.
+     * @param {Object} data The plain JavaScript object bearing properties of interest.
+     * @param {module:model/Pet} obj Optional instance to populate.
+     * @return {module:model/Pet} The populated Pet instance.
+     */
     static constructFromObject(data, obj) {
         if (data) {
             obj = obj || new Pet();
 
-            
-            
-            
-
             if (data.hasOwnProperty('id')) {
                 obj['id'] = ApiClient.convertToType(data['id'], 'Number');
             }
@@ -82,65 +75,71 @@ export default class Pet {
         return obj;
     }
 
-    /**
-    * @member {Number} id
-    */
-    id = undefined;
-    /**
-    * @member {module:model/Category} category
-    */
-    category = undefined;
-    /**
-    * @member {String} name
-    */
-    name = undefined;
-    /**
-    * @member {Array.} photoUrls
-    */
-    photoUrls = undefined;
-    /**
-    * @member {Array.} tags
-    */
-    tags = undefined;
-    /**
-    * pet status in the store
-    * @member {module:model/Pet.StatusEnum} status
-    */
-    status = undefined;
 
+}
+
+/**
+ * @member {Number} id
+ */
+Pet.prototype['id'] = undefined;
+
+/**
+ * @member {module:model/Category} category
+ */
+Pet.prototype['category'] = undefined;
 
+/**
+ * @member {String} name
+ */
+Pet.prototype['name'] = undefined;
 
+/**
+ * @member {Array.} photoUrls
+ */
+Pet.prototype['photoUrls'] = undefined;
 
+/**
+ * @member {Array.} tags
+ */
+Pet.prototype['tags'] = undefined;
 
+/**
+ * pet status in the store
+ * @member {module:model/Pet.StatusEnum} status
+ */
+Pet.prototype['status'] = undefined;
+
+
+
+
+
+/**
+ * Allowed values for the status property.
+ * @enum {String}
+ * @readonly
+ */
+Pet['StatusEnum'] = {
 
     /**
-    * Allowed values for the status property.
-    * @enum {String}
-    * @readonly
-    */
-    static StatusEnum = {
-    
-        /**
-         * value: "available"
-         * @const
-         */
-        "available": "available",
-    
-        /**
-         * value: "pending"
-         * @const
-         */
-        "pending": "pending",
-    
-        /**
-         * value: "sold"
-         * @const
-         */
-        "sold": "sold"    
-    };
+     * value: "available"
+     * @const
+     */
+    "available": "available",
 
+    /**
+     * value: "pending"
+     * @const
+     */
+    "pending": "pending",
+
+    /**
+     * value: "sold"
+     * @const
+     */
+    "sold": "sold"
+};
 
 
-}
 
+export default Pet;
 
diff --git a/samples/client/petstore/javascript-promise-es6/src/model/ReadOnlyFirst.js b/samples/client/petstore/javascript-promise-es6/src/model/ReadOnlyFirst.js
index 143b34f3eb11..289277c191d6 100644
--- a/samples/client/petstore/javascript-promise-es6/src/model/ReadOnlyFirst.js
+++ b/samples/client/petstore/javascript-promise-es6/src/model/ReadOnlyFirst.js
@@ -1,61 +1,52 @@
 /**
- * Swagger Petstore
+ * OpenAPI Petstore
  * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
  *
  * OpenAPI spec version: 1.0.0
- * Contact: apiteam@swagger.io
+ * 
  *
- * NOTE: This class is auto generated by the swagger code generator program.
- * https://github.com/swagger-api/swagger-codegen.git
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
  * Do not edit the class manually.
  *
  */
 
-
 import ApiClient from '../ApiClient';
 
-
-
-
-
 /**
-* The ReadOnlyFirst model module.
-* @module model/ReadOnlyFirst
-* @version 1.0.0
-*/
-export default class ReadOnlyFirst {
+ * The ReadOnlyFirst model module.
+ * @module model/ReadOnlyFirst
+ * @version 1.0.0
+ */
+class ReadOnlyFirst {
     /**
-    * Constructs a new ReadOnlyFirst.
-    * @alias module:model/ReadOnlyFirst
-    * @class
-    */
-
-    constructor() {
-        
-
-        
-        
-
+     * Constructs a new ReadOnlyFirst.
+     * @alias module:model/ReadOnlyFirst
+     */
+    constructor() { 
         
+        ReadOnlyFirst.initialize(this);
+    }
 
-        
+    /**
+     * Initializes the fields of this object.
+     * This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins).
+     * Only for internal use.
+     */
+    static initialize(obj) { 
     }
 
     /**
-    * Constructs a ReadOnlyFirst from a plain JavaScript object, optionally creating a new instance.
-    * Copies all relevant properties from data to obj if supplied or a new instance if not.
-    * @param {Object} data The plain JavaScript object bearing properties of interest.
-    * @param {module:model/ReadOnlyFirst} obj Optional instance to populate.
-    * @return {module:model/ReadOnlyFirst} The populated ReadOnlyFirst instance.
-    */
+     * Constructs a ReadOnlyFirst from a plain JavaScript object, optionally creating a new instance.
+     * Copies all relevant properties from data to obj if supplied or a new instance if not.
+     * @param {Object} data The plain JavaScript object bearing properties of interest.
+     * @param {module:model/ReadOnlyFirst} obj Optional instance to populate.
+     * @return {module:model/ReadOnlyFirst} The populated ReadOnlyFirst instance.
+     */
     static constructFromObject(data, obj) {
         if (data) {
             obj = obj || new ReadOnlyFirst();
 
-            
-            
-            
-
             if (data.hasOwnProperty('bar')) {
                 obj['bar'] = ApiClient.convertToType(data['bar'], 'String');
             }
@@ -66,22 +57,23 @@ export default class ReadOnlyFirst {
         return obj;
     }
 
-    /**
-    * @member {String} bar
-    */
-    bar = undefined;
-    /**
-    * @member {String} baz
-    */
-    baz = undefined;
 
+}
 
+/**
+ * @member {String} bar
+ */
+ReadOnlyFirst.prototype['bar'] = undefined;
 
+/**
+ * @member {String} baz
+ */
+ReadOnlyFirst.prototype['baz'] = undefined;
 
 
 
 
 
-}
 
+export default ReadOnlyFirst;
 
diff --git a/samples/client/petstore/javascript-promise-es6/src/model/SpecialModelName.js b/samples/client/petstore/javascript-promise-es6/src/model/SpecialModelName.js
index 4e0dd379b198..be9f36a855f5 100644
--- a/samples/client/petstore/javascript-promise-es6/src/model/SpecialModelName.js
+++ b/samples/client/petstore/javascript-promise-es6/src/model/SpecialModelName.js
@@ -1,61 +1,52 @@
 /**
- * Swagger Petstore
+ * OpenAPI Petstore
  * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
  *
  * OpenAPI spec version: 1.0.0
- * Contact: apiteam@swagger.io
+ * 
  *
- * NOTE: This class is auto generated by the swagger code generator program.
- * https://github.com/swagger-api/swagger-codegen.git
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
  * Do not edit the class manually.
  *
  */
 
-
 import ApiClient from '../ApiClient';
 
-
-
-
-
 /**
-* The SpecialModelName model module.
-* @module model/SpecialModelName
-* @version 1.0.0
-*/
-export default class SpecialModelName {
+ * The SpecialModelName model module.
+ * @module model/SpecialModelName
+ * @version 1.0.0
+ */
+class SpecialModelName {
     /**
-    * Constructs a new SpecialModelName.
-    * @alias module:model/SpecialModelName
-    * @class
-    */
-
-    constructor() {
-        
-
-        
-        
-
+     * Constructs a new SpecialModelName.
+     * @alias module:model/SpecialModelName
+     */
+    constructor() { 
         
+        SpecialModelName.initialize(this);
+    }
 
-        
+    /**
+     * Initializes the fields of this object.
+     * This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins).
+     * Only for internal use.
+     */
+    static initialize(obj) { 
     }
 
     /**
-    * Constructs a SpecialModelName from a plain JavaScript object, optionally creating a new instance.
-    * Copies all relevant properties from data to obj if supplied or a new instance if not.
-    * @param {Object} data The plain JavaScript object bearing properties of interest.
-    * @param {module:model/SpecialModelName} obj Optional instance to populate.
-    * @return {module:model/SpecialModelName} The populated SpecialModelName instance.
-    */
+     * Constructs a SpecialModelName from a plain JavaScript object, optionally creating a new instance.
+     * Copies all relevant properties from data to obj if supplied or a new instance if not.
+     * @param {Object} data The plain JavaScript object bearing properties of interest.
+     * @param {module:model/SpecialModelName} obj Optional instance to populate.
+     * @return {module:model/SpecialModelName} The populated SpecialModelName instance.
+     */
     static constructFromObject(data, obj) {
         if (data) {
             obj = obj || new SpecialModelName();
 
-            
-            
-            
-
             if (data.hasOwnProperty('$special[property.name]')) {
                 obj['$special[property.name]'] = ApiClient.convertToType(data['$special[property.name]'], 'Number');
             }
@@ -63,18 +54,18 @@ export default class SpecialModelName {
         return obj;
     }
 
-    /**
-    * @member {Number} $special[property.name]
-    */
-    $special[property.name] = undefined;
-
 
+}
 
+/**
+ * @member {Number} $special[property.name]
+ */
+SpecialModelName.prototype['$special[property.name]'] = undefined;
 
 
 
 
 
-}
 
+export default SpecialModelName;
 
diff --git a/samples/client/petstore/javascript-promise-es6/src/model/Tag.js b/samples/client/petstore/javascript-promise-es6/src/model/Tag.js
index 759b3fa04e3c..0d39a36833ad 100644
--- a/samples/client/petstore/javascript-promise-es6/src/model/Tag.js
+++ b/samples/client/petstore/javascript-promise-es6/src/model/Tag.js
@@ -1,61 +1,52 @@
 /**
- * Swagger Petstore
+ * OpenAPI Petstore
  * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
  *
  * OpenAPI spec version: 1.0.0
- * Contact: apiteam@swagger.io
+ * 
  *
- * NOTE: This class is auto generated by the swagger code generator program.
- * https://github.com/swagger-api/swagger-codegen.git
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
  * Do not edit the class manually.
  *
  */
 
-
 import ApiClient from '../ApiClient';
 
-
-
-
-
 /**
-* The Tag model module.
-* @module model/Tag
-* @version 1.0.0
-*/
-export default class Tag {
+ * The Tag model module.
+ * @module model/Tag
+ * @version 1.0.0
+ */
+class Tag {
     /**
-    * Constructs a new Tag.
-    * @alias module:model/Tag
-    * @class
-    */
-
-    constructor() {
-        
-
-        
-        
-
+     * Constructs a new Tag.
+     * @alias module:model/Tag
+     */
+    constructor() { 
         
+        Tag.initialize(this);
+    }
 
-        
+    /**
+     * Initializes the fields of this object.
+     * This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins).
+     * Only for internal use.
+     */
+    static initialize(obj) { 
     }
 
     /**
-    * Constructs a Tag from a plain JavaScript object, optionally creating a new instance.
-    * Copies all relevant properties from data to obj if supplied or a new instance if not.
-    * @param {Object} data The plain JavaScript object bearing properties of interest.
-    * @param {module:model/Tag} obj Optional instance to populate.
-    * @return {module:model/Tag} The populated Tag instance.
-    */
+     * Constructs a Tag from a plain JavaScript object, optionally creating a new instance.
+     * Copies all relevant properties from data to obj if supplied or a new instance if not.
+     * @param {Object} data The plain JavaScript object bearing properties of interest.
+     * @param {module:model/Tag} obj Optional instance to populate.
+     * @return {module:model/Tag} The populated Tag instance.
+     */
     static constructFromObject(data, obj) {
         if (data) {
             obj = obj || new Tag();
 
-            
-            
-            
-
             if (data.hasOwnProperty('id')) {
                 obj['id'] = ApiClient.convertToType(data['id'], 'Number');
             }
@@ -66,22 +57,23 @@ export default class Tag {
         return obj;
     }
 
-    /**
-    * @member {Number} id
-    */
-    id = undefined;
-    /**
-    * @member {String} name
-    */
-    name = undefined;
 
+}
 
+/**
+ * @member {Number} id
+ */
+Tag.prototype['id'] = undefined;
 
+/**
+ * @member {String} name
+ */
+Tag.prototype['name'] = undefined;
 
 
 
 
 
-}
 
+export default Tag;
 
diff --git a/samples/client/petstore/javascript-promise-es6/src/model/User.js b/samples/client/petstore/javascript-promise-es6/src/model/User.js
index 36311e759387..7f8e2848e18f 100644
--- a/samples/client/petstore/javascript-promise-es6/src/model/User.js
+++ b/samples/client/petstore/javascript-promise-es6/src/model/User.js
@@ -1,61 +1,52 @@
 /**
- * Swagger Petstore
+ * OpenAPI Petstore
  * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
  *
  * OpenAPI spec version: 1.0.0
- * Contact: apiteam@swagger.io
+ * 
  *
- * NOTE: This class is auto generated by the swagger code generator program.
- * https://github.com/swagger-api/swagger-codegen.git
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
  * Do not edit the class manually.
  *
  */
 
-
 import ApiClient from '../ApiClient';
 
-
-
-
-
 /**
-* The User model module.
-* @module model/User
-* @version 1.0.0
-*/
-export default class User {
+ * The User model module.
+ * @module model/User
+ * @version 1.0.0
+ */
+class User {
     /**
-    * Constructs a new User.
-    * @alias module:model/User
-    * @class
-    */
-
-    constructor() {
-        
-
-        
-        
-
+     * Constructs a new User.
+     * @alias module:model/User
+     */
+    constructor() { 
         
+        User.initialize(this);
+    }
 
-        
+    /**
+     * Initializes the fields of this object.
+     * This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins).
+     * Only for internal use.
+     */
+    static initialize(obj) { 
     }
 
     /**
-    * Constructs a User from a plain JavaScript object, optionally creating a new instance.
-    * Copies all relevant properties from data to obj if supplied or a new instance if not.
-    * @param {Object} data The plain JavaScript object bearing properties of interest.
-    * @param {module:model/User} obj Optional instance to populate.
-    * @return {module:model/User} The populated User instance.
-    */
+     * Constructs a User from a plain JavaScript object, optionally creating a new instance.
+     * Copies all relevant properties from data to obj if supplied or a new instance if not.
+     * @param {Object} data The plain JavaScript object bearing properties of interest.
+     * @param {module:model/User} obj Optional instance to populate.
+     * @return {module:model/User} The populated User instance.
+     */
     static constructFromObject(data, obj) {
         if (data) {
             obj = obj || new User();
 
-            
-            
-            
-
             if (data.hasOwnProperty('id')) {
                 obj['id'] = ApiClient.convertToType(data['id'], 'Number');
             }
@@ -84,47 +75,54 @@ export default class User {
         return obj;
     }
 
-    /**
-    * @member {Number} id
-    */
-    id = undefined;
-    /**
-    * @member {String} username
-    */
-    username = undefined;
-    /**
-    * @member {String} firstName
-    */
-    firstName = undefined;
-    /**
-    * @member {String} lastName
-    */
-    lastName = undefined;
-    /**
-    * @member {String} email
-    */
-    email = undefined;
-    /**
-    * @member {String} password
-    */
-    password = undefined;
-    /**
-    * @member {String} phone
-    */
-    phone = undefined;
-    /**
-    * User Status
-    * @member {Number} userStatus
-    */
-    userStatus = undefined;
 
+}
+
+/**
+ * @member {Number} id
+ */
+User.prototype['id'] = undefined;
+
+/**
+ * @member {String} username
+ */
+User.prototype['username'] = undefined;
+
+/**
+ * @member {String} firstName
+ */
+User.prototype['firstName'] = undefined;
+
+/**
+ * @member {String} lastName
+ */
+User.prototype['lastName'] = undefined;
+
+/**
+ * @member {String} email
+ */
+User.prototype['email'] = undefined;
+
+/**
+ * @member {String} password
+ */
+User.prototype['password'] = undefined;
 
+/**
+ * @member {String} phone
+ */
+User.prototype['phone'] = undefined;
 
+/**
+ * User Status
+ * @member {Number} userStatus
+ */
+User.prototype['userStatus'] = undefined;
 
 
 
 
 
-}
 
+export default User;
 
diff --git a/samples/client/petstore/javascript-promise-es6/test/ApiClientTest.js b/samples/client/petstore/javascript-promise-es6/test/ApiClientTest.js
new file mode 100644
index 000000000000..5e98b685a911
--- /dev/null
+++ b/samples/client/petstore/javascript-promise-es6/test/ApiClientTest.js
@@ -0,0 +1,393 @@
+if (typeof module === 'object' && module.exports) {
+  var expect = require('expect.js');
+  var SwaggerPetstore = require('../src/index');
+  var sinon = require('sinon');
+}
+
+var apiClient = SwaggerPetstore.ApiClient.instance;
+
+describe('ApiClient', function() {
+  describe('defaults', function() {
+    it('should have correct default values with the default API client', function() {
+      expect(apiClient).to.be.ok();
+      expect(apiClient.basePath).to.be('http://petstore.swagger.io:80/v2');
+      expect(apiClient.authentications).to.eql({
+        petstore_auth: {type: 'oauth2'},
+        http_basic_test: {type: 'basic'},
+        api_key: {type: 'apiKey', 'in': 'header', name: 'api_key'},
+        api_key_query: {type: 'apiKey', 'in': 'query', name: 'api_key_query'},
+      /* comment out the following as these fake security def (testing purpose)
+       * are removed from the spec, we'll add these back after updating the 
+       * petstore server
+       *
+        test_http_basic: {type: 'basic'},
+        test_api_client_id: {
+          type: 'apiKey',
+          'in': 'header',
+          name: 'x-test_api_client_id'
+        },
+        test_api_client_secret: {
+          type: 'apiKey',
+          'in': 'header',
+          name: 'x-test_api_client_secret'
+        },
+        test_api_key_query: {
+          type: 'apiKey',
+          'in': 'query',
+          name: 'test_api_key_query'
+        },
+        test_api_key_header: {
+          type: 'apiKey',
+          'in': 'header',
+          name: 'test_api_key_header'
+        }*/
+      });
+    });
+
+    it('should have correct default values with new API client and can customize it', function() {
+      var newClient = new SwaggerPetstore.ApiClient;
+      expect(newClient.basePath).to.be('http://petstore.swagger.io:80/v2');
+      expect(newClient.buildUrl('/abc', {})).to.be('http://petstore.swagger.io:80/v2/abc');
+
+      newClient.basePath = 'http://example.com';
+      expect(newClient.basePath).to.be('http://example.com');
+      expect(newClient.buildUrl('/abc', {})).to.be('http://example.com/abc');
+    });
+  });
+
+  describe('#paramToString', function() {
+    it('should return empty string for null and undefined', function() {
+      expect(apiClient.paramToString(null)).to.be('');
+      expect(apiClient.paramToString(undefined)).to.be('');
+    });
+
+    it('should return string', function() {
+      expect(apiClient.paramToString('')).to.be('');
+      expect(apiClient.paramToString('abc')).to.be('abc');
+      expect(apiClient.paramToString(123)).to.be('123');
+    });
+  });
+
+  describe('#buildCollectionParam', function() {
+    var param;
+
+    beforeEach(function() {
+      param = ['aa', 'bb', 123];
+    });
+
+    it('works for csv', function() {
+      expect(apiClient.buildCollectionParam(param, 'csv')).to.be('aa,bb,123');
+    });
+
+    it('works for ssv', function() {
+      expect(apiClient.buildCollectionParam(param, 'ssv')).to.be('aa bb 123');
+    });
+
+    it('works for tsv', function() {
+      expect(apiClient.buildCollectionParam(param, 'tsv')).to.be('aa\tbb\t123');
+    });
+
+    it('works for pipes', function() {
+      expect(apiClient.buildCollectionParam(param, 'pipes')).to.be('aa|bb|123');
+    });
+
+    it('works for multi', function() {
+      expect(apiClient.buildCollectionParam(param, 'multi')).to.eql(['aa', 'bb', '123']);
+    });
+
+    it('fails for invalid collection format', function() {
+      expect(function() { apiClient.buildCollectionParam(param, 'INVALID'); }).to.throwError();
+    });
+  });
+
+  describe('#buildUrl', function() {
+    it('should work without path parameters in the path', function() {
+      expect(apiClient.buildUrl('/abc', {})).to
+        .be('http://petstore.swagger.io:80/v2/abc');
+      expect(apiClient.buildUrl('/abc/def?ok', {id: 123})).to
+        .be('http://petstore.swagger.io:80/v2/abc/def?ok');
+    });
+
+    it('should work with path parameters in the path', function() {
+      expect(apiClient.buildUrl('/{id}', {id: 123})).to
+        .be('http://petstore.swagger.io:80/v2/123');
+      expect(apiClient.buildUrl('/abc/{id}/{name}?ok', {id: 456, name: 'a b'})).to.
+        be('http://petstore.swagger.io:80/v2/abc/456/a%20b?ok');
+    });
+  });
+
+  describe('#isJsonMime', function() {
+    it('should return true for JSON MIME', function() {
+      expect(apiClient.isJsonMime('application/json')).to.be(true);
+      expect(apiClient.isJsonMime('application/json; charset=UTF8')).to.be(true);
+      expect(apiClient.isJsonMime('APPLICATION/JSON')).to.be(true);
+    });
+
+    it('should return false for non-JSON MIME', function() {
+      expect(apiClient.isJsonMime('')).to.be(false);
+      expect(apiClient.isJsonMime('text/plain')).to.be(false);
+      expect(apiClient.isJsonMime('application/xml')).to.be(false);
+      expect(apiClient.isJsonMime('application/jsonp')).to.be(false);
+    });
+  });
+
+  describe('#applyAuthToRequest', function() {
+    var req, newClient;
+
+    beforeEach(function() {
+      req = {
+        auth: function() {},
+        set: function() {},
+        query: function() {}
+      };
+      sinon.stub(req, 'auth');
+      sinon.stub(req, 'set');
+      sinon.stub(req, 'query');
+      newClient = new SwaggerPetstore.ApiClient();
+    });
+
+    describe('basic', function() {
+      var authName = 'testBasicAuth';
+      var authNames = [authName];
+      var auth;
+
+      beforeEach(function() {
+        newClient.authentications[authName] = {type: 'basic'};
+        auth = newClient.authentications[authName];
+      });
+
+      it('sets auth header with username and password set', function() {
+        auth.username = 'user';
+        auth.password = 'pass';
+        newClient.applyAuthToRequest(req, authNames);
+        sinon.assert.calledOnce(req.auth);
+        // 'dXNlcjpwYXNz' is base64-encoded string of 'user:pass'
+        sinon.assert.calledWithMatch(req.auth, 'user', 'pass');
+        sinon.assert.notCalled(req.set);
+        sinon.assert.notCalled(req.query);
+      });
+
+      it('sets header with only username set', function() {
+        auth.username = 'user';
+        newClient.applyAuthToRequest(req, authNames);
+        sinon.assert.calledOnce(req.auth);
+        // 'dXNlcjo=' is base64-encoded string of 'user:'
+        sinon.assert.calledWithMatch(req.auth, 'user', '');
+        sinon.assert.notCalled(req.set);
+        sinon.assert.notCalled(req.query);
+      });
+
+      it('sets header with only password set', function() {
+        auth.password = 'pass';
+        newClient.applyAuthToRequest(req, authNames);
+        sinon.assert.calledOnce(req.auth);
+        // 'OnBhc3M=' is base64-encoded string of ':pass'
+        sinon.assert.calledWithMatch(req.auth, '', 'pass');
+        sinon.assert.notCalled(req.set);
+        sinon.assert.notCalled(req.query);
+      });
+
+      it('does not set header when username and password are not set', function() {
+        newClient.applyAuthToRequest(req, authNames);
+        sinon.assert.notCalled(req.auth);
+        sinon.assert.notCalled(req.set);
+        sinon.assert.notCalled(req.query);
+      });
+    });
+
+    describe('apiKey', function() {
+      var authName = 'testApiKey';
+      var authNames = [authName];
+      var auth;
+
+      beforeEach(function() {
+        newClient.authentications[authName] = {type: 'apiKey', name: 'api_key'};
+        auth = newClient.authentications[authName];
+      });
+
+      it('sets api key in header', function() {
+        auth.in = 'header';
+        auth.apiKey = 'my-api-key';
+        newClient.applyAuthToRequest(req, authNames);
+        sinon.assert.calledOnce(req.set);
+        sinon.assert.calledWithMatch(req.set, {'api_key': 'my-api-key'});
+        sinon.assert.notCalled(req.auth);
+        sinon.assert.notCalled(req.query);
+      });
+
+      it('sets api key in query', function() {
+        auth.in = 'query';
+        auth.apiKey = 'my-api-key';
+        newClient.applyAuthToRequest(req, authNames);
+        sinon.assert.calledOnce(req.query);
+        sinon.assert.calledWithMatch(req.query, {'api_key': 'my-api-key'});
+        sinon.assert.notCalled(req.auth);
+        sinon.assert.notCalled(req.set);
+      });
+
+      it('sets api key in header with prefix', function() {
+        auth.in = 'header';
+        auth.apiKey = 'my-api-key';
+        auth.apiKeyPrefix = 'Key';
+        newClient.applyAuthToRequest(req, authNames);
+        sinon.assert.calledOnce(req.set);
+        sinon.assert.calledWithMatch(req.set, {'api_key': 'Key my-api-key'});
+        sinon.assert.notCalled(req.auth);
+        sinon.assert.notCalled(req.query);
+      });
+
+      it('works when api key is not set', function() {
+        auth.in = 'query';
+        auth.apiKey = null;
+        newClient.applyAuthToRequest(req, authNames);
+        sinon.assert.notCalled(req.query);
+        sinon.assert.notCalled(req.auth);
+        sinon.assert.notCalled(req.set);
+      });
+    });
+
+    describe('oauth2', function() {
+      var authName = 'testOAuth2';
+      var authNames = [authName];
+      var auth;
+
+      beforeEach(function() {
+        newClient.authentications[authName] = {type: 'oauth2'};
+        auth = newClient.authentications[authName];
+      });
+
+      it('sets access token in header', function() {
+        auth.accessToken = 'my-access-token';
+        newClient.applyAuthToRequest(req, authNames);
+        sinon.assert.calledOnce(req.set);
+        sinon.assert.calledWithMatch(req.set, {'Authorization': 'Bearer my-access-token'});
+        sinon.assert.notCalled(req.auth);
+        sinon.assert.notCalled(req.query);
+      });
+
+      it('works when access token is not set', function() {
+        auth.accessToken = null;
+        newClient.applyAuthToRequest(req, authNames);
+        sinon.assert.notCalled(req.query);
+        sinon.assert.notCalled(req.auth);
+        sinon.assert.notCalled(req.set);
+      });
+    });
+
+    describe('apiKey and oauth2', function() {
+      var apiKeyAuthName = 'testApiKey';
+      var oauth2Name = 'testOAuth2';
+      var authNames = [apiKeyAuthName, oauth2Name];
+      var apiKeyAuth, oauth2;
+
+      beforeEach(function() {
+        newClient.authentications[apiKeyAuthName] = {type: 'apiKey', name: 'api_key', 'in': 'query'};
+        newClient.authentications[oauth2Name] = {type: 'oauth2'};
+        apiKeyAuth = newClient.authentications[apiKeyAuthName];
+        oauth2 = newClient.authentications[oauth2Name];
+      });
+
+      it('works when setting both api key and access token', function() {
+        apiKeyAuth.apiKey = 'my-api-key';
+        oauth2.accessToken = 'my-access-token';
+        newClient.applyAuthToRequest(req, authNames);
+        sinon.assert.calledOnce(req.query);
+        sinon.assert.calledWithMatch(req.query, {'api_key': 'my-api-key'});
+        sinon.assert.calledOnce(req.set);
+        sinon.assert.calledWithMatch(req.set, {'Authorization': 'Bearer my-access-token'});
+        sinon.assert.notCalled(req.auth);
+      });
+
+      it('works when setting only api key', function() {
+        apiKeyAuth.apiKey = 'my-api-key';
+        oauth2.accessToken = null;
+        newClient.applyAuthToRequest(req, authNames);
+        sinon.assert.calledOnce(req.query);
+        sinon.assert.calledWithMatch(req.query, {'api_key': 'my-api-key'});
+        sinon.assert.notCalled(req.set);
+        sinon.assert.notCalled(req.auth);
+      });
+
+      it('works when neither api key nor access token is set', function() {
+        apiKeyAuth.apiKey = null;
+        oauth2.accessToken = null;
+        newClient.applyAuthToRequest(req, authNames);
+        sinon.assert.notCalled(req.query);
+        sinon.assert.notCalled(req.auth);
+        sinon.assert.notCalled(req.set);
+      });
+    });
+
+    describe('unknown type', function() {
+      var authName = 'unknown';
+      var authNames = [authName];
+
+      beforeEach(function() {
+        newClient.authentications[authName] = {type: 'UNKNOWN'};
+      });
+
+      it('throws error for unknown auth type', function() {
+        expect(function() {
+          newClient.applyAuthToRequest(req, authNames);
+        }).to.throwError();
+        sinon.assert.notCalled(req.set);
+        sinon.assert.notCalled(req.auth);
+        sinon.assert.notCalled(req.query);
+      });
+    });
+  });
+
+  /*
+  describe('#defaultHeaders', function() {
+    it('should initialize default headers to be an empty object', function() {
+      expect(apiClient.defaultHeaders).to.eql({});
+    });
+
+    it('should put default headers in request', function() {
+      var newClient = new SwaggerPetstore.ApiClient;
+      newClient.defaultHeaders['Content-Type'] = 'text/plain'
+      newClient.defaultHeaders['api_key'] = 'special-key'
+
+      var expected = {'Content-Type': 'text/plain', 'api_key': 'special-key'};
+      expect(newClient.defaultHeaders).to.eql(expected);
+      var req = makeDumbRequest(newClient);
+      req.unset('User-Agent');
+      expect(req.header).to.eql(expected);
+    });
+
+    it('should override default headers with provided header params', function() {
+      var newClient = new SwaggerPetstore.ApiClient;
+      newClient.defaultHeaders['Content-Type'] = 'text/plain'
+      newClient.defaultHeaders['api_key'] = 'special-key'
+
+      var headerParams = {'Content-Type': 'application/json', 'Authorization': 'Bearer test-token'}
+      var expected = {
+        'Content-Type': 'application/json',
+        'api_key': 'special-key',
+        'Authorization': 'Bearer test-token'
+      };
+      var req = makeDumbRequest(newClient, {headerParams: headerParams});
+      req.unset('User-Agent');
+      expect(req.header).to.eql(expected);
+    });
+  });
+*/
+
+});
+
+function makeDumbRequest(apiClient, opts) {
+  opts = opts || {};
+  var path = opts.path || '/store/inventory';
+  var httpMethod = opts.httpMethod || 'GET';
+  var pathParams = opts.pathParams || {};
+  var queryParams = opts.queryParams || {};
+  var headerParams = opts.headerParams || {};
+  var formParams = opts.formParams || {};
+  var bodyParam = opts.bodyParam;
+  var authNames = [];
+  var contentTypes = opts.contentTypes || [];
+  var accepts = opts.accepts || [];
+  var callback = opts.callback;
+  return apiClient.callApi(path, httpMethod, pathParams, queryParams,
+    headerParams, formParams, bodyParam, authNames, contentTypes, accepts);
+}
diff --git a/samples/client/petstore/javascript-promise-es6/test/model/OuterBoolean.spec.js b/samples/client/petstore/javascript-promise-es6/test/model/OuterBoolean.spec.js
index 7560cff154b4..400fbecfb134 100644
--- a/samples/client/petstore/javascript-promise-es6/test/model/OuterBoolean.spec.js
+++ b/samples/client/petstore/javascript-promise-es6/test/model/OuterBoolean.spec.js
@@ -31,7 +31,8 @@
   var instance;
 
   beforeEach(function() {
-    instance = new SwaggerPetstore.OuterBoolean();
+    // OuterBoolean is not a member of SwaggerPetstore
+    //instance = new SwaggerPetstore.OuterBoolean();
   });
 
   var getProperty = function(object, getter, property) {
diff --git a/samples/client/petstore/javascript-promise-es6/test/model/OuterNumber.spec.js b/samples/client/petstore/javascript-promise-es6/test/model/OuterNumber.spec.js
index 4dbe9d889bb3..9cf8d6ac4b82 100644
--- a/samples/client/petstore/javascript-promise-es6/test/model/OuterNumber.spec.js
+++ b/samples/client/petstore/javascript-promise-es6/test/model/OuterNumber.spec.js
@@ -31,7 +31,8 @@
   var instance;
 
   beforeEach(function() {
-    instance = new SwaggerPetstore.OuterNumber();
+    // OuterNumber is not a member of SwaggerPetstore
+    //instance = new SwaggerPetstore.OuterNumber();
   });
 
   var getProperty = function(object, getter, property) {
diff --git a/samples/client/petstore/javascript-promise-es6/test/model/OuterString.spec.js b/samples/client/petstore/javascript-promise-es6/test/model/OuterString.spec.js
index d0f6a8fbd9d1..93f6e8e4cab7 100644
--- a/samples/client/petstore/javascript-promise-es6/test/model/OuterString.spec.js
+++ b/samples/client/petstore/javascript-promise-es6/test/model/OuterString.spec.js
@@ -31,7 +31,8 @@
   var instance;
 
   beforeEach(function() {
-    instance = new SwaggerPetstore.OuterString();
+    // OuterString is not a member of SwaggerPetstore
+    //instance = new SwaggerPetstore.OuterString();
   });
 
   var getProperty = function(object, getter, property) {
diff --git a/samples/client/petstore/javascript-promise/.openapi-generator/VERSION b/samples/client/petstore/javascript-promise/.openapi-generator/VERSION
index f9f7450d1359..1c00c5181548 100644
--- a/samples/client/petstore/javascript-promise/.openapi-generator/VERSION
+++ b/samples/client/petstore/javascript-promise/.openapi-generator/VERSION
@@ -1 +1 @@
-2.3.0-SNAPSHOT
\ No newline at end of file
+3.0.2-SNAPSHOT
\ No newline at end of file
diff --git a/samples/client/petstore/javascript-promise/README.md b/samples/client/petstore/javascript-promise/README.md
index 3dbc2e674d85..a78275aee673 100644
--- a/samples/client/petstore/javascript-promise/README.md
+++ b/samples/client/petstore/javascript-promise/README.md
@@ -1,12 +1,12 @@
-# swagger_petstore
+# open_api_petstore
 
-SwaggerPetstore - JavaScript client for swagger_petstore
+OpenApiPetstore - JavaScript client for open_api_petstore
 This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
-This SDK is automatically generated by the [Swagger Codegen](https://github.com/swagger-api/swagger-codegen) project:
+This SDK is automatically generated by the [OpenAPI Generator](https://openapi-generator.tech) project:
 
 - API version: 1.0.0
 - Package version: 1.0.0
-- Build package: io.swagger.codegen.languages.JavascriptClientCodegen
+- Build package: org.openapitools.codegen.languages.JavascriptClientCodegen
 
 ## Installation
 
@@ -20,7 +20,7 @@ please follow the procedure in ["Publishing npm packages"](https://docs.npmjs.co
 Then install it via:
 
 ```shell
-npm install swagger_petstore --save
+npm install open_api_petstore --save
 ```
 
 ##### Local development
@@ -38,13 +38,13 @@ Next, [link](https://docs.npmjs.com/cli/link) it globally in npm with the follow
 npm link
 ```
 
-Finally, switch to the directory you want to use your swagger_petstore from, and run:
+Finally, switch to the directory you want to use your open_api_petstore from, and run:
 
 ```shell
 npm link /path/to/
 ```
 
-You should now be able to `require('swagger_petstore')` in javascript files from the directory you ran the last 
+You should now be able to `require('open_api_petstore')` in javascript files from the directory you ran the last 
 command above from.
 
 #### git
@@ -93,13 +93,11 @@ module: {
 Please follow the [installation](#installation) instruction and execute the following JS code:
 
 ```javascript
-var SwaggerPetstore = require('swagger_petstore');
+var OpenApiPetstore = require('open_api_petstore');
 
-var api = new SwaggerPetstore.AnotherFakeApi()
-
-var body = new SwaggerPetstore.Client(); // {Client} client model
-
-api.testSpecialTags(body).then(function(data) {
+var api = new OpenApiPetstore.AnotherFakeApi()
+var client = new OpenApiPetstore.Client(); // {Client} client model
+api.testSpecialTags(client).then(function(data) {
   console.log('API called successfully. Returned data: ' + data);
 }, function(error) {
   console.error(error);
@@ -114,77 +112,75 @@ All URIs are relative to *http://petstore.swagger.io:80/v2*
 
 Class | Method | HTTP request | Description
 ------------ | ------------- | ------------- | -------------
-*SwaggerPetstore.AnotherFakeApi* | [**testSpecialTags**](docs/AnotherFakeApi.md#testSpecialTags) | **PATCH** /another-fake/dummy | To test special tags
-*SwaggerPetstore.FakeApi* | [**fakeOuterBooleanSerialize**](docs/FakeApi.md#fakeOuterBooleanSerialize) | **POST** /fake/outer/boolean | 
-*SwaggerPetstore.FakeApi* | [**fakeOuterCompositeSerialize**](docs/FakeApi.md#fakeOuterCompositeSerialize) | **POST** /fake/outer/composite | 
-*SwaggerPetstore.FakeApi* | [**fakeOuterNumberSerialize**](docs/FakeApi.md#fakeOuterNumberSerialize) | **POST** /fake/outer/number | 
-*SwaggerPetstore.FakeApi* | [**fakeOuterStringSerialize**](docs/FakeApi.md#fakeOuterStringSerialize) | **POST** /fake/outer/string | 
-*SwaggerPetstore.FakeApi* | [**testClientModel**](docs/FakeApi.md#testClientModel) | **PATCH** /fake | To test \"client\" model
-*SwaggerPetstore.FakeApi* | [**testEndpointParameters**](docs/FakeApi.md#testEndpointParameters) | **POST** /fake | Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 
-*SwaggerPetstore.FakeApi* | [**testEnumParameters**](docs/FakeApi.md#testEnumParameters) | **GET** /fake | To test enum parameters
-*SwaggerPetstore.FakeApi* | [**testInlineAdditionalProperties**](docs/FakeApi.md#testInlineAdditionalProperties) | **POST** /fake/inline-additionalProperties | test inline additionalProperties
-*SwaggerPetstore.FakeApi* | [**testJsonFormData**](docs/FakeApi.md#testJsonFormData) | **GET** /fake/jsonFormData | test json serialization of form data
-*SwaggerPetstore.FakeClassnameTags123Api* | [**testClassname**](docs/FakeClassnameTags123Api.md#testClassname) | **PATCH** /fake_classname_test | To test class name in snake case
-*SwaggerPetstore.PetApi* | [**addPet**](docs/PetApi.md#addPet) | **POST** /pet | Add a new pet to the store
-*SwaggerPetstore.PetApi* | [**deletePet**](docs/PetApi.md#deletePet) | **DELETE** /pet/{petId} | Deletes a pet
-*SwaggerPetstore.PetApi* | [**findPetsByStatus**](docs/PetApi.md#findPetsByStatus) | **GET** /pet/findByStatus | Finds Pets by status
-*SwaggerPetstore.PetApi* | [**findPetsByTags**](docs/PetApi.md#findPetsByTags) | **GET** /pet/findByTags | Finds Pets by tags
-*SwaggerPetstore.PetApi* | [**getPetById**](docs/PetApi.md#getPetById) | **GET** /pet/{petId} | Find pet by ID
-*SwaggerPetstore.PetApi* | [**updatePet**](docs/PetApi.md#updatePet) | **PUT** /pet | Update an existing pet
-*SwaggerPetstore.PetApi* | [**updatePetWithForm**](docs/PetApi.md#updatePetWithForm) | **POST** /pet/{petId} | Updates a pet in the store with form data
-*SwaggerPetstore.PetApi* | [**uploadFile**](docs/PetApi.md#uploadFile) | **POST** /pet/{petId}/uploadImage | uploads an image
-*SwaggerPetstore.StoreApi* | [**deleteOrder**](docs/StoreApi.md#deleteOrder) | **DELETE** /store/order/{order_id} | Delete purchase order by ID
-*SwaggerPetstore.StoreApi* | [**getInventory**](docs/StoreApi.md#getInventory) | **GET** /store/inventory | Returns pet inventories by status
-*SwaggerPetstore.StoreApi* | [**getOrderById**](docs/StoreApi.md#getOrderById) | **GET** /store/order/{order_id} | Find purchase order by ID
-*SwaggerPetstore.StoreApi* | [**placeOrder**](docs/StoreApi.md#placeOrder) | **POST** /store/order | Place an order for a pet
-*SwaggerPetstore.UserApi* | [**createUser**](docs/UserApi.md#createUser) | **POST** /user | Create user
-*SwaggerPetstore.UserApi* | [**createUsersWithArrayInput**](docs/UserApi.md#createUsersWithArrayInput) | **POST** /user/createWithArray | Creates list of users with given input array
-*SwaggerPetstore.UserApi* | [**createUsersWithListInput**](docs/UserApi.md#createUsersWithListInput) | **POST** /user/createWithList | Creates list of users with given input array
-*SwaggerPetstore.UserApi* | [**deleteUser**](docs/UserApi.md#deleteUser) | **DELETE** /user/{username} | Delete user
-*SwaggerPetstore.UserApi* | [**getUserByName**](docs/UserApi.md#getUserByName) | **GET** /user/{username} | Get user by user name
-*SwaggerPetstore.UserApi* | [**loginUser**](docs/UserApi.md#loginUser) | **GET** /user/login | Logs user into the system
-*SwaggerPetstore.UserApi* | [**logoutUser**](docs/UserApi.md#logoutUser) | **GET** /user/logout | Logs out current logged in user session
-*SwaggerPetstore.UserApi* | [**updateUser**](docs/UserApi.md#updateUser) | **PUT** /user/{username} | Updated user
+*OpenApiPetstore.AnotherFakeApi* | [**testSpecialTags**](docs/AnotherFakeApi.md#testSpecialTags) | **PATCH** /another-fake/dummy | To test special tags
+*OpenApiPetstore.FakeApi* | [**fakeOuterBooleanSerialize**](docs/FakeApi.md#fakeOuterBooleanSerialize) | **POST** /fake/outer/boolean | 
+*OpenApiPetstore.FakeApi* | [**fakeOuterCompositeSerialize**](docs/FakeApi.md#fakeOuterCompositeSerialize) | **POST** /fake/outer/composite | 
+*OpenApiPetstore.FakeApi* | [**fakeOuterNumberSerialize**](docs/FakeApi.md#fakeOuterNumberSerialize) | **POST** /fake/outer/number | 
+*OpenApiPetstore.FakeApi* | [**fakeOuterStringSerialize**](docs/FakeApi.md#fakeOuterStringSerialize) | **POST** /fake/outer/string | 
+*OpenApiPetstore.FakeApi* | [**testBodyWithQueryParams**](docs/FakeApi.md#testBodyWithQueryParams) | **PUT** /fake/body-with-query-params | 
+*OpenApiPetstore.FakeApi* | [**testClientModel**](docs/FakeApi.md#testClientModel) | **PATCH** /fake | To test \"client\" model
+*OpenApiPetstore.FakeApi* | [**testEndpointParameters**](docs/FakeApi.md#testEndpointParameters) | **POST** /fake | Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 
+*OpenApiPetstore.FakeApi* | [**testEnumParameters**](docs/FakeApi.md#testEnumParameters) | **GET** /fake | To test enum parameters
+*OpenApiPetstore.FakeApi* | [**testInlineAdditionalProperties**](docs/FakeApi.md#testInlineAdditionalProperties) | **POST** /fake/inline-additionalProperties | test inline additionalProperties
+*OpenApiPetstore.FakeApi* | [**testJsonFormData**](docs/FakeApi.md#testJsonFormData) | **GET** /fake/jsonFormData | test json serialization of form data
+*OpenApiPetstore.FakeClassnameTags123Api* | [**testClassname**](docs/FakeClassnameTags123Api.md#testClassname) | **PATCH** /fake_classname_test | To test class name in snake case
+*OpenApiPetstore.PetApi* | [**addPet**](docs/PetApi.md#addPet) | **POST** /pet | Add a new pet to the store
+*OpenApiPetstore.PetApi* | [**deletePet**](docs/PetApi.md#deletePet) | **DELETE** /pet/{petId} | Deletes a pet
+*OpenApiPetstore.PetApi* | [**findPetsByStatus**](docs/PetApi.md#findPetsByStatus) | **GET** /pet/findByStatus | Finds Pets by status
+*OpenApiPetstore.PetApi* | [**findPetsByTags**](docs/PetApi.md#findPetsByTags) | **GET** /pet/findByTags | Finds Pets by tags
+*OpenApiPetstore.PetApi* | [**getPetById**](docs/PetApi.md#getPetById) | **GET** /pet/{petId} | Find pet by ID
+*OpenApiPetstore.PetApi* | [**updatePet**](docs/PetApi.md#updatePet) | **PUT** /pet | Update an existing pet
+*OpenApiPetstore.PetApi* | [**updatePetWithForm**](docs/PetApi.md#updatePetWithForm) | **POST** /pet/{petId} | Updates a pet in the store with form data
+*OpenApiPetstore.PetApi* | [**uploadFile**](docs/PetApi.md#uploadFile) | **POST** /pet/{petId}/uploadImage | uploads an image
+*OpenApiPetstore.StoreApi* | [**deleteOrder**](docs/StoreApi.md#deleteOrder) | **DELETE** /store/order/{order_id} | Delete purchase order by ID
+*OpenApiPetstore.StoreApi* | [**getInventory**](docs/StoreApi.md#getInventory) | **GET** /store/inventory | Returns pet inventories by status
+*OpenApiPetstore.StoreApi* | [**getOrderById**](docs/StoreApi.md#getOrderById) | **GET** /store/order/{order_id} | Find purchase order by ID
+*OpenApiPetstore.StoreApi* | [**placeOrder**](docs/StoreApi.md#placeOrder) | **POST** /store/order | Place an order for a pet
+*OpenApiPetstore.UserApi* | [**createUser**](docs/UserApi.md#createUser) | **POST** /user | Create user
+*OpenApiPetstore.UserApi* | [**createUsersWithArrayInput**](docs/UserApi.md#createUsersWithArrayInput) | **POST** /user/createWithArray | Creates list of users with given input array
+*OpenApiPetstore.UserApi* | [**createUsersWithListInput**](docs/UserApi.md#createUsersWithListInput) | **POST** /user/createWithList | Creates list of users with given input array
+*OpenApiPetstore.UserApi* | [**deleteUser**](docs/UserApi.md#deleteUser) | **DELETE** /user/{username} | Delete user
+*OpenApiPetstore.UserApi* | [**getUserByName**](docs/UserApi.md#getUserByName) | **GET** /user/{username} | Get user by user name
+*OpenApiPetstore.UserApi* | [**loginUser**](docs/UserApi.md#loginUser) | **GET** /user/login | Logs user into the system
+*OpenApiPetstore.UserApi* | [**logoutUser**](docs/UserApi.md#logoutUser) | **GET** /user/logout | Logs out current logged in user session
+*OpenApiPetstore.UserApi* | [**updateUser**](docs/UserApi.md#updateUser) | **PUT** /user/{username} | Updated user
 
 
 ## Documentation for Models
 
- - [SwaggerPetstore.AdditionalPropertiesClass](docs/AdditionalPropertiesClass.md)
- - [SwaggerPetstore.Animal](docs/Animal.md)
- - [SwaggerPetstore.AnimalFarm](docs/AnimalFarm.md)
- - [SwaggerPetstore.ApiResponse](docs/ApiResponse.md)
- - [SwaggerPetstore.ArrayOfArrayOfNumberOnly](docs/ArrayOfArrayOfNumberOnly.md)
- - [SwaggerPetstore.ArrayOfNumberOnly](docs/ArrayOfNumberOnly.md)
- - [SwaggerPetstore.ArrayTest](docs/ArrayTest.md)
- - [SwaggerPetstore.Capitalization](docs/Capitalization.md)
- - [SwaggerPetstore.Category](docs/Category.md)
- - [SwaggerPetstore.ClassModel](docs/ClassModel.md)
- - [SwaggerPetstore.Client](docs/Client.md)
- - [SwaggerPetstore.EnumArrays](docs/EnumArrays.md)
- - [SwaggerPetstore.EnumClass](docs/EnumClass.md)
- - [SwaggerPetstore.EnumTest](docs/EnumTest.md)
- - [SwaggerPetstore.FormatTest](docs/FormatTest.md)
- - [SwaggerPetstore.HasOnlyReadOnly](docs/HasOnlyReadOnly.md)
- - [SwaggerPetstore.List](docs/List.md)
- - [SwaggerPetstore.MapTest](docs/MapTest.md)
- - [SwaggerPetstore.MixedPropertiesAndAdditionalPropertiesClass](docs/MixedPropertiesAndAdditionalPropertiesClass.md)
- - [SwaggerPetstore.Model200Response](docs/Model200Response.md)
- - [SwaggerPetstore.ModelReturn](docs/ModelReturn.md)
- - [SwaggerPetstore.Name](docs/Name.md)
- - [SwaggerPetstore.NumberOnly](docs/NumberOnly.md)
- - [SwaggerPetstore.Order](docs/Order.md)
- - [SwaggerPetstore.OuterBoolean](docs/OuterBoolean.md)
- - [SwaggerPetstore.OuterComposite](docs/OuterComposite.md)
- - [SwaggerPetstore.OuterEnum](docs/OuterEnum.md)
- - [SwaggerPetstore.OuterNumber](docs/OuterNumber.md)
- - [SwaggerPetstore.OuterString](docs/OuterString.md)
- - [SwaggerPetstore.Pet](docs/Pet.md)
- - [SwaggerPetstore.ReadOnlyFirst](docs/ReadOnlyFirst.md)
- - [SwaggerPetstore.SpecialModelName](docs/SpecialModelName.md)
- - [SwaggerPetstore.Tag](docs/Tag.md)
- - [SwaggerPetstore.User](docs/User.md)
- - [SwaggerPetstore.Cat](docs/Cat.md)
- - [SwaggerPetstore.Dog](docs/Dog.md)
+ - [OpenApiPetstore.AdditionalPropertiesClass](docs/AdditionalPropertiesClass.md)
+ - [OpenApiPetstore.Animal](docs/Animal.md)
+ - [OpenApiPetstore.AnimalFarm](docs/AnimalFarm.md)
+ - [OpenApiPetstore.ApiResponse](docs/ApiResponse.md)
+ - [OpenApiPetstore.ArrayOfArrayOfNumberOnly](docs/ArrayOfArrayOfNumberOnly.md)
+ - [OpenApiPetstore.ArrayOfNumberOnly](docs/ArrayOfNumberOnly.md)
+ - [OpenApiPetstore.ArrayTest](docs/ArrayTest.md)
+ - [OpenApiPetstore.Capitalization](docs/Capitalization.md)
+ - [OpenApiPetstore.Cat](docs/Cat.md)
+ - [OpenApiPetstore.Category](docs/Category.md)
+ - [OpenApiPetstore.ClassModel](docs/ClassModel.md)
+ - [OpenApiPetstore.Client](docs/Client.md)
+ - [OpenApiPetstore.Dog](docs/Dog.md)
+ - [OpenApiPetstore.EnumArrays](docs/EnumArrays.md)
+ - [OpenApiPetstore.EnumClass](docs/EnumClass.md)
+ - [OpenApiPetstore.EnumTest](docs/EnumTest.md)
+ - [OpenApiPetstore.FormatTest](docs/FormatTest.md)
+ - [OpenApiPetstore.HasOnlyReadOnly](docs/HasOnlyReadOnly.md)
+ - [OpenApiPetstore.List](docs/List.md)
+ - [OpenApiPetstore.MapTest](docs/MapTest.md)
+ - [OpenApiPetstore.MixedPropertiesAndAdditionalPropertiesClass](docs/MixedPropertiesAndAdditionalPropertiesClass.md)
+ - [OpenApiPetstore.Model200Response](docs/Model200Response.md)
+ - [OpenApiPetstore.ModelReturn](docs/ModelReturn.md)
+ - [OpenApiPetstore.Name](docs/Name.md)
+ - [OpenApiPetstore.NumberOnly](docs/NumberOnly.md)
+ - [OpenApiPetstore.Order](docs/Order.md)
+ - [OpenApiPetstore.OuterComposite](docs/OuterComposite.md)
+ - [OpenApiPetstore.OuterEnum](docs/OuterEnum.md)
+ - [OpenApiPetstore.Pet](docs/Pet.md)
+ - [OpenApiPetstore.ReadOnlyFirst](docs/ReadOnlyFirst.md)
+ - [OpenApiPetstore.SpecialModelName](docs/SpecialModelName.md)
+ - [OpenApiPetstore.Tag](docs/Tag.md)
+ - [OpenApiPetstore.User](docs/User.md)
 
 
 ## Documentation for Authorization
diff --git a/samples/client/petstore/javascript-promise/docs/AdditionalPropertiesClass.md b/samples/client/petstore/javascript-promise/docs/AdditionalPropertiesClass.md
index 0ea13d4bb64f..7df1c7b33949 100644
--- a/samples/client/petstore/javascript-promise/docs/AdditionalPropertiesClass.md
+++ b/samples/client/petstore/javascript-promise/docs/AdditionalPropertiesClass.md
@@ -1,4 +1,4 @@
-# SwaggerPetstore.AdditionalPropertiesClass
+# OpenApiPetstore.AdditionalPropertiesClass
 
 ## Properties
 Name | Type | Description | Notes
diff --git a/samples/client/petstore/javascript-promise/docs/Animal.md b/samples/client/petstore/javascript-promise/docs/Animal.md
index 3ae52d9db17c..7bff01675818 100644
--- a/samples/client/petstore/javascript-promise/docs/Animal.md
+++ b/samples/client/petstore/javascript-promise/docs/Animal.md
@@ -1,4 +1,4 @@
-# SwaggerPetstore.Animal
+# OpenApiPetstore.Animal
 
 ## Properties
 Name | Type | Description | Notes
diff --git a/samples/client/petstore/javascript-promise/docs/AnimalFarm.md b/samples/client/petstore/javascript-promise/docs/AnimalFarm.md
index b72739a44c42..ab153513ca9a 100644
--- a/samples/client/petstore/javascript-promise/docs/AnimalFarm.md
+++ b/samples/client/petstore/javascript-promise/docs/AnimalFarm.md
@@ -1,4 +1,4 @@
-# SwaggerPetstore.AnimalFarm
+# OpenApiPetstore.AnimalFarm
 
 ## Properties
 Name | Type | Description | Notes
diff --git a/samples/client/petstore/javascript-promise/docs/AnotherFakeApi.md b/samples/client/petstore/javascript-promise/docs/AnotherFakeApi.md
index 34529644bbae..6666cbc0df77 100644
--- a/samples/client/petstore/javascript-promise/docs/AnotherFakeApi.md
+++ b/samples/client/petstore/javascript-promise/docs/AnotherFakeApi.md
@@ -1,4 +1,4 @@
-# SwaggerPetstore.AnotherFakeApi
+# OpenApiPetstore.AnotherFakeApi
 
 All URIs are relative to *http://petstore.swagger.io:80/v2*
 
@@ -9,7 +9,7 @@ Method | HTTP request | Description
 
 
 # **testSpecialTags**
-> Client testSpecialTags(body)
+> Client testSpecialTags(client)
 
 To test special tags
 
@@ -17,13 +17,11 @@ To test special tags
 
 ### Example
 ```javascript
-var SwaggerPetstore = require('swagger_petstore');
+var OpenApiPetstore = require('open_api_petstore');
 
-var apiInstance = new SwaggerPetstore.AnotherFakeApi();
-
-var body = new SwaggerPetstore.Client(); // Client | client model
-
-apiInstance.testSpecialTags(body).then(function(data) {
+var apiInstance = new OpenApiPetstore.AnotherFakeApi();
+var client = new OpenApiPetstore.Client(); // Client | client model
+apiInstance.testSpecialTags(client).then(function(data) {
   console.log('API called successfully. Returned data: ' + data);
 }, function(error) {
   console.error(error);
@@ -35,7 +33,7 @@ apiInstance.testSpecialTags(body).then(function(data) {
 
 Name | Type | Description  | Notes
 ------------- | ------------- | ------------- | -------------
- **body** | [**Client**](Client.md)| client model | 
+ **client** | [**Client**](Client.md)| client model | 
 
 ### Return type
 
diff --git a/samples/client/petstore/javascript-promise/docs/ApiResponse.md b/samples/client/petstore/javascript-promise/docs/ApiResponse.md
index 7f023aff6015..e60378fcbfcb 100644
--- a/samples/client/petstore/javascript-promise/docs/ApiResponse.md
+++ b/samples/client/petstore/javascript-promise/docs/ApiResponse.md
@@ -1,4 +1,4 @@
-# SwaggerPetstore.ApiResponse
+# OpenApiPetstore.ApiResponse
 
 ## Properties
 Name | Type | Description | Notes
diff --git a/samples/client/petstore/javascript-promise/docs/ArrayOfArrayOfNumberOnly.md b/samples/client/petstore/javascript-promise/docs/ArrayOfArrayOfNumberOnly.md
index 1d38c9d2ed58..7a1426ef8183 100644
--- a/samples/client/petstore/javascript-promise/docs/ArrayOfArrayOfNumberOnly.md
+++ b/samples/client/petstore/javascript-promise/docs/ArrayOfArrayOfNumberOnly.md
@@ -1,4 +1,4 @@
-# SwaggerPetstore.ArrayOfArrayOfNumberOnly
+# OpenApiPetstore.ArrayOfArrayOfNumberOnly
 
 ## Properties
 Name | Type | Description | Notes
diff --git a/samples/client/petstore/javascript-promise/docs/ArrayOfNumberOnly.md b/samples/client/petstore/javascript-promise/docs/ArrayOfNumberOnly.md
index 07a86a3cef6a..7cec2e71d4b7 100644
--- a/samples/client/petstore/javascript-promise/docs/ArrayOfNumberOnly.md
+++ b/samples/client/petstore/javascript-promise/docs/ArrayOfNumberOnly.md
@@ -1,4 +1,4 @@
-# SwaggerPetstore.ArrayOfNumberOnly
+# OpenApiPetstore.ArrayOfNumberOnly
 
 ## Properties
 Name | Type | Description | Notes
diff --git a/samples/client/petstore/javascript-promise/docs/ArrayTest.md b/samples/client/petstore/javascript-promise/docs/ArrayTest.md
index e6048e9ea912..5828f6ee75bd 100644
--- a/samples/client/petstore/javascript-promise/docs/ArrayTest.md
+++ b/samples/client/petstore/javascript-promise/docs/ArrayTest.md
@@ -1,4 +1,4 @@
-# SwaggerPetstore.ArrayTest
+# OpenApiPetstore.ArrayTest
 
 ## Properties
 Name | Type | Description | Notes
diff --git a/samples/client/petstore/javascript-promise/docs/Capitalization.md b/samples/client/petstore/javascript-promise/docs/Capitalization.md
index c223a4ee9821..abeff984c628 100644
--- a/samples/client/petstore/javascript-promise/docs/Capitalization.md
+++ b/samples/client/petstore/javascript-promise/docs/Capitalization.md
@@ -1,4 +1,4 @@
-# SwaggerPetstore.Capitalization
+# OpenApiPetstore.Capitalization
 
 ## Properties
 Name | Type | Description | Notes
diff --git a/samples/client/petstore/javascript-promise/docs/Cat.md b/samples/client/petstore/javascript-promise/docs/Cat.md
index 8cd391bc911d..6dd0f057c857 100644
--- a/samples/client/petstore/javascript-promise/docs/Cat.md
+++ b/samples/client/petstore/javascript-promise/docs/Cat.md
@@ -1,4 +1,4 @@
-# SwaggerPetstore.Cat
+# OpenApiPetstore.Cat
 
 ## Properties
 Name | Type | Description | Notes
diff --git a/samples/client/petstore/javascript-promise/docs/Category.md b/samples/client/petstore/javascript-promise/docs/Category.md
index 02b2488a27a3..e3f934442abc 100644
--- a/samples/client/petstore/javascript-promise/docs/Category.md
+++ b/samples/client/petstore/javascript-promise/docs/Category.md
@@ -1,4 +1,4 @@
-# SwaggerPetstore.Category
+# OpenApiPetstore.Category
 
 ## Properties
 Name | Type | Description | Notes
diff --git a/samples/client/petstore/javascript-promise/docs/ClassModel.md b/samples/client/petstore/javascript-promise/docs/ClassModel.md
index bf8343b84b3f..6fe9c501a5d2 100644
--- a/samples/client/petstore/javascript-promise/docs/ClassModel.md
+++ b/samples/client/petstore/javascript-promise/docs/ClassModel.md
@@ -1,4 +1,4 @@
-# SwaggerPetstore.ClassModel
+# OpenApiPetstore.ClassModel
 
 ## Properties
 Name | Type | Description | Notes
diff --git a/samples/client/petstore/javascript-promise/docs/Client.md b/samples/client/petstore/javascript-promise/docs/Client.md
index 6ba28319684f..a6c7711e74e7 100644
--- a/samples/client/petstore/javascript-promise/docs/Client.md
+++ b/samples/client/petstore/javascript-promise/docs/Client.md
@@ -1,4 +1,4 @@
-# SwaggerPetstore.Client
+# OpenApiPetstore.Client
 
 ## Properties
 Name | Type | Description | Notes
diff --git a/samples/client/petstore/javascript-promise/docs/Dog.md b/samples/client/petstore/javascript-promise/docs/Dog.md
index 9253eace011b..f35663407e83 100644
--- a/samples/client/petstore/javascript-promise/docs/Dog.md
+++ b/samples/client/petstore/javascript-promise/docs/Dog.md
@@ -1,4 +1,4 @@
-# SwaggerPetstore.Dog
+# OpenApiPetstore.Dog
 
 ## Properties
 Name | Type | Description | Notes
diff --git a/samples/client/petstore/javascript-promise/docs/EnumArrays.md b/samples/client/petstore/javascript-promise/docs/EnumArrays.md
index 449a96fdbbd4..5f624e5db484 100644
--- a/samples/client/petstore/javascript-promise/docs/EnumArrays.md
+++ b/samples/client/petstore/javascript-promise/docs/EnumArrays.md
@@ -1,4 +1,4 @@
-# SwaggerPetstore.EnumArrays
+# OpenApiPetstore.EnumArrays
 
 ## Properties
 Name | Type | Description | Notes
diff --git a/samples/client/petstore/javascript-promise/docs/EnumClass.md b/samples/client/petstore/javascript-promise/docs/EnumClass.md
index 04b89362941b..cef9bb57a56c 100644
--- a/samples/client/petstore/javascript-promise/docs/EnumClass.md
+++ b/samples/client/petstore/javascript-promise/docs/EnumClass.md
@@ -1,4 +1,4 @@
-# SwaggerPetstore.EnumClass
+# OpenApiPetstore.EnumClass
 
 ## Enum
 
diff --git a/samples/client/petstore/javascript-promise/docs/EnumTest.md b/samples/client/petstore/javascript-promise/docs/EnumTest.md
index 9d85a20016d8..c9e7ce86fea5 100644
--- a/samples/client/petstore/javascript-promise/docs/EnumTest.md
+++ b/samples/client/petstore/javascript-promise/docs/EnumTest.md
@@ -1,9 +1,10 @@
-# SwaggerPetstore.EnumTest
+# OpenApiPetstore.EnumTest
 
 ## Properties
 Name | Type | Description | Notes
 ------------ | ------------- | ------------- | -------------
 **enumString** | **String** |  | [optional] 
+**enumStringRequired** | **String** |  | 
 **enumInteger** | **Number** |  | [optional] 
 **enumNumber** | **Number** |  | [optional] 
 **outerEnum** | [**OuterEnum**](OuterEnum.md) |  | [optional] 
@@ -22,6 +23,19 @@ Name | Type | Description | Notes
 
 
 
+
+## Enum: EnumStringRequiredEnum
+
+
+* `UPPER` (value: `"UPPER"`)
+
+* `lower` (value: `"lower"`)
+
+* `empty` (value: `""`)
+
+
+
+
 
 ## Enum: EnumIntegerEnum
 
diff --git a/samples/client/petstore/javascript-promise/docs/FakeApi.md b/samples/client/petstore/javascript-promise/docs/FakeApi.md
index fe941fdb1887..9d56939ca608 100644
--- a/samples/client/petstore/javascript-promise/docs/FakeApi.md
+++ b/samples/client/petstore/javascript-promise/docs/FakeApi.md
@@ -1,4 +1,4 @@
-# SwaggerPetstore.FakeApi
+# OpenApiPetstore.FakeApi
 
 All URIs are relative to *http://petstore.swagger.io:80/v2*
 
@@ -8,6 +8,7 @@ Method | HTTP request | Description
 [**fakeOuterCompositeSerialize**](FakeApi.md#fakeOuterCompositeSerialize) | **POST** /fake/outer/composite | 
 [**fakeOuterNumberSerialize**](FakeApi.md#fakeOuterNumberSerialize) | **POST** /fake/outer/number | 
 [**fakeOuterStringSerialize**](FakeApi.md#fakeOuterStringSerialize) | **POST** /fake/outer/string | 
+[**testBodyWithQueryParams**](FakeApi.md#testBodyWithQueryParams) | **PUT** /fake/body-with-query-params | 
 [**testClientModel**](FakeApi.md#testClientModel) | **PATCH** /fake | To test \"client\" model
 [**testEndpointParameters**](FakeApi.md#testEndpointParameters) | **POST** /fake | Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 
 [**testEnumParameters**](FakeApi.md#testEnumParameters) | **GET** /fake | To test enum parameters
@@ -17,7 +18,7 @@ Method | HTTP request | Description
 
 
 # **fakeOuterBooleanSerialize**
-> OuterBoolean fakeOuterBooleanSerialize(opts)
+> Boolean fakeOuterBooleanSerialize(opts)
 
 
 
@@ -25,12 +26,11 @@ Test serialization of outer boolean types
 
 ### Example
 ```javascript
-var SwaggerPetstore = require('swagger_petstore');
+var OpenApiPetstore = require('open_api_petstore');
 
-var apiInstance = new SwaggerPetstore.FakeApi();
-
-var opts = { 
-  'body': new SwaggerPetstore.OuterBoolean() // OuterBoolean | Input boolean as post body
+var apiInstance = new OpenApiPetstore.FakeApi();
+var opts = {
+  'body': true // Boolean | Input boolean as post body
 };
 apiInstance.fakeOuterBooleanSerialize(opts).then(function(data) {
   console.log('API called successfully. Returned data: ' + data);
@@ -44,11 +44,11 @@ apiInstance.fakeOuterBooleanSerialize(opts).then(function(data) {
 
 Name | Type | Description  | Notes
 ------------- | ------------- | ------------- | -------------
- **body** | [**OuterBoolean**](OuterBoolean.md)| Input boolean as post body | [optional] 
+ **body** | **Boolean**| Input boolean as post body | [optional] 
 
 ### Return type
 
-[**OuterBoolean**](OuterBoolean.md)
+**Boolean**
 
 ### Authorization
 
@@ -57,7 +57,7 @@ No authorization required
 ### HTTP request headers
 
  - **Content-Type**: Not defined
- - **Accept**: Not defined
+ - **Accept**: */*
 
 
 # **fakeOuterCompositeSerialize**
@@ -69,12 +69,11 @@ Test serialization of object with outer number type
 
 ### Example
 ```javascript
-var SwaggerPetstore = require('swagger_petstore');
-
-var apiInstance = new SwaggerPetstore.FakeApi();
+var OpenApiPetstore = require('open_api_petstore');
 
-var opts = { 
-  'body': new SwaggerPetstore.OuterComposite() // OuterComposite | Input composite as post body
+var apiInstance = new OpenApiPetstore.FakeApi();
+var opts = {
+  'outerComposite': new OpenApiPetstore.OuterComposite() // OuterComposite | Input composite as post body
 };
 apiInstance.fakeOuterCompositeSerialize(opts).then(function(data) {
   console.log('API called successfully. Returned data: ' + data);
@@ -88,7 +87,7 @@ apiInstance.fakeOuterCompositeSerialize(opts).then(function(data) {
 
 Name | Type | Description  | Notes
 ------------- | ------------- | ------------- | -------------
- **body** | [**OuterComposite**](OuterComposite.md)| Input composite as post body | [optional] 
+ **outerComposite** | [**OuterComposite**](OuterComposite.md)| Input composite as post body | [optional] 
 
 ### Return type
 
@@ -101,11 +100,11 @@ No authorization required
 ### HTTP request headers
 
  - **Content-Type**: Not defined
- - **Accept**: Not defined
+ - **Accept**: */*
 
 
 # **fakeOuterNumberSerialize**
-> OuterNumber fakeOuterNumberSerialize(opts)
+> Number fakeOuterNumberSerialize(opts)
 
 
 
@@ -113,12 +112,11 @@ Test serialization of outer number types
 
 ### Example
 ```javascript
-var SwaggerPetstore = require('swagger_petstore');
+var OpenApiPetstore = require('open_api_petstore');
 
-var apiInstance = new SwaggerPetstore.FakeApi();
-
-var opts = { 
-  'body': new SwaggerPetstore.OuterNumber() // OuterNumber | Input number as post body
+var apiInstance = new OpenApiPetstore.FakeApi();
+var opts = {
+  'body': 3.4 // Number | Input number as post body
 };
 apiInstance.fakeOuterNumberSerialize(opts).then(function(data) {
   console.log('API called successfully. Returned data: ' + data);
@@ -132,11 +130,11 @@ apiInstance.fakeOuterNumberSerialize(opts).then(function(data) {
 
 Name | Type | Description  | Notes
 ------------- | ------------- | ------------- | -------------
- **body** | [**OuterNumber**](OuterNumber.md)| Input number as post body | [optional] 
+ **body** | **Number**| Input number as post body | [optional] 
 
 ### Return type
 
-[**OuterNumber**](OuterNumber.md)
+**Number**
 
 ### Authorization
 
@@ -145,11 +143,11 @@ No authorization required
 ### HTTP request headers
 
  - **Content-Type**: Not defined
- - **Accept**: Not defined
+ - **Accept**: */*
 
 
 # **fakeOuterStringSerialize**
-> OuterString fakeOuterStringSerialize(opts)
+> String fakeOuterStringSerialize(opts)
 
 
 
@@ -157,12 +155,11 @@ Test serialization of outer string types
 
 ### Example
 ```javascript
-var SwaggerPetstore = require('swagger_petstore');
-
-var apiInstance = new SwaggerPetstore.FakeApi();
+var OpenApiPetstore = require('open_api_petstore');
 
-var opts = { 
-  'body': new SwaggerPetstore.OuterString() // OuterString | Input string as post body
+var apiInstance = new OpenApiPetstore.FakeApi();
+var opts = {
+  'body': "body_example" // String | Input string as post body
 };
 apiInstance.fakeOuterStringSerialize(opts).then(function(data) {
   console.log('API called successfully. Returned data: ' + data);
@@ -176,11 +173,11 @@ apiInstance.fakeOuterStringSerialize(opts).then(function(data) {
 
 Name | Type | Description  | Notes
 ------------- | ------------- | ------------- | -------------
- **body** | [**OuterString**](OuterString.md)| Input string as post body | [optional] 
+ **body** | **String**| Input string as post body | [optional] 
 
 ### Return type
 
-[**OuterString**](OuterString.md)
+**String**
 
 ### Authorization
 
@@ -189,11 +186,52 @@ No authorization required
 ### HTTP request headers
 
  - **Content-Type**: Not defined
+ - **Accept**: */*
+
+
+# **testBodyWithQueryParams**
+> testBodyWithQueryParams(query, user)
+
+
+
+### Example
+```javascript
+var OpenApiPetstore = require('open_api_petstore');
+
+var apiInstance = new OpenApiPetstore.FakeApi();
+var query = "query_example"; // String | 
+var user = new OpenApiPetstore.User(); // User | 
+apiInstance.testBodyWithQueryParams(query, user).then(function() {
+  console.log('API called successfully.');
+}, function(error) {
+  console.error(error);
+});
+
+```
+
+### Parameters
+
+Name | Type | Description  | Notes
+------------- | ------------- | ------------- | -------------
+ **query** | **String**|  | 
+ **user** | [**User**](User.md)|  | 
+
+### Return type
+
+null (empty response body)
+
+### Authorization
+
+No authorization required
+
+### HTTP request headers
+
+ - **Content-Type**: application/json
  - **Accept**: Not defined
 
 
 # **testClientModel**
-> Client testClientModel(body)
+> Client testClientModel(client)
 
 To test \"client\" model
 
@@ -201,13 +239,11 @@ To test \"client\" model
 
 ### Example
 ```javascript
-var SwaggerPetstore = require('swagger_petstore');
-
-var apiInstance = new SwaggerPetstore.FakeApi();
+var OpenApiPetstore = require('open_api_petstore');
 
-var body = new SwaggerPetstore.Client(); // Client | client model
-
-apiInstance.testClientModel(body).then(function(data) {
+var apiInstance = new OpenApiPetstore.FakeApi();
+var client = new OpenApiPetstore.Client(); // Client | client model
+apiInstance.testClientModel(client).then(function(data) {
   console.log('API called successfully. Returned data: ' + data);
 }, function(error) {
   console.error(error);
@@ -219,7 +255,7 @@ apiInstance.testClientModel(body).then(function(data) {
 
 Name | Type | Description  | Notes
 ------------- | ------------- | ------------- | -------------
- **body** | [**Client**](Client.md)| client model | 
+ **client** | [**Client**](Client.md)| client model | 
 
 ### Return type
 
@@ -244,31 +280,26 @@ Fake endpoint for testing various parameters 假端點 偽のエンドポイン
 
 ### Example
 ```javascript
-var SwaggerPetstore = require('swagger_petstore');
-var defaultClient = SwaggerPetstore.ApiClient.instance;
+var OpenApiPetstore = require('open_api_petstore');
+var defaultClient = OpenApiPetstore.ApiClient.instance;
 
 // Configure HTTP basic authorization: http_basic_test
 var http_basic_test = defaultClient.authentications['http_basic_test'];
 http_basic_test.username = 'YOUR USERNAME';
 http_basic_test.password = 'YOUR PASSWORD';
 
-var apiInstance = new SwaggerPetstore.FakeApi();
-
-var _number = 8.14; // Number | None
-
-var _double = 1.2; // Number | None
-
+var apiInstance = new OpenApiPetstore.FakeApi();
+var _number = 3.4; // Number | None
+var _double = 3.4; // Number | None
 var patternWithoutDelimiter = "patternWithoutDelimiter_example"; // String | None
-
-var _byte = B; // Blob | None
-
-var opts = { 
+var _byte = null; // Blob | None
+var opts = {
   'integer': 56, // Number | None
   'int32': 56, // Number | None
   'int64': 789, // Number | None
   '_float': 3.4, // Number | None
   '_string': "_string_example", // String | None
-  'binary': B, // Blob | None
+  'binary': "/path/to/file", // File | None
   '_date': new Date("2013-10-20"), // Date | None
   'dateTime': new Date("2013-10-20T19:20:30+01:00"), // Date | None
   'password': "password_example", // String | None
@@ -295,7 +326,7 @@ Name | Type | Description  | Notes
  **int64** | **Number**| None | [optional] 
  **_float** | **Number**| None | [optional] 
  **_string** | **String**| None | [optional] 
- **binary** | **Blob**| None | [optional] 
+ **binary** | **File**| None | [optional] 
  **_date** | **Date**| None | [optional] 
  **dateTime** | **Date**| None | [optional] 
  **password** | **String**| None | [optional] 
@@ -311,8 +342,8 @@ null (empty response body)
 
 ### HTTP request headers
 
- - **Content-Type**: application/xml; charset=utf-8, application/json; charset=utf-8
- - **Accept**: application/xml; charset=utf-8, application/json; charset=utf-8
+ - **Content-Type**: application/x-www-form-urlencoded
+ - **Accept**: Not defined
 
 
 # **testEnumParameters**
@@ -324,19 +355,18 @@ To test enum parameters
 
 ### Example
 ```javascript
-var SwaggerPetstore = require('swagger_petstore');
-
-var apiInstance = new SwaggerPetstore.FakeApi();
-
-var opts = { 
-  'enumFormStringArray': ["enumFormStringArray_example"], // [String] | Form parameter enum test (string array)
-  'enumFormString': "-efg", // String | Form parameter enum test (string)
-  'enumHeaderStringArray': ["enumHeaderStringArray_example"], // [String] | Header parameter enum test (string array)
-  'enumHeaderString': "-efg", // String | Header parameter enum test (string)
-  'enumQueryStringArray': ["enumQueryStringArray_example"], // [String] | Query parameter enum test (string array)
-  'enumQueryString': "-efg", // String | Query parameter enum test (string)
+var OpenApiPetstore = require('open_api_petstore');
+
+var apiInstance = new OpenApiPetstore.FakeApi();
+var opts = {
+  'enumHeaderStringArray': ["'$'"], // [String] | Header parameter enum test (string array)
+  'enumHeaderString': "'-efg'", // String | Header parameter enum test (string)
+  'enumQueryStringArray': ["'$'"], // [String] | Query parameter enum test (string array)
+  'enumQueryString': "'-efg'", // String | Query parameter enum test (string)
   'enumQueryInteger': 56, // Number | Query parameter enum test (double)
-  'enumQueryDouble': 1.2 // Number | Query parameter enum test (double)
+  'enumQueryDouble': 3.4, // Number | Query parameter enum test (double)
+  'enumFormStringArray': "'$'", // [String] | Form parameter enum test (string array)
+  'enumFormString': "'-efg'" // String | Form parameter enum test (string)
 };
 apiInstance.testEnumParameters(opts).then(function() {
   console.log('API called successfully.');
@@ -350,14 +380,14 @@ apiInstance.testEnumParameters(opts).then(function() {
 
 Name | Type | Description  | Notes
 ------------- | ------------- | ------------- | -------------
- **enumFormStringArray** | [**[String]**](String.md)| Form parameter enum test (string array) | [optional] 
- **enumFormString** | **String**| Form parameter enum test (string) | [optional] [default to -efg]
  **enumHeaderStringArray** | [**[String]**](String.md)| Header parameter enum test (string array) | [optional] 
- **enumHeaderString** | **String**| Header parameter enum test (string) | [optional] [default to -efg]
+ **enumHeaderString** | **String**| Header parameter enum test (string) | [optional] [default to '-efg']
  **enumQueryStringArray** | [**[String]**](String.md)| Query parameter enum test (string array) | [optional] 
- **enumQueryString** | **String**| Query parameter enum test (string) | [optional] [default to -efg]
+ **enumQueryString** | **String**| Query parameter enum test (string) | [optional] [default to '-efg']
  **enumQueryInteger** | **Number**| Query parameter enum test (double) | [optional] 
  **enumQueryDouble** | **Number**| Query parameter enum test (double) | [optional] 
+ **enumFormStringArray** | [**[String]**](String.md)| Form parameter enum test (string array) | [optional] [default to '$']
+ **enumFormString** | **String**| Form parameter enum test (string) | [optional] [default to '-efg']
 
 ### Return type
 
@@ -369,26 +399,22 @@ No authorization required
 
 ### HTTP request headers
 
- - **Content-Type**: */*
- - **Accept**: */*
+ - **Content-Type**: application/x-www-form-urlencoded
+ - **Accept**: Not defined
 
 
 # **testInlineAdditionalProperties**
-> testInlineAdditionalProperties(param)
+> testInlineAdditionalProperties(requestBody)
 
 test inline additionalProperties
 
-
-
 ### Example
 ```javascript
-var SwaggerPetstore = require('swagger_petstore');
-
-var apiInstance = new SwaggerPetstore.FakeApi();
+var OpenApiPetstore = require('open_api_petstore');
 
-var param = null; // Object | request body
-
-apiInstance.testInlineAdditionalProperties(param).then(function() {
+var apiInstance = new OpenApiPetstore.FakeApi();
+var requestBody = {key: "inner_example"}; // {String: String} | request body
+apiInstance.testInlineAdditionalProperties(requestBody).then(function() {
   console.log('API called successfully.');
 }, function(error) {
   console.error(error);
@@ -400,7 +426,7 @@ apiInstance.testInlineAdditionalProperties(param).then(function() {
 
 Name | Type | Description  | Notes
 ------------- | ------------- | ------------- | -------------
- **param** | **Object**| request body | 
+ **requestBody** | [**{String: String}**](String.md)| request body | 
 
 ### Return type
 
@@ -421,18 +447,13 @@ No authorization required
 
 test json serialization of form data
 
-
-
 ### Example
 ```javascript
-var SwaggerPetstore = require('swagger_petstore');
-
-var apiInstance = new SwaggerPetstore.FakeApi();
+var OpenApiPetstore = require('open_api_petstore');
 
+var apiInstance = new OpenApiPetstore.FakeApi();
 var param = "param_example"; // String | field1
-
 var param2 = "param2_example"; // String | field2
-
 apiInstance.testJsonFormData(param, param2).then(function() {
   console.log('API called successfully.');
 }, function(error) {
@@ -458,6 +479,6 @@ No authorization required
 
 ### HTTP request headers
 
- - **Content-Type**: application/json
+ - **Content-Type**: application/x-www-form-urlencoded
  - **Accept**: Not defined
 
diff --git a/samples/client/petstore/javascript-promise/docs/FakeClassnameTags123Api.md b/samples/client/petstore/javascript-promise/docs/FakeClassnameTags123Api.md
index 670ed04c196c..b2e98f7d757e 100644
--- a/samples/client/petstore/javascript-promise/docs/FakeClassnameTags123Api.md
+++ b/samples/client/petstore/javascript-promise/docs/FakeClassnameTags123Api.md
@@ -1,4 +1,4 @@
-# SwaggerPetstore.FakeClassnameTags123Api
+# OpenApiPetstore.FakeClassnameTags123Api
 
 All URIs are relative to *http://petstore.swagger.io:80/v2*
 
@@ -9,26 +9,25 @@ Method | HTTP request | Description
 
 
 # **testClassname**
-> Client testClassname(body)
+> Client testClassname(client)
+
+To test class name in snake case
 
 To test class name in snake case
 
 ### Example
 ```javascript
-var SwaggerPetstore = require('swagger_petstore');
-var defaultClient = SwaggerPetstore.ApiClient.instance;
-
+var OpenApiPetstore = require('open_api_petstore');
+var defaultClient = OpenApiPetstore.ApiClient.instance;
 // Configure API key authorization: api_key_query
 var api_key_query = defaultClient.authentications['api_key_query'];
 api_key_query.apiKey = 'YOUR API KEY';
 // Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
 //api_key_query.apiKeyPrefix = 'Token';
 
-var apiInstance = new SwaggerPetstore.FakeClassnameTags123Api();
-
-var body = new SwaggerPetstore.Client(); // Client | client model
-
-apiInstance.testClassname(body).then(function(data) {
+var apiInstance = new OpenApiPetstore.FakeClassnameTags123Api();
+var client = new OpenApiPetstore.Client(); // Client | client model
+apiInstance.testClassname(client).then(function(data) {
   console.log('API called successfully. Returned data: ' + data);
 }, function(error) {
   console.error(error);
@@ -40,7 +39,7 @@ apiInstance.testClassname(body).then(function(data) {
 
 Name | Type | Description  | Notes
 ------------- | ------------- | ------------- | -------------
- **body** | [**Client**](Client.md)| client model | 
+ **client** | [**Client**](Client.md)| client model | 
 
 ### Return type
 
diff --git a/samples/client/petstore/javascript-promise/docs/FormatTest.md b/samples/client/petstore/javascript-promise/docs/FormatTest.md
index cb5b11416faa..0f4a8405449d 100644
--- a/samples/client/petstore/javascript-promise/docs/FormatTest.md
+++ b/samples/client/petstore/javascript-promise/docs/FormatTest.md
@@ -1,4 +1,4 @@
-# SwaggerPetstore.FormatTest
+# OpenApiPetstore.FormatTest
 
 ## Properties
 Name | Type | Description | Notes
@@ -11,7 +11,7 @@ Name | Type | Description | Notes
 **_double** | **Number** |  | [optional] 
 **_string** | **String** |  | [optional] 
 **_byte** | **Blob** |  | 
-**binary** | **Blob** |  | [optional] 
+**binary** | **File** |  | [optional] 
 **_date** | **Date** |  | 
 **dateTime** | **Date** |  | [optional] 
 **uuid** | **String** |  | [optional] 
diff --git a/samples/client/petstore/javascript-promise/docs/HasOnlyReadOnly.md b/samples/client/petstore/javascript-promise/docs/HasOnlyReadOnly.md
index b9b975fced0a..abc4ce62184c 100644
--- a/samples/client/petstore/javascript-promise/docs/HasOnlyReadOnly.md
+++ b/samples/client/petstore/javascript-promise/docs/HasOnlyReadOnly.md
@@ -1,4 +1,4 @@
-# SwaggerPetstore.HasOnlyReadOnly
+# OpenApiPetstore.HasOnlyReadOnly
 
 ## Properties
 Name | Type | Description | Notes
diff --git a/samples/client/petstore/javascript-promise/docs/List.md b/samples/client/petstore/javascript-promise/docs/List.md
index 12166562e891..3a9555e34e0a 100644
--- a/samples/client/petstore/javascript-promise/docs/List.md
+++ b/samples/client/petstore/javascript-promise/docs/List.md
@@ -1,8 +1,8 @@
-# SwaggerPetstore.List
+# OpenApiPetstore.List
 
 ## Properties
 Name | Type | Description | Notes
 ------------ | ------------- | ------------- | -------------
-**_123List** | **String** |  | [optional] 
+**_123list** | **String** |  | [optional] 
 
 
diff --git a/samples/client/petstore/javascript-promise/docs/MapTest.md b/samples/client/petstore/javascript-promise/docs/MapTest.md
index 8550252a3f19..4a128da00fd0 100644
--- a/samples/client/petstore/javascript-promise/docs/MapTest.md
+++ b/samples/client/petstore/javascript-promise/docs/MapTest.md
@@ -1,4 +1,4 @@
-# SwaggerPetstore.MapTest
+# OpenApiPetstore.MapTest
 
 ## Properties
 Name | Type | Description | Notes
diff --git a/samples/client/petstore/javascript-promise/docs/MixedPropertiesAndAdditionalPropertiesClass.md b/samples/client/petstore/javascript-promise/docs/MixedPropertiesAndAdditionalPropertiesClass.md
index 31bf8b314ca4..051f771930ea 100644
--- a/samples/client/petstore/javascript-promise/docs/MixedPropertiesAndAdditionalPropertiesClass.md
+++ b/samples/client/petstore/javascript-promise/docs/MixedPropertiesAndAdditionalPropertiesClass.md
@@ -1,4 +1,4 @@
-# SwaggerPetstore.MixedPropertiesAndAdditionalPropertiesClass
+# OpenApiPetstore.MixedPropertiesAndAdditionalPropertiesClass
 
 ## Properties
 Name | Type | Description | Notes
diff --git a/samples/client/petstore/javascript-promise/docs/Model200Response.md b/samples/client/petstore/javascript-promise/docs/Model200Response.md
index f18f963c96d8..0a0d02cc32e1 100644
--- a/samples/client/petstore/javascript-promise/docs/Model200Response.md
+++ b/samples/client/petstore/javascript-promise/docs/Model200Response.md
@@ -1,4 +1,4 @@
-# SwaggerPetstore.Model200Response
+# OpenApiPetstore.Model200Response
 
 ## Properties
 Name | Type | Description | Notes
diff --git a/samples/client/petstore/javascript-promise/docs/ModelReturn.md b/samples/client/petstore/javascript-promise/docs/ModelReturn.md
index b602b39b0c58..9ce6e2038787 100644
--- a/samples/client/petstore/javascript-promise/docs/ModelReturn.md
+++ b/samples/client/petstore/javascript-promise/docs/ModelReturn.md
@@ -1,4 +1,4 @@
-# SwaggerPetstore.ModelReturn
+# OpenApiPetstore.ModelReturn
 
 ## Properties
 Name | Type | Description | Notes
diff --git a/samples/client/petstore/javascript-promise/docs/Name.md b/samples/client/petstore/javascript-promise/docs/Name.md
index 51dad9ca5783..8dfcc460361f 100644
--- a/samples/client/petstore/javascript-promise/docs/Name.md
+++ b/samples/client/petstore/javascript-promise/docs/Name.md
@@ -1,4 +1,4 @@
-# SwaggerPetstore.Name
+# OpenApiPetstore.Name
 
 ## Properties
 Name | Type | Description | Notes
@@ -6,6 +6,6 @@ Name | Type | Description | Notes
 **name** | **Number** |  | 
 **snakeCase** | **Number** |  | [optional] 
 **property** | **String** |  | [optional] 
-**_123Number** | **Number** |  | [optional] 
+**_123number** | **Number** |  | [optional] 
 
 
diff --git a/samples/client/petstore/javascript-promise/docs/NumberOnly.md b/samples/client/petstore/javascript-promise/docs/NumberOnly.md
index f7bf0abd4250..cf84674ed4e0 100644
--- a/samples/client/petstore/javascript-promise/docs/NumberOnly.md
+++ b/samples/client/petstore/javascript-promise/docs/NumberOnly.md
@@ -1,4 +1,4 @@
-# SwaggerPetstore.NumberOnly
+# OpenApiPetstore.NumberOnly
 
 ## Properties
 Name | Type | Description | Notes
diff --git a/samples/client/petstore/javascript-promise/docs/Order.md b/samples/client/petstore/javascript-promise/docs/Order.md
index 6dc0b19cd251..987992caa70a 100644
--- a/samples/client/petstore/javascript-promise/docs/Order.md
+++ b/samples/client/petstore/javascript-promise/docs/Order.md
@@ -1,4 +1,4 @@
-# SwaggerPetstore.Order
+# OpenApiPetstore.Order
 
 ## Properties
 Name | Type | Description | Notes
diff --git a/samples/client/petstore/javascript-promise/docs/OuterComposite.md b/samples/client/petstore/javascript-promise/docs/OuterComposite.md
index e4cb57f35afc..c49b32ff3290 100644
--- a/samples/client/petstore/javascript-promise/docs/OuterComposite.md
+++ b/samples/client/petstore/javascript-promise/docs/OuterComposite.md
@@ -1,10 +1,10 @@
-# SwaggerPetstore.OuterComposite
+# OpenApiPetstore.OuterComposite
 
 ## Properties
 Name | Type | Description | Notes
 ------------ | ------------- | ------------- | -------------
-**myNumber** | [**OuterNumber**](OuterNumber.md) |  | [optional] 
-**myString** | [**OuterString**](OuterString.md) |  | [optional] 
-**myBoolean** | [**OuterBoolean**](OuterBoolean.md) |  | [optional] 
+**myNumber** | **Number** |  | [optional] 
+**myString** | **String** |  | [optional] 
+**myBoolean** | **Boolean** |  | [optional] 
 
 
diff --git a/samples/client/petstore/javascript-promise/docs/OuterEnum.md b/samples/client/petstore/javascript-promise/docs/OuterEnum.md
index 4caf04ae09da..445d3f4074c8 100644
--- a/samples/client/petstore/javascript-promise/docs/OuterEnum.md
+++ b/samples/client/petstore/javascript-promise/docs/OuterEnum.md
@@ -1,4 +1,4 @@
-# SwaggerPetstore.OuterEnum
+# OpenApiPetstore.OuterEnum
 
 ## Enum
 
diff --git a/samples/client/petstore/javascript-promise/docs/Pet.md b/samples/client/petstore/javascript-promise/docs/Pet.md
index cae89de06d4c..e91ae688aad1 100644
--- a/samples/client/petstore/javascript-promise/docs/Pet.md
+++ b/samples/client/petstore/javascript-promise/docs/Pet.md
@@ -1,4 +1,4 @@
-# SwaggerPetstore.Pet
+# OpenApiPetstore.Pet
 
 ## Properties
 Name | Type | Description | Notes
diff --git a/samples/client/petstore/javascript-promise/docs/PetApi.md b/samples/client/petstore/javascript-promise/docs/PetApi.md
index 8b88dab5f5c5..28469bc95a1c 100644
--- a/samples/client/petstore/javascript-promise/docs/PetApi.md
+++ b/samples/client/petstore/javascript-promise/docs/PetApi.md
@@ -1,4 +1,4 @@
-# SwaggerPetstore.PetApi
+# OpenApiPetstore.PetApi
 
 All URIs are relative to *http://petstore.swagger.io:80/v2*
 
@@ -16,26 +16,21 @@ Method | HTTP request | Description
 
 
 # **addPet**
-> addPet(body)
+> addPet(pet)
 
 Add a new pet to the store
 
-
-
 ### Example
 ```javascript
-var SwaggerPetstore = require('swagger_petstore');
-var defaultClient = SwaggerPetstore.ApiClient.instance;
-
+var OpenApiPetstore = require('open_api_petstore');
+var defaultClient = OpenApiPetstore.ApiClient.instance;
 // Configure OAuth2 access token for authorization: petstore_auth
 var petstore_auth = defaultClient.authentications['petstore_auth'];
 petstore_auth.accessToken = 'YOUR ACCESS TOKEN';
 
-var apiInstance = new SwaggerPetstore.PetApi();
-
-var body = new SwaggerPetstore.Pet(); // Pet | Pet object that needs to be added to the store
-
-apiInstance.addPet(body).then(function() {
+var apiInstance = new OpenApiPetstore.PetApi();
+var pet = new OpenApiPetstore.Pet(); // Pet | Pet object that needs to be added to the store
+apiInstance.addPet(pet).then(function() {
   console.log('API called successfully.');
 }, function(error) {
   console.error(error);
@@ -47,7 +42,7 @@ apiInstance.addPet(body).then(function() {
 
 Name | Type | Description  | Notes
 ------------- | ------------- | ------------- | -------------
- **body** | [**Pet**](Pet.md)| Pet object that needs to be added to the store | 
+ **pet** | [**Pet**](Pet.md)| Pet object that needs to be added to the store | 
 
 ### Return type
 
@@ -60,7 +55,7 @@ null (empty response body)
 ### HTTP request headers
 
  - **Content-Type**: application/json, application/xml
- - **Accept**: application/xml, application/json
+ - **Accept**: Not defined
 
 
 # **deletePet**
@@ -68,22 +63,17 @@ null (empty response body)
 
 Deletes a pet
 
-
-
 ### Example
 ```javascript
-var SwaggerPetstore = require('swagger_petstore');
-var defaultClient = SwaggerPetstore.ApiClient.instance;
-
+var OpenApiPetstore = require('open_api_petstore');
+var defaultClient = OpenApiPetstore.ApiClient.instance;
 // Configure OAuth2 access token for authorization: petstore_auth
 var petstore_auth = defaultClient.authentications['petstore_auth'];
 petstore_auth.accessToken = 'YOUR ACCESS TOKEN';
 
-var apiInstance = new SwaggerPetstore.PetApi();
-
+var apiInstance = new OpenApiPetstore.PetApi();
 var petId = 789; // Number | Pet id to delete
-
-var opts = { 
+var opts = {
   'apiKey': "apiKey_example" // String | 
 };
 apiInstance.deletePet(petId, opts).then(function() {
@@ -112,7 +102,7 @@ null (empty response body)
 ### HTTP request headers
 
  - **Content-Type**: Not defined
- - **Accept**: application/xml, application/json
+ - **Accept**: Not defined
 
 
 # **findPetsByStatus**
@@ -124,17 +114,14 @@ Multiple status values can be provided with comma separated strings
 
 ### Example
 ```javascript
-var SwaggerPetstore = require('swagger_petstore');
-var defaultClient = SwaggerPetstore.ApiClient.instance;
-
+var OpenApiPetstore = require('open_api_petstore');
+var defaultClient = OpenApiPetstore.ApiClient.instance;
 // Configure OAuth2 access token for authorization: petstore_auth
 var petstore_auth = defaultClient.authentications['petstore_auth'];
 petstore_auth.accessToken = 'YOUR ACCESS TOKEN';
 
-var apiInstance = new SwaggerPetstore.PetApi();
-
-var status = ["status_example"]; // [String] | Status values that need to be considered for filter
-
+var apiInstance = new OpenApiPetstore.PetApi();
+var status = ["'available'"]; // [String] | Status values that need to be considered for filter
 apiInstance.findPetsByStatus(status).then(function(data) {
   console.log('API called successfully. Returned data: ' + data);
 }, function(error) {
@@ -172,17 +159,14 @@ Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3
 
 ### Example
 ```javascript
-var SwaggerPetstore = require('swagger_petstore');
-var defaultClient = SwaggerPetstore.ApiClient.instance;
-
+var OpenApiPetstore = require('open_api_petstore');
+var defaultClient = OpenApiPetstore.ApiClient.instance;
 // Configure OAuth2 access token for authorization: petstore_auth
 var petstore_auth = defaultClient.authentications['petstore_auth'];
 petstore_auth.accessToken = 'YOUR ACCESS TOKEN';
 
-var apiInstance = new SwaggerPetstore.PetApi();
-
-var tags = ["tags_example"]; // [String] | Tags to filter by
-
+var apiInstance = new OpenApiPetstore.PetApi();
+var tags = ["inner_example"]; // [String] | Tags to filter by
 apiInstance.findPetsByTags(tags).then(function(data) {
   console.log('API called successfully. Returned data: ' + data);
 }, function(error) {
@@ -220,19 +204,16 @@ Returns a single pet
 
 ### Example
 ```javascript
-var SwaggerPetstore = require('swagger_petstore');
-var defaultClient = SwaggerPetstore.ApiClient.instance;
-
+var OpenApiPetstore = require('open_api_petstore');
+var defaultClient = OpenApiPetstore.ApiClient.instance;
 // Configure API key authorization: api_key
 var api_key = defaultClient.authentications['api_key'];
 api_key.apiKey = 'YOUR API KEY';
 // Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
 //api_key.apiKeyPrefix = 'Token';
 
-var apiInstance = new SwaggerPetstore.PetApi();
-
+var apiInstance = new OpenApiPetstore.PetApi();
 var petId = 789; // Number | ID of pet to return
-
 apiInstance.getPetById(petId).then(function(data) {
   console.log('API called successfully. Returned data: ' + data);
 }, function(error) {
@@ -262,26 +243,21 @@ Name | Type | Description  | Notes
 
 
 # **updatePet**
-> updatePet(body)
+> updatePet(pet)
 
 Update an existing pet
 
-
-
 ### Example
 ```javascript
-var SwaggerPetstore = require('swagger_petstore');
-var defaultClient = SwaggerPetstore.ApiClient.instance;
-
+var OpenApiPetstore = require('open_api_petstore');
+var defaultClient = OpenApiPetstore.ApiClient.instance;
 // Configure OAuth2 access token for authorization: petstore_auth
 var petstore_auth = defaultClient.authentications['petstore_auth'];
 petstore_auth.accessToken = 'YOUR ACCESS TOKEN';
 
-var apiInstance = new SwaggerPetstore.PetApi();
-
-var body = new SwaggerPetstore.Pet(); // Pet | Pet object that needs to be added to the store
-
-apiInstance.updatePet(body).then(function() {
+var apiInstance = new OpenApiPetstore.PetApi();
+var pet = new OpenApiPetstore.Pet(); // Pet | Pet object that needs to be added to the store
+apiInstance.updatePet(pet).then(function() {
   console.log('API called successfully.');
 }, function(error) {
   console.error(error);
@@ -293,7 +269,7 @@ apiInstance.updatePet(body).then(function() {
 
 Name | Type | Description  | Notes
 ------------- | ------------- | ------------- | -------------
- **body** | [**Pet**](Pet.md)| Pet object that needs to be added to the store | 
+ **pet** | [**Pet**](Pet.md)| Pet object that needs to be added to the store | 
 
 ### Return type
 
@@ -306,7 +282,7 @@ null (empty response body)
 ### HTTP request headers
 
  - **Content-Type**: application/json, application/xml
- - **Accept**: application/xml, application/json
+ - **Accept**: Not defined
 
 
 # **updatePetWithForm**
@@ -314,22 +290,17 @@ null (empty response body)
 
 Updates a pet in the store with form data
 
-
-
 ### Example
 ```javascript
-var SwaggerPetstore = require('swagger_petstore');
-var defaultClient = SwaggerPetstore.ApiClient.instance;
-
+var OpenApiPetstore = require('open_api_petstore');
+var defaultClient = OpenApiPetstore.ApiClient.instance;
 // Configure OAuth2 access token for authorization: petstore_auth
 var petstore_auth = defaultClient.authentications['petstore_auth'];
 petstore_auth.accessToken = 'YOUR ACCESS TOKEN';
 
-var apiInstance = new SwaggerPetstore.PetApi();
-
+var apiInstance = new OpenApiPetstore.PetApi();
 var petId = 789; // Number | ID of pet that needs to be updated
-
-var opts = { 
+var opts = {
   'name': "name_example", // String | Updated name of the pet
   'status': "status_example" // String | Updated status of the pet
 };
@@ -360,7 +331,7 @@ null (empty response body)
 ### HTTP request headers
 
  - **Content-Type**: application/x-www-form-urlencoded
- - **Accept**: application/xml, application/json
+ - **Accept**: Not defined
 
 
 # **uploadFile**
@@ -368,24 +339,19 @@ null (empty response body)
 
 uploads an image
 
-
-
 ### Example
 ```javascript
-var SwaggerPetstore = require('swagger_petstore');
-var defaultClient = SwaggerPetstore.ApiClient.instance;
-
+var OpenApiPetstore = require('open_api_petstore');
+var defaultClient = OpenApiPetstore.ApiClient.instance;
 // Configure OAuth2 access token for authorization: petstore_auth
 var petstore_auth = defaultClient.authentications['petstore_auth'];
 petstore_auth.accessToken = 'YOUR ACCESS TOKEN';
 
-var apiInstance = new SwaggerPetstore.PetApi();
-
+var apiInstance = new OpenApiPetstore.PetApi();
 var petId = 789; // Number | ID of pet to update
-
-var opts = { 
+var opts = {
   'additionalMetadata': "additionalMetadata_example", // String | Additional data to pass to server
-  'file': "/path/to/file.txt" // File | file to upload
+  'file': "/path/to/file" // File | file to upload
 };
 apiInstance.uploadFile(petId, opts).then(function(data) {
   console.log('API called successfully. Returned data: ' + data);
diff --git a/samples/client/petstore/javascript-promise/docs/ReadOnlyFirst.md b/samples/client/petstore/javascript-promise/docs/ReadOnlyFirst.md
index 5a16f8acce0d..671280fba339 100644
--- a/samples/client/petstore/javascript-promise/docs/ReadOnlyFirst.md
+++ b/samples/client/petstore/javascript-promise/docs/ReadOnlyFirst.md
@@ -1,4 +1,4 @@
-# SwaggerPetstore.ReadOnlyFirst
+# OpenApiPetstore.ReadOnlyFirst
 
 ## Properties
 Name | Type | Description | Notes
diff --git a/samples/client/petstore/javascript-promise/docs/SpecialModelName.md b/samples/client/petstore/javascript-promise/docs/SpecialModelName.md
index a204af143a58..6039f53de367 100644
--- a/samples/client/petstore/javascript-promise/docs/SpecialModelName.md
+++ b/samples/client/petstore/javascript-promise/docs/SpecialModelName.md
@@ -1,4 +1,4 @@
-# SwaggerPetstore.SpecialModelName
+# OpenApiPetstore.SpecialModelName
 
 ## Properties
 Name | Type | Description | Notes
diff --git a/samples/client/petstore/javascript-promise/docs/StoreApi.md b/samples/client/petstore/javascript-promise/docs/StoreApi.md
index e0771378536c..26255c934563 100644
--- a/samples/client/petstore/javascript-promise/docs/StoreApi.md
+++ b/samples/client/petstore/javascript-promise/docs/StoreApi.md
@@ -1,4 +1,4 @@
-# SwaggerPetstore.StoreApi
+# OpenApiPetstore.StoreApi
 
 All URIs are relative to *http://petstore.swagger.io:80/v2*
 
@@ -20,12 +20,10 @@ For valid response try integer IDs with value < 1000. Anything above 1000 or
 
 ### Example
 ```javascript
-var SwaggerPetstore = require('swagger_petstore');
-
-var apiInstance = new SwaggerPetstore.StoreApi();
+var OpenApiPetstore = require('open_api_petstore');
 
+var apiInstance = new OpenApiPetstore.StoreApi();
 var orderId = "orderId_example"; // String | ID of the order that needs to be deleted
-
 apiInstance.deleteOrder(orderId).then(function() {
   console.log('API called successfully.');
 }, function(error) {
@@ -51,11 +49,11 @@ No authorization required
 ### HTTP request headers
 
  - **Content-Type**: Not defined
- - **Accept**: application/xml, application/json
+ - **Accept**: Not defined
 
 
 # **getInventory**
-> {'String': 'Number'} getInventory()
+> {String: Number} getInventory()
 
 Returns pet inventories by status
 
@@ -63,16 +61,15 @@ Returns a map of status codes to quantities
 
 ### Example
 ```javascript
-var SwaggerPetstore = require('swagger_petstore');
-var defaultClient = SwaggerPetstore.ApiClient.instance;
-
+var OpenApiPetstore = require('open_api_petstore');
+var defaultClient = OpenApiPetstore.ApiClient.instance;
 // Configure API key authorization: api_key
 var api_key = defaultClient.authentications['api_key'];
 api_key.apiKey = 'YOUR API KEY';
 // Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
 //api_key.apiKeyPrefix = 'Token';
 
-var apiInstance = new SwaggerPetstore.StoreApi();
+var apiInstance = new OpenApiPetstore.StoreApi();
 apiInstance.getInventory().then(function(data) {
   console.log('API called successfully. Returned data: ' + data);
 }, function(error) {
@@ -86,7 +83,7 @@ This endpoint does not need any parameter.
 
 ### Return type
 
-**{'String': 'Number'}**
+**{String: Number}**
 
 ### Authorization
 
@@ -107,12 +104,10 @@ For valid response try integer IDs with value <= 5 or > 10. Other val
 
 ### Example
 ```javascript
-var SwaggerPetstore = require('swagger_petstore');
-
-var apiInstance = new SwaggerPetstore.StoreApi();
+var OpenApiPetstore = require('open_api_petstore');
 
+var apiInstance = new OpenApiPetstore.StoreApi();
 var orderId = 789; // Number | ID of pet that needs to be fetched
-
 apiInstance.getOrderById(orderId).then(function(data) {
   console.log('API called successfully. Returned data: ' + data);
 }, function(error) {
@@ -142,21 +137,17 @@ No authorization required
 
 
 # **placeOrder**
-> Order placeOrder(body)
+> Order placeOrder(order)
 
 Place an order for a pet
 
-
-
 ### Example
 ```javascript
-var SwaggerPetstore = require('swagger_petstore');
-
-var apiInstance = new SwaggerPetstore.StoreApi();
-
-var body = new SwaggerPetstore.Order(); // Order | order placed for purchasing the pet
+var OpenApiPetstore = require('open_api_petstore');
 
-apiInstance.placeOrder(body).then(function(data) {
+var apiInstance = new OpenApiPetstore.StoreApi();
+var order = new OpenApiPetstore.Order(); // Order | order placed for purchasing the pet
+apiInstance.placeOrder(order).then(function(data) {
   console.log('API called successfully. Returned data: ' + data);
 }, function(error) {
   console.error(error);
@@ -168,7 +159,7 @@ apiInstance.placeOrder(body).then(function(data) {
 
 Name | Type | Description  | Notes
 ------------- | ------------- | ------------- | -------------
- **body** | [**Order**](Order.md)| order placed for purchasing the pet | 
+ **order** | [**Order**](Order.md)| order placed for purchasing the pet | 
 
 ### Return type
 
diff --git a/samples/client/petstore/javascript-promise/docs/Tag.md b/samples/client/petstore/javascript-promise/docs/Tag.md
index c0277cae8ffe..a53941e80e0c 100644
--- a/samples/client/petstore/javascript-promise/docs/Tag.md
+++ b/samples/client/petstore/javascript-promise/docs/Tag.md
@@ -1,4 +1,4 @@
-# SwaggerPetstore.Tag
+# OpenApiPetstore.Tag
 
 ## Properties
 Name | Type | Description | Notes
diff --git a/samples/client/petstore/javascript-promise/docs/User.md b/samples/client/petstore/javascript-promise/docs/User.md
index 2cac604cfa0b..2e86dd378bfa 100644
--- a/samples/client/petstore/javascript-promise/docs/User.md
+++ b/samples/client/petstore/javascript-promise/docs/User.md
@@ -1,4 +1,4 @@
-# SwaggerPetstore.User
+# OpenApiPetstore.User
 
 ## Properties
 Name | Type | Description | Notes
diff --git a/samples/client/petstore/javascript-promise/docs/UserApi.md b/samples/client/petstore/javascript-promise/docs/UserApi.md
index 3102a61d648a..3439dda5cd34 100644
--- a/samples/client/petstore/javascript-promise/docs/UserApi.md
+++ b/samples/client/petstore/javascript-promise/docs/UserApi.md
@@ -1,4 +1,4 @@
-# SwaggerPetstore.UserApi
+# OpenApiPetstore.UserApi
 
 All URIs are relative to *http://petstore.swagger.io:80/v2*
 
@@ -16,7 +16,7 @@ Method | HTTP request | Description
 
 
 # **createUser**
-> createUser(body)
+> createUser(user)
 
 Create user
 
@@ -24,13 +24,11 @@ This can only be done by the logged in user.
 
 ### Example
 ```javascript
-var SwaggerPetstore = require('swagger_petstore');
+var OpenApiPetstore = require('open_api_petstore');
 
-var apiInstance = new SwaggerPetstore.UserApi();
-
-var body = new SwaggerPetstore.User(); // User | Created user object
-
-apiInstance.createUser(body).then(function() {
+var apiInstance = new OpenApiPetstore.UserApi();
+var user = new OpenApiPetstore.User(); // User | Created user object
+apiInstance.createUser(user).then(function() {
   console.log('API called successfully.');
 }, function(error) {
   console.error(error);
@@ -42,7 +40,7 @@ apiInstance.createUser(body).then(function() {
 
 Name | Type | Description  | Notes
 ------------- | ------------- | ------------- | -------------
- **body** | [**User**](User.md)| Created user object | 
+ **user** | [**User**](User.md)| Created user object | 
 
 ### Return type
 
@@ -55,25 +53,21 @@ No authorization required
 ### HTTP request headers
 
  - **Content-Type**: Not defined
- - **Accept**: application/xml, application/json
+ - **Accept**: Not defined
 
 
 # **createUsersWithArrayInput**
-> createUsersWithArrayInput(body)
+> createUsersWithArrayInput(user)
 
 Creates list of users with given input array
 
-
-
 ### Example
 ```javascript
-var SwaggerPetstore = require('swagger_petstore');
-
-var apiInstance = new SwaggerPetstore.UserApi();
+var OpenApiPetstore = require('open_api_petstore');
 
-var body = [new SwaggerPetstore.User()]; // [User] | List of user object
-
-apiInstance.createUsersWithArrayInput(body).then(function() {
+var apiInstance = new OpenApiPetstore.UserApi();
+var user = [new OpenApiPetstore.User()]; // [User] | List of user object
+apiInstance.createUsersWithArrayInput(user).then(function() {
   console.log('API called successfully.');
 }, function(error) {
   console.error(error);
@@ -85,7 +79,7 @@ apiInstance.createUsersWithArrayInput(body).then(function() {
 
 Name | Type | Description  | Notes
 ------------- | ------------- | ------------- | -------------
- **body** | [**[User]**](User.md)| List of user object | 
+ **user** | [**[User]**](Array.md)| List of user object | 
 
 ### Return type
 
@@ -98,25 +92,21 @@ No authorization required
 ### HTTP request headers
 
  - **Content-Type**: Not defined
- - **Accept**: application/xml, application/json
+ - **Accept**: Not defined
 
 
 # **createUsersWithListInput**
-> createUsersWithListInput(body)
+> createUsersWithListInput(user)
 
 Creates list of users with given input array
 
-
-
 ### Example
 ```javascript
-var SwaggerPetstore = require('swagger_petstore');
-
-var apiInstance = new SwaggerPetstore.UserApi();
-
-var body = [new SwaggerPetstore.User()]; // [User] | List of user object
+var OpenApiPetstore = require('open_api_petstore');
 
-apiInstance.createUsersWithListInput(body).then(function() {
+var apiInstance = new OpenApiPetstore.UserApi();
+var user = [new OpenApiPetstore.User()]; // [User] | List of user object
+apiInstance.createUsersWithListInput(user).then(function() {
   console.log('API called successfully.');
 }, function(error) {
   console.error(error);
@@ -128,7 +118,7 @@ apiInstance.createUsersWithListInput(body).then(function() {
 
 Name | Type | Description  | Notes
 ------------- | ------------- | ------------- | -------------
- **body** | [**[User]**](User.md)| List of user object | 
+ **user** | [**[User]**](Array.md)| List of user object | 
 
 ### Return type
 
@@ -141,7 +131,7 @@ No authorization required
 ### HTTP request headers
 
  - **Content-Type**: Not defined
- - **Accept**: application/xml, application/json
+ - **Accept**: Not defined
 
 
 # **deleteUser**
@@ -153,12 +143,10 @@ This can only be done by the logged in user.
 
 ### Example
 ```javascript
-var SwaggerPetstore = require('swagger_petstore');
-
-var apiInstance = new SwaggerPetstore.UserApi();
+var OpenApiPetstore = require('open_api_petstore');
 
+var apiInstance = new OpenApiPetstore.UserApi();
 var username = "username_example"; // String | The name that needs to be deleted
-
 apiInstance.deleteUser(username).then(function() {
   console.log('API called successfully.');
 }, function(error) {
@@ -184,7 +172,7 @@ No authorization required
 ### HTTP request headers
 
  - **Content-Type**: Not defined
- - **Accept**: application/xml, application/json
+ - **Accept**: Not defined
 
 
 # **getUserByName**
@@ -192,16 +180,12 @@ No authorization required
 
 Get user by user name
 
-
-
 ### Example
 ```javascript
-var SwaggerPetstore = require('swagger_petstore');
-
-var apiInstance = new SwaggerPetstore.UserApi();
-
-var username = "username_example"; // String | The name that needs to be fetched. Use user1 for testing. 
+var OpenApiPetstore = require('open_api_petstore');
 
+var apiInstance = new OpenApiPetstore.UserApi();
+var username = "username_example"; // String | The name that needs to be fetched. Use user1 for testing.
 apiInstance.getUserByName(username).then(function(data) {
   console.log('API called successfully. Returned data: ' + data);
 }, function(error) {
@@ -214,7 +198,7 @@ apiInstance.getUserByName(username).then(function(data) {
 
 Name | Type | Description  | Notes
 ------------- | ------------- | ------------- | -------------
- **username** | **String**| The name that needs to be fetched. Use user1 for testing.  | 
+ **username** | **String**| The name that needs to be fetched. Use user1 for testing. | 
 
 ### Return type
 
@@ -231,22 +215,17 @@ No authorization required
 
 
 # **loginUser**
-> 'String' loginUser(username, password)
+> String loginUser(username, password)
 
 Logs user into the system
 
-
-
 ### Example
 ```javascript
-var SwaggerPetstore = require('swagger_petstore');
-
-var apiInstance = new SwaggerPetstore.UserApi();
+var OpenApiPetstore = require('open_api_petstore');
 
+var apiInstance = new OpenApiPetstore.UserApi();
 var username = "username_example"; // String | The user name for login
-
 var password = "password_example"; // String | The password for login in clear text
-
 apiInstance.loginUser(username, password).then(function(data) {
   console.log('API called successfully. Returned data: ' + data);
 }, function(error) {
@@ -264,7 +243,7 @@ Name | Type | Description  | Notes
 
 ### Return type
 
-**'String'**
+**String**
 
 ### Authorization
 
@@ -281,13 +260,11 @@ No authorization required
 
 Logs out current logged in user session
 
-
-
 ### Example
 ```javascript
-var SwaggerPetstore = require('swagger_petstore');
+var OpenApiPetstore = require('open_api_petstore');
 
-var apiInstance = new SwaggerPetstore.UserApi();
+var apiInstance = new OpenApiPetstore.UserApi();
 apiInstance.logoutUser().then(function() {
   console.log('API called successfully.');
 }, function(error) {
@@ -310,11 +287,11 @@ No authorization required
 ### HTTP request headers
 
  - **Content-Type**: Not defined
- - **Accept**: application/xml, application/json
+ - **Accept**: Not defined
 
 
 # **updateUser**
-> updateUser(username, body)
+> updateUser(username, user)
 
 Updated user
 
@@ -322,15 +299,12 @@ This can only be done by the logged in user.
 
 ### Example
 ```javascript
-var SwaggerPetstore = require('swagger_petstore');
-
-var apiInstance = new SwaggerPetstore.UserApi();
+var OpenApiPetstore = require('open_api_petstore');
 
+var apiInstance = new OpenApiPetstore.UserApi();
 var username = "username_example"; // String | name that need to be deleted
-
-var body = new SwaggerPetstore.User(); // User | Updated user object
-
-apiInstance.updateUser(username, body).then(function() {
+var user = new OpenApiPetstore.User(); // User | Updated user object
+apiInstance.updateUser(username, user).then(function() {
   console.log('API called successfully.');
 }, function(error) {
   console.error(error);
@@ -343,7 +317,7 @@ apiInstance.updateUser(username, body).then(function() {
 Name | Type | Description  | Notes
 ------------- | ------------- | ------------- | -------------
  **username** | **String**| name that need to be deleted | 
- **body** | [**User**](User.md)| Updated user object | 
+ **user** | [**User**](User.md)| Updated user object | 
 
 ### Return type
 
@@ -356,5 +330,5 @@ No authorization required
 ### HTTP request headers
 
  - **Content-Type**: Not defined
- - **Accept**: application/xml, application/json
+ - **Accept**: Not defined
 
diff --git a/samples/client/petstore/javascript-promise/git_push.sh b/samples/client/petstore/javascript-promise/git_push.sh
index 0d041ad0ba49..04dd5df38e83 100644
--- a/samples/client/petstore/javascript-promise/git_push.sh
+++ b/samples/client/petstore/javascript-promise/git_push.sh
@@ -1,7 +1,7 @@
 #!/bin/sh
 # ref: https://help.github.com/articles/adding-an-existing-project-to-github-using-the-command-line/
 #
-# Usage example: /bin/sh ./git_push.sh wing328 swagger-petstore-perl "minor update"
+# Usage example: /bin/sh ./git_push.sh wing328 openapi-pestore-perl "minor update"
 
 git_user_id=$1
 git_repo_id=$2
diff --git a/samples/client/petstore/javascript-promise/package.json b/samples/client/petstore/javascript-promise/package.json
index e9678cd1878e..6cee1971957b 100644
--- a/samples/client/petstore/javascript-promise/package.json
+++ b/samples/client/petstore/javascript-promise/package.json
@@ -1,5 +1,5 @@
 {
-  "name": "swagger_petstore",
+  "name": "open_api_petstore",
   "version": "1.0.0",
   "description": "This_spec_is_mainly_for_testing_Petstore_server_and_contains_fake_endpoints_models__Please_do_not_use_this_for_any_other_purpose__Special_characters__",
   "license": "Apache-2.0",
diff --git a/samples/client/petstore/javascript-promise/pom.xml b/samples/client/petstore/javascript-promise/pom.xml
index d77a24fcd75c..7aa5b80ba8cc 100644
--- a/samples/client/petstore/javascript-promise/pom.xml
+++ b/samples/client/petstore/javascript-promise/pom.xml
@@ -1,10 +1,10 @@
 
     4.0.0
-    io.swagger
-    swagger-petstore-javascript-promise
+    org.openapitools
+    openapi-petstore-javascript-promise
     pom
     1.0-SNAPSHOT
-    Swagger Petstore - Javascript Client (Promise version)
+    OpenAPI Petstore JS Client (Promise)
     
         
             
diff --git a/samples/client/petstore/javascript-promise/src/ApiClient.js b/samples/client/petstore/javascript-promise/src/ApiClient.js
index 691f409db9eb..435175dc8d6b 100644
--- a/samples/client/petstore/javascript-promise/src/ApiClient.js
+++ b/samples/client/petstore/javascript-promise/src/ApiClient.js
@@ -1,14 +1,13 @@
 /**
- * Swagger Petstore
+ * OpenAPI Petstore
  * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
  *
  * OpenAPI spec version: 1.0.0
- * Contact: apiteam@swagger.io
  *
- * NOTE: This class is auto generated by the swagger code generator program.
- * https://github.com/swagger-api/swagger-codegen.git
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
  *
- * Swagger Codegen version: 2.3.0-SNAPSHOT
+ * OpenAPI Generator version: 3.0.2-SNAPSHOT
  *
  * Do not edit the class manually.
  *
@@ -23,10 +22,10 @@
     module.exports = factory(require('superagent'), require('querystring'));
   } else {
     // Browser globals (root is window)
-    if (!root.SwaggerPetstore) {
-      root.SwaggerPetstore = {};
+    if (!root.OpenApiPetstore) {
+      root.OpenApiPetstore = {};
     }
-    root.SwaggerPetstore.ApiClient = factory(root.superagent, root.querystring);
+    root.OpenApiPetstore.ApiClient = factory(root.superagent, root.querystring);
   }
 }(this, function(superagent, querystring) {
   'use strict';
diff --git a/samples/client/petstore/javascript-promise/src/api/AnotherFakeApi.js b/samples/client/petstore/javascript-promise/src/api/AnotherFakeApi.js
index eabb53763c2a..7821ec7a222e 100644
--- a/samples/client/petstore/javascript-promise/src/api/AnotherFakeApi.js
+++ b/samples/client/petstore/javascript-promise/src/api/AnotherFakeApi.js
@@ -1,14 +1,13 @@
 /**
- * Swagger Petstore
+ * OpenAPI Petstore
  * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
  *
  * OpenAPI spec version: 1.0.0
- * Contact: apiteam@swagger.io
  *
- * NOTE: This class is auto generated by the swagger code generator program.
- * https://github.com/swagger-api/swagger-codegen.git
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
  *
- * Swagger Codegen version: 2.3.0-SNAPSHOT
+ * OpenAPI Generator version: 3.0.2-SNAPSHOT
  *
  * Do not edit the class manually.
  *
@@ -23,10 +22,10 @@
     module.exports = factory(require('../ApiClient'), require('../model/Client'));
   } else {
     // Browser globals (root is window)
-    if (!root.SwaggerPetstore) {
-      root.SwaggerPetstore = {};
+    if (!root.OpenApiPetstore) {
+      root.OpenApiPetstore = {};
     }
-    root.SwaggerPetstore.AnotherFakeApi = factory(root.SwaggerPetstore.ApiClient, root.SwaggerPetstore.Client);
+    root.OpenApiPetstore.AnotherFakeApi = factory(root.OpenApiPetstore.ApiClient, root.OpenApiPetstore.Client);
   }
 }(this, function(ApiClient, Client) {
   'use strict';
@@ -52,15 +51,15 @@
     /**
      * To test special tags
      * To test special tags
-     * @param {module:model/Client} body client model
+     * @param {module:model/Client} client client model
      * @return {Promise} a {@link https://www.promisejs.org/|Promise}, with an object containing data of type {@link module:model/Client} and HTTP response
      */
-    this.testSpecialTagsWithHttpInfo = function(body) {
-      var postBody = body;
+    this.testSpecialTagsWithHttpInfo = function(client) {
+      var postBody = client;
 
-      // verify the required parameter 'body' is set
-      if (body === undefined || body === null) {
-        throw new Error("Missing the required parameter 'body' when calling testSpecialTags");
+      // verify the required parameter 'client' is set
+      if (client === undefined || client === null) {
+        throw new Error("Missing the required parameter 'client' when calling testSpecialTags");
       }
 
 
@@ -90,11 +89,11 @@
     /**
      * To test special tags
      * To test special tags
-     * @param {module:model/Client} body client model
+     * @param {module:model/Client} client client model
      * @return {Promise} a {@link https://www.promisejs.org/|Promise}, with data of type {@link module:model/Client}
      */
-    this.testSpecialTags = function(body) {
-      return this.testSpecialTagsWithHttpInfo(body)
+    this.testSpecialTags = function(client) {
+      return this.testSpecialTagsWithHttpInfo(client)
         .then(function(response_and_data) {
           return response_and_data.data;
         });
diff --git a/samples/client/petstore/javascript-promise/src/api/FakeApi.js b/samples/client/petstore/javascript-promise/src/api/FakeApi.js
index 0f06c046e0e7..8b07f17c78f9 100644
--- a/samples/client/petstore/javascript-promise/src/api/FakeApi.js
+++ b/samples/client/petstore/javascript-promise/src/api/FakeApi.js
@@ -1,14 +1,13 @@
 /**
- * Swagger Petstore
+ * OpenAPI Petstore
  * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
  *
  * OpenAPI spec version: 1.0.0
- * Contact: apiteam@swagger.io
  *
- * NOTE: This class is auto generated by the swagger code generator program.
- * https://github.com/swagger-api/swagger-codegen.git
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
  *
- * Swagger Codegen version: 2.3.0-SNAPSHOT
+ * OpenAPI Generator version: 3.0.2-SNAPSHOT
  *
  * Do not edit the class manually.
  *
@@ -17,18 +16,18 @@
 (function(root, factory) {
   if (typeof define === 'function' && define.amd) {
     // AMD. Register as an anonymous module.
-    define(['ApiClient', 'model/Client', 'model/OuterBoolean', 'model/OuterComposite', 'model/OuterNumber', 'model/OuterString'], factory);
+    define(['ApiClient', 'model/Client', 'model/OuterComposite', 'model/User'], factory);
   } else if (typeof module === 'object' && module.exports) {
     // CommonJS-like environments that support module.exports, like Node.
-    module.exports = factory(require('../ApiClient'), require('../model/Client'), require('../model/OuterBoolean'), require('../model/OuterComposite'), require('../model/OuterNumber'), require('../model/OuterString'));
+    module.exports = factory(require('../ApiClient'), require('../model/Client'), require('../model/OuterComposite'), require('../model/User'));
   } else {
     // Browser globals (root is window)
-    if (!root.SwaggerPetstore) {
-      root.SwaggerPetstore = {};
+    if (!root.OpenApiPetstore) {
+      root.OpenApiPetstore = {};
     }
-    root.SwaggerPetstore.FakeApi = factory(root.SwaggerPetstore.ApiClient, root.SwaggerPetstore.Client, root.SwaggerPetstore.OuterBoolean, root.SwaggerPetstore.OuterComposite, root.SwaggerPetstore.OuterNumber, root.SwaggerPetstore.OuterString);
+    root.OpenApiPetstore.FakeApi = factory(root.OpenApiPetstore.ApiClient, root.OpenApiPetstore.Client, root.OpenApiPetstore.OuterComposite, root.OpenApiPetstore.User);
   }
-}(this, function(ApiClient, Client, OuterBoolean, OuterComposite, OuterNumber, OuterString) {
+}(this, function(ApiClient, Client, OuterComposite, User) {
   'use strict';
 
   /**
@@ -52,8 +51,8 @@
     /**
      * Test serialization of outer boolean types
      * @param {Object} opts Optional parameters
-     * @param {module:model/OuterBoolean} opts.body Input boolean as post body
-     * @return {Promise} a {@link https://www.promisejs.org/|Promise}, with an object containing data of type {@link module:model/OuterBoolean} and HTTP response
+     * @param {Boolean} opts.body Input boolean as post body
+     * @return {Promise} a {@link https://www.promisejs.org/|Promise}, with an object containing data of type {@link Boolean} and HTTP response
      */
     this.fakeOuterBooleanSerializeWithHttpInfo = function(opts) {
       opts = opts || {};
@@ -73,8 +72,8 @@
 
       var authNames = [];
       var contentTypes = [];
-      var accepts = [];
-      var returnType = OuterBoolean;
+      var accepts = ['*/*'];
+      var returnType = 'Boolean';
 
       return this.apiClient.callApi(
         '/fake/outer/boolean', 'POST',
@@ -86,8 +85,8 @@
     /**
      * Test serialization of outer boolean types
      * @param {Object} opts Optional parameters
-     * @param {module:model/OuterBoolean} opts.body Input boolean as post body
-     * @return {Promise} a {@link https://www.promisejs.org/|Promise}, with data of type {@link module:model/OuterBoolean}
+     * @param {Boolean} opts.body Input boolean as post body
+     * @return {Promise} a {@link https://www.promisejs.org/|Promise}, with data of type {@link Boolean}
      */
     this.fakeOuterBooleanSerialize = function(opts) {
       return this.fakeOuterBooleanSerializeWithHttpInfo(opts)
@@ -100,12 +99,12 @@
     /**
      * Test serialization of object with outer number type
      * @param {Object} opts Optional parameters
-     * @param {module:model/OuterComposite} opts.body Input composite as post body
+     * @param {module:model/OuterComposite} opts.outerComposite Input composite as post body
      * @return {Promise} a {@link https://www.promisejs.org/|Promise}, with an object containing data of type {@link module:model/OuterComposite} and HTTP response
      */
     this.fakeOuterCompositeSerializeWithHttpInfo = function(opts) {
       opts = opts || {};
-      var postBody = opts['body'];
+      var postBody = opts['outerComposite'];
 
 
       var pathParams = {
@@ -121,7 +120,7 @@
 
       var authNames = [];
       var contentTypes = [];
-      var accepts = [];
+      var accepts = ['*/*'];
       var returnType = OuterComposite;
 
       return this.apiClient.callApi(
@@ -134,7 +133,7 @@
     /**
      * Test serialization of object with outer number type
      * @param {Object} opts Optional parameters
-     * @param {module:model/OuterComposite} opts.body Input composite as post body
+     * @param {module:model/OuterComposite} opts.outerComposite Input composite as post body
      * @return {Promise} a {@link https://www.promisejs.org/|Promise}, with data of type {@link module:model/OuterComposite}
      */
     this.fakeOuterCompositeSerialize = function(opts) {
@@ -148,8 +147,8 @@
     /**
      * Test serialization of outer number types
      * @param {Object} opts Optional parameters
-     * @param {module:model/OuterNumber} opts.body Input number as post body
-     * @return {Promise} a {@link https://www.promisejs.org/|Promise}, with an object containing data of type {@link module:model/OuterNumber} and HTTP response
+     * @param {Number} opts.body Input number as post body
+     * @return {Promise} a {@link https://www.promisejs.org/|Promise}, with an object containing data of type {@link Number} and HTTP response
      */
     this.fakeOuterNumberSerializeWithHttpInfo = function(opts) {
       opts = opts || {};
@@ -169,8 +168,8 @@
 
       var authNames = [];
       var contentTypes = [];
-      var accepts = [];
-      var returnType = OuterNumber;
+      var accepts = ['*/*'];
+      var returnType = 'Number';
 
       return this.apiClient.callApi(
         '/fake/outer/number', 'POST',
@@ -182,8 +181,8 @@
     /**
      * Test serialization of outer number types
      * @param {Object} opts Optional parameters
-     * @param {module:model/OuterNumber} opts.body Input number as post body
-     * @return {Promise} a {@link https://www.promisejs.org/|Promise}, with data of type {@link module:model/OuterNumber}
+     * @param {Number} opts.body Input number as post body
+     * @return {Promise} a {@link https://www.promisejs.org/|Promise}, with data of type {@link Number}
      */
     this.fakeOuterNumberSerialize = function(opts) {
       return this.fakeOuterNumberSerializeWithHttpInfo(opts)
@@ -196,8 +195,8 @@
     /**
      * Test serialization of outer string types
      * @param {Object} opts Optional parameters
-     * @param {module:model/OuterString} opts.body Input string as post body
-     * @return {Promise} a {@link https://www.promisejs.org/|Promise}, with an object containing data of type {@link module:model/OuterString} and HTTP response
+     * @param {String} opts.body Input string as post body
+     * @return {Promise} a {@link https://www.promisejs.org/|Promise}, with an object containing data of type {@link String} and HTTP response
      */
     this.fakeOuterStringSerializeWithHttpInfo = function(opts) {
       opts = opts || {};
@@ -217,8 +216,8 @@
 
       var authNames = [];
       var contentTypes = [];
-      var accepts = [];
-      var returnType = OuterString;
+      var accepts = ['*/*'];
+      var returnType = 'String';
 
       return this.apiClient.callApi(
         '/fake/outer/string', 'POST',
@@ -230,8 +229,8 @@
     /**
      * Test serialization of outer string types
      * @param {Object} opts Optional parameters
-     * @param {module:model/OuterString} opts.body Input string as post body
-     * @return {Promise} a {@link https://www.promisejs.org/|Promise}, with data of type {@link module:model/OuterString}
+     * @param {String} opts.body Input string as post body
+     * @return {Promise} a {@link https://www.promisejs.org/|Promise}, with data of type {@link String}
      */
     this.fakeOuterStringSerialize = function(opts) {
       return this.fakeOuterStringSerializeWithHttpInfo(opts)
@@ -241,18 +240,74 @@
     }
 
 
+    /**
+     * @param {String} query 
+     * @param {module:model/User} user 
+     * @return {Promise} a {@link https://www.promisejs.org/|Promise}, with an object containing HTTP response
+     */
+    this.testBodyWithQueryParamsWithHttpInfo = function(query, user) {
+      var postBody = user;
+
+      // verify the required parameter 'query' is set
+      if (query === undefined || query === null) {
+        throw new Error("Missing the required parameter 'query' when calling testBodyWithQueryParams");
+      }
+
+      // verify the required parameter 'user' is set
+      if (user === undefined || user === null) {
+        throw new Error("Missing the required parameter 'user' when calling testBodyWithQueryParams");
+      }
+
+
+      var pathParams = {
+      };
+      var queryParams = {
+        'query': query,
+      };
+      var collectionQueryParams = {
+      };
+      var headerParams = {
+      };
+      var formParams = {
+      };
+
+      var authNames = [];
+      var contentTypes = ['application/json'];
+      var accepts = [];
+      var returnType = null;
+
+      return this.apiClient.callApi(
+        '/fake/body-with-query-params', 'PUT',
+        pathParams, queryParams, collectionQueryParams, headerParams, formParams, postBody,
+        authNames, contentTypes, accepts, returnType
+      );
+    }
+
+    /**
+     * @param {String} query 
+     * @param {module:model/User} user 
+     * @return {Promise} a {@link https://www.promisejs.org/|Promise}
+     */
+    this.testBodyWithQueryParams = function(query, user) {
+      return this.testBodyWithQueryParamsWithHttpInfo(query, user)
+        .then(function(response_and_data) {
+          return response_and_data.data;
+        });
+    }
+
+
     /**
      * To test \"client\" model
      * To test \"client\" model
-     * @param {module:model/Client} body client model
+     * @param {module:model/Client} client client model
      * @return {Promise} a {@link https://www.promisejs.org/|Promise}, with an object containing data of type {@link module:model/Client} and HTTP response
      */
-    this.testClientModelWithHttpInfo = function(body) {
-      var postBody = body;
+    this.testClientModelWithHttpInfo = function(client) {
+      var postBody = client;
 
-      // verify the required parameter 'body' is set
-      if (body === undefined || body === null) {
-        throw new Error("Missing the required parameter 'body' when calling testClientModel");
+      // verify the required parameter 'client' is set
+      if (client === undefined || client === null) {
+        throw new Error("Missing the required parameter 'client' when calling testClientModel");
       }
 
 
@@ -282,11 +337,11 @@
     /**
      * To test \"client\" model
      * To test \"client\" model
-     * @param {module:model/Client} body client model
+     * @param {module:model/Client} client client model
      * @return {Promise} a {@link https://www.promisejs.org/|Promise}, with data of type {@link module:model/Client}
      */
-    this.testClientModel = function(body) {
-      return this.testClientModelWithHttpInfo(body)
+    this.testClientModel = function(client) {
+      return this.testClientModelWithHttpInfo(client)
         .then(function(response_and_data) {
           return response_and_data.data;
         });
@@ -306,7 +361,7 @@
      * @param {Number} opts.int64 None
      * @param {Number} opts._float None
      * @param {String} opts._string None
-     * @param {Blob} opts.binary None
+     * @param {File} opts.binary None
      * @param {Date} opts._date None
      * @param {Date} opts.dateTime None
      * @param {String} opts.password None
@@ -364,8 +419,8 @@
       };
 
       var authNames = ['http_basic_test'];
-      var contentTypes = ['application/xml; charset=utf-8', 'application/json; charset=utf-8'];
-      var accepts = ['application/xml; charset=utf-8', 'application/json; charset=utf-8'];
+      var contentTypes = ['application/x-www-form-urlencoded'];
+      var accepts = [];
       var returnType = null;
 
       return this.apiClient.callApi(
@@ -388,7 +443,7 @@
      * @param {Number} opts.int64 None
      * @param {Number} opts._float None
      * @param {String} opts._string None
-     * @param {Blob} opts.binary None
+     * @param {File} opts.binary None
      * @param {Date} opts._date None
      * @param {Date} opts.dateTime None
      * @param {String} opts.password None
@@ -407,14 +462,14 @@
      * To test enum parameters
      * To test enum parameters
      * @param {Object} opts Optional parameters
-     * @param {Array.} opts.enumFormStringArray Form parameter enum test (string array)
-     * @param {module:model/String} opts.enumFormString Form parameter enum test (string) (default to -efg)
      * @param {Array.} opts.enumHeaderStringArray Header parameter enum test (string array)
-     * @param {module:model/String} opts.enumHeaderString Header parameter enum test (string) (default to -efg)
+     * @param {module:model/String} opts.enumHeaderString Header parameter enum test (string) (default to '-efg')
      * @param {Array.} opts.enumQueryStringArray Query parameter enum test (string array)
-     * @param {module:model/String} opts.enumQueryString Query parameter enum test (string) (default to -efg)
+     * @param {module:model/String} opts.enumQueryString Query parameter enum test (string) (default to '-efg')
      * @param {module:model/Number} opts.enumQueryInteger Query parameter enum test (double)
      * @param {module:model/Number} opts.enumQueryDouble Query parameter enum test (double)
+     * @param {Array.} opts.enumFormStringArray Form parameter enum test (string array) (default to '$')
+     * @param {module:model/String} opts.enumFormString Form parameter enum test (string) (default to '-efg')
      * @return {Promise} a {@link https://www.promisejs.org/|Promise}, with an object containing HTTP response
      */
     this.testEnumParametersWithHttpInfo = function(opts) {
@@ -427,6 +482,7 @@
       var queryParams = {
         'enum_query_string': opts['enumQueryString'],
         'enum_query_integer': opts['enumQueryInteger'],
+        'enum_query_double': opts['enumQueryDouble'],
       };
       var collectionQueryParams = {
         'enum_query_string_array': {
@@ -440,13 +496,12 @@
       };
       var formParams = {
         'enum_form_string_array': this.apiClient.buildCollectionParam(opts['enumFormStringArray'], 'csv'),
-        'enum_form_string': opts['enumFormString'],
-        'enum_query_double': opts['enumQueryDouble']
+        'enum_form_string': opts['enumFormString']
       };
 
       var authNames = [];
-      var contentTypes = ['*/*'];
-      var accepts = ['*/*'];
+      var contentTypes = ['application/x-www-form-urlencoded'];
+      var accepts = [];
       var returnType = null;
 
       return this.apiClient.callApi(
@@ -460,14 +515,14 @@
      * To test enum parameters
      * To test enum parameters
      * @param {Object} opts Optional parameters
-     * @param {Array.} opts.enumFormStringArray Form parameter enum test (string array)
-     * @param {module:model/String} opts.enumFormString Form parameter enum test (string) (default to -efg)
      * @param {Array.} opts.enumHeaderStringArray Header parameter enum test (string array)
-     * @param {module:model/String} opts.enumHeaderString Header parameter enum test (string) (default to -efg)
+     * @param {module:model/String} opts.enumHeaderString Header parameter enum test (string) (default to '-efg')
      * @param {Array.} opts.enumQueryStringArray Query parameter enum test (string array)
-     * @param {module:model/String} opts.enumQueryString Query parameter enum test (string) (default to -efg)
+     * @param {module:model/String} opts.enumQueryString Query parameter enum test (string) (default to '-efg')
      * @param {module:model/Number} opts.enumQueryInteger Query parameter enum test (double)
      * @param {module:model/Number} opts.enumQueryDouble Query parameter enum test (double)
+     * @param {Array.} opts.enumFormStringArray Form parameter enum test (string array) (default to '$')
+     * @param {module:model/String} opts.enumFormString Form parameter enum test (string) (default to '-efg')
      * @return {Promise} a {@link https://www.promisejs.org/|Promise}
      */
     this.testEnumParameters = function(opts) {
@@ -480,16 +535,15 @@
 
     /**
      * test inline additionalProperties
-     * 
-     * @param {Object} param request body
+     * @param {Object.} requestBody request body
      * @return {Promise} a {@link https://www.promisejs.org/|Promise}, with an object containing HTTP response
      */
-    this.testInlineAdditionalPropertiesWithHttpInfo = function(param) {
-      var postBody = param;
+    this.testInlineAdditionalPropertiesWithHttpInfo = function(requestBody) {
+      var postBody = requestBody;
 
-      // verify the required parameter 'param' is set
-      if (param === undefined || param === null) {
-        throw new Error("Missing the required parameter 'param' when calling testInlineAdditionalProperties");
+      // verify the required parameter 'requestBody' is set
+      if (requestBody === undefined || requestBody === null) {
+        throw new Error("Missing the required parameter 'requestBody' when calling testInlineAdditionalProperties");
       }
 
 
@@ -518,12 +572,11 @@
 
     /**
      * test inline additionalProperties
-     * 
-     * @param {Object} param request body
+     * @param {Object.} requestBody request body
      * @return {Promise} a {@link https://www.promisejs.org/|Promise}
      */
-    this.testInlineAdditionalProperties = function(param) {
-      return this.testInlineAdditionalPropertiesWithHttpInfo(param)
+    this.testInlineAdditionalProperties = function(requestBody) {
+      return this.testInlineAdditionalPropertiesWithHttpInfo(requestBody)
         .then(function(response_and_data) {
           return response_and_data.data;
         });
@@ -532,7 +585,6 @@
 
     /**
      * test json serialization of form data
-     * 
      * @param {String} param field1
      * @param {String} param2 field2
      * @return {Promise} a {@link https://www.promisejs.org/|Promise}, with an object containing HTTP response
@@ -565,7 +617,7 @@
       };
 
       var authNames = [];
-      var contentTypes = ['application/json'];
+      var contentTypes = ['application/x-www-form-urlencoded'];
       var accepts = [];
       var returnType = null;
 
@@ -578,7 +630,6 @@
 
     /**
      * test json serialization of form data
-     * 
      * @param {String} param field1
      * @param {String} param2 field2
      * @return {Promise} a {@link https://www.promisejs.org/|Promise}
diff --git a/samples/client/petstore/javascript-promise/src/api/FakeClassnameTags123Api.js b/samples/client/petstore/javascript-promise/src/api/FakeClassnameTags123Api.js
index fdae9bbaebde..7293a03fe8eb 100644
--- a/samples/client/petstore/javascript-promise/src/api/FakeClassnameTags123Api.js
+++ b/samples/client/petstore/javascript-promise/src/api/FakeClassnameTags123Api.js
@@ -1,14 +1,13 @@
 /**
- * Swagger Petstore
+ * OpenAPI Petstore
  * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
  *
  * OpenAPI spec version: 1.0.0
- * Contact: apiteam@swagger.io
  *
- * NOTE: This class is auto generated by the swagger code generator program.
- * https://github.com/swagger-api/swagger-codegen.git
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
  *
- * Swagger Codegen version: 2.3.0-SNAPSHOT
+ * OpenAPI Generator version: 3.0.2-SNAPSHOT
  *
  * Do not edit the class manually.
  *
@@ -23,10 +22,10 @@
     module.exports = factory(require('../ApiClient'), require('../model/Client'));
   } else {
     // Browser globals (root is window)
-    if (!root.SwaggerPetstore) {
-      root.SwaggerPetstore = {};
+    if (!root.OpenApiPetstore) {
+      root.OpenApiPetstore = {};
     }
-    root.SwaggerPetstore.FakeClassnameTags123Api = factory(root.SwaggerPetstore.ApiClient, root.SwaggerPetstore.Client);
+    root.OpenApiPetstore.FakeClassnameTags123Api = factory(root.OpenApiPetstore.ApiClient, root.OpenApiPetstore.Client);
   }
 }(this, function(ApiClient, Client) {
   'use strict';
@@ -51,15 +50,16 @@
 
     /**
      * To test class name in snake case
-     * @param {module:model/Client} body client model
+     * To test class name in snake case
+     * @param {module:model/Client} client client model
      * @return {Promise} a {@link https://www.promisejs.org/|Promise}, with an object containing data of type {@link module:model/Client} and HTTP response
      */
-    this.testClassnameWithHttpInfo = function(body) {
-      var postBody = body;
+    this.testClassnameWithHttpInfo = function(client) {
+      var postBody = client;
 
-      // verify the required parameter 'body' is set
-      if (body === undefined || body === null) {
-        throw new Error("Missing the required parameter 'body' when calling testClassname");
+      // verify the required parameter 'client' is set
+      if (client === undefined || client === null) {
+        throw new Error("Missing the required parameter 'client' when calling testClassname");
       }
 
 
@@ -88,11 +88,12 @@
 
     /**
      * To test class name in snake case
-     * @param {module:model/Client} body client model
+     * To test class name in snake case
+     * @param {module:model/Client} client client model
      * @return {Promise} a {@link https://www.promisejs.org/|Promise}, with data of type {@link module:model/Client}
      */
-    this.testClassname = function(body) {
-      return this.testClassnameWithHttpInfo(body)
+    this.testClassname = function(client) {
+      return this.testClassnameWithHttpInfo(client)
         .then(function(response_and_data) {
           return response_and_data.data;
         });
diff --git a/samples/client/petstore/javascript-promise/src/api/PetApi.js b/samples/client/petstore/javascript-promise/src/api/PetApi.js
index 655f36436fbd..68d7bd7e1022 100644
--- a/samples/client/petstore/javascript-promise/src/api/PetApi.js
+++ b/samples/client/petstore/javascript-promise/src/api/PetApi.js
@@ -1,14 +1,13 @@
 /**
- * Swagger Petstore
+ * OpenAPI Petstore
  * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
  *
  * OpenAPI spec version: 1.0.0
- * Contact: apiteam@swagger.io
  *
- * NOTE: This class is auto generated by the swagger code generator program.
- * https://github.com/swagger-api/swagger-codegen.git
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
  *
- * Swagger Codegen version: 2.3.0-SNAPSHOT
+ * OpenAPI Generator version: 3.0.2-SNAPSHOT
  *
  * Do not edit the class manually.
  *
@@ -23,10 +22,10 @@
     module.exports = factory(require('../ApiClient'), require('../model/ApiResponse'), require('../model/Pet'));
   } else {
     // Browser globals (root is window)
-    if (!root.SwaggerPetstore) {
-      root.SwaggerPetstore = {};
+    if (!root.OpenApiPetstore) {
+      root.OpenApiPetstore = {};
     }
-    root.SwaggerPetstore.PetApi = factory(root.SwaggerPetstore.ApiClient, root.SwaggerPetstore.ApiResponse, root.SwaggerPetstore.Pet);
+    root.OpenApiPetstore.PetApi = factory(root.OpenApiPetstore.ApiClient, root.OpenApiPetstore.ApiResponse, root.OpenApiPetstore.Pet);
   }
 }(this, function(ApiClient, ApiResponse, Pet) {
   'use strict';
@@ -51,16 +50,15 @@
 
     /**
      * Add a new pet to the store
-     * 
-     * @param {module:model/Pet} body Pet object that needs to be added to the store
+     * @param {module:model/Pet} pet Pet object that needs to be added to the store
      * @return {Promise} a {@link https://www.promisejs.org/|Promise}, with an object containing HTTP response
      */
-    this.addPetWithHttpInfo = function(body) {
-      var postBody = body;
+    this.addPetWithHttpInfo = function(pet) {
+      var postBody = pet;
 
-      // verify the required parameter 'body' is set
-      if (body === undefined || body === null) {
-        throw new Error("Missing the required parameter 'body' when calling addPet");
+      // verify the required parameter 'pet' is set
+      if (pet === undefined || pet === null) {
+        throw new Error("Missing the required parameter 'pet' when calling addPet");
       }
 
 
@@ -77,7 +75,7 @@
 
       var authNames = ['petstore_auth'];
       var contentTypes = ['application/json', 'application/xml'];
-      var accepts = ['application/xml', 'application/json'];
+      var accepts = [];
       var returnType = null;
 
       return this.apiClient.callApi(
@@ -89,12 +87,11 @@
 
     /**
      * Add a new pet to the store
-     * 
-     * @param {module:model/Pet} body Pet object that needs to be added to the store
+     * @param {module:model/Pet} pet Pet object that needs to be added to the store
      * @return {Promise} a {@link https://www.promisejs.org/|Promise}
      */
-    this.addPet = function(body) {
-      return this.addPetWithHttpInfo(body)
+    this.addPet = function(pet) {
+      return this.addPetWithHttpInfo(pet)
         .then(function(response_and_data) {
           return response_and_data.data;
         });
@@ -103,7 +100,6 @@
 
     /**
      * Deletes a pet
-     * 
      * @param {Number} petId Pet id to delete
      * @param {Object} opts Optional parameters
      * @param {String} opts.apiKey 
@@ -134,7 +130,7 @@
 
       var authNames = ['petstore_auth'];
       var contentTypes = [];
-      var accepts = ['application/xml', 'application/json'];
+      var accepts = [];
       var returnType = null;
 
       return this.apiClient.callApi(
@@ -146,7 +142,6 @@
 
     /**
      * Deletes a pet
-     * 
      * @param {Number} petId Pet id to delete
      * @param {Object} opts Optional parameters
      * @param {String} opts.apiKey 
@@ -327,16 +322,15 @@
 
     /**
      * Update an existing pet
-     * 
-     * @param {module:model/Pet} body Pet object that needs to be added to the store
+     * @param {module:model/Pet} pet Pet object that needs to be added to the store
      * @return {Promise} a {@link https://www.promisejs.org/|Promise}, with an object containing HTTP response
      */
-    this.updatePetWithHttpInfo = function(body) {
-      var postBody = body;
+    this.updatePetWithHttpInfo = function(pet) {
+      var postBody = pet;
 
-      // verify the required parameter 'body' is set
-      if (body === undefined || body === null) {
-        throw new Error("Missing the required parameter 'body' when calling updatePet");
+      // verify the required parameter 'pet' is set
+      if (pet === undefined || pet === null) {
+        throw new Error("Missing the required parameter 'pet' when calling updatePet");
       }
 
 
@@ -353,7 +347,7 @@
 
       var authNames = ['petstore_auth'];
       var contentTypes = ['application/json', 'application/xml'];
-      var accepts = ['application/xml', 'application/json'];
+      var accepts = [];
       var returnType = null;
 
       return this.apiClient.callApi(
@@ -365,12 +359,11 @@
 
     /**
      * Update an existing pet
-     * 
-     * @param {module:model/Pet} body Pet object that needs to be added to the store
+     * @param {module:model/Pet} pet Pet object that needs to be added to the store
      * @return {Promise} a {@link https://www.promisejs.org/|Promise}
      */
-    this.updatePet = function(body) {
-      return this.updatePetWithHttpInfo(body)
+    this.updatePet = function(pet) {
+      return this.updatePetWithHttpInfo(pet)
         .then(function(response_and_data) {
           return response_and_data.data;
         });
@@ -379,7 +372,6 @@
 
     /**
      * Updates a pet in the store with form data
-     * 
      * @param {Number} petId ID of pet that needs to be updated
      * @param {Object} opts Optional parameters
      * @param {String} opts.name Updated name of the pet
@@ -412,7 +404,7 @@
 
       var authNames = ['petstore_auth'];
       var contentTypes = ['application/x-www-form-urlencoded'];
-      var accepts = ['application/xml', 'application/json'];
+      var accepts = [];
       var returnType = null;
 
       return this.apiClient.callApi(
@@ -424,7 +416,6 @@
 
     /**
      * Updates a pet in the store with form data
-     * 
      * @param {Number} petId ID of pet that needs to be updated
      * @param {Object} opts Optional parameters
      * @param {String} opts.name Updated name of the pet
@@ -441,7 +432,6 @@
 
     /**
      * uploads an image
-     * 
      * @param {Number} petId ID of pet to update
      * @param {Object} opts Optional parameters
      * @param {String} opts.additionalMetadata Additional data to pass to server
@@ -486,7 +476,6 @@
 
     /**
      * uploads an image
-     * 
      * @param {Number} petId ID of pet to update
      * @param {Object} opts Optional parameters
      * @param {String} opts.additionalMetadata Additional data to pass to server
diff --git a/samples/client/petstore/javascript-promise/src/api/StoreApi.js b/samples/client/petstore/javascript-promise/src/api/StoreApi.js
index dc39ad334996..c4b2f93bbc0d 100644
--- a/samples/client/petstore/javascript-promise/src/api/StoreApi.js
+++ b/samples/client/petstore/javascript-promise/src/api/StoreApi.js
@@ -1,14 +1,13 @@
 /**
- * Swagger Petstore
+ * OpenAPI Petstore
  * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
  *
  * OpenAPI spec version: 1.0.0
- * Contact: apiteam@swagger.io
  *
- * NOTE: This class is auto generated by the swagger code generator program.
- * https://github.com/swagger-api/swagger-codegen.git
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
  *
- * Swagger Codegen version: 2.3.0-SNAPSHOT
+ * OpenAPI Generator version: 3.0.2-SNAPSHOT
  *
  * Do not edit the class manually.
  *
@@ -23,10 +22,10 @@
     module.exports = factory(require('../ApiClient'), require('../model/Order'));
   } else {
     // Browser globals (root is window)
-    if (!root.SwaggerPetstore) {
-      root.SwaggerPetstore = {};
+    if (!root.OpenApiPetstore) {
+      root.OpenApiPetstore = {};
     }
-    root.SwaggerPetstore.StoreApi = factory(root.SwaggerPetstore.ApiClient, root.SwaggerPetstore.Order);
+    root.OpenApiPetstore.StoreApi = factory(root.OpenApiPetstore.ApiClient, root.OpenApiPetstore.Order);
   }
 }(this, function(ApiClient, Order) {
   'use strict';
@@ -78,7 +77,7 @@
 
       var authNames = [];
       var contentTypes = [];
-      var accepts = ['application/xml', 'application/json'];
+      var accepts = [];
       var returnType = null;
 
       return this.apiClient.callApi(
@@ -105,7 +104,7 @@
     /**
      * Returns pet inventories by status
      * Returns a map of status codes to quantities
-     * @return {Promise} a {@link https://www.promisejs.org/|Promise}, with an object containing data of type {@link Object.} and HTTP response
+     * @return {Promise} a {@link https://www.promisejs.org/|Promise}, with an object containing data of type {@link Object.} and HTTP response
      */
     this.getInventoryWithHttpInfo = function() {
       var postBody = null;
@@ -137,7 +136,7 @@
     /**
      * Returns pet inventories by status
      * Returns a map of status codes to quantities
-     * @return {Promise} a {@link https://www.promisejs.org/|Promise}, with data of type {@link Object.}
+     * @return {Promise} a {@link https://www.promisejs.org/|Promise}, with data of type {@link Object.}
      */
     this.getInventory = function() {
       return this.getInventoryWithHttpInfo()
@@ -202,16 +201,15 @@
 
     /**
      * Place an order for a pet
-     * 
-     * @param {module:model/Order} body order placed for purchasing the pet
+     * @param {module:model/Order} order order placed for purchasing the pet
      * @return {Promise} a {@link https://www.promisejs.org/|Promise}, with an object containing data of type {@link module:model/Order} and HTTP response
      */
-    this.placeOrderWithHttpInfo = function(body) {
-      var postBody = body;
+    this.placeOrderWithHttpInfo = function(order) {
+      var postBody = order;
 
-      // verify the required parameter 'body' is set
-      if (body === undefined || body === null) {
-        throw new Error("Missing the required parameter 'body' when calling placeOrder");
+      // verify the required parameter 'order' is set
+      if (order === undefined || order === null) {
+        throw new Error("Missing the required parameter 'order' when calling placeOrder");
       }
 
 
@@ -240,12 +238,11 @@
 
     /**
      * Place an order for a pet
-     * 
-     * @param {module:model/Order} body order placed for purchasing the pet
+     * @param {module:model/Order} order order placed for purchasing the pet
      * @return {Promise} a {@link https://www.promisejs.org/|Promise}, with data of type {@link module:model/Order}
      */
-    this.placeOrder = function(body) {
-      return this.placeOrderWithHttpInfo(body)
+    this.placeOrder = function(order) {
+      return this.placeOrderWithHttpInfo(order)
         .then(function(response_and_data) {
           return response_and_data.data;
         });
diff --git a/samples/client/petstore/javascript-promise/src/api/UserApi.js b/samples/client/petstore/javascript-promise/src/api/UserApi.js
index 3d6e216aaa49..4942cbc464b3 100644
--- a/samples/client/petstore/javascript-promise/src/api/UserApi.js
+++ b/samples/client/petstore/javascript-promise/src/api/UserApi.js
@@ -1,14 +1,13 @@
 /**
- * Swagger Petstore
+ * OpenAPI Petstore
  * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
  *
  * OpenAPI spec version: 1.0.0
- * Contact: apiteam@swagger.io
  *
- * NOTE: This class is auto generated by the swagger code generator program.
- * https://github.com/swagger-api/swagger-codegen.git
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
  *
- * Swagger Codegen version: 2.3.0-SNAPSHOT
+ * OpenAPI Generator version: 3.0.2-SNAPSHOT
  *
  * Do not edit the class manually.
  *
@@ -23,10 +22,10 @@
     module.exports = factory(require('../ApiClient'), require('../model/User'));
   } else {
     // Browser globals (root is window)
-    if (!root.SwaggerPetstore) {
-      root.SwaggerPetstore = {};
+    if (!root.OpenApiPetstore) {
+      root.OpenApiPetstore = {};
     }
-    root.SwaggerPetstore.UserApi = factory(root.SwaggerPetstore.ApiClient, root.SwaggerPetstore.User);
+    root.OpenApiPetstore.UserApi = factory(root.OpenApiPetstore.ApiClient, root.OpenApiPetstore.User);
   }
 }(this, function(ApiClient, User) {
   'use strict';
@@ -52,15 +51,15 @@
     /**
      * Create user
      * This can only be done by the logged in user.
-     * @param {module:model/User} body Created user object
+     * @param {module:model/User} user Created user object
      * @return {Promise} a {@link https://www.promisejs.org/|Promise}, with an object containing HTTP response
      */
-    this.createUserWithHttpInfo = function(body) {
-      var postBody = body;
+    this.createUserWithHttpInfo = function(user) {
+      var postBody = user;
 
-      // verify the required parameter 'body' is set
-      if (body === undefined || body === null) {
-        throw new Error("Missing the required parameter 'body' when calling createUser");
+      // verify the required parameter 'user' is set
+      if (user === undefined || user === null) {
+        throw new Error("Missing the required parameter 'user' when calling createUser");
       }
 
 
@@ -77,7 +76,7 @@
 
       var authNames = [];
       var contentTypes = [];
-      var accepts = ['application/xml', 'application/json'];
+      var accepts = [];
       var returnType = null;
 
       return this.apiClient.callApi(
@@ -90,11 +89,11 @@
     /**
      * Create user
      * This can only be done by the logged in user.
-     * @param {module:model/User} body Created user object
+     * @param {module:model/User} user Created user object
      * @return {Promise} a {@link https://www.promisejs.org/|Promise}
      */
-    this.createUser = function(body) {
-      return this.createUserWithHttpInfo(body)
+    this.createUser = function(user) {
+      return this.createUserWithHttpInfo(user)
         .then(function(response_and_data) {
           return response_and_data.data;
         });
@@ -103,16 +102,15 @@
 
     /**
      * Creates list of users with given input array
-     * 
-     * @param {Array.} body List of user object
+     * @param {Array.} user List of user object
      * @return {Promise} a {@link https://www.promisejs.org/|Promise}, with an object containing HTTP response
      */
-    this.createUsersWithArrayInputWithHttpInfo = function(body) {
-      var postBody = body;
+    this.createUsersWithArrayInputWithHttpInfo = function(user) {
+      var postBody = user;
 
-      // verify the required parameter 'body' is set
-      if (body === undefined || body === null) {
-        throw new Error("Missing the required parameter 'body' when calling createUsersWithArrayInput");
+      // verify the required parameter 'user' is set
+      if (user === undefined || user === null) {
+        throw new Error("Missing the required parameter 'user' when calling createUsersWithArrayInput");
       }
 
 
@@ -129,7 +127,7 @@
 
       var authNames = [];
       var contentTypes = [];
-      var accepts = ['application/xml', 'application/json'];
+      var accepts = [];
       var returnType = null;
 
       return this.apiClient.callApi(
@@ -141,12 +139,11 @@
 
     /**
      * Creates list of users with given input array
-     * 
-     * @param {Array.} body List of user object
+     * @param {Array.} user List of user object
      * @return {Promise} a {@link https://www.promisejs.org/|Promise}
      */
-    this.createUsersWithArrayInput = function(body) {
-      return this.createUsersWithArrayInputWithHttpInfo(body)
+    this.createUsersWithArrayInput = function(user) {
+      return this.createUsersWithArrayInputWithHttpInfo(user)
         .then(function(response_and_data) {
           return response_and_data.data;
         });
@@ -155,16 +152,15 @@
 
     /**
      * Creates list of users with given input array
-     * 
-     * @param {Array.} body List of user object
+     * @param {Array.} user List of user object
      * @return {Promise} a {@link https://www.promisejs.org/|Promise}, with an object containing HTTP response
      */
-    this.createUsersWithListInputWithHttpInfo = function(body) {
-      var postBody = body;
+    this.createUsersWithListInputWithHttpInfo = function(user) {
+      var postBody = user;
 
-      // verify the required parameter 'body' is set
-      if (body === undefined || body === null) {
-        throw new Error("Missing the required parameter 'body' when calling createUsersWithListInput");
+      // verify the required parameter 'user' is set
+      if (user === undefined || user === null) {
+        throw new Error("Missing the required parameter 'user' when calling createUsersWithListInput");
       }
 
 
@@ -181,7 +177,7 @@
 
       var authNames = [];
       var contentTypes = [];
-      var accepts = ['application/xml', 'application/json'];
+      var accepts = [];
       var returnType = null;
 
       return this.apiClient.callApi(
@@ -193,12 +189,11 @@
 
     /**
      * Creates list of users with given input array
-     * 
-     * @param {Array.} body List of user object
+     * @param {Array.} user List of user object
      * @return {Promise} a {@link https://www.promisejs.org/|Promise}
      */
-    this.createUsersWithListInput = function(body) {
-      return this.createUsersWithListInputWithHttpInfo(body)
+    this.createUsersWithListInput = function(user) {
+      return this.createUsersWithListInputWithHttpInfo(user)
         .then(function(response_and_data) {
           return response_and_data.data;
         });
@@ -234,7 +229,7 @@
 
       var authNames = [];
       var contentTypes = [];
-      var accepts = ['application/xml', 'application/json'];
+      var accepts = [];
       var returnType = null;
 
       return this.apiClient.callApi(
@@ -260,8 +255,7 @@
 
     /**
      * Get user by user name
-     * 
-     * @param {String} username The name that needs to be fetched. Use user1 for testing. 
+     * @param {String} username The name that needs to be fetched. Use user1 for testing.
      * @return {Promise} a {@link https://www.promisejs.org/|Promise}, with an object containing data of type {@link module:model/User} and HTTP response
      */
     this.getUserByNameWithHttpInfo = function(username) {
@@ -299,8 +293,7 @@
 
     /**
      * Get user by user name
-     * 
-     * @param {String} username The name that needs to be fetched. Use user1 for testing. 
+     * @param {String} username The name that needs to be fetched. Use user1 for testing.
      * @return {Promise} a {@link https://www.promisejs.org/|Promise}, with data of type {@link module:model/User}
      */
     this.getUserByName = function(username) {
@@ -313,10 +306,9 @@
 
     /**
      * Logs user into the system
-     * 
      * @param {String} username The user name for login
      * @param {String} password The password for login in clear text
-     * @return {Promise} a {@link https://www.promisejs.org/|Promise}, with an object containing data of type {@link 'String'} and HTTP response
+     * @return {Promise} a {@link https://www.promisejs.org/|Promise}, with an object containing data of type {@link String} and HTTP response
      */
     this.loginUserWithHttpInfo = function(username, password) {
       var postBody = null;
@@ -359,10 +351,9 @@
 
     /**
      * Logs user into the system
-     * 
      * @param {String} username The user name for login
      * @param {String} password The password for login in clear text
-     * @return {Promise} a {@link https://www.promisejs.org/|Promise}, with data of type {@link 'String'}
+     * @return {Promise} a {@link https://www.promisejs.org/|Promise}, with data of type {@link String}
      */
     this.loginUser = function(username, password) {
       return this.loginUserWithHttpInfo(username, password)
@@ -374,7 +365,6 @@
 
     /**
      * Logs out current logged in user session
-     * 
      * @return {Promise} a {@link https://www.promisejs.org/|Promise}, with an object containing HTTP response
      */
     this.logoutUserWithHttpInfo = function() {
@@ -394,7 +384,7 @@
 
       var authNames = [];
       var contentTypes = [];
-      var accepts = ['application/xml', 'application/json'];
+      var accepts = [];
       var returnType = null;
 
       return this.apiClient.callApi(
@@ -406,7 +396,6 @@
 
     /**
      * Logs out current logged in user session
-     * 
      * @return {Promise} a {@link https://www.promisejs.org/|Promise}
      */
     this.logoutUser = function() {
@@ -421,20 +410,20 @@
      * Updated user
      * This can only be done by the logged in user.
      * @param {String} username name that need to be deleted
-     * @param {module:model/User} body Updated user object
+     * @param {module:model/User} user Updated user object
      * @return {Promise} a {@link https://www.promisejs.org/|Promise}, with an object containing HTTP response
      */
-    this.updateUserWithHttpInfo = function(username, body) {
-      var postBody = body;
+    this.updateUserWithHttpInfo = function(username, user) {
+      var postBody = user;
 
       // verify the required parameter 'username' is set
       if (username === undefined || username === null) {
         throw new Error("Missing the required parameter 'username' when calling updateUser");
       }
 
-      // verify the required parameter 'body' is set
-      if (body === undefined || body === null) {
-        throw new Error("Missing the required parameter 'body' when calling updateUser");
+      // verify the required parameter 'user' is set
+      if (user === undefined || user === null) {
+        throw new Error("Missing the required parameter 'user' when calling updateUser");
       }
 
 
@@ -452,7 +441,7 @@
 
       var authNames = [];
       var contentTypes = [];
-      var accepts = ['application/xml', 'application/json'];
+      var accepts = [];
       var returnType = null;
 
       return this.apiClient.callApi(
@@ -466,11 +455,11 @@
      * Updated user
      * This can only be done by the logged in user.
      * @param {String} username name that need to be deleted
-     * @param {module:model/User} body Updated user object
+     * @param {module:model/User} user Updated user object
      * @return {Promise} a {@link https://www.promisejs.org/|Promise}
      */
-    this.updateUser = function(username, body) {
-      return this.updateUserWithHttpInfo(username, body)
+    this.updateUser = function(username, user) {
+      return this.updateUserWithHttpInfo(username, user)
         .then(function(response_and_data) {
           return response_and_data.data;
         });
diff --git a/samples/client/petstore/javascript-promise/src/index.js b/samples/client/petstore/javascript-promise/src/index.js
index 480a6d3ead39..25685095fb2f 100644
--- a/samples/client/petstore/javascript-promise/src/index.js
+++ b/samples/client/petstore/javascript-promise/src/index.js
@@ -1,14 +1,13 @@
 /**
- * Swagger Petstore
+ * OpenAPI Petstore
  * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
  *
  * OpenAPI spec version: 1.0.0
- * Contact: apiteam@swagger.io
  *
- * NOTE: This class is auto generated by the swagger code generator program.
- * https://github.com/swagger-api/swagger-codegen.git
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
  *
- * Swagger Codegen version: 2.3.0-SNAPSHOT
+ * OpenAPI Generator version: 3.0.2-SNAPSHOT
  *
  * Do not edit the class manually.
  *
@@ -17,12 +16,12 @@
 (function(factory) {
   if (typeof define === 'function' && define.amd) {
     // AMD. Register as an anonymous module.
-    define(['ApiClient', 'model/AdditionalPropertiesClass', 'model/Animal', 'model/AnimalFarm', 'model/ApiResponse', 'model/ArrayOfArrayOfNumberOnly', 'model/ArrayOfNumberOnly', 'model/ArrayTest', 'model/Capitalization', 'model/Category', 'model/ClassModel', 'model/Client', 'model/EnumArrays', 'model/EnumClass', 'model/EnumTest', 'model/FormatTest', 'model/HasOnlyReadOnly', 'model/List', 'model/MapTest', 'model/MixedPropertiesAndAdditionalPropertiesClass', 'model/Model200Response', 'model/ModelReturn', 'model/Name', 'model/NumberOnly', 'model/Order', 'model/OuterBoolean', 'model/OuterComposite', 'model/OuterEnum', 'model/OuterNumber', 'model/OuterString', 'model/Pet', 'model/ReadOnlyFirst', 'model/SpecialModelName', 'model/Tag', 'model/User', 'model/Cat', 'model/Dog', 'api/AnotherFakeApi', 'api/FakeApi', 'api/FakeClassnameTags123Api', 'api/PetApi', 'api/StoreApi', 'api/UserApi'], factory);
+    define(['ApiClient', 'model/AdditionalPropertiesClass', 'model/Animal', 'model/AnimalFarm', 'model/ApiResponse', 'model/ArrayOfArrayOfNumberOnly', 'model/ArrayOfNumberOnly', 'model/ArrayTest', 'model/Capitalization', 'model/Cat', 'model/Category', 'model/ClassModel', 'model/Client', 'model/Dog', 'model/EnumArrays', 'model/EnumClass', 'model/EnumTest', 'model/FormatTest', 'model/HasOnlyReadOnly', 'model/List', 'model/MapTest', 'model/MixedPropertiesAndAdditionalPropertiesClass', 'model/Model200Response', 'model/ModelReturn', 'model/Name', 'model/NumberOnly', 'model/Order', 'model/OuterComposite', 'model/OuterEnum', 'model/Pet', 'model/ReadOnlyFirst', 'model/SpecialModelName', 'model/Tag', 'model/User', 'api/AnotherFakeApi', 'api/FakeApi', 'api/FakeClassnameTags123Api', 'api/PetApi', 'api/StoreApi', 'api/UserApi'], factory);
   } else if (typeof module === 'object' && module.exports) {
     // CommonJS-like environments that support module.exports, like Node.
-    module.exports = factory(require('./ApiClient'), require('./model/AdditionalPropertiesClass'), require('./model/Animal'), require('./model/AnimalFarm'), require('./model/ApiResponse'), require('./model/ArrayOfArrayOfNumberOnly'), require('./model/ArrayOfNumberOnly'), require('./model/ArrayTest'), require('./model/Capitalization'), require('./model/Category'), require('./model/ClassModel'), require('./model/Client'), require('./model/EnumArrays'), require('./model/EnumClass'), require('./model/EnumTest'), require('./model/FormatTest'), require('./model/HasOnlyReadOnly'), require('./model/List'), require('./model/MapTest'), require('./model/MixedPropertiesAndAdditionalPropertiesClass'), require('./model/Model200Response'), require('./model/ModelReturn'), require('./model/Name'), require('./model/NumberOnly'), require('./model/Order'), require('./model/OuterBoolean'), require('./model/OuterComposite'), require('./model/OuterEnum'), require('./model/OuterNumber'), require('./model/OuterString'), require('./model/Pet'), require('./model/ReadOnlyFirst'), require('./model/SpecialModelName'), require('./model/Tag'), require('./model/User'), require('./model/Cat'), require('./model/Dog'), require('./api/AnotherFakeApi'), require('./api/FakeApi'), require('./api/FakeClassnameTags123Api'), require('./api/PetApi'), require('./api/StoreApi'), require('./api/UserApi'));
+    module.exports = factory(require('./ApiClient'), require('./model/AdditionalPropertiesClass'), require('./model/Animal'), require('./model/AnimalFarm'), require('./model/ApiResponse'), require('./model/ArrayOfArrayOfNumberOnly'), require('./model/ArrayOfNumberOnly'), require('./model/ArrayTest'), require('./model/Capitalization'), require('./model/Cat'), require('./model/Category'), require('./model/ClassModel'), require('./model/Client'), require('./model/Dog'), require('./model/EnumArrays'), require('./model/EnumClass'), require('./model/EnumTest'), require('./model/FormatTest'), require('./model/HasOnlyReadOnly'), require('./model/List'), require('./model/MapTest'), require('./model/MixedPropertiesAndAdditionalPropertiesClass'), require('./model/Model200Response'), require('./model/ModelReturn'), require('./model/Name'), require('./model/NumberOnly'), require('./model/Order'), require('./model/OuterComposite'), require('./model/OuterEnum'), require('./model/Pet'), require('./model/ReadOnlyFirst'), require('./model/SpecialModelName'), require('./model/Tag'), require('./model/User'), require('./api/AnotherFakeApi'), require('./api/FakeApi'), require('./api/FakeClassnameTags123Api'), require('./api/PetApi'), require('./api/StoreApi'), require('./api/UserApi'));
   }
-}(function(ApiClient, AdditionalPropertiesClass, Animal, AnimalFarm, ApiResponse, ArrayOfArrayOfNumberOnly, ArrayOfNumberOnly, ArrayTest, Capitalization, Category, ClassModel, Client, EnumArrays, EnumClass, EnumTest, FormatTest, HasOnlyReadOnly, List, MapTest, MixedPropertiesAndAdditionalPropertiesClass, Model200Response, ModelReturn, Name, NumberOnly, Order, OuterBoolean, OuterComposite, OuterEnum, OuterNumber, OuterString, Pet, ReadOnlyFirst, SpecialModelName, Tag, User, Cat, Dog, AnotherFakeApi, FakeApi, FakeClassnameTags123Api, PetApi, StoreApi, UserApi) {
+}(function(ApiClient, AdditionalPropertiesClass, Animal, AnimalFarm, ApiResponse, ArrayOfArrayOfNumberOnly, ArrayOfNumberOnly, ArrayTest, Capitalization, Cat, Category, ClassModel, Client, Dog, EnumArrays, EnumClass, EnumTest, FormatTest, HasOnlyReadOnly, List, MapTest, MixedPropertiesAndAdditionalPropertiesClass, Model200Response, ModelReturn, Name, NumberOnly, Order, OuterComposite, OuterEnum, Pet, ReadOnlyFirst, SpecialModelName, Tag, User, AnotherFakeApi, FakeApi, FakeClassnameTags123Api, PetApi, StoreApi, UserApi) {
   'use strict';
 
   /**
@@ -31,9 +30,9 @@
    * 

* An AMD (recommended!) or CommonJS application will generally do something equivalent to the following: *

-   * var SwaggerPetstore = require('index'); // See note below*.
-   * var xxxSvc = new SwaggerPetstore.XxxApi(); // Allocate the API class we're going to use.
-   * var yyyModel = new SwaggerPetstore.Yyy(); // Construct a model instance.
+   * var OpenApiPetstore = require('index'); // See note below*.
+   * var xxxSvc = new OpenApiPetstore.XxxApi(); // Allocate the API class we're going to use.
+   * var yyyModel = new OpenApiPetstore.Yyy(); // Construct a model instance.
    * yyyModel.someProperty = 'someValue';
    * ...
    * var zzz = xxxSvc.doSomething(yyyModel); // Invoke the service.
@@ -45,8 +44,8 @@
    * 

* A non-AMD browser application (discouraged) might do something like this: *

-   * var xxxSvc = new SwaggerPetstore.XxxApi(); // Allocate the API class we're going to use.
-   * var yyy = new SwaggerPetstore.Yyy(); // Construct a model instance.
+   * var xxxSvc = new OpenApiPetstore.XxxApi(); // Allocate the API class we're going to use.
+   * var yyy = new OpenApiPetstore.Yyy(); // Construct a model instance.
    * yyyModel.someProperty = 'someValue';
    * ...
    * var zzz = xxxSvc.doSomething(yyyModel); // Invoke the service.
@@ -102,6 +101,11 @@
      * @property {module:model/Capitalization}
      */
     Capitalization: Capitalization,
+    /**
+     * The Cat model constructor.
+     * @property {module:model/Cat}
+     */
+    Cat: Cat,
     /**
      * The Category model constructor.
      * @property {module:model/Category}
@@ -117,6 +121,11 @@
      * @property {module:model/Client}
      */
     Client: Client,
+    /**
+     * The Dog model constructor.
+     * @property {module:model/Dog}
+     */
+    Dog: Dog,
     /**
      * The EnumArrays model constructor.
      * @property {module:model/EnumArrays}
@@ -182,11 +191,6 @@
      * @property {module:model/Order}
      */
     Order: Order,
-    /**
-     * The OuterBoolean model constructor.
-     * @property {module:model/OuterBoolean}
-     */
-    OuterBoolean: OuterBoolean,
     /**
      * The OuterComposite model constructor.
      * @property {module:model/OuterComposite}
@@ -197,16 +201,6 @@
      * @property {module:model/OuterEnum}
      */
     OuterEnum: OuterEnum,
-    /**
-     * The OuterNumber model constructor.
-     * @property {module:model/OuterNumber}
-     */
-    OuterNumber: OuterNumber,
-    /**
-     * The OuterString model constructor.
-     * @property {module:model/OuterString}
-     */
-    OuterString: OuterString,
     /**
      * The Pet model constructor.
      * @property {module:model/Pet}
@@ -232,16 +226,6 @@
      * @property {module:model/User}
      */
     User: User,
-    /**
-     * The Cat model constructor.
-     * @property {module:model/Cat}
-     */
-    Cat: Cat,
-    /**
-     * The Dog model constructor.
-     * @property {module:model/Dog}
-     */
-    Dog: Dog,
     /**
      * The AnotherFakeApi service constructor.
      * @property {module:api/AnotherFakeApi}
diff --git a/samples/client/petstore/javascript-promise/src/model/AdditionalPropertiesClass.js b/samples/client/petstore/javascript-promise/src/model/AdditionalPropertiesClass.js
index 4399d89bdc31..08572d900840 100644
--- a/samples/client/petstore/javascript-promise/src/model/AdditionalPropertiesClass.js
+++ b/samples/client/petstore/javascript-promise/src/model/AdditionalPropertiesClass.js
@@ -1,14 +1,13 @@
 /**
- * Swagger Petstore
+ * OpenAPI Petstore
  * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
  *
  * OpenAPI spec version: 1.0.0
- * Contact: apiteam@swagger.io
  *
- * NOTE: This class is auto generated by the swagger code generator program.
- * https://github.com/swagger-api/swagger-codegen.git
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
  *
- * Swagger Codegen version: 2.3.0-SNAPSHOT
+ * OpenAPI Generator version: 3.0.2-SNAPSHOT
  *
  * Do not edit the class manually.
  *
@@ -23,10 +22,10 @@
     module.exports = factory(require('../ApiClient'));
   } else {
     // Browser globals (root is window)
-    if (!root.SwaggerPetstore) {
-      root.SwaggerPetstore = {};
+    if (!root.OpenApiPetstore) {
+      root.OpenApiPetstore = {};
     }
-    root.SwaggerPetstore.AdditionalPropertiesClass = factory(root.SwaggerPetstore.ApiClient);
+    root.OpenApiPetstore.AdditionalPropertiesClass = factory(root.OpenApiPetstore.ApiClient);
   }
 }(this, function(ApiClient) {
   'use strict';
diff --git a/samples/client/petstore/javascript-promise/src/model/Animal.js b/samples/client/petstore/javascript-promise/src/model/Animal.js
index eee2768eeb67..29376d771bfc 100644
--- a/samples/client/petstore/javascript-promise/src/model/Animal.js
+++ b/samples/client/petstore/javascript-promise/src/model/Animal.js
@@ -1,14 +1,13 @@
 /**
- * Swagger Petstore
+ * OpenAPI Petstore
  * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
  *
  * OpenAPI spec version: 1.0.0
- * Contact: apiteam@swagger.io
  *
- * NOTE: This class is auto generated by the swagger code generator program.
- * https://github.com/swagger-api/swagger-codegen.git
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
  *
- * Swagger Codegen version: 2.3.0-SNAPSHOT
+ * OpenAPI Generator version: 3.0.2-SNAPSHOT
  *
  * Do not edit the class manually.
  *
@@ -23,10 +22,10 @@
     module.exports = factory(require('../ApiClient'));
   } else {
     // Browser globals (root is window)
-    if (!root.SwaggerPetstore) {
-      root.SwaggerPetstore = {};
+    if (!root.OpenApiPetstore) {
+      root.OpenApiPetstore = {};
     }
-    root.SwaggerPetstore.Animal = factory(root.SwaggerPetstore.ApiClient);
+    root.OpenApiPetstore.Animal = factory(root.OpenApiPetstore.ApiClient);
   }
 }(this, function(ApiClient) {
   'use strict';
diff --git a/samples/client/petstore/javascript-promise/src/model/AnimalFarm.js b/samples/client/petstore/javascript-promise/src/model/AnimalFarm.js
index b24078dee2aa..e1a4797eec19 100644
--- a/samples/client/petstore/javascript-promise/src/model/AnimalFarm.js
+++ b/samples/client/petstore/javascript-promise/src/model/AnimalFarm.js
@@ -1,14 +1,13 @@
 /**
- * Swagger Petstore
+ * OpenAPI Petstore
  * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
  *
  * OpenAPI spec version: 1.0.0
- * Contact: apiteam@swagger.io
  *
- * NOTE: This class is auto generated by the swagger code generator program.
- * https://github.com/swagger-api/swagger-codegen.git
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
  *
- * Swagger Codegen version: 2.3.0-SNAPSHOT
+ * OpenAPI Generator version: 3.0.2-SNAPSHOT
  *
  * Do not edit the class manually.
  *
@@ -23,10 +22,10 @@
     module.exports = factory(require('../ApiClient'), require('./Animal'));
   } else {
     // Browser globals (root is window)
-    if (!root.SwaggerPetstore) {
-      root.SwaggerPetstore = {};
+    if (!root.OpenApiPetstore) {
+      root.OpenApiPetstore = {};
     }
-    root.SwaggerPetstore.AnimalFarm = factory(root.SwaggerPetstore.ApiClient, root.SwaggerPetstore.Animal);
+    root.OpenApiPetstore.AnimalFarm = factory(root.OpenApiPetstore.ApiClient, root.OpenApiPetstore.Animal);
   }
 }(this, function(ApiClient, Animal) {
   'use strict';
diff --git a/samples/client/petstore/javascript-promise/src/model/ApiResponse.js b/samples/client/petstore/javascript-promise/src/model/ApiResponse.js
index 9588ce4cf314..5c112418181d 100644
--- a/samples/client/petstore/javascript-promise/src/model/ApiResponse.js
+++ b/samples/client/petstore/javascript-promise/src/model/ApiResponse.js
@@ -1,14 +1,13 @@
 /**
- * Swagger Petstore
+ * OpenAPI Petstore
  * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
  *
  * OpenAPI spec version: 1.0.0
- * Contact: apiteam@swagger.io
  *
- * NOTE: This class is auto generated by the swagger code generator program.
- * https://github.com/swagger-api/swagger-codegen.git
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
  *
- * Swagger Codegen version: 2.3.0-SNAPSHOT
+ * OpenAPI Generator version: 3.0.2-SNAPSHOT
  *
  * Do not edit the class manually.
  *
@@ -23,10 +22,10 @@
     module.exports = factory(require('../ApiClient'));
   } else {
     // Browser globals (root is window)
-    if (!root.SwaggerPetstore) {
-      root.SwaggerPetstore = {};
+    if (!root.OpenApiPetstore) {
+      root.OpenApiPetstore = {};
     }
-    root.SwaggerPetstore.ApiResponse = factory(root.SwaggerPetstore.ApiClient);
+    root.OpenApiPetstore.ApiResponse = factory(root.OpenApiPetstore.ApiClient);
   }
 }(this, function(ApiClient) {
   'use strict';
diff --git a/samples/client/petstore/javascript-promise/src/model/ArrayOfArrayOfNumberOnly.js b/samples/client/petstore/javascript-promise/src/model/ArrayOfArrayOfNumberOnly.js
index 0b91fc04338a..024c26469df3 100644
--- a/samples/client/petstore/javascript-promise/src/model/ArrayOfArrayOfNumberOnly.js
+++ b/samples/client/petstore/javascript-promise/src/model/ArrayOfArrayOfNumberOnly.js
@@ -1,14 +1,13 @@
 /**
- * Swagger Petstore
+ * OpenAPI Petstore
  * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
  *
  * OpenAPI spec version: 1.0.0
- * Contact: apiteam@swagger.io
  *
- * NOTE: This class is auto generated by the swagger code generator program.
- * https://github.com/swagger-api/swagger-codegen.git
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
  *
- * Swagger Codegen version: 2.3.0-SNAPSHOT
+ * OpenAPI Generator version: 3.0.2-SNAPSHOT
  *
  * Do not edit the class manually.
  *
@@ -23,10 +22,10 @@
     module.exports = factory(require('../ApiClient'));
   } else {
     // Browser globals (root is window)
-    if (!root.SwaggerPetstore) {
-      root.SwaggerPetstore = {};
+    if (!root.OpenApiPetstore) {
+      root.OpenApiPetstore = {};
     }
-    root.SwaggerPetstore.ArrayOfArrayOfNumberOnly = factory(root.SwaggerPetstore.ApiClient);
+    root.OpenApiPetstore.ArrayOfArrayOfNumberOnly = factory(root.OpenApiPetstore.ApiClient);
   }
 }(this, function(ApiClient) {
   'use strict';
diff --git a/samples/client/petstore/javascript-promise/src/model/ArrayOfNumberOnly.js b/samples/client/petstore/javascript-promise/src/model/ArrayOfNumberOnly.js
index f79ab37c0767..ca79a7c2a6d0 100644
--- a/samples/client/petstore/javascript-promise/src/model/ArrayOfNumberOnly.js
+++ b/samples/client/petstore/javascript-promise/src/model/ArrayOfNumberOnly.js
@@ -1,14 +1,13 @@
 /**
- * Swagger Petstore
+ * OpenAPI Petstore
  * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
  *
  * OpenAPI spec version: 1.0.0
- * Contact: apiteam@swagger.io
  *
- * NOTE: This class is auto generated by the swagger code generator program.
- * https://github.com/swagger-api/swagger-codegen.git
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
  *
- * Swagger Codegen version: 2.3.0-SNAPSHOT
+ * OpenAPI Generator version: 3.0.2-SNAPSHOT
  *
  * Do not edit the class manually.
  *
@@ -23,10 +22,10 @@
     module.exports = factory(require('../ApiClient'));
   } else {
     // Browser globals (root is window)
-    if (!root.SwaggerPetstore) {
-      root.SwaggerPetstore = {};
+    if (!root.OpenApiPetstore) {
+      root.OpenApiPetstore = {};
     }
-    root.SwaggerPetstore.ArrayOfNumberOnly = factory(root.SwaggerPetstore.ApiClient);
+    root.OpenApiPetstore.ArrayOfNumberOnly = factory(root.OpenApiPetstore.ApiClient);
   }
 }(this, function(ApiClient) {
   'use strict';
diff --git a/samples/client/petstore/javascript-promise/src/model/ArrayTest.js b/samples/client/petstore/javascript-promise/src/model/ArrayTest.js
index 8698b21a153d..01b97a1b5809 100644
--- a/samples/client/petstore/javascript-promise/src/model/ArrayTest.js
+++ b/samples/client/petstore/javascript-promise/src/model/ArrayTest.js
@@ -1,14 +1,13 @@
 /**
- * Swagger Petstore
+ * OpenAPI Petstore
  * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
  *
  * OpenAPI spec version: 1.0.0
- * Contact: apiteam@swagger.io
  *
- * NOTE: This class is auto generated by the swagger code generator program.
- * https://github.com/swagger-api/swagger-codegen.git
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
  *
- * Swagger Codegen version: 2.3.0-SNAPSHOT
+ * OpenAPI Generator version: 3.0.2-SNAPSHOT
  *
  * Do not edit the class manually.
  *
@@ -23,10 +22,10 @@
     module.exports = factory(require('../ApiClient'), require('./ReadOnlyFirst'));
   } else {
     // Browser globals (root is window)
-    if (!root.SwaggerPetstore) {
-      root.SwaggerPetstore = {};
+    if (!root.OpenApiPetstore) {
+      root.OpenApiPetstore = {};
     }
-    root.SwaggerPetstore.ArrayTest = factory(root.SwaggerPetstore.ApiClient, root.SwaggerPetstore.ReadOnlyFirst);
+    root.OpenApiPetstore.ArrayTest = factory(root.OpenApiPetstore.ApiClient, root.OpenApiPetstore.ReadOnlyFirst);
   }
 }(this, function(ApiClient, ReadOnlyFirst) {
   'use strict';
diff --git a/samples/client/petstore/javascript-promise/src/model/Capitalization.js b/samples/client/petstore/javascript-promise/src/model/Capitalization.js
index e4d1cce1e925..05934fb253ce 100644
--- a/samples/client/petstore/javascript-promise/src/model/Capitalization.js
+++ b/samples/client/petstore/javascript-promise/src/model/Capitalization.js
@@ -1,14 +1,13 @@
 /**
- * Swagger Petstore
+ * OpenAPI Petstore
  * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
  *
  * OpenAPI spec version: 1.0.0
- * Contact: apiteam@swagger.io
  *
- * NOTE: This class is auto generated by the swagger code generator program.
- * https://github.com/swagger-api/swagger-codegen.git
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
  *
- * Swagger Codegen version: 2.3.0-SNAPSHOT
+ * OpenAPI Generator version: 3.0.2-SNAPSHOT
  *
  * Do not edit the class manually.
  *
@@ -23,10 +22,10 @@
     module.exports = factory(require('../ApiClient'));
   } else {
     // Browser globals (root is window)
-    if (!root.SwaggerPetstore) {
-      root.SwaggerPetstore = {};
+    if (!root.OpenApiPetstore) {
+      root.OpenApiPetstore = {};
     }
-    root.SwaggerPetstore.Capitalization = factory(root.SwaggerPetstore.ApiClient);
+    root.OpenApiPetstore.Capitalization = factory(root.OpenApiPetstore.ApiClient);
   }
 }(this, function(ApiClient) {
   'use strict';
diff --git a/samples/client/petstore/javascript-promise/src/model/Cat.js b/samples/client/petstore/javascript-promise/src/model/Cat.js
index 55f0a0c98341..10b787fed4eb 100644
--- a/samples/client/petstore/javascript-promise/src/model/Cat.js
+++ b/samples/client/petstore/javascript-promise/src/model/Cat.js
@@ -1,14 +1,13 @@
 /**
- * Swagger Petstore
+ * OpenAPI Petstore
  * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
  *
  * OpenAPI spec version: 1.0.0
- * Contact: apiteam@swagger.io
  *
- * NOTE: This class is auto generated by the swagger code generator program.
- * https://github.com/swagger-api/swagger-codegen.git
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
  *
- * Swagger Codegen version: 2.3.0-SNAPSHOT
+ * OpenAPI Generator version: 3.0.2-SNAPSHOT
  *
  * Do not edit the class manually.
  *
@@ -23,10 +22,10 @@
     module.exports = factory(require('../ApiClient'), require('./Animal'));
   } else {
     // Browser globals (root is window)
-    if (!root.SwaggerPetstore) {
-      root.SwaggerPetstore = {};
+    if (!root.OpenApiPetstore) {
+      root.OpenApiPetstore = {};
     }
-    root.SwaggerPetstore.Cat = factory(root.SwaggerPetstore.ApiClient, root.SwaggerPetstore.Animal);
+    root.OpenApiPetstore.Cat = factory(root.OpenApiPetstore.ApiClient, root.OpenApiPetstore.Animal);
   }
 }(this, function(ApiClient, Animal) {
   'use strict';
@@ -45,11 +44,13 @@
    * @alias module:model/Cat
    * @class
    * @extends module:model/Animal
-   * @param className {String} 
+   * @implements module:model/Animal
+   * @param className {} 
    */
   var exports = function(className) {
     var _this = this;
     Animal.call(_this, className);
+    Animal.call(_this, className);
 
   };
 
@@ -64,6 +65,7 @@
     if (data) {
       obj = obj || new exports();
       Animal.constructFromObject(data, obj);
+      Animal.constructFromObject(data, obj);
       if (data.hasOwnProperty('declawed')) {
         obj['declawed'] = ApiClient.convertToType(data['declawed'], 'Boolean');
       }
@@ -79,6 +81,18 @@
    */
   exports.prototype['declawed'] = undefined;
 
+  // Implement Animal interface:
+  /**
+   * @member {String} className
+   */
+exports.prototype['className'] = undefined;
+
+  /**
+   * @member {String} color
+   * @default 'red'
+   */
+exports.prototype['color'] = 'red';
+
 
 
   return exports;
diff --git a/samples/client/petstore/javascript-promise/src/model/Category.js b/samples/client/petstore/javascript-promise/src/model/Category.js
index 37f547c79a1d..c289c6b8e5bd 100644
--- a/samples/client/petstore/javascript-promise/src/model/Category.js
+++ b/samples/client/petstore/javascript-promise/src/model/Category.js
@@ -1,14 +1,13 @@
 /**
- * Swagger Petstore
+ * OpenAPI Petstore
  * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
  *
  * OpenAPI spec version: 1.0.0
- * Contact: apiteam@swagger.io
  *
- * NOTE: This class is auto generated by the swagger code generator program.
- * https://github.com/swagger-api/swagger-codegen.git
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
  *
- * Swagger Codegen version: 2.3.0-SNAPSHOT
+ * OpenAPI Generator version: 3.0.2-SNAPSHOT
  *
  * Do not edit the class manually.
  *
@@ -23,10 +22,10 @@
     module.exports = factory(require('../ApiClient'));
   } else {
     // Browser globals (root is window)
-    if (!root.SwaggerPetstore) {
-      root.SwaggerPetstore = {};
+    if (!root.OpenApiPetstore) {
+      root.OpenApiPetstore = {};
     }
-    root.SwaggerPetstore.Category = factory(root.SwaggerPetstore.ApiClient);
+    root.OpenApiPetstore.Category = factory(root.OpenApiPetstore.ApiClient);
   }
 }(this, function(ApiClient) {
   'use strict';
diff --git a/samples/client/petstore/javascript-promise/src/model/ClassModel.js b/samples/client/petstore/javascript-promise/src/model/ClassModel.js
index bd390a225241..6edd8fbadd04 100644
--- a/samples/client/petstore/javascript-promise/src/model/ClassModel.js
+++ b/samples/client/petstore/javascript-promise/src/model/ClassModel.js
@@ -1,14 +1,13 @@
 /**
- * Swagger Petstore
+ * OpenAPI Petstore
  * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
  *
  * OpenAPI spec version: 1.0.0
- * Contact: apiteam@swagger.io
  *
- * NOTE: This class is auto generated by the swagger code generator program.
- * https://github.com/swagger-api/swagger-codegen.git
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
  *
- * Swagger Codegen version: 2.3.0-SNAPSHOT
+ * OpenAPI Generator version: 3.0.2-SNAPSHOT
  *
  * Do not edit the class manually.
  *
@@ -23,10 +22,10 @@
     module.exports = factory(require('../ApiClient'));
   } else {
     // Browser globals (root is window)
-    if (!root.SwaggerPetstore) {
-      root.SwaggerPetstore = {};
+    if (!root.OpenApiPetstore) {
+      root.OpenApiPetstore = {};
     }
-    root.SwaggerPetstore.ClassModel = factory(root.SwaggerPetstore.ApiClient);
+    root.OpenApiPetstore.ClassModel = factory(root.OpenApiPetstore.ApiClient);
   }
 }(this, function(ApiClient) {
   'use strict';
diff --git a/samples/client/petstore/javascript-promise/src/model/Client.js b/samples/client/petstore/javascript-promise/src/model/Client.js
index 21add8d7f98d..e563bcf7ea59 100644
--- a/samples/client/petstore/javascript-promise/src/model/Client.js
+++ b/samples/client/petstore/javascript-promise/src/model/Client.js
@@ -1,14 +1,13 @@
 /**
- * Swagger Petstore
+ * OpenAPI Petstore
  * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
  *
  * OpenAPI spec version: 1.0.0
- * Contact: apiteam@swagger.io
  *
- * NOTE: This class is auto generated by the swagger code generator program.
- * https://github.com/swagger-api/swagger-codegen.git
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
  *
- * Swagger Codegen version: 2.3.0-SNAPSHOT
+ * OpenAPI Generator version: 3.0.2-SNAPSHOT
  *
  * Do not edit the class manually.
  *
@@ -23,10 +22,10 @@
     module.exports = factory(require('../ApiClient'));
   } else {
     // Browser globals (root is window)
-    if (!root.SwaggerPetstore) {
-      root.SwaggerPetstore = {};
+    if (!root.OpenApiPetstore) {
+      root.OpenApiPetstore = {};
     }
-    root.SwaggerPetstore.Client = factory(root.SwaggerPetstore.ApiClient);
+    root.OpenApiPetstore.Client = factory(root.OpenApiPetstore.ApiClient);
   }
 }(this, function(ApiClient) {
   'use strict';
diff --git a/samples/client/petstore/javascript-promise/src/model/Dog.js b/samples/client/petstore/javascript-promise/src/model/Dog.js
index f567953b6255..c308f3dc9f11 100644
--- a/samples/client/petstore/javascript-promise/src/model/Dog.js
+++ b/samples/client/petstore/javascript-promise/src/model/Dog.js
@@ -1,14 +1,13 @@
 /**
- * Swagger Petstore
+ * OpenAPI Petstore
  * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
  *
  * OpenAPI spec version: 1.0.0
- * Contact: apiteam@swagger.io
  *
- * NOTE: This class is auto generated by the swagger code generator program.
- * https://github.com/swagger-api/swagger-codegen.git
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
  *
- * Swagger Codegen version: 2.3.0-SNAPSHOT
+ * OpenAPI Generator version: 3.0.2-SNAPSHOT
  *
  * Do not edit the class manually.
  *
@@ -23,10 +22,10 @@
     module.exports = factory(require('../ApiClient'), require('./Animal'));
   } else {
     // Browser globals (root is window)
-    if (!root.SwaggerPetstore) {
-      root.SwaggerPetstore = {};
+    if (!root.OpenApiPetstore) {
+      root.OpenApiPetstore = {};
     }
-    root.SwaggerPetstore.Dog = factory(root.SwaggerPetstore.ApiClient, root.SwaggerPetstore.Animal);
+    root.OpenApiPetstore.Dog = factory(root.OpenApiPetstore.ApiClient, root.OpenApiPetstore.Animal);
   }
 }(this, function(ApiClient, Animal) {
   'use strict';
@@ -45,11 +44,13 @@
    * @alias module:model/Dog
    * @class
    * @extends module:model/Animal
-   * @param className {String} 
+   * @implements module:model/Animal
+   * @param className {} 
    */
   var exports = function(className) {
     var _this = this;
     Animal.call(_this, className);
+    Animal.call(_this, className);
 
   };
 
@@ -64,6 +65,7 @@
     if (data) {
       obj = obj || new exports();
       Animal.constructFromObject(data, obj);
+      Animal.constructFromObject(data, obj);
       if (data.hasOwnProperty('breed')) {
         obj['breed'] = ApiClient.convertToType(data['breed'], 'String');
       }
@@ -79,6 +81,18 @@
    */
   exports.prototype['breed'] = undefined;
 
+  // Implement Animal interface:
+  /**
+   * @member {String} className
+   */
+exports.prototype['className'] = undefined;
+
+  /**
+   * @member {String} color
+   * @default 'red'
+   */
+exports.prototype['color'] = 'red';
+
 
 
   return exports;
diff --git a/samples/client/petstore/javascript-promise/src/model/EnumArrays.js b/samples/client/petstore/javascript-promise/src/model/EnumArrays.js
index 00036542ba72..07d52b119db0 100644
--- a/samples/client/petstore/javascript-promise/src/model/EnumArrays.js
+++ b/samples/client/petstore/javascript-promise/src/model/EnumArrays.js
@@ -1,14 +1,13 @@
 /**
- * Swagger Petstore
+ * OpenAPI Petstore
  * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
  *
  * OpenAPI spec version: 1.0.0
- * Contact: apiteam@swagger.io
  *
- * NOTE: This class is auto generated by the swagger code generator program.
- * https://github.com/swagger-api/swagger-codegen.git
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
  *
- * Swagger Codegen version: 2.3.0-SNAPSHOT
+ * OpenAPI Generator version: 3.0.2-SNAPSHOT
  *
  * Do not edit the class manually.
  *
@@ -23,10 +22,10 @@
     module.exports = factory(require('../ApiClient'));
   } else {
     // Browser globals (root is window)
-    if (!root.SwaggerPetstore) {
-      root.SwaggerPetstore = {};
+    if (!root.OpenApiPetstore) {
+      root.OpenApiPetstore = {};
     }
-    root.SwaggerPetstore.EnumArrays = factory(root.SwaggerPetstore.ApiClient);
+    root.OpenApiPetstore.EnumArrays = factory(root.OpenApiPetstore.ApiClient);
   }
 }(this, function(ApiClient) {
   'use strict';
diff --git a/samples/client/petstore/javascript-promise/src/model/EnumClass.js b/samples/client/petstore/javascript-promise/src/model/EnumClass.js
index f03ab350d2f0..d4a9f39f5661 100644
--- a/samples/client/petstore/javascript-promise/src/model/EnumClass.js
+++ b/samples/client/petstore/javascript-promise/src/model/EnumClass.js
@@ -1,14 +1,13 @@
 /**
- * Swagger Petstore
+ * OpenAPI Petstore
  * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
  *
  * OpenAPI spec version: 1.0.0
- * Contact: apiteam@swagger.io
  *
- * NOTE: This class is auto generated by the swagger code generator program.
- * https://github.com/swagger-api/swagger-codegen.git
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
  *
- * Swagger Codegen version: 2.3.0-SNAPSHOT
+ * OpenAPI Generator version: 3.0.2-SNAPSHOT
  *
  * Do not edit the class manually.
  *
@@ -23,10 +22,10 @@
     module.exports = factory(require('../ApiClient'));
   } else {
     // Browser globals (root is window)
-    if (!root.SwaggerPetstore) {
-      root.SwaggerPetstore = {};
+    if (!root.OpenApiPetstore) {
+      root.OpenApiPetstore = {};
     }
-    root.SwaggerPetstore.EnumClass = factory(root.SwaggerPetstore.ApiClient);
+    root.OpenApiPetstore.EnumClass = factory(root.OpenApiPetstore.ApiClient);
   }
 }(this, function(ApiClient) {
   'use strict';
diff --git a/samples/client/petstore/javascript-promise/src/model/EnumTest.js b/samples/client/petstore/javascript-promise/src/model/EnumTest.js
index 3e7c9311aafb..4dfc6753323a 100644
--- a/samples/client/petstore/javascript-promise/src/model/EnumTest.js
+++ b/samples/client/petstore/javascript-promise/src/model/EnumTest.js
@@ -1,14 +1,13 @@
 /**
- * Swagger Petstore
+ * OpenAPI Petstore
  * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
  *
  * OpenAPI spec version: 1.0.0
- * Contact: apiteam@swagger.io
  *
- * NOTE: This class is auto generated by the swagger code generator program.
- * https://github.com/swagger-api/swagger-codegen.git
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
  *
- * Swagger Codegen version: 2.3.0-SNAPSHOT
+ * OpenAPI Generator version: 3.0.2-SNAPSHOT
  *
  * Do not edit the class manually.
  *
@@ -23,10 +22,10 @@
     module.exports = factory(require('../ApiClient'), require('./OuterEnum'));
   } else {
     // Browser globals (root is window)
-    if (!root.SwaggerPetstore) {
-      root.SwaggerPetstore = {};
+    if (!root.OpenApiPetstore) {
+      root.OpenApiPetstore = {};
     }
-    root.SwaggerPetstore.EnumTest = factory(root.SwaggerPetstore.ApiClient, root.SwaggerPetstore.OuterEnum);
+    root.OpenApiPetstore.EnumTest = factory(root.OpenApiPetstore.ApiClient, root.OpenApiPetstore.OuterEnum);
   }
 }(this, function(ApiClient, OuterEnum) {
   'use strict';
@@ -44,11 +43,13 @@
    * Constructs a new EnumTest.
    * @alias module:model/EnumTest
    * @class
+   * @param enumStringRequired {module:model/EnumTest.EnumStringRequiredEnum} 
    */
-  var exports = function() {
+  var exports = function(enumStringRequired) {
     var _this = this;
 
 
+    _this['enum_string_required'] = enumStringRequired;
 
 
 
@@ -68,6 +69,9 @@
       if (data.hasOwnProperty('enum_string')) {
         obj['enum_string'] = ApiClient.convertToType(data['enum_string'], 'String');
       }
+      if (data.hasOwnProperty('enum_string_required')) {
+        obj['enum_string_required'] = ApiClient.convertToType(data['enum_string_required'], 'String');
+      }
       if (data.hasOwnProperty('enum_integer')) {
         obj['enum_integer'] = ApiClient.convertToType(data['enum_integer'], 'Number');
       }
@@ -85,6 +89,10 @@
    * @member {module:model/EnumTest.EnumStringEnum} enum_string
    */
   exports.prototype['enum_string'] = undefined;
+  /**
+   * @member {module:model/EnumTest.EnumStringRequiredEnum} enum_string_required
+   */
+  exports.prototype['enum_string_required'] = undefined;
   /**
    * @member {module:model/EnumTest.EnumIntegerEnum} enum_integer
    */
@@ -121,6 +129,28 @@
      */
     "empty": ""  };
 
+  /**
+   * Allowed values for the enum_string_required property.
+   * @enum {String}
+   * @readonly
+   */
+  exports.EnumStringRequiredEnum = {
+    /**
+     * value: "UPPER"
+     * @const
+     */
+    "UPPER": "UPPER",
+    /**
+     * value: "lower"
+     * @const
+     */
+    "lower": "lower",
+    /**
+     * value: ""
+     * @const
+     */
+    "empty": ""  };
+
   /**
    * Allowed values for the enum_integer property.
    * @enum {Number}
diff --git a/samples/client/petstore/javascript-promise/src/model/FormatTest.js b/samples/client/petstore/javascript-promise/src/model/FormatTest.js
index 9b93b06b7ca6..6c5986d48985 100644
--- a/samples/client/petstore/javascript-promise/src/model/FormatTest.js
+++ b/samples/client/petstore/javascript-promise/src/model/FormatTest.js
@@ -1,14 +1,13 @@
 /**
- * Swagger Petstore
+ * OpenAPI Petstore
  * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
  *
  * OpenAPI spec version: 1.0.0
- * Contact: apiteam@swagger.io
  *
- * NOTE: This class is auto generated by the swagger code generator program.
- * https://github.com/swagger-api/swagger-codegen.git
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
  *
- * Swagger Codegen version: 2.3.0-SNAPSHOT
+ * OpenAPI Generator version: 3.0.2-SNAPSHOT
  *
  * Do not edit the class manually.
  *
@@ -23,10 +22,10 @@
     module.exports = factory(require('../ApiClient'));
   } else {
     // Browser globals (root is window)
-    if (!root.SwaggerPetstore) {
-      root.SwaggerPetstore = {};
+    if (!root.OpenApiPetstore) {
+      root.OpenApiPetstore = {};
     }
-    root.SwaggerPetstore.FormatTest = factory(root.SwaggerPetstore.ApiClient);
+    root.OpenApiPetstore.FormatTest = factory(root.OpenApiPetstore.ApiClient);
   }
 }(this, function(ApiClient) {
   'use strict';
@@ -103,7 +102,7 @@
         obj['byte'] = ApiClient.convertToType(data['byte'], 'Blob');
       }
       if (data.hasOwnProperty('binary')) {
-        obj['binary'] = ApiClient.convertToType(data['binary'], 'Blob');
+        obj['binary'] = ApiClient.convertToType(data['binary'], File);
       }
       if (data.hasOwnProperty('date')) {
         obj['date'] = ApiClient.convertToType(data['date'], 'Date');
@@ -154,7 +153,7 @@
    */
   exports.prototype['byte'] = undefined;
   /**
-   * @member {Blob} binary
+   * @member {File} binary
    */
   exports.prototype['binary'] = undefined;
   /**
diff --git a/samples/client/petstore/javascript-promise/src/model/HasOnlyReadOnly.js b/samples/client/petstore/javascript-promise/src/model/HasOnlyReadOnly.js
index 17c09dfca7bf..484fd0c99910 100644
--- a/samples/client/petstore/javascript-promise/src/model/HasOnlyReadOnly.js
+++ b/samples/client/petstore/javascript-promise/src/model/HasOnlyReadOnly.js
@@ -1,14 +1,13 @@
 /**
- * Swagger Petstore
+ * OpenAPI Petstore
  * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
  *
  * OpenAPI spec version: 1.0.0
- * Contact: apiteam@swagger.io
  *
- * NOTE: This class is auto generated by the swagger code generator program.
- * https://github.com/swagger-api/swagger-codegen.git
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
  *
- * Swagger Codegen version: 2.3.0-SNAPSHOT
+ * OpenAPI Generator version: 3.0.2-SNAPSHOT
  *
  * Do not edit the class manually.
  *
@@ -23,10 +22,10 @@
     module.exports = factory(require('../ApiClient'));
   } else {
     // Browser globals (root is window)
-    if (!root.SwaggerPetstore) {
-      root.SwaggerPetstore = {};
+    if (!root.OpenApiPetstore) {
+      root.OpenApiPetstore = {};
     }
-    root.SwaggerPetstore.HasOnlyReadOnly = factory(root.SwaggerPetstore.ApiClient);
+    root.OpenApiPetstore.HasOnlyReadOnly = factory(root.OpenApiPetstore.ApiClient);
   }
 }(this, function(ApiClient) {
   'use strict';
diff --git a/samples/client/petstore/javascript-promise/src/model/List.js b/samples/client/petstore/javascript-promise/src/model/List.js
index ce54341bb18b..ab3c2e34e343 100644
--- a/samples/client/petstore/javascript-promise/src/model/List.js
+++ b/samples/client/petstore/javascript-promise/src/model/List.js
@@ -1,14 +1,13 @@
 /**
- * Swagger Petstore
+ * OpenAPI Petstore
  * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
  *
  * OpenAPI spec version: 1.0.0
- * Contact: apiteam@swagger.io
  *
- * NOTE: This class is auto generated by the swagger code generator program.
- * https://github.com/swagger-api/swagger-codegen.git
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
  *
- * Swagger Codegen version: 2.3.0-SNAPSHOT
+ * OpenAPI Generator version: 3.0.2-SNAPSHOT
  *
  * Do not edit the class manually.
  *
@@ -23,10 +22,10 @@
     module.exports = factory(require('../ApiClient'));
   } else {
     // Browser globals (root is window)
-    if (!root.SwaggerPetstore) {
-      root.SwaggerPetstore = {};
+    if (!root.OpenApiPetstore) {
+      root.OpenApiPetstore = {};
     }
-    root.SwaggerPetstore.List = factory(root.SwaggerPetstore.ApiClient);
+    root.OpenApiPetstore.List = factory(root.OpenApiPetstore.ApiClient);
   }
 }(this, function(ApiClient) {
   'use strict';
diff --git a/samples/client/petstore/javascript-promise/src/model/MapTest.js b/samples/client/petstore/javascript-promise/src/model/MapTest.js
index b7d0164b998e..adf82a358c28 100644
--- a/samples/client/petstore/javascript-promise/src/model/MapTest.js
+++ b/samples/client/petstore/javascript-promise/src/model/MapTest.js
@@ -1,14 +1,13 @@
 /**
- * Swagger Petstore
+ * OpenAPI Petstore
  * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
  *
  * OpenAPI spec version: 1.0.0
- * Contact: apiteam@swagger.io
  *
- * NOTE: This class is auto generated by the swagger code generator program.
- * https://github.com/swagger-api/swagger-codegen.git
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
  *
- * Swagger Codegen version: 2.3.0-SNAPSHOT
+ * OpenAPI Generator version: 3.0.2-SNAPSHOT
  *
  * Do not edit the class manually.
  *
@@ -23,10 +22,10 @@
     module.exports = factory(require('../ApiClient'));
   } else {
     // Browser globals (root is window)
-    if (!root.SwaggerPetstore) {
-      root.SwaggerPetstore = {};
+    if (!root.OpenApiPetstore) {
+      root.OpenApiPetstore = {};
     }
-    root.SwaggerPetstore.MapTest = factory(root.SwaggerPetstore.ApiClient);
+    root.OpenApiPetstore.MapTest = factory(root.OpenApiPetstore.ApiClient);
   }
 }(this, function(ApiClient) {
   'use strict';
diff --git a/samples/client/petstore/javascript-promise/src/model/MixedPropertiesAndAdditionalPropertiesClass.js b/samples/client/petstore/javascript-promise/src/model/MixedPropertiesAndAdditionalPropertiesClass.js
index 973ca5a65e23..62c7a2f59e32 100644
--- a/samples/client/petstore/javascript-promise/src/model/MixedPropertiesAndAdditionalPropertiesClass.js
+++ b/samples/client/petstore/javascript-promise/src/model/MixedPropertiesAndAdditionalPropertiesClass.js
@@ -1,14 +1,13 @@
 /**
- * Swagger Petstore
+ * OpenAPI Petstore
  * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
  *
  * OpenAPI spec version: 1.0.0
- * Contact: apiteam@swagger.io
  *
- * NOTE: This class is auto generated by the swagger code generator program.
- * https://github.com/swagger-api/swagger-codegen.git
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
  *
- * Swagger Codegen version: 2.3.0-SNAPSHOT
+ * OpenAPI Generator version: 3.0.2-SNAPSHOT
  *
  * Do not edit the class manually.
  *
@@ -23,10 +22,10 @@
     module.exports = factory(require('../ApiClient'), require('./Animal'));
   } else {
     // Browser globals (root is window)
-    if (!root.SwaggerPetstore) {
-      root.SwaggerPetstore = {};
+    if (!root.OpenApiPetstore) {
+      root.OpenApiPetstore = {};
     }
-    root.SwaggerPetstore.MixedPropertiesAndAdditionalPropertiesClass = factory(root.SwaggerPetstore.ApiClient, root.SwaggerPetstore.Animal);
+    root.OpenApiPetstore.MixedPropertiesAndAdditionalPropertiesClass = factory(root.OpenApiPetstore.ApiClient, root.OpenApiPetstore.Animal);
   }
 }(this, function(ApiClient, Animal) {
   'use strict';
diff --git a/samples/client/petstore/javascript-promise/src/model/Model200Response.js b/samples/client/petstore/javascript-promise/src/model/Model200Response.js
index c382f3333441..84131169fb13 100644
--- a/samples/client/petstore/javascript-promise/src/model/Model200Response.js
+++ b/samples/client/petstore/javascript-promise/src/model/Model200Response.js
@@ -1,14 +1,13 @@
 /**
- * Swagger Petstore
+ * OpenAPI Petstore
  * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
  *
  * OpenAPI spec version: 1.0.0
- * Contact: apiteam@swagger.io
  *
- * NOTE: This class is auto generated by the swagger code generator program.
- * https://github.com/swagger-api/swagger-codegen.git
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
  *
- * Swagger Codegen version: 2.3.0-SNAPSHOT
+ * OpenAPI Generator version: 3.0.2-SNAPSHOT
  *
  * Do not edit the class manually.
  *
@@ -23,10 +22,10 @@
     module.exports = factory(require('../ApiClient'));
   } else {
     // Browser globals (root is window)
-    if (!root.SwaggerPetstore) {
-      root.SwaggerPetstore = {};
+    if (!root.OpenApiPetstore) {
+      root.OpenApiPetstore = {};
     }
-    root.SwaggerPetstore.Model200Response = factory(root.SwaggerPetstore.ApiClient);
+    root.OpenApiPetstore.Model200Response = factory(root.OpenApiPetstore.ApiClient);
   }
 }(this, function(ApiClient) {
   'use strict';
diff --git a/samples/client/petstore/javascript-promise/src/model/ModelReturn.js b/samples/client/petstore/javascript-promise/src/model/ModelReturn.js
index fa5bc9910f86..87484d2ee234 100644
--- a/samples/client/petstore/javascript-promise/src/model/ModelReturn.js
+++ b/samples/client/petstore/javascript-promise/src/model/ModelReturn.js
@@ -1,14 +1,13 @@
 /**
- * Swagger Petstore
+ * OpenAPI Petstore
  * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
  *
  * OpenAPI spec version: 1.0.0
- * Contact: apiteam@swagger.io
  *
- * NOTE: This class is auto generated by the swagger code generator program.
- * https://github.com/swagger-api/swagger-codegen.git
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
  *
- * Swagger Codegen version: 2.3.0-SNAPSHOT
+ * OpenAPI Generator version: 3.0.2-SNAPSHOT
  *
  * Do not edit the class manually.
  *
@@ -23,10 +22,10 @@
     module.exports = factory(require('../ApiClient'));
   } else {
     // Browser globals (root is window)
-    if (!root.SwaggerPetstore) {
-      root.SwaggerPetstore = {};
+    if (!root.OpenApiPetstore) {
+      root.OpenApiPetstore = {};
     }
-    root.SwaggerPetstore.ModelReturn = factory(root.SwaggerPetstore.ApiClient);
+    root.OpenApiPetstore.ModelReturn = factory(root.OpenApiPetstore.ApiClient);
   }
 }(this, function(ApiClient) {
   'use strict';
diff --git a/samples/client/petstore/javascript-promise/src/model/Name.js b/samples/client/petstore/javascript-promise/src/model/Name.js
index 0671311976c3..8c851c4cec54 100644
--- a/samples/client/petstore/javascript-promise/src/model/Name.js
+++ b/samples/client/petstore/javascript-promise/src/model/Name.js
@@ -1,14 +1,13 @@
 /**
- * Swagger Petstore
+ * OpenAPI Petstore
  * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
  *
  * OpenAPI spec version: 1.0.0
- * Contact: apiteam@swagger.io
  *
- * NOTE: This class is auto generated by the swagger code generator program.
- * https://github.com/swagger-api/swagger-codegen.git
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
  *
- * Swagger Codegen version: 2.3.0-SNAPSHOT
+ * OpenAPI Generator version: 3.0.2-SNAPSHOT
  *
  * Do not edit the class manually.
  *
@@ -23,10 +22,10 @@
     module.exports = factory(require('../ApiClient'));
   } else {
     // Browser globals (root is window)
-    if (!root.SwaggerPetstore) {
-      root.SwaggerPetstore = {};
+    if (!root.OpenApiPetstore) {
+      root.OpenApiPetstore = {};
     }
-    root.SwaggerPetstore.Name = factory(root.SwaggerPetstore.ApiClient);
+    root.OpenApiPetstore.Name = factory(root.OpenApiPetstore.ApiClient);
   }
 }(this, function(ApiClient) {
   'use strict';
diff --git a/samples/client/petstore/javascript-promise/src/model/NumberOnly.js b/samples/client/petstore/javascript-promise/src/model/NumberOnly.js
index d9ee8fcd3ab4..389ad08e8c5c 100644
--- a/samples/client/petstore/javascript-promise/src/model/NumberOnly.js
+++ b/samples/client/petstore/javascript-promise/src/model/NumberOnly.js
@@ -1,14 +1,13 @@
 /**
- * Swagger Petstore
+ * OpenAPI Petstore
  * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
  *
  * OpenAPI spec version: 1.0.0
- * Contact: apiteam@swagger.io
  *
- * NOTE: This class is auto generated by the swagger code generator program.
- * https://github.com/swagger-api/swagger-codegen.git
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
  *
- * Swagger Codegen version: 2.3.0-SNAPSHOT
+ * OpenAPI Generator version: 3.0.2-SNAPSHOT
  *
  * Do not edit the class manually.
  *
@@ -23,10 +22,10 @@
     module.exports = factory(require('../ApiClient'));
   } else {
     // Browser globals (root is window)
-    if (!root.SwaggerPetstore) {
-      root.SwaggerPetstore = {};
+    if (!root.OpenApiPetstore) {
+      root.OpenApiPetstore = {};
     }
-    root.SwaggerPetstore.NumberOnly = factory(root.SwaggerPetstore.ApiClient);
+    root.OpenApiPetstore.NumberOnly = factory(root.OpenApiPetstore.ApiClient);
   }
 }(this, function(ApiClient) {
   'use strict';
diff --git a/samples/client/petstore/javascript-promise/src/model/Order.js b/samples/client/petstore/javascript-promise/src/model/Order.js
index f082668517f4..bfd5f3714bef 100644
--- a/samples/client/petstore/javascript-promise/src/model/Order.js
+++ b/samples/client/petstore/javascript-promise/src/model/Order.js
@@ -1,14 +1,13 @@
 /**
- * Swagger Petstore
+ * OpenAPI Petstore
  * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
  *
  * OpenAPI spec version: 1.0.0
- * Contact: apiteam@swagger.io
  *
- * NOTE: This class is auto generated by the swagger code generator program.
- * https://github.com/swagger-api/swagger-codegen.git
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
  *
- * Swagger Codegen version: 2.3.0-SNAPSHOT
+ * OpenAPI Generator version: 3.0.2-SNAPSHOT
  *
  * Do not edit the class manually.
  *
@@ -23,10 +22,10 @@
     module.exports = factory(require('../ApiClient'));
   } else {
     // Browser globals (root is window)
-    if (!root.SwaggerPetstore) {
-      root.SwaggerPetstore = {};
+    if (!root.OpenApiPetstore) {
+      root.OpenApiPetstore = {};
     }
-    root.SwaggerPetstore.Order = factory(root.SwaggerPetstore.ApiClient);
+    root.OpenApiPetstore.Order = factory(root.OpenApiPetstore.ApiClient);
   }
 }(this, function(ApiClient) {
   'use strict';
diff --git a/samples/client/petstore/javascript-promise/src/model/OuterComposite.js b/samples/client/petstore/javascript-promise/src/model/OuterComposite.js
index 14e7775588b9..b4fc48476dee 100644
--- a/samples/client/petstore/javascript-promise/src/model/OuterComposite.js
+++ b/samples/client/petstore/javascript-promise/src/model/OuterComposite.js
@@ -1,14 +1,13 @@
 /**
- * Swagger Petstore
+ * OpenAPI Petstore
  * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
  *
  * OpenAPI spec version: 1.0.0
- * Contact: apiteam@swagger.io
  *
- * NOTE: This class is auto generated by the swagger code generator program.
- * https://github.com/swagger-api/swagger-codegen.git
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
  *
- * Swagger Codegen version: 2.3.0-SNAPSHOT
+ * OpenAPI Generator version: 3.0.2-SNAPSHOT
  *
  * Do not edit the class manually.
  *
@@ -17,18 +16,18 @@
 (function(root, factory) {
   if (typeof define === 'function' && define.amd) {
     // AMD. Register as an anonymous module.
-    define(['ApiClient', 'model/OuterBoolean', 'model/OuterNumber', 'model/OuterString'], factory);
+    define(['ApiClient'], factory);
   } else if (typeof module === 'object' && module.exports) {
     // CommonJS-like environments that support module.exports, like Node.
-    module.exports = factory(require('../ApiClient'), require('./OuterBoolean'), require('./OuterNumber'), require('./OuterString'));
+    module.exports = factory(require('../ApiClient'));
   } else {
     // Browser globals (root is window)
-    if (!root.SwaggerPetstore) {
-      root.SwaggerPetstore = {};
+    if (!root.OpenApiPetstore) {
+      root.OpenApiPetstore = {};
     }
-    root.SwaggerPetstore.OuterComposite = factory(root.SwaggerPetstore.ApiClient, root.SwaggerPetstore.OuterBoolean, root.SwaggerPetstore.OuterNumber, root.SwaggerPetstore.OuterString);
+    root.OpenApiPetstore.OuterComposite = factory(root.OpenApiPetstore.ApiClient);
   }
-}(this, function(ApiClient, OuterBoolean, OuterNumber, OuterString) {
+}(this, function(ApiClient) {
   'use strict';
 
 
@@ -65,28 +64,28 @@
       obj = obj || new exports();
 
       if (data.hasOwnProperty('my_number')) {
-        obj['my_number'] = OuterNumber.constructFromObject(data['my_number']);
+        obj['my_number'] = 'Number'.constructFromObject(data['my_number']);
       }
       if (data.hasOwnProperty('my_string')) {
-        obj['my_string'] = OuterString.constructFromObject(data['my_string']);
+        obj['my_string'] = 'String'.constructFromObject(data['my_string']);
       }
       if (data.hasOwnProperty('my_boolean')) {
-        obj['my_boolean'] = OuterBoolean.constructFromObject(data['my_boolean']);
+        obj['my_boolean'] = 'Boolean'.constructFromObject(data['my_boolean']);
       }
     }
     return obj;
   }
 
   /**
-   * @member {module:model/OuterNumber} my_number
+   * @member {Number} my_number
    */
   exports.prototype['my_number'] = undefined;
   /**
-   * @member {module:model/OuterString} my_string
+   * @member {String} my_string
    */
   exports.prototype['my_string'] = undefined;
   /**
-   * @member {module:model/OuterBoolean} my_boolean
+   * @member {Boolean} my_boolean
    */
   exports.prototype['my_boolean'] = undefined;
 
diff --git a/samples/client/petstore/javascript-promise/src/model/OuterEnum.js b/samples/client/petstore/javascript-promise/src/model/OuterEnum.js
index cdd43098369d..9e1f532b44d0 100644
--- a/samples/client/petstore/javascript-promise/src/model/OuterEnum.js
+++ b/samples/client/petstore/javascript-promise/src/model/OuterEnum.js
@@ -1,14 +1,13 @@
 /**
- * Swagger Petstore
+ * OpenAPI Petstore
  * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
  *
  * OpenAPI spec version: 1.0.0
- * Contact: apiteam@swagger.io
  *
- * NOTE: This class is auto generated by the swagger code generator program.
- * https://github.com/swagger-api/swagger-codegen.git
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
  *
- * Swagger Codegen version: 2.3.0-SNAPSHOT
+ * OpenAPI Generator version: 3.0.2-SNAPSHOT
  *
  * Do not edit the class manually.
  *
@@ -23,10 +22,10 @@
     module.exports = factory(require('../ApiClient'));
   } else {
     // Browser globals (root is window)
-    if (!root.SwaggerPetstore) {
-      root.SwaggerPetstore = {};
+    if (!root.OpenApiPetstore) {
+      root.OpenApiPetstore = {};
     }
-    root.SwaggerPetstore.OuterEnum = factory(root.SwaggerPetstore.ApiClient);
+    root.OpenApiPetstore.OuterEnum = factory(root.OpenApiPetstore.ApiClient);
   }
 }(this, function(ApiClient) {
   'use strict';
diff --git a/samples/client/petstore/javascript-promise/src/model/Pet.js b/samples/client/petstore/javascript-promise/src/model/Pet.js
index 7edd65724ba1..55997490b789 100644
--- a/samples/client/petstore/javascript-promise/src/model/Pet.js
+++ b/samples/client/petstore/javascript-promise/src/model/Pet.js
@@ -1,14 +1,13 @@
 /**
- * Swagger Petstore
+ * OpenAPI Petstore
  * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
  *
  * OpenAPI spec version: 1.0.0
- * Contact: apiteam@swagger.io
  *
- * NOTE: This class is auto generated by the swagger code generator program.
- * https://github.com/swagger-api/swagger-codegen.git
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
  *
- * Swagger Codegen version: 2.3.0-SNAPSHOT
+ * OpenAPI Generator version: 3.0.2-SNAPSHOT
  *
  * Do not edit the class manually.
  *
@@ -23,10 +22,10 @@
     module.exports = factory(require('../ApiClient'), require('./Category'), require('./Tag'));
   } else {
     // Browser globals (root is window)
-    if (!root.SwaggerPetstore) {
-      root.SwaggerPetstore = {};
+    if (!root.OpenApiPetstore) {
+      root.OpenApiPetstore = {};
     }
-    root.SwaggerPetstore.Pet = factory(root.SwaggerPetstore.ApiClient, root.SwaggerPetstore.Category, root.SwaggerPetstore.Tag);
+    root.OpenApiPetstore.Pet = factory(root.OpenApiPetstore.ApiClient, root.OpenApiPetstore.Category, root.OpenApiPetstore.Tag);
   }
 }(this, function(ApiClient, Category, Tag) {
   'use strict';
diff --git a/samples/client/petstore/javascript-promise/src/model/ReadOnlyFirst.js b/samples/client/petstore/javascript-promise/src/model/ReadOnlyFirst.js
index f6f0064fd96f..1b0ae1104cc6 100644
--- a/samples/client/petstore/javascript-promise/src/model/ReadOnlyFirst.js
+++ b/samples/client/petstore/javascript-promise/src/model/ReadOnlyFirst.js
@@ -1,14 +1,13 @@
 /**
- * Swagger Petstore
+ * OpenAPI Petstore
  * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
  *
  * OpenAPI spec version: 1.0.0
- * Contact: apiteam@swagger.io
  *
- * NOTE: This class is auto generated by the swagger code generator program.
- * https://github.com/swagger-api/swagger-codegen.git
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
  *
- * Swagger Codegen version: 2.3.0-SNAPSHOT
+ * OpenAPI Generator version: 3.0.2-SNAPSHOT
  *
  * Do not edit the class manually.
  *
@@ -23,10 +22,10 @@
     module.exports = factory(require('../ApiClient'));
   } else {
     // Browser globals (root is window)
-    if (!root.SwaggerPetstore) {
-      root.SwaggerPetstore = {};
+    if (!root.OpenApiPetstore) {
+      root.OpenApiPetstore = {};
     }
-    root.SwaggerPetstore.ReadOnlyFirst = factory(root.SwaggerPetstore.ApiClient);
+    root.OpenApiPetstore.ReadOnlyFirst = factory(root.OpenApiPetstore.ApiClient);
   }
 }(this, function(ApiClient) {
   'use strict';
diff --git a/samples/client/petstore/javascript-promise/src/model/SpecialModelName.js b/samples/client/petstore/javascript-promise/src/model/SpecialModelName.js
index 921a1e873799..22464bbe7a25 100644
--- a/samples/client/petstore/javascript-promise/src/model/SpecialModelName.js
+++ b/samples/client/petstore/javascript-promise/src/model/SpecialModelName.js
@@ -1,14 +1,13 @@
 /**
- * Swagger Petstore
+ * OpenAPI Petstore
  * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
  *
  * OpenAPI spec version: 1.0.0
- * Contact: apiteam@swagger.io
  *
- * NOTE: This class is auto generated by the swagger code generator program.
- * https://github.com/swagger-api/swagger-codegen.git
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
  *
- * Swagger Codegen version: 2.3.0-SNAPSHOT
+ * OpenAPI Generator version: 3.0.2-SNAPSHOT
  *
  * Do not edit the class manually.
  *
@@ -23,10 +22,10 @@
     module.exports = factory(require('../ApiClient'));
   } else {
     // Browser globals (root is window)
-    if (!root.SwaggerPetstore) {
-      root.SwaggerPetstore = {};
+    if (!root.OpenApiPetstore) {
+      root.OpenApiPetstore = {};
     }
-    root.SwaggerPetstore.SpecialModelName = factory(root.SwaggerPetstore.ApiClient);
+    root.OpenApiPetstore.SpecialModelName = factory(root.OpenApiPetstore.ApiClient);
   }
 }(this, function(ApiClient) {
   'use strict';
diff --git a/samples/client/petstore/javascript-promise/src/model/Tag.js b/samples/client/petstore/javascript-promise/src/model/Tag.js
index 6308751e08f3..9e4f88b0872e 100644
--- a/samples/client/petstore/javascript-promise/src/model/Tag.js
+++ b/samples/client/petstore/javascript-promise/src/model/Tag.js
@@ -1,14 +1,13 @@
 /**
- * Swagger Petstore
+ * OpenAPI Petstore
  * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
  *
  * OpenAPI spec version: 1.0.0
- * Contact: apiteam@swagger.io
  *
- * NOTE: This class is auto generated by the swagger code generator program.
- * https://github.com/swagger-api/swagger-codegen.git
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
  *
- * Swagger Codegen version: 2.3.0-SNAPSHOT
+ * OpenAPI Generator version: 3.0.2-SNAPSHOT
  *
  * Do not edit the class manually.
  *
@@ -23,10 +22,10 @@
     module.exports = factory(require('../ApiClient'));
   } else {
     // Browser globals (root is window)
-    if (!root.SwaggerPetstore) {
-      root.SwaggerPetstore = {};
+    if (!root.OpenApiPetstore) {
+      root.OpenApiPetstore = {};
     }
-    root.SwaggerPetstore.Tag = factory(root.SwaggerPetstore.ApiClient);
+    root.OpenApiPetstore.Tag = factory(root.OpenApiPetstore.ApiClient);
   }
 }(this, function(ApiClient) {
   'use strict';
diff --git a/samples/client/petstore/javascript-promise/src/model/User.js b/samples/client/petstore/javascript-promise/src/model/User.js
index 1d251e22b3c9..06d4e6e7ad0a 100644
--- a/samples/client/petstore/javascript-promise/src/model/User.js
+++ b/samples/client/petstore/javascript-promise/src/model/User.js
@@ -1,14 +1,13 @@
 /**
- * Swagger Petstore
+ * OpenAPI Petstore
  * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
  *
  * OpenAPI spec version: 1.0.0
- * Contact: apiteam@swagger.io
  *
- * NOTE: This class is auto generated by the swagger code generator program.
- * https://github.com/swagger-api/swagger-codegen.git
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
  *
- * Swagger Codegen version: 2.3.0-SNAPSHOT
+ * OpenAPI Generator version: 3.0.2-SNAPSHOT
  *
  * Do not edit the class manually.
  *
@@ -23,10 +22,10 @@
     module.exports = factory(require('../ApiClient'));
   } else {
     // Browser globals (root is window)
-    if (!root.SwaggerPetstore) {
-      root.SwaggerPetstore = {};
+    if (!root.OpenApiPetstore) {
+      root.OpenApiPetstore = {};
     }
-    root.SwaggerPetstore.User = factory(root.SwaggerPetstore.ApiClient);
+    root.OpenApiPetstore.User = factory(root.OpenApiPetstore.ApiClient);
   }
 }(this, function(ApiClient) {
   'use strict';
diff --git a/samples/client/petstore/javascript-promise/test/ApiClientTest.js b/samples/client/petstore/javascript-promise/test/ApiClientTest.js
index b58a27a025b1..5e98b685a911 100644
--- a/samples/client/petstore/javascript-promise/test/ApiClientTest.js
+++ b/samples/client/petstore/javascript-promise/test/ApiClientTest.js
@@ -14,7 +14,8 @@ describe('ApiClient', function() {
       expect(apiClient.authentications).to.eql({
         petstore_auth: {type: 'oauth2'},
         http_basic_test: {type: 'basic'},
-        api_key: {type: 'apiKey', 'in': 'header', name: 'api_key'}
+        api_key: {type: 'apiKey', 'in': 'header', name: 'api_key'},
+        api_key_query: {type: 'apiKey', 'in': 'query', name: 'api_key_query'},
       /* comment out the following as these fake security def (testing purpose)
        * are removed from the spec, we'll add these back after updating the 
        * petstore server
diff --git a/samples/client/petstore/javascript-promise/test/model/OuterBoolean.spec.js b/samples/client/petstore/javascript-promise/test/model/OuterBoolean.spec.js
index d5495a638d81..765f758cd095 100644
--- a/samples/client/petstore/javascript-promise/test/model/OuterBoolean.spec.js
+++ b/samples/client/petstore/javascript-promise/test/model/OuterBoolean.spec.js
@@ -28,7 +28,8 @@
   var instance;
 
   beforeEach(function() {
-    instance = new SwaggerPetstore.OuterBoolean();
+    // OuterBoolean is not a member of SwaggerPetstore
+    //instance = new SwaggerPetstore.OuterBoolean();
   });
 
   var getProperty = function(object, getter, property) {
diff --git a/samples/client/petstore/javascript-promise/test/model/OuterNumber.spec.js b/samples/client/petstore/javascript-promise/test/model/OuterNumber.spec.js
index 7b0e4ebf1193..2466fbe6dc9f 100644
--- a/samples/client/petstore/javascript-promise/test/model/OuterNumber.spec.js
+++ b/samples/client/petstore/javascript-promise/test/model/OuterNumber.spec.js
@@ -28,7 +28,8 @@
   var instance;
 
   beforeEach(function() {
-    instance = new SwaggerPetstore.OuterNumber();
+    // OuterNumber is not a member of SwaggerPetstore
+    //instance = new SwaggerPetstore.OuterNumber();
   });
 
   var getProperty = function(object, getter, property) {
diff --git a/samples/client/petstore/javascript-promise/test/model/OuterString.spec.js b/samples/client/petstore/javascript-promise/test/model/OuterString.spec.js
index 4e7f99ca88d1..46d6c579bc9f 100644
--- a/samples/client/petstore/javascript-promise/test/model/OuterString.spec.js
+++ b/samples/client/petstore/javascript-promise/test/model/OuterString.spec.js
@@ -28,7 +28,8 @@
   var instance;
 
   beforeEach(function() {
-    instance = new SwaggerPetstore.OuterString();
+    // OuterString is not a member of SwaggerPetstore
+    //instance = new SwaggerPetstore.OuterString();
   });
 
   var getProperty = function(object, getter, property) {
diff --git a/samples/client/petstore/javascript/.openapi-generator/VERSION b/samples/client/petstore/javascript/.openapi-generator/VERSION
index 096bf47efe31..1c00c5181548 100644
--- a/samples/client/petstore/javascript/.openapi-generator/VERSION
+++ b/samples/client/petstore/javascript/.openapi-generator/VERSION
@@ -1 +1 @@
-3.0.0-SNAPSHOT
\ No newline at end of file
+3.0.2-SNAPSHOT
\ No newline at end of file
diff --git a/samples/client/petstore/javascript/docs/AdditionalPropertiesClass.md b/samples/client/petstore/javascript/docs/AdditionalPropertiesClass.md
new file mode 100644
index 000000000000..7df1c7b33949
--- /dev/null
+++ b/samples/client/petstore/javascript/docs/AdditionalPropertiesClass.md
@@ -0,0 +1,9 @@
+# OpenApiPetstore.AdditionalPropertiesClass
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**mapProperty** | **{String: String}** |  | [optional] 
+**mapOfMapProperty** | **{String: {String: String}}** |  | [optional] 
+
+
diff --git a/samples/client/petstore/javascript/docs/Animal.md b/samples/client/petstore/javascript/docs/Animal.md
new file mode 100644
index 000000000000..7bff01675818
--- /dev/null
+++ b/samples/client/petstore/javascript/docs/Animal.md
@@ -0,0 +1,9 @@
+# OpenApiPetstore.Animal
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**className** | **String** |  | 
+**color** | **String** |  | [optional] [default to 'red']
+
+
diff --git a/samples/client/petstore/javascript/docs/AnimalFarm.md b/samples/client/petstore/javascript/docs/AnimalFarm.md
new file mode 100644
index 000000000000..ab153513ca9a
--- /dev/null
+++ b/samples/client/petstore/javascript/docs/AnimalFarm.md
@@ -0,0 +1,7 @@
+# OpenApiPetstore.AnimalFarm
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+
+
diff --git a/samples/client/petstore/javascript/docs/AnotherFakeApi.md b/samples/client/petstore/javascript/docs/AnotherFakeApi.md
new file mode 100644
index 000000000000..4529aa0c18b0
--- /dev/null
+++ b/samples/client/petstore/javascript/docs/AnotherFakeApi.md
@@ -0,0 +1,52 @@
+# OpenApiPetstore.AnotherFakeApi
+
+All URIs are relative to *http://petstore.swagger.io:80/v2*
+
+Method | HTTP request | Description
+------------- | ------------- | -------------
+[**testSpecialTags**](AnotherFakeApi.md#testSpecialTags) | **PATCH** /another-fake/dummy | To test special tags
+
+
+
+# **testSpecialTags**
+> Client testSpecialTags(client)
+
+To test special tags
+
+To test special tags
+
+### Example
+```javascript
+var OpenApiPetstore = require('open_api_petstore');
+
+var apiInstance = new OpenApiPetstore.AnotherFakeApi();
+var client = new OpenApiPetstore.Client(); // Client | client model
+var callback = function(error, data, response) {
+  if (error) {
+    console.error(error);
+  } else {
+    console.log('API called successfully. Returned data: ' + data);
+  }
+};
+apiInstance.testSpecialTags(client, callback);
+```
+
+### Parameters
+
+Name | Type | Description  | Notes
+------------- | ------------- | ------------- | -------------
+ **client** | [**Client**](Client.md)| client model | 
+
+### Return type
+
+[**Client**](Client.md)
+
+### Authorization
+
+No authorization required
+
+### HTTP request headers
+
+ - **Content-Type**: application/json
+ - **Accept**: application/json
+
diff --git a/samples/client/petstore/javascript/docs/ApiResponse.md b/samples/client/petstore/javascript/docs/ApiResponse.md
new file mode 100644
index 000000000000..e60378fcbfcb
--- /dev/null
+++ b/samples/client/petstore/javascript/docs/ApiResponse.md
@@ -0,0 +1,10 @@
+# OpenApiPetstore.ApiResponse
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**code** | **Number** |  | [optional] 
+**type** | **String** |  | [optional] 
+**message** | **String** |  | [optional] 
+
+
diff --git a/samples/client/petstore/javascript/docs/ArrayOfArrayOfNumberOnly.md b/samples/client/petstore/javascript/docs/ArrayOfArrayOfNumberOnly.md
new file mode 100644
index 000000000000..7a1426ef8183
--- /dev/null
+++ b/samples/client/petstore/javascript/docs/ArrayOfArrayOfNumberOnly.md
@@ -0,0 +1,8 @@
+# OpenApiPetstore.ArrayOfArrayOfNumberOnly
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**arrayArrayNumber** | **[[Number]]** |  | [optional] 
+
+
diff --git a/samples/client/petstore/javascript/docs/ArrayOfNumberOnly.md b/samples/client/petstore/javascript/docs/ArrayOfNumberOnly.md
new file mode 100644
index 000000000000..7cec2e71d4b7
--- /dev/null
+++ b/samples/client/petstore/javascript/docs/ArrayOfNumberOnly.md
@@ -0,0 +1,8 @@
+# OpenApiPetstore.ArrayOfNumberOnly
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**arrayNumber** | **[Number]** |  | [optional] 
+
+
diff --git a/samples/client/petstore/javascript/docs/ArrayTest.md b/samples/client/petstore/javascript/docs/ArrayTest.md
new file mode 100644
index 000000000000..5828f6ee75bd
--- /dev/null
+++ b/samples/client/petstore/javascript/docs/ArrayTest.md
@@ -0,0 +1,10 @@
+# OpenApiPetstore.ArrayTest
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**arrayOfString** | **[String]** |  | [optional] 
+**arrayArrayOfInteger** | **[[Number]]** |  | [optional] 
+**arrayArrayOfModel** | **[[ReadOnlyFirst]]** |  | [optional] 
+
+
diff --git a/samples/client/petstore/javascript/docs/Capitalization.md b/samples/client/petstore/javascript/docs/Capitalization.md
new file mode 100644
index 000000000000..abeff984c628
--- /dev/null
+++ b/samples/client/petstore/javascript/docs/Capitalization.md
@@ -0,0 +1,13 @@
+# OpenApiPetstore.Capitalization
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**smallCamel** | **String** |  | [optional] 
+**capitalCamel** | **String** |  | [optional] 
+**smallSnake** | **String** |  | [optional] 
+**capitalSnake** | **String** |  | [optional] 
+**sCAETHFlowPoints** | **String** |  | [optional] 
+**ATT_NAME** | **String** | Name of the pet  | [optional] 
+
+
diff --git a/samples/client/petstore/javascript/docs/Cat.md b/samples/client/petstore/javascript/docs/Cat.md
new file mode 100644
index 000000000000..6dd0f057c857
--- /dev/null
+++ b/samples/client/petstore/javascript/docs/Cat.md
@@ -0,0 +1,8 @@
+# OpenApiPetstore.Cat
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**declawed** | **Boolean** |  | [optional] 
+
+
diff --git a/samples/client/petstore/javascript/docs/Category.md b/samples/client/petstore/javascript/docs/Category.md
new file mode 100644
index 000000000000..e3f934442abc
--- /dev/null
+++ b/samples/client/petstore/javascript/docs/Category.md
@@ -0,0 +1,9 @@
+# OpenApiPetstore.Category
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**id** | **Number** |  | [optional] 
+**name** | **String** |  | [optional] 
+
+
diff --git a/samples/client/petstore/javascript/docs/ClassModel.md b/samples/client/petstore/javascript/docs/ClassModel.md
new file mode 100644
index 000000000000..6fe9c501a5d2
--- /dev/null
+++ b/samples/client/petstore/javascript/docs/ClassModel.md
@@ -0,0 +1,8 @@
+# OpenApiPetstore.ClassModel
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**_class** | **String** |  | [optional] 
+
+
diff --git a/samples/client/petstore/javascript/docs/Client.md b/samples/client/petstore/javascript/docs/Client.md
new file mode 100644
index 000000000000..a6c7711e74e7
--- /dev/null
+++ b/samples/client/petstore/javascript/docs/Client.md
@@ -0,0 +1,8 @@
+# OpenApiPetstore.Client
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**client** | **String** |  | [optional] 
+
+
diff --git a/samples/client/petstore/javascript/docs/Dog.md b/samples/client/petstore/javascript/docs/Dog.md
new file mode 100644
index 000000000000..f35663407e83
--- /dev/null
+++ b/samples/client/petstore/javascript/docs/Dog.md
@@ -0,0 +1,8 @@
+# OpenApiPetstore.Dog
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**breed** | **String** |  | [optional] 
+
+
diff --git a/samples/client/petstore/javascript/docs/EnumArrays.md b/samples/client/petstore/javascript/docs/EnumArrays.md
new file mode 100644
index 000000000000..5f624e5db484
--- /dev/null
+++ b/samples/client/petstore/javascript/docs/EnumArrays.md
@@ -0,0 +1,31 @@
+# OpenApiPetstore.EnumArrays
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**justSymbol** | **String** |  | [optional] 
+**arrayEnum** | **[String]** |  | [optional] 
+
+
+
+## Enum: JustSymbolEnum
+
+
+* `GREATER_THAN_OR_EQUAL_TO` (value: `">="`)
+
+* `DOLLAR` (value: `"$"`)
+
+
+
+
+
+## Enum: [ArrayEnumEnum]
+
+
+* `fish` (value: `"fish"`)
+
+* `crab` (value: `"crab"`)
+
+
+
+
diff --git a/samples/client/petstore/javascript/docs/EnumClass.md b/samples/client/petstore/javascript/docs/EnumClass.md
new file mode 100644
index 000000000000..cef9bb57a56c
--- /dev/null
+++ b/samples/client/petstore/javascript/docs/EnumClass.md
@@ -0,0 +1,12 @@
+# OpenApiPetstore.EnumClass
+
+## Enum
+
+
+* `_abc` (value: `"_abc"`)
+
+* `-efg` (value: `"-efg"`)
+
+* `(xyz)` (value: `"(xyz)"`)
+
+
diff --git a/samples/client/petstore/javascript/docs/EnumTest.md b/samples/client/petstore/javascript/docs/EnumTest.md
new file mode 100644
index 000000000000..c9e7ce86fea5
--- /dev/null
+++ b/samples/client/petstore/javascript/docs/EnumTest.md
@@ -0,0 +1,60 @@
+# OpenApiPetstore.EnumTest
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**enumString** | **String** |  | [optional] 
+**enumStringRequired** | **String** |  | 
+**enumInteger** | **Number** |  | [optional] 
+**enumNumber** | **Number** |  | [optional] 
+**outerEnum** | [**OuterEnum**](OuterEnum.md) |  | [optional] 
+
+
+
+## Enum: EnumStringEnum
+
+
+* `UPPER` (value: `"UPPER"`)
+
+* `lower` (value: `"lower"`)
+
+* `empty` (value: `""`)
+
+
+
+
+
+## Enum: EnumStringRequiredEnum
+
+
+* `UPPER` (value: `"UPPER"`)
+
+* `lower` (value: `"lower"`)
+
+* `empty` (value: `""`)
+
+
+
+
+
+## Enum: EnumIntegerEnum
+
+
+* `1` (value: `1`)
+
+* `-1` (value: `-1`)
+
+
+
+
+
+## Enum: EnumNumberEnum
+
+
+* `1.1` (value: `1.1`)
+
+* `-1.2` (value: `-1.2`)
+
+
+
+
diff --git a/samples/client/petstore/javascript/docs/FakeApi.md b/samples/client/petstore/javascript/docs/FakeApi.md
new file mode 100644
index 000000000000..e0aa348e9011
--- /dev/null
+++ b/samples/client/petstore/javascript/docs/FakeApi.md
@@ -0,0 +1,504 @@
+# OpenApiPetstore.FakeApi
+
+All URIs are relative to *http://petstore.swagger.io:80/v2*
+
+Method | HTTP request | Description
+------------- | ------------- | -------------
+[**fakeOuterBooleanSerialize**](FakeApi.md#fakeOuterBooleanSerialize) | **POST** /fake/outer/boolean | 
+[**fakeOuterCompositeSerialize**](FakeApi.md#fakeOuterCompositeSerialize) | **POST** /fake/outer/composite | 
+[**fakeOuterNumberSerialize**](FakeApi.md#fakeOuterNumberSerialize) | **POST** /fake/outer/number | 
+[**fakeOuterStringSerialize**](FakeApi.md#fakeOuterStringSerialize) | **POST** /fake/outer/string | 
+[**testBodyWithQueryParams**](FakeApi.md#testBodyWithQueryParams) | **PUT** /fake/body-with-query-params | 
+[**testClientModel**](FakeApi.md#testClientModel) | **PATCH** /fake | To test \"client\" model
+[**testEndpointParameters**](FakeApi.md#testEndpointParameters) | **POST** /fake | Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 
+[**testEnumParameters**](FakeApi.md#testEnumParameters) | **GET** /fake | To test enum parameters
+[**testInlineAdditionalProperties**](FakeApi.md#testInlineAdditionalProperties) | **POST** /fake/inline-additionalProperties | test inline additionalProperties
+[**testJsonFormData**](FakeApi.md#testJsonFormData) | **GET** /fake/jsonFormData | test json serialization of form data
+
+
+
+# **fakeOuterBooleanSerialize**
+> Boolean fakeOuterBooleanSerialize(opts)
+
+
+
+Test serialization of outer boolean types
+
+### Example
+```javascript
+var OpenApiPetstore = require('open_api_petstore');
+
+var apiInstance = new OpenApiPetstore.FakeApi();
+var opts = {
+  'body': true // Boolean | Input boolean as post body
+};
+var callback = function(error, data, response) {
+  if (error) {
+    console.error(error);
+  } else {
+    console.log('API called successfully. Returned data: ' + data);
+  }
+};
+apiInstance.fakeOuterBooleanSerialize(opts, callback);
+```
+
+### Parameters
+
+Name | Type | Description  | Notes
+------------- | ------------- | ------------- | -------------
+ **body** | **Boolean**| Input boolean as post body | [optional] 
+
+### Return type
+
+**Boolean**
+
+### Authorization
+
+No authorization required
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: */*
+
+
+# **fakeOuterCompositeSerialize**
+> OuterComposite fakeOuterCompositeSerialize(opts)
+
+
+
+Test serialization of object with outer number type
+
+### Example
+```javascript
+var OpenApiPetstore = require('open_api_petstore');
+
+var apiInstance = new OpenApiPetstore.FakeApi();
+var opts = {
+  'outerComposite': new OpenApiPetstore.OuterComposite() // OuterComposite | Input composite as post body
+};
+var callback = function(error, data, response) {
+  if (error) {
+    console.error(error);
+  } else {
+    console.log('API called successfully. Returned data: ' + data);
+  }
+};
+apiInstance.fakeOuterCompositeSerialize(opts, callback);
+```
+
+### Parameters
+
+Name | Type | Description  | Notes
+------------- | ------------- | ------------- | -------------
+ **outerComposite** | [**OuterComposite**](OuterComposite.md)| Input composite as post body | [optional] 
+
+### Return type
+
+[**OuterComposite**](OuterComposite.md)
+
+### Authorization
+
+No authorization required
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: */*
+
+
+# **fakeOuterNumberSerialize**
+> Number fakeOuterNumberSerialize(opts)
+
+
+
+Test serialization of outer number types
+
+### Example
+```javascript
+var OpenApiPetstore = require('open_api_petstore');
+
+var apiInstance = new OpenApiPetstore.FakeApi();
+var opts = {
+  'body': 3.4 // Number | Input number as post body
+};
+var callback = function(error, data, response) {
+  if (error) {
+    console.error(error);
+  } else {
+    console.log('API called successfully. Returned data: ' + data);
+  }
+};
+apiInstance.fakeOuterNumberSerialize(opts, callback);
+```
+
+### Parameters
+
+Name | Type | Description  | Notes
+------------- | ------------- | ------------- | -------------
+ **body** | **Number**| Input number as post body | [optional] 
+
+### Return type
+
+**Number**
+
+### Authorization
+
+No authorization required
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: */*
+
+
+# **fakeOuterStringSerialize**
+> String fakeOuterStringSerialize(opts)
+
+
+
+Test serialization of outer string types
+
+### Example
+```javascript
+var OpenApiPetstore = require('open_api_petstore');
+
+var apiInstance = new OpenApiPetstore.FakeApi();
+var opts = {
+  'body': "body_example" // String | Input string as post body
+};
+var callback = function(error, data, response) {
+  if (error) {
+    console.error(error);
+  } else {
+    console.log('API called successfully. Returned data: ' + data);
+  }
+};
+apiInstance.fakeOuterStringSerialize(opts, callback);
+```
+
+### Parameters
+
+Name | Type | Description  | Notes
+------------- | ------------- | ------------- | -------------
+ **body** | **String**| Input string as post body | [optional] 
+
+### Return type
+
+**String**
+
+### Authorization
+
+No authorization required
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: */*
+
+
+# **testBodyWithQueryParams**
+> testBodyWithQueryParams(query, user)
+
+
+
+### Example
+```javascript
+var OpenApiPetstore = require('open_api_petstore');
+
+var apiInstance = new OpenApiPetstore.FakeApi();
+var query = "query_example"; // String | 
+var user = new OpenApiPetstore.User(); // User | 
+var callback = function(error, data, response) {
+  if (error) {
+    console.error(error);
+  } else {
+    console.log('API called successfully.');
+  }
+};
+apiInstance.testBodyWithQueryParams(query, user, callback);
+```
+
+### Parameters
+
+Name | Type | Description  | Notes
+------------- | ------------- | ------------- | -------------
+ **query** | **String**|  | 
+ **user** | [**User**](User.md)|  | 
+
+### Return type
+
+null (empty response body)
+
+### Authorization
+
+No authorization required
+
+### HTTP request headers
+
+ - **Content-Type**: application/json
+ - **Accept**: Not defined
+
+
+# **testClientModel**
+> Client testClientModel(client)
+
+To test \"client\" model
+
+To test \"client\" model
+
+### Example
+```javascript
+var OpenApiPetstore = require('open_api_petstore');
+
+var apiInstance = new OpenApiPetstore.FakeApi();
+var client = new OpenApiPetstore.Client(); // Client | client model
+var callback = function(error, data, response) {
+  if (error) {
+    console.error(error);
+  } else {
+    console.log('API called successfully. Returned data: ' + data);
+  }
+};
+apiInstance.testClientModel(client, callback);
+```
+
+### Parameters
+
+Name | Type | Description  | Notes
+------------- | ------------- | ------------- | -------------
+ **client** | [**Client**](Client.md)| client model | 
+
+### Return type
+
+[**Client**](Client.md)
+
+### Authorization
+
+No authorization required
+
+### HTTP request headers
+
+ - **Content-Type**: application/json
+ - **Accept**: application/json
+
+
+# **testEndpointParameters**
+> testEndpointParameters(_number, _double, patternWithoutDelimiter, _byte, opts)
+
+Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 
+
+Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 
+
+### Example
+```javascript
+var OpenApiPetstore = require('open_api_petstore');
+var defaultClient = OpenApiPetstore.ApiClient.instance;
+
+// Configure HTTP basic authorization: http_basic_test
+var http_basic_test = defaultClient.authentications['http_basic_test'];
+http_basic_test.username = 'YOUR USERNAME';
+http_basic_test.password = 'YOUR PASSWORD';
+
+var apiInstance = new OpenApiPetstore.FakeApi();
+var _number = 3.4; // Number | None
+var _double = 3.4; // Number | None
+var patternWithoutDelimiter = "patternWithoutDelimiter_example"; // String | None
+var _byte = null; // Blob | None
+var opts = {
+  'integer': 56, // Number | None
+  'int32': 56, // Number | None
+  'int64': 789, // Number | None
+  '_float': 3.4, // Number | None
+  '_string': "_string_example", // String | None
+  'binary': "/path/to/file", // File | None
+  '_date': new Date("2013-10-20"), // Date | None
+  'dateTime': new Date("2013-10-20T19:20:30+01:00"), // Date | None
+  'password': "password_example", // String | None
+  'callback': "callback_example" // String | None
+};
+var callback = function(error, data, response) {
+  if (error) {
+    console.error(error);
+  } else {
+    console.log('API called successfully.');
+  }
+};
+apiInstance.testEndpointParameters(_number, _double, patternWithoutDelimiter, _byte, opts, callback);
+```
+
+### Parameters
+
+Name | Type | Description  | Notes
+------------- | ------------- | ------------- | -------------
+ **_number** | **Number**| None | 
+ **_double** | **Number**| None | 
+ **patternWithoutDelimiter** | **String**| None | 
+ **_byte** | **Blob**| None | 
+ **integer** | **Number**| None | [optional] 
+ **int32** | **Number**| None | [optional] 
+ **int64** | **Number**| None | [optional] 
+ **_float** | **Number**| None | [optional] 
+ **_string** | **String**| None | [optional] 
+ **binary** | **File**| None | [optional] 
+ **_date** | **Date**| None | [optional] 
+ **dateTime** | **Date**| None | [optional] 
+ **password** | **String**| None | [optional] 
+ **callback** | **String**| None | [optional] 
+
+### Return type
+
+null (empty response body)
+
+### Authorization
+
+[http_basic_test](../README.md#http_basic_test)
+
+### HTTP request headers
+
+ - **Content-Type**: application/x-www-form-urlencoded
+ - **Accept**: Not defined
+
+
+# **testEnumParameters**
+> testEnumParameters(opts)
+
+To test enum parameters
+
+To test enum parameters
+
+### Example
+```javascript
+var OpenApiPetstore = require('open_api_petstore');
+
+var apiInstance = new OpenApiPetstore.FakeApi();
+var opts = {
+  'enumHeaderStringArray': ["'$'"], // [String] | Header parameter enum test (string array)
+  'enumHeaderString': "'-efg'", // String | Header parameter enum test (string)
+  'enumQueryStringArray': ["'$'"], // [String] | Query parameter enum test (string array)
+  'enumQueryString': "'-efg'", // String | Query parameter enum test (string)
+  'enumQueryInteger': 56, // Number | Query parameter enum test (double)
+  'enumQueryDouble': 3.4, // Number | Query parameter enum test (double)
+  'enumFormStringArray': "'$'", // [String] | Form parameter enum test (string array)
+  'enumFormString': "'-efg'" // String | Form parameter enum test (string)
+};
+var callback = function(error, data, response) {
+  if (error) {
+    console.error(error);
+  } else {
+    console.log('API called successfully.');
+  }
+};
+apiInstance.testEnumParameters(opts, callback);
+```
+
+### Parameters
+
+Name | Type | Description  | Notes
+------------- | ------------- | ------------- | -------------
+ **enumHeaderStringArray** | [**[String]**](String.md)| Header parameter enum test (string array) | [optional] 
+ **enumHeaderString** | **String**| Header parameter enum test (string) | [optional] [default to '-efg']
+ **enumQueryStringArray** | [**[String]**](String.md)| Query parameter enum test (string array) | [optional] 
+ **enumQueryString** | **String**| Query parameter enum test (string) | [optional] [default to '-efg']
+ **enumQueryInteger** | **Number**| Query parameter enum test (double) | [optional] 
+ **enumQueryDouble** | **Number**| Query parameter enum test (double) | [optional] 
+ **enumFormStringArray** | [**[String]**](String.md)| Form parameter enum test (string array) | [optional] [default to '$']
+ **enumFormString** | **String**| Form parameter enum test (string) | [optional] [default to '-efg']
+
+### Return type
+
+null (empty response body)
+
+### Authorization
+
+No authorization required
+
+### HTTP request headers
+
+ - **Content-Type**: application/x-www-form-urlencoded
+ - **Accept**: Not defined
+
+
+# **testInlineAdditionalProperties**
+> testInlineAdditionalProperties(requestBody)
+
+test inline additionalProperties
+
+### Example
+```javascript
+var OpenApiPetstore = require('open_api_petstore');
+
+var apiInstance = new OpenApiPetstore.FakeApi();
+var requestBody = {key: "inner_example"}; // {String: String} | request body
+var callback = function(error, data, response) {
+  if (error) {
+    console.error(error);
+  } else {
+    console.log('API called successfully.');
+  }
+};
+apiInstance.testInlineAdditionalProperties(requestBody, callback);
+```
+
+### Parameters
+
+Name | Type | Description  | Notes
+------------- | ------------- | ------------- | -------------
+ **requestBody** | [**{String: String}**](String.md)| request body | 
+
+### Return type
+
+null (empty response body)
+
+### Authorization
+
+No authorization required
+
+### HTTP request headers
+
+ - **Content-Type**: application/json
+ - **Accept**: Not defined
+
+
+# **testJsonFormData**
+> testJsonFormData(param, param2)
+
+test json serialization of form data
+
+### Example
+```javascript
+var OpenApiPetstore = require('open_api_petstore');
+
+var apiInstance = new OpenApiPetstore.FakeApi();
+var param = "param_example"; // String | field1
+var param2 = "param2_example"; // String | field2
+var callback = function(error, data, response) {
+  if (error) {
+    console.error(error);
+  } else {
+    console.log('API called successfully.');
+  }
+};
+apiInstance.testJsonFormData(param, param2, callback);
+```
+
+### Parameters
+
+Name | Type | Description  | Notes
+------------- | ------------- | ------------- | -------------
+ **param** | **String**| field1 | 
+ **param2** | **String**| field2 | 
+
+### Return type
+
+null (empty response body)
+
+### Authorization
+
+No authorization required
+
+### HTTP request headers
+
+ - **Content-Type**: application/x-www-form-urlencoded
+ - **Accept**: Not defined
+
diff --git a/samples/client/petstore/javascript/docs/FakeClassnameTags123Api.md b/samples/client/petstore/javascript/docs/FakeClassnameTags123Api.md
new file mode 100644
index 000000000000..1d0a71149f03
--- /dev/null
+++ b/samples/client/petstore/javascript/docs/FakeClassnameTags123Api.md
@@ -0,0 +1,58 @@
+# OpenApiPetstore.FakeClassnameTags123Api
+
+All URIs are relative to *http://petstore.swagger.io:80/v2*
+
+Method | HTTP request | Description
+------------- | ------------- | -------------
+[**testClassname**](FakeClassnameTags123Api.md#testClassname) | **PATCH** /fake_classname_test | To test class name in snake case
+
+
+
+# **testClassname**
+> Client testClassname(client)
+
+To test class name in snake case
+
+To test class name in snake case
+
+### Example
+```javascript
+var OpenApiPetstore = require('open_api_petstore');
+var defaultClient = OpenApiPetstore.ApiClient.instance;
+// Configure API key authorization: api_key_query
+var api_key_query = defaultClient.authentications['api_key_query'];
+api_key_query.apiKey = 'YOUR API KEY';
+// Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
+//api_key_query.apiKeyPrefix = 'Token';
+
+var apiInstance = new OpenApiPetstore.FakeClassnameTags123Api();
+var client = new OpenApiPetstore.Client(); // Client | client model
+var callback = function(error, data, response) {
+  if (error) {
+    console.error(error);
+  } else {
+    console.log('API called successfully. Returned data: ' + data);
+  }
+};
+apiInstance.testClassname(client, callback);
+```
+
+### Parameters
+
+Name | Type | Description  | Notes
+------------- | ------------- | ------------- | -------------
+ **client** | [**Client**](Client.md)| client model | 
+
+### Return type
+
+[**Client**](Client.md)
+
+### Authorization
+
+[api_key_query](../README.md#api_key_query)
+
+### HTTP request headers
+
+ - **Content-Type**: application/json
+ - **Accept**: application/json
+
diff --git a/samples/client/petstore/javascript/docs/FormatTest.md b/samples/client/petstore/javascript/docs/FormatTest.md
new file mode 100644
index 000000000000..0f4a8405449d
--- /dev/null
+++ b/samples/client/petstore/javascript/docs/FormatTest.md
@@ -0,0 +1,20 @@
+# OpenApiPetstore.FormatTest
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**integer** | **Number** |  | [optional] 
+**int32** | **Number** |  | [optional] 
+**int64** | **Number** |  | [optional] 
+**_number** | **Number** |  | 
+**_float** | **Number** |  | [optional] 
+**_double** | **Number** |  | [optional] 
+**_string** | **String** |  | [optional] 
+**_byte** | **Blob** |  | 
+**binary** | **File** |  | [optional] 
+**_date** | **Date** |  | 
+**dateTime** | **Date** |  | [optional] 
+**uuid** | **String** |  | [optional] 
+**password** | **String** |  | 
+
+
diff --git a/samples/client/petstore/javascript/docs/HasOnlyReadOnly.md b/samples/client/petstore/javascript/docs/HasOnlyReadOnly.md
new file mode 100644
index 000000000000..abc4ce62184c
--- /dev/null
+++ b/samples/client/petstore/javascript/docs/HasOnlyReadOnly.md
@@ -0,0 +1,9 @@
+# OpenApiPetstore.HasOnlyReadOnly
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**bar** | **String** |  | [optional] 
+**foo** | **String** |  | [optional] 
+
+
diff --git a/samples/client/petstore/javascript/docs/List.md b/samples/client/petstore/javascript/docs/List.md
new file mode 100644
index 000000000000..3a9555e34e0a
--- /dev/null
+++ b/samples/client/petstore/javascript/docs/List.md
@@ -0,0 +1,8 @@
+# OpenApiPetstore.List
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**_123list** | **String** |  | [optional] 
+
+
diff --git a/samples/client/petstore/javascript/docs/MapTest.md b/samples/client/petstore/javascript/docs/MapTest.md
new file mode 100644
index 000000000000..4a128da00fd0
--- /dev/null
+++ b/samples/client/petstore/javascript/docs/MapTest.md
@@ -0,0 +1,20 @@
+# OpenApiPetstore.MapTest
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**mapMapOfString** | **{String: {String: String}}** |  | [optional] 
+**mapOfEnumString** | **{String: String}** |  | [optional] 
+
+
+
+## Enum: {String: String}
+
+
+* `UPPER` (value: `"UPPER"`)
+
+* `lower` (value: `"lower"`)
+
+
+
+
diff --git a/samples/client/petstore/javascript/docs/MixedPropertiesAndAdditionalPropertiesClass.md b/samples/client/petstore/javascript/docs/MixedPropertiesAndAdditionalPropertiesClass.md
new file mode 100644
index 000000000000..051f771930ea
--- /dev/null
+++ b/samples/client/petstore/javascript/docs/MixedPropertiesAndAdditionalPropertiesClass.md
@@ -0,0 +1,10 @@
+# OpenApiPetstore.MixedPropertiesAndAdditionalPropertiesClass
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**uuid** | **String** |  | [optional] 
+**dateTime** | **Date** |  | [optional] 
+**map** | [**{String: Animal}**](Animal.md) |  | [optional] 
+
+
diff --git a/samples/client/petstore/javascript/docs/Model200Response.md b/samples/client/petstore/javascript/docs/Model200Response.md
new file mode 100644
index 000000000000..0a0d02cc32e1
--- /dev/null
+++ b/samples/client/petstore/javascript/docs/Model200Response.md
@@ -0,0 +1,9 @@
+# OpenApiPetstore.Model200Response
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**name** | **Number** |  | [optional] 
+**_class** | **String** |  | [optional] 
+
+
diff --git a/samples/client/petstore/javascript/docs/ModelReturn.md b/samples/client/petstore/javascript/docs/ModelReturn.md
new file mode 100644
index 000000000000..9ce6e2038787
--- /dev/null
+++ b/samples/client/petstore/javascript/docs/ModelReturn.md
@@ -0,0 +1,8 @@
+# OpenApiPetstore.ModelReturn
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**_return** | **Number** |  | [optional] 
+
+
diff --git a/samples/client/petstore/javascript/docs/Name.md b/samples/client/petstore/javascript/docs/Name.md
new file mode 100644
index 000000000000..8dfcc460361f
--- /dev/null
+++ b/samples/client/petstore/javascript/docs/Name.md
@@ -0,0 +1,11 @@
+# OpenApiPetstore.Name
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**name** | **Number** |  | 
+**snakeCase** | **Number** |  | [optional] 
+**property** | **String** |  | [optional] 
+**_123number** | **Number** |  | [optional] 
+
+
diff --git a/samples/client/petstore/javascript/docs/NumberOnly.md b/samples/client/petstore/javascript/docs/NumberOnly.md
new file mode 100644
index 000000000000..cf84674ed4e0
--- /dev/null
+++ b/samples/client/petstore/javascript/docs/NumberOnly.md
@@ -0,0 +1,8 @@
+# OpenApiPetstore.NumberOnly
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**justNumber** | **Number** |  | [optional] 
+
+
diff --git a/samples/client/petstore/javascript/docs/Order.md b/samples/client/petstore/javascript/docs/Order.md
new file mode 100644
index 000000000000..987992caa70a
--- /dev/null
+++ b/samples/client/petstore/javascript/docs/Order.md
@@ -0,0 +1,26 @@
+# OpenApiPetstore.Order
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**id** | **Number** |  | [optional] 
+**petId** | **Number** |  | [optional] 
+**quantity** | **Number** |  | [optional] 
+**shipDate** | **Date** |  | [optional] 
+**status** | **String** | Order Status | [optional] 
+**complete** | **Boolean** |  | [optional] [default to false]
+
+
+
+## Enum: StatusEnum
+
+
+* `placed` (value: `"placed"`)
+
+* `approved` (value: `"approved"`)
+
+* `delivered` (value: `"delivered"`)
+
+
+
+
diff --git a/samples/client/petstore/javascript/docs/OuterComposite.md b/samples/client/petstore/javascript/docs/OuterComposite.md
new file mode 100644
index 000000000000..c49b32ff3290
--- /dev/null
+++ b/samples/client/petstore/javascript/docs/OuterComposite.md
@@ -0,0 +1,10 @@
+# OpenApiPetstore.OuterComposite
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**myNumber** | **Number** |  | [optional] 
+**myString** | **String** |  | [optional] 
+**myBoolean** | **Boolean** |  | [optional] 
+
+
diff --git a/samples/client/petstore/javascript/docs/OuterEnum.md b/samples/client/petstore/javascript/docs/OuterEnum.md
new file mode 100644
index 000000000000..445d3f4074c8
--- /dev/null
+++ b/samples/client/petstore/javascript/docs/OuterEnum.md
@@ -0,0 +1,12 @@
+# OpenApiPetstore.OuterEnum
+
+## Enum
+
+
+* `placed` (value: `"placed"`)
+
+* `approved` (value: `"approved"`)
+
+* `delivered` (value: `"delivered"`)
+
+
diff --git a/samples/client/petstore/javascript/docs/Pet.md b/samples/client/petstore/javascript/docs/Pet.md
new file mode 100644
index 000000000000..e91ae688aad1
--- /dev/null
+++ b/samples/client/petstore/javascript/docs/Pet.md
@@ -0,0 +1,26 @@
+# OpenApiPetstore.Pet
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**id** | **Number** |  | [optional] 
+**category** | [**Category**](Category.md) |  | [optional] 
+**name** | **String** |  | 
+**photoUrls** | **[String]** |  | 
+**tags** | [**[Tag]**](Tag.md) |  | [optional] 
+**status** | **String** | pet status in the store | [optional] 
+
+
+
+## Enum: StatusEnum
+
+
+* `available` (value: `"available"`)
+
+* `pending` (value: `"pending"`)
+
+* `sold` (value: `"sold"`)
+
+
+
+
diff --git a/samples/client/petstore/javascript/docs/PetApi.md b/samples/client/petstore/javascript/docs/PetApi.md
new file mode 100644
index 000000000000..fbcca8372ccc
--- /dev/null
+++ b/samples/client/petstore/javascript/docs/PetApi.md
@@ -0,0 +1,400 @@
+# OpenApiPetstore.PetApi
+
+All URIs are relative to *http://petstore.swagger.io:80/v2*
+
+Method | HTTP request | Description
+------------- | ------------- | -------------
+[**addPet**](PetApi.md#addPet) | **POST** /pet | Add a new pet to the store
+[**deletePet**](PetApi.md#deletePet) | **DELETE** /pet/{petId} | Deletes a pet
+[**findPetsByStatus**](PetApi.md#findPetsByStatus) | **GET** /pet/findByStatus | Finds Pets by status
+[**findPetsByTags**](PetApi.md#findPetsByTags) | **GET** /pet/findByTags | Finds Pets by tags
+[**getPetById**](PetApi.md#getPetById) | **GET** /pet/{petId} | Find pet by ID
+[**updatePet**](PetApi.md#updatePet) | **PUT** /pet | Update an existing pet
+[**updatePetWithForm**](PetApi.md#updatePetWithForm) | **POST** /pet/{petId} | Updates a pet in the store with form data
+[**uploadFile**](PetApi.md#uploadFile) | **POST** /pet/{petId}/uploadImage | uploads an image
+
+
+
+# **addPet**
+> addPet(pet)
+
+Add a new pet to the store
+
+### Example
+```javascript
+var OpenApiPetstore = require('open_api_petstore');
+var defaultClient = OpenApiPetstore.ApiClient.instance;
+// Configure OAuth2 access token for authorization: petstore_auth
+var petstore_auth = defaultClient.authentications['petstore_auth'];
+petstore_auth.accessToken = 'YOUR ACCESS TOKEN';
+
+var apiInstance = new OpenApiPetstore.PetApi();
+var pet = new OpenApiPetstore.Pet(); // Pet | Pet object that needs to be added to the store
+var callback = function(error, data, response) {
+  if (error) {
+    console.error(error);
+  } else {
+    console.log('API called successfully.');
+  }
+};
+apiInstance.addPet(pet, callback);
+```
+
+### Parameters
+
+Name | Type | Description  | Notes
+------------- | ------------- | ------------- | -------------
+ **pet** | [**Pet**](Pet.md)| Pet object that needs to be added to the store | 
+
+### Return type
+
+null (empty response body)
+
+### Authorization
+
+[petstore_auth](../README.md#petstore_auth)
+
+### HTTP request headers
+
+ - **Content-Type**: application/json, application/xml
+ - **Accept**: Not defined
+
+
+# **deletePet**
+> deletePet(petId, opts)
+
+Deletes a pet
+
+### Example
+```javascript
+var OpenApiPetstore = require('open_api_petstore');
+var defaultClient = OpenApiPetstore.ApiClient.instance;
+// Configure OAuth2 access token for authorization: petstore_auth
+var petstore_auth = defaultClient.authentications['petstore_auth'];
+petstore_auth.accessToken = 'YOUR ACCESS TOKEN';
+
+var apiInstance = new OpenApiPetstore.PetApi();
+var petId = 789; // Number | Pet id to delete
+var opts = {
+  'apiKey': "apiKey_example" // String | 
+};
+var callback = function(error, data, response) {
+  if (error) {
+    console.error(error);
+  } else {
+    console.log('API called successfully.');
+  }
+};
+apiInstance.deletePet(petId, opts, callback);
+```
+
+### Parameters
+
+Name | Type | Description  | Notes
+------------- | ------------- | ------------- | -------------
+ **petId** | **Number**| Pet id to delete | 
+ **apiKey** | **String**|  | [optional] 
+
+### Return type
+
+null (empty response body)
+
+### Authorization
+
+[petstore_auth](../README.md#petstore_auth)
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: Not defined
+
+
+# **findPetsByStatus**
+> [Pet] findPetsByStatus(status)
+
+Finds Pets by status
+
+Multiple status values can be provided with comma separated strings
+
+### Example
+```javascript
+var OpenApiPetstore = require('open_api_petstore');
+var defaultClient = OpenApiPetstore.ApiClient.instance;
+// Configure OAuth2 access token for authorization: petstore_auth
+var petstore_auth = defaultClient.authentications['petstore_auth'];
+petstore_auth.accessToken = 'YOUR ACCESS TOKEN';
+
+var apiInstance = new OpenApiPetstore.PetApi();
+var status = ["'available'"]; // [String] | Status values that need to be considered for filter
+var callback = function(error, data, response) {
+  if (error) {
+    console.error(error);
+  } else {
+    console.log('API called successfully. Returned data: ' + data);
+  }
+};
+apiInstance.findPetsByStatus(status, callback);
+```
+
+### Parameters
+
+Name | Type | Description  | Notes
+------------- | ------------- | ------------- | -------------
+ **status** | [**[String]**](String.md)| Status values that need to be considered for filter | 
+
+### Return type
+
+[**[Pet]**](Pet.md)
+
+### Authorization
+
+[petstore_auth](../README.md#petstore_auth)
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: application/xml, application/json
+
+
+# **findPetsByTags**
+> [Pet] findPetsByTags(tags)
+
+Finds Pets by tags
+
+Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing.
+
+### Example
+```javascript
+var OpenApiPetstore = require('open_api_petstore');
+var defaultClient = OpenApiPetstore.ApiClient.instance;
+// Configure OAuth2 access token for authorization: petstore_auth
+var petstore_auth = defaultClient.authentications['petstore_auth'];
+petstore_auth.accessToken = 'YOUR ACCESS TOKEN';
+
+var apiInstance = new OpenApiPetstore.PetApi();
+var tags = ["inner_example"]; // [String] | Tags to filter by
+var callback = function(error, data, response) {
+  if (error) {
+    console.error(error);
+  } else {
+    console.log('API called successfully. Returned data: ' + data);
+  }
+};
+apiInstance.findPetsByTags(tags, callback);
+```
+
+### Parameters
+
+Name | Type | Description  | Notes
+------------- | ------------- | ------------- | -------------
+ **tags** | [**[String]**](String.md)| Tags to filter by | 
+
+### Return type
+
+[**[Pet]**](Pet.md)
+
+### Authorization
+
+[petstore_auth](../README.md#petstore_auth)
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: application/xml, application/json
+
+
+# **getPetById**
+> Pet getPetById(petId)
+
+Find pet by ID
+
+Returns a single pet
+
+### Example
+```javascript
+var OpenApiPetstore = require('open_api_petstore');
+var defaultClient = OpenApiPetstore.ApiClient.instance;
+// Configure API key authorization: api_key
+var api_key = defaultClient.authentications['api_key'];
+api_key.apiKey = 'YOUR API KEY';
+// Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
+//api_key.apiKeyPrefix = 'Token';
+
+var apiInstance = new OpenApiPetstore.PetApi();
+var petId = 789; // Number | ID of pet to return
+var callback = function(error, data, response) {
+  if (error) {
+    console.error(error);
+  } else {
+    console.log('API called successfully. Returned data: ' + data);
+  }
+};
+apiInstance.getPetById(petId, callback);
+```
+
+### Parameters
+
+Name | Type | Description  | Notes
+------------- | ------------- | ------------- | -------------
+ **petId** | **Number**| ID of pet to return | 
+
+### Return type
+
+[**Pet**](Pet.md)
+
+### Authorization
+
+[api_key](../README.md#api_key)
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: application/xml, application/json
+
+
+# **updatePet**
+> updatePet(pet)
+
+Update an existing pet
+
+### Example
+```javascript
+var OpenApiPetstore = require('open_api_petstore');
+var defaultClient = OpenApiPetstore.ApiClient.instance;
+// Configure OAuth2 access token for authorization: petstore_auth
+var petstore_auth = defaultClient.authentications['petstore_auth'];
+petstore_auth.accessToken = 'YOUR ACCESS TOKEN';
+
+var apiInstance = new OpenApiPetstore.PetApi();
+var pet = new OpenApiPetstore.Pet(); // Pet | Pet object that needs to be added to the store
+var callback = function(error, data, response) {
+  if (error) {
+    console.error(error);
+  } else {
+    console.log('API called successfully.');
+  }
+};
+apiInstance.updatePet(pet, callback);
+```
+
+### Parameters
+
+Name | Type | Description  | Notes
+------------- | ------------- | ------------- | -------------
+ **pet** | [**Pet**](Pet.md)| Pet object that needs to be added to the store | 
+
+### Return type
+
+null (empty response body)
+
+### Authorization
+
+[petstore_auth](../README.md#petstore_auth)
+
+### HTTP request headers
+
+ - **Content-Type**: application/json, application/xml
+ - **Accept**: Not defined
+
+
+# **updatePetWithForm**
+> updatePetWithForm(petId, opts)
+
+Updates a pet in the store with form data
+
+### Example
+```javascript
+var OpenApiPetstore = require('open_api_petstore');
+var defaultClient = OpenApiPetstore.ApiClient.instance;
+// Configure OAuth2 access token for authorization: petstore_auth
+var petstore_auth = defaultClient.authentications['petstore_auth'];
+petstore_auth.accessToken = 'YOUR ACCESS TOKEN';
+
+var apiInstance = new OpenApiPetstore.PetApi();
+var petId = 789; // Number | ID of pet that needs to be updated
+var opts = {
+  'name': "name_example", // String | Updated name of the pet
+  'status': "status_example" // String | Updated status of the pet
+};
+var callback = function(error, data, response) {
+  if (error) {
+    console.error(error);
+  } else {
+    console.log('API called successfully.');
+  }
+};
+apiInstance.updatePetWithForm(petId, opts, callback);
+```
+
+### Parameters
+
+Name | Type | Description  | Notes
+------------- | ------------- | ------------- | -------------
+ **petId** | **Number**| ID of pet that needs to be updated | 
+ **name** | **String**| Updated name of the pet | [optional] 
+ **status** | **String**| Updated status of the pet | [optional] 
+
+### Return type
+
+null (empty response body)
+
+### Authorization
+
+[petstore_auth](../README.md#petstore_auth)
+
+### HTTP request headers
+
+ - **Content-Type**: application/x-www-form-urlencoded
+ - **Accept**: Not defined
+
+
+# **uploadFile**
+> ApiResponse uploadFile(petId, opts)
+
+uploads an image
+
+### Example
+```javascript
+var OpenApiPetstore = require('open_api_petstore');
+var defaultClient = OpenApiPetstore.ApiClient.instance;
+// Configure OAuth2 access token for authorization: petstore_auth
+var petstore_auth = defaultClient.authentications['petstore_auth'];
+petstore_auth.accessToken = 'YOUR ACCESS TOKEN';
+
+var apiInstance = new OpenApiPetstore.PetApi();
+var petId = 789; // Number | ID of pet to update
+var opts = {
+  'additionalMetadata': "additionalMetadata_example", // String | Additional data to pass to server
+  'file': "/path/to/file" // File | file to upload
+};
+var callback = function(error, data, response) {
+  if (error) {
+    console.error(error);
+  } else {
+    console.log('API called successfully. Returned data: ' + data);
+  }
+};
+apiInstance.uploadFile(petId, opts, callback);
+```
+
+### Parameters
+
+Name | Type | Description  | Notes
+------------- | ------------- | ------------- | -------------
+ **petId** | **Number**| ID of pet to update | 
+ **additionalMetadata** | **String**| Additional data to pass to server | [optional] 
+ **file** | **File**| file to upload | [optional] 
+
+### Return type
+
+[**ApiResponse**](ApiResponse.md)
+
+### Authorization
+
+[petstore_auth](../README.md#petstore_auth)
+
+### HTTP request headers
+
+ - **Content-Type**: multipart/form-data
+ - **Accept**: application/json
+
diff --git a/samples/client/petstore/javascript/docs/ReadOnlyFirst.md b/samples/client/petstore/javascript/docs/ReadOnlyFirst.md
new file mode 100644
index 000000000000..671280fba339
--- /dev/null
+++ b/samples/client/petstore/javascript/docs/ReadOnlyFirst.md
@@ -0,0 +1,9 @@
+# OpenApiPetstore.ReadOnlyFirst
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**bar** | **String** |  | [optional] 
+**baz** | **String** |  | [optional] 
+
+
diff --git a/samples/client/petstore/javascript/docs/SpecialModelName.md b/samples/client/petstore/javascript/docs/SpecialModelName.md
new file mode 100644
index 000000000000..6039f53de367
--- /dev/null
+++ b/samples/client/petstore/javascript/docs/SpecialModelName.md
@@ -0,0 +1,8 @@
+# OpenApiPetstore.SpecialModelName
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**specialPropertyName** | **Number** |  | [optional] 
+
+
diff --git a/samples/client/petstore/javascript/docs/StoreApi.md b/samples/client/petstore/javascript/docs/StoreApi.md
new file mode 100644
index 000000000000..6f1e0816f0f4
--- /dev/null
+++ b/samples/client/petstore/javascript/docs/StoreApi.md
@@ -0,0 +1,184 @@
+# OpenApiPetstore.StoreApi
+
+All URIs are relative to *http://petstore.swagger.io:80/v2*
+
+Method | HTTP request | Description
+------------- | ------------- | -------------
+[**deleteOrder**](StoreApi.md#deleteOrder) | **DELETE** /store/order/{order_id} | Delete purchase order by ID
+[**getInventory**](StoreApi.md#getInventory) | **GET** /store/inventory | Returns pet inventories by status
+[**getOrderById**](StoreApi.md#getOrderById) | **GET** /store/order/{order_id} | Find purchase order by ID
+[**placeOrder**](StoreApi.md#placeOrder) | **POST** /store/order | Place an order for a pet
+
+
+
+# **deleteOrder**
+> deleteOrder(orderId)
+
+Delete purchase order by ID
+
+For valid response try integer IDs with value < 1000. Anything above 1000 or nonintegers will generate API errors
+
+### Example
+```javascript
+var OpenApiPetstore = require('open_api_petstore');
+
+var apiInstance = new OpenApiPetstore.StoreApi();
+var orderId = "orderId_example"; // String | ID of the order that needs to be deleted
+var callback = function(error, data, response) {
+  if (error) {
+    console.error(error);
+  } else {
+    console.log('API called successfully.');
+  }
+};
+apiInstance.deleteOrder(orderId, callback);
+```
+
+### Parameters
+
+Name | Type | Description  | Notes
+------------- | ------------- | ------------- | -------------
+ **orderId** | **String**| ID of the order that needs to be deleted | 
+
+### Return type
+
+null (empty response body)
+
+### Authorization
+
+No authorization required
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: Not defined
+
+
+# **getInventory**
+> {String: Number} getInventory()
+
+Returns pet inventories by status
+
+Returns a map of status codes to quantities
+
+### Example
+```javascript
+var OpenApiPetstore = require('open_api_petstore');
+var defaultClient = OpenApiPetstore.ApiClient.instance;
+// Configure API key authorization: api_key
+var api_key = defaultClient.authentications['api_key'];
+api_key.apiKey = 'YOUR API KEY';
+// Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
+//api_key.apiKeyPrefix = 'Token';
+
+var apiInstance = new OpenApiPetstore.StoreApi();
+var callback = function(error, data, response) {
+  if (error) {
+    console.error(error);
+  } else {
+    console.log('API called successfully. Returned data: ' + data);
+  }
+};
+apiInstance.getInventory(callback);
+```
+
+### Parameters
+This endpoint does not need any parameter.
+
+### Return type
+
+**{String: Number}**
+
+### Authorization
+
+[api_key](../README.md#api_key)
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: application/json
+
+
+# **getOrderById**
+> Order getOrderById(orderId)
+
+Find purchase order by ID
+
+For valid response try integer IDs with value <= 5 or > 10. Other values will generated exceptions
+
+### Example
+```javascript
+var OpenApiPetstore = require('open_api_petstore');
+
+var apiInstance = new OpenApiPetstore.StoreApi();
+var orderId = 789; // Number | ID of pet that needs to be fetched
+var callback = function(error, data, response) {
+  if (error) {
+    console.error(error);
+  } else {
+    console.log('API called successfully. Returned data: ' + data);
+  }
+};
+apiInstance.getOrderById(orderId, callback);
+```
+
+### Parameters
+
+Name | Type | Description  | Notes
+------------- | ------------- | ------------- | -------------
+ **orderId** | **Number**| ID of pet that needs to be fetched | 
+
+### Return type
+
+[**Order**](Order.md)
+
+### Authorization
+
+No authorization required
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: application/xml, application/json
+
+
+# **placeOrder**
+> Order placeOrder(order)
+
+Place an order for a pet
+
+### Example
+```javascript
+var OpenApiPetstore = require('open_api_petstore');
+
+var apiInstance = new OpenApiPetstore.StoreApi();
+var order = new OpenApiPetstore.Order(); // Order | order placed for purchasing the pet
+var callback = function(error, data, response) {
+  if (error) {
+    console.error(error);
+  } else {
+    console.log('API called successfully. Returned data: ' + data);
+  }
+};
+apiInstance.placeOrder(order, callback);
+```
+
+### Parameters
+
+Name | Type | Description  | Notes
+------------- | ------------- | ------------- | -------------
+ **order** | [**Order**](Order.md)| order placed for purchasing the pet | 
+
+### Return type
+
+[**Order**](Order.md)
+
+### Authorization
+
+No authorization required
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: application/xml, application/json
+
diff --git a/samples/client/petstore/javascript/docs/Tag.md b/samples/client/petstore/javascript/docs/Tag.md
new file mode 100644
index 000000000000..a53941e80e0c
--- /dev/null
+++ b/samples/client/petstore/javascript/docs/Tag.md
@@ -0,0 +1,9 @@
+# OpenApiPetstore.Tag
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**id** | **Number** |  | [optional] 
+**name** | **String** |  | [optional] 
+
+
diff --git a/samples/client/petstore/javascript/docs/User.md b/samples/client/petstore/javascript/docs/User.md
new file mode 100644
index 000000000000..2e86dd378bfa
--- /dev/null
+++ b/samples/client/petstore/javascript/docs/User.md
@@ -0,0 +1,15 @@
+# OpenApiPetstore.User
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**id** | **Number** |  | [optional] 
+**username** | **String** |  | [optional] 
+**firstName** | **String** |  | [optional] 
+**lastName** | **String** |  | [optional] 
+**email** | **String** |  | [optional] 
+**password** | **String** |  | [optional] 
+**phone** | **String** |  | [optional] 
+**userStatus** | **Number** | User Status | [optional] 
+
+
diff --git a/samples/client/petstore/javascript/docs/UserApi.md b/samples/client/petstore/javascript/docs/UserApi.md
new file mode 100644
index 000000000000..d75bf078ea41
--- /dev/null
+++ b/samples/client/petstore/javascript/docs/UserApi.md
@@ -0,0 +1,350 @@
+# OpenApiPetstore.UserApi
+
+All URIs are relative to *http://petstore.swagger.io:80/v2*
+
+Method | HTTP request | Description
+------------- | ------------- | -------------
+[**createUser**](UserApi.md#createUser) | **POST** /user | Create user
+[**createUsersWithArrayInput**](UserApi.md#createUsersWithArrayInput) | **POST** /user/createWithArray | Creates list of users with given input array
+[**createUsersWithListInput**](UserApi.md#createUsersWithListInput) | **POST** /user/createWithList | Creates list of users with given input array
+[**deleteUser**](UserApi.md#deleteUser) | **DELETE** /user/{username} | Delete user
+[**getUserByName**](UserApi.md#getUserByName) | **GET** /user/{username} | Get user by user name
+[**loginUser**](UserApi.md#loginUser) | **GET** /user/login | Logs user into the system
+[**logoutUser**](UserApi.md#logoutUser) | **GET** /user/logout | Logs out current logged in user session
+[**updateUser**](UserApi.md#updateUser) | **PUT** /user/{username} | Updated user
+
+
+
+# **createUser**
+> createUser(user)
+
+Create user
+
+This can only be done by the logged in user.
+
+### Example
+```javascript
+var OpenApiPetstore = require('open_api_petstore');
+
+var apiInstance = new OpenApiPetstore.UserApi();
+var user = new OpenApiPetstore.User(); // User | Created user object
+var callback = function(error, data, response) {
+  if (error) {
+    console.error(error);
+  } else {
+    console.log('API called successfully.');
+  }
+};
+apiInstance.createUser(user, callback);
+```
+
+### Parameters
+
+Name | Type | Description  | Notes
+------------- | ------------- | ------------- | -------------
+ **user** | [**User**](User.md)| Created user object | 
+
+### Return type
+
+null (empty response body)
+
+### Authorization
+
+No authorization required
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: Not defined
+
+
+# **createUsersWithArrayInput**
+> createUsersWithArrayInput(user)
+
+Creates list of users with given input array
+
+### Example
+```javascript
+var OpenApiPetstore = require('open_api_petstore');
+
+var apiInstance = new OpenApiPetstore.UserApi();
+var user = [new OpenApiPetstore.User()]; // [User] | List of user object
+var callback = function(error, data, response) {
+  if (error) {
+    console.error(error);
+  } else {
+    console.log('API called successfully.');
+  }
+};
+apiInstance.createUsersWithArrayInput(user, callback);
+```
+
+### Parameters
+
+Name | Type | Description  | Notes
+------------- | ------------- | ------------- | -------------
+ **user** | [**[User]**](Array.md)| List of user object | 
+
+### Return type
+
+null (empty response body)
+
+### Authorization
+
+No authorization required
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: Not defined
+
+
+# **createUsersWithListInput**
+> createUsersWithListInput(user)
+
+Creates list of users with given input array
+
+### Example
+```javascript
+var OpenApiPetstore = require('open_api_petstore');
+
+var apiInstance = new OpenApiPetstore.UserApi();
+var user = [new OpenApiPetstore.User()]; // [User] | List of user object
+var callback = function(error, data, response) {
+  if (error) {
+    console.error(error);
+  } else {
+    console.log('API called successfully.');
+  }
+};
+apiInstance.createUsersWithListInput(user, callback);
+```
+
+### Parameters
+
+Name | Type | Description  | Notes
+------------- | ------------- | ------------- | -------------
+ **user** | [**[User]**](Array.md)| List of user object | 
+
+### Return type
+
+null (empty response body)
+
+### Authorization
+
+No authorization required
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: Not defined
+
+
+# **deleteUser**
+> deleteUser(username)
+
+Delete user
+
+This can only be done by the logged in user.
+
+### Example
+```javascript
+var OpenApiPetstore = require('open_api_petstore');
+
+var apiInstance = new OpenApiPetstore.UserApi();
+var username = "username_example"; // String | The name that needs to be deleted
+var callback = function(error, data, response) {
+  if (error) {
+    console.error(error);
+  } else {
+    console.log('API called successfully.');
+  }
+};
+apiInstance.deleteUser(username, callback);
+```
+
+### Parameters
+
+Name | Type | Description  | Notes
+------------- | ------------- | ------------- | -------------
+ **username** | **String**| The name that needs to be deleted | 
+
+### Return type
+
+null (empty response body)
+
+### Authorization
+
+No authorization required
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: Not defined
+
+
+# **getUserByName**
+> User getUserByName(username)
+
+Get user by user name
+
+### Example
+```javascript
+var OpenApiPetstore = require('open_api_petstore');
+
+var apiInstance = new OpenApiPetstore.UserApi();
+var username = "username_example"; // String | The name that needs to be fetched. Use user1 for testing.
+var callback = function(error, data, response) {
+  if (error) {
+    console.error(error);
+  } else {
+    console.log('API called successfully. Returned data: ' + data);
+  }
+};
+apiInstance.getUserByName(username, callback);
+```
+
+### Parameters
+
+Name | Type | Description  | Notes
+------------- | ------------- | ------------- | -------------
+ **username** | **String**| The name that needs to be fetched. Use user1 for testing. | 
+
+### Return type
+
+[**User**](User.md)
+
+### Authorization
+
+No authorization required
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: application/xml, application/json
+
+
+# **loginUser**
+> String loginUser(username, password)
+
+Logs user into the system
+
+### Example
+```javascript
+var OpenApiPetstore = require('open_api_petstore');
+
+var apiInstance = new OpenApiPetstore.UserApi();
+var username = "username_example"; // String | The user name for login
+var password = "password_example"; // String | The password for login in clear text
+var callback = function(error, data, response) {
+  if (error) {
+    console.error(error);
+  } else {
+    console.log('API called successfully. Returned data: ' + data);
+  }
+};
+apiInstance.loginUser(username, password, callback);
+```
+
+### Parameters
+
+Name | Type | Description  | Notes
+------------- | ------------- | ------------- | -------------
+ **username** | **String**| The user name for login | 
+ **password** | **String**| The password for login in clear text | 
+
+### Return type
+
+**String**
+
+### Authorization
+
+No authorization required
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: application/xml, application/json
+
+
+# **logoutUser**
+> logoutUser()
+
+Logs out current logged in user session
+
+### Example
+```javascript
+var OpenApiPetstore = require('open_api_petstore');
+
+var apiInstance = new OpenApiPetstore.UserApi();
+var callback = function(error, data, response) {
+  if (error) {
+    console.error(error);
+  } else {
+    console.log('API called successfully.');
+  }
+};
+apiInstance.logoutUser(callback);
+```
+
+### Parameters
+This endpoint does not need any parameter.
+
+### Return type
+
+null (empty response body)
+
+### Authorization
+
+No authorization required
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: Not defined
+
+
+# **updateUser**
+> updateUser(username, user)
+
+Updated user
+
+This can only be done by the logged in user.
+
+### Example
+```javascript
+var OpenApiPetstore = require('open_api_petstore');
+
+var apiInstance = new OpenApiPetstore.UserApi();
+var username = "username_example"; // String | name that need to be deleted
+var user = new OpenApiPetstore.User(); // User | Updated user object
+var callback = function(error, data, response) {
+  if (error) {
+    console.error(error);
+  } else {
+    console.log('API called successfully.');
+  }
+};
+apiInstance.updateUser(username, user, callback);
+```
+
+### Parameters
+
+Name | Type | Description  | Notes
+------------- | ------------- | ------------- | -------------
+ **username** | **String**| name that need to be deleted | 
+ **user** | [**User**](User.md)| Updated user object | 
+
+### Return type
+
+null (empty response body)
+
+### Authorization
+
+No authorization required
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: Not defined
+
diff --git a/samples/client/petstore/javascript/src/ApiClient.js b/samples/client/petstore/javascript/src/ApiClient.js
index b5ba7388a98e..f43711962b0a 100644
--- a/samples/client/petstore/javascript/src/ApiClient.js
+++ b/samples/client/petstore/javascript/src/ApiClient.js
@@ -7,7 +7,7 @@
  * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
  * https://openapi-generator.tech
  *
- * OpenAPI Generator version: 3.0.0-SNAPSHOT
+ * OpenAPI Generator version: 3.0.2-SNAPSHOT
  *
  * Do not edit the class manually.
  *
diff --git a/samples/client/petstore/javascript/src/api/AnotherFakeApi.js b/samples/client/petstore/javascript/src/api/AnotherFakeApi.js
index 87716e79827b..73b690b0d56d 100644
--- a/samples/client/petstore/javascript/src/api/AnotherFakeApi.js
+++ b/samples/client/petstore/javascript/src/api/AnotherFakeApi.js
@@ -7,7 +7,7 @@
  * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
  * https://openapi-generator.tech
  *
- * OpenAPI Generator version: 3.0.0-SNAPSHOT
+ * OpenAPI Generator version: 3.0.2-SNAPSHOT
  *
  * Do not edit the class manually.
  *
diff --git a/samples/client/petstore/javascript/src/api/FakeApi.js b/samples/client/petstore/javascript/src/api/FakeApi.js
index 0654ab31789c..71cb70f8be7c 100644
--- a/samples/client/petstore/javascript/src/api/FakeApi.js
+++ b/samples/client/petstore/javascript/src/api/FakeApi.js
@@ -7,7 +7,7 @@
  * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
  * https://openapi-generator.tech
  *
- * OpenAPI Generator version: 3.0.0-SNAPSHOT
+ * OpenAPI Generator version: 3.0.2-SNAPSHOT
  *
  * Do not edit the class manually.
  *
@@ -81,7 +81,7 @@
       var authNames = [];
       var contentTypes = [];
       var accepts = ['*/*'];
-      var returnType = Boolean;
+      var returnType = 'Boolean';
 
       return this.apiClient.callApi(
         '/fake/outer/boolean', 'POST',
@@ -167,7 +167,7 @@
       var authNames = [];
       var contentTypes = [];
       var accepts = ['*/*'];
-      var returnType = Number;
+      var returnType = 'Number';
 
       return this.apiClient.callApi(
         '/fake/outer/number', 'POST',
@@ -210,7 +210,7 @@
       var authNames = [];
       var contentTypes = [];
       var accepts = ['*/*'];
-      var returnType = String;
+      var returnType = 'String';
 
       return this.apiClient.callApi(
         '/fake/outer/string', 'POST',
diff --git a/samples/client/petstore/javascript/src/api/FakeClassnameTags123Api.js b/samples/client/petstore/javascript/src/api/FakeClassnameTags123Api.js
index a26652962398..469890d60bbb 100644
--- a/samples/client/petstore/javascript/src/api/FakeClassnameTags123Api.js
+++ b/samples/client/petstore/javascript/src/api/FakeClassnameTags123Api.js
@@ -7,7 +7,7 @@
  * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
  * https://openapi-generator.tech
  *
- * OpenAPI Generator version: 3.0.0-SNAPSHOT
+ * OpenAPI Generator version: 3.0.2-SNAPSHOT
  *
  * Do not edit the class manually.
  *
diff --git a/samples/client/petstore/javascript/src/api/PetApi.js b/samples/client/petstore/javascript/src/api/PetApi.js
index 4db2caf67f44..840cb2fa67e9 100644
--- a/samples/client/petstore/javascript/src/api/PetApi.js
+++ b/samples/client/petstore/javascript/src/api/PetApi.js
@@ -7,7 +7,7 @@
  * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
  * https://openapi-generator.tech
  *
- * OpenAPI Generator version: 3.0.0-SNAPSHOT
+ * OpenAPI Generator version: 3.0.2-SNAPSHOT
  *
  * Do not edit the class manually.
  *
diff --git a/samples/client/petstore/javascript/src/api/StoreApi.js b/samples/client/petstore/javascript/src/api/StoreApi.js
index 2632b4ff2fd0..ba2c675ec771 100644
--- a/samples/client/petstore/javascript/src/api/StoreApi.js
+++ b/samples/client/petstore/javascript/src/api/StoreApi.js
@@ -7,7 +7,7 @@
  * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
  * https://openapi-generator.tech
  *
- * OpenAPI Generator version: 3.0.0-SNAPSHOT
+ * OpenAPI Generator version: 3.0.2-SNAPSHOT
  *
  * Do not edit the class manually.
  *
@@ -126,7 +126,7 @@
       var authNames = ['api_key'];
       var contentTypes = [];
       var accepts = ['application/json'];
-      var returnType = {String: Number};
+      var returnType = {'String': 'Number'};
 
       return this.apiClient.callApi(
         '/store/inventory', 'GET',
diff --git a/samples/client/petstore/javascript/src/api/UserApi.js b/samples/client/petstore/javascript/src/api/UserApi.js
index ce9446110276..d3e3b8513c55 100644
--- a/samples/client/petstore/javascript/src/api/UserApi.js
+++ b/samples/client/petstore/javascript/src/api/UserApi.js
@@ -7,7 +7,7 @@
  * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
  * https://openapi-generator.tech
  *
- * OpenAPI Generator version: 3.0.0-SNAPSHOT
+ * OpenAPI Generator version: 3.0.2-SNAPSHOT
  *
  * Do not edit the class manually.
  *
@@ -322,7 +322,7 @@
       var authNames = [];
       var contentTypes = [];
       var accepts = ['application/xml', 'application/json'];
-      var returnType = String;
+      var returnType = 'String';
 
       return this.apiClient.callApi(
         '/user/login', 'GET',
diff --git a/samples/client/petstore/javascript/src/index.js b/samples/client/petstore/javascript/src/index.js
index dabafded7e35..25685095fb2f 100644
--- a/samples/client/petstore/javascript/src/index.js
+++ b/samples/client/petstore/javascript/src/index.js
@@ -7,7 +7,7 @@
  * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
  * https://openapi-generator.tech
  *
- * OpenAPI Generator version: 3.0.0-SNAPSHOT
+ * OpenAPI Generator version: 3.0.2-SNAPSHOT
  *
  * Do not edit the class manually.
  *
diff --git a/samples/client/petstore/javascript/src/model/AdditionalPropertiesClass.js b/samples/client/petstore/javascript/src/model/AdditionalPropertiesClass.js
index cd548267e939..08572d900840 100644
--- a/samples/client/petstore/javascript/src/model/AdditionalPropertiesClass.js
+++ b/samples/client/petstore/javascript/src/model/AdditionalPropertiesClass.js
@@ -7,7 +7,7 @@
  * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
  * https://openapi-generator.tech
  *
- * OpenAPI Generator version: 3.0.0-SNAPSHOT
+ * OpenAPI Generator version: 3.0.2-SNAPSHOT
  *
  * Do not edit the class manually.
  *
diff --git a/samples/client/petstore/javascript/src/model/Animal.js b/samples/client/petstore/javascript/src/model/Animal.js
index 68534d978c4f..29376d771bfc 100644
--- a/samples/client/petstore/javascript/src/model/Animal.js
+++ b/samples/client/petstore/javascript/src/model/Animal.js
@@ -7,7 +7,7 @@
  * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
  * https://openapi-generator.tech
  *
- * OpenAPI Generator version: 3.0.0-SNAPSHOT
+ * OpenAPI Generator version: 3.0.2-SNAPSHOT
  *
  * Do not edit the class manually.
  *
diff --git a/samples/client/petstore/javascript/src/model/AnimalFarm.js b/samples/client/petstore/javascript/src/model/AnimalFarm.js
index 8129a6e8f6e9..e1a4797eec19 100644
--- a/samples/client/petstore/javascript/src/model/AnimalFarm.js
+++ b/samples/client/petstore/javascript/src/model/AnimalFarm.js
@@ -7,7 +7,7 @@
  * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
  * https://openapi-generator.tech
  *
- * OpenAPI Generator version: 3.0.0-SNAPSHOT
+ * OpenAPI Generator version: 3.0.2-SNAPSHOT
  *
  * Do not edit the class manually.
  *
diff --git a/samples/client/petstore/javascript/src/model/ApiResponse.js b/samples/client/petstore/javascript/src/model/ApiResponse.js
index ece36148c2e2..5c112418181d 100644
--- a/samples/client/petstore/javascript/src/model/ApiResponse.js
+++ b/samples/client/petstore/javascript/src/model/ApiResponse.js
@@ -7,7 +7,7 @@
  * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
  * https://openapi-generator.tech
  *
- * OpenAPI Generator version: 3.0.0-SNAPSHOT
+ * OpenAPI Generator version: 3.0.2-SNAPSHOT
  *
  * Do not edit the class manually.
  *
diff --git a/samples/client/petstore/javascript/src/model/ArrayOfArrayOfNumberOnly.js b/samples/client/petstore/javascript/src/model/ArrayOfArrayOfNumberOnly.js
index a4b18f5b2a1d..024c26469df3 100644
--- a/samples/client/petstore/javascript/src/model/ArrayOfArrayOfNumberOnly.js
+++ b/samples/client/petstore/javascript/src/model/ArrayOfArrayOfNumberOnly.js
@@ -7,7 +7,7 @@
  * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
  * https://openapi-generator.tech
  *
- * OpenAPI Generator version: 3.0.0-SNAPSHOT
+ * OpenAPI Generator version: 3.0.2-SNAPSHOT
  *
  * Do not edit the class manually.
  *
diff --git a/samples/client/petstore/javascript/src/model/ArrayOfNumberOnly.js b/samples/client/petstore/javascript/src/model/ArrayOfNumberOnly.js
index ff02ae19d0cf..ca79a7c2a6d0 100644
--- a/samples/client/petstore/javascript/src/model/ArrayOfNumberOnly.js
+++ b/samples/client/petstore/javascript/src/model/ArrayOfNumberOnly.js
@@ -7,7 +7,7 @@
  * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
  * https://openapi-generator.tech
  *
- * OpenAPI Generator version: 3.0.0-SNAPSHOT
+ * OpenAPI Generator version: 3.0.2-SNAPSHOT
  *
  * Do not edit the class manually.
  *
diff --git a/samples/client/petstore/javascript/src/model/ArrayTest.js b/samples/client/petstore/javascript/src/model/ArrayTest.js
index 65a075c34ed4..01b97a1b5809 100644
--- a/samples/client/petstore/javascript/src/model/ArrayTest.js
+++ b/samples/client/petstore/javascript/src/model/ArrayTest.js
@@ -7,7 +7,7 @@
  * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
  * https://openapi-generator.tech
  *
- * OpenAPI Generator version: 3.0.0-SNAPSHOT
+ * OpenAPI Generator version: 3.0.2-SNAPSHOT
  *
  * Do not edit the class manually.
  *
diff --git a/samples/client/petstore/javascript/src/model/Capitalization.js b/samples/client/petstore/javascript/src/model/Capitalization.js
index a0a7c0251d83..05934fb253ce 100644
--- a/samples/client/petstore/javascript/src/model/Capitalization.js
+++ b/samples/client/petstore/javascript/src/model/Capitalization.js
@@ -7,7 +7,7 @@
  * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
  * https://openapi-generator.tech
  *
- * OpenAPI Generator version: 3.0.0-SNAPSHOT
+ * OpenAPI Generator version: 3.0.2-SNAPSHOT
  *
  * Do not edit the class manually.
  *
diff --git a/samples/client/petstore/javascript/src/model/Cat.js b/samples/client/petstore/javascript/src/model/Cat.js
index 624a8fbcc493..10b787fed4eb 100644
--- a/samples/client/petstore/javascript/src/model/Cat.js
+++ b/samples/client/petstore/javascript/src/model/Cat.js
@@ -7,7 +7,7 @@
  * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
  * https://openapi-generator.tech
  *
- * OpenAPI Generator version: 3.0.0-SNAPSHOT
+ * OpenAPI Generator version: 3.0.2-SNAPSHOT
  *
  * Do not edit the class manually.
  *
diff --git a/samples/client/petstore/javascript/src/model/Category.js b/samples/client/petstore/javascript/src/model/Category.js
index 6754b1ff383e..c289c6b8e5bd 100644
--- a/samples/client/petstore/javascript/src/model/Category.js
+++ b/samples/client/petstore/javascript/src/model/Category.js
@@ -7,7 +7,7 @@
  * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
  * https://openapi-generator.tech
  *
- * OpenAPI Generator version: 3.0.0-SNAPSHOT
+ * OpenAPI Generator version: 3.0.2-SNAPSHOT
  *
  * Do not edit the class manually.
  *
diff --git a/samples/client/petstore/javascript/src/model/ClassModel.js b/samples/client/petstore/javascript/src/model/ClassModel.js
index 67d65de1bfc1..6edd8fbadd04 100644
--- a/samples/client/petstore/javascript/src/model/ClassModel.js
+++ b/samples/client/petstore/javascript/src/model/ClassModel.js
@@ -7,7 +7,7 @@
  * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
  * https://openapi-generator.tech
  *
- * OpenAPI Generator version: 3.0.0-SNAPSHOT
+ * OpenAPI Generator version: 3.0.2-SNAPSHOT
  *
  * Do not edit the class manually.
  *
diff --git a/samples/client/petstore/javascript/src/model/Client.js b/samples/client/petstore/javascript/src/model/Client.js
index f02784e56eec..e563bcf7ea59 100644
--- a/samples/client/petstore/javascript/src/model/Client.js
+++ b/samples/client/petstore/javascript/src/model/Client.js
@@ -7,7 +7,7 @@
  * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
  * https://openapi-generator.tech
  *
- * OpenAPI Generator version: 3.0.0-SNAPSHOT
+ * OpenAPI Generator version: 3.0.2-SNAPSHOT
  *
  * Do not edit the class manually.
  *
diff --git a/samples/client/petstore/javascript/src/model/Dog.js b/samples/client/petstore/javascript/src/model/Dog.js
index e4772e1ea868..c308f3dc9f11 100644
--- a/samples/client/petstore/javascript/src/model/Dog.js
+++ b/samples/client/petstore/javascript/src/model/Dog.js
@@ -7,7 +7,7 @@
  * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
  * https://openapi-generator.tech
  *
- * OpenAPI Generator version: 3.0.0-SNAPSHOT
+ * OpenAPI Generator version: 3.0.2-SNAPSHOT
  *
  * Do not edit the class manually.
  *
diff --git a/samples/client/petstore/javascript/src/model/EnumArrays.js b/samples/client/petstore/javascript/src/model/EnumArrays.js
index b6eaef5dd209..07d52b119db0 100644
--- a/samples/client/petstore/javascript/src/model/EnumArrays.js
+++ b/samples/client/petstore/javascript/src/model/EnumArrays.js
@@ -7,7 +7,7 @@
  * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
  * https://openapi-generator.tech
  *
- * OpenAPI Generator version: 3.0.0-SNAPSHOT
+ * OpenAPI Generator version: 3.0.2-SNAPSHOT
  *
  * Do not edit the class manually.
  *
diff --git a/samples/client/petstore/javascript/src/model/EnumClass.js b/samples/client/petstore/javascript/src/model/EnumClass.js
index 7a454e5bf914..d4a9f39f5661 100644
--- a/samples/client/petstore/javascript/src/model/EnumClass.js
+++ b/samples/client/petstore/javascript/src/model/EnumClass.js
@@ -7,7 +7,7 @@
  * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
  * https://openapi-generator.tech
  *
- * OpenAPI Generator version: 3.0.0-SNAPSHOT
+ * OpenAPI Generator version: 3.0.2-SNAPSHOT
  *
  * Do not edit the class manually.
  *
diff --git a/samples/client/petstore/javascript/src/model/EnumTest.js b/samples/client/petstore/javascript/src/model/EnumTest.js
index a1fa0b75145b..4dfc6753323a 100644
--- a/samples/client/petstore/javascript/src/model/EnumTest.js
+++ b/samples/client/petstore/javascript/src/model/EnumTest.js
@@ -7,7 +7,7 @@
  * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
  * https://openapi-generator.tech
  *
- * OpenAPI Generator version: 3.0.0-SNAPSHOT
+ * OpenAPI Generator version: 3.0.2-SNAPSHOT
  *
  * Do not edit the class manually.
  *
diff --git a/samples/client/petstore/javascript/src/model/FormatTest.js b/samples/client/petstore/javascript/src/model/FormatTest.js
index 458b81001de5..6c5986d48985 100644
--- a/samples/client/petstore/javascript/src/model/FormatTest.js
+++ b/samples/client/petstore/javascript/src/model/FormatTest.js
@@ -7,7 +7,7 @@
  * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
  * https://openapi-generator.tech
  *
- * OpenAPI Generator version: 3.0.0-SNAPSHOT
+ * OpenAPI Generator version: 3.0.2-SNAPSHOT
  *
  * Do not edit the class manually.
  *
diff --git a/samples/client/petstore/javascript/src/model/HasOnlyReadOnly.js b/samples/client/petstore/javascript/src/model/HasOnlyReadOnly.js
index 7efb6d62c197..484fd0c99910 100644
--- a/samples/client/petstore/javascript/src/model/HasOnlyReadOnly.js
+++ b/samples/client/petstore/javascript/src/model/HasOnlyReadOnly.js
@@ -7,7 +7,7 @@
  * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
  * https://openapi-generator.tech
  *
- * OpenAPI Generator version: 3.0.0-SNAPSHOT
+ * OpenAPI Generator version: 3.0.2-SNAPSHOT
  *
  * Do not edit the class manually.
  *
diff --git a/samples/client/petstore/javascript/src/model/List.js b/samples/client/petstore/javascript/src/model/List.js
index ceeaf6e437a9..ab3c2e34e343 100644
--- a/samples/client/petstore/javascript/src/model/List.js
+++ b/samples/client/petstore/javascript/src/model/List.js
@@ -7,7 +7,7 @@
  * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
  * https://openapi-generator.tech
  *
- * OpenAPI Generator version: 3.0.0-SNAPSHOT
+ * OpenAPI Generator version: 3.0.2-SNAPSHOT
  *
  * Do not edit the class manually.
  *
diff --git a/samples/client/petstore/javascript/src/model/MapTest.js b/samples/client/petstore/javascript/src/model/MapTest.js
index c0cebc6d0101..adf82a358c28 100644
--- a/samples/client/petstore/javascript/src/model/MapTest.js
+++ b/samples/client/petstore/javascript/src/model/MapTest.js
@@ -7,7 +7,7 @@
  * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
  * https://openapi-generator.tech
  *
- * OpenAPI Generator version: 3.0.0-SNAPSHOT
+ * OpenAPI Generator version: 3.0.2-SNAPSHOT
  *
  * Do not edit the class manually.
  *
diff --git a/samples/client/petstore/javascript/src/model/MixedPropertiesAndAdditionalPropertiesClass.js b/samples/client/petstore/javascript/src/model/MixedPropertiesAndAdditionalPropertiesClass.js
index db59e1155b5b..62c7a2f59e32 100644
--- a/samples/client/petstore/javascript/src/model/MixedPropertiesAndAdditionalPropertiesClass.js
+++ b/samples/client/petstore/javascript/src/model/MixedPropertiesAndAdditionalPropertiesClass.js
@@ -7,7 +7,7 @@
  * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
  * https://openapi-generator.tech
  *
- * OpenAPI Generator version: 3.0.0-SNAPSHOT
+ * OpenAPI Generator version: 3.0.2-SNAPSHOT
  *
  * Do not edit the class manually.
  *
diff --git a/samples/client/petstore/javascript/src/model/Model200Response.js b/samples/client/petstore/javascript/src/model/Model200Response.js
index 46bd28aab84f..84131169fb13 100644
--- a/samples/client/petstore/javascript/src/model/Model200Response.js
+++ b/samples/client/petstore/javascript/src/model/Model200Response.js
@@ -7,7 +7,7 @@
  * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
  * https://openapi-generator.tech
  *
- * OpenAPI Generator version: 3.0.0-SNAPSHOT
+ * OpenAPI Generator version: 3.0.2-SNAPSHOT
  *
  * Do not edit the class manually.
  *
diff --git a/samples/client/petstore/javascript/src/model/ModelReturn.js b/samples/client/petstore/javascript/src/model/ModelReturn.js
index 3fb41de6d85b..87484d2ee234 100644
--- a/samples/client/petstore/javascript/src/model/ModelReturn.js
+++ b/samples/client/petstore/javascript/src/model/ModelReturn.js
@@ -7,7 +7,7 @@
  * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
  * https://openapi-generator.tech
  *
- * OpenAPI Generator version: 3.0.0-SNAPSHOT
+ * OpenAPI Generator version: 3.0.2-SNAPSHOT
  *
  * Do not edit the class manually.
  *
diff --git a/samples/client/petstore/javascript/src/model/Name.js b/samples/client/petstore/javascript/src/model/Name.js
index e091e1974fe4..8c851c4cec54 100644
--- a/samples/client/petstore/javascript/src/model/Name.js
+++ b/samples/client/petstore/javascript/src/model/Name.js
@@ -7,7 +7,7 @@
  * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
  * https://openapi-generator.tech
  *
- * OpenAPI Generator version: 3.0.0-SNAPSHOT
+ * OpenAPI Generator version: 3.0.2-SNAPSHOT
  *
  * Do not edit the class manually.
  *
diff --git a/samples/client/petstore/javascript/src/model/NumberOnly.js b/samples/client/petstore/javascript/src/model/NumberOnly.js
index eb056e86ee25..389ad08e8c5c 100644
--- a/samples/client/petstore/javascript/src/model/NumberOnly.js
+++ b/samples/client/petstore/javascript/src/model/NumberOnly.js
@@ -7,7 +7,7 @@
  * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
  * https://openapi-generator.tech
  *
- * OpenAPI Generator version: 3.0.0-SNAPSHOT
+ * OpenAPI Generator version: 3.0.2-SNAPSHOT
  *
  * Do not edit the class manually.
  *
diff --git a/samples/client/petstore/javascript/src/model/Order.js b/samples/client/petstore/javascript/src/model/Order.js
index 70c445deacf8..bfd5f3714bef 100644
--- a/samples/client/petstore/javascript/src/model/Order.js
+++ b/samples/client/petstore/javascript/src/model/Order.js
@@ -7,7 +7,7 @@
  * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
  * https://openapi-generator.tech
  *
- * OpenAPI Generator version: 3.0.0-SNAPSHOT
+ * OpenAPI Generator version: 3.0.2-SNAPSHOT
  *
  * Do not edit the class manually.
  *
diff --git a/samples/client/petstore/javascript/src/model/OuterComposite.js b/samples/client/petstore/javascript/src/model/OuterComposite.js
index cee1b9a083ed..b4fc48476dee 100644
--- a/samples/client/petstore/javascript/src/model/OuterComposite.js
+++ b/samples/client/petstore/javascript/src/model/OuterComposite.js
@@ -7,7 +7,7 @@
  * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
  * https://openapi-generator.tech
  *
- * OpenAPI Generator version: 3.0.0-SNAPSHOT
+ * OpenAPI Generator version: 3.0.2-SNAPSHOT
  *
  * Do not edit the class manually.
  *
diff --git a/samples/client/petstore/javascript/src/model/OuterEnum.js b/samples/client/petstore/javascript/src/model/OuterEnum.js
index ebae6bbc5473..9e1f532b44d0 100644
--- a/samples/client/petstore/javascript/src/model/OuterEnum.js
+++ b/samples/client/petstore/javascript/src/model/OuterEnum.js
@@ -7,7 +7,7 @@
  * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
  * https://openapi-generator.tech
  *
- * OpenAPI Generator version: 3.0.0-SNAPSHOT
+ * OpenAPI Generator version: 3.0.2-SNAPSHOT
  *
  * Do not edit the class manually.
  *
diff --git a/samples/client/petstore/javascript/src/model/Pet.js b/samples/client/petstore/javascript/src/model/Pet.js
index ff1df0c02f15..55997490b789 100644
--- a/samples/client/petstore/javascript/src/model/Pet.js
+++ b/samples/client/petstore/javascript/src/model/Pet.js
@@ -7,7 +7,7 @@
  * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
  * https://openapi-generator.tech
  *
- * OpenAPI Generator version: 3.0.0-SNAPSHOT
+ * OpenAPI Generator version: 3.0.2-SNAPSHOT
  *
  * Do not edit the class manually.
  *
diff --git a/samples/client/petstore/javascript/src/model/ReadOnlyFirst.js b/samples/client/petstore/javascript/src/model/ReadOnlyFirst.js
index a0460724c25e..1b0ae1104cc6 100644
--- a/samples/client/petstore/javascript/src/model/ReadOnlyFirst.js
+++ b/samples/client/petstore/javascript/src/model/ReadOnlyFirst.js
@@ -7,7 +7,7 @@
  * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
  * https://openapi-generator.tech
  *
- * OpenAPI Generator version: 3.0.0-SNAPSHOT
+ * OpenAPI Generator version: 3.0.2-SNAPSHOT
  *
  * Do not edit the class manually.
  *
diff --git a/samples/client/petstore/javascript/src/model/SpecialModelName.js b/samples/client/petstore/javascript/src/model/SpecialModelName.js
index 8474a682d264..22464bbe7a25 100644
--- a/samples/client/petstore/javascript/src/model/SpecialModelName.js
+++ b/samples/client/petstore/javascript/src/model/SpecialModelName.js
@@ -7,7 +7,7 @@
  * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
  * https://openapi-generator.tech
  *
- * OpenAPI Generator version: 3.0.0-SNAPSHOT
+ * OpenAPI Generator version: 3.0.2-SNAPSHOT
  *
  * Do not edit the class manually.
  *
diff --git a/samples/client/petstore/javascript/src/model/Tag.js b/samples/client/petstore/javascript/src/model/Tag.js
index b4f7d51e2a8d..9e4f88b0872e 100644
--- a/samples/client/petstore/javascript/src/model/Tag.js
+++ b/samples/client/petstore/javascript/src/model/Tag.js
@@ -7,7 +7,7 @@
  * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
  * https://openapi-generator.tech
  *
- * OpenAPI Generator version: 3.0.0-SNAPSHOT
+ * OpenAPI Generator version: 3.0.2-SNAPSHOT
  *
  * Do not edit the class manually.
  *
diff --git a/samples/client/petstore/javascript/src/model/User.js b/samples/client/petstore/javascript/src/model/User.js
index 5ba53768ad83..06d4e6e7ad0a 100644
--- a/samples/client/petstore/javascript/src/model/User.js
+++ b/samples/client/petstore/javascript/src/model/User.js
@@ -7,7 +7,7 @@
  * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
  * https://openapi-generator.tech
  *
- * OpenAPI Generator version: 3.0.0-SNAPSHOT
+ * OpenAPI Generator version: 3.0.2-SNAPSHOT
  *
  * Do not edit the class manually.
  *
diff --git a/samples/client/petstore/kotlin-string/.openapi-generator/VERSION b/samples/client/petstore/kotlin-string/.openapi-generator/VERSION
index 1c00c5181548..82602aa4190d 100644
--- a/samples/client/petstore/kotlin-string/.openapi-generator/VERSION
+++ b/samples/client/petstore/kotlin-string/.openapi-generator/VERSION
@@ -1 +1 @@
-3.0.2-SNAPSHOT
\ No newline at end of file
+3.0.3-SNAPSHOT
\ No newline at end of file
diff --git a/samples/client/petstore/kotlin-threetenbp/.openapi-generator/VERSION b/samples/client/petstore/kotlin-threetenbp/.openapi-generator/VERSION
index 1c00c5181548..82602aa4190d 100644
--- a/samples/client/petstore/kotlin-threetenbp/.openapi-generator/VERSION
+++ b/samples/client/petstore/kotlin-threetenbp/.openapi-generator/VERSION
@@ -1 +1 @@
-3.0.2-SNAPSHOT
\ No newline at end of file
+3.0.3-SNAPSHOT
\ No newline at end of file
diff --git a/samples/client/petstore/kotlin/.openapi-generator/VERSION b/samples/client/petstore/kotlin/.openapi-generator/VERSION
index 1c00c5181548..82602aa4190d 100644
--- a/samples/client/petstore/kotlin/.openapi-generator/VERSION
+++ b/samples/client/petstore/kotlin/.openapi-generator/VERSION
@@ -1 +1 @@
-3.0.2-SNAPSHOT
\ No newline at end of file
+3.0.3-SNAPSHOT
\ No newline at end of file
diff --git a/samples/client/petstore/php/.openapi-generator/VERSION b/samples/client/petstore/php/.openapi-generator/VERSION
index 1c00c5181548..82602aa4190d 100644
--- a/samples/client/petstore/php/.openapi-generator/VERSION
+++ b/samples/client/petstore/php/.openapi-generator/VERSION
@@ -1 +1 @@
-3.0.2-SNAPSHOT
\ No newline at end of file
+3.0.3-SNAPSHOT
\ No newline at end of file
diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Api/AnotherFakeApi.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Api/AnotherFakeApi.php
index 07db904370c6..1c668d963da4 100644
--- a/samples/client/petstore/php/OpenAPIClient-php/lib/Api/AnotherFakeApi.php
+++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Api/AnotherFakeApi.php
@@ -17,7 +17,7 @@
  * OpenAPI spec version: 1.0.0
  * 
  * Generated by: https://openapi-generator.tech
- * OpenAPI Generator version: 3.0.2-SNAPSHOT
+ * OpenAPI Generator version: 3.0.3-SNAPSHOT
  */
 
 /**
@@ -117,7 +117,6 @@ public function testSpecialTags($client)
      */
     public function testSpecialTagsWithHttpInfo($client)
     {
-        $returnType = '\OpenAPI\Client\Model\Client';
         $request = $this->testSpecialTagsRequest($client);
 
         try {
@@ -148,6 +147,26 @@ public function testSpecialTagsWithHttpInfo($client)
                 );
             }
 
+            $responseBody = $response->getBody();
+            switch($statusCode) {
+                case 200:
+                    if ('\OpenAPI\Client\Model\Client' === '\SplFileObject') {
+                        $content = $responseBody; //stream goes to serializer
+                    } else {
+                        $content = $responseBody->getContents();
+                        if ('\OpenAPI\Client\Model\Client' !== 'string') {
+                            $content = json_decode($content);
+                        }
+                    }
+
+                    return [
+                        ObjectSerializer::deserialize($content, '\OpenAPI\Client\Model\Client', []),
+                        $response->getStatusCode(),
+                        $response->getHeaders()
+                    ];
+            }
+
+            $returnType = '\OpenAPI\Client\Model\Client';
             $responseBody = $response->getBody();
             if ($returnType === '\SplFileObject') {
                 $content = $responseBody; //stream goes to serializer
diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Api/FakeApi.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Api/FakeApi.php
index 90e9ba304607..15628291dd32 100644
--- a/samples/client/petstore/php/OpenAPIClient-php/lib/Api/FakeApi.php
+++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Api/FakeApi.php
@@ -17,7 +17,7 @@
  * OpenAPI spec version: 1.0.0
  * 
  * Generated by: https://openapi-generator.tech
- * OpenAPI Generator version: 3.0.2-SNAPSHOT
+ * OpenAPI Generator version: 3.0.3-SNAPSHOT
  */
 
 /**
@@ -113,7 +113,6 @@ public function fakeOuterBooleanSerialize($body = null)
      */
     public function fakeOuterBooleanSerializeWithHttpInfo($body = null)
     {
-        $returnType = 'bool';
         $request = $this->fakeOuterBooleanSerializeRequest($body);
 
         try {
@@ -144,6 +143,26 @@ public function fakeOuterBooleanSerializeWithHttpInfo($body = null)
                 );
             }
 
+            $responseBody = $response->getBody();
+            switch($statusCode) {
+                case 200:
+                    if ('bool' === '\SplFileObject') {
+                        $content = $responseBody; //stream goes to serializer
+                    } else {
+                        $content = $responseBody->getContents();
+                        if ('bool' !== 'string') {
+                            $content = json_decode($content);
+                        }
+                    }
+
+                    return [
+                        ObjectSerializer::deserialize($content, 'bool', []),
+                        $response->getStatusCode(),
+                        $response->getHeaders()
+                    ];
+            }
+
+            $returnType = 'bool';
             $responseBody = $response->getBody();
             if ($returnType === '\SplFileObject') {
                 $content = $responseBody; //stream goes to serializer
@@ -360,7 +379,6 @@ public function fakeOuterCompositeSerialize($outer_composite = null)
      */
     public function fakeOuterCompositeSerializeWithHttpInfo($outer_composite = null)
     {
-        $returnType = '\OpenAPI\Client\Model\OuterComposite';
         $request = $this->fakeOuterCompositeSerializeRequest($outer_composite);
 
         try {
@@ -391,6 +409,26 @@ public function fakeOuterCompositeSerializeWithHttpInfo($outer_composite = null)
                 );
             }
 
+            $responseBody = $response->getBody();
+            switch($statusCode) {
+                case 200:
+                    if ('\OpenAPI\Client\Model\OuterComposite' === '\SplFileObject') {
+                        $content = $responseBody; //stream goes to serializer
+                    } else {
+                        $content = $responseBody->getContents();
+                        if ('\OpenAPI\Client\Model\OuterComposite' !== 'string') {
+                            $content = json_decode($content);
+                        }
+                    }
+
+                    return [
+                        ObjectSerializer::deserialize($content, '\OpenAPI\Client\Model\OuterComposite', []),
+                        $response->getStatusCode(),
+                        $response->getHeaders()
+                    ];
+            }
+
+            $returnType = '\OpenAPI\Client\Model\OuterComposite';
             $responseBody = $response->getBody();
             if ($returnType === '\SplFileObject') {
                 $content = $responseBody; //stream goes to serializer
@@ -607,7 +645,6 @@ public function fakeOuterNumberSerialize($body = null)
      */
     public function fakeOuterNumberSerializeWithHttpInfo($body = null)
     {
-        $returnType = 'float';
         $request = $this->fakeOuterNumberSerializeRequest($body);
 
         try {
@@ -638,6 +675,26 @@ public function fakeOuterNumberSerializeWithHttpInfo($body = null)
                 );
             }
 
+            $responseBody = $response->getBody();
+            switch($statusCode) {
+                case 200:
+                    if ('float' === '\SplFileObject') {
+                        $content = $responseBody; //stream goes to serializer
+                    } else {
+                        $content = $responseBody->getContents();
+                        if ('float' !== 'string') {
+                            $content = json_decode($content);
+                        }
+                    }
+
+                    return [
+                        ObjectSerializer::deserialize($content, 'float', []),
+                        $response->getStatusCode(),
+                        $response->getHeaders()
+                    ];
+            }
+
+            $returnType = 'float';
             $responseBody = $response->getBody();
             if ($returnType === '\SplFileObject') {
                 $content = $responseBody; //stream goes to serializer
@@ -854,7 +911,6 @@ public function fakeOuterStringSerialize($body = null)
      */
     public function fakeOuterStringSerializeWithHttpInfo($body = null)
     {
-        $returnType = 'string';
         $request = $this->fakeOuterStringSerializeRequest($body);
 
         try {
@@ -885,6 +941,26 @@ public function fakeOuterStringSerializeWithHttpInfo($body = null)
                 );
             }
 
+            $responseBody = $response->getBody();
+            switch($statusCode) {
+                case 200:
+                    if ('string' === '\SplFileObject') {
+                        $content = $responseBody; //stream goes to serializer
+                    } else {
+                        $content = $responseBody->getContents();
+                        if ('string' !== 'string') {
+                            $content = json_decode($content);
+                        }
+                    }
+
+                    return [
+                        ObjectSerializer::deserialize($content, 'string', []),
+                        $response->getStatusCode(),
+                        $response->getHeaders()
+                    ];
+            }
+
+            $returnType = 'string';
             $responseBody = $response->getBody();
             if ($returnType === '\SplFileObject') {
                 $content = $responseBody; //stream goes to serializer
@@ -1102,7 +1178,6 @@ public function testBodyWithQueryParams($query, $user)
      */
     public function testBodyWithQueryParamsWithHttpInfo($query, $user)
     {
-        $returnType = '';
         $request = $this->testBodyWithQueryParamsRequest($query, $user);
 
         try {
@@ -1336,7 +1411,6 @@ public function testClientModel($client)
      */
     public function testClientModelWithHttpInfo($client)
     {
-        $returnType = '\OpenAPI\Client\Model\Client';
         $request = $this->testClientModelRequest($client);
 
         try {
@@ -1367,6 +1441,26 @@ public function testClientModelWithHttpInfo($client)
                 );
             }
 
+            $responseBody = $response->getBody();
+            switch($statusCode) {
+                case 200:
+                    if ('\OpenAPI\Client\Model\Client' === '\SplFileObject') {
+                        $content = $responseBody; //stream goes to serializer
+                    } else {
+                        $content = $responseBody->getContents();
+                        if ('\OpenAPI\Client\Model\Client' !== 'string') {
+                            $content = json_decode($content);
+                        }
+                    }
+
+                    return [
+                        ObjectSerializer::deserialize($content, '\OpenAPI\Client\Model\Client', []),
+                        $response->getStatusCode(),
+                        $response->getHeaders()
+                    ];
+            }
+
+            $returnType = '\OpenAPI\Client\Model\Client';
             $responseBody = $response->getBody();
             if ($returnType === '\SplFileObject') {
                 $content = $responseBody; //stream goes to serializer
@@ -1618,7 +1712,6 @@ public function testEndpointParameters($number, $double, $pattern_without_delimi
      */
     public function testEndpointParametersWithHttpInfo($number, $double, $pattern_without_delimiter, $byte, $integer = null, $int32 = null, $int64 = null, $float = null, $string = null, $binary = null, $date = null, $date_time = null, $password = null, $callback = null)
     {
-        $returnType = '';
         $request = $this->testEndpointParametersRequest($number, $double, $pattern_without_delimiter, $byte, $integer, $int32, $int64, $float, $string, $binary, $date, $date_time, $password, $callback);
 
         try {
@@ -2014,7 +2107,6 @@ public function testEnumParameters($enum_header_string_array = null, $enum_heade
      */
     public function testEnumParametersWithHttpInfo($enum_header_string_array = null, $enum_header_string = '-efg', $enum_query_string_array = null, $enum_query_string = '-efg', $enum_query_integer = null, $enum_query_double = null, $enum_form_string_array = '$', $enum_form_string = '-efg')
     {
-        $returnType = '';
         $request = $this->testEnumParametersRequest($enum_header_string_array, $enum_header_string, $enum_query_string_array, $enum_query_string, $enum_query_integer, $enum_query_double, $enum_form_string_array, $enum_form_string);
 
         try {
@@ -2284,7 +2376,6 @@ public function testInlineAdditionalProperties($request_body)
      */
     public function testInlineAdditionalPropertiesWithHttpInfo($request_body)
     {
-        $returnType = '';
         $request = $this->testInlineAdditionalPropertiesRequest($request_body);
 
         try {
@@ -2506,7 +2597,6 @@ public function testJsonFormData($param, $param2)
      */
     public function testJsonFormDataWithHttpInfo($param, $param2)
     {
-        $returnType = '';
         $request = $this->testJsonFormDataRequest($param, $param2);
 
         try {
diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Api/FakeClassnameTags123Api.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Api/FakeClassnameTags123Api.php
index 34585a87cb6e..ffe6a623b71f 100644
--- a/samples/client/petstore/php/OpenAPIClient-php/lib/Api/FakeClassnameTags123Api.php
+++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Api/FakeClassnameTags123Api.php
@@ -17,7 +17,7 @@
  * OpenAPI spec version: 1.0.0
  * 
  * Generated by: https://openapi-generator.tech
- * OpenAPI Generator version: 3.0.2-SNAPSHOT
+ * OpenAPI Generator version: 3.0.3-SNAPSHOT
  */
 
 /**
@@ -117,7 +117,6 @@ public function testClassname($client)
      */
     public function testClassnameWithHttpInfo($client)
     {
-        $returnType = '\OpenAPI\Client\Model\Client';
         $request = $this->testClassnameRequest($client);
 
         try {
@@ -148,6 +147,26 @@ public function testClassnameWithHttpInfo($client)
                 );
             }
 
+            $responseBody = $response->getBody();
+            switch($statusCode) {
+                case 200:
+                    if ('\OpenAPI\Client\Model\Client' === '\SplFileObject') {
+                        $content = $responseBody; //stream goes to serializer
+                    } else {
+                        $content = $responseBody->getContents();
+                        if ('\OpenAPI\Client\Model\Client' !== 'string') {
+                            $content = json_decode($content);
+                        }
+                    }
+
+                    return [
+                        ObjectSerializer::deserialize($content, '\OpenAPI\Client\Model\Client', []),
+                        $response->getStatusCode(),
+                        $response->getHeaders()
+                    ];
+            }
+
+            $returnType = '\OpenAPI\Client\Model\Client';
             $responseBody = $response->getBody();
             if ($returnType === '\SplFileObject') {
                 $content = $responseBody; //stream goes to serializer
diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Api/PetApi.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Api/PetApi.php
index 05400c03e354..9b495a9c624e 100644
--- a/samples/client/petstore/php/OpenAPIClient-php/lib/Api/PetApi.php
+++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Api/PetApi.php
@@ -17,7 +17,7 @@
  * OpenAPI spec version: 1.0.0
  * 
  * Generated by: https://openapi-generator.tech
- * OpenAPI Generator version: 3.0.2-SNAPSHOT
+ * OpenAPI Generator version: 3.0.3-SNAPSHOT
  */
 
 /**
@@ -116,7 +116,6 @@ public function addPet($pet)
      */
     public function addPetWithHttpInfo($pet)
     {
-        $returnType = '';
         $request = $this->addPetRequest($pet);
 
         try {
@@ -342,7 +341,6 @@ public function deletePet($pet_id, $api_key = null)
      */
     public function deletePetWithHttpInfo($pet_id, $api_key = null)
     {
-        $returnType = '';
         $request = $this->deletePetRequest($pet_id, $api_key);
 
         try {
@@ -579,7 +577,6 @@ public function findPetsByStatus($status)
      */
     public function findPetsByStatusWithHttpInfo($status)
     {
-        $returnType = '\OpenAPI\Client\Model\Pet[]';
         $request = $this->findPetsByStatusRequest($status);
 
         try {
@@ -610,6 +607,26 @@ public function findPetsByStatusWithHttpInfo($status)
                 );
             }
 
+            $responseBody = $response->getBody();
+            switch($statusCode) {
+                case 200:
+                    if ('\OpenAPI\Client\Model\Pet[]' === '\SplFileObject') {
+                        $content = $responseBody; //stream goes to serializer
+                    } else {
+                        $content = $responseBody->getContents();
+                        if ('\OpenAPI\Client\Model\Pet[]' !== 'string') {
+                            $content = json_decode($content);
+                        }
+                    }
+
+                    return [
+                        ObjectSerializer::deserialize($content, '\OpenAPI\Client\Model\Pet[]', []),
+                        $response->getStatusCode(),
+                        $response->getHeaders()
+                    ];
+            }
+
+            $returnType = '\OpenAPI\Client\Model\Pet[]';
             $responseBody = $response->getBody();
             if ($returnType === '\SplFileObject') {
                 $content = $responseBody; //stream goes to serializer
@@ -844,7 +861,6 @@ public function findPetsByTags($tags)
      */
     public function findPetsByTagsWithHttpInfo($tags)
     {
-        $returnType = '\OpenAPI\Client\Model\Pet[]';
         $request = $this->findPetsByTagsRequest($tags);
 
         try {
@@ -875,6 +891,26 @@ public function findPetsByTagsWithHttpInfo($tags)
                 );
             }
 
+            $responseBody = $response->getBody();
+            switch($statusCode) {
+                case 200:
+                    if ('\OpenAPI\Client\Model\Pet[]' === '\SplFileObject') {
+                        $content = $responseBody; //stream goes to serializer
+                    } else {
+                        $content = $responseBody->getContents();
+                        if ('\OpenAPI\Client\Model\Pet[]' !== 'string') {
+                            $content = json_decode($content);
+                        }
+                    }
+
+                    return [
+                        ObjectSerializer::deserialize($content, '\OpenAPI\Client\Model\Pet[]', []),
+                        $response->getStatusCode(),
+                        $response->getHeaders()
+                    ];
+            }
+
+            $returnType = '\OpenAPI\Client\Model\Pet[]';
             $responseBody = $response->getBody();
             if ($returnType === '\SplFileObject') {
                 $content = $responseBody; //stream goes to serializer
@@ -1109,7 +1145,6 @@ public function getPetById($pet_id)
      */
     public function getPetByIdWithHttpInfo($pet_id)
     {
-        $returnType = '\OpenAPI\Client\Model\Pet';
         $request = $this->getPetByIdRequest($pet_id);
 
         try {
@@ -1140,6 +1175,26 @@ public function getPetByIdWithHttpInfo($pet_id)
                 );
             }
 
+            $responseBody = $response->getBody();
+            switch($statusCode) {
+                case 200:
+                    if ('\OpenAPI\Client\Model\Pet' === '\SplFileObject') {
+                        $content = $responseBody; //stream goes to serializer
+                    } else {
+                        $content = $responseBody->getContents();
+                        if ('\OpenAPI\Client\Model\Pet' !== 'string') {
+                            $content = json_decode($content);
+                        }
+                    }
+
+                    return [
+                        ObjectSerializer::deserialize($content, '\OpenAPI\Client\Model\Pet', []),
+                        $response->getStatusCode(),
+                        $response->getHeaders()
+                    ];
+            }
+
+            $returnType = '\OpenAPI\Client\Model\Pet';
             $responseBody = $response->getBody();
             if ($returnType === '\SplFileObject') {
                 $content = $responseBody; //stream goes to serializer
@@ -1375,7 +1430,6 @@ public function updatePet($pet)
      */
     public function updatePetWithHttpInfo($pet)
     {
-        $returnType = '';
         $request = $this->updatePetRequest($pet);
 
         try {
@@ -1603,7 +1657,6 @@ public function updatePetWithForm($pet_id, $name = null, $status = null)
      */
     public function updatePetWithFormWithHttpInfo($pet_id, $name = null, $status = null)
     {
-        $returnType = '';
         $request = $this->updatePetWithFormRequest($pet_id, $name, $status);
 
         try {
@@ -1851,7 +1904,6 @@ public function uploadFile($pet_id, $additional_metadata = null, $file = null)
      */
     public function uploadFileWithHttpInfo($pet_id, $additional_metadata = null, $file = null)
     {
-        $returnType = '\OpenAPI\Client\Model\ApiResponse';
         $request = $this->uploadFileRequest($pet_id, $additional_metadata, $file);
 
         try {
@@ -1882,6 +1934,26 @@ public function uploadFileWithHttpInfo($pet_id, $additional_metadata = null, $fi
                 );
             }
 
+            $responseBody = $response->getBody();
+            switch($statusCode) {
+                case 200:
+                    if ('\OpenAPI\Client\Model\ApiResponse' === '\SplFileObject') {
+                        $content = $responseBody; //stream goes to serializer
+                    } else {
+                        $content = $responseBody->getContents();
+                        if ('\OpenAPI\Client\Model\ApiResponse' !== 'string') {
+                            $content = json_decode($content);
+                        }
+                    }
+
+                    return [
+                        ObjectSerializer::deserialize($content, '\OpenAPI\Client\Model\ApiResponse', []),
+                        $response->getStatusCode(),
+                        $response->getHeaders()
+                    ];
+            }
+
+            $returnType = '\OpenAPI\Client\Model\ApiResponse';
             $responseBody = $response->getBody();
             if ($returnType === '\SplFileObject') {
                 $content = $responseBody; //stream goes to serializer
diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Api/StoreApi.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Api/StoreApi.php
index 648d872e04a7..76f1da432d84 100644
--- a/samples/client/petstore/php/OpenAPIClient-php/lib/Api/StoreApi.php
+++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Api/StoreApi.php
@@ -17,7 +17,7 @@
  * OpenAPI spec version: 1.0.0
  * 
  * Generated by: https://openapi-generator.tech
- * OpenAPI Generator version: 3.0.2-SNAPSHOT
+ * OpenAPI Generator version: 3.0.3-SNAPSHOT
  */
 
 /**
@@ -116,7 +116,6 @@ public function deleteOrder($order_id)
      */
     public function deleteOrderWithHttpInfo($order_id)
     {
-        $returnType = '';
         $request = $this->deleteOrderRequest($order_id);
 
         try {
@@ -340,7 +339,6 @@ public function getInventory()
      */
     public function getInventoryWithHttpInfo()
     {
-        $returnType = 'map[string,int]';
         $request = $this->getInventoryRequest();
 
         try {
@@ -371,6 +369,26 @@ public function getInventoryWithHttpInfo()
                 );
             }
 
+            $responseBody = $response->getBody();
+            switch($statusCode) {
+                case 200:
+                    if ('map[string,int]' === '\SplFileObject') {
+                        $content = $responseBody; //stream goes to serializer
+                    } else {
+                        $content = $responseBody->getContents();
+                        if ('map[string,int]' !== 'string') {
+                            $content = json_decode($content);
+                        }
+                    }
+
+                    return [
+                        ObjectSerializer::deserialize($content, 'map[string,int]', []),
+                        $response->getStatusCode(),
+                        $response->getHeaders()
+                    ];
+            }
+
+            $returnType = 'map[string,int]';
             $responseBody = $response->getBody();
             if ($returnType === '\SplFileObject') {
                 $content = $responseBody; //stream goes to serializer
@@ -590,7 +608,6 @@ public function getOrderById($order_id)
      */
     public function getOrderByIdWithHttpInfo($order_id)
     {
-        $returnType = '\OpenAPI\Client\Model\Order';
         $request = $this->getOrderByIdRequest($order_id);
 
         try {
@@ -621,6 +638,26 @@ public function getOrderByIdWithHttpInfo($order_id)
                 );
             }
 
+            $responseBody = $response->getBody();
+            switch($statusCode) {
+                case 200:
+                    if ('\OpenAPI\Client\Model\Order' === '\SplFileObject') {
+                        $content = $responseBody; //stream goes to serializer
+                    } else {
+                        $content = $responseBody->getContents();
+                        if ('\OpenAPI\Client\Model\Order' !== 'string') {
+                            $content = json_decode($content);
+                        }
+                    }
+
+                    return [
+                        ObjectSerializer::deserialize($content, '\OpenAPI\Client\Model\Order', []),
+                        $response->getStatusCode(),
+                        $response->getHeaders()
+                    ];
+            }
+
+            $returnType = '\OpenAPI\Client\Model\Order';
             $responseBody = $response->getBody();
             if ($returnType === '\SplFileObject') {
                 $content = $responseBody; //stream goes to serializer
@@ -859,7 +896,6 @@ public function placeOrder($order)
      */
     public function placeOrderWithHttpInfo($order)
     {
-        $returnType = '\OpenAPI\Client\Model\Order';
         $request = $this->placeOrderRequest($order);
 
         try {
@@ -890,6 +926,26 @@ public function placeOrderWithHttpInfo($order)
                 );
             }
 
+            $responseBody = $response->getBody();
+            switch($statusCode) {
+                case 200:
+                    if ('\OpenAPI\Client\Model\Order' === '\SplFileObject') {
+                        $content = $responseBody; //stream goes to serializer
+                    } else {
+                        $content = $responseBody->getContents();
+                        if ('\OpenAPI\Client\Model\Order' !== 'string') {
+                            $content = json_decode($content);
+                        }
+                    }
+
+                    return [
+                        ObjectSerializer::deserialize($content, '\OpenAPI\Client\Model\Order', []),
+                        $response->getStatusCode(),
+                        $response->getHeaders()
+                    ];
+            }
+
+            $returnType = '\OpenAPI\Client\Model\Order';
             $responseBody = $response->getBody();
             if ($returnType === '\SplFileObject') {
                 $content = $responseBody; //stream goes to serializer
diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Api/UserApi.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Api/UserApi.php
index 2c05b7c521c0..84226530cfa6 100644
--- a/samples/client/petstore/php/OpenAPIClient-php/lib/Api/UserApi.php
+++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Api/UserApi.php
@@ -17,7 +17,7 @@
  * OpenAPI spec version: 1.0.0
  * 
  * Generated by: https://openapi-generator.tech
- * OpenAPI Generator version: 3.0.2-SNAPSHOT
+ * OpenAPI Generator version: 3.0.3-SNAPSHOT
  */
 
 /**
@@ -116,7 +116,6 @@ public function createUser($user)
      */
     public function createUserWithHttpInfo($user)
     {
-        $returnType = '';
         $request = $this->createUserRequest($user);
 
         try {
@@ -336,7 +335,6 @@ public function createUsersWithArrayInput($user)
      */
     public function createUsersWithArrayInputWithHttpInfo($user)
     {
-        $returnType = '';
         $request = $this->createUsersWithArrayInputRequest($user);
 
         try {
@@ -556,7 +554,6 @@ public function createUsersWithListInput($user)
      */
     public function createUsersWithListInputWithHttpInfo($user)
     {
-        $returnType = '';
         $request = $this->createUsersWithListInputRequest($user);
 
         try {
@@ -776,7 +773,6 @@ public function deleteUser($username)
      */
     public function deleteUserWithHttpInfo($username)
     {
-        $returnType = '';
         $request = $this->deleteUserRequest($username);
 
         try {
@@ -1002,7 +998,6 @@ public function getUserByName($username)
      */
     public function getUserByNameWithHttpInfo($username)
     {
-        $returnType = '\OpenAPI\Client\Model\User';
         $request = $this->getUserByNameRequest($username);
 
         try {
@@ -1033,6 +1028,26 @@ public function getUserByNameWithHttpInfo($username)
                 );
             }
 
+            $responseBody = $response->getBody();
+            switch($statusCode) {
+                case 200:
+                    if ('\OpenAPI\Client\Model\User' === '\SplFileObject') {
+                        $content = $responseBody; //stream goes to serializer
+                    } else {
+                        $content = $responseBody->getContents();
+                        if ('\OpenAPI\Client\Model\User' !== 'string') {
+                            $content = json_decode($content);
+                        }
+                    }
+
+                    return [
+                        ObjectSerializer::deserialize($content, '\OpenAPI\Client\Model\User', []),
+                        $response->getStatusCode(),
+                        $response->getHeaders()
+                    ];
+            }
+
+            $returnType = '\OpenAPI\Client\Model\User';
             $responseBody = $response->getBody();
             if ($returnType === '\SplFileObject') {
                 $content = $responseBody; //stream goes to serializer
@@ -1266,7 +1281,6 @@ public function loginUser($username, $password)
      */
     public function loginUserWithHttpInfo($username, $password)
     {
-        $returnType = 'string';
         $request = $this->loginUserRequest($username, $password);
 
         try {
@@ -1297,6 +1311,26 @@ public function loginUserWithHttpInfo($username, $password)
                 );
             }
 
+            $responseBody = $response->getBody();
+            switch($statusCode) {
+                case 200:
+                    if ('string' === '\SplFileObject') {
+                        $content = $responseBody; //stream goes to serializer
+                    } else {
+                        $content = $responseBody->getContents();
+                        if ('string' !== 'string') {
+                            $content = json_decode($content);
+                        }
+                    }
+
+                    return [
+                        ObjectSerializer::deserialize($content, 'string', []),
+                        $response->getStatusCode(),
+                        $response->getHeaders()
+                    ];
+            }
+
+            $returnType = 'string';
             $responseBody = $response->getBody();
             if ($returnType === '\SplFileObject') {
                 $content = $responseBody; //stream goes to serializer
@@ -1534,7 +1568,6 @@ public function logoutUser()
      */
     public function logoutUserWithHttpInfo()
     {
-        $returnType = '';
         $request = $this->logoutUserRequest();
 
         try {
@@ -1744,7 +1777,6 @@ public function updateUser($username, $user)
      */
     public function updateUserWithHttpInfo($username, $user)
     {
-        $returnType = '';
         $request = $this->updateUserRequest($username, $user);
 
         try {
diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/ApiException.php b/samples/client/petstore/php/OpenAPIClient-php/lib/ApiException.php
index c8df3a1c4560..a0a5b4d1caf9 100644
--- a/samples/client/petstore/php/OpenAPIClient-php/lib/ApiException.php
+++ b/samples/client/petstore/php/OpenAPIClient-php/lib/ApiException.php
@@ -17,7 +17,7 @@
  * OpenAPI spec version: 1.0.0
  * 
  * Generated by: https://openapi-generator.tech
- * OpenAPI Generator version: 3.0.2-SNAPSHOT
+ * OpenAPI Generator version: 3.0.3-SNAPSHOT
  */
 
 /**
diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Configuration.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Configuration.php
index de4f29cca879..b58313a42200 100644
--- a/samples/client/petstore/php/OpenAPIClient-php/lib/Configuration.php
+++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Configuration.php
@@ -17,7 +17,7 @@
  * OpenAPI spec version: 1.0.0
  * 
  * Generated by: https://openapi-generator.tech
- * OpenAPI Generator version: 3.0.2-SNAPSHOT
+ * OpenAPI Generator version: 3.0.3-SNAPSHOT
  */
 
 /**
diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/HeaderSelector.php b/samples/client/petstore/php/OpenAPIClient-php/lib/HeaderSelector.php
index 39bfc9e5a541..dcf3363c78b8 100644
--- a/samples/client/petstore/php/OpenAPIClient-php/lib/HeaderSelector.php
+++ b/samples/client/petstore/php/OpenAPIClient-php/lib/HeaderSelector.php
@@ -17,7 +17,7 @@
  * OpenAPI spec version: 1.0.0
  * 
  * Generated by: https://openapi-generator.tech
- * OpenAPI Generator version: 3.0.2-SNAPSHOT
+ * OpenAPI Generator version: 3.0.3-SNAPSHOT
  */
 
 /**
diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/AdditionalPropertiesClass.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/AdditionalPropertiesClass.php
index d14350fc2f94..ae5f3dc3de83 100644
--- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/AdditionalPropertiesClass.php
+++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/AdditionalPropertiesClass.php
@@ -18,7 +18,7 @@
  * OpenAPI spec version: 1.0.0
  * 
  * Generated by: https://openapi-generator.tech
- * OpenAPI Generator version: 3.0.2-SNAPSHOT
+ * OpenAPI Generator version: 3.0.3-SNAPSHOT
  */
 
 /**
diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Animal.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Animal.php
index 0afe71a6fdfd..16aef52de050 100644
--- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Animal.php
+++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Animal.php
@@ -18,7 +18,7 @@
  * OpenAPI spec version: 1.0.0
  * 
  * Generated by: https://openapi-generator.tech
- * OpenAPI Generator version: 3.0.2-SNAPSHOT
+ * OpenAPI Generator version: 3.0.3-SNAPSHOT
  */
 
 /**
diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/AnimalFarm.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/AnimalFarm.php
index 92b6da41a7f4..78c16fa1bb60 100644
--- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/AnimalFarm.php
+++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/AnimalFarm.php
@@ -18,7 +18,7 @@
  * OpenAPI spec version: 1.0.0
  * 
  * Generated by: https://openapi-generator.tech
- * OpenAPI Generator version: 3.0.2-SNAPSHOT
+ * OpenAPI Generator version: 3.0.3-SNAPSHOT
  */
 
 /**
diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/ApiResponse.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/ApiResponse.php
index b33a84b4a829..b8764bf3724b 100644
--- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/ApiResponse.php
+++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/ApiResponse.php
@@ -18,7 +18,7 @@
  * OpenAPI spec version: 1.0.0
  * 
  * Generated by: https://openapi-generator.tech
- * OpenAPI Generator version: 3.0.2-SNAPSHOT
+ * OpenAPI Generator version: 3.0.3-SNAPSHOT
  */
 
 /**
diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/ArrayOfArrayOfNumberOnly.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/ArrayOfArrayOfNumberOnly.php
index faaf0a5c98c6..1fdcfffbeedc 100644
--- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/ArrayOfArrayOfNumberOnly.php
+++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/ArrayOfArrayOfNumberOnly.php
@@ -18,7 +18,7 @@
  * OpenAPI spec version: 1.0.0
  * 
  * Generated by: https://openapi-generator.tech
- * OpenAPI Generator version: 3.0.2-SNAPSHOT
+ * OpenAPI Generator version: 3.0.3-SNAPSHOT
  */
 
 /**
diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/ArrayOfNumberOnly.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/ArrayOfNumberOnly.php
index 2ceb2f4239a4..392af57b47e7 100644
--- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/ArrayOfNumberOnly.php
+++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/ArrayOfNumberOnly.php
@@ -18,7 +18,7 @@
  * OpenAPI spec version: 1.0.0
  * 
  * Generated by: https://openapi-generator.tech
- * OpenAPI Generator version: 3.0.2-SNAPSHOT
+ * OpenAPI Generator version: 3.0.3-SNAPSHOT
  */
 
 /**
diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/ArrayTest.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/ArrayTest.php
index dd9ec8077df4..2a11f3de6e1d 100644
--- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/ArrayTest.php
+++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/ArrayTest.php
@@ -18,7 +18,7 @@
  * OpenAPI spec version: 1.0.0
  * 
  * Generated by: https://openapi-generator.tech
- * OpenAPI Generator version: 3.0.2-SNAPSHOT
+ * OpenAPI Generator version: 3.0.3-SNAPSHOT
  */
 
 /**
diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Capitalization.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Capitalization.php
index 213a79b0c521..ff26cc123c08 100644
--- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Capitalization.php
+++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Capitalization.php
@@ -18,7 +18,7 @@
  * OpenAPI spec version: 1.0.0
  * 
  * Generated by: https://openapi-generator.tech
- * OpenAPI Generator version: 3.0.2-SNAPSHOT
+ * OpenAPI Generator version: 3.0.3-SNAPSHOT
  */
 
 /**
diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Cat.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Cat.php
index 24afb981960d..665cc61a838e 100644
--- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Cat.php
+++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Cat.php
@@ -18,7 +18,7 @@
  * OpenAPI spec version: 1.0.0
  * 
  * Generated by: https://openapi-generator.tech
- * OpenAPI Generator version: 3.0.2-SNAPSHOT
+ * OpenAPI Generator version: 3.0.3-SNAPSHOT
  */
 
 /**
diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Category.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Category.php
index 63fd421498ff..e90f161fe02e 100644
--- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Category.php
+++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Category.php
@@ -18,7 +18,7 @@
  * OpenAPI spec version: 1.0.0
  * 
  * Generated by: https://openapi-generator.tech
- * OpenAPI Generator version: 3.0.2-SNAPSHOT
+ * OpenAPI Generator version: 3.0.3-SNAPSHOT
  */
 
 /**
diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/ClassModel.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/ClassModel.php
index 1296f22a7de8..2dd300ddc45c 100644
--- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/ClassModel.php
+++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/ClassModel.php
@@ -18,7 +18,7 @@
  * OpenAPI spec version: 1.0.0
  * 
  * Generated by: https://openapi-generator.tech
- * OpenAPI Generator version: 3.0.2-SNAPSHOT
+ * OpenAPI Generator version: 3.0.3-SNAPSHOT
  */
 
 /**
diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Client.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Client.php
index 8b2e75e075f9..82e0ee402985 100644
--- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Client.php
+++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Client.php
@@ -18,7 +18,7 @@
  * OpenAPI spec version: 1.0.0
  * 
  * Generated by: https://openapi-generator.tech
- * OpenAPI Generator version: 3.0.2-SNAPSHOT
+ * OpenAPI Generator version: 3.0.3-SNAPSHOT
  */
 
 /**
diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Dog.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Dog.php
index 3aa6ae264139..c404888a0eb9 100644
--- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Dog.php
+++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Dog.php
@@ -18,7 +18,7 @@
  * OpenAPI spec version: 1.0.0
  * 
  * Generated by: https://openapi-generator.tech
- * OpenAPI Generator version: 3.0.2-SNAPSHOT
+ * OpenAPI Generator version: 3.0.3-SNAPSHOT
  */
 
 /**
diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/EnumArrays.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/EnumArrays.php
index 934b95e7fb44..f12665f5e842 100644
--- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/EnumArrays.php
+++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/EnumArrays.php
@@ -18,7 +18,7 @@
  * OpenAPI spec version: 1.0.0
  * 
  * Generated by: https://openapi-generator.tech
- * OpenAPI Generator version: 3.0.2-SNAPSHOT
+ * OpenAPI Generator version: 3.0.3-SNAPSHOT
  */
 
 /**
diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/EnumClass.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/EnumClass.php
index 904cdc180362..e44e9eb161df 100644
--- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/EnumClass.php
+++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/EnumClass.php
@@ -18,7 +18,7 @@
  * OpenAPI spec version: 1.0.0
  * 
  * Generated by: https://openapi-generator.tech
- * OpenAPI Generator version: 3.0.2-SNAPSHOT
+ * OpenAPI Generator version: 3.0.3-SNAPSHOT
  */
 
 /**
diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/EnumTest.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/EnumTest.php
index 9437b3c2843b..561f5593bcfe 100644
--- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/EnumTest.php
+++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/EnumTest.php
@@ -18,7 +18,7 @@
  * OpenAPI spec version: 1.0.0
  * 
  * Generated by: https://openapi-generator.tech
- * OpenAPI Generator version: 3.0.2-SNAPSHOT
+ * OpenAPI Generator version: 3.0.3-SNAPSHOT
  */
 
 /**
diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/FormatTest.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/FormatTest.php
index 5a812a6f712f..265daee0ddb5 100644
--- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/FormatTest.php
+++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/FormatTest.php
@@ -18,7 +18,7 @@
  * OpenAPI spec version: 1.0.0
  * 
  * Generated by: https://openapi-generator.tech
- * OpenAPI Generator version: 3.0.2-SNAPSHOT
+ * OpenAPI Generator version: 3.0.3-SNAPSHOT
  */
 
 /**
diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/HasOnlyReadOnly.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/HasOnlyReadOnly.php
index cd95c541f96e..ba3d46a72385 100644
--- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/HasOnlyReadOnly.php
+++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/HasOnlyReadOnly.php
@@ -18,7 +18,7 @@
  * OpenAPI spec version: 1.0.0
  * 
  * Generated by: https://openapi-generator.tech
- * OpenAPI Generator version: 3.0.2-SNAPSHOT
+ * OpenAPI Generator version: 3.0.3-SNAPSHOT
  */
 
 /**
diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/MapTest.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/MapTest.php
index 9dda9ad7b585..e0c38408559a 100644
--- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/MapTest.php
+++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/MapTest.php
@@ -18,7 +18,7 @@
  * OpenAPI spec version: 1.0.0
  * 
  * Generated by: https://openapi-generator.tech
- * OpenAPI Generator version: 3.0.2-SNAPSHOT
+ * OpenAPI Generator version: 3.0.3-SNAPSHOT
  */
 
 /**
diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/MixedPropertiesAndAdditionalPropertiesClass.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/MixedPropertiesAndAdditionalPropertiesClass.php
index 1c4354e55304..920dbcf94212 100644
--- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/MixedPropertiesAndAdditionalPropertiesClass.php
+++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/MixedPropertiesAndAdditionalPropertiesClass.php
@@ -18,7 +18,7 @@
  * OpenAPI spec version: 1.0.0
  * 
  * Generated by: https://openapi-generator.tech
- * OpenAPI Generator version: 3.0.2-SNAPSHOT
+ * OpenAPI Generator version: 3.0.3-SNAPSHOT
  */
 
 /**
diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Model200Response.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Model200Response.php
index 1f7f3d188f98..d4d0d61eab42 100644
--- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Model200Response.php
+++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Model200Response.php
@@ -18,7 +18,7 @@
  * OpenAPI spec version: 1.0.0
  * 
  * Generated by: https://openapi-generator.tech
- * OpenAPI Generator version: 3.0.2-SNAPSHOT
+ * OpenAPI Generator version: 3.0.3-SNAPSHOT
  */
 
 /**
diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/ModelInterface.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/ModelInterface.php
index 3d5b27d5d36a..c0d21323450c 100644
--- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/ModelInterface.php
+++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/ModelInterface.php
@@ -18,7 +18,7 @@
  * OpenAPI spec version: 1.0.0
  * 
  * Generated by: https://openapi-generator.tech
- * OpenAPI Generator version: 3.0.2-SNAPSHOT
+ * OpenAPI Generator version: 3.0.3-SNAPSHOT
  */
 
 /**
diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/ModelList.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/ModelList.php
index 0c387665068c..8798057ca349 100644
--- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/ModelList.php
+++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/ModelList.php
@@ -18,7 +18,7 @@
  * OpenAPI spec version: 1.0.0
  * 
  * Generated by: https://openapi-generator.tech
- * OpenAPI Generator version: 3.0.2-SNAPSHOT
+ * OpenAPI Generator version: 3.0.3-SNAPSHOT
  */
 
 /**
diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/ModelReturn.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/ModelReturn.php
index b586ae0523a4..9c1d061f252f 100644
--- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/ModelReturn.php
+++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/ModelReturn.php
@@ -18,7 +18,7 @@
  * OpenAPI spec version: 1.0.0
  * 
  * Generated by: https://openapi-generator.tech
- * OpenAPI Generator version: 3.0.2-SNAPSHOT
+ * OpenAPI Generator version: 3.0.3-SNAPSHOT
  */
 
 /**
diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Name.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Name.php
index fdfd009209c3..d42800f3a268 100644
--- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Name.php
+++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Name.php
@@ -18,7 +18,7 @@
  * OpenAPI spec version: 1.0.0
  * 
  * Generated by: https://openapi-generator.tech
- * OpenAPI Generator version: 3.0.2-SNAPSHOT
+ * OpenAPI Generator version: 3.0.3-SNAPSHOT
  */
 
 /**
diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/NumberOnly.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/NumberOnly.php
index 4720e71b807e..4a7c1fcc7eba 100644
--- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/NumberOnly.php
+++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/NumberOnly.php
@@ -18,7 +18,7 @@
  * OpenAPI spec version: 1.0.0
  * 
  * Generated by: https://openapi-generator.tech
- * OpenAPI Generator version: 3.0.2-SNAPSHOT
+ * OpenAPI Generator version: 3.0.3-SNAPSHOT
  */
 
 /**
diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Order.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Order.php
index a1f426018363..a88c4e6313a1 100644
--- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Order.php
+++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Order.php
@@ -18,7 +18,7 @@
  * OpenAPI spec version: 1.0.0
  * 
  * Generated by: https://openapi-generator.tech
- * OpenAPI Generator version: 3.0.2-SNAPSHOT
+ * OpenAPI Generator version: 3.0.3-SNAPSHOT
  */
 
 /**
diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/OuterComposite.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/OuterComposite.php
index 8d5a5b9df06a..c2a7377ffa0f 100644
--- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/OuterComposite.php
+++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/OuterComposite.php
@@ -18,7 +18,7 @@
  * OpenAPI spec version: 1.0.0
  * 
  * Generated by: https://openapi-generator.tech
- * OpenAPI Generator version: 3.0.2-SNAPSHOT
+ * OpenAPI Generator version: 3.0.3-SNAPSHOT
  */
 
 /**
diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/OuterEnum.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/OuterEnum.php
index 1acb7f54d20c..59c373db531c 100644
--- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/OuterEnum.php
+++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/OuterEnum.php
@@ -18,7 +18,7 @@
  * OpenAPI spec version: 1.0.0
  * 
  * Generated by: https://openapi-generator.tech
- * OpenAPI Generator version: 3.0.2-SNAPSHOT
+ * OpenAPI Generator version: 3.0.3-SNAPSHOT
  */
 
 /**
diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Pet.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Pet.php
index 713fd8d59d90..031a73710ef1 100644
--- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Pet.php
+++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Pet.php
@@ -18,7 +18,7 @@
  * OpenAPI spec version: 1.0.0
  * 
  * Generated by: https://openapi-generator.tech
- * OpenAPI Generator version: 3.0.2-SNAPSHOT
+ * OpenAPI Generator version: 3.0.3-SNAPSHOT
  */
 
 /**
diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/ReadOnlyFirst.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/ReadOnlyFirst.php
index 6858e6347816..ff00acc3059f 100644
--- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/ReadOnlyFirst.php
+++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/ReadOnlyFirst.php
@@ -18,7 +18,7 @@
  * OpenAPI spec version: 1.0.0
  * 
  * Generated by: https://openapi-generator.tech
- * OpenAPI Generator version: 3.0.2-SNAPSHOT
+ * OpenAPI Generator version: 3.0.3-SNAPSHOT
  */
 
 /**
diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/SpecialModelName.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/SpecialModelName.php
index 5a61b4f9aeae..f95ca0cc8175 100644
--- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/SpecialModelName.php
+++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/SpecialModelName.php
@@ -18,7 +18,7 @@
  * OpenAPI spec version: 1.0.0
  * 
  * Generated by: https://openapi-generator.tech
- * OpenAPI Generator version: 3.0.2-SNAPSHOT
+ * OpenAPI Generator version: 3.0.3-SNAPSHOT
  */
 
 /**
diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Tag.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Tag.php
index 1516326159fc..bb725bce935f 100644
--- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Tag.php
+++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/Tag.php
@@ -18,7 +18,7 @@
  * OpenAPI spec version: 1.0.0
  * 
  * Generated by: https://openapi-generator.tech
- * OpenAPI Generator version: 3.0.2-SNAPSHOT
+ * OpenAPI Generator version: 3.0.3-SNAPSHOT
  */
 
 /**
diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/User.php b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/User.php
index 3679309dc837..ec4001d71821 100644
--- a/samples/client/petstore/php/OpenAPIClient-php/lib/Model/User.php
+++ b/samples/client/petstore/php/OpenAPIClient-php/lib/Model/User.php
@@ -18,7 +18,7 @@
  * OpenAPI spec version: 1.0.0
  * 
  * Generated by: https://openapi-generator.tech
- * OpenAPI Generator version: 3.0.2-SNAPSHOT
+ * OpenAPI Generator version: 3.0.3-SNAPSHOT
  */
 
 /**
diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/ObjectSerializer.php b/samples/client/petstore/php/OpenAPIClient-php/lib/ObjectSerializer.php
index 71906b46cd59..52fc6524d173 100644
--- a/samples/client/petstore/php/OpenAPIClient-php/lib/ObjectSerializer.php
+++ b/samples/client/petstore/php/OpenAPIClient-php/lib/ObjectSerializer.php
@@ -18,7 +18,7 @@
  * OpenAPI spec version: 1.0.0
  * 
  * Generated by: https://openapi-generator.tech
- * OpenAPI Generator version: 3.0.2-SNAPSHOT
+ * OpenAPI Generator version: 3.0.3-SNAPSHOT
  */
 
 /**
@@ -223,7 +223,7 @@ public static function serializeCollection(array $collection, $collectionFormat,
      * @param string[] $httpHeaders   HTTP headers
      * @param string   $discriminator discriminator if polymorphism is used
      *
-     * @return object|array|null an single or an array of $class instances
+     * @return object|array|null a single or an array of $class instances
      */
     public static function deserialize($data, $class, $httpHeaders = null)
     {
diff --git a/samples/client/petstore/php/OpenAPIClient-php/test/Api/AnotherFakeApiTest.php b/samples/client/petstore/php/OpenAPIClient-php/test/Api/AnotherFakeApiTest.php
index 0dad0cd8a265..efb1f5fcc4fd 100644
--- a/samples/client/petstore/php/OpenAPIClient-php/test/Api/AnotherFakeApiTest.php
+++ b/samples/client/petstore/php/OpenAPIClient-php/test/Api/AnotherFakeApiTest.php
@@ -17,7 +17,7 @@
  * OpenAPI spec version: 1.0.0
  * 
  * Generated by: https://openapi-generator.tech
- * OpenAPI Generator version: 3.0.2-SNAPSHOT
+ * OpenAPI Generator version: 3.0.3-SNAPSHOT
  */
 
 /**
diff --git a/samples/client/petstore/php/OpenAPIClient-php/test/Api/FakeApiTest.php b/samples/client/petstore/php/OpenAPIClient-php/test/Api/FakeApiTest.php
index c19ad8029142..831c2c685f6e 100644
--- a/samples/client/petstore/php/OpenAPIClient-php/test/Api/FakeApiTest.php
+++ b/samples/client/petstore/php/OpenAPIClient-php/test/Api/FakeApiTest.php
@@ -17,7 +17,7 @@
  * OpenAPI spec version: 1.0.0
  * 
  * Generated by: https://openapi-generator.tech
- * OpenAPI Generator version: 3.0.2-SNAPSHOT
+ * OpenAPI Generator version: 3.0.3-SNAPSHOT
  */
 
 /**
diff --git a/samples/client/petstore/php/OpenAPIClient-php/test/Api/FakeClassnameTags123ApiTest.php b/samples/client/petstore/php/OpenAPIClient-php/test/Api/FakeClassnameTags123ApiTest.php
index f7b5550d1541..d45a51364a67 100644
--- a/samples/client/petstore/php/OpenAPIClient-php/test/Api/FakeClassnameTags123ApiTest.php
+++ b/samples/client/petstore/php/OpenAPIClient-php/test/Api/FakeClassnameTags123ApiTest.php
@@ -17,7 +17,7 @@
  * OpenAPI spec version: 1.0.0
  * 
  * Generated by: https://openapi-generator.tech
- * OpenAPI Generator version: 3.0.2-SNAPSHOT
+ * OpenAPI Generator version: 3.0.3-SNAPSHOT
  */
 
 /**
diff --git a/samples/client/petstore/php/OpenAPIClient-php/test/Api/PetApiTest.php b/samples/client/petstore/php/OpenAPIClient-php/test/Api/PetApiTest.php
index 27de7c0d8ab4..0f1081c60534 100644
--- a/samples/client/petstore/php/OpenAPIClient-php/test/Api/PetApiTest.php
+++ b/samples/client/petstore/php/OpenAPIClient-php/test/Api/PetApiTest.php
@@ -17,7 +17,7 @@
  * OpenAPI spec version: 1.0.0
  * 
  * Generated by: https://openapi-generator.tech
- * OpenAPI Generator version: 3.0.2-SNAPSHOT
+ * OpenAPI Generator version: 3.0.3-SNAPSHOT
  */
 
 /**
diff --git a/samples/client/petstore/php/OpenAPIClient-php/test/Api/StoreApiTest.php b/samples/client/petstore/php/OpenAPIClient-php/test/Api/StoreApiTest.php
index 633de8b71eac..668501cbf5d1 100644
--- a/samples/client/petstore/php/OpenAPIClient-php/test/Api/StoreApiTest.php
+++ b/samples/client/petstore/php/OpenAPIClient-php/test/Api/StoreApiTest.php
@@ -17,7 +17,7 @@
  * OpenAPI spec version: 1.0.0
  * 
  * Generated by: https://openapi-generator.tech
- * OpenAPI Generator version: 3.0.2-SNAPSHOT
+ * OpenAPI Generator version: 3.0.3-SNAPSHOT
  */
 
 /**
diff --git a/samples/client/petstore/php/OpenAPIClient-php/test/Api/UserApiTest.php b/samples/client/petstore/php/OpenAPIClient-php/test/Api/UserApiTest.php
index 84f563ab326d..38b46ff60d2e 100644
--- a/samples/client/petstore/php/OpenAPIClient-php/test/Api/UserApiTest.php
+++ b/samples/client/petstore/php/OpenAPIClient-php/test/Api/UserApiTest.php
@@ -17,7 +17,7 @@
  * OpenAPI spec version: 1.0.0
  * 
  * Generated by: https://openapi-generator.tech
- * OpenAPI Generator version: 3.0.2-SNAPSHOT
+ * OpenAPI Generator version: 3.0.3-SNAPSHOT
  */
 
 /**
diff --git a/samples/client/petstore/php/OpenAPIClient-php/test/Model/AdditionalPropertiesClassTest.php b/samples/client/petstore/php/OpenAPIClient-php/test/Model/AdditionalPropertiesClassTest.php
index f46c4ec9b5a1..367699196e60 100644
--- a/samples/client/petstore/php/OpenAPIClient-php/test/Model/AdditionalPropertiesClassTest.php
+++ b/samples/client/petstore/php/OpenAPIClient-php/test/Model/AdditionalPropertiesClassTest.php
@@ -18,7 +18,7 @@
  * OpenAPI spec version: 1.0.0
  * 
  * Generated by: https://openapi-generator.tech
- * OpenAPI Generator version: 3.0.2-SNAPSHOT
+ * OpenAPI Generator version: 3.0.3-SNAPSHOT
  */
 
 /**
diff --git a/samples/client/petstore/php/OpenAPIClient-php/test/Model/AnimalFarmTest.php b/samples/client/petstore/php/OpenAPIClient-php/test/Model/AnimalFarmTest.php
index 79c6a1ac5a53..9a79dce72cb9 100644
--- a/samples/client/petstore/php/OpenAPIClient-php/test/Model/AnimalFarmTest.php
+++ b/samples/client/petstore/php/OpenAPIClient-php/test/Model/AnimalFarmTest.php
@@ -18,7 +18,7 @@
  * OpenAPI spec version: 1.0.0
  * 
  * Generated by: https://openapi-generator.tech
- * OpenAPI Generator version: 3.0.2-SNAPSHOT
+ * OpenAPI Generator version: 3.0.3-SNAPSHOT
  */
 
 /**
diff --git a/samples/client/petstore/php/OpenAPIClient-php/test/Model/AnimalTest.php b/samples/client/petstore/php/OpenAPIClient-php/test/Model/AnimalTest.php
index fbd911191e82..087bf5139b94 100644
--- a/samples/client/petstore/php/OpenAPIClient-php/test/Model/AnimalTest.php
+++ b/samples/client/petstore/php/OpenAPIClient-php/test/Model/AnimalTest.php
@@ -18,7 +18,7 @@
  * OpenAPI spec version: 1.0.0
  * 
  * Generated by: https://openapi-generator.tech
- * OpenAPI Generator version: 3.0.2-SNAPSHOT
+ * OpenAPI Generator version: 3.0.3-SNAPSHOT
  */
 
 /**
diff --git a/samples/client/petstore/php/OpenAPIClient-php/test/Model/ApiResponseTest.php b/samples/client/petstore/php/OpenAPIClient-php/test/Model/ApiResponseTest.php
index 470c1ff741dc..aa4ec27b52cc 100644
--- a/samples/client/petstore/php/OpenAPIClient-php/test/Model/ApiResponseTest.php
+++ b/samples/client/petstore/php/OpenAPIClient-php/test/Model/ApiResponseTest.php
@@ -18,7 +18,7 @@
  * OpenAPI spec version: 1.0.0
  * 
  * Generated by: https://openapi-generator.tech
- * OpenAPI Generator version: 3.0.2-SNAPSHOT
+ * OpenAPI Generator version: 3.0.3-SNAPSHOT
  */
 
 /**
diff --git a/samples/client/petstore/php/OpenAPIClient-php/test/Model/ArrayOfArrayOfNumberOnlyTest.php b/samples/client/petstore/php/OpenAPIClient-php/test/Model/ArrayOfArrayOfNumberOnlyTest.php
index 3b2d11224d61..6e82cd038de0 100644
--- a/samples/client/petstore/php/OpenAPIClient-php/test/Model/ArrayOfArrayOfNumberOnlyTest.php
+++ b/samples/client/petstore/php/OpenAPIClient-php/test/Model/ArrayOfArrayOfNumberOnlyTest.php
@@ -18,7 +18,7 @@
  * OpenAPI spec version: 1.0.0
  * 
  * Generated by: https://openapi-generator.tech
- * OpenAPI Generator version: 3.0.2-SNAPSHOT
+ * OpenAPI Generator version: 3.0.3-SNAPSHOT
  */
 
 /**
diff --git a/samples/client/petstore/php/OpenAPIClient-php/test/Model/ArrayOfNumberOnlyTest.php b/samples/client/petstore/php/OpenAPIClient-php/test/Model/ArrayOfNumberOnlyTest.php
index 716e2eb49cfd..da50230be508 100644
--- a/samples/client/petstore/php/OpenAPIClient-php/test/Model/ArrayOfNumberOnlyTest.php
+++ b/samples/client/petstore/php/OpenAPIClient-php/test/Model/ArrayOfNumberOnlyTest.php
@@ -18,7 +18,7 @@
  * OpenAPI spec version: 1.0.0
  * 
  * Generated by: https://openapi-generator.tech
- * OpenAPI Generator version: 3.0.2-SNAPSHOT
+ * OpenAPI Generator version: 3.0.3-SNAPSHOT
  */
 
 /**
diff --git a/samples/client/petstore/php/OpenAPIClient-php/test/Model/ArrayTestTest.php b/samples/client/petstore/php/OpenAPIClient-php/test/Model/ArrayTestTest.php
index 90a29a4a45be..6ffa97a2f5eb 100644
--- a/samples/client/petstore/php/OpenAPIClient-php/test/Model/ArrayTestTest.php
+++ b/samples/client/petstore/php/OpenAPIClient-php/test/Model/ArrayTestTest.php
@@ -18,7 +18,7 @@
  * OpenAPI spec version: 1.0.0
  * 
  * Generated by: https://openapi-generator.tech
- * OpenAPI Generator version: 3.0.2-SNAPSHOT
+ * OpenAPI Generator version: 3.0.3-SNAPSHOT
  */
 
 /**
diff --git a/samples/client/petstore/php/OpenAPIClient-php/test/Model/CapitalizationTest.php b/samples/client/petstore/php/OpenAPIClient-php/test/Model/CapitalizationTest.php
index 3092d0d14359..27415e821364 100644
--- a/samples/client/petstore/php/OpenAPIClient-php/test/Model/CapitalizationTest.php
+++ b/samples/client/petstore/php/OpenAPIClient-php/test/Model/CapitalizationTest.php
@@ -18,7 +18,7 @@
  * OpenAPI spec version: 1.0.0
  * 
  * Generated by: https://openapi-generator.tech
- * OpenAPI Generator version: 3.0.2-SNAPSHOT
+ * OpenAPI Generator version: 3.0.3-SNAPSHOT
  */
 
 /**
diff --git a/samples/client/petstore/php/OpenAPIClient-php/test/Model/CatTest.php b/samples/client/petstore/php/OpenAPIClient-php/test/Model/CatTest.php
index 238f8de40d89..1f8efed8125a 100644
--- a/samples/client/petstore/php/OpenAPIClient-php/test/Model/CatTest.php
+++ b/samples/client/petstore/php/OpenAPIClient-php/test/Model/CatTest.php
@@ -18,7 +18,7 @@
  * OpenAPI spec version: 1.0.0
  * 
  * Generated by: https://openapi-generator.tech
- * OpenAPI Generator version: 3.0.2-SNAPSHOT
+ * OpenAPI Generator version: 3.0.3-SNAPSHOT
  */
 
 /**
diff --git a/samples/client/petstore/php/OpenAPIClient-php/test/Model/CategoryTest.php b/samples/client/petstore/php/OpenAPIClient-php/test/Model/CategoryTest.php
index 3df3150c891a..36e5c38b5c43 100644
--- a/samples/client/petstore/php/OpenAPIClient-php/test/Model/CategoryTest.php
+++ b/samples/client/petstore/php/OpenAPIClient-php/test/Model/CategoryTest.php
@@ -18,7 +18,7 @@
  * OpenAPI spec version: 1.0.0
  * 
  * Generated by: https://openapi-generator.tech
- * OpenAPI Generator version: 3.0.2-SNAPSHOT
+ * OpenAPI Generator version: 3.0.3-SNAPSHOT
  */
 
 /**
diff --git a/samples/client/petstore/php/OpenAPIClient-php/test/Model/ClassModelTest.php b/samples/client/petstore/php/OpenAPIClient-php/test/Model/ClassModelTest.php
index 25daa930ca1f..fb437b3b8c0d 100644
--- a/samples/client/petstore/php/OpenAPIClient-php/test/Model/ClassModelTest.php
+++ b/samples/client/petstore/php/OpenAPIClient-php/test/Model/ClassModelTest.php
@@ -18,7 +18,7 @@
  * OpenAPI spec version: 1.0.0
  * 
  * Generated by: https://openapi-generator.tech
- * OpenAPI Generator version: 3.0.2-SNAPSHOT
+ * OpenAPI Generator version: 3.0.3-SNAPSHOT
  */
 
 /**
diff --git a/samples/client/petstore/php/OpenAPIClient-php/test/Model/ClientTest.php b/samples/client/petstore/php/OpenAPIClient-php/test/Model/ClientTest.php
index e648b1e1c0e3..77efed5cb06d 100644
--- a/samples/client/petstore/php/OpenAPIClient-php/test/Model/ClientTest.php
+++ b/samples/client/petstore/php/OpenAPIClient-php/test/Model/ClientTest.php
@@ -18,7 +18,7 @@
  * OpenAPI spec version: 1.0.0
  * 
  * Generated by: https://openapi-generator.tech
- * OpenAPI Generator version: 3.0.2-SNAPSHOT
+ * OpenAPI Generator version: 3.0.3-SNAPSHOT
  */
 
 /**
diff --git a/samples/client/petstore/php/OpenAPIClient-php/test/Model/DogTest.php b/samples/client/petstore/php/OpenAPIClient-php/test/Model/DogTest.php
index a32faa91a4f9..e6f29e2cec7d 100644
--- a/samples/client/petstore/php/OpenAPIClient-php/test/Model/DogTest.php
+++ b/samples/client/petstore/php/OpenAPIClient-php/test/Model/DogTest.php
@@ -18,7 +18,7 @@
  * OpenAPI spec version: 1.0.0
  * 
  * Generated by: https://openapi-generator.tech
- * OpenAPI Generator version: 3.0.2-SNAPSHOT
+ * OpenAPI Generator version: 3.0.3-SNAPSHOT
  */
 
 /**
diff --git a/samples/client/petstore/php/OpenAPIClient-php/test/Model/EnumArraysTest.php b/samples/client/petstore/php/OpenAPIClient-php/test/Model/EnumArraysTest.php
index 321227269cd2..9a8f9d10ef35 100644
--- a/samples/client/petstore/php/OpenAPIClient-php/test/Model/EnumArraysTest.php
+++ b/samples/client/petstore/php/OpenAPIClient-php/test/Model/EnumArraysTest.php
@@ -18,7 +18,7 @@
  * OpenAPI spec version: 1.0.0
  * 
  * Generated by: https://openapi-generator.tech
- * OpenAPI Generator version: 3.0.2-SNAPSHOT
+ * OpenAPI Generator version: 3.0.3-SNAPSHOT
  */
 
 /**
diff --git a/samples/client/petstore/php/OpenAPIClient-php/test/Model/EnumClassTest.php b/samples/client/petstore/php/OpenAPIClient-php/test/Model/EnumClassTest.php
index d9b9b5f05e73..a9d6cd7fac6f 100644
--- a/samples/client/petstore/php/OpenAPIClient-php/test/Model/EnumClassTest.php
+++ b/samples/client/petstore/php/OpenAPIClient-php/test/Model/EnumClassTest.php
@@ -18,7 +18,7 @@
  * OpenAPI spec version: 1.0.0
  * 
  * Generated by: https://openapi-generator.tech
- * OpenAPI Generator version: 3.0.2-SNAPSHOT
+ * OpenAPI Generator version: 3.0.3-SNAPSHOT
  */
 
 /**
diff --git a/samples/client/petstore/php/OpenAPIClient-php/test/Model/EnumTestTest.php b/samples/client/petstore/php/OpenAPIClient-php/test/Model/EnumTestTest.php
index 324735bb08a6..eefd2eb83f52 100644
--- a/samples/client/petstore/php/OpenAPIClient-php/test/Model/EnumTestTest.php
+++ b/samples/client/petstore/php/OpenAPIClient-php/test/Model/EnumTestTest.php
@@ -18,7 +18,7 @@
  * OpenAPI spec version: 1.0.0
  * 
  * Generated by: https://openapi-generator.tech
- * OpenAPI Generator version: 3.0.2-SNAPSHOT
+ * OpenAPI Generator version: 3.0.3-SNAPSHOT
  */
 
 /**
diff --git a/samples/client/petstore/php/OpenAPIClient-php/test/Model/FormatTestTest.php b/samples/client/petstore/php/OpenAPIClient-php/test/Model/FormatTestTest.php
index 078cf09064e9..c5161755b52b 100644
--- a/samples/client/petstore/php/OpenAPIClient-php/test/Model/FormatTestTest.php
+++ b/samples/client/petstore/php/OpenAPIClient-php/test/Model/FormatTestTest.php
@@ -18,7 +18,7 @@
  * OpenAPI spec version: 1.0.0
  * 
  * Generated by: https://openapi-generator.tech
- * OpenAPI Generator version: 3.0.2-SNAPSHOT
+ * OpenAPI Generator version: 3.0.3-SNAPSHOT
  */
 
 /**
diff --git a/samples/client/petstore/php/OpenAPIClient-php/test/Model/HasOnlyReadOnlyTest.php b/samples/client/petstore/php/OpenAPIClient-php/test/Model/HasOnlyReadOnlyTest.php
index 61c2864920ed..bb698360fff2 100644
--- a/samples/client/petstore/php/OpenAPIClient-php/test/Model/HasOnlyReadOnlyTest.php
+++ b/samples/client/petstore/php/OpenAPIClient-php/test/Model/HasOnlyReadOnlyTest.php
@@ -18,7 +18,7 @@
  * OpenAPI spec version: 1.0.0
  * 
  * Generated by: https://openapi-generator.tech
- * OpenAPI Generator version: 3.0.2-SNAPSHOT
+ * OpenAPI Generator version: 3.0.3-SNAPSHOT
  */
 
 /**
diff --git a/samples/client/petstore/php/OpenAPIClient-php/test/Model/MapTestTest.php b/samples/client/petstore/php/OpenAPIClient-php/test/Model/MapTestTest.php
index 15229ac69ecb..c3f347e1bdaa 100644
--- a/samples/client/petstore/php/OpenAPIClient-php/test/Model/MapTestTest.php
+++ b/samples/client/petstore/php/OpenAPIClient-php/test/Model/MapTestTest.php
@@ -18,7 +18,7 @@
  * OpenAPI spec version: 1.0.0
  * 
  * Generated by: https://openapi-generator.tech
- * OpenAPI Generator version: 3.0.2-SNAPSHOT
+ * OpenAPI Generator version: 3.0.3-SNAPSHOT
  */
 
 /**
diff --git a/samples/client/petstore/php/OpenAPIClient-php/test/Model/MixedPropertiesAndAdditionalPropertiesClassTest.php b/samples/client/petstore/php/OpenAPIClient-php/test/Model/MixedPropertiesAndAdditionalPropertiesClassTest.php
index 18c5ebbcdccb..35d7a9f5205c 100644
--- a/samples/client/petstore/php/OpenAPIClient-php/test/Model/MixedPropertiesAndAdditionalPropertiesClassTest.php
+++ b/samples/client/petstore/php/OpenAPIClient-php/test/Model/MixedPropertiesAndAdditionalPropertiesClassTest.php
@@ -18,7 +18,7 @@
  * OpenAPI spec version: 1.0.0
  * 
  * Generated by: https://openapi-generator.tech
- * OpenAPI Generator version: 3.0.2-SNAPSHOT
+ * OpenAPI Generator version: 3.0.3-SNAPSHOT
  */
 
 /**
diff --git a/samples/client/petstore/php/OpenAPIClient-php/test/Model/Model200ResponseTest.php b/samples/client/petstore/php/OpenAPIClient-php/test/Model/Model200ResponseTest.php
index 557069b814cf..532d82516998 100644
--- a/samples/client/petstore/php/OpenAPIClient-php/test/Model/Model200ResponseTest.php
+++ b/samples/client/petstore/php/OpenAPIClient-php/test/Model/Model200ResponseTest.php
@@ -18,7 +18,7 @@
  * OpenAPI spec version: 1.0.0
  * 
  * Generated by: https://openapi-generator.tech
- * OpenAPI Generator version: 3.0.2-SNAPSHOT
+ * OpenAPI Generator version: 3.0.3-SNAPSHOT
  */
 
 /**
diff --git a/samples/client/petstore/php/OpenAPIClient-php/test/Model/ModelListTest.php b/samples/client/petstore/php/OpenAPIClient-php/test/Model/ModelListTest.php
index 53f1c67e169f..66650ee5bf57 100644
--- a/samples/client/petstore/php/OpenAPIClient-php/test/Model/ModelListTest.php
+++ b/samples/client/petstore/php/OpenAPIClient-php/test/Model/ModelListTest.php
@@ -18,7 +18,7 @@
  * OpenAPI spec version: 1.0.0
  * 
  * Generated by: https://openapi-generator.tech
- * OpenAPI Generator version: 3.0.2-SNAPSHOT
+ * OpenAPI Generator version: 3.0.3-SNAPSHOT
  */
 
 /**
diff --git a/samples/client/petstore/php/OpenAPIClient-php/test/Model/ModelReturnTest.php b/samples/client/petstore/php/OpenAPIClient-php/test/Model/ModelReturnTest.php
index 325e694ffcb1..226a12786fe0 100644
--- a/samples/client/petstore/php/OpenAPIClient-php/test/Model/ModelReturnTest.php
+++ b/samples/client/petstore/php/OpenAPIClient-php/test/Model/ModelReturnTest.php
@@ -18,7 +18,7 @@
  * OpenAPI spec version: 1.0.0
  * 
  * Generated by: https://openapi-generator.tech
- * OpenAPI Generator version: 3.0.2-SNAPSHOT
+ * OpenAPI Generator version: 3.0.3-SNAPSHOT
  */
 
 /**
diff --git a/samples/client/petstore/php/OpenAPIClient-php/test/Model/NameTest.php b/samples/client/petstore/php/OpenAPIClient-php/test/Model/NameTest.php
index 0b79c41ddd2c..978ee08944b9 100644
--- a/samples/client/petstore/php/OpenAPIClient-php/test/Model/NameTest.php
+++ b/samples/client/petstore/php/OpenAPIClient-php/test/Model/NameTest.php
@@ -18,7 +18,7 @@
  * OpenAPI spec version: 1.0.0
  * 
  * Generated by: https://openapi-generator.tech
- * OpenAPI Generator version: 3.0.2-SNAPSHOT
+ * OpenAPI Generator version: 3.0.3-SNAPSHOT
  */
 
 /**
diff --git a/samples/client/petstore/php/OpenAPIClient-php/test/Model/NumberOnlyTest.php b/samples/client/petstore/php/OpenAPIClient-php/test/Model/NumberOnlyTest.php
index f6b0d481a728..479ed393069c 100644
--- a/samples/client/petstore/php/OpenAPIClient-php/test/Model/NumberOnlyTest.php
+++ b/samples/client/petstore/php/OpenAPIClient-php/test/Model/NumberOnlyTest.php
@@ -18,7 +18,7 @@
  * OpenAPI spec version: 1.0.0
  * 
  * Generated by: https://openapi-generator.tech
- * OpenAPI Generator version: 3.0.2-SNAPSHOT
+ * OpenAPI Generator version: 3.0.3-SNAPSHOT
  */
 
 /**
diff --git a/samples/client/petstore/php/OpenAPIClient-php/test/Model/OrderTest.php b/samples/client/petstore/php/OpenAPIClient-php/test/Model/OrderTest.php
index 137347b2b2a8..953fe0a76540 100644
--- a/samples/client/petstore/php/OpenAPIClient-php/test/Model/OrderTest.php
+++ b/samples/client/petstore/php/OpenAPIClient-php/test/Model/OrderTest.php
@@ -18,7 +18,7 @@
  * OpenAPI spec version: 1.0.0
  * 
  * Generated by: https://openapi-generator.tech
- * OpenAPI Generator version: 3.0.2-SNAPSHOT
+ * OpenAPI Generator version: 3.0.3-SNAPSHOT
  */
 
 /**
diff --git a/samples/client/petstore/php/OpenAPIClient-php/test/Model/OuterCompositeTest.php b/samples/client/petstore/php/OpenAPIClient-php/test/Model/OuterCompositeTest.php
index 9601db42a064..736bcebb1c72 100644
--- a/samples/client/petstore/php/OpenAPIClient-php/test/Model/OuterCompositeTest.php
+++ b/samples/client/petstore/php/OpenAPIClient-php/test/Model/OuterCompositeTest.php
@@ -18,7 +18,7 @@
  * OpenAPI spec version: 1.0.0
  * 
  * Generated by: https://openapi-generator.tech
- * OpenAPI Generator version: 3.0.2-SNAPSHOT
+ * OpenAPI Generator version: 3.0.3-SNAPSHOT
  */
 
 /**
diff --git a/samples/client/petstore/php/OpenAPIClient-php/test/Model/OuterEnumTest.php b/samples/client/petstore/php/OpenAPIClient-php/test/Model/OuterEnumTest.php
index a32b9bccaa88..fd20e51d581e 100644
--- a/samples/client/petstore/php/OpenAPIClient-php/test/Model/OuterEnumTest.php
+++ b/samples/client/petstore/php/OpenAPIClient-php/test/Model/OuterEnumTest.php
@@ -18,7 +18,7 @@
  * OpenAPI spec version: 1.0.0
  * 
  * Generated by: https://openapi-generator.tech
- * OpenAPI Generator version: 3.0.2-SNAPSHOT
+ * OpenAPI Generator version: 3.0.3-SNAPSHOT
  */
 
 /**
diff --git a/samples/client/petstore/php/OpenAPIClient-php/test/Model/PetTest.php b/samples/client/petstore/php/OpenAPIClient-php/test/Model/PetTest.php
index a67a7dbfd60f..e6b5d5e97420 100644
--- a/samples/client/petstore/php/OpenAPIClient-php/test/Model/PetTest.php
+++ b/samples/client/petstore/php/OpenAPIClient-php/test/Model/PetTest.php
@@ -18,7 +18,7 @@
  * OpenAPI spec version: 1.0.0
  * 
  * Generated by: https://openapi-generator.tech
- * OpenAPI Generator version: 3.0.2-SNAPSHOT
+ * OpenAPI Generator version: 3.0.3-SNAPSHOT
  */
 
 /**
diff --git a/samples/client/petstore/php/OpenAPIClient-php/test/Model/ReadOnlyFirstTest.php b/samples/client/petstore/php/OpenAPIClient-php/test/Model/ReadOnlyFirstTest.php
index ff2852af02bd..226fb97b0608 100644
--- a/samples/client/petstore/php/OpenAPIClient-php/test/Model/ReadOnlyFirstTest.php
+++ b/samples/client/petstore/php/OpenAPIClient-php/test/Model/ReadOnlyFirstTest.php
@@ -18,7 +18,7 @@
  * OpenAPI spec version: 1.0.0
  * 
  * Generated by: https://openapi-generator.tech
- * OpenAPI Generator version: 3.0.2-SNAPSHOT
+ * OpenAPI Generator version: 3.0.3-SNAPSHOT
  */
 
 /**
diff --git a/samples/client/petstore/php/OpenAPIClient-php/test/Model/SpecialModelNameTest.php b/samples/client/petstore/php/OpenAPIClient-php/test/Model/SpecialModelNameTest.php
index 93745c7a00ab..17baa78ef02d 100644
--- a/samples/client/petstore/php/OpenAPIClient-php/test/Model/SpecialModelNameTest.php
+++ b/samples/client/petstore/php/OpenAPIClient-php/test/Model/SpecialModelNameTest.php
@@ -18,7 +18,7 @@
  * OpenAPI spec version: 1.0.0
  * 
  * Generated by: https://openapi-generator.tech
- * OpenAPI Generator version: 3.0.2-SNAPSHOT
+ * OpenAPI Generator version: 3.0.3-SNAPSHOT
  */
 
 /**
diff --git a/samples/client/petstore/php/OpenAPIClient-php/test/Model/TagTest.php b/samples/client/petstore/php/OpenAPIClient-php/test/Model/TagTest.php
index b811e675777c..68734c49de25 100644
--- a/samples/client/petstore/php/OpenAPIClient-php/test/Model/TagTest.php
+++ b/samples/client/petstore/php/OpenAPIClient-php/test/Model/TagTest.php
@@ -18,7 +18,7 @@
  * OpenAPI spec version: 1.0.0
  * 
  * Generated by: https://openapi-generator.tech
- * OpenAPI Generator version: 3.0.2-SNAPSHOT
+ * OpenAPI Generator version: 3.0.3-SNAPSHOT
  */
 
 /**
diff --git a/samples/client/petstore/php/OpenAPIClient-php/test/Model/UserTest.php b/samples/client/petstore/php/OpenAPIClient-php/test/Model/UserTest.php
index be5e689b8252..3e4a4822df6d 100644
--- a/samples/client/petstore/php/OpenAPIClient-php/test/Model/UserTest.php
+++ b/samples/client/petstore/php/OpenAPIClient-php/test/Model/UserTest.php
@@ -18,7 +18,7 @@
  * OpenAPI spec version: 1.0.0
  * 
  * Generated by: https://openapi-generator.tech
- * OpenAPI Generator version: 3.0.2-SNAPSHOT
+ * OpenAPI Generator version: 3.0.3-SNAPSHOT
  */
 
 /**
diff --git a/samples/client/petstore/ruby/.openapi-generator/VERSION b/samples/client/petstore/ruby/.openapi-generator/VERSION
index 1c00c5181548..82602aa4190d 100644
--- a/samples/client/petstore/ruby/.openapi-generator/VERSION
+++ b/samples/client/petstore/ruby/.openapi-generator/VERSION
@@ -1 +1 @@
-3.0.2-SNAPSHOT
\ No newline at end of file
+3.0.3-SNAPSHOT
\ No newline at end of file
diff --git a/samples/client/petstore/ruby/lib/petstore.rb b/samples/client/petstore/ruby/lib/petstore.rb
index 09bcfeb519bb..2a86f13e4d95 100644
--- a/samples/client/petstore/ruby/lib/petstore.rb
+++ b/samples/client/petstore/ruby/lib/petstore.rb
@@ -6,7 +6,7 @@
 OpenAPI spec version: 1.0.0
 
 Generated by: https://openapi-generator.tech
-OpenAPI Generator version: 3.0.2-SNAPSHOT
+OpenAPI Generator version: 3.0.3-SNAPSHOT
 
 =end
 
diff --git a/samples/client/petstore/ruby/lib/petstore/api/another_fake_api.rb b/samples/client/petstore/ruby/lib/petstore/api/another_fake_api.rb
index 737258fc6ae5..187b736a24d8 100644
--- a/samples/client/petstore/ruby/lib/petstore/api/another_fake_api.rb
+++ b/samples/client/petstore/ruby/lib/petstore/api/another_fake_api.rb
@@ -6,7 +6,7 @@
 OpenAPI spec version: 1.0.0
 
 Generated by: https://openapi-generator.tech
-OpenAPI Generator version: 3.0.2-SNAPSHOT
+OpenAPI Generator version: 3.0.3-SNAPSHOT
 
 =end
 
diff --git a/samples/client/petstore/ruby/lib/petstore/api/fake_api.rb b/samples/client/petstore/ruby/lib/petstore/api/fake_api.rb
index 37fce044295b..0946ee27ceae 100644
--- a/samples/client/petstore/ruby/lib/petstore/api/fake_api.rb
+++ b/samples/client/petstore/ruby/lib/petstore/api/fake_api.rb
@@ -6,7 +6,7 @@
 OpenAPI spec version: 1.0.0
 
 Generated by: https://openapi-generator.tech
-OpenAPI Generator version: 3.0.2-SNAPSHOT
+OpenAPI Generator version: 3.0.3-SNAPSHOT
 
 =end
 
diff --git a/samples/client/petstore/ruby/lib/petstore/api/fake_classname_tags123_api.rb b/samples/client/petstore/ruby/lib/petstore/api/fake_classname_tags123_api.rb
index 5168dc4bc3c6..d0864b4b7ab4 100644
--- a/samples/client/petstore/ruby/lib/petstore/api/fake_classname_tags123_api.rb
+++ b/samples/client/petstore/ruby/lib/petstore/api/fake_classname_tags123_api.rb
@@ -6,7 +6,7 @@
 OpenAPI spec version: 1.0.0
 
 Generated by: https://openapi-generator.tech
-OpenAPI Generator version: 3.0.2-SNAPSHOT
+OpenAPI Generator version: 3.0.3-SNAPSHOT
 
 =end
 
diff --git a/samples/client/petstore/ruby/lib/petstore/api/pet_api.rb b/samples/client/petstore/ruby/lib/petstore/api/pet_api.rb
index ccd79c8fc381..1f9a68f2a706 100644
--- a/samples/client/petstore/ruby/lib/petstore/api/pet_api.rb
+++ b/samples/client/petstore/ruby/lib/petstore/api/pet_api.rb
@@ -6,7 +6,7 @@
 OpenAPI spec version: 1.0.0
 
 Generated by: https://openapi-generator.tech
-OpenAPI Generator version: 3.0.2-SNAPSHOT
+OpenAPI Generator version: 3.0.3-SNAPSHOT
 
 =end
 
diff --git a/samples/client/petstore/ruby/lib/petstore/api/store_api.rb b/samples/client/petstore/ruby/lib/petstore/api/store_api.rb
index 7793872ef523..49da82985674 100644
--- a/samples/client/petstore/ruby/lib/petstore/api/store_api.rb
+++ b/samples/client/petstore/ruby/lib/petstore/api/store_api.rb
@@ -6,7 +6,7 @@
 OpenAPI spec version: 1.0.0
 
 Generated by: https://openapi-generator.tech
-OpenAPI Generator version: 3.0.2-SNAPSHOT
+OpenAPI Generator version: 3.0.3-SNAPSHOT
 
 =end
 
diff --git a/samples/client/petstore/ruby/lib/petstore/api/user_api.rb b/samples/client/petstore/ruby/lib/petstore/api/user_api.rb
index 311cbf8bb2a2..5ecbdfd50e22 100644
--- a/samples/client/petstore/ruby/lib/petstore/api/user_api.rb
+++ b/samples/client/petstore/ruby/lib/petstore/api/user_api.rb
@@ -6,7 +6,7 @@
 OpenAPI spec version: 1.0.0
 
 Generated by: https://openapi-generator.tech
-OpenAPI Generator version: 3.0.2-SNAPSHOT
+OpenAPI Generator version: 3.0.3-SNAPSHOT
 
 =end
 
diff --git a/samples/client/petstore/ruby/lib/petstore/api_client.rb b/samples/client/petstore/ruby/lib/petstore/api_client.rb
index fc2a4a672a19..4e771e8a2b37 100644
--- a/samples/client/petstore/ruby/lib/petstore/api_client.rb
+++ b/samples/client/petstore/ruby/lib/petstore/api_client.rb
@@ -6,7 +6,7 @@
 OpenAPI spec version: 1.0.0
 
 Generated by: https://openapi-generator.tech
-OpenAPI Generator version: 3.0.2-SNAPSHOT
+OpenAPI Generator version: 3.0.3-SNAPSHOT
 
 =end
 
diff --git a/samples/client/petstore/ruby/lib/petstore/api_error.rb b/samples/client/petstore/ruby/lib/petstore/api_error.rb
index 3ca90109abd6..7fcd202fce20 100644
--- a/samples/client/petstore/ruby/lib/petstore/api_error.rb
+++ b/samples/client/petstore/ruby/lib/petstore/api_error.rb
@@ -6,7 +6,7 @@
 OpenAPI spec version: 1.0.0
 
 Generated by: https://openapi-generator.tech
-OpenAPI Generator version: 3.0.2-SNAPSHOT
+OpenAPI Generator version: 3.0.3-SNAPSHOT
 
 =end
 
diff --git a/samples/client/petstore/ruby/lib/petstore/configuration.rb b/samples/client/petstore/ruby/lib/petstore/configuration.rb
index d9e84be0f36b..9ff223719679 100644
--- a/samples/client/petstore/ruby/lib/petstore/configuration.rb
+++ b/samples/client/petstore/ruby/lib/petstore/configuration.rb
@@ -6,7 +6,7 @@
 OpenAPI spec version: 1.0.0
 
 Generated by: https://openapi-generator.tech
-OpenAPI Generator version: 3.0.2-SNAPSHOT
+OpenAPI Generator version: 3.0.3-SNAPSHOT
 
 =end
 
diff --git a/samples/client/petstore/ruby/lib/petstore/models/additional_properties_class.rb b/samples/client/petstore/ruby/lib/petstore/models/additional_properties_class.rb
index 0ec9d24fd6c0..3ddfd105b77b 100644
--- a/samples/client/petstore/ruby/lib/petstore/models/additional_properties_class.rb
+++ b/samples/client/petstore/ruby/lib/petstore/models/additional_properties_class.rb
@@ -6,7 +6,7 @@
 OpenAPI spec version: 1.0.0
 
 Generated by: https://openapi-generator.tech
-OpenAPI Generator version: 3.0.2-SNAPSHOT
+OpenAPI Generator version: 3.0.3-SNAPSHOT
 
 =end
 
diff --git a/samples/client/petstore/ruby/lib/petstore/models/animal.rb b/samples/client/petstore/ruby/lib/petstore/models/animal.rb
index 8553b0190f50..a0c80f7c9ae1 100644
--- a/samples/client/petstore/ruby/lib/petstore/models/animal.rb
+++ b/samples/client/petstore/ruby/lib/petstore/models/animal.rb
@@ -6,7 +6,7 @@
 OpenAPI spec version: 1.0.0
 
 Generated by: https://openapi-generator.tech
-OpenAPI Generator version: 3.0.2-SNAPSHOT
+OpenAPI Generator version: 3.0.3-SNAPSHOT
 
 =end
 
diff --git a/samples/client/petstore/ruby/lib/petstore/models/animal_farm.rb b/samples/client/petstore/ruby/lib/petstore/models/animal_farm.rb
index 1dec9b528621..bb6161841373 100644
--- a/samples/client/petstore/ruby/lib/petstore/models/animal_farm.rb
+++ b/samples/client/petstore/ruby/lib/petstore/models/animal_farm.rb
@@ -6,7 +6,7 @@
 OpenAPI spec version: 1.0.0
 
 Generated by: https://openapi-generator.tech
-OpenAPI Generator version: 3.0.2-SNAPSHOT
+OpenAPI Generator version: 3.0.3-SNAPSHOT
 
 =end
 
diff --git a/samples/client/petstore/ruby/lib/petstore/models/api_response.rb b/samples/client/petstore/ruby/lib/petstore/models/api_response.rb
index 7438394bd82b..e9362b5f0cb7 100644
--- a/samples/client/petstore/ruby/lib/petstore/models/api_response.rb
+++ b/samples/client/petstore/ruby/lib/petstore/models/api_response.rb
@@ -6,7 +6,7 @@
 OpenAPI spec version: 1.0.0
 
 Generated by: https://openapi-generator.tech
-OpenAPI Generator version: 3.0.2-SNAPSHOT
+OpenAPI Generator version: 3.0.3-SNAPSHOT
 
 =end
 
diff --git a/samples/client/petstore/ruby/lib/petstore/models/array_of_array_of_number_only.rb b/samples/client/petstore/ruby/lib/petstore/models/array_of_array_of_number_only.rb
index 371ff41cc82f..203e2ac4e4fd 100644
--- a/samples/client/petstore/ruby/lib/petstore/models/array_of_array_of_number_only.rb
+++ b/samples/client/petstore/ruby/lib/petstore/models/array_of_array_of_number_only.rb
@@ -6,7 +6,7 @@
 OpenAPI spec version: 1.0.0
 
 Generated by: https://openapi-generator.tech
-OpenAPI Generator version: 3.0.2-SNAPSHOT
+OpenAPI Generator version: 3.0.3-SNAPSHOT
 
 =end
 
diff --git a/samples/client/petstore/ruby/lib/petstore/models/array_of_number_only.rb b/samples/client/petstore/ruby/lib/petstore/models/array_of_number_only.rb
index 3774811858d0..a2a00019fdf8 100644
--- a/samples/client/petstore/ruby/lib/petstore/models/array_of_number_only.rb
+++ b/samples/client/petstore/ruby/lib/petstore/models/array_of_number_only.rb
@@ -6,7 +6,7 @@
 OpenAPI spec version: 1.0.0
 
 Generated by: https://openapi-generator.tech
-OpenAPI Generator version: 3.0.2-SNAPSHOT
+OpenAPI Generator version: 3.0.3-SNAPSHOT
 
 =end
 
diff --git a/samples/client/petstore/ruby/lib/petstore/models/array_test.rb b/samples/client/petstore/ruby/lib/petstore/models/array_test.rb
index 13a4ce83d11b..e5a3dca4283a 100644
--- a/samples/client/petstore/ruby/lib/petstore/models/array_test.rb
+++ b/samples/client/petstore/ruby/lib/petstore/models/array_test.rb
@@ -6,7 +6,7 @@
 OpenAPI spec version: 1.0.0
 
 Generated by: https://openapi-generator.tech
-OpenAPI Generator version: 3.0.2-SNAPSHOT
+OpenAPI Generator version: 3.0.3-SNAPSHOT
 
 =end
 
diff --git a/samples/client/petstore/ruby/lib/petstore/models/capitalization.rb b/samples/client/petstore/ruby/lib/petstore/models/capitalization.rb
index c5ec7cf7ebf2..b38681f0a486 100644
--- a/samples/client/petstore/ruby/lib/petstore/models/capitalization.rb
+++ b/samples/client/petstore/ruby/lib/petstore/models/capitalization.rb
@@ -6,7 +6,7 @@
 OpenAPI spec version: 1.0.0
 
 Generated by: https://openapi-generator.tech
-OpenAPI Generator version: 3.0.2-SNAPSHOT
+OpenAPI Generator version: 3.0.3-SNAPSHOT
 
 =end
 
diff --git a/samples/client/petstore/ruby/lib/petstore/models/cat.rb b/samples/client/petstore/ruby/lib/petstore/models/cat.rb
index 5b8f3f458a15..c98a8a1bf0b3 100644
--- a/samples/client/petstore/ruby/lib/petstore/models/cat.rb
+++ b/samples/client/petstore/ruby/lib/petstore/models/cat.rb
@@ -6,7 +6,7 @@
 OpenAPI spec version: 1.0.0
 
 Generated by: https://openapi-generator.tech
-OpenAPI Generator version: 3.0.2-SNAPSHOT
+OpenAPI Generator version: 3.0.3-SNAPSHOT
 
 =end
 
diff --git a/samples/client/petstore/ruby/lib/petstore/models/category.rb b/samples/client/petstore/ruby/lib/petstore/models/category.rb
index 3f2b1c4d8726..5ef3ab0c05f6 100644
--- a/samples/client/petstore/ruby/lib/petstore/models/category.rb
+++ b/samples/client/petstore/ruby/lib/petstore/models/category.rb
@@ -6,7 +6,7 @@
 OpenAPI spec version: 1.0.0
 
 Generated by: https://openapi-generator.tech
-OpenAPI Generator version: 3.0.2-SNAPSHOT
+OpenAPI Generator version: 3.0.3-SNAPSHOT
 
 =end
 
diff --git a/samples/client/petstore/ruby/lib/petstore/models/class_model.rb b/samples/client/petstore/ruby/lib/petstore/models/class_model.rb
index e6621d49add2..3bfd6c21c512 100644
--- a/samples/client/petstore/ruby/lib/petstore/models/class_model.rb
+++ b/samples/client/petstore/ruby/lib/petstore/models/class_model.rb
@@ -6,7 +6,7 @@
 OpenAPI spec version: 1.0.0
 
 Generated by: https://openapi-generator.tech
-OpenAPI Generator version: 3.0.2-SNAPSHOT
+OpenAPI Generator version: 3.0.3-SNAPSHOT
 
 =end
 
diff --git a/samples/client/petstore/ruby/lib/petstore/models/client.rb b/samples/client/petstore/ruby/lib/petstore/models/client.rb
index e82c43b26f52..b2132d0b3420 100644
--- a/samples/client/petstore/ruby/lib/petstore/models/client.rb
+++ b/samples/client/petstore/ruby/lib/petstore/models/client.rb
@@ -6,7 +6,7 @@
 OpenAPI spec version: 1.0.0
 
 Generated by: https://openapi-generator.tech
-OpenAPI Generator version: 3.0.2-SNAPSHOT
+OpenAPI Generator version: 3.0.3-SNAPSHOT
 
 =end
 
diff --git a/samples/client/petstore/ruby/lib/petstore/models/dog.rb b/samples/client/petstore/ruby/lib/petstore/models/dog.rb
index 6c044252bafd..8a22808a7922 100644
--- a/samples/client/petstore/ruby/lib/petstore/models/dog.rb
+++ b/samples/client/petstore/ruby/lib/petstore/models/dog.rb
@@ -6,7 +6,7 @@
 OpenAPI spec version: 1.0.0
 
 Generated by: https://openapi-generator.tech
-OpenAPI Generator version: 3.0.2-SNAPSHOT
+OpenAPI Generator version: 3.0.3-SNAPSHOT
 
 =end
 
diff --git a/samples/client/petstore/ruby/lib/petstore/models/enum_arrays.rb b/samples/client/petstore/ruby/lib/petstore/models/enum_arrays.rb
index 288745d388d2..bd96b8c94156 100644
--- a/samples/client/petstore/ruby/lib/petstore/models/enum_arrays.rb
+++ b/samples/client/petstore/ruby/lib/petstore/models/enum_arrays.rb
@@ -6,7 +6,7 @@
 OpenAPI spec version: 1.0.0
 
 Generated by: https://openapi-generator.tech
-OpenAPI Generator version: 3.0.2-SNAPSHOT
+OpenAPI Generator version: 3.0.3-SNAPSHOT
 
 =end
 
diff --git a/samples/client/petstore/ruby/lib/petstore/models/enum_class.rb b/samples/client/petstore/ruby/lib/petstore/models/enum_class.rb
index a880bf01535f..52c11823e708 100644
--- a/samples/client/petstore/ruby/lib/petstore/models/enum_class.rb
+++ b/samples/client/petstore/ruby/lib/petstore/models/enum_class.rb
@@ -6,7 +6,7 @@
 OpenAPI spec version: 1.0.0
 
 Generated by: https://openapi-generator.tech
-OpenAPI Generator version: 3.0.2-SNAPSHOT
+OpenAPI Generator version: 3.0.3-SNAPSHOT
 
 =end
 
diff --git a/samples/client/petstore/ruby/lib/petstore/models/enum_test.rb b/samples/client/petstore/ruby/lib/petstore/models/enum_test.rb
index ad82902877d7..2917701281fa 100644
--- a/samples/client/petstore/ruby/lib/petstore/models/enum_test.rb
+++ b/samples/client/petstore/ruby/lib/petstore/models/enum_test.rb
@@ -6,7 +6,7 @@
 OpenAPI spec version: 1.0.0
 
 Generated by: https://openapi-generator.tech
-OpenAPI Generator version: 3.0.2-SNAPSHOT
+OpenAPI Generator version: 3.0.3-SNAPSHOT
 
 =end
 
diff --git a/samples/client/petstore/ruby/lib/petstore/models/format_test.rb b/samples/client/petstore/ruby/lib/petstore/models/format_test.rb
index 49105b1267c2..fb6ec93fbb14 100644
--- a/samples/client/petstore/ruby/lib/petstore/models/format_test.rb
+++ b/samples/client/petstore/ruby/lib/petstore/models/format_test.rb
@@ -6,7 +6,7 @@
 OpenAPI spec version: 1.0.0
 
 Generated by: https://openapi-generator.tech
-OpenAPI Generator version: 3.0.2-SNAPSHOT
+OpenAPI Generator version: 3.0.3-SNAPSHOT
 
 =end
 
diff --git a/samples/client/petstore/ruby/lib/petstore/models/has_only_read_only.rb b/samples/client/petstore/ruby/lib/petstore/models/has_only_read_only.rb
index 48c7769a973e..fefc61d11fcc 100644
--- a/samples/client/petstore/ruby/lib/petstore/models/has_only_read_only.rb
+++ b/samples/client/petstore/ruby/lib/petstore/models/has_only_read_only.rb
@@ -6,7 +6,7 @@
 OpenAPI spec version: 1.0.0
 
 Generated by: https://openapi-generator.tech
-OpenAPI Generator version: 3.0.2-SNAPSHOT
+OpenAPI Generator version: 3.0.3-SNAPSHOT
 
 =end
 
diff --git a/samples/client/petstore/ruby/lib/petstore/models/list.rb b/samples/client/petstore/ruby/lib/petstore/models/list.rb
index 130415992198..565efc08f796 100644
--- a/samples/client/petstore/ruby/lib/petstore/models/list.rb
+++ b/samples/client/petstore/ruby/lib/petstore/models/list.rb
@@ -6,7 +6,7 @@
 OpenAPI spec version: 1.0.0
 
 Generated by: https://openapi-generator.tech
-OpenAPI Generator version: 3.0.2-SNAPSHOT
+OpenAPI Generator version: 3.0.3-SNAPSHOT
 
 =end
 
diff --git a/samples/client/petstore/ruby/lib/petstore/models/map_test.rb b/samples/client/petstore/ruby/lib/petstore/models/map_test.rb
index 7ebba067fb6b..080986f43c90 100644
--- a/samples/client/petstore/ruby/lib/petstore/models/map_test.rb
+++ b/samples/client/petstore/ruby/lib/petstore/models/map_test.rb
@@ -6,7 +6,7 @@
 OpenAPI spec version: 1.0.0
 
 Generated by: https://openapi-generator.tech
-OpenAPI Generator version: 3.0.2-SNAPSHOT
+OpenAPI Generator version: 3.0.3-SNAPSHOT
 
 =end
 
diff --git a/samples/client/petstore/ruby/lib/petstore/models/mixed_properties_and_additional_properties_class.rb b/samples/client/petstore/ruby/lib/petstore/models/mixed_properties_and_additional_properties_class.rb
index 82e0d2716ded..c2708ce6e663 100644
--- a/samples/client/petstore/ruby/lib/petstore/models/mixed_properties_and_additional_properties_class.rb
+++ b/samples/client/petstore/ruby/lib/petstore/models/mixed_properties_and_additional_properties_class.rb
@@ -6,7 +6,7 @@
 OpenAPI spec version: 1.0.0
 
 Generated by: https://openapi-generator.tech
-OpenAPI Generator version: 3.0.2-SNAPSHOT
+OpenAPI Generator version: 3.0.3-SNAPSHOT
 
 =end
 
diff --git a/samples/client/petstore/ruby/lib/petstore/models/model200_response.rb b/samples/client/petstore/ruby/lib/petstore/models/model200_response.rb
index 64cdebc3fa4a..9461275477ea 100644
--- a/samples/client/petstore/ruby/lib/petstore/models/model200_response.rb
+++ b/samples/client/petstore/ruby/lib/petstore/models/model200_response.rb
@@ -6,7 +6,7 @@
 OpenAPI spec version: 1.0.0
 
 Generated by: https://openapi-generator.tech
-OpenAPI Generator version: 3.0.2-SNAPSHOT
+OpenAPI Generator version: 3.0.3-SNAPSHOT
 
 =end
 
diff --git a/samples/client/petstore/ruby/lib/petstore/models/model_return.rb b/samples/client/petstore/ruby/lib/petstore/models/model_return.rb
index 32d74e8ab03a..33db52e9b8f1 100644
--- a/samples/client/petstore/ruby/lib/petstore/models/model_return.rb
+++ b/samples/client/petstore/ruby/lib/petstore/models/model_return.rb
@@ -6,7 +6,7 @@
 OpenAPI spec version: 1.0.0
 
 Generated by: https://openapi-generator.tech
-OpenAPI Generator version: 3.0.2-SNAPSHOT
+OpenAPI Generator version: 3.0.3-SNAPSHOT
 
 =end
 
diff --git a/samples/client/petstore/ruby/lib/petstore/models/name.rb b/samples/client/petstore/ruby/lib/petstore/models/name.rb
index cdb73e06916f..6ec761db2cda 100644
--- a/samples/client/petstore/ruby/lib/petstore/models/name.rb
+++ b/samples/client/petstore/ruby/lib/petstore/models/name.rb
@@ -6,7 +6,7 @@
 OpenAPI spec version: 1.0.0
 
 Generated by: https://openapi-generator.tech
-OpenAPI Generator version: 3.0.2-SNAPSHOT
+OpenAPI Generator version: 3.0.3-SNAPSHOT
 
 =end
 
diff --git a/samples/client/petstore/ruby/lib/petstore/models/number_only.rb b/samples/client/petstore/ruby/lib/petstore/models/number_only.rb
index 21391b0fa090..9cb549a9bf61 100644
--- a/samples/client/petstore/ruby/lib/petstore/models/number_only.rb
+++ b/samples/client/petstore/ruby/lib/petstore/models/number_only.rb
@@ -6,7 +6,7 @@
 OpenAPI spec version: 1.0.0
 
 Generated by: https://openapi-generator.tech
-OpenAPI Generator version: 3.0.2-SNAPSHOT
+OpenAPI Generator version: 3.0.3-SNAPSHOT
 
 =end
 
diff --git a/samples/client/petstore/ruby/lib/petstore/models/order.rb b/samples/client/petstore/ruby/lib/petstore/models/order.rb
index c0132b5a5a65..15c5bf89e911 100644
--- a/samples/client/petstore/ruby/lib/petstore/models/order.rb
+++ b/samples/client/petstore/ruby/lib/petstore/models/order.rb
@@ -6,7 +6,7 @@
 OpenAPI spec version: 1.0.0
 
 Generated by: https://openapi-generator.tech
-OpenAPI Generator version: 3.0.2-SNAPSHOT
+OpenAPI Generator version: 3.0.3-SNAPSHOT
 
 =end
 
diff --git a/samples/client/petstore/ruby/lib/petstore/models/outer_composite.rb b/samples/client/petstore/ruby/lib/petstore/models/outer_composite.rb
index f400b9183f68..023acf4fbde2 100644
--- a/samples/client/petstore/ruby/lib/petstore/models/outer_composite.rb
+++ b/samples/client/petstore/ruby/lib/petstore/models/outer_composite.rb
@@ -6,7 +6,7 @@
 OpenAPI spec version: 1.0.0
 
 Generated by: https://openapi-generator.tech
-OpenAPI Generator version: 3.0.2-SNAPSHOT
+OpenAPI Generator version: 3.0.3-SNAPSHOT
 
 =end
 
diff --git a/samples/client/petstore/ruby/lib/petstore/models/outer_enum.rb b/samples/client/petstore/ruby/lib/petstore/models/outer_enum.rb
index 6b276f028095..d85af07c5241 100644
--- a/samples/client/petstore/ruby/lib/petstore/models/outer_enum.rb
+++ b/samples/client/petstore/ruby/lib/petstore/models/outer_enum.rb
@@ -6,7 +6,7 @@
 OpenAPI spec version: 1.0.0
 
 Generated by: https://openapi-generator.tech
-OpenAPI Generator version: 3.0.2-SNAPSHOT
+OpenAPI Generator version: 3.0.3-SNAPSHOT
 
 =end
 
diff --git a/samples/client/petstore/ruby/lib/petstore/models/pet.rb b/samples/client/petstore/ruby/lib/petstore/models/pet.rb
index 4797cef31192..1bc456006fb7 100644
--- a/samples/client/petstore/ruby/lib/petstore/models/pet.rb
+++ b/samples/client/petstore/ruby/lib/petstore/models/pet.rb
@@ -6,7 +6,7 @@
 OpenAPI spec version: 1.0.0
 
 Generated by: https://openapi-generator.tech
-OpenAPI Generator version: 3.0.2-SNAPSHOT
+OpenAPI Generator version: 3.0.3-SNAPSHOT
 
 =end
 
diff --git a/samples/client/petstore/ruby/lib/petstore/models/read_only_first.rb b/samples/client/petstore/ruby/lib/petstore/models/read_only_first.rb
index 2155aa9505fd..b5da2959fa7c 100644
--- a/samples/client/petstore/ruby/lib/petstore/models/read_only_first.rb
+++ b/samples/client/petstore/ruby/lib/petstore/models/read_only_first.rb
@@ -6,7 +6,7 @@
 OpenAPI spec version: 1.0.0
 
 Generated by: https://openapi-generator.tech
-OpenAPI Generator version: 3.0.2-SNAPSHOT
+OpenAPI Generator version: 3.0.3-SNAPSHOT
 
 =end
 
diff --git a/samples/client/petstore/ruby/lib/petstore/models/special_model_name.rb b/samples/client/petstore/ruby/lib/petstore/models/special_model_name.rb
index dbaf27758a7d..f5992f5f356a 100644
--- a/samples/client/petstore/ruby/lib/petstore/models/special_model_name.rb
+++ b/samples/client/petstore/ruby/lib/petstore/models/special_model_name.rb
@@ -6,7 +6,7 @@
 OpenAPI spec version: 1.0.0
 
 Generated by: https://openapi-generator.tech
-OpenAPI Generator version: 3.0.2-SNAPSHOT
+OpenAPI Generator version: 3.0.3-SNAPSHOT
 
 =end
 
diff --git a/samples/client/petstore/ruby/lib/petstore/models/tag.rb b/samples/client/petstore/ruby/lib/petstore/models/tag.rb
index 6d063274f8b8..d8a5a00cf602 100644
--- a/samples/client/petstore/ruby/lib/petstore/models/tag.rb
+++ b/samples/client/petstore/ruby/lib/petstore/models/tag.rb
@@ -6,7 +6,7 @@
 OpenAPI spec version: 1.0.0
 
 Generated by: https://openapi-generator.tech
-OpenAPI Generator version: 3.0.2-SNAPSHOT
+OpenAPI Generator version: 3.0.3-SNAPSHOT
 
 =end
 
diff --git a/samples/client/petstore/ruby/lib/petstore/models/user.rb b/samples/client/petstore/ruby/lib/petstore/models/user.rb
index d346de909749..3d890741aa44 100644
--- a/samples/client/petstore/ruby/lib/petstore/models/user.rb
+++ b/samples/client/petstore/ruby/lib/petstore/models/user.rb
@@ -6,7 +6,7 @@
 OpenAPI spec version: 1.0.0
 
 Generated by: https://openapi-generator.tech
-OpenAPI Generator version: 3.0.2-SNAPSHOT
+OpenAPI Generator version: 3.0.3-SNAPSHOT
 
 =end
 
diff --git a/samples/client/petstore/ruby/lib/petstore/version.rb b/samples/client/petstore/ruby/lib/petstore/version.rb
index df39e0540406..1afecd51de62 100644
--- a/samples/client/petstore/ruby/lib/petstore/version.rb
+++ b/samples/client/petstore/ruby/lib/petstore/version.rb
@@ -6,7 +6,7 @@
 OpenAPI spec version: 1.0.0
 
 Generated by: https://openapi-generator.tech
-OpenAPI Generator version: 3.0.2-SNAPSHOT
+OpenAPI Generator version: 3.0.3-SNAPSHOT
 
 =end
 
diff --git a/samples/client/petstore/ruby/petstore.gemspec b/samples/client/petstore/ruby/petstore.gemspec
index 0efd72d011ac..4c466dd232a8 100644
--- a/samples/client/petstore/ruby/petstore.gemspec
+++ b/samples/client/petstore/ruby/petstore.gemspec
@@ -8,7 +8,7 @@
 OpenAPI spec version: 1.0.0
 
 Generated by: https://openapi-generator.tech
-OpenAPI Generator version: 3.0.2-SNAPSHOT
+OpenAPI Generator version: 3.0.3-SNAPSHOT
 
 =end
 
diff --git a/samples/client/petstore/spring-cloud/.openapi-generator/VERSION b/samples/client/petstore/spring-cloud/.openapi-generator/VERSION
index 1c00c5181548..82602aa4190d 100644
--- a/samples/client/petstore/spring-cloud/.openapi-generator/VERSION
+++ b/samples/client/petstore/spring-cloud/.openapi-generator/VERSION
@@ -1 +1 @@
-3.0.2-SNAPSHOT
\ No newline at end of file
+3.0.3-SNAPSHOT
\ No newline at end of file
diff --git a/samples/client/petstore/spring-cloud/src/main/java/org/openapitools/api/PetApi.java b/samples/client/petstore/spring-cloud/src/main/java/org/openapitools/api/PetApi.java
index 774c99d205b7..896fb02af725 100644
--- a/samples/client/petstore/spring-cloud/src/main/java/org/openapitools/api/PetApi.java
+++ b/samples/client/petstore/spring-cloud/src/main/java/org/openapitools/api/PetApi.java
@@ -1,5 +1,5 @@
 /**
- * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (3.0.2-SNAPSHOT).
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (3.0.3-SNAPSHOT).
  * https://openapi-generator.tech
  * Do not edit the class manually.
  */
diff --git a/samples/client/petstore/spring-cloud/src/main/java/org/openapitools/api/StoreApi.java b/samples/client/petstore/spring-cloud/src/main/java/org/openapitools/api/StoreApi.java
index 4abca1e5f2ab..f175d2a42ade 100644
--- a/samples/client/petstore/spring-cloud/src/main/java/org/openapitools/api/StoreApi.java
+++ b/samples/client/petstore/spring-cloud/src/main/java/org/openapitools/api/StoreApi.java
@@ -1,5 +1,5 @@
 /**
- * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (3.0.2-SNAPSHOT).
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (3.0.3-SNAPSHOT).
  * https://openapi-generator.tech
  * Do not edit the class manually.
  */
diff --git a/samples/client/petstore/spring-cloud/src/main/java/org/openapitools/api/UserApi.java b/samples/client/petstore/spring-cloud/src/main/java/org/openapitools/api/UserApi.java
index 25f0e1011ef4..1a18bd119980 100644
--- a/samples/client/petstore/spring-cloud/src/main/java/org/openapitools/api/UserApi.java
+++ b/samples/client/petstore/spring-cloud/src/main/java/org/openapitools/api/UserApi.java
@@ -1,5 +1,5 @@
 /**
- * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (3.0.2-SNAPSHOT).
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (3.0.3-SNAPSHOT).
  * https://openapi-generator.tech
  * Do not edit the class manually.
  */
diff --git a/samples/client/petstore/spring-stubs/.openapi-generator/VERSION b/samples/client/petstore/spring-stubs/.openapi-generator/VERSION
index 1c00c5181548..82602aa4190d 100644
--- a/samples/client/petstore/spring-stubs/.openapi-generator/VERSION
+++ b/samples/client/petstore/spring-stubs/.openapi-generator/VERSION
@@ -1 +1 @@
-3.0.2-SNAPSHOT
\ No newline at end of file
+3.0.3-SNAPSHOT
\ No newline at end of file
diff --git a/samples/client/petstore/spring-stubs/src/main/java/org/openapitools/api/PetApi.java b/samples/client/petstore/spring-stubs/src/main/java/org/openapitools/api/PetApi.java
index 8afb080d9473..5d11918504b1 100644
--- a/samples/client/petstore/spring-stubs/src/main/java/org/openapitools/api/PetApi.java
+++ b/samples/client/petstore/spring-stubs/src/main/java/org/openapitools/api/PetApi.java
@@ -1,5 +1,5 @@
 /**
- * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (3.0.2-SNAPSHOT).
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (3.0.3-SNAPSHOT).
  * https://openapi-generator.tech
  * Do not edit the class manually.
  */
diff --git a/samples/client/petstore/spring-stubs/src/main/java/org/openapitools/api/StoreApi.java b/samples/client/petstore/spring-stubs/src/main/java/org/openapitools/api/StoreApi.java
index 144108e0489e..9f4feecd01a5 100644
--- a/samples/client/petstore/spring-stubs/src/main/java/org/openapitools/api/StoreApi.java
+++ b/samples/client/petstore/spring-stubs/src/main/java/org/openapitools/api/StoreApi.java
@@ -1,5 +1,5 @@
 /**
- * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (3.0.2-SNAPSHOT).
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (3.0.3-SNAPSHOT).
  * https://openapi-generator.tech
  * Do not edit the class manually.
  */
diff --git a/samples/client/petstore/spring-stubs/src/main/java/org/openapitools/api/UserApi.java b/samples/client/petstore/spring-stubs/src/main/java/org/openapitools/api/UserApi.java
index eb02b7458e06..ff7b38263c83 100644
--- a/samples/client/petstore/spring-stubs/src/main/java/org/openapitools/api/UserApi.java
+++ b/samples/client/petstore/spring-stubs/src/main/java/org/openapitools/api/UserApi.java
@@ -1,5 +1,5 @@
 /**
- * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (3.0.2-SNAPSHOT).
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (3.0.3-SNAPSHOT).
  * https://openapi-generator.tech
  * Do not edit the class manually.
  */
diff --git a/samples/client/petstore/typescript-angular-v2/default/.openapi-generator/VERSION b/samples/client/petstore/typescript-angular-v2/default/.openapi-generator/VERSION
index ad121e8340e0..1c00c5181548 100644
--- a/samples/client/petstore/typescript-angular-v2/default/.openapi-generator/VERSION
+++ b/samples/client/petstore/typescript-angular-v2/default/.openapi-generator/VERSION
@@ -1 +1 @@
-3.0.1-SNAPSHOT
\ No newline at end of file
+3.0.2-SNAPSHOT
\ No newline at end of file
diff --git a/samples/client/petstore/typescript-angular-v2/default/api/pet.service.ts b/samples/client/petstore/typescript-angular-v2/default/api/pet.service.ts
index f6c95294851a..71926b6af584 100644
--- a/samples/client/petstore/typescript-angular-v2/default/api/pet.service.ts
+++ b/samples/client/petstore/typescript-angular-v2/default/api/pet.service.ts
@@ -35,12 +35,13 @@ export class PetService {
     public configuration = new Configuration();
 
     constructor(protected http: Http, @Optional()@Inject(BASE_PATH) basePath: string, @Optional() configuration: Configuration) {
-        if (basePath) {
-            this.basePath = basePath;
-        }
+
         if (configuration) {
             this.configuration = configuration;
-            this.basePath = basePath || configuration.basePath || this.basePath;
+            this.configuration.basePath = configuration.basePath || basePath || this.basePath;
+
+        } else {
+            this.configuration.basePath = basePath || this.basePath;
         }
     }
 
@@ -242,7 +243,7 @@ export class PetService {
             requestOptions = (Object).assign(requestOptions, extraHttpRequestParams);
         }
 
-        return this.http.request(`${this.basePath}/pet`, requestOptions);
+        return this.http.request(`${this.configuration.basePath}/pet`, requestOptions);
     }
 
     /**
@@ -292,7 +293,7 @@ export class PetService {
             requestOptions = (Object).assign(requestOptions, extraHttpRequestParams);
         }
 
-        return this.http.request(`${this.basePath}/pet/${encodeURIComponent(String(petId))}`, requestOptions);
+        return this.http.request(`${this.configuration.basePath}/pet/${encodeURIComponent(String(petId))}`, requestOptions);
     }
 
     /**
@@ -346,7 +347,7 @@ export class PetService {
             requestOptions = (Object).assign(requestOptions, extraHttpRequestParams);
         }
 
-        return this.http.request(`${this.basePath}/pet/findByStatus`, requestOptions);
+        return this.http.request(`${this.configuration.basePath}/pet/findByStatus`, requestOptions);
     }
 
     /**
@@ -400,7 +401,7 @@ export class PetService {
             requestOptions = (Object).assign(requestOptions, extraHttpRequestParams);
         }
 
-        return this.http.request(`${this.basePath}/pet/findByTags`, requestOptions);
+        return this.http.request(`${this.configuration.basePath}/pet/findByTags`, requestOptions);
     }
 
     /**
@@ -445,7 +446,7 @@ export class PetService {
             requestOptions = (Object).assign(requestOptions, extraHttpRequestParams);
         }
 
-        return this.http.request(`${this.basePath}/pet/${encodeURIComponent(String(petId))}`, requestOptions);
+        return this.http.request(`${this.configuration.basePath}/pet/${encodeURIComponent(String(petId))}`, requestOptions);
     }
 
     /**
@@ -498,7 +499,7 @@ export class PetService {
             requestOptions = (Object).assign(requestOptions, extraHttpRequestParams);
         }
 
-        return this.http.request(`${this.basePath}/pet`, requestOptions);
+        return this.http.request(`${this.configuration.basePath}/pet`, requestOptions);
     }
 
     /**
@@ -570,7 +571,7 @@ export class PetService {
             requestOptions = (Object).assign(requestOptions, extraHttpRequestParams);
         }
 
-        return this.http.request(`${this.basePath}/pet/${encodeURIComponent(String(petId))}`, requestOptions);
+        return this.http.request(`${this.configuration.basePath}/pet/${encodeURIComponent(String(petId))}`, requestOptions);
     }
 
     /**
@@ -646,7 +647,7 @@ export class PetService {
             requestOptions = (Object).assign(requestOptions, extraHttpRequestParams);
         }
 
-        return this.http.request(`${this.basePath}/pet/${encodeURIComponent(String(petId))}/uploadImage`, requestOptions);
+        return this.http.request(`${this.configuration.basePath}/pet/${encodeURIComponent(String(petId))}/uploadImage`, requestOptions);
     }
 
 }
diff --git a/samples/client/petstore/typescript-angular-v2/default/api/store.service.ts b/samples/client/petstore/typescript-angular-v2/default/api/store.service.ts
index 847b5deb8b04..01ad2dd7e36d 100644
--- a/samples/client/petstore/typescript-angular-v2/default/api/store.service.ts
+++ b/samples/client/petstore/typescript-angular-v2/default/api/store.service.ts
@@ -34,12 +34,13 @@ export class StoreService {
     public configuration = new Configuration();
 
     constructor(protected http: Http, @Optional()@Inject(BASE_PATH) basePath: string, @Optional() configuration: Configuration) {
-        if (basePath) {
-            this.basePath = basePath;
-        }
+
         if (configuration) {
             this.configuration = configuration;
-            this.basePath = basePath || configuration.basePath || this.basePath;
+            this.configuration.basePath = configuration.basePath || basePath || this.basePath;
+
+        } else {
+            this.configuration.basePath = basePath || this.basePath;
         }
     }
 
@@ -156,7 +157,7 @@ export class StoreService {
             requestOptions = (Object).assign(requestOptions, extraHttpRequestParams);
         }
 
-        return this.http.request(`${this.basePath}/store/order/${encodeURIComponent(String(orderId))}`, requestOptions);
+        return this.http.request(`${this.configuration.basePath}/store/order/${encodeURIComponent(String(orderId))}`, requestOptions);
     }
 
     /**
@@ -196,7 +197,7 @@ export class StoreService {
             requestOptions = (Object).assign(requestOptions, extraHttpRequestParams);
         }
 
-        return this.http.request(`${this.basePath}/store/inventory`, requestOptions);
+        return this.http.request(`${this.configuration.basePath}/store/inventory`, requestOptions);
     }
 
     /**
@@ -236,7 +237,7 @@ export class StoreService {
             requestOptions = (Object).assign(requestOptions, extraHttpRequestParams);
         }
 
-        return this.http.request(`${this.basePath}/store/order/${encodeURIComponent(String(orderId))}`, requestOptions);
+        return this.http.request(`${this.configuration.basePath}/store/order/${encodeURIComponent(String(orderId))}`, requestOptions);
     }
 
     /**
@@ -281,7 +282,7 @@ export class StoreService {
             requestOptions = (Object).assign(requestOptions, extraHttpRequestParams);
         }
 
-        return this.http.request(`${this.basePath}/store/order`, requestOptions);
+        return this.http.request(`${this.configuration.basePath}/store/order`, requestOptions);
     }
 
 }
diff --git a/samples/client/petstore/typescript-angular-v2/default/api/user.service.ts b/samples/client/petstore/typescript-angular-v2/default/api/user.service.ts
index 7753232bf2fd..8ad36014c752 100644
--- a/samples/client/petstore/typescript-angular-v2/default/api/user.service.ts
+++ b/samples/client/petstore/typescript-angular-v2/default/api/user.service.ts
@@ -34,12 +34,13 @@ export class UserService {
     public configuration = new Configuration();
 
     constructor(protected http: Http, @Optional()@Inject(BASE_PATH) basePath: string, @Optional() configuration: Configuration) {
-        if (basePath) {
-            this.basePath = basePath;
-        }
+
         if (configuration) {
             this.configuration = configuration;
-            this.basePath = basePath || configuration.basePath || this.basePath;
+            this.configuration.basePath = configuration.basePath || basePath || this.basePath;
+
+        } else {
+            this.configuration.basePath = basePath || this.basePath;
         }
     }
 
@@ -227,7 +228,7 @@ export class UserService {
             requestOptions = (Object).assign(requestOptions, extraHttpRequestParams);
         }
 
-        return this.http.request(`${this.basePath}/user`, requestOptions);
+        return this.http.request(`${this.configuration.basePath}/user`, requestOptions);
     }
 
     /**
@@ -270,7 +271,7 @@ export class UserService {
             requestOptions = (Object).assign(requestOptions, extraHttpRequestParams);
         }
 
-        return this.http.request(`${this.basePath}/user/createWithArray`, requestOptions);
+        return this.http.request(`${this.configuration.basePath}/user/createWithArray`, requestOptions);
     }
 
     /**
@@ -313,7 +314,7 @@ export class UserService {
             requestOptions = (Object).assign(requestOptions, extraHttpRequestParams);
         }
 
-        return this.http.request(`${this.basePath}/user/createWithList`, requestOptions);
+        return this.http.request(`${this.configuration.basePath}/user/createWithList`, requestOptions);
     }
 
     /**
@@ -351,7 +352,7 @@ export class UserService {
             requestOptions = (Object).assign(requestOptions, extraHttpRequestParams);
         }
 
-        return this.http.request(`${this.basePath}/user/${encodeURIComponent(String(username))}`, requestOptions);
+        return this.http.request(`${this.configuration.basePath}/user/${encodeURIComponent(String(username))}`, requestOptions);
     }
 
     /**
@@ -391,7 +392,7 @@ export class UserService {
             requestOptions = (Object).assign(requestOptions, extraHttpRequestParams);
         }
 
-        return this.http.request(`${this.basePath}/user/${encodeURIComponent(String(username))}`, requestOptions);
+        return this.http.request(`${this.configuration.basePath}/user/${encodeURIComponent(String(username))}`, requestOptions);
     }
 
     /**
@@ -444,7 +445,7 @@ export class UserService {
             requestOptions = (Object).assign(requestOptions, extraHttpRequestParams);
         }
 
-        return this.http.request(`${this.basePath}/user/login`, requestOptions);
+        return this.http.request(`${this.configuration.basePath}/user/login`, requestOptions);
     }
 
     /**
@@ -478,7 +479,7 @@ export class UserService {
             requestOptions = (Object).assign(requestOptions, extraHttpRequestParams);
         }
 
-        return this.http.request(`${this.basePath}/user/logout`, requestOptions);
+        return this.http.request(`${this.configuration.basePath}/user/logout`, requestOptions);
     }
 
     /**
@@ -525,7 +526,7 @@ export class UserService {
             requestOptions = (Object).assign(requestOptions, extraHttpRequestParams);
         }
 
-        return this.http.request(`${this.basePath}/user/${encodeURIComponent(String(username))}`, requestOptions);
+        return this.http.request(`${this.configuration.basePath}/user/${encodeURIComponent(String(username))}`, requestOptions);
     }
 
 }
diff --git a/samples/client/petstore/typescript-angular-v2/npm/.openapi-generator/VERSION b/samples/client/petstore/typescript-angular-v2/npm/.openapi-generator/VERSION
index ad121e8340e0..1c00c5181548 100644
--- a/samples/client/petstore/typescript-angular-v2/npm/.openapi-generator/VERSION
+++ b/samples/client/petstore/typescript-angular-v2/npm/.openapi-generator/VERSION
@@ -1 +1 @@
-3.0.1-SNAPSHOT
\ No newline at end of file
+3.0.2-SNAPSHOT
\ No newline at end of file
diff --git a/samples/client/petstore/typescript-angular-v2/npm/api/pet.service.ts b/samples/client/petstore/typescript-angular-v2/npm/api/pet.service.ts
index f6c95294851a..71926b6af584 100644
--- a/samples/client/petstore/typescript-angular-v2/npm/api/pet.service.ts
+++ b/samples/client/petstore/typescript-angular-v2/npm/api/pet.service.ts
@@ -35,12 +35,13 @@ export class PetService {
     public configuration = new Configuration();
 
     constructor(protected http: Http, @Optional()@Inject(BASE_PATH) basePath: string, @Optional() configuration: Configuration) {
-        if (basePath) {
-            this.basePath = basePath;
-        }
+
         if (configuration) {
             this.configuration = configuration;
-            this.basePath = basePath || configuration.basePath || this.basePath;
+            this.configuration.basePath = configuration.basePath || basePath || this.basePath;
+
+        } else {
+            this.configuration.basePath = basePath || this.basePath;
         }
     }
 
@@ -242,7 +243,7 @@ export class PetService {
             requestOptions = (Object).assign(requestOptions, extraHttpRequestParams);
         }
 
-        return this.http.request(`${this.basePath}/pet`, requestOptions);
+        return this.http.request(`${this.configuration.basePath}/pet`, requestOptions);
     }
 
     /**
@@ -292,7 +293,7 @@ export class PetService {
             requestOptions = (Object).assign(requestOptions, extraHttpRequestParams);
         }
 
-        return this.http.request(`${this.basePath}/pet/${encodeURIComponent(String(petId))}`, requestOptions);
+        return this.http.request(`${this.configuration.basePath}/pet/${encodeURIComponent(String(petId))}`, requestOptions);
     }
 
     /**
@@ -346,7 +347,7 @@ export class PetService {
             requestOptions = (Object).assign(requestOptions, extraHttpRequestParams);
         }
 
-        return this.http.request(`${this.basePath}/pet/findByStatus`, requestOptions);
+        return this.http.request(`${this.configuration.basePath}/pet/findByStatus`, requestOptions);
     }
 
     /**
@@ -400,7 +401,7 @@ export class PetService {
             requestOptions = (Object).assign(requestOptions, extraHttpRequestParams);
         }
 
-        return this.http.request(`${this.basePath}/pet/findByTags`, requestOptions);
+        return this.http.request(`${this.configuration.basePath}/pet/findByTags`, requestOptions);
     }
 
     /**
@@ -445,7 +446,7 @@ export class PetService {
             requestOptions = (Object).assign(requestOptions, extraHttpRequestParams);
         }
 
-        return this.http.request(`${this.basePath}/pet/${encodeURIComponent(String(petId))}`, requestOptions);
+        return this.http.request(`${this.configuration.basePath}/pet/${encodeURIComponent(String(petId))}`, requestOptions);
     }
 
     /**
@@ -498,7 +499,7 @@ export class PetService {
             requestOptions = (Object).assign(requestOptions, extraHttpRequestParams);
         }
 
-        return this.http.request(`${this.basePath}/pet`, requestOptions);
+        return this.http.request(`${this.configuration.basePath}/pet`, requestOptions);
     }
 
     /**
@@ -570,7 +571,7 @@ export class PetService {
             requestOptions = (Object).assign(requestOptions, extraHttpRequestParams);
         }
 
-        return this.http.request(`${this.basePath}/pet/${encodeURIComponent(String(petId))}`, requestOptions);
+        return this.http.request(`${this.configuration.basePath}/pet/${encodeURIComponent(String(petId))}`, requestOptions);
     }
 
     /**
@@ -646,7 +647,7 @@ export class PetService {
             requestOptions = (Object).assign(requestOptions, extraHttpRequestParams);
         }
 
-        return this.http.request(`${this.basePath}/pet/${encodeURIComponent(String(petId))}/uploadImage`, requestOptions);
+        return this.http.request(`${this.configuration.basePath}/pet/${encodeURIComponent(String(petId))}/uploadImage`, requestOptions);
     }
 
 }
diff --git a/samples/client/petstore/typescript-angular-v2/npm/api/store.service.ts b/samples/client/petstore/typescript-angular-v2/npm/api/store.service.ts
index 847b5deb8b04..01ad2dd7e36d 100644
--- a/samples/client/petstore/typescript-angular-v2/npm/api/store.service.ts
+++ b/samples/client/petstore/typescript-angular-v2/npm/api/store.service.ts
@@ -34,12 +34,13 @@ export class StoreService {
     public configuration = new Configuration();
 
     constructor(protected http: Http, @Optional()@Inject(BASE_PATH) basePath: string, @Optional() configuration: Configuration) {
-        if (basePath) {
-            this.basePath = basePath;
-        }
+
         if (configuration) {
             this.configuration = configuration;
-            this.basePath = basePath || configuration.basePath || this.basePath;
+            this.configuration.basePath = configuration.basePath || basePath || this.basePath;
+
+        } else {
+            this.configuration.basePath = basePath || this.basePath;
         }
     }
 
@@ -156,7 +157,7 @@ export class StoreService {
             requestOptions = (Object).assign(requestOptions, extraHttpRequestParams);
         }
 
-        return this.http.request(`${this.basePath}/store/order/${encodeURIComponent(String(orderId))}`, requestOptions);
+        return this.http.request(`${this.configuration.basePath}/store/order/${encodeURIComponent(String(orderId))}`, requestOptions);
     }
 
     /**
@@ -196,7 +197,7 @@ export class StoreService {
             requestOptions = (Object).assign(requestOptions, extraHttpRequestParams);
         }
 
-        return this.http.request(`${this.basePath}/store/inventory`, requestOptions);
+        return this.http.request(`${this.configuration.basePath}/store/inventory`, requestOptions);
     }
 
     /**
@@ -236,7 +237,7 @@ export class StoreService {
             requestOptions = (Object).assign(requestOptions, extraHttpRequestParams);
         }
 
-        return this.http.request(`${this.basePath}/store/order/${encodeURIComponent(String(orderId))}`, requestOptions);
+        return this.http.request(`${this.configuration.basePath}/store/order/${encodeURIComponent(String(orderId))}`, requestOptions);
     }
 
     /**
@@ -281,7 +282,7 @@ export class StoreService {
             requestOptions = (Object).assign(requestOptions, extraHttpRequestParams);
         }
 
-        return this.http.request(`${this.basePath}/store/order`, requestOptions);
+        return this.http.request(`${this.configuration.basePath}/store/order`, requestOptions);
     }
 
 }
diff --git a/samples/client/petstore/typescript-angular-v2/npm/api/user.service.ts b/samples/client/petstore/typescript-angular-v2/npm/api/user.service.ts
index 7753232bf2fd..8ad36014c752 100644
--- a/samples/client/petstore/typescript-angular-v2/npm/api/user.service.ts
+++ b/samples/client/petstore/typescript-angular-v2/npm/api/user.service.ts
@@ -34,12 +34,13 @@ export class UserService {
     public configuration = new Configuration();
 
     constructor(protected http: Http, @Optional()@Inject(BASE_PATH) basePath: string, @Optional() configuration: Configuration) {
-        if (basePath) {
-            this.basePath = basePath;
-        }
+
         if (configuration) {
             this.configuration = configuration;
-            this.basePath = basePath || configuration.basePath || this.basePath;
+            this.configuration.basePath = configuration.basePath || basePath || this.basePath;
+
+        } else {
+            this.configuration.basePath = basePath || this.basePath;
         }
     }
 
@@ -227,7 +228,7 @@ export class UserService {
             requestOptions = (Object).assign(requestOptions, extraHttpRequestParams);
         }
 
-        return this.http.request(`${this.basePath}/user`, requestOptions);
+        return this.http.request(`${this.configuration.basePath}/user`, requestOptions);
     }
 
     /**
@@ -270,7 +271,7 @@ export class UserService {
             requestOptions = (Object).assign(requestOptions, extraHttpRequestParams);
         }
 
-        return this.http.request(`${this.basePath}/user/createWithArray`, requestOptions);
+        return this.http.request(`${this.configuration.basePath}/user/createWithArray`, requestOptions);
     }
 
     /**
@@ -313,7 +314,7 @@ export class UserService {
             requestOptions = (Object).assign(requestOptions, extraHttpRequestParams);
         }
 
-        return this.http.request(`${this.basePath}/user/createWithList`, requestOptions);
+        return this.http.request(`${this.configuration.basePath}/user/createWithList`, requestOptions);
     }
 
     /**
@@ -351,7 +352,7 @@ export class UserService {
             requestOptions = (Object).assign(requestOptions, extraHttpRequestParams);
         }
 
-        return this.http.request(`${this.basePath}/user/${encodeURIComponent(String(username))}`, requestOptions);
+        return this.http.request(`${this.configuration.basePath}/user/${encodeURIComponent(String(username))}`, requestOptions);
     }
 
     /**
@@ -391,7 +392,7 @@ export class UserService {
             requestOptions = (Object).assign(requestOptions, extraHttpRequestParams);
         }
 
-        return this.http.request(`${this.basePath}/user/${encodeURIComponent(String(username))}`, requestOptions);
+        return this.http.request(`${this.configuration.basePath}/user/${encodeURIComponent(String(username))}`, requestOptions);
     }
 
     /**
@@ -444,7 +445,7 @@ export class UserService {
             requestOptions = (Object).assign(requestOptions, extraHttpRequestParams);
         }
 
-        return this.http.request(`${this.basePath}/user/login`, requestOptions);
+        return this.http.request(`${this.configuration.basePath}/user/login`, requestOptions);
     }
 
     /**
@@ -478,7 +479,7 @@ export class UserService {
             requestOptions = (Object).assign(requestOptions, extraHttpRequestParams);
         }
 
-        return this.http.request(`${this.basePath}/user/logout`, requestOptions);
+        return this.http.request(`${this.configuration.basePath}/user/logout`, requestOptions);
     }
 
     /**
@@ -525,7 +526,7 @@ export class UserService {
             requestOptions = (Object).assign(requestOptions, extraHttpRequestParams);
         }
 
-        return this.http.request(`${this.basePath}/user/${encodeURIComponent(String(username))}`, requestOptions);
+        return this.http.request(`${this.configuration.basePath}/user/${encodeURIComponent(String(username))}`, requestOptions);
     }
 
 }
diff --git a/samples/client/petstore/typescript-angular-v2/npm/pom.xml b/samples/client/petstore/typescript-angular-v2/npm/pom.xml
index ef93997a825a..bbdce5d5da9b 100644
--- a/samples/client/petstore/typescript-angular-v2/npm/pom.xml
+++ b/samples/client/petstore/typescript-angular-v2/npm/pom.xml
@@ -1,10 +1,10 @@
 
     4.0.0
     com.wordnik
-    TSAngular2PestoreTest
+    TSAngular2PestoreClientTests
     pom
     1.0-SNAPSHOT
-    TS Angular2 Pettore Test
+    TS Angular 2 Petstore Client Tests
     
         
             
diff --git a/samples/client/petstore/typescript-angular-v2/with-interfaces/.openapi-generator/VERSION b/samples/client/petstore/typescript-angular-v2/with-interfaces/.openapi-generator/VERSION
index ad121e8340e0..1c00c5181548 100644
--- a/samples/client/petstore/typescript-angular-v2/with-interfaces/.openapi-generator/VERSION
+++ b/samples/client/petstore/typescript-angular-v2/with-interfaces/.openapi-generator/VERSION
@@ -1 +1 @@
-3.0.1-SNAPSHOT
\ No newline at end of file
+3.0.2-SNAPSHOT
\ No newline at end of file
diff --git a/samples/client/petstore/typescript-angular-v2/with-interfaces/api/pet.service.ts b/samples/client/petstore/typescript-angular-v2/with-interfaces/api/pet.service.ts
index b0ad15622684..3a8f92b97137 100644
--- a/samples/client/petstore/typescript-angular-v2/with-interfaces/api/pet.service.ts
+++ b/samples/client/petstore/typescript-angular-v2/with-interfaces/api/pet.service.ts
@@ -36,12 +36,13 @@ export class PetService implements PetServiceInterface {
     public configuration = new Configuration();
 
     constructor(protected http: Http, @Optional()@Inject(BASE_PATH) basePath: string, @Optional() configuration: Configuration) {
-        if (basePath) {
-            this.basePath = basePath;
-        }
+
         if (configuration) {
             this.configuration = configuration;
-            this.basePath = basePath || configuration.basePath || this.basePath;
+            this.configuration.basePath = configuration.basePath || basePath || this.basePath;
+
+        } else {
+            this.configuration.basePath = basePath || this.basePath;
         }
     }
 
@@ -243,7 +244,7 @@ export class PetService implements PetServiceInterface {
             requestOptions = (Object).assign(requestOptions, extraHttpRequestParams);
         }
 
-        return this.http.request(`${this.basePath}/pet`, requestOptions);
+        return this.http.request(`${this.configuration.basePath}/pet`, requestOptions);
     }
 
     /**
@@ -293,7 +294,7 @@ export class PetService implements PetServiceInterface {
             requestOptions = (Object).assign(requestOptions, extraHttpRequestParams);
         }
 
-        return this.http.request(`${this.basePath}/pet/${encodeURIComponent(String(petId))}`, requestOptions);
+        return this.http.request(`${this.configuration.basePath}/pet/${encodeURIComponent(String(petId))}`, requestOptions);
     }
 
     /**
@@ -347,7 +348,7 @@ export class PetService implements PetServiceInterface {
             requestOptions = (Object).assign(requestOptions, extraHttpRequestParams);
         }
 
-        return this.http.request(`${this.basePath}/pet/findByStatus`, requestOptions);
+        return this.http.request(`${this.configuration.basePath}/pet/findByStatus`, requestOptions);
     }
 
     /**
@@ -401,7 +402,7 @@ export class PetService implements PetServiceInterface {
             requestOptions = (Object).assign(requestOptions, extraHttpRequestParams);
         }
 
-        return this.http.request(`${this.basePath}/pet/findByTags`, requestOptions);
+        return this.http.request(`${this.configuration.basePath}/pet/findByTags`, requestOptions);
     }
 
     /**
@@ -446,7 +447,7 @@ export class PetService implements PetServiceInterface {
             requestOptions = (Object).assign(requestOptions, extraHttpRequestParams);
         }
 
-        return this.http.request(`${this.basePath}/pet/${encodeURIComponent(String(petId))}`, requestOptions);
+        return this.http.request(`${this.configuration.basePath}/pet/${encodeURIComponent(String(petId))}`, requestOptions);
     }
 
     /**
@@ -499,7 +500,7 @@ export class PetService implements PetServiceInterface {
             requestOptions = (Object).assign(requestOptions, extraHttpRequestParams);
         }
 
-        return this.http.request(`${this.basePath}/pet`, requestOptions);
+        return this.http.request(`${this.configuration.basePath}/pet`, requestOptions);
     }
 
     /**
@@ -571,7 +572,7 @@ export class PetService implements PetServiceInterface {
             requestOptions = (Object).assign(requestOptions, extraHttpRequestParams);
         }
 
-        return this.http.request(`${this.basePath}/pet/${encodeURIComponent(String(petId))}`, requestOptions);
+        return this.http.request(`${this.configuration.basePath}/pet/${encodeURIComponent(String(petId))}`, requestOptions);
     }
 
     /**
@@ -647,7 +648,7 @@ export class PetService implements PetServiceInterface {
             requestOptions = (Object).assign(requestOptions, extraHttpRequestParams);
         }
 
-        return this.http.request(`${this.basePath}/pet/${encodeURIComponent(String(petId))}/uploadImage`, requestOptions);
+        return this.http.request(`${this.configuration.basePath}/pet/${encodeURIComponent(String(petId))}/uploadImage`, requestOptions);
     }
 
 }
diff --git a/samples/client/petstore/typescript-angular-v2/with-interfaces/api/store.service.ts b/samples/client/petstore/typescript-angular-v2/with-interfaces/api/store.service.ts
index 5b2bfbd3c55b..8a09472ef08d 100644
--- a/samples/client/petstore/typescript-angular-v2/with-interfaces/api/store.service.ts
+++ b/samples/client/petstore/typescript-angular-v2/with-interfaces/api/store.service.ts
@@ -35,12 +35,13 @@ export class StoreService implements StoreServiceInterface {
     public configuration = new Configuration();
 
     constructor(protected http: Http, @Optional()@Inject(BASE_PATH) basePath: string, @Optional() configuration: Configuration) {
-        if (basePath) {
-            this.basePath = basePath;
-        }
+
         if (configuration) {
             this.configuration = configuration;
-            this.basePath = basePath || configuration.basePath || this.basePath;
+            this.configuration.basePath = configuration.basePath || basePath || this.basePath;
+
+        } else {
+            this.configuration.basePath = basePath || this.basePath;
         }
     }
 
@@ -157,7 +158,7 @@ export class StoreService implements StoreServiceInterface {
             requestOptions = (Object).assign(requestOptions, extraHttpRequestParams);
         }
 
-        return this.http.request(`${this.basePath}/store/order/${encodeURIComponent(String(orderId))}`, requestOptions);
+        return this.http.request(`${this.configuration.basePath}/store/order/${encodeURIComponent(String(orderId))}`, requestOptions);
     }
 
     /**
@@ -197,7 +198,7 @@ export class StoreService implements StoreServiceInterface {
             requestOptions = (Object).assign(requestOptions, extraHttpRequestParams);
         }
 
-        return this.http.request(`${this.basePath}/store/inventory`, requestOptions);
+        return this.http.request(`${this.configuration.basePath}/store/inventory`, requestOptions);
     }
 
     /**
@@ -237,7 +238,7 @@ export class StoreService implements StoreServiceInterface {
             requestOptions = (Object).assign(requestOptions, extraHttpRequestParams);
         }
 
-        return this.http.request(`${this.basePath}/store/order/${encodeURIComponent(String(orderId))}`, requestOptions);
+        return this.http.request(`${this.configuration.basePath}/store/order/${encodeURIComponent(String(orderId))}`, requestOptions);
     }
 
     /**
@@ -282,7 +283,7 @@ export class StoreService implements StoreServiceInterface {
             requestOptions = (Object).assign(requestOptions, extraHttpRequestParams);
         }
 
-        return this.http.request(`${this.basePath}/store/order`, requestOptions);
+        return this.http.request(`${this.configuration.basePath}/store/order`, requestOptions);
     }
 
 }
diff --git a/samples/client/petstore/typescript-angular-v2/with-interfaces/api/user.service.ts b/samples/client/petstore/typescript-angular-v2/with-interfaces/api/user.service.ts
index 22b37f0f4c58..d3b61504f90e 100644
--- a/samples/client/petstore/typescript-angular-v2/with-interfaces/api/user.service.ts
+++ b/samples/client/petstore/typescript-angular-v2/with-interfaces/api/user.service.ts
@@ -35,12 +35,13 @@ export class UserService implements UserServiceInterface {
     public configuration = new Configuration();
 
     constructor(protected http: Http, @Optional()@Inject(BASE_PATH) basePath: string, @Optional() configuration: Configuration) {
-        if (basePath) {
-            this.basePath = basePath;
-        }
+
         if (configuration) {
             this.configuration = configuration;
-            this.basePath = basePath || configuration.basePath || this.basePath;
+            this.configuration.basePath = configuration.basePath || basePath || this.basePath;
+
+        } else {
+            this.configuration.basePath = basePath || this.basePath;
         }
     }
 
@@ -228,7 +229,7 @@ export class UserService implements UserServiceInterface {
             requestOptions = (Object).assign(requestOptions, extraHttpRequestParams);
         }
 
-        return this.http.request(`${this.basePath}/user`, requestOptions);
+        return this.http.request(`${this.configuration.basePath}/user`, requestOptions);
     }
 
     /**
@@ -271,7 +272,7 @@ export class UserService implements UserServiceInterface {
             requestOptions = (Object).assign(requestOptions, extraHttpRequestParams);
         }
 
-        return this.http.request(`${this.basePath}/user/createWithArray`, requestOptions);
+        return this.http.request(`${this.configuration.basePath}/user/createWithArray`, requestOptions);
     }
 
     /**
@@ -314,7 +315,7 @@ export class UserService implements UserServiceInterface {
             requestOptions = (Object).assign(requestOptions, extraHttpRequestParams);
         }
 
-        return this.http.request(`${this.basePath}/user/createWithList`, requestOptions);
+        return this.http.request(`${this.configuration.basePath}/user/createWithList`, requestOptions);
     }
 
     /**
@@ -352,7 +353,7 @@ export class UserService implements UserServiceInterface {
             requestOptions = (Object).assign(requestOptions, extraHttpRequestParams);
         }
 
-        return this.http.request(`${this.basePath}/user/${encodeURIComponent(String(username))}`, requestOptions);
+        return this.http.request(`${this.configuration.basePath}/user/${encodeURIComponent(String(username))}`, requestOptions);
     }
 
     /**
@@ -392,7 +393,7 @@ export class UserService implements UserServiceInterface {
             requestOptions = (Object).assign(requestOptions, extraHttpRequestParams);
         }
 
-        return this.http.request(`${this.basePath}/user/${encodeURIComponent(String(username))}`, requestOptions);
+        return this.http.request(`${this.configuration.basePath}/user/${encodeURIComponent(String(username))}`, requestOptions);
     }
 
     /**
@@ -445,7 +446,7 @@ export class UserService implements UserServiceInterface {
             requestOptions = (Object).assign(requestOptions, extraHttpRequestParams);
         }
 
-        return this.http.request(`${this.basePath}/user/login`, requestOptions);
+        return this.http.request(`${this.configuration.basePath}/user/login`, requestOptions);
     }
 
     /**
@@ -479,7 +480,7 @@ export class UserService implements UserServiceInterface {
             requestOptions = (Object).assign(requestOptions, extraHttpRequestParams);
         }
 
-        return this.http.request(`${this.basePath}/user/logout`, requestOptions);
+        return this.http.request(`${this.configuration.basePath}/user/logout`, requestOptions);
     }
 
     /**
@@ -526,7 +527,7 @@ export class UserService implements UserServiceInterface {
             requestOptions = (Object).assign(requestOptions, extraHttpRequestParams);
         }
 
-        return this.http.request(`${this.basePath}/user/${encodeURIComponent(String(username))}`, requestOptions);
+        return this.http.request(`${this.configuration.basePath}/user/${encodeURIComponent(String(username))}`, requestOptions);
     }
 
 }
diff --git a/samples/client/petstore/typescript-angular-v4.3/npm/.openapi-generator/VERSION b/samples/client/petstore/typescript-angular-v4.3/npm/.openapi-generator/VERSION
index ad121e8340e0..1c00c5181548 100644
--- a/samples/client/petstore/typescript-angular-v4.3/npm/.openapi-generator/VERSION
+++ b/samples/client/petstore/typescript-angular-v4.3/npm/.openapi-generator/VERSION
@@ -1 +1 @@
-3.0.1-SNAPSHOT
\ No newline at end of file
+3.0.2-SNAPSHOT
\ No newline at end of file
diff --git a/samples/client/petstore/typescript-angular-v4.3/npm/api/pet.service.ts b/samples/client/petstore/typescript-angular-v4.3/npm/api/pet.service.ts
index 7074a6a017cd..39132299161b 100644
--- a/samples/client/petstore/typescript-angular-v4.3/npm/api/pet.service.ts
+++ b/samples/client/petstore/typescript-angular-v4.3/npm/api/pet.service.ts
@@ -33,12 +33,13 @@ export class PetService {
     public configuration = new Configuration();
 
     constructor(protected httpClient: HttpClient, @Optional()@Inject(BASE_PATH) basePath: string, @Optional() configuration: Configuration) {
-        if (basePath) {
-            this.basePath = basePath;
-        }
+
         if (configuration) {
             this.configuration = configuration;
-            this.basePath = basePath || configuration.basePath || this.basePath;
+            this.configuration.basePath = configuration.basePath || basePath || this.basePath;
+
+        } else {
+            this.configuration.basePath = basePath || this.basePath;
         }
     }
 
@@ -100,7 +101,7 @@ export class PetService {
             headers = headers.set('Content-Type', httpContentTypeSelected);
         }
 
-        return this.httpClient.post(`${this.basePath}/pet`,
+        return this.httpClient.post(`${this.configuration.basePath}/pet`,
             pet,
             {
                 withCredentials: this.configuration.withCredentials,
@@ -152,7 +153,7 @@ export class PetService {
         const consumes: string[] = [
         ];
 
-        return this.httpClient.delete(`${this.basePath}/pet/${encodeURIComponent(String(petId))}`,
+        return this.httpClient.delete(`${this.configuration.basePath}/pet/${encodeURIComponent(String(petId))}`,
             {
                 withCredentials: this.configuration.withCredentials,
                 headers: headers,
@@ -206,7 +207,7 @@ export class PetService {
         const consumes: string[] = [
         ];
 
-        return this.httpClient.get>(`${this.basePath}/pet/findByStatus`,
+        return this.httpClient.get>(`${this.configuration.basePath}/pet/findByStatus`,
             {
                 params: queryParameters,
                 withCredentials: this.configuration.withCredentials,
@@ -261,7 +262,7 @@ export class PetService {
         const consumes: string[] = [
         ];
 
-        return this.httpClient.get>(`${this.basePath}/pet/findByTags`,
+        return this.httpClient.get>(`${this.configuration.basePath}/pet/findByTags`,
             {
                 params: queryParameters,
                 withCredentials: this.configuration.withCredentials,
@@ -308,7 +309,7 @@ export class PetService {
         const consumes: string[] = [
         ];
 
-        return this.httpClient.get(`${this.basePath}/pet/${encodeURIComponent(String(petId))}`,
+        return this.httpClient.get(`${this.configuration.basePath}/pet/${encodeURIComponent(String(petId))}`,
             {
                 withCredentials: this.configuration.withCredentials,
                 headers: headers,
@@ -361,7 +362,7 @@ export class PetService {
             headers = headers.set('Content-Type', httpContentTypeSelected);
         }
 
-        return this.httpClient.put(`${this.basePath}/pet`,
+        return this.httpClient.put(`${this.configuration.basePath}/pet`,
             pet,
             {
                 withCredentials: this.configuration.withCredentials,
@@ -430,7 +431,7 @@ export class PetService {
             formParams = formParams.append('status', status) || formParams;
         }
 
-        return this.httpClient.post(`${this.basePath}/pet/${encodeURIComponent(String(petId))}`,
+        return this.httpClient.post(`${this.configuration.basePath}/pet/${encodeURIComponent(String(petId))}`,
             convertFormParamsToString ? formParams.toString() : formParams,
             {
                 withCredentials: this.configuration.withCredentials,
@@ -503,7 +504,7 @@ export class PetService {
             formParams = formParams.append('file', file) || formParams;
         }
 
-        return this.httpClient.post(`${this.basePath}/pet/${encodeURIComponent(String(petId))}/uploadImage`,
+        return this.httpClient.post(`${this.configuration.basePath}/pet/${encodeURIComponent(String(petId))}/uploadImage`,
             convertFormParamsToString ? formParams.toString() : formParams,
             {
                 withCredentials: this.configuration.withCredentials,
diff --git a/samples/client/petstore/typescript-angular-v4.3/npm/api/store.service.ts b/samples/client/petstore/typescript-angular-v4.3/npm/api/store.service.ts
index 3c4d5efca8dc..460e1e590422 100644
--- a/samples/client/petstore/typescript-angular-v4.3/npm/api/store.service.ts
+++ b/samples/client/petstore/typescript-angular-v4.3/npm/api/store.service.ts
@@ -32,12 +32,13 @@ export class StoreService {
     public configuration = new Configuration();
 
     constructor(protected httpClient: HttpClient, @Optional()@Inject(BASE_PATH) basePath: string, @Optional() configuration: Configuration) {
-        if (basePath) {
-            this.basePath = basePath;
-        }
+
         if (configuration) {
             this.configuration = configuration;
-            this.basePath = basePath || configuration.basePath || this.basePath;
+            this.configuration.basePath = configuration.basePath || basePath || this.basePath;
+
+        } else {
+            this.configuration.basePath = basePath || this.basePath;
         }
     }
 
@@ -85,7 +86,7 @@ export class StoreService {
         const consumes: string[] = [
         ];
 
-        return this.httpClient.delete(`${this.basePath}/store/order/${encodeURIComponent(String(orderId))}`,
+        return this.httpClient.delete(`${this.configuration.basePath}/store/order/${encodeURIComponent(String(orderId))}`,
             {
                 withCredentials: this.configuration.withCredentials,
                 headers: headers,
@@ -126,7 +127,7 @@ export class StoreService {
         const consumes: string[] = [
         ];
 
-        return this.httpClient.get<{ [key: string]: number; }>(`${this.basePath}/store/inventory`,
+        return this.httpClient.get<{ [key: string]: number; }>(`${this.configuration.basePath}/store/inventory`,
             {
                 withCredentials: this.configuration.withCredentials,
                 headers: headers,
@@ -167,7 +168,7 @@ export class StoreService {
         const consumes: string[] = [
         ];
 
-        return this.httpClient.get(`${this.basePath}/store/order/${encodeURIComponent(String(orderId))}`,
+        return this.httpClient.get(`${this.configuration.basePath}/store/order/${encodeURIComponent(String(orderId))}`,
             {
                 withCredentials: this.configuration.withCredentials,
                 headers: headers,
@@ -212,7 +213,7 @@ export class StoreService {
             headers = headers.set('Content-Type', httpContentTypeSelected);
         }
 
-        return this.httpClient.post(`${this.basePath}/store/order`,
+        return this.httpClient.post(`${this.configuration.basePath}/store/order`,
             order,
             {
                 withCredentials: this.configuration.withCredentials,
diff --git a/samples/client/petstore/typescript-angular-v4.3/npm/api/user.service.ts b/samples/client/petstore/typescript-angular-v4.3/npm/api/user.service.ts
index 2119fddcba57..3c0ff2222266 100644
--- a/samples/client/petstore/typescript-angular-v4.3/npm/api/user.service.ts
+++ b/samples/client/petstore/typescript-angular-v4.3/npm/api/user.service.ts
@@ -32,12 +32,13 @@ export class UserService {
     public configuration = new Configuration();
 
     constructor(protected httpClient: HttpClient, @Optional()@Inject(BASE_PATH) basePath: string, @Optional() configuration: Configuration) {
-        if (basePath) {
-            this.basePath = basePath;
-        }
+
         if (configuration) {
             this.configuration = configuration;
-            this.basePath = basePath || configuration.basePath || this.basePath;
+            this.configuration.basePath = configuration.basePath || basePath || this.basePath;
+
+        } else {
+            this.configuration.basePath = basePath || this.basePath;
         }
     }
 
@@ -89,7 +90,7 @@ export class UserService {
             headers = headers.set('Content-Type', httpContentTypeSelected);
         }
 
-        return this.httpClient.post(`${this.basePath}/user`,
+        return this.httpClient.post(`${this.configuration.basePath}/user`,
             user,
             {
                 withCredentials: this.configuration.withCredentials,
@@ -133,7 +134,7 @@ export class UserService {
             headers = headers.set('Content-Type', httpContentTypeSelected);
         }
 
-        return this.httpClient.post(`${this.basePath}/user/createWithArray`,
+        return this.httpClient.post(`${this.configuration.basePath}/user/createWithArray`,
             user,
             {
                 withCredentials: this.configuration.withCredentials,
@@ -177,7 +178,7 @@ export class UserService {
             headers = headers.set('Content-Type', httpContentTypeSelected);
         }
 
-        return this.httpClient.post(`${this.basePath}/user/createWithList`,
+        return this.httpClient.post(`${this.configuration.basePath}/user/createWithList`,
             user,
             {
                 withCredentials: this.configuration.withCredentials,
@@ -217,7 +218,7 @@ export class UserService {
         const consumes: string[] = [
         ];
 
-        return this.httpClient.delete(`${this.basePath}/user/${encodeURIComponent(String(username))}`,
+        return this.httpClient.delete(`${this.configuration.basePath}/user/${encodeURIComponent(String(username))}`,
             {
                 withCredentials: this.configuration.withCredentials,
                 headers: headers,
@@ -258,7 +259,7 @@ export class UserService {
         const consumes: string[] = [
         ];
 
-        return this.httpClient.get(`${this.basePath}/user/${encodeURIComponent(String(username))}`,
+        return this.httpClient.get(`${this.configuration.basePath}/user/${encodeURIComponent(String(username))}`,
             {
                 withCredentials: this.configuration.withCredentials,
                 headers: headers,
@@ -311,7 +312,7 @@ export class UserService {
         const consumes: string[] = [
         ];
 
-        return this.httpClient.get(`${this.basePath}/user/login`,
+        return this.httpClient.get(`${this.configuration.basePath}/user/login`,
             {
                 params: queryParameters,
                 withCredentials: this.configuration.withCredentials,
@@ -347,7 +348,7 @@ export class UserService {
         const consumes: string[] = [
         ];
 
-        return this.httpClient.get(`${this.basePath}/user/logout`,
+        return this.httpClient.get(`${this.configuration.basePath}/user/logout`,
             {
                 withCredentials: this.configuration.withCredentials,
                 headers: headers,
@@ -394,7 +395,7 @@ export class UserService {
             headers = headers.set('Content-Type', httpContentTypeSelected);
         }
 
-        return this.httpClient.put(`${this.basePath}/user/${encodeURIComponent(String(username))}`,
+        return this.httpClient.put(`${this.configuration.basePath}/user/${encodeURIComponent(String(username))}`,
             user,
             {
                 withCredentials: this.configuration.withCredentials,
diff --git a/samples/client/petstore/typescript-angular-v4.3/npm/package-lock.json b/samples/client/petstore/typescript-angular-v4.3/npm/package-lock.json
index a7f429575332..4bb6693b6c6d 100644
--- a/samples/client/petstore/typescript-angular-v4.3/npm/package-lock.json
+++ b/samples/client/petstore/typescript-angular-v4.3/npm/package-lock.json
@@ -2,67 +2,4139 @@
   "name": "@swagger/angular2-typescript-petstore",
   "version": "0.0.1",
   "lockfileVersion": 1,
+  "requires": true,
   "dependencies": {
     "@angular/common": {
       "version": "4.4.6",
       "resolved": "https://registry.npmjs.org/@angular/common/-/common-4.4.6.tgz",
       "integrity": "sha1-S4FCByTggooOg5uVpV6xp+g5GPI=",
+      "dev": true,
+      "requires": {
+        "tslib": "^1.7.1"
+      }
+    },
+    "@angular/compiler": {
+      "version": "4.4.6",
+      "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-4.4.6.tgz",
+      "integrity": "sha1-LuH68lt1fh0SiXkHS+f65SmzvCA=",
+      "dev": true,
+      "requires": {
+        "tslib": "^1.7.1"
+      }
+    },
+    "@angular/compiler-cli": {
+      "version": "4.4.7",
+      "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-4.4.7.tgz",
+      "integrity": "sha512-vzphs9galtMV29CW+ihp6v0HwSQrjAFqs04swqt9o0jEJET6/mPi1EFjJRNZiFn6ghh6lxUPr3vThy7CrSNxHg==",
+      "dev": true,
+      "requires": {
+        "@angular/tsc-wrapped": "4.4.7",
+        "minimist": "^1.2.0",
+        "reflect-metadata": "^0.1.2"
+      }
+    },
+    "@angular/core": {
+      "version": "4.4.6",
+      "resolved": "https://registry.npmjs.org/@angular/core/-/core-4.4.6.tgz",
+      "integrity": "sha1-EwMf0Q3P5DiHVBmzjyESCVi8I1Q=",
+      "dev": true,
+      "requires": {
+        "tslib": "^1.7.1"
+      }
+    },
+    "@angular/http": {
+      "version": "4.4.6",
+      "resolved": "https://registry.npmjs.org/@angular/http/-/http-4.4.6.tgz",
+      "integrity": "sha1-CvaAxnEL3AJtlA4iXP0PalwAXQw=",
+      "dev": true,
+      "requires": {
+        "tslib": "^1.7.1"
+      }
+    },
+    "@angular/platform-browser": {
+      "version": "4.4.6",
+      "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-4.4.6.tgz",
+      "integrity": "sha1-qYOcVH4bZU+h0kqJeAyLpquNzOA=",
+      "dev": true,
+      "requires": {
+        "tslib": "^1.7.1"
+      }
+    },
+    "@angular/tsc-wrapped": {
+      "version": "4.4.7",
+      "resolved": "https://registry.npmjs.org/@angular/tsc-wrapped/-/tsc-wrapped-4.4.7.tgz",
+      "integrity": "sha512-R9w7sTU+HSTMPOa4NgvPL753qB6aqnPc1AVh2rwSl5FOpLS/AeeyzIhRnBsVXGrZrTcBQVLp/Cxg1oUSXE2k4Q==",
+      "dev": true,
+      "requires": {
+        "tsickle": "^0.21.0"
+      }
+    },
+    "@ngtools/json-schema": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/@ngtools/json-schema/-/json-schema-1.1.0.tgz",
+      "integrity": "sha1-w6DFRNYjkqzCgTpCyKDcb1j4aSI=",
+      "dev": true
+    },
+    "abbrev": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
+      "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==",
+      "dev": true
+    },
+    "acorn": {
+      "version": "5.6.2",
+      "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.6.2.tgz",
+      "integrity": "sha512-zUzo1E5dI2Ey8+82egfnttyMlMZ2y0D8xOCO3PNPPlYXpl8NZvF6Qk9L9BEtJs+43FqEmfBViDqc5d1ckRDguw==",
+      "dev": true
+    },
+    "ajv": {
+      "version": "4.11.8",
+      "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz",
+      "integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=",
+      "dev": true,
+      "requires": {
+        "co": "^4.6.0",
+        "json-stable-stringify": "^1.0.1"
+      }
+    },
+    "amdefine": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz",
+      "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=",
+      "dev": true
+    },
+    "ansi-gray": {
+      "version": "0.1.1",
+      "resolved": "https://registry.npmjs.org/ansi-gray/-/ansi-gray-0.1.1.tgz",
+      "integrity": "sha1-KWLPVOyXksSFEKPetSRDaGHvclE=",
+      "dev": true,
+      "requires": {
+        "ansi-wrap": "0.1.0"
+      }
+    },
+    "ansi-regex": {
+      "version": "2.1.1",
+      "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
+      "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
+      "dev": true
+    },
+    "ansi-styles": {
+      "version": "3.2.1",
+      "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+      "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+      "dev": true,
+      "requires": {
+        "color-convert": "^1.9.0"
+      }
+    },
+    "ansi-wrap": {
+      "version": "0.1.0",
+      "resolved": "https://registry.npmjs.org/ansi-wrap/-/ansi-wrap-0.1.0.tgz",
+      "integrity": "sha1-qCJQ3bABXponyoLoLqYDu/pF768=",
+      "dev": true
+    },
+    "anymatch": {
+      "version": "1.3.2",
+      "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.2.tgz",
+      "integrity": "sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA==",
+      "dev": true,
+      "requires": {
+        "micromatch": "^2.1.5",
+        "normalize-path": "^2.0.0"
+      }
+    },
+    "aproba": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz",
+      "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==",
+      "dev": true
+    },
+    "are-we-there-yet": {
+      "version": "1.1.5",
+      "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz",
+      "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==",
+      "dev": true,
+      "requires": {
+        "delegates": "^1.0.0",
+        "readable-stream": "^2.0.6"
+      }
+    },
+    "arr-diff": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz",
+      "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=",
+      "dev": true,
+      "requires": {
+        "arr-flatten": "^1.0.1"
+      }
+    },
+    "arr-flatten": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz",
+      "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==",
+      "dev": true
+    },
+    "array-differ": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-1.0.0.tgz",
+      "integrity": "sha1-7/UuN1gknTO+QCuLuOVkuytdQDE=",
+      "dev": true
+    },
+    "array-filter": {
+      "version": "0.0.1",
+      "resolved": "https://registry.npmjs.org/array-filter/-/array-filter-0.0.1.tgz",
+      "integrity": "sha1-fajPLiZijtcygDWB/SH2fKzS7uw=",
+      "dev": true
+    },
+    "array-find-index": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz",
+      "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=",
+      "dev": true
+    },
+    "array-map": {
+      "version": "0.0.0",
+      "resolved": "https://registry.npmjs.org/array-map/-/array-map-0.0.0.tgz",
+      "integrity": "sha1-iKK6tz0c97zVwbEYoAP2b2ZfpmI=",
+      "dev": true
+    },
+    "array-reduce": {
+      "version": "0.0.0",
+      "resolved": "https://registry.npmjs.org/array-reduce/-/array-reduce-0.0.0.tgz",
+      "integrity": "sha1-FziZ0//Rx9k4PkR5Ul2+J4yrXys=",
+      "dev": true
+    },
+    "array-uniq": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz",
+      "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=",
+      "dev": true
+    },
+    "array-unique": {
+      "version": "0.2.1",
+      "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz",
+      "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=",
+      "dev": true
+    },
+    "arrify": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz",
+      "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=",
+      "dev": true
+    },
+    "asap": {
+      "version": "2.0.6",
+      "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz",
+      "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=",
+      "dev": true,
+      "optional": true
+    },
+    "asn1": {
+      "version": "0.2.3",
+      "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz",
+      "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=",
+      "dev": true
+    },
+    "assert-plus": {
+      "version": "0.2.0",
+      "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz",
+      "integrity": "sha1-104bh+ev/A24qttwIfP+SBAasjQ=",
+      "dev": true
+    },
+    "ast-types": {
+      "version": "0.9.6",
+      "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.9.6.tgz",
+      "integrity": "sha1-ECyenpAF0+fjgpvwxPok7oYu6bk=",
+      "dev": true
+    },
+    "async": {
+      "version": "2.6.1",
+      "resolved": "https://registry.npmjs.org/async/-/async-2.6.1.tgz",
+      "integrity": "sha512-fNEiL2+AZt6AlAw/29Cr0UDe4sRAHCpEHh54WMz+Bb7QfNcFw4h3loofyJpLeQs4Yx7yuqu/2dLgM5hKOs6HlQ==",
+      "dev": true,
+      "requires": {
+        "lodash": "^4.17.10"
+      }
+    },
+    "async-each": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz",
+      "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=",
+      "dev": true
+    },
+    "async-foreach": {
+      "version": "0.1.3",
+      "resolved": "https://registry.npmjs.org/async-foreach/-/async-foreach-0.1.3.tgz",
+      "integrity": "sha1-NhIfhFwFeBct5Bmpfb6x0W7DRUI=",
+      "dev": true
+    },
+    "asynckit": {
+      "version": "0.4.0",
+      "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
+      "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=",
+      "dev": true
+    },
+    "autoprefixer": {
+      "version": "7.2.6",
+      "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-7.2.6.tgz",
+      "integrity": "sha512-Iq8TRIB+/9eQ8rbGhcP7ct5cYb/3qjNYAR2SnzLCEcwF6rvVOax8+9+fccgXk4bEhQGjOZd5TLhsksmAdsbGqQ==",
+      "dev": true,
+      "requires": {
+        "browserslist": "^2.11.3",
+        "caniuse-lite": "^1.0.30000805",
+        "normalize-range": "^0.1.2",
+        "num2fraction": "^1.2.2",
+        "postcss": "^6.0.17",
+        "postcss-value-parser": "^3.2.3"
+      }
+    },
+    "aws-sign2": {
+      "version": "0.6.0",
+      "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz",
+      "integrity": "sha1-FDQt0428yU0OW4fXY81jYSwOeU8=",
+      "dev": true
+    },
+    "aws4": {
+      "version": "1.7.0",
+      "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.7.0.tgz",
+      "integrity": "sha512-32NDda82rhwD9/JBCCkB+MRYDp0oSvlo2IL6rQWA10PQi7tDUM3eqMSltXmY+Oyl/7N3P3qNtAlv7X0d9bI28w==",
+      "dev": true
+    },
+    "babel-runtime": {
+      "version": "6.26.0",
+      "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz",
+      "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=",
+      "dev": true,
+      "requires": {
+        "core-js": "^2.4.0",
+        "regenerator-runtime": "^0.11.0"
+      }
+    },
+    "balanced-match": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
+      "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=",
+      "dev": true
+    },
+    "bcrypt-pbkdf": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz",
+      "integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=",
+      "dev": true,
+      "optional": true,
+      "requires": {
+        "tweetnacl": "^0.14.3"
+      }
+    },
+    "beeper": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/beeper/-/beeper-1.1.1.tgz",
+      "integrity": "sha1-5tXqjF2tABMEpwsiY4RH9pyy+Ak=",
+      "dev": true
+    },
+    "binary-extensions": {
+      "version": "1.11.0",
+      "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.11.0.tgz",
+      "integrity": "sha1-RqoXUftqL5PuXmibsQh9SxTGwgU=",
+      "dev": true
+    },
+    "block-stream": {
+      "version": "0.0.9",
+      "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz",
+      "integrity": "sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=",
+      "dev": true,
+      "requires": {
+        "inherits": "~2.0.0"
+      }
+    },
+    "boom": {
+      "version": "2.10.1",
+      "resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz",
+      "integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=",
+      "dev": true,
+      "requires": {
+        "hoek": "2.x.x"
+      }
+    },
+    "brace-expansion": {
+      "version": "1.1.11",
+      "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
+      "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+      "dev": true,
+      "requires": {
+        "balanced-match": "^1.0.0",
+        "concat-map": "0.0.1"
+      }
+    },
+    "braces": {
+      "version": "1.8.5",
+      "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz",
+      "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=",
+      "dev": true,
+      "requires": {
+        "expand-range": "^1.8.1",
+        "preserve": "^0.2.0",
+        "repeat-element": "^1.1.2"
+      }
+    },
+    "browserslist": {
+      "version": "2.11.3",
+      "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-2.11.3.tgz",
+      "integrity": "sha512-yWu5cXT7Av6mVwzWc8lMsJMHWn4xyjSuGYi4IozbVTLUOEYPSagUB8kiMDUHA1fS3zjr8nkxkn9jdvug4BBRmA==",
+      "dev": true,
+      "requires": {
+        "caniuse-lite": "^1.0.30000792",
+        "electron-to-chromium": "^1.3.30"
+      }
+    },
+    "buffer-crc32": {
+      "version": "0.2.13",
+      "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz",
+      "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=",
+      "dev": true
+    },
+    "builtin-modules": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz",
+      "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=",
+      "dev": true
+    },
+    "camelcase": {
+      "version": "2.1.1",
+      "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz",
+      "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=",
+      "dev": true
+    },
+    "camelcase-keys": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz",
+      "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=",
+      "dev": true,
+      "requires": {
+        "camelcase": "^2.0.0",
+        "map-obj": "^1.0.0"
+      }
+    },
+    "caniuse-lite": {
+      "version": "1.0.30000853",
+      "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000853.tgz",
+      "integrity": "sha512-vMrE8BED4MJC9IhDJKP8ok6bJUfn5+YHvxwXMYfiPqQOJ3r2B9ihcArlUnXu6yPWf7b3jHqiEBwXZEbrbiFUqg==",
+      "dev": true
+    },
+    "caseless": {
+      "version": "0.12.0",
+      "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz",
+      "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=",
+      "dev": true
+    },
+    "chalk": {
+      "version": "2.4.1",
+      "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz",
+      "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==",
+      "dev": true,
+      "requires": {
+        "ansi-styles": "^3.2.1",
+        "escape-string-regexp": "^1.0.5",
+        "supports-color": "^5.3.0"
+      }
+    },
+    "chokidar": {
+      "version": "1.7.0",
+      "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz",
+      "integrity": "sha1-eY5ol3gVHIB2tLNg5e3SjNortGg=",
+      "dev": true,
+      "requires": {
+        "anymatch": "^1.3.0",
+        "async-each": "^1.0.0",
+        "fsevents": "^1.0.0",
+        "glob-parent": "^2.0.0",
+        "inherits": "^2.0.1",
+        "is-binary-path": "^1.0.0",
+        "is-glob": "^2.0.0",
+        "path-is-absolute": "^1.0.0",
+        "readdirp": "^2.0.0"
+      }
+    },
+    "cliui": {
+      "version": "3.2.0",
+      "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz",
+      "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=",
+      "dev": true,
+      "requires": {
+        "string-width": "^1.0.1",
+        "strip-ansi": "^3.0.1",
+        "wrap-ansi": "^2.0.0"
+      }
+    },
+    "clone": {
+      "version": "1.0.4",
+      "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz",
+      "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=",
+      "dev": true
+    },
+    "clone-stats": {
+      "version": "0.0.1",
+      "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-0.0.1.tgz",
+      "integrity": "sha1-uI+UqCzzi4eR1YBG6kAprYjKmdE=",
+      "dev": true
+    },
+    "co": {
+      "version": "4.6.0",
+      "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz",
+      "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=",
+      "dev": true
+    },
+    "code-point-at": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz",
+      "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=",
+      "dev": true
+    },
+    "color-convert": {
+      "version": "1.9.2",
+      "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.2.tgz",
+      "integrity": "sha512-3NUJZdhMhcdPn8vJ9v2UQJoH0qqoGUkYTgFEPZaPjEtwmmKUfNV46zZmgB2M5M4DCEQHMaCfWHCxiBflLm04Tg==",
+      "dev": true,
+      "requires": {
+        "color-name": "1.1.1"
+      }
+    },
+    "color-name": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.1.tgz",
+      "integrity": "sha1-SxQVMEz1ACjqgWQ2Q72C6gWANok=",
+      "dev": true
+    },
+    "color-support": {
+      "version": "1.1.3",
+      "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz",
+      "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==",
+      "dev": true
+    },
+    "combined-stream": {
+      "version": "1.0.6",
+      "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.6.tgz",
+      "integrity": "sha1-cj599ugBrFYTETp+RFqbactjKBg=",
+      "dev": true,
+      "requires": {
+        "delayed-stream": "~1.0.0"
+      }
+    },
+    "commander": {
+      "version": "2.15.1",
+      "resolved": "https://registry.npmjs.org/commander/-/commander-2.15.1.tgz",
+      "integrity": "sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag==",
+      "dev": true
+    },
+    "concat-map": {
+      "version": "0.0.1",
+      "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
+      "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
+      "dev": true
+    },
+    "console-control-strings": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz",
+      "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=",
+      "dev": true
+    },
+    "convert-source-map": {
+      "version": "1.5.1",
+      "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.1.tgz",
+      "integrity": "sha1-uCeAl7m8IpNl3lxiz1/K7YtVmeU=",
+      "dev": true
+    },
+    "core-js": {
+      "version": "2.5.7",
+      "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.7.tgz",
+      "integrity": "sha512-RszJCAxg/PP6uzXVXL6BsxSXx/B05oJAQ2vkJRjyjrEcNVycaqOmNb5OTxZPE3xa5gwZduqza6L9JOCenh/Ecw==",
+      "dev": true
+    },
+    "core-util-is": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
+      "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=",
+      "dev": true
+    },
+    "cpx": {
+      "version": "1.5.0",
+      "resolved": "https://registry.npmjs.org/cpx/-/cpx-1.5.0.tgz",
+      "integrity": "sha1-GFvgGFEdhycN7czCkxceN2VauI8=",
+      "dev": true,
+      "requires": {
+        "babel-runtime": "^6.9.2",
+        "chokidar": "^1.6.0",
+        "duplexer": "^0.1.1",
+        "glob": "^7.0.5",
+        "glob2base": "^0.0.12",
+        "minimatch": "^3.0.2",
+        "mkdirp": "^0.5.1",
+        "resolve": "^1.1.7",
+        "safe-buffer": "^5.0.1",
+        "shell-quote": "^1.6.1",
+        "subarg": "^1.0.0"
+      }
+    },
+    "cross-spawn": {
+      "version": "3.0.1",
+      "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-3.0.1.tgz",
+      "integrity": "sha1-ElYDfsufDF9549bvE14wdwGEuYI=",
+      "dev": true,
+      "requires": {
+        "lru-cache": "^4.0.1",
+        "which": "^1.2.9"
+      }
+    },
+    "cryptiles": {
+      "version": "2.0.5",
+      "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz",
+      "integrity": "sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=",
+      "dev": true,
+      "requires": {
+        "boom": "2.x.x"
+      }
+    },
+    "css-parse": {
+      "version": "1.7.0",
+      "resolved": "https://registry.npmjs.org/css-parse/-/css-parse-1.7.0.tgz",
+      "integrity": "sha1-Mh9s9zeCpv91ERE5D8BeLGV9jJs=",
+      "dev": true
+    },
+    "currently-unhandled": {
+      "version": "0.4.1",
+      "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz",
+      "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=",
+      "dev": true,
+      "requires": {
+        "array-find-index": "^1.0.1"
+      }
+    },
+    "dashdash": {
+      "version": "1.14.1",
+      "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz",
+      "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=",
+      "dev": true,
+      "requires": {
+        "assert-plus": "^1.0.0"
+      },
+      "dependencies": {
+        "assert-plus": {
+          "version": "1.0.0",
+          "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
+          "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=",
+          "dev": true
+        }
+      }
+    },
+    "dateformat": {
+      "version": "2.2.0",
+      "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-2.2.0.tgz",
+      "integrity": "sha1-QGXiATz5+5Ft39gu+1Bq1MZ2kGI=",
+      "dev": true
+    },
+    "debug": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
+      "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
+      "dev": true,
+      "requires": {
+        "ms": "2.0.0"
+      }
+    },
+    "decamelize": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
+      "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=",
+      "dev": true
+    },
+    "delayed-stream": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
+      "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=",
+      "dev": true
+    },
+    "delegates": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz",
+      "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=",
+      "dev": true
+    },
+    "diff": {
+      "version": "3.5.0",
+      "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz",
+      "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==",
+      "dev": true
+    },
+    "duplexer": {
+      "version": "0.1.1",
+      "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz",
+      "integrity": "sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=",
+      "dev": true
+    },
+    "duplexer2": {
+      "version": "0.0.2",
+      "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.0.2.tgz",
+      "integrity": "sha1-xhTc9n4vsUmVqRcR5aYX6KYKMds=",
+      "dev": true,
+      "requires": {
+        "readable-stream": "~1.1.9"
+      },
+      "dependencies": {
+        "isarray": {
+          "version": "0.0.1",
+          "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
+          "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=",
+          "dev": true
+        },
+        "readable-stream": {
+          "version": "1.1.14",
+          "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz",
+          "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=",
+          "dev": true,
+          "requires": {
+            "core-util-is": "~1.0.0",
+            "inherits": "~2.0.1",
+            "isarray": "0.0.1",
+            "string_decoder": "~0.10.x"
+          }
+        },
+        "string_decoder": {
+          "version": "0.10.31",
+          "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
+          "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=",
+          "dev": true
+        }
+      }
+    },
+    "duplexify": {
+      "version": "3.6.0",
+      "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.6.0.tgz",
+      "integrity": "sha512-fO3Di4tBKJpYTFHAxTU00BcfWMY9w24r/x21a6rZRbsD/ToUgGxsMbiGRmB7uVAXeGKXD9MwiLZa5E97EVgIRQ==",
+      "dev": true,
+      "requires": {
+        "end-of-stream": "^1.0.0",
+        "inherits": "^2.0.1",
+        "readable-stream": "^2.0.0",
+        "stream-shift": "^1.0.0"
+      }
+    },
+    "ecc-jsbn": {
+      "version": "0.1.1",
+      "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz",
+      "integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=",
+      "dev": true,
+      "optional": true,
+      "requires": {
+        "jsbn": "~0.1.0"
+      }
+    },
+    "electron-to-chromium": {
+      "version": "1.3.48",
+      "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.48.tgz",
+      "integrity": "sha1-07DYWTgUBE4JLs4hCPw6ya6kuQA=",
+      "dev": true
+    },
+    "end-of-stream": {
+      "version": "1.4.1",
+      "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz",
+      "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==",
+      "dev": true,
+      "requires": {
+        "once": "^1.4.0"
+      }
+    },
+    "errno": {
+      "version": "0.1.7",
+      "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz",
+      "integrity": "sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==",
+      "dev": true,
+      "optional": true,
+      "requires": {
+        "prr": "~1.0.1"
+      }
+    },
+    "error-ex": {
+      "version": "1.3.1",
+      "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz",
+      "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=",
+      "dev": true,
+      "requires": {
+        "is-arrayish": "^0.2.1"
+      }
+    },
+    "es6-promise": {
+      "version": "3.3.1",
+      "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-3.3.1.tgz",
+      "integrity": "sha1-oIzd6EzNvzTQJ6FFG8kdS80ophM=",
+      "dev": true
+    },
+    "es6-templates": {
+      "version": "0.2.3",
+      "resolved": "https://registry.npmjs.org/es6-templates/-/es6-templates-0.2.3.tgz",
+      "integrity": "sha1-XLmsn7He1usSOTQrgdeSu7QHjuQ=",
+      "dev": true,
+      "requires": {
+        "recast": "~0.11.12",
+        "through": "~2.3.6"
+      }
+    },
+    "escape-string-regexp": {
+      "version": "1.0.5",
+      "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
+      "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
+      "dev": true
+    },
+    "esprima": {
+      "version": "3.1.3",
+      "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz",
+      "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=",
+      "dev": true
+    },
+    "estree-walker": {
+      "version": "0.5.2",
+      "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.5.2.tgz",
+      "integrity": "sha512-XpCnW/AE10ws/kDAs37cngSkvgIR8aN3G0MS85m7dUpuK2EREo9VJ00uvw6Dg/hXEpfsE1I1TvJOJr+Z+TL+ig==",
+      "dev": true
+    },
+    "expand-brackets": {
+      "version": "0.1.5",
+      "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz",
+      "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=",
+      "dev": true,
+      "requires": {
+        "is-posix-bracket": "^0.1.0"
+      }
+    },
+    "expand-range": {
+      "version": "1.8.2",
+      "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz",
+      "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=",
+      "dev": true,
+      "requires": {
+        "fill-range": "^2.1.0"
+      }
+    },
+    "extend": {
+      "version": "3.0.1",
+      "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz",
+      "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=",
+      "dev": true
+    },
+    "extend-shallow": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+      "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+      "dev": true,
+      "requires": {
+        "is-extendable": "^0.1.0"
+      }
+    },
+    "extglob": {
+      "version": "0.3.2",
+      "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz",
+      "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=",
+      "dev": true,
+      "requires": {
+        "is-extglob": "^1.0.0"
+      }
+    },
+    "extsprintf": {
+      "version": "1.3.0",
+      "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz",
+      "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=",
+      "dev": true
+    },
+    "fancy-log": {
+      "version": "1.3.2",
+      "resolved": "https://registry.npmjs.org/fancy-log/-/fancy-log-1.3.2.tgz",
+      "integrity": "sha1-9BEl49hPLn2JpD0G2VjI94vha+E=",
+      "dev": true,
+      "requires": {
+        "ansi-gray": "^0.1.1",
+        "color-support": "^1.1.3",
+        "time-stamp": "^1.0.0"
+      }
+    },
+    "filename-regex": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz",
+      "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=",
+      "dev": true
+    },
+    "fill-range": {
+      "version": "2.2.4",
+      "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.4.tgz",
+      "integrity": "sha512-cnrcCbj01+j2gTG921VZPnHbjmdAf8oQV/iGeV2kZxGSyfYjjTyY79ErsK1WJWMpw6DaApEX72binqJE+/d+5Q==",
+      "dev": true,
+      "requires": {
+        "is-number": "^2.1.0",
+        "isobject": "^2.0.0",
+        "randomatic": "^3.0.0",
+        "repeat-element": "^1.1.2",
+        "repeat-string": "^1.5.2"
+      }
+    },
+    "find-index": {
+      "version": "0.1.1",
+      "resolved": "https://registry.npmjs.org/find-index/-/find-index-0.1.1.tgz",
+      "integrity": "sha1-Z101iyyjiS15Whq0cjL4tuLg3eQ=",
+      "dev": true
+    },
+    "find-up": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz",
+      "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=",
+      "dev": true,
+      "requires": {
+        "path-exists": "^2.0.0",
+        "pinkie-promise": "^2.0.0"
+      }
+    },
+    "first-chunk-stream": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/first-chunk-stream/-/first-chunk-stream-1.0.0.tgz",
+      "integrity": "sha1-Wb+1DNkF9g18OUzT2ayqtOatk04=",
+      "dev": true
+    },
+    "for-in": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz",
+      "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=",
+      "dev": true
+    },
+    "for-own": {
+      "version": "0.1.5",
+      "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz",
+      "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=",
+      "dev": true,
+      "requires": {
+        "for-in": "^1.0.1"
+      }
+    },
+    "forever-agent": {
+      "version": "0.6.1",
+      "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz",
+      "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=",
+      "dev": true
+    },
+    "form-data": {
+      "version": "2.1.4",
+      "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.1.4.tgz",
+      "integrity": "sha1-M8GDrPGTJ27KqYFDpp6Uv+4XUNE=",
+      "dev": true,
+      "requires": {
+        "asynckit": "^0.4.0",
+        "combined-stream": "^1.0.5",
+        "mime-types": "^2.1.12"
+      }
+    },
+    "fs-extra": {
+      "version": "4.0.3",
+      "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-4.0.3.tgz",
+      "integrity": "sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg==",
+      "dev": true,
+      "requires": {
+        "graceful-fs": "^4.1.2",
+        "jsonfile": "^4.0.0",
+        "universalify": "^0.1.0"
+      }
+    },
+    "fs.realpath": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
+      "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
+      "dev": true
+    },
+    "fsevents": {
+      "version": "1.2.4",
+      "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.4.tgz",
+      "integrity": "sha512-z8H8/diyk76B7q5wg+Ud0+CqzcAF3mBBI/bA5ne5zrRUUIvNkJY//D3BqyH571KuAC4Nr7Rw7CjWX4r0y9DvNg==",
+      "dev": true,
+      "optional": true,
+      "requires": {
+        "nan": "^2.9.2",
+        "node-pre-gyp": "^0.10.0"
+      },
+      "dependencies": {
+        "abbrev": {
+          "version": "1.1.1",
+          "bundled": true,
+          "dev": true,
+          "optional": true
+        },
+        "ansi-regex": {
+          "version": "2.1.1",
+          "bundled": true,
+          "dev": true
+        },
+        "aproba": {
+          "version": "1.2.0",
+          "bundled": true,
+          "dev": true,
+          "optional": true
+        },
+        "are-we-there-yet": {
+          "version": "1.1.4",
+          "bundled": true,
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "delegates": "^1.0.0",
+            "readable-stream": "^2.0.6"
+          }
+        },
+        "balanced-match": {
+          "version": "1.0.0",
+          "bundled": true,
+          "dev": true
+        },
+        "brace-expansion": {
+          "version": "1.1.11",
+          "bundled": true,
+          "dev": true,
+          "requires": {
+            "balanced-match": "^1.0.0",
+            "concat-map": "0.0.1"
+          }
+        },
+        "chownr": {
+          "version": "1.0.1",
+          "bundled": true,
+          "dev": true,
+          "optional": true
+        },
+        "code-point-at": {
+          "version": "1.1.0",
+          "bundled": true,
+          "dev": true
+        },
+        "concat-map": {
+          "version": "0.0.1",
+          "bundled": true,
+          "dev": true
+        },
+        "console-control-strings": {
+          "version": "1.1.0",
+          "bundled": true,
+          "dev": true
+        },
+        "core-util-is": {
+          "version": "1.0.2",
+          "bundled": true,
+          "dev": true,
+          "optional": true
+        },
+        "debug": {
+          "version": "2.6.9",
+          "bundled": true,
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "ms": "2.0.0"
+          }
+        },
+        "deep-extend": {
+          "version": "0.5.1",
+          "bundled": true,
+          "dev": true,
+          "optional": true
+        },
+        "delegates": {
+          "version": "1.0.0",
+          "bundled": true,
+          "dev": true,
+          "optional": true
+        },
+        "detect-libc": {
+          "version": "1.0.3",
+          "bundled": true,
+          "dev": true,
+          "optional": true
+        },
+        "fs-minipass": {
+          "version": "1.2.5",
+          "bundled": true,
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "minipass": "^2.2.1"
+          }
+        },
+        "fs.realpath": {
+          "version": "1.0.0",
+          "bundled": true,
+          "dev": true,
+          "optional": true
+        },
+        "gauge": {
+          "version": "2.7.4",
+          "bundled": true,
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "aproba": "^1.0.3",
+            "console-control-strings": "^1.0.0",
+            "has-unicode": "^2.0.0",
+            "object-assign": "^4.1.0",
+            "signal-exit": "^3.0.0",
+            "string-width": "^1.0.1",
+            "strip-ansi": "^3.0.1",
+            "wide-align": "^1.1.0"
+          }
+        },
+        "glob": {
+          "version": "7.1.2",
+          "bundled": true,
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "fs.realpath": "^1.0.0",
+            "inflight": "^1.0.4",
+            "inherits": "2",
+            "minimatch": "^3.0.4",
+            "once": "^1.3.0",
+            "path-is-absolute": "^1.0.0"
+          }
+        },
+        "has-unicode": {
+          "version": "2.0.1",
+          "bundled": true,
+          "dev": true,
+          "optional": true
+        },
+        "iconv-lite": {
+          "version": "0.4.21",
+          "bundled": true,
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "safer-buffer": "^2.1.0"
+          }
+        },
+        "ignore-walk": {
+          "version": "3.0.1",
+          "bundled": true,
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "minimatch": "^3.0.4"
+          }
+        },
+        "inflight": {
+          "version": "1.0.6",
+          "bundled": true,
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "once": "^1.3.0",
+            "wrappy": "1"
+          }
+        },
+        "inherits": {
+          "version": "2.0.3",
+          "bundled": true,
+          "dev": true
+        },
+        "ini": {
+          "version": "1.3.5",
+          "bundled": true,
+          "dev": true,
+          "optional": true
+        },
+        "is-fullwidth-code-point": {
+          "version": "1.0.0",
+          "bundled": true,
+          "dev": true,
+          "requires": {
+            "number-is-nan": "^1.0.0"
+          }
+        },
+        "isarray": {
+          "version": "1.0.0",
+          "bundled": true,
+          "dev": true,
+          "optional": true
+        },
+        "minimatch": {
+          "version": "3.0.4",
+          "bundled": true,
+          "dev": true,
+          "requires": {
+            "brace-expansion": "^1.1.7"
+          }
+        },
+        "minimist": {
+          "version": "0.0.8",
+          "bundled": true,
+          "dev": true
+        },
+        "minipass": {
+          "version": "2.2.4",
+          "bundled": true,
+          "dev": true,
+          "requires": {
+            "safe-buffer": "^5.1.1",
+            "yallist": "^3.0.0"
+          }
+        },
+        "minizlib": {
+          "version": "1.1.0",
+          "bundled": true,
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "minipass": "^2.2.1"
+          }
+        },
+        "mkdirp": {
+          "version": "0.5.1",
+          "bundled": true,
+          "dev": true,
+          "requires": {
+            "minimist": "0.0.8"
+          }
+        },
+        "ms": {
+          "version": "2.0.0",
+          "bundled": true,
+          "dev": true,
+          "optional": true
+        },
+        "needle": {
+          "version": "2.2.0",
+          "bundled": true,
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "debug": "^2.1.2",
+            "iconv-lite": "^0.4.4",
+            "sax": "^1.2.4"
+          }
+        },
+        "node-pre-gyp": {
+          "version": "0.10.0",
+          "bundled": true,
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "detect-libc": "^1.0.2",
+            "mkdirp": "^0.5.1",
+            "needle": "^2.2.0",
+            "nopt": "^4.0.1",
+            "npm-packlist": "^1.1.6",
+            "npmlog": "^4.0.2",
+            "rc": "^1.1.7",
+            "rimraf": "^2.6.1",
+            "semver": "^5.3.0",
+            "tar": "^4"
+          }
+        },
+        "nopt": {
+          "version": "4.0.1",
+          "bundled": true,
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "abbrev": "1",
+            "osenv": "^0.1.4"
+          }
+        },
+        "npm-bundled": {
+          "version": "1.0.3",
+          "bundled": true,
+          "dev": true,
+          "optional": true
+        },
+        "npm-packlist": {
+          "version": "1.1.10",
+          "bundled": true,
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "ignore-walk": "^3.0.1",
+            "npm-bundled": "^1.0.1"
+          }
+        },
+        "npmlog": {
+          "version": "4.1.2",
+          "bundled": true,
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "are-we-there-yet": "~1.1.2",
+            "console-control-strings": "~1.1.0",
+            "gauge": "~2.7.3",
+            "set-blocking": "~2.0.0"
+          }
+        },
+        "number-is-nan": {
+          "version": "1.0.1",
+          "bundled": true,
+          "dev": true
+        },
+        "object-assign": {
+          "version": "4.1.1",
+          "bundled": true,
+          "dev": true,
+          "optional": true
+        },
+        "once": {
+          "version": "1.4.0",
+          "bundled": true,
+          "dev": true,
+          "requires": {
+            "wrappy": "1"
+          }
+        },
+        "os-homedir": {
+          "version": "1.0.2",
+          "bundled": true,
+          "dev": true,
+          "optional": true
+        },
+        "os-tmpdir": {
+          "version": "1.0.2",
+          "bundled": true,
+          "dev": true,
+          "optional": true
+        },
+        "osenv": {
+          "version": "0.1.5",
+          "bundled": true,
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "os-homedir": "^1.0.0",
+            "os-tmpdir": "^1.0.0"
+          }
+        },
+        "path-is-absolute": {
+          "version": "1.0.1",
+          "bundled": true,
+          "dev": true,
+          "optional": true
+        },
+        "process-nextick-args": {
+          "version": "2.0.0",
+          "bundled": true,
+          "dev": true,
+          "optional": true
+        },
+        "rc": {
+          "version": "1.2.7",
+          "bundled": true,
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "deep-extend": "^0.5.1",
+            "ini": "~1.3.0",
+            "minimist": "^1.2.0",
+            "strip-json-comments": "~2.0.1"
+          },
+          "dependencies": {
+            "minimist": {
+              "version": "1.2.0",
+              "bundled": true,
+              "dev": true,
+              "optional": true
+            }
+          }
+        },
+        "readable-stream": {
+          "version": "2.3.6",
+          "bundled": true,
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "core-util-is": "~1.0.0",
+            "inherits": "~2.0.3",
+            "isarray": "~1.0.0",
+            "process-nextick-args": "~2.0.0",
+            "safe-buffer": "~5.1.1",
+            "string_decoder": "~1.1.1",
+            "util-deprecate": "~1.0.1"
+          }
+        },
+        "rimraf": {
+          "version": "2.6.2",
+          "bundled": true,
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "glob": "^7.0.5"
+          }
+        },
+        "safe-buffer": {
+          "version": "5.1.1",
+          "bundled": true,
+          "dev": true
+        },
+        "safer-buffer": {
+          "version": "2.1.2",
+          "bundled": true,
+          "dev": true,
+          "optional": true
+        },
+        "sax": {
+          "version": "1.2.4",
+          "bundled": true,
+          "dev": true,
+          "optional": true
+        },
+        "semver": {
+          "version": "5.5.0",
+          "bundled": true,
+          "dev": true,
+          "optional": true
+        },
+        "set-blocking": {
+          "version": "2.0.0",
+          "bundled": true,
+          "dev": true,
+          "optional": true
+        },
+        "signal-exit": {
+          "version": "3.0.2",
+          "bundled": true,
+          "dev": true,
+          "optional": true
+        },
+        "string-width": {
+          "version": "1.0.2",
+          "bundled": true,
+          "dev": true,
+          "requires": {
+            "code-point-at": "^1.0.0",
+            "is-fullwidth-code-point": "^1.0.0",
+            "strip-ansi": "^3.0.0"
+          }
+        },
+        "string_decoder": {
+          "version": "1.1.1",
+          "bundled": true,
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "safe-buffer": "~5.1.0"
+          }
+        },
+        "strip-ansi": {
+          "version": "3.0.1",
+          "bundled": true,
+          "dev": true,
+          "requires": {
+            "ansi-regex": "^2.0.0"
+          }
+        },
+        "strip-json-comments": {
+          "version": "2.0.1",
+          "bundled": true,
+          "dev": true,
+          "optional": true
+        },
+        "tar": {
+          "version": "4.4.1",
+          "bundled": true,
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "chownr": "^1.0.1",
+            "fs-minipass": "^1.2.5",
+            "minipass": "^2.2.4",
+            "minizlib": "^1.1.0",
+            "mkdirp": "^0.5.0",
+            "safe-buffer": "^5.1.1",
+            "yallist": "^3.0.2"
+          }
+        },
+        "util-deprecate": {
+          "version": "1.0.2",
+          "bundled": true,
+          "dev": true,
+          "optional": true
+        },
+        "wide-align": {
+          "version": "1.1.2",
+          "bundled": true,
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "string-width": "^1.0.2"
+          }
+        },
+        "wrappy": {
+          "version": "1.0.2",
+          "bundled": true,
+          "dev": true
+        },
+        "yallist": {
+          "version": "3.0.2",
+          "bundled": true,
+          "dev": true
+        }
+      }
+    },
+    "fstream": {
+      "version": "1.0.11",
+      "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.11.tgz",
+      "integrity": "sha1-XB+x8RdHcRTwYyoOtLcbPLD9MXE=",
+      "dev": true,
+      "requires": {
+        "graceful-fs": "^4.1.2",
+        "inherits": "~2.0.0",
+        "mkdirp": ">=0.5 0",
+        "rimraf": "2"
+      }
+    },
+    "gauge": {
+      "version": "2.7.4",
+      "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz",
+      "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=",
+      "dev": true,
+      "requires": {
+        "aproba": "^1.0.3",
+        "console-control-strings": "^1.0.0",
+        "has-unicode": "^2.0.0",
+        "object-assign": "^4.1.0",
+        "signal-exit": "^3.0.0",
+        "string-width": "^1.0.1",
+        "strip-ansi": "^3.0.1",
+        "wide-align": "^1.1.0"
+      },
+      "dependencies": {
+        "object-assign": {
+          "version": "4.1.1",
+          "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
+          "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=",
+          "dev": true
+        }
+      }
+    },
+    "gaze": {
+      "version": "1.1.3",
+      "resolved": "https://registry.npmjs.org/gaze/-/gaze-1.1.3.tgz",
+      "integrity": "sha512-BRdNm8hbWzFzWHERTrejLqwHDfS4GibPoq5wjTPIoJHoBtKGPg3xAFfxmM+9ztbXelxcf2hwQcaz1PtmFeue8g==",
+      "dev": true,
+      "requires": {
+        "globule": "^1.0.0"
+      }
+    },
+    "generate-function": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.0.0.tgz",
+      "integrity": "sha1-aFj+fAlpt9TpCTM3ZHrHn2DfvnQ=",
+      "dev": true
+    },
+    "generate-object-property": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz",
+      "integrity": "sha1-nA4cQDCM6AT0eDYYuTf6iPmdUNA=",
+      "dev": true,
+      "requires": {
+        "is-property": "^1.0.0"
+      }
+    },
+    "get-caller-file": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.2.tgz",
+      "integrity": "sha1-9wLmMSfn4jHBYKgMFVSstw1QR+U=",
+      "dev": true
+    },
+    "get-stdin": {
+      "version": "4.0.1",
+      "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz",
+      "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=",
+      "dev": true
+    },
+    "getpass": {
+      "version": "0.1.7",
+      "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz",
+      "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=",
+      "dev": true,
+      "requires": {
+        "assert-plus": "^1.0.0"
+      },
+      "dependencies": {
+        "assert-plus": {
+          "version": "1.0.0",
+          "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
+          "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=",
+          "dev": true
+        }
+      }
+    },
+    "glob": {
+      "version": "7.1.2",
+      "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz",
+      "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==",
+      "dev": true,
+      "requires": {
+        "fs.realpath": "^1.0.0",
+        "inflight": "^1.0.4",
+        "inherits": "2",
+        "minimatch": "^3.0.4",
+        "once": "^1.3.0",
+        "path-is-absolute": "^1.0.0"
+      }
+    },
+    "glob-base": {
+      "version": "0.3.0",
+      "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz",
+      "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=",
+      "dev": true,
+      "requires": {
+        "glob-parent": "^2.0.0",
+        "is-glob": "^2.0.0"
+      }
+    },
+    "glob-parent": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz",
+      "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=",
+      "dev": true,
+      "requires": {
+        "is-glob": "^2.0.0"
+      }
+    },
+    "glob-stream": {
+      "version": "5.3.5",
+      "resolved": "https://registry.npmjs.org/glob-stream/-/glob-stream-5.3.5.tgz",
+      "integrity": "sha1-pVZlqajM3EGRWofHAeMtTgFvrSI=",
+      "dev": true,
+      "requires": {
+        "extend": "^3.0.0",
+        "glob": "^5.0.3",
+        "glob-parent": "^3.0.0",
+        "micromatch": "^2.3.7",
+        "ordered-read-streams": "^0.3.0",
+        "through2": "^0.6.0",
+        "to-absolute-glob": "^0.1.1",
+        "unique-stream": "^2.0.2"
+      },
+      "dependencies": {
+        "glob": {
+          "version": "5.0.15",
+          "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz",
+          "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=",
+          "dev": true,
+          "requires": {
+            "inflight": "^1.0.4",
+            "inherits": "2",
+            "minimatch": "2 || 3",
+            "once": "^1.3.0",
+            "path-is-absolute": "^1.0.0"
+          }
+        },
+        "glob-parent": {
+          "version": "3.1.0",
+          "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz",
+          "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=",
+          "dev": true,
+          "requires": {
+            "is-glob": "^3.1.0",
+            "path-dirname": "^1.0.0"
+          }
+        },
+        "is-extglob": {
+          "version": "2.1.1",
+          "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
+          "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=",
+          "dev": true
+        },
+        "is-glob": {
+          "version": "3.1.0",
+          "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz",
+          "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=",
+          "dev": true,
+          "requires": {
+            "is-extglob": "^2.1.0"
+          }
+        },
+        "isarray": {
+          "version": "0.0.1",
+          "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
+          "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=",
+          "dev": true
+        },
+        "readable-stream": {
+          "version": "1.0.34",
+          "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz",
+          "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=",
+          "dev": true,
+          "requires": {
+            "core-util-is": "~1.0.0",
+            "inherits": "~2.0.1",
+            "isarray": "0.0.1",
+            "string_decoder": "~0.10.x"
+          }
+        },
+        "string_decoder": {
+          "version": "0.10.31",
+          "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
+          "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=",
+          "dev": true
+        },
+        "through2": {
+          "version": "0.6.5",
+          "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz",
+          "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=",
+          "dev": true,
+          "requires": {
+            "readable-stream": ">=1.0.33-1 <1.1.0-0",
+            "xtend": ">=4.0.0 <4.1.0-0"
+          }
+        }
+      }
+    },
+    "glob2base": {
+      "version": "0.0.12",
+      "resolved": "https://registry.npmjs.org/glob2base/-/glob2base-0.0.12.tgz",
+      "integrity": "sha1-nUGbPijxLoOjYhZKJ3BVkiycDVY=",
+      "dev": true,
+      "requires": {
+        "find-index": "^0.1.1"
+      }
+    },
+    "globule": {
+      "version": "1.2.1",
+      "resolved": "https://registry.npmjs.org/globule/-/globule-1.2.1.tgz",
+      "integrity": "sha512-g7QtgWF4uYSL5/dn71WxubOrS7JVGCnFPEnoeChJmBnyR9Mw8nGoEwOgJL/RC2Te0WhbsEUCejfH8SZNJ+adYQ==",
+      "dev": true,
+      "requires": {
+        "glob": "~7.1.1",
+        "lodash": "~4.17.10",
+        "minimatch": "~3.0.2"
+      }
+    },
+    "glogg": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/glogg/-/glogg-1.0.1.tgz",
+      "integrity": "sha512-ynYqXLoluBKf9XGR1gA59yEJisIL7YHEH4xr3ZziHB5/yl4qWfaK8Js9jGe6gBGCSCKVqiyO30WnRZADvemUNw==",
+      "dev": true,
+      "requires": {
+        "sparkles": "^1.0.0"
+      }
+    },
+    "graceful-fs": {
+      "version": "4.1.11",
+      "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz",
+      "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=",
+      "dev": true
+    },
+    "gulp-inline-ng2-template": {
+      "version": "4.1.0",
+      "resolved": "https://registry.npmjs.org/gulp-inline-ng2-template/-/gulp-inline-ng2-template-4.1.0.tgz",
+      "integrity": "sha1-Yfq1mmaUXDegxIOLXnk9ZwjpHf0=",
+      "dev": true,
+      "requires": {
+        "async": "^2.0.0-rc.5",
+        "clone": "~1.0.2",
+        "es6-templates": "~0.2.2",
+        "extend": "~3.0.0",
+        "gulp-util": "~3.0.6",
+        "isarray": "0.0.1",
+        "through2": "~2.0.0"
+      },
+      "dependencies": {
+        "isarray": {
+          "version": "0.0.1",
+          "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
+          "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=",
+          "dev": true
+        }
+      }
+    },
+    "gulp-sourcemaps": {
+      "version": "1.6.0",
+      "resolved": "https://registry.npmjs.org/gulp-sourcemaps/-/gulp-sourcemaps-1.6.0.tgz",
+      "integrity": "sha1-uG/zSdgBzrVuHZ59x7vLS33uYAw=",
+      "dev": true,
+      "requires": {
+        "convert-source-map": "^1.1.1",
+        "graceful-fs": "^4.1.2",
+        "strip-bom": "^2.0.0",
+        "through2": "^2.0.0",
+        "vinyl": "^1.0.0"
+      },
+      "dependencies": {
+        "vinyl": {
+          "version": "1.2.0",
+          "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-1.2.0.tgz",
+          "integrity": "sha1-XIgDbPVl5d8FVYv8kR+GVt8hiIQ=",
+          "dev": true,
+          "requires": {
+            "clone": "^1.0.0",
+            "clone-stats": "^0.0.1",
+            "replace-ext": "0.0.1"
+          }
+        }
+      }
+    },
+    "gulp-util": {
+      "version": "3.0.8",
+      "resolved": "https://registry.npmjs.org/gulp-util/-/gulp-util-3.0.8.tgz",
+      "integrity": "sha1-AFTh50RQLifATBh8PsxQXdVLu08=",
+      "dev": true,
+      "requires": {
+        "array-differ": "^1.0.0",
+        "array-uniq": "^1.0.2",
+        "beeper": "^1.0.0",
+        "chalk": "^1.0.0",
+        "dateformat": "^2.0.0",
+        "fancy-log": "^1.1.0",
+        "gulplog": "^1.0.0",
+        "has-gulplog": "^0.1.0",
+        "lodash._reescape": "^3.0.0",
+        "lodash._reevaluate": "^3.0.0",
+        "lodash._reinterpolate": "^3.0.0",
+        "lodash.template": "^3.0.0",
+        "minimist": "^1.1.0",
+        "multipipe": "^0.1.2",
+        "object-assign": "^3.0.0",
+        "replace-ext": "0.0.1",
+        "through2": "^2.0.0",
+        "vinyl": "^0.5.0"
+      },
+      "dependencies": {
+        "ansi-styles": {
+          "version": "2.2.1",
+          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
+          "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
+          "dev": true
+        },
+        "chalk": {
+          "version": "1.1.3",
+          "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
+          "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
+          "dev": true,
+          "requires": {
+            "ansi-styles": "^2.2.1",
+            "escape-string-regexp": "^1.0.2",
+            "has-ansi": "^2.0.0",
+            "strip-ansi": "^3.0.0",
+            "supports-color": "^2.0.0"
+          }
+        },
+        "supports-color": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
+          "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
+          "dev": true
+        }
+      }
+    },
+    "gulplog": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/gulplog/-/gulplog-1.0.0.tgz",
+      "integrity": "sha1-4oxNRdBey77YGDY86PnFkmIp/+U=",
+      "dev": true,
+      "requires": {
+        "glogg": "^1.0.0"
+      }
+    },
+    "har-schema": {
+      "version": "1.0.5",
+      "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-1.0.5.tgz",
+      "integrity": "sha1-0mMTX0MwfALGAq/I/pWXDAFRNp4=",
+      "dev": true
+    },
+    "har-validator": {
+      "version": "4.2.1",
+      "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-4.2.1.tgz",
+      "integrity": "sha1-M0gdDxu/9gDdID11gSpqX7oALio=",
+      "dev": true,
+      "requires": {
+        "ajv": "^4.9.1",
+        "har-schema": "^1.0.5"
+      }
+    },
+    "has-ansi": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz",
+      "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=",
+      "dev": true,
+      "requires": {
+        "ansi-regex": "^2.0.0"
+      }
+    },
+    "has-flag": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+      "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
+      "dev": true
+    },
+    "has-gulplog": {
+      "version": "0.1.0",
+      "resolved": "https://registry.npmjs.org/has-gulplog/-/has-gulplog-0.1.0.tgz",
+      "integrity": "sha1-ZBTIKRNpfaUVkDl9r7EvIpZ4Ec4=",
+      "dev": true,
+      "requires": {
+        "sparkles": "^1.0.0"
+      }
+    },
+    "has-unicode": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz",
+      "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=",
+      "dev": true
+    },
+    "hawk": {
+      "version": "3.1.3",
+      "resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz",
+      "integrity": "sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ=",
+      "dev": true,
+      "requires": {
+        "boom": "2.x.x",
+        "cryptiles": "2.x.x",
+        "hoek": "2.x.x",
+        "sntp": "1.x.x"
+      }
+    },
+    "hoek": {
+      "version": "2.16.3",
+      "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz",
+      "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=",
+      "dev": true
+    },
+    "homedir-polyfill": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.1.tgz",
+      "integrity": "sha1-TCu8inWJmP7r9e1oWA921GdotLw=",
+      "dev": true,
+      "requires": {
+        "parse-passwd": "^1.0.0"
+      }
+    },
+    "hosted-git-info": {
+      "version": "2.6.0",
+      "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.6.0.tgz",
+      "integrity": "sha512-lIbgIIQA3lz5XaB6vxakj6sDHADJiZadYEJB+FgA+C4nubM1NwcuvUr9EJPmnH1skZqpqUzWborWo8EIUi0Sdw==",
+      "dev": true
+    },
+    "http-signature": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz",
+      "integrity": "sha1-33LiZwZs0Kxn+3at+OE0qPvPkb8=",
+      "dev": true,
+      "requires": {
+        "assert-plus": "^0.2.0",
+        "jsprim": "^1.2.2",
+        "sshpk": "^1.7.0"
+      }
+    },
+    "image-size": {
+      "version": "0.5.5",
+      "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz",
+      "integrity": "sha1-Cd/Uq50g4p6xw+gLiZA3jfnjy5w=",
+      "dev": true,
+      "optional": true
+    },
+    "in-publish": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/in-publish/-/in-publish-2.0.0.tgz",
+      "integrity": "sha1-4g/146KvwmkDILbcVSaCqcf631E=",
+      "dev": true
+    },
+    "indent-string": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz",
+      "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=",
+      "dev": true,
+      "requires": {
+        "repeating": "^2.0.0"
+      }
+    },
+    "inflight": {
+      "version": "1.0.6",
+      "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
+      "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
+      "dev": true,
+      "requires": {
+        "once": "^1.3.0",
+        "wrappy": "1"
+      }
+    },
+    "inherits": {
+      "version": "2.0.3",
+      "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
+      "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
+      "dev": true
+    },
+    "invert-kv": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz",
+      "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=",
+      "dev": true
+    },
+    "is-arrayish": {
+      "version": "0.2.1",
+      "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
+      "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=",
+      "dev": true
+    },
+    "is-binary-path": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz",
+      "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=",
+      "dev": true,
+      "requires": {
+        "binary-extensions": "^1.0.0"
+      }
+    },
+    "is-buffer": {
+      "version": "1.1.6",
+      "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
+      "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==",
+      "dev": true
+    },
+    "is-builtin-module": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz",
+      "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=",
+      "dev": true,
+      "requires": {
+        "builtin-modules": "^1.0.0"
+      }
+    },
+    "is-dotfile": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz",
+      "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=",
+      "dev": true
+    },
+    "is-equal-shallow": {
+      "version": "0.1.3",
+      "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz",
+      "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=",
+      "dev": true,
+      "requires": {
+        "is-primitive": "^2.0.0"
+      }
+    },
+    "is-extendable": {
+      "version": "0.1.1",
+      "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
+      "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=",
+      "dev": true
+    },
+    "is-extglob": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz",
+      "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=",
+      "dev": true
+    },
+    "is-finite": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz",
+      "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=",
+      "dev": true,
+      "requires": {
+        "number-is-nan": "^1.0.0"
+      }
+    },
+    "is-fullwidth-code-point": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
+      "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
+      "dev": true,
+      "requires": {
+        "number-is-nan": "^1.0.0"
+      }
+    },
+    "is-glob": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz",
+      "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=",
+      "dev": true,
+      "requires": {
+        "is-extglob": "^1.0.0"
+      }
+    },
+    "is-module": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz",
+      "integrity": "sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=",
+      "dev": true
+    },
+    "is-my-ip-valid": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/is-my-ip-valid/-/is-my-ip-valid-1.0.0.tgz",
+      "integrity": "sha512-gmh/eWXROncUzRnIa1Ubrt5b8ep/MGSnfAUI3aRp+sqTCs1tv1Isl8d8F6JmkN3dXKc3ehZMrtiPN9eL03NuaQ==",
+      "dev": true
+    },
+    "is-my-json-valid": {
+      "version": "2.17.2",
+      "resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.17.2.tgz",
+      "integrity": "sha512-IBhBslgngMQN8DDSppmgDv7RNrlFotuuDsKcrCP3+HbFaVivIBU7u9oiiErw8sH4ynx3+gOGQ3q2otkgiSi6kg==",
+      "dev": true,
+      "requires": {
+        "generate-function": "^2.0.0",
+        "generate-object-property": "^1.1.0",
+        "is-my-ip-valid": "^1.0.0",
+        "jsonpointer": "^4.0.0",
+        "xtend": "^4.0.0"
+      }
+    },
+    "is-number": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz",
+      "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=",
+      "dev": true,
+      "requires": {
+        "kind-of": "^3.0.2"
+      }
+    },
+    "is-posix-bracket": {
+      "version": "0.1.1",
+      "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz",
+      "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=",
+      "dev": true
+    },
+    "is-primitive": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz",
+      "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=",
+      "dev": true
+    },
+    "is-property": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz",
+      "integrity": "sha1-V/4cTkhHTt1lsJkR8msc1Ald2oQ=",
+      "dev": true
+    },
+    "is-stream": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz",
+      "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=",
+      "dev": true
+    },
+    "is-typedarray": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
+      "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=",
+      "dev": true
+    },
+    "is-utf8": {
+      "version": "0.2.1",
+      "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz",
+      "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=",
+      "dev": true
+    },
+    "is-valid-glob": {
+      "version": "0.3.0",
+      "resolved": "https://registry.npmjs.org/is-valid-glob/-/is-valid-glob-0.3.0.tgz",
+      "integrity": "sha1-1LVcafUYhvm2XHDWwmItN+KfSP4=",
+      "dev": true
+    },
+    "isarray": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+      "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
+      "dev": true
+    },
+    "isexe": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
+      "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=",
+      "dev": true
+    },
+    "isobject": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz",
+      "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=",
+      "dev": true,
+      "requires": {
+        "isarray": "1.0.0"
+      }
+    },
+    "isstream": {
+      "version": "0.1.2",
+      "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz",
+      "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=",
+      "dev": true
+    },
+    "js-base64": {
+      "version": "2.4.5",
+      "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.4.5.tgz",
+      "integrity": "sha512-aUnNwqMOXw3yvErjMPSQu6qIIzUmT1e5KcU1OZxRDU1g/am6mzBvcrmLAYwzmB59BHPrh5/tKaiF4OPhqRWESQ==",
+      "dev": true
+    },
+    "jsbn": {
+      "version": "0.1.1",
+      "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz",
+      "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=",
+      "dev": true,
+      "optional": true
+    },
+    "json-schema": {
+      "version": "0.2.3",
+      "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz",
+      "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=",
+      "dev": true
+    },
+    "json-stable-stringify": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz",
+      "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=",
+      "dev": true,
+      "requires": {
+        "jsonify": "~0.0.0"
+      }
+    },
+    "json-stringify-safe": {
+      "version": "5.0.1",
+      "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
+      "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=",
+      "dev": true
+    },
+    "jsonfile": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz",
+      "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=",
+      "dev": true,
+      "requires": {
+        "graceful-fs": "^4.1.6"
+      }
+    },
+    "jsonify": {
+      "version": "0.0.0",
+      "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz",
+      "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=",
+      "dev": true
+    },
+    "jsonpointer": {
+      "version": "4.0.1",
+      "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-4.0.1.tgz",
+      "integrity": "sha1-T9kss04OnbPInIYi7PUfm5eMbLk=",
+      "dev": true
+    },
+    "jsprim": {
+      "version": "1.4.1",
+      "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz",
+      "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=",
+      "dev": true,
+      "requires": {
+        "assert-plus": "1.0.0",
+        "extsprintf": "1.3.0",
+        "json-schema": "0.2.3",
+        "verror": "1.10.0"
+      },
+      "dependencies": {
+        "assert-plus": {
+          "version": "1.0.0",
+          "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
+          "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=",
+          "dev": true
+        }
+      }
+    },
+    "kind-of": {
+      "version": "3.2.2",
+      "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+      "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+      "dev": true,
+      "requires": {
+        "is-buffer": "^1.1.5"
+      }
+    },
+    "lazystream": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.0.tgz",
+      "integrity": "sha1-9plf4PggOS9hOWvolGJAe7dxaOQ=",
+      "dev": true,
+      "requires": {
+        "readable-stream": "^2.0.5"
+      }
+    },
+    "lcid": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz",
+      "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=",
+      "dev": true,
+      "requires": {
+        "invert-kv": "^1.0.0"
+      }
+    },
+    "less": {
+      "version": "2.7.3",
+      "resolved": "https://registry.npmjs.org/less/-/less-2.7.3.tgz",
+      "integrity": "sha512-KPdIJKWcEAb02TuJtaLrhue0krtRLoRoo7x6BNJIBelO00t/CCdJQUnHW5V34OnHMWzIktSalJxRO+FvytQlCQ==",
+      "dev": true,
+      "requires": {
+        "errno": "^0.1.1",
+        "graceful-fs": "^4.1.2",
+        "image-size": "~0.5.0",
+        "mime": "^1.2.11",
+        "mkdirp": "^0.5.0",
+        "promise": "^7.1.1",
+        "request": "2.81.0",
+        "source-map": "^0.5.3"
+      }
+    },
+    "load-json-file": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz",
+      "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=",
+      "dev": true,
+      "requires": {
+        "graceful-fs": "^4.1.2",
+        "parse-json": "^2.2.0",
+        "pify": "^2.0.0",
+        "pinkie-promise": "^2.0.0",
+        "strip-bom": "^2.0.0"
+      }
+    },
+    "lodash": {
+      "version": "4.17.10",
+      "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz",
+      "integrity": "sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg==",
+      "dev": true
+    },
+    "lodash._basecopy": {
+      "version": "3.0.1",
+      "resolved": "https://registry.npmjs.org/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz",
+      "integrity": "sha1-jaDmqHbPNEwK2KVIghEd08XHyjY=",
+      "dev": true
+    },
+    "lodash._basetostring": {
+      "version": "3.0.1",
+      "resolved": "https://registry.npmjs.org/lodash._basetostring/-/lodash._basetostring-3.0.1.tgz",
+      "integrity": "sha1-0YYdh3+CSlL2aYMtyvPuFVZqB9U=",
+      "dev": true
+    },
+    "lodash._basevalues": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/lodash._basevalues/-/lodash._basevalues-3.0.0.tgz",
+      "integrity": "sha1-W3dXYoAr3j0yl1A+JjAIIP32Ybc=",
+      "dev": true
+    },
+    "lodash._getnative": {
+      "version": "3.9.1",
+      "resolved": "https://registry.npmjs.org/lodash._getnative/-/lodash._getnative-3.9.1.tgz",
+      "integrity": "sha1-VwvH3t5G1hzc3mh9ZdPuy6o6r/U=",
       "dev": true
     },
-    "@angular/compiler": {
-      "version": "4.4.6",
-      "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-4.4.6.tgz",
-      "integrity": "sha1-LuH68lt1fh0SiXkHS+f65SmzvCA=",
+    "lodash._isiterateecall": {
+      "version": "3.0.9",
+      "resolved": "https://registry.npmjs.org/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz",
+      "integrity": "sha1-UgOte6Ql+uhCRg5pbbnPPmqsBXw=",
       "dev": true
     },
-    "@angular/core": {
-      "version": "4.4.6",
-      "resolved": "https://registry.npmjs.org/@angular/core/-/core-4.4.6.tgz",
-      "integrity": "sha1-EwMf0Q3P5DiHVBmzjyESCVi8I1Q=",
+    "lodash._reescape": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/lodash._reescape/-/lodash._reescape-3.0.0.tgz",
+      "integrity": "sha1-Kx1vXf4HyKNVdT5fJ/rH8c3hYWo=",
       "dev": true
     },
-    "@angular/http": {
-      "version": "4.4.6",
-      "resolved": "https://registry.npmjs.org/@angular/http/-/http-4.4.6.tgz",
-      "integrity": "sha1-CvaAxnEL3AJtlA4iXP0PalwAXQw=",
+    "lodash._reevaluate": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/lodash._reevaluate/-/lodash._reevaluate-3.0.0.tgz",
+      "integrity": "sha1-WLx0xAZklTrgsSTYBpltrKQx4u0=",
       "dev": true
     },
-    "@angular/platform-browser": {
-      "version": "4.4.6",
-      "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-4.4.6.tgz",
-      "integrity": "sha1-qYOcVH4bZU+h0kqJeAyLpquNzOA=",
+    "lodash._reinterpolate": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz",
+      "integrity": "sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=",
+      "dev": true
+    },
+    "lodash._root": {
+      "version": "3.0.1",
+      "resolved": "https://registry.npmjs.org/lodash._root/-/lodash._root-3.0.1.tgz",
+      "integrity": "sha1-+6HEUkwZ7ppfgTa0YJ8BfPTe1pI=",
+      "dev": true
+    },
+    "lodash.assign": {
+      "version": "4.2.0",
+      "resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-4.2.0.tgz",
+      "integrity": "sha1-DZnzzNem0mHRm9rrkkUAXShYCOc=",
+      "dev": true
+    },
+    "lodash.clonedeep": {
+      "version": "4.5.0",
+      "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz",
+      "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=",
+      "dev": true
+    },
+    "lodash.escape": {
+      "version": "3.2.0",
+      "resolved": "https://registry.npmjs.org/lodash.escape/-/lodash.escape-3.2.0.tgz",
+      "integrity": "sha1-mV7g3BjBtIzJLv+ucaEKq1tIdpg=",
+      "dev": true,
+      "requires": {
+        "lodash._root": "^3.0.0"
+      }
+    },
+    "lodash.isarguments": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz",
+      "integrity": "sha1-L1c9hcaiQon/AGY7SRwdM4/zRYo=",
+      "dev": true
+    },
+    "lodash.isarray": {
+      "version": "3.0.4",
+      "resolved": "https://registry.npmjs.org/lodash.isarray/-/lodash.isarray-3.0.4.tgz",
+      "integrity": "sha1-eeTriMNqgSKvhvhEqpvNhRtfu1U=",
+      "dev": true
+    },
+    "lodash.isequal": {
+      "version": "4.5.0",
+      "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz",
+      "integrity": "sha1-QVxEePK8wwEgwizhDtMib30+GOA=",
+      "dev": true
+    },
+    "lodash.keys": {
+      "version": "3.1.2",
+      "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-3.1.2.tgz",
+      "integrity": "sha1-TbwEcrFWvlCgsoaFXRvQsMZWCYo=",
+      "dev": true,
+      "requires": {
+        "lodash._getnative": "^3.0.0",
+        "lodash.isarguments": "^3.0.0",
+        "lodash.isarray": "^3.0.0"
+      }
+    },
+    "lodash.mergewith": {
+      "version": "4.6.1",
+      "resolved": "https://registry.npmjs.org/lodash.mergewith/-/lodash.mergewith-4.6.1.tgz",
+      "integrity": "sha512-eWw5r+PYICtEBgrBE5hhlT6aAa75f411bgDz/ZL2KZqYV03USvucsxcHUIlGTDTECs1eunpI7HOV7U+WLDvNdQ==",
+      "dev": true
+    },
+    "lodash.restparam": {
+      "version": "3.6.1",
+      "resolved": "https://registry.npmjs.org/lodash.restparam/-/lodash.restparam-3.6.1.tgz",
+      "integrity": "sha1-k2pOMJ7zMKdkXtQUWYbIWuWyCAU=",
+      "dev": true
+    },
+    "lodash.template": {
+      "version": "3.6.2",
+      "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-3.6.2.tgz",
+      "integrity": "sha1-+M3sxhaaJVvpCYrosMU9N4kx0U8=",
+      "dev": true,
+      "requires": {
+        "lodash._basecopy": "^3.0.0",
+        "lodash._basetostring": "^3.0.0",
+        "lodash._basevalues": "^3.0.0",
+        "lodash._isiterateecall": "^3.0.0",
+        "lodash._reinterpolate": "^3.0.0",
+        "lodash.escape": "^3.0.0",
+        "lodash.keys": "^3.0.0",
+        "lodash.restparam": "^3.0.0",
+        "lodash.templatesettings": "^3.0.0"
+      }
+    },
+    "lodash.templatesettings": {
+      "version": "3.1.1",
+      "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-3.1.1.tgz",
+      "integrity": "sha1-+zB4RHU7Zrnxr6VOJix0UwfbqOU=",
+      "dev": true,
+      "requires": {
+        "lodash._reinterpolate": "^3.0.0",
+        "lodash.escape": "^3.0.0"
+      }
+    },
+    "loud-rejection": {
+      "version": "1.6.0",
+      "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz",
+      "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=",
+      "dev": true,
+      "requires": {
+        "currently-unhandled": "^0.4.1",
+        "signal-exit": "^3.0.0"
+      }
+    },
+    "lru-cache": {
+      "version": "4.1.3",
+      "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.3.tgz",
+      "integrity": "sha512-fFEhvcgzuIoJVUF8fYr5KR0YqxD238zgObTps31YdADwPPAp82a4M8TrckkWyx7ekNlf9aBcVn81cFwwXngrJA==",
+      "dev": true,
+      "requires": {
+        "pseudomap": "^1.0.2",
+        "yallist": "^2.1.2"
+      }
+    },
+    "magic-string": {
+      "version": "0.22.5",
+      "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.22.5.tgz",
+      "integrity": "sha512-oreip9rJZkzvA8Qzk9HFs8fZGF/u7H/gtrE8EN6RjKJ9kh2HlC+yQ2QezifqTZfGyiuAV0dRv5a+y/8gBb1m9w==",
+      "dev": true,
+      "requires": {
+        "vlq": "^0.2.2"
+      }
+    },
+    "make-error": {
+      "version": "1.3.4",
+      "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.4.tgz",
+      "integrity": "sha512-0Dab5btKVPhibSalc9QGXb559ED7G7iLjFXBaj9Wq8O3vorueR5K5jaE3hkG6ZQINyhA/JgG6Qk4qdFQjsYV6g==",
+      "dev": true
+    },
+    "map-obj": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz",
+      "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=",
+      "dev": true
+    },
+    "math-random": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/math-random/-/math-random-1.0.1.tgz",
+      "integrity": "sha1-izqsWIuKZuSXXjzepn97sylgH6w=",
+      "dev": true
+    },
+    "meow": {
+      "version": "3.7.0",
+      "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz",
+      "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=",
+      "dev": true,
+      "requires": {
+        "camelcase-keys": "^2.0.0",
+        "decamelize": "^1.1.2",
+        "loud-rejection": "^1.0.0",
+        "map-obj": "^1.0.1",
+        "minimist": "^1.1.3",
+        "normalize-package-data": "^2.3.4",
+        "object-assign": "^4.0.1",
+        "read-pkg-up": "^1.0.1",
+        "redent": "^1.0.0",
+        "trim-newlines": "^1.0.0"
+      },
+      "dependencies": {
+        "object-assign": {
+          "version": "4.1.1",
+          "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
+          "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=",
+          "dev": true
+        }
+      }
+    },
+    "merge-stream": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-1.0.1.tgz",
+      "integrity": "sha1-QEEgLVCKNCugAXQAjfDCUbjBNeE=",
+      "dev": true,
+      "requires": {
+        "readable-stream": "^2.0.1"
+      }
+    },
+    "micromatch": {
+      "version": "2.3.11",
+      "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz",
+      "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=",
+      "dev": true,
+      "requires": {
+        "arr-diff": "^2.0.0",
+        "array-unique": "^0.2.1",
+        "braces": "^1.8.2",
+        "expand-brackets": "^0.1.4",
+        "extglob": "^0.3.1",
+        "filename-regex": "^2.0.0",
+        "is-extglob": "^1.0.0",
+        "is-glob": "^2.0.1",
+        "kind-of": "^3.0.2",
+        "normalize-path": "^2.0.1",
+        "object.omit": "^2.0.0",
+        "parse-glob": "^3.0.4",
+        "regex-cache": "^0.4.2"
+      }
+    },
+    "mime": {
+      "version": "1.6.0",
+      "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
+      "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==",
+      "dev": true,
+      "optional": true
+    },
+    "mime-db": {
+      "version": "1.33.0",
+      "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz",
+      "integrity": "sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==",
+      "dev": true
+    },
+    "mime-types": {
+      "version": "2.1.18",
+      "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz",
+      "integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==",
+      "dev": true,
+      "requires": {
+        "mime-db": "~1.33.0"
+      }
+    },
+    "minimatch": {
+      "version": "3.0.4",
+      "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
+      "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
+      "dev": true,
+      "requires": {
+        "brace-expansion": "^1.1.7"
+      }
+    },
+    "minimist": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
+      "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=",
+      "dev": true
+    },
+    "mkdirp": {
+      "version": "0.5.1",
+      "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
+      "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
+      "dev": true,
+      "requires": {
+        "minimist": "0.0.8"
+      },
+      "dependencies": {
+        "minimist": {
+          "version": "0.0.8",
+          "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
+          "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=",
+          "dev": true
+        }
+      }
+    },
+    "ms": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+      "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
+      "dev": true
+    },
+    "multipipe": {
+      "version": "0.1.2",
+      "resolved": "https://registry.npmjs.org/multipipe/-/multipipe-0.1.2.tgz",
+      "integrity": "sha1-Ko8t33Du1WTf8tV/HhoTfZ8FB4s=",
+      "dev": true,
+      "requires": {
+        "duplexer2": "0.0.2"
+      }
+    },
+    "nan": {
+      "version": "2.10.0",
+      "resolved": "https://registry.npmjs.org/nan/-/nan-2.10.0.tgz",
+      "integrity": "sha512-bAdJv7fBLhWC+/Bls0Oza+mvTaNQtP+1RyhhhvD95pgUJz6XM5IzgmxOkItJ9tkoCiplvAnXI1tNmmUD/eScyA==",
+      "dev": true
+    },
+    "ng-packagr": {
+      "version": "1.7.0",
+      "resolved": "https://registry.npmjs.org/ng-packagr/-/ng-packagr-1.7.0.tgz",
+      "integrity": "sha512-A7TX80ZNTCZYnhLCdSzuW+iXfeOkJ1yH3EwSdbxC546ztvpqBXoIG6ytTJsOskMi9R1uFn2P7wcqA8+MdxfNZg==",
+      "dev": true,
+      "requires": {
+        "@angular/tsc-wrapped": "^4.4.5",
+        "@ngtools/json-schema": "^1.1.0",
+        "autoprefixer": "^7.1.1",
+        "browserslist": "^2.1.5",
+        "commander": "^2.11.0",
+        "cpx": "^1.5.0",
+        "fs-extra": "^4.0.2",
+        "glob": "^7.1.2",
+        "gulp-inline-ng2-template": "^4.0.0",
+        "less": "^2.7.2",
+        "lodash": "^4.17.4",
+        "node-sass": "^4.5.3",
+        "postcss": "^6.0.2",
+        "read-file": "^0.2.0",
+        "rimraf": "^2.6.1",
+        "rollup": "^0.51.0",
+        "rollup-plugin-commonjs": "^8.2.1",
+        "rollup-plugin-node-resolve": "^3.0.0",
+        "sorcery": "^0.10.0",
+        "stylus": "^0.54.5",
+        "ts-node": "^3.0.4",
+        "uglify-js": "^3.0.7",
+        "vinyl-fs": "^2.4.4"
+      }
+    },
+    "node-gyp": {
+      "version": "3.7.0",
+      "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-3.7.0.tgz",
+      "integrity": "sha512-qDQE/Ft9xXP6zphwx4sD0t+VhwV7yFaloMpfbL2QnnDZcyaiakWlLdtFGGQfTAwpFHdpbRhRxVhIHN1OKAjgbg==",
+      "dev": true,
+      "requires": {
+        "fstream": "^1.0.0",
+        "glob": "^7.0.3",
+        "graceful-fs": "^4.1.2",
+        "mkdirp": "^0.5.0",
+        "nopt": "2 || 3",
+        "npmlog": "0 || 1 || 2 || 3 || 4",
+        "osenv": "0",
+        "request": ">=2.9.0 <2.82.0",
+        "rimraf": "2",
+        "semver": "~5.3.0",
+        "tar": "^2.0.0",
+        "which": "1"
+      },
+      "dependencies": {
+        "semver": {
+          "version": "5.3.0",
+          "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz",
+          "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=",
+          "dev": true
+        }
+      }
+    },
+    "node-sass": {
+      "version": "4.9.0",
+      "resolved": "https://registry.npmjs.org/node-sass/-/node-sass-4.9.0.tgz",
+      "integrity": "sha512-QFHfrZl6lqRU3csypwviz2XLgGNOoWQbo2GOvtsfQqOfL4cy1BtWnhx/XUeAO9LT3ahBzSRXcEO6DdvAH9DzSg==",
+      "dev": true,
+      "requires": {
+        "async-foreach": "^0.1.3",
+        "chalk": "^1.1.1",
+        "cross-spawn": "^3.0.0",
+        "gaze": "^1.0.0",
+        "get-stdin": "^4.0.1",
+        "glob": "^7.0.3",
+        "in-publish": "^2.0.0",
+        "lodash.assign": "^4.2.0",
+        "lodash.clonedeep": "^4.3.2",
+        "lodash.mergewith": "^4.6.0",
+        "meow": "^3.7.0",
+        "mkdirp": "^0.5.1",
+        "nan": "^2.10.0",
+        "node-gyp": "^3.3.1",
+        "npmlog": "^4.0.0",
+        "request": "~2.79.0",
+        "sass-graph": "^2.2.4",
+        "stdout-stream": "^1.4.0",
+        "true-case-path": "^1.0.2"
+      },
+      "dependencies": {
+        "ansi-styles": {
+          "version": "2.2.1",
+          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
+          "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
+          "dev": true
+        },
+        "caseless": {
+          "version": "0.11.0",
+          "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.11.0.tgz",
+          "integrity": "sha1-cVuW6phBWTzDMGeSP17GDr2k99c=",
+          "dev": true
+        },
+        "chalk": {
+          "version": "1.1.3",
+          "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
+          "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
+          "dev": true,
+          "requires": {
+            "ansi-styles": "^2.2.1",
+            "escape-string-regexp": "^1.0.2",
+            "has-ansi": "^2.0.0",
+            "strip-ansi": "^3.0.0",
+            "supports-color": "^2.0.0"
+          }
+        },
+        "har-validator": {
+          "version": "2.0.6",
+          "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-2.0.6.tgz",
+          "integrity": "sha1-zcvAgYgmWtEZtqWnyKtw7s+10n0=",
+          "dev": true,
+          "requires": {
+            "chalk": "^1.1.1",
+            "commander": "^2.9.0",
+            "is-my-json-valid": "^2.12.4",
+            "pinkie-promise": "^2.0.0"
+          }
+        },
+        "qs": {
+          "version": "6.3.2",
+          "resolved": "https://registry.npmjs.org/qs/-/qs-6.3.2.tgz",
+          "integrity": "sha1-51vV9uJoEioqDgvaYwslUMFmUCw=",
+          "dev": true
+        },
+        "request": {
+          "version": "2.79.0",
+          "resolved": "https://registry.npmjs.org/request/-/request-2.79.0.tgz",
+          "integrity": "sha1-Tf5b9r6LjNw3/Pk+BLZVd3InEN4=",
+          "dev": true,
+          "requires": {
+            "aws-sign2": "~0.6.0",
+            "aws4": "^1.2.1",
+            "caseless": "~0.11.0",
+            "combined-stream": "~1.0.5",
+            "extend": "~3.0.0",
+            "forever-agent": "~0.6.1",
+            "form-data": "~2.1.1",
+            "har-validator": "~2.0.6",
+            "hawk": "~3.1.3",
+            "http-signature": "~1.1.0",
+            "is-typedarray": "~1.0.0",
+            "isstream": "~0.1.2",
+            "json-stringify-safe": "~5.0.1",
+            "mime-types": "~2.1.7",
+            "oauth-sign": "~0.8.1",
+            "qs": "~6.3.0",
+            "stringstream": "~0.0.4",
+            "tough-cookie": "~2.3.0",
+            "tunnel-agent": "~0.4.1",
+            "uuid": "^3.0.0"
+          }
+        },
+        "supports-color": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
+          "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
+          "dev": true
+        },
+        "tunnel-agent": {
+          "version": "0.4.3",
+          "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.4.3.tgz",
+          "integrity": "sha1-Y3PbdpCf5XDgjXNYM2Xtgop07us=",
+          "dev": true
+        }
+      }
+    },
+    "nopt": {
+      "version": "3.0.6",
+      "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz",
+      "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=",
+      "dev": true,
+      "requires": {
+        "abbrev": "1"
+      }
+    },
+    "normalize-package-data": {
+      "version": "2.4.0",
+      "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz",
+      "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==",
+      "dev": true,
+      "requires": {
+        "hosted-git-info": "^2.1.4",
+        "is-builtin-module": "^1.0.0",
+        "semver": "2 || 3 || 4 || 5",
+        "validate-npm-package-license": "^3.0.1"
+      }
+    },
+    "normalize-path": {
+      "version": "2.1.1",
+      "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz",
+      "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=",
+      "dev": true,
+      "requires": {
+        "remove-trailing-separator": "^1.0.1"
+      }
+    },
+    "normalize-range": {
+      "version": "0.1.2",
+      "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz",
+      "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=",
+      "dev": true
+    },
+    "npmlog": {
+      "version": "4.1.2",
+      "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz",
+      "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==",
+      "dev": true,
+      "requires": {
+        "are-we-there-yet": "~1.1.2",
+        "console-control-strings": "~1.1.0",
+        "gauge": "~2.7.3",
+        "set-blocking": "~2.0.0"
+      }
+    },
+    "num2fraction": {
+      "version": "1.2.2",
+      "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz",
+      "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=",
+      "dev": true
+    },
+    "number-is-nan": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz",
+      "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=",
+      "dev": true
+    },
+    "oauth-sign": {
+      "version": "0.8.2",
+      "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz",
+      "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=",
+      "dev": true
+    },
+    "object-assign": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-3.0.0.tgz",
+      "integrity": "sha1-m+3VygiXlJvKR+f/QIBi1Un1h/I=",
+      "dev": true
+    },
+    "object.omit": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz",
+      "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=",
+      "dev": true,
+      "requires": {
+        "for-own": "^0.1.4",
+        "is-extendable": "^0.1.1"
+      }
+    },
+    "once": {
+      "version": "1.4.0",
+      "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
+      "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
+      "dev": true,
+      "requires": {
+        "wrappy": "1"
+      }
+    },
+    "ordered-read-streams": {
+      "version": "0.3.0",
+      "resolved": "https://registry.npmjs.org/ordered-read-streams/-/ordered-read-streams-0.3.0.tgz",
+      "integrity": "sha1-cTfmmzKYuzQiR6G77jiByA4v14s=",
+      "dev": true,
+      "requires": {
+        "is-stream": "^1.0.1",
+        "readable-stream": "^2.0.1"
+      }
+    },
+    "os-homedir": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz",
+      "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=",
+      "dev": true
+    },
+    "os-locale": {
+      "version": "1.4.0",
+      "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz",
+      "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=",
+      "dev": true,
+      "requires": {
+        "lcid": "^1.0.0"
+      }
+    },
+    "os-tmpdir": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
+      "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=",
+      "dev": true
+    },
+    "osenv": {
+      "version": "0.1.5",
+      "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz",
+      "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==",
+      "dev": true,
+      "requires": {
+        "os-homedir": "^1.0.0",
+        "os-tmpdir": "^1.0.0"
+      }
+    },
+    "parse-glob": {
+      "version": "3.0.4",
+      "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz",
+      "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=",
+      "dev": true,
+      "requires": {
+        "glob-base": "^0.3.0",
+        "is-dotfile": "^1.0.0",
+        "is-extglob": "^1.0.0",
+        "is-glob": "^2.0.0"
+      }
+    },
+    "parse-json": {
+      "version": "2.2.0",
+      "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz",
+      "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=",
+      "dev": true,
+      "requires": {
+        "error-ex": "^1.2.0"
+      }
+    },
+    "parse-passwd": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz",
+      "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=",
+      "dev": true
+    },
+    "path-dirname": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz",
+      "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=",
+      "dev": true
+    },
+    "path-exists": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz",
+      "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=",
+      "dev": true,
+      "requires": {
+        "pinkie-promise": "^2.0.0"
+      }
+    },
+    "path-is-absolute": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
+      "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
       "dev": true
     },
+    "path-parse": {
+      "version": "1.0.5",
+      "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz",
+      "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=",
+      "dev": true
+    },
+    "path-type": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz",
+      "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=",
+      "dev": true,
+      "requires": {
+        "graceful-fs": "^4.1.2",
+        "pify": "^2.0.0",
+        "pinkie-promise": "^2.0.0"
+      }
+    },
+    "performance-now": {
+      "version": "0.2.0",
+      "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-0.2.0.tgz",
+      "integrity": "sha1-M+8wxcd9TqIcWlOGnZG1bY8lVeU=",
+      "dev": true
+    },
+    "pify": {
+      "version": "2.3.0",
+      "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
+      "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
+      "dev": true
+    },
+    "pinkie": {
+      "version": "2.0.4",
+      "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz",
+      "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=",
+      "dev": true
+    },
+    "pinkie-promise": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz",
+      "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=",
+      "dev": true,
+      "requires": {
+        "pinkie": "^2.0.0"
+      }
+    },
+    "postcss": {
+      "version": "6.0.22",
+      "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.22.tgz",
+      "integrity": "sha512-Toc9lLoUASwGqxBSJGTVcOQiDqjK+Z2XlWBg+IgYwQMY9vA2f7iMpXVc1GpPcfTSyM5lkxNo0oDwDRO+wm7XHA==",
+      "dev": true,
+      "requires": {
+        "chalk": "^2.4.1",
+        "source-map": "^0.6.1",
+        "supports-color": "^5.4.0"
+      },
+      "dependencies": {
+        "source-map": {
+          "version": "0.6.1",
+          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+          "dev": true
+        }
+      }
+    },
+    "postcss-value-parser": {
+      "version": "3.3.0",
+      "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.0.tgz",
+      "integrity": "sha1-h/OPnxj3dKSrTIojL1xc6IcqnRU=",
+      "dev": true
+    },
+    "preserve": {
+      "version": "0.2.0",
+      "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz",
+      "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=",
+      "dev": true
+    },
+    "private": {
+      "version": "0.1.8",
+      "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz",
+      "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==",
+      "dev": true
+    },
+    "process-nextick-args": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz",
+      "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==",
+      "dev": true
+    },
+    "promise": {
+      "version": "7.3.1",
+      "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz",
+      "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==",
+      "dev": true,
+      "optional": true,
+      "requires": {
+        "asap": "~2.0.3"
+      }
+    },
+    "prr": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz",
+      "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=",
+      "dev": true,
+      "optional": true
+    },
+    "pseudomap": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz",
+      "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=",
+      "dev": true
+    },
+    "punycode": {
+      "version": "1.4.1",
+      "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
+      "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=",
+      "dev": true
+    },
+    "qs": {
+      "version": "6.4.0",
+      "resolved": "https://registry.npmjs.org/qs/-/qs-6.4.0.tgz",
+      "integrity": "sha1-E+JtKK1rD/qpExLNO/cI7TUecjM=",
+      "dev": true
+    },
+    "randomatic": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-3.0.0.tgz",
+      "integrity": "sha512-VdxFOIEY3mNO5PtSRkkle/hPJDHvQhK21oa73K4yAc9qmp6N429gAyF1gZMOTMeS0/AYzaV/2Trcef+NaIonSA==",
+      "dev": true,
+      "requires": {
+        "is-number": "^4.0.0",
+        "kind-of": "^6.0.0",
+        "math-random": "^1.0.1"
+      },
+      "dependencies": {
+        "is-number": {
+          "version": "4.0.0",
+          "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz",
+          "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==",
+          "dev": true
+        },
+        "kind-of": {
+          "version": "6.0.2",
+          "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz",
+          "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==",
+          "dev": true
+        }
+      }
+    },
+    "read-file": {
+      "version": "0.2.0",
+      "resolved": "https://registry.npmjs.org/read-file/-/read-file-0.2.0.tgz",
+      "integrity": "sha1-cMa6+IQux9FUD5gf0Oau1Mgb1UU=",
+      "dev": true
+    },
+    "read-pkg": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz",
+      "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=",
+      "dev": true,
+      "requires": {
+        "load-json-file": "^1.0.0",
+        "normalize-package-data": "^2.3.2",
+        "path-type": "^1.0.0"
+      }
+    },
+    "read-pkg-up": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz",
+      "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=",
+      "dev": true,
+      "requires": {
+        "find-up": "^1.0.0",
+        "read-pkg": "^1.0.0"
+      }
+    },
+    "readable-stream": {
+      "version": "2.3.6",
+      "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
+      "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
+      "dev": true,
+      "requires": {
+        "core-util-is": "~1.0.0",
+        "inherits": "~2.0.3",
+        "isarray": "~1.0.0",
+        "process-nextick-args": "~2.0.0",
+        "safe-buffer": "~5.1.1",
+        "string_decoder": "~1.1.1",
+        "util-deprecate": "~1.0.1"
+      }
+    },
+    "readdirp": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.1.0.tgz",
+      "integrity": "sha1-TtCtBg3zBzMAxIRANz9y0cxkLXg=",
+      "dev": true,
+      "requires": {
+        "graceful-fs": "^4.1.2",
+        "minimatch": "^3.0.2",
+        "readable-stream": "^2.0.2",
+        "set-immediate-shim": "^1.0.1"
+      }
+    },
+    "recast": {
+      "version": "0.11.23",
+      "resolved": "https://registry.npmjs.org/recast/-/recast-0.11.23.tgz",
+      "integrity": "sha1-RR/TAEqx5N+bTktmN2sqIZEkYtM=",
+      "dev": true,
+      "requires": {
+        "ast-types": "0.9.6",
+        "esprima": "~3.1.0",
+        "private": "~0.1.5",
+        "source-map": "~0.5.0"
+      }
+    },
+    "redent": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz",
+      "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=",
+      "dev": true,
+      "requires": {
+        "indent-string": "^2.1.0",
+        "strip-indent": "^1.0.1"
+      }
+    },
     "reflect-metadata": {
       "version": "0.1.10",
       "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.10.tgz",
       "integrity": "sha1-tPg3BEFqytiZiMmxVjXUfgO5NEo=",
       "dev": true
     },
+    "regenerator-runtime": {
+      "version": "0.11.1",
+      "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz",
+      "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==",
+      "dev": true
+    },
+    "regex-cache": {
+      "version": "0.4.4",
+      "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz",
+      "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==",
+      "dev": true,
+      "requires": {
+        "is-equal-shallow": "^0.1.3"
+      }
+    },
+    "remove-trailing-separator": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz",
+      "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=",
+      "dev": true
+    },
+    "repeat-element": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz",
+      "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=",
+      "dev": true
+    },
+    "repeat-string": {
+      "version": "1.6.1",
+      "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz",
+      "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=",
+      "dev": true
+    },
+    "repeating": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz",
+      "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=",
+      "dev": true,
+      "requires": {
+        "is-finite": "^1.0.0"
+      }
+    },
+    "replace-ext": {
+      "version": "0.0.1",
+      "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-0.0.1.tgz",
+      "integrity": "sha1-KbvZIHinOfC8zitO5B6DeVNSKSQ=",
+      "dev": true
+    },
+    "request": {
+      "version": "2.81.0",
+      "resolved": "https://registry.npmjs.org/request/-/request-2.81.0.tgz",
+      "integrity": "sha1-xpKJRqDgbF+Nb4qTM0af/aRimKA=",
+      "dev": true,
+      "requires": {
+        "aws-sign2": "~0.6.0",
+        "aws4": "^1.2.1",
+        "caseless": "~0.12.0",
+        "combined-stream": "~1.0.5",
+        "extend": "~3.0.0",
+        "forever-agent": "~0.6.1",
+        "form-data": "~2.1.1",
+        "har-validator": "~4.2.1",
+        "hawk": "~3.1.3",
+        "http-signature": "~1.1.0",
+        "is-typedarray": "~1.0.0",
+        "isstream": "~0.1.2",
+        "json-stringify-safe": "~5.0.1",
+        "mime-types": "~2.1.7",
+        "oauth-sign": "~0.8.1",
+        "performance-now": "^0.2.0",
+        "qs": "~6.4.0",
+        "safe-buffer": "^5.0.1",
+        "stringstream": "~0.0.4",
+        "tough-cookie": "~2.3.0",
+        "tunnel-agent": "^0.6.0",
+        "uuid": "^3.0.0"
+      }
+    },
+    "require-directory": {
+      "version": "2.1.1",
+      "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
+      "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=",
+      "dev": true
+    },
+    "require-main-filename": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz",
+      "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=",
+      "dev": true
+    },
+    "resolve": {
+      "version": "1.7.1",
+      "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.7.1.tgz",
+      "integrity": "sha512-c7rwLofp8g1U+h1KNyHL/jicrKg1Ek4q+Lr33AL65uZTinUZHe30D5HlyN5V9NW0JX1D5dXQ4jqW5l7Sy/kGfw==",
+      "dev": true,
+      "requires": {
+        "path-parse": "^1.0.5"
+      }
+    },
+    "rimraf": {
+      "version": "2.6.2",
+      "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz",
+      "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==",
+      "dev": true,
+      "requires": {
+        "glob": "^7.0.5"
+      }
+    },
+    "rollup": {
+      "version": "0.51.8",
+      "resolved": "https://registry.npmjs.org/rollup/-/rollup-0.51.8.tgz",
+      "integrity": "sha512-e7FwWxqb4vhdonmwRH06nqC9wR6h1kZojK2D+lN1xjiB8FDtAKgy7o+r8fCXVzQZ1ZCdcVlls3mTq5g6u38Jew==",
+      "dev": true
+    },
+    "rollup-plugin-commonjs": {
+      "version": "8.4.1",
+      "resolved": "https://registry.npmjs.org/rollup-plugin-commonjs/-/rollup-plugin-commonjs-8.4.1.tgz",
+      "integrity": "sha512-mg+WuD+jlwoo8bJtW3Mvx7Tz6TsIdMsdhuvCnDMoyjh0oxsVgsjB/N0X984RJCWwc5IIiqNVJhXeeITcc73++A==",
+      "dev": true,
+      "requires": {
+        "acorn": "^5.2.1",
+        "estree-walker": "^0.5.0",
+        "magic-string": "^0.22.4",
+        "resolve": "^1.4.0",
+        "rollup-pluginutils": "^2.0.1"
+      }
+    },
+    "rollup-plugin-node-resolve": {
+      "version": "3.3.0",
+      "resolved": "https://registry.npmjs.org/rollup-plugin-node-resolve/-/rollup-plugin-node-resolve-3.3.0.tgz",
+      "integrity": "sha512-9zHGr3oUJq6G+X0oRMYlzid9fXicBdiydhwGChdyeNRGPcN/majtegApRKHLR5drboUvEWU+QeUmGTyEZQs3WA==",
+      "dev": true,
+      "requires": {
+        "builtin-modules": "^2.0.0",
+        "is-module": "^1.0.0",
+        "resolve": "^1.1.6"
+      },
+      "dependencies": {
+        "builtin-modules": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-2.0.0.tgz",
+          "integrity": "sha512-3U5kUA5VPsRUA3nofm/BXX7GVHKfxz0hOBAPxXrIvHzlDRkQVqEn6yi8QJegxl4LzOHLdvb7XF5dVawa/VVYBg==",
+          "dev": true
+        }
+      }
+    },
+    "rollup-pluginutils": {
+      "version": "2.3.0",
+      "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.3.0.tgz",
+      "integrity": "sha512-xB6hsRsjdJdIYWEyYUJy/3ki5g69wrf0luHPGNK3ZSocV6HLNfio59l3dZ3TL4xUwEKgROhFi9jOCt6c5gfUWw==",
+      "dev": true,
+      "requires": {
+        "estree-walker": "^0.5.2",
+        "micromatch": "^2.3.11"
+      }
+    },
     "rxjs": {
       "version": "5.5.2",
       "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-5.5.2.tgz",
       "integrity": "sha512-oRYoIKWBU3Ic37fLA5VJu31VqQO4bWubRntcHSJ+cwaDQBwdnZ9x4zmhJfm/nFQ2E82/I4loSioHnACamrKGgA==",
+      "dev": true,
+      "requires": {
+        "symbol-observable": "^1.0.1"
+      }
+    },
+    "safe-buffer": {
+      "version": "5.1.2",
+      "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
+      "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
+      "dev": true
+    },
+    "safer-buffer": {
+      "version": "2.1.2",
+      "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
+      "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
+      "dev": true
+    },
+    "sander": {
+      "version": "0.5.1",
+      "resolved": "https://registry.npmjs.org/sander/-/sander-0.5.1.tgz",
+      "integrity": "sha1-dB4kXiMfB8r7b98PEzrfohalAq0=",
+      "dev": true,
+      "requires": {
+        "es6-promise": "^3.1.2",
+        "graceful-fs": "^4.1.3",
+        "mkdirp": "^0.5.1",
+        "rimraf": "^2.5.2"
+      }
+    },
+    "sass-graph": {
+      "version": "2.2.4",
+      "resolved": "https://registry.npmjs.org/sass-graph/-/sass-graph-2.2.4.tgz",
+      "integrity": "sha1-E/vWPNHK8JCLn9k0dq1DpR0eC0k=",
+      "dev": true,
+      "requires": {
+        "glob": "^7.0.0",
+        "lodash": "^4.0.0",
+        "scss-tokenizer": "^0.2.3",
+        "yargs": "^7.0.0"
+      }
+    },
+    "sax": {
+      "version": "0.5.8",
+      "resolved": "https://registry.npmjs.org/sax/-/sax-0.5.8.tgz",
+      "integrity": "sha1-1HLbIo6zMcJQaw6MFVJK25OdEsE=",
+      "dev": true
+    },
+    "scss-tokenizer": {
+      "version": "0.2.3",
+      "resolved": "https://registry.npmjs.org/scss-tokenizer/-/scss-tokenizer-0.2.3.tgz",
+      "integrity": "sha1-jrBtualyMzOCTT9VMGQRSYR85dE=",
+      "dev": true,
+      "requires": {
+        "js-base64": "^2.1.8",
+        "source-map": "^0.4.2"
+      },
+      "dependencies": {
+        "source-map": {
+          "version": "0.4.4",
+          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz",
+          "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=",
+          "dev": true,
+          "requires": {
+            "amdefine": ">=0.0.4"
+          }
+        }
+      }
+    },
+    "semver": {
+      "version": "5.5.0",
+      "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz",
+      "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==",
+      "dev": true
+    },
+    "set-blocking": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz",
+      "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=",
+      "dev": true
+    },
+    "set-immediate-shim": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz",
+      "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=",
+      "dev": true
+    },
+    "shell-quote": {
+      "version": "1.6.1",
+      "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.6.1.tgz",
+      "integrity": "sha1-9HgZSczkAmlxJ0MOo7PFR29IF2c=",
+      "dev": true,
+      "requires": {
+        "array-filter": "~0.0.0",
+        "array-map": "~0.0.0",
+        "array-reduce": "~0.0.0",
+        "jsonify": "~0.0.0"
+      }
+    },
+    "signal-exit": {
+      "version": "3.0.2",
+      "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz",
+      "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=",
+      "dev": true
+    },
+    "sntp": {
+      "version": "1.0.9",
+      "resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz",
+      "integrity": "sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg=",
+      "dev": true,
+      "requires": {
+        "hoek": "2.x.x"
+      }
+    },
+    "sorcery": {
+      "version": "0.10.0",
+      "resolved": "https://registry.npmjs.org/sorcery/-/sorcery-0.10.0.tgz",
+      "integrity": "sha1-iukK19fLBfxZ8asMY3hF1cFaUrc=",
+      "dev": true,
+      "requires": {
+        "buffer-crc32": "^0.2.5",
+        "minimist": "^1.2.0",
+        "sander": "^0.5.0",
+        "sourcemap-codec": "^1.3.0"
+      }
+    },
+    "source-map": {
+      "version": "0.5.7",
+      "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
+      "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
+      "dev": true
+    },
+    "source-map-support": {
+      "version": "0.4.18",
+      "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz",
+      "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==",
+      "dev": true,
+      "requires": {
+        "source-map": "^0.5.6"
+      }
+    },
+    "sourcemap-codec": {
+      "version": "1.4.1",
+      "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.1.tgz",
+      "integrity": "sha512-hX1eNBNuilj8yfFnECh0DzLgwKpBLMIvmhgEhixXNui8lMLBInTI8Kyxt++RwJnMNu7cAUo635L2+N1TxMJCzA==",
+      "dev": true
+    },
+    "sparkles": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/sparkles/-/sparkles-1.0.1.tgz",
+      "integrity": "sha512-dSO0DDYUahUt/0/pD/Is3VIm5TGJjludZ0HVymmhYF6eNA53PVLhnUk0znSYbH8IYBuJdCE+1luR22jNLMaQdw==",
+      "dev": true
+    },
+    "spdx-correct": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.0.0.tgz",
+      "integrity": "sha512-N19o9z5cEyc8yQQPukRCZ9EUmb4HUpnrmaL/fxS2pBo2jbfcFRVuFZ/oFC+vZz0MNNk0h80iMn5/S6qGZOL5+g==",
+      "dev": true,
+      "requires": {
+        "spdx-expression-parse": "^3.0.0",
+        "spdx-license-ids": "^3.0.0"
+      }
+    },
+    "spdx-exceptions": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.1.0.tgz",
+      "integrity": "sha512-4K1NsmrlCU1JJgUrtgEeTVyfx8VaYea9J9LvARxhbHtVtohPs/gFGG5yy49beySjlIMhhXZ4QqujIZEfS4l6Cg==",
+      "dev": true
+    },
+    "spdx-expression-parse": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz",
+      "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==",
+      "dev": true,
+      "requires": {
+        "spdx-exceptions": "^2.1.0",
+        "spdx-license-ids": "^3.0.0"
+      }
+    },
+    "spdx-license-ids": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.0.tgz",
+      "integrity": "sha512-2+EPwgbnmOIl8HjGBXXMd9NAu02vLjOO1nWw4kmeRDFyHn+M/ETfHxQUK0oXg8ctgVnl9t3rosNVsZ1jG61nDA==",
+      "dev": true
+    },
+    "sshpk": {
+      "version": "1.14.2",
+      "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.14.2.tgz",
+      "integrity": "sha1-xvxhZIo9nE52T9P8306hBeSSupg=",
+      "dev": true,
+      "requires": {
+        "asn1": "~0.2.3",
+        "assert-plus": "^1.0.0",
+        "bcrypt-pbkdf": "^1.0.0",
+        "dashdash": "^1.12.0",
+        "ecc-jsbn": "~0.1.1",
+        "getpass": "^0.1.1",
+        "jsbn": "~0.1.0",
+        "safer-buffer": "^2.0.2",
+        "tweetnacl": "~0.14.0"
+      },
+      "dependencies": {
+        "assert-plus": {
+          "version": "1.0.0",
+          "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
+          "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=",
+          "dev": true
+        }
+      }
+    },
+    "stdout-stream": {
+      "version": "1.4.0",
+      "resolved": "https://registry.npmjs.org/stdout-stream/-/stdout-stream-1.4.0.tgz",
+      "integrity": "sha1-osfIWH5U2UJ+qe2zrD8s1SLfN4s=",
+      "dev": true,
+      "requires": {
+        "readable-stream": "^2.0.1"
+      }
+    },
+    "stream-shift": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.0.tgz",
+      "integrity": "sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI=",
       "dev": true
     },
+    "string-width": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
+      "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
+      "dev": true,
+      "requires": {
+        "code-point-at": "^1.0.0",
+        "is-fullwidth-code-point": "^1.0.0",
+        "strip-ansi": "^3.0.0"
+      }
+    },
+    "string_decoder": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+      "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+      "dev": true,
+      "requires": {
+        "safe-buffer": "~5.1.0"
+      }
+    },
+    "stringstream": {
+      "version": "0.0.6",
+      "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.6.tgz",
+      "integrity": "sha512-87GEBAkegbBcweToUrdzf3eLhWNg06FJTebl4BVJz/JgWy8CvEr9dRtX5qWphiynMSQlxxi+QqN0z5T32SLlhA==",
+      "dev": true
+    },
+    "strip-ansi": {
+      "version": "3.0.1",
+      "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
+      "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
+      "dev": true,
+      "requires": {
+        "ansi-regex": "^2.0.0"
+      }
+    },
+    "strip-bom": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz",
+      "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=",
+      "dev": true,
+      "requires": {
+        "is-utf8": "^0.2.0"
+      }
+    },
+    "strip-bom-stream": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/strip-bom-stream/-/strip-bom-stream-1.0.0.tgz",
+      "integrity": "sha1-5xRDmFd9Uaa+0PoZlPoF9D/ZiO4=",
+      "dev": true,
+      "requires": {
+        "first-chunk-stream": "^1.0.0",
+        "strip-bom": "^2.0.0"
+      }
+    },
+    "strip-indent": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz",
+      "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=",
+      "dev": true,
+      "requires": {
+        "get-stdin": "^4.0.1"
+      }
+    },
+    "strip-json-comments": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz",
+      "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=",
+      "dev": true
+    },
+    "stylus": {
+      "version": "0.54.5",
+      "resolved": "https://registry.npmjs.org/stylus/-/stylus-0.54.5.tgz",
+      "integrity": "sha1-QrlWCTHKcJDOhRWnmLqeaqPW3Hk=",
+      "dev": true,
+      "requires": {
+        "css-parse": "1.7.x",
+        "debug": "*",
+        "glob": "7.0.x",
+        "mkdirp": "0.5.x",
+        "sax": "0.5.x",
+        "source-map": "0.1.x"
+      },
+      "dependencies": {
+        "glob": {
+          "version": "7.0.6",
+          "resolved": "https://registry.npmjs.org/glob/-/glob-7.0.6.tgz",
+          "integrity": "sha1-IRuvr0nlJbjNkyYNFKsTYVKz9Xo=",
+          "dev": true,
+          "requires": {
+            "fs.realpath": "^1.0.0",
+            "inflight": "^1.0.4",
+            "inherits": "2",
+            "minimatch": "^3.0.2",
+            "once": "^1.3.0",
+            "path-is-absolute": "^1.0.0"
+          }
+        },
+        "source-map": {
+          "version": "0.1.43",
+          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz",
+          "integrity": "sha1-wkvBRspRfBRx9drL4lcbK3+eM0Y=",
+          "dev": true,
+          "requires": {
+            "amdefine": ">=0.0.4"
+          }
+        }
+      }
+    },
+    "subarg": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/subarg/-/subarg-1.0.0.tgz",
+      "integrity": "sha1-9izxdYHplrSPyWVpn1TAauJouNI=",
+      "dev": true,
+      "requires": {
+        "minimist": "^1.1.0"
+      }
+    },
+    "supports-color": {
+      "version": "5.4.0",
+      "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz",
+      "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==",
+      "dev": true,
+      "requires": {
+        "has-flag": "^3.0.0"
+      }
+    },
     "symbol-observable": {
       "version": "1.0.4",
       "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.0.4.tgz",
       "integrity": "sha1-Kb9hXUqnEhvdiYsi1LP5vE4qoD0=",
       "dev": true
     },
+    "tar": {
+      "version": "2.2.1",
+      "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.1.tgz",
+      "integrity": "sha1-jk0qJWwOIYXGsYrWlK7JaLg8sdE=",
+      "dev": true,
+      "requires": {
+        "block-stream": "*",
+        "fstream": "^1.0.2",
+        "inherits": "2"
+      }
+    },
+    "through": {
+      "version": "2.3.8",
+      "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
+      "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=",
+      "dev": true
+    },
+    "through2": {
+      "version": "2.0.3",
+      "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz",
+      "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=",
+      "dev": true,
+      "requires": {
+        "readable-stream": "^2.1.5",
+        "xtend": "~4.0.1"
+      }
+    },
+    "through2-filter": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/through2-filter/-/through2-filter-2.0.0.tgz",
+      "integrity": "sha1-YLxVoNrLdghdsfna6Zq0P4PWIuw=",
+      "dev": true,
+      "requires": {
+        "through2": "~2.0.0",
+        "xtend": "~4.0.0"
+      }
+    },
+    "time-stamp": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/time-stamp/-/time-stamp-1.1.0.tgz",
+      "integrity": "sha1-dkpaEa9QVhkhsTPztE5hhofg9cM=",
+      "dev": true
+    },
+    "to-absolute-glob": {
+      "version": "0.1.1",
+      "resolved": "https://registry.npmjs.org/to-absolute-glob/-/to-absolute-glob-0.1.1.tgz",
+      "integrity": "sha1-HN+kcqnvUMI57maZm2YsoOs5k38=",
+      "dev": true,
+      "requires": {
+        "extend-shallow": "^2.0.1"
+      }
+    },
+    "tough-cookie": {
+      "version": "2.3.4",
+      "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.4.tgz",
+      "integrity": "sha512-TZ6TTfI5NtZnuyy/Kecv+CnoROnyXn2DN97LontgQpCwsX2XyLYCC0ENhYkehSOwAp8rTQKc/NUIF7BkQ5rKLA==",
+      "dev": true,
+      "requires": {
+        "punycode": "^1.4.1"
+      }
+    },
+    "trim-newlines": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz",
+      "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=",
+      "dev": true
+    },
+    "true-case-path": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/true-case-path/-/true-case-path-1.0.2.tgz",
+      "integrity": "sha1-fskRMJJHZsf1c74wIMNPj9/QDWI=",
+      "dev": true,
+      "requires": {
+        "glob": "^6.0.4"
+      },
+      "dependencies": {
+        "glob": {
+          "version": "6.0.4",
+          "resolved": "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz",
+          "integrity": "sha1-DwiGD2oVUSey+t1PnOJLGqtuTSI=",
+          "dev": true,
+          "requires": {
+            "inflight": "^1.0.4",
+            "inherits": "2",
+            "minimatch": "2 || 3",
+            "once": "^1.3.0",
+            "path-is-absolute": "^1.0.0"
+          }
+        }
+      }
+    },
+    "ts-node": {
+      "version": "3.3.0",
+      "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-3.3.0.tgz",
+      "integrity": "sha1-wTxqMCTjC+EYDdUwOPwgkonUv2k=",
+      "dev": true,
+      "requires": {
+        "arrify": "^1.0.0",
+        "chalk": "^2.0.0",
+        "diff": "^3.1.0",
+        "make-error": "^1.1.1",
+        "minimist": "^1.2.0",
+        "mkdirp": "^0.5.1",
+        "source-map-support": "^0.4.0",
+        "tsconfig": "^6.0.0",
+        "v8flags": "^3.0.0",
+        "yn": "^2.0.0"
+      }
+    },
+    "tsconfig": {
+      "version": "6.0.0",
+      "resolved": "https://registry.npmjs.org/tsconfig/-/tsconfig-6.0.0.tgz",
+      "integrity": "sha1-aw6DdgA9evGGT434+J3QBZ/80DI=",
+      "dev": true,
+      "requires": {
+        "strip-bom": "^3.0.0",
+        "strip-json-comments": "^2.0.0"
+      },
+      "dependencies": {
+        "strip-bom": {
+          "version": "3.0.0",
+          "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
+          "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=",
+          "dev": true
+        }
+      }
+    },
+    "tsickle": {
+      "version": "0.21.6",
+      "resolved": "https://registry.npmjs.org/tsickle/-/tsickle-0.21.6.tgz",
+      "integrity": "sha1-U7Abl5xcE/2xOvs/uVgXflmRWI0=",
+      "dev": true,
+      "requires": {
+        "minimist": "^1.2.0",
+        "mkdirp": "^0.5.1",
+        "source-map": "^0.5.6",
+        "source-map-support": "^0.4.2"
+      }
+    },
     "tslib": {
       "version": "1.8.0",
       "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.8.0.tgz",
       "integrity": "sha512-ymKWWZJST0/CkgduC2qkzjMOWr4bouhuURNXCn/inEX0L57BnRG6FhX76o7FOnsjHazCjfU2LKeSrlS2sIKQJg==",
       "dev": true
     },
+    "tunnel-agent": {
+      "version": "0.6.0",
+      "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
+      "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=",
+      "dev": true,
+      "requires": {
+        "safe-buffer": "^5.0.1"
+      }
+    },
+    "tweetnacl": {
+      "version": "0.14.5",
+      "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz",
+      "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=",
+      "dev": true,
+      "optional": true
+    },
     "typescript": {
       "version": "2.5.3",
       "resolved": "https://registry.npmjs.org/typescript/-/typescript-2.5.3.tgz",
       "integrity": "sha512-ptLSQs2S4QuS6/OD1eAKG+S5G8QQtrU5RT32JULdZQtM1L3WTi34Wsu48Yndzi8xsObRAB9RPt/KhA9wlpEF6w==",
       "dev": true
     },
+    "uglify-js": {
+      "version": "3.4.0",
+      "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.4.0.tgz",
+      "integrity": "sha512-Jcf5naPkX3rVPSQpRn9Vm6Rr572I1gTtR9LnqKgXjmOgfYQ/QS0V2WRStFR53Bdj520M66aCZqt9uzYXgtGrJQ==",
+      "dev": true,
+      "requires": {
+        "commander": "~2.15.0",
+        "source-map": "~0.6.1"
+      },
+      "dependencies": {
+        "source-map": {
+          "version": "0.6.1",
+          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+          "dev": true
+        }
+      }
+    },
+    "unique-stream": {
+      "version": "2.2.1",
+      "resolved": "https://registry.npmjs.org/unique-stream/-/unique-stream-2.2.1.tgz",
+      "integrity": "sha1-WqADz76Uxf+GbE59ZouxxNuts2k=",
+      "dev": true,
+      "requires": {
+        "json-stable-stringify": "^1.0.0",
+        "through2-filter": "^2.0.0"
+      }
+    },
+    "universalify": {
+      "version": "0.1.1",
+      "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.1.tgz",
+      "integrity": "sha1-+nG63UQ3r0wUiEHjs7Fl+enlkLc=",
+      "dev": true
+    },
+    "util-deprecate": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
+      "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=",
+      "dev": true
+    },
+    "uuid": {
+      "version": "3.2.1",
+      "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.2.1.tgz",
+      "integrity": "sha512-jZnMwlb9Iku/O3smGWvZhauCf6cvvpKi4BKRiliS3cxnI+Gz9j5MEpTz2UFuXiKPJocb7gnsLHwiS05ige5BEA==",
+      "dev": true
+    },
+    "v8flags": {
+      "version": "3.1.1",
+      "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-3.1.1.tgz",
+      "integrity": "sha512-iw/1ViSEaff8NJ3HLyEjawk/8hjJib3E7pvG4pddVXfUg1983s3VGsiClDjhK64MQVDGqc1Q8r18S4VKQZS9EQ==",
+      "dev": true,
+      "requires": {
+        "homedir-polyfill": "^1.0.1"
+      }
+    },
+    "vali-date": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/vali-date/-/vali-date-1.0.0.tgz",
+      "integrity": "sha1-G5BKWWCfsyjvB4E4Qgk09rhnCaY=",
+      "dev": true
+    },
+    "validate-npm-package-license": {
+      "version": "3.0.3",
+      "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.3.tgz",
+      "integrity": "sha512-63ZOUnL4SIXj4L0NixR3L1lcjO38crAbgrTpl28t8jjrfuiOBL5Iygm+60qPs/KsZGzPNg6Smnc/oY16QTjF0g==",
+      "dev": true,
+      "requires": {
+        "spdx-correct": "^3.0.0",
+        "spdx-expression-parse": "^3.0.0"
+      }
+    },
+    "verror": {
+      "version": "1.10.0",
+      "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz",
+      "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=",
+      "dev": true,
+      "requires": {
+        "assert-plus": "^1.0.0",
+        "core-util-is": "1.0.2",
+        "extsprintf": "^1.2.0"
+      },
+      "dependencies": {
+        "assert-plus": {
+          "version": "1.0.0",
+          "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
+          "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=",
+          "dev": true
+        }
+      }
+    },
+    "vinyl": {
+      "version": "0.5.3",
+      "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-0.5.3.tgz",
+      "integrity": "sha1-sEVbOPxeDPMNQyUTLkYZcMIJHN4=",
+      "dev": true,
+      "requires": {
+        "clone": "^1.0.0",
+        "clone-stats": "^0.0.1",
+        "replace-ext": "0.0.1"
+      }
+    },
+    "vinyl-fs": {
+      "version": "2.4.4",
+      "resolved": "https://registry.npmjs.org/vinyl-fs/-/vinyl-fs-2.4.4.tgz",
+      "integrity": "sha1-vm/zJwy1Xf19MGNkDegfJddTIjk=",
+      "dev": true,
+      "requires": {
+        "duplexify": "^3.2.0",
+        "glob-stream": "^5.3.2",
+        "graceful-fs": "^4.0.0",
+        "gulp-sourcemaps": "1.6.0",
+        "is-valid-glob": "^0.3.0",
+        "lazystream": "^1.0.0",
+        "lodash.isequal": "^4.0.0",
+        "merge-stream": "^1.0.0",
+        "mkdirp": "^0.5.0",
+        "object-assign": "^4.0.0",
+        "readable-stream": "^2.0.4",
+        "strip-bom": "^2.0.0",
+        "strip-bom-stream": "^1.0.0",
+        "through2": "^2.0.0",
+        "through2-filter": "^2.0.0",
+        "vali-date": "^1.0.0",
+        "vinyl": "^1.0.0"
+      },
+      "dependencies": {
+        "object-assign": {
+          "version": "4.1.1",
+          "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
+          "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=",
+          "dev": true
+        },
+        "vinyl": {
+          "version": "1.2.0",
+          "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-1.2.0.tgz",
+          "integrity": "sha1-XIgDbPVl5d8FVYv8kR+GVt8hiIQ=",
+          "dev": true,
+          "requires": {
+            "clone": "^1.0.0",
+            "clone-stats": "^0.0.1",
+            "replace-ext": "0.0.1"
+          }
+        }
+      }
+    },
+    "vlq": {
+      "version": "0.2.3",
+      "resolved": "https://registry.npmjs.org/vlq/-/vlq-0.2.3.tgz",
+      "integrity": "sha512-DRibZL6DsNhIgYQ+wNdWDL2SL3bKPlVrRiBqV5yuMm++op8W4kGFtaQfCs4KEJn0wBZcHVHJ3eoywX8983k1ow==",
+      "dev": true
+    },
+    "which": {
+      "version": "1.3.1",
+      "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
+      "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
+      "dev": true,
+      "requires": {
+        "isexe": "^2.0.0"
+      }
+    },
+    "which-module": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz",
+      "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=",
+      "dev": true
+    },
+    "wide-align": {
+      "version": "1.1.3",
+      "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz",
+      "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==",
+      "dev": true,
+      "requires": {
+        "string-width": "^1.0.2 || 2"
+      }
+    },
+    "wrap-ansi": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz",
+      "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=",
+      "dev": true,
+      "requires": {
+        "string-width": "^1.0.1",
+        "strip-ansi": "^3.0.1"
+      }
+    },
+    "wrappy": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
+      "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
+      "dev": true
+    },
+    "xtend": {
+      "version": "4.0.1",
+      "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz",
+      "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=",
+      "dev": true
+    },
+    "y18n": {
+      "version": "3.2.1",
+      "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz",
+      "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=",
+      "dev": true
+    },
+    "yallist": {
+      "version": "2.1.2",
+      "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz",
+      "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=",
+      "dev": true
+    },
+    "yargs": {
+      "version": "7.1.0",
+      "resolved": "https://registry.npmjs.org/yargs/-/yargs-7.1.0.tgz",
+      "integrity": "sha1-a6MY6xaWFyf10oT46gA+jWFU0Mg=",
+      "dev": true,
+      "requires": {
+        "camelcase": "^3.0.0",
+        "cliui": "^3.2.0",
+        "decamelize": "^1.1.1",
+        "get-caller-file": "^1.0.1",
+        "os-locale": "^1.4.0",
+        "read-pkg-up": "^1.0.1",
+        "require-directory": "^2.1.1",
+        "require-main-filename": "^1.0.1",
+        "set-blocking": "^2.0.0",
+        "string-width": "^1.0.2",
+        "which-module": "^1.0.0",
+        "y18n": "^3.2.1",
+        "yargs-parser": "^5.0.0"
+      },
+      "dependencies": {
+        "camelcase": {
+          "version": "3.0.0",
+          "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz",
+          "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=",
+          "dev": true
+        }
+      }
+    },
+    "yargs-parser": {
+      "version": "5.0.0",
+      "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-5.0.0.tgz",
+      "integrity": "sha1-J17PDX/+Bcd+ZOfIbkzZS/DhIoo=",
+      "dev": true,
+      "requires": {
+        "camelcase": "^3.0.0"
+      },
+      "dependencies": {
+        "camelcase": {
+          "version": "3.0.0",
+          "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz",
+          "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=",
+          "dev": true
+        }
+      }
+    },
+    "yn": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/yn/-/yn-2.0.0.tgz",
+      "integrity": "sha1-5a2ryKz0CPY4X8dklWhMiOavaJo=",
+      "dev": true
+    },
     "zone.js": {
       "version": "0.7.8",
       "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.7.8.tgz",
diff --git a/samples/client/petstore/typescript-angular-v4.3/npm/pom.xml b/samples/client/petstore/typescript-angular-v4.3/npm/pom.xml
index 060f2ad45825..fdc35dd82912 100644
--- a/samples/client/petstore/typescript-angular-v4.3/npm/pom.xml
+++ b/samples/client/petstore/typescript-angular-v4.3/npm/pom.xml
@@ -1,10 +1,10 @@
 
     4.0.0
     com.wordnik
-    TSAngular43PestoreTest
+    TSAngular43PestoreClientTests
     pom
     1.0-SNAPSHOT
-    TS Angular4.3 Pettore Test
+    TS Angular 4.3 Petstore Client Tests
     
         
             
diff --git a/samples/client/petstore/typescript-angular-v4/npm/.openapi-generator/VERSION b/samples/client/petstore/typescript-angular-v4/npm/.openapi-generator/VERSION
index ad121e8340e0..1c00c5181548 100644
--- a/samples/client/petstore/typescript-angular-v4/npm/.openapi-generator/VERSION
+++ b/samples/client/petstore/typescript-angular-v4/npm/.openapi-generator/VERSION
@@ -1 +1 @@
-3.0.1-SNAPSHOT
\ No newline at end of file
+3.0.2-SNAPSHOT
\ No newline at end of file
diff --git a/samples/client/petstore/typescript-angular-v4/npm/api/pet.service.ts b/samples/client/petstore/typescript-angular-v4/npm/api/pet.service.ts
index f6c95294851a..71926b6af584 100644
--- a/samples/client/petstore/typescript-angular-v4/npm/api/pet.service.ts
+++ b/samples/client/petstore/typescript-angular-v4/npm/api/pet.service.ts
@@ -35,12 +35,13 @@ export class PetService {
     public configuration = new Configuration();
 
     constructor(protected http: Http, @Optional()@Inject(BASE_PATH) basePath: string, @Optional() configuration: Configuration) {
-        if (basePath) {
-            this.basePath = basePath;
-        }
+
         if (configuration) {
             this.configuration = configuration;
-            this.basePath = basePath || configuration.basePath || this.basePath;
+            this.configuration.basePath = configuration.basePath || basePath || this.basePath;
+
+        } else {
+            this.configuration.basePath = basePath || this.basePath;
         }
     }
 
@@ -242,7 +243,7 @@ export class PetService {
             requestOptions = (Object).assign(requestOptions, extraHttpRequestParams);
         }
 
-        return this.http.request(`${this.basePath}/pet`, requestOptions);
+        return this.http.request(`${this.configuration.basePath}/pet`, requestOptions);
     }
 
     /**
@@ -292,7 +293,7 @@ export class PetService {
             requestOptions = (Object).assign(requestOptions, extraHttpRequestParams);
         }
 
-        return this.http.request(`${this.basePath}/pet/${encodeURIComponent(String(petId))}`, requestOptions);
+        return this.http.request(`${this.configuration.basePath}/pet/${encodeURIComponent(String(petId))}`, requestOptions);
     }
 
     /**
@@ -346,7 +347,7 @@ export class PetService {
             requestOptions = (Object).assign(requestOptions, extraHttpRequestParams);
         }
 
-        return this.http.request(`${this.basePath}/pet/findByStatus`, requestOptions);
+        return this.http.request(`${this.configuration.basePath}/pet/findByStatus`, requestOptions);
     }
 
     /**
@@ -400,7 +401,7 @@ export class PetService {
             requestOptions = (Object).assign(requestOptions, extraHttpRequestParams);
         }
 
-        return this.http.request(`${this.basePath}/pet/findByTags`, requestOptions);
+        return this.http.request(`${this.configuration.basePath}/pet/findByTags`, requestOptions);
     }
 
     /**
@@ -445,7 +446,7 @@ export class PetService {
             requestOptions = (Object).assign(requestOptions, extraHttpRequestParams);
         }
 
-        return this.http.request(`${this.basePath}/pet/${encodeURIComponent(String(petId))}`, requestOptions);
+        return this.http.request(`${this.configuration.basePath}/pet/${encodeURIComponent(String(petId))}`, requestOptions);
     }
 
     /**
@@ -498,7 +499,7 @@ export class PetService {
             requestOptions = (Object).assign(requestOptions, extraHttpRequestParams);
         }
 
-        return this.http.request(`${this.basePath}/pet`, requestOptions);
+        return this.http.request(`${this.configuration.basePath}/pet`, requestOptions);
     }
 
     /**
@@ -570,7 +571,7 @@ export class PetService {
             requestOptions = (Object).assign(requestOptions, extraHttpRequestParams);
         }
 
-        return this.http.request(`${this.basePath}/pet/${encodeURIComponent(String(petId))}`, requestOptions);
+        return this.http.request(`${this.configuration.basePath}/pet/${encodeURIComponent(String(petId))}`, requestOptions);
     }
 
     /**
@@ -646,7 +647,7 @@ export class PetService {
             requestOptions = (Object).assign(requestOptions, extraHttpRequestParams);
         }
 
-        return this.http.request(`${this.basePath}/pet/${encodeURIComponent(String(petId))}/uploadImage`, requestOptions);
+        return this.http.request(`${this.configuration.basePath}/pet/${encodeURIComponent(String(petId))}/uploadImage`, requestOptions);
     }
 
 }
diff --git a/samples/client/petstore/typescript-angular-v4/npm/api/store.service.ts b/samples/client/petstore/typescript-angular-v4/npm/api/store.service.ts
index 847b5deb8b04..01ad2dd7e36d 100644
--- a/samples/client/petstore/typescript-angular-v4/npm/api/store.service.ts
+++ b/samples/client/petstore/typescript-angular-v4/npm/api/store.service.ts
@@ -34,12 +34,13 @@ export class StoreService {
     public configuration = new Configuration();
 
     constructor(protected http: Http, @Optional()@Inject(BASE_PATH) basePath: string, @Optional() configuration: Configuration) {
-        if (basePath) {
-            this.basePath = basePath;
-        }
+
         if (configuration) {
             this.configuration = configuration;
-            this.basePath = basePath || configuration.basePath || this.basePath;
+            this.configuration.basePath = configuration.basePath || basePath || this.basePath;
+
+        } else {
+            this.configuration.basePath = basePath || this.basePath;
         }
     }
 
@@ -156,7 +157,7 @@ export class StoreService {
             requestOptions = (Object).assign(requestOptions, extraHttpRequestParams);
         }
 
-        return this.http.request(`${this.basePath}/store/order/${encodeURIComponent(String(orderId))}`, requestOptions);
+        return this.http.request(`${this.configuration.basePath}/store/order/${encodeURIComponent(String(orderId))}`, requestOptions);
     }
 
     /**
@@ -196,7 +197,7 @@ export class StoreService {
             requestOptions = (Object).assign(requestOptions, extraHttpRequestParams);
         }
 
-        return this.http.request(`${this.basePath}/store/inventory`, requestOptions);
+        return this.http.request(`${this.configuration.basePath}/store/inventory`, requestOptions);
     }
 
     /**
@@ -236,7 +237,7 @@ export class StoreService {
             requestOptions = (Object).assign(requestOptions, extraHttpRequestParams);
         }
 
-        return this.http.request(`${this.basePath}/store/order/${encodeURIComponent(String(orderId))}`, requestOptions);
+        return this.http.request(`${this.configuration.basePath}/store/order/${encodeURIComponent(String(orderId))}`, requestOptions);
     }
 
     /**
@@ -281,7 +282,7 @@ export class StoreService {
             requestOptions = (Object).assign(requestOptions, extraHttpRequestParams);
         }
 
-        return this.http.request(`${this.basePath}/store/order`, requestOptions);
+        return this.http.request(`${this.configuration.basePath}/store/order`, requestOptions);
     }
 
 }
diff --git a/samples/client/petstore/typescript-angular-v4/npm/api/user.service.ts b/samples/client/petstore/typescript-angular-v4/npm/api/user.service.ts
index 7753232bf2fd..8ad36014c752 100644
--- a/samples/client/petstore/typescript-angular-v4/npm/api/user.service.ts
+++ b/samples/client/petstore/typescript-angular-v4/npm/api/user.service.ts
@@ -34,12 +34,13 @@ export class UserService {
     public configuration = new Configuration();
 
     constructor(protected http: Http, @Optional()@Inject(BASE_PATH) basePath: string, @Optional() configuration: Configuration) {
-        if (basePath) {
-            this.basePath = basePath;
-        }
+
         if (configuration) {
             this.configuration = configuration;
-            this.basePath = basePath || configuration.basePath || this.basePath;
+            this.configuration.basePath = configuration.basePath || basePath || this.basePath;
+
+        } else {
+            this.configuration.basePath = basePath || this.basePath;
         }
     }
 
@@ -227,7 +228,7 @@ export class UserService {
             requestOptions = (Object).assign(requestOptions, extraHttpRequestParams);
         }
 
-        return this.http.request(`${this.basePath}/user`, requestOptions);
+        return this.http.request(`${this.configuration.basePath}/user`, requestOptions);
     }
 
     /**
@@ -270,7 +271,7 @@ export class UserService {
             requestOptions = (Object).assign(requestOptions, extraHttpRequestParams);
         }
 
-        return this.http.request(`${this.basePath}/user/createWithArray`, requestOptions);
+        return this.http.request(`${this.configuration.basePath}/user/createWithArray`, requestOptions);
     }
 
     /**
@@ -313,7 +314,7 @@ export class UserService {
             requestOptions = (Object).assign(requestOptions, extraHttpRequestParams);
         }
 
-        return this.http.request(`${this.basePath}/user/createWithList`, requestOptions);
+        return this.http.request(`${this.configuration.basePath}/user/createWithList`, requestOptions);
     }
 
     /**
@@ -351,7 +352,7 @@ export class UserService {
             requestOptions = (Object).assign(requestOptions, extraHttpRequestParams);
         }
 
-        return this.http.request(`${this.basePath}/user/${encodeURIComponent(String(username))}`, requestOptions);
+        return this.http.request(`${this.configuration.basePath}/user/${encodeURIComponent(String(username))}`, requestOptions);
     }
 
     /**
@@ -391,7 +392,7 @@ export class UserService {
             requestOptions = (Object).assign(requestOptions, extraHttpRequestParams);
         }
 
-        return this.http.request(`${this.basePath}/user/${encodeURIComponent(String(username))}`, requestOptions);
+        return this.http.request(`${this.configuration.basePath}/user/${encodeURIComponent(String(username))}`, requestOptions);
     }
 
     /**
@@ -444,7 +445,7 @@ export class UserService {
             requestOptions = (Object).assign(requestOptions, extraHttpRequestParams);
         }
 
-        return this.http.request(`${this.basePath}/user/login`, requestOptions);
+        return this.http.request(`${this.configuration.basePath}/user/login`, requestOptions);
     }
 
     /**
@@ -478,7 +479,7 @@ export class UserService {
             requestOptions = (Object).assign(requestOptions, extraHttpRequestParams);
         }
 
-        return this.http.request(`${this.basePath}/user/logout`, requestOptions);
+        return this.http.request(`${this.configuration.basePath}/user/logout`, requestOptions);
     }
 
     /**
@@ -525,7 +526,7 @@ export class UserService {
             requestOptions = (Object).assign(requestOptions, extraHttpRequestParams);
         }
 
-        return this.http.request(`${this.basePath}/user/${encodeURIComponent(String(username))}`, requestOptions);
+        return this.http.request(`${this.configuration.basePath}/user/${encodeURIComponent(String(username))}`, requestOptions);
     }
 
 }
diff --git a/samples/client/petstore/typescript-angular-v4/npm/package-lock.json b/samples/client/petstore/typescript-angular-v4/npm/package-lock.json
index 7195c40c92f6..385e0ad82478 100644
--- a/samples/client/petstore/typescript-angular-v4/npm/package-lock.json
+++ b/samples/client/petstore/typescript-angular-v4/npm/package-lock.json
@@ -2,48 +2,72 @@
   "name": "@swagger/angular2-typescript-petstore",
   "version": "0.0.1",
   "lockfileVersion": 1,
+  "requires": true,
   "dependencies": {
     "@angular/common": {
       "version": "4.2.6",
       "resolved": "https://registry.npmjs.org/@angular/common/-/common-4.2.6.tgz",
       "integrity": "sha1-IQrOS9JON1+LQbpS/rNLGKiH1do=",
-      "dev": true
+      "dev": true,
+      "requires": {
+        "tslib": "^1.7.1"
+      }
     },
     "@angular/compiler": {
       "version": "4.2.6",
       "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-4.2.6.tgz",
       "integrity": "sha1-ZndW1JXKDUXSBhJooQ1Sr4Ofr/Q=",
-      "dev": true
+      "dev": true,
+      "requires": {
+        "tslib": "^1.7.1"
+      }
     },
     "@angular/compiler-cli": {
       "version": "4.4.7",
       "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-4.4.7.tgz",
       "integrity": "sha512-vzphs9galtMV29CW+ihp6v0HwSQrjAFqs04swqt9o0jEJET6/mPi1EFjJRNZiFn6ghh6lxUPr3vThy7CrSNxHg==",
-      "dev": true
+      "dev": true,
+      "requires": {
+        "@angular/tsc-wrapped": "4.4.7",
+        "minimist": "^1.2.0",
+        "reflect-metadata": "^0.1.2"
+      }
     },
     "@angular/core": {
       "version": "4.2.6",
       "resolved": "https://registry.npmjs.org/@angular/core/-/core-4.2.6.tgz",
       "integrity": "sha1-DByP8BV/B29KfAtyHKFCPxu+Fk4=",
-      "dev": true
+      "dev": true,
+      "requires": {
+        "tslib": "^1.7.1"
+      }
     },
     "@angular/http": {
       "version": "4.2.6",
       "resolved": "https://registry.npmjs.org/@angular/http/-/http-4.2.6.tgz",
       "integrity": "sha1-SZ4roLvB89cbdt6+wDTJWMrxE04=",
-      "dev": true
+      "dev": true,
+      "requires": {
+        "tslib": "^1.7.1"
+      }
     },
     "@angular/platform-browser": {
       "version": "4.2.6",
       "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-4.2.6.tgz",
       "integrity": "sha1-oTH/WSIl/mSWvKLJr/YSpNvd9Dc=",
-      "dev": true
+      "dev": true,
+      "requires": {
+        "tslib": "^1.7.1"
+      }
     },
     "@angular/tsc-wrapped": {
       "version": "4.4.7",
       "resolved": "https://registry.npmjs.org/@angular/tsc-wrapped/-/tsc-wrapped-4.4.7.tgz",
       "integrity": "sha512-R9w7sTU+HSTMPOa4NgvPL753qB6aqnPc1AVh2rwSl5FOpLS/AeeyzIhRnBsVXGrZrTcBQVLp/Cxg1oUSXE2k4Q==",
-      "dev": true
+      "dev": true,
+      "requires": {
+        "tsickle": "^0.21.0"
+      }
     },
     "@ngtools/json-schema": {
       "version": "1.1.0",
@@ -67,7 +91,11 @@
       "version": "4.11.8",
       "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz",
       "integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=",
-      "dev": true
+      "dev": true,
+      "requires": {
+        "co": "^4.6.0",
+        "json-stable-stringify": "^1.0.1"
+      }
     },
     "amdefine": {
       "version": "1.0.1",
@@ -79,7 +107,10 @@
       "version": "0.1.1",
       "resolved": "https://registry.npmjs.org/ansi-gray/-/ansi-gray-0.1.1.tgz",
       "integrity": "sha1-KWLPVOyXksSFEKPetSRDaGHvclE=",
-      "dev": true
+      "dev": true,
+      "requires": {
+        "ansi-wrap": "0.1.0"
+      }
     },
     "ansi-regex": {
       "version": "2.1.1",
@@ -91,7 +122,10 @@
       "version": "3.2.1",
       "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
       "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
-      "dev": true
+      "dev": true,
+      "requires": {
+        "color-convert": "^1.9.0"
+      }
     },
     "ansi-wrap": {
       "version": "0.1.0",
@@ -103,7 +137,11 @@
       "version": "1.3.2",
       "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.2.tgz",
       "integrity": "sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA==",
-      "dev": true
+      "dev": true,
+      "requires": {
+        "micromatch": "^2.1.5",
+        "normalize-path": "^2.0.0"
+      }
     },
     "aproba": {
       "version": "1.2.0",
@@ -115,13 +153,20 @@
       "version": "1.1.4",
       "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.4.tgz",
       "integrity": "sha1-u13KOCu5TwXhUZQ3PRb9O6HKEQ0=",
-      "dev": true
+      "dev": true,
+      "requires": {
+        "delegates": "^1.0.0",
+        "readable-stream": "^2.0.6"
+      }
     },
     "arr-diff": {
       "version": "2.0.0",
       "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz",
       "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=",
-      "dev": true
+      "dev": true,
+      "requires": {
+        "arr-flatten": "^1.0.1"
+      }
     },
     "arr-flatten": {
       "version": "1.1.0",
@@ -206,7 +251,10 @@
       "version": "2.6.0",
       "resolved": "https://registry.npmjs.org/async/-/async-2.6.0.tgz",
       "integrity": "sha512-xAfGg1/NTLBBKlHFmnd7PlmUW9KhVQIUuSrYem9xzFUZy13ScvtyGGejaae9iAVRiRq9+Cx7DPFaAAhCpyxyPw==",
-      "dev": true
+      "dev": true,
+      "requires": {
+        "lodash": "^4.14.0"
+      }
     },
     "async-each": {
       "version": "1.0.1",
@@ -230,7 +278,15 @@
       "version": "7.2.6",
       "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-7.2.6.tgz",
       "integrity": "sha512-Iq8TRIB+/9eQ8rbGhcP7ct5cYb/3qjNYAR2SnzLCEcwF6rvVOax8+9+fccgXk4bEhQGjOZd5TLhsksmAdsbGqQ==",
-      "dev": true
+      "dev": true,
+      "requires": {
+        "browserslist": "^2.11.3",
+        "caniuse-lite": "^1.0.30000805",
+        "normalize-range": "^0.1.2",
+        "num2fraction": "^1.2.2",
+        "postcss": "^6.0.17",
+        "postcss-value-parser": "^3.2.3"
+      }
     },
     "aws-sign2": {
       "version": "0.6.0",
@@ -248,7 +304,11 @@
       "version": "6.26.0",
       "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz",
       "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=",
-      "dev": true
+      "dev": true,
+      "requires": {
+        "core-js": "^2.4.0",
+        "regenerator-runtime": "^0.11.0"
+      }
     },
     "balanced-match": {
       "version": "1.0.0",
@@ -261,7 +321,10 @@
       "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz",
       "integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=",
       "dev": true,
-      "optional": true
+      "optional": true,
+      "requires": {
+        "tweetnacl": "^0.14.3"
+      }
     },
     "beeper": {
       "version": "1.1.1",
@@ -279,31 +342,50 @@
       "version": "0.0.9",
       "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz",
       "integrity": "sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=",
-      "dev": true
+      "dev": true,
+      "requires": {
+        "inherits": "~2.0.0"
+      }
     },
     "boom": {
       "version": "2.10.1",
       "resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz",
       "integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=",
-      "dev": true
+      "dev": true,
+      "requires": {
+        "hoek": "2.x.x"
+      }
     },
     "brace-expansion": {
       "version": "1.1.11",
       "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
       "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
-      "dev": true
+      "dev": true,
+      "requires": {
+        "balanced-match": "^1.0.0",
+        "concat-map": "0.0.1"
+      }
     },
     "braces": {
       "version": "1.8.5",
       "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz",
       "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=",
-      "dev": true
+      "dev": true,
+      "requires": {
+        "expand-range": "^1.8.1",
+        "preserve": "^0.2.0",
+        "repeat-element": "^1.1.2"
+      }
     },
     "browserslist": {
       "version": "2.11.3",
       "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-2.11.3.tgz",
       "integrity": "sha512-yWu5cXT7Av6mVwzWc8lMsJMHWn4xyjSuGYi4IozbVTLUOEYPSagUB8kiMDUHA1fS3zjr8nkxkn9jdvug4BBRmA==",
-      "dev": true
+      "dev": true,
+      "requires": {
+        "caniuse-lite": "^1.0.30000792",
+        "electron-to-chromium": "^1.3.30"
+      }
     },
     "buffer-crc32": {
       "version": "0.2.13",
@@ -327,7 +409,11 @@
       "version": "2.1.0",
       "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz",
       "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=",
-      "dev": true
+      "dev": true,
+      "requires": {
+        "camelcase": "^2.0.0",
+        "map-obj": "^1.0.0"
+      }
     },
     "caniuse-lite": {
       "version": "1.0.30000830",
@@ -345,19 +431,40 @@
       "version": "2.4.1",
       "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz",
       "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==",
-      "dev": true
+      "dev": true,
+      "requires": {
+        "ansi-styles": "^3.2.1",
+        "escape-string-regexp": "^1.0.5",
+        "supports-color": "^5.3.0"
+      }
     },
     "chokidar": {
       "version": "1.7.0",
       "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz",
       "integrity": "sha1-eY5ol3gVHIB2tLNg5e3SjNortGg=",
-      "dev": true
+      "dev": true,
+      "requires": {
+        "anymatch": "^1.3.0",
+        "async-each": "^1.0.0",
+        "fsevents": "^1.0.0",
+        "glob-parent": "^2.0.0",
+        "inherits": "^2.0.1",
+        "is-binary-path": "^1.0.0",
+        "is-glob": "^2.0.0",
+        "path-is-absolute": "^1.0.0",
+        "readdirp": "^2.0.0"
+      }
     },
     "cliui": {
       "version": "3.2.0",
       "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz",
       "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=",
-      "dev": true
+      "dev": true,
+      "requires": {
+        "string-width": "^1.0.1",
+        "strip-ansi": "^3.0.1",
+        "wrap-ansi": "^2.0.0"
+      }
     },
     "clone": {
       "version": "1.0.4",
@@ -387,7 +494,10 @@
       "version": "1.9.1",
       "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.1.tgz",
       "integrity": "sha512-mjGanIiwQJskCC18rPR6OmrZ6fm2Lc7PeGFYwCmy5J34wC6F1PzdGL6xeMfmgicfYcNLGuVFA3WzXtIDCQSZxQ==",
-      "dev": true
+      "dev": true,
+      "requires": {
+        "color-name": "^1.1.1"
+      }
     },
     "color-name": {
       "version": "1.1.3",
@@ -405,7 +515,10 @@
       "version": "1.0.6",
       "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.6.tgz",
       "integrity": "sha1-cj599ugBrFYTETp+RFqbactjKBg=",
-      "dev": true
+      "dev": true,
+      "requires": {
+        "delayed-stream": "~1.0.0"
+      }
     },
     "commander": {
       "version": "2.15.1",
@@ -447,19 +560,39 @@
       "version": "1.5.0",
       "resolved": "https://registry.npmjs.org/cpx/-/cpx-1.5.0.tgz",
       "integrity": "sha1-GFvgGFEdhycN7czCkxceN2VauI8=",
-      "dev": true
+      "dev": true,
+      "requires": {
+        "babel-runtime": "^6.9.2",
+        "chokidar": "^1.6.0",
+        "duplexer": "^0.1.1",
+        "glob": "^7.0.5",
+        "glob2base": "^0.0.12",
+        "minimatch": "^3.0.2",
+        "mkdirp": "^0.5.1",
+        "resolve": "^1.1.7",
+        "safe-buffer": "^5.0.1",
+        "shell-quote": "^1.6.1",
+        "subarg": "^1.0.0"
+      }
     },
     "cross-spawn": {
       "version": "3.0.1",
       "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-3.0.1.tgz",
       "integrity": "sha1-ElYDfsufDF9549bvE14wdwGEuYI=",
-      "dev": true
+      "dev": true,
+      "requires": {
+        "lru-cache": "^4.0.1",
+        "which": "^1.2.9"
+      }
     },
     "cryptiles": {
       "version": "2.0.5",
       "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz",
       "integrity": "sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=",
-      "dev": true
+      "dev": true,
+      "requires": {
+        "boom": "2.x.x"
+      }
     },
     "css-parse": {
       "version": "1.7.0",
@@ -471,13 +604,19 @@
       "version": "0.4.1",
       "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz",
       "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=",
-      "dev": true
+      "dev": true,
+      "requires": {
+        "array-find-index": "^1.0.1"
+      }
     },
     "dashdash": {
       "version": "1.14.1",
       "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz",
       "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=",
       "dev": true,
+      "requires": {
+        "assert-plus": "^1.0.0"
+      },
       "dependencies": {
         "assert-plus": {
           "version": "1.0.0",
@@ -497,7 +636,10 @@
       "version": "3.1.0",
       "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
       "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
-      "dev": true
+      "dev": true,
+      "requires": {
+        "ms": "2.0.0"
+      }
     },
     "decamelize": {
       "version": "1.2.0",
@@ -534,6 +676,9 @@
       "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.0.2.tgz",
       "integrity": "sha1-xhTc9n4vsUmVqRcR5aYX6KYKMds=",
       "dev": true,
+      "requires": {
+        "readable-stream": "~1.1.9"
+      },
       "dependencies": {
         "isarray": {
           "version": "0.0.1",
@@ -545,7 +690,13 @@
           "version": "1.1.14",
           "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz",
           "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=",
-          "dev": true
+          "dev": true,
+          "requires": {
+            "core-util-is": "~1.0.0",
+            "inherits": "~2.0.1",
+            "isarray": "0.0.1",
+            "string_decoder": "~0.10.x"
+          }
         },
         "string_decoder": {
           "version": "0.10.31",
@@ -559,14 +710,23 @@
       "version": "3.5.4",
       "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.5.4.tgz",
       "integrity": "sha512-JzYSLYMhoVVBe8+mbHQ4KgpvHpm0DZpJuL8PY93Vyv1fW7jYJ90LoXa1di/CVbJM+TgMs91rbDapE/RNIfnJsA==",
-      "dev": true
+      "dev": true,
+      "requires": {
+        "end-of-stream": "^1.0.0",
+        "inherits": "^2.0.1",
+        "readable-stream": "^2.0.0",
+        "stream-shift": "^1.0.0"
+      }
     },
     "ecc-jsbn": {
       "version": "0.1.1",
       "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz",
       "integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=",
       "dev": true,
-      "optional": true
+      "optional": true,
+      "requires": {
+        "jsbn": "~0.1.0"
+      }
     },
     "electron-to-chromium": {
       "version": "1.3.42",
@@ -578,20 +738,29 @@
       "version": "1.4.1",
       "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz",
       "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==",
-      "dev": true
+      "dev": true,
+      "requires": {
+        "once": "^1.4.0"
+      }
     },
     "errno": {
       "version": "0.1.7",
       "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz",
       "integrity": "sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==",
       "dev": true,
-      "optional": true
+      "optional": true,
+      "requires": {
+        "prr": "~1.0.1"
+      }
     },
     "error-ex": {
       "version": "1.3.1",
       "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz",
       "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=",
-      "dev": true
+      "dev": true,
+      "requires": {
+        "is-arrayish": "^0.2.1"
+      }
     },
     "es6-promise": {
       "version": "3.3.1",
@@ -603,7 +772,11 @@
       "version": "0.2.3",
       "resolved": "https://registry.npmjs.org/es6-templates/-/es6-templates-0.2.3.tgz",
       "integrity": "sha1-XLmsn7He1usSOTQrgdeSu7QHjuQ=",
-      "dev": true
+      "dev": true,
+      "requires": {
+        "recast": "~0.11.12",
+        "through": "~2.3.6"
+      }
     },
     "escape-string-regexp": {
       "version": "1.0.5",
@@ -627,13 +800,19 @@
       "version": "0.1.5",
       "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz",
       "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=",
-      "dev": true
+      "dev": true,
+      "requires": {
+        "is-posix-bracket": "^0.1.0"
+      }
     },
     "expand-range": {
       "version": "1.8.2",
       "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz",
       "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=",
-      "dev": true
+      "dev": true,
+      "requires": {
+        "fill-range": "^2.1.0"
+      }
     },
     "extend": {
       "version": "3.0.1",
@@ -645,13 +824,19 @@
       "version": "2.0.1",
       "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
       "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
-      "dev": true
+      "dev": true,
+      "requires": {
+        "is-extendable": "^0.1.0"
+      }
     },
     "extglob": {
       "version": "0.3.2",
       "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz",
       "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=",
-      "dev": true
+      "dev": true,
+      "requires": {
+        "is-extglob": "^1.0.0"
+      }
     },
     "extsprintf": {
       "version": "1.3.0",
@@ -663,7 +848,12 @@
       "version": "1.3.2",
       "resolved": "https://registry.npmjs.org/fancy-log/-/fancy-log-1.3.2.tgz",
       "integrity": "sha1-9BEl49hPLn2JpD0G2VjI94vha+E=",
-      "dev": true
+      "dev": true,
+      "requires": {
+        "ansi-gray": "^0.1.1",
+        "color-support": "^1.1.3",
+        "time-stamp": "^1.0.0"
+      }
     },
     "filename-regex": {
       "version": "2.0.1",
@@ -675,7 +865,14 @@
       "version": "2.2.3",
       "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz",
       "integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=",
-      "dev": true
+      "dev": true,
+      "requires": {
+        "is-number": "^2.1.0",
+        "isobject": "^2.0.0",
+        "randomatic": "^1.1.3",
+        "repeat-element": "^1.1.2",
+        "repeat-string": "^1.5.2"
+      }
     },
     "find-index": {
       "version": "0.1.1",
@@ -687,7 +884,11 @@
       "version": "1.1.2",
       "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz",
       "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=",
-      "dev": true
+      "dev": true,
+      "requires": {
+        "path-exists": "^2.0.0",
+        "pinkie-promise": "^2.0.0"
+      }
     },
     "first-chunk-stream": {
       "version": "1.0.0",
@@ -705,7 +906,10 @@
       "version": "0.1.5",
       "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz",
       "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=",
-      "dev": true
+      "dev": true,
+      "requires": {
+        "for-in": "^1.0.1"
+      }
     },
     "forever-agent": {
       "version": "0.6.1",
@@ -717,13 +921,23 @@
       "version": "2.1.4",
       "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.1.4.tgz",
       "integrity": "sha1-M8GDrPGTJ27KqYFDpp6Uv+4XUNE=",
-      "dev": true
+      "dev": true,
+      "requires": {
+        "asynckit": "^0.4.0",
+        "combined-stream": "^1.0.5",
+        "mime-types": "^2.1.12"
+      }
     },
     "fs-extra": {
       "version": "4.0.3",
       "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-4.0.3.tgz",
       "integrity": "sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg==",
-      "dev": true
+      "dev": true,
+      "requires": {
+        "graceful-fs": "^4.1.2",
+        "jsonfile": "^4.0.0",
+        "universalify": "^0.1.0"
+      }
     },
     "fs.realpath": {
       "version": "1.0.0",
@@ -737,6 +951,10 @@
       "integrity": "sha512-iownA+hC4uHFp+7gwP/y5SzaiUo7m2vpa0dhpzw8YuKtiZsz7cIXsFbXpLEeBM6WuCQyw1MH4RRe6XI8GFUctQ==",
       "dev": true,
       "optional": true,
+      "requires": {
+        "nan": "^2.9.2",
+        "node-pre-gyp": "^0.9.0"
+      },
       "dependencies": {
         "abbrev": {
           "version": "1.1.1",
@@ -759,7 +977,11 @@
           "version": "1.1.4",
           "bundled": true,
           "dev": true,
-          "optional": true
+          "optional": true,
+          "requires": {
+            "delegates": "^1.0.0",
+            "readable-stream": "^2.0.6"
+          }
         },
         "balanced-match": {
           "version": "1.0.0",
@@ -769,7 +991,11 @@
         "brace-expansion": {
           "version": "1.1.11",
           "bundled": true,
-          "dev": true
+          "dev": true,
+          "requires": {
+            "balanced-match": "^1.0.0",
+            "concat-map": "0.0.1"
+          }
         },
         "chownr": {
           "version": "1.0.1",
@@ -802,7 +1028,10 @@
           "version": "2.6.9",
           "bundled": true,
           "dev": true,
-          "optional": true
+          "optional": true,
+          "requires": {
+            "ms": "2.0.0"
+          }
         },
         "deep-extend": {
           "version": "0.4.2",
@@ -826,7 +1055,10 @@
           "version": "1.2.5",
           "bundled": true,
           "dev": true,
-          "optional": true
+          "optional": true,
+          "requires": {
+            "minipass": "^2.2.1"
+          }
         },
         "fs.realpath": {
           "version": "1.0.0",
@@ -838,13 +1070,31 @@
           "version": "2.7.4",
           "bundled": true,
           "dev": true,
-          "optional": true
+          "optional": true,
+          "requires": {
+            "aproba": "^1.0.3",
+            "console-control-strings": "^1.0.0",
+            "has-unicode": "^2.0.0",
+            "object-assign": "^4.1.0",
+            "signal-exit": "^3.0.0",
+            "string-width": "^1.0.1",
+            "strip-ansi": "^3.0.1",
+            "wide-align": "^1.1.0"
+          }
         },
         "glob": {
           "version": "7.1.2",
           "bundled": true,
           "dev": true,
-          "optional": true
+          "optional": true,
+          "requires": {
+            "fs.realpath": "^1.0.0",
+            "inflight": "^1.0.4",
+            "inherits": "2",
+            "minimatch": "^3.0.4",
+            "once": "^1.3.0",
+            "path-is-absolute": "^1.0.0"
+          }
         },
         "has-unicode": {
           "version": "2.0.1",
@@ -856,19 +1106,29 @@
           "version": "0.4.21",
           "bundled": true,
           "dev": true,
-          "optional": true
+          "optional": true,
+          "requires": {
+            "safer-buffer": "^2.1.0"
+          }
         },
         "ignore-walk": {
           "version": "3.0.1",
           "bundled": true,
           "dev": true,
-          "optional": true
+          "optional": true,
+          "requires": {
+            "minimatch": "^3.0.4"
+          }
         },
         "inflight": {
           "version": "1.0.6",
           "bundled": true,
           "dev": true,
-          "optional": true
+          "optional": true,
+          "requires": {
+            "once": "^1.3.0",
+            "wrappy": "1"
+          }
         },
         "inherits": {
           "version": "2.0.3",
@@ -884,7 +1144,10 @@
         "is-fullwidth-code-point": {
           "version": "1.0.0",
           "bundled": true,
-          "dev": true
+          "dev": true,
+          "requires": {
+            "number-is-nan": "^1.0.0"
+          }
         },
         "isarray": {
           "version": "1.0.0",
@@ -895,7 +1158,10 @@
         "minimatch": {
           "version": "3.0.4",
           "bundled": true,
-          "dev": true
+          "dev": true,
+          "requires": {
+            "brace-expansion": "^1.1.7"
+          }
         },
         "minimist": {
           "version": "0.0.8",
@@ -905,18 +1171,28 @@
         "minipass": {
           "version": "2.2.4",
           "bundled": true,
-          "dev": true
+          "dev": true,
+          "requires": {
+            "safe-buffer": "^5.1.1",
+            "yallist": "^3.0.0"
+          }
         },
         "minizlib": {
           "version": "1.1.0",
           "bundled": true,
           "dev": true,
-          "optional": true
+          "optional": true,
+          "requires": {
+            "minipass": "^2.2.1"
+          }
         },
         "mkdirp": {
           "version": "0.5.1",
           "bundled": true,
-          "dev": true
+          "dev": true,
+          "requires": {
+            "minimist": "0.0.8"
+          }
         },
         "ms": {
           "version": "2.0.0",
@@ -928,19 +1204,40 @@
           "version": "2.2.0",
           "bundled": true,
           "dev": true,
-          "optional": true
+          "optional": true,
+          "requires": {
+            "debug": "^2.1.2",
+            "iconv-lite": "^0.4.4",
+            "sax": "^1.2.4"
+          }
         },
         "node-pre-gyp": {
           "version": "0.9.1",
           "bundled": true,
           "dev": true,
-          "optional": true
+          "optional": true,
+          "requires": {
+            "detect-libc": "^1.0.2",
+            "mkdirp": "^0.5.1",
+            "needle": "^2.2.0",
+            "nopt": "^4.0.1",
+            "npm-packlist": "^1.1.6",
+            "npmlog": "^4.0.2",
+            "rc": "^1.1.7",
+            "rimraf": "^2.6.1",
+            "semver": "^5.3.0",
+            "tar": "^4"
+          }
         },
         "nopt": {
           "version": "4.0.1",
           "bundled": true,
           "dev": true,
-          "optional": true
+          "optional": true,
+          "requires": {
+            "abbrev": "1",
+            "osenv": "^0.1.4"
+          }
         },
         "npm-bundled": {
           "version": "1.0.3",
@@ -952,13 +1249,23 @@
           "version": "1.1.10",
           "bundled": true,
           "dev": true,
-          "optional": true
+          "optional": true,
+          "requires": {
+            "ignore-walk": "^3.0.1",
+            "npm-bundled": "^1.0.1"
+          }
         },
         "npmlog": {
           "version": "4.1.2",
           "bundled": true,
           "dev": true,
-          "optional": true
+          "optional": true,
+          "requires": {
+            "are-we-there-yet": "~1.1.2",
+            "console-control-strings": "~1.1.0",
+            "gauge": "~2.7.3",
+            "set-blocking": "~2.0.0"
+          }
         },
         "number-is-nan": {
           "version": "1.0.1",
@@ -974,7 +1281,10 @@
         "once": {
           "version": "1.4.0",
           "bundled": true,
-          "dev": true
+          "dev": true,
+          "requires": {
+            "wrappy": "1"
+          }
         },
         "os-homedir": {
           "version": "1.0.2",
@@ -992,7 +1302,11 @@
           "version": "0.1.5",
           "bundled": true,
           "dev": true,
-          "optional": true
+          "optional": true,
+          "requires": {
+            "os-homedir": "^1.0.0",
+            "os-tmpdir": "^1.0.0"
+          }
         },
         "path-is-absolute": {
           "version": "1.0.1",
@@ -1011,6 +1325,12 @@
           "bundled": true,
           "dev": true,
           "optional": true,
+          "requires": {
+            "deep-extend": "~0.4.0",
+            "ini": "~1.3.0",
+            "minimist": "^1.2.0",
+            "strip-json-comments": "~2.0.1"
+          },
           "dependencies": {
             "minimist": {
               "version": "1.2.0",
@@ -1024,13 +1344,25 @@
           "version": "2.3.6",
           "bundled": true,
           "dev": true,
-          "optional": true
+          "optional": true,
+          "requires": {
+            "core-util-is": "~1.0.0",
+            "inherits": "~2.0.3",
+            "isarray": "~1.0.0",
+            "process-nextick-args": "~2.0.0",
+            "safe-buffer": "~5.1.1",
+            "string_decoder": "~1.1.1",
+            "util-deprecate": "~1.0.1"
+          }
         },
         "rimraf": {
           "version": "2.6.2",
           "bundled": true,
           "dev": true,
-          "optional": true
+          "optional": true,
+          "requires": {
+            "glob": "^7.0.5"
+          }
         },
         "safe-buffer": {
           "version": "5.1.1",
@@ -1067,21 +1399,32 @@
           "dev": true,
           "optional": true
         },
-        "string_decoder": {
-          "version": "1.1.1",
+        "string-width": {
+          "version": "1.0.2",
           "bundled": true,
           "dev": true,
-          "optional": true
+          "requires": {
+            "code-point-at": "^1.0.0",
+            "is-fullwidth-code-point": "^1.0.0",
+            "strip-ansi": "^3.0.0"
+          }
         },
-        "string-width": {
-          "version": "1.0.2",
+        "string_decoder": {
+          "version": "1.1.1",
           "bundled": true,
-          "dev": true
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "safe-buffer": "~5.1.0"
+          }
         },
         "strip-ansi": {
           "version": "3.0.1",
           "bundled": true,
-          "dev": true
+          "dev": true,
+          "requires": {
+            "ansi-regex": "^2.0.0"
+          }
         },
         "strip-json-comments": {
           "version": "2.0.1",
@@ -1093,7 +1436,16 @@
           "version": "4.4.1",
           "bundled": true,
           "dev": true,
-          "optional": true
+          "optional": true,
+          "requires": {
+            "chownr": "^1.0.1",
+            "fs-minipass": "^1.2.5",
+            "minipass": "^2.2.4",
+            "minizlib": "^1.1.0",
+            "mkdirp": "^0.5.0",
+            "safe-buffer": "^5.1.1",
+            "yallist": "^3.0.2"
+          }
         },
         "util-deprecate": {
           "version": "1.0.2",
@@ -1105,7 +1457,10 @@
           "version": "1.1.2",
           "bundled": true,
           "dev": true,
-          "optional": true
+          "optional": true,
+          "requires": {
+            "string-width": "^1.0.2"
+          }
         },
         "wrappy": {
           "version": "1.0.2",
@@ -1123,13 +1478,29 @@
       "version": "1.0.11",
       "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.11.tgz",
       "integrity": "sha1-XB+x8RdHcRTwYyoOtLcbPLD9MXE=",
-      "dev": true
+      "dev": true,
+      "requires": {
+        "graceful-fs": "^4.1.2",
+        "inherits": "~2.0.0",
+        "mkdirp": ">=0.5 0",
+        "rimraf": "2"
+      }
     },
     "gauge": {
       "version": "2.7.4",
       "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz",
       "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=",
       "dev": true,
+      "requires": {
+        "aproba": "^1.0.3",
+        "console-control-strings": "^1.0.0",
+        "has-unicode": "^2.0.0",
+        "object-assign": "^4.1.0",
+        "signal-exit": "^3.0.0",
+        "string-width": "^1.0.1",
+        "strip-ansi": "^3.0.1",
+        "wide-align": "^1.1.0"
+      },
       "dependencies": {
         "object-assign": {
           "version": "4.1.1",
@@ -1143,7 +1514,10 @@
       "version": "1.1.2",
       "resolved": "https://registry.npmjs.org/gaze/-/gaze-1.1.2.tgz",
       "integrity": "sha1-hHIkZ3rbiHDWeSV+0ziP22HkAQU=",
-      "dev": true
+      "dev": true,
+      "requires": {
+        "globule": "^1.0.0"
+      }
     },
     "generate-function": {
       "version": "2.0.0",
@@ -1155,7 +1529,10 @@
       "version": "1.2.0",
       "resolved": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz",
       "integrity": "sha1-nA4cQDCM6AT0eDYYuTf6iPmdUNA=",
-      "dev": true
+      "dev": true,
+      "requires": {
+        "is-property": "^1.0.0"
+      }
     },
     "get-caller-file": {
       "version": "1.0.2",
@@ -1174,6 +1551,9 @@
       "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz",
       "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=",
       "dev": true,
+      "requires": {
+        "assert-plus": "^1.0.0"
+      },
       "dependencies": {
         "assert-plus": {
           "version": "1.0.0",
@@ -1187,37 +1567,73 @@
       "version": "7.1.2",
       "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz",
       "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==",
-      "dev": true
+      "dev": true,
+      "requires": {
+        "fs.realpath": "^1.0.0",
+        "inflight": "^1.0.4",
+        "inherits": "2",
+        "minimatch": "^3.0.4",
+        "once": "^1.3.0",
+        "path-is-absolute": "^1.0.0"
+      }
     },
     "glob-base": {
       "version": "0.3.0",
       "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz",
       "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=",
-      "dev": true
-    },
+      "dev": true,
+      "requires": {
+        "glob-parent": "^2.0.0",
+        "is-glob": "^2.0.0"
+      }
+    },
     "glob-parent": {
       "version": "2.0.0",
       "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz",
       "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=",
-      "dev": true
+      "dev": true,
+      "requires": {
+        "is-glob": "^2.0.0"
+      }
     },
     "glob-stream": {
       "version": "5.3.5",
       "resolved": "https://registry.npmjs.org/glob-stream/-/glob-stream-5.3.5.tgz",
       "integrity": "sha1-pVZlqajM3EGRWofHAeMtTgFvrSI=",
       "dev": true,
+      "requires": {
+        "extend": "^3.0.0",
+        "glob": "^5.0.3",
+        "glob-parent": "^3.0.0",
+        "micromatch": "^2.3.7",
+        "ordered-read-streams": "^0.3.0",
+        "through2": "^0.6.0",
+        "to-absolute-glob": "^0.1.1",
+        "unique-stream": "^2.0.2"
+      },
       "dependencies": {
         "glob": {
           "version": "5.0.15",
           "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz",
           "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=",
-          "dev": true
+          "dev": true,
+          "requires": {
+            "inflight": "^1.0.4",
+            "inherits": "2",
+            "minimatch": "2 || 3",
+            "once": "^1.3.0",
+            "path-is-absolute": "^1.0.0"
+          }
         },
         "glob-parent": {
           "version": "3.1.0",
           "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz",
           "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=",
-          "dev": true
+          "dev": true,
+          "requires": {
+            "is-glob": "^3.1.0",
+            "path-dirname": "^1.0.0"
+          }
         },
         "is-extglob": {
           "version": "2.1.1",
@@ -1229,7 +1645,10 @@
           "version": "3.1.0",
           "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz",
           "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=",
-          "dev": true
+          "dev": true,
+          "requires": {
+            "is-extglob": "^2.1.0"
+          }
         },
         "isarray": {
           "version": "0.0.1",
@@ -1241,7 +1660,13 @@
           "version": "1.0.34",
           "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz",
           "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=",
-          "dev": true
+          "dev": true,
+          "requires": {
+            "core-util-is": "~1.0.0",
+            "inherits": "~2.0.1",
+            "isarray": "0.0.1",
+            "string_decoder": "~0.10.x"
+          }
         },
         "string_decoder": {
           "version": "0.10.31",
@@ -1253,7 +1678,11 @@
           "version": "0.6.5",
           "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz",
           "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=",
-          "dev": true
+          "dev": true,
+          "requires": {
+            "readable-stream": ">=1.0.33-1 <1.1.0-0",
+            "xtend": ">=4.0.0 <4.1.0-0"
+          }
         }
       }
     },
@@ -1261,19 +1690,30 @@
       "version": "0.0.12",
       "resolved": "https://registry.npmjs.org/glob2base/-/glob2base-0.0.12.tgz",
       "integrity": "sha1-nUGbPijxLoOjYhZKJ3BVkiycDVY=",
-      "dev": true
+      "dev": true,
+      "requires": {
+        "find-index": "^0.1.1"
+      }
     },
     "globule": {
       "version": "1.2.0",
       "resolved": "https://registry.npmjs.org/globule/-/globule-1.2.0.tgz",
       "integrity": "sha1-HcScaCLdnoovoAuiopUAboZkvQk=",
-      "dev": true
+      "dev": true,
+      "requires": {
+        "glob": "~7.1.1",
+        "lodash": "~4.17.4",
+        "minimatch": "~3.0.2"
+      }
     },
     "glogg": {
       "version": "1.0.1",
       "resolved": "https://registry.npmjs.org/glogg/-/glogg-1.0.1.tgz",
       "integrity": "sha512-ynYqXLoluBKf9XGR1gA59yEJisIL7YHEH4xr3ZziHB5/yl4qWfaK8Js9jGe6gBGCSCKVqiyO30WnRZADvemUNw==",
-      "dev": true
+      "dev": true,
+      "requires": {
+        "sparkles": "^1.0.0"
+      }
     },
     "graceful-fs": {
       "version": "4.1.11",
@@ -1286,6 +1726,15 @@
       "resolved": "https://registry.npmjs.org/gulp-inline-ng2-template/-/gulp-inline-ng2-template-4.1.0.tgz",
       "integrity": "sha1-Yfq1mmaUXDegxIOLXnk9ZwjpHf0=",
       "dev": true,
+      "requires": {
+        "async": "^2.0.0-rc.5",
+        "clone": "~1.0.2",
+        "es6-templates": "~0.2.2",
+        "extend": "~3.0.0",
+        "gulp-util": "~3.0.6",
+        "isarray": "0.0.1",
+        "through2": "~2.0.0"
+      },
       "dependencies": {
         "isarray": {
           "version": "0.0.1",
@@ -1300,12 +1749,24 @@
       "resolved": "https://registry.npmjs.org/gulp-sourcemaps/-/gulp-sourcemaps-1.6.0.tgz",
       "integrity": "sha1-uG/zSdgBzrVuHZ59x7vLS33uYAw=",
       "dev": true,
+      "requires": {
+        "convert-source-map": "^1.1.1",
+        "graceful-fs": "^4.1.2",
+        "strip-bom": "^2.0.0",
+        "through2": "^2.0.0",
+        "vinyl": "^1.0.0"
+      },
       "dependencies": {
         "vinyl": {
           "version": "1.2.0",
           "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-1.2.0.tgz",
           "integrity": "sha1-XIgDbPVl5d8FVYv8kR+GVt8hiIQ=",
-          "dev": true
+          "dev": true,
+          "requires": {
+            "clone": "^1.0.0",
+            "clone-stats": "^0.0.1",
+            "replace-ext": "0.0.1"
+          }
         }
       }
     },
@@ -1314,6 +1775,26 @@
       "resolved": "https://registry.npmjs.org/gulp-util/-/gulp-util-3.0.8.tgz",
       "integrity": "sha1-AFTh50RQLifATBh8PsxQXdVLu08=",
       "dev": true,
+      "requires": {
+        "array-differ": "^1.0.0",
+        "array-uniq": "^1.0.2",
+        "beeper": "^1.0.0",
+        "chalk": "^1.0.0",
+        "dateformat": "^2.0.0",
+        "fancy-log": "^1.1.0",
+        "gulplog": "^1.0.0",
+        "has-gulplog": "^0.1.0",
+        "lodash._reescape": "^3.0.0",
+        "lodash._reevaluate": "^3.0.0",
+        "lodash._reinterpolate": "^3.0.0",
+        "lodash.template": "^3.0.0",
+        "minimist": "^1.1.0",
+        "multipipe": "^0.1.2",
+        "object-assign": "^3.0.0",
+        "replace-ext": "0.0.1",
+        "through2": "^2.0.0",
+        "vinyl": "^0.5.0"
+      },
       "dependencies": {
         "ansi-styles": {
           "version": "2.2.1",
@@ -1325,7 +1806,14 @@
           "version": "1.1.3",
           "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
           "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
-          "dev": true
+          "dev": true,
+          "requires": {
+            "ansi-styles": "^2.2.1",
+            "escape-string-regexp": "^1.0.2",
+            "has-ansi": "^2.0.0",
+            "strip-ansi": "^3.0.0",
+            "supports-color": "^2.0.0"
+          }
         },
         "supports-color": {
           "version": "2.0.0",
@@ -1339,7 +1827,10 @@
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/gulplog/-/gulplog-1.0.0.tgz",
       "integrity": "sha1-4oxNRdBey77YGDY86PnFkmIp/+U=",
-      "dev": true
+      "dev": true,
+      "requires": {
+        "glogg": "^1.0.0"
+      }
     },
     "har-schema": {
       "version": "1.0.5",
@@ -1351,13 +1842,20 @@
       "version": "4.2.1",
       "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-4.2.1.tgz",
       "integrity": "sha1-M0gdDxu/9gDdID11gSpqX7oALio=",
-      "dev": true
+      "dev": true,
+      "requires": {
+        "ajv": "^4.9.1",
+        "har-schema": "^1.0.5"
+      }
     },
     "has-ansi": {
       "version": "2.0.0",
       "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz",
       "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=",
-      "dev": true
+      "dev": true,
+      "requires": {
+        "ansi-regex": "^2.0.0"
+      }
     },
     "has-flag": {
       "version": "3.0.0",
@@ -1369,7 +1867,10 @@
       "version": "0.1.0",
       "resolved": "https://registry.npmjs.org/has-gulplog/-/has-gulplog-0.1.0.tgz",
       "integrity": "sha1-ZBTIKRNpfaUVkDl9r7EvIpZ4Ec4=",
-      "dev": true
+      "dev": true,
+      "requires": {
+        "sparkles": "^1.0.0"
+      }
     },
     "has-unicode": {
       "version": "2.0.1",
@@ -1381,7 +1882,13 @@
       "version": "3.1.3",
       "resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz",
       "integrity": "sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ=",
-      "dev": true
+      "dev": true,
+      "requires": {
+        "boom": "2.x.x",
+        "cryptiles": "2.x.x",
+        "hoek": "2.x.x",
+        "sntp": "1.x.x"
+      }
     },
     "hoek": {
       "version": "2.16.3",
@@ -1393,7 +1900,10 @@
       "version": "1.0.1",
       "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.1.tgz",
       "integrity": "sha1-TCu8inWJmP7r9e1oWA921GdotLw=",
-      "dev": true
+      "dev": true,
+      "requires": {
+        "parse-passwd": "^1.0.0"
+      }
     },
     "hosted-git-info": {
       "version": "2.6.0",
@@ -1405,7 +1915,12 @@
       "version": "1.1.1",
       "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz",
       "integrity": "sha1-33LiZwZs0Kxn+3at+OE0qPvPkb8=",
-      "dev": true
+      "dev": true,
+      "requires": {
+        "assert-plus": "^0.2.0",
+        "jsprim": "^1.2.2",
+        "sshpk": "^1.7.0"
+      }
     },
     "image-size": {
       "version": "0.5.5",
@@ -1424,13 +1939,20 @@
       "version": "2.1.0",
       "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz",
       "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=",
-      "dev": true
+      "dev": true,
+      "requires": {
+        "repeating": "^2.0.0"
+      }
     },
     "inflight": {
       "version": "1.0.6",
       "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
       "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
-      "dev": true
+      "dev": true,
+      "requires": {
+        "once": "^1.3.0",
+        "wrappy": "1"
+      }
     },
     "inherits": {
       "version": "2.0.3",
@@ -1454,7 +1976,10 @@
       "version": "1.0.1",
       "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz",
       "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=",
-      "dev": true
+      "dev": true,
+      "requires": {
+        "binary-extensions": "^1.0.0"
+      }
     },
     "is-buffer": {
       "version": "1.1.6",
@@ -1466,7 +1991,10 @@
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz",
       "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=",
-      "dev": true
+      "dev": true,
+      "requires": {
+        "builtin-modules": "^1.0.0"
+      }
     },
     "is-dotfile": {
       "version": "1.0.3",
@@ -1478,7 +2006,10 @@
       "version": "0.1.3",
       "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz",
       "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=",
-      "dev": true
+      "dev": true,
+      "requires": {
+        "is-primitive": "^2.0.0"
+      }
     },
     "is-extendable": {
       "version": "0.1.1",
@@ -1496,19 +2027,28 @@
       "version": "1.0.2",
       "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz",
       "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=",
-      "dev": true
+      "dev": true,
+      "requires": {
+        "number-is-nan": "^1.0.0"
+      }
     },
     "is-fullwidth-code-point": {
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
       "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
-      "dev": true
+      "dev": true,
+      "requires": {
+        "number-is-nan": "^1.0.0"
+      }
     },
     "is-glob": {
       "version": "2.0.1",
       "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz",
       "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=",
-      "dev": true
+      "dev": true,
+      "requires": {
+        "is-extglob": "^1.0.0"
+      }
     },
     "is-module": {
       "version": "1.0.0",
@@ -1526,13 +2066,23 @@
       "version": "2.17.2",
       "resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.17.2.tgz",
       "integrity": "sha512-IBhBslgngMQN8DDSppmgDv7RNrlFotuuDsKcrCP3+HbFaVivIBU7u9oiiErw8sH4ynx3+gOGQ3q2otkgiSi6kg==",
-      "dev": true
+      "dev": true,
+      "requires": {
+        "generate-function": "^2.0.0",
+        "generate-object-property": "^1.1.0",
+        "is-my-ip-valid": "^1.0.0",
+        "jsonpointer": "^4.0.0",
+        "xtend": "^4.0.0"
+      }
     },
     "is-number": {
       "version": "2.1.0",
       "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz",
       "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=",
-      "dev": true
+      "dev": true,
+      "requires": {
+        "kind-of": "^3.0.2"
+      }
     },
     "is-posix-bracket": {
       "version": "0.1.1",
@@ -1592,7 +2142,10 @@
       "version": "2.1.0",
       "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz",
       "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=",
-      "dev": true
+      "dev": true,
+      "requires": {
+        "isarray": "1.0.0"
+      }
     },
     "isstream": {
       "version": "0.1.2",
@@ -1623,7 +2176,10 @@
       "version": "1.0.1",
       "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz",
       "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=",
-      "dev": true
+      "dev": true,
+      "requires": {
+        "jsonify": "~0.0.0"
+      }
     },
     "json-stringify-safe": {
       "version": "5.0.1",
@@ -1635,7 +2191,10 @@
       "version": "4.0.0",
       "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz",
       "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=",
-      "dev": true
+      "dev": true,
+      "requires": {
+        "graceful-fs": "^4.1.6"
+      }
     },
     "jsonify": {
       "version": "0.0.0",
@@ -1654,6 +2213,12 @@
       "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz",
       "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=",
       "dev": true,
+      "requires": {
+        "assert-plus": "1.0.0",
+        "extsprintf": "1.3.0",
+        "json-schema": "0.2.3",
+        "verror": "1.10.0"
+      },
       "dependencies": {
         "assert-plus": {
           "version": "1.0.0",
@@ -1667,31 +2232,57 @@
       "version": "3.2.2",
       "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
       "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
-      "dev": true
+      "dev": true,
+      "requires": {
+        "is-buffer": "^1.1.5"
+      }
     },
     "lazystream": {
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.0.tgz",
       "integrity": "sha1-9plf4PggOS9hOWvolGJAe7dxaOQ=",
-      "dev": true
+      "dev": true,
+      "requires": {
+        "readable-stream": "^2.0.5"
+      }
     },
     "lcid": {
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz",
       "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=",
-      "dev": true
+      "dev": true,
+      "requires": {
+        "invert-kv": "^1.0.0"
+      }
     },
     "less": {
       "version": "2.7.3",
       "resolved": "https://registry.npmjs.org/less/-/less-2.7.3.tgz",
       "integrity": "sha512-KPdIJKWcEAb02TuJtaLrhue0krtRLoRoo7x6BNJIBelO00t/CCdJQUnHW5V34OnHMWzIktSalJxRO+FvytQlCQ==",
-      "dev": true
+      "dev": true,
+      "requires": {
+        "errno": "^0.1.1",
+        "graceful-fs": "^4.1.2",
+        "image-size": "~0.5.0",
+        "mime": "^1.2.11",
+        "mkdirp": "^0.5.0",
+        "promise": "^7.1.1",
+        "request": "2.81.0",
+        "source-map": "^0.5.3"
+      }
     },
     "load-json-file": {
       "version": "1.1.0",
       "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz",
       "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=",
-      "dev": true
+      "dev": true,
+      "requires": {
+        "graceful-fs": "^4.1.2",
+        "parse-json": "^2.2.0",
+        "pify": "^2.0.0",
+        "pinkie-promise": "^2.0.0",
+        "strip-bom": "^2.0.0"
+      }
     },
     "lodash": {
       "version": "4.17.10",
@@ -1769,7 +2360,10 @@
       "version": "3.2.0",
       "resolved": "https://registry.npmjs.org/lodash.escape/-/lodash.escape-3.2.0.tgz",
       "integrity": "sha1-mV7g3BjBtIzJLv+ucaEKq1tIdpg=",
-      "dev": true
+      "dev": true,
+      "requires": {
+        "lodash._root": "^3.0.0"
+      }
     },
     "lodash.isarguments": {
       "version": "3.1.0",
@@ -1793,7 +2387,12 @@
       "version": "3.1.2",
       "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-3.1.2.tgz",
       "integrity": "sha1-TbwEcrFWvlCgsoaFXRvQsMZWCYo=",
-      "dev": true
+      "dev": true,
+      "requires": {
+        "lodash._getnative": "^3.0.0",
+        "lodash.isarguments": "^3.0.0",
+        "lodash.isarray": "^3.0.0"
+      }
     },
     "lodash.mergewith": {
       "version": "4.6.1",
@@ -1811,31 +2410,57 @@
       "version": "3.6.2",
       "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-3.6.2.tgz",
       "integrity": "sha1-+M3sxhaaJVvpCYrosMU9N4kx0U8=",
-      "dev": true
+      "dev": true,
+      "requires": {
+        "lodash._basecopy": "^3.0.0",
+        "lodash._basetostring": "^3.0.0",
+        "lodash._basevalues": "^3.0.0",
+        "lodash._isiterateecall": "^3.0.0",
+        "lodash._reinterpolate": "^3.0.0",
+        "lodash.escape": "^3.0.0",
+        "lodash.keys": "^3.0.0",
+        "lodash.restparam": "^3.0.0",
+        "lodash.templatesettings": "^3.0.0"
+      }
     },
     "lodash.templatesettings": {
       "version": "3.1.1",
       "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-3.1.1.tgz",
       "integrity": "sha1-+zB4RHU7Zrnxr6VOJix0UwfbqOU=",
-      "dev": true
+      "dev": true,
+      "requires": {
+        "lodash._reinterpolate": "^3.0.0",
+        "lodash.escape": "^3.0.0"
+      }
     },
     "loud-rejection": {
       "version": "1.6.0",
       "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz",
       "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=",
-      "dev": true
+      "dev": true,
+      "requires": {
+        "currently-unhandled": "^0.4.1",
+        "signal-exit": "^3.0.0"
+      }
     },
     "lru-cache": {
       "version": "4.1.2",
       "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.2.tgz",
       "integrity": "sha512-wgeVXhrDwAWnIF/yZARsFnMBtdFXOg1b8RIrhilp+0iDYN4mdQcNZElDZ0e4B64BhaxeQ5zN7PMyvu7we1kPeQ==",
-      "dev": true
+      "dev": true,
+      "requires": {
+        "pseudomap": "^1.0.2",
+        "yallist": "^2.1.2"
+      }
     },
     "magic-string": {
       "version": "0.22.5",
       "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.22.5.tgz",
       "integrity": "sha512-oreip9rJZkzvA8Qzk9HFs8fZGF/u7H/gtrE8EN6RjKJ9kh2HlC+yQ2QezifqTZfGyiuAV0dRv5a+y/8gBb1m9w==",
-      "dev": true
+      "dev": true,
+      "requires": {
+        "vlq": "^0.2.2"
+      }
     },
     "make-error": {
       "version": "1.3.4",
@@ -1854,6 +2479,18 @@
       "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz",
       "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=",
       "dev": true,
+      "requires": {
+        "camelcase-keys": "^2.0.0",
+        "decamelize": "^1.1.2",
+        "loud-rejection": "^1.0.0",
+        "map-obj": "^1.0.1",
+        "minimist": "^1.1.3",
+        "normalize-package-data": "^2.3.4",
+        "object-assign": "^4.0.1",
+        "read-pkg-up": "^1.0.1",
+        "redent": "^1.0.0",
+        "trim-newlines": "^1.0.0"
+      },
       "dependencies": {
         "object-assign": {
           "version": "4.1.1",
@@ -1867,13 +2504,31 @@
       "version": "1.0.1",
       "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-1.0.1.tgz",
       "integrity": "sha1-QEEgLVCKNCugAXQAjfDCUbjBNeE=",
-      "dev": true
+      "dev": true,
+      "requires": {
+        "readable-stream": "^2.0.1"
+      }
     },
     "micromatch": {
       "version": "2.3.11",
       "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz",
       "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=",
-      "dev": true
+      "dev": true,
+      "requires": {
+        "arr-diff": "^2.0.0",
+        "array-unique": "^0.2.1",
+        "braces": "^1.8.2",
+        "expand-brackets": "^0.1.4",
+        "extglob": "^0.3.1",
+        "filename-regex": "^2.0.0",
+        "is-extglob": "^1.0.0",
+        "is-glob": "^2.0.1",
+        "kind-of": "^3.0.2",
+        "normalize-path": "^2.0.1",
+        "object.omit": "^2.0.0",
+        "parse-glob": "^3.0.4",
+        "regex-cache": "^0.4.2"
+      }
     },
     "mime": {
       "version": "1.6.0",
@@ -1892,13 +2547,19 @@
       "version": "2.1.18",
       "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz",
       "integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==",
-      "dev": true
+      "dev": true,
+      "requires": {
+        "mime-db": "~1.33.0"
+      }
     },
     "minimatch": {
       "version": "3.0.4",
       "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
       "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
-      "dev": true
+      "dev": true,
+      "requires": {
+        "brace-expansion": "^1.1.7"
+      }
     },
     "minimist": {
       "version": "1.2.0",
@@ -1911,6 +2572,9 @@
       "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
       "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
       "dev": true,
+      "requires": {
+        "minimist": "0.0.8"
+      },
       "dependencies": {
         "minimist": {
           "version": "0.0.8",
@@ -1930,7 +2594,10 @@
       "version": "0.1.2",
       "resolved": "https://registry.npmjs.org/multipipe/-/multipipe-0.1.2.tgz",
       "integrity": "sha1-Ko8t33Du1WTf8tV/HhoTfZ8FB4s=",
-      "dev": true
+      "dev": true,
+      "requires": {
+        "duplexer2": "0.0.2"
+      }
     },
     "nan": {
       "version": "2.10.0",
@@ -1942,13 +2609,53 @@
       "version": "1.7.0",
       "resolved": "https://registry.npmjs.org/ng-packagr/-/ng-packagr-1.7.0.tgz",
       "integrity": "sha512-A7TX80ZNTCZYnhLCdSzuW+iXfeOkJ1yH3EwSdbxC546ztvpqBXoIG6ytTJsOskMi9R1uFn2P7wcqA8+MdxfNZg==",
-      "dev": true
+      "dev": true,
+      "requires": {
+        "@angular/tsc-wrapped": "^4.4.5",
+        "@ngtools/json-schema": "^1.1.0",
+        "autoprefixer": "^7.1.1",
+        "browserslist": "^2.1.5",
+        "commander": "^2.11.0",
+        "cpx": "^1.5.0",
+        "fs-extra": "^4.0.2",
+        "glob": "^7.1.2",
+        "gulp-inline-ng2-template": "^4.0.0",
+        "less": "^2.7.2",
+        "lodash": "^4.17.4",
+        "node-sass": "^4.5.3",
+        "postcss": "^6.0.2",
+        "read-file": "^0.2.0",
+        "rimraf": "^2.6.1",
+        "rollup": "^0.51.0",
+        "rollup-plugin-commonjs": "^8.2.1",
+        "rollup-plugin-node-resolve": "^3.0.0",
+        "sorcery": "^0.10.0",
+        "stylus": "^0.54.5",
+        "ts-node": "^3.0.4",
+        "uglify-js": "^3.0.7",
+        "vinyl-fs": "^2.4.4"
+      }
     },
     "node-gyp": {
       "version": "3.6.2",
       "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-3.6.2.tgz",
       "integrity": "sha1-m/vlRWIoYoSDjnUOrAUpWFP6HGA=",
       "dev": true,
+      "requires": {
+        "fstream": "^1.0.0",
+        "glob": "^7.0.3",
+        "graceful-fs": "^4.1.2",
+        "minimatch": "^3.0.2",
+        "mkdirp": "^0.5.0",
+        "nopt": "2 || 3",
+        "npmlog": "0 || 1 || 2 || 3 || 4",
+        "osenv": "0",
+        "request": "2",
+        "rimraf": "2",
+        "semver": "~5.3.0",
+        "tar": "^2.0.0",
+        "which": "1"
+      },
       "dependencies": {
         "semver": {
           "version": "5.3.0",
@@ -1963,6 +2670,27 @@
       "resolved": "https://registry.npmjs.org/node-sass/-/node-sass-4.9.0.tgz",
       "integrity": "sha512-QFHfrZl6lqRU3csypwviz2XLgGNOoWQbo2GOvtsfQqOfL4cy1BtWnhx/XUeAO9LT3ahBzSRXcEO6DdvAH9DzSg==",
       "dev": true,
+      "requires": {
+        "async-foreach": "^0.1.3",
+        "chalk": "^1.1.1",
+        "cross-spawn": "^3.0.0",
+        "gaze": "^1.0.0",
+        "get-stdin": "^4.0.1",
+        "glob": "^7.0.3",
+        "in-publish": "^2.0.0",
+        "lodash.assign": "^4.2.0",
+        "lodash.clonedeep": "^4.3.2",
+        "lodash.mergewith": "^4.6.0",
+        "meow": "^3.7.0",
+        "mkdirp": "^0.5.1",
+        "nan": "^2.10.0",
+        "node-gyp": "^3.3.1",
+        "npmlog": "^4.0.0",
+        "request": "~2.79.0",
+        "sass-graph": "^2.2.4",
+        "stdout-stream": "^1.4.0",
+        "true-case-path": "^1.0.2"
+      },
       "dependencies": {
         "ansi-styles": {
           "version": "2.2.1",
@@ -1980,13 +2708,26 @@
           "version": "1.1.3",
           "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
           "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
-          "dev": true
+          "dev": true,
+          "requires": {
+            "ansi-styles": "^2.2.1",
+            "escape-string-regexp": "^1.0.2",
+            "has-ansi": "^2.0.0",
+            "strip-ansi": "^3.0.0",
+            "supports-color": "^2.0.0"
+          }
         },
         "har-validator": {
           "version": "2.0.6",
           "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-2.0.6.tgz",
           "integrity": "sha1-zcvAgYgmWtEZtqWnyKtw7s+10n0=",
-          "dev": true
+          "dev": true,
+          "requires": {
+            "chalk": "^1.1.1",
+            "commander": "^2.9.0",
+            "is-my-json-valid": "^2.12.4",
+            "pinkie-promise": "^2.0.0"
+          }
         },
         "qs": {
           "version": "6.3.2",
@@ -1998,7 +2739,29 @@
           "version": "2.79.0",
           "resolved": "https://registry.npmjs.org/request/-/request-2.79.0.tgz",
           "integrity": "sha1-Tf5b9r6LjNw3/Pk+BLZVd3InEN4=",
-          "dev": true
+          "dev": true,
+          "requires": {
+            "aws-sign2": "~0.6.0",
+            "aws4": "^1.2.1",
+            "caseless": "~0.11.0",
+            "combined-stream": "~1.0.5",
+            "extend": "~3.0.0",
+            "forever-agent": "~0.6.1",
+            "form-data": "~2.1.1",
+            "har-validator": "~2.0.6",
+            "hawk": "~3.1.3",
+            "http-signature": "~1.1.0",
+            "is-typedarray": "~1.0.0",
+            "isstream": "~0.1.2",
+            "json-stringify-safe": "~5.0.1",
+            "mime-types": "~2.1.7",
+            "oauth-sign": "~0.8.1",
+            "qs": "~6.3.0",
+            "stringstream": "~0.0.4",
+            "tough-cookie": "~2.3.0",
+            "tunnel-agent": "~0.4.1",
+            "uuid": "^3.0.0"
+          }
         },
         "supports-color": {
           "version": "2.0.0",
@@ -2018,19 +2781,31 @@
       "version": "3.0.6",
       "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz",
       "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=",
-      "dev": true
+      "dev": true,
+      "requires": {
+        "abbrev": "1"
+      }
     },
     "normalize-package-data": {
       "version": "2.4.0",
       "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz",
       "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==",
-      "dev": true
+      "dev": true,
+      "requires": {
+        "hosted-git-info": "^2.1.4",
+        "is-builtin-module": "^1.0.0",
+        "semver": "2 || 3 || 4 || 5",
+        "validate-npm-package-license": "^3.0.1"
+      }
     },
     "normalize-path": {
       "version": "2.1.1",
       "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz",
       "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=",
-      "dev": true
+      "dev": true,
+      "requires": {
+        "remove-trailing-separator": "^1.0.1"
+      }
     },
     "normalize-range": {
       "version": "0.1.2",
@@ -2042,7 +2817,13 @@
       "version": "4.1.2",
       "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz",
       "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==",
-      "dev": true
+      "dev": true,
+      "requires": {
+        "are-we-there-yet": "~1.1.2",
+        "console-control-strings": "~1.1.0",
+        "gauge": "~2.7.3",
+        "set-blocking": "~2.0.0"
+      }
     },
     "num2fraction": {
       "version": "1.2.2",
@@ -2072,19 +2853,30 @@
       "version": "2.0.1",
       "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz",
       "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=",
-      "dev": true
+      "dev": true,
+      "requires": {
+        "for-own": "^0.1.4",
+        "is-extendable": "^0.1.1"
+      }
     },
     "once": {
       "version": "1.4.0",
       "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
       "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
-      "dev": true
+      "dev": true,
+      "requires": {
+        "wrappy": "1"
+      }
     },
     "ordered-read-streams": {
       "version": "0.3.0",
       "resolved": "https://registry.npmjs.org/ordered-read-streams/-/ordered-read-streams-0.3.0.tgz",
       "integrity": "sha1-cTfmmzKYuzQiR6G77jiByA4v14s=",
-      "dev": true
+      "dev": true,
+      "requires": {
+        "is-stream": "^1.0.1",
+        "readable-stream": "^2.0.1"
+      }
     },
     "os-homedir": {
       "version": "1.0.2",
@@ -2096,7 +2888,10 @@
       "version": "1.4.0",
       "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz",
       "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=",
-      "dev": true
+      "dev": true,
+      "requires": {
+        "lcid": "^1.0.0"
+      }
     },
     "os-tmpdir": {
       "version": "1.0.2",
@@ -2108,19 +2903,32 @@
       "version": "0.1.5",
       "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz",
       "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==",
-      "dev": true
+      "dev": true,
+      "requires": {
+        "os-homedir": "^1.0.0",
+        "os-tmpdir": "^1.0.0"
+      }
     },
     "parse-glob": {
       "version": "3.0.4",
       "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz",
       "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=",
-      "dev": true
+      "dev": true,
+      "requires": {
+        "glob-base": "^0.3.0",
+        "is-dotfile": "^1.0.0",
+        "is-extglob": "^1.0.0",
+        "is-glob": "^2.0.0"
+      }
     },
     "parse-json": {
       "version": "2.2.0",
       "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz",
       "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=",
-      "dev": true
+      "dev": true,
+      "requires": {
+        "error-ex": "^1.2.0"
+      }
     },
     "parse-passwd": {
       "version": "1.0.0",
@@ -2138,7 +2946,10 @@
       "version": "2.1.0",
       "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz",
       "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=",
-      "dev": true
+      "dev": true,
+      "requires": {
+        "pinkie-promise": "^2.0.0"
+      }
     },
     "path-is-absolute": {
       "version": "1.0.1",
@@ -2156,7 +2967,12 @@
       "version": "1.1.0",
       "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz",
       "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=",
-      "dev": true
+      "dev": true,
+      "requires": {
+        "graceful-fs": "^4.1.2",
+        "pify": "^2.0.0",
+        "pinkie-promise": "^2.0.0"
+      }
     },
     "performance-now": {
       "version": "0.2.0",
@@ -2180,13 +2996,21 @@
       "version": "2.0.1",
       "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz",
       "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=",
-      "dev": true
+      "dev": true,
+      "requires": {
+        "pinkie": "^2.0.0"
+      }
     },
     "postcss": {
       "version": "6.0.21",
       "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.21.tgz",
       "integrity": "sha512-y/bKfbQz2Nn/QBC08bwvYUxEFOVGfPIUOTsJ2CK5inzlXW9SdYR1x4pEsG9blRAF/PX+wRNdOah+gx/hv4q7dw==",
       "dev": true,
+      "requires": {
+        "chalk": "^2.3.2",
+        "source-map": "^0.6.1",
+        "supports-color": "^5.3.0"
+      },
       "dependencies": {
         "source-map": {
           "version": "0.6.1",
@@ -2225,7 +3049,10 @@
       "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz",
       "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==",
       "dev": true,
-      "optional": true
+      "optional": true,
+      "requires": {
+        "asap": "~2.0.3"
+      }
     },
     "prr": {
       "version": "1.0.1",
@@ -2257,18 +3084,28 @@
       "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.7.tgz",
       "integrity": "sha512-D5JUjPyJbaJDkuAazpVnSfVkLlpeO3wDlPROTMLGKG1zMFNFRgrciKo1ltz/AzNTkqE0HzDx655QOL51N06how==",
       "dev": true,
+      "requires": {
+        "is-number": "^3.0.0",
+        "kind-of": "^4.0.0"
+      },
       "dependencies": {
         "is-number": {
           "version": "3.0.0",
           "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
           "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
           "dev": true,
+          "requires": {
+            "kind-of": "^3.0.2"
+          },
           "dependencies": {
             "kind-of": {
               "version": "3.2.2",
               "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
               "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
-              "dev": true
+              "dev": true,
+              "requires": {
+                "is-buffer": "^1.1.5"
+              }
             }
           }
         },
@@ -2276,7 +3113,10 @@
           "version": "4.0.0",
           "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz",
           "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=",
-          "dev": true
+          "dev": true,
+          "requires": {
+            "is-buffer": "^1.1.5"
+          }
         }
       }
     },
@@ -2290,37 +3130,71 @@
       "version": "1.1.0",
       "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz",
       "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=",
-      "dev": true
+      "dev": true,
+      "requires": {
+        "load-json-file": "^1.0.0",
+        "normalize-package-data": "^2.3.2",
+        "path-type": "^1.0.0"
+      }
     },
     "read-pkg-up": {
       "version": "1.0.1",
       "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz",
       "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=",
-      "dev": true
+      "dev": true,
+      "requires": {
+        "find-up": "^1.0.0",
+        "read-pkg": "^1.0.0"
+      }
     },
     "readable-stream": {
       "version": "2.3.6",
       "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
       "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
-      "dev": true
+      "dev": true,
+      "requires": {
+        "core-util-is": "~1.0.0",
+        "inherits": "~2.0.3",
+        "isarray": "~1.0.0",
+        "process-nextick-args": "~2.0.0",
+        "safe-buffer": "~5.1.1",
+        "string_decoder": "~1.1.1",
+        "util-deprecate": "~1.0.1"
+      }
     },
     "readdirp": {
       "version": "2.1.0",
       "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.1.0.tgz",
       "integrity": "sha1-TtCtBg3zBzMAxIRANz9y0cxkLXg=",
-      "dev": true
+      "dev": true,
+      "requires": {
+        "graceful-fs": "^4.1.2",
+        "minimatch": "^3.0.2",
+        "readable-stream": "^2.0.2",
+        "set-immediate-shim": "^1.0.1"
+      }
     },
     "recast": {
       "version": "0.11.23",
       "resolved": "https://registry.npmjs.org/recast/-/recast-0.11.23.tgz",
       "integrity": "sha1-RR/TAEqx5N+bTktmN2sqIZEkYtM=",
-      "dev": true
+      "dev": true,
+      "requires": {
+        "ast-types": "0.9.6",
+        "esprima": "~3.1.0",
+        "private": "~0.1.5",
+        "source-map": "~0.5.0"
+      }
     },
     "redent": {
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz",
       "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=",
-      "dev": true
+      "dev": true,
+      "requires": {
+        "indent-string": "^2.1.0",
+        "strip-indent": "^1.0.1"
+      }
     },
     "reflect-metadata": {
       "version": "0.1.10",
@@ -2338,7 +3212,10 @@
       "version": "0.4.4",
       "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz",
       "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==",
-      "dev": true
+      "dev": true,
+      "requires": {
+        "is-equal-shallow": "^0.1.3"
+      }
     },
     "remove-trailing-separator": {
       "version": "1.1.0",
@@ -2362,7 +3239,10 @@
       "version": "2.0.1",
       "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz",
       "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=",
-      "dev": true
+      "dev": true,
+      "requires": {
+        "is-finite": "^1.0.0"
+      }
     },
     "replace-ext": {
       "version": "0.0.1",
@@ -2374,7 +3254,31 @@
       "version": "2.81.0",
       "resolved": "https://registry.npmjs.org/request/-/request-2.81.0.tgz",
       "integrity": "sha1-xpKJRqDgbF+Nb4qTM0af/aRimKA=",
-      "dev": true
+      "dev": true,
+      "requires": {
+        "aws-sign2": "~0.6.0",
+        "aws4": "^1.2.1",
+        "caseless": "~0.12.0",
+        "combined-stream": "~1.0.5",
+        "extend": "~3.0.0",
+        "forever-agent": "~0.6.1",
+        "form-data": "~2.1.1",
+        "har-validator": "~4.2.1",
+        "hawk": "~3.1.3",
+        "http-signature": "~1.1.0",
+        "is-typedarray": "~1.0.0",
+        "isstream": "~0.1.2",
+        "json-stringify-safe": "~5.0.1",
+        "mime-types": "~2.1.7",
+        "oauth-sign": "~0.8.1",
+        "performance-now": "^0.2.0",
+        "qs": "~6.4.0",
+        "safe-buffer": "^5.0.1",
+        "stringstream": "~0.0.4",
+        "tough-cookie": "~2.3.0",
+        "tunnel-agent": "^0.6.0",
+        "uuid": "^3.0.0"
+      }
     },
     "require-directory": {
       "version": "2.1.1",
@@ -2392,13 +3296,19 @@
       "version": "1.7.1",
       "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.7.1.tgz",
       "integrity": "sha512-c7rwLofp8g1U+h1KNyHL/jicrKg1Ek4q+Lr33AL65uZTinUZHe30D5HlyN5V9NW0JX1D5dXQ4jqW5l7Sy/kGfw==",
-      "dev": true
+      "dev": true,
+      "requires": {
+        "path-parse": "^1.0.5"
+      }
     },
     "rimraf": {
       "version": "2.6.2",
       "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz",
       "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==",
-      "dev": true
+      "dev": true,
+      "requires": {
+        "glob": "^7.0.5"
+      }
     },
     "rollup": {
       "version": "0.51.8",
@@ -2410,13 +3320,25 @@
       "version": "8.4.1",
       "resolved": "https://registry.npmjs.org/rollup-plugin-commonjs/-/rollup-plugin-commonjs-8.4.1.tgz",
       "integrity": "sha512-mg+WuD+jlwoo8bJtW3Mvx7Tz6TsIdMsdhuvCnDMoyjh0oxsVgsjB/N0X984RJCWwc5IIiqNVJhXeeITcc73++A==",
-      "dev": true
+      "dev": true,
+      "requires": {
+        "acorn": "^5.2.1",
+        "estree-walker": "^0.5.0",
+        "magic-string": "^0.22.4",
+        "resolve": "^1.4.0",
+        "rollup-pluginutils": "^2.0.1"
+      }
     },
     "rollup-plugin-node-resolve": {
       "version": "3.3.0",
       "resolved": "https://registry.npmjs.org/rollup-plugin-node-resolve/-/rollup-plugin-node-resolve-3.3.0.tgz",
       "integrity": "sha512-9zHGr3oUJq6G+X0oRMYlzid9fXicBdiydhwGChdyeNRGPcN/majtegApRKHLR5drboUvEWU+QeUmGTyEZQs3WA==",
       "dev": true,
+      "requires": {
+        "builtin-modules": "^2.0.0",
+        "is-module": "^1.0.0",
+        "resolve": "^1.1.6"
+      },
       "dependencies": {
         "builtin-modules": {
           "version": "2.0.0",
@@ -2431,6 +3353,10 @@
       "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.0.1.tgz",
       "integrity": "sha1-fslbNXP2VDpGpkYb2afFRFJdD8A=",
       "dev": true,
+      "requires": {
+        "estree-walker": "^0.3.0",
+        "micromatch": "^2.3.11"
+      },
       "dependencies": {
         "estree-walker": {
           "version": "0.3.1",
@@ -2444,7 +3370,10 @@
       "version": "5.4.2",
       "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-5.4.2.tgz",
       "integrity": "sha1-KjI2/L8D31e64G/Wly/ZnlwI/Pc=",
-      "dev": true
+      "dev": true,
+      "requires": {
+        "symbol-observable": "^1.0.1"
+      }
     },
     "safe-buffer": {
       "version": "5.1.2",
@@ -2456,13 +3385,25 @@
       "version": "0.5.1",
       "resolved": "https://registry.npmjs.org/sander/-/sander-0.5.1.tgz",
       "integrity": "sha1-dB4kXiMfB8r7b98PEzrfohalAq0=",
-      "dev": true
+      "dev": true,
+      "requires": {
+        "es6-promise": "^3.1.2",
+        "graceful-fs": "^4.1.3",
+        "mkdirp": "^0.5.1",
+        "rimraf": "^2.5.2"
+      }
     },
     "sass-graph": {
       "version": "2.2.4",
       "resolved": "https://registry.npmjs.org/sass-graph/-/sass-graph-2.2.4.tgz",
       "integrity": "sha1-E/vWPNHK8JCLn9k0dq1DpR0eC0k=",
-      "dev": true
+      "dev": true,
+      "requires": {
+        "glob": "^7.0.0",
+        "lodash": "^4.0.0",
+        "scss-tokenizer": "^0.2.3",
+        "yargs": "^7.0.0"
+      }
     },
     "sax": {
       "version": "0.5.8",
@@ -2475,12 +3416,19 @@
       "resolved": "https://registry.npmjs.org/scss-tokenizer/-/scss-tokenizer-0.2.3.tgz",
       "integrity": "sha1-jrBtualyMzOCTT9VMGQRSYR85dE=",
       "dev": true,
+      "requires": {
+        "js-base64": "^2.1.8",
+        "source-map": "^0.4.2"
+      },
       "dependencies": {
         "source-map": {
           "version": "0.4.4",
           "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz",
           "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=",
-          "dev": true
+          "dev": true,
+          "requires": {
+            "amdefine": ">=0.0.4"
+          }
         }
       }
     },
@@ -2506,7 +3454,13 @@
       "version": "1.6.1",
       "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.6.1.tgz",
       "integrity": "sha1-9HgZSczkAmlxJ0MOo7PFR29IF2c=",
-      "dev": true
+      "dev": true,
+      "requires": {
+        "array-filter": "~0.0.0",
+        "array-map": "~0.0.0",
+        "array-reduce": "~0.0.0",
+        "jsonify": "~0.0.0"
+      }
     },
     "signal-exit": {
       "version": "3.0.2",
@@ -2518,13 +3472,22 @@
       "version": "1.0.9",
       "resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz",
       "integrity": "sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg=",
-      "dev": true
+      "dev": true,
+      "requires": {
+        "hoek": "2.x.x"
+      }
     },
     "sorcery": {
       "version": "0.10.0",
       "resolved": "https://registry.npmjs.org/sorcery/-/sorcery-0.10.0.tgz",
       "integrity": "sha1-iukK19fLBfxZ8asMY3hF1cFaUrc=",
-      "dev": true
+      "dev": true,
+      "requires": {
+        "buffer-crc32": "^0.2.5",
+        "minimist": "^1.2.0",
+        "sander": "^0.5.0",
+        "sourcemap-codec": "^1.3.0"
+      }
     },
     "source-map": {
       "version": "0.5.7",
@@ -2536,7 +3499,10 @@
       "version": "0.4.18",
       "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz",
       "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==",
-      "dev": true
+      "dev": true,
+      "requires": {
+        "source-map": "^0.5.6"
+      }
     },
     "sourcemap-codec": {
       "version": "1.4.1",
@@ -2554,7 +3520,11 @@
       "version": "3.0.0",
       "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.0.0.tgz",
       "integrity": "sha512-N19o9z5cEyc8yQQPukRCZ9EUmb4HUpnrmaL/fxS2pBo2jbfcFRVuFZ/oFC+vZz0MNNk0h80iMn5/S6qGZOL5+g==",
-      "dev": true
+      "dev": true,
+      "requires": {
+        "spdx-expression-parse": "^3.0.0",
+        "spdx-license-ids": "^3.0.0"
+      }
     },
     "spdx-exceptions": {
       "version": "2.1.0",
@@ -2566,7 +3536,11 @@
       "version": "3.0.0",
       "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz",
       "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==",
-      "dev": true
+      "dev": true,
+      "requires": {
+        "spdx-exceptions": "^2.1.0",
+        "spdx-license-ids": "^3.0.0"
+      }
     },
     "spdx-license-ids": {
       "version": "3.0.0",
@@ -2579,6 +3553,16 @@
       "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.14.1.tgz",
       "integrity": "sha1-Ew9Zde3a2WPx1W+SuaxsUfqfg+s=",
       "dev": true,
+      "requires": {
+        "asn1": "~0.2.3",
+        "assert-plus": "^1.0.0",
+        "bcrypt-pbkdf": "^1.0.0",
+        "dashdash": "^1.12.0",
+        "ecc-jsbn": "~0.1.1",
+        "getpass": "^0.1.1",
+        "jsbn": "~0.1.0",
+        "tweetnacl": "~0.14.0"
+      },
       "dependencies": {
         "assert-plus": {
           "version": "1.0.0",
@@ -2592,7 +3576,10 @@
       "version": "1.4.0",
       "resolved": "https://registry.npmjs.org/stdout-stream/-/stdout-stream-1.4.0.tgz",
       "integrity": "sha1-osfIWH5U2UJ+qe2zrD8s1SLfN4s=",
-      "dev": true
+      "dev": true,
+      "requires": {
+        "readable-stream": "^2.0.1"
+      }
     },
     "stream-shift": {
       "version": "1.0.0",
@@ -2600,17 +3587,25 @@
       "integrity": "sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI=",
       "dev": true
     },
-    "string_decoder": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
-      "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
-      "dev": true
-    },
     "string-width": {
       "version": "1.0.2",
       "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
       "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
-      "dev": true
+      "dev": true,
+      "requires": {
+        "code-point-at": "^1.0.0",
+        "is-fullwidth-code-point": "^1.0.0",
+        "strip-ansi": "^3.0.0"
+      }
+    },
+    "string_decoder": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+      "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+      "dev": true,
+      "requires": {
+        "safe-buffer": "~5.1.0"
+      }
     },
     "stringstream": {
       "version": "0.0.5",
@@ -2622,25 +3617,38 @@
       "version": "3.0.1",
       "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
       "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
-      "dev": true
+      "dev": true,
+      "requires": {
+        "ansi-regex": "^2.0.0"
+      }
     },
     "strip-bom": {
       "version": "2.0.0",
       "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz",
       "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=",
-      "dev": true
+      "dev": true,
+      "requires": {
+        "is-utf8": "^0.2.0"
+      }
     },
     "strip-bom-stream": {
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/strip-bom-stream/-/strip-bom-stream-1.0.0.tgz",
       "integrity": "sha1-5xRDmFd9Uaa+0PoZlPoF9D/ZiO4=",
-      "dev": true
+      "dev": true,
+      "requires": {
+        "first-chunk-stream": "^1.0.0",
+        "strip-bom": "^2.0.0"
+      }
     },
     "strip-indent": {
       "version": "1.0.1",
       "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz",
       "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=",
-      "dev": true
+      "dev": true,
+      "requires": {
+        "get-stdin": "^4.0.1"
+      }
     },
     "strip-json-comments": {
       "version": "2.0.1",
@@ -2653,18 +3661,37 @@
       "resolved": "https://registry.npmjs.org/stylus/-/stylus-0.54.5.tgz",
       "integrity": "sha1-QrlWCTHKcJDOhRWnmLqeaqPW3Hk=",
       "dev": true,
+      "requires": {
+        "css-parse": "1.7.x",
+        "debug": "*",
+        "glob": "7.0.x",
+        "mkdirp": "0.5.x",
+        "sax": "0.5.x",
+        "source-map": "0.1.x"
+      },
       "dependencies": {
         "glob": {
           "version": "7.0.6",
           "resolved": "https://registry.npmjs.org/glob/-/glob-7.0.6.tgz",
           "integrity": "sha1-IRuvr0nlJbjNkyYNFKsTYVKz9Xo=",
-          "dev": true
+          "dev": true,
+          "requires": {
+            "fs.realpath": "^1.0.0",
+            "inflight": "^1.0.4",
+            "inherits": "2",
+            "minimatch": "^3.0.2",
+            "once": "^1.3.0",
+            "path-is-absolute": "^1.0.0"
+          }
         },
         "source-map": {
           "version": "0.1.43",
           "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz",
           "integrity": "sha1-wkvBRspRfBRx9drL4lcbK3+eM0Y=",
-          "dev": true
+          "dev": true,
+          "requires": {
+            "amdefine": ">=0.0.4"
+          }
         }
       }
     },
@@ -2672,13 +3699,19 @@
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/subarg/-/subarg-1.0.0.tgz",
       "integrity": "sha1-9izxdYHplrSPyWVpn1TAauJouNI=",
-      "dev": true
+      "dev": true,
+      "requires": {
+        "minimist": "^1.1.0"
+      }
     },
     "supports-color": {
       "version": "5.4.0",
       "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz",
       "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==",
-      "dev": true
+      "dev": true,
+      "requires": {
+        "has-flag": "^3.0.0"
+      }
     },
     "symbol-observable": {
       "version": "1.0.4",
@@ -2690,7 +3723,12 @@
       "version": "2.2.1",
       "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.1.tgz",
       "integrity": "sha1-jk0qJWwOIYXGsYrWlK7JaLg8sdE=",
-      "dev": true
+      "dev": true,
+      "requires": {
+        "block-stream": "*",
+        "fstream": "^1.0.2",
+        "inherits": "2"
+      }
     },
     "through": {
       "version": "2.3.8",
@@ -2702,13 +3740,21 @@
       "version": "2.0.3",
       "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz",
       "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=",
-      "dev": true
+      "dev": true,
+      "requires": {
+        "readable-stream": "^2.1.5",
+        "xtend": "~4.0.1"
+      }
     },
     "through2-filter": {
       "version": "2.0.0",
       "resolved": "https://registry.npmjs.org/through2-filter/-/through2-filter-2.0.0.tgz",
       "integrity": "sha1-YLxVoNrLdghdsfna6Zq0P4PWIuw=",
-      "dev": true
+      "dev": true,
+      "requires": {
+        "through2": "~2.0.0",
+        "xtend": "~4.0.0"
+      }
     },
     "time-stamp": {
       "version": "1.1.0",
@@ -2720,13 +3766,19 @@
       "version": "0.1.1",
       "resolved": "https://registry.npmjs.org/to-absolute-glob/-/to-absolute-glob-0.1.1.tgz",
       "integrity": "sha1-HN+kcqnvUMI57maZm2YsoOs5k38=",
-      "dev": true
+      "dev": true,
+      "requires": {
+        "extend-shallow": "^2.0.1"
+      }
     },
     "tough-cookie": {
       "version": "2.3.4",
       "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.4.tgz",
       "integrity": "sha512-TZ6TTfI5NtZnuyy/Kecv+CnoROnyXn2DN97LontgQpCwsX2XyLYCC0ENhYkehSOwAp8rTQKc/NUIF7BkQ5rKLA==",
-      "dev": true
+      "dev": true,
+      "requires": {
+        "punycode": "^1.4.1"
+      }
     },
     "trim-newlines": {
       "version": "1.0.0",
@@ -2739,12 +3791,22 @@
       "resolved": "https://registry.npmjs.org/true-case-path/-/true-case-path-1.0.2.tgz",
       "integrity": "sha1-fskRMJJHZsf1c74wIMNPj9/QDWI=",
       "dev": true,
+      "requires": {
+        "glob": "^6.0.4"
+      },
       "dependencies": {
         "glob": {
           "version": "6.0.4",
           "resolved": "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz",
           "integrity": "sha1-DwiGD2oVUSey+t1PnOJLGqtuTSI=",
-          "dev": true
+          "dev": true,
+          "requires": {
+            "inflight": "^1.0.4",
+            "inherits": "2",
+            "minimatch": "2 || 3",
+            "once": "^1.3.0",
+            "path-is-absolute": "^1.0.0"
+          }
         }
       }
     },
@@ -2752,13 +3814,29 @@
       "version": "3.3.0",
       "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-3.3.0.tgz",
       "integrity": "sha1-wTxqMCTjC+EYDdUwOPwgkonUv2k=",
-      "dev": true
+      "dev": true,
+      "requires": {
+        "arrify": "^1.0.0",
+        "chalk": "^2.0.0",
+        "diff": "^3.1.0",
+        "make-error": "^1.1.1",
+        "minimist": "^1.2.0",
+        "mkdirp": "^0.5.1",
+        "source-map-support": "^0.4.0",
+        "tsconfig": "^6.0.0",
+        "v8flags": "^3.0.0",
+        "yn": "^2.0.0"
+      }
     },
     "tsconfig": {
       "version": "6.0.0",
       "resolved": "https://registry.npmjs.org/tsconfig/-/tsconfig-6.0.0.tgz",
       "integrity": "sha1-aw6DdgA9evGGT434+J3QBZ/80DI=",
       "dev": true,
+      "requires": {
+        "strip-bom": "^3.0.0",
+        "strip-json-comments": "^2.0.0"
+      },
       "dependencies": {
         "strip-bom": {
           "version": "3.0.0",
@@ -2772,7 +3850,13 @@
       "version": "0.21.6",
       "resolved": "https://registry.npmjs.org/tsickle/-/tsickle-0.21.6.tgz",
       "integrity": "sha1-U7Abl5xcE/2xOvs/uVgXflmRWI0=",
-      "dev": true
+      "dev": true,
+      "requires": {
+        "minimist": "^1.2.0",
+        "mkdirp": "^0.5.1",
+        "source-map": "^0.5.6",
+        "source-map-support": "^0.4.2"
+      }
     },
     "tslib": {
       "version": "1.7.1",
@@ -2784,7 +3868,10 @@
       "version": "0.6.0",
       "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
       "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=",
-      "dev": true
+      "dev": true,
+      "requires": {
+        "safe-buffer": "^5.0.1"
+      }
     },
     "tweetnacl": {
       "version": "0.14.5",
@@ -2804,6 +3891,10 @@
       "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.3.22.tgz",
       "integrity": "sha512-tqw96rL6/BG+7LM5VItdhDjTQmL5zG/I0b2RqWytlgeHe2eydZHuBHdA9vuGpCDhH/ZskNGcqDhivoR2xt8RIw==",
       "dev": true,
+      "requires": {
+        "commander": "~2.15.0",
+        "source-map": "~0.6.1"
+      },
       "dependencies": {
         "source-map": {
           "version": "0.6.1",
@@ -2817,7 +3908,11 @@
       "version": "2.2.1",
       "resolved": "https://registry.npmjs.org/unique-stream/-/unique-stream-2.2.1.tgz",
       "integrity": "sha1-WqADz76Uxf+GbE59ZouxxNuts2k=",
-      "dev": true
+      "dev": true,
+      "requires": {
+        "json-stable-stringify": "^1.0.0",
+        "through2-filter": "^2.0.0"
+      }
     },
     "universalify": {
       "version": "0.1.1",
@@ -2841,7 +3936,10 @@
       "version": "3.0.2",
       "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-3.0.2.tgz",
       "integrity": "sha512-6sgSKoFw1UpUPd3cFdF7QGnrH6tDeBgW1F3v9gy8gLY0mlbiBXq8soy8aQpY6xeeCjH5K+JvC62Acp7gtl7wWA==",
-      "dev": true
+      "dev": true,
+      "requires": {
+        "homedir-polyfill": "^1.0.1"
+      }
     },
     "vali-date": {
       "version": "1.0.0",
@@ -2853,13 +3951,22 @@
       "version": "3.0.3",
       "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.3.tgz",
       "integrity": "sha512-63ZOUnL4SIXj4L0NixR3L1lcjO38crAbgrTpl28t8jjrfuiOBL5Iygm+60qPs/KsZGzPNg6Smnc/oY16QTjF0g==",
-      "dev": true
+      "dev": true,
+      "requires": {
+        "spdx-correct": "^3.0.0",
+        "spdx-expression-parse": "^3.0.0"
+      }
     },
     "verror": {
       "version": "1.10.0",
       "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz",
       "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=",
       "dev": true,
+      "requires": {
+        "assert-plus": "^1.0.0",
+        "core-util-is": "1.0.2",
+        "extsprintf": "^1.2.0"
+      },
       "dependencies": {
         "assert-plus": {
           "version": "1.0.0",
@@ -2873,13 +3980,37 @@
       "version": "0.5.3",
       "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-0.5.3.tgz",
       "integrity": "sha1-sEVbOPxeDPMNQyUTLkYZcMIJHN4=",
-      "dev": true
+      "dev": true,
+      "requires": {
+        "clone": "^1.0.0",
+        "clone-stats": "^0.0.1",
+        "replace-ext": "0.0.1"
+      }
     },
     "vinyl-fs": {
       "version": "2.4.4",
       "resolved": "https://registry.npmjs.org/vinyl-fs/-/vinyl-fs-2.4.4.tgz",
       "integrity": "sha1-vm/zJwy1Xf19MGNkDegfJddTIjk=",
       "dev": true,
+      "requires": {
+        "duplexify": "^3.2.0",
+        "glob-stream": "^5.3.2",
+        "graceful-fs": "^4.0.0",
+        "gulp-sourcemaps": "1.6.0",
+        "is-valid-glob": "^0.3.0",
+        "lazystream": "^1.0.0",
+        "lodash.isequal": "^4.0.0",
+        "merge-stream": "^1.0.0",
+        "mkdirp": "^0.5.0",
+        "object-assign": "^4.0.0",
+        "readable-stream": "^2.0.4",
+        "strip-bom": "^2.0.0",
+        "strip-bom-stream": "^1.0.0",
+        "through2": "^2.0.0",
+        "through2-filter": "^2.0.0",
+        "vali-date": "^1.0.0",
+        "vinyl": "^1.0.0"
+      },
       "dependencies": {
         "object-assign": {
           "version": "4.1.1",
@@ -2891,7 +4022,12 @@
           "version": "1.2.0",
           "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-1.2.0.tgz",
           "integrity": "sha1-XIgDbPVl5d8FVYv8kR+GVt8hiIQ=",
-          "dev": true
+          "dev": true,
+          "requires": {
+            "clone": "^1.0.0",
+            "clone-stats": "^0.0.1",
+            "replace-ext": "0.0.1"
+          }
         }
       }
     },
@@ -2905,7 +4041,10 @@
       "version": "1.3.0",
       "resolved": "https://registry.npmjs.org/which/-/which-1.3.0.tgz",
       "integrity": "sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==",
-      "dev": true
+      "dev": true,
+      "requires": {
+        "isexe": "^2.0.0"
+      }
     },
     "which-module": {
       "version": "1.0.0",
@@ -2917,13 +4056,20 @@
       "version": "1.1.2",
       "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.2.tgz",
       "integrity": "sha512-ijDLlyQ7s6x1JgCLur53osjm/UXUYD9+0PbYKrBsYisYXzCxN+HC3mYDNy/dWdmf3AwqwU3CXwDCvsNgGK1S0w==",
-      "dev": true
+      "dev": true,
+      "requires": {
+        "string-width": "^1.0.2"
+      }
     },
     "wrap-ansi": {
       "version": "2.1.0",
       "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz",
       "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=",
-      "dev": true
+      "dev": true,
+      "requires": {
+        "string-width": "^1.0.1",
+        "strip-ansi": "^3.0.1"
+      }
     },
     "wrappy": {
       "version": "1.0.2",
@@ -2954,6 +4100,21 @@
       "resolved": "https://registry.npmjs.org/yargs/-/yargs-7.1.0.tgz",
       "integrity": "sha1-a6MY6xaWFyf10oT46gA+jWFU0Mg=",
       "dev": true,
+      "requires": {
+        "camelcase": "^3.0.0",
+        "cliui": "^3.2.0",
+        "decamelize": "^1.1.1",
+        "get-caller-file": "^1.0.1",
+        "os-locale": "^1.4.0",
+        "read-pkg-up": "^1.0.1",
+        "require-directory": "^2.1.1",
+        "require-main-filename": "^1.0.1",
+        "set-blocking": "^2.0.0",
+        "string-width": "^1.0.2",
+        "which-module": "^1.0.0",
+        "y18n": "^3.2.1",
+        "yargs-parser": "^5.0.0"
+      },
       "dependencies": {
         "camelcase": {
           "version": "3.0.0",
@@ -2968,6 +4129,9 @@
       "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-5.0.0.tgz",
       "integrity": "sha1-J17PDX/+Bcd+ZOfIbkzZS/DhIoo=",
       "dev": true,
+      "requires": {
+        "camelcase": "^3.0.0"
+      },
       "dependencies": {
         "camelcase": {
           "version": "3.0.0",
diff --git a/samples/client/petstore/typescript-angular-v4/npm/pom.xml b/samples/client/petstore/typescript-angular-v4/npm/pom.xml
index 0fd558145ef8..7a610e08f6ef 100644
--- a/samples/client/petstore/typescript-angular-v4/npm/pom.xml
+++ b/samples/client/petstore/typescript-angular-v4/npm/pom.xml
@@ -1,10 +1,10 @@
 
     4.0.0
     com.wordnik
-    TSAngular4PestoreTest
+    TSAngular4PestoreClientTests
     pom
     1.0-SNAPSHOT
-    TS Angular4 Pettore Test
+    TS Angular 4 Petstore Client Tests
     
         
             
diff --git a/samples/client/petstore/typescript-angular-v6-not-provided-in-root/default/.gitignore b/samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/default/.gitignore
similarity index 100%
rename from samples/client/petstore/typescript-angular-v6-not-provided-in-root/default/.gitignore
rename to samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/default/.gitignore
diff --git a/samples/client/petstore/typescript-angular-v6-not-provided-in-root/default/.openapi-generator-ignore b/samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/default/.openapi-generator-ignore
similarity index 100%
rename from samples/client/petstore/typescript-angular-v6-not-provided-in-root/default/.openapi-generator-ignore
rename to samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/default/.openapi-generator-ignore
diff --git a/samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/default/.openapi-generator/VERSION b/samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/default/.openapi-generator/VERSION
new file mode 100644
index 000000000000..1c00c5181548
--- /dev/null
+++ b/samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/default/.openapi-generator/VERSION
@@ -0,0 +1 @@
+3.0.2-SNAPSHOT
\ No newline at end of file
diff --git a/samples/client/petstore/typescript-angular-v6-not-provided-in-root/default/README.md b/samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/default/README.md
similarity index 100%
rename from samples/client/petstore/typescript-angular-v6-not-provided-in-root/default/README.md
rename to samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/default/README.md
diff --git a/samples/client/petstore/typescript-angular-v6-not-provided-in-root/default/api.module.ts b/samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/default/api.module.ts
similarity index 100%
rename from samples/client/petstore/typescript-angular-v6-not-provided-in-root/default/api.module.ts
rename to samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/default/api.module.ts
diff --git a/samples/client/petstore/typescript-angular-v6-not-provided-in-root/default/api/api.ts b/samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/default/api/api.ts
similarity index 100%
rename from samples/client/petstore/typescript-angular-v6-not-provided-in-root/default/api/api.ts
rename to samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/default/api/api.ts
diff --git a/samples/client/petstore/typescript-angular-v6-not-provided-in-root/default/api/pet.service.ts b/samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/default/api/pet.service.ts
similarity index 95%
rename from samples/client/petstore/typescript-angular-v6-not-provided-in-root/default/api/pet.service.ts
rename to samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/default/api/pet.service.ts
index 59fcf6247d96..5d494f52dea4 100644
--- a/samples/client/petstore/typescript-angular-v6-not-provided-in-root/default/api/pet.service.ts
+++ b/samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/default/api/pet.service.ts
@@ -33,12 +33,13 @@ export class PetService {
     public configuration = new Configuration();
 
     constructor(protected httpClient: HttpClient, @Optional()@Inject(BASE_PATH) basePath: string, @Optional() configuration: Configuration) {
-        if (basePath) {
-            this.basePath = basePath;
-        }
+
         if (configuration) {
             this.configuration = configuration;
-            this.basePath = basePath || configuration.basePath || this.basePath;
+            this.configuration.basePath = configuration.basePath || basePath || this.basePath;
+
+        } else {
+            this.configuration.basePath = basePath || this.basePath;
         }
     }
 
@@ -100,7 +101,7 @@ export class PetService {
             headers = headers.set('Content-Type', httpContentTypeSelected);
         }
 
-        return this.httpClient.post(`${this.basePath}/pet`,
+        return this.httpClient.post(`${this.configuration.basePath}/pet`,
             pet,
             {
                 withCredentials: this.configuration.withCredentials,
@@ -152,7 +153,7 @@ export class PetService {
         const consumes: string[] = [
         ];
 
-        return this.httpClient.delete(`${this.basePath}/pet/${encodeURIComponent(String(petId))}`,
+        return this.httpClient.delete(`${this.configuration.basePath}/pet/${encodeURIComponent(String(petId))}`,
             {
                 withCredentials: this.configuration.withCredentials,
                 headers: headers,
@@ -206,7 +207,7 @@ export class PetService {
         const consumes: string[] = [
         ];
 
-        return this.httpClient.get>(`${this.basePath}/pet/findByStatus`,
+        return this.httpClient.get>(`${this.configuration.basePath}/pet/findByStatus`,
             {
                 params: queryParameters,
                 withCredentials: this.configuration.withCredentials,
@@ -261,7 +262,7 @@ export class PetService {
         const consumes: string[] = [
         ];
 
-        return this.httpClient.get>(`${this.basePath}/pet/findByTags`,
+        return this.httpClient.get>(`${this.configuration.basePath}/pet/findByTags`,
             {
                 params: queryParameters,
                 withCredentials: this.configuration.withCredentials,
@@ -308,7 +309,7 @@ export class PetService {
         const consumes: string[] = [
         ];
 
-        return this.httpClient.get(`${this.basePath}/pet/${encodeURIComponent(String(petId))}`,
+        return this.httpClient.get(`${this.configuration.basePath}/pet/${encodeURIComponent(String(petId))}`,
             {
                 withCredentials: this.configuration.withCredentials,
                 headers: headers,
@@ -361,7 +362,7 @@ export class PetService {
             headers = headers.set('Content-Type', httpContentTypeSelected);
         }
 
-        return this.httpClient.put(`${this.basePath}/pet`,
+        return this.httpClient.put(`${this.configuration.basePath}/pet`,
             pet,
             {
                 withCredentials: this.configuration.withCredentials,
@@ -430,7 +431,7 @@ export class PetService {
             formParams = formParams.append('status', status) || formParams;
         }
 
-        return this.httpClient.post(`${this.basePath}/pet/${encodeURIComponent(String(petId))}`,
+        return this.httpClient.post(`${this.configuration.basePath}/pet/${encodeURIComponent(String(petId))}`,
             convertFormParamsToString ? formParams.toString() : formParams,
             {
                 withCredentials: this.configuration.withCredentials,
@@ -503,7 +504,7 @@ export class PetService {
             formParams = formParams.append('file', file) || formParams;
         }
 
-        return this.httpClient.post(`${this.basePath}/pet/${encodeURIComponent(String(petId))}/uploadImage`,
+        return this.httpClient.post(`${this.configuration.basePath}/pet/${encodeURIComponent(String(petId))}/uploadImage`,
             convertFormParamsToString ? formParams.toString() : formParams,
             {
                 withCredentials: this.configuration.withCredentials,
diff --git a/samples/client/petstore/typescript-angular-v6-not-provided-in-root/default/api/store.service.ts b/samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/default/api/store.service.ts
similarity index 94%
rename from samples/client/petstore/typescript-angular-v6-not-provided-in-root/default/api/store.service.ts
rename to samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/default/api/store.service.ts
index e1a4f639926b..1f1abb0b9e07 100644
--- a/samples/client/petstore/typescript-angular-v6-not-provided-in-root/default/api/store.service.ts
+++ b/samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/default/api/store.service.ts
@@ -32,12 +32,13 @@ export class StoreService {
     public configuration = new Configuration();
 
     constructor(protected httpClient: HttpClient, @Optional()@Inject(BASE_PATH) basePath: string, @Optional() configuration: Configuration) {
-        if (basePath) {
-            this.basePath = basePath;
-        }
+
         if (configuration) {
             this.configuration = configuration;
-            this.basePath = basePath || configuration.basePath || this.basePath;
+            this.configuration.basePath = configuration.basePath || basePath || this.basePath;
+
+        } else {
+            this.configuration.basePath = basePath || this.basePath;
         }
     }
 
@@ -85,7 +86,7 @@ export class StoreService {
         const consumes: string[] = [
         ];
 
-        return this.httpClient.delete(`${this.basePath}/store/order/${encodeURIComponent(String(orderId))}`,
+        return this.httpClient.delete(`${this.configuration.basePath}/store/order/${encodeURIComponent(String(orderId))}`,
             {
                 withCredentials: this.configuration.withCredentials,
                 headers: headers,
@@ -126,7 +127,7 @@ export class StoreService {
         const consumes: string[] = [
         ];
 
-        return this.httpClient.get<{ [key: string]: number; }>(`${this.basePath}/store/inventory`,
+        return this.httpClient.get<{ [key: string]: number; }>(`${this.configuration.basePath}/store/inventory`,
             {
                 withCredentials: this.configuration.withCredentials,
                 headers: headers,
@@ -167,7 +168,7 @@ export class StoreService {
         const consumes: string[] = [
         ];
 
-        return this.httpClient.get(`${this.basePath}/store/order/${encodeURIComponent(String(orderId))}`,
+        return this.httpClient.get(`${this.configuration.basePath}/store/order/${encodeURIComponent(String(orderId))}`,
             {
                 withCredentials: this.configuration.withCredentials,
                 headers: headers,
@@ -212,7 +213,7 @@ export class StoreService {
             headers = headers.set('Content-Type', httpContentTypeSelected);
         }
 
-        return this.httpClient.post(`${this.basePath}/store/order`,
+        return this.httpClient.post(`${this.configuration.basePath}/store/order`,
             order,
             {
                 withCredentials: this.configuration.withCredentials,
diff --git a/samples/client/petstore/typescript-angular-v6-not-provided-in-root/default/api/user.service.ts b/samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/default/api/user.service.ts
similarity index 94%
rename from samples/client/petstore/typescript-angular-v6-not-provided-in-root/default/api/user.service.ts
rename to samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/default/api/user.service.ts
index ba8a8f6864eb..8e50209a4ab0 100644
--- a/samples/client/petstore/typescript-angular-v6-not-provided-in-root/default/api/user.service.ts
+++ b/samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/default/api/user.service.ts
@@ -32,12 +32,13 @@ export class UserService {
     public configuration = new Configuration();
 
     constructor(protected httpClient: HttpClient, @Optional()@Inject(BASE_PATH) basePath: string, @Optional() configuration: Configuration) {
-        if (basePath) {
-            this.basePath = basePath;
-        }
+
         if (configuration) {
             this.configuration = configuration;
-            this.basePath = basePath || configuration.basePath || this.basePath;
+            this.configuration.basePath = configuration.basePath || basePath || this.basePath;
+
+        } else {
+            this.configuration.basePath = basePath || this.basePath;
         }
     }
 
@@ -89,7 +90,7 @@ export class UserService {
             headers = headers.set('Content-Type', httpContentTypeSelected);
         }
 
-        return this.httpClient.post(`${this.basePath}/user`,
+        return this.httpClient.post(`${this.configuration.basePath}/user`,
             user,
             {
                 withCredentials: this.configuration.withCredentials,
@@ -133,7 +134,7 @@ export class UserService {
             headers = headers.set('Content-Type', httpContentTypeSelected);
         }
 
-        return this.httpClient.post(`${this.basePath}/user/createWithArray`,
+        return this.httpClient.post(`${this.configuration.basePath}/user/createWithArray`,
             user,
             {
                 withCredentials: this.configuration.withCredentials,
@@ -177,7 +178,7 @@ export class UserService {
             headers = headers.set('Content-Type', httpContentTypeSelected);
         }
 
-        return this.httpClient.post(`${this.basePath}/user/createWithList`,
+        return this.httpClient.post(`${this.configuration.basePath}/user/createWithList`,
             user,
             {
                 withCredentials: this.configuration.withCredentials,
@@ -217,7 +218,7 @@ export class UserService {
         const consumes: string[] = [
         ];
 
-        return this.httpClient.delete(`${this.basePath}/user/${encodeURIComponent(String(username))}`,
+        return this.httpClient.delete(`${this.configuration.basePath}/user/${encodeURIComponent(String(username))}`,
             {
                 withCredentials: this.configuration.withCredentials,
                 headers: headers,
@@ -258,7 +259,7 @@ export class UserService {
         const consumes: string[] = [
         ];
 
-        return this.httpClient.get(`${this.basePath}/user/${encodeURIComponent(String(username))}`,
+        return this.httpClient.get(`${this.configuration.basePath}/user/${encodeURIComponent(String(username))}`,
             {
                 withCredentials: this.configuration.withCredentials,
                 headers: headers,
@@ -311,7 +312,7 @@ export class UserService {
         const consumes: string[] = [
         ];
 
-        return this.httpClient.get(`${this.basePath}/user/login`,
+        return this.httpClient.get(`${this.configuration.basePath}/user/login`,
             {
                 params: queryParameters,
                 withCredentials: this.configuration.withCredentials,
@@ -347,7 +348,7 @@ export class UserService {
         const consumes: string[] = [
         ];
 
-        return this.httpClient.get(`${this.basePath}/user/logout`,
+        return this.httpClient.get(`${this.configuration.basePath}/user/logout`,
             {
                 withCredentials: this.configuration.withCredentials,
                 headers: headers,
@@ -394,7 +395,7 @@ export class UserService {
             headers = headers.set('Content-Type', httpContentTypeSelected);
         }
 
-        return this.httpClient.put(`${this.basePath}/user/${encodeURIComponent(String(username))}`,
+        return this.httpClient.put(`${this.configuration.basePath}/user/${encodeURIComponent(String(username))}`,
             user,
             {
                 withCredentials: this.configuration.withCredentials,
diff --git a/samples/client/petstore/typescript-angular-v6-not-provided-in-root/default/configuration.ts b/samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/default/configuration.ts
similarity index 100%
rename from samples/client/petstore/typescript-angular-v6-not-provided-in-root/default/configuration.ts
rename to samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/default/configuration.ts
diff --git a/samples/client/petstore/typescript-angular-v6-not-provided-in-root/default/encoder.ts b/samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/default/encoder.ts
similarity index 100%
rename from samples/client/petstore/typescript-angular-v6-not-provided-in-root/default/encoder.ts
rename to samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/default/encoder.ts
diff --git a/samples/client/petstore/typescript-angular-v6-not-provided-in-root/default/git_push.sh b/samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/default/git_push.sh
similarity index 100%
rename from samples/client/petstore/typescript-angular-v6-not-provided-in-root/default/git_push.sh
rename to samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/default/git_push.sh
diff --git a/samples/client/petstore/typescript-angular-v6-not-provided-in-root/default/index.ts b/samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/default/index.ts
similarity index 100%
rename from samples/client/petstore/typescript-angular-v6-not-provided-in-root/default/index.ts
rename to samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/default/index.ts
diff --git a/samples/client/petstore/typescript-angular-v6-not-provided-in-root/default/model/apiResponse.ts b/samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/default/model/apiResponse.ts
similarity index 100%
rename from samples/client/petstore/typescript-angular-v6-not-provided-in-root/default/model/apiResponse.ts
rename to samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/default/model/apiResponse.ts
diff --git a/samples/client/petstore/typescript-angular-v6-not-provided-in-root/default/model/category.ts b/samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/default/model/category.ts
similarity index 100%
rename from samples/client/petstore/typescript-angular-v6-not-provided-in-root/default/model/category.ts
rename to samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/default/model/category.ts
diff --git a/samples/client/petstore/typescript-angular-v6-not-provided-in-root/default/model/models.ts b/samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/default/model/models.ts
similarity index 100%
rename from samples/client/petstore/typescript-angular-v6-not-provided-in-root/default/model/models.ts
rename to samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/default/model/models.ts
diff --git a/samples/client/petstore/typescript-angular-v6-not-provided-in-root/default/model/order.ts b/samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/default/model/order.ts
similarity index 100%
rename from samples/client/petstore/typescript-angular-v6-not-provided-in-root/default/model/order.ts
rename to samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/default/model/order.ts
diff --git a/samples/client/petstore/typescript-angular-v6-not-provided-in-root/default/model/pet.ts b/samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/default/model/pet.ts
similarity index 100%
rename from samples/client/petstore/typescript-angular-v6-not-provided-in-root/default/model/pet.ts
rename to samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/default/model/pet.ts
diff --git a/samples/client/petstore/typescript-angular-v6-not-provided-in-root/default/model/tag.ts b/samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/default/model/tag.ts
similarity index 100%
rename from samples/client/petstore/typescript-angular-v6-not-provided-in-root/default/model/tag.ts
rename to samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/default/model/tag.ts
diff --git a/samples/client/petstore/typescript-angular-v6-not-provided-in-root/default/model/user.ts b/samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/default/model/user.ts
similarity index 100%
rename from samples/client/petstore/typescript-angular-v6-not-provided-in-root/default/model/user.ts
rename to samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/default/model/user.ts
diff --git a/samples/client/petstore/typescript-angular-v6-not-provided-in-root/default/variables.ts b/samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/default/variables.ts
similarity index 100%
rename from samples/client/petstore/typescript-angular-v6-not-provided-in-root/default/variables.ts
rename to samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/default/variables.ts
diff --git a/samples/client/petstore/typescript-angular-v6-provided-in-root/default/.gitignore b/samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/with-npm/.gitignore
similarity index 100%
rename from samples/client/petstore/typescript-angular-v6-provided-in-root/default/.gitignore
rename to samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/with-npm/.gitignore
diff --git a/samples/client/petstore/typescript-angular-v6-provided-in-root/default/.openapi-generator-ignore b/samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/with-npm/.openapi-generator-ignore
similarity index 100%
rename from samples/client/petstore/typescript-angular-v6-provided-in-root/default/.openapi-generator-ignore
rename to samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/with-npm/.openapi-generator-ignore
diff --git a/samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/with-npm/.openapi-generator/VERSION b/samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/with-npm/.openapi-generator/VERSION
new file mode 100644
index 000000000000..1c00c5181548
--- /dev/null
+++ b/samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/with-npm/.openapi-generator/VERSION
@@ -0,0 +1 @@
+3.0.2-SNAPSHOT
\ No newline at end of file
diff --git a/samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/with-npm/README.md b/samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/with-npm/README.md
new file mode 100644
index 000000000000..6f80c2cdc80a
--- /dev/null
+++ b/samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/with-npm/README.md
@@ -0,0 +1,178 @@
+## @swagger/typescript-angular-petstore@1.0.0
+
+### Building
+
+To install the required dependencies and to build the typescript sources run:
+```
+npm install
+npm run build
+```
+
+### publishing
+
+First build the package than run ```npm publish dist``` (don't forget to specify the `dist` folder!)
+
+### consuming
+
+Navigate to the folder of your consuming project and run one of next commands.
+
+_published:_
+
+```
+npm install @swagger/typescript-angular-petstore@1.0.0 --save
+```
+
+_without publishing (not recommended):_
+
+```
+npm install PATH_TO_GENERATED_PACKAGE/dist --save
+```
+
+_using `npm link`:_
+
+In PATH_TO_GENERATED_PACKAGE/dist:
+```
+npm link
+```
+
+In your project:
+```
+npm link @swagger/typescript-angular-petstore
+```
+
+__Note for Windows users:__ The Angular CLI has troubles to use linked npm packages.
+Please refer to this issue https://github.com/angular/angular-cli/issues/8284 for a solution / workaround.
+Published packages are not effected by this issue.
+
+
+#### General usage
+
+In your Angular project:
+
+
+```
+// without configuring providers
+import { ApiModule } from '@swagger/typescript-angular-petstore';
+import { HttpClientModule } from '@angular/common/http';
+
+
+@NgModule({
+    imports: [
+        ApiModule,
+        // make sure to import the HttpClientModule in the AppModule only,
+        // see https://github.com/angular/angular/issues/20575
+        HttpClientModule
+    ],
+    declarations: [ AppComponent ],
+    providers: [],
+    bootstrap: [ AppComponent ]
+})
+export class AppModule {}
+```
+
+```
+// configuring providers
+import { ApiModule, Configuration, ConfigurationParameters } from '@swagger/typescript-angular-petstore';
+
+export function apiConfigFactory (): Configuration => {
+  const params: ConfigurationParameters = {
+    // set configuration parameters here.
+  }
+  return new Configuration(params);
+}
+
+@NgModule({
+    imports: [ ApiModule.forRoot(apiConfigFactory) ],
+    declarations: [ AppComponent ],
+    providers: [],
+    bootstrap: [ AppComponent ]
+})
+export class AppModule {}
+```
+
+```
+import { DefaultApi } from '@swagger/typescript-angular-petstore';
+
+export class AppComponent {
+	 constructor(private apiGateway: DefaultApi) { }
+}
+```
+
+Note: The ApiModule is restricted to being instantiated once app wide.
+This is to ensure that all services are treated as singletons.
+
+#### Using multiple OpenAPI files / APIs / ApiModules
+In order to use multiple `ApiModules` generated from different OpenAPI files,
+you can create an alias name when importing the modules
+in order to avoid naming conflicts:
+```
+import { ApiModule } from 'my-api-path';
+import { ApiModule as OtherApiModule } from 'my-other-api-path';
+import { HttpClientModule } from '@angular/common/http';
+
+
+@NgModule({
+  imports: [
+    ApiModule,
+    OtherApiModule,
+    // make sure to import the HttpClientModule in the AppModule only,
+    // see https://github.com/angular/angular/issues/20575
+    HttpClientModule
+  ]
+})
+export class AppModule {
+
+}
+```
+
+
+### Set service base path
+If different than the generated base path, during app bootstrap, you can provide the base path to your service. 
+
+```
+import { BASE_PATH } from '@swagger/typescript-angular-petstore';
+
+bootstrap(AppComponent, [
+    { provide: BASE_PATH, useValue: 'https://your-web-service.com' },
+]);
+```
+or
+
+```
+import { BASE_PATH } from '@swagger/typescript-angular-petstore';
+
+@NgModule({
+    imports: [],
+    declarations: [ AppComponent ],
+    providers: [ provide: BASE_PATH, useValue: 'https://your-web-service.com' ],
+    bootstrap: [ AppComponent ]
+})
+export class AppModule {}
+```
+
+
+#### Using @angular/cli
+First extend your `src/environments/*.ts` files by adding the corresponding base path:
+
+```
+export const environment = {
+  production: false,
+  API_BASE_PATH: 'http://127.0.0.1:8080'
+};
+```
+
+In the src/app/app.module.ts:
+```
+import { BASE_PATH } from '@swagger/typescript-angular-petstore';
+import { environment } from '../environments/environment';
+
+@NgModule({
+  declarations: [
+    AppComponent
+  ],
+  imports: [ ],
+  providers: [{ provide: BASE_PATH, useValue: environment.API_BASE_PATH }],
+  bootstrap: [ AppComponent ]
+})
+export class AppModule { }
+```  
\ No newline at end of file
diff --git a/samples/client/petstore/typescript-angular-v6-provided-in-root/default/api.module.ts b/samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/with-npm/api.module.ts
similarity index 100%
rename from samples/client/petstore/typescript-angular-v6-provided-in-root/default/api.module.ts
rename to samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/with-npm/api.module.ts
diff --git a/samples/client/petstore/typescript-angular-v6-provided-in-root/default/api/api.ts b/samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/with-npm/api/api.ts
similarity index 100%
rename from samples/client/petstore/typescript-angular-v6-provided-in-root/default/api/api.ts
rename to samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/with-npm/api/api.ts
diff --git a/samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/with-npm/api/pet.service.ts b/samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/with-npm/api/pet.service.ts
new file mode 100644
index 000000000000..5d494f52dea4
--- /dev/null
+++ b/samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/with-npm/api/pet.service.ts
@@ -0,0 +1,518 @@
+/**
+ * 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.
+ */
+/* tslint:disable:no-unused-variable member-ordering */
+
+import { Inject, Injectable, Optional }                      from '@angular/core';
+import { HttpClient, HttpHeaders, HttpParams,
+         HttpResponse, HttpEvent }                           from '@angular/common/http';
+import { CustomHttpUrlEncodingCodec }                        from '../encoder';
+
+import { Observable }                                        from 'rxjs';
+
+import { ApiResponse } from '../model/apiResponse';
+import { Pet } from '../model/pet';
+
+import { BASE_PATH, COLLECTION_FORMATS }                     from '../variables';
+import { Configuration }                                     from '../configuration';
+
+
+@Injectable()
+export class PetService {
+
+    protected basePath = 'http://petstore.swagger.io/v2';
+    public defaultHeaders = new HttpHeaders();
+    public configuration = new Configuration();
+
+    constructor(protected httpClient: HttpClient, @Optional()@Inject(BASE_PATH) basePath: string, @Optional() configuration: Configuration) {
+
+        if (configuration) {
+            this.configuration = configuration;
+            this.configuration.basePath = configuration.basePath || basePath || this.basePath;
+
+        } else {
+            this.configuration.basePath = basePath || this.basePath;
+        }
+    }
+
+    /**
+     * @param consumes string[] mime-types
+     * @return true: consumes contains 'multipart/form-data', false: otherwise
+     */
+    private canConsumeForm(consumes: string[]): boolean {
+        const form = 'multipart/form-data';
+        for (const consume of consumes) {
+            if (form === consume) {
+                return true;
+            }
+        }
+        return false;
+    }
+
+
+    /**
+     * Add a new pet to the store
+     * 
+     * @param pet Pet object that needs to be added to the store
+     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.
+     * @param reportProgress flag to report request and response progress.
+     */
+    public addPet(pet: Pet, observe?: 'body', reportProgress?: boolean): Observable;
+    public addPet(pet: Pet, observe?: 'response', reportProgress?: boolean): Observable>;
+    public addPet(pet: Pet, observe?: 'events', reportProgress?: boolean): Observable>;
+    public addPet(pet: Pet, observe: any = 'body', reportProgress: boolean = false ): Observable {
+        if (pet === null || pet === undefined) {
+            throw new Error('Required parameter pet was null or undefined when calling addPet.');
+        }
+
+        let headers = this.defaultHeaders;
+
+        // authentication (petstore_auth) required
+        if (this.configuration.accessToken) {
+            const accessToken = typeof this.configuration.accessToken === 'function'
+                ? this.configuration.accessToken()
+                : this.configuration.accessToken;
+            headers = headers.set('Authorization', 'Bearer ' + accessToken);
+        }
+
+        // to determine the Accept header
+        let httpHeaderAccepts: string[] = [
+        ];
+        const httpHeaderAcceptSelected: string | undefined = this.configuration.selectHeaderAccept(httpHeaderAccepts);
+        if (httpHeaderAcceptSelected !== undefined) {
+            headers = headers.set('Accept', httpHeaderAcceptSelected);
+        }
+
+        // to determine the Content-Type header
+        const consumes: string[] = [
+            'application/json',
+            'application/xml'
+        ];
+        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);
+        if (httpContentTypeSelected !== undefined) {
+            headers = headers.set('Content-Type', httpContentTypeSelected);
+        }
+
+        return this.httpClient.post(`${this.configuration.basePath}/pet`,
+            pet,
+            {
+                withCredentials: this.configuration.withCredentials,
+                headers: headers,
+                observe: observe,
+                reportProgress: reportProgress
+            }
+        );
+    }
+
+    /**
+     * Deletes a pet
+     * 
+     * @param petId Pet id to delete
+     * @param apiKey 
+     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.
+     * @param reportProgress flag to report request and response progress.
+     */
+    public deletePet(petId: number, apiKey?: string, observe?: 'body', reportProgress?: boolean): Observable;
+    public deletePet(petId: number, apiKey?: string, observe?: 'response', reportProgress?: boolean): Observable>;
+    public deletePet(petId: number, apiKey?: string, observe?: 'events', reportProgress?: boolean): Observable>;
+    public deletePet(petId: number, apiKey?: string, observe: any = 'body', reportProgress: boolean = false ): Observable {
+        if (petId === null || petId === undefined) {
+            throw new Error('Required parameter petId was null or undefined when calling deletePet.');
+        }
+
+        let headers = this.defaultHeaders;
+        if (apiKey !== undefined && apiKey !== null) {
+            headers = headers.set('api_key', String(apiKey));
+        }
+
+        // authentication (petstore_auth) required
+        if (this.configuration.accessToken) {
+            const accessToken = typeof this.configuration.accessToken === 'function'
+                ? this.configuration.accessToken()
+                : this.configuration.accessToken;
+            headers = headers.set('Authorization', 'Bearer ' + accessToken);
+        }
+
+        // to determine the Accept header
+        let httpHeaderAccepts: string[] = [
+        ];
+        const httpHeaderAcceptSelected: string | undefined = this.configuration.selectHeaderAccept(httpHeaderAccepts);
+        if (httpHeaderAcceptSelected !== undefined) {
+            headers = headers.set('Accept', httpHeaderAcceptSelected);
+        }
+
+        // to determine the Content-Type header
+        const consumes: string[] = [
+        ];
+
+        return this.httpClient.delete(`${this.configuration.basePath}/pet/${encodeURIComponent(String(petId))}`,
+            {
+                withCredentials: this.configuration.withCredentials,
+                headers: headers,
+                observe: observe,
+                reportProgress: reportProgress
+            }
+        );
+    }
+
+    /**
+     * Finds Pets by status
+     * Multiple status values can be provided with comma separated strings
+     * @param status Status values that need to be considered for filter
+     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.
+     * @param reportProgress flag to report request and response progress.
+     */
+    public findPetsByStatus(status: Array<'available' | 'pending' | 'sold'>, observe?: 'body', reportProgress?: boolean): Observable>;
+    public findPetsByStatus(status: Array<'available' | 'pending' | 'sold'>, observe?: 'response', reportProgress?: boolean): Observable>>;
+    public findPetsByStatus(status: Array<'available' | 'pending' | 'sold'>, observe?: 'events', reportProgress?: boolean): Observable>>;
+    public findPetsByStatus(status: Array<'available' | 'pending' | 'sold'>, observe: any = 'body', reportProgress: boolean = false ): Observable {
+        if (status === null || status === undefined) {
+            throw new Error('Required parameter status was null or undefined when calling findPetsByStatus.');
+        }
+
+        let queryParameters = new HttpParams({encoder: new CustomHttpUrlEncodingCodec()});
+        if (status) {
+            queryParameters = queryParameters.set('status', status.join(COLLECTION_FORMATS['csv']));
+        }
+
+        let headers = this.defaultHeaders;
+
+        // authentication (petstore_auth) required
+        if (this.configuration.accessToken) {
+            const accessToken = typeof this.configuration.accessToken === 'function'
+                ? this.configuration.accessToken()
+                : this.configuration.accessToken;
+            headers = headers.set('Authorization', 'Bearer ' + accessToken);
+        }
+
+        // to determine the Accept header
+        let httpHeaderAccepts: string[] = [
+            'application/xml',
+            'application/json'
+        ];
+        const httpHeaderAcceptSelected: string | undefined = this.configuration.selectHeaderAccept(httpHeaderAccepts);
+        if (httpHeaderAcceptSelected !== undefined) {
+            headers = headers.set('Accept', httpHeaderAcceptSelected);
+        }
+
+        // to determine the Content-Type header
+        const consumes: string[] = [
+        ];
+
+        return this.httpClient.get>(`${this.configuration.basePath}/pet/findByStatus`,
+            {
+                params: queryParameters,
+                withCredentials: this.configuration.withCredentials,
+                headers: headers,
+                observe: observe,
+                reportProgress: reportProgress
+            }
+        );
+    }
+
+    /**
+     * 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 observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.
+     * @param reportProgress flag to report request and response progress.
+     */
+    public findPetsByTags(tags: Array, observe?: 'body', reportProgress?: boolean): Observable>;
+    public findPetsByTags(tags: Array, observe?: 'response', reportProgress?: boolean): Observable>>;
+    public findPetsByTags(tags: Array, observe?: 'events', reportProgress?: boolean): Observable>>;
+    public findPetsByTags(tags: Array, observe: any = 'body', reportProgress: boolean = false ): Observable {
+        if (tags === null || tags === undefined) {
+            throw new Error('Required parameter tags was null or undefined when calling findPetsByTags.');
+        }
+
+        let queryParameters = new HttpParams({encoder: new CustomHttpUrlEncodingCodec()});
+        if (tags) {
+            queryParameters = queryParameters.set('tags', tags.join(COLLECTION_FORMATS['csv']));
+        }
+
+        let headers = this.defaultHeaders;
+
+        // authentication (petstore_auth) required
+        if (this.configuration.accessToken) {
+            const accessToken = typeof this.configuration.accessToken === 'function'
+                ? this.configuration.accessToken()
+                : this.configuration.accessToken;
+            headers = headers.set('Authorization', 'Bearer ' + accessToken);
+        }
+
+        // to determine the Accept header
+        let httpHeaderAccepts: string[] = [
+            'application/xml',
+            'application/json'
+        ];
+        const httpHeaderAcceptSelected: string | undefined = this.configuration.selectHeaderAccept(httpHeaderAccepts);
+        if (httpHeaderAcceptSelected !== undefined) {
+            headers = headers.set('Accept', httpHeaderAcceptSelected);
+        }
+
+        // to determine the Content-Type header
+        const consumes: string[] = [
+        ];
+
+        return this.httpClient.get>(`${this.configuration.basePath}/pet/findByTags`,
+            {
+                params: queryParameters,
+                withCredentials: this.configuration.withCredentials,
+                headers: headers,
+                observe: observe,
+                reportProgress: reportProgress
+            }
+        );
+    }
+
+    /**
+     * Find pet by ID
+     * Returns a single pet
+     * @param petId ID of pet to return
+     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.
+     * @param reportProgress flag to report request and response progress.
+     */
+    public getPetById(petId: number, observe?: 'body', reportProgress?: boolean): Observable;
+    public getPetById(petId: number, observe?: 'response', reportProgress?: boolean): Observable>;
+    public getPetById(petId: number, observe?: 'events', reportProgress?: boolean): Observable>;
+    public getPetById(petId: number, observe: any = 'body', reportProgress: boolean = false ): Observable {
+        if (petId === null || petId === undefined) {
+            throw new Error('Required parameter petId was null or undefined when calling getPetById.');
+        }
+
+        let headers = this.defaultHeaders;
+
+        // authentication (api_key) required
+        if (this.configuration.apiKeys["api_key"]) {
+            headers = headers.set('api_key', this.configuration.apiKeys["api_key"]);
+        }
+
+        // to determine the Accept header
+        let httpHeaderAccepts: string[] = [
+            'application/xml',
+            'application/json'
+        ];
+        const httpHeaderAcceptSelected: string | undefined = this.configuration.selectHeaderAccept(httpHeaderAccepts);
+        if (httpHeaderAcceptSelected !== undefined) {
+            headers = headers.set('Accept', httpHeaderAcceptSelected);
+        }
+
+        // to determine the Content-Type header
+        const consumes: string[] = [
+        ];
+
+        return this.httpClient.get(`${this.configuration.basePath}/pet/${encodeURIComponent(String(petId))}`,
+            {
+                withCredentials: this.configuration.withCredentials,
+                headers: headers,
+                observe: observe,
+                reportProgress: reportProgress
+            }
+        );
+    }
+
+    /**
+     * Update an existing pet
+     * 
+     * @param pet Pet object that needs to be added to the store
+     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.
+     * @param reportProgress flag to report request and response progress.
+     */
+    public updatePet(pet: Pet, observe?: 'body', reportProgress?: boolean): Observable;
+    public updatePet(pet: Pet, observe?: 'response', reportProgress?: boolean): Observable>;
+    public updatePet(pet: Pet, observe?: 'events', reportProgress?: boolean): Observable>;
+    public updatePet(pet: Pet, observe: any = 'body', reportProgress: boolean = false ): Observable {
+        if (pet === null || pet === undefined) {
+            throw new Error('Required parameter pet was null or undefined when calling updatePet.');
+        }
+
+        let headers = this.defaultHeaders;
+
+        // authentication (petstore_auth) required
+        if (this.configuration.accessToken) {
+            const accessToken = typeof this.configuration.accessToken === 'function'
+                ? this.configuration.accessToken()
+                : this.configuration.accessToken;
+            headers = headers.set('Authorization', 'Bearer ' + accessToken);
+        }
+
+        // to determine the Accept header
+        let httpHeaderAccepts: string[] = [
+        ];
+        const httpHeaderAcceptSelected: string | undefined = this.configuration.selectHeaderAccept(httpHeaderAccepts);
+        if (httpHeaderAcceptSelected !== undefined) {
+            headers = headers.set('Accept', httpHeaderAcceptSelected);
+        }
+
+        // to determine the Content-Type header
+        const consumes: string[] = [
+            'application/json',
+            'application/xml'
+        ];
+        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);
+        if (httpContentTypeSelected !== undefined) {
+            headers = headers.set('Content-Type', httpContentTypeSelected);
+        }
+
+        return this.httpClient.put(`${this.configuration.basePath}/pet`,
+            pet,
+            {
+                withCredentials: this.configuration.withCredentials,
+                headers: headers,
+                observe: observe,
+                reportProgress: reportProgress
+            }
+        );
+    }
+
+    /**
+     * Updates a pet in the store with form data
+     * 
+     * @param petId ID of pet that needs to be updated
+     * @param name Updated name of the pet
+     * @param status Updated status of the pet
+     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.
+     * @param reportProgress flag to report request and response progress.
+     */
+    public updatePetWithForm(petId: number, name?: string, status?: string, observe?: 'body', reportProgress?: boolean): Observable;
+    public updatePetWithForm(petId: number, name?: string, status?: string, observe?: 'response', reportProgress?: boolean): Observable>;
+    public updatePetWithForm(petId: number, name?: string, status?: string, observe?: 'events', reportProgress?: boolean): Observable>;
+    public updatePetWithForm(petId: number, name?: string, status?: string, observe: any = 'body', reportProgress: boolean = false ): Observable {
+        if (petId === null || petId === undefined) {
+            throw new Error('Required parameter petId was null or undefined when calling updatePetWithForm.');
+        }
+
+        let headers = this.defaultHeaders;
+
+        // authentication (petstore_auth) required
+        if (this.configuration.accessToken) {
+            const accessToken = typeof this.configuration.accessToken === 'function'
+                ? this.configuration.accessToken()
+                : this.configuration.accessToken;
+            headers = headers.set('Authorization', 'Bearer ' + accessToken);
+        }
+
+        // to determine the Accept header
+        let httpHeaderAccepts: string[] = [
+        ];
+        const httpHeaderAcceptSelected: string | undefined = this.configuration.selectHeaderAccept(httpHeaderAccepts);
+        if (httpHeaderAcceptSelected !== undefined) {
+            headers = headers.set('Accept', httpHeaderAcceptSelected);
+        }
+
+        // to determine the Content-Type header
+        const consumes: string[] = [
+            'application/x-www-form-urlencoded'
+        ];
+
+        const canConsumeForm = this.canConsumeForm(consumes);
+
+        let formParams: { append(param: string, value: any): void; };
+        let useForm = false;
+        let convertFormParamsToString = false;
+        if (useForm) {
+            formParams = new FormData();
+        } else {
+            formParams = new HttpParams({encoder: new CustomHttpUrlEncodingCodec()});
+        }
+
+        if (name !== undefined) {
+            formParams = formParams.append('name', name) || formParams;
+        }
+        if (status !== undefined) {
+            formParams = formParams.append('status', status) || formParams;
+        }
+
+        return this.httpClient.post(`${this.configuration.basePath}/pet/${encodeURIComponent(String(petId))}`,
+            convertFormParamsToString ? formParams.toString() : formParams,
+            {
+                withCredentials: this.configuration.withCredentials,
+                headers: headers,
+                observe: observe,
+                reportProgress: reportProgress
+            }
+        );
+    }
+
+    /**
+     * uploads an image
+     * 
+     * @param petId ID of pet to update
+     * @param additionalMetadata Additional data to pass to server
+     * @param file file to upload
+     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.
+     * @param reportProgress flag to report request and response progress.
+     */
+    public uploadFile(petId: number, additionalMetadata?: string, file?: Blob, observe?: 'body', reportProgress?: boolean): Observable;
+    public uploadFile(petId: number, additionalMetadata?: string, file?: Blob, observe?: 'response', reportProgress?: boolean): Observable>;
+    public uploadFile(petId: number, additionalMetadata?: string, file?: Blob, observe?: 'events', reportProgress?: boolean): Observable>;
+    public uploadFile(petId: number, additionalMetadata?: string, file?: Blob, observe: any = 'body', reportProgress: boolean = false ): Observable {
+        if (petId === null || petId === undefined) {
+            throw new Error('Required parameter petId was null or undefined when calling uploadFile.');
+        }
+
+        let headers = this.defaultHeaders;
+
+        // authentication (petstore_auth) required
+        if (this.configuration.accessToken) {
+            const accessToken = typeof this.configuration.accessToken === 'function'
+                ? this.configuration.accessToken()
+                : this.configuration.accessToken;
+            headers = headers.set('Authorization', 'Bearer ' + accessToken);
+        }
+
+        // to determine the Accept header
+        let httpHeaderAccepts: string[] = [
+            'application/json'
+        ];
+        const httpHeaderAcceptSelected: string | undefined = this.configuration.selectHeaderAccept(httpHeaderAccepts);
+        if (httpHeaderAcceptSelected !== undefined) {
+            headers = headers.set('Accept', httpHeaderAcceptSelected);
+        }
+
+        // to determine the Content-Type header
+        const consumes: string[] = [
+            'multipart/form-data'
+        ];
+
+        const canConsumeForm = this.canConsumeForm(consumes);
+
+        let formParams: { append(param: string, value: any): void; };
+        let useForm = false;
+        let convertFormParamsToString = false;
+        // use FormData to transmit files using content-type "multipart/form-data"
+        // see https://stackoverflow.com/questions/4007969/application-x-www-form-urlencoded-or-multipart-form-data
+        useForm = canConsumeForm;
+        if (useForm) {
+            formParams = new FormData();
+        } else {
+            formParams = new HttpParams({encoder: new CustomHttpUrlEncodingCodec()});
+        }
+
+        if (additionalMetadata !== undefined) {
+            formParams = formParams.append('additionalMetadata', additionalMetadata) || formParams;
+        }
+        if (file !== undefined) {
+            formParams = formParams.append('file', file) || formParams;
+        }
+
+        return this.httpClient.post(`${this.configuration.basePath}/pet/${encodeURIComponent(String(petId))}/uploadImage`,
+            convertFormParamsToString ? formParams.toString() : formParams,
+            {
+                withCredentials: this.configuration.withCredentials,
+                headers: headers,
+                observe: observe,
+                reportProgress: reportProgress
+            }
+        );
+    }
+
+}
diff --git a/samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/with-npm/api/store.service.ts b/samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/with-npm/api/store.service.ts
new file mode 100644
index 000000000000..1f1abb0b9e07
--- /dev/null
+++ b/samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/with-npm/api/store.service.ts
@@ -0,0 +1,227 @@
+/**
+ * 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.
+ */
+/* tslint:disable:no-unused-variable member-ordering */
+
+import { Inject, Injectable, Optional }                      from '@angular/core';
+import { HttpClient, HttpHeaders, HttpParams,
+         HttpResponse, HttpEvent }                           from '@angular/common/http';
+import { CustomHttpUrlEncodingCodec }                        from '../encoder';
+
+import { Observable }                                        from 'rxjs';
+
+import { Order } from '../model/order';
+
+import { BASE_PATH, COLLECTION_FORMATS }                     from '../variables';
+import { Configuration }                                     from '../configuration';
+
+
+@Injectable()
+export class StoreService {
+
+    protected basePath = 'http://petstore.swagger.io/v2';
+    public defaultHeaders = new HttpHeaders();
+    public configuration = new Configuration();
+
+    constructor(protected httpClient: HttpClient, @Optional()@Inject(BASE_PATH) basePath: string, @Optional() configuration: Configuration) {
+
+        if (configuration) {
+            this.configuration = configuration;
+            this.configuration.basePath = configuration.basePath || basePath || this.basePath;
+
+        } else {
+            this.configuration.basePath = basePath || this.basePath;
+        }
+    }
+
+    /**
+     * @param consumes string[] mime-types
+     * @return true: consumes contains 'multipart/form-data', false: otherwise
+     */
+    private canConsumeForm(consumes: string[]): boolean {
+        const form = 'multipart/form-data';
+        for (const consume of consumes) {
+            if (form === consume) {
+                return true;
+            }
+        }
+        return false;
+    }
+
+
+    /**
+     * Delete purchase order by ID
+     * For valid response try integer IDs with value < 1000. Anything above 1000 or nonintegers will generate API errors
+     * @param orderId ID of the order that needs to be deleted
+     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.
+     * @param reportProgress flag to report request and response progress.
+     */
+    public deleteOrder(orderId: string, observe?: 'body', reportProgress?: boolean): Observable;
+    public deleteOrder(orderId: string, observe?: 'response', reportProgress?: boolean): Observable>;
+    public deleteOrder(orderId: string, observe?: 'events', reportProgress?: boolean): Observable>;
+    public deleteOrder(orderId: string, observe: any = 'body', reportProgress: boolean = false ): Observable {
+        if (orderId === null || orderId === undefined) {
+            throw new Error('Required parameter orderId was null or undefined when calling deleteOrder.');
+        }
+
+        let headers = this.defaultHeaders;
+
+        // to determine the Accept header
+        let httpHeaderAccepts: string[] = [
+        ];
+        const httpHeaderAcceptSelected: string | undefined = this.configuration.selectHeaderAccept(httpHeaderAccepts);
+        if (httpHeaderAcceptSelected !== undefined) {
+            headers = headers.set('Accept', httpHeaderAcceptSelected);
+        }
+
+        // to determine the Content-Type header
+        const consumes: string[] = [
+        ];
+
+        return this.httpClient.delete(`${this.configuration.basePath}/store/order/${encodeURIComponent(String(orderId))}`,
+            {
+                withCredentials: this.configuration.withCredentials,
+                headers: headers,
+                observe: observe,
+                reportProgress: reportProgress
+            }
+        );
+    }
+
+    /**
+     * Returns pet inventories by status
+     * Returns a map of status codes to quantities
+     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.
+     * @param reportProgress flag to report request and response progress.
+     */
+    public getInventory(observe?: 'body', reportProgress?: boolean): Observable<{ [key: string]: number; }>;
+    public getInventory(observe?: 'response', reportProgress?: boolean): Observable>;
+    public getInventory(observe?: 'events', reportProgress?: boolean): Observable>;
+    public getInventory(observe: any = 'body', reportProgress: boolean = false ): Observable {
+
+        let headers = this.defaultHeaders;
+
+        // authentication (api_key) required
+        if (this.configuration.apiKeys["api_key"]) {
+            headers = headers.set('api_key', this.configuration.apiKeys["api_key"]);
+        }
+
+        // to determine the Accept header
+        let httpHeaderAccepts: string[] = [
+            'application/json'
+        ];
+        const httpHeaderAcceptSelected: string | undefined = this.configuration.selectHeaderAccept(httpHeaderAccepts);
+        if (httpHeaderAcceptSelected !== undefined) {
+            headers = headers.set('Accept', httpHeaderAcceptSelected);
+        }
+
+        // to determine the Content-Type header
+        const consumes: string[] = [
+        ];
+
+        return this.httpClient.get<{ [key: string]: number; }>(`${this.configuration.basePath}/store/inventory`,
+            {
+                withCredentials: this.configuration.withCredentials,
+                headers: headers,
+                observe: observe,
+                reportProgress: reportProgress
+            }
+        );
+    }
+
+    /**
+     * Find purchase order by ID
+     * For valid response try integer IDs with value <= 5 or > 10. Other values will generated exceptions
+     * @param orderId ID of pet that needs to be fetched
+     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.
+     * @param reportProgress flag to report request and response progress.
+     */
+    public getOrderById(orderId: number, observe?: 'body', reportProgress?: boolean): Observable;
+    public getOrderById(orderId: number, observe?: 'response', reportProgress?: boolean): Observable>;
+    public getOrderById(orderId: number, observe?: 'events', reportProgress?: boolean): Observable>;
+    public getOrderById(orderId: number, observe: any = 'body', reportProgress: boolean = false ): Observable {
+        if (orderId === null || orderId === undefined) {
+            throw new Error('Required parameter orderId was null or undefined when calling getOrderById.');
+        }
+
+        let headers = this.defaultHeaders;
+
+        // to determine the Accept header
+        let httpHeaderAccepts: string[] = [
+            'application/xml',
+            'application/json'
+        ];
+        const httpHeaderAcceptSelected: string | undefined = this.configuration.selectHeaderAccept(httpHeaderAccepts);
+        if (httpHeaderAcceptSelected !== undefined) {
+            headers = headers.set('Accept', httpHeaderAcceptSelected);
+        }
+
+        // to determine the Content-Type header
+        const consumes: string[] = [
+        ];
+
+        return this.httpClient.get(`${this.configuration.basePath}/store/order/${encodeURIComponent(String(orderId))}`,
+            {
+                withCredentials: this.configuration.withCredentials,
+                headers: headers,
+                observe: observe,
+                reportProgress: reportProgress
+            }
+        );
+    }
+
+    /**
+     * Place an order for a pet
+     * 
+     * @param order order placed for purchasing the pet
+     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.
+     * @param reportProgress flag to report request and response progress.
+     */
+    public placeOrder(order: Order, observe?: 'body', reportProgress?: boolean): Observable;
+    public placeOrder(order: Order, observe?: 'response', reportProgress?: boolean): Observable>;
+    public placeOrder(order: Order, observe?: 'events', reportProgress?: boolean): Observable>;
+    public placeOrder(order: Order, observe: any = 'body', reportProgress: boolean = false ): Observable {
+        if (order === null || order === undefined) {
+            throw new Error('Required parameter order was null or undefined when calling placeOrder.');
+        }
+
+        let headers = this.defaultHeaders;
+
+        // to determine the Accept header
+        let httpHeaderAccepts: string[] = [
+            'application/xml',
+            'application/json'
+        ];
+        const httpHeaderAcceptSelected: string | undefined = this.configuration.selectHeaderAccept(httpHeaderAccepts);
+        if (httpHeaderAcceptSelected !== undefined) {
+            headers = headers.set('Accept', httpHeaderAcceptSelected);
+        }
+
+        // to determine the Content-Type header
+        const consumes: string[] = [
+        ];
+        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);
+        if (httpContentTypeSelected !== undefined) {
+            headers = headers.set('Content-Type', httpContentTypeSelected);
+        }
+
+        return this.httpClient.post(`${this.configuration.basePath}/store/order`,
+            order,
+            {
+                withCredentials: this.configuration.withCredentials,
+                headers: headers,
+                observe: observe,
+                reportProgress: reportProgress
+            }
+        );
+    }
+
+}
diff --git a/samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/with-npm/api/user.service.ts b/samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/with-npm/api/user.service.ts
new file mode 100644
index 000000000000..8e50209a4ab0
--- /dev/null
+++ b/samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/with-npm/api/user.service.ts
@@ -0,0 +1,409 @@
+/**
+ * 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.
+ */
+/* tslint:disable:no-unused-variable member-ordering */
+
+import { Inject, Injectable, Optional }                      from '@angular/core';
+import { HttpClient, HttpHeaders, HttpParams,
+         HttpResponse, HttpEvent }                           from '@angular/common/http';
+import { CustomHttpUrlEncodingCodec }                        from '../encoder';
+
+import { Observable }                                        from 'rxjs';
+
+import { User } from '../model/user';
+
+import { BASE_PATH, COLLECTION_FORMATS }                     from '../variables';
+import { Configuration }                                     from '../configuration';
+
+
+@Injectable()
+export class UserService {
+
+    protected basePath = 'http://petstore.swagger.io/v2';
+    public defaultHeaders = new HttpHeaders();
+    public configuration = new Configuration();
+
+    constructor(protected httpClient: HttpClient, @Optional()@Inject(BASE_PATH) basePath: string, @Optional() configuration: Configuration) {
+
+        if (configuration) {
+            this.configuration = configuration;
+            this.configuration.basePath = configuration.basePath || basePath || this.basePath;
+
+        } else {
+            this.configuration.basePath = basePath || this.basePath;
+        }
+    }
+
+    /**
+     * @param consumes string[] mime-types
+     * @return true: consumes contains 'multipart/form-data', false: otherwise
+     */
+    private canConsumeForm(consumes: string[]): boolean {
+        const form = 'multipart/form-data';
+        for (const consume of consumes) {
+            if (form === consume) {
+                return true;
+            }
+        }
+        return false;
+    }
+
+
+    /**
+     * Create user
+     * This can only be done by the logged in user.
+     * @param user Created user object
+     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.
+     * @param reportProgress flag to report request and response progress.
+     */
+    public createUser(user: User, observe?: 'body', reportProgress?: boolean): Observable;
+    public createUser(user: User, observe?: 'response', reportProgress?: boolean): Observable>;
+    public createUser(user: User, observe?: 'events', reportProgress?: boolean): Observable>;
+    public createUser(user: User, observe: any = 'body', reportProgress: boolean = false ): Observable {
+        if (user === null || user === undefined) {
+            throw new Error('Required parameter user was null or undefined when calling createUser.');
+        }
+
+        let headers = this.defaultHeaders;
+
+        // to determine the Accept header
+        let httpHeaderAccepts: string[] = [
+        ];
+        const httpHeaderAcceptSelected: string | undefined = this.configuration.selectHeaderAccept(httpHeaderAccepts);
+        if (httpHeaderAcceptSelected !== undefined) {
+            headers = headers.set('Accept', httpHeaderAcceptSelected);
+        }
+
+        // to determine the Content-Type header
+        const consumes: string[] = [
+        ];
+        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);
+        if (httpContentTypeSelected !== undefined) {
+            headers = headers.set('Content-Type', httpContentTypeSelected);
+        }
+
+        return this.httpClient.post(`${this.configuration.basePath}/user`,
+            user,
+            {
+                withCredentials: this.configuration.withCredentials,
+                headers: headers,
+                observe: observe,
+                reportProgress: reportProgress
+            }
+        );
+    }
+
+    /**
+     * Creates list of users with given input array
+     * 
+     * @param user List of user object
+     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.
+     * @param reportProgress flag to report request and response progress.
+     */
+    public createUsersWithArrayInput(user: Array, observe?: 'body', reportProgress?: boolean): Observable;
+    public createUsersWithArrayInput(user: Array, observe?: 'response', reportProgress?: boolean): Observable>;
+    public createUsersWithArrayInput(user: Array, observe?: 'events', reportProgress?: boolean): Observable>;
+    public createUsersWithArrayInput(user: Array, observe: any = 'body', reportProgress: boolean = false ): Observable {
+        if (user === null || user === undefined) {
+            throw new Error('Required parameter user was null or undefined when calling createUsersWithArrayInput.');
+        }
+
+        let headers = this.defaultHeaders;
+
+        // to determine the Accept header
+        let httpHeaderAccepts: string[] = [
+        ];
+        const httpHeaderAcceptSelected: string | undefined = this.configuration.selectHeaderAccept(httpHeaderAccepts);
+        if (httpHeaderAcceptSelected !== undefined) {
+            headers = headers.set('Accept', httpHeaderAcceptSelected);
+        }
+
+        // to determine the Content-Type header
+        const consumes: string[] = [
+        ];
+        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);
+        if (httpContentTypeSelected !== undefined) {
+            headers = headers.set('Content-Type', httpContentTypeSelected);
+        }
+
+        return this.httpClient.post(`${this.configuration.basePath}/user/createWithArray`,
+            user,
+            {
+                withCredentials: this.configuration.withCredentials,
+                headers: headers,
+                observe: observe,
+                reportProgress: reportProgress
+            }
+        );
+    }
+
+    /**
+     * Creates list of users with given input array
+     * 
+     * @param user List of user object
+     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.
+     * @param reportProgress flag to report request and response progress.
+     */
+    public createUsersWithListInput(user: Array, observe?: 'body', reportProgress?: boolean): Observable;
+    public createUsersWithListInput(user: Array, observe?: 'response', reportProgress?: boolean): Observable>;
+    public createUsersWithListInput(user: Array, observe?: 'events', reportProgress?: boolean): Observable>;
+    public createUsersWithListInput(user: Array, observe: any = 'body', reportProgress: boolean = false ): Observable {
+        if (user === null || user === undefined) {
+            throw new Error('Required parameter user was null or undefined when calling createUsersWithListInput.');
+        }
+
+        let headers = this.defaultHeaders;
+
+        // to determine the Accept header
+        let httpHeaderAccepts: string[] = [
+        ];
+        const httpHeaderAcceptSelected: string | undefined = this.configuration.selectHeaderAccept(httpHeaderAccepts);
+        if (httpHeaderAcceptSelected !== undefined) {
+            headers = headers.set('Accept', httpHeaderAcceptSelected);
+        }
+
+        // to determine the Content-Type header
+        const consumes: string[] = [
+        ];
+        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);
+        if (httpContentTypeSelected !== undefined) {
+            headers = headers.set('Content-Type', httpContentTypeSelected);
+        }
+
+        return this.httpClient.post(`${this.configuration.basePath}/user/createWithList`,
+            user,
+            {
+                withCredentials: this.configuration.withCredentials,
+                headers: headers,
+                observe: observe,
+                reportProgress: reportProgress
+            }
+        );
+    }
+
+    /**
+     * Delete user
+     * This can only be done by the logged in user.
+     * @param username The name that needs to be deleted
+     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.
+     * @param reportProgress flag to report request and response progress.
+     */
+    public deleteUser(username: string, observe?: 'body', reportProgress?: boolean): Observable;
+    public deleteUser(username: string, observe?: 'response', reportProgress?: boolean): Observable>;
+    public deleteUser(username: string, observe?: 'events', reportProgress?: boolean): Observable>;
+    public deleteUser(username: string, observe: any = 'body', reportProgress: boolean = false ): Observable {
+        if (username === null || username === undefined) {
+            throw new Error('Required parameter username was null or undefined when calling deleteUser.');
+        }
+
+        let headers = this.defaultHeaders;
+
+        // to determine the Accept header
+        let httpHeaderAccepts: string[] = [
+        ];
+        const httpHeaderAcceptSelected: string | undefined = this.configuration.selectHeaderAccept(httpHeaderAccepts);
+        if (httpHeaderAcceptSelected !== undefined) {
+            headers = headers.set('Accept', httpHeaderAcceptSelected);
+        }
+
+        // to determine the Content-Type header
+        const consumes: string[] = [
+        ];
+
+        return this.httpClient.delete(`${this.configuration.basePath}/user/${encodeURIComponent(String(username))}`,
+            {
+                withCredentials: this.configuration.withCredentials,
+                headers: headers,
+                observe: observe,
+                reportProgress: reportProgress
+            }
+        );
+    }
+
+    /**
+     * Get user by user name
+     * 
+     * @param username The name that needs to be fetched. Use user1 for testing.
+     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.
+     * @param reportProgress flag to report request and response progress.
+     */
+    public getUserByName(username: string, observe?: 'body', reportProgress?: boolean): Observable;
+    public getUserByName(username: string, observe?: 'response', reportProgress?: boolean): Observable>;
+    public getUserByName(username: string, observe?: 'events', reportProgress?: boolean): Observable>;
+    public getUserByName(username: string, observe: any = 'body', reportProgress: boolean = false ): Observable {
+        if (username === null || username === undefined) {
+            throw new Error('Required parameter username was null or undefined when calling getUserByName.');
+        }
+
+        let headers = this.defaultHeaders;
+
+        // to determine the Accept header
+        let httpHeaderAccepts: string[] = [
+            'application/xml',
+            'application/json'
+        ];
+        const httpHeaderAcceptSelected: string | undefined = this.configuration.selectHeaderAccept(httpHeaderAccepts);
+        if (httpHeaderAcceptSelected !== undefined) {
+            headers = headers.set('Accept', httpHeaderAcceptSelected);
+        }
+
+        // to determine the Content-Type header
+        const consumes: string[] = [
+        ];
+
+        return this.httpClient.get(`${this.configuration.basePath}/user/${encodeURIComponent(String(username))}`,
+            {
+                withCredentials: this.configuration.withCredentials,
+                headers: headers,
+                observe: observe,
+                reportProgress: reportProgress
+            }
+        );
+    }
+
+    /**
+     * Logs user into the system
+     * 
+     * @param username The user name for login
+     * @param password The password for login in clear text
+     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.
+     * @param reportProgress flag to report request and response progress.
+     */
+    public loginUser(username: string, password: string, observe?: 'body', reportProgress?: boolean): Observable;
+    public loginUser(username: string, password: string, observe?: 'response', reportProgress?: boolean): Observable>;
+    public loginUser(username: string, password: string, observe?: 'events', reportProgress?: boolean): Observable>;
+    public loginUser(username: string, password: string, observe: any = 'body', reportProgress: boolean = false ): Observable {
+        if (username === null || username === undefined) {
+            throw new Error('Required parameter username was null or undefined when calling loginUser.');
+        }
+        if (password === null || password === undefined) {
+            throw new Error('Required parameter password was null or undefined when calling loginUser.');
+        }
+
+        let queryParameters = new HttpParams({encoder: new CustomHttpUrlEncodingCodec()});
+        if (username !== undefined && username !== null) {
+            queryParameters = queryParameters.set('username', username);
+        }
+        if (password !== undefined && password !== null) {
+            queryParameters = queryParameters.set('password', password);
+        }
+
+        let headers = this.defaultHeaders;
+
+        // to determine the Accept header
+        let httpHeaderAccepts: string[] = [
+            'application/xml',
+            'application/json'
+        ];
+        const httpHeaderAcceptSelected: string | undefined = this.configuration.selectHeaderAccept(httpHeaderAccepts);
+        if (httpHeaderAcceptSelected !== undefined) {
+            headers = headers.set('Accept', httpHeaderAcceptSelected);
+        }
+
+        // to determine the Content-Type header
+        const consumes: string[] = [
+        ];
+
+        return this.httpClient.get(`${this.configuration.basePath}/user/login`,
+            {
+                params: queryParameters,
+                withCredentials: this.configuration.withCredentials,
+                headers: headers,
+                observe: observe,
+                reportProgress: reportProgress
+            }
+        );
+    }
+
+    /**
+     * Logs out current logged in user session
+     * 
+     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.
+     * @param reportProgress flag to report request and response progress.
+     */
+    public logoutUser(observe?: 'body', reportProgress?: boolean): Observable;
+    public logoutUser(observe?: 'response', reportProgress?: boolean): Observable>;
+    public logoutUser(observe?: 'events', reportProgress?: boolean): Observable>;
+    public logoutUser(observe: any = 'body', reportProgress: boolean = false ): Observable {
+
+        let headers = this.defaultHeaders;
+
+        // to determine the Accept header
+        let httpHeaderAccepts: string[] = [
+        ];
+        const httpHeaderAcceptSelected: string | undefined = this.configuration.selectHeaderAccept(httpHeaderAccepts);
+        if (httpHeaderAcceptSelected !== undefined) {
+            headers = headers.set('Accept', httpHeaderAcceptSelected);
+        }
+
+        // to determine the Content-Type header
+        const consumes: string[] = [
+        ];
+
+        return this.httpClient.get(`${this.configuration.basePath}/user/logout`,
+            {
+                withCredentials: this.configuration.withCredentials,
+                headers: headers,
+                observe: observe,
+                reportProgress: reportProgress
+            }
+        );
+    }
+
+    /**
+     * 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 observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.
+     * @param reportProgress flag to report request and response progress.
+     */
+    public updateUser(username: string, user: User, observe?: 'body', reportProgress?: boolean): Observable;
+    public updateUser(username: string, user: User, observe?: 'response', reportProgress?: boolean): Observable>;
+    public updateUser(username: string, user: User, observe?: 'events', reportProgress?: boolean): Observable>;
+    public updateUser(username: string, user: User, observe: any = 'body', reportProgress: boolean = false ): Observable {
+        if (username === null || username === undefined) {
+            throw new Error('Required parameter username was null or undefined when calling updateUser.');
+        }
+        if (user === null || user === undefined) {
+            throw new Error('Required parameter user was null or undefined when calling updateUser.');
+        }
+
+        let headers = this.defaultHeaders;
+
+        // to determine the Accept header
+        let httpHeaderAccepts: string[] = [
+        ];
+        const httpHeaderAcceptSelected: string | undefined = this.configuration.selectHeaderAccept(httpHeaderAccepts);
+        if (httpHeaderAcceptSelected !== undefined) {
+            headers = headers.set('Accept', httpHeaderAcceptSelected);
+        }
+
+        // to determine the Content-Type header
+        const consumes: string[] = [
+        ];
+        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);
+        if (httpContentTypeSelected !== undefined) {
+            headers = headers.set('Content-Type', httpContentTypeSelected);
+        }
+
+        return this.httpClient.put(`${this.configuration.basePath}/user/${encodeURIComponent(String(username))}`,
+            user,
+            {
+                withCredentials: this.configuration.withCredentials,
+                headers: headers,
+                observe: observe,
+                reportProgress: reportProgress
+            }
+        );
+    }
+
+}
diff --git a/samples/client/petstore/typescript-angular-v6-provided-in-root/default/configuration.ts b/samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/with-npm/configuration.ts
similarity index 100%
rename from samples/client/petstore/typescript-angular-v6-provided-in-root/default/configuration.ts
rename to samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/with-npm/configuration.ts
diff --git a/samples/client/petstore/typescript-angular-v6-provided-in-root/default/encoder.ts b/samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/with-npm/encoder.ts
similarity index 100%
rename from samples/client/petstore/typescript-angular-v6-provided-in-root/default/encoder.ts
rename to samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/with-npm/encoder.ts
diff --git a/samples/client/petstore/typescript-angular-v6-provided-in-root/default/git_push.sh b/samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/with-npm/git_push.sh
similarity index 100%
rename from samples/client/petstore/typescript-angular-v6-provided-in-root/default/git_push.sh
rename to samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/with-npm/git_push.sh
diff --git a/samples/client/petstore/typescript-angular-v6-provided-in-root/default/index.ts b/samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/with-npm/index.ts
similarity index 100%
rename from samples/client/petstore/typescript-angular-v6-provided-in-root/default/index.ts
rename to samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/with-npm/index.ts
diff --git a/samples/client/petstore/typescript-angular-v6-provided-in-root/default/model/apiResponse.ts b/samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/with-npm/model/apiResponse.ts
similarity index 100%
rename from samples/client/petstore/typescript-angular-v6-provided-in-root/default/model/apiResponse.ts
rename to samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/with-npm/model/apiResponse.ts
diff --git a/samples/client/petstore/typescript-angular-v6-provided-in-root/default/model/category.ts b/samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/with-npm/model/category.ts
similarity index 100%
rename from samples/client/petstore/typescript-angular-v6-provided-in-root/default/model/category.ts
rename to samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/with-npm/model/category.ts
diff --git a/samples/client/petstore/typescript-angular-v6-provided-in-root/default/model/models.ts b/samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/with-npm/model/models.ts
similarity index 100%
rename from samples/client/petstore/typescript-angular-v6-provided-in-root/default/model/models.ts
rename to samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/with-npm/model/models.ts
diff --git a/samples/client/petstore/typescript-angular-v6-provided-in-root/default/model/order.ts b/samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/with-npm/model/order.ts
similarity index 100%
rename from samples/client/petstore/typescript-angular-v6-provided-in-root/default/model/order.ts
rename to samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/with-npm/model/order.ts
diff --git a/samples/client/petstore/typescript-angular-v6-provided-in-root/default/model/pet.ts b/samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/with-npm/model/pet.ts
similarity index 100%
rename from samples/client/petstore/typescript-angular-v6-provided-in-root/default/model/pet.ts
rename to samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/with-npm/model/pet.ts
diff --git a/samples/client/petstore/typescript-angular-v6-provided-in-root/default/model/tag.ts b/samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/with-npm/model/tag.ts
similarity index 100%
rename from samples/client/petstore/typescript-angular-v6-provided-in-root/default/model/tag.ts
rename to samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/with-npm/model/tag.ts
diff --git a/samples/client/petstore/typescript-angular-v6-provided-in-root/default/model/user.ts b/samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/with-npm/model/user.ts
similarity index 100%
rename from samples/client/petstore/typescript-angular-v6-provided-in-root/default/model/user.ts
rename to samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/with-npm/model/user.ts
diff --git a/samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/with-npm/ng-package.json b/samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/with-npm/ng-package.json
new file mode 100644
index 000000000000..3b17900dc9c3
--- /dev/null
+++ b/samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/with-npm/ng-package.json
@@ -0,0 +1,6 @@
+{
+  "$schema": "./node_modules/ng-packagr/ng-package.schema.json",
+  "lib": {
+    "entryFile": "index.ts"
+  }
+}
diff --git a/samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/with-npm/package.json b/samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/with-npm/package.json
new file mode 100644
index 000000000000..40e9973f9a93
--- /dev/null
+++ b/samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/with-npm/package.json
@@ -0,0 +1,40 @@
+{
+  "name": "@swagger/typescript-angular-petstore",
+  "version": "1.0.0",
+  "description": "OpenAPI client for @swagger/typescript-angular-petstore",
+  "author": "OpenAPI-Generator Contributors",
+  "keywords": [
+    "openapi-client",
+    "openapi-generator"
+  ],
+  "license": "Unlicense",
+  "scripts": {
+    "build": "ng-packagr -p ng-package.json"
+  },
+  "peerDependencies": {
+    "@angular/core": "^6.0.0",
+    "@angular/http": "^6.0.0",
+    "@angular/common": "^6.0.0",
+    "@angular/compiler": "^6.0.0",
+    "core-js": "^2.4.0",
+    "reflect-metadata": "^0.1.3",
+    "rxjs": "^6.1.0",
+    "zone.js": "^0.7.6"
+  },
+  "devDependencies": {
+    "@angular/compiler-cli": "^6.0.0",
+    "@angular/core": "^6.0.0",
+    "@angular/http": "^6.0.0",
+    "@angular/common": "^6.0.0",
+    "@angular/compiler": "^6.0.0",
+    "@angular/platform-browser": "^6.0.0",
+    "ng-packagr": "^2.4.1",
+    "reflect-metadata": "^0.1.3",
+    "rxjs": "^6.1.0",
+    "zone.js": "^0.7.6",
+    "typescript": ">=2.1.5 <2.8"
+  },
+  "publishConfig": {
+    "registry": "https://skimdb.npmjs.com/registry"
+  }
+}
diff --git a/samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/with-npm/tsconfig.json b/samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/with-npm/tsconfig.json
new file mode 100644
index 000000000000..498ee01e9ddd
--- /dev/null
+++ b/samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/with-npm/tsconfig.json
@@ -0,0 +1,25 @@
+{
+    "compilerOptions": {
+        "emitDecoratorMetadata": true,
+        "experimentalDecorators": true,
+        "noImplicitAny": false,
+        "suppressImplicitAnyIndexErrors": true,
+        "target": "es5",
+        "module": "commonjs",
+        "moduleResolution": "node",
+        "removeComments": true,
+        "sourceMap": true,
+        "outDir": "./dist",
+        "noLib": false,
+        "declaration": true,
+        "lib": [ "es6", "dom" ]
+    },
+    "exclude": [
+        "node_modules",
+        "dist"
+    ],
+    "filesGlob": [
+        "./model/*.ts",
+        "./api/*.ts"
+    ]
+}
diff --git a/samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/with-npm/typings.json b/samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/with-npm/typings.json
new file mode 100644
index 000000000000..507c40e5cbed
--- /dev/null
+++ b/samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/with-npm/typings.json
@@ -0,0 +1,5 @@
+{
+  "globalDependencies": {
+    "core-js": "registry:dt/core-js#0.0.0+20160725163759"
+  }
+}
diff --git a/samples/client/petstore/typescript-angular-v6-provided-in-root/default/variables.ts b/samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/with-npm/variables.ts
similarity index 100%
rename from samples/client/petstore/typescript-angular-v6-provided-in-root/default/variables.ts
rename to samples/client/petstore/typescript-angular-v6-not-provided-in-root/builds/with-npm/variables.ts
diff --git a/samples/client/petstore/typescript-angular-v6-not-provided-in-root/default/.openapi-generator/VERSION b/samples/client/petstore/typescript-angular-v6-not-provided-in-root/default/.openapi-generator/VERSION
deleted file mode 100644
index ad121e8340e0..000000000000
--- a/samples/client/petstore/typescript-angular-v6-not-provided-in-root/default/.openapi-generator/VERSION
+++ /dev/null
@@ -1 +0,0 @@
-3.0.1-SNAPSHOT
\ No newline at end of file
diff --git a/samples/client/petstore/typescript-angular-v6-provided-in-root/.editorconfig b/samples/client/petstore/typescript-angular-v6-provided-in-root/.editorconfig
new file mode 100644
index 000000000000..6e87a003da89
--- /dev/null
+++ b/samples/client/petstore/typescript-angular-v6-provided-in-root/.editorconfig
@@ -0,0 +1,13 @@
+# Editor configuration, see http://editorconfig.org
+root = true
+
+[*]
+charset = utf-8
+indent_style = space
+indent_size = 2
+insert_final_newline = true
+trim_trailing_whitespace = true
+
+[*.md]
+max_line_length = off
+trim_trailing_whitespace = false
diff --git a/samples/client/petstore/typescript-angular-v6-provided-in-root/.gitignore b/samples/client/petstore/typescript-angular-v6-provided-in-root/.gitignore
new file mode 100644
index 000000000000..ee5c9d8336b7
--- /dev/null
+++ b/samples/client/petstore/typescript-angular-v6-provided-in-root/.gitignore
@@ -0,0 +1,39 @@
+# See http://help.github.com/ignore-files/ for more about ignoring files.
+
+# compiled output
+/dist
+/tmp
+/out-tsc
+
+# dependencies
+/node_modules
+
+# IDEs and editors
+/.idea
+.project
+.classpath
+.c9/
+*.launch
+.settings/
+*.sublime-workspace
+
+# IDE - VSCode
+.vscode/*
+!.vscode/settings.json
+!.vscode/tasks.json
+!.vscode/launch.json
+!.vscode/extensions.json
+
+# misc
+/.sass-cache
+/connect.lock
+/coverage
+/libpeerconnection.log
+npm-debug.log
+yarn-error.log
+testem.log
+/typings
+
+# System Files
+.DS_Store
+Thumbs.db
diff --git a/samples/client/petstore/typescript-angular-v6-provided-in-root/angular.json b/samples/client/petstore/typescript-angular-v6-provided-in-root/angular.json
new file mode 100644
index 000000000000..c8a34aab8b0d
--- /dev/null
+++ b/samples/client/petstore/typescript-angular-v6-provided-in-root/angular.json
@@ -0,0 +1,127 @@
+{
+  "$schema": "./node_modules/@angular/cli/lib/config/schema.json",
+  "version": 1,
+  "newProjectRoot": "tests",
+  "projects": {
+    "test-default": {
+      "root": "tests/default",
+      "sourceRoot": "tests/default/src",
+      "projectType": "application",
+      "prefix": "app",
+      "schematics": {},
+      "architect": {
+        "build": {
+          "builder": "@angular-devkit/build-angular:browser",
+          "options": {
+            "outputPath": "tests/default/dist",
+            "index": "tests/default/src/index.html",
+            "main": "tests/default/src/main.ts",
+            "polyfills": "tests/default/src/polyfills.ts",
+            "tsConfig": "tests/default/src/tsconfig.app.json",
+            "assets": [
+              "tests/default/src/favicon.ico",
+              "tests/default/src/assets"
+            ],
+            "styles": [
+              "tests/default/src/styles.css"
+            ],
+            "scripts": []
+          },
+          "configurations": {
+            "production": {
+              "fileReplacements": [
+                {
+                  "replace": "tests/default/src/environments/environment.ts",
+                  "with": "tests/default/src/environments/environment.prod.ts"
+                }
+              ],
+              "optimization": true,
+              "outputHashing": "all",
+              "sourceMap": false,
+              "extractCss": true,
+              "namedChunks": false,
+              "aot": true,
+              "extractLicenses": true,
+              "vendorChunk": false,
+              "buildOptimizer": true
+            }
+          }
+        },
+        "serve": {
+          "builder": "@angular-devkit/build-angular:dev-server",
+          "options": {
+            "browserTarget": "test-default:build"
+          },
+          "configurations": {
+            "production": {
+              "browserTarget": "test-default:build:production"
+            }
+          }
+        },
+        "extract-i18n": {
+          "builder": "@angular-devkit/build-angular:extract-i18n",
+          "options": {
+            "browserTarget": "test-default:build"
+          }
+        },
+        "test": {
+          "builder": "@angular-devkit/build-angular:karma",
+          "options": {
+            "main": "tests/default/src/test.ts",
+            "polyfills": "tests/default/src/polyfills.ts",
+            "tsConfig": "tests/default/src/tsconfig.spec.json",
+            "karmaConfig": "tests/default/src/karma.conf.js",
+            "styles": [
+              "tests/default/src/styles.css"
+            ],
+            "scripts": [],
+            "assets": [
+              "tests/default/src/favicon.ico",
+              "tests/default/src/assets"
+            ]
+          }
+        },
+        "lint": {
+          "builder": "@angular-devkit/build-angular:tslint",
+          "options": {
+            "tsConfig": [
+              "tests/default/src/tsconfig.app.json",
+              "tests/default/src/tsconfig.spec.json"
+            ],
+            "exclude": [
+              "**/node_modules/**"
+            ]
+          }
+        }
+      }
+    },
+    "cli-e2e": {
+      "root": "e2e/",
+      "projectType": "application",
+      "architect": {
+        "e2e": {
+          "builder": "@angular-devkit/build-angular:protractor",
+          "options": {
+            "protractorConfig": "tests/default/e2e/protractor.conf.js",
+            "devServerTarget": "test-default:serve"
+          },
+          "configurations": {
+            "production": {
+              "devServerTarget": "test-default:serve:production"
+            }
+          }
+        },
+        "lint": {
+          "builder": "@angular-devkit/build-angular:tslint",
+          "options": {
+            "tsConfig": "tests/default/e2e/tsconfig.e2e.json",
+            "exclude": [
+              "**/node_modules/**"
+            ]
+          }
+        }
+      }
+    }
+  },
+  "defaultProject": "test-default"
+}
diff --git a/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/default/.gitignore b/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/default/.gitignore
new file mode 100644
index 000000000000..149b57654723
--- /dev/null
+++ b/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/default/.gitignore
@@ -0,0 +1,4 @@
+wwwroot/*.js
+node_modules
+typings
+dist
diff --git a/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/default/.openapi-generator-ignore b/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/default/.openapi-generator-ignore
new file mode 100644
index 000000000000..7484ee590a38
--- /dev/null
+++ b/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/default/.openapi-generator-ignore
@@ -0,0 +1,23 @@
+# OpenAPI Generator Ignore
+# Generated by openapi-generator https://github.com/openapitools/openapi-generator
+
+# Use this file to prevent files from being overwritten by the generator.
+# The patterns follow closely to .gitignore or .dockerignore.
+
+# As an example, the C# client generator defines ApiClient.cs.
+# You can make changes and tell OpenAPI Generator to ignore just this file by uncommenting the following line:
+#ApiClient.cs
+
+# You can match any string of characters against a directory, file or extension with a single asterisk (*):
+#foo/*/qux
+# The above matches foo/bar/qux and foo/baz/qux, but not foo/bar/baz/qux
+
+# You can recursively match patterns against a directory, file or extension with a double asterisk (**):
+#foo/**/qux
+# This matches foo/bar/qux, foo/baz/qux, and foo/bar/baz/qux
+
+# You can also negate patterns with an exclamation (!).
+# For example, you can ignore all files in a docs folder with the file extension .md:
+#docs/*.md
+# Then explicitly reverse the ignore rule for a single file:
+#!docs/README.md
diff --git a/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/default/.openapi-generator/VERSION b/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/default/.openapi-generator/VERSION
new file mode 100644
index 000000000000..1c00c5181548
--- /dev/null
+++ b/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/default/.openapi-generator/VERSION
@@ -0,0 +1 @@
+3.0.2-SNAPSHOT
\ No newline at end of file
diff --git a/samples/client/petstore/typescript-angular-v6-provided-in-root/default/README.md b/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/default/README.md
similarity index 100%
rename from samples/client/petstore/typescript-angular-v6-provided-in-root/default/README.md
rename to samples/client/petstore/typescript-angular-v6-provided-in-root/builds/default/README.md
diff --git a/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/default/api.module.ts b/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/default/api.module.ts
new file mode 100644
index 000000000000..8487243a83b1
--- /dev/null
+++ b/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/default/api.module.ts
@@ -0,0 +1,37 @@
+import { NgModule, ModuleWithProviders, SkipSelf, Optional } from '@angular/core';
+import { Configuration } from './configuration';
+import { HttpClient } from '@angular/common/http';
+
+
+import { PetService } from './api/pet.service';
+import { StoreService } from './api/store.service';
+import { UserService } from './api/user.service';
+
+@NgModule({
+  imports:      [],
+  declarations: [],
+  exports:      [],
+  providers: [
+    PetService,
+    StoreService,
+    UserService ]
+})
+export class ApiModule {
+    public static forRoot(configurationFactory: () => Configuration): ModuleWithProviders {
+        return {
+            ngModule: ApiModule,
+            providers: [ { provide: Configuration, useFactory: configurationFactory } ]
+        };
+    }
+
+    constructor( @Optional() @SkipSelf() parentModule: ApiModule,
+                 @Optional() http: HttpClient) {
+        if (parentModule) {
+            throw new Error('ApiModule is already loaded. Import in your base AppModule only.');
+        }
+        if (!http) {
+            throw new Error('You need to import the HttpClientModule in your AppModule! \n' +
+            'See also https://github.com/angular/angular/issues/20575');
+        }
+    }
+}
diff --git a/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/default/api/api.ts b/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/default/api/api.ts
new file mode 100644
index 000000000000..8e44b64083d5
--- /dev/null
+++ b/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/default/api/api.ts
@@ -0,0 +1,7 @@
+export * from './pet.service';
+import { PetService } from './pet.service';
+export * from './store.service';
+import { StoreService } from './store.service';
+export * from './user.service';
+import { UserService } from './user.service';
+export const APIS = [PetService, StoreService, UserService];
diff --git a/samples/client/petstore/typescript-angular-v6-provided-in-root/default/api/pet.service.ts b/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/default/api/pet.service.ts
similarity index 95%
rename from samples/client/petstore/typescript-angular-v6-provided-in-root/default/api/pet.service.ts
rename to samples/client/petstore/typescript-angular-v6-provided-in-root/builds/default/api/pet.service.ts
index 661f02c0829c..8af05a1c5212 100644
--- a/samples/client/petstore/typescript-angular-v6-provided-in-root/default/api/pet.service.ts
+++ b/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/default/api/pet.service.ts
@@ -35,12 +35,13 @@ export class PetService {
     public configuration = new Configuration();
 
     constructor(protected httpClient: HttpClient, @Optional()@Inject(BASE_PATH) basePath: string, @Optional() configuration: Configuration) {
-        if (basePath) {
-            this.basePath = basePath;
-        }
+
         if (configuration) {
             this.configuration = configuration;
-            this.basePath = basePath || configuration.basePath || this.basePath;
+            this.configuration.basePath = configuration.basePath || basePath || this.basePath;
+
+        } else {
+            this.configuration.basePath = basePath || this.basePath;
         }
     }
 
@@ -102,7 +103,7 @@ export class PetService {
             headers = headers.set('Content-Type', httpContentTypeSelected);
         }
 
-        return this.httpClient.post(`${this.basePath}/pet`,
+        return this.httpClient.post(`${this.configuration.basePath}/pet`,
             pet,
             {
                 withCredentials: this.configuration.withCredentials,
@@ -154,7 +155,7 @@ export class PetService {
         const consumes: string[] = [
         ];
 
-        return this.httpClient.delete(`${this.basePath}/pet/${encodeURIComponent(String(petId))}`,
+        return this.httpClient.delete(`${this.configuration.basePath}/pet/${encodeURIComponent(String(petId))}`,
             {
                 withCredentials: this.configuration.withCredentials,
                 headers: headers,
@@ -208,7 +209,7 @@ export class PetService {
         const consumes: string[] = [
         ];
 
-        return this.httpClient.get>(`${this.basePath}/pet/findByStatus`,
+        return this.httpClient.get>(`${this.configuration.basePath}/pet/findByStatus`,
             {
                 params: queryParameters,
                 withCredentials: this.configuration.withCredentials,
@@ -263,7 +264,7 @@ export class PetService {
         const consumes: string[] = [
         ];
 
-        return this.httpClient.get>(`${this.basePath}/pet/findByTags`,
+        return this.httpClient.get>(`${this.configuration.basePath}/pet/findByTags`,
             {
                 params: queryParameters,
                 withCredentials: this.configuration.withCredentials,
@@ -310,7 +311,7 @@ export class PetService {
         const consumes: string[] = [
         ];
 
-        return this.httpClient.get(`${this.basePath}/pet/${encodeURIComponent(String(petId))}`,
+        return this.httpClient.get(`${this.configuration.basePath}/pet/${encodeURIComponent(String(petId))}`,
             {
                 withCredentials: this.configuration.withCredentials,
                 headers: headers,
@@ -363,7 +364,7 @@ export class PetService {
             headers = headers.set('Content-Type', httpContentTypeSelected);
         }
 
-        return this.httpClient.put(`${this.basePath}/pet`,
+        return this.httpClient.put(`${this.configuration.basePath}/pet`,
             pet,
             {
                 withCredentials: this.configuration.withCredentials,
@@ -432,7 +433,7 @@ export class PetService {
             formParams = formParams.append('status', status) || formParams;
         }
 
-        return this.httpClient.post(`${this.basePath}/pet/${encodeURIComponent(String(petId))}`,
+        return this.httpClient.post(`${this.configuration.basePath}/pet/${encodeURIComponent(String(petId))}`,
             convertFormParamsToString ? formParams.toString() : formParams,
             {
                 withCredentials: this.configuration.withCredentials,
@@ -505,7 +506,7 @@ export class PetService {
             formParams = formParams.append('file', file) || formParams;
         }
 
-        return this.httpClient.post(`${this.basePath}/pet/${encodeURIComponent(String(petId))}/uploadImage`,
+        return this.httpClient.post(`${this.configuration.basePath}/pet/${encodeURIComponent(String(petId))}/uploadImage`,
             convertFormParamsToString ? formParams.toString() : formParams,
             {
                 withCredentials: this.configuration.withCredentials,
diff --git a/samples/client/petstore/typescript-angular-v6-provided-in-root/default/api/store.service.ts b/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/default/api/store.service.ts
similarity index 94%
rename from samples/client/petstore/typescript-angular-v6-provided-in-root/default/api/store.service.ts
rename to samples/client/petstore/typescript-angular-v6-provided-in-root/builds/default/api/store.service.ts
index 574bd32c4cdf..cae817406d76 100644
--- a/samples/client/petstore/typescript-angular-v6-provided-in-root/default/api/store.service.ts
+++ b/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/default/api/store.service.ts
@@ -34,12 +34,13 @@ export class StoreService {
     public configuration = new Configuration();
 
     constructor(protected httpClient: HttpClient, @Optional()@Inject(BASE_PATH) basePath: string, @Optional() configuration: Configuration) {
-        if (basePath) {
-            this.basePath = basePath;
-        }
+
         if (configuration) {
             this.configuration = configuration;
-            this.basePath = basePath || configuration.basePath || this.basePath;
+            this.configuration.basePath = configuration.basePath || basePath || this.basePath;
+
+        } else {
+            this.configuration.basePath = basePath || this.basePath;
         }
     }
 
@@ -87,7 +88,7 @@ export class StoreService {
         const consumes: string[] = [
         ];
 
-        return this.httpClient.delete(`${this.basePath}/store/order/${encodeURIComponent(String(orderId))}`,
+        return this.httpClient.delete(`${this.configuration.basePath}/store/order/${encodeURIComponent(String(orderId))}`,
             {
                 withCredentials: this.configuration.withCredentials,
                 headers: headers,
@@ -128,7 +129,7 @@ export class StoreService {
         const consumes: string[] = [
         ];
 
-        return this.httpClient.get<{ [key: string]: number; }>(`${this.basePath}/store/inventory`,
+        return this.httpClient.get<{ [key: string]: number; }>(`${this.configuration.basePath}/store/inventory`,
             {
                 withCredentials: this.configuration.withCredentials,
                 headers: headers,
@@ -169,7 +170,7 @@ export class StoreService {
         const consumes: string[] = [
         ];
 
-        return this.httpClient.get(`${this.basePath}/store/order/${encodeURIComponent(String(orderId))}`,
+        return this.httpClient.get(`${this.configuration.basePath}/store/order/${encodeURIComponent(String(orderId))}`,
             {
                 withCredentials: this.configuration.withCredentials,
                 headers: headers,
@@ -214,7 +215,7 @@ export class StoreService {
             headers = headers.set('Content-Type', httpContentTypeSelected);
         }
 
-        return this.httpClient.post(`${this.basePath}/store/order`,
+        return this.httpClient.post(`${this.configuration.basePath}/store/order`,
             order,
             {
                 withCredentials: this.configuration.withCredentials,
diff --git a/samples/client/petstore/typescript-angular-v6-provided-in-root/default/api/user.service.ts b/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/default/api/user.service.ts
similarity index 94%
rename from samples/client/petstore/typescript-angular-v6-provided-in-root/default/api/user.service.ts
rename to samples/client/petstore/typescript-angular-v6-provided-in-root/builds/default/api/user.service.ts
index a3c6a1e460d4..d693da51a154 100644
--- a/samples/client/petstore/typescript-angular-v6-provided-in-root/default/api/user.service.ts
+++ b/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/default/api/user.service.ts
@@ -34,12 +34,13 @@ export class UserService {
     public configuration = new Configuration();
 
     constructor(protected httpClient: HttpClient, @Optional()@Inject(BASE_PATH) basePath: string, @Optional() configuration: Configuration) {
-        if (basePath) {
-            this.basePath = basePath;
-        }
+
         if (configuration) {
             this.configuration = configuration;
-            this.basePath = basePath || configuration.basePath || this.basePath;
+            this.configuration.basePath = configuration.basePath || basePath || this.basePath;
+
+        } else {
+            this.configuration.basePath = basePath || this.basePath;
         }
     }
 
@@ -91,7 +92,7 @@ export class UserService {
             headers = headers.set('Content-Type', httpContentTypeSelected);
         }
 
-        return this.httpClient.post(`${this.basePath}/user`,
+        return this.httpClient.post(`${this.configuration.basePath}/user`,
             user,
             {
                 withCredentials: this.configuration.withCredentials,
@@ -135,7 +136,7 @@ export class UserService {
             headers = headers.set('Content-Type', httpContentTypeSelected);
         }
 
-        return this.httpClient.post(`${this.basePath}/user/createWithArray`,
+        return this.httpClient.post(`${this.configuration.basePath}/user/createWithArray`,
             user,
             {
                 withCredentials: this.configuration.withCredentials,
@@ -179,7 +180,7 @@ export class UserService {
             headers = headers.set('Content-Type', httpContentTypeSelected);
         }
 
-        return this.httpClient.post(`${this.basePath}/user/createWithList`,
+        return this.httpClient.post(`${this.configuration.basePath}/user/createWithList`,
             user,
             {
                 withCredentials: this.configuration.withCredentials,
@@ -219,7 +220,7 @@ export class UserService {
         const consumes: string[] = [
         ];
 
-        return this.httpClient.delete(`${this.basePath}/user/${encodeURIComponent(String(username))}`,
+        return this.httpClient.delete(`${this.configuration.basePath}/user/${encodeURIComponent(String(username))}`,
             {
                 withCredentials: this.configuration.withCredentials,
                 headers: headers,
@@ -260,7 +261,7 @@ export class UserService {
         const consumes: string[] = [
         ];
 
-        return this.httpClient.get(`${this.basePath}/user/${encodeURIComponent(String(username))}`,
+        return this.httpClient.get(`${this.configuration.basePath}/user/${encodeURIComponent(String(username))}`,
             {
                 withCredentials: this.configuration.withCredentials,
                 headers: headers,
@@ -313,7 +314,7 @@ export class UserService {
         const consumes: string[] = [
         ];
 
-        return this.httpClient.get(`${this.basePath}/user/login`,
+        return this.httpClient.get(`${this.configuration.basePath}/user/login`,
             {
                 params: queryParameters,
                 withCredentials: this.configuration.withCredentials,
@@ -349,7 +350,7 @@ export class UserService {
         const consumes: string[] = [
         ];
 
-        return this.httpClient.get(`${this.basePath}/user/logout`,
+        return this.httpClient.get(`${this.configuration.basePath}/user/logout`,
             {
                 withCredentials: this.configuration.withCredentials,
                 headers: headers,
@@ -396,7 +397,7 @@ export class UserService {
             headers = headers.set('Content-Type', httpContentTypeSelected);
         }
 
-        return this.httpClient.put(`${this.basePath}/user/${encodeURIComponent(String(username))}`,
+        return this.httpClient.put(`${this.configuration.basePath}/user/${encodeURIComponent(String(username))}`,
             user,
             {
                 withCredentials: this.configuration.withCredentials,
diff --git a/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/default/configuration.ts b/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/default/configuration.ts
new file mode 100644
index 000000000000..5dac1323937e
--- /dev/null
+++ b/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/default/configuration.ts
@@ -0,0 +1,79 @@
+export interface ConfigurationParameters {
+    apiKeys?: {[ key: string ]: string};
+    username?: string;
+    password?: string;
+    accessToken?: string | (() => string);
+    basePath?: string;
+    withCredentials?: boolean;
+}
+
+export class Configuration {
+    apiKeys?: {[ key: string ]: string};
+    username?: string;
+    password?: string;
+    accessToken?: string | (() => string);
+    basePath?: string;
+    withCredentials?: boolean;
+
+    constructor(configurationParameters: ConfigurationParameters = {}) {
+        this.apiKeys = configurationParameters.apiKeys;
+        this.username = configurationParameters.username;
+        this.password = configurationParameters.password;
+        this.accessToken = configurationParameters.accessToken;
+        this.basePath = configurationParameters.basePath;
+        this.withCredentials = configurationParameters.withCredentials;
+    }
+
+    /**
+     * Select the correct content-type to use for a request.
+     * Uses {@link Configuration#isJsonMime} to determine the correct content-type.
+     * If no content type is found return the first found type if the contentTypes is not empty
+     * @param contentTypes - the array of content types that are available for selection
+     * @returns the selected content-type or undefined if no selection could be made.
+     */
+    public selectHeaderContentType (contentTypes: string[]): string | undefined {
+        if (contentTypes.length === 0) {
+            return undefined;
+        }
+
+        let type = contentTypes.find(x => this.isJsonMime(x));
+        if (type === undefined) {
+            return contentTypes[0];
+        }
+        return type;
+    }
+
+    /**
+     * Select the correct accept content-type to use for a request.
+     * Uses {@link Configuration#isJsonMime} to determine the correct accept content-type.
+     * If no content type is found return the first found type if the contentTypes is not empty
+     * @param accepts - the array of content types that are available for selection.
+     * @returns the selected content-type or undefined if no selection could be made.
+     */
+    public selectHeaderAccept(accepts: string[]): string | undefined {
+        if (accepts.length === 0) {
+            return undefined;
+        }
+
+        let type = accepts.find(x => this.isJsonMime(x));
+        if (type === undefined) {
+            return accepts[0];
+        }
+        return type;
+    }
+
+    /**
+     * Check if the given MIME is a JSON MIME.
+     * JSON MIME examples:
+     *   application/json
+     *   application/json; charset=UTF8
+     *   APPLICATION/JSON
+     *   application/vnd.company+json
+     * @param mime - MIME (Multipurpose Internet Mail Extensions)
+     * @return True if the given MIME is JSON, false otherwise.
+     */
+    public isJsonMime(mime: string): boolean {
+        const jsonMime: RegExp = new RegExp('^(application\/json|[^;/ \t]+\/[^;/ \t]+[+]json)[ \t]*(;.*)?$', 'i');
+        return mime !== null && (jsonMime.test(mime) || mime.toLowerCase() === 'application/json-patch+json');
+    }
+}
diff --git a/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/default/encoder.ts b/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/default/encoder.ts
new file mode 100644
index 000000000000..f1c6b78c9c8e
--- /dev/null
+++ b/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/default/encoder.ts
@@ -0,0 +1,18 @@
+    import { HttpUrlEncodingCodec } from '@angular/common/http';
+
+/**
+* CustomHttpUrlEncodingCodec
+* Fix plus sign (+) not encoding, so sent as blank space
+* See: https://github.com/angular/angular/issues/11058#issuecomment-247367318
+*/
+export class CustomHttpUrlEncodingCodec extends HttpUrlEncodingCodec {
+    encodeKey(k: string): string {
+        k = super.encodeKey(k);
+        return k.replace(/\+/gi, '%2B');
+    }
+    encodeValue(v: string): string {
+        v = super.encodeValue(v);
+        return v.replace(/\+/gi, '%2B');
+    }
+}
+
diff --git a/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/default/git_push.sh b/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/default/git_push.sh
new file mode 100644
index 000000000000..8442b80bb445
--- /dev/null
+++ b/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/default/git_push.sh
@@ -0,0 +1,52 @@
+#!/bin/sh
+# ref: https://help.github.com/articles/adding-an-existing-project-to-github-using-the-command-line/
+#
+# Usage example: /bin/sh ./git_push.sh wing328 openapi-pestore-perl "minor update"
+
+git_user_id=$1
+git_repo_id=$2
+release_note=$3
+
+if [ "$git_user_id" = "" ]; then
+    git_user_id="GIT_USER_ID"
+    echo "[INFO] No command line input provided. Set \$git_user_id to $git_user_id"
+fi
+
+if [ "$git_repo_id" = "" ]; then
+    git_repo_id="GIT_REPO_ID"
+    echo "[INFO] No command line input provided. Set \$git_repo_id to $git_repo_id"
+fi
+
+if [ "$release_note" = "" ]; then
+    release_note="Minor update"
+    echo "[INFO] No command line input provided. Set \$release_note to $release_note"
+fi
+
+# Initialize the local directory as a Git repository
+git init
+
+# Adds the files in the local repository and stages them for commit.
+git add .
+
+# Commits the tracked changes and prepares them to be pushed to a remote repository. 
+git commit -m "$release_note"
+
+# Sets the new remote
+git_remote=`git remote`
+if [ "$git_remote" = "" ]; then # git remote not defined
+
+    if [ "$GIT_TOKEN" = "" ]; then
+        echo "[INFO] \$GIT_TOKEN (environment variable) is not set. Using the git credential in your environment."
+        git remote add origin https://github.com/${git_user_id}/${git_repo_id}.git
+    else
+        git remote add origin https://${git_user_id}:${GIT_TOKEN}@github.com/${git_user_id}/${git_repo_id}.git
+    fi
+
+fi
+
+git pull origin master
+
+# Pushes (Forces) the changes in the local repository up to the remote repository
+echo "Git pushing to https://github.com/${git_user_id}/${git_repo_id}.git"
+git push origin master 2>&1 | grep -v 'To https'
+
diff --git a/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/default/index.ts b/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/default/index.ts
new file mode 100644
index 000000000000..c312b70fa3ef
--- /dev/null
+++ b/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/default/index.ts
@@ -0,0 +1,5 @@
+export * from './api/api';
+export * from './model/models';
+export * from './variables';
+export * from './configuration';
+export * from './api.module';
\ No newline at end of file
diff --git a/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/default/model/apiResponse.ts b/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/default/model/apiResponse.ts
new file mode 100644
index 000000000000..b57ab72c1765
--- /dev/null
+++ b/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/default/model/apiResponse.ts
@@ -0,0 +1,21 @@
+/**
+ * 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.
+ */
+
+
+/**
+ * Describes the result of uploading an image resource
+ */
+export interface ApiResponse { 
+    code?: number;
+    type?: string;
+    message?: string;
+}
diff --git a/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/default/model/category.ts b/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/default/model/category.ts
new file mode 100644
index 000000000000..6b9023b3b720
--- /dev/null
+++ b/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/default/model/category.ts
@@ -0,0 +1,20 @@
+/**
+ * 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.
+ */
+
+
+/**
+ * A category for a pet
+ */
+export interface Category { 
+    id?: number;
+    name?: string;
+}
diff --git a/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/default/model/models.ts b/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/default/model/models.ts
new file mode 100644
index 000000000000..8607c5dabd0c
--- /dev/null
+++ b/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/default/model/models.ts
@@ -0,0 +1,6 @@
+export * from './apiResponse';
+export * from './category';
+export * from './order';
+export * from './pet';
+export * from './tag';
+export * from './user';
diff --git a/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/default/model/order.ts b/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/default/model/order.ts
new file mode 100644
index 000000000000..b73c088ad11e
--- /dev/null
+++ b/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/default/model/order.ts
@@ -0,0 +1,35 @@
+/**
+ * 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.
+ */
+
+
+/**
+ * An order for a pets from the pet store
+ */
+export interface Order { 
+    id?: number;
+    petId?: number;
+    quantity?: number;
+    shipDate?: Date;
+    /**
+     * Order Status
+     */
+    status?: Order.StatusEnum;
+    complete?: boolean;
+}
+export namespace Order {
+    export type StatusEnum = 'placed' | 'approved' | 'delivered';
+    export const StatusEnum = {
+        Placed: 'placed' as StatusEnum,
+        Approved: 'approved' as StatusEnum,
+        Delivered: 'delivered' as StatusEnum
+    };
+}
diff --git a/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/default/model/pet.ts b/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/default/model/pet.ts
new file mode 100644
index 000000000000..902691a8adb9
--- /dev/null
+++ b/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/default/model/pet.ts
@@ -0,0 +1,37 @@
+/**
+ * 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.
+ */
+import { Category } from './category';
+import { Tag } from './tag';
+
+
+/**
+ * A pet for sale in the pet store
+ */
+export interface Pet { 
+    id?: number;
+    category?: Category;
+    name: string;
+    photoUrls: Array;
+    tags?: Array;
+    /**
+     * pet status in the store
+     */
+    status?: Pet.StatusEnum;
+}
+export namespace Pet {
+    export type StatusEnum = 'available' | 'pending' | 'sold';
+    export const StatusEnum = {
+        Available: 'available' as StatusEnum,
+        Pending: 'pending' as StatusEnum,
+        Sold: 'sold' as StatusEnum
+    };
+}
diff --git a/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/default/model/tag.ts b/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/default/model/tag.ts
new file mode 100644
index 000000000000..fbe7c1f6ca13
--- /dev/null
+++ b/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/default/model/tag.ts
@@ -0,0 +1,20 @@
+/**
+ * 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.
+ */
+
+
+/**
+ * A tag for a pet
+ */
+export interface Tag { 
+    id?: number;
+    name?: string;
+}
diff --git a/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/default/model/user.ts b/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/default/model/user.ts
new file mode 100644
index 000000000000..65de237217fa
--- /dev/null
+++ b/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/default/model/user.ts
@@ -0,0 +1,29 @@
+/**
+ * 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.
+ */
+
+
+/**
+ * A User who is purchasing from the pet store
+ */
+export interface User { 
+    id?: number;
+    username?: string;
+    firstName?: string;
+    lastName?: string;
+    email?: string;
+    password?: string;
+    phone?: string;
+    /**
+     * User Status
+     */
+    userStatus?: number;
+}
diff --git a/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/default/variables.ts b/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/default/variables.ts
new file mode 100644
index 000000000000..6fe58549f395
--- /dev/null
+++ b/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/default/variables.ts
@@ -0,0 +1,9 @@
+import { InjectionToken } from '@angular/core';
+
+export const BASE_PATH = new InjectionToken('basePath');
+export const COLLECTION_FORMATS = {
+    'csv': ',',
+    'tsv': '   ',
+    'ssv': ' ',
+    'pipes': '|'
+}
diff --git a/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/with-npm/.gitignore b/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/with-npm/.gitignore
new file mode 100644
index 000000000000..149b57654723
--- /dev/null
+++ b/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/with-npm/.gitignore
@@ -0,0 +1,4 @@
+wwwroot/*.js
+node_modules
+typings
+dist
diff --git a/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/with-npm/.openapi-generator-ignore b/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/with-npm/.openapi-generator-ignore
new file mode 100644
index 000000000000..7484ee590a38
--- /dev/null
+++ b/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/with-npm/.openapi-generator-ignore
@@ -0,0 +1,23 @@
+# OpenAPI Generator Ignore
+# Generated by openapi-generator https://github.com/openapitools/openapi-generator
+
+# Use this file to prevent files from being overwritten by the generator.
+# The patterns follow closely to .gitignore or .dockerignore.
+
+# As an example, the C# client generator defines ApiClient.cs.
+# You can make changes and tell OpenAPI Generator to ignore just this file by uncommenting the following line:
+#ApiClient.cs
+
+# You can match any string of characters against a directory, file or extension with a single asterisk (*):
+#foo/*/qux
+# The above matches foo/bar/qux and foo/baz/qux, but not foo/bar/baz/qux
+
+# You can recursively match patterns against a directory, file or extension with a double asterisk (**):
+#foo/**/qux
+# This matches foo/bar/qux, foo/baz/qux, and foo/bar/baz/qux
+
+# You can also negate patterns with an exclamation (!).
+# For example, you can ignore all files in a docs folder with the file extension .md:
+#docs/*.md
+# Then explicitly reverse the ignore rule for a single file:
+#!docs/README.md
diff --git a/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/with-npm/.openapi-generator/VERSION b/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/with-npm/.openapi-generator/VERSION
new file mode 100644
index 000000000000..1c00c5181548
--- /dev/null
+++ b/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/with-npm/.openapi-generator/VERSION
@@ -0,0 +1 @@
+3.0.2-SNAPSHOT
\ No newline at end of file
diff --git a/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/with-npm/README.md b/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/with-npm/README.md
new file mode 100644
index 000000000000..6f80c2cdc80a
--- /dev/null
+++ b/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/with-npm/README.md
@@ -0,0 +1,178 @@
+## @swagger/typescript-angular-petstore@1.0.0
+
+### Building
+
+To install the required dependencies and to build the typescript sources run:
+```
+npm install
+npm run build
+```
+
+### publishing
+
+First build the package than run ```npm publish dist``` (don't forget to specify the `dist` folder!)
+
+### consuming
+
+Navigate to the folder of your consuming project and run one of next commands.
+
+_published:_
+
+```
+npm install @swagger/typescript-angular-petstore@1.0.0 --save
+```
+
+_without publishing (not recommended):_
+
+```
+npm install PATH_TO_GENERATED_PACKAGE/dist --save
+```
+
+_using `npm link`:_
+
+In PATH_TO_GENERATED_PACKAGE/dist:
+```
+npm link
+```
+
+In your project:
+```
+npm link @swagger/typescript-angular-petstore
+```
+
+__Note for Windows users:__ The Angular CLI has troubles to use linked npm packages.
+Please refer to this issue https://github.com/angular/angular-cli/issues/8284 for a solution / workaround.
+Published packages are not effected by this issue.
+
+
+#### General usage
+
+In your Angular project:
+
+
+```
+// without configuring providers
+import { ApiModule } from '@swagger/typescript-angular-petstore';
+import { HttpClientModule } from '@angular/common/http';
+
+
+@NgModule({
+    imports: [
+        ApiModule,
+        // make sure to import the HttpClientModule in the AppModule only,
+        // see https://github.com/angular/angular/issues/20575
+        HttpClientModule
+    ],
+    declarations: [ AppComponent ],
+    providers: [],
+    bootstrap: [ AppComponent ]
+})
+export class AppModule {}
+```
+
+```
+// configuring providers
+import { ApiModule, Configuration, ConfigurationParameters } from '@swagger/typescript-angular-petstore';
+
+export function apiConfigFactory (): Configuration => {
+  const params: ConfigurationParameters = {
+    // set configuration parameters here.
+  }
+  return new Configuration(params);
+}
+
+@NgModule({
+    imports: [ ApiModule.forRoot(apiConfigFactory) ],
+    declarations: [ AppComponent ],
+    providers: [],
+    bootstrap: [ AppComponent ]
+})
+export class AppModule {}
+```
+
+```
+import { DefaultApi } from '@swagger/typescript-angular-petstore';
+
+export class AppComponent {
+	 constructor(private apiGateway: DefaultApi) { }
+}
+```
+
+Note: The ApiModule is restricted to being instantiated once app wide.
+This is to ensure that all services are treated as singletons.
+
+#### Using multiple OpenAPI files / APIs / ApiModules
+In order to use multiple `ApiModules` generated from different OpenAPI files,
+you can create an alias name when importing the modules
+in order to avoid naming conflicts:
+```
+import { ApiModule } from 'my-api-path';
+import { ApiModule as OtherApiModule } from 'my-other-api-path';
+import { HttpClientModule } from '@angular/common/http';
+
+
+@NgModule({
+  imports: [
+    ApiModule,
+    OtherApiModule,
+    // make sure to import the HttpClientModule in the AppModule only,
+    // see https://github.com/angular/angular/issues/20575
+    HttpClientModule
+  ]
+})
+export class AppModule {
+
+}
+```
+
+
+### Set service base path
+If different than the generated base path, during app bootstrap, you can provide the base path to your service. 
+
+```
+import { BASE_PATH } from '@swagger/typescript-angular-petstore';
+
+bootstrap(AppComponent, [
+    { provide: BASE_PATH, useValue: 'https://your-web-service.com' },
+]);
+```
+or
+
+```
+import { BASE_PATH } from '@swagger/typescript-angular-petstore';
+
+@NgModule({
+    imports: [],
+    declarations: [ AppComponent ],
+    providers: [ provide: BASE_PATH, useValue: 'https://your-web-service.com' ],
+    bootstrap: [ AppComponent ]
+})
+export class AppModule {}
+```
+
+
+#### Using @angular/cli
+First extend your `src/environments/*.ts` files by adding the corresponding base path:
+
+```
+export const environment = {
+  production: false,
+  API_BASE_PATH: 'http://127.0.0.1:8080'
+};
+```
+
+In the src/app/app.module.ts:
+```
+import { BASE_PATH } from '@swagger/typescript-angular-petstore';
+import { environment } from '../environments/environment';
+
+@NgModule({
+  declarations: [
+    AppComponent
+  ],
+  imports: [ ],
+  providers: [{ provide: BASE_PATH, useValue: environment.API_BASE_PATH }],
+  bootstrap: [ AppComponent ]
+})
+export class AppModule { }
+```  
\ No newline at end of file
diff --git a/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/with-npm/api.module.ts b/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/with-npm/api.module.ts
new file mode 100644
index 000000000000..8487243a83b1
--- /dev/null
+++ b/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/with-npm/api.module.ts
@@ -0,0 +1,37 @@
+import { NgModule, ModuleWithProviders, SkipSelf, Optional } from '@angular/core';
+import { Configuration } from './configuration';
+import { HttpClient } from '@angular/common/http';
+
+
+import { PetService } from './api/pet.service';
+import { StoreService } from './api/store.service';
+import { UserService } from './api/user.service';
+
+@NgModule({
+  imports:      [],
+  declarations: [],
+  exports:      [],
+  providers: [
+    PetService,
+    StoreService,
+    UserService ]
+})
+export class ApiModule {
+    public static forRoot(configurationFactory: () => Configuration): ModuleWithProviders {
+        return {
+            ngModule: ApiModule,
+            providers: [ { provide: Configuration, useFactory: configurationFactory } ]
+        };
+    }
+
+    constructor( @Optional() @SkipSelf() parentModule: ApiModule,
+                 @Optional() http: HttpClient) {
+        if (parentModule) {
+            throw new Error('ApiModule is already loaded. Import in your base AppModule only.');
+        }
+        if (!http) {
+            throw new Error('You need to import the HttpClientModule in your AppModule! \n' +
+            'See also https://github.com/angular/angular/issues/20575');
+        }
+    }
+}
diff --git a/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/with-npm/api/api.ts b/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/with-npm/api/api.ts
new file mode 100644
index 000000000000..8e44b64083d5
--- /dev/null
+++ b/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/with-npm/api/api.ts
@@ -0,0 +1,7 @@
+export * from './pet.service';
+import { PetService } from './pet.service';
+export * from './store.service';
+import { StoreService } from './store.service';
+export * from './user.service';
+import { UserService } from './user.service';
+export const APIS = [PetService, StoreService, UserService];
diff --git a/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/with-npm/api/pet.service.ts b/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/with-npm/api/pet.service.ts
new file mode 100644
index 000000000000..8af05a1c5212
--- /dev/null
+++ b/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/with-npm/api/pet.service.ts
@@ -0,0 +1,520 @@
+/**
+ * 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.
+ */
+/* tslint:disable:no-unused-variable member-ordering */
+
+import { Inject, Injectable, Optional }                      from '@angular/core';
+import { HttpClient, HttpHeaders, HttpParams,
+         HttpResponse, HttpEvent }                           from '@angular/common/http';
+import { CustomHttpUrlEncodingCodec }                        from '../encoder';
+
+import { Observable }                                        from 'rxjs';
+
+import { ApiResponse } from '../model/apiResponse';
+import { Pet } from '../model/pet';
+
+import { BASE_PATH, COLLECTION_FORMATS }                     from '../variables';
+import { Configuration }                                     from '../configuration';
+
+
+@Injectable({
+  providedIn: 'root'
+})
+export class PetService {
+
+    protected basePath = 'http://petstore.swagger.io/v2';
+    public defaultHeaders = new HttpHeaders();
+    public configuration = new Configuration();
+
+    constructor(protected httpClient: HttpClient, @Optional()@Inject(BASE_PATH) basePath: string, @Optional() configuration: Configuration) {
+
+        if (configuration) {
+            this.configuration = configuration;
+            this.configuration.basePath = configuration.basePath || basePath || this.basePath;
+
+        } else {
+            this.configuration.basePath = basePath || this.basePath;
+        }
+    }
+
+    /**
+     * @param consumes string[] mime-types
+     * @return true: consumes contains 'multipart/form-data', false: otherwise
+     */
+    private canConsumeForm(consumes: string[]): boolean {
+        const form = 'multipart/form-data';
+        for (const consume of consumes) {
+            if (form === consume) {
+                return true;
+            }
+        }
+        return false;
+    }
+
+
+    /**
+     * Add a new pet to the store
+     * 
+     * @param pet Pet object that needs to be added to the store
+     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.
+     * @param reportProgress flag to report request and response progress.
+     */
+    public addPet(pet: Pet, observe?: 'body', reportProgress?: boolean): Observable;
+    public addPet(pet: Pet, observe?: 'response', reportProgress?: boolean): Observable>;
+    public addPet(pet: Pet, observe?: 'events', reportProgress?: boolean): Observable>;
+    public addPet(pet: Pet, observe: any = 'body', reportProgress: boolean = false ): Observable {
+        if (pet === null || pet === undefined) {
+            throw new Error('Required parameter pet was null or undefined when calling addPet.');
+        }
+
+        let headers = this.defaultHeaders;
+
+        // authentication (petstore_auth) required
+        if (this.configuration.accessToken) {
+            const accessToken = typeof this.configuration.accessToken === 'function'
+                ? this.configuration.accessToken()
+                : this.configuration.accessToken;
+            headers = headers.set('Authorization', 'Bearer ' + accessToken);
+        }
+
+        // to determine the Accept header
+        let httpHeaderAccepts: string[] = [
+        ];
+        const httpHeaderAcceptSelected: string | undefined = this.configuration.selectHeaderAccept(httpHeaderAccepts);
+        if (httpHeaderAcceptSelected !== undefined) {
+            headers = headers.set('Accept', httpHeaderAcceptSelected);
+        }
+
+        // to determine the Content-Type header
+        const consumes: string[] = [
+            'application/json',
+            'application/xml'
+        ];
+        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);
+        if (httpContentTypeSelected !== undefined) {
+            headers = headers.set('Content-Type', httpContentTypeSelected);
+        }
+
+        return this.httpClient.post(`${this.configuration.basePath}/pet`,
+            pet,
+            {
+                withCredentials: this.configuration.withCredentials,
+                headers: headers,
+                observe: observe,
+                reportProgress: reportProgress
+            }
+        );
+    }
+
+    /**
+     * Deletes a pet
+     * 
+     * @param petId Pet id to delete
+     * @param apiKey 
+     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.
+     * @param reportProgress flag to report request and response progress.
+     */
+    public deletePet(petId: number, apiKey?: string, observe?: 'body', reportProgress?: boolean): Observable;
+    public deletePet(petId: number, apiKey?: string, observe?: 'response', reportProgress?: boolean): Observable>;
+    public deletePet(petId: number, apiKey?: string, observe?: 'events', reportProgress?: boolean): Observable>;
+    public deletePet(petId: number, apiKey?: string, observe: any = 'body', reportProgress: boolean = false ): Observable {
+        if (petId === null || petId === undefined) {
+            throw new Error('Required parameter petId was null or undefined when calling deletePet.');
+        }
+
+        let headers = this.defaultHeaders;
+        if (apiKey !== undefined && apiKey !== null) {
+            headers = headers.set('api_key', String(apiKey));
+        }
+
+        // authentication (petstore_auth) required
+        if (this.configuration.accessToken) {
+            const accessToken = typeof this.configuration.accessToken === 'function'
+                ? this.configuration.accessToken()
+                : this.configuration.accessToken;
+            headers = headers.set('Authorization', 'Bearer ' + accessToken);
+        }
+
+        // to determine the Accept header
+        let httpHeaderAccepts: string[] = [
+        ];
+        const httpHeaderAcceptSelected: string | undefined = this.configuration.selectHeaderAccept(httpHeaderAccepts);
+        if (httpHeaderAcceptSelected !== undefined) {
+            headers = headers.set('Accept', httpHeaderAcceptSelected);
+        }
+
+        // to determine the Content-Type header
+        const consumes: string[] = [
+        ];
+
+        return this.httpClient.delete(`${this.configuration.basePath}/pet/${encodeURIComponent(String(petId))}`,
+            {
+                withCredentials: this.configuration.withCredentials,
+                headers: headers,
+                observe: observe,
+                reportProgress: reportProgress
+            }
+        );
+    }
+
+    /**
+     * Finds Pets by status
+     * Multiple status values can be provided with comma separated strings
+     * @param status Status values that need to be considered for filter
+     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.
+     * @param reportProgress flag to report request and response progress.
+     */
+    public findPetsByStatus(status: Array<'available' | 'pending' | 'sold'>, observe?: 'body', reportProgress?: boolean): Observable>;
+    public findPetsByStatus(status: Array<'available' | 'pending' | 'sold'>, observe?: 'response', reportProgress?: boolean): Observable>>;
+    public findPetsByStatus(status: Array<'available' | 'pending' | 'sold'>, observe?: 'events', reportProgress?: boolean): Observable>>;
+    public findPetsByStatus(status: Array<'available' | 'pending' | 'sold'>, observe: any = 'body', reportProgress: boolean = false ): Observable {
+        if (status === null || status === undefined) {
+            throw new Error('Required parameter status was null or undefined when calling findPetsByStatus.');
+        }
+
+        let queryParameters = new HttpParams({encoder: new CustomHttpUrlEncodingCodec()});
+        if (status) {
+            queryParameters = queryParameters.set('status', status.join(COLLECTION_FORMATS['csv']));
+        }
+
+        let headers = this.defaultHeaders;
+
+        // authentication (petstore_auth) required
+        if (this.configuration.accessToken) {
+            const accessToken = typeof this.configuration.accessToken === 'function'
+                ? this.configuration.accessToken()
+                : this.configuration.accessToken;
+            headers = headers.set('Authorization', 'Bearer ' + accessToken);
+        }
+
+        // to determine the Accept header
+        let httpHeaderAccepts: string[] = [
+            'application/xml',
+            'application/json'
+        ];
+        const httpHeaderAcceptSelected: string | undefined = this.configuration.selectHeaderAccept(httpHeaderAccepts);
+        if (httpHeaderAcceptSelected !== undefined) {
+            headers = headers.set('Accept', httpHeaderAcceptSelected);
+        }
+
+        // to determine the Content-Type header
+        const consumes: string[] = [
+        ];
+
+        return this.httpClient.get>(`${this.configuration.basePath}/pet/findByStatus`,
+            {
+                params: queryParameters,
+                withCredentials: this.configuration.withCredentials,
+                headers: headers,
+                observe: observe,
+                reportProgress: reportProgress
+            }
+        );
+    }
+
+    /**
+     * 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 observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.
+     * @param reportProgress flag to report request and response progress.
+     */
+    public findPetsByTags(tags: Array, observe?: 'body', reportProgress?: boolean): Observable>;
+    public findPetsByTags(tags: Array, observe?: 'response', reportProgress?: boolean): Observable>>;
+    public findPetsByTags(tags: Array, observe?: 'events', reportProgress?: boolean): Observable>>;
+    public findPetsByTags(tags: Array, observe: any = 'body', reportProgress: boolean = false ): Observable {
+        if (tags === null || tags === undefined) {
+            throw new Error('Required parameter tags was null or undefined when calling findPetsByTags.');
+        }
+
+        let queryParameters = new HttpParams({encoder: new CustomHttpUrlEncodingCodec()});
+        if (tags) {
+            queryParameters = queryParameters.set('tags', tags.join(COLLECTION_FORMATS['csv']));
+        }
+
+        let headers = this.defaultHeaders;
+
+        // authentication (petstore_auth) required
+        if (this.configuration.accessToken) {
+            const accessToken = typeof this.configuration.accessToken === 'function'
+                ? this.configuration.accessToken()
+                : this.configuration.accessToken;
+            headers = headers.set('Authorization', 'Bearer ' + accessToken);
+        }
+
+        // to determine the Accept header
+        let httpHeaderAccepts: string[] = [
+            'application/xml',
+            'application/json'
+        ];
+        const httpHeaderAcceptSelected: string | undefined = this.configuration.selectHeaderAccept(httpHeaderAccepts);
+        if (httpHeaderAcceptSelected !== undefined) {
+            headers = headers.set('Accept', httpHeaderAcceptSelected);
+        }
+
+        // to determine the Content-Type header
+        const consumes: string[] = [
+        ];
+
+        return this.httpClient.get>(`${this.configuration.basePath}/pet/findByTags`,
+            {
+                params: queryParameters,
+                withCredentials: this.configuration.withCredentials,
+                headers: headers,
+                observe: observe,
+                reportProgress: reportProgress
+            }
+        );
+    }
+
+    /**
+     * Find pet by ID
+     * Returns a single pet
+     * @param petId ID of pet to return
+     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.
+     * @param reportProgress flag to report request and response progress.
+     */
+    public getPetById(petId: number, observe?: 'body', reportProgress?: boolean): Observable;
+    public getPetById(petId: number, observe?: 'response', reportProgress?: boolean): Observable>;
+    public getPetById(petId: number, observe?: 'events', reportProgress?: boolean): Observable>;
+    public getPetById(petId: number, observe: any = 'body', reportProgress: boolean = false ): Observable {
+        if (petId === null || petId === undefined) {
+            throw new Error('Required parameter petId was null or undefined when calling getPetById.');
+        }
+
+        let headers = this.defaultHeaders;
+
+        // authentication (api_key) required
+        if (this.configuration.apiKeys["api_key"]) {
+            headers = headers.set('api_key', this.configuration.apiKeys["api_key"]);
+        }
+
+        // to determine the Accept header
+        let httpHeaderAccepts: string[] = [
+            'application/xml',
+            'application/json'
+        ];
+        const httpHeaderAcceptSelected: string | undefined = this.configuration.selectHeaderAccept(httpHeaderAccepts);
+        if (httpHeaderAcceptSelected !== undefined) {
+            headers = headers.set('Accept', httpHeaderAcceptSelected);
+        }
+
+        // to determine the Content-Type header
+        const consumes: string[] = [
+        ];
+
+        return this.httpClient.get(`${this.configuration.basePath}/pet/${encodeURIComponent(String(petId))}`,
+            {
+                withCredentials: this.configuration.withCredentials,
+                headers: headers,
+                observe: observe,
+                reportProgress: reportProgress
+            }
+        );
+    }
+
+    /**
+     * Update an existing pet
+     * 
+     * @param pet Pet object that needs to be added to the store
+     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.
+     * @param reportProgress flag to report request and response progress.
+     */
+    public updatePet(pet: Pet, observe?: 'body', reportProgress?: boolean): Observable;
+    public updatePet(pet: Pet, observe?: 'response', reportProgress?: boolean): Observable>;
+    public updatePet(pet: Pet, observe?: 'events', reportProgress?: boolean): Observable>;
+    public updatePet(pet: Pet, observe: any = 'body', reportProgress: boolean = false ): Observable {
+        if (pet === null || pet === undefined) {
+            throw new Error('Required parameter pet was null or undefined when calling updatePet.');
+        }
+
+        let headers = this.defaultHeaders;
+
+        // authentication (petstore_auth) required
+        if (this.configuration.accessToken) {
+            const accessToken = typeof this.configuration.accessToken === 'function'
+                ? this.configuration.accessToken()
+                : this.configuration.accessToken;
+            headers = headers.set('Authorization', 'Bearer ' + accessToken);
+        }
+
+        // to determine the Accept header
+        let httpHeaderAccepts: string[] = [
+        ];
+        const httpHeaderAcceptSelected: string | undefined = this.configuration.selectHeaderAccept(httpHeaderAccepts);
+        if (httpHeaderAcceptSelected !== undefined) {
+            headers = headers.set('Accept', httpHeaderAcceptSelected);
+        }
+
+        // to determine the Content-Type header
+        const consumes: string[] = [
+            'application/json',
+            'application/xml'
+        ];
+        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);
+        if (httpContentTypeSelected !== undefined) {
+            headers = headers.set('Content-Type', httpContentTypeSelected);
+        }
+
+        return this.httpClient.put(`${this.configuration.basePath}/pet`,
+            pet,
+            {
+                withCredentials: this.configuration.withCredentials,
+                headers: headers,
+                observe: observe,
+                reportProgress: reportProgress
+            }
+        );
+    }
+
+    /**
+     * Updates a pet in the store with form data
+     * 
+     * @param petId ID of pet that needs to be updated
+     * @param name Updated name of the pet
+     * @param status Updated status of the pet
+     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.
+     * @param reportProgress flag to report request and response progress.
+     */
+    public updatePetWithForm(petId: number, name?: string, status?: string, observe?: 'body', reportProgress?: boolean): Observable;
+    public updatePetWithForm(petId: number, name?: string, status?: string, observe?: 'response', reportProgress?: boolean): Observable>;
+    public updatePetWithForm(petId: number, name?: string, status?: string, observe?: 'events', reportProgress?: boolean): Observable>;
+    public updatePetWithForm(petId: number, name?: string, status?: string, observe: any = 'body', reportProgress: boolean = false ): Observable {
+        if (petId === null || petId === undefined) {
+            throw new Error('Required parameter petId was null or undefined when calling updatePetWithForm.');
+        }
+
+        let headers = this.defaultHeaders;
+
+        // authentication (petstore_auth) required
+        if (this.configuration.accessToken) {
+            const accessToken = typeof this.configuration.accessToken === 'function'
+                ? this.configuration.accessToken()
+                : this.configuration.accessToken;
+            headers = headers.set('Authorization', 'Bearer ' + accessToken);
+        }
+
+        // to determine the Accept header
+        let httpHeaderAccepts: string[] = [
+        ];
+        const httpHeaderAcceptSelected: string | undefined = this.configuration.selectHeaderAccept(httpHeaderAccepts);
+        if (httpHeaderAcceptSelected !== undefined) {
+            headers = headers.set('Accept', httpHeaderAcceptSelected);
+        }
+
+        // to determine the Content-Type header
+        const consumes: string[] = [
+            'application/x-www-form-urlencoded'
+        ];
+
+        const canConsumeForm = this.canConsumeForm(consumes);
+
+        let formParams: { append(param: string, value: any): void; };
+        let useForm = false;
+        let convertFormParamsToString = false;
+        if (useForm) {
+            formParams = new FormData();
+        } else {
+            formParams = new HttpParams({encoder: new CustomHttpUrlEncodingCodec()});
+        }
+
+        if (name !== undefined) {
+            formParams = formParams.append('name', name) || formParams;
+        }
+        if (status !== undefined) {
+            formParams = formParams.append('status', status) || formParams;
+        }
+
+        return this.httpClient.post(`${this.configuration.basePath}/pet/${encodeURIComponent(String(petId))}`,
+            convertFormParamsToString ? formParams.toString() : formParams,
+            {
+                withCredentials: this.configuration.withCredentials,
+                headers: headers,
+                observe: observe,
+                reportProgress: reportProgress
+            }
+        );
+    }
+
+    /**
+     * uploads an image
+     * 
+     * @param petId ID of pet to update
+     * @param additionalMetadata Additional data to pass to server
+     * @param file file to upload
+     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.
+     * @param reportProgress flag to report request and response progress.
+     */
+    public uploadFile(petId: number, additionalMetadata?: string, file?: Blob, observe?: 'body', reportProgress?: boolean): Observable;
+    public uploadFile(petId: number, additionalMetadata?: string, file?: Blob, observe?: 'response', reportProgress?: boolean): Observable>;
+    public uploadFile(petId: number, additionalMetadata?: string, file?: Blob, observe?: 'events', reportProgress?: boolean): Observable>;
+    public uploadFile(petId: number, additionalMetadata?: string, file?: Blob, observe: any = 'body', reportProgress: boolean = false ): Observable {
+        if (petId === null || petId === undefined) {
+            throw new Error('Required parameter petId was null or undefined when calling uploadFile.');
+        }
+
+        let headers = this.defaultHeaders;
+
+        // authentication (petstore_auth) required
+        if (this.configuration.accessToken) {
+            const accessToken = typeof this.configuration.accessToken === 'function'
+                ? this.configuration.accessToken()
+                : this.configuration.accessToken;
+            headers = headers.set('Authorization', 'Bearer ' + accessToken);
+        }
+
+        // to determine the Accept header
+        let httpHeaderAccepts: string[] = [
+            'application/json'
+        ];
+        const httpHeaderAcceptSelected: string | undefined = this.configuration.selectHeaderAccept(httpHeaderAccepts);
+        if (httpHeaderAcceptSelected !== undefined) {
+            headers = headers.set('Accept', httpHeaderAcceptSelected);
+        }
+
+        // to determine the Content-Type header
+        const consumes: string[] = [
+            'multipart/form-data'
+        ];
+
+        const canConsumeForm = this.canConsumeForm(consumes);
+
+        let formParams: { append(param: string, value: any): void; };
+        let useForm = false;
+        let convertFormParamsToString = false;
+        // use FormData to transmit files using content-type "multipart/form-data"
+        // see https://stackoverflow.com/questions/4007969/application-x-www-form-urlencoded-or-multipart-form-data
+        useForm = canConsumeForm;
+        if (useForm) {
+            formParams = new FormData();
+        } else {
+            formParams = new HttpParams({encoder: new CustomHttpUrlEncodingCodec()});
+        }
+
+        if (additionalMetadata !== undefined) {
+            formParams = formParams.append('additionalMetadata', additionalMetadata) || formParams;
+        }
+        if (file !== undefined) {
+            formParams = formParams.append('file', file) || formParams;
+        }
+
+        return this.httpClient.post(`${this.configuration.basePath}/pet/${encodeURIComponent(String(petId))}/uploadImage`,
+            convertFormParamsToString ? formParams.toString() : formParams,
+            {
+                withCredentials: this.configuration.withCredentials,
+                headers: headers,
+                observe: observe,
+                reportProgress: reportProgress
+            }
+        );
+    }
+
+}
diff --git a/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/with-npm/api/store.service.ts b/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/with-npm/api/store.service.ts
new file mode 100644
index 000000000000..cae817406d76
--- /dev/null
+++ b/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/with-npm/api/store.service.ts
@@ -0,0 +1,229 @@
+/**
+ * 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.
+ */
+/* tslint:disable:no-unused-variable member-ordering */
+
+import { Inject, Injectable, Optional }                      from '@angular/core';
+import { HttpClient, HttpHeaders, HttpParams,
+         HttpResponse, HttpEvent }                           from '@angular/common/http';
+import { CustomHttpUrlEncodingCodec }                        from '../encoder';
+
+import { Observable }                                        from 'rxjs';
+
+import { Order } from '../model/order';
+
+import { BASE_PATH, COLLECTION_FORMATS }                     from '../variables';
+import { Configuration }                                     from '../configuration';
+
+
+@Injectable({
+  providedIn: 'root'
+})
+export class StoreService {
+
+    protected basePath = 'http://petstore.swagger.io/v2';
+    public defaultHeaders = new HttpHeaders();
+    public configuration = new Configuration();
+
+    constructor(protected httpClient: HttpClient, @Optional()@Inject(BASE_PATH) basePath: string, @Optional() configuration: Configuration) {
+
+        if (configuration) {
+            this.configuration = configuration;
+            this.configuration.basePath = configuration.basePath || basePath || this.basePath;
+
+        } else {
+            this.configuration.basePath = basePath || this.basePath;
+        }
+    }
+
+    /**
+     * @param consumes string[] mime-types
+     * @return true: consumes contains 'multipart/form-data', false: otherwise
+     */
+    private canConsumeForm(consumes: string[]): boolean {
+        const form = 'multipart/form-data';
+        for (const consume of consumes) {
+            if (form === consume) {
+                return true;
+            }
+        }
+        return false;
+    }
+
+
+    /**
+     * Delete purchase order by ID
+     * For valid response try integer IDs with value < 1000. Anything above 1000 or nonintegers will generate API errors
+     * @param orderId ID of the order that needs to be deleted
+     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.
+     * @param reportProgress flag to report request and response progress.
+     */
+    public deleteOrder(orderId: string, observe?: 'body', reportProgress?: boolean): Observable;
+    public deleteOrder(orderId: string, observe?: 'response', reportProgress?: boolean): Observable>;
+    public deleteOrder(orderId: string, observe?: 'events', reportProgress?: boolean): Observable>;
+    public deleteOrder(orderId: string, observe: any = 'body', reportProgress: boolean = false ): Observable {
+        if (orderId === null || orderId === undefined) {
+            throw new Error('Required parameter orderId was null or undefined when calling deleteOrder.');
+        }
+
+        let headers = this.defaultHeaders;
+
+        // to determine the Accept header
+        let httpHeaderAccepts: string[] = [
+        ];
+        const httpHeaderAcceptSelected: string | undefined = this.configuration.selectHeaderAccept(httpHeaderAccepts);
+        if (httpHeaderAcceptSelected !== undefined) {
+            headers = headers.set('Accept', httpHeaderAcceptSelected);
+        }
+
+        // to determine the Content-Type header
+        const consumes: string[] = [
+        ];
+
+        return this.httpClient.delete(`${this.configuration.basePath}/store/order/${encodeURIComponent(String(orderId))}`,
+            {
+                withCredentials: this.configuration.withCredentials,
+                headers: headers,
+                observe: observe,
+                reportProgress: reportProgress
+            }
+        );
+    }
+
+    /**
+     * Returns pet inventories by status
+     * Returns a map of status codes to quantities
+     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.
+     * @param reportProgress flag to report request and response progress.
+     */
+    public getInventory(observe?: 'body', reportProgress?: boolean): Observable<{ [key: string]: number; }>;
+    public getInventory(observe?: 'response', reportProgress?: boolean): Observable>;
+    public getInventory(observe?: 'events', reportProgress?: boolean): Observable>;
+    public getInventory(observe: any = 'body', reportProgress: boolean = false ): Observable {
+
+        let headers = this.defaultHeaders;
+
+        // authentication (api_key) required
+        if (this.configuration.apiKeys["api_key"]) {
+            headers = headers.set('api_key', this.configuration.apiKeys["api_key"]);
+        }
+
+        // to determine the Accept header
+        let httpHeaderAccepts: string[] = [
+            'application/json'
+        ];
+        const httpHeaderAcceptSelected: string | undefined = this.configuration.selectHeaderAccept(httpHeaderAccepts);
+        if (httpHeaderAcceptSelected !== undefined) {
+            headers = headers.set('Accept', httpHeaderAcceptSelected);
+        }
+
+        // to determine the Content-Type header
+        const consumes: string[] = [
+        ];
+
+        return this.httpClient.get<{ [key: string]: number; }>(`${this.configuration.basePath}/store/inventory`,
+            {
+                withCredentials: this.configuration.withCredentials,
+                headers: headers,
+                observe: observe,
+                reportProgress: reportProgress
+            }
+        );
+    }
+
+    /**
+     * Find purchase order by ID
+     * For valid response try integer IDs with value <= 5 or > 10. Other values will generated exceptions
+     * @param orderId ID of pet that needs to be fetched
+     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.
+     * @param reportProgress flag to report request and response progress.
+     */
+    public getOrderById(orderId: number, observe?: 'body', reportProgress?: boolean): Observable;
+    public getOrderById(orderId: number, observe?: 'response', reportProgress?: boolean): Observable>;
+    public getOrderById(orderId: number, observe?: 'events', reportProgress?: boolean): Observable>;
+    public getOrderById(orderId: number, observe: any = 'body', reportProgress: boolean = false ): Observable {
+        if (orderId === null || orderId === undefined) {
+            throw new Error('Required parameter orderId was null or undefined when calling getOrderById.');
+        }
+
+        let headers = this.defaultHeaders;
+
+        // to determine the Accept header
+        let httpHeaderAccepts: string[] = [
+            'application/xml',
+            'application/json'
+        ];
+        const httpHeaderAcceptSelected: string | undefined = this.configuration.selectHeaderAccept(httpHeaderAccepts);
+        if (httpHeaderAcceptSelected !== undefined) {
+            headers = headers.set('Accept', httpHeaderAcceptSelected);
+        }
+
+        // to determine the Content-Type header
+        const consumes: string[] = [
+        ];
+
+        return this.httpClient.get(`${this.configuration.basePath}/store/order/${encodeURIComponent(String(orderId))}`,
+            {
+                withCredentials: this.configuration.withCredentials,
+                headers: headers,
+                observe: observe,
+                reportProgress: reportProgress
+            }
+        );
+    }
+
+    /**
+     * Place an order for a pet
+     * 
+     * @param order order placed for purchasing the pet
+     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.
+     * @param reportProgress flag to report request and response progress.
+     */
+    public placeOrder(order: Order, observe?: 'body', reportProgress?: boolean): Observable;
+    public placeOrder(order: Order, observe?: 'response', reportProgress?: boolean): Observable>;
+    public placeOrder(order: Order, observe?: 'events', reportProgress?: boolean): Observable>;
+    public placeOrder(order: Order, observe: any = 'body', reportProgress: boolean = false ): Observable {
+        if (order === null || order === undefined) {
+            throw new Error('Required parameter order was null or undefined when calling placeOrder.');
+        }
+
+        let headers = this.defaultHeaders;
+
+        // to determine the Accept header
+        let httpHeaderAccepts: string[] = [
+            'application/xml',
+            'application/json'
+        ];
+        const httpHeaderAcceptSelected: string | undefined = this.configuration.selectHeaderAccept(httpHeaderAccepts);
+        if (httpHeaderAcceptSelected !== undefined) {
+            headers = headers.set('Accept', httpHeaderAcceptSelected);
+        }
+
+        // to determine the Content-Type header
+        const consumes: string[] = [
+        ];
+        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);
+        if (httpContentTypeSelected !== undefined) {
+            headers = headers.set('Content-Type', httpContentTypeSelected);
+        }
+
+        return this.httpClient.post(`${this.configuration.basePath}/store/order`,
+            order,
+            {
+                withCredentials: this.configuration.withCredentials,
+                headers: headers,
+                observe: observe,
+                reportProgress: reportProgress
+            }
+        );
+    }
+
+}
diff --git a/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/with-npm/api/user.service.ts b/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/with-npm/api/user.service.ts
new file mode 100644
index 000000000000..d693da51a154
--- /dev/null
+++ b/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/with-npm/api/user.service.ts
@@ -0,0 +1,411 @@
+/**
+ * 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.
+ */
+/* tslint:disable:no-unused-variable member-ordering */
+
+import { Inject, Injectable, Optional }                      from '@angular/core';
+import { HttpClient, HttpHeaders, HttpParams,
+         HttpResponse, HttpEvent }                           from '@angular/common/http';
+import { CustomHttpUrlEncodingCodec }                        from '../encoder';
+
+import { Observable }                                        from 'rxjs';
+
+import { User } from '../model/user';
+
+import { BASE_PATH, COLLECTION_FORMATS }                     from '../variables';
+import { Configuration }                                     from '../configuration';
+
+
+@Injectable({
+  providedIn: 'root'
+})
+export class UserService {
+
+    protected basePath = 'http://petstore.swagger.io/v2';
+    public defaultHeaders = new HttpHeaders();
+    public configuration = new Configuration();
+
+    constructor(protected httpClient: HttpClient, @Optional()@Inject(BASE_PATH) basePath: string, @Optional() configuration: Configuration) {
+
+        if (configuration) {
+            this.configuration = configuration;
+            this.configuration.basePath = configuration.basePath || basePath || this.basePath;
+
+        } else {
+            this.configuration.basePath = basePath || this.basePath;
+        }
+    }
+
+    /**
+     * @param consumes string[] mime-types
+     * @return true: consumes contains 'multipart/form-data', false: otherwise
+     */
+    private canConsumeForm(consumes: string[]): boolean {
+        const form = 'multipart/form-data';
+        for (const consume of consumes) {
+            if (form === consume) {
+                return true;
+            }
+        }
+        return false;
+    }
+
+
+    /**
+     * Create user
+     * This can only be done by the logged in user.
+     * @param user Created user object
+     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.
+     * @param reportProgress flag to report request and response progress.
+     */
+    public createUser(user: User, observe?: 'body', reportProgress?: boolean): Observable;
+    public createUser(user: User, observe?: 'response', reportProgress?: boolean): Observable>;
+    public createUser(user: User, observe?: 'events', reportProgress?: boolean): Observable>;
+    public createUser(user: User, observe: any = 'body', reportProgress: boolean = false ): Observable {
+        if (user === null || user === undefined) {
+            throw new Error('Required parameter user was null or undefined when calling createUser.');
+        }
+
+        let headers = this.defaultHeaders;
+
+        // to determine the Accept header
+        let httpHeaderAccepts: string[] = [
+        ];
+        const httpHeaderAcceptSelected: string | undefined = this.configuration.selectHeaderAccept(httpHeaderAccepts);
+        if (httpHeaderAcceptSelected !== undefined) {
+            headers = headers.set('Accept', httpHeaderAcceptSelected);
+        }
+
+        // to determine the Content-Type header
+        const consumes: string[] = [
+        ];
+        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);
+        if (httpContentTypeSelected !== undefined) {
+            headers = headers.set('Content-Type', httpContentTypeSelected);
+        }
+
+        return this.httpClient.post(`${this.configuration.basePath}/user`,
+            user,
+            {
+                withCredentials: this.configuration.withCredentials,
+                headers: headers,
+                observe: observe,
+                reportProgress: reportProgress
+            }
+        );
+    }
+
+    /**
+     * Creates list of users with given input array
+     * 
+     * @param user List of user object
+     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.
+     * @param reportProgress flag to report request and response progress.
+     */
+    public createUsersWithArrayInput(user: Array, observe?: 'body', reportProgress?: boolean): Observable;
+    public createUsersWithArrayInput(user: Array, observe?: 'response', reportProgress?: boolean): Observable>;
+    public createUsersWithArrayInput(user: Array, observe?: 'events', reportProgress?: boolean): Observable>;
+    public createUsersWithArrayInput(user: Array, observe: any = 'body', reportProgress: boolean = false ): Observable {
+        if (user === null || user === undefined) {
+            throw new Error('Required parameter user was null or undefined when calling createUsersWithArrayInput.');
+        }
+
+        let headers = this.defaultHeaders;
+
+        // to determine the Accept header
+        let httpHeaderAccepts: string[] = [
+        ];
+        const httpHeaderAcceptSelected: string | undefined = this.configuration.selectHeaderAccept(httpHeaderAccepts);
+        if (httpHeaderAcceptSelected !== undefined) {
+            headers = headers.set('Accept', httpHeaderAcceptSelected);
+        }
+
+        // to determine the Content-Type header
+        const consumes: string[] = [
+        ];
+        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);
+        if (httpContentTypeSelected !== undefined) {
+            headers = headers.set('Content-Type', httpContentTypeSelected);
+        }
+
+        return this.httpClient.post(`${this.configuration.basePath}/user/createWithArray`,
+            user,
+            {
+                withCredentials: this.configuration.withCredentials,
+                headers: headers,
+                observe: observe,
+                reportProgress: reportProgress
+            }
+        );
+    }
+
+    /**
+     * Creates list of users with given input array
+     * 
+     * @param user List of user object
+     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.
+     * @param reportProgress flag to report request and response progress.
+     */
+    public createUsersWithListInput(user: Array, observe?: 'body', reportProgress?: boolean): Observable;
+    public createUsersWithListInput(user: Array, observe?: 'response', reportProgress?: boolean): Observable>;
+    public createUsersWithListInput(user: Array, observe?: 'events', reportProgress?: boolean): Observable>;
+    public createUsersWithListInput(user: Array, observe: any = 'body', reportProgress: boolean = false ): Observable {
+        if (user === null || user === undefined) {
+            throw new Error('Required parameter user was null or undefined when calling createUsersWithListInput.');
+        }
+
+        let headers = this.defaultHeaders;
+
+        // to determine the Accept header
+        let httpHeaderAccepts: string[] = [
+        ];
+        const httpHeaderAcceptSelected: string | undefined = this.configuration.selectHeaderAccept(httpHeaderAccepts);
+        if (httpHeaderAcceptSelected !== undefined) {
+            headers = headers.set('Accept', httpHeaderAcceptSelected);
+        }
+
+        // to determine the Content-Type header
+        const consumes: string[] = [
+        ];
+        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);
+        if (httpContentTypeSelected !== undefined) {
+            headers = headers.set('Content-Type', httpContentTypeSelected);
+        }
+
+        return this.httpClient.post(`${this.configuration.basePath}/user/createWithList`,
+            user,
+            {
+                withCredentials: this.configuration.withCredentials,
+                headers: headers,
+                observe: observe,
+                reportProgress: reportProgress
+            }
+        );
+    }
+
+    /**
+     * Delete user
+     * This can only be done by the logged in user.
+     * @param username The name that needs to be deleted
+     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.
+     * @param reportProgress flag to report request and response progress.
+     */
+    public deleteUser(username: string, observe?: 'body', reportProgress?: boolean): Observable;
+    public deleteUser(username: string, observe?: 'response', reportProgress?: boolean): Observable>;
+    public deleteUser(username: string, observe?: 'events', reportProgress?: boolean): Observable>;
+    public deleteUser(username: string, observe: any = 'body', reportProgress: boolean = false ): Observable {
+        if (username === null || username === undefined) {
+            throw new Error('Required parameter username was null or undefined when calling deleteUser.');
+        }
+
+        let headers = this.defaultHeaders;
+
+        // to determine the Accept header
+        let httpHeaderAccepts: string[] = [
+        ];
+        const httpHeaderAcceptSelected: string | undefined = this.configuration.selectHeaderAccept(httpHeaderAccepts);
+        if (httpHeaderAcceptSelected !== undefined) {
+            headers = headers.set('Accept', httpHeaderAcceptSelected);
+        }
+
+        // to determine the Content-Type header
+        const consumes: string[] = [
+        ];
+
+        return this.httpClient.delete(`${this.configuration.basePath}/user/${encodeURIComponent(String(username))}`,
+            {
+                withCredentials: this.configuration.withCredentials,
+                headers: headers,
+                observe: observe,
+                reportProgress: reportProgress
+            }
+        );
+    }
+
+    /**
+     * Get user by user name
+     * 
+     * @param username The name that needs to be fetched. Use user1 for testing.
+     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.
+     * @param reportProgress flag to report request and response progress.
+     */
+    public getUserByName(username: string, observe?: 'body', reportProgress?: boolean): Observable;
+    public getUserByName(username: string, observe?: 'response', reportProgress?: boolean): Observable>;
+    public getUserByName(username: string, observe?: 'events', reportProgress?: boolean): Observable>;
+    public getUserByName(username: string, observe: any = 'body', reportProgress: boolean = false ): Observable {
+        if (username === null || username === undefined) {
+            throw new Error('Required parameter username was null or undefined when calling getUserByName.');
+        }
+
+        let headers = this.defaultHeaders;
+
+        // to determine the Accept header
+        let httpHeaderAccepts: string[] = [
+            'application/xml',
+            'application/json'
+        ];
+        const httpHeaderAcceptSelected: string | undefined = this.configuration.selectHeaderAccept(httpHeaderAccepts);
+        if (httpHeaderAcceptSelected !== undefined) {
+            headers = headers.set('Accept', httpHeaderAcceptSelected);
+        }
+
+        // to determine the Content-Type header
+        const consumes: string[] = [
+        ];
+
+        return this.httpClient.get(`${this.configuration.basePath}/user/${encodeURIComponent(String(username))}`,
+            {
+                withCredentials: this.configuration.withCredentials,
+                headers: headers,
+                observe: observe,
+                reportProgress: reportProgress
+            }
+        );
+    }
+
+    /**
+     * Logs user into the system
+     * 
+     * @param username The user name for login
+     * @param password The password for login in clear text
+     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.
+     * @param reportProgress flag to report request and response progress.
+     */
+    public loginUser(username: string, password: string, observe?: 'body', reportProgress?: boolean): Observable;
+    public loginUser(username: string, password: string, observe?: 'response', reportProgress?: boolean): Observable>;
+    public loginUser(username: string, password: string, observe?: 'events', reportProgress?: boolean): Observable>;
+    public loginUser(username: string, password: string, observe: any = 'body', reportProgress: boolean = false ): Observable {
+        if (username === null || username === undefined) {
+            throw new Error('Required parameter username was null or undefined when calling loginUser.');
+        }
+        if (password === null || password === undefined) {
+            throw new Error('Required parameter password was null or undefined when calling loginUser.');
+        }
+
+        let queryParameters = new HttpParams({encoder: new CustomHttpUrlEncodingCodec()});
+        if (username !== undefined && username !== null) {
+            queryParameters = queryParameters.set('username', username);
+        }
+        if (password !== undefined && password !== null) {
+            queryParameters = queryParameters.set('password', password);
+        }
+
+        let headers = this.defaultHeaders;
+
+        // to determine the Accept header
+        let httpHeaderAccepts: string[] = [
+            'application/xml',
+            'application/json'
+        ];
+        const httpHeaderAcceptSelected: string | undefined = this.configuration.selectHeaderAccept(httpHeaderAccepts);
+        if (httpHeaderAcceptSelected !== undefined) {
+            headers = headers.set('Accept', httpHeaderAcceptSelected);
+        }
+
+        // to determine the Content-Type header
+        const consumes: string[] = [
+        ];
+
+        return this.httpClient.get(`${this.configuration.basePath}/user/login`,
+            {
+                params: queryParameters,
+                withCredentials: this.configuration.withCredentials,
+                headers: headers,
+                observe: observe,
+                reportProgress: reportProgress
+            }
+        );
+    }
+
+    /**
+     * Logs out current logged in user session
+     * 
+     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.
+     * @param reportProgress flag to report request and response progress.
+     */
+    public logoutUser(observe?: 'body', reportProgress?: boolean): Observable;
+    public logoutUser(observe?: 'response', reportProgress?: boolean): Observable>;
+    public logoutUser(observe?: 'events', reportProgress?: boolean): Observable>;
+    public logoutUser(observe: any = 'body', reportProgress: boolean = false ): Observable {
+
+        let headers = this.defaultHeaders;
+
+        // to determine the Accept header
+        let httpHeaderAccepts: string[] = [
+        ];
+        const httpHeaderAcceptSelected: string | undefined = this.configuration.selectHeaderAccept(httpHeaderAccepts);
+        if (httpHeaderAcceptSelected !== undefined) {
+            headers = headers.set('Accept', httpHeaderAcceptSelected);
+        }
+
+        // to determine the Content-Type header
+        const consumes: string[] = [
+        ];
+
+        return this.httpClient.get(`${this.configuration.basePath}/user/logout`,
+            {
+                withCredentials: this.configuration.withCredentials,
+                headers: headers,
+                observe: observe,
+                reportProgress: reportProgress
+            }
+        );
+    }
+
+    /**
+     * 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 observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.
+     * @param reportProgress flag to report request and response progress.
+     */
+    public updateUser(username: string, user: User, observe?: 'body', reportProgress?: boolean): Observable;
+    public updateUser(username: string, user: User, observe?: 'response', reportProgress?: boolean): Observable>;
+    public updateUser(username: string, user: User, observe?: 'events', reportProgress?: boolean): Observable>;
+    public updateUser(username: string, user: User, observe: any = 'body', reportProgress: boolean = false ): Observable {
+        if (username === null || username === undefined) {
+            throw new Error('Required parameter username was null or undefined when calling updateUser.');
+        }
+        if (user === null || user === undefined) {
+            throw new Error('Required parameter user was null or undefined when calling updateUser.');
+        }
+
+        let headers = this.defaultHeaders;
+
+        // to determine the Accept header
+        let httpHeaderAccepts: string[] = [
+        ];
+        const httpHeaderAcceptSelected: string | undefined = this.configuration.selectHeaderAccept(httpHeaderAccepts);
+        if (httpHeaderAcceptSelected !== undefined) {
+            headers = headers.set('Accept', httpHeaderAcceptSelected);
+        }
+
+        // to determine the Content-Type header
+        const consumes: string[] = [
+        ];
+        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);
+        if (httpContentTypeSelected !== undefined) {
+            headers = headers.set('Content-Type', httpContentTypeSelected);
+        }
+
+        return this.httpClient.put(`${this.configuration.basePath}/user/${encodeURIComponent(String(username))}`,
+            user,
+            {
+                withCredentials: this.configuration.withCredentials,
+                headers: headers,
+                observe: observe,
+                reportProgress: reportProgress
+            }
+        );
+    }
+
+}
diff --git a/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/with-npm/configuration.ts b/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/with-npm/configuration.ts
new file mode 100644
index 000000000000..5dac1323937e
--- /dev/null
+++ b/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/with-npm/configuration.ts
@@ -0,0 +1,79 @@
+export interface ConfigurationParameters {
+    apiKeys?: {[ key: string ]: string};
+    username?: string;
+    password?: string;
+    accessToken?: string | (() => string);
+    basePath?: string;
+    withCredentials?: boolean;
+}
+
+export class Configuration {
+    apiKeys?: {[ key: string ]: string};
+    username?: string;
+    password?: string;
+    accessToken?: string | (() => string);
+    basePath?: string;
+    withCredentials?: boolean;
+
+    constructor(configurationParameters: ConfigurationParameters = {}) {
+        this.apiKeys = configurationParameters.apiKeys;
+        this.username = configurationParameters.username;
+        this.password = configurationParameters.password;
+        this.accessToken = configurationParameters.accessToken;
+        this.basePath = configurationParameters.basePath;
+        this.withCredentials = configurationParameters.withCredentials;
+    }
+
+    /**
+     * Select the correct content-type to use for a request.
+     * Uses {@link Configuration#isJsonMime} to determine the correct content-type.
+     * If no content type is found return the first found type if the contentTypes is not empty
+     * @param contentTypes - the array of content types that are available for selection
+     * @returns the selected content-type or undefined if no selection could be made.
+     */
+    public selectHeaderContentType (contentTypes: string[]): string | undefined {
+        if (contentTypes.length === 0) {
+            return undefined;
+        }
+
+        let type = contentTypes.find(x => this.isJsonMime(x));
+        if (type === undefined) {
+            return contentTypes[0];
+        }
+        return type;
+    }
+
+    /**
+     * Select the correct accept content-type to use for a request.
+     * Uses {@link Configuration#isJsonMime} to determine the correct accept content-type.
+     * If no content type is found return the first found type if the contentTypes is not empty
+     * @param accepts - the array of content types that are available for selection.
+     * @returns the selected content-type or undefined if no selection could be made.
+     */
+    public selectHeaderAccept(accepts: string[]): string | undefined {
+        if (accepts.length === 0) {
+            return undefined;
+        }
+
+        let type = accepts.find(x => this.isJsonMime(x));
+        if (type === undefined) {
+            return accepts[0];
+        }
+        return type;
+    }
+
+    /**
+     * Check if the given MIME is a JSON MIME.
+     * JSON MIME examples:
+     *   application/json
+     *   application/json; charset=UTF8
+     *   APPLICATION/JSON
+     *   application/vnd.company+json
+     * @param mime - MIME (Multipurpose Internet Mail Extensions)
+     * @return True if the given MIME is JSON, false otherwise.
+     */
+    public isJsonMime(mime: string): boolean {
+        const jsonMime: RegExp = new RegExp('^(application\/json|[^;/ \t]+\/[^;/ \t]+[+]json)[ \t]*(;.*)?$', 'i');
+        return mime !== null && (jsonMime.test(mime) || mime.toLowerCase() === 'application/json-patch+json');
+    }
+}
diff --git a/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/with-npm/encoder.ts b/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/with-npm/encoder.ts
new file mode 100644
index 000000000000..f1c6b78c9c8e
--- /dev/null
+++ b/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/with-npm/encoder.ts
@@ -0,0 +1,18 @@
+    import { HttpUrlEncodingCodec } from '@angular/common/http';
+
+/**
+* CustomHttpUrlEncodingCodec
+* Fix plus sign (+) not encoding, so sent as blank space
+* See: https://github.com/angular/angular/issues/11058#issuecomment-247367318
+*/
+export class CustomHttpUrlEncodingCodec extends HttpUrlEncodingCodec {
+    encodeKey(k: string): string {
+        k = super.encodeKey(k);
+        return k.replace(/\+/gi, '%2B');
+    }
+    encodeValue(v: string): string {
+        v = super.encodeValue(v);
+        return v.replace(/\+/gi, '%2B');
+    }
+}
+
diff --git a/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/with-npm/git_push.sh b/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/with-npm/git_push.sh
new file mode 100644
index 000000000000..8442b80bb445
--- /dev/null
+++ b/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/with-npm/git_push.sh
@@ -0,0 +1,52 @@
+#!/bin/sh
+# ref: https://help.github.com/articles/adding-an-existing-project-to-github-using-the-command-line/
+#
+# Usage example: /bin/sh ./git_push.sh wing328 openapi-pestore-perl "minor update"
+
+git_user_id=$1
+git_repo_id=$2
+release_note=$3
+
+if [ "$git_user_id" = "" ]; then
+    git_user_id="GIT_USER_ID"
+    echo "[INFO] No command line input provided. Set \$git_user_id to $git_user_id"
+fi
+
+if [ "$git_repo_id" = "" ]; then
+    git_repo_id="GIT_REPO_ID"
+    echo "[INFO] No command line input provided. Set \$git_repo_id to $git_repo_id"
+fi
+
+if [ "$release_note" = "" ]; then
+    release_note="Minor update"
+    echo "[INFO] No command line input provided. Set \$release_note to $release_note"
+fi
+
+# Initialize the local directory as a Git repository
+git init
+
+# Adds the files in the local repository and stages them for commit.
+git add .
+
+# Commits the tracked changes and prepares them to be pushed to a remote repository. 
+git commit -m "$release_note"
+
+# Sets the new remote
+git_remote=`git remote`
+if [ "$git_remote" = "" ]; then # git remote not defined
+
+    if [ "$GIT_TOKEN" = "" ]; then
+        echo "[INFO] \$GIT_TOKEN (environment variable) is not set. Using the git credential in your environment."
+        git remote add origin https://github.com/${git_user_id}/${git_repo_id}.git
+    else
+        git remote add origin https://${git_user_id}:${GIT_TOKEN}@github.com/${git_user_id}/${git_repo_id}.git
+    fi
+
+fi
+
+git pull origin master
+
+# Pushes (Forces) the changes in the local repository up to the remote repository
+echo "Git pushing to https://github.com/${git_user_id}/${git_repo_id}.git"
+git push origin master 2>&1 | grep -v 'To https'
+
diff --git a/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/with-npm/index.ts b/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/with-npm/index.ts
new file mode 100644
index 000000000000..c312b70fa3ef
--- /dev/null
+++ b/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/with-npm/index.ts
@@ -0,0 +1,5 @@
+export * from './api/api';
+export * from './model/models';
+export * from './variables';
+export * from './configuration';
+export * from './api.module';
\ No newline at end of file
diff --git a/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/with-npm/model/apiResponse.ts b/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/with-npm/model/apiResponse.ts
new file mode 100644
index 000000000000..b57ab72c1765
--- /dev/null
+++ b/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/with-npm/model/apiResponse.ts
@@ -0,0 +1,21 @@
+/**
+ * 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.
+ */
+
+
+/**
+ * Describes the result of uploading an image resource
+ */
+export interface ApiResponse { 
+    code?: number;
+    type?: string;
+    message?: string;
+}
diff --git a/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/with-npm/model/category.ts b/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/with-npm/model/category.ts
new file mode 100644
index 000000000000..6b9023b3b720
--- /dev/null
+++ b/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/with-npm/model/category.ts
@@ -0,0 +1,20 @@
+/**
+ * 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.
+ */
+
+
+/**
+ * A category for a pet
+ */
+export interface Category { 
+    id?: number;
+    name?: string;
+}
diff --git a/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/with-npm/model/models.ts b/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/with-npm/model/models.ts
new file mode 100644
index 000000000000..8607c5dabd0c
--- /dev/null
+++ b/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/with-npm/model/models.ts
@@ -0,0 +1,6 @@
+export * from './apiResponse';
+export * from './category';
+export * from './order';
+export * from './pet';
+export * from './tag';
+export * from './user';
diff --git a/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/with-npm/model/order.ts b/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/with-npm/model/order.ts
new file mode 100644
index 000000000000..b73c088ad11e
--- /dev/null
+++ b/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/with-npm/model/order.ts
@@ -0,0 +1,35 @@
+/**
+ * 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.
+ */
+
+
+/**
+ * An order for a pets from the pet store
+ */
+export interface Order { 
+    id?: number;
+    petId?: number;
+    quantity?: number;
+    shipDate?: Date;
+    /**
+     * Order Status
+     */
+    status?: Order.StatusEnum;
+    complete?: boolean;
+}
+export namespace Order {
+    export type StatusEnum = 'placed' | 'approved' | 'delivered';
+    export const StatusEnum = {
+        Placed: 'placed' as StatusEnum,
+        Approved: 'approved' as StatusEnum,
+        Delivered: 'delivered' as StatusEnum
+    };
+}
diff --git a/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/with-npm/model/pet.ts b/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/with-npm/model/pet.ts
new file mode 100644
index 000000000000..902691a8adb9
--- /dev/null
+++ b/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/with-npm/model/pet.ts
@@ -0,0 +1,37 @@
+/**
+ * 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.
+ */
+import { Category } from './category';
+import { Tag } from './tag';
+
+
+/**
+ * A pet for sale in the pet store
+ */
+export interface Pet { 
+    id?: number;
+    category?: Category;
+    name: string;
+    photoUrls: Array;
+    tags?: Array;
+    /**
+     * pet status in the store
+     */
+    status?: Pet.StatusEnum;
+}
+export namespace Pet {
+    export type StatusEnum = 'available' | 'pending' | 'sold';
+    export const StatusEnum = {
+        Available: 'available' as StatusEnum,
+        Pending: 'pending' as StatusEnum,
+        Sold: 'sold' as StatusEnum
+    };
+}
diff --git a/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/with-npm/model/tag.ts b/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/with-npm/model/tag.ts
new file mode 100644
index 000000000000..fbe7c1f6ca13
--- /dev/null
+++ b/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/with-npm/model/tag.ts
@@ -0,0 +1,20 @@
+/**
+ * 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.
+ */
+
+
+/**
+ * A tag for a pet
+ */
+export interface Tag { 
+    id?: number;
+    name?: string;
+}
diff --git a/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/with-npm/model/user.ts b/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/with-npm/model/user.ts
new file mode 100644
index 000000000000..65de237217fa
--- /dev/null
+++ b/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/with-npm/model/user.ts
@@ -0,0 +1,29 @@
+/**
+ * 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.
+ */
+
+
+/**
+ * A User who is purchasing from the pet store
+ */
+export interface User { 
+    id?: number;
+    username?: string;
+    firstName?: string;
+    lastName?: string;
+    email?: string;
+    password?: string;
+    phone?: string;
+    /**
+     * User Status
+     */
+    userStatus?: number;
+}
diff --git a/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/with-npm/ng-package.json b/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/with-npm/ng-package.json
new file mode 100644
index 000000000000..3b17900dc9c3
--- /dev/null
+++ b/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/with-npm/ng-package.json
@@ -0,0 +1,6 @@
+{
+  "$schema": "./node_modules/ng-packagr/ng-package.schema.json",
+  "lib": {
+    "entryFile": "index.ts"
+  }
+}
diff --git a/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/with-npm/package.json b/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/with-npm/package.json
new file mode 100644
index 000000000000..40e9973f9a93
--- /dev/null
+++ b/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/with-npm/package.json
@@ -0,0 +1,40 @@
+{
+  "name": "@swagger/typescript-angular-petstore",
+  "version": "1.0.0",
+  "description": "OpenAPI client for @swagger/typescript-angular-petstore",
+  "author": "OpenAPI-Generator Contributors",
+  "keywords": [
+    "openapi-client",
+    "openapi-generator"
+  ],
+  "license": "Unlicense",
+  "scripts": {
+    "build": "ng-packagr -p ng-package.json"
+  },
+  "peerDependencies": {
+    "@angular/core": "^6.0.0",
+    "@angular/http": "^6.0.0",
+    "@angular/common": "^6.0.0",
+    "@angular/compiler": "^6.0.0",
+    "core-js": "^2.4.0",
+    "reflect-metadata": "^0.1.3",
+    "rxjs": "^6.1.0",
+    "zone.js": "^0.7.6"
+  },
+  "devDependencies": {
+    "@angular/compiler-cli": "^6.0.0",
+    "@angular/core": "^6.0.0",
+    "@angular/http": "^6.0.0",
+    "@angular/common": "^6.0.0",
+    "@angular/compiler": "^6.0.0",
+    "@angular/platform-browser": "^6.0.0",
+    "ng-packagr": "^2.4.1",
+    "reflect-metadata": "^0.1.3",
+    "rxjs": "^6.1.0",
+    "zone.js": "^0.7.6",
+    "typescript": ">=2.1.5 <2.8"
+  },
+  "publishConfig": {
+    "registry": "https://skimdb.npmjs.com/registry"
+  }
+}
diff --git a/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/with-npm/tsconfig.json b/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/with-npm/tsconfig.json
new file mode 100644
index 000000000000..498ee01e9ddd
--- /dev/null
+++ b/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/with-npm/tsconfig.json
@@ -0,0 +1,25 @@
+{
+    "compilerOptions": {
+        "emitDecoratorMetadata": true,
+        "experimentalDecorators": true,
+        "noImplicitAny": false,
+        "suppressImplicitAnyIndexErrors": true,
+        "target": "es5",
+        "module": "commonjs",
+        "moduleResolution": "node",
+        "removeComments": true,
+        "sourceMap": true,
+        "outDir": "./dist",
+        "noLib": false,
+        "declaration": true,
+        "lib": [ "es6", "dom" ]
+    },
+    "exclude": [
+        "node_modules",
+        "dist"
+    ],
+    "filesGlob": [
+        "./model/*.ts",
+        "./api/*.ts"
+    ]
+}
diff --git a/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/with-npm/typings.json b/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/with-npm/typings.json
new file mode 100644
index 000000000000..507c40e5cbed
--- /dev/null
+++ b/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/with-npm/typings.json
@@ -0,0 +1,5 @@
+{
+  "globalDependencies": {
+    "core-js": "registry:dt/core-js#0.0.0+20160725163759"
+  }
+}
diff --git a/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/with-npm/variables.ts b/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/with-npm/variables.ts
new file mode 100644
index 000000000000..6fe58549f395
--- /dev/null
+++ b/samples/client/petstore/typescript-angular-v6-provided-in-root/builds/with-npm/variables.ts
@@ -0,0 +1,9 @@
+import { InjectionToken } from '@angular/core';
+
+export const BASE_PATH = new InjectionToken('basePath');
+export const COLLECTION_FORMATS = {
+    'csv': ',',
+    'tsv': '   ',
+    'ssv': ' ',
+    'pipes': '|'
+}
diff --git a/samples/client/petstore/typescript-angular-v6-provided-in-root/default/.openapi-generator/VERSION b/samples/client/petstore/typescript-angular-v6-provided-in-root/default/.openapi-generator/VERSION
deleted file mode 100644
index ad121e8340e0..000000000000
--- a/samples/client/petstore/typescript-angular-v6-provided-in-root/default/.openapi-generator/VERSION
+++ /dev/null
@@ -1 +0,0 @@
-3.0.1-SNAPSHOT
\ No newline at end of file
diff --git a/samples/client/petstore/typescript-angular-v6-provided-in-root/package-lock.json b/samples/client/petstore/typescript-angular-v6-provided-in-root/package-lock.json
new file mode 100644
index 000000000000..2d528d8c8923
--- /dev/null
+++ b/samples/client/petstore/typescript-angular-v6-provided-in-root/package-lock.json
@@ -0,0 +1,10716 @@
+{
+  "name": "cli",
+  "version": "0.0.0",
+  "lockfileVersion": 1,
+  "requires": true,
+  "dependencies": {
+    "@angular-devkit/architect": {
+      "version": "0.6.8",
+      "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.6.8.tgz",
+      "integrity": "sha512-ZKTm/zC61iY9IBHOEAKoMSzZpvhkmv+1O/HHzpHEuR551jCzu6vSyCmMY9Z7GBcccscCV+hjeSMwgFrFRcqlkw==",
+      "dev": true,
+      "requires": {
+        "@angular-devkit/core": "0.6.8",
+        "rxjs": "^6.0.0"
+      }
+    },
+    "@angular-devkit/build-angular": {
+      "version": "0.6.8",
+      "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-0.6.8.tgz",
+      "integrity": "sha512-VGqYAk8jpISraz2UHfsDre270NOUmV0CTSZw2p9sm5g/XIr5m+IHetFZz3gpoAr9+If2aFTs8Rt3sGdCRzwBqA==",
+      "dev": true,
+      "requires": {
+        "@angular-devkit/architect": "0.6.8",
+        "@angular-devkit/build-optimizer": "0.6.8",
+        "@angular-devkit/core": "0.6.8",
+        "@ngtools/webpack": "6.0.8",
+        "ajv": "~6.4.0",
+        "autoprefixer": "^8.4.1",
+        "cache-loader": "^1.2.2",
+        "chalk": "~2.2.2",
+        "circular-dependency-plugin": "^5.0.2",
+        "clean-css": "^4.1.11",
+        "copy-webpack-plugin": "^4.5.1",
+        "file-loader": "^1.1.11",
+        "glob": "^7.0.3",
+        "html-webpack-plugin": "^3.0.6",
+        "istanbul": "^0.4.5",
+        "istanbul-instrumenter-loader": "^3.0.1",
+        "karma-source-map-support": "^1.2.0",
+        "less": "^3.0.4",
+        "less-loader": "^4.1.0",
+        "license-webpack-plugin": "^1.3.1",
+        "lodash": "^4.17.4",
+        "memory-fs": "^0.4.1",
+        "mini-css-extract-plugin": "~0.4.0",
+        "minimatch": "^3.0.4",
+        "node-sass": "^4.9.0",
+        "opn": "^5.1.0",
+        "parse5": "^4.0.0",
+        "portfinder": "^1.0.13",
+        "postcss": "^6.0.22",
+        "postcss-import": "^11.1.0",
+        "postcss-loader": "^2.1.5",
+        "postcss-url": "^7.3.2",
+        "raw-loader": "^0.5.1",
+        "resolve": "^1.5.0",
+        "rxjs": "^6.0.0",
+        "sass-loader": "^7.0.1",
+        "silent-error": "^1.1.0",
+        "source-map-support": "^0.5.0",
+        "stats-webpack-plugin": "^0.6.2",
+        "style-loader": "^0.21.0",
+        "stylus": "^0.54.5",
+        "stylus-loader": "^3.0.2",
+        "tree-kill": "^1.2.0",
+        "uglifyjs-webpack-plugin": "^1.2.5",
+        "url-loader": "^1.0.1",
+        "webpack": "~4.8.1",
+        "webpack-dev-middleware": "^3.1.3",
+        "webpack-dev-server": "^3.1.4",
+        "webpack-merge": "^4.1.2",
+        "webpack-sources": "^1.1.0",
+        "webpack-subresource-integrity": "^1.1.0-rc.4"
+      }
+    },
+    "@angular-devkit/build-optimizer": {
+      "version": "0.6.8",
+      "resolved": "https://registry.npmjs.org/@angular-devkit/build-optimizer/-/build-optimizer-0.6.8.tgz",
+      "integrity": "sha512-of5syQbv3uNPp4AQkfRecfnp8AE8kvffbfYi+FFPZ6OGr7e59T1fGwk6+Zgb2qQFQg8HO2tzWI/uygtLIqmbmw==",
+      "dev": true,
+      "requires": {
+        "loader-utils": "^1.1.0",
+        "source-map": "^0.5.6",
+        "typescript": "~2.9.1",
+        "webpack-sources": "^1.1.0"
+      },
+      "dependencies": {
+        "typescript": {
+          "version": "2.9.2",
+          "resolved": "https://registry.npmjs.org/typescript/-/typescript-2.9.2.tgz",
+          "integrity": "sha512-Gr4p6nFNaoufRIY4NMdpQRNmgxVIGMs4Fcu/ujdYk3nAZqk7supzBE9idmvfZIlH/Cuj//dvi+019qEue9lV0w==",
+          "dev": true
+        }
+      }
+    },
+    "@angular-devkit/core": {
+      "version": "0.6.8",
+      "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-0.6.8.tgz",
+      "integrity": "sha512-rkIa1OSVWTt4g9leLSK/PsqOj3HZbDKHbZjqlslyfVa3AyCeiumFoOgViOVXlYgPX3HHDbE5uH24nyUWSD8uww==",
+      "dev": true,
+      "requires": {
+        "ajv": "~6.4.0",
+        "chokidar": "^2.0.3",
+        "rxjs": "^6.0.0",
+        "source-map": "^0.5.6"
+      }
+    },
+    "@angular-devkit/schematics": {
+      "version": "0.6.8",
+      "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-0.6.8.tgz",
+      "integrity": "sha512-R4YqAUdo62wtrhX/5HSRGSKXNTWqfQb66ZE6m8jj6GEJNFKdNXMdxOchxr07LCiKTxfh1w6G3nGzxIsu/+D4KA==",
+      "dev": true,
+      "requires": {
+        "@angular-devkit/core": "0.6.8",
+        "rxjs": "^6.0.0"
+      }
+    },
+    "@angular/animations": {
+      "version": "6.0.5",
+      "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-6.0.5.tgz",
+      "integrity": "sha512-zW/qX3CvsuRDOcTNFFSf7uXktvq1jRrfKR8LdGQ/DER1GU3o8pR3z3H8gHy8lAFc3PESfETtzXinKUNzvTDfpA==",
+      "requires": {
+        "tslib": "^1.9.0"
+      }
+    },
+    "@angular/cli": {
+      "version": "6.0.8",
+      "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-6.0.8.tgz",
+      "integrity": "sha512-DhH1Zq5Yonthw6zh6W07fhf+9XrAZbD1fcQ0MrmbxlieCfLlTAdBqyK2LavFCKwSZkUMLF6UHM3+jiNRVZSSIg==",
+      "dev": true,
+      "requires": {
+        "@angular-devkit/architect": "0.6.8",
+        "@angular-devkit/core": "0.6.8",
+        "@angular-devkit/schematics": "0.6.8",
+        "@schematics/angular": "0.6.8",
+        "@schematics/update": "0.6.8",
+        "opn": "~5.3.0",
+        "resolve": "^1.1.7",
+        "rxjs": "^6.0.0",
+        "semver": "^5.1.0",
+        "silent-error": "^1.0.0",
+        "symbol-observable": "^1.2.0",
+        "yargs-parser": "^10.0.0"
+      },
+      "dependencies": {
+        "camelcase": {
+          "version": "4.1.0",
+          "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz",
+          "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=",
+          "dev": true
+        },
+        "yargs-parser": {
+          "version": "10.0.0",
+          "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-10.0.0.tgz",
+          "integrity": "sha512-+DHejWujTVYeMHLff8U96rLc4uE4Emncoftvn5AjhB1Jw1pWxLzgBUT/WYbPrHmy6YPEBTZQx5myHhVcuuu64g==",
+          "dev": true,
+          "requires": {
+            "camelcase": "^4.1.0"
+          }
+        }
+      }
+    },
+    "@angular/common": {
+      "version": "6.0.5",
+      "resolved": "https://registry.npmjs.org/@angular/common/-/common-6.0.5.tgz",
+      "integrity": "sha512-xL4Aq+uGQcmHYs90WSKsS9vBC1XO042hM5lSVz+zyYtYzYHdt/Qg1CIuR3zkP+8DG+mf1QZqbg5YtQx5XykmgA==",
+      "requires": {
+        "tslib": "^1.9.0"
+      }
+    },
+    "@angular/compiler": {
+      "version": "6.0.5",
+      "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-6.0.5.tgz",
+      "integrity": "sha512-Oe0VRCyKfHLatalRuXjCdgaY6hhiMXEL/ueknMJFC0+xA73mEchmLYXj64/1ed753cjnLOM2qbVVwqhc26tmEg==",
+      "requires": {
+        "tslib": "^1.9.0"
+      }
+    },
+    "@angular/compiler-cli": {
+      "version": "6.0.5",
+      "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-6.0.5.tgz",
+      "integrity": "sha512-onRlVLWo1mTdyxLMRtW4iPntTUglJl9T0hacRlscKKlAUT8jaSfqIyknCF3jEXJrTnfKdypen053U7g2ajifrA==",
+      "dev": true,
+      "requires": {
+        "chokidar": "^1.4.2",
+        "minimist": "^1.2.0",
+        "reflect-metadata": "^0.1.2",
+        "tsickle": "^0.29.0"
+      },
+      "dependencies": {
+        "anymatch": {
+          "version": "1.3.2",
+          "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.2.tgz",
+          "integrity": "sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA==",
+          "dev": true,
+          "requires": {
+            "micromatch": "^2.1.5",
+            "normalize-path": "^2.0.0"
+          }
+        },
+        "arr-diff": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz",
+          "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=",
+          "dev": true,
+          "requires": {
+            "arr-flatten": "^1.0.1"
+          }
+        },
+        "array-unique": {
+          "version": "0.2.1",
+          "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz",
+          "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=",
+          "dev": true
+        },
+        "braces": {
+          "version": "1.8.5",
+          "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz",
+          "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=",
+          "dev": true,
+          "requires": {
+            "expand-range": "^1.8.1",
+            "preserve": "^0.2.0",
+            "repeat-element": "^1.1.2"
+          }
+        },
+        "chokidar": {
+          "version": "1.7.0",
+          "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz",
+          "integrity": "sha1-eY5ol3gVHIB2tLNg5e3SjNortGg=",
+          "dev": true,
+          "requires": {
+            "anymatch": "^1.3.0",
+            "async-each": "^1.0.0",
+            "fsevents": "^1.0.0",
+            "glob-parent": "^2.0.0",
+            "inherits": "^2.0.1",
+            "is-binary-path": "^1.0.0",
+            "is-glob": "^2.0.0",
+            "path-is-absolute": "^1.0.0",
+            "readdirp": "^2.0.0"
+          }
+        },
+        "expand-brackets": {
+          "version": "0.1.5",
+          "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz",
+          "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=",
+          "dev": true,
+          "requires": {
+            "is-posix-bracket": "^0.1.0"
+          }
+        },
+        "extglob": {
+          "version": "0.3.2",
+          "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz",
+          "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=",
+          "dev": true,
+          "requires": {
+            "is-extglob": "^1.0.0"
+          }
+        },
+        "glob-parent": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz",
+          "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=",
+          "dev": true,
+          "requires": {
+            "is-glob": "^2.0.0"
+          }
+        },
+        "is-extglob": {
+          "version": "1.0.0",
+          "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz",
+          "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=",
+          "dev": true
+        },
+        "is-glob": {
+          "version": "2.0.1",
+          "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz",
+          "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=",
+          "dev": true,
+          "requires": {
+            "is-extglob": "^1.0.0"
+          }
+        },
+        "kind-of": {
+          "version": "3.2.2",
+          "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+          "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+          "dev": true,
+          "requires": {
+            "is-buffer": "^1.1.5"
+          }
+        },
+        "micromatch": {
+          "version": "2.3.11",
+          "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz",
+          "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=",
+          "dev": true,
+          "requires": {
+            "arr-diff": "^2.0.0",
+            "array-unique": "^0.2.1",
+            "braces": "^1.8.2",
+            "expand-brackets": "^0.1.4",
+            "extglob": "^0.3.1",
+            "filename-regex": "^2.0.0",
+            "is-extglob": "^1.0.0",
+            "is-glob": "^2.0.1",
+            "kind-of": "^3.0.2",
+            "normalize-path": "^2.0.1",
+            "object.omit": "^2.0.0",
+            "parse-glob": "^3.0.4",
+            "regex-cache": "^0.4.2"
+          }
+        },
+        "minimist": {
+          "version": "1.2.0",
+          "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
+          "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=",
+          "dev": true
+        }
+      }
+    },
+    "@angular/core": {
+      "version": "6.0.5",
+      "resolved": "https://registry.npmjs.org/@angular/core/-/core-6.0.5.tgz",
+      "integrity": "sha512-yG4Qz5wHWgFYOCtX62F8MmJ1wZwZA1ALbyQC+WAZfi7Y8Asx8TShJ+3QKUDYwO1jj530pqNbfauDTCmPzzPvaQ==",
+      "requires": {
+        "tslib": "^1.9.0"
+      }
+    },
+    "@angular/forms": {
+      "version": "6.0.5",
+      "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-6.0.5.tgz",
+      "integrity": "sha512-d1SdhAQ/W1n3vtm1lp5y16EaUylcZ2wftLUj6MSne3bH/2MJ6JsxJKwX+MfPcQCo+DCfG5bF0UMCa1KAwUQthQ==",
+      "requires": {
+        "tslib": "^1.9.0"
+      }
+    },
+    "@angular/http": {
+      "version": "6.0.5",
+      "resolved": "https://registry.npmjs.org/@angular/http/-/http-6.0.5.tgz",
+      "integrity": "sha512-N9lx1s1h4wki1ob4qne3FdyAWG3TcCAGnUAjDmZ1+c/hhxtcv0iEJ22nBrGkPIsUxIPXg0JgsD1hKhu5DGEbWg==",
+      "requires": {
+        "tslib": "^1.9.0"
+      }
+    },
+    "@angular/language-service": {
+      "version": "6.0.5",
+      "resolved": "https://registry.npmjs.org/@angular/language-service/-/language-service-6.0.5.tgz",
+      "integrity": "sha512-PH06chMTcWTLfVxZqpXksIx9969N/azEghYx0U+MzlGomeaaBXr7RuZWHRVn/lD5XljrqdWAQSMc+abbn1oKgg==",
+      "dev": true
+    },
+    "@angular/platform-browser": {
+      "version": "6.0.5",
+      "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-6.0.5.tgz",
+      "integrity": "sha512-FSsA9C3cJa7S4SPUAhypKlTQf4uA4hiqx/h65v7frDiyRVHv22oWKX7aKmyyb9oP5FHN/TDeQiRn4m8XNqG6AQ==",
+      "requires": {
+        "tslib": "^1.9.0"
+      }
+    },
+    "@angular/platform-browser-dynamic": {
+      "version": "6.0.5",
+      "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-6.0.5.tgz",
+      "integrity": "sha512-TTSLOMVrgRXI29xmBWsnSp8187vbWnbj0YEehuyup2FmltUl+H5Vms7poWV9/6fI3RnW3Yg9Ziv3T5iKqsiADQ==",
+      "requires": {
+        "tslib": "^1.9.0"
+      }
+    },
+    "@angular/router": {
+      "version": "6.0.5",
+      "resolved": "https://registry.npmjs.org/@angular/router/-/router-6.0.5.tgz",
+      "integrity": "sha512-M3cb5CDX+WvkM2xmFeP64zPwLJ6by6cyzl5OCfEQjoTGKOFY7N2B4kHAOw5KJN3nIEd0PersSBgf11Y9g7GPwA==",
+      "requires": {
+        "tslib": "^1.9.0"
+      }
+    },
+    "@ngtools/webpack": {
+      "version": "6.0.8",
+      "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-6.0.8.tgz",
+      "integrity": "sha512-jorGpTd82ILbyUwg4JQekovHFaYwSMlZan4f7x+sd3+2WgyL3Z1+ZbVSGKvXZWKS/mAVx7eLkRikzJkuC4FgHw==",
+      "dev": true,
+      "requires": {
+        "@angular-devkit/core": "0.6.8",
+        "tree-kill": "^1.0.0",
+        "webpack-sources": "^1.1.0"
+      }
+    },
+    "@schematics/angular": {
+      "version": "0.6.8",
+      "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-0.6.8.tgz",
+      "integrity": "sha512-9kRphqTYG5Df/I8fvnT1zMsw0YNDPO9tl18tQZXj4am4raT7l9UCr+WkwJdlBoA5pwG6baWE9sL0iGWV/bzF/g==",
+      "dev": true,
+      "requires": {
+        "@angular-devkit/core": "0.6.8",
+        "@angular-devkit/schematics": "0.6.8",
+        "typescript": ">=2.6.2 <2.8"
+      }
+    },
+    "@schematics/update": {
+      "version": "0.6.8",
+      "resolved": "https://registry.npmjs.org/@schematics/update/-/update-0.6.8.tgz",
+      "integrity": "sha512-1Uq7LYnwL2wBwGVCgNz76QAR13ghAk+2vDDHOi+VX5+usHManxydrpoMGeX66OBPd+y5D3D2MFb+8mYHE7mygg==",
+      "dev": true,
+      "requires": {
+        "@angular-devkit/core": "0.6.8",
+        "@angular-devkit/schematics": "0.6.8",
+        "npm-registry-client": "^8.5.1",
+        "rxjs": "^6.0.0",
+        "semver": "^5.3.0",
+        "semver-intersect": "^1.1.2"
+      }
+    },
+    "@types/jasmine": {
+      "version": "2.8.8",
+      "resolved": "https://registry.npmjs.org/@types/jasmine/-/jasmine-2.8.8.tgz",
+      "integrity": "sha512-OJSUxLaxXsjjhob2DBzqzgrkLmukM3+JMpRp0r0E4HTdT1nwDCWhaswjYxazPij6uOdzHCJfNbDjmQ1/rnNbCg==",
+      "dev": true
+    },
+    "@types/jasminewd2": {
+      "version": "2.0.3",
+      "resolved": "https://registry.npmjs.org/@types/jasminewd2/-/jasminewd2-2.0.3.tgz",
+      "integrity": "sha512-hYDVmQZT5VA2kigd4H4bv7vl/OhlympwREUemqBdOqtrYTo5Ytm12a5W5/nGgGYdanGVxj0x/VhZ7J3hOg/YKg==",
+      "dev": true,
+      "requires": {
+        "@types/jasmine": "*"
+      }
+    },
+    "@types/node": {
+      "version": "8.9.5",
+      "resolved": "https://registry.npmjs.org/@types/node/-/node-8.9.5.tgz",
+      "integrity": "sha512-jRHfWsvyMtXdbhnz5CVHxaBgnV6duZnPlQuRSo/dm/GnmikNcmZhxIES4E9OZjUmQ8C+HCl4KJux+cXN/ErGDQ==",
+      "dev": true
+    },
+    "@types/q": {
+      "version": "0.0.32",
+      "resolved": "https://registry.npmjs.org/@types/q/-/q-0.0.32.tgz",
+      "integrity": "sha1-vShOV8hPEyXacCur/IKlMoGQwMU=",
+      "dev": true
+    },
+    "@types/selenium-webdriver": {
+      "version": "2.53.43",
+      "resolved": "https://registry.npmjs.org/@types/selenium-webdriver/-/selenium-webdriver-2.53.43.tgz",
+      "integrity": "sha512-UBYHWph6P3tutkbXpW6XYg9ZPbTKjw/YC2hGG1/GEvWwTbvezBUv3h+mmUFw79T3RFPnmedpiXdOBbXX+4l0jg==",
+      "dev": true
+    },
+    "@webassemblyjs/ast": {
+      "version": "1.4.3",
+      "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.4.3.tgz",
+      "integrity": "sha512-S6npYhPcTHDYe9nlsKa9CyWByFi8Vj8HovcAgtmMAQZUOczOZbQ8CnwMYKYC5HEZzxEE+oY0jfQk4cVlI3J59Q==",
+      "dev": true,
+      "requires": {
+        "@webassemblyjs/helper-wasm-bytecode": "1.4.3",
+        "@webassemblyjs/wast-parser": "1.4.3",
+        "debug": "^3.1.0",
+        "webassemblyjs": "1.4.3"
+      },
+      "dependencies": {
+        "debug": {
+          "version": "3.1.0",
+          "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
+          "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
+          "dev": true,
+          "requires": {
+            "ms": "2.0.0"
+          }
+        }
+      }
+    },
+    "@webassemblyjs/floating-point-hex-parser": {
+      "version": "1.4.3",
+      "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.4.3.tgz",
+      "integrity": "sha512-3zTkSFswwZOPNHnzkP9ONq4bjJSeKVMcuahGXubrlLmZP8fmTIJ58dW7h/zOVWiFSuG2em3/HH3BlCN7wyu9Rw==",
+      "dev": true
+    },
+    "@webassemblyjs/helper-buffer": {
+      "version": "1.4.3",
+      "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.4.3.tgz",
+      "integrity": "sha512-e8+KZHh+RV8MUvoSRtuT1sFXskFnWG9vbDy47Oa166xX+l0dD5sERJ21g5/tcH8Yo95e9IN3u7Jc3NbhnUcSkw==",
+      "dev": true,
+      "requires": {
+        "debug": "^3.1.0"
+      },
+      "dependencies": {
+        "debug": {
+          "version": "3.1.0",
+          "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
+          "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
+          "dev": true,
+          "requires": {
+            "ms": "2.0.0"
+          }
+        }
+      }
+    },
+    "@webassemblyjs/helper-code-frame": {
+      "version": "1.4.3",
+      "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.4.3.tgz",
+      "integrity": "sha512-9FgHEtNsZQYaKrGCtsjswBil48Qp1agrzRcPzCbQloCoaTbOXLJ9IRmqT+uEZbenpULLRNFugz3I4uw18hJM8w==",
+      "dev": true,
+      "requires": {
+        "@webassemblyjs/wast-printer": "1.4.3"
+      }
+    },
+    "@webassemblyjs/helper-fsm": {
+      "version": "1.4.3",
+      "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.4.3.tgz",
+      "integrity": "sha512-JINY76U+702IRf7ePukOt037RwmtH59JHvcdWbTTyHi18ixmQ+uOuNhcdCcQHTquDAH35/QgFlp3Y9KqtyJsCQ==",
+      "dev": true
+    },
+    "@webassemblyjs/helper-wasm-bytecode": {
+      "version": "1.4.3",
+      "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.4.3.tgz",
+      "integrity": "sha512-I7bS+HaO0K07Io89qhJv+z1QipTpuramGwUSDkwEaficbSvCcL92CUZEtgykfNtk5wb0CoLQwWlmXTwGbNZUeQ==",
+      "dev": true
+    },
+    "@webassemblyjs/helper-wasm-section": {
+      "version": "1.4.3",
+      "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.4.3.tgz",
+      "integrity": "sha512-p0yeeO/h2r30PyjnJX9xXSR6EDcvJd/jC6xa/Pxg4lpfcNi7JUswOpqDToZQ55HMMVhXDih/yqkaywHWGLxqyQ==",
+      "dev": true,
+      "requires": {
+        "@webassemblyjs/ast": "1.4.3",
+        "@webassemblyjs/helper-buffer": "1.4.3",
+        "@webassemblyjs/helper-wasm-bytecode": "1.4.3",
+        "@webassemblyjs/wasm-gen": "1.4.3",
+        "debug": "^3.1.0"
+      },
+      "dependencies": {
+        "debug": {
+          "version": "3.1.0",
+          "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
+          "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
+          "dev": true,
+          "requires": {
+            "ms": "2.0.0"
+          }
+        }
+      }
+    },
+    "@webassemblyjs/leb128": {
+      "version": "1.4.3",
+      "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.4.3.tgz",
+      "integrity": "sha512-4u0LJLSPzuRDWHwdqsrThYn+WqMFVqbI2ltNrHvZZkzFPO8XOZ0HFQ5eVc4jY/TNHgXcnwrHjONhPGYuuf//KQ==",
+      "dev": true,
+      "requires": {
+        "leb": "^0.3.0"
+      }
+    },
+    "@webassemblyjs/validation": {
+      "version": "1.4.3",
+      "resolved": "https://registry.npmjs.org/@webassemblyjs/validation/-/validation-1.4.3.tgz",
+      "integrity": "sha512-R+rRMKfhd9mq0rj2mhU9A9NKI2l/Rw65vIYzz4lui7eTKPcCu1l7iZNi4b9Gen8D42Sqh/KGiaQNk/x5Tn/iBQ==",
+      "dev": true,
+      "requires": {
+        "@webassemblyjs/ast": "1.4.3"
+      }
+    },
+    "@webassemblyjs/wasm-edit": {
+      "version": "1.4.3",
+      "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.4.3.tgz",
+      "integrity": "sha512-qzuwUn771PV6/LilqkXcS0ozJYAeY/OKbXIWU3a8gexuqb6De2p4ya/baBeH5JQ2WJdfhWhSvSbu86Vienttpw==",
+      "dev": true,
+      "requires": {
+        "@webassemblyjs/ast": "1.4.3",
+        "@webassemblyjs/helper-buffer": "1.4.3",
+        "@webassemblyjs/helper-wasm-bytecode": "1.4.3",
+        "@webassemblyjs/helper-wasm-section": "1.4.3",
+        "@webassemblyjs/wasm-gen": "1.4.3",
+        "@webassemblyjs/wasm-opt": "1.4.3",
+        "@webassemblyjs/wasm-parser": "1.4.3",
+        "@webassemblyjs/wast-printer": "1.4.3",
+        "debug": "^3.1.0"
+      },
+      "dependencies": {
+        "debug": {
+          "version": "3.1.0",
+          "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
+          "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
+          "dev": true,
+          "requires": {
+            "ms": "2.0.0"
+          }
+        }
+      }
+    },
+    "@webassemblyjs/wasm-gen": {
+      "version": "1.4.3",
+      "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.4.3.tgz",
+      "integrity": "sha512-eR394T8dHZfpLJ7U/Z5pFSvxl1L63JdREebpv9gYc55zLhzzdJPAuxjBYT4XqevUdW67qU2s0nNA3kBuNJHbaQ==",
+      "dev": true,
+      "requires": {
+        "@webassemblyjs/ast": "1.4.3",
+        "@webassemblyjs/helper-wasm-bytecode": "1.4.3",
+        "@webassemblyjs/leb128": "1.4.3"
+      }
+    },
+    "@webassemblyjs/wasm-opt": {
+      "version": "1.4.3",
+      "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.4.3.tgz",
+      "integrity": "sha512-7Gp+nschuKiDuAL1xmp4Xz0rgEbxioFXw4nCFYEmy+ytynhBnTeGc9W9cB1XRu1w8pqRU2lbj2VBBA4cL5Z2Kw==",
+      "dev": true,
+      "requires": {
+        "@webassemblyjs/ast": "1.4.3",
+        "@webassemblyjs/helper-buffer": "1.4.3",
+        "@webassemblyjs/wasm-gen": "1.4.3",
+        "@webassemblyjs/wasm-parser": "1.4.3",
+        "debug": "^3.1.0"
+      },
+      "dependencies": {
+        "debug": {
+          "version": "3.1.0",
+          "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
+          "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
+          "dev": true,
+          "requires": {
+            "ms": "2.0.0"
+          }
+        }
+      }
+    },
+    "@webassemblyjs/wasm-parser": {
+      "version": "1.4.3",
+      "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.4.3.tgz",
+      "integrity": "sha512-KXBjtlwA3BVukR/yWHC9GF+SCzBcgj0a7lm92kTOaa4cbjaTaa47bCjXw6cX4SGQpkncB9PU2hHGYVyyI7wFRg==",
+      "dev": true,
+      "requires": {
+        "@webassemblyjs/ast": "1.4.3",
+        "@webassemblyjs/helper-wasm-bytecode": "1.4.3",
+        "@webassemblyjs/leb128": "1.4.3",
+        "@webassemblyjs/wasm-parser": "1.4.3",
+        "webassemblyjs": "1.4.3"
+      }
+    },
+    "@webassemblyjs/wast-parser": {
+      "version": "1.4.3",
+      "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.4.3.tgz",
+      "integrity": "sha512-QhCsQzqV0CpsEkRYyTzQDilCNUZ+5j92f+g35bHHNqS22FppNTywNFfHPq8ZWZfYCgbectc+PoghD+xfzVFh1Q==",
+      "dev": true,
+      "requires": {
+        "@webassemblyjs/ast": "1.4.3",
+        "@webassemblyjs/floating-point-hex-parser": "1.4.3",
+        "@webassemblyjs/helper-code-frame": "1.4.3",
+        "@webassemblyjs/helper-fsm": "1.4.3",
+        "long": "^3.2.0",
+        "webassemblyjs": "1.4.3"
+      }
+    },
+    "@webassemblyjs/wast-printer": {
+      "version": "1.4.3",
+      "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.4.3.tgz",
+      "integrity": "sha512-EgXk4anf8jKmuZJsqD8qy5bz2frEQhBvZruv+bqwNoLWUItjNSFygk8ywL3JTEz9KtxTlAmqTXNrdD1d9gNDtg==",
+      "dev": true,
+      "requires": {
+        "@webassemblyjs/ast": "1.4.3",
+        "@webassemblyjs/wast-parser": "1.4.3",
+        "long": "^3.2.0"
+      }
+    },
+    "abbrev": {
+      "version": "1.0.9",
+      "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.0.9.tgz",
+      "integrity": "sha1-kbR5JYinc4wl813W9jdSovh3YTU=",
+      "dev": true
+    },
+    "accepts": {
+      "version": "1.3.5",
+      "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.5.tgz",
+      "integrity": "sha1-63d99gEXI6OxTopywIBcjoZ0a9I=",
+      "dev": true,
+      "requires": {
+        "mime-types": "~2.1.18",
+        "negotiator": "0.6.1"
+      }
+    },
+    "acorn": {
+      "version": "5.7.1",
+      "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.1.tgz",
+      "integrity": "sha512-d+nbxBUGKg7Arpsvbnlq61mc12ek3EY8EQldM3GPAhWJ1UVxC6TDGbIvUMNU6obBX3i1+ptCIzV4vq0gFPEGVQ==",
+      "dev": true
+    },
+    "acorn-dynamic-import": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/acorn-dynamic-import/-/acorn-dynamic-import-3.0.0.tgz",
+      "integrity": "sha512-zVWV8Z8lislJoOKKqdNMOB+s6+XV5WERty8MnKBeFgwA+19XJjJHs2RP5dzM57FftIs+jQnRToLiWazKr6sSWg==",
+      "dev": true,
+      "requires": {
+        "acorn": "^5.0.0"
+      }
+    },
+    "adm-zip": {
+      "version": "0.4.4",
+      "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.4.4.tgz",
+      "integrity": "sha1-ph7VrmkFw66lizplfSUDMJEFJzY=",
+      "dev": true
+    },
+    "after": {
+      "version": "0.8.2",
+      "resolved": "https://registry.npmjs.org/after/-/after-0.8.2.tgz",
+      "integrity": "sha1-/ts5T58OAqqXaOcCvaI7UF+ufh8=",
+      "dev": true
+    },
+    "agent-base": {
+      "version": "4.2.0",
+      "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.2.0.tgz",
+      "integrity": "sha512-c+R/U5X+2zz2+UCrCFv6odQzJdoqI+YecuhnAJLa1zYaMc13zPfwMwZrr91Pd1DYNo/yPRbiM4WVf9whgwFsIg==",
+      "dev": true,
+      "requires": {
+        "es6-promisify": "^5.0.0"
+      }
+    },
+    "ajv": {
+      "version": "6.4.0",
+      "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.4.0.tgz",
+      "integrity": "sha1-06/3jpJ3VJdx2vAWTP9ISCt1T8Y=",
+      "dev": true,
+      "requires": {
+        "fast-deep-equal": "^1.0.0",
+        "fast-json-stable-stringify": "^2.0.0",
+        "json-schema-traverse": "^0.3.0",
+        "uri-js": "^3.0.2"
+      }
+    },
+    "ajv-keywords": {
+      "version": "3.2.0",
+      "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.2.0.tgz",
+      "integrity": "sha1-6GuBnGAs+IIa1jdBNpjx3sAhhHo=",
+      "dev": true
+    },
+    "align-text": {
+      "version": "0.1.4",
+      "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz",
+      "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=",
+      "dev": true,
+      "requires": {
+        "kind-of": "^3.0.2",
+        "longest": "^1.0.1",
+        "repeat-string": "^1.5.2"
+      },
+      "dependencies": {
+        "kind-of": {
+          "version": "3.2.2",
+          "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+          "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+          "dev": true,
+          "requires": {
+            "is-buffer": "^1.1.5"
+          }
+        }
+      }
+    },
+    "amdefine": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz",
+      "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=",
+      "dev": true
+    },
+    "ansi-html": {
+      "version": "0.0.7",
+      "resolved": "https://registry.npmjs.org/ansi-html/-/ansi-html-0.0.7.tgz",
+      "integrity": "sha1-gTWEAhliqenm/QOflA0S9WynhZ4=",
+      "dev": true
+    },
+    "ansi-regex": {
+      "version": "2.1.1",
+      "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
+      "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
+      "dev": true
+    },
+    "ansi-styles": {
+      "version": "3.2.1",
+      "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+      "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+      "dev": true,
+      "requires": {
+        "color-convert": "^1.9.0"
+      }
+    },
+    "anymatch": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz",
+      "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==",
+      "dev": true,
+      "requires": {
+        "micromatch": "^3.1.4",
+        "normalize-path": "^2.1.1"
+      }
+    },
+    "app-root-path": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/app-root-path/-/app-root-path-2.0.1.tgz",
+      "integrity": "sha1-zWLc+OT9WkF+/GZNLlsQZTxlG0Y=",
+      "dev": true
+    },
+    "append-transform": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-1.0.0.tgz",
+      "integrity": "sha512-P009oYkeHyU742iSZJzZZywj4QRJdnTWffaKuJQLablCZ1uz6/cW4yaRgcDaoQ+uwOxxnt0gRUcwfsNP2ri0gw==",
+      "dev": true,
+      "requires": {
+        "default-require-extensions": "^2.0.0"
+      }
+    },
+    "aproba": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz",
+      "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==",
+      "dev": true
+    },
+    "are-we-there-yet": {
+      "version": "1.1.5",
+      "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz",
+      "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==",
+      "dev": true,
+      "requires": {
+        "delegates": "^1.0.0",
+        "readable-stream": "^2.0.6"
+      }
+    },
+    "argparse": {
+      "version": "1.0.10",
+      "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
+      "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
+      "dev": true,
+      "requires": {
+        "sprintf-js": "~1.0.2"
+      }
+    },
+    "arr-diff": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz",
+      "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=",
+      "dev": true
+    },
+    "arr-flatten": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz",
+      "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==",
+      "dev": true
+    },
+    "arr-union": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz",
+      "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=",
+      "dev": true
+    },
+    "array-find-index": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz",
+      "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=",
+      "dev": true
+    },
+    "array-flatten": {
+      "version": "2.1.1",
+      "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.1.tgz",
+      "integrity": "sha1-Qmu52oQJDBg42BLIFQryCoMx4pY=",
+      "dev": true
+    },
+    "array-includes": {
+      "version": "3.0.3",
+      "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.0.3.tgz",
+      "integrity": "sha1-GEtI9i2S10UrsxsyMWXH+L0CJm0=",
+      "dev": true,
+      "requires": {
+        "define-properties": "^1.1.2",
+        "es-abstract": "^1.7.0"
+      }
+    },
+    "array-slice": {
+      "version": "0.2.3",
+      "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-0.2.3.tgz",
+      "integrity": "sha1-3Tz7gO15c6dRF82sabC5nshhhvU=",
+      "dev": true
+    },
+    "array-union": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz",
+      "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=",
+      "dev": true,
+      "requires": {
+        "array-uniq": "^1.0.1"
+      }
+    },
+    "array-uniq": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz",
+      "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=",
+      "dev": true
+    },
+    "array-unique": {
+      "version": "0.3.2",
+      "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz",
+      "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=",
+      "dev": true
+    },
+    "arraybuffer.slice": {
+      "version": "0.0.6",
+      "resolved": "https://registry.npmjs.org/arraybuffer.slice/-/arraybuffer.slice-0.0.6.tgz",
+      "integrity": "sha1-8zshWfBTKj8xB6JywMz70a0peco=",
+      "dev": true
+    },
+    "arrify": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz",
+      "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=",
+      "dev": true
+    },
+    "asap": {
+      "version": "2.0.6",
+      "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz",
+      "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=",
+      "dev": true,
+      "optional": true
+    },
+    "asn1": {
+      "version": "0.2.3",
+      "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz",
+      "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=",
+      "dev": true
+    },
+    "asn1.js": {
+      "version": "4.10.1",
+      "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz",
+      "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==",
+      "dev": true,
+      "requires": {
+        "bn.js": "^4.0.0",
+        "inherits": "^2.0.1",
+        "minimalistic-assert": "^1.0.0"
+      }
+    },
+    "assert": {
+      "version": "1.4.1",
+      "resolved": "https://registry.npmjs.org/assert/-/assert-1.4.1.tgz",
+      "integrity": "sha1-mZEtWRg2tab1s0XA8H7vwI/GXZE=",
+      "dev": true,
+      "requires": {
+        "util": "0.10.3"
+      },
+      "dependencies": {
+        "inherits": {
+          "version": "2.0.1",
+          "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz",
+          "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=",
+          "dev": true
+        },
+        "util": {
+          "version": "0.10.3",
+          "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz",
+          "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=",
+          "dev": true,
+          "requires": {
+            "inherits": "2.0.1"
+          }
+        }
+      }
+    },
+    "assert-plus": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
+      "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=",
+      "dev": true
+    },
+    "assign-symbols": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz",
+      "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=",
+      "dev": true
+    },
+    "async": {
+      "version": "1.5.2",
+      "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz",
+      "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=",
+      "dev": true
+    },
+    "async-each": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz",
+      "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=",
+      "dev": true
+    },
+    "async-foreach": {
+      "version": "0.1.3",
+      "resolved": "https://registry.npmjs.org/async-foreach/-/async-foreach-0.1.3.tgz",
+      "integrity": "sha1-NhIfhFwFeBct5Bmpfb6x0W7DRUI=",
+      "dev": true,
+      "optional": true
+    },
+    "asynckit": {
+      "version": "0.4.0",
+      "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
+      "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=",
+      "dev": true
+    },
+    "atob": {
+      "version": "2.1.1",
+      "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.1.tgz",
+      "integrity": "sha1-ri1acpR38onWDdf5amMUoi3Wwio=",
+      "dev": true
+    },
+    "autoprefixer": {
+      "version": "8.6.3",
+      "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-8.6.3.tgz",
+      "integrity": "sha512-KkQyCHBxma7R2eoEkjja/RHUBw+Fc1nY46LdV62fzJI5D7i8mLLCtAZ/AVR3UbXhDZ8mUz4C/PF4lZrbiHa1ZQ==",
+      "dev": true,
+      "requires": {
+        "browserslist": "^3.2.8",
+        "caniuse-lite": "^1.0.30000856",
+        "normalize-range": "^0.1.2",
+        "num2fraction": "^1.2.2",
+        "postcss": "^6.0.22",
+        "postcss-value-parser": "^3.2.3"
+      }
+    },
+    "aws-sign2": {
+      "version": "0.7.0",
+      "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz",
+      "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=",
+      "dev": true
+    },
+    "aws4": {
+      "version": "1.7.0",
+      "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.7.0.tgz",
+      "integrity": "sha512-32NDda82rhwD9/JBCCkB+MRYDp0oSvlo2IL6rQWA10PQi7tDUM3eqMSltXmY+Oyl/7N3P3qNtAlv7X0d9bI28w==",
+      "dev": true
+    },
+    "babel-code-frame": {
+      "version": "6.26.0",
+      "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz",
+      "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=",
+      "dev": true,
+      "requires": {
+        "chalk": "^1.1.3",
+        "esutils": "^2.0.2",
+        "js-tokens": "^3.0.2"
+      },
+      "dependencies": {
+        "ansi-styles": {
+          "version": "2.2.1",
+          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
+          "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
+          "dev": true
+        },
+        "chalk": {
+          "version": "1.1.3",
+          "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
+          "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
+          "dev": true,
+          "requires": {
+            "ansi-styles": "^2.2.1",
+            "escape-string-regexp": "^1.0.2",
+            "has-ansi": "^2.0.0",
+            "strip-ansi": "^3.0.0",
+            "supports-color": "^2.0.0"
+          }
+        },
+        "supports-color": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
+          "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
+          "dev": true
+        }
+      }
+    },
+    "babel-generator": {
+      "version": "6.26.1",
+      "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.1.tgz",
+      "integrity": "sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA==",
+      "dev": true,
+      "requires": {
+        "babel-messages": "^6.23.0",
+        "babel-runtime": "^6.26.0",
+        "babel-types": "^6.26.0",
+        "detect-indent": "^4.0.0",
+        "jsesc": "^1.3.0",
+        "lodash": "^4.17.4",
+        "source-map": "^0.5.7",
+        "trim-right": "^1.0.1"
+      }
+    },
+    "babel-messages": {
+      "version": "6.23.0",
+      "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz",
+      "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=",
+      "dev": true,
+      "requires": {
+        "babel-runtime": "^6.22.0"
+      }
+    },
+    "babel-runtime": {
+      "version": "6.26.0",
+      "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz",
+      "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=",
+      "dev": true,
+      "requires": {
+        "core-js": "^2.4.0",
+        "regenerator-runtime": "^0.11.0"
+      }
+    },
+    "babel-template": {
+      "version": "6.26.0",
+      "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz",
+      "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=",
+      "dev": true,
+      "requires": {
+        "babel-runtime": "^6.26.0",
+        "babel-traverse": "^6.26.0",
+        "babel-types": "^6.26.0",
+        "babylon": "^6.18.0",
+        "lodash": "^4.17.4"
+      }
+    },
+    "babel-traverse": {
+      "version": "6.26.0",
+      "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz",
+      "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=",
+      "dev": true,
+      "requires": {
+        "babel-code-frame": "^6.26.0",
+        "babel-messages": "^6.23.0",
+        "babel-runtime": "^6.26.0",
+        "babel-types": "^6.26.0",
+        "babylon": "^6.18.0",
+        "debug": "^2.6.8",
+        "globals": "^9.18.0",
+        "invariant": "^2.2.2",
+        "lodash": "^4.17.4"
+      }
+    },
+    "babel-types": {
+      "version": "6.26.0",
+      "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz",
+      "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=",
+      "dev": true,
+      "requires": {
+        "babel-runtime": "^6.26.0",
+        "esutils": "^2.0.2",
+        "lodash": "^4.17.4",
+        "to-fast-properties": "^1.0.3"
+      }
+    },
+    "babylon": {
+      "version": "6.18.0",
+      "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz",
+      "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==",
+      "dev": true
+    },
+    "backo2": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz",
+      "integrity": "sha1-MasayLEpNjRj41s+u2n038+6eUc=",
+      "dev": true
+    },
+    "balanced-match": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
+      "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=",
+      "dev": true
+    },
+    "base": {
+      "version": "0.11.2",
+      "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz",
+      "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==",
+      "dev": true,
+      "requires": {
+        "cache-base": "^1.0.1",
+        "class-utils": "^0.3.5",
+        "component-emitter": "^1.2.1",
+        "define-property": "^1.0.0",
+        "isobject": "^3.0.1",
+        "mixin-deep": "^1.2.0",
+        "pascalcase": "^0.1.1"
+      },
+      "dependencies": {
+        "define-property": {
+          "version": "1.0.0",
+          "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
+          "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
+          "dev": true,
+          "requires": {
+            "is-descriptor": "^1.0.0"
+          }
+        },
+        "is-accessor-descriptor": {
+          "version": "1.0.0",
+          "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
+          "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
+          "dev": true,
+          "requires": {
+            "kind-of": "^6.0.0"
+          }
+        },
+        "is-data-descriptor": {
+          "version": "1.0.0",
+          "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
+          "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
+          "dev": true,
+          "requires": {
+            "kind-of": "^6.0.0"
+          }
+        },
+        "is-descriptor": {
+          "version": "1.0.2",
+          "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
+          "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
+          "dev": true,
+          "requires": {
+            "is-accessor-descriptor": "^1.0.0",
+            "is-data-descriptor": "^1.0.0",
+            "kind-of": "^6.0.2"
+          }
+        }
+      }
+    },
+    "base64-arraybuffer": {
+      "version": "0.1.5",
+      "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz",
+      "integrity": "sha1-c5JncZI7Whl0etZmqlzUv5xunOg=",
+      "dev": true
+    },
+    "base64-js": {
+      "version": "1.3.0",
+      "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.0.tgz",
+      "integrity": "sha512-ccav/yGvoa80BQDljCxsmmQ3Xvx60/UpBIij5QN21W3wBi/hhIC9OoO+KLpu9IJTS9j4DRVJ3aDDF9cMSoa2lw==",
+      "dev": true
+    },
+    "base64id": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/base64id/-/base64id-1.0.0.tgz",
+      "integrity": "sha1-R2iMuZu2gE8OBtPnY7HDLlfY5rY=",
+      "dev": true
+    },
+    "batch": {
+      "version": "0.6.1",
+      "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz",
+      "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=",
+      "dev": true
+    },
+    "bcrypt-pbkdf": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz",
+      "integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=",
+      "dev": true,
+      "optional": true,
+      "requires": {
+        "tweetnacl": "^0.14.3"
+      }
+    },
+    "better-assert": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/better-assert/-/better-assert-1.0.2.tgz",
+      "integrity": "sha1-QIZrnhueC1W0gYlDEeaPr/rrxSI=",
+      "dev": true,
+      "requires": {
+        "callsite": "1.0.0"
+      }
+    },
+    "big.js": {
+      "version": "3.2.0",
+      "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz",
+      "integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==",
+      "dev": true
+    },
+    "binary-extensions": {
+      "version": "1.11.0",
+      "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.11.0.tgz",
+      "integrity": "sha1-RqoXUftqL5PuXmibsQh9SxTGwgU=",
+      "dev": true
+    },
+    "blob": {
+      "version": "0.0.4",
+      "resolved": "https://registry.npmjs.org/blob/-/blob-0.0.4.tgz",
+      "integrity": "sha1-vPEwUspURj8w+fx+lbmkdjCpSSE=",
+      "dev": true
+    },
+    "block-stream": {
+      "version": "0.0.9",
+      "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz",
+      "integrity": "sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=",
+      "dev": true,
+      "optional": true,
+      "requires": {
+        "inherits": "~2.0.0"
+      }
+    },
+    "blocking-proxy": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/blocking-proxy/-/blocking-proxy-1.0.1.tgz",
+      "integrity": "sha512-KE8NFMZr3mN2E0HcvCgRtX7DjhiIQrwle+nSVJVC/yqFb9+xznHl2ZcoBp2L9qzkI4t4cBFJ1efXF8Dwi132RA==",
+      "dev": true,
+      "requires": {
+        "minimist": "^1.2.0"
+      },
+      "dependencies": {
+        "minimist": {
+          "version": "1.2.0",
+          "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
+          "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=",
+          "dev": true
+        }
+      }
+    },
+    "bluebird": {
+      "version": "3.5.1",
+      "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.1.tgz",
+      "integrity": "sha512-MKiLiV+I1AA596t9w1sQJ8jkiSr5+ZKi0WKrYGUn6d1Fx+Ij4tIj+m2WMQSGczs5jZVxV339chE8iwk6F64wjA==",
+      "dev": true
+    },
+    "bn.js": {
+      "version": "4.11.8",
+      "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz",
+      "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==",
+      "dev": true
+    },
+    "body-parser": {
+      "version": "1.18.2",
+      "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.18.2.tgz",
+      "integrity": "sha1-h2eKGdhLR9hZuDGZvVm84iKxBFQ=",
+      "dev": true,
+      "requires": {
+        "bytes": "3.0.0",
+        "content-type": "~1.0.4",
+        "debug": "2.6.9",
+        "depd": "~1.1.1",
+        "http-errors": "~1.6.2",
+        "iconv-lite": "0.4.19",
+        "on-finished": "~2.3.0",
+        "qs": "6.5.1",
+        "raw-body": "2.3.2",
+        "type-is": "~1.6.15"
+      },
+      "dependencies": {
+        "qs": {
+          "version": "6.5.1",
+          "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz",
+          "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A==",
+          "dev": true
+        }
+      }
+    },
+    "bonjour": {
+      "version": "3.5.0",
+      "resolved": "https://registry.npmjs.org/bonjour/-/bonjour-3.5.0.tgz",
+      "integrity": "sha1-jokKGD2O6aI5OzhExpGkK897yfU=",
+      "dev": true,
+      "requires": {
+        "array-flatten": "^2.1.0",
+        "deep-equal": "^1.0.1",
+        "dns-equal": "^1.0.0",
+        "dns-txt": "^2.0.2",
+        "multicast-dns": "^6.0.1",
+        "multicast-dns-service-types": "^1.1.0"
+      }
+    },
+    "boolbase": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz",
+      "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=",
+      "dev": true
+    },
+    "boom": {
+      "version": "2.10.1",
+      "resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz",
+      "integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=",
+      "dev": true,
+      "requires": {
+        "hoek": "2.x.x"
+      }
+    },
+    "brace-expansion": {
+      "version": "1.1.11",
+      "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
+      "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+      "dev": true,
+      "requires": {
+        "balanced-match": "^1.0.0",
+        "concat-map": "0.0.1"
+      }
+    },
+    "braces": {
+      "version": "2.3.2",
+      "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz",
+      "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
+      "dev": true,
+      "requires": {
+        "arr-flatten": "^1.1.0",
+        "array-unique": "^0.3.2",
+        "extend-shallow": "^2.0.1",
+        "fill-range": "^4.0.0",
+        "isobject": "^3.0.1",
+        "repeat-element": "^1.1.2",
+        "snapdragon": "^0.8.1",
+        "snapdragon-node": "^2.0.1",
+        "split-string": "^3.0.2",
+        "to-regex": "^3.0.1"
+      },
+      "dependencies": {
+        "extend-shallow": {
+          "version": "2.0.1",
+          "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+          "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+          "dev": true,
+          "requires": {
+            "is-extendable": "^0.1.0"
+          }
+        }
+      }
+    },
+    "brorand": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz",
+      "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=",
+      "dev": true
+    },
+    "browserify-aes": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz",
+      "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==",
+      "dev": true,
+      "requires": {
+        "buffer-xor": "^1.0.3",
+        "cipher-base": "^1.0.0",
+        "create-hash": "^1.1.0",
+        "evp_bytestokey": "^1.0.3",
+        "inherits": "^2.0.1",
+        "safe-buffer": "^5.0.1"
+      }
+    },
+    "browserify-cipher": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz",
+      "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==",
+      "dev": true,
+      "requires": {
+        "browserify-aes": "^1.0.4",
+        "browserify-des": "^1.0.0",
+        "evp_bytestokey": "^1.0.0"
+      }
+    },
+    "browserify-des": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.1.tgz",
+      "integrity": "sha512-zy0Cobe3hhgpiOM32Tj7KQ3Vl91m0njwsjzZQK1L+JDf11dzP9qIvjreVinsvXrgfjhStXwUWAEpB9D7Gwmayw==",
+      "dev": true,
+      "requires": {
+        "cipher-base": "^1.0.1",
+        "des.js": "^1.0.0",
+        "inherits": "^2.0.1"
+      }
+    },
+    "browserify-rsa": {
+      "version": "4.0.1",
+      "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz",
+      "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=",
+      "dev": true,
+      "requires": {
+        "bn.js": "^4.1.0",
+        "randombytes": "^2.0.1"
+      }
+    },
+    "browserify-sign": {
+      "version": "4.0.4",
+      "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.4.tgz",
+      "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=",
+      "dev": true,
+      "requires": {
+        "bn.js": "^4.1.1",
+        "browserify-rsa": "^4.0.0",
+        "create-hash": "^1.1.0",
+        "create-hmac": "^1.1.2",
+        "elliptic": "^6.0.0",
+        "inherits": "^2.0.1",
+        "parse-asn1": "^5.0.0"
+      }
+    },
+    "browserify-zlib": {
+      "version": "0.2.0",
+      "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz",
+      "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==",
+      "dev": true,
+      "requires": {
+        "pako": "~1.0.5"
+      }
+    },
+    "browserslist": {
+      "version": "3.2.8",
+      "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-3.2.8.tgz",
+      "integrity": "sha512-WHVocJYavUwVgVViC0ORikPHQquXwVh939TaelZ4WDqpWgTX/FsGhl/+P4qBUAGcRvtOgDgC+xftNWWp2RUTAQ==",
+      "dev": true,
+      "requires": {
+        "caniuse-lite": "^1.0.30000844",
+        "electron-to-chromium": "^1.3.47"
+      }
+    },
+    "buffer": {
+      "version": "4.9.1",
+      "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz",
+      "integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=",
+      "dev": true,
+      "requires": {
+        "base64-js": "^1.0.2",
+        "ieee754": "^1.1.4",
+        "isarray": "^1.0.0"
+      }
+    },
+    "buffer-from": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.0.tgz",
+      "integrity": "sha512-c5mRlguI/Pe2dSZmpER62rSCu0ryKmWddzRYsuXc50U2/g8jMOulc31VZMa4mYx31U5xsmSOpDCgH88Vl9cDGQ==",
+      "dev": true
+    },
+    "buffer-indexof": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/buffer-indexof/-/buffer-indexof-1.1.1.tgz",
+      "integrity": "sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g==",
+      "dev": true
+    },
+    "buffer-xor": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz",
+      "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=",
+      "dev": true
+    },
+    "builtin-modules": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz",
+      "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=",
+      "dev": true
+    },
+    "builtin-status-codes": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz",
+      "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=",
+      "dev": true
+    },
+    "builtins": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/builtins/-/builtins-1.0.3.tgz",
+      "integrity": "sha1-y5T662HIaWRR2zZTThQi+U8K7og=",
+      "dev": true
+    },
+    "bytes": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz",
+      "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=",
+      "dev": true
+    },
+    "cacache": {
+      "version": "10.0.4",
+      "resolved": "https://registry.npmjs.org/cacache/-/cacache-10.0.4.tgz",
+      "integrity": "sha512-Dph0MzuH+rTQzGPNT9fAnrPmMmjKfST6trxJeK7NQuHRaVw24VzPRWTmg9MpcwOVQZO0E1FBICUlFeNaKPIfHA==",
+      "dev": true,
+      "requires": {
+        "bluebird": "^3.5.1",
+        "chownr": "^1.0.1",
+        "glob": "^7.1.2",
+        "graceful-fs": "^4.1.11",
+        "lru-cache": "^4.1.1",
+        "mississippi": "^2.0.0",
+        "mkdirp": "^0.5.1",
+        "move-concurrently": "^1.0.1",
+        "promise-inflight": "^1.0.1",
+        "rimraf": "^2.6.2",
+        "ssri": "^5.2.4",
+        "unique-filename": "^1.1.0",
+        "y18n": "^4.0.0"
+      }
+    },
+    "cache-base": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz",
+      "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==",
+      "dev": true,
+      "requires": {
+        "collection-visit": "^1.0.0",
+        "component-emitter": "^1.2.1",
+        "get-value": "^2.0.6",
+        "has-value": "^1.0.0",
+        "isobject": "^3.0.1",
+        "set-value": "^2.0.0",
+        "to-object-path": "^0.3.0",
+        "union-value": "^1.0.0",
+        "unset-value": "^1.0.0"
+      }
+    },
+    "cache-loader": {
+      "version": "1.2.2",
+      "resolved": "https://registry.npmjs.org/cache-loader/-/cache-loader-1.2.2.tgz",
+      "integrity": "sha512-rsGh4SIYyB9glU+d0OcHwiXHXBoUgDhHZaQ1KAbiXqfz1CDPxtTboh1gPbJ0q2qdO8a9lfcjgC5CJ2Ms32y5bw==",
+      "dev": true,
+      "requires": {
+        "loader-utils": "^1.1.0",
+        "mkdirp": "^0.5.1",
+        "neo-async": "^2.5.0",
+        "schema-utils": "^0.4.2"
+      }
+    },
+    "callsite": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/callsite/-/callsite-1.0.0.tgz",
+      "integrity": "sha1-KAOY5dZkvXQDi28JBRU+borxvCA=",
+      "dev": true
+    },
+    "camel-case": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-3.0.0.tgz",
+      "integrity": "sha1-yjw2iKTpzzpM2nd9xNy8cTJJz3M=",
+      "dev": true,
+      "requires": {
+        "no-case": "^2.2.0",
+        "upper-case": "^1.1.1"
+      }
+    },
+    "camelcase": {
+      "version": "1.2.1",
+      "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz",
+      "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=",
+      "dev": true,
+      "optional": true
+    },
+    "camelcase-keys": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz",
+      "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=",
+      "dev": true,
+      "requires": {
+        "camelcase": "^2.0.0",
+        "map-obj": "^1.0.0"
+      },
+      "dependencies": {
+        "camelcase": {
+          "version": "2.1.1",
+          "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz",
+          "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=",
+          "dev": true
+        }
+      }
+    },
+    "caniuse-lite": {
+      "version": "1.0.30000856",
+      "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000856.tgz",
+      "integrity": "sha512-x3mYcApHMQemyaHuH/RyqtKCGIYTgEA63fdi+VBvDz8xUSmRiVWTLeyKcoGQCGG6UPR9/+4qG4OKrTa6aSQRKg==",
+      "dev": true
+    },
+    "caseless": {
+      "version": "0.12.0",
+      "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz",
+      "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=",
+      "dev": true
+    },
+    "center-align": {
+      "version": "0.1.3",
+      "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz",
+      "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=",
+      "dev": true,
+      "optional": true,
+      "requires": {
+        "align-text": "^0.1.3",
+        "lazy-cache": "^1.0.3"
+      }
+    },
+    "chalk": {
+      "version": "2.2.2",
+      "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.2.2.tgz",
+      "integrity": "sha512-LvixLAQ4MYhbf7hgL4o5PeK32gJKvVzDRiSNIApDofQvyhl8adgG2lJVXn4+ekQoK7HL9RF8lqxwerpe0x2pCw==",
+      "dev": true,
+      "requires": {
+        "ansi-styles": "^3.1.0",
+        "escape-string-regexp": "^1.0.5",
+        "supports-color": "^4.0.0"
+      },
+      "dependencies": {
+        "has-flag": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz",
+          "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=",
+          "dev": true
+        },
+        "supports-color": {
+          "version": "4.5.0",
+          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz",
+          "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=",
+          "dev": true,
+          "requires": {
+            "has-flag": "^2.0.0"
+          }
+        }
+      }
+    },
+    "chokidar": {
+      "version": "2.0.4",
+      "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.0.4.tgz",
+      "integrity": "sha512-z9n7yt9rOvIJrMhvDtDictKrkFHeihkNl6uWMmZlmL6tJtX9Cs+87oK+teBx+JIgzvbX3yZHT3eF8vpbDxHJXQ==",
+      "dev": true,
+      "requires": {
+        "anymatch": "^2.0.0",
+        "async-each": "^1.0.0",
+        "braces": "^2.3.0",
+        "fsevents": "^1.2.2",
+        "glob-parent": "^3.1.0",
+        "inherits": "^2.0.1",
+        "is-binary-path": "^1.0.0",
+        "is-glob": "^4.0.0",
+        "lodash.debounce": "^4.0.8",
+        "normalize-path": "^2.1.1",
+        "path-is-absolute": "^1.0.0",
+        "readdirp": "^2.0.0",
+        "upath": "^1.0.5"
+      }
+    },
+    "chownr": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.0.1.tgz",
+      "integrity": "sha1-4qdQQqlVGQi+vSW4Uj1fl2nXkYE=",
+      "dev": true
+    },
+    "chrome-trace-event": {
+      "version": "0.1.3",
+      "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-0.1.3.tgz",
+      "integrity": "sha512-sjndyZHrrWiu4RY7AkHgjn80GfAM2ZSzUkZLV/Js59Ldmh6JDThf0SUmOHU53rFu2rVxxfCzJ30Ukcfch3Gb/A==",
+      "dev": true
+    },
+    "cipher-base": {
+      "version": "1.0.4",
+      "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz",
+      "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==",
+      "dev": true,
+      "requires": {
+        "inherits": "^2.0.1",
+        "safe-buffer": "^5.0.1"
+      }
+    },
+    "circular-dependency-plugin": {
+      "version": "5.0.2",
+      "resolved": "https://registry.npmjs.org/circular-dependency-plugin/-/circular-dependency-plugin-5.0.2.tgz",
+      "integrity": "sha512-oC7/DVAyfcY3UWKm0sN/oVoDedQDQiw/vIiAnuTWTpE5s0zWf7l3WY417Xw/Fbi/QbAjctAkxgMiS9P0s3zkmA==",
+      "dev": true
+    },
+    "class-utils": {
+      "version": "0.3.6",
+      "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz",
+      "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==",
+      "dev": true,
+      "requires": {
+        "arr-union": "^3.1.0",
+        "define-property": "^0.2.5",
+        "isobject": "^3.0.0",
+        "static-extend": "^0.1.1"
+      },
+      "dependencies": {
+        "define-property": {
+          "version": "0.2.5",
+          "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
+          "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
+          "dev": true,
+          "requires": {
+            "is-descriptor": "^0.1.0"
+          }
+        }
+      }
+    },
+    "clean-css": {
+      "version": "4.1.11",
+      "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.1.11.tgz",
+      "integrity": "sha1-Ls3xRaujj1R0DybO/Q/z4D4SXWo=",
+      "dev": true,
+      "requires": {
+        "source-map": "0.5.x"
+      }
+    },
+    "cliui": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz",
+      "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=",
+      "dev": true,
+      "optional": true,
+      "requires": {
+        "center-align": "^0.1.1",
+        "right-align": "^0.1.1",
+        "wordwrap": "0.0.2"
+      },
+      "dependencies": {
+        "wordwrap": {
+          "version": "0.0.2",
+          "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz",
+          "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=",
+          "dev": true,
+          "optional": true
+        }
+      }
+    },
+    "clone": {
+      "version": "2.1.1",
+      "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.1.tgz",
+      "integrity": "sha1-0hfR6WERjjrJpLi7oyhVU79kfNs=",
+      "dev": true
+    },
+    "clone-deep": {
+      "version": "2.0.2",
+      "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-2.0.2.tgz",
+      "integrity": "sha512-SZegPTKjCgpQH63E+eN6mVEEPdQBOUzjyJm5Pora4lrwWRFS8I0QAxV/KD6vV/i0WuijHZWQC1fMsPEdxfdVCQ==",
+      "dev": true,
+      "requires": {
+        "for-own": "^1.0.0",
+        "is-plain-object": "^2.0.4",
+        "kind-of": "^6.0.0",
+        "shallow-clone": "^1.0.0"
+      }
+    },
+    "co": {
+      "version": "4.6.0",
+      "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz",
+      "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=",
+      "dev": true
+    },
+    "code-point-at": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz",
+      "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=",
+      "dev": true
+    },
+    "codelyzer": {
+      "version": "4.2.1",
+      "resolved": "https://registry.npmjs.org/codelyzer/-/codelyzer-4.2.1.tgz",
+      "integrity": "sha512-CKwfgpfkqi9dyzy4s6ELaxJ54QgJ6A8iTSsM4bzHbLuTpbKncvNc3DUlCvpnkHBhK47gEf4qFsWoYqLrJPhy6g==",
+      "dev": true,
+      "requires": {
+        "app-root-path": "^2.0.1",
+        "css-selector-tokenizer": "^0.7.0",
+        "cssauron": "^1.4.0",
+        "semver-dsl": "^1.0.1",
+        "source-map": "^0.5.6",
+        "sprintf-js": "^1.0.3"
+      }
+    },
+    "collection-visit": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz",
+      "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=",
+      "dev": true,
+      "requires": {
+        "map-visit": "^1.0.0",
+        "object-visit": "^1.0.0"
+      }
+    },
+    "color-convert": {
+      "version": "1.9.2",
+      "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.2.tgz",
+      "integrity": "sha512-3NUJZdhMhcdPn8vJ9v2UQJoH0qqoGUkYTgFEPZaPjEtwmmKUfNV46zZmgB2M5M4DCEQHMaCfWHCxiBflLm04Tg==",
+      "dev": true,
+      "requires": {
+        "color-name": "1.1.1"
+      }
+    },
+    "color-name": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.1.tgz",
+      "integrity": "sha1-SxQVMEz1ACjqgWQ2Q72C6gWANok=",
+      "dev": true
+    },
+    "colors": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz",
+      "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=",
+      "dev": true
+    },
+    "combine-lists": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/combine-lists/-/combine-lists-1.0.1.tgz",
+      "integrity": "sha1-RYwH4J4NkA/Ci3Cj/sLazR0st/Y=",
+      "dev": true,
+      "requires": {
+        "lodash": "^4.5.0"
+      }
+    },
+    "combined-stream": {
+      "version": "1.0.6",
+      "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.6.tgz",
+      "integrity": "sha1-cj599ugBrFYTETp+RFqbactjKBg=",
+      "dev": true,
+      "requires": {
+        "delayed-stream": "~1.0.0"
+      }
+    },
+    "commander": {
+      "version": "2.15.1",
+      "resolved": "https://registry.npmjs.org/commander/-/commander-2.15.1.tgz",
+      "integrity": "sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag==",
+      "dev": true
+    },
+    "commondir": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz",
+      "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=",
+      "dev": true
+    },
+    "compare-versions": {
+      "version": "3.3.0",
+      "resolved": "https://registry.npmjs.org/compare-versions/-/compare-versions-3.3.0.tgz",
+      "integrity": "sha512-MAAAIOdi2s4Gl6rZ76PNcUa9IOYB+5ICdT41o5uMRf09aEu/F9RK+qhe8RjXNPwcTjGV7KU7h2P/fljThFVqyQ==",
+      "dev": true
+    },
+    "component-bind": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/component-bind/-/component-bind-1.0.0.tgz",
+      "integrity": "sha1-AMYIq33Nk4l8AAllGx06jh5zu9E=",
+      "dev": true
+    },
+    "component-emitter": {
+      "version": "1.2.1",
+      "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz",
+      "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=",
+      "dev": true
+    },
+    "component-inherit": {
+      "version": "0.0.3",
+      "resolved": "https://registry.npmjs.org/component-inherit/-/component-inherit-0.0.3.tgz",
+      "integrity": "sha1-ZF/ErfWLcrZJ1crmUTVhnbJv8UM=",
+      "dev": true
+    },
+    "compressible": {
+      "version": "2.0.14",
+      "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.14.tgz",
+      "integrity": "sha1-MmxfUH+7BV9UEWeCuWmoG2einac=",
+      "dev": true,
+      "requires": {
+        "mime-db": ">= 1.34.0 < 2"
+      },
+      "dependencies": {
+        "mime-db": {
+          "version": "1.34.0",
+          "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.34.0.tgz",
+          "integrity": "sha1-RS0Oz/XDA0am3B5kseruDTcZ/5o=",
+          "dev": true
+        }
+      }
+    },
+    "compression": {
+      "version": "1.7.2",
+      "resolved": "http://registry.npmjs.org/compression/-/compression-1.7.2.tgz",
+      "integrity": "sha1-qv+81qr4VLROuygDU9WtFlH1mmk=",
+      "dev": true,
+      "requires": {
+        "accepts": "~1.3.4",
+        "bytes": "3.0.0",
+        "compressible": "~2.0.13",
+        "debug": "2.6.9",
+        "on-headers": "~1.0.1",
+        "safe-buffer": "5.1.1",
+        "vary": "~1.1.2"
+      },
+      "dependencies": {
+        "safe-buffer": {
+          "version": "5.1.1",
+          "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz",
+          "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==",
+          "dev": true
+        }
+      }
+    },
+    "concat-map": {
+      "version": "0.0.1",
+      "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
+      "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
+      "dev": true
+    },
+    "concat-stream": {
+      "version": "1.6.2",
+      "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz",
+      "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==",
+      "dev": true,
+      "requires": {
+        "buffer-from": "^1.0.0",
+        "inherits": "^2.0.3",
+        "readable-stream": "^2.2.2",
+        "typedarray": "^0.0.6"
+      }
+    },
+    "connect": {
+      "version": "3.6.6",
+      "resolved": "https://registry.npmjs.org/connect/-/connect-3.6.6.tgz",
+      "integrity": "sha1-Ce/2xVr3I24TcTWnJXSFi2eG9SQ=",
+      "dev": true,
+      "requires": {
+        "debug": "2.6.9",
+        "finalhandler": "1.1.0",
+        "parseurl": "~1.3.2",
+        "utils-merge": "1.0.1"
+      },
+      "dependencies": {
+        "finalhandler": {
+          "version": "1.1.0",
+          "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.0.tgz",
+          "integrity": "sha1-zgtoVbRYU+eRsvzGgARtiCU91/U=",
+          "dev": true,
+          "requires": {
+            "debug": "2.6.9",
+            "encodeurl": "~1.0.1",
+            "escape-html": "~1.0.3",
+            "on-finished": "~2.3.0",
+            "parseurl": "~1.3.2",
+            "statuses": "~1.3.1",
+            "unpipe": "~1.0.0"
+          }
+        },
+        "statuses": {
+          "version": "1.3.1",
+          "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz",
+          "integrity": "sha1-+vUbnrdKrvOzrPStX2Gr8ky3uT4=",
+          "dev": true
+        }
+      }
+    },
+    "connect-history-api-fallback": {
+      "version": "1.5.0",
+      "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.5.0.tgz",
+      "integrity": "sha1-sGhzk0vF40T+9hGhlqb6rgruAVo=",
+      "dev": true
+    },
+    "console-browserify": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz",
+      "integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=",
+      "dev": true,
+      "requires": {
+        "date-now": "^0.1.4"
+      }
+    },
+    "console-control-strings": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz",
+      "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=",
+      "dev": true
+    },
+    "constants-browserify": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz",
+      "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=",
+      "dev": true
+    },
+    "content-disposition": {
+      "version": "0.5.2",
+      "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz",
+      "integrity": "sha1-DPaLud318r55YcOoUXjLhdunjLQ=",
+      "dev": true
+    },
+    "content-type": {
+      "version": "1.0.4",
+      "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz",
+      "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==",
+      "dev": true
+    },
+    "convert-source-map": {
+      "version": "1.5.1",
+      "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.1.tgz",
+      "integrity": "sha1-uCeAl7m8IpNl3lxiz1/K7YtVmeU=",
+      "dev": true
+    },
+    "cookie": {
+      "version": "0.3.1",
+      "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz",
+      "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=",
+      "dev": true
+    },
+    "cookie-signature": {
+      "version": "1.0.6",
+      "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
+      "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=",
+      "dev": true
+    },
+    "copy-concurrently": {
+      "version": "1.0.5",
+      "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz",
+      "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==",
+      "dev": true,
+      "requires": {
+        "aproba": "^1.1.1",
+        "fs-write-stream-atomic": "^1.0.8",
+        "iferr": "^0.1.5",
+        "mkdirp": "^0.5.1",
+        "rimraf": "^2.5.4",
+        "run-queue": "^1.0.0"
+      }
+    },
+    "copy-descriptor": {
+      "version": "0.1.1",
+      "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz",
+      "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=",
+      "dev": true
+    },
+    "copy-webpack-plugin": {
+      "version": "4.5.1",
+      "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-4.5.1.tgz",
+      "integrity": "sha512-OlTo6DYg0XfTKOF8eLf79wcHm4Ut10xU2cRBRPMW/NA5F9VMjZGTfRHWDIYC3s+1kObGYrBLshXWU1K0hILkNQ==",
+      "dev": true,
+      "requires": {
+        "cacache": "^10.0.4",
+        "find-cache-dir": "^1.0.0",
+        "globby": "^7.1.1",
+        "is-glob": "^4.0.0",
+        "loader-utils": "^1.1.0",
+        "minimatch": "^3.0.4",
+        "p-limit": "^1.0.0",
+        "serialize-javascript": "^1.4.0"
+      }
+    },
+    "core-js": {
+      "version": "2.5.7",
+      "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.7.tgz",
+      "integrity": "sha512-RszJCAxg/PP6uzXVXL6BsxSXx/B05oJAQ2vkJRjyjrEcNVycaqOmNb5OTxZPE3xa5gwZduqza6L9JOCenh/Ecw=="
+    },
+    "core-util-is": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
+      "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=",
+      "dev": true
+    },
+    "cosmiconfig": {
+      "version": "2.2.2",
+      "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-2.2.2.tgz",
+      "integrity": "sha512-GiNXLwAFPYHy25XmTPpafYvn3CLAkJ8FLsscq78MQd1Kh0OU6Yzhn4eV2MVF4G9WEQZoWEGltatdR+ntGPMl5A==",
+      "dev": true,
+      "requires": {
+        "is-directory": "^0.3.1",
+        "js-yaml": "^3.4.3",
+        "minimist": "^1.2.0",
+        "object-assign": "^4.1.0",
+        "os-homedir": "^1.0.1",
+        "parse-json": "^2.2.0",
+        "require-from-string": "^1.1.0"
+      },
+      "dependencies": {
+        "minimist": {
+          "version": "1.2.0",
+          "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
+          "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=",
+          "dev": true
+        }
+      }
+    },
+    "create-ecdh": {
+      "version": "4.0.3",
+      "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.3.tgz",
+      "integrity": "sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw==",
+      "dev": true,
+      "requires": {
+        "bn.js": "^4.1.0",
+        "elliptic": "^6.0.0"
+      }
+    },
+    "create-hash": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz",
+      "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==",
+      "dev": true,
+      "requires": {
+        "cipher-base": "^1.0.1",
+        "inherits": "^2.0.1",
+        "md5.js": "^1.3.4",
+        "ripemd160": "^2.0.1",
+        "sha.js": "^2.4.0"
+      }
+    },
+    "create-hmac": {
+      "version": "1.1.7",
+      "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz",
+      "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==",
+      "dev": true,
+      "requires": {
+        "cipher-base": "^1.0.3",
+        "create-hash": "^1.1.0",
+        "inherits": "^2.0.1",
+        "ripemd160": "^2.0.0",
+        "safe-buffer": "^5.0.1",
+        "sha.js": "^2.4.8"
+      }
+    },
+    "cross-spawn": {
+      "version": "3.0.1",
+      "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-3.0.1.tgz",
+      "integrity": "sha1-ElYDfsufDF9549bvE14wdwGEuYI=",
+      "dev": true,
+      "optional": true,
+      "requires": {
+        "lru-cache": "^4.0.1",
+        "which": "^1.2.9"
+      }
+    },
+    "cryptiles": {
+      "version": "2.0.5",
+      "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz",
+      "integrity": "sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=",
+      "dev": true,
+      "requires": {
+        "boom": "2.x.x"
+      }
+    },
+    "crypto-browserify": {
+      "version": "3.12.0",
+      "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz",
+      "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==",
+      "dev": true,
+      "requires": {
+        "browserify-cipher": "^1.0.0",
+        "browserify-sign": "^4.0.0",
+        "create-ecdh": "^4.0.0",
+        "create-hash": "^1.1.0",
+        "create-hmac": "^1.1.0",
+        "diffie-hellman": "^5.0.0",
+        "inherits": "^2.0.1",
+        "pbkdf2": "^3.0.3",
+        "public-encrypt": "^4.0.0",
+        "randombytes": "^2.0.0",
+        "randomfill": "^1.0.3"
+      }
+    },
+    "css-parse": {
+      "version": "1.7.0",
+      "resolved": "https://registry.npmjs.org/css-parse/-/css-parse-1.7.0.tgz",
+      "integrity": "sha1-Mh9s9zeCpv91ERE5D8BeLGV9jJs=",
+      "dev": true
+    },
+    "css-select": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz",
+      "integrity": "sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=",
+      "dev": true,
+      "requires": {
+        "boolbase": "~1.0.0",
+        "css-what": "2.1",
+        "domutils": "1.5.1",
+        "nth-check": "~1.0.1"
+      }
+    },
+    "css-selector-tokenizer": {
+      "version": "0.7.0",
+      "resolved": "https://registry.npmjs.org/css-selector-tokenizer/-/css-selector-tokenizer-0.7.0.tgz",
+      "integrity": "sha1-5piEdK6MlTR3v15+/s/OzNnPTIY=",
+      "dev": true,
+      "requires": {
+        "cssesc": "^0.1.0",
+        "fastparse": "^1.1.1",
+        "regexpu-core": "^1.0.0"
+      }
+    },
+    "css-what": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/css-what/-/css-what-2.1.0.tgz",
+      "integrity": "sha1-lGfQMsOM+u+58teVASUwYvh/ob0=",
+      "dev": true
+    },
+    "cssauron": {
+      "version": "1.4.0",
+      "resolved": "https://registry.npmjs.org/cssauron/-/cssauron-1.4.0.tgz",
+      "integrity": "sha1-pmAt/34EqDBtwNuaVR6S6LVmKtg=",
+      "dev": true,
+      "requires": {
+        "through": "X.X.X"
+      }
+    },
+    "cssesc": {
+      "version": "0.1.0",
+      "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-0.1.0.tgz",
+      "integrity": "sha1-yBSQPkViM3GgR3tAEJqq++6t27Q=",
+      "dev": true
+    },
+    "cuint": {
+      "version": "0.2.2",
+      "resolved": "https://registry.npmjs.org/cuint/-/cuint-0.2.2.tgz",
+      "integrity": "sha1-QICG1AlVDCYxFVYZ6fp7ytw7mRs=",
+      "dev": true
+    },
+    "currently-unhandled": {
+      "version": "0.4.1",
+      "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz",
+      "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=",
+      "dev": true,
+      "requires": {
+        "array-find-index": "^1.0.1"
+      }
+    },
+    "custom-event": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/custom-event/-/custom-event-1.0.1.tgz",
+      "integrity": "sha1-XQKkaFCt8bSjF5RqOSj8y1v9BCU=",
+      "dev": true
+    },
+    "cyclist": {
+      "version": "0.2.2",
+      "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-0.2.2.tgz",
+      "integrity": "sha1-GzN5LhHpFKL9bW7WRHRkRE5fpkA=",
+      "dev": true
+    },
+    "d": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/d/-/d-1.0.0.tgz",
+      "integrity": "sha1-dUu1v+VUUdpppYuU1F9MWwRi1Y8=",
+      "dev": true,
+      "requires": {
+        "es5-ext": "^0.10.9"
+      }
+    },
+    "dashdash": {
+      "version": "1.14.1",
+      "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz",
+      "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=",
+      "dev": true,
+      "requires": {
+        "assert-plus": "^1.0.0"
+      }
+    },
+    "date-now": {
+      "version": "0.1.4",
+      "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz",
+      "integrity": "sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=",
+      "dev": true
+    },
+    "debug": {
+      "version": "2.6.9",
+      "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+      "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+      "dev": true,
+      "requires": {
+        "ms": "2.0.0"
+      }
+    },
+    "decamelize": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
+      "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=",
+      "dev": true
+    },
+    "decode-uri-component": {
+      "version": "0.2.0",
+      "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz",
+      "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=",
+      "dev": true
+    },
+    "deep-equal": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz",
+      "integrity": "sha1-9dJgKStmDghO/0zbyfCK0yR0SLU=",
+      "dev": true
+    },
+    "deep-is": {
+      "version": "0.1.3",
+      "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz",
+      "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=",
+      "dev": true
+    },
+    "default-require-extensions": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-2.0.0.tgz",
+      "integrity": "sha1-9fj7sYp9bVCyH2QfZJ67Uiz+JPc=",
+      "dev": true,
+      "requires": {
+        "strip-bom": "^3.0.0"
+      },
+      "dependencies": {
+        "strip-bom": {
+          "version": "3.0.0",
+          "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
+          "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=",
+          "dev": true
+        }
+      }
+    },
+    "define-properties": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.2.tgz",
+      "integrity": "sha1-g6c/L+pWmJj7c3GTyPhzyvbUXJQ=",
+      "dev": true,
+      "requires": {
+        "foreach": "^2.0.5",
+        "object-keys": "^1.0.8"
+      }
+    },
+    "define-property": {
+      "version": "2.0.2",
+      "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz",
+      "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==",
+      "dev": true,
+      "requires": {
+        "is-descriptor": "^1.0.2",
+        "isobject": "^3.0.1"
+      },
+      "dependencies": {
+        "is-accessor-descriptor": {
+          "version": "1.0.0",
+          "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
+          "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
+          "dev": true,
+          "requires": {
+            "kind-of": "^6.0.0"
+          }
+        },
+        "is-data-descriptor": {
+          "version": "1.0.0",
+          "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
+          "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
+          "dev": true,
+          "requires": {
+            "kind-of": "^6.0.0"
+          }
+        },
+        "is-descriptor": {
+          "version": "1.0.2",
+          "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
+          "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
+          "dev": true,
+          "requires": {
+            "is-accessor-descriptor": "^1.0.0",
+            "is-data-descriptor": "^1.0.0",
+            "kind-of": "^6.0.2"
+          }
+        }
+      }
+    },
+    "del": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/del/-/del-3.0.0.tgz",
+      "integrity": "sha1-U+z2mf/LyzljdpGrE7rxYIGXZuU=",
+      "dev": true,
+      "requires": {
+        "globby": "^6.1.0",
+        "is-path-cwd": "^1.0.0",
+        "is-path-in-cwd": "^1.0.0",
+        "p-map": "^1.1.1",
+        "pify": "^3.0.0",
+        "rimraf": "^2.2.8"
+      },
+      "dependencies": {
+        "globby": {
+          "version": "6.1.0",
+          "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz",
+          "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=",
+          "dev": true,
+          "requires": {
+            "array-union": "^1.0.1",
+            "glob": "^7.0.3",
+            "object-assign": "^4.0.1",
+            "pify": "^2.0.0",
+            "pinkie-promise": "^2.0.0"
+          },
+          "dependencies": {
+            "pify": {
+              "version": "2.3.0",
+              "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
+              "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
+              "dev": true
+            }
+          }
+        }
+      }
+    },
+    "delayed-stream": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
+      "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=",
+      "dev": true
+    },
+    "delegates": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz",
+      "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=",
+      "dev": true
+    },
+    "depd": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
+      "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=",
+      "dev": true
+    },
+    "des.js": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.0.tgz",
+      "integrity": "sha1-wHTS4qpqipoH29YfmhXCzYPsjsw=",
+      "dev": true,
+      "requires": {
+        "inherits": "^2.0.1",
+        "minimalistic-assert": "^1.0.0"
+      }
+    },
+    "destroy": {
+      "version": "1.0.4",
+      "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz",
+      "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=",
+      "dev": true
+    },
+    "detect-indent": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz",
+      "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=",
+      "dev": true,
+      "requires": {
+        "repeating": "^2.0.0"
+      }
+    },
+    "detect-node": {
+      "version": "2.0.3",
+      "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.0.3.tgz",
+      "integrity": "sha1-ogM8CcyOFY03dI+951B4Mr1s4Sc=",
+      "dev": true
+    },
+    "di": {
+      "version": "0.0.1",
+      "resolved": "https://registry.npmjs.org/di/-/di-0.0.1.tgz",
+      "integrity": "sha1-gGZJMmzqp8qjMG112YXqJ0i6kTw=",
+      "dev": true
+    },
+    "diff": {
+      "version": "3.5.0",
+      "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz",
+      "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==",
+      "dev": true
+    },
+    "diffie-hellman": {
+      "version": "5.0.3",
+      "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz",
+      "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==",
+      "dev": true,
+      "requires": {
+        "bn.js": "^4.1.0",
+        "miller-rabin": "^4.0.0",
+        "randombytes": "^2.0.0"
+      }
+    },
+    "dir-glob": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-2.0.0.tgz",
+      "integrity": "sha512-37qirFDz8cA5fimp9feo43fSuRo2gHwaIn6dXL8Ber1dGwUosDrGZeCCXq57WnIqE4aQ+u3eQZzsk1yOzhdwag==",
+      "dev": true,
+      "requires": {
+        "arrify": "^1.0.1",
+        "path-type": "^3.0.0"
+      }
+    },
+    "dns-equal": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz",
+      "integrity": "sha1-s55/HabrCnW6nBcySzR1PEfgZU0=",
+      "dev": true
+    },
+    "dns-packet": {
+      "version": "1.3.1",
+      "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-1.3.1.tgz",
+      "integrity": "sha512-0UxfQkMhYAUaZI+xrNZOz/as5KgDU0M/fQ9b6SpkyLbk3GEswDi6PADJVaYJradtRVsRIlF1zLyOodbcTCDzUg==",
+      "dev": true,
+      "requires": {
+        "ip": "^1.1.0",
+        "safe-buffer": "^5.0.1"
+      }
+    },
+    "dns-txt": {
+      "version": "2.0.2",
+      "resolved": "https://registry.npmjs.org/dns-txt/-/dns-txt-2.0.2.tgz",
+      "integrity": "sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY=",
+      "dev": true,
+      "requires": {
+        "buffer-indexof": "^1.0.0"
+      }
+    },
+    "dom-converter": {
+      "version": "0.1.4",
+      "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.1.4.tgz",
+      "integrity": "sha1-pF71cnuJDJv/5tfIduexnLDhfzs=",
+      "dev": true,
+      "requires": {
+        "utila": "~0.3"
+      },
+      "dependencies": {
+        "utila": {
+          "version": "0.3.3",
+          "resolved": "https://registry.npmjs.org/utila/-/utila-0.3.3.tgz",
+          "integrity": "sha1-1+jn1+MJEHCSsF+NloiCTWM6QiY=",
+          "dev": true
+        }
+      }
+    },
+    "dom-serialize": {
+      "version": "2.2.1",
+      "resolved": "https://registry.npmjs.org/dom-serialize/-/dom-serialize-2.2.1.tgz",
+      "integrity": "sha1-ViromZ9Evl6jB29UGdzVnrQ6yVs=",
+      "dev": true,
+      "requires": {
+        "custom-event": "~1.0.0",
+        "ent": "~2.2.0",
+        "extend": "^3.0.0",
+        "void-elements": "^2.0.0"
+      }
+    },
+    "dom-serializer": {
+      "version": "0.1.0",
+      "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.0.tgz",
+      "integrity": "sha1-BzxpdUbOB4DOI75KKOKT5AvDDII=",
+      "dev": true,
+      "requires": {
+        "domelementtype": "~1.1.1",
+        "entities": "~1.1.1"
+      },
+      "dependencies": {
+        "domelementtype": {
+          "version": "1.1.3",
+          "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.1.3.tgz",
+          "integrity": "sha1-vSh3PiZCiBrsUVRJJCmcXNgiGFs=",
+          "dev": true
+        }
+      }
+    },
+    "domain-browser": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz",
+      "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==",
+      "dev": true
+    },
+    "domelementtype": {
+      "version": "1.3.0",
+      "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.0.tgz",
+      "integrity": "sha1-sXrtguirWeUt2cGbF1bg/BhyBMI=",
+      "dev": true
+    },
+    "domhandler": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.1.0.tgz",
+      "integrity": "sha1-0mRvXlf2w7qxHPbLBdPArPdBJZQ=",
+      "dev": true,
+      "requires": {
+        "domelementtype": "1"
+      }
+    },
+    "domutils": {
+      "version": "1.5.1",
+      "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz",
+      "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=",
+      "dev": true,
+      "requires": {
+        "dom-serializer": "0",
+        "domelementtype": "1"
+      }
+    },
+    "duplexify": {
+      "version": "3.6.0",
+      "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.6.0.tgz",
+      "integrity": "sha512-fO3Di4tBKJpYTFHAxTU00BcfWMY9w24r/x21a6rZRbsD/ToUgGxsMbiGRmB7uVAXeGKXD9MwiLZa5E97EVgIRQ==",
+      "dev": true,
+      "requires": {
+        "end-of-stream": "^1.0.0",
+        "inherits": "^2.0.1",
+        "readable-stream": "^2.0.0",
+        "stream-shift": "^1.0.0"
+      }
+    },
+    "ecc-jsbn": {
+      "version": "0.1.1",
+      "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz",
+      "integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=",
+      "dev": true,
+      "optional": true,
+      "requires": {
+        "jsbn": "~0.1.0"
+      }
+    },
+    "ee-first": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
+      "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=",
+      "dev": true
+    },
+    "ejs": {
+      "version": "2.6.1",
+      "resolved": "https://registry.npmjs.org/ejs/-/ejs-2.6.1.tgz",
+      "integrity": "sha512-0xy4A/twfrRCnkhfk8ErDi5DqdAsAqeGxht4xkCUrsvhhbQNs7E+4jV0CN7+NKIY0aHE72+XvqtBIXzD31ZbXQ==",
+      "dev": true
+    },
+    "electron-to-chromium": {
+      "version": "1.3.48",
+      "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.48.tgz",
+      "integrity": "sha1-07DYWTgUBE4JLs4hCPw6ya6kuQA=",
+      "dev": true
+    },
+    "elliptic": {
+      "version": "6.4.0",
+      "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.4.0.tgz",
+      "integrity": "sha1-ysmvh2LIWDYYcAPI3+GT5eLq5d8=",
+      "dev": true,
+      "requires": {
+        "bn.js": "^4.4.0",
+        "brorand": "^1.0.1",
+        "hash.js": "^1.0.0",
+        "hmac-drbg": "^1.0.0",
+        "inherits": "^2.0.1",
+        "minimalistic-assert": "^1.0.0",
+        "minimalistic-crypto-utils": "^1.0.0"
+      }
+    },
+    "emojis-list": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz",
+      "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=",
+      "dev": true
+    },
+    "encodeurl": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
+      "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=",
+      "dev": true
+    },
+    "end-of-stream": {
+      "version": "1.4.1",
+      "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz",
+      "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==",
+      "dev": true,
+      "requires": {
+        "once": "^1.4.0"
+      }
+    },
+    "engine.io": {
+      "version": "1.8.3",
+      "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-1.8.3.tgz",
+      "integrity": "sha1-jef5eJXSDTm4X4ju7nd7K9QrE9Q=",
+      "dev": true,
+      "requires": {
+        "accepts": "1.3.3",
+        "base64id": "1.0.0",
+        "cookie": "0.3.1",
+        "debug": "2.3.3",
+        "engine.io-parser": "1.3.2",
+        "ws": "1.1.2"
+      },
+      "dependencies": {
+        "accepts": {
+          "version": "1.3.3",
+          "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.3.tgz",
+          "integrity": "sha1-w8p0NJOGSMPg2cHjKN1otiLChMo=",
+          "dev": true,
+          "requires": {
+            "mime-types": "~2.1.11",
+            "negotiator": "0.6.1"
+          }
+        },
+        "debug": {
+          "version": "2.3.3",
+          "resolved": "https://registry.npmjs.org/debug/-/debug-2.3.3.tgz",
+          "integrity": "sha1-QMRT5n5uE8kB3ewxeviYbNqe/4w=",
+          "dev": true,
+          "requires": {
+            "ms": "0.7.2"
+          }
+        },
+        "ms": {
+          "version": "0.7.2",
+          "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz",
+          "integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U=",
+          "dev": true
+        }
+      }
+    },
+    "engine.io-client": {
+      "version": "1.8.3",
+      "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-1.8.3.tgz",
+      "integrity": "sha1-F5jtk0USRkU9TG9jXXogH+lA1as=",
+      "dev": true,
+      "requires": {
+        "component-emitter": "1.2.1",
+        "component-inherit": "0.0.3",
+        "debug": "2.3.3",
+        "engine.io-parser": "1.3.2",
+        "has-cors": "1.1.0",
+        "indexof": "0.0.1",
+        "parsejson": "0.0.3",
+        "parseqs": "0.0.5",
+        "parseuri": "0.0.5",
+        "ws": "1.1.2",
+        "xmlhttprequest-ssl": "1.5.3",
+        "yeast": "0.1.2"
+      },
+      "dependencies": {
+        "debug": {
+          "version": "2.3.3",
+          "resolved": "https://registry.npmjs.org/debug/-/debug-2.3.3.tgz",
+          "integrity": "sha1-QMRT5n5uE8kB3ewxeviYbNqe/4w=",
+          "dev": true,
+          "requires": {
+            "ms": "0.7.2"
+          }
+        },
+        "ms": {
+          "version": "0.7.2",
+          "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz",
+          "integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U=",
+          "dev": true
+        }
+      }
+    },
+    "engine.io-parser": {
+      "version": "1.3.2",
+      "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-1.3.2.tgz",
+      "integrity": "sha1-k3sHnwAH0Ik+xW1GyyILjLQ1Igo=",
+      "dev": true,
+      "requires": {
+        "after": "0.8.2",
+        "arraybuffer.slice": "0.0.6",
+        "base64-arraybuffer": "0.1.5",
+        "blob": "0.0.4",
+        "has-binary": "0.1.7",
+        "wtf-8": "1.0.0"
+      }
+    },
+    "enhanced-resolve": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.0.0.tgz",
+      "integrity": "sha512-jox/62b2GofV1qTUQTMPEJSDIGycS43evqYzD/KVtEb9OCoki9cnacUPxCrZa7JfPzZSYOCZhu9O9luaMxAX8g==",
+      "dev": true,
+      "requires": {
+        "graceful-fs": "^4.1.2",
+        "memory-fs": "^0.4.0",
+        "tapable": "^1.0.0"
+      }
+    },
+    "ent": {
+      "version": "2.2.0",
+      "resolved": "https://registry.npmjs.org/ent/-/ent-2.2.0.tgz",
+      "integrity": "sha1-6WQhkyWiHQX0RGai9obtbOX13R0=",
+      "dev": true
+    },
+    "entities": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.1.tgz",
+      "integrity": "sha1-blwtClYhtdra7O+AuQ7ftc13cvA=",
+      "dev": true
+    },
+    "errno": {
+      "version": "0.1.7",
+      "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz",
+      "integrity": "sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==",
+      "dev": true,
+      "requires": {
+        "prr": "~1.0.1"
+      }
+    },
+    "error-ex": {
+      "version": "1.3.2",
+      "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz",
+      "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==",
+      "dev": true,
+      "requires": {
+        "is-arrayish": "^0.2.1"
+      }
+    },
+    "es-abstract": {
+      "version": "1.12.0",
+      "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.12.0.tgz",
+      "integrity": "sha512-C8Fx/0jFmV5IPoMOFPA9P9G5NtqW+4cOPit3MIuvR2t7Ag2K15EJTpxnHAYTzL+aYQJIESYeXZmDBfOBE1HcpA==",
+      "dev": true,
+      "requires": {
+        "es-to-primitive": "^1.1.1",
+        "function-bind": "^1.1.1",
+        "has": "^1.0.1",
+        "is-callable": "^1.1.3",
+        "is-regex": "^1.0.4"
+      }
+    },
+    "es-to-primitive": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.1.1.tgz",
+      "integrity": "sha1-RTVSSKiJeQNLZ5Lhm7gfK3l13Q0=",
+      "dev": true,
+      "requires": {
+        "is-callable": "^1.1.1",
+        "is-date-object": "^1.0.1",
+        "is-symbol": "^1.0.1"
+      }
+    },
+    "es5-ext": {
+      "version": "0.10.45",
+      "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.45.tgz",
+      "integrity": "sha512-FkfM6Vxxfmztilbxxz5UKSD4ICMf5tSpRFtDNtkAhOxZ0EKtX6qwmXNyH/sFyIbX2P/nU5AMiA9jilWsUGJzCQ==",
+      "dev": true,
+      "requires": {
+        "es6-iterator": "~2.0.3",
+        "es6-symbol": "~3.1.1",
+        "next-tick": "1"
+      }
+    },
+    "es6-iterator": {
+      "version": "2.0.3",
+      "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz",
+      "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=",
+      "dev": true,
+      "requires": {
+        "d": "1",
+        "es5-ext": "^0.10.35",
+        "es6-symbol": "^3.1.1"
+      }
+    },
+    "es6-promise": {
+      "version": "4.2.4",
+      "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.4.tgz",
+      "integrity": "sha512-/NdNZVJg+uZgtm9eS3O6lrOLYmQag2DjdEXuPaHlZ6RuVqgqaVZfgYCepEIKsLqwdQArOPtC3XzRLqGGfT8KQQ==",
+      "dev": true
+    },
+    "es6-promisify": {
+      "version": "5.0.0",
+      "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz",
+      "integrity": "sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM=",
+      "dev": true,
+      "requires": {
+        "es6-promise": "^4.0.3"
+      }
+    },
+    "es6-symbol": {
+      "version": "3.1.1",
+      "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.1.tgz",
+      "integrity": "sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc=",
+      "dev": true,
+      "requires": {
+        "d": "1",
+        "es5-ext": "~0.10.14"
+      }
+    },
+    "escape-html": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
+      "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=",
+      "dev": true
+    },
+    "escape-string-regexp": {
+      "version": "1.0.5",
+      "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
+      "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
+      "dev": true
+    },
+    "escodegen": {
+      "version": "1.8.1",
+      "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.8.1.tgz",
+      "integrity": "sha1-WltTr0aTEQvrsIZ6o0MN07cKEBg=",
+      "dev": true,
+      "requires": {
+        "esprima": "^2.7.1",
+        "estraverse": "^1.9.1",
+        "esutils": "^2.0.2",
+        "optionator": "^0.8.1",
+        "source-map": "~0.2.0"
+      },
+      "dependencies": {
+        "source-map": {
+          "version": "0.2.0",
+          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.2.0.tgz",
+          "integrity": "sha1-2rc/vPwrqBm03gO9b26qSBZLP50=",
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "amdefine": ">=0.0.4"
+          }
+        }
+      }
+    },
+    "eslint-scope": {
+      "version": "3.7.1",
+      "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-3.7.1.tgz",
+      "integrity": "sha1-PWPD7f2gLgbgGkUq2IyqzHzctug=",
+      "dev": true,
+      "requires": {
+        "esrecurse": "^4.1.0",
+        "estraverse": "^4.1.1"
+      },
+      "dependencies": {
+        "estraverse": {
+          "version": "4.2.0",
+          "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz",
+          "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=",
+          "dev": true
+        }
+      }
+    },
+    "esprima": {
+      "version": "2.7.3",
+      "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz",
+      "integrity": "sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=",
+      "dev": true
+    },
+    "esrecurse": {
+      "version": "4.2.1",
+      "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz",
+      "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==",
+      "dev": true,
+      "requires": {
+        "estraverse": "^4.1.0"
+      },
+      "dependencies": {
+        "estraverse": {
+          "version": "4.2.0",
+          "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz",
+          "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=",
+          "dev": true
+        }
+      }
+    },
+    "estraverse": {
+      "version": "1.9.3",
+      "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-1.9.3.tgz",
+      "integrity": "sha1-r2fy3JIlgkFZUJJgkaQAXSnJu0Q=",
+      "dev": true
+    },
+    "esutils": {
+      "version": "2.0.2",
+      "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz",
+      "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=",
+      "dev": true
+    },
+    "etag": {
+      "version": "1.8.1",
+      "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
+      "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=",
+      "dev": true
+    },
+    "eventemitter3": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-3.1.0.tgz",
+      "integrity": "sha512-ivIvhpq/Y0uSjcHDcOIccjmYjGLcP09MFGE7ysAwkAvkXfpZlC985pH2/ui64DKazbTW/4kN3yqozUxlXzI6cA==",
+      "dev": true
+    },
+    "events": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz",
+      "integrity": "sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ=",
+      "dev": true
+    },
+    "eventsource": {
+      "version": "0.1.6",
+      "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-0.1.6.tgz",
+      "integrity": "sha1-Cs7ehJ7X3RzMMsgRuxG5RNTykjI=",
+      "dev": true,
+      "requires": {
+        "original": ">=0.0.5"
+      }
+    },
+    "evp_bytestokey": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz",
+      "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==",
+      "dev": true,
+      "requires": {
+        "md5.js": "^1.3.4",
+        "safe-buffer": "^5.1.1"
+      }
+    },
+    "execa": {
+      "version": "0.7.0",
+      "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz",
+      "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=",
+      "dev": true,
+      "requires": {
+        "cross-spawn": "^5.0.1",
+        "get-stream": "^3.0.0",
+        "is-stream": "^1.1.0",
+        "npm-run-path": "^2.0.0",
+        "p-finally": "^1.0.0",
+        "signal-exit": "^3.0.0",
+        "strip-eof": "^1.0.0"
+      },
+      "dependencies": {
+        "cross-spawn": {
+          "version": "5.1.0",
+          "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz",
+          "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=",
+          "dev": true,
+          "requires": {
+            "lru-cache": "^4.0.1",
+            "shebang-command": "^1.2.0",
+            "which": "^1.2.9"
+          }
+        }
+      }
+    },
+    "exit": {
+      "version": "0.1.2",
+      "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz",
+      "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=",
+      "dev": true
+    },
+    "expand-braces": {
+      "version": "0.1.2",
+      "resolved": "https://registry.npmjs.org/expand-braces/-/expand-braces-0.1.2.tgz",
+      "integrity": "sha1-SIsdHSRRyz06axks/AMPRMWFX+o=",
+      "dev": true,
+      "requires": {
+        "array-slice": "^0.2.3",
+        "array-unique": "^0.2.1",
+        "braces": "^0.1.2"
+      },
+      "dependencies": {
+        "array-unique": {
+          "version": "0.2.1",
+          "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz",
+          "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=",
+          "dev": true
+        },
+        "braces": {
+          "version": "0.1.5",
+          "resolved": "https://registry.npmjs.org/braces/-/braces-0.1.5.tgz",
+          "integrity": "sha1-wIVxEIUpHYt1/ddOqw+FlygHEeY=",
+          "dev": true,
+          "requires": {
+            "expand-range": "^0.1.0"
+          }
+        },
+        "expand-range": {
+          "version": "0.1.1",
+          "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-0.1.1.tgz",
+          "integrity": "sha1-TLjtoJk8pW+k9B/ELzy7TMrf8EQ=",
+          "dev": true,
+          "requires": {
+            "is-number": "^0.1.1",
+            "repeat-string": "^0.2.2"
+          }
+        },
+        "is-number": {
+          "version": "0.1.1",
+          "resolved": "https://registry.npmjs.org/is-number/-/is-number-0.1.1.tgz",
+          "integrity": "sha1-aaevEWlj1HIG7JvZtIoUIW8eOAY=",
+          "dev": true
+        },
+        "repeat-string": {
+          "version": "0.2.2",
+          "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-0.2.2.tgz",
+          "integrity": "sha1-x6jTI2BoNiBZp+RlH8aITosftK4=",
+          "dev": true
+        }
+      }
+    },
+    "expand-brackets": {
+      "version": "2.1.4",
+      "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz",
+      "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=",
+      "dev": true,
+      "requires": {
+        "debug": "^2.3.3",
+        "define-property": "^0.2.5",
+        "extend-shallow": "^2.0.1",
+        "posix-character-classes": "^0.1.0",
+        "regex-not": "^1.0.0",
+        "snapdragon": "^0.8.1",
+        "to-regex": "^3.0.1"
+      },
+      "dependencies": {
+        "define-property": {
+          "version": "0.2.5",
+          "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
+          "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
+          "dev": true,
+          "requires": {
+            "is-descriptor": "^0.1.0"
+          }
+        },
+        "extend-shallow": {
+          "version": "2.0.1",
+          "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+          "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+          "dev": true,
+          "requires": {
+            "is-extendable": "^0.1.0"
+          }
+        }
+      }
+    },
+    "expand-range": {
+      "version": "1.8.2",
+      "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz",
+      "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=",
+      "dev": true,
+      "requires": {
+        "fill-range": "^2.1.0"
+      },
+      "dependencies": {
+        "fill-range": {
+          "version": "2.2.4",
+          "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.4.tgz",
+          "integrity": "sha512-cnrcCbj01+j2gTG921VZPnHbjmdAf8oQV/iGeV2kZxGSyfYjjTyY79ErsK1WJWMpw6DaApEX72binqJE+/d+5Q==",
+          "dev": true,
+          "requires": {
+            "is-number": "^2.1.0",
+            "isobject": "^2.0.0",
+            "randomatic": "^3.0.0",
+            "repeat-element": "^1.1.2",
+            "repeat-string": "^1.5.2"
+          }
+        },
+        "is-number": {
+          "version": "2.1.0",
+          "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz",
+          "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=",
+          "dev": true,
+          "requires": {
+            "kind-of": "^3.0.2"
+          }
+        },
+        "isobject": {
+          "version": "2.1.0",
+          "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz",
+          "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=",
+          "dev": true,
+          "requires": {
+            "isarray": "1.0.0"
+          }
+        },
+        "kind-of": {
+          "version": "3.2.2",
+          "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+          "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+          "dev": true,
+          "requires": {
+            "is-buffer": "^1.1.5"
+          }
+        }
+      }
+    },
+    "express": {
+      "version": "4.16.3",
+      "resolved": "https://registry.npmjs.org/express/-/express-4.16.3.tgz",
+      "integrity": "sha1-avilAjUNsyRuzEvs9rWjTSL37VM=",
+      "dev": true,
+      "requires": {
+        "accepts": "~1.3.5",
+        "array-flatten": "1.1.1",
+        "body-parser": "1.18.2",
+        "content-disposition": "0.5.2",
+        "content-type": "~1.0.4",
+        "cookie": "0.3.1",
+        "cookie-signature": "1.0.6",
+        "debug": "2.6.9",
+        "depd": "~1.1.2",
+        "encodeurl": "~1.0.2",
+        "escape-html": "~1.0.3",
+        "etag": "~1.8.1",
+        "finalhandler": "1.1.1",
+        "fresh": "0.5.2",
+        "merge-descriptors": "1.0.1",
+        "methods": "~1.1.2",
+        "on-finished": "~2.3.0",
+        "parseurl": "~1.3.2",
+        "path-to-regexp": "0.1.7",
+        "proxy-addr": "~2.0.3",
+        "qs": "6.5.1",
+        "range-parser": "~1.2.0",
+        "safe-buffer": "5.1.1",
+        "send": "0.16.2",
+        "serve-static": "1.13.2",
+        "setprototypeof": "1.1.0",
+        "statuses": "~1.4.0",
+        "type-is": "~1.6.16",
+        "utils-merge": "1.0.1",
+        "vary": "~1.1.2"
+      },
+      "dependencies": {
+        "array-flatten": {
+          "version": "1.1.1",
+          "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
+          "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=",
+          "dev": true
+        },
+        "qs": {
+          "version": "6.5.1",
+          "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz",
+          "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A==",
+          "dev": true
+        },
+        "safe-buffer": {
+          "version": "5.1.1",
+          "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz",
+          "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==",
+          "dev": true
+        }
+      }
+    },
+    "extend": {
+      "version": "3.0.1",
+      "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz",
+      "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=",
+      "dev": true
+    },
+    "extend-shallow": {
+      "version": "3.0.2",
+      "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz",
+      "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=",
+      "dev": true,
+      "requires": {
+        "assign-symbols": "^1.0.0",
+        "is-extendable": "^1.0.1"
+      },
+      "dependencies": {
+        "is-extendable": {
+          "version": "1.0.1",
+          "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
+          "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
+          "dev": true,
+          "requires": {
+            "is-plain-object": "^2.0.4"
+          }
+        }
+      }
+    },
+    "extglob": {
+      "version": "2.0.4",
+      "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz",
+      "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==",
+      "dev": true,
+      "requires": {
+        "array-unique": "^0.3.2",
+        "define-property": "^1.0.0",
+        "expand-brackets": "^2.1.4",
+        "extend-shallow": "^2.0.1",
+        "fragment-cache": "^0.2.1",
+        "regex-not": "^1.0.0",
+        "snapdragon": "^0.8.1",
+        "to-regex": "^3.0.1"
+      },
+      "dependencies": {
+        "define-property": {
+          "version": "1.0.0",
+          "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
+          "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
+          "dev": true,
+          "requires": {
+            "is-descriptor": "^1.0.0"
+          }
+        },
+        "extend-shallow": {
+          "version": "2.0.1",
+          "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+          "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+          "dev": true,
+          "requires": {
+            "is-extendable": "^0.1.0"
+          }
+        },
+        "is-accessor-descriptor": {
+          "version": "1.0.0",
+          "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
+          "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
+          "dev": true,
+          "requires": {
+            "kind-of": "^6.0.0"
+          }
+        },
+        "is-data-descriptor": {
+          "version": "1.0.0",
+          "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
+          "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
+          "dev": true,
+          "requires": {
+            "kind-of": "^6.0.0"
+          }
+        },
+        "is-descriptor": {
+          "version": "1.0.2",
+          "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
+          "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
+          "dev": true,
+          "requires": {
+            "is-accessor-descriptor": "^1.0.0",
+            "is-data-descriptor": "^1.0.0",
+            "kind-of": "^6.0.2"
+          }
+        }
+      }
+    },
+    "extsprintf": {
+      "version": "1.3.0",
+      "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz",
+      "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=",
+      "dev": true
+    },
+    "fast-deep-equal": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz",
+      "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=",
+      "dev": true
+    },
+    "fast-json-stable-stringify": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz",
+      "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=",
+      "dev": true
+    },
+    "fast-levenshtein": {
+      "version": "2.0.6",
+      "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
+      "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=",
+      "dev": true
+    },
+    "fastparse": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/fastparse/-/fastparse-1.1.1.tgz",
+      "integrity": "sha1-0eJkOzipTXWDtHkGDmxK/8lAcfg=",
+      "dev": true
+    },
+    "faye-websocket": {
+      "version": "0.10.0",
+      "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.10.0.tgz",
+      "integrity": "sha1-TkkvjQTftviQA1B/btvy1QHnxvQ=",
+      "dev": true,
+      "requires": {
+        "websocket-driver": ">=0.5.1"
+      }
+    },
+    "file-loader": {
+      "version": "1.1.11",
+      "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-1.1.11.tgz",
+      "integrity": "sha512-TGR4HU7HUsGg6GCOPJnFk06RhWgEWFLAGWiT6rcD+GRC2keU3s9RGJ+b3Z6/U73jwwNb2gKLJ7YCrp+jvU4ALg==",
+      "dev": true,
+      "requires": {
+        "loader-utils": "^1.0.2",
+        "schema-utils": "^0.4.5"
+      }
+    },
+    "filename-regex": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz",
+      "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=",
+      "dev": true
+    },
+    "fileset": {
+      "version": "2.0.3",
+      "resolved": "https://registry.npmjs.org/fileset/-/fileset-2.0.3.tgz",
+      "integrity": "sha1-jnVIqW08wjJ+5eZ0FocjozO7oqA=",
+      "dev": true,
+      "requires": {
+        "glob": "^7.0.3",
+        "minimatch": "^3.0.3"
+      }
+    },
+    "fill-range": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
+      "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=",
+      "dev": true,
+      "requires": {
+        "extend-shallow": "^2.0.1",
+        "is-number": "^3.0.0",
+        "repeat-string": "^1.6.1",
+        "to-regex-range": "^2.1.0"
+      },
+      "dependencies": {
+        "extend-shallow": {
+          "version": "2.0.1",
+          "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+          "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+          "dev": true,
+          "requires": {
+            "is-extendable": "^0.1.0"
+          }
+        }
+      }
+    },
+    "finalhandler": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.1.tgz",
+      "integrity": "sha512-Y1GUDo39ez4aHAw7MysnUD5JzYX+WaIj8I57kO3aEPT1fFRL4sr7mjei97FgnwhAyyzRYmQZaTHb2+9uZ1dPtg==",
+      "dev": true,
+      "requires": {
+        "debug": "2.6.9",
+        "encodeurl": "~1.0.2",
+        "escape-html": "~1.0.3",
+        "on-finished": "~2.3.0",
+        "parseurl": "~1.3.2",
+        "statuses": "~1.4.0",
+        "unpipe": "~1.0.0"
+      }
+    },
+    "find-cache-dir": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-1.0.0.tgz",
+      "integrity": "sha1-kojj6ePMN0hxfTnq3hfPcfww7m8=",
+      "dev": true,
+      "requires": {
+        "commondir": "^1.0.1",
+        "make-dir": "^1.0.0",
+        "pkg-dir": "^2.0.0"
+      }
+    },
+    "find-up": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz",
+      "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=",
+      "dev": true,
+      "requires": {
+        "locate-path": "^2.0.0"
+      }
+    },
+    "flush-write-stream": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.0.3.tgz",
+      "integrity": "sha512-calZMC10u0FMUqoiunI2AiGIIUtUIvifNwkHhNupZH4cbNnW1Itkoh/Nf5HFYmDrwWPjrUxpkZT0KhuCq0jmGw==",
+      "dev": true,
+      "requires": {
+        "inherits": "^2.0.1",
+        "readable-stream": "^2.0.4"
+      }
+    },
+    "follow-redirects": {
+      "version": "1.5.0",
+      "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.0.tgz",
+      "integrity": "sha512-fdrt472/9qQ6Kgjvb935ig6vJCuofpBUD14f9Vb+SLlm7xIe4Qva5gey8EKtv8lp7ahE1wilg3xL1znpVGtZIA==",
+      "dev": true,
+      "requires": {
+        "debug": "^3.1.0"
+      },
+      "dependencies": {
+        "debug": {
+          "version": "3.1.0",
+          "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
+          "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
+          "dev": true,
+          "requires": {
+            "ms": "2.0.0"
+          }
+        }
+      }
+    },
+    "for-in": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz",
+      "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=",
+      "dev": true
+    },
+    "for-own": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz",
+      "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=",
+      "dev": true,
+      "requires": {
+        "for-in": "^1.0.1"
+      }
+    },
+    "foreach": {
+      "version": "2.0.5",
+      "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz",
+      "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=",
+      "dev": true
+    },
+    "forever-agent": {
+      "version": "0.6.1",
+      "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz",
+      "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=",
+      "dev": true
+    },
+    "form-data": {
+      "version": "2.3.2",
+      "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.2.tgz",
+      "integrity": "sha1-SXBJi+YEwgwAXU9cI67NIda0kJk=",
+      "dev": true,
+      "requires": {
+        "asynckit": "^0.4.0",
+        "combined-stream": "1.0.6",
+        "mime-types": "^2.1.12"
+      }
+    },
+    "forwarded": {
+      "version": "0.1.2",
+      "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz",
+      "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=",
+      "dev": true
+    },
+    "fragment-cache": {
+      "version": "0.2.1",
+      "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz",
+      "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=",
+      "dev": true,
+      "requires": {
+        "map-cache": "^0.2.2"
+      }
+    },
+    "fresh": {
+      "version": "0.5.2",
+      "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
+      "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=",
+      "dev": true
+    },
+    "from2": {
+      "version": "2.3.0",
+      "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz",
+      "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=",
+      "dev": true,
+      "requires": {
+        "inherits": "^2.0.1",
+        "readable-stream": "^2.0.0"
+      }
+    },
+    "fs-access": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/fs-access/-/fs-access-1.0.1.tgz",
+      "integrity": "sha1-1qh/JiJxzv6+wwxVNAf7mV2od3o=",
+      "dev": true,
+      "requires": {
+        "null-check": "^1.0.0"
+      }
+    },
+    "fs-write-stream-atomic": {
+      "version": "1.0.10",
+      "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz",
+      "integrity": "sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=",
+      "dev": true,
+      "requires": {
+        "graceful-fs": "^4.1.2",
+        "iferr": "^0.1.5",
+        "imurmurhash": "^0.1.4",
+        "readable-stream": "1 || 2"
+      }
+    },
+    "fs.realpath": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
+      "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
+      "dev": true
+    },
+    "fsevents": {
+      "version": "1.2.4",
+      "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.4.tgz",
+      "integrity": "sha512-z8H8/diyk76B7q5wg+Ud0+CqzcAF3mBBI/bA5ne5zrRUUIvNkJY//D3BqyH571KuAC4Nr7Rw7CjWX4r0y9DvNg==",
+      "dev": true,
+      "optional": true,
+      "requires": {
+        "nan": "^2.9.2",
+        "node-pre-gyp": "^0.10.0"
+      },
+      "dependencies": {
+        "abbrev": {
+          "version": "1.1.1",
+          "bundled": true,
+          "dev": true,
+          "optional": true
+        },
+        "ansi-regex": {
+          "version": "2.1.1",
+          "bundled": true,
+          "dev": true
+        },
+        "aproba": {
+          "version": "1.2.0",
+          "bundled": true,
+          "dev": true,
+          "optional": true
+        },
+        "are-we-there-yet": {
+          "version": "1.1.4",
+          "bundled": true,
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "delegates": "^1.0.0",
+            "readable-stream": "^2.0.6"
+          }
+        },
+        "balanced-match": {
+          "version": "1.0.0",
+          "bundled": true,
+          "dev": true
+        },
+        "brace-expansion": {
+          "version": "1.1.11",
+          "bundled": true,
+          "dev": true,
+          "requires": {
+            "balanced-match": "^1.0.0",
+            "concat-map": "0.0.1"
+          }
+        },
+        "chownr": {
+          "version": "1.0.1",
+          "bundled": true,
+          "dev": true,
+          "optional": true
+        },
+        "code-point-at": {
+          "version": "1.1.0",
+          "bundled": true,
+          "dev": true
+        },
+        "concat-map": {
+          "version": "0.0.1",
+          "bundled": true,
+          "dev": true
+        },
+        "console-control-strings": {
+          "version": "1.1.0",
+          "bundled": true,
+          "dev": true
+        },
+        "core-util-is": {
+          "version": "1.0.2",
+          "bundled": true,
+          "dev": true,
+          "optional": true
+        },
+        "debug": {
+          "version": "2.6.9",
+          "bundled": true,
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "ms": "2.0.0"
+          }
+        },
+        "deep-extend": {
+          "version": "0.5.1",
+          "bundled": true,
+          "dev": true,
+          "optional": true
+        },
+        "delegates": {
+          "version": "1.0.0",
+          "bundled": true,
+          "dev": true,
+          "optional": true
+        },
+        "detect-libc": {
+          "version": "1.0.3",
+          "bundled": true,
+          "dev": true,
+          "optional": true
+        },
+        "fs-minipass": {
+          "version": "1.2.5",
+          "bundled": true,
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "minipass": "^2.2.1"
+          }
+        },
+        "fs.realpath": {
+          "version": "1.0.0",
+          "bundled": true,
+          "dev": true,
+          "optional": true
+        },
+        "gauge": {
+          "version": "2.7.4",
+          "bundled": true,
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "aproba": "^1.0.3",
+            "console-control-strings": "^1.0.0",
+            "has-unicode": "^2.0.0",
+            "object-assign": "^4.1.0",
+            "signal-exit": "^3.0.0",
+            "string-width": "^1.0.1",
+            "strip-ansi": "^3.0.1",
+            "wide-align": "^1.1.0"
+          }
+        },
+        "glob": {
+          "version": "7.1.2",
+          "bundled": true,
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "fs.realpath": "^1.0.0",
+            "inflight": "^1.0.4",
+            "inherits": "2",
+            "minimatch": "^3.0.4",
+            "once": "^1.3.0",
+            "path-is-absolute": "^1.0.0"
+          }
+        },
+        "has-unicode": {
+          "version": "2.0.1",
+          "bundled": true,
+          "dev": true,
+          "optional": true
+        },
+        "iconv-lite": {
+          "version": "0.4.21",
+          "bundled": true,
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "safer-buffer": "^2.1.0"
+          }
+        },
+        "ignore-walk": {
+          "version": "3.0.1",
+          "bundled": true,
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "minimatch": "^3.0.4"
+          }
+        },
+        "inflight": {
+          "version": "1.0.6",
+          "bundled": true,
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "once": "^1.3.0",
+            "wrappy": "1"
+          }
+        },
+        "inherits": {
+          "version": "2.0.3",
+          "bundled": true,
+          "dev": true
+        },
+        "ini": {
+          "version": "1.3.5",
+          "bundled": true,
+          "dev": true,
+          "optional": true
+        },
+        "is-fullwidth-code-point": {
+          "version": "1.0.0",
+          "bundled": true,
+          "dev": true,
+          "requires": {
+            "number-is-nan": "^1.0.0"
+          }
+        },
+        "isarray": {
+          "version": "1.0.0",
+          "bundled": true,
+          "dev": true,
+          "optional": true
+        },
+        "minimatch": {
+          "version": "3.0.4",
+          "bundled": true,
+          "dev": true,
+          "requires": {
+            "brace-expansion": "^1.1.7"
+          }
+        },
+        "minimist": {
+          "version": "0.0.8",
+          "bundled": true,
+          "dev": true
+        },
+        "minipass": {
+          "version": "2.2.4",
+          "bundled": true,
+          "dev": true,
+          "requires": {
+            "safe-buffer": "^5.1.1",
+            "yallist": "^3.0.0"
+          }
+        },
+        "minizlib": {
+          "version": "1.1.0",
+          "bundled": true,
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "minipass": "^2.2.1"
+          }
+        },
+        "mkdirp": {
+          "version": "0.5.1",
+          "bundled": true,
+          "dev": true,
+          "requires": {
+            "minimist": "0.0.8"
+          }
+        },
+        "ms": {
+          "version": "2.0.0",
+          "bundled": true,
+          "dev": true,
+          "optional": true
+        },
+        "needle": {
+          "version": "2.2.0",
+          "bundled": true,
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "debug": "^2.1.2",
+            "iconv-lite": "^0.4.4",
+            "sax": "^1.2.4"
+          }
+        },
+        "node-pre-gyp": {
+          "version": "0.10.0",
+          "bundled": true,
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "detect-libc": "^1.0.2",
+            "mkdirp": "^0.5.1",
+            "needle": "^2.2.0",
+            "nopt": "^4.0.1",
+            "npm-packlist": "^1.1.6",
+            "npmlog": "^4.0.2",
+            "rc": "^1.1.7",
+            "rimraf": "^2.6.1",
+            "semver": "^5.3.0",
+            "tar": "^4"
+          }
+        },
+        "nopt": {
+          "version": "4.0.1",
+          "bundled": true,
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "abbrev": "1",
+            "osenv": "^0.1.4"
+          }
+        },
+        "npm-bundled": {
+          "version": "1.0.3",
+          "bundled": true,
+          "dev": true,
+          "optional": true
+        },
+        "npm-packlist": {
+          "version": "1.1.10",
+          "bundled": true,
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "ignore-walk": "^3.0.1",
+            "npm-bundled": "^1.0.1"
+          }
+        },
+        "npmlog": {
+          "version": "4.1.2",
+          "bundled": true,
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "are-we-there-yet": "~1.1.2",
+            "console-control-strings": "~1.1.0",
+            "gauge": "~2.7.3",
+            "set-blocking": "~2.0.0"
+          }
+        },
+        "number-is-nan": {
+          "version": "1.0.1",
+          "bundled": true,
+          "dev": true
+        },
+        "object-assign": {
+          "version": "4.1.1",
+          "bundled": true,
+          "dev": true,
+          "optional": true
+        },
+        "once": {
+          "version": "1.4.0",
+          "bundled": true,
+          "dev": true,
+          "requires": {
+            "wrappy": "1"
+          }
+        },
+        "os-homedir": {
+          "version": "1.0.2",
+          "bundled": true,
+          "dev": true,
+          "optional": true
+        },
+        "os-tmpdir": {
+          "version": "1.0.2",
+          "bundled": true,
+          "dev": true,
+          "optional": true
+        },
+        "osenv": {
+          "version": "0.1.5",
+          "bundled": true,
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "os-homedir": "^1.0.0",
+            "os-tmpdir": "^1.0.0"
+          }
+        },
+        "path-is-absolute": {
+          "version": "1.0.1",
+          "bundled": true,
+          "dev": true,
+          "optional": true
+        },
+        "process-nextick-args": {
+          "version": "2.0.0",
+          "bundled": true,
+          "dev": true,
+          "optional": true
+        },
+        "rc": {
+          "version": "1.2.7",
+          "bundled": true,
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "deep-extend": "^0.5.1",
+            "ini": "~1.3.0",
+            "minimist": "^1.2.0",
+            "strip-json-comments": "~2.0.1"
+          },
+          "dependencies": {
+            "minimist": {
+              "version": "1.2.0",
+              "bundled": true,
+              "dev": true,
+              "optional": true
+            }
+          }
+        },
+        "readable-stream": {
+          "version": "2.3.6",
+          "bundled": true,
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "core-util-is": "~1.0.0",
+            "inherits": "~2.0.3",
+            "isarray": "~1.0.0",
+            "process-nextick-args": "~2.0.0",
+            "safe-buffer": "~5.1.1",
+            "string_decoder": "~1.1.1",
+            "util-deprecate": "~1.0.1"
+          }
+        },
+        "rimraf": {
+          "version": "2.6.2",
+          "bundled": true,
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "glob": "^7.0.5"
+          }
+        },
+        "safe-buffer": {
+          "version": "5.1.1",
+          "bundled": true,
+          "dev": true
+        },
+        "safer-buffer": {
+          "version": "2.1.2",
+          "bundled": true,
+          "dev": true,
+          "optional": true
+        },
+        "sax": {
+          "version": "1.2.4",
+          "bundled": true,
+          "dev": true,
+          "optional": true
+        },
+        "semver": {
+          "version": "5.5.0",
+          "bundled": true,
+          "dev": true,
+          "optional": true
+        },
+        "set-blocking": {
+          "version": "2.0.0",
+          "bundled": true,
+          "dev": true,
+          "optional": true
+        },
+        "signal-exit": {
+          "version": "3.0.2",
+          "bundled": true,
+          "dev": true,
+          "optional": true
+        },
+        "string-width": {
+          "version": "1.0.2",
+          "bundled": true,
+          "dev": true,
+          "requires": {
+            "code-point-at": "^1.0.0",
+            "is-fullwidth-code-point": "^1.0.0",
+            "strip-ansi": "^3.0.0"
+          }
+        },
+        "string_decoder": {
+          "version": "1.1.1",
+          "bundled": true,
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "safe-buffer": "~5.1.0"
+          }
+        },
+        "strip-ansi": {
+          "version": "3.0.1",
+          "bundled": true,
+          "dev": true,
+          "requires": {
+            "ansi-regex": "^2.0.0"
+          }
+        },
+        "strip-json-comments": {
+          "version": "2.0.1",
+          "bundled": true,
+          "dev": true,
+          "optional": true
+        },
+        "tar": {
+          "version": "4.4.1",
+          "bundled": true,
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "chownr": "^1.0.1",
+            "fs-minipass": "^1.2.5",
+            "minipass": "^2.2.4",
+            "minizlib": "^1.1.0",
+            "mkdirp": "^0.5.0",
+            "safe-buffer": "^5.1.1",
+            "yallist": "^3.0.2"
+          }
+        },
+        "util-deprecate": {
+          "version": "1.0.2",
+          "bundled": true,
+          "dev": true,
+          "optional": true
+        },
+        "wide-align": {
+          "version": "1.1.2",
+          "bundled": true,
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "string-width": "^1.0.2"
+          }
+        },
+        "wrappy": {
+          "version": "1.0.2",
+          "bundled": true,
+          "dev": true
+        },
+        "yallist": {
+          "version": "3.0.2",
+          "bundled": true,
+          "dev": true
+        }
+      }
+    },
+    "fstream": {
+      "version": "1.0.11",
+      "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.11.tgz",
+      "integrity": "sha1-XB+x8RdHcRTwYyoOtLcbPLD9MXE=",
+      "dev": true,
+      "requires": {
+        "graceful-fs": "^4.1.2",
+        "inherits": "~2.0.0",
+        "mkdirp": ">=0.5 0",
+        "rimraf": "2"
+      }
+    },
+    "function-bind": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
+      "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
+      "dev": true
+    },
+    "gauge": {
+      "version": "2.7.4",
+      "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz",
+      "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=",
+      "dev": true,
+      "requires": {
+        "aproba": "^1.0.3",
+        "console-control-strings": "^1.0.0",
+        "has-unicode": "^2.0.0",
+        "object-assign": "^4.1.0",
+        "signal-exit": "^3.0.0",
+        "string-width": "^1.0.1",
+        "strip-ansi": "^3.0.1",
+        "wide-align": "^1.1.0"
+      }
+    },
+    "gaze": {
+      "version": "1.1.3",
+      "resolved": "https://registry.npmjs.org/gaze/-/gaze-1.1.3.tgz",
+      "integrity": "sha512-BRdNm8hbWzFzWHERTrejLqwHDfS4GibPoq5wjTPIoJHoBtKGPg3xAFfxmM+9ztbXelxcf2hwQcaz1PtmFeue8g==",
+      "dev": true,
+      "optional": true,
+      "requires": {
+        "globule": "^1.0.0"
+      }
+    },
+    "generate-function": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.0.0.tgz",
+      "integrity": "sha1-aFj+fAlpt9TpCTM3ZHrHn2DfvnQ=",
+      "dev": true,
+      "optional": true
+    },
+    "generate-object-property": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz",
+      "integrity": "sha1-nA4cQDCM6AT0eDYYuTf6iPmdUNA=",
+      "dev": true,
+      "optional": true,
+      "requires": {
+        "is-property": "^1.0.0"
+      }
+    },
+    "get-caller-file": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.2.tgz",
+      "integrity": "sha1-9wLmMSfn4jHBYKgMFVSstw1QR+U=",
+      "dev": true
+    },
+    "get-stdin": {
+      "version": "4.0.1",
+      "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz",
+      "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=",
+      "dev": true
+    },
+    "get-stream": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz",
+      "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=",
+      "dev": true
+    },
+    "get-value": {
+      "version": "2.0.6",
+      "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz",
+      "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=",
+      "dev": true
+    },
+    "getpass": {
+      "version": "0.1.7",
+      "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz",
+      "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=",
+      "dev": true,
+      "requires": {
+        "assert-plus": "^1.0.0"
+      }
+    },
+    "glob": {
+      "version": "7.1.2",
+      "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz",
+      "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==",
+      "dev": true,
+      "requires": {
+        "fs.realpath": "^1.0.0",
+        "inflight": "^1.0.4",
+        "inherits": "2",
+        "minimatch": "^3.0.4",
+        "once": "^1.3.0",
+        "path-is-absolute": "^1.0.0"
+      }
+    },
+    "glob-base": {
+      "version": "0.3.0",
+      "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz",
+      "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=",
+      "dev": true,
+      "requires": {
+        "glob-parent": "^2.0.0",
+        "is-glob": "^2.0.0"
+      },
+      "dependencies": {
+        "glob-parent": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz",
+          "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=",
+          "dev": true,
+          "requires": {
+            "is-glob": "^2.0.0"
+          }
+        },
+        "is-extglob": {
+          "version": "1.0.0",
+          "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz",
+          "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=",
+          "dev": true
+        },
+        "is-glob": {
+          "version": "2.0.1",
+          "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz",
+          "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=",
+          "dev": true,
+          "requires": {
+            "is-extglob": "^1.0.0"
+          }
+        }
+      }
+    },
+    "glob-parent": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz",
+      "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=",
+      "dev": true,
+      "requires": {
+        "is-glob": "^3.1.0",
+        "path-dirname": "^1.0.0"
+      },
+      "dependencies": {
+        "is-glob": {
+          "version": "3.1.0",
+          "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz",
+          "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=",
+          "dev": true,
+          "requires": {
+            "is-extglob": "^2.1.0"
+          }
+        }
+      }
+    },
+    "globals": {
+      "version": "9.18.0",
+      "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz",
+      "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==",
+      "dev": true
+    },
+    "globby": {
+      "version": "7.1.1",
+      "resolved": "https://registry.npmjs.org/globby/-/globby-7.1.1.tgz",
+      "integrity": "sha1-+yzP+UAfhgCUXfral0QMypcrhoA=",
+      "dev": true,
+      "requires": {
+        "array-union": "^1.0.1",
+        "dir-glob": "^2.0.0",
+        "glob": "^7.1.2",
+        "ignore": "^3.3.5",
+        "pify": "^3.0.0",
+        "slash": "^1.0.0"
+      }
+    },
+    "globule": {
+      "version": "1.2.1",
+      "resolved": "https://registry.npmjs.org/globule/-/globule-1.2.1.tgz",
+      "integrity": "sha512-g7QtgWF4uYSL5/dn71WxubOrS7JVGCnFPEnoeChJmBnyR9Mw8nGoEwOgJL/RC2Te0WhbsEUCejfH8SZNJ+adYQ==",
+      "dev": true,
+      "optional": true,
+      "requires": {
+        "glob": "~7.1.1",
+        "lodash": "~4.17.10",
+        "minimatch": "~3.0.2"
+      }
+    },
+    "graceful-fs": {
+      "version": "4.1.11",
+      "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz",
+      "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=",
+      "dev": true
+    },
+    "handle-thing": {
+      "version": "1.2.5",
+      "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-1.2.5.tgz",
+      "integrity": "sha1-/Xqtcmvxpf0W38KbL3pmAdJxOcQ=",
+      "dev": true
+    },
+    "handlebars": {
+      "version": "4.0.11",
+      "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.0.11.tgz",
+      "integrity": "sha1-Ywo13+ApS8KB7a5v/F0yn8eYLcw=",
+      "dev": true,
+      "requires": {
+        "async": "^1.4.0",
+        "optimist": "^0.6.1",
+        "source-map": "^0.4.4",
+        "uglify-js": "^2.6"
+      },
+      "dependencies": {
+        "source-map": {
+          "version": "0.4.4",
+          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz",
+          "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=",
+          "dev": true,
+          "requires": {
+            "amdefine": ">=0.0.4"
+          }
+        },
+        "uglify-js": {
+          "version": "2.8.29",
+          "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz",
+          "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=",
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "source-map": "~0.5.1",
+            "uglify-to-browserify": "~1.0.0",
+            "yargs": "~3.10.0"
+          },
+          "dependencies": {
+            "source-map": {
+              "version": "0.5.7",
+              "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
+              "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
+              "dev": true,
+              "optional": true
+            }
+          }
+        }
+      }
+    },
+    "har-schema": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz",
+      "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=",
+      "dev": true
+    },
+    "har-validator": {
+      "version": "5.0.3",
+      "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.0.3.tgz",
+      "integrity": "sha1-ukAsJmGU8VlW7xXg/PJCmT9qff0=",
+      "dev": true,
+      "requires": {
+        "ajv": "^5.1.0",
+        "har-schema": "^2.0.0"
+      },
+      "dependencies": {
+        "ajv": {
+          "version": "5.5.2",
+          "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz",
+          "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=",
+          "dev": true,
+          "requires": {
+            "co": "^4.6.0",
+            "fast-deep-equal": "^1.0.0",
+            "fast-json-stable-stringify": "^2.0.0",
+            "json-schema-traverse": "^0.3.0"
+          }
+        }
+      }
+    },
+    "has": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
+      "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
+      "dev": true,
+      "requires": {
+        "function-bind": "^1.1.1"
+      }
+    },
+    "has-ansi": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz",
+      "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=",
+      "dev": true,
+      "requires": {
+        "ansi-regex": "^2.0.0"
+      }
+    },
+    "has-binary": {
+      "version": "0.1.7",
+      "resolved": "https://registry.npmjs.org/has-binary/-/has-binary-0.1.7.tgz",
+      "integrity": "sha1-aOYesWIQyVRaClzOBqhzkS/h5ow=",
+      "dev": true,
+      "requires": {
+        "isarray": "0.0.1"
+      },
+      "dependencies": {
+        "isarray": {
+          "version": "0.0.1",
+          "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
+          "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=",
+          "dev": true
+        }
+      }
+    },
+    "has-cors": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/has-cors/-/has-cors-1.1.0.tgz",
+      "integrity": "sha1-XkdHk/fqmEPRu5nCPu9J/xJv/zk=",
+      "dev": true
+    },
+    "has-flag": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+      "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
+      "dev": true
+    },
+    "has-symbols": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz",
+      "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=",
+      "dev": true
+    },
+    "has-unicode": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz",
+      "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=",
+      "dev": true
+    },
+    "has-value": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz",
+      "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=",
+      "dev": true,
+      "requires": {
+        "get-value": "^2.0.6",
+        "has-values": "^1.0.0",
+        "isobject": "^3.0.0"
+      }
+    },
+    "has-values": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz",
+      "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=",
+      "dev": true,
+      "requires": {
+        "is-number": "^3.0.0",
+        "kind-of": "^4.0.0"
+      },
+      "dependencies": {
+        "kind-of": {
+          "version": "4.0.0",
+          "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz",
+          "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=",
+          "dev": true,
+          "requires": {
+            "is-buffer": "^1.1.5"
+          }
+        }
+      }
+    },
+    "hash-base": {
+      "version": "3.0.4",
+      "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz",
+      "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=",
+      "dev": true,
+      "requires": {
+        "inherits": "^2.0.1",
+        "safe-buffer": "^5.0.1"
+      }
+    },
+    "hash.js": {
+      "version": "1.1.4",
+      "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.4.tgz",
+      "integrity": "sha512-A6RlQvvZEtFS5fLU43IDu0QUmBy+fDO9VMdTXvufKwIkt/rFfvICAViCax5fbDO4zdNzaC3/27ZhKUok5bAJyw==",
+      "dev": true,
+      "requires": {
+        "inherits": "^2.0.3",
+        "minimalistic-assert": "^1.0.0"
+      }
+    },
+    "hawk": {
+      "version": "3.1.3",
+      "resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz",
+      "integrity": "sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ=",
+      "dev": true,
+      "requires": {
+        "boom": "2.x.x",
+        "cryptiles": "2.x.x",
+        "hoek": "2.x.x",
+        "sntp": "1.x.x"
+      }
+    },
+    "he": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/he/-/he-1.1.1.tgz",
+      "integrity": "sha1-k0EP0hsAlzUVH4howvJx80J+I/0=",
+      "dev": true
+    },
+    "hmac-drbg": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz",
+      "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=",
+      "dev": true,
+      "requires": {
+        "hash.js": "^1.0.3",
+        "minimalistic-assert": "^1.0.0",
+        "minimalistic-crypto-utils": "^1.0.1"
+      }
+    },
+    "hoek": {
+      "version": "2.16.3",
+      "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz",
+      "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=",
+      "dev": true
+    },
+    "hosted-git-info": {
+      "version": "2.6.0",
+      "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.6.0.tgz",
+      "integrity": "sha512-lIbgIIQA3lz5XaB6vxakj6sDHADJiZadYEJB+FgA+C4nubM1NwcuvUr9EJPmnH1skZqpqUzWborWo8EIUi0Sdw==",
+      "dev": true
+    },
+    "hpack.js": {
+      "version": "2.1.6",
+      "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz",
+      "integrity": "sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI=",
+      "dev": true,
+      "requires": {
+        "inherits": "^2.0.1",
+        "obuf": "^1.0.0",
+        "readable-stream": "^2.0.1",
+        "wbuf": "^1.1.0"
+      }
+    },
+    "html-entities": {
+      "version": "1.2.1",
+      "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-1.2.1.tgz",
+      "integrity": "sha1-DfKTUfByEWNRXfueVUPl9u7VFi8=",
+      "dev": true
+    },
+    "html-minifier": {
+      "version": "3.5.16",
+      "resolved": "https://registry.npmjs.org/html-minifier/-/html-minifier-3.5.16.tgz",
+      "integrity": "sha512-zP5EfLSpiLRp0aAgud4CQXPQZm9kXwWjR/cF0PfdOj+jjWnOaCgeZcll4kYXSvIBPeUMmyaSc7mM4IDtA+kboA==",
+      "dev": true,
+      "requires": {
+        "camel-case": "3.0.x",
+        "clean-css": "4.1.x",
+        "commander": "2.15.x",
+        "he": "1.1.x",
+        "param-case": "2.1.x",
+        "relateurl": "0.2.x",
+        "uglify-js": "3.3.x"
+      }
+    },
+    "html-webpack-plugin": {
+      "version": "3.2.0",
+      "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-3.2.0.tgz",
+      "integrity": "sha1-sBq71yOsqqeze2r0SS69oD2d03s=",
+      "dev": true,
+      "requires": {
+        "html-minifier": "^3.2.3",
+        "loader-utils": "^0.2.16",
+        "lodash": "^4.17.3",
+        "pretty-error": "^2.0.2",
+        "tapable": "^1.0.0",
+        "toposort": "^1.0.0",
+        "util.promisify": "1.0.0"
+      },
+      "dependencies": {
+        "loader-utils": {
+          "version": "0.2.17",
+          "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.17.tgz",
+          "integrity": "sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=",
+          "dev": true,
+          "requires": {
+            "big.js": "^3.1.3",
+            "emojis-list": "^2.0.0",
+            "json5": "^0.5.0",
+            "object-assign": "^4.0.1"
+          }
+        }
+      }
+    },
+    "htmlparser2": {
+      "version": "3.3.0",
+      "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.3.0.tgz",
+      "integrity": "sha1-zHDQWln2VC5D8OaFyYLhTJJKnv4=",
+      "dev": true,
+      "requires": {
+        "domelementtype": "1",
+        "domhandler": "2.1",
+        "domutils": "1.1",
+        "readable-stream": "1.0"
+      },
+      "dependencies": {
+        "domutils": {
+          "version": "1.1.6",
+          "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.1.6.tgz",
+          "integrity": "sha1-vdw94Jm5ou+sxRxiPyj0FuzFdIU=",
+          "dev": true,
+          "requires": {
+            "domelementtype": "1"
+          }
+        },
+        "isarray": {
+          "version": "0.0.1",
+          "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
+          "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=",
+          "dev": true
+        },
+        "readable-stream": {
+          "version": "1.0.34",
+          "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz",
+          "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=",
+          "dev": true,
+          "requires": {
+            "core-util-is": "~1.0.0",
+            "inherits": "~2.0.1",
+            "isarray": "0.0.1",
+            "string_decoder": "~0.10.x"
+          }
+        },
+        "string_decoder": {
+          "version": "0.10.31",
+          "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
+          "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=",
+          "dev": true
+        }
+      }
+    },
+    "http-deceiver": {
+      "version": "1.2.7",
+      "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz",
+      "integrity": "sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc=",
+      "dev": true
+    },
+    "http-errors": {
+      "version": "1.6.3",
+      "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz",
+      "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=",
+      "dev": true,
+      "requires": {
+        "depd": "~1.1.2",
+        "inherits": "2.0.3",
+        "setprototypeof": "1.1.0",
+        "statuses": ">= 1.4.0 < 2"
+      }
+    },
+    "http-parser-js": {
+      "version": "0.4.13",
+      "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.4.13.tgz",
+      "integrity": "sha1-O9bW/ebjFyyTNMOzO2wZPYD+ETc=",
+      "dev": true
+    },
+    "http-proxy": {
+      "version": "1.17.0",
+      "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.17.0.tgz",
+      "integrity": "sha512-Taqn+3nNvYRfJ3bGvKfBSRwy1v6eePlm3oc/aWVxZp57DQr5Eq3xhKJi7Z4hZpS8PC3H4qI+Yly5EmFacGuA/g==",
+      "dev": true,
+      "requires": {
+        "eventemitter3": "^3.0.0",
+        "follow-redirects": "^1.0.0",
+        "requires-port": "^1.0.0"
+      }
+    },
+    "http-proxy-middleware": {
+      "version": "0.18.0",
+      "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.18.0.tgz",
+      "integrity": "sha512-Fs25KVMPAIIcgjMZkVHJoKg9VcXcC1C8yb9JUgeDvVXY0S/zgVIhMb+qVswDIgtJe2DfckMSY2d6TuTEutlk6Q==",
+      "dev": true,
+      "requires": {
+        "http-proxy": "^1.16.2",
+        "is-glob": "^4.0.0",
+        "lodash": "^4.17.5",
+        "micromatch": "^3.1.9"
+      }
+    },
+    "http-signature": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz",
+      "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=",
+      "dev": true,
+      "requires": {
+        "assert-plus": "^1.0.0",
+        "jsprim": "^1.2.2",
+        "sshpk": "^1.7.0"
+      }
+    },
+    "https-browserify": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz",
+      "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=",
+      "dev": true
+    },
+    "https-proxy-agent": {
+      "version": "2.2.1",
+      "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.1.tgz",
+      "integrity": "sha512-HPCTS1LW51bcyMYbxUIOO4HEOlQ1/1qRaFWcyxvwaqUS9TY88aoEuHUY33kuAh1YhVVaDQhLZsnPd+XNARWZlQ==",
+      "dev": true,
+      "requires": {
+        "agent-base": "^4.1.0",
+        "debug": "^3.1.0"
+      },
+      "dependencies": {
+        "debug": {
+          "version": "3.1.0",
+          "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
+          "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
+          "dev": true,
+          "requires": {
+            "ms": "2.0.0"
+          }
+        }
+      }
+    },
+    "iconv-lite": {
+      "version": "0.4.19",
+      "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz",
+      "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==",
+      "dev": true
+    },
+    "ieee754": {
+      "version": "1.1.12",
+      "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.12.tgz",
+      "integrity": "sha512-GguP+DRY+pJ3soyIiGPTvdiVXjZ+DbXOxGpXn3eMvNW4x4irjqXm4wHKscC+TfxSJ0yw/S1F24tqdMNsMZTiLA==",
+      "dev": true
+    },
+    "iferr": {
+      "version": "0.1.5",
+      "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz",
+      "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=",
+      "dev": true
+    },
+    "ignore": {
+      "version": "3.3.8",
+      "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.8.tgz",
+      "integrity": "sha512-pUh+xUQQhQzevjRHHFqqcTy0/dP/kS9I8HSrUydhihjuD09W6ldVWFtIrwhXdUJHis3i2rZNqEHpZH/cbinFbg==",
+      "dev": true
+    },
+    "image-size": {
+      "version": "0.5.5",
+      "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz",
+      "integrity": "sha1-Cd/Uq50g4p6xw+gLiZA3jfnjy5w=",
+      "dev": true,
+      "optional": true
+    },
+    "immediate": {
+      "version": "3.0.6",
+      "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz",
+      "integrity": "sha1-nbHb0Pr43m++D13V5Wu2BigN5ps=",
+      "dev": true
+    },
+    "import-local": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/import-local/-/import-local-1.0.0.tgz",
+      "integrity": "sha512-vAaZHieK9qjGo58agRBg+bhHX3hoTZU/Oa3GESWLz7t1U62fk63aHuDJJEteXoDeTCcPmUT+z38gkHPZkkmpmQ==",
+      "dev": true,
+      "requires": {
+        "pkg-dir": "^2.0.0",
+        "resolve-cwd": "^2.0.0"
+      }
+    },
+    "imurmurhash": {
+      "version": "0.1.4",
+      "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
+      "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=",
+      "dev": true
+    },
+    "in-publish": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/in-publish/-/in-publish-2.0.0.tgz",
+      "integrity": "sha1-4g/146KvwmkDILbcVSaCqcf631E=",
+      "dev": true,
+      "optional": true
+    },
+    "indent-string": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz",
+      "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=",
+      "dev": true,
+      "requires": {
+        "repeating": "^2.0.0"
+      }
+    },
+    "indexof": {
+      "version": "0.0.1",
+      "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz",
+      "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=",
+      "dev": true
+    },
+    "inflight": {
+      "version": "1.0.6",
+      "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
+      "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
+      "dev": true,
+      "requires": {
+        "once": "^1.3.0",
+        "wrappy": "1"
+      }
+    },
+    "inherits": {
+      "version": "2.0.3",
+      "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
+      "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
+      "dev": true
+    },
+    "ini": {
+      "version": "1.3.5",
+      "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz",
+      "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==",
+      "dev": true
+    },
+    "internal-ip": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/internal-ip/-/internal-ip-1.2.0.tgz",
+      "integrity": "sha1-rp+/k7mEh4eF1QqN4bNWlWBYz1w=",
+      "dev": true,
+      "requires": {
+        "meow": "^3.3.0"
+      }
+    },
+    "invariant": {
+      "version": "2.2.4",
+      "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz",
+      "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==",
+      "dev": true,
+      "requires": {
+        "loose-envify": "^1.0.0"
+      }
+    },
+    "invert-kv": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz",
+      "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=",
+      "dev": true
+    },
+    "ip": {
+      "version": "1.1.5",
+      "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz",
+      "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=",
+      "dev": true
+    },
+    "ipaddr.js": {
+      "version": "1.6.0",
+      "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.6.0.tgz",
+      "integrity": "sha1-4/o1e3c9phnybpXwSdBVxyeW+Gs=",
+      "dev": true
+    },
+    "is-accessor-descriptor": {
+      "version": "0.1.6",
+      "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz",
+      "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=",
+      "dev": true,
+      "requires": {
+        "kind-of": "^3.0.2"
+      },
+      "dependencies": {
+        "kind-of": {
+          "version": "3.2.2",
+          "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+          "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+          "dev": true,
+          "requires": {
+            "is-buffer": "^1.1.5"
+          }
+        }
+      }
+    },
+    "is-arrayish": {
+      "version": "0.2.1",
+      "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
+      "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=",
+      "dev": true
+    },
+    "is-binary-path": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz",
+      "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=",
+      "dev": true,
+      "requires": {
+        "binary-extensions": "^1.0.0"
+      }
+    },
+    "is-buffer": {
+      "version": "1.1.6",
+      "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
+      "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==",
+      "dev": true
+    },
+    "is-builtin-module": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz",
+      "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=",
+      "dev": true,
+      "requires": {
+        "builtin-modules": "^1.0.0"
+      }
+    },
+    "is-callable": {
+      "version": "1.1.3",
+      "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.3.tgz",
+      "integrity": "sha1-hut1OSgF3cM69xySoO7fdO52BLI=",
+      "dev": true
+    },
+    "is-data-descriptor": {
+      "version": "0.1.4",
+      "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz",
+      "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=",
+      "dev": true,
+      "requires": {
+        "kind-of": "^3.0.2"
+      },
+      "dependencies": {
+        "kind-of": {
+          "version": "3.2.2",
+          "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+          "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+          "dev": true,
+          "requires": {
+            "is-buffer": "^1.1.5"
+          }
+        }
+      }
+    },
+    "is-date-object": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz",
+      "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=",
+      "dev": true
+    },
+    "is-descriptor": {
+      "version": "0.1.6",
+      "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz",
+      "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==",
+      "dev": true,
+      "requires": {
+        "is-accessor-descriptor": "^0.1.6",
+        "is-data-descriptor": "^0.1.4",
+        "kind-of": "^5.0.0"
+      },
+      "dependencies": {
+        "kind-of": {
+          "version": "5.1.0",
+          "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
+          "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==",
+          "dev": true
+        }
+      }
+    },
+    "is-directory": {
+      "version": "0.3.1",
+      "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz",
+      "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=",
+      "dev": true
+    },
+    "is-dotfile": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz",
+      "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=",
+      "dev": true
+    },
+    "is-equal-shallow": {
+      "version": "0.1.3",
+      "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz",
+      "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=",
+      "dev": true,
+      "requires": {
+        "is-primitive": "^2.0.0"
+      }
+    },
+    "is-extendable": {
+      "version": "0.1.1",
+      "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
+      "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=",
+      "dev": true
+    },
+    "is-extglob": {
+      "version": "2.1.1",
+      "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
+      "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=",
+      "dev": true
+    },
+    "is-finite": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz",
+      "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=",
+      "dev": true,
+      "requires": {
+        "number-is-nan": "^1.0.0"
+      }
+    },
+    "is-fullwidth-code-point": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
+      "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
+      "dev": true,
+      "requires": {
+        "number-is-nan": "^1.0.0"
+      }
+    },
+    "is-glob": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.0.tgz",
+      "integrity": "sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=",
+      "dev": true,
+      "requires": {
+        "is-extglob": "^2.1.1"
+      }
+    },
+    "is-my-ip-valid": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/is-my-ip-valid/-/is-my-ip-valid-1.0.0.tgz",
+      "integrity": "sha512-gmh/eWXROncUzRnIa1Ubrt5b8ep/MGSnfAUI3aRp+sqTCs1tv1Isl8d8F6JmkN3dXKc3ehZMrtiPN9eL03NuaQ==",
+      "dev": true,
+      "optional": true
+    },
+    "is-my-json-valid": {
+      "version": "2.17.2",
+      "resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.17.2.tgz",
+      "integrity": "sha512-IBhBslgngMQN8DDSppmgDv7RNrlFotuuDsKcrCP3+HbFaVivIBU7u9oiiErw8sH4ynx3+gOGQ3q2otkgiSi6kg==",
+      "dev": true,
+      "optional": true,
+      "requires": {
+        "generate-function": "^2.0.0",
+        "generate-object-property": "^1.1.0",
+        "is-my-ip-valid": "^1.0.0",
+        "jsonpointer": "^4.0.0",
+        "xtend": "^4.0.0"
+      }
+    },
+    "is-number": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
+      "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
+      "dev": true,
+      "requires": {
+        "kind-of": "^3.0.2"
+      },
+      "dependencies": {
+        "kind-of": {
+          "version": "3.2.2",
+          "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+          "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+          "dev": true,
+          "requires": {
+            "is-buffer": "^1.1.5"
+          }
+        }
+      }
+    },
+    "is-odd": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/is-odd/-/is-odd-2.0.0.tgz",
+      "integrity": "sha512-OTiixgpZAT1M4NHgS5IguFp/Vz2VI3U7Goh4/HA1adtwyLtSBrxYlcSYkhpAE07s4fKEcjrFxyvtQBND4vFQyQ==",
+      "dev": true,
+      "requires": {
+        "is-number": "^4.0.0"
+      },
+      "dependencies": {
+        "is-number": {
+          "version": "4.0.0",
+          "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz",
+          "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==",
+          "dev": true
+        }
+      }
+    },
+    "is-path-cwd": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz",
+      "integrity": "sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0=",
+      "dev": true
+    },
+    "is-path-in-cwd": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.1.tgz",
+      "integrity": "sha512-FjV1RTW48E7CWM7eE/J2NJvAEEVektecDBVBE5Hh3nM1Jd0kvhHtX68Pr3xsDf857xt3Y4AkwVULK1Vku62aaQ==",
+      "dev": true,
+      "requires": {
+        "is-path-inside": "^1.0.0"
+      }
+    },
+    "is-path-inside": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz",
+      "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=",
+      "dev": true,
+      "requires": {
+        "path-is-inside": "^1.0.1"
+      }
+    },
+    "is-plain-object": {
+      "version": "2.0.4",
+      "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz",
+      "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
+      "dev": true,
+      "requires": {
+        "isobject": "^3.0.1"
+      }
+    },
+    "is-posix-bracket": {
+      "version": "0.1.1",
+      "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz",
+      "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=",
+      "dev": true
+    },
+    "is-primitive": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz",
+      "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=",
+      "dev": true
+    },
+    "is-property": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz",
+      "integrity": "sha1-V/4cTkhHTt1lsJkR8msc1Ald2oQ=",
+      "dev": true,
+      "optional": true
+    },
+    "is-regex": {
+      "version": "1.0.4",
+      "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz",
+      "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=",
+      "dev": true,
+      "requires": {
+        "has": "^1.0.1"
+      }
+    },
+    "is-stream": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz",
+      "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=",
+      "dev": true
+    },
+    "is-symbol": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.1.tgz",
+      "integrity": "sha1-PMWfAAJRlLarLjjbrmaJJWtmBXI=",
+      "dev": true
+    },
+    "is-typedarray": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
+      "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=",
+      "dev": true
+    },
+    "is-utf8": {
+      "version": "0.2.1",
+      "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz",
+      "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=",
+      "dev": true
+    },
+    "is-windows": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz",
+      "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==",
+      "dev": true
+    },
+    "is-wsl": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz",
+      "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=",
+      "dev": true
+    },
+    "isarray": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+      "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
+      "dev": true
+    },
+    "isbinaryfile": {
+      "version": "3.0.2",
+      "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-3.0.2.tgz",
+      "integrity": "sha1-Sj6XTsDLqQBNP8bN5yCeppNopiE=",
+      "dev": true
+    },
+    "isexe": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
+      "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=",
+      "dev": true
+    },
+    "isobject": {
+      "version": "3.0.1",
+      "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
+      "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=",
+      "dev": true
+    },
+    "isstream": {
+      "version": "0.1.2",
+      "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz",
+      "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=",
+      "dev": true
+    },
+    "istanbul": {
+      "version": "0.4.5",
+      "resolved": "https://registry.npmjs.org/istanbul/-/istanbul-0.4.5.tgz",
+      "integrity": "sha1-ZcfXPUxNqE1POsMQuRj7C4Azczs=",
+      "dev": true,
+      "requires": {
+        "abbrev": "1.0.x",
+        "async": "1.x",
+        "escodegen": "1.8.x",
+        "esprima": "2.7.x",
+        "glob": "^5.0.15",
+        "handlebars": "^4.0.1",
+        "js-yaml": "3.x",
+        "mkdirp": "0.5.x",
+        "nopt": "3.x",
+        "once": "1.x",
+        "resolve": "1.1.x",
+        "supports-color": "^3.1.0",
+        "which": "^1.1.1",
+        "wordwrap": "^1.0.0"
+      },
+      "dependencies": {
+        "glob": {
+          "version": "5.0.15",
+          "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz",
+          "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=",
+          "dev": true,
+          "requires": {
+            "inflight": "^1.0.4",
+            "inherits": "2",
+            "minimatch": "2 || 3",
+            "once": "^1.3.0",
+            "path-is-absolute": "^1.0.0"
+          }
+        },
+        "has-flag": {
+          "version": "1.0.0",
+          "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz",
+          "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=",
+          "dev": true
+        },
+        "resolve": {
+          "version": "1.1.7",
+          "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz",
+          "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=",
+          "dev": true
+        },
+        "supports-color": {
+          "version": "3.2.3",
+          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz",
+          "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=",
+          "dev": true,
+          "requires": {
+            "has-flag": "^1.0.0"
+          }
+        }
+      }
+    },
+    "istanbul-api": {
+      "version": "1.3.1",
+      "resolved": "https://registry.npmjs.org/istanbul-api/-/istanbul-api-1.3.1.tgz",
+      "integrity": "sha512-duj6AlLcsWNwUpfyfHt0nWIeRiZpuShnP40YTxOGQgtaN8fd6JYSxsvxUphTDy8V5MfDXo4s/xVCIIvVCO808g==",
+      "dev": true,
+      "requires": {
+        "async": "^2.1.4",
+        "compare-versions": "^3.1.0",
+        "fileset": "^2.0.2",
+        "istanbul-lib-coverage": "^1.2.0",
+        "istanbul-lib-hook": "^1.2.0",
+        "istanbul-lib-instrument": "^1.10.1",
+        "istanbul-lib-report": "^1.1.4",
+        "istanbul-lib-source-maps": "^1.2.4",
+        "istanbul-reports": "^1.3.0",
+        "js-yaml": "^3.7.0",
+        "mkdirp": "^0.5.1",
+        "once": "^1.4.0"
+      },
+      "dependencies": {
+        "async": {
+          "version": "2.6.1",
+          "resolved": "https://registry.npmjs.org/async/-/async-2.6.1.tgz",
+          "integrity": "sha512-fNEiL2+AZt6AlAw/29Cr0UDe4sRAHCpEHh54WMz+Bb7QfNcFw4h3loofyJpLeQs4Yx7yuqu/2dLgM5hKOs6HlQ==",
+          "dev": true,
+          "requires": {
+            "lodash": "^4.17.10"
+          }
+        }
+      }
+    },
+    "istanbul-instrumenter-loader": {
+      "version": "3.0.1",
+      "resolved": "https://registry.npmjs.org/istanbul-instrumenter-loader/-/istanbul-instrumenter-loader-3.0.1.tgz",
+      "integrity": "sha512-a5SPObZgS0jB/ixaKSMdn6n/gXSrK2S6q/UfRJBT3e6gQmVjwZROTODQsYW5ZNwOu78hG62Y3fWlebaVOL0C+w==",
+      "dev": true,
+      "requires": {
+        "convert-source-map": "^1.5.0",
+        "istanbul-lib-instrument": "^1.7.3",
+        "loader-utils": "^1.1.0",
+        "schema-utils": "^0.3.0"
+      },
+      "dependencies": {
+        "ajv": {
+          "version": "5.5.2",
+          "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz",
+          "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=",
+          "dev": true,
+          "requires": {
+            "co": "^4.6.0",
+            "fast-deep-equal": "^1.0.0",
+            "fast-json-stable-stringify": "^2.0.0",
+            "json-schema-traverse": "^0.3.0"
+          }
+        },
+        "schema-utils": {
+          "version": "0.3.0",
+          "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.3.0.tgz",
+          "integrity": "sha1-9YdyIs4+kx7a4DnxfrNxbnE3+M8=",
+          "dev": true,
+          "requires": {
+            "ajv": "^5.0.0"
+          }
+        }
+      }
+    },
+    "istanbul-lib-coverage": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-1.2.0.tgz",
+      "integrity": "sha512-GvgM/uXRwm+gLlvkWHTjDAvwynZkL9ns15calTrmhGgowlwJBbWMYzWbKqE2DT6JDP1AFXKa+Zi0EkqNCUqY0A==",
+      "dev": true
+    },
+    "istanbul-lib-hook": {
+      "version": "1.2.1",
+      "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-1.2.1.tgz",
+      "integrity": "sha512-eLAMkPG9FU0v5L02lIkcj/2/Zlz9OuluaXikdr5iStk8FDbSwAixTK9TkYxbF0eNnzAJTwM2fkV2A1tpsIp4Jg==",
+      "dev": true,
+      "requires": {
+        "append-transform": "^1.0.0"
+      }
+    },
+    "istanbul-lib-instrument": {
+      "version": "1.10.1",
+      "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-1.10.1.tgz",
+      "integrity": "sha512-1dYuzkOCbuR5GRJqySuZdsmsNKPL3PTuyPevQfoCXJePT9C8y1ga75neU+Tuy9+yS3G/dgx8wgOmp2KLpgdoeQ==",
+      "dev": true,
+      "requires": {
+        "babel-generator": "^6.18.0",
+        "babel-template": "^6.16.0",
+        "babel-traverse": "^6.18.0",
+        "babel-types": "^6.18.0",
+        "babylon": "^6.18.0",
+        "istanbul-lib-coverage": "^1.2.0",
+        "semver": "^5.3.0"
+      }
+    },
+    "istanbul-lib-report": {
+      "version": "1.1.4",
+      "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-1.1.4.tgz",
+      "integrity": "sha512-Azqvq5tT0U09nrncK3q82e/Zjkxa4tkFZv7E6VcqP0QCPn6oNljDPfrZEC/umNXds2t7b8sRJfs6Kmpzt8m2kA==",
+      "dev": true,
+      "requires": {
+        "istanbul-lib-coverage": "^1.2.0",
+        "mkdirp": "^0.5.1",
+        "path-parse": "^1.0.5",
+        "supports-color": "^3.1.2"
+      },
+      "dependencies": {
+        "has-flag": {
+          "version": "1.0.0",
+          "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz",
+          "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=",
+          "dev": true
+        },
+        "supports-color": {
+          "version": "3.2.3",
+          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz",
+          "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=",
+          "dev": true,
+          "requires": {
+            "has-flag": "^1.0.0"
+          }
+        }
+      }
+    },
+    "istanbul-lib-source-maps": {
+      "version": "1.2.5",
+      "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.5.tgz",
+      "integrity": "sha512-8O2T/3VhrQHn0XcJbP1/GN7kXMiRAlPi+fj3uEHrjBD8Oz7Py0prSC25C09NuAZS6bgW1NNKAvCSHZXB0irSGA==",
+      "dev": true,
+      "requires": {
+        "debug": "^3.1.0",
+        "istanbul-lib-coverage": "^1.2.0",
+        "mkdirp": "^0.5.1",
+        "rimraf": "^2.6.1",
+        "source-map": "^0.5.3"
+      },
+      "dependencies": {
+        "debug": {
+          "version": "3.1.0",
+          "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
+          "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
+          "dev": true,
+          "requires": {
+            "ms": "2.0.0"
+          }
+        }
+      }
+    },
+    "istanbul-reports": {
+      "version": "1.3.0",
+      "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-1.3.0.tgz",
+      "integrity": "sha512-y2Z2IMqE1gefWUaVjrBm0mSKvUkaBy9Vqz8iwr/r40Y9hBbIteH5wqHG/9DLTfJ9xUnUT2j7A3+VVJ6EaYBllA==",
+      "dev": true,
+      "requires": {
+        "handlebars": "^4.0.3"
+      }
+    },
+    "jasmine": {
+      "version": "2.8.0",
+      "resolved": "https://registry.npmjs.org/jasmine/-/jasmine-2.8.0.tgz",
+      "integrity": "sha1-awicChFXax8W3xG4AUbZHU6Lij4=",
+      "dev": true,
+      "requires": {
+        "exit": "^0.1.2",
+        "glob": "^7.0.6",
+        "jasmine-core": "~2.8.0"
+      },
+      "dependencies": {
+        "jasmine-core": {
+          "version": "2.8.0",
+          "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-2.8.0.tgz",
+          "integrity": "sha1-vMl5rh+f0FcB5F5S5l06XWPxok4=",
+          "dev": true
+        }
+      }
+    },
+    "jasmine-core": {
+      "version": "2.99.1",
+      "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-2.99.1.tgz",
+      "integrity": "sha1-5kAN8ea1bhMLYcS80JPap/boyhU=",
+      "dev": true
+    },
+    "jasmine-spec-reporter": {
+      "version": "4.2.1",
+      "resolved": "https://registry.npmjs.org/jasmine-spec-reporter/-/jasmine-spec-reporter-4.2.1.tgz",
+      "integrity": "sha512-FZBoZu7VE5nR7Nilzy+Np8KuVIOxF4oXDPDknehCYBDE080EnlPu0afdZNmpGDBRCUBv3mj5qgqCRmk6W/K8vg==",
+      "dev": true,
+      "requires": {
+        "colors": "1.1.2"
+      }
+    },
+    "jasminewd2": {
+      "version": "2.2.0",
+      "resolved": "https://registry.npmjs.org/jasminewd2/-/jasminewd2-2.2.0.tgz",
+      "integrity": "sha1-43zwsX8ZnM4jvqcbIDk5Uka07E4=",
+      "dev": true
+    },
+    "js-base64": {
+      "version": "2.4.5",
+      "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.4.5.tgz",
+      "integrity": "sha512-aUnNwqMOXw3yvErjMPSQu6qIIzUmT1e5KcU1OZxRDU1g/am6mzBvcrmLAYwzmB59BHPrh5/tKaiF4OPhqRWESQ==",
+      "dev": true,
+      "optional": true
+    },
+    "js-tokens": {
+      "version": "3.0.2",
+      "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz",
+      "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=",
+      "dev": true
+    },
+    "js-yaml": {
+      "version": "3.12.0",
+      "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.12.0.tgz",
+      "integrity": "sha512-PIt2cnwmPfL4hKNwqeiuz4bKfnzHTBv6HyVgjahA6mPLwPDzjDWrplJBMjHUFxku/N3FlmrbyPclad+I+4mJ3A==",
+      "dev": true,
+      "requires": {
+        "argparse": "^1.0.7",
+        "esprima": "^4.0.0"
+      },
+      "dependencies": {
+        "esprima": {
+          "version": "4.0.0",
+          "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz",
+          "integrity": "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw==",
+          "dev": true
+        }
+      }
+    },
+    "jsbn": {
+      "version": "0.1.1",
+      "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz",
+      "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=",
+      "dev": true,
+      "optional": true
+    },
+    "jsesc": {
+      "version": "1.3.0",
+      "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz",
+      "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=",
+      "dev": true
+    },
+    "json-schema": {
+      "version": "0.2.3",
+      "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz",
+      "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=",
+      "dev": true
+    },
+    "json-schema-traverse": {
+      "version": "0.3.1",
+      "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz",
+      "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=",
+      "dev": true
+    },
+    "json-stable-stringify": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz",
+      "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=",
+      "dev": true,
+      "optional": true,
+      "requires": {
+        "jsonify": "~0.0.0"
+      }
+    },
+    "json-stringify-safe": {
+      "version": "5.0.1",
+      "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
+      "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=",
+      "dev": true
+    },
+    "json3": {
+      "version": "3.3.2",
+      "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.2.tgz",
+      "integrity": "sha1-PAQ0dD35Pi9cQq7nsZvLSDV19OE=",
+      "dev": true
+    },
+    "json5": {
+      "version": "0.5.1",
+      "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz",
+      "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=",
+      "dev": true
+    },
+    "jsonify": {
+      "version": "0.0.0",
+      "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz",
+      "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=",
+      "dev": true,
+      "optional": true
+    },
+    "jsonpointer": {
+      "version": "4.0.1",
+      "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-4.0.1.tgz",
+      "integrity": "sha1-T9kss04OnbPInIYi7PUfm5eMbLk=",
+      "dev": true,
+      "optional": true
+    },
+    "jsprim": {
+      "version": "1.4.1",
+      "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz",
+      "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=",
+      "dev": true,
+      "requires": {
+        "assert-plus": "1.0.0",
+        "extsprintf": "1.3.0",
+        "json-schema": "0.2.3",
+        "verror": "1.10.0"
+      }
+    },
+    "jszip": {
+      "version": "3.1.5",
+      "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.1.5.tgz",
+      "integrity": "sha512-5W8NUaFRFRqTOL7ZDDrx5qWHJyBXy6velVudIzQUSoqAAYqzSh2Z7/m0Rf1QbmQJccegD0r+YZxBjzqoBiEeJQ==",
+      "dev": true,
+      "requires": {
+        "core-js": "~2.3.0",
+        "es6-promise": "~3.0.2",
+        "lie": "~3.1.0",
+        "pako": "~1.0.2",
+        "readable-stream": "~2.0.6"
+      },
+      "dependencies": {
+        "core-js": {
+          "version": "2.3.0",
+          "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.3.0.tgz",
+          "integrity": "sha1-+rg/uwstjchfpjbEudNMdUIMbWU=",
+          "dev": true
+        },
+        "es6-promise": {
+          "version": "3.0.2",
+          "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-3.0.2.tgz",
+          "integrity": "sha1-AQ1YWEI6XxGJeWZfRkhqlcbuK7Y=",
+          "dev": true
+        },
+        "process-nextick-args": {
+          "version": "1.0.7",
+          "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz",
+          "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=",
+          "dev": true
+        },
+        "readable-stream": {
+          "version": "2.0.6",
+          "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz",
+          "integrity": "sha1-j5A0HmilPMySh4jaz80Rs265t44=",
+          "dev": true,
+          "requires": {
+            "core-util-is": "~1.0.0",
+            "inherits": "~2.0.1",
+            "isarray": "~1.0.0",
+            "process-nextick-args": "~1.0.6",
+            "string_decoder": "~0.10.x",
+            "util-deprecate": "~1.0.1"
+          }
+        },
+        "string_decoder": {
+          "version": "0.10.31",
+          "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
+          "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=",
+          "dev": true
+        }
+      }
+    },
+    "karma": {
+      "version": "1.7.1",
+      "resolved": "https://registry.npmjs.org/karma/-/karma-1.7.1.tgz",
+      "integrity": "sha512-k5pBjHDhmkdaUccnC7gE3mBzZjcxyxYsYVaqiL2G5AqlfLyBO5nw2VdNK+O16cveEPd/gIOWULH7gkiYYwVNHg==",
+      "dev": true,
+      "requires": {
+        "bluebird": "^3.3.0",
+        "body-parser": "^1.16.1",
+        "chokidar": "^1.4.1",
+        "colors": "^1.1.0",
+        "combine-lists": "^1.0.0",
+        "connect": "^3.6.0",
+        "core-js": "^2.2.0",
+        "di": "^0.0.1",
+        "dom-serialize": "^2.2.0",
+        "expand-braces": "^0.1.1",
+        "glob": "^7.1.1",
+        "graceful-fs": "^4.1.2",
+        "http-proxy": "^1.13.0",
+        "isbinaryfile": "^3.0.0",
+        "lodash": "^3.8.0",
+        "log4js": "^0.6.31",
+        "mime": "^1.3.4",
+        "minimatch": "^3.0.2",
+        "optimist": "^0.6.1",
+        "qjobs": "^1.1.4",
+        "range-parser": "^1.2.0",
+        "rimraf": "^2.6.0",
+        "safe-buffer": "^5.0.1",
+        "socket.io": "1.7.3",
+        "source-map": "^0.5.3",
+        "tmp": "0.0.31",
+        "useragent": "^2.1.12"
+      },
+      "dependencies": {
+        "anymatch": {
+          "version": "1.3.2",
+          "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.2.tgz",
+          "integrity": "sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA==",
+          "dev": true,
+          "requires": {
+            "micromatch": "^2.1.5",
+            "normalize-path": "^2.0.0"
+          }
+        },
+        "arr-diff": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz",
+          "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=",
+          "dev": true,
+          "requires": {
+            "arr-flatten": "^1.0.1"
+          }
+        },
+        "array-unique": {
+          "version": "0.2.1",
+          "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz",
+          "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=",
+          "dev": true
+        },
+        "braces": {
+          "version": "1.8.5",
+          "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz",
+          "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=",
+          "dev": true,
+          "requires": {
+            "expand-range": "^1.8.1",
+            "preserve": "^0.2.0",
+            "repeat-element": "^1.1.2"
+          }
+        },
+        "chokidar": {
+          "version": "1.7.0",
+          "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz",
+          "integrity": "sha1-eY5ol3gVHIB2tLNg5e3SjNortGg=",
+          "dev": true,
+          "requires": {
+            "anymatch": "^1.3.0",
+            "async-each": "^1.0.0",
+            "fsevents": "^1.0.0",
+            "glob-parent": "^2.0.0",
+            "inherits": "^2.0.1",
+            "is-binary-path": "^1.0.0",
+            "is-glob": "^2.0.0",
+            "path-is-absolute": "^1.0.0",
+            "readdirp": "^2.0.0"
+          }
+        },
+        "expand-brackets": {
+          "version": "0.1.5",
+          "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz",
+          "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=",
+          "dev": true,
+          "requires": {
+            "is-posix-bracket": "^0.1.0"
+          }
+        },
+        "extglob": {
+          "version": "0.3.2",
+          "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz",
+          "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=",
+          "dev": true,
+          "requires": {
+            "is-extglob": "^1.0.0"
+          }
+        },
+        "glob-parent": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz",
+          "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=",
+          "dev": true,
+          "requires": {
+            "is-glob": "^2.0.0"
+          }
+        },
+        "is-extglob": {
+          "version": "1.0.0",
+          "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz",
+          "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=",
+          "dev": true
+        },
+        "is-glob": {
+          "version": "2.0.1",
+          "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz",
+          "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=",
+          "dev": true,
+          "requires": {
+            "is-extglob": "^1.0.0"
+          }
+        },
+        "kind-of": {
+          "version": "3.2.2",
+          "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+          "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+          "dev": true,
+          "requires": {
+            "is-buffer": "^1.1.5"
+          }
+        },
+        "lodash": {
+          "version": "3.10.1",
+          "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz",
+          "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y=",
+          "dev": true
+        },
+        "micromatch": {
+          "version": "2.3.11",
+          "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz",
+          "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=",
+          "dev": true,
+          "requires": {
+            "arr-diff": "^2.0.0",
+            "array-unique": "^0.2.1",
+            "braces": "^1.8.2",
+            "expand-brackets": "^0.1.4",
+            "extglob": "^0.3.1",
+            "filename-regex": "^2.0.0",
+            "is-extglob": "^1.0.0",
+            "is-glob": "^2.0.1",
+            "kind-of": "^3.0.2",
+            "normalize-path": "^2.0.1",
+            "object.omit": "^2.0.0",
+            "parse-glob": "^3.0.4",
+            "regex-cache": "^0.4.2"
+          }
+        }
+      }
+    },
+    "karma-chrome-launcher": {
+      "version": "2.2.0",
+      "resolved": "https://registry.npmjs.org/karma-chrome-launcher/-/karma-chrome-launcher-2.2.0.tgz",
+      "integrity": "sha512-uf/ZVpAabDBPvdPdveyk1EPgbnloPvFFGgmRhYLTDH7gEB4nZdSBk8yTU47w1g/drLSx5uMOkjKk7IWKfWg/+w==",
+      "dev": true,
+      "requires": {
+        "fs-access": "^1.0.0",
+        "which": "^1.2.1"
+      }
+    },
+    "karma-coverage-istanbul-reporter": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/karma-coverage-istanbul-reporter/-/karma-coverage-istanbul-reporter-2.0.1.tgz",
+      "integrity": "sha512-UcgrHkFehI5+ivMouD8NH/UOHiX4oCAtwaANylzPFdcAuD52fnCUuelacq2gh8tZ4ydhU3+xiXofSq7j5Ehygw==",
+      "dev": true,
+      "requires": {
+        "istanbul-api": "^1.3.1",
+        "minimatch": "^3.0.4"
+      }
+    },
+    "karma-jasmine": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmjs.org/karma-jasmine/-/karma-jasmine-1.1.2.tgz",
+      "integrity": "sha1-OU8rJf+0pkS5rabyLUQ+L9CIhsM=",
+      "dev": true
+    },
+    "karma-jasmine-html-reporter": {
+      "version": "0.2.2",
+      "resolved": "https://registry.npmjs.org/karma-jasmine-html-reporter/-/karma-jasmine-html-reporter-0.2.2.tgz",
+      "integrity": "sha1-SKjl7xiAdhfuK14zwRlMNbQ5Ukw=",
+      "dev": true,
+      "requires": {
+        "karma-jasmine": "^1.0.2"
+      }
+    },
+    "karma-source-map-support": {
+      "version": "1.3.0",
+      "resolved": "https://registry.npmjs.org/karma-source-map-support/-/karma-source-map-support-1.3.0.tgz",
+      "integrity": "sha512-HcPqdAusNez/ywa+biN4EphGz62MmQyPggUsDfsHqa7tSe4jdsxgvTKuDfIazjL+IOxpVWyT7Pr4dhAV+sxX5Q==",
+      "dev": true,
+      "requires": {
+        "source-map-support": "^0.5.5"
+      }
+    },
+    "killable": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/killable/-/killable-1.0.0.tgz",
+      "integrity": "sha1-2ouEvUfeU5WHj5XWTQLyRJ/gXms=",
+      "dev": true
+    },
+    "kind-of": {
+      "version": "6.0.2",
+      "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz",
+      "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==",
+      "dev": true
+    },
+    "lazy-cache": {
+      "version": "1.0.4",
+      "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz",
+      "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=",
+      "dev": true,
+      "optional": true
+    },
+    "lcid": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz",
+      "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=",
+      "dev": true,
+      "requires": {
+        "invert-kv": "^1.0.0"
+      }
+    },
+    "leb": {
+      "version": "0.3.0",
+      "resolved": "https://registry.npmjs.org/leb/-/leb-0.3.0.tgz",
+      "integrity": "sha1-Mr7p+tFoMo1q6oUi2DP0GA7tHaM=",
+      "dev": true
+    },
+    "less": {
+      "version": "3.0.4",
+      "resolved": "https://registry.npmjs.org/less/-/less-3.0.4.tgz",
+      "integrity": "sha512-q3SyEnPKbk9zh4l36PGeW2fgynKu+FpbhiUNx/yaiBUQ3V0CbACCgb9FzYWcRgI2DJlP6eI4jc8XPrCTi55YcQ==",
+      "dev": true,
+      "requires": {
+        "errno": "^0.1.1",
+        "graceful-fs": "^4.1.2",
+        "image-size": "~0.5.0",
+        "mime": "^1.4.1",
+        "mkdirp": "^0.5.0",
+        "promise": "^7.1.1",
+        "request": "^2.83.0",
+        "source-map": "~0.6.0"
+      },
+      "dependencies": {
+        "source-map": {
+          "version": "0.6.1",
+          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+          "dev": true,
+          "optional": true
+        }
+      }
+    },
+    "less-loader": {
+      "version": "4.1.0",
+      "resolved": "https://registry.npmjs.org/less-loader/-/less-loader-4.1.0.tgz",
+      "integrity": "sha512-KNTsgCE9tMOM70+ddxp9yyt9iHqgmSs0yTZc5XH5Wo+g80RWRIYNqE58QJKm/yMud5wZEvz50ugRDuzVIkyahg==",
+      "dev": true,
+      "requires": {
+        "clone": "^2.1.1",
+        "loader-utils": "^1.1.0",
+        "pify": "^3.0.0"
+      }
+    },
+    "levn": {
+      "version": "0.3.0",
+      "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz",
+      "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=",
+      "dev": true,
+      "requires": {
+        "prelude-ls": "~1.1.2",
+        "type-check": "~0.3.2"
+      }
+    },
+    "license-webpack-plugin": {
+      "version": "1.3.1",
+      "resolved": "https://registry.npmjs.org/license-webpack-plugin/-/license-webpack-plugin-1.3.1.tgz",
+      "integrity": "sha512-NqAFodJdpBUuf1iD+Ij8hQvF0rCFKlO2KaieoQzAPhFgzLCtJnC7Z7x5gQbGNjoe++wOKAtAmwVEIBLqq2Yp1A==",
+      "dev": true,
+      "requires": {
+        "ejs": "^2.5.7"
+      }
+    },
+    "lie": {
+      "version": "3.1.1",
+      "resolved": "https://registry.npmjs.org/lie/-/lie-3.1.1.tgz",
+      "integrity": "sha1-mkNrLMd0bKWd56QfpGmz77dr2H4=",
+      "dev": true,
+      "requires": {
+        "immediate": "~3.0.5"
+      }
+    },
+    "load-json-file": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz",
+      "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=",
+      "dev": true,
+      "requires": {
+        "graceful-fs": "^4.1.2",
+        "parse-json": "^2.2.0",
+        "pify": "^2.0.0",
+        "pinkie-promise": "^2.0.0",
+        "strip-bom": "^2.0.0"
+      },
+      "dependencies": {
+        "pify": {
+          "version": "2.3.0",
+          "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
+          "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
+          "dev": true
+        }
+      }
+    },
+    "loader-runner": {
+      "version": "2.3.0",
+      "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.3.0.tgz",
+      "integrity": "sha1-9IKuqC1UPgeSFwDVpG7yb9rGuKI=",
+      "dev": true
+    },
+    "loader-utils": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.1.0.tgz",
+      "integrity": "sha1-yYrvSIvM7aL/teLeZG1qdUQp9c0=",
+      "dev": true,
+      "requires": {
+        "big.js": "^3.1.3",
+        "emojis-list": "^2.0.0",
+        "json5": "^0.5.0"
+      }
+    },
+    "locate-path": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz",
+      "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=",
+      "dev": true,
+      "requires": {
+        "p-locate": "^2.0.0",
+        "path-exists": "^3.0.0"
+      }
+    },
+    "lodash": {
+      "version": "4.17.10",
+      "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz",
+      "integrity": "sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg==",
+      "dev": true
+    },
+    "lodash.assign": {
+      "version": "4.2.0",
+      "resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-4.2.0.tgz",
+      "integrity": "sha1-DZnzzNem0mHRm9rrkkUAXShYCOc=",
+      "dev": true,
+      "optional": true
+    },
+    "lodash.clonedeep": {
+      "version": "4.5.0",
+      "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz",
+      "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=",
+      "dev": true
+    },
+    "lodash.debounce": {
+      "version": "4.0.8",
+      "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz",
+      "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=",
+      "dev": true
+    },
+    "lodash.mergewith": {
+      "version": "4.6.1",
+      "resolved": "https://registry.npmjs.org/lodash.mergewith/-/lodash.mergewith-4.6.1.tgz",
+      "integrity": "sha512-eWw5r+PYICtEBgrBE5hhlT6aAa75f411bgDz/ZL2KZqYV03USvucsxcHUIlGTDTECs1eunpI7HOV7U+WLDvNdQ==",
+      "dev": true,
+      "optional": true
+    },
+    "lodash.tail": {
+      "version": "4.1.1",
+      "resolved": "https://registry.npmjs.org/lodash.tail/-/lodash.tail-4.1.1.tgz",
+      "integrity": "sha1-0jM6NtnncXyK0vfKyv7HwytERmQ=",
+      "dev": true
+    },
+    "log-symbols": {
+      "version": "2.2.0",
+      "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz",
+      "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==",
+      "dev": true,
+      "requires": {
+        "chalk": "^2.0.1"
+      }
+    },
+    "log4js": {
+      "version": "0.6.38",
+      "resolved": "https://registry.npmjs.org/log4js/-/log4js-0.6.38.tgz",
+      "integrity": "sha1-LElBFmldb7JUgJQ9P8hy5mKlIv0=",
+      "dev": true,
+      "requires": {
+        "readable-stream": "~1.0.2",
+        "semver": "~4.3.3"
+      },
+      "dependencies": {
+        "isarray": {
+          "version": "0.0.1",
+          "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
+          "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=",
+          "dev": true
+        },
+        "readable-stream": {
+          "version": "1.0.34",
+          "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz",
+          "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=",
+          "dev": true,
+          "requires": {
+            "core-util-is": "~1.0.0",
+            "inherits": "~2.0.1",
+            "isarray": "0.0.1",
+            "string_decoder": "~0.10.x"
+          }
+        },
+        "semver": {
+          "version": "4.3.6",
+          "resolved": "https://registry.npmjs.org/semver/-/semver-4.3.6.tgz",
+          "integrity": "sha1-MAvG4OhjdPe6YQaLWx7NV/xlMto=",
+          "dev": true
+        },
+        "string_decoder": {
+          "version": "0.10.31",
+          "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
+          "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=",
+          "dev": true
+        }
+      }
+    },
+    "loglevel": {
+      "version": "1.6.1",
+      "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.6.1.tgz",
+      "integrity": "sha1-4PyVEztu8nbNyIh82vJKpvFW+Po=",
+      "dev": true
+    },
+    "loglevelnext": {
+      "version": "1.0.5",
+      "resolved": "https://registry.npmjs.org/loglevelnext/-/loglevelnext-1.0.5.tgz",
+      "integrity": "sha512-V/73qkPuJmx4BcBF19xPBr+0ZRVBhc4POxvZTZdMeXpJ4NItXSJ/MSwuFT0kQJlCbXvdlZoQQ/418bS1y9Jh6A==",
+      "dev": true,
+      "requires": {
+        "es6-symbol": "^3.1.1",
+        "object.assign": "^4.1.0"
+      }
+    },
+    "long": {
+      "version": "3.2.0",
+      "resolved": "https://registry.npmjs.org/long/-/long-3.2.0.tgz",
+      "integrity": "sha1-2CG3E4yhy1gcFymQ7xTbIAtcR0s=",
+      "dev": true
+    },
+    "longest": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz",
+      "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=",
+      "dev": true
+    },
+    "loose-envify": {
+      "version": "1.3.1",
+      "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.3.1.tgz",
+      "integrity": "sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg=",
+      "dev": true,
+      "requires": {
+        "js-tokens": "^3.0.0"
+      }
+    },
+    "loud-rejection": {
+      "version": "1.6.0",
+      "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz",
+      "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=",
+      "dev": true,
+      "requires": {
+        "currently-unhandled": "^0.4.1",
+        "signal-exit": "^3.0.0"
+      }
+    },
+    "lower-case": {
+      "version": "1.1.4",
+      "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz",
+      "integrity": "sha1-miyr0bno4K6ZOkv31YdcOcQujqw=",
+      "dev": true
+    },
+    "lru-cache": {
+      "version": "4.1.3",
+      "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.3.tgz",
+      "integrity": "sha512-fFEhvcgzuIoJVUF8fYr5KR0YqxD238zgObTps31YdADwPPAp82a4M8TrckkWyx7ekNlf9aBcVn81cFwwXngrJA==",
+      "dev": true,
+      "requires": {
+        "pseudomap": "^1.0.2",
+        "yallist": "^2.1.2"
+      }
+    },
+    "make-dir": {
+      "version": "1.3.0",
+      "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz",
+      "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==",
+      "dev": true,
+      "requires": {
+        "pify": "^3.0.0"
+      }
+    },
+    "make-error": {
+      "version": "1.3.4",
+      "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.4.tgz",
+      "integrity": "sha512-0Dab5btKVPhibSalc9QGXb559ED7G7iLjFXBaj9Wq8O3vorueR5K5jaE3hkG6ZQINyhA/JgG6Qk4qdFQjsYV6g==",
+      "dev": true
+    },
+    "map-cache": {
+      "version": "0.2.2",
+      "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz",
+      "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=",
+      "dev": true
+    },
+    "map-obj": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz",
+      "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=",
+      "dev": true
+    },
+    "map-visit": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz",
+      "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=",
+      "dev": true,
+      "requires": {
+        "object-visit": "^1.0.0"
+      }
+    },
+    "math-random": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/math-random/-/math-random-1.0.1.tgz",
+      "integrity": "sha1-izqsWIuKZuSXXjzepn97sylgH6w=",
+      "dev": true
+    },
+    "md5.js": {
+      "version": "1.3.4",
+      "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.4.tgz",
+      "integrity": "sha1-6b296UogpawYsENA/Fdk1bCdkB0=",
+      "dev": true,
+      "requires": {
+        "hash-base": "^3.0.0",
+        "inherits": "^2.0.1"
+      }
+    },
+    "media-typer": {
+      "version": "0.3.0",
+      "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
+      "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=",
+      "dev": true
+    },
+    "mem": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz",
+      "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=",
+      "dev": true,
+      "requires": {
+        "mimic-fn": "^1.0.0"
+      }
+    },
+    "memory-fs": {
+      "version": "0.4.1",
+      "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz",
+      "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=",
+      "dev": true,
+      "requires": {
+        "errno": "^0.1.3",
+        "readable-stream": "^2.0.1"
+      }
+    },
+    "meow": {
+      "version": "3.7.0",
+      "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz",
+      "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=",
+      "dev": true,
+      "requires": {
+        "camelcase-keys": "^2.0.0",
+        "decamelize": "^1.1.2",
+        "loud-rejection": "^1.0.0",
+        "map-obj": "^1.0.1",
+        "minimist": "^1.1.3",
+        "normalize-package-data": "^2.3.4",
+        "object-assign": "^4.0.1",
+        "read-pkg-up": "^1.0.1",
+        "redent": "^1.0.0",
+        "trim-newlines": "^1.0.0"
+      },
+      "dependencies": {
+        "minimist": {
+          "version": "1.2.0",
+          "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
+          "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=",
+          "dev": true
+        }
+      }
+    },
+    "merge-descriptors": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
+      "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=",
+      "dev": true
+    },
+    "methods": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
+      "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=",
+      "dev": true
+    },
+    "micromatch": {
+      "version": "3.1.10",
+      "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
+      "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
+      "dev": true,
+      "requires": {
+        "arr-diff": "^4.0.0",
+        "array-unique": "^0.3.2",
+        "braces": "^2.3.1",
+        "define-property": "^2.0.2",
+        "extend-shallow": "^3.0.2",
+        "extglob": "^2.0.4",
+        "fragment-cache": "^0.2.1",
+        "kind-of": "^6.0.2",
+        "nanomatch": "^1.2.9",
+        "object.pick": "^1.3.0",
+        "regex-not": "^1.0.0",
+        "snapdragon": "^0.8.1",
+        "to-regex": "^3.0.2"
+      }
+    },
+    "miller-rabin": {
+      "version": "4.0.1",
+      "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz",
+      "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==",
+      "dev": true,
+      "requires": {
+        "bn.js": "^4.0.0",
+        "brorand": "^1.0.1"
+      }
+    },
+    "mime": {
+      "version": "1.6.0",
+      "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
+      "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==",
+      "dev": true
+    },
+    "mime-db": {
+      "version": "1.33.0",
+      "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz",
+      "integrity": "sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==",
+      "dev": true
+    },
+    "mime-types": {
+      "version": "2.1.18",
+      "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz",
+      "integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==",
+      "dev": true,
+      "requires": {
+        "mime-db": "~1.33.0"
+      }
+    },
+    "mimic-fn": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz",
+      "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==",
+      "dev": true
+    },
+    "mini-css-extract-plugin": {
+      "version": "0.4.0",
+      "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-0.4.0.tgz",
+      "integrity": "sha512-2Zik6PhUZ/MbiboG6SDS9UTPL4XXy4qnyGjSdCIWRrr8xb6PwLtHE+AYOjkXJWdF0OG8vo/yrJ8CgS5WbMpzIg==",
+      "dev": true,
+      "requires": {
+        "loader-utils": "^1.1.0",
+        "webpack-sources": "^1.1.0"
+      }
+    },
+    "minimalistic-assert": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz",
+      "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==",
+      "dev": true
+    },
+    "minimalistic-crypto-utils": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz",
+      "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=",
+      "dev": true
+    },
+    "minimatch": {
+      "version": "3.0.4",
+      "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
+      "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
+      "dev": true,
+      "requires": {
+        "brace-expansion": "^1.1.7"
+      }
+    },
+    "minimist": {
+      "version": "0.0.8",
+      "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
+      "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=",
+      "dev": true
+    },
+    "mississippi": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-2.0.0.tgz",
+      "integrity": "sha512-zHo8v+otD1J10j/tC+VNoGK9keCuByhKovAvdn74dmxJl9+mWHnx6EMsDN4lgRoMI/eYo2nchAxniIbUPb5onw==",
+      "dev": true,
+      "requires": {
+        "concat-stream": "^1.5.0",
+        "duplexify": "^3.4.2",
+        "end-of-stream": "^1.1.0",
+        "flush-write-stream": "^1.0.0",
+        "from2": "^2.1.0",
+        "parallel-transform": "^1.1.0",
+        "pump": "^2.0.1",
+        "pumpify": "^1.3.3",
+        "stream-each": "^1.1.0",
+        "through2": "^2.0.0"
+      }
+    },
+    "mixin-deep": {
+      "version": "1.3.1",
+      "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.1.tgz",
+      "integrity": "sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ==",
+      "dev": true,
+      "requires": {
+        "for-in": "^1.0.2",
+        "is-extendable": "^1.0.1"
+      },
+      "dependencies": {
+        "is-extendable": {
+          "version": "1.0.1",
+          "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
+          "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
+          "dev": true,
+          "requires": {
+            "is-plain-object": "^2.0.4"
+          }
+        }
+      }
+    },
+    "mixin-object": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/mixin-object/-/mixin-object-2.0.1.tgz",
+      "integrity": "sha1-T7lJRB2rGCVA8f4DW6YOGUel5X4=",
+      "dev": true,
+      "requires": {
+        "for-in": "^0.1.3",
+        "is-extendable": "^0.1.1"
+      },
+      "dependencies": {
+        "for-in": {
+          "version": "0.1.8",
+          "resolved": "https://registry.npmjs.org/for-in/-/for-in-0.1.8.tgz",
+          "integrity": "sha1-2Hc5COMSVhCZUrH9ubP6hn0ndeE=",
+          "dev": true
+        }
+      }
+    },
+    "mkdirp": {
+      "version": "0.5.1",
+      "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
+      "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
+      "dev": true,
+      "requires": {
+        "minimist": "0.0.8"
+      }
+    },
+    "move-concurrently": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz",
+      "integrity": "sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=",
+      "dev": true,
+      "requires": {
+        "aproba": "^1.1.1",
+        "copy-concurrently": "^1.0.0",
+        "fs-write-stream-atomic": "^1.0.8",
+        "mkdirp": "^0.5.1",
+        "rimraf": "^2.5.4",
+        "run-queue": "^1.0.3"
+      }
+    },
+    "ms": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+      "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
+      "dev": true
+    },
+    "multicast-dns": {
+      "version": "6.2.3",
+      "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-6.2.3.tgz",
+      "integrity": "sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g==",
+      "dev": true,
+      "requires": {
+        "dns-packet": "^1.3.1",
+        "thunky": "^1.0.2"
+      }
+    },
+    "multicast-dns-service-types": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz",
+      "integrity": "sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE=",
+      "dev": true
+    },
+    "nan": {
+      "version": "2.10.0",
+      "resolved": "https://registry.npmjs.org/nan/-/nan-2.10.0.tgz",
+      "integrity": "sha512-bAdJv7fBLhWC+/Bls0Oza+mvTaNQtP+1RyhhhvD95pgUJz6XM5IzgmxOkItJ9tkoCiplvAnXI1tNmmUD/eScyA==",
+      "dev": true,
+      "optional": true
+    },
+    "nanomatch": {
+      "version": "1.2.9",
+      "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.9.tgz",
+      "integrity": "sha512-n8R9bS8yQ6eSXaV6jHUpKzD8gLsin02w1HSFiegwrs9E098Ylhw5jdyKPaYqvHknHaSCKTPp7C8dGCQ0q9koXA==",
+      "dev": true,
+      "requires": {
+        "arr-diff": "^4.0.0",
+        "array-unique": "^0.3.2",
+        "define-property": "^2.0.2",
+        "extend-shallow": "^3.0.2",
+        "fragment-cache": "^0.2.1",
+        "is-odd": "^2.0.0",
+        "is-windows": "^1.0.2",
+        "kind-of": "^6.0.2",
+        "object.pick": "^1.3.0",
+        "regex-not": "^1.0.0",
+        "snapdragon": "^0.8.1",
+        "to-regex": "^3.0.1"
+      }
+    },
+    "negotiator": {
+      "version": "0.6.1",
+      "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz",
+      "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=",
+      "dev": true
+    },
+    "neo-async": {
+      "version": "2.5.1",
+      "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.5.1.tgz",
+      "integrity": "sha512-3KL3fvuRkZ7s4IFOMfztb7zJp3QaVWnBeGoJlgB38XnCRPj/0tLzzLG5IB8NYOHbJ8g8UGrgZv44GLDk6CxTxA==",
+      "dev": true
+    },
+    "next-tick": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz",
+      "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=",
+      "dev": true
+    },
+    "no-case": {
+      "version": "2.3.2",
+      "resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.2.tgz",
+      "integrity": "sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==",
+      "dev": true,
+      "requires": {
+        "lower-case": "^1.1.1"
+      }
+    },
+    "node-forge": {
+      "version": "0.7.5",
+      "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.7.5.tgz",
+      "integrity": "sha512-MmbQJ2MTESTjt3Gi/3yG1wGpIMhUfcIypUCGtTizFR9IiccFwxSpfp0vtIZlkFclEqERemxfnSdZEMR9VqqEFQ==",
+      "dev": true
+    },
+    "node-gyp": {
+      "version": "3.7.0",
+      "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-3.7.0.tgz",
+      "integrity": "sha512-qDQE/Ft9xXP6zphwx4sD0t+VhwV7yFaloMpfbL2QnnDZcyaiakWlLdtFGGQfTAwpFHdpbRhRxVhIHN1OKAjgbg==",
+      "dev": true,
+      "optional": true,
+      "requires": {
+        "fstream": "^1.0.0",
+        "glob": "^7.0.3",
+        "graceful-fs": "^4.1.2",
+        "mkdirp": "^0.5.0",
+        "nopt": "2 || 3",
+        "npmlog": "0 || 1 || 2 || 3 || 4",
+        "osenv": "0",
+        "request": ">=2.9.0 <2.82.0",
+        "rimraf": "2",
+        "semver": "~5.3.0",
+        "tar": "^2.0.0",
+        "which": "1"
+      },
+      "dependencies": {
+        "ajv": {
+          "version": "4.11.8",
+          "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz",
+          "integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=",
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "co": "^4.6.0",
+            "json-stable-stringify": "^1.0.1"
+          }
+        },
+        "assert-plus": {
+          "version": "0.2.0",
+          "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz",
+          "integrity": "sha1-104bh+ev/A24qttwIfP+SBAasjQ=",
+          "dev": true,
+          "optional": true
+        },
+        "aws-sign2": {
+          "version": "0.6.0",
+          "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz",
+          "integrity": "sha1-FDQt0428yU0OW4fXY81jYSwOeU8=",
+          "dev": true,
+          "optional": true
+        },
+        "form-data": {
+          "version": "2.1.4",
+          "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.1.4.tgz",
+          "integrity": "sha1-M8GDrPGTJ27KqYFDpp6Uv+4XUNE=",
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "asynckit": "^0.4.0",
+            "combined-stream": "^1.0.5",
+            "mime-types": "^2.1.12"
+          }
+        },
+        "har-schema": {
+          "version": "1.0.5",
+          "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-1.0.5.tgz",
+          "integrity": "sha1-0mMTX0MwfALGAq/I/pWXDAFRNp4=",
+          "dev": true,
+          "optional": true
+        },
+        "har-validator": {
+          "version": "4.2.1",
+          "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-4.2.1.tgz",
+          "integrity": "sha1-M0gdDxu/9gDdID11gSpqX7oALio=",
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "ajv": "^4.9.1",
+            "har-schema": "^1.0.5"
+          }
+        },
+        "http-signature": {
+          "version": "1.1.1",
+          "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz",
+          "integrity": "sha1-33LiZwZs0Kxn+3at+OE0qPvPkb8=",
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "assert-plus": "^0.2.0",
+            "jsprim": "^1.2.2",
+            "sshpk": "^1.7.0"
+          }
+        },
+        "performance-now": {
+          "version": "0.2.0",
+          "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-0.2.0.tgz",
+          "integrity": "sha1-M+8wxcd9TqIcWlOGnZG1bY8lVeU=",
+          "dev": true,
+          "optional": true
+        },
+        "qs": {
+          "version": "6.4.0",
+          "resolved": "https://registry.npmjs.org/qs/-/qs-6.4.0.tgz",
+          "integrity": "sha1-E+JtKK1rD/qpExLNO/cI7TUecjM=",
+          "dev": true,
+          "optional": true
+        },
+        "request": {
+          "version": "2.81.0",
+          "resolved": "https://registry.npmjs.org/request/-/request-2.81.0.tgz",
+          "integrity": "sha1-xpKJRqDgbF+Nb4qTM0af/aRimKA=",
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "aws-sign2": "~0.6.0",
+            "aws4": "^1.2.1",
+            "caseless": "~0.12.0",
+            "combined-stream": "~1.0.5",
+            "extend": "~3.0.0",
+            "forever-agent": "~0.6.1",
+            "form-data": "~2.1.1",
+            "har-validator": "~4.2.1",
+            "hawk": "~3.1.3",
+            "http-signature": "~1.1.0",
+            "is-typedarray": "~1.0.0",
+            "isstream": "~0.1.2",
+            "json-stringify-safe": "~5.0.1",
+            "mime-types": "~2.1.7",
+            "oauth-sign": "~0.8.1",
+            "performance-now": "^0.2.0",
+            "qs": "~6.4.0",
+            "safe-buffer": "^5.0.1",
+            "stringstream": "~0.0.4",
+            "tough-cookie": "~2.3.0",
+            "tunnel-agent": "^0.6.0",
+            "uuid": "^3.0.0"
+          }
+        },
+        "semver": {
+          "version": "5.3.0",
+          "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz",
+          "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=",
+          "dev": true,
+          "optional": true
+        }
+      }
+    },
+    "node-libs-browser": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.1.0.tgz",
+      "integrity": "sha512-5AzFzdoIMb89hBGMZglEegffzgRg+ZFoUmisQ8HI4j1KDdpx13J0taNp2y9xPbur6W61gepGDDotGBVQ7mfUCg==",
+      "dev": true,
+      "requires": {
+        "assert": "^1.1.1",
+        "browserify-zlib": "^0.2.0",
+        "buffer": "^4.3.0",
+        "console-browserify": "^1.1.0",
+        "constants-browserify": "^1.0.0",
+        "crypto-browserify": "^3.11.0",
+        "domain-browser": "^1.1.1",
+        "events": "^1.0.0",
+        "https-browserify": "^1.0.0",
+        "os-browserify": "^0.3.0",
+        "path-browserify": "0.0.0",
+        "process": "^0.11.10",
+        "punycode": "^1.2.4",
+        "querystring-es3": "^0.2.0",
+        "readable-stream": "^2.3.3",
+        "stream-browserify": "^2.0.1",
+        "stream-http": "^2.7.2",
+        "string_decoder": "^1.0.0",
+        "timers-browserify": "^2.0.4",
+        "tty-browserify": "0.0.0",
+        "url": "^0.11.0",
+        "util": "^0.10.3",
+        "vm-browserify": "0.0.4"
+      },
+      "dependencies": {
+        "punycode": {
+          "version": "1.4.1",
+          "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
+          "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=",
+          "dev": true
+        }
+      }
+    },
+    "node-sass": {
+      "version": "4.9.0",
+      "resolved": "https://registry.npmjs.org/node-sass/-/node-sass-4.9.0.tgz",
+      "integrity": "sha512-QFHfrZl6lqRU3csypwviz2XLgGNOoWQbo2GOvtsfQqOfL4cy1BtWnhx/XUeAO9LT3ahBzSRXcEO6DdvAH9DzSg==",
+      "dev": true,
+      "optional": true,
+      "requires": {
+        "async-foreach": "^0.1.3",
+        "chalk": "^1.1.1",
+        "cross-spawn": "^3.0.0",
+        "gaze": "^1.0.0",
+        "get-stdin": "^4.0.1",
+        "glob": "^7.0.3",
+        "in-publish": "^2.0.0",
+        "lodash.assign": "^4.2.0",
+        "lodash.clonedeep": "^4.3.2",
+        "lodash.mergewith": "^4.6.0",
+        "meow": "^3.7.0",
+        "mkdirp": "^0.5.1",
+        "nan": "^2.10.0",
+        "node-gyp": "^3.3.1",
+        "npmlog": "^4.0.0",
+        "request": "~2.79.0",
+        "sass-graph": "^2.2.4",
+        "stdout-stream": "^1.4.0",
+        "true-case-path": "^1.0.2"
+      },
+      "dependencies": {
+        "ansi-styles": {
+          "version": "2.2.1",
+          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
+          "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
+          "dev": true
+        },
+        "assert-plus": {
+          "version": "0.2.0",
+          "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz",
+          "integrity": "sha1-104bh+ev/A24qttwIfP+SBAasjQ=",
+          "dev": true,
+          "optional": true
+        },
+        "aws-sign2": {
+          "version": "0.6.0",
+          "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz",
+          "integrity": "sha1-FDQt0428yU0OW4fXY81jYSwOeU8=",
+          "dev": true,
+          "optional": true
+        },
+        "caseless": {
+          "version": "0.11.0",
+          "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.11.0.tgz",
+          "integrity": "sha1-cVuW6phBWTzDMGeSP17GDr2k99c=",
+          "dev": true,
+          "optional": true
+        },
+        "chalk": {
+          "version": "1.1.3",
+          "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
+          "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
+          "dev": true,
+          "requires": {
+            "ansi-styles": "^2.2.1",
+            "escape-string-regexp": "^1.0.2",
+            "has-ansi": "^2.0.0",
+            "strip-ansi": "^3.0.0",
+            "supports-color": "^2.0.0"
+          }
+        },
+        "form-data": {
+          "version": "2.1.4",
+          "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.1.4.tgz",
+          "integrity": "sha1-M8GDrPGTJ27KqYFDpp6Uv+4XUNE=",
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "asynckit": "^0.4.0",
+            "combined-stream": "^1.0.5",
+            "mime-types": "^2.1.12"
+          }
+        },
+        "har-validator": {
+          "version": "2.0.6",
+          "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-2.0.6.tgz",
+          "integrity": "sha1-zcvAgYgmWtEZtqWnyKtw7s+10n0=",
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "chalk": "^1.1.1",
+            "commander": "^2.9.0",
+            "is-my-json-valid": "^2.12.4",
+            "pinkie-promise": "^2.0.0"
+          }
+        },
+        "http-signature": {
+          "version": "1.1.1",
+          "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz",
+          "integrity": "sha1-33LiZwZs0Kxn+3at+OE0qPvPkb8=",
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "assert-plus": "^0.2.0",
+            "jsprim": "^1.2.2",
+            "sshpk": "^1.7.0"
+          }
+        },
+        "qs": {
+          "version": "6.3.2",
+          "resolved": "https://registry.npmjs.org/qs/-/qs-6.3.2.tgz",
+          "integrity": "sha1-51vV9uJoEioqDgvaYwslUMFmUCw=",
+          "dev": true,
+          "optional": true
+        },
+        "request": {
+          "version": "2.79.0",
+          "resolved": "https://registry.npmjs.org/request/-/request-2.79.0.tgz",
+          "integrity": "sha1-Tf5b9r6LjNw3/Pk+BLZVd3InEN4=",
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "aws-sign2": "~0.6.0",
+            "aws4": "^1.2.1",
+            "caseless": "~0.11.0",
+            "combined-stream": "~1.0.5",
+            "extend": "~3.0.0",
+            "forever-agent": "~0.6.1",
+            "form-data": "~2.1.1",
+            "har-validator": "~2.0.6",
+            "hawk": "~3.1.3",
+            "http-signature": "~1.1.0",
+            "is-typedarray": "~1.0.0",
+            "isstream": "~0.1.2",
+            "json-stringify-safe": "~5.0.1",
+            "mime-types": "~2.1.7",
+            "oauth-sign": "~0.8.1",
+            "qs": "~6.3.0",
+            "stringstream": "~0.0.4",
+            "tough-cookie": "~2.3.0",
+            "tunnel-agent": "~0.4.1",
+            "uuid": "^3.0.0"
+          }
+        },
+        "supports-color": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
+          "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
+          "dev": true
+        },
+        "tunnel-agent": {
+          "version": "0.4.3",
+          "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.4.3.tgz",
+          "integrity": "sha1-Y3PbdpCf5XDgjXNYM2Xtgop07us=",
+          "dev": true,
+          "optional": true
+        }
+      }
+    },
+    "nopt": {
+      "version": "3.0.6",
+      "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz",
+      "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=",
+      "dev": true,
+      "requires": {
+        "abbrev": "1"
+      }
+    },
+    "normalize-package-data": {
+      "version": "2.4.0",
+      "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz",
+      "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==",
+      "dev": true,
+      "requires": {
+        "hosted-git-info": "^2.1.4",
+        "is-builtin-module": "^1.0.0",
+        "semver": "2 || 3 || 4 || 5",
+        "validate-npm-package-license": "^3.0.1"
+      }
+    },
+    "normalize-path": {
+      "version": "2.1.1",
+      "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz",
+      "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=",
+      "dev": true,
+      "requires": {
+        "remove-trailing-separator": "^1.0.1"
+      }
+    },
+    "normalize-range": {
+      "version": "0.1.2",
+      "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz",
+      "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=",
+      "dev": true
+    },
+    "npm-package-arg": {
+      "version": "6.1.0",
+      "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-6.1.0.tgz",
+      "integrity": "sha512-zYbhP2k9DbJhA0Z3HKUePUgdB1x7MfIfKssC+WLPFMKTBZKpZh5m13PgexJjCq6KW7j17r0jHWcCpxEqnnncSA==",
+      "dev": true,
+      "requires": {
+        "hosted-git-info": "^2.6.0",
+        "osenv": "^0.1.5",
+        "semver": "^5.5.0",
+        "validate-npm-package-name": "^3.0.0"
+      }
+    },
+    "npm-registry-client": {
+      "version": "8.5.1",
+      "resolved": "https://registry.npmjs.org/npm-registry-client/-/npm-registry-client-8.5.1.tgz",
+      "integrity": "sha512-7rjGF2eA7hKDidGyEWmHTiKfXkbrcQAsGL/Rh4Rt3x3YNRNHhwaTzVJfW3aNvvlhg4G62VCluif0sLCb/i51Hg==",
+      "dev": true,
+      "requires": {
+        "concat-stream": "^1.5.2",
+        "graceful-fs": "^4.1.6",
+        "normalize-package-data": "~1.0.1 || ^2.0.0",
+        "npm-package-arg": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0",
+        "npmlog": "2 || ^3.1.0 || ^4.0.0",
+        "once": "^1.3.3",
+        "request": "^2.74.0",
+        "retry": "^0.10.0",
+        "safe-buffer": "^5.1.1",
+        "semver": "2 >=2.2.1 || 3.x || 4 || 5",
+        "slide": "^1.1.3",
+        "ssri": "^5.2.4"
+      }
+    },
+    "npm-run-path": {
+      "version": "2.0.2",
+      "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz",
+      "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=",
+      "dev": true,
+      "requires": {
+        "path-key": "^2.0.0"
+      }
+    },
+    "npmlog": {
+      "version": "4.1.2",
+      "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz",
+      "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==",
+      "dev": true,
+      "requires": {
+        "are-we-there-yet": "~1.1.2",
+        "console-control-strings": "~1.1.0",
+        "gauge": "~2.7.3",
+        "set-blocking": "~2.0.0"
+      }
+    },
+    "nth-check": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.1.tgz",
+      "integrity": "sha1-mSms32KPwsQQmN6rgqxYDPFJquQ=",
+      "dev": true,
+      "requires": {
+        "boolbase": "~1.0.0"
+      }
+    },
+    "null-check": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/null-check/-/null-check-1.0.0.tgz",
+      "integrity": "sha1-l33/1xdgErnsMNKjnbXPcqBDnt0=",
+      "dev": true
+    },
+    "num2fraction": {
+      "version": "1.2.2",
+      "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz",
+      "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=",
+      "dev": true
+    },
+    "number-is-nan": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz",
+      "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=",
+      "dev": true
+    },
+    "oauth-sign": {
+      "version": "0.8.2",
+      "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz",
+      "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=",
+      "dev": true
+    },
+    "object-assign": {
+      "version": "4.1.1",
+      "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
+      "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=",
+      "dev": true
+    },
+    "object-component": {
+      "version": "0.0.3",
+      "resolved": "https://registry.npmjs.org/object-component/-/object-component-0.0.3.tgz",
+      "integrity": "sha1-8MaapQ78lbhmwYb0AKM3acsvEpE=",
+      "dev": true
+    },
+    "object-copy": {
+      "version": "0.1.0",
+      "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz",
+      "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=",
+      "dev": true,
+      "requires": {
+        "copy-descriptor": "^0.1.0",
+        "define-property": "^0.2.5",
+        "kind-of": "^3.0.3"
+      },
+      "dependencies": {
+        "define-property": {
+          "version": "0.2.5",
+          "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
+          "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
+          "dev": true,
+          "requires": {
+            "is-descriptor": "^0.1.0"
+          }
+        },
+        "kind-of": {
+          "version": "3.2.2",
+          "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+          "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+          "dev": true,
+          "requires": {
+            "is-buffer": "^1.1.5"
+          }
+        }
+      }
+    },
+    "object-keys": {
+      "version": "1.0.12",
+      "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.12.tgz",
+      "integrity": "sha512-FTMyFUm2wBcGHnH2eXmz7tC6IwlqQZ6mVZ+6dm6vZ4IQIHjs6FdNsQBuKGPuUUUY6NfJw2PshC08Tn6LzLDOag==",
+      "dev": true
+    },
+    "object-visit": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz",
+      "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=",
+      "dev": true,
+      "requires": {
+        "isobject": "^3.0.0"
+      }
+    },
+    "object.assign": {
+      "version": "4.1.0",
+      "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz",
+      "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==",
+      "dev": true,
+      "requires": {
+        "define-properties": "^1.1.2",
+        "function-bind": "^1.1.1",
+        "has-symbols": "^1.0.0",
+        "object-keys": "^1.0.11"
+      }
+    },
+    "object.getownpropertydescriptors": {
+      "version": "2.0.3",
+      "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz",
+      "integrity": "sha1-h1jIRvW0B62rDyNuCYbxSwUcqhY=",
+      "dev": true,
+      "requires": {
+        "define-properties": "^1.1.2",
+        "es-abstract": "^1.5.1"
+      }
+    },
+    "object.omit": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz",
+      "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=",
+      "dev": true,
+      "requires": {
+        "for-own": "^0.1.4",
+        "is-extendable": "^0.1.1"
+      },
+      "dependencies": {
+        "for-own": {
+          "version": "0.1.5",
+          "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz",
+          "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=",
+          "dev": true,
+          "requires": {
+            "for-in": "^1.0.1"
+          }
+        }
+      }
+    },
+    "object.pick": {
+      "version": "1.3.0",
+      "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz",
+      "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=",
+      "dev": true,
+      "requires": {
+        "isobject": "^3.0.1"
+      }
+    },
+    "obuf": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz",
+      "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==",
+      "dev": true
+    },
+    "on-finished": {
+      "version": "2.3.0",
+      "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
+      "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=",
+      "dev": true,
+      "requires": {
+        "ee-first": "1.1.1"
+      }
+    },
+    "on-headers": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.1.tgz",
+      "integrity": "sha1-ko9dD0cNSTQmUepnlLCFfBAGk/c=",
+      "dev": true
+    },
+    "once": {
+      "version": "1.4.0",
+      "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
+      "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
+      "dev": true,
+      "requires": {
+        "wrappy": "1"
+      }
+    },
+    "opn": {
+      "version": "5.3.0",
+      "resolved": "https://registry.npmjs.org/opn/-/opn-5.3.0.tgz",
+      "integrity": "sha512-bYJHo/LOmoTd+pfiYhfZDnf9zekVJrY+cnS2a5F2x+w5ppvTqObojTP7WiFG+kVZs9Inw+qQ/lw7TroWwhdd2g==",
+      "dev": true,
+      "requires": {
+        "is-wsl": "^1.1.0"
+      }
+    },
+    "optimist": {
+      "version": "0.6.1",
+      "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz",
+      "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=",
+      "dev": true,
+      "requires": {
+        "minimist": "~0.0.1",
+        "wordwrap": "~0.0.2"
+      },
+      "dependencies": {
+        "wordwrap": {
+          "version": "0.0.3",
+          "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz",
+          "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=",
+          "dev": true
+        }
+      }
+    },
+    "optionator": {
+      "version": "0.8.2",
+      "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz",
+      "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=",
+      "dev": true,
+      "requires": {
+        "deep-is": "~0.1.3",
+        "fast-levenshtein": "~2.0.4",
+        "levn": "~0.3.0",
+        "prelude-ls": "~1.1.2",
+        "type-check": "~0.3.2",
+        "wordwrap": "~1.0.0"
+      }
+    },
+    "options": {
+      "version": "0.0.6",
+      "resolved": "https://registry.npmjs.org/options/-/options-0.0.6.tgz",
+      "integrity": "sha1-7CLTEoBrtT5zF3Pnza788cZDEo8=",
+      "dev": true
+    },
+    "original": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/original/-/original-1.0.1.tgz",
+      "integrity": "sha512-IEvtB5vM5ULvwnqMxWBLxkS13JIEXbakizMSo3yoPNPCIWzg8TG3Usn/UhXoZFM/m+FuEA20KdzPSFq/0rS+UA==",
+      "dev": true,
+      "requires": {
+        "url-parse": "~1.4.0"
+      }
+    },
+    "os-browserify": {
+      "version": "0.3.0",
+      "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz",
+      "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=",
+      "dev": true
+    },
+    "os-homedir": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz",
+      "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=",
+      "dev": true
+    },
+    "os-locale": {
+      "version": "1.4.0",
+      "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz",
+      "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=",
+      "dev": true,
+      "optional": true,
+      "requires": {
+        "lcid": "^1.0.0"
+      }
+    },
+    "os-tmpdir": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
+      "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=",
+      "dev": true
+    },
+    "osenv": {
+      "version": "0.1.5",
+      "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz",
+      "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==",
+      "dev": true,
+      "requires": {
+        "os-homedir": "^1.0.0",
+        "os-tmpdir": "^1.0.0"
+      }
+    },
+    "p-finally": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz",
+      "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=",
+      "dev": true
+    },
+    "p-limit": {
+      "version": "1.3.0",
+      "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz",
+      "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==",
+      "dev": true,
+      "requires": {
+        "p-try": "^1.0.0"
+      }
+    },
+    "p-locate": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz",
+      "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=",
+      "dev": true,
+      "requires": {
+        "p-limit": "^1.1.0"
+      }
+    },
+    "p-map": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/p-map/-/p-map-1.2.0.tgz",
+      "integrity": "sha512-r6zKACMNhjPJMTl8KcFH4li//gkrXWfbD6feV8l6doRHlzljFWGJ2AP6iKaCJXyZmAUMOPtvbW7EXkbWO/pLEA==",
+      "dev": true
+    },
+    "p-try": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz",
+      "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=",
+      "dev": true
+    },
+    "pako": {
+      "version": "1.0.6",
+      "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.6.tgz",
+      "integrity": "sha512-lQe48YPsMJAig+yngZ87Lus+NF+3mtu7DVOBu6b/gHO1YpKwIj5AWjZ/TOS7i46HD/UixzWb1zeWDZfGZ3iYcg==",
+      "dev": true
+    },
+    "parallel-transform": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.1.0.tgz",
+      "integrity": "sha1-1BDwZbBdojCB/NEPKIVMKb2jOwY=",
+      "dev": true,
+      "requires": {
+        "cyclist": "~0.2.2",
+        "inherits": "^2.0.3",
+        "readable-stream": "^2.1.5"
+      }
+    },
+    "param-case": {
+      "version": "2.1.1",
+      "resolved": "https://registry.npmjs.org/param-case/-/param-case-2.1.1.tgz",
+      "integrity": "sha1-35T9jPZTHs915r75oIWPvHK+Ikc=",
+      "dev": true,
+      "requires": {
+        "no-case": "^2.2.0"
+      }
+    },
+    "parse-asn1": {
+      "version": "5.1.1",
+      "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.1.tgz",
+      "integrity": "sha512-KPx7flKXg775zZpnp9SxJlz00gTd4BmJ2yJufSc44gMCRrRQ7NSzAcSJQfifuOLgW6bEi+ftrALtsgALeB2Adw==",
+      "dev": true,
+      "requires": {
+        "asn1.js": "^4.0.0",
+        "browserify-aes": "^1.0.0",
+        "create-hash": "^1.1.0",
+        "evp_bytestokey": "^1.0.0",
+        "pbkdf2": "^3.0.3"
+      }
+    },
+    "parse-glob": {
+      "version": "3.0.4",
+      "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz",
+      "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=",
+      "dev": true,
+      "requires": {
+        "glob-base": "^0.3.0",
+        "is-dotfile": "^1.0.0",
+        "is-extglob": "^1.0.0",
+        "is-glob": "^2.0.0"
+      },
+      "dependencies": {
+        "is-extglob": {
+          "version": "1.0.0",
+          "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz",
+          "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=",
+          "dev": true
+        },
+        "is-glob": {
+          "version": "2.0.1",
+          "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz",
+          "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=",
+          "dev": true,
+          "requires": {
+            "is-extglob": "^1.0.0"
+          }
+        }
+      }
+    },
+    "parse-json": {
+      "version": "2.2.0",
+      "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz",
+      "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=",
+      "dev": true,
+      "requires": {
+        "error-ex": "^1.2.0"
+      }
+    },
+    "parse5": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/parse5/-/parse5-4.0.0.tgz",
+      "integrity": "sha512-VrZ7eOd3T1Fk4XWNXMgiGBK/z0MG48BWG2uQNU4I72fkQuKUTZpl+u9k+CxEG0twMVzSmXEEz12z5Fnw1jIQFA==",
+      "dev": true
+    },
+    "parsejson": {
+      "version": "0.0.3",
+      "resolved": "https://registry.npmjs.org/parsejson/-/parsejson-0.0.3.tgz",
+      "integrity": "sha1-q343WfIJ7OmUN5c/fQ8fZK4OZKs=",
+      "dev": true,
+      "requires": {
+        "better-assert": "~1.0.0"
+      }
+    },
+    "parseqs": {
+      "version": "0.0.5",
+      "resolved": "https://registry.npmjs.org/parseqs/-/parseqs-0.0.5.tgz",
+      "integrity": "sha1-1SCKNzjkZ2bikbouoXNoSSGouJ0=",
+      "dev": true,
+      "requires": {
+        "better-assert": "~1.0.0"
+      }
+    },
+    "parseuri": {
+      "version": "0.0.5",
+      "resolved": "https://registry.npmjs.org/parseuri/-/parseuri-0.0.5.tgz",
+      "integrity": "sha1-gCBKUNTbt3m/3G6+J3jZDkvOMgo=",
+      "dev": true,
+      "requires": {
+        "better-assert": "~1.0.0"
+      }
+    },
+    "parseurl": {
+      "version": "1.3.2",
+      "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.2.tgz",
+      "integrity": "sha1-/CidTtiZMRlGDBViUyYs3I3mW/M=",
+      "dev": true
+    },
+    "pascalcase": {
+      "version": "0.1.1",
+      "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz",
+      "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=",
+      "dev": true
+    },
+    "path-browserify": {
+      "version": "0.0.0",
+      "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.0.tgz",
+      "integrity": "sha1-oLhwcpquIUAFt9UDLsLLuw+0RRo=",
+      "dev": true
+    },
+    "path-dirname": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz",
+      "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=",
+      "dev": true
+    },
+    "path-exists": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
+      "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=",
+      "dev": true
+    },
+    "path-is-absolute": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
+      "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
+      "dev": true
+    },
+    "path-is-inside": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz",
+      "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=",
+      "dev": true
+    },
+    "path-key": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz",
+      "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=",
+      "dev": true
+    },
+    "path-parse": {
+      "version": "1.0.5",
+      "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz",
+      "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=",
+      "dev": true
+    },
+    "path-to-regexp": {
+      "version": "0.1.7",
+      "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
+      "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=",
+      "dev": true
+    },
+    "path-type": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz",
+      "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==",
+      "dev": true,
+      "requires": {
+        "pify": "^3.0.0"
+      }
+    },
+    "pbkdf2": {
+      "version": "3.0.16",
+      "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.16.tgz",
+      "integrity": "sha512-y4CXP3thSxqf7c0qmOF+9UeOTrifiVTIM+u7NWlq+PRsHbr7r7dpCmvzrZxa96JJUNi0Y5w9VqG5ZNeCVMoDcA==",
+      "dev": true,
+      "requires": {
+        "create-hash": "^1.1.2",
+        "create-hmac": "^1.1.4",
+        "ripemd160": "^2.0.1",
+        "safe-buffer": "^5.0.1",
+        "sha.js": "^2.4.8"
+      }
+    },
+    "performance-now": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz",
+      "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=",
+      "dev": true
+    },
+    "pify": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
+      "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
+      "dev": true
+    },
+    "pinkie": {
+      "version": "2.0.4",
+      "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz",
+      "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=",
+      "dev": true
+    },
+    "pinkie-promise": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz",
+      "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=",
+      "dev": true,
+      "requires": {
+        "pinkie": "^2.0.0"
+      }
+    },
+    "pkg-dir": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz",
+      "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=",
+      "dev": true,
+      "requires": {
+        "find-up": "^2.1.0"
+      }
+    },
+    "portfinder": {
+      "version": "1.0.13",
+      "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.13.tgz",
+      "integrity": "sha1-uzLs2HwnEErm7kS1o8y/Drsa7ek=",
+      "dev": true,
+      "requires": {
+        "async": "^1.5.2",
+        "debug": "^2.2.0",
+        "mkdirp": "0.5.x"
+      }
+    },
+    "posix-character-classes": {
+      "version": "0.1.1",
+      "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz",
+      "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=",
+      "dev": true
+    },
+    "postcss": {
+      "version": "6.0.22",
+      "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.22.tgz",
+      "integrity": "sha512-Toc9lLoUASwGqxBSJGTVcOQiDqjK+Z2XlWBg+IgYwQMY9vA2f7iMpXVc1GpPcfTSyM5lkxNo0oDwDRO+wm7XHA==",
+      "dev": true,
+      "requires": {
+        "chalk": "^2.4.1",
+        "source-map": "^0.6.1",
+        "supports-color": "^5.4.0"
+      },
+      "dependencies": {
+        "chalk": {
+          "version": "2.4.1",
+          "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz",
+          "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==",
+          "dev": true,
+          "requires": {
+            "ansi-styles": "^3.2.1",
+            "escape-string-regexp": "^1.0.5",
+            "supports-color": "^5.3.0"
+          }
+        },
+        "source-map": {
+          "version": "0.6.1",
+          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+          "dev": true
+        }
+      }
+    },
+    "postcss-import": {
+      "version": "11.1.0",
+      "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-11.1.0.tgz",
+      "integrity": "sha512-5l327iI75POonjxkXgdRCUS+AlzAdBx4pOvMEhTKTCjb1p8IEeVR9yx3cPbmN7LIWJLbfnIXxAhoB4jpD0c/Cw==",
+      "dev": true,
+      "requires": {
+        "postcss": "^6.0.1",
+        "postcss-value-parser": "^3.2.3",
+        "read-cache": "^1.0.0",
+        "resolve": "^1.1.7"
+      }
+    },
+    "postcss-load-config": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-1.2.0.tgz",
+      "integrity": "sha1-U56a/J3chiASHr+djDZz4M5Q0oo=",
+      "dev": true,
+      "requires": {
+        "cosmiconfig": "^2.1.0",
+        "object-assign": "^4.1.0",
+        "postcss-load-options": "^1.2.0",
+        "postcss-load-plugins": "^2.3.0"
+      }
+    },
+    "postcss-load-options": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/postcss-load-options/-/postcss-load-options-1.2.0.tgz",
+      "integrity": "sha1-sJixVZ3awt8EvAuzdfmaXP4rbYw=",
+      "dev": true,
+      "requires": {
+        "cosmiconfig": "^2.1.0",
+        "object-assign": "^4.1.0"
+      }
+    },
+    "postcss-load-plugins": {
+      "version": "2.3.0",
+      "resolved": "https://registry.npmjs.org/postcss-load-plugins/-/postcss-load-plugins-2.3.0.tgz",
+      "integrity": "sha1-dFdoEWWZrKLwCfrUJrABdQSdjZI=",
+      "dev": true,
+      "requires": {
+        "cosmiconfig": "^2.1.1",
+        "object-assign": "^4.1.0"
+      }
+    },
+    "postcss-loader": {
+      "version": "2.1.5",
+      "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-2.1.5.tgz",
+      "integrity": "sha512-pV7kB5neJ0/1tZ8L1uGOBNTVBCSCXQoIsZMsrwvO8V2rKGa2tBl/f80GGVxow2jJnRJ2w1ocx693EKhZAb9Isg==",
+      "dev": true,
+      "requires": {
+        "loader-utils": "^1.1.0",
+        "postcss": "^6.0.0",
+        "postcss-load-config": "^1.2.0",
+        "schema-utils": "^0.4.0"
+      }
+    },
+    "postcss-url": {
+      "version": "7.3.2",
+      "resolved": "https://registry.npmjs.org/postcss-url/-/postcss-url-7.3.2.tgz",
+      "integrity": "sha512-QMV5mA+pCYZQcUEPQkmor9vcPQ2MT+Ipuu8qdi1gVxbNiIiErEGft+eny1ak19qALoBkccS5AHaCaCDzh7b9MA==",
+      "dev": true,
+      "requires": {
+        "mime": "^1.4.1",
+        "minimatch": "^3.0.4",
+        "mkdirp": "^0.5.0",
+        "postcss": "^6.0.1",
+        "xxhashjs": "^0.2.1"
+      }
+    },
+    "postcss-value-parser": {
+      "version": "3.3.0",
+      "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.0.tgz",
+      "integrity": "sha1-h/OPnxj3dKSrTIojL1xc6IcqnRU=",
+      "dev": true
+    },
+    "prelude-ls": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz",
+      "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=",
+      "dev": true
+    },
+    "preserve": {
+      "version": "0.2.0",
+      "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz",
+      "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=",
+      "dev": true
+    },
+    "pretty-error": {
+      "version": "2.1.1",
+      "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-2.1.1.tgz",
+      "integrity": "sha1-X0+HyPkeWuPzuoerTPXgOxoX8aM=",
+      "dev": true,
+      "requires": {
+        "renderkid": "^2.0.1",
+        "utila": "~0.4"
+      }
+    },
+    "process": {
+      "version": "0.11.10",
+      "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz",
+      "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=",
+      "dev": true
+    },
+    "process-nextick-args": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz",
+      "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==",
+      "dev": true
+    },
+    "promise": {
+      "version": "7.3.1",
+      "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz",
+      "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==",
+      "dev": true,
+      "optional": true,
+      "requires": {
+        "asap": "~2.0.3"
+      }
+    },
+    "promise-inflight": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz",
+      "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=",
+      "dev": true
+    },
+    "protractor": {
+      "version": "5.3.2",
+      "resolved": "https://registry.npmjs.org/protractor/-/protractor-5.3.2.tgz",
+      "integrity": "sha512-pw4uwwiy5lHZjIguxNpkEwJJa7hVz+bJsvaTI+IbXlfn2qXwzbF8eghW/RmrZwE2sGx82I8etb8lVjQ+JrjejA==",
+      "dev": true,
+      "requires": {
+        "@types/node": "^6.0.46",
+        "@types/q": "^0.0.32",
+        "@types/selenium-webdriver": "~2.53.39",
+        "blocking-proxy": "^1.0.0",
+        "chalk": "^1.1.3",
+        "glob": "^7.0.3",
+        "jasmine": "2.8.0",
+        "jasminewd2": "^2.1.0",
+        "optimist": "~0.6.0",
+        "q": "1.4.1",
+        "saucelabs": "^1.5.0",
+        "selenium-webdriver": "3.6.0",
+        "source-map-support": "~0.4.0",
+        "webdriver-js-extender": "^1.0.0",
+        "webdriver-manager": "^12.0.6"
+      },
+      "dependencies": {
+        "@types/node": {
+          "version": "6.0.113",
+          "resolved": "https://registry.npmjs.org/@types/node/-/node-6.0.113.tgz",
+          "integrity": "sha512-f9XXUWFqryzjkZA1EqFvJHSFyqyasV17fq8zCDIzbRV4ctL7RrJGKvG+lcex86Rjbzd1GrER9h9VmF5sSjV0BQ==",
+          "dev": true
+        },
+        "adm-zip": {
+          "version": "0.4.11",
+          "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.4.11.tgz",
+          "integrity": "sha512-L8vcjDTCOIJk7wFvmlEUN7AsSb8T+2JrdP7KINBjzr24TJ5Mwj590sLu3BC7zNZowvJWa/JtPmD8eJCzdtDWjA==",
+          "dev": true
+        },
+        "ansi-styles": {
+          "version": "2.2.1",
+          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
+          "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
+          "dev": true
+        },
+        "chalk": {
+          "version": "1.1.3",
+          "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
+          "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
+          "dev": true,
+          "requires": {
+            "ansi-styles": "^2.2.1",
+            "escape-string-regexp": "^1.0.2",
+            "has-ansi": "^2.0.0",
+            "strip-ansi": "^3.0.0",
+            "supports-color": "^2.0.0"
+          }
+        },
+        "del": {
+          "version": "2.2.2",
+          "resolved": "https://registry.npmjs.org/del/-/del-2.2.2.tgz",
+          "integrity": "sha1-wSyYHQZ4RshLyvhiz/kw2Qf/0ag=",
+          "dev": true,
+          "requires": {
+            "globby": "^5.0.0",
+            "is-path-cwd": "^1.0.0",
+            "is-path-in-cwd": "^1.0.0",
+            "object-assign": "^4.0.1",
+            "pify": "^2.0.0",
+            "pinkie-promise": "^2.0.0",
+            "rimraf": "^2.2.8"
+          }
+        },
+        "globby": {
+          "version": "5.0.0",
+          "resolved": "https://registry.npmjs.org/globby/-/globby-5.0.0.tgz",
+          "integrity": "sha1-69hGZ8oNuzMLmbz8aOrCvFQ3Dg0=",
+          "dev": true,
+          "requires": {
+            "array-union": "^1.0.1",
+            "arrify": "^1.0.0",
+            "glob": "^7.0.3",
+            "object-assign": "^4.0.1",
+            "pify": "^2.0.0",
+            "pinkie-promise": "^2.0.0"
+          }
+        },
+        "minimist": {
+          "version": "1.2.0",
+          "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
+          "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=",
+          "dev": true
+        },
+        "pify": {
+          "version": "2.3.0",
+          "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
+          "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
+          "dev": true
+        },
+        "source-map-support": {
+          "version": "0.4.18",
+          "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz",
+          "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==",
+          "dev": true,
+          "requires": {
+            "source-map": "^0.5.6"
+          }
+        },
+        "supports-color": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
+          "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
+          "dev": true
+        },
+        "webdriver-manager": {
+          "version": "12.0.6",
+          "resolved": "https://registry.npmjs.org/webdriver-manager/-/webdriver-manager-12.0.6.tgz",
+          "integrity": "sha1-PfGkgZdwELTL+MnYXHpXeCjA5ws=",
+          "dev": true,
+          "requires": {
+            "adm-zip": "^0.4.7",
+            "chalk": "^1.1.1",
+            "del": "^2.2.0",
+            "glob": "^7.0.3",
+            "ini": "^1.3.4",
+            "minimist": "^1.2.0",
+            "q": "^1.4.1",
+            "request": "^2.78.0",
+            "rimraf": "^2.5.2",
+            "semver": "^5.3.0",
+            "xml2js": "^0.4.17"
+          }
+        }
+      }
+    },
+    "proxy-addr": {
+      "version": "2.0.3",
+      "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.3.tgz",
+      "integrity": "sha512-jQTChiCJteusULxjBp8+jftSQE5Obdl3k4cnmLA6WXtK6XFuWRnvVL7aCiBqaLPM8c4ph0S4tKna8XvmIwEnXQ==",
+      "dev": true,
+      "requires": {
+        "forwarded": "~0.1.2",
+        "ipaddr.js": "1.6.0"
+      }
+    },
+    "prr": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz",
+      "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=",
+      "dev": true
+    },
+    "pseudomap": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz",
+      "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=",
+      "dev": true
+    },
+    "public-encrypt": {
+      "version": "4.0.2",
+      "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.2.tgz",
+      "integrity": "sha512-4kJ5Esocg8X3h8YgJsKAuoesBgB7mqH3eowiDzMUPKiRDDE7E/BqqZD1hnTByIaAFiwAw246YEltSq7tdrOH0Q==",
+      "dev": true,
+      "requires": {
+        "bn.js": "^4.1.0",
+        "browserify-rsa": "^4.0.0",
+        "create-hash": "^1.1.0",
+        "parse-asn1": "^5.0.0",
+        "randombytes": "^2.0.1"
+      }
+    },
+    "pump": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz",
+      "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==",
+      "dev": true,
+      "requires": {
+        "end-of-stream": "^1.1.0",
+        "once": "^1.3.1"
+      }
+    },
+    "pumpify": {
+      "version": "1.5.1",
+      "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz",
+      "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==",
+      "dev": true,
+      "requires": {
+        "duplexify": "^3.6.0",
+        "inherits": "^2.0.3",
+        "pump": "^2.0.0"
+      }
+    },
+    "punycode": {
+      "version": "2.1.1",
+      "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
+      "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==",
+      "dev": true
+    },
+    "q": {
+      "version": "1.4.1",
+      "resolved": "https://registry.npmjs.org/q/-/q-1.4.1.tgz",
+      "integrity": "sha1-VXBbzZPF82c1MMLCy8DCs63cKG4=",
+      "dev": true
+    },
+    "qjobs": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/qjobs/-/qjobs-1.2.0.tgz",
+      "integrity": "sha512-8YOJEHtxpySA3fFDyCRxA+UUV+fA+rTWnuWvylOK/NCjhY+b4ocCtmu8TtsWb+mYeU+GCHf/S66KZF/AsteKHg==",
+      "dev": true
+    },
+    "qs": {
+      "version": "6.5.2",
+      "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz",
+      "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==",
+      "dev": true
+    },
+    "querystring": {
+      "version": "0.2.0",
+      "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz",
+      "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=",
+      "dev": true
+    },
+    "querystring-es3": {
+      "version": "0.2.1",
+      "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz",
+      "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=",
+      "dev": true
+    },
+    "querystringify": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.0.0.tgz",
+      "integrity": "sha512-eTPo5t/4bgaMNZxyjWx6N2a6AuE0mq51KWvpc7nU/MAqixcI6v6KrGUKES0HaomdnolQBBXU/++X6/QQ9KL4tw==",
+      "dev": true
+    },
+    "randomatic": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-3.0.0.tgz",
+      "integrity": "sha512-VdxFOIEY3mNO5PtSRkkle/hPJDHvQhK21oa73K4yAc9qmp6N429gAyF1gZMOTMeS0/AYzaV/2Trcef+NaIonSA==",
+      "dev": true,
+      "requires": {
+        "is-number": "^4.0.0",
+        "kind-of": "^6.0.0",
+        "math-random": "^1.0.1"
+      },
+      "dependencies": {
+        "is-number": {
+          "version": "4.0.0",
+          "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz",
+          "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==",
+          "dev": true
+        }
+      }
+    },
+    "randombytes": {
+      "version": "2.0.6",
+      "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.0.6.tgz",
+      "integrity": "sha512-CIQ5OFxf4Jou6uOKe9t1AOgqpeU5fd70A8NPdHSGeYXqXsPe6peOwI0cUl88RWZ6sP1vPMV3avd/R6cZ5/sP1A==",
+      "dev": true,
+      "requires": {
+        "safe-buffer": "^5.1.0"
+      }
+    },
+    "randomfill": {
+      "version": "1.0.4",
+      "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz",
+      "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==",
+      "dev": true,
+      "requires": {
+        "randombytes": "^2.0.5",
+        "safe-buffer": "^5.1.0"
+      }
+    },
+    "range-parser": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz",
+      "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4=",
+      "dev": true
+    },
+    "raw-body": {
+      "version": "2.3.2",
+      "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.3.2.tgz",
+      "integrity": "sha1-vNYMd9Prk83gBQKVw/N5OJvIj4k=",
+      "dev": true,
+      "requires": {
+        "bytes": "3.0.0",
+        "http-errors": "1.6.2",
+        "iconv-lite": "0.4.19",
+        "unpipe": "1.0.0"
+      },
+      "dependencies": {
+        "depd": {
+          "version": "1.1.1",
+          "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.1.tgz",
+          "integrity": "sha1-V4O04cRZ8G+lyif5kfPQbnoxA1k=",
+          "dev": true
+        },
+        "http-errors": {
+          "version": "1.6.2",
+          "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.2.tgz",
+          "integrity": "sha1-CgAsyFcHGSp+eUbO7cERVfYOxzY=",
+          "dev": true,
+          "requires": {
+            "depd": "1.1.1",
+            "inherits": "2.0.3",
+            "setprototypeof": "1.0.3",
+            "statuses": ">= 1.3.1 < 2"
+          }
+        },
+        "setprototypeof": {
+          "version": "1.0.3",
+          "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.3.tgz",
+          "integrity": "sha1-ZlZ+NwQ+608E2RvWWMDL77VbjgQ=",
+          "dev": true
+        }
+      }
+    },
+    "raw-loader": {
+      "version": "0.5.1",
+      "resolved": "https://registry.npmjs.org/raw-loader/-/raw-loader-0.5.1.tgz",
+      "integrity": "sha1-DD0L6u2KAclm2Xh793goElKpeao=",
+      "dev": true
+    },
+    "read-cache": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz",
+      "integrity": "sha1-5mTvMRYRZsl1HNvo28+GtftY93Q=",
+      "dev": true,
+      "requires": {
+        "pify": "^2.3.0"
+      },
+      "dependencies": {
+        "pify": {
+          "version": "2.3.0",
+          "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
+          "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
+          "dev": true
+        }
+      }
+    },
+    "read-pkg": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz",
+      "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=",
+      "dev": true,
+      "requires": {
+        "load-json-file": "^1.0.0",
+        "normalize-package-data": "^2.3.2",
+        "path-type": "^1.0.0"
+      },
+      "dependencies": {
+        "path-type": {
+          "version": "1.1.0",
+          "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz",
+          "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=",
+          "dev": true,
+          "requires": {
+            "graceful-fs": "^4.1.2",
+            "pify": "^2.0.0",
+            "pinkie-promise": "^2.0.0"
+          }
+        },
+        "pify": {
+          "version": "2.3.0",
+          "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
+          "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
+          "dev": true
+        }
+      }
+    },
+    "read-pkg-up": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz",
+      "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=",
+      "dev": true,
+      "requires": {
+        "find-up": "^1.0.0",
+        "read-pkg": "^1.0.0"
+      },
+      "dependencies": {
+        "find-up": {
+          "version": "1.1.2",
+          "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz",
+          "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=",
+          "dev": true,
+          "requires": {
+            "path-exists": "^2.0.0",
+            "pinkie-promise": "^2.0.0"
+          }
+        },
+        "path-exists": {
+          "version": "2.1.0",
+          "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz",
+          "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=",
+          "dev": true,
+          "requires": {
+            "pinkie-promise": "^2.0.0"
+          }
+        }
+      }
+    },
+    "readable-stream": {
+      "version": "2.3.6",
+      "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
+      "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
+      "dev": true,
+      "requires": {
+        "core-util-is": "~1.0.0",
+        "inherits": "~2.0.3",
+        "isarray": "~1.0.0",
+        "process-nextick-args": "~2.0.0",
+        "safe-buffer": "~5.1.1",
+        "string_decoder": "~1.1.1",
+        "util-deprecate": "~1.0.1"
+      }
+    },
+    "readdirp": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.1.0.tgz",
+      "integrity": "sha1-TtCtBg3zBzMAxIRANz9y0cxkLXg=",
+      "dev": true,
+      "requires": {
+        "graceful-fs": "^4.1.2",
+        "minimatch": "^3.0.2",
+        "readable-stream": "^2.0.2",
+        "set-immediate-shim": "^1.0.1"
+      }
+    },
+    "redent": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz",
+      "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=",
+      "dev": true,
+      "requires": {
+        "indent-string": "^2.1.0",
+        "strip-indent": "^1.0.1"
+      }
+    },
+    "reflect-metadata": {
+      "version": "0.1.12",
+      "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.12.tgz",
+      "integrity": "sha512-n+IyV+nGz3+0q3/Yf1ra12KpCyi001bi4XFxSjbiWWjfqb52iTTtpGXmCCAOWWIAn9KEuFZKGqBERHmrtScZ3A==",
+      "dev": true
+    },
+    "regenerate": {
+      "version": "1.4.0",
+      "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.0.tgz",
+      "integrity": "sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg==",
+      "dev": true
+    },
+    "regenerator-runtime": {
+      "version": "0.11.1",
+      "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz",
+      "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==",
+      "dev": true
+    },
+    "regex-cache": {
+      "version": "0.4.4",
+      "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz",
+      "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==",
+      "dev": true,
+      "requires": {
+        "is-equal-shallow": "^0.1.3"
+      }
+    },
+    "regex-not": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz",
+      "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==",
+      "dev": true,
+      "requires": {
+        "extend-shallow": "^3.0.2",
+        "safe-regex": "^1.1.0"
+      }
+    },
+    "regexpu-core": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-1.0.0.tgz",
+      "integrity": "sha1-hqdj9Y7k18L2sQLkdkBQ3n7ZDGs=",
+      "dev": true,
+      "requires": {
+        "regenerate": "^1.2.1",
+        "regjsgen": "^0.2.0",
+        "regjsparser": "^0.1.4"
+      }
+    },
+    "regjsgen": {
+      "version": "0.2.0",
+      "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.2.0.tgz",
+      "integrity": "sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc=",
+      "dev": true
+    },
+    "regjsparser": {
+      "version": "0.1.5",
+      "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.1.5.tgz",
+      "integrity": "sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw=",
+      "dev": true,
+      "requires": {
+        "jsesc": "~0.5.0"
+      },
+      "dependencies": {
+        "jsesc": {
+          "version": "0.5.0",
+          "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz",
+          "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=",
+          "dev": true
+        }
+      }
+    },
+    "relateurl": {
+      "version": "0.2.7",
+      "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz",
+      "integrity": "sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=",
+      "dev": true
+    },
+    "remove-trailing-separator": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz",
+      "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=",
+      "dev": true
+    },
+    "renderkid": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-2.0.1.tgz",
+      "integrity": "sha1-iYyr/Ivt5Le5ETWj/9Mj5YwNsxk=",
+      "dev": true,
+      "requires": {
+        "css-select": "^1.1.0",
+        "dom-converter": "~0.1",
+        "htmlparser2": "~3.3.0",
+        "strip-ansi": "^3.0.0",
+        "utila": "~0.3"
+      },
+      "dependencies": {
+        "utila": {
+          "version": "0.3.3",
+          "resolved": "https://registry.npmjs.org/utila/-/utila-0.3.3.tgz",
+          "integrity": "sha1-1+jn1+MJEHCSsF+NloiCTWM6QiY=",
+          "dev": true
+        }
+      }
+    },
+    "repeat-element": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz",
+      "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=",
+      "dev": true
+    },
+    "repeat-string": {
+      "version": "1.6.1",
+      "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz",
+      "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=",
+      "dev": true
+    },
+    "repeating": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz",
+      "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=",
+      "dev": true,
+      "requires": {
+        "is-finite": "^1.0.0"
+      }
+    },
+    "request": {
+      "version": "2.87.0",
+      "resolved": "https://registry.npmjs.org/request/-/request-2.87.0.tgz",
+      "integrity": "sha512-fcogkm7Az5bsS6Sl0sibkbhcKsnyon/jV1kF3ajGmF0c8HrttdKTPRT9hieOaQHA5HEq6r8OyWOo/o781C1tNw==",
+      "dev": true,
+      "requires": {
+        "aws-sign2": "~0.7.0",
+        "aws4": "^1.6.0",
+        "caseless": "~0.12.0",
+        "combined-stream": "~1.0.5",
+        "extend": "~3.0.1",
+        "forever-agent": "~0.6.1",
+        "form-data": "~2.3.1",
+        "har-validator": "~5.0.3",
+        "http-signature": "~1.2.0",
+        "is-typedarray": "~1.0.0",
+        "isstream": "~0.1.2",
+        "json-stringify-safe": "~5.0.1",
+        "mime-types": "~2.1.17",
+        "oauth-sign": "~0.8.2",
+        "performance-now": "^2.1.0",
+        "qs": "~6.5.1",
+        "safe-buffer": "^5.1.1",
+        "tough-cookie": "~2.3.3",
+        "tunnel-agent": "^0.6.0",
+        "uuid": "^3.1.0"
+      }
+    },
+    "require-directory": {
+      "version": "2.1.1",
+      "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
+      "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=",
+      "dev": true
+    },
+    "require-from-string": {
+      "version": "1.2.1",
+      "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-1.2.1.tgz",
+      "integrity": "sha1-UpyczvJzgK3+yaL5ZbZJu+5jZBg=",
+      "dev": true
+    },
+    "require-main-filename": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz",
+      "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=",
+      "dev": true
+    },
+    "requires-port": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz",
+      "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=",
+      "dev": true
+    },
+    "resolve": {
+      "version": "1.8.1",
+      "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.8.1.tgz",
+      "integrity": "sha512-AicPrAC7Qu1JxPCZ9ZgCZlY35QgFnNqc+0LtbRNxnVw4TXvjQ72wnuL9JQcEBgXkI9JM8MsT9kaQoHcpCRJOYA==",
+      "dev": true,
+      "requires": {
+        "path-parse": "^1.0.5"
+      }
+    },
+    "resolve-cwd": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz",
+      "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=",
+      "dev": true,
+      "requires": {
+        "resolve-from": "^3.0.0"
+      }
+    },
+    "resolve-from": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz",
+      "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=",
+      "dev": true
+    },
+    "resolve-url": {
+      "version": "0.2.1",
+      "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz",
+      "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=",
+      "dev": true
+    },
+    "ret": {
+      "version": "0.1.15",
+      "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz",
+      "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==",
+      "dev": true
+    },
+    "retry": {
+      "version": "0.10.1",
+      "resolved": "https://registry.npmjs.org/retry/-/retry-0.10.1.tgz",
+      "integrity": "sha1-52OI0heZLCUnUCQdPTlW/tmNj/Q=",
+      "dev": true
+    },
+    "right-align": {
+      "version": "0.1.3",
+      "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz",
+      "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=",
+      "dev": true,
+      "optional": true,
+      "requires": {
+        "align-text": "^0.1.1"
+      }
+    },
+    "rimraf": {
+      "version": "2.6.2",
+      "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz",
+      "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==",
+      "dev": true,
+      "requires": {
+        "glob": "^7.0.5"
+      }
+    },
+    "ripemd160": {
+      "version": "2.0.2",
+      "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz",
+      "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==",
+      "dev": true,
+      "requires": {
+        "hash-base": "^3.0.0",
+        "inherits": "^2.0.1"
+      }
+    },
+    "run-queue": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz",
+      "integrity": "sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=",
+      "dev": true,
+      "requires": {
+        "aproba": "^1.1.1"
+      }
+    },
+    "rxjs": {
+      "version": "6.2.1",
+      "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.2.1.tgz",
+      "integrity": "sha512-OwMxHxmnmHTUpgO+V7dZChf3Tixf4ih95cmXjzzadULziVl/FKhHScGLj4goEw9weePVOH2Q0+GcCBUhKCZc/g==",
+      "requires": {
+        "tslib": "^1.9.0"
+      }
+    },
+    "safe-buffer": {
+      "version": "5.1.2",
+      "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
+      "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
+      "dev": true
+    },
+    "safe-regex": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz",
+      "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=",
+      "dev": true,
+      "requires": {
+        "ret": "~0.1.10"
+      }
+    },
+    "safer-buffer": {
+      "version": "2.1.2",
+      "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
+      "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
+      "dev": true
+    },
+    "sass-graph": {
+      "version": "2.2.4",
+      "resolved": "https://registry.npmjs.org/sass-graph/-/sass-graph-2.2.4.tgz",
+      "integrity": "sha1-E/vWPNHK8JCLn9k0dq1DpR0eC0k=",
+      "dev": true,
+      "optional": true,
+      "requires": {
+        "glob": "^7.0.0",
+        "lodash": "^4.0.0",
+        "scss-tokenizer": "^0.2.3",
+        "yargs": "^7.0.0"
+      },
+      "dependencies": {
+        "camelcase": {
+          "version": "3.0.0",
+          "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz",
+          "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=",
+          "dev": true,
+          "optional": true
+        },
+        "cliui": {
+          "version": "3.2.0",
+          "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz",
+          "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=",
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "string-width": "^1.0.1",
+            "strip-ansi": "^3.0.1",
+            "wrap-ansi": "^2.0.0"
+          }
+        },
+        "y18n": {
+          "version": "3.2.1",
+          "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz",
+          "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=",
+          "dev": true,
+          "optional": true
+        },
+        "yargs": {
+          "version": "7.1.0",
+          "resolved": "https://registry.npmjs.org/yargs/-/yargs-7.1.0.tgz",
+          "integrity": "sha1-a6MY6xaWFyf10oT46gA+jWFU0Mg=",
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "camelcase": "^3.0.0",
+            "cliui": "^3.2.0",
+            "decamelize": "^1.1.1",
+            "get-caller-file": "^1.0.1",
+            "os-locale": "^1.4.0",
+            "read-pkg-up": "^1.0.1",
+            "require-directory": "^2.1.1",
+            "require-main-filename": "^1.0.1",
+            "set-blocking": "^2.0.0",
+            "string-width": "^1.0.2",
+            "which-module": "^1.0.0",
+            "y18n": "^3.2.1",
+            "yargs-parser": "^5.0.0"
+          }
+        }
+      }
+    },
+    "sass-loader": {
+      "version": "7.0.3",
+      "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-7.0.3.tgz",
+      "integrity": "sha512-iaSFtQcGo4SSgDw5Aes5p4VTrA5jCGSA7sGmhPIcOloBlgI1VktM2MUrk2IHHjbNagckXlPz+HWq1vAAPrcYxA==",
+      "dev": true,
+      "requires": {
+        "clone-deep": "^2.0.1",
+        "loader-utils": "^1.0.1",
+        "lodash.tail": "^4.1.1",
+        "neo-async": "^2.5.0",
+        "pify": "^3.0.0"
+      }
+    },
+    "saucelabs": {
+      "version": "1.5.0",
+      "resolved": "https://registry.npmjs.org/saucelabs/-/saucelabs-1.5.0.tgz",
+      "integrity": "sha512-jlX3FGdWvYf4Q3LFfFWS1QvPg3IGCGWxIc8QBFdPTbpTJnt/v17FHXYVAn7C8sHf1yUXo2c7yIM0isDryfYtHQ==",
+      "dev": true,
+      "requires": {
+        "https-proxy-agent": "^2.2.1"
+      }
+    },
+    "sax": {
+      "version": "0.5.8",
+      "resolved": "https://registry.npmjs.org/sax/-/sax-0.5.8.tgz",
+      "integrity": "sha1-1HLbIo6zMcJQaw6MFVJK25OdEsE=",
+      "dev": true
+    },
+    "schema-utils": {
+      "version": "0.4.5",
+      "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.4.5.tgz",
+      "integrity": "sha512-yYrjb9TX2k/J1Y5UNy3KYdZq10xhYcF8nMpAW6o3hy6Q8WSIEf9lJHG/ePnOBfziPM3fvQwfOwa13U/Fh8qTfA==",
+      "dev": true,
+      "requires": {
+        "ajv": "^6.1.0",
+        "ajv-keywords": "^3.1.0"
+      }
+    },
+    "scss-tokenizer": {
+      "version": "0.2.3",
+      "resolved": "https://registry.npmjs.org/scss-tokenizer/-/scss-tokenizer-0.2.3.tgz",
+      "integrity": "sha1-jrBtualyMzOCTT9VMGQRSYR85dE=",
+      "dev": true,
+      "optional": true,
+      "requires": {
+        "js-base64": "^2.1.8",
+        "source-map": "^0.4.2"
+      },
+      "dependencies": {
+        "source-map": {
+          "version": "0.4.4",
+          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz",
+          "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=",
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "amdefine": ">=0.0.4"
+          }
+        }
+      }
+    },
+    "select-hose": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz",
+      "integrity": "sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=",
+      "dev": true
+    },
+    "selenium-webdriver": {
+      "version": "3.6.0",
+      "resolved": "https://registry.npmjs.org/selenium-webdriver/-/selenium-webdriver-3.6.0.tgz",
+      "integrity": "sha512-WH7Aldse+2P5bbFBO4Gle/nuQOdVwpHMTL6raL3uuBj/vPG07k6uzt3aiahu352ONBr5xXh0hDlM3LhtXPOC4Q==",
+      "dev": true,
+      "requires": {
+        "jszip": "^3.1.3",
+        "rimraf": "^2.5.4",
+        "tmp": "0.0.30",
+        "xml2js": "^0.4.17"
+      },
+      "dependencies": {
+        "tmp": {
+          "version": "0.0.30",
+          "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.30.tgz",
+          "integrity": "sha1-ckGdSovn1s51FI/YsyTlk6cRwu0=",
+          "dev": true,
+          "requires": {
+            "os-tmpdir": "~1.0.1"
+          }
+        }
+      }
+    },
+    "selfsigned": {
+      "version": "1.10.3",
+      "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.3.tgz",
+      "integrity": "sha512-vmZenZ+8Al3NLHkWnhBQ0x6BkML1eCP2xEi3JE+f3D9wW9fipD9NNJHYtE9XJM4TsPaHGZJIamrSI6MTg1dU2Q==",
+      "dev": true,
+      "requires": {
+        "node-forge": "0.7.5"
+      }
+    },
+    "semver": {
+      "version": "5.5.0",
+      "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz",
+      "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==",
+      "dev": true
+    },
+    "semver-dsl": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/semver-dsl/-/semver-dsl-1.0.1.tgz",
+      "integrity": "sha1-02eN5VVeimH2Ke7QJTZq5fJzQKA=",
+      "dev": true,
+      "requires": {
+        "semver": "^5.3.0"
+      }
+    },
+    "semver-intersect": {
+      "version": "1.3.1",
+      "resolved": "https://registry.npmjs.org/semver-intersect/-/semver-intersect-1.3.1.tgz",
+      "integrity": "sha1-j6hKnhAovSOeRTDRo+GB5pjYhLo=",
+      "dev": true,
+      "requires": {
+        "semver": "^5.0.0"
+      }
+    },
+    "send": {
+      "version": "0.16.2",
+      "resolved": "https://registry.npmjs.org/send/-/send-0.16.2.tgz",
+      "integrity": "sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw==",
+      "dev": true,
+      "requires": {
+        "debug": "2.6.9",
+        "depd": "~1.1.2",
+        "destroy": "~1.0.4",
+        "encodeurl": "~1.0.2",
+        "escape-html": "~1.0.3",
+        "etag": "~1.8.1",
+        "fresh": "0.5.2",
+        "http-errors": "~1.6.2",
+        "mime": "1.4.1",
+        "ms": "2.0.0",
+        "on-finished": "~2.3.0",
+        "range-parser": "~1.2.0",
+        "statuses": "~1.4.0"
+      },
+      "dependencies": {
+        "mime": {
+          "version": "1.4.1",
+          "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz",
+          "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==",
+          "dev": true
+        }
+      }
+    },
+    "serialize-javascript": {
+      "version": "1.5.0",
+      "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-1.5.0.tgz",
+      "integrity": "sha512-Ga8c8NjAAp46Br4+0oZ2WxJCwIzwP60Gq1YPgU+39PiTVxyed/iKE/zyZI6+UlVYH5Q4PaQdHhcegIFPZTUfoQ==",
+      "dev": true
+    },
+    "serve-index": {
+      "version": "1.9.1",
+      "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz",
+      "integrity": "sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=",
+      "dev": true,
+      "requires": {
+        "accepts": "~1.3.4",
+        "batch": "0.6.1",
+        "debug": "2.6.9",
+        "escape-html": "~1.0.3",
+        "http-errors": "~1.6.2",
+        "mime-types": "~2.1.17",
+        "parseurl": "~1.3.2"
+      }
+    },
+    "serve-static": {
+      "version": "1.13.2",
+      "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.2.tgz",
+      "integrity": "sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw==",
+      "dev": true,
+      "requires": {
+        "encodeurl": "~1.0.2",
+        "escape-html": "~1.0.3",
+        "parseurl": "~1.3.2",
+        "send": "0.16.2"
+      }
+    },
+    "set-blocking": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz",
+      "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=",
+      "dev": true
+    },
+    "set-immediate-shim": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz",
+      "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=",
+      "dev": true
+    },
+    "set-value": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.0.tgz",
+      "integrity": "sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg==",
+      "dev": true,
+      "requires": {
+        "extend-shallow": "^2.0.1",
+        "is-extendable": "^0.1.1",
+        "is-plain-object": "^2.0.3",
+        "split-string": "^3.0.1"
+      },
+      "dependencies": {
+        "extend-shallow": {
+          "version": "2.0.1",
+          "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+          "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+          "dev": true,
+          "requires": {
+            "is-extendable": "^0.1.0"
+          }
+        }
+      }
+    },
+    "setimmediate": {
+      "version": "1.0.5",
+      "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz",
+      "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=",
+      "dev": true
+    },
+    "setprototypeof": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz",
+      "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==",
+      "dev": true
+    },
+    "sha.js": {
+      "version": "2.4.11",
+      "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz",
+      "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==",
+      "dev": true,
+      "requires": {
+        "inherits": "^2.0.1",
+        "safe-buffer": "^5.0.1"
+      }
+    },
+    "shallow-clone": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-1.0.0.tgz",
+      "integrity": "sha512-oeXreoKR/SyNJtRJMAKPDSvd28OqEwG4eR/xc856cRGBII7gX9lvAqDxusPm0846z/w/hWYjI1NpKwJ00NHzRA==",
+      "dev": true,
+      "requires": {
+        "is-extendable": "^0.1.1",
+        "kind-of": "^5.0.0",
+        "mixin-object": "^2.0.1"
+      },
+      "dependencies": {
+        "kind-of": {
+          "version": "5.1.0",
+          "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
+          "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==",
+          "dev": true
+        }
+      }
+    },
+    "shebang-command": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
+      "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=",
+      "dev": true,
+      "requires": {
+        "shebang-regex": "^1.0.0"
+      }
+    },
+    "shebang-regex": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz",
+      "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=",
+      "dev": true
+    },
+    "signal-exit": {
+      "version": "3.0.2",
+      "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz",
+      "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=",
+      "dev": true
+    },
+    "silent-error": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/silent-error/-/silent-error-1.1.0.tgz",
+      "integrity": "sha1-IglwbxyFCp8dENDYQJGLRvJuG8k=",
+      "dev": true,
+      "requires": {
+        "debug": "^2.2.0"
+      }
+    },
+    "slash": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz",
+      "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=",
+      "dev": true
+    },
+    "slide": {
+      "version": "1.1.6",
+      "resolved": "https://registry.npmjs.org/slide/-/slide-1.1.6.tgz",
+      "integrity": "sha1-VusCfWW00tzmyy4tMsTUr8nh1wc=",
+      "dev": true
+    },
+    "snapdragon": {
+      "version": "0.8.2",
+      "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz",
+      "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==",
+      "dev": true,
+      "requires": {
+        "base": "^0.11.1",
+        "debug": "^2.2.0",
+        "define-property": "^0.2.5",
+        "extend-shallow": "^2.0.1",
+        "map-cache": "^0.2.2",
+        "source-map": "^0.5.6",
+        "source-map-resolve": "^0.5.0",
+        "use": "^3.1.0"
+      },
+      "dependencies": {
+        "define-property": {
+          "version": "0.2.5",
+          "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
+          "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
+          "dev": true,
+          "requires": {
+            "is-descriptor": "^0.1.0"
+          }
+        },
+        "extend-shallow": {
+          "version": "2.0.1",
+          "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+          "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+          "dev": true,
+          "requires": {
+            "is-extendable": "^0.1.0"
+          }
+        }
+      }
+    },
+    "snapdragon-node": {
+      "version": "2.1.1",
+      "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz",
+      "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==",
+      "dev": true,
+      "requires": {
+        "define-property": "^1.0.0",
+        "isobject": "^3.0.0",
+        "snapdragon-util": "^3.0.1"
+      },
+      "dependencies": {
+        "define-property": {
+          "version": "1.0.0",
+          "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
+          "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
+          "dev": true,
+          "requires": {
+            "is-descriptor": "^1.0.0"
+          }
+        },
+        "is-accessor-descriptor": {
+          "version": "1.0.0",
+          "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
+          "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
+          "dev": true,
+          "requires": {
+            "kind-of": "^6.0.0"
+          }
+        },
+        "is-data-descriptor": {
+          "version": "1.0.0",
+          "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
+          "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
+          "dev": true,
+          "requires": {
+            "kind-of": "^6.0.0"
+          }
+        },
+        "is-descriptor": {
+          "version": "1.0.2",
+          "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
+          "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
+          "dev": true,
+          "requires": {
+            "is-accessor-descriptor": "^1.0.0",
+            "is-data-descriptor": "^1.0.0",
+            "kind-of": "^6.0.2"
+          }
+        }
+      }
+    },
+    "snapdragon-util": {
+      "version": "3.0.1",
+      "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz",
+      "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==",
+      "dev": true,
+      "requires": {
+        "kind-of": "^3.2.0"
+      },
+      "dependencies": {
+        "kind-of": {
+          "version": "3.2.2",
+          "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+          "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+          "dev": true,
+          "requires": {
+            "is-buffer": "^1.1.5"
+          }
+        }
+      }
+    },
+    "sntp": {
+      "version": "1.0.9",
+      "resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz",
+      "integrity": "sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg=",
+      "dev": true,
+      "requires": {
+        "hoek": "2.x.x"
+      }
+    },
+    "socket.io": {
+      "version": "1.7.3",
+      "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-1.7.3.tgz",
+      "integrity": "sha1-uK+cq6AJSeVo42nxMn6pvp6iRhs=",
+      "dev": true,
+      "requires": {
+        "debug": "2.3.3",
+        "engine.io": "1.8.3",
+        "has-binary": "0.1.7",
+        "object-assign": "4.1.0",
+        "socket.io-adapter": "0.5.0",
+        "socket.io-client": "1.7.3",
+        "socket.io-parser": "2.3.1"
+      },
+      "dependencies": {
+        "debug": {
+          "version": "2.3.3",
+          "resolved": "https://registry.npmjs.org/debug/-/debug-2.3.3.tgz",
+          "integrity": "sha1-QMRT5n5uE8kB3ewxeviYbNqe/4w=",
+          "dev": true,
+          "requires": {
+            "ms": "0.7.2"
+          }
+        },
+        "ms": {
+          "version": "0.7.2",
+          "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz",
+          "integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U=",
+          "dev": true
+        },
+        "object-assign": {
+          "version": "4.1.0",
+          "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.0.tgz",
+          "integrity": "sha1-ejs9DpgGPUP0wD8uiubNUahog6A=",
+          "dev": true
+        }
+      }
+    },
+    "socket.io-adapter": {
+      "version": "0.5.0",
+      "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-0.5.0.tgz",
+      "integrity": "sha1-y21LuL7IHhB4uZZ3+c7QBGBmu4s=",
+      "dev": true,
+      "requires": {
+        "debug": "2.3.3",
+        "socket.io-parser": "2.3.1"
+      },
+      "dependencies": {
+        "debug": {
+          "version": "2.3.3",
+          "resolved": "https://registry.npmjs.org/debug/-/debug-2.3.3.tgz",
+          "integrity": "sha1-QMRT5n5uE8kB3ewxeviYbNqe/4w=",
+          "dev": true,
+          "requires": {
+            "ms": "0.7.2"
+          }
+        },
+        "ms": {
+          "version": "0.7.2",
+          "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz",
+          "integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U=",
+          "dev": true
+        }
+      }
+    },
+    "socket.io-client": {
+      "version": "1.7.3",
+      "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-1.7.3.tgz",
+      "integrity": "sha1-sw6GqhDV7zVGYBwJzeR2Xjgdo3c=",
+      "dev": true,
+      "requires": {
+        "backo2": "1.0.2",
+        "component-bind": "1.0.0",
+        "component-emitter": "1.2.1",
+        "debug": "2.3.3",
+        "engine.io-client": "1.8.3",
+        "has-binary": "0.1.7",
+        "indexof": "0.0.1",
+        "object-component": "0.0.3",
+        "parseuri": "0.0.5",
+        "socket.io-parser": "2.3.1",
+        "to-array": "0.1.4"
+      },
+      "dependencies": {
+        "debug": {
+          "version": "2.3.3",
+          "resolved": "https://registry.npmjs.org/debug/-/debug-2.3.3.tgz",
+          "integrity": "sha1-QMRT5n5uE8kB3ewxeviYbNqe/4w=",
+          "dev": true,
+          "requires": {
+            "ms": "0.7.2"
+          }
+        },
+        "ms": {
+          "version": "0.7.2",
+          "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz",
+          "integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U=",
+          "dev": true
+        }
+      }
+    },
+    "socket.io-parser": {
+      "version": "2.3.1",
+      "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-2.3.1.tgz",
+      "integrity": "sha1-3VMgJRA85Clpcya+/WQAX8/ltKA=",
+      "dev": true,
+      "requires": {
+        "component-emitter": "1.1.2",
+        "debug": "2.2.0",
+        "isarray": "0.0.1",
+        "json3": "3.3.2"
+      },
+      "dependencies": {
+        "component-emitter": {
+          "version": "1.1.2",
+          "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.1.2.tgz",
+          "integrity": "sha1-KWWU8nU9qmOZbSrwjRWpURbJrsM=",
+          "dev": true
+        },
+        "debug": {
+          "version": "2.2.0",
+          "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz",
+          "integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=",
+          "dev": true,
+          "requires": {
+            "ms": "0.7.1"
+          }
+        },
+        "isarray": {
+          "version": "0.0.1",
+          "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
+          "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=",
+          "dev": true
+        },
+        "ms": {
+          "version": "0.7.1",
+          "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz",
+          "integrity": "sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg=",
+          "dev": true
+        }
+      }
+    },
+    "sockjs": {
+      "version": "0.3.19",
+      "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.19.tgz",
+      "integrity": "sha512-V48klKZl8T6MzatbLlzzRNhMepEys9Y4oGFpypBFFn1gLI/QQ9HtLLyWJNbPlwGLelOVOEijUbTTJeLLI59jLw==",
+      "dev": true,
+      "requires": {
+        "faye-websocket": "^0.10.0",
+        "uuid": "^3.0.1"
+      }
+    },
+    "sockjs-client": {
+      "version": "1.1.4",
+      "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.1.4.tgz",
+      "integrity": "sha1-W6vjhrd15M8U51IJEUUmVAFsixI=",
+      "dev": true,
+      "requires": {
+        "debug": "^2.6.6",
+        "eventsource": "0.1.6",
+        "faye-websocket": "~0.11.0",
+        "inherits": "^2.0.1",
+        "json3": "^3.3.2",
+        "url-parse": "^1.1.8"
+      },
+      "dependencies": {
+        "faye-websocket": {
+          "version": "0.11.1",
+          "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.1.tgz",
+          "integrity": "sha1-8O/hjE9W5PQK/H4Gxxn9XuYYjzg=",
+          "dev": true,
+          "requires": {
+            "websocket-driver": ">=0.5.1"
+          }
+        }
+      }
+    },
+    "source-list-map": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.0.tgz",
+      "integrity": "sha512-I2UmuJSRr/T8jisiROLU3A3ltr+swpniSmNPI4Ml3ZCX6tVnDsuZzK7F2hl5jTqbZBWCEKlj5HRQiPExXLgE8A==",
+      "dev": true
+    },
+    "source-map": {
+      "version": "0.5.7",
+      "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
+      "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
+      "dev": true
+    },
+    "source-map-resolve": {
+      "version": "0.5.2",
+      "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.2.tgz",
+      "integrity": "sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA==",
+      "dev": true,
+      "requires": {
+        "atob": "^2.1.1",
+        "decode-uri-component": "^0.2.0",
+        "resolve-url": "^0.2.1",
+        "source-map-url": "^0.4.0",
+        "urix": "^0.1.0"
+      }
+    },
+    "source-map-support": {
+      "version": "0.5.6",
+      "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.6.tgz",
+      "integrity": "sha512-N4KXEz7jcKqPf2b2vZF11lQIz9W5ZMuUcIOGj243lduidkf2fjkVKJS9vNxVWn3u/uxX38AcE8U9nnH9FPcq+g==",
+      "dev": true,
+      "requires": {
+        "buffer-from": "^1.0.0",
+        "source-map": "^0.6.0"
+      },
+      "dependencies": {
+        "source-map": {
+          "version": "0.6.1",
+          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+          "dev": true
+        }
+      }
+    },
+    "source-map-url": {
+      "version": "0.4.0",
+      "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz",
+      "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=",
+      "dev": true
+    },
+    "spdx-correct": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.0.0.tgz",
+      "integrity": "sha512-N19o9z5cEyc8yQQPukRCZ9EUmb4HUpnrmaL/fxS2pBo2jbfcFRVuFZ/oFC+vZz0MNNk0h80iMn5/S6qGZOL5+g==",
+      "dev": true,
+      "requires": {
+        "spdx-expression-parse": "^3.0.0",
+        "spdx-license-ids": "^3.0.0"
+      }
+    },
+    "spdx-exceptions": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.1.0.tgz",
+      "integrity": "sha512-4K1NsmrlCU1JJgUrtgEeTVyfx8VaYea9J9LvARxhbHtVtohPs/gFGG5yy49beySjlIMhhXZ4QqujIZEfS4l6Cg==",
+      "dev": true
+    },
+    "spdx-expression-parse": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz",
+      "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==",
+      "dev": true,
+      "requires": {
+        "spdx-exceptions": "^2.1.0",
+        "spdx-license-ids": "^3.0.0"
+      }
+    },
+    "spdx-license-ids": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.0.tgz",
+      "integrity": "sha512-2+EPwgbnmOIl8HjGBXXMd9NAu02vLjOO1nWw4kmeRDFyHn+M/ETfHxQUK0oXg8ctgVnl9t3rosNVsZ1jG61nDA==",
+      "dev": true
+    },
+    "spdy": {
+      "version": "3.4.7",
+      "resolved": "https://registry.npmjs.org/spdy/-/spdy-3.4.7.tgz",
+      "integrity": "sha1-Qv9B7OXMD5mjpsKKq7c/XDsDrLw=",
+      "dev": true,
+      "requires": {
+        "debug": "^2.6.8",
+        "handle-thing": "^1.2.5",
+        "http-deceiver": "^1.2.7",
+        "safe-buffer": "^5.0.1",
+        "select-hose": "^2.0.0",
+        "spdy-transport": "^2.0.18"
+      }
+    },
+    "spdy-transport": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-2.1.0.tgz",
+      "integrity": "sha512-bpUeGpZcmZ692rrTiqf9/2EUakI6/kXX1Rpe0ib/DyOzbiexVfXkw6GnvI9hVGvIwVaUhkaBojjCZwLNRGQg1g==",
+      "dev": true,
+      "requires": {
+        "debug": "^2.6.8",
+        "detect-node": "^2.0.3",
+        "hpack.js": "^2.1.6",
+        "obuf": "^1.1.1",
+        "readable-stream": "^2.2.9",
+        "safe-buffer": "^5.0.1",
+        "wbuf": "^1.7.2"
+      }
+    },
+    "split-string": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz",
+      "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==",
+      "dev": true,
+      "requires": {
+        "extend-shallow": "^3.0.0"
+      }
+    },
+    "sprintf-js": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
+      "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=",
+      "dev": true
+    },
+    "sshpk": {
+      "version": "1.14.2",
+      "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.14.2.tgz",
+      "integrity": "sha1-xvxhZIo9nE52T9P8306hBeSSupg=",
+      "dev": true,
+      "requires": {
+        "asn1": "~0.2.3",
+        "assert-plus": "^1.0.0",
+        "bcrypt-pbkdf": "^1.0.0",
+        "dashdash": "^1.12.0",
+        "ecc-jsbn": "~0.1.1",
+        "getpass": "^0.1.1",
+        "jsbn": "~0.1.0",
+        "safer-buffer": "^2.0.2",
+        "tweetnacl": "~0.14.0"
+      }
+    },
+    "ssri": {
+      "version": "5.3.0",
+      "resolved": "https://registry.npmjs.org/ssri/-/ssri-5.3.0.tgz",
+      "integrity": "sha512-XRSIPqLij52MtgoQavH/x/dU1qVKtWUAAZeOHsR9c2Ddi4XerFy3mc1alf+dLJKl9EUIm/Ht+EowFkTUOA6GAQ==",
+      "dev": true,
+      "requires": {
+        "safe-buffer": "^5.1.1"
+      }
+    },
+    "static-extend": {
+      "version": "0.1.2",
+      "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz",
+      "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=",
+      "dev": true,
+      "requires": {
+        "define-property": "^0.2.5",
+        "object-copy": "^0.1.0"
+      },
+      "dependencies": {
+        "define-property": {
+          "version": "0.2.5",
+          "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
+          "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
+          "dev": true,
+          "requires": {
+            "is-descriptor": "^0.1.0"
+          }
+        }
+      }
+    },
+    "stats-webpack-plugin": {
+      "version": "0.6.2",
+      "resolved": "https://registry.npmjs.org/stats-webpack-plugin/-/stats-webpack-plugin-0.6.2.tgz",
+      "integrity": "sha1-LFlJtTHgf4eojm6k3PrFOqjHWis=",
+      "dev": true,
+      "requires": {
+        "lodash": "^4.17.4"
+      }
+    },
+    "statuses": {
+      "version": "1.4.0",
+      "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz",
+      "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==",
+      "dev": true
+    },
+    "stdout-stream": {
+      "version": "1.4.0",
+      "resolved": "https://registry.npmjs.org/stdout-stream/-/stdout-stream-1.4.0.tgz",
+      "integrity": "sha1-osfIWH5U2UJ+qe2zrD8s1SLfN4s=",
+      "dev": true,
+      "optional": true,
+      "requires": {
+        "readable-stream": "^2.0.1"
+      }
+    },
+    "stream-browserify": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.1.tgz",
+      "integrity": "sha1-ZiZu5fm9uZQKTkUUyvtDu3Hlyds=",
+      "dev": true,
+      "requires": {
+        "inherits": "~2.0.1",
+        "readable-stream": "^2.0.2"
+      }
+    },
+    "stream-each": {
+      "version": "1.2.2",
+      "resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.2.tgz",
+      "integrity": "sha512-mc1dbFhGBxvTM3bIWmAAINbqiuAk9TATcfIQC8P+/+HJefgaiTlMn2dHvkX8qlI12KeYKSQ1Ua9RrIqrn1VPoA==",
+      "dev": true,
+      "requires": {
+        "end-of-stream": "^1.1.0",
+        "stream-shift": "^1.0.0"
+      }
+    },
+    "stream-http": {
+      "version": "2.8.3",
+      "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz",
+      "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==",
+      "dev": true,
+      "requires": {
+        "builtin-status-codes": "^3.0.0",
+        "inherits": "^2.0.1",
+        "readable-stream": "^2.3.6",
+        "to-arraybuffer": "^1.0.0",
+        "xtend": "^4.0.0"
+      }
+    },
+    "stream-shift": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.0.tgz",
+      "integrity": "sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI=",
+      "dev": true
+    },
+    "string-width": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
+      "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
+      "dev": true,
+      "requires": {
+        "code-point-at": "^1.0.0",
+        "is-fullwidth-code-point": "^1.0.0",
+        "strip-ansi": "^3.0.0"
+      }
+    },
+    "string_decoder": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+      "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+      "dev": true,
+      "requires": {
+        "safe-buffer": "~5.1.0"
+      }
+    },
+    "stringstream": {
+      "version": "0.0.6",
+      "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.6.tgz",
+      "integrity": "sha512-87GEBAkegbBcweToUrdzf3eLhWNg06FJTebl4BVJz/JgWy8CvEr9dRtX5qWphiynMSQlxxi+QqN0z5T32SLlhA==",
+      "dev": true
+    },
+    "strip-ansi": {
+      "version": "3.0.1",
+      "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
+      "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
+      "dev": true,
+      "requires": {
+        "ansi-regex": "^2.0.0"
+      }
+    },
+    "strip-bom": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz",
+      "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=",
+      "dev": true,
+      "requires": {
+        "is-utf8": "^0.2.0"
+      }
+    },
+    "strip-eof": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz",
+      "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=",
+      "dev": true
+    },
+    "strip-indent": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz",
+      "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=",
+      "dev": true,
+      "requires": {
+        "get-stdin": "^4.0.1"
+      }
+    },
+    "style-loader": {
+      "version": "0.21.0",
+      "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-0.21.0.tgz",
+      "integrity": "sha512-T+UNsAcl3Yg+BsPKs1vd22Fr8sVT+CJMtzqc6LEw9bbJZb43lm9GoeIfUcDEefBSWC0BhYbcdupV1GtI4DGzxg==",
+      "dev": true,
+      "requires": {
+        "loader-utils": "^1.1.0",
+        "schema-utils": "^0.4.5"
+      }
+    },
+    "stylus": {
+      "version": "0.54.5",
+      "resolved": "https://registry.npmjs.org/stylus/-/stylus-0.54.5.tgz",
+      "integrity": "sha1-QrlWCTHKcJDOhRWnmLqeaqPW3Hk=",
+      "dev": true,
+      "requires": {
+        "css-parse": "1.7.x",
+        "debug": "*",
+        "glob": "7.0.x",
+        "mkdirp": "0.5.x",
+        "sax": "0.5.x",
+        "source-map": "0.1.x"
+      },
+      "dependencies": {
+        "glob": {
+          "version": "7.0.6",
+          "resolved": "https://registry.npmjs.org/glob/-/glob-7.0.6.tgz",
+          "integrity": "sha1-IRuvr0nlJbjNkyYNFKsTYVKz9Xo=",
+          "dev": true,
+          "requires": {
+            "fs.realpath": "^1.0.0",
+            "inflight": "^1.0.4",
+            "inherits": "2",
+            "minimatch": "^3.0.2",
+            "once": "^1.3.0",
+            "path-is-absolute": "^1.0.0"
+          }
+        },
+        "source-map": {
+          "version": "0.1.43",
+          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz",
+          "integrity": "sha1-wkvBRspRfBRx9drL4lcbK3+eM0Y=",
+          "dev": true,
+          "requires": {
+            "amdefine": ">=0.0.4"
+          }
+        }
+      }
+    },
+    "stylus-loader": {
+      "version": "3.0.2",
+      "resolved": "https://registry.npmjs.org/stylus-loader/-/stylus-loader-3.0.2.tgz",
+      "integrity": "sha512-+VomPdZ6a0razP+zinir61yZgpw2NfljeSsdUF5kJuEzlo3khXhY19Fn6l8QQz1GRJGtMCo8nG5C04ePyV7SUA==",
+      "dev": true,
+      "requires": {
+        "loader-utils": "^1.0.2",
+        "lodash.clonedeep": "^4.5.0",
+        "when": "~3.6.x"
+      }
+    },
+    "supports-color": {
+      "version": "5.4.0",
+      "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz",
+      "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==",
+      "dev": true,
+      "requires": {
+        "has-flag": "^3.0.0"
+      }
+    },
+    "symbol-observable": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz",
+      "integrity": "sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==",
+      "dev": true
+    },
+    "tapable": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.0.0.tgz",
+      "integrity": "sha512-dQRhbNQkRnaqauC7WqSJ21EEksgT0fYZX2lqXzGkpo8JNig9zGZTYoMGvyI2nWmXlE2VSVXVDu7wLVGu/mQEsg==",
+      "dev": true
+    },
+    "tar": {
+      "version": "2.2.1",
+      "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.1.tgz",
+      "integrity": "sha1-jk0qJWwOIYXGsYrWlK7JaLg8sdE=",
+      "dev": true,
+      "optional": true,
+      "requires": {
+        "block-stream": "*",
+        "fstream": "^1.0.2",
+        "inherits": "2"
+      }
+    },
+    "through": {
+      "version": "2.3.8",
+      "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
+      "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=",
+      "dev": true
+    },
+    "through2": {
+      "version": "2.0.3",
+      "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz",
+      "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=",
+      "dev": true,
+      "requires": {
+        "readable-stream": "^2.1.5",
+        "xtend": "~4.0.1"
+      }
+    },
+    "thunky": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.0.2.tgz",
+      "integrity": "sha1-qGLgGOP7HqLsP85dVWBc9X8kc3E=",
+      "dev": true
+    },
+    "timers-browserify": {
+      "version": "2.0.10",
+      "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.10.tgz",
+      "integrity": "sha512-YvC1SV1XdOUaL6gx5CoGroT3Gu49pK9+TZ38ErPldOWW4j49GI1HKs9DV+KGq/w6y+LZ72W1c8cKz2vzY+qpzg==",
+      "dev": true,
+      "requires": {
+        "setimmediate": "^1.0.4"
+      }
+    },
+    "tmp": {
+      "version": "0.0.31",
+      "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.31.tgz",
+      "integrity": "sha1-jzirlDjhcxXl29izZX6L+yd65Kc=",
+      "dev": true,
+      "requires": {
+        "os-tmpdir": "~1.0.1"
+      }
+    },
+    "to-array": {
+      "version": "0.1.4",
+      "resolved": "https://registry.npmjs.org/to-array/-/to-array-0.1.4.tgz",
+      "integrity": "sha1-F+bBH3PdTz10zaek/zI46a2b+JA=",
+      "dev": true
+    },
+    "to-arraybuffer": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz",
+      "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=",
+      "dev": true
+    },
+    "to-fast-properties": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz",
+      "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=",
+      "dev": true
+    },
+    "to-object-path": {
+      "version": "0.3.0",
+      "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz",
+      "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=",
+      "dev": true,
+      "requires": {
+        "kind-of": "^3.0.2"
+      },
+      "dependencies": {
+        "kind-of": {
+          "version": "3.2.2",
+          "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+          "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+          "dev": true,
+          "requires": {
+            "is-buffer": "^1.1.5"
+          }
+        }
+      }
+    },
+    "to-regex": {
+      "version": "3.0.2",
+      "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz",
+      "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==",
+      "dev": true,
+      "requires": {
+        "define-property": "^2.0.2",
+        "extend-shallow": "^3.0.2",
+        "regex-not": "^1.0.2",
+        "safe-regex": "^1.1.0"
+      }
+    },
+    "to-regex-range": {
+      "version": "2.1.1",
+      "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz",
+      "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=",
+      "dev": true,
+      "requires": {
+        "is-number": "^3.0.0",
+        "repeat-string": "^1.6.1"
+      }
+    },
+    "toposort": {
+      "version": "1.0.7",
+      "resolved": "https://registry.npmjs.org/toposort/-/toposort-1.0.7.tgz",
+      "integrity": "sha1-LmhELZ9k7HILjMieZEOsbKqVACk=",
+      "dev": true
+    },
+    "tough-cookie": {
+      "version": "2.3.4",
+      "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.4.tgz",
+      "integrity": "sha512-TZ6TTfI5NtZnuyy/Kecv+CnoROnyXn2DN97LontgQpCwsX2XyLYCC0ENhYkehSOwAp8rTQKc/NUIF7BkQ5rKLA==",
+      "dev": true,
+      "requires": {
+        "punycode": "^1.4.1"
+      },
+      "dependencies": {
+        "punycode": {
+          "version": "1.4.1",
+          "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
+          "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=",
+          "dev": true
+        }
+      }
+    },
+    "tree-kill": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.0.tgz",
+      "integrity": "sha512-DlX6dR0lOIRDFxI0mjL9IYg6OTncLm/Zt+JiBhE5OlFcAR8yc9S7FFXU9so0oda47frdM/JFsk7UjNt9vscKcg==",
+      "dev": true
+    },
+    "trim-newlines": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz",
+      "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=",
+      "dev": true
+    },
+    "trim-right": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz",
+      "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=",
+      "dev": true
+    },
+    "true-case-path": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/true-case-path/-/true-case-path-1.0.2.tgz",
+      "integrity": "sha1-fskRMJJHZsf1c74wIMNPj9/QDWI=",
+      "dev": true,
+      "optional": true,
+      "requires": {
+        "glob": "^6.0.4"
+      },
+      "dependencies": {
+        "glob": {
+          "version": "6.0.4",
+          "resolved": "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz",
+          "integrity": "sha1-DwiGD2oVUSey+t1PnOJLGqtuTSI=",
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "inflight": "^1.0.4",
+            "inherits": "2",
+            "minimatch": "2 || 3",
+            "once": "^1.3.0",
+            "path-is-absolute": "^1.0.0"
+          }
+        }
+      }
+    },
+    "ts-node": {
+      "version": "5.0.1",
+      "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-5.0.1.tgz",
+      "integrity": "sha512-XK7QmDcNHVmZkVtkiwNDWiERRHPyU8nBqZB1+iv2UhOG0q3RQ9HsZ2CMqISlFbxjrYFGfG2mX7bW4dAyxBVzUw==",
+      "dev": true,
+      "requires": {
+        "arrify": "^1.0.0",
+        "chalk": "^2.3.0",
+        "diff": "^3.1.0",
+        "make-error": "^1.1.1",
+        "minimist": "^1.2.0",
+        "mkdirp": "^0.5.1",
+        "source-map-support": "^0.5.3",
+        "yn": "^2.0.0"
+      },
+      "dependencies": {
+        "chalk": {
+          "version": "2.4.1",
+          "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz",
+          "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==",
+          "dev": true,
+          "requires": {
+            "ansi-styles": "^3.2.1",
+            "escape-string-regexp": "^1.0.5",
+            "supports-color": "^5.3.0"
+          }
+        },
+        "minimist": {
+          "version": "1.2.0",
+          "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
+          "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=",
+          "dev": true
+        }
+      }
+    },
+    "tsickle": {
+      "version": "0.29.0",
+      "resolved": "https://registry.npmjs.org/tsickle/-/tsickle-0.29.0.tgz",
+      "integrity": "sha512-JpID0Lv8/irRtPmqJJxb5fCwfZhjZeKmav9Zna7UjqVuJoSbI49Wue/c2PPybX1SbRrjl7bbI/JsCl0dSUJygA==",
+      "dev": true,
+      "requires": {
+        "minimist": "^1.2.0",
+        "mkdirp": "^0.5.1",
+        "source-map": "^0.6.0",
+        "source-map-support": "^0.5.0"
+      },
+      "dependencies": {
+        "minimist": {
+          "version": "1.2.0",
+          "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
+          "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=",
+          "dev": true
+        },
+        "source-map": {
+          "version": "0.6.1",
+          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+          "dev": true
+        }
+      }
+    },
+    "tslib": {
+      "version": "1.9.2",
+      "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.2.tgz",
+      "integrity": "sha512-AVP5Xol3WivEr7hnssHDsaM+lVrVXWUvd1cfXTRkTj80b//6g2wIFEH6hZG0muGZRnHGrfttpdzRk3YlBkWjKw=="
+    },
+    "tslint": {
+      "version": "5.9.1",
+      "resolved": "https://registry.npmjs.org/tslint/-/tslint-5.9.1.tgz",
+      "integrity": "sha1-ElX4ej/1frCw4fDmEKi0dIBGya4=",
+      "dev": true,
+      "requires": {
+        "babel-code-frame": "^6.22.0",
+        "builtin-modules": "^1.1.1",
+        "chalk": "^2.3.0",
+        "commander": "^2.12.1",
+        "diff": "^3.2.0",
+        "glob": "^7.1.1",
+        "js-yaml": "^3.7.0",
+        "minimatch": "^3.0.4",
+        "resolve": "^1.3.2",
+        "semver": "^5.3.0",
+        "tslib": "^1.8.0",
+        "tsutils": "^2.12.1"
+      },
+      "dependencies": {
+        "chalk": {
+          "version": "2.4.1",
+          "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz",
+          "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==",
+          "dev": true,
+          "requires": {
+            "ansi-styles": "^3.2.1",
+            "escape-string-regexp": "^1.0.5",
+            "supports-color": "^5.3.0"
+          }
+        }
+      }
+    },
+    "tsutils": {
+      "version": "2.27.1",
+      "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.27.1.tgz",
+      "integrity": "sha512-AE/7uzp32MmaHvNNFES85hhUDHFdFZp6OAiZcd6y4ZKKIg6orJTm8keYWBhIhrJQH3a4LzNKat7ZPXZt5aTf6w==",
+      "dev": true,
+      "requires": {
+        "tslib": "^1.8.1"
+      }
+    },
+    "tty-browserify": {
+      "version": "0.0.0",
+      "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz",
+      "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=",
+      "dev": true
+    },
+    "tunnel-agent": {
+      "version": "0.6.0",
+      "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
+      "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=",
+      "dev": true,
+      "requires": {
+        "safe-buffer": "^5.0.1"
+      }
+    },
+    "tweetnacl": {
+      "version": "0.14.5",
+      "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz",
+      "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=",
+      "dev": true,
+      "optional": true
+    },
+    "type-check": {
+      "version": "0.3.2",
+      "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz",
+      "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=",
+      "dev": true,
+      "requires": {
+        "prelude-ls": "~1.1.2"
+      }
+    },
+    "type-is": {
+      "version": "1.6.16",
+      "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.16.tgz",
+      "integrity": "sha512-HRkVv/5qY2G6I8iab9cI7v1bOIdhm94dVjQCPFElW9W+3GeDOSHmy2EBYe4VTApuzolPcmgFTN3ftVJRKR2J9Q==",
+      "dev": true,
+      "requires": {
+        "media-typer": "0.3.0",
+        "mime-types": "~2.1.18"
+      }
+    },
+    "typedarray": {
+      "version": "0.0.6",
+      "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz",
+      "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=",
+      "dev": true
+    },
+    "typescript": {
+      "version": "2.7.2",
+      "resolved": "https://registry.npmjs.org/typescript/-/typescript-2.7.2.tgz",
+      "integrity": "sha512-p5TCYZDAO0m4G344hD+wx/LATebLWZNkkh2asWUFqSsD2OrDNhbAHuSjobrmsUmdzjJjEeZVU9g1h3O6vpstnw==",
+      "dev": true
+    },
+    "uglify-js": {
+      "version": "3.3.28",
+      "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.3.28.tgz",
+      "integrity": "sha512-68Rc/aA6cswiaQ5SrE979UJcXX+ADA1z33/ZsPd+fbAiVdjZ16OXdbtGO+rJUUBgK6qdf3SOPhQf3K/ybF5Miw==",
+      "dev": true,
+      "requires": {
+        "commander": "~2.15.0",
+        "source-map": "~0.6.1"
+      },
+      "dependencies": {
+        "source-map": {
+          "version": "0.6.1",
+          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+          "dev": true
+        }
+      }
+    },
+    "uglify-to-browserify": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz",
+      "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=",
+      "dev": true,
+      "optional": true
+    },
+    "uglifyjs-webpack-plugin": {
+      "version": "1.2.5",
+      "resolved": "https://registry.npmjs.org/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-1.2.5.tgz",
+      "integrity": "sha512-hIQJ1yxAPhEA2yW/i7Fr+SXZVMp+VEI3d42RTHBgQd2yhp/1UdBcR3QEWPV5ahBxlqQDMEMTuTEvDHSFINfwSw==",
+      "dev": true,
+      "requires": {
+        "cacache": "^10.0.4",
+        "find-cache-dir": "^1.0.0",
+        "schema-utils": "^0.4.5",
+        "serialize-javascript": "^1.4.0",
+        "source-map": "^0.6.1",
+        "uglify-es": "^3.3.4",
+        "webpack-sources": "^1.1.0",
+        "worker-farm": "^1.5.2"
+      },
+      "dependencies": {
+        "commander": {
+          "version": "2.13.0",
+          "resolved": "https://registry.npmjs.org/commander/-/commander-2.13.0.tgz",
+          "integrity": "sha512-MVuS359B+YzaWqjCL/c+22gfryv+mCBPHAv3zyVI2GN8EY6IRP8VwtasXn8jyyhvvq84R4ImN1OKRtcbIasjYA==",
+          "dev": true
+        },
+        "source-map": {
+          "version": "0.6.1",
+          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+          "dev": true
+        },
+        "uglify-es": {
+          "version": "3.3.9",
+          "resolved": "https://registry.npmjs.org/uglify-es/-/uglify-es-3.3.9.tgz",
+          "integrity": "sha512-r+MU0rfv4L/0eeW3xZrd16t4NZfK8Ld4SWVglYBb7ez5uXFWHuVRs6xCTrf1yirs9a4j4Y27nn7SRfO6v67XsQ==",
+          "dev": true,
+          "requires": {
+            "commander": "~2.13.0",
+            "source-map": "~0.6.1"
+          }
+        }
+      }
+    },
+    "ultron": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.0.2.tgz",
+      "integrity": "sha1-rOEWq1V80Zc4ak6I9GhTeMiy5Po=",
+      "dev": true
+    },
+    "union-value": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.0.tgz",
+      "integrity": "sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ=",
+      "dev": true,
+      "requires": {
+        "arr-union": "^3.1.0",
+        "get-value": "^2.0.6",
+        "is-extendable": "^0.1.1",
+        "set-value": "^0.4.3"
+      },
+      "dependencies": {
+        "extend-shallow": {
+          "version": "2.0.1",
+          "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+          "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+          "dev": true,
+          "requires": {
+            "is-extendable": "^0.1.0"
+          }
+        },
+        "set-value": {
+          "version": "0.4.3",
+          "resolved": "https://registry.npmjs.org/set-value/-/set-value-0.4.3.tgz",
+          "integrity": "sha1-fbCPnT0i3H945Trzw79GZuzfzPE=",
+          "dev": true,
+          "requires": {
+            "extend-shallow": "^2.0.1",
+            "is-extendable": "^0.1.1",
+            "is-plain-object": "^2.0.1",
+            "to-object-path": "^0.3.0"
+          }
+        }
+      }
+    },
+    "unique-filename": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.0.tgz",
+      "integrity": "sha1-0F8v5AMlYIcfMOk8vnNe6iAVFPM=",
+      "dev": true,
+      "requires": {
+        "unique-slug": "^2.0.0"
+      }
+    },
+    "unique-slug": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.0.tgz",
+      "integrity": "sha1-22Z258fMBimHj/GWCXx4hVrp9Ks=",
+      "dev": true,
+      "requires": {
+        "imurmurhash": "^0.1.4"
+      }
+    },
+    "unpipe": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
+      "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=",
+      "dev": true
+    },
+    "unset-value": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz",
+      "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=",
+      "dev": true,
+      "requires": {
+        "has-value": "^0.3.1",
+        "isobject": "^3.0.0"
+      },
+      "dependencies": {
+        "has-value": {
+          "version": "0.3.1",
+          "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz",
+          "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=",
+          "dev": true,
+          "requires": {
+            "get-value": "^2.0.3",
+            "has-values": "^0.1.4",
+            "isobject": "^2.0.0"
+          },
+          "dependencies": {
+            "isobject": {
+              "version": "2.1.0",
+              "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz",
+              "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=",
+              "dev": true,
+              "requires": {
+                "isarray": "1.0.0"
+              }
+            }
+          }
+        },
+        "has-values": {
+          "version": "0.1.4",
+          "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz",
+          "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=",
+          "dev": true
+        }
+      }
+    },
+    "upath": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/upath/-/upath-1.1.0.tgz",
+      "integrity": "sha512-bzpH/oBhoS/QI/YtbkqCg6VEiPYjSZtrHQM6/QnJS6OL9pKUFLqb3aFh4Scvwm45+7iAgiMkLhSbaZxUqmrprw==",
+      "dev": true
+    },
+    "upper-case": {
+      "version": "1.1.3",
+      "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-1.1.3.tgz",
+      "integrity": "sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg=",
+      "dev": true
+    },
+    "uri-js": {
+      "version": "3.0.2",
+      "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-3.0.2.tgz",
+      "integrity": "sha1-+QuFhQf4HepNz7s8TD2/orVX+qo=",
+      "dev": true,
+      "requires": {
+        "punycode": "^2.1.0"
+      }
+    },
+    "urix": {
+      "version": "0.1.0",
+      "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz",
+      "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=",
+      "dev": true
+    },
+    "url": {
+      "version": "0.11.0",
+      "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz",
+      "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=",
+      "dev": true,
+      "requires": {
+        "punycode": "1.3.2",
+        "querystring": "0.2.0"
+      },
+      "dependencies": {
+        "punycode": {
+          "version": "1.3.2",
+          "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz",
+          "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=",
+          "dev": true
+        }
+      }
+    },
+    "url-join": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/url-join/-/url-join-4.0.0.tgz",
+      "integrity": "sha1-TTNA6AfTdzvamZH4MFrNzCpmXSo=",
+      "dev": true
+    },
+    "url-loader": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/url-loader/-/url-loader-1.0.1.tgz",
+      "integrity": "sha512-rAonpHy7231fmweBKUFe0bYnlGDty77E+fm53NZdij7j/YOpyGzc7ttqG1nAXl3aRs0k41o0PC3TvGXQiw2Zvw==",
+      "dev": true,
+      "requires": {
+        "loader-utils": "^1.1.0",
+        "mime": "^2.0.3",
+        "schema-utils": "^0.4.3"
+      },
+      "dependencies": {
+        "mime": {
+          "version": "2.3.1",
+          "resolved": "https://registry.npmjs.org/mime/-/mime-2.3.1.tgz",
+          "integrity": "sha512-OEUllcVoydBHGN1z84yfQDimn58pZNNNXgZlHXSboxMlFvgI6MXSWpWKpFRra7H1HxpVhHTkrghfRW49k6yjeg==",
+          "dev": true
+        }
+      }
+    },
+    "url-parse": {
+      "version": "1.4.1",
+      "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.4.1.tgz",
+      "integrity": "sha512-x95Td74QcvICAA0+qERaVkRpTGKyBHHYdwL2LXZm5t/gBtCB9KQSO/0zQgSTYEV1p0WcvSg79TLNPSvd5IDJMQ==",
+      "dev": true,
+      "requires": {
+        "querystringify": "^2.0.0",
+        "requires-port": "^1.0.0"
+      }
+    },
+    "use": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npmjs.org/use/-/use-3.1.0.tgz",
+      "integrity": "sha512-6UJEQM/L+mzC3ZJNM56Q4DFGLX/evKGRg15UJHGB9X5j5Z3AFbgZvjUh2yq/UJUY4U5dh7Fal++XbNg1uzpRAw==",
+      "dev": true,
+      "requires": {
+        "kind-of": "^6.0.2"
+      }
+    },
+    "useragent": {
+      "version": "2.3.0",
+      "resolved": "https://registry.npmjs.org/useragent/-/useragent-2.3.0.tgz",
+      "integrity": "sha512-4AoH4pxuSvHCjqLO04sU6U/uE65BYza8l/KKBS0b0hnUPWi+cQ2BpeTEwejCSx9SPV5/U03nniDTrWx5NrmKdw==",
+      "dev": true,
+      "requires": {
+        "lru-cache": "4.1.x",
+        "tmp": "0.0.x"
+      }
+    },
+    "util": {
+      "version": "0.10.4",
+      "resolved": "https://registry.npmjs.org/util/-/util-0.10.4.tgz",
+      "integrity": "sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==",
+      "dev": true,
+      "requires": {
+        "inherits": "2.0.3"
+      }
+    },
+    "util-deprecate": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
+      "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=",
+      "dev": true
+    },
+    "util.promisify": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.0.tgz",
+      "integrity": "sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA==",
+      "dev": true,
+      "requires": {
+        "define-properties": "^1.1.2",
+        "object.getownpropertydescriptors": "^2.0.3"
+      }
+    },
+    "utila": {
+      "version": "0.4.0",
+      "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz",
+      "integrity": "sha1-ihagXURWV6Oupe7MWxKk+lN5dyw=",
+      "dev": true
+    },
+    "utils-merge": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
+      "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=",
+      "dev": true
+    },
+    "uuid": {
+      "version": "3.2.1",
+      "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.2.1.tgz",
+      "integrity": "sha512-jZnMwlb9Iku/O3smGWvZhauCf6cvvpKi4BKRiliS3cxnI+Gz9j5MEpTz2UFuXiKPJocb7gnsLHwiS05ige5BEA==",
+      "dev": true
+    },
+    "validate-npm-package-license": {
+      "version": "3.0.3",
+      "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.3.tgz",
+      "integrity": "sha512-63ZOUnL4SIXj4L0NixR3L1lcjO38crAbgrTpl28t8jjrfuiOBL5Iygm+60qPs/KsZGzPNg6Smnc/oY16QTjF0g==",
+      "dev": true,
+      "requires": {
+        "spdx-correct": "^3.0.0",
+        "spdx-expression-parse": "^3.0.0"
+      }
+    },
+    "validate-npm-package-name": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz",
+      "integrity": "sha1-X6kS2B630MdK/BQN5zF/DKffQ34=",
+      "dev": true,
+      "requires": {
+        "builtins": "^1.0.3"
+      }
+    },
+    "vary": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
+      "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=",
+      "dev": true
+    },
+    "verror": {
+      "version": "1.10.0",
+      "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz",
+      "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=",
+      "dev": true,
+      "requires": {
+        "assert-plus": "^1.0.0",
+        "core-util-is": "1.0.2",
+        "extsprintf": "^1.2.0"
+      }
+    },
+    "vm-browserify": {
+      "version": "0.0.4",
+      "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-0.0.4.tgz",
+      "integrity": "sha1-XX6kW7755Kb/ZflUOOCofDV9WnM=",
+      "dev": true,
+      "requires": {
+        "indexof": "0.0.1"
+      }
+    },
+    "void-elements": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-2.0.1.tgz",
+      "integrity": "sha1-wGavtYK7HLQSjWDqkjkulNXp2+w=",
+      "dev": true
+    },
+    "watchpack": {
+      "version": "1.6.0",
+      "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.6.0.tgz",
+      "integrity": "sha512-i6dHe3EyLjMmDlU1/bGQpEw25XSjkJULPuAVKCbNRefQVq48yXKUpwg538F7AZTf9kyr57zj++pQFltUa5H7yA==",
+      "dev": true,
+      "requires": {
+        "chokidar": "^2.0.2",
+        "graceful-fs": "^4.1.2",
+        "neo-async": "^2.5.0"
+      }
+    },
+    "wbuf": {
+      "version": "1.7.3",
+      "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz",
+      "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==",
+      "dev": true,
+      "requires": {
+        "minimalistic-assert": "^1.0.0"
+      }
+    },
+    "webassemblyjs": {
+      "version": "1.4.3",
+      "resolved": "https://registry.npmjs.org/webassemblyjs/-/webassemblyjs-1.4.3.tgz",
+      "integrity": "sha512-4lOV1Lv6olz0PJkDGQEp82HempAn147e6BXijWDzz9g7/2nSebVP9GVg62Fz5ZAs55mxq13GA0XLyvY8XkyDjg==",
+      "dev": true,
+      "requires": {
+        "@webassemblyjs/ast": "1.4.3",
+        "@webassemblyjs/validation": "1.4.3",
+        "@webassemblyjs/wasm-parser": "1.4.3",
+        "@webassemblyjs/wast-parser": "1.4.3",
+        "long": "^3.2.0"
+      }
+    },
+    "webdriver-js-extender": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/webdriver-js-extender/-/webdriver-js-extender-1.0.0.tgz",
+      "integrity": "sha1-gcUzqeM9W/tZe05j4s2yW1R3dRU=",
+      "dev": true,
+      "requires": {
+        "@types/selenium-webdriver": "^2.53.35",
+        "selenium-webdriver": "^2.53.2"
+      },
+      "dependencies": {
+        "sax": {
+          "version": "0.6.1",
+          "resolved": "https://registry.npmjs.org/sax/-/sax-0.6.1.tgz",
+          "integrity": "sha1-VjsZx8HeiS4Jv8Ty/DDjwn8JUrk=",
+          "dev": true
+        },
+        "selenium-webdriver": {
+          "version": "2.53.3",
+          "resolved": "https://registry.npmjs.org/selenium-webdriver/-/selenium-webdriver-2.53.3.tgz",
+          "integrity": "sha1-0p/1qVff8aG0ncRXdW5OS/vc4IU=",
+          "dev": true,
+          "requires": {
+            "adm-zip": "0.4.4",
+            "rimraf": "^2.2.8",
+            "tmp": "0.0.24",
+            "ws": "^1.0.1",
+            "xml2js": "0.4.4"
+          }
+        },
+        "tmp": {
+          "version": "0.0.24",
+          "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.24.tgz",
+          "integrity": "sha1-1qXhmNFKmDXMby18PZ4wJCjIzxI=",
+          "dev": true
+        },
+        "xml2js": {
+          "version": "0.4.4",
+          "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.4.tgz",
+          "integrity": "sha1-MREBAAMAiuGSQOuhdJe1fHKcVV0=",
+          "dev": true,
+          "requires": {
+            "sax": "0.6.x",
+            "xmlbuilder": ">=1.0.0"
+          }
+        }
+      }
+    },
+    "webpack": {
+      "version": "4.8.3",
+      "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.8.3.tgz",
+      "integrity": "sha512-/hfAjBISycdK597lxONjKEFX7dSIU1PsYwC3XlXUXoykWBlv9QV5HnO+ql3HvrrgfBJ7WXdnjO9iGPR2aAc5sw==",
+      "dev": true,
+      "requires": {
+        "@webassemblyjs/ast": "1.4.3",
+        "@webassemblyjs/wasm-edit": "1.4.3",
+        "@webassemblyjs/wasm-parser": "1.4.3",
+        "acorn": "^5.0.0",
+        "acorn-dynamic-import": "^3.0.0",
+        "ajv": "^6.1.0",
+        "ajv-keywords": "^3.1.0",
+        "chrome-trace-event": "^0.1.1",
+        "enhanced-resolve": "^4.0.0",
+        "eslint-scope": "^3.7.1",
+        "loader-runner": "^2.3.0",
+        "loader-utils": "^1.1.0",
+        "memory-fs": "~0.4.1",
+        "micromatch": "^3.1.8",
+        "mkdirp": "~0.5.0",
+        "neo-async": "^2.5.0",
+        "node-libs-browser": "^2.0.0",
+        "schema-utils": "^0.4.4",
+        "tapable": "^1.0.0",
+        "uglifyjs-webpack-plugin": "^1.2.4",
+        "watchpack": "^1.5.0",
+        "webpack-sources": "^1.0.1"
+      }
+    },
+    "webpack-core": {
+      "version": "0.6.9",
+      "resolved": "https://registry.npmjs.org/webpack-core/-/webpack-core-0.6.9.tgz",
+      "integrity": "sha1-/FcViMhVjad76e+23r3Fo7FyvcI=",
+      "dev": true,
+      "requires": {
+        "source-list-map": "~0.1.7",
+        "source-map": "~0.4.1"
+      },
+      "dependencies": {
+        "source-list-map": {
+          "version": "0.1.8",
+          "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-0.1.8.tgz",
+          "integrity": "sha1-xVCyq1Qn9rPyH1r+rYjE9Vh7IQY=",
+          "dev": true
+        },
+        "source-map": {
+          "version": "0.4.4",
+          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz",
+          "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=",
+          "dev": true,
+          "requires": {
+            "amdefine": ">=0.0.4"
+          }
+        }
+      }
+    },
+    "webpack-dev-middleware": {
+      "version": "3.1.3",
+      "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-3.1.3.tgz",
+      "integrity": "sha512-I6Mmy/QjWU/kXwCSFGaiOoL5YEQIVmbb0o45xMoCyQAg/mClqZVTcsX327sPfekDyJWpCxb+04whNyLOIxpJdQ==",
+      "dev": true,
+      "requires": {
+        "loud-rejection": "^1.6.0",
+        "memory-fs": "~0.4.1",
+        "mime": "^2.1.0",
+        "path-is-absolute": "^1.0.0",
+        "range-parser": "^1.0.3",
+        "url-join": "^4.0.0",
+        "webpack-log": "^1.0.1"
+      },
+      "dependencies": {
+        "mime": {
+          "version": "2.3.1",
+          "resolved": "https://registry.npmjs.org/mime/-/mime-2.3.1.tgz",
+          "integrity": "sha512-OEUllcVoydBHGN1z84yfQDimn58pZNNNXgZlHXSboxMlFvgI6MXSWpWKpFRra7H1HxpVhHTkrghfRW49k6yjeg==",
+          "dev": true
+        }
+      }
+    },
+    "webpack-dev-server": {
+      "version": "3.1.4",
+      "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.1.4.tgz",
+      "integrity": "sha512-itcIUDFkHuj1/QQxzUFOEXXmxOj5bku2ScLEsOFPapnq2JRTm58gPdtnBphBJOKL2+M3p6+xygL64bI+3eyzzw==",
+      "dev": true,
+      "requires": {
+        "ansi-html": "0.0.7",
+        "array-includes": "^3.0.3",
+        "bonjour": "^3.5.0",
+        "chokidar": "^2.0.0",
+        "compression": "^1.5.2",
+        "connect-history-api-fallback": "^1.3.0",
+        "debug": "^3.1.0",
+        "del": "^3.0.0",
+        "express": "^4.16.2",
+        "html-entities": "^1.2.0",
+        "http-proxy-middleware": "~0.18.0",
+        "import-local": "^1.0.0",
+        "internal-ip": "1.2.0",
+        "ip": "^1.1.5",
+        "killable": "^1.0.0",
+        "loglevel": "^1.4.1",
+        "opn": "^5.1.0",
+        "portfinder": "^1.0.9",
+        "selfsigned": "^1.9.1",
+        "serve-index": "^1.7.2",
+        "sockjs": "0.3.19",
+        "sockjs-client": "1.1.4",
+        "spdy": "^3.4.1",
+        "strip-ansi": "^3.0.0",
+        "supports-color": "^5.1.0",
+        "webpack-dev-middleware": "3.1.3",
+        "webpack-log": "^1.1.2",
+        "yargs": "11.0.0"
+      },
+      "dependencies": {
+        "ansi-regex": {
+          "version": "3.0.0",
+          "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
+          "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
+          "dev": true
+        },
+        "camelcase": {
+          "version": "4.1.0",
+          "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz",
+          "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=",
+          "dev": true
+        },
+        "cliui": {
+          "version": "4.1.0",
+          "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz",
+          "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==",
+          "dev": true,
+          "requires": {
+            "string-width": "^2.1.1",
+            "strip-ansi": "^4.0.0",
+            "wrap-ansi": "^2.0.0"
+          },
+          "dependencies": {
+            "strip-ansi": {
+              "version": "4.0.0",
+              "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
+              "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
+              "dev": true,
+              "requires": {
+                "ansi-regex": "^3.0.0"
+              }
+            }
+          }
+        },
+        "debug": {
+          "version": "3.1.0",
+          "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
+          "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
+          "dev": true,
+          "requires": {
+            "ms": "2.0.0"
+          }
+        },
+        "is-fullwidth-code-point": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
+          "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
+          "dev": true
+        },
+        "os-locale": {
+          "version": "2.1.0",
+          "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz",
+          "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==",
+          "dev": true,
+          "requires": {
+            "execa": "^0.7.0",
+            "lcid": "^1.0.0",
+            "mem": "^1.1.0"
+          }
+        },
+        "string-width": {
+          "version": "2.1.1",
+          "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
+          "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
+          "dev": true,
+          "requires": {
+            "is-fullwidth-code-point": "^2.0.0",
+            "strip-ansi": "^4.0.0"
+          },
+          "dependencies": {
+            "strip-ansi": {
+              "version": "4.0.0",
+              "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
+              "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
+              "dev": true,
+              "requires": {
+                "ansi-regex": "^3.0.0"
+              }
+            }
+          }
+        },
+        "which-module": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz",
+          "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=",
+          "dev": true
+        },
+        "y18n": {
+          "version": "3.2.1",
+          "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz",
+          "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=",
+          "dev": true
+        },
+        "yargs": {
+          "version": "11.0.0",
+          "resolved": "https://registry.npmjs.org/yargs/-/yargs-11.0.0.tgz",
+          "integrity": "sha512-Rjp+lMYQOWtgqojx1dEWorjCofi1YN7AoFvYV7b1gx/7dAAeuI4kN5SZiEvr0ZmsZTOpDRcCqrpI10L31tFkBw==",
+          "dev": true,
+          "requires": {
+            "cliui": "^4.0.0",
+            "decamelize": "^1.1.1",
+            "find-up": "^2.1.0",
+            "get-caller-file": "^1.0.1",
+            "os-locale": "^2.0.0",
+            "require-directory": "^2.1.1",
+            "require-main-filename": "^1.0.1",
+            "set-blocking": "^2.0.0",
+            "string-width": "^2.0.0",
+            "which-module": "^2.0.0",
+            "y18n": "^3.2.1",
+            "yargs-parser": "^9.0.2"
+          }
+        },
+        "yargs-parser": {
+          "version": "9.0.2",
+          "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-9.0.2.tgz",
+          "integrity": "sha1-nM9qQ0YP5O1Aqbto9I1DuKaMwHc=",
+          "dev": true,
+          "requires": {
+            "camelcase": "^4.1.0"
+          }
+        }
+      }
+    },
+    "webpack-log": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/webpack-log/-/webpack-log-1.2.0.tgz",
+      "integrity": "sha512-U9AnICnu50HXtiqiDxuli5gLB5PGBo7VvcHx36jRZHwK4vzOYLbImqT4lwWwoMHdQWwEKw736fCHEekokTEKHA==",
+      "dev": true,
+      "requires": {
+        "chalk": "^2.1.0",
+        "log-symbols": "^2.1.0",
+        "loglevelnext": "^1.0.1",
+        "uuid": "^3.1.0"
+      }
+    },
+    "webpack-merge": {
+      "version": "4.1.3",
+      "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-4.1.3.tgz",
+      "integrity": "sha512-zxwAIGK7nKdu5CIZL0BjTQoq3elV0t0MfB7rUC1zj668geid52abs6hN/ACwZdK6LeMS8dC9B6WmtF978zH5mg==",
+      "dev": true,
+      "requires": {
+        "lodash": "^4.17.5"
+      }
+    },
+    "webpack-sources": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.1.0.tgz",
+      "integrity": "sha512-aqYp18kPphgoO5c/+NaUvEeACtZjMESmDChuD3NBciVpah3XpMEU9VAAtIaB1BsfJWWTSdv8Vv1m3T0aRk2dUw==",
+      "dev": true,
+      "requires": {
+        "source-list-map": "^2.0.0",
+        "source-map": "~0.6.1"
+      },
+      "dependencies": {
+        "source-map": {
+          "version": "0.6.1",
+          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+          "dev": true
+        }
+      }
+    },
+    "webpack-subresource-integrity": {
+      "version": "1.1.0-rc.4",
+      "resolved": "https://registry.npmjs.org/webpack-subresource-integrity/-/webpack-subresource-integrity-1.1.0-rc.4.tgz",
+      "integrity": "sha1-xcTj1pD50vZKlVDgeodn+Xlqpdg=",
+      "dev": true,
+      "requires": {
+        "webpack-core": "^0.6.8"
+      }
+    },
+    "websocket-driver": {
+      "version": "0.7.0",
+      "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.0.tgz",
+      "integrity": "sha1-DK+dLXVdk67gSdS90NP+LMoqJOs=",
+      "dev": true,
+      "requires": {
+        "http-parser-js": ">=0.4.0",
+        "websocket-extensions": ">=0.1.1"
+      }
+    },
+    "websocket-extensions": {
+      "version": "0.1.3",
+      "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.3.tgz",
+      "integrity": "sha512-nqHUnMXmBzT0w570r2JpJxfiSD1IzoI+HGVdd3aZ0yNi3ngvQ4jv1dtHt5VGxfI2yj5yqImPhOK4vmIh2xMbGg==",
+      "dev": true
+    },
+    "when": {
+      "version": "3.6.4",
+      "resolved": "https://registry.npmjs.org/when/-/when-3.6.4.tgz",
+      "integrity": "sha1-RztRfsFZ4rhQBUl6E5g/CVQS404=",
+      "dev": true
+    },
+    "which": {
+      "version": "1.3.1",
+      "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
+      "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
+      "dev": true,
+      "requires": {
+        "isexe": "^2.0.0"
+      }
+    },
+    "which-module": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz",
+      "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=",
+      "dev": true,
+      "optional": true
+    },
+    "wide-align": {
+      "version": "1.1.3",
+      "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz",
+      "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==",
+      "dev": true,
+      "requires": {
+        "string-width": "^1.0.2 || 2"
+      }
+    },
+    "window-size": {
+      "version": "0.1.0",
+      "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz",
+      "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=",
+      "dev": true,
+      "optional": true
+    },
+    "wordwrap": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz",
+      "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=",
+      "dev": true
+    },
+    "worker-farm": {
+      "version": "1.6.0",
+      "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.6.0.tgz",
+      "integrity": "sha512-6w+3tHbM87WnSWnENBUvA2pxJPLhQUg5LKwUQHq3r+XPhIM+Gh2R5ycbwPCyuGbNg+lPgdcnQUhuC02kJCvffQ==",
+      "dev": true,
+      "requires": {
+        "errno": "~0.1.7"
+      }
+    },
+    "wrap-ansi": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz",
+      "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=",
+      "dev": true,
+      "requires": {
+        "string-width": "^1.0.1",
+        "strip-ansi": "^3.0.1"
+      }
+    },
+    "wrappy": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
+      "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
+      "dev": true
+    },
+    "ws": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmjs.org/ws/-/ws-1.1.2.tgz",
+      "integrity": "sha1-iiRPoFJAHgjJiGz0SoUYnh/UBn8=",
+      "dev": true,
+      "requires": {
+        "options": ">=0.0.5",
+        "ultron": "1.0.x"
+      }
+    },
+    "wtf-8": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/wtf-8/-/wtf-8-1.0.0.tgz",
+      "integrity": "sha1-OS2LotDxw00e4tYw8V0O+2jhBIo=",
+      "dev": true
+    },
+    "xml2js": {
+      "version": "0.4.19",
+      "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.19.tgz",
+      "integrity": "sha512-esZnJZJOiJR9wWKMyuvSE1y6Dq5LCuJanqhxslH2bxM6duahNZ+HMpCLhBQGZkbX6xRf8x1Y2eJlgt2q3qo49Q==",
+      "dev": true,
+      "requires": {
+        "sax": ">=0.6.0",
+        "xmlbuilder": "~9.0.1"
+      },
+      "dependencies": {
+        "sax": {
+          "version": "1.2.4",
+          "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz",
+          "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==",
+          "dev": true
+        }
+      }
+    },
+    "xmlbuilder": {
+      "version": "9.0.7",
+      "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-9.0.7.tgz",
+      "integrity": "sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0=",
+      "dev": true
+    },
+    "xmlhttprequest-ssl": {
+      "version": "1.5.3",
+      "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.3.tgz",
+      "integrity": "sha1-GFqIjATspGw+QHDZn3tJ3jUomS0=",
+      "dev": true
+    },
+    "xtend": {
+      "version": "4.0.1",
+      "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz",
+      "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=",
+      "dev": true
+    },
+    "xxhashjs": {
+      "version": "0.2.2",
+      "resolved": "https://registry.npmjs.org/xxhashjs/-/xxhashjs-0.2.2.tgz",
+      "integrity": "sha512-AkTuIuVTET12tpsVIQo+ZU6f/qDmKuRUcjaqR+OIvm+aCBsZ95i7UVY5WJ9TMsSaZ0DA2WxoZ4acu0sPH+OKAw==",
+      "dev": true,
+      "requires": {
+        "cuint": "^0.2.2"
+      }
+    },
+    "y18n": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz",
+      "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==",
+      "dev": true
+    },
+    "yallist": {
+      "version": "2.1.2",
+      "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz",
+      "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=",
+      "dev": true
+    },
+    "yargs": {
+      "version": "3.10.0",
+      "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz",
+      "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=",
+      "dev": true,
+      "optional": true,
+      "requires": {
+        "camelcase": "^1.0.2",
+        "cliui": "^2.1.0",
+        "decamelize": "^1.0.0",
+        "window-size": "0.1.0"
+      }
+    },
+    "yargs-parser": {
+      "version": "5.0.0",
+      "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-5.0.0.tgz",
+      "integrity": "sha1-J17PDX/+Bcd+ZOfIbkzZS/DhIoo=",
+      "dev": true,
+      "optional": true,
+      "requires": {
+        "camelcase": "^3.0.0"
+      },
+      "dependencies": {
+        "camelcase": {
+          "version": "3.0.0",
+          "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz",
+          "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=",
+          "dev": true,
+          "optional": true
+        }
+      }
+    },
+    "yeast": {
+      "version": "0.1.2",
+      "resolved": "https://registry.npmjs.org/yeast/-/yeast-0.1.2.tgz",
+      "integrity": "sha1-AI4G2AlDIMNy28L47XagymyKxBk=",
+      "dev": true
+    },
+    "yn": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/yn/-/yn-2.0.0.tgz",
+      "integrity": "sha1-5a2ryKz0CPY4X8dklWhMiOavaJo=",
+      "dev": true
+    },
+    "zone.js": {
+      "version": "0.8.26",
+      "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.8.26.tgz",
+      "integrity": "sha512-W9Nj+UmBJG251wkCacIkETgra4QgBo/vgoEkb4a2uoLzpQG7qF9nzwoLXWU5xj3Fg2mxGvEDh47mg24vXccYjA=="
+    }
+  }
+}
diff --git a/samples/client/petstore/typescript-angular-v6-provided-in-root/package.json b/samples/client/petstore/typescript-angular-v6-provided-in-root/package.json
new file mode 100644
index 000000000000..7169c84e6d88
--- /dev/null
+++ b/samples/client/petstore/typescript-angular-v6-provided-in-root/package.json
@@ -0,0 +1,48 @@
+{
+  "name": "cli",
+  "version": "0.0.0",
+  "scripts": {
+    "ng": "ng",
+    "start": "ng serve",
+    "build": "ng build",
+    "test": "ng test",
+    "lint": "ng lint",
+    "e2e": "ng e2e"
+  },
+  "private": true,
+  "dependencies": {
+    "@angular/animations": "^6.0.3",
+    "@angular/common": "^6.0.3",
+    "@angular/compiler": "^6.0.3",
+    "@angular/core": "^6.0.3",
+    "@angular/forms": "^6.0.3",
+    "@angular/http": "^6.0.3",
+    "@angular/platform-browser": "^6.0.3",
+    "@angular/platform-browser-dynamic": "^6.0.3",
+    "@angular/router": "^6.0.3",
+    "core-js": "^2.5.4",
+    "rxjs": "^6.0.0",
+    "zone.js": "^0.8.26"
+  },
+  "devDependencies": {
+    "@angular/compiler-cli": "^6.0.3",
+    "@angular-devkit/build-angular": "~0.6.8",
+    "typescript": "~2.7.2",
+    "@angular/cli": "~6.0.8",
+    "@angular/language-service": "^6.0.3",
+    "@types/jasmine": "~2.8.6",
+    "@types/jasminewd2": "~2.0.3",
+    "@types/node": "~8.9.4",
+    "codelyzer": "~4.2.1",
+    "jasmine-core": "~2.99.1",
+    "jasmine-spec-reporter": "~4.2.1",
+    "karma": "~1.7.1",
+    "karma-chrome-launcher": "~2.2.0",
+    "karma-coverage-istanbul-reporter": "~2.0.0",
+    "karma-jasmine": "~1.1.1",
+    "karma-jasmine-html-reporter": "^0.2.2",
+    "protractor": "~5.3.0",
+    "ts-node": "~5.0.1",
+    "tslint": "~5.9.1"
+  }
+}
diff --git a/samples/client/petstore/typescript-angular-v6-provided-in-root/pom.xml b/samples/client/petstore/typescript-angular-v6-provided-in-root/pom.xml
new file mode 100644
index 000000000000..3848ddf87c01
--- /dev/null
+++ b/samples/client/petstore/typescript-angular-v6-provided-in-root/pom.xml
@@ -0,0 +1,64 @@
+
+    4.0.0
+    com.wordnik
+    TypeScriptAngular6PestoreClientTests
+    pom
+    1.0-SNAPSHOT
+    TS Angular 6 Petstore Client Tests
+    
+        
+            
+                maven-dependency-plugin
+                
+                    
+                        package
+                        
+                            copy-dependencies
+                        
+                        
+                            ${project.build.directory}
+                        
+                    
+                
+            
+            
+                org.codehaus.mojo
+                exec-maven-plugin
+                1.2.1
+                
+                    
+                        npm-install
+                        pre-integration-test
+                        
+                            exec
+                        
+                        
+                            npm
+                            
+                                install
+                            
+                        
+                    
+                    
+                        npm-test
+                        integration-test
+                        
+                            exec
+                        
+                        
+                            npm
+                            
+                                test
+                                --
+                                --progress=false
+                                --no-watch
+                                --browsers
+                                ChromeHeadless
+                            
+                        
+                    
+                
+            
+        
+    
+
diff --git a/samples/client/petstore/typescript-angular-v6-provided-in-root/tests/default/e2e/protractor.conf.js b/samples/client/petstore/typescript-angular-v6-provided-in-root/tests/default/e2e/protractor.conf.js
new file mode 100644
index 000000000000..86776a391a5b
--- /dev/null
+++ b/samples/client/petstore/typescript-angular-v6-provided-in-root/tests/default/e2e/protractor.conf.js
@@ -0,0 +1,28 @@
+// Protractor configuration file, see link for more information
+// https://github.com/angular/protractor/blob/master/lib/config.ts
+
+const { SpecReporter } = require('jasmine-spec-reporter');
+
+exports.config = {
+  allScriptsTimeout: 11000,
+  specs: [
+    './src/**/*.e2e-spec.ts'
+  ],
+  capabilities: {
+    'browserName': 'chrome'
+  },
+  directConnect: true,
+  baseUrl: 'http://localhost:4200/',
+  framework: 'jasmine',
+  jasmineNodeOpts: {
+    showColors: true,
+    defaultTimeoutInterval: 30000,
+    print: function() {}
+  },
+  onPrepare() {
+    require('ts-node').register({
+      project: require('path').join(__dirname, './tsconfig.e2e.json')
+    });
+    jasmine.getEnv().addReporter(new SpecReporter({ spec: { displayStacktrace: true } }));
+  }
+};
\ No newline at end of file
diff --git a/samples/client/petstore/typescript-angular-v6-provided-in-root/tests/default/e2e/src/app.e2e-spec.ts b/samples/client/petstore/typescript-angular-v6-provided-in-root/tests/default/e2e/src/app.e2e-spec.ts
new file mode 100644
index 000000000000..d2a931c238e9
--- /dev/null
+++ b/samples/client/petstore/typescript-angular-v6-provided-in-root/tests/default/e2e/src/app.e2e-spec.ts
@@ -0,0 +1,14 @@
+import { AppPage } from './app.po';
+
+describe('workspace-project App', () => {
+  let page: AppPage;
+
+  beforeEach(() => {
+    page = new AppPage();
+  });
+
+  it('should display welcome message', () => {
+    page.navigateTo();
+    expect(page.getParagraphText()).toEqual('Welcome to Typescript Angular v6 (provided in root)!');
+  });
+});
diff --git a/samples/client/petstore/typescript-angular-v6-provided-in-root/tests/default/e2e/src/app.po.ts b/samples/client/petstore/typescript-angular-v6-provided-in-root/tests/default/e2e/src/app.po.ts
new file mode 100644
index 000000000000..82ea75ba504a
--- /dev/null
+++ b/samples/client/petstore/typescript-angular-v6-provided-in-root/tests/default/e2e/src/app.po.ts
@@ -0,0 +1,11 @@
+import { browser, by, element } from 'protractor';
+
+export class AppPage {
+  navigateTo() {
+    return browser.get('/');
+  }
+
+  getParagraphText() {
+    return element(by.css('app-root h1')).getText();
+  }
+}
diff --git a/samples/client/petstore/typescript-angular-v6-provided-in-root/tests/default/e2e/tsconfig.e2e.json b/samples/client/petstore/typescript-angular-v6-provided-in-root/tests/default/e2e/tsconfig.e2e.json
new file mode 100644
index 000000000000..fe036e83a45f
--- /dev/null
+++ b/samples/client/petstore/typescript-angular-v6-provided-in-root/tests/default/e2e/tsconfig.e2e.json
@@ -0,0 +1,13 @@
+{
+  "extends": "../../../tsconfig.json",
+  "compilerOptions": {
+    "outDir": "../out-tsc/app",
+    "module": "commonjs",
+    "target": "es5",
+    "types": [
+      "jasmine",
+      "jasminewd2",
+      "node"
+    ]
+  }
+}
diff --git a/samples/client/petstore/typescript-angular-v6-provided-in-root/tests/default/src/app/app.component.css b/samples/client/petstore/typescript-angular-v6-provided-in-root/tests/default/src/app/app.component.css
new file mode 100644
index 000000000000..e69de29bb2d1
diff --git a/samples/client/petstore/typescript-angular-v6-provided-in-root/tests/default/src/app/app.component.html b/samples/client/petstore/typescript-angular-v6-provided-in-root/tests/default/src/app/app.component.html
new file mode 100644
index 000000000000..b843d662b671
--- /dev/null
+++ b/samples/client/petstore/typescript-angular-v6-provided-in-root/tests/default/src/app/app.component.html
@@ -0,0 +1,44 @@
+
+

+ Welcome to {{ title }}! +

+
+
+

Pet API

+ + + + + + + +
+
+

Pet

+
+

Name: {{ pet.name }}

+

ID: {{ pet.id }}

+
+ +
+
+

Store API

+ +
+
+

Store

+
    +
  • {{item.key}}: {{item.number}}
  • +
+ +
diff --git a/samples/client/petstore/typescript-angular-v6-provided-in-root/tests/default/src/app/app.component.spec.ts b/samples/client/petstore/typescript-angular-v6-provided-in-root/tests/default/src/app/app.component.spec.ts new file mode 100644 index 000000000000..e82f9f0c32d3 --- /dev/null +++ b/samples/client/petstore/typescript-angular-v6-provided-in-root/tests/default/src/app/app.component.spec.ts @@ -0,0 +1,98 @@ +import { TestBed, async } from '@angular/core/testing'; +import { HttpClientModule } from '@angular/common/http'; +import { + ApiModule, + Configuration, + ConfigurationParameters, + PetService, + StoreService, + UserService, +} from '@swagger/typescript-angular-petstore'; +import { AppComponent } from './app.component'; + +describe('AppComponent', () => { + + const apiConfigurationParams: ConfigurationParameters = { + // add configuration params here + apiKeys: { api_key: "foobar" }, + }; + + const apiConfig = new Configuration(apiConfigurationParams); + + const getApiConfig: () => Configuration = () => { + return apiConfig; + }; + + + beforeEach(async(() => { + TestBed.configureTestingModule({ + imports: [ + HttpClientModule, + ApiModule.forRoot(getApiConfig), + ], + providers: [ + PetService, + StoreService, + UserService, + ], + declarations: [ + AppComponent, + ], + }).compileComponents(); + })); + + it('should create the app', async(() => { + const fixture = TestBed.createComponent(AppComponent); + const app = fixture.debugElement.componentInstance; + expect(app).toBeTruthy(); + })); + + it(`should have as title 'Typescript Angular v6 (provided in root)'`, async(() => { + const fixture = TestBed.createComponent(AppComponent); + const app = fixture.debugElement.componentInstance; + expect(app.title).toEqual('Typescript Angular v6 (provided in root)'); + })); + + it('should render title in a h1 tag', async(() => { + const fixture = TestBed.createComponent(AppComponent); + fixture.detectChanges(); + const compiled = fixture.debugElement.nativeElement; + expect(compiled.querySelector('h1').textContent).toContain('Welcome to Typescript Angular v6 (provided in root)!'); + })); + + describe(`constructor()`, () => { + it(`should have a petService provided`, () => { + const petService = TestBed.get(PetService); + expect(petService).toBeTruthy(); + }); + + it(`should have a storeService provided`, () => { + const storeService = TestBed.get(StoreService); + expect(storeService).toBeTruthy(); + }); + + it(`should have a userService provided`, () => { + const userService = TestBed.get(UserService); + expect(userService).toBeTruthy(); + }); + }); + + describe('addPet()', () => { + it(`should add a new pet`, () => { + const fixture = TestBed.createComponent(AppComponent); + const instance = fixture.componentInstance; + const petService = TestBed.get(PetService); + + spyOn(petService, 'addPet').and.callThrough(); + + fixture.detectChanges(); + instance.addPet(); + + expect(petService.addPet).toHaveBeenCalledWith({ + name: `pet`, + photoUrls: [] + }); + }); + }); + +}); diff --git a/samples/client/petstore/typescript-angular-v6-provided-in-root/tests/default/src/app/app.component.ts b/samples/client/petstore/typescript-angular-v6-provided-in-root/tests/default/src/app/app.component.ts new file mode 100644 index 000000000000..01b6bcb3860e --- /dev/null +++ b/samples/client/petstore/typescript-angular-v6-provided-in-root/tests/default/src/app/app.component.ts @@ -0,0 +1,71 @@ +import { Component } from '@angular/core'; +import { + PetService, + StoreService, + UserService, + Pet +} from '@swagger/typescript-angular-petstore'; + +@Component({ + selector: 'app-root', + templateUrl: './app.component.html', + styleUrls: ['./app.component.css'] +}) +export class AppComponent { + title = 'Typescript Angular v6 (provided in root)'; + pet: Pet; + store: { key: string, number: number }[]; + + constructor(private petService: PetService, + private storeService: StoreService, + private userService: UserService, + ) { + this.pet = { + name: `pet`, + photoUrls: [] + }; + } + + public addPet() { + this.petService.addPet(this.pet) + .subscribe((result) => { + this.pet = result; + } + ); + } + + public getPetByID() { + this.petService.getPetById(this.pet.id) + .subscribe((result) => { + this.pet = result; + } + ); + } + + public updatePet() { + this.petService.updatePet(this.pet) + .subscribe((result) => { + this.pet = result; + } + ); + } + + public deletePet() { + this.petService.deletePet(this.pet.id) + .subscribe((result) => { + this.pet = result; + } + ); + } + + public getStoreInventory() { + this.storeService.getInventory() + .subscribe((result) => { + this.store = []; + for(let item in result) { + const number = result[item]; + this.store.push({ key: item, number: number}); + } + }) + } +} diff --git a/samples/client/petstore/typescript-angular-v6-provided-in-root/tests/default/src/app/app.module.ts b/samples/client/petstore/typescript-angular-v6-provided-in-root/tests/default/src/app/app.module.ts new file mode 100644 index 000000000000..33239063d6ce --- /dev/null +++ b/samples/client/petstore/typescript-angular-v6-provided-in-root/tests/default/src/app/app.module.ts @@ -0,0 +1,36 @@ +import { BrowserModule } from '@angular/platform-browser'; +import { NgModule } from '@angular/core'; +import { HttpClientModule } from '@angular/common/http'; +import { + ApiModule, + Configuration, + ConfigurationParameters +} from '@swagger/typescript-angular-petstore' + +import { AppComponent } from './app.component'; + +export const apiConfigurationParams: ConfigurationParameters = { + apiKeys: { api_key: "foobar" } +}; + +export const apiConfig = new Configuration(apiConfigurationParams); + +export function getApiConfig() { + return apiConfig; +} + +@NgModule({ + declarations: [ + AppComponent, + ], + imports: [ + BrowserModule, + HttpClientModule, + ApiModule.forRoot(getApiConfig), + ], + providers: [ + ], + bootstrap: [AppComponent] +}) +export class AppModule { } + diff --git a/samples/client/petstore/typescript-angular-v6-provided-in-root/tests/default/src/browserslist b/samples/client/petstore/typescript-angular-v6-provided-in-root/tests/default/src/browserslist new file mode 100644 index 000000000000..8e09ab492e26 --- /dev/null +++ b/samples/client/petstore/typescript-angular-v6-provided-in-root/tests/default/src/browserslist @@ -0,0 +1,9 @@ +# This file is currently used by autoprefixer to adjust CSS to support the below specified browsers +# For additional information regarding the format and rule options, please see: +# https://github.com/browserslist/browserslist#queries +# For IE 9-11 support, please uncomment the last line of the file and adjust as needed +> 0.5% +last 2 versions +Firefox ESR +not dead +# IE 9-11 \ No newline at end of file diff --git a/samples/client/petstore/typescript-angular-v6-provided-in-root/tests/default/src/environments/environment.prod.ts b/samples/client/petstore/typescript-angular-v6-provided-in-root/tests/default/src/environments/environment.prod.ts new file mode 100644 index 000000000000..3612073bc31c --- /dev/null +++ b/samples/client/petstore/typescript-angular-v6-provided-in-root/tests/default/src/environments/environment.prod.ts @@ -0,0 +1,3 @@ +export const environment = { + production: true +}; diff --git a/samples/client/petstore/typescript-angular-v6-provided-in-root/tests/default/src/environments/environment.ts b/samples/client/petstore/typescript-angular-v6-provided-in-root/tests/default/src/environments/environment.ts new file mode 100644 index 000000000000..012182efa3b9 --- /dev/null +++ b/samples/client/petstore/typescript-angular-v6-provided-in-root/tests/default/src/environments/environment.ts @@ -0,0 +1,15 @@ +// This file can be replaced during build by using the `fileReplacements` array. +// `ng build ---prod` replaces `environment.ts` with `environment.prod.ts`. +// The list of file replacements can be found in `angular.json`. + +export const environment = { + production: false +}; + +/* + * In development mode, to ignore zone related error stack frames such as + * `zone.run`, `zoneDelegate.invokeTask` for easier debugging, you can + * import the following file, but please comment it out in production mode + * because it will have performance impact when throw error + */ +// import 'zone.js/dist/zone-error'; // Included with Angular CLI. diff --git a/samples/client/petstore/typescript-angular-v6-provided-in-root/tests/default/src/favicon.ico b/samples/client/petstore/typescript-angular-v6-provided-in-root/tests/default/src/favicon.ico new file mode 100644 index 000000000000..8081c7ceaf2b Binary files /dev/null and b/samples/client/petstore/typescript-angular-v6-provided-in-root/tests/default/src/favicon.ico differ diff --git a/samples/client/petstore/typescript-angular-v6-provided-in-root/tests/default/src/index.html b/samples/client/petstore/typescript-angular-v6-provided-in-root/tests/default/src/index.html new file mode 100644 index 000000000000..0d92535c76f2 --- /dev/null +++ b/samples/client/petstore/typescript-angular-v6-provided-in-root/tests/default/src/index.html @@ -0,0 +1,14 @@ + + + + + Cli + + + + + + + + + diff --git a/samples/client/petstore/typescript-angular-v6-provided-in-root/tests/default/src/karma.conf.js b/samples/client/petstore/typescript-angular-v6-provided-in-root/tests/default/src/karma.conf.js new file mode 100644 index 000000000000..b870f8aa6439 --- /dev/null +++ b/samples/client/petstore/typescript-angular-v6-provided-in-root/tests/default/src/karma.conf.js @@ -0,0 +1,32 @@ +// Karma configuration file, see link for more information +// https://karma-runner.github.io/1.0/config/configuration-file.html + +module.exports = function (config) { + config.set({ + basePath: '', + frameworks: ['jasmine', '@angular-devkit/build-angular'], + plugins: [ + require('karma-jasmine'), + require('karma-chrome-launcher'), + // require('karma-phantomjs-launcher'), + require('karma-jasmine-html-reporter'), + require('karma-coverage-istanbul-reporter'), + require('@angular-devkit/build-angular/plugins/karma') + ], + client: { + clearContext: false // leave Jasmine Spec Runner output visible in browser + }, + coverageIstanbulReporter: { + dir: require('path').join(__dirname, '../coverage'), + reports: ['html', 'lcovonly'], + fixWebpackSourcePaths: true + }, + reporters: ['progress', 'kjhtml'], + port: 9876, + colors: true, + logLevel: config.LOG_INFO, + autoWatch: true, + browsers: ['Chrome'], + singleRun: false + }); +}; diff --git a/samples/client/petstore/typescript-angular-v6-provided-in-root/tests/default/src/main.ts b/samples/client/petstore/typescript-angular-v6-provided-in-root/tests/default/src/main.ts new file mode 100644 index 000000000000..91ec6da5f078 --- /dev/null +++ b/samples/client/petstore/typescript-angular-v6-provided-in-root/tests/default/src/main.ts @@ -0,0 +1,12 @@ +import { enableProdMode } from '@angular/core'; +import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; + +import { AppModule } from './app/app.module'; +import { environment } from './environments/environment'; + +if (environment.production) { + enableProdMode(); +} + +platformBrowserDynamic().bootstrapModule(AppModule) + .catch(err => console.log(err)); diff --git a/samples/client/petstore/typescript-angular-v6-provided-in-root/tests/default/src/polyfills.ts b/samples/client/petstore/typescript-angular-v6-provided-in-root/tests/default/src/polyfills.ts new file mode 100644 index 000000000000..d310405a6817 --- /dev/null +++ b/samples/client/petstore/typescript-angular-v6-provided-in-root/tests/default/src/polyfills.ts @@ -0,0 +1,80 @@ +/** + * This file includes polyfills needed by Angular and is loaded before the app. + * You can add your own extra polyfills to this file. + * + * This file is divided into 2 sections: + * 1. Browser polyfills. These are applied before loading ZoneJS and are sorted by browsers. + * 2. Application imports. Files imported after ZoneJS that should be loaded before your main + * file. + * + * The current setup is for so-called "evergreen" browsers; the last versions of browsers that + * automatically update themselves. This includes Safari >= 10, Chrome >= 55 (including Opera), + * Edge >= 13 on the desktop, and iOS 10 and Chrome on mobile. + * + * Learn more in https://angular.io/docs/ts/latest/guide/browser-support.html + */ + +/*************************************************************************************************** + * BROWSER POLYFILLS + */ + +/** IE9, IE10 and IE11 requires all of the following polyfills. **/ +// import 'core-js/es6/symbol'; +// import 'core-js/es6/object'; +// import 'core-js/es6/function'; +// import 'core-js/es6/parse-int'; +// import 'core-js/es6/parse-float'; +// import 'core-js/es6/number'; +// import 'core-js/es6/math'; +// import 'core-js/es6/string'; +// import 'core-js/es6/date'; +// import 'core-js/es6/array'; +// import 'core-js/es6/regexp'; +// import 'core-js/es6/map'; +// import 'core-js/es6/weak-map'; +// import 'core-js/es6/set'; + +/** IE10 and IE11 requires the following for NgClass support on SVG elements */ +// import 'classlist.js'; // Run `npm install --save classlist.js`. + +/** IE10 and IE11 requires the following for the Reflect API. */ +// import 'core-js/es6/reflect'; + + +/** Evergreen browsers require these. **/ +// Used for reflect-metadata in JIT. If you use AOT (and only Angular decorators), you can remove. +import 'core-js/es7/reflect'; + + +/** + * Web Animations `@angular/platform-browser/animations` + * Only required if AnimationBuilder is used within the application and using IE/Edge or Safari. + * Standard animation support in Angular DOES NOT require any polyfills (as of Angular 6.0). + **/ +// import 'web-animations-js'; // Run `npm install --save web-animations-js`. + +/** + * By default, zone.js will patch all possible macroTask and DomEvents + * user can disable parts of macroTask/DomEvents patch by setting following flags + */ + + // (window as any).__Zone_disable_requestAnimationFrame = true; // disable patch requestAnimationFrame + // (window as any).__Zone_disable_on_property = true; // disable patch onProperty such as onclick + // (window as any).__zone_symbol__BLACK_LISTED_EVENTS = ['scroll', 'mousemove']; // disable patch specified eventNames + + /* + * in IE/Edge developer tools, the addEventListener will also be wrapped by zone.js + * with the following flag, it will bypass `zone.js` patch for IE/Edge + */ +// (window as any).__Zone_enable_cross_context_check = true; + +/*************************************************************************************************** + * Zone JS is required by default for Angular itself. + */ +import 'zone.js/dist/zone'; // Included with Angular CLI. + + + +/*************************************************************************************************** + * APPLICATION IMPORTS + */ diff --git a/samples/client/petstore/typescript-angular-v6-provided-in-root/tests/default/src/styles.css b/samples/client/petstore/typescript-angular-v6-provided-in-root/tests/default/src/styles.css new file mode 100644 index 000000000000..90d4ee0072ce --- /dev/null +++ b/samples/client/petstore/typescript-angular-v6-provided-in-root/tests/default/src/styles.css @@ -0,0 +1 @@ +/* You can add global styles to this file, and also import other style files */ diff --git a/samples/client/petstore/typescript-angular-v6-provided-in-root/tests/default/src/test.ts b/samples/client/petstore/typescript-angular-v6-provided-in-root/tests/default/src/test.ts new file mode 100644 index 000000000000..16317897b1c5 --- /dev/null +++ b/samples/client/petstore/typescript-angular-v6-provided-in-root/tests/default/src/test.ts @@ -0,0 +1,20 @@ +// This file is required by karma.conf.js and loads recursively all the .spec and framework files + +import 'zone.js/dist/zone-testing'; +import { getTestBed } from '@angular/core/testing'; +import { + BrowserDynamicTestingModule, + platformBrowserDynamicTesting +} from '@angular/platform-browser-dynamic/testing'; + +declare const require: any; + +// First, initialize the Angular testing environment. +getTestBed().initTestEnvironment( + BrowserDynamicTestingModule, + platformBrowserDynamicTesting() +); +// Then we find all the tests. +const context = require.context('./', true, /\.spec\.ts$/); +// And load the modules. +context.keys().map(context); diff --git a/samples/client/petstore/typescript-angular-v6-provided-in-root/tests/default/src/test/api.spec.ts b/samples/client/petstore/typescript-angular-v6-provided-in-root/tests/default/src/test/api.spec.ts new file mode 100644 index 000000000000..5607deb8a058 --- /dev/null +++ b/samples/client/petstore/typescript-angular-v6-provided-in-root/tests/default/src/test/api.spec.ts @@ -0,0 +1,157 @@ +import { TestBed, async } from '@angular/core/testing'; +import { HttpClientModule } from '@angular/common/http'; +import { + ApiModule, + Configuration, + ConfigurationParameters, + PetService, + StoreService, + UserService, + Pet, + User, +} from '@swagger/typescript-angular-petstore'; + + +describe(`API (functionality)`, () => { + + const getUser: () => User = () => { + const time = Date.now(); + return { + username: `user-${time}`, + } + }; + + const getPet: () => Pet = () => { + const time = Date.now(); + return { + name: `pet-${time}`, + photoUrls: [], + } + }; + + const newPet: Pet = getPet(); + let createdPet: Pet; + + const newUser: User = getUser(); + + const apiConfigurationParams: ConfigurationParameters = { + // add configuration params here + apiKeys: { api_key: "foobar" } + }; + + const apiConfig = new Configuration(apiConfigurationParams); + + const getApiConfig = () => { + return apiConfig; + }; + + let originalTimeout; + + beforeEach(() => { + TestBed.configureTestingModule({ + imports: [ + HttpClientModule, + ApiModule.forRoot(getApiConfig) + ], + providers: [ + PetService, + StoreService, + UserService, + ] + }); + + originalTimeout = jasmine.DEFAULT_TIMEOUT_INTERVAL; + jasmine.DEFAULT_TIMEOUT_INTERVAL = 10000; + }); + + afterEach(() => { + jasmine.DEFAULT_TIMEOUT_INTERVAL = originalTimeout; + }); + + describe(`PetService`, () => { + it(`should be provided`, () => { + const petService = TestBed.get(PetService); + expect(petService).toBeTruthy(); + }); + + it(`should add a pet`, async(() => { + const petService = TestBed.get(PetService); + + return petService.addPet(newPet).subscribe( + (result) => { + createdPet = result; + return expect(result.id).toBeGreaterThan(0); + }, + error => fail(`expected a result, not the error: ${error.message}`), + ); + })); + + it(`should have created a pet`, () => { + expect(createdPet.name).toEqual(newPet.name); + }); + + it(`should get the pet data by id`, async(() => { + const petService = TestBed.get(PetService); + return petService.getPetById(createdPet.id).subscribe( + result => expect(result.name).toEqual(newPet.name), + error => fail(`expected a result, not the error: ${error.message}`), + ); + })); + + it(`should update the pet name by pet object`, async(() => { + const petService = TestBed.get(PetService); + const newName = `pet-${Date.now()}`; + createdPet.name = newName; + + return petService.updatePet(createdPet).subscribe( + result => expect(result.name).toEqual(newName), + error => fail(`expected a result, not the error: ${error.message}`), + ); + })); + + it(`should delete the pet`, async(() => { + const petService = TestBed.get(PetService); + + return petService.deletePet(createdPet.id).subscribe( + result => expect(result).toBeFalsy(), + error => fail(`expected a result, not the error: ${error.message}`), + ); + })); + + }); + + describe(`StoreService`, () => { + it(`should be provided`, () => { + const storeService = TestBed.get(StoreService); + expect(storeService).toBeTruthy(); + }); + + it(`should get the inventory`, async(() => { + const storeService = TestBed.get(StoreService); + + return storeService.getInventory().subscribe( + result => expect(result).toBeTruthy(), + error => fail(`expected a result, not the error: ${error.message}`), + ); + + })); + + }); + + describe(`UserService`, () => { + it(`should be provided`, () => { + const userService = TestBed.get(UserService); + expect(userService).toBeTruthy(); + }); + + it(`should create the user`, async(() => { + const userService = TestBed.get(UserService); + + return userService.createUser(newUser).subscribe( + result => expect(result).toBeFalsy(), + error => fail(`expected a result, not the error: ${error.message}`), + ); + })); + + }); +}); diff --git a/samples/client/petstore/typescript-angular-v6-provided-in-root/tests/default/src/test/basePath.spec.ts b/samples/client/petstore/typescript-angular-v6-provided-in-root/tests/default/src/test/basePath.spec.ts new file mode 100644 index 000000000000..18f5bc9f3f6e --- /dev/null +++ b/samples/client/petstore/typescript-angular-v6-provided-in-root/tests/default/src/test/basePath.spec.ts @@ -0,0 +1,63 @@ +import { TestBed, async } from '@angular/core/testing'; +import { HttpClient } from '@angular/common/http'; +import { HttpClientTestingModule, HttpTestingController} from '@angular/common/http/testing'; +import { + ApiModule, + PetService, + Pet, +} from '@swagger/typescript-angular-petstore'; +import {BASE_PATH} from "../../../../builds/default/variables"; + +describe(`API (basePath)`, () => { + let httpClient: HttpClient; + let httpTestingController: HttpTestingController; + + const pet: Pet = { + name: `pet`, + photoUrls: [] + }; + + beforeEach(() => { + TestBed.configureTestingModule({ + imports: [ + HttpClientTestingModule , + ApiModule, + ], + providers: [ + PetService, + { provide: BASE_PATH, useValue: '//test'} + ] + }); + + // Inject the http service and test controller for each test + httpClient = TestBed.get(HttpClient); + httpTestingController = TestBed.get(HttpTestingController); + }); + + afterEach(() => { + // After every test, assert that there are no more pending requests. + httpTestingController.verify(); + }); + + describe(`PetService`, () => { + it(`should be provided`, () => { + const petService = TestBed.get(PetService); + expect(petService).toBeTruthy(); + }); + + it(`should call to the injected basePath //test/pet`, async(() => { + const petService = TestBed.get(PetService); + + petService.addPet(pet).subscribe( + result => expect(result).toEqual(pet), + error => fail(`expected a result, not the error: ${error.message}`), + ); + + const req = httpTestingController.expectOne('//test/pet'); + expect(req.request.method).toEqual('POST'); + req.flush(pet); + })); + + }); + +}); diff --git a/samples/client/petstore/typescript-angular-v6-provided-in-root/tests/default/src/test/configuration.spec.ts b/samples/client/petstore/typescript-angular-v6-provided-in-root/tests/default/src/test/configuration.spec.ts new file mode 100644 index 000000000000..0b8ec658ac1d --- /dev/null +++ b/samples/client/petstore/typescript-angular-v6-provided-in-root/tests/default/src/test/configuration.spec.ts @@ -0,0 +1,93 @@ +import { TestBed, async } from '@angular/core/testing'; +import { HttpClient } from '@angular/common/http'; +import { HttpClientTestingModule, HttpTestingController} from '@angular/common/http/testing'; +import { + ApiModule, + Configuration, + ConfigurationParameters, + PetService, + Pet, +} from '@swagger/typescript-angular-petstore'; + +describe(`API (with ConfigurationFactory)`, () => { + let httpClient: HttpClient; + let httpTestingController: HttpTestingController; + + const pet: Pet = { + name: `pet`, + photoUrls: [] + }; + + let apiConfigurationParams: ConfigurationParameters = { + // add configuration params here + basePath: '//test-initial' + }; + + let apiConfig: Configuration = new Configuration(apiConfigurationParams); + + const getApiConfig = () => { + return apiConfig; + }; + + beforeEach(() => { + TestBed.configureTestingModule({ + imports: [ + HttpClientTestingModule , + ApiModule.forRoot(getApiConfig) + ], + providers: [ + PetService, + ] + }); + + // Inject the http service and test controller for each test + httpClient = TestBed.get(HttpClient); + httpTestingController = TestBed.get(HttpTestingController); + }); + + afterEach(() => { + // After every test, assert that there are no more pending requests. + httpTestingController.verify(); + }); + + describe(`PetService`, () => { + it(`should be provided`, () => { + const petService = TestBed.get(PetService); + expect(petService).toBeTruthy(); + }); + + it(`should call initially configured basePath //test-initial/pet`, async(() => { + const petService = TestBed.get(PetService); + + petService.addPet(pet).subscribe( + result => expect(result).toEqual(pet), + error => fail(`expected a result, not the error: ${error.message}`), + ); + + const req = httpTestingController.expectOne('//test-initial/pet'); + + expect(req.request.method).toEqual('POST'); + + req.flush(pet); + })); + + + it(`should call updated basePath //test-changed/pet`, async(() => { + apiConfig.basePath = '//test-changed'; + + const petService = TestBed.get(PetService); + + petService.addPet(pet).subscribe( + result => expect(result).toEqual(pet), + error => fail(`expected a result, not the error: ${error.message}`), + ); + + const req = httpTestingController.expectOne('//test-changed/pet'); + + expect(req.request.method).toEqual('POST'); + + req.flush(pet); + })); + }); + +}); diff --git a/samples/client/petstore/typescript-angular-v6-provided-in-root/tests/default/src/test/no-configuration.spec.ts b/samples/client/petstore/typescript-angular-v6-provided-in-root/tests/default/src/test/no-configuration.spec.ts new file mode 100644 index 000000000000..789e278296c7 --- /dev/null +++ b/samples/client/petstore/typescript-angular-v6-provided-in-root/tests/default/src/test/no-configuration.spec.ts @@ -0,0 +1,61 @@ +import { TestBed, async } from '@angular/core/testing'; +import { HttpClient } from '@angular/common/http'; +import { HttpClientTestingModule, HttpTestingController} from '@angular/common/http/testing'; +import { + ApiModule, + PetService, + Pet, +} from '@swagger/typescript-angular-petstore'; + +describe(`API (no configuration)`, () => { + let httpClient: HttpClient; + let httpTestingController: HttpTestingController; + + const pet: Pet = { + name: `pet`, + photoUrls: [] + }; + + beforeEach(() => { + TestBed.configureTestingModule({ + imports: [ + HttpClientTestingModule , + ApiModule, + ], + providers: [ + PetService, + ] + }); + + // Inject the http service and test controller for each test + httpClient = TestBed.get(HttpClient); + httpTestingController = TestBed.get(HttpTestingController); + }); + + afterEach(() => { + // After every test, assert that there are no more pending requests. + httpTestingController.verify(); + }); + + describe(`PetService`, () => { + it(`should be provided`, () => { + const petService = TestBed.get(PetService); + expect(petService).toBeTruthy(); + }); + + it(`should call to the default basePath http://petstore.swagger.io/v2/pet`, async(() => { + const petService = TestBed.get(PetService); + + petService.addPet(pet).subscribe( + result => expect(result).toEqual(pet), + error => fail(`expected a result, not the error: ${error.message}`), + ); + + const req = httpTestingController.expectOne('http://petstore.swagger.io/v2/pet'); + expect(req.request.method).toEqual('POST'); + req.flush(pet); + })); + + }); + +}); diff --git a/samples/client/petstore/typescript-angular-v6-provided-in-root/tests/default/src/tsconfig.app.json b/samples/client/petstore/typescript-angular-v6-provided-in-root/tests/default/src/tsconfig.app.json new file mode 100644 index 000000000000..9bc31060c422 --- /dev/null +++ b/samples/client/petstore/typescript-angular-v6-provided-in-root/tests/default/src/tsconfig.app.json @@ -0,0 +1,12 @@ +{ + "extends": "../../../tsconfig.json", + "compilerOptions": { + "outDir": "../out-tsc/app", + "module": "es2015", + "types": [] + }, + "exclude": [ + "src/test.ts", + "**/*.spec.ts" + ] +} diff --git a/samples/client/petstore/typescript-angular-v6-provided-in-root/tests/default/src/tsconfig.spec.json b/samples/client/petstore/typescript-angular-v6-provided-in-root/tests/default/src/tsconfig.spec.json new file mode 100644 index 000000000000..f98950dbe754 --- /dev/null +++ b/samples/client/petstore/typescript-angular-v6-provided-in-root/tests/default/src/tsconfig.spec.json @@ -0,0 +1,19 @@ +{ + "extends": "../../../tsconfig.json", + "compilerOptions": { + "outDir": "../out-tsc/spec", + "module": "commonjs", + "types": [ + "jasmine", + "node" + ] + }, + "files": [ + "test.ts", + "polyfills.ts" + ], + "include": [ + "**/*.spec.ts", + "**/*.d.ts" + ] +} diff --git a/samples/client/petstore/typescript-angular-v6-provided-in-root/tests/default/src/tslint.json b/samples/client/petstore/typescript-angular-v6-provided-in-root/tests/default/src/tslint.json new file mode 100644 index 000000000000..78a62a0db6d7 --- /dev/null +++ b/samples/client/petstore/typescript-angular-v6-provided-in-root/tests/default/src/tslint.json @@ -0,0 +1,17 @@ +{ + "extends": "../../../tslint.json", + "rules": { + "directive-selector": [ + true, + "attribute", + "app", + "camelCase" + ], + "component-selector": [ + true, + "element", + "app", + "kebab-case" + ] + } +} diff --git a/samples/client/petstore/typescript-angular-v6-provided-in-root/tsconfig.json b/samples/client/petstore/typescript-angular-v6-provided-in-root/tsconfig.json new file mode 100644 index 000000000000..f307c198c813 --- /dev/null +++ b/samples/client/petstore/typescript-angular-v6-provided-in-root/tsconfig.json @@ -0,0 +1,23 @@ +{ + "compileOnSave": false, + "compilerOptions": { + "baseUrl": "./", + "outDir": "./dist/out-tsc", + "sourceMap": true, + "declaration": false, + "moduleResolution": "node", + "emitDecoratorMetadata": true, + "experimentalDecorators": true, + "target": "es5", + "typeRoots": [ + "node_modules/@types" + ], + "paths": { + "@swagger/typescript-angular-petstore": ["builds/default"] + }, + "lib": [ + "es2017", + "dom" + ] + } +} diff --git a/samples/client/petstore/typescript-angular-v6-provided-in-root/tslint.json b/samples/client/petstore/typescript-angular-v6-provided-in-root/tslint.json new file mode 100644 index 000000000000..3ea984c776ef --- /dev/null +++ b/samples/client/petstore/typescript-angular-v6-provided-in-root/tslint.json @@ -0,0 +1,130 @@ +{ + "rulesDirectory": [ + "node_modules/codelyzer" + ], + "rules": { + "arrow-return-shorthand": true, + "callable-types": true, + "class-name": true, + "comment-format": [ + true, + "check-space" + ], + "curly": true, + "deprecation": { + "severity": "warn" + }, + "eofline": true, + "forin": true, + "import-blacklist": [ + true, + "rxjs/Rx" + ], + "import-spacing": true, + "indent": [ + true, + "spaces" + ], + "interface-over-type-literal": true, + "label-position": true, + "max-line-length": [ + true, + 140 + ], + "member-access": false, + "member-ordering": [ + true, + { + "order": [ + "static-field", + "instance-field", + "static-method", + "instance-method" + ] + } + ], + "no-arg": true, + "no-bitwise": true, + "no-console": [ + true, + "debug", + "info", + "time", + "timeEnd", + "trace" + ], + "no-construct": true, + "no-debugger": true, + "no-duplicate-super": true, + "no-empty": false, + "no-empty-interface": true, + "no-eval": true, + "no-inferrable-types": [ + true, + "ignore-params" + ], + "no-misused-new": true, + "no-non-null-assertion": true, + "no-shadowed-variable": true, + "no-string-literal": false, + "no-string-throw": true, + "no-switch-case-fall-through": true, + "no-trailing-whitespace": true, + "no-unnecessary-initializer": true, + "no-unused-expression": true, + "no-use-before-declare": true, + "no-var-keyword": true, + "object-literal-sort-keys": false, + "one-line": [ + true, + "check-open-brace", + "check-catch", + "check-else", + "check-whitespace" + ], + "prefer-const": true, + "quotemark": [ + true, + "single" + ], + "radix": true, + "semicolon": [ + true, + "always" + ], + "triple-equals": [ + true, + "allow-null-check" + ], + "typedef-whitespace": [ + true, + { + "call-signature": "nospace", + "index-signature": "nospace", + "parameter": "nospace", + "property-declaration": "nospace", + "variable-declaration": "nospace" + } + ], + "unified-signatures": true, + "variable-name": false, + "whitespace": [ + true, + "check-branch", + "check-decl", + "check-operator", + "check-separator", + "check-type" + ], + "no-output-on-prefix": true, + "use-input-property-decorator": true, + "use-output-property-decorator": true, + "use-host-property-decorator": true, + "no-input-rename": true, + "no-output-rename": true, + "use-life-cycle-interface": true, + "use-pipe-transform-interface": true, + "component-class-suffix": true, + "directive-class-suffix": true + } +} diff --git a/samples/client/petstore/typescript-fetch/builds/es6-target/package-lock.json b/samples/client/petstore/typescript-fetch/builds/es6-target/package-lock.json new file mode 100644 index 000000000000..95dd1432a889 --- /dev/null +++ b/samples/client/petstore/typescript-fetch/builds/es6-target/package-lock.json @@ -0,0 +1,69 @@ +{ + "name": "@swagger/typescript-fetch-petstore", + "version": "1.0.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@types/node": { + "version": "8.10.19", + "resolved": "https://registry.npmjs.org/@types/node/-/node-8.10.19.tgz", + "integrity": "sha512-+PU57o6DtOSx0/algmxgCwWrmCiomwC/K+LPfXonT0tQMbNTjHEqVzwL9dFEhFoPmLFIiSWjRorLH6Z0hJMT+Q==", + "dev": true + }, + "encoding": { + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz", + "integrity": "sha1-U4tm8+5izRq1HsMjgp0flIDHS+s=", + "requires": { + "iconv-lite": "~0.4.13" + } + }, + "iconv-lite": { + "version": "0.4.23", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.23.tgz", + "integrity": "sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA==", + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" + }, + "node-fetch": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.3.tgz", + "integrity": "sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ==", + "requires": { + "encoding": "^0.1.11", + "is-stream": "^1.0.1" + } + }, + "portable-fetch": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/portable-fetch/-/portable-fetch-3.0.0.tgz", + "integrity": "sha1-PL9KptvFpXNLQcBBnJJzMTv9mtg=", + "requires": { + "node-fetch": "^1.0.1", + "whatwg-fetch": ">=0.10.0" + } + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "typescript": { + "version": "2.9.1", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-2.9.1.tgz", + "integrity": "sha512-h6pM2f/GDchCFlldnriOhs1QHuwbnmj6/v7499eMHqPeW4V2G0elua2eIc2nu8v2NdHV0Gm+tzX83Hr6nUFjQA==", + "dev": true + }, + "whatwg-fetch": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-2.0.4.tgz", + "integrity": "sha512-dcQ1GWpOD/eEQ97k66aiEVpNnapVj90/+R+SXTPYGHpYBBypfKJEQjLrvMZ7YXbKm21gXd4NcuxUTjiv1YtLng==" + } + } +} diff --git a/samples/client/petstore/typescript-fetch/builds/es6-target/package.json b/samples/client/petstore/typescript-fetch/builds/es6-target/package.json index 220573dfd7d8..edce2e16c391 100644 --- a/samples/client/petstore/typescript-fetch/builds/es6-target/package.json +++ b/samples/client/petstore/typescript-fetch/builds/es6-target/package.json @@ -13,7 +13,7 @@ "license": "Unlicense", "main": "./dist/index.js", "typings": "./dist/index.d.ts", - "scripts" : { + "scripts": { "build": "tsc --outDir dist/", "prepublishOnly": "npm run build" }, @@ -24,7 +24,7 @@ "@types/node": "^8.0.9", "typescript": "^2.0" }, - "publishConfig":{ - "registry":"https://skimdb.npmjs.com/registry" + "publishConfig": { + "registry": "https://skimdb.npmjs.com/registry" } } diff --git a/samples/client/petstore/typescript-fetch/builds/with-npm-version/package-lock.json b/samples/client/petstore/typescript-fetch/builds/with-npm-version/package-lock.json new file mode 100644 index 000000000000..95dd1432a889 --- /dev/null +++ b/samples/client/petstore/typescript-fetch/builds/with-npm-version/package-lock.json @@ -0,0 +1,69 @@ +{ + "name": "@swagger/typescript-fetch-petstore", + "version": "1.0.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@types/node": { + "version": "8.10.19", + "resolved": "https://registry.npmjs.org/@types/node/-/node-8.10.19.tgz", + "integrity": "sha512-+PU57o6DtOSx0/algmxgCwWrmCiomwC/K+LPfXonT0tQMbNTjHEqVzwL9dFEhFoPmLFIiSWjRorLH6Z0hJMT+Q==", + "dev": true + }, + "encoding": { + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz", + "integrity": "sha1-U4tm8+5izRq1HsMjgp0flIDHS+s=", + "requires": { + "iconv-lite": "~0.4.13" + } + }, + "iconv-lite": { + "version": "0.4.23", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.23.tgz", + "integrity": "sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA==", + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" + }, + "node-fetch": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.3.tgz", + "integrity": "sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ==", + "requires": { + "encoding": "^0.1.11", + "is-stream": "^1.0.1" + } + }, + "portable-fetch": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/portable-fetch/-/portable-fetch-3.0.0.tgz", + "integrity": "sha1-PL9KptvFpXNLQcBBnJJzMTv9mtg=", + "requires": { + "node-fetch": "^1.0.1", + "whatwg-fetch": ">=0.10.0" + } + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "typescript": { + "version": "2.9.1", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-2.9.1.tgz", + "integrity": "sha512-h6pM2f/GDchCFlldnriOhs1QHuwbnmj6/v7499eMHqPeW4V2G0elua2eIc2nu8v2NdHV0Gm+tzX83Hr6nUFjQA==", + "dev": true + }, + "whatwg-fetch": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-2.0.4.tgz", + "integrity": "sha512-dcQ1GWpOD/eEQ97k66aiEVpNnapVj90/+R+SXTPYGHpYBBypfKJEQjLrvMZ7YXbKm21gXd4NcuxUTjiv1YtLng==" + } + } +} diff --git a/samples/client/petstore/typescript-fetch/builds/with-npm-version/package.json b/samples/client/petstore/typescript-fetch/builds/with-npm-version/package.json index 220573dfd7d8..edce2e16c391 100644 --- a/samples/client/petstore/typescript-fetch/builds/with-npm-version/package.json +++ b/samples/client/petstore/typescript-fetch/builds/with-npm-version/package.json @@ -13,7 +13,7 @@ "license": "Unlicense", "main": "./dist/index.js", "typings": "./dist/index.d.ts", - "scripts" : { + "scripts": { "build": "tsc --outDir dist/", "prepublishOnly": "npm run build" }, @@ -24,7 +24,7 @@ "@types/node": "^8.0.9", "typescript": "^2.0" }, - "publishConfig":{ - "registry":"https://skimdb.npmjs.com/registry" + "publishConfig": { + "registry": "https://skimdb.npmjs.com/registry" } } diff --git a/samples/client/petstore/typescript-node/npm/package-lock.json b/samples/client/petstore/typescript-node/npm/package-lock.json index 3f9ea593713c..4e1c2957991d 100644 --- a/samples/client/petstore/typescript-node/npm/package-lock.json +++ b/samples/client/petstore/typescript-node/npm/package-lock.json @@ -2,6 +2,7 @@ "name": "@swagger/angular2-typescript-petstore", "version": "0.0.1", "lockfileVersion": 1, + "requires": true, "dependencies": { "@types/bluebird": { "version": "3.5.20", @@ -16,7 +17,10 @@ "@types/form-data": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/@types/form-data/-/form-data-2.2.1.tgz", - "integrity": "sha512-JAMFhOaHIciYVh8fb5/83nmuO/AHwmto+Hq7a9y8FzLDcC1KCU344XDOMEmahnrTFlHjgh4L0WJFczNIX2GxnQ==" + "integrity": "sha512-JAMFhOaHIciYVh8fb5/83nmuO/AHwmto+Hq7a9y8FzLDcC1KCU344XDOMEmahnrTFlHjgh4L0WJFczNIX2GxnQ==", + "requires": { + "@types/node": "*" + } }, "@types/node": { "version": "10.0.6", @@ -26,7 +30,13 @@ "@types/request": { "version": "2.47.0", "resolved": "https://registry.npmjs.org/@types/request/-/request-2.47.0.tgz", - "integrity": "sha512-/KXM5oev+nNCLIgBjkwbk8VqxmzI56woD4VUxn95O+YeQ8hJzcSmIZ1IN3WexiqBb6srzDo2bdMbsXxgXNkz5Q==" + "integrity": "sha512-/KXM5oev+nNCLIgBjkwbk8VqxmzI56woD4VUxn95O+YeQ8hJzcSmIZ1IN3WexiqBb6srzDo2bdMbsXxgXNkz5Q==", + "requires": { + "@types/caseless": "*", + "@types/form-data": "*", + "@types/node": "*", + "@types/tough-cookie": "*" + } }, "@types/tough-cookie": { "version": "2.3.3", @@ -36,7 +46,13 @@ "ajv": { "version": "5.5.2", "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", - "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=" + "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", + "requires": { + "co": "^4.6.0", + "fast-deep-equal": "^1.0.0", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.3.0" + } }, "ansi-regex": { "version": "2.1.1", @@ -76,57 +92,144 @@ "babel-code-frame": { "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", - "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=" + "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", + "requires": { + "chalk": "^1.1.3", + "esutils": "^2.0.2", + "js-tokens": "^3.0.2" + } }, "babel-core": { "version": "6.26.3", "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.3.tgz", - "integrity": "sha512-6jyFLuDmeidKmUEb3NM+/yawG0M2bDZ9Z1qbZP59cyHLz8kYGKYwpJP0UwUKKUiTRNvxfLesJnTedqczP7cTDA==" + "integrity": "sha512-6jyFLuDmeidKmUEb3NM+/yawG0M2bDZ9Z1qbZP59cyHLz8kYGKYwpJP0UwUKKUiTRNvxfLesJnTedqczP7cTDA==", + "requires": { + "babel-code-frame": "^6.26.0", + "babel-generator": "^6.26.0", + "babel-helpers": "^6.24.1", + "babel-messages": "^6.23.0", + "babel-register": "^6.26.0", + "babel-runtime": "^6.26.0", + "babel-template": "^6.26.0", + "babel-traverse": "^6.26.0", + "babel-types": "^6.26.0", + "babylon": "^6.18.0", + "convert-source-map": "^1.5.1", + "debug": "^2.6.9", + "json5": "^0.5.1", + "lodash": "^4.17.4", + "minimatch": "^3.0.4", + "path-is-absolute": "^1.0.1", + "private": "^0.1.8", + "slash": "^1.0.0", + "source-map": "^0.5.7" + } }, "babel-generator": { "version": "6.26.1", "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.1.tgz", - "integrity": "sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA==" + "integrity": "sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA==", + "requires": { + "babel-messages": "^6.23.0", + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "detect-indent": "^4.0.0", + "jsesc": "^1.3.0", + "lodash": "^4.17.4", + "source-map": "^0.5.7", + "trim-right": "^1.0.1" + } }, "babel-helpers": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz", - "integrity": "sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI=" + "integrity": "sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI=", + "requires": { + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1" + } }, "babel-messages": { "version": "6.23.0", "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", - "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=" + "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", + "requires": { + "babel-runtime": "^6.22.0" + } }, "babel-plugin-transform-es2015-block-scoping": { "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.26.0.tgz", - "integrity": "sha1-1w9SmcEwjQXBL0Y4E7CgnnOxiV8=" + "integrity": "sha1-1w9SmcEwjQXBL0Y4E7CgnnOxiV8=", + "requires": { + "babel-runtime": "^6.26.0", + "babel-template": "^6.26.0", + "babel-traverse": "^6.26.0", + "babel-types": "^6.26.0", + "lodash": "^4.17.4" + } }, "babel-register": { "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.26.0.tgz", - "integrity": "sha1-btAhFz4vy0htestFxgCahW9kcHE=" + "integrity": "sha1-btAhFz4vy0htestFxgCahW9kcHE=", + "requires": { + "babel-core": "^6.26.0", + "babel-runtime": "^6.26.0", + "core-js": "^2.5.0", + "home-or-tmp": "^2.0.0", + "lodash": "^4.17.4", + "mkdirp": "^0.5.1", + "source-map-support": "^0.4.15" + } }, "babel-runtime": { "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", - "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=" + "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "requires": { + "core-js": "^2.4.0", + "regenerator-runtime": "^0.11.0" + } }, "babel-template": { "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz", - "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=" + "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=", + "requires": { + "babel-runtime": "^6.26.0", + "babel-traverse": "^6.26.0", + "babel-types": "^6.26.0", + "babylon": "^6.18.0", + "lodash": "^4.17.4" + } }, "babel-traverse": { "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", - "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=" + "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=", + "requires": { + "babel-code-frame": "^6.26.0", + "babel-messages": "^6.23.0", + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "babylon": "^6.18.0", + "debug": "^2.6.8", + "globals": "^9.18.0", + "invariant": "^2.2.2", + "lodash": "^4.17.4" + } }, "babel-types": { "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", - "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=" + "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", + "requires": { + "babel-runtime": "^6.26.0", + "esutils": "^2.0.2", + "lodash": "^4.17.4", + "to-fast-properties": "^1.0.3" + } }, "babylon": { "version": "6.18.0", @@ -142,7 +245,10 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz", "integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=", - "optional": true + "optional": true, + "requires": { + "tweetnacl": "^0.14.3" + } }, "bluebird": { "version": "3.5.1", @@ -152,12 +258,19 @@ "boom": { "version": "4.3.1", "resolved": "https://registry.npmjs.org/boom/-/boom-4.3.1.tgz", - "integrity": "sha1-T4owBctKfjiJ90kDD9JbluAdLjE=" + "integrity": "sha1-T4owBctKfjiJ90kDD9JbluAdLjE=", + "requires": { + "hoek": "4.x.x" + } }, "brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==" + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } }, "caseless": { "version": "0.12.0", @@ -167,7 +280,14 @@ "chalk": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=" + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } }, "co": { "version": "4.6.0", @@ -177,7 +297,10 @@ "combined-stream": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.6.tgz", - "integrity": "sha1-cj599ugBrFYTETp+RFqbactjKBg=" + "integrity": "sha1-cj599ugBrFYTETp+RFqbactjKBg=", + "requires": { + "delayed-stream": "~1.0.0" + } }, "concat-map": { "version": "0.0.1", @@ -203,23 +326,35 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-3.1.2.tgz", "integrity": "sha1-qJ+7Ig9c4l7FboxKqKT9e1sNKf4=", + "requires": { + "boom": "5.x.x" + }, "dependencies": { "boom": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/boom/-/boom-5.2.0.tgz", - "integrity": "sha512-Z5BTk6ZRe4tXXQlkqftmsAUANpXmuwlsF5Oov8ThoMbQRzdGTA1ngYRW160GexgOgjsFOKJz0LYhoNi+2AMBUw==" + "integrity": "sha512-Z5BTk6ZRe4tXXQlkqftmsAUANpXmuwlsF5Oov8ThoMbQRzdGTA1ngYRW160GexgOgjsFOKJz0LYhoNi+2AMBUw==", + "requires": { + "hoek": "4.x.x" + } } } }, "dashdash": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", - "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=" + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "requires": { + "assert-plus": "^1.0.0" + } }, "debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==" + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } }, "delayed-stream": { "version": "1.0.0", @@ -229,13 +364,19 @@ "detect-indent": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", - "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=" + "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", + "requires": { + "repeating": "^2.0.0" + } }, "ecc-jsbn": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz", "integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=", - "optional": true + "optional": true, + "requires": { + "jsbn": "~0.1.0" + } }, "escape-string-regexp": { "version": "1.0.5", @@ -275,12 +416,20 @@ "form-data": { "version": "2.3.2", "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.2.tgz", - "integrity": "sha1-SXBJi+YEwgwAXU9cI67NIda0kJk=" + "integrity": "sha1-SXBJi+YEwgwAXU9cI67NIda0kJk=", + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "1.0.6", + "mime-types": "^2.1.12" + } }, "getpass": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", - "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=" + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "requires": { + "assert-plus": "^1.0.0" + } }, "globals": { "version": "9.18.0", @@ -295,17 +444,30 @@ "har-validator": { "version": "5.0.3", "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.0.3.tgz", - "integrity": "sha1-ukAsJmGU8VlW7xXg/PJCmT9qff0=" + "integrity": "sha1-ukAsJmGU8VlW7xXg/PJCmT9qff0=", + "requires": { + "ajv": "^5.1.0", + "har-schema": "^2.0.0" + } }, "has-ansi": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=" + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "requires": { + "ansi-regex": "^2.0.0" + } }, "hawk": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/hawk/-/hawk-6.0.2.tgz", - "integrity": "sha512-miowhl2+U7Qle4vdLqDdPt9m09K6yZhkLDTWGoUiUzrQCn+mHHSmfJgAyGaLRZbPmTqfFFjRV1QWCW0VWUJBbQ==" + "integrity": "sha512-miowhl2+U7Qle4vdLqDdPt9m09K6yZhkLDTWGoUiUzrQCn+mHHSmfJgAyGaLRZbPmTqfFFjRV1QWCW0VWUJBbQ==", + "requires": { + "boom": "4.x.x", + "cryptiles": "3.x.x", + "hoek": "4.x.x", + "sntp": "2.x.x" + } }, "hoek": { "version": "4.2.1", @@ -315,22 +477,37 @@ "home-or-tmp": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-2.0.0.tgz", - "integrity": "sha1-42w/LSyufXRqhX440Y1fMqeILbg=" + "integrity": "sha1-42w/LSyufXRqhX440Y1fMqeILbg=", + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.1" + } }, "http-signature": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", - "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=" + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "requires": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + } }, "invariant": { "version": "2.2.4", "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", - "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==" + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "requires": { + "loose-envify": "^1.0.0" + } }, "is-finite": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", - "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=" + "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", + "requires": { + "number-is-nan": "^1.0.0" + } }, "is-typedarray": { "version": "1.0.0", @@ -381,7 +558,13 @@ "jsprim": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", - "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=" + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + } }, "lodash": { "version": "4.17.10", @@ -391,7 +574,10 @@ "loose-envify": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.3.1.tgz", - "integrity": "sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg=" + "integrity": "sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg=", + "requires": { + "js-tokens": "^3.0.0" + } }, "mime-db": { "version": "1.33.0", @@ -401,12 +587,18 @@ "mime-types": { "version": "2.1.18", "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz", - "integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==" + "integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==", + "requires": { + "mime-db": "~1.33.0" + } }, "minimatch": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==" + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "requires": { + "brace-expansion": "^1.1.7" + } }, "minimist": { "version": "0.0.8", @@ -416,7 +608,10 @@ "mkdirp": { "version": "0.5.1", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=" + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "requires": { + "minimist": "0.0.8" + } }, "ms": { "version": "2.0.0", @@ -476,17 +671,48 @@ "repeating": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", - "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=" + "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", + "requires": { + "is-finite": "^1.0.0" + } }, "request": { "version": "2.85.0", "resolved": "https://registry.npmjs.org/request/-/request-2.85.0.tgz", - "integrity": "sha512-8H7Ehijd4js+s6wuVPLjwORxD4zeuyjYugprdOXlPSqaApmL/QOy+EB/beICHVCHkGMKNh5rvihb5ov+IDw4mg==" + "integrity": "sha512-8H7Ehijd4js+s6wuVPLjwORxD4zeuyjYugprdOXlPSqaApmL/QOy+EB/beICHVCHkGMKNh5rvihb5ov+IDw4mg==", + "requires": { + "aws-sign2": "~0.7.0", + "aws4": "^1.6.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.5", + "extend": "~3.0.1", + "forever-agent": "~0.6.1", + "form-data": "~2.3.1", + "har-validator": "~5.0.3", + "hawk": "~6.0.2", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.17", + "oauth-sign": "~0.8.2", + "performance-now": "^2.1.0", + "qs": "~6.5.1", + "safe-buffer": "^5.1.1", + "stringstream": "~0.0.5", + "tough-cookie": "~2.3.3", + "tunnel-agent": "^0.6.0", + "uuid": "^3.1.0" + } }, "rewire": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/rewire/-/rewire-3.0.2.tgz", - "integrity": "sha512-ejkkt3qYnsQ38ifc9llAAzuHiGM7kR8N5/mL3aHWgmWwet0OMFcmJB8aTsMV2PBHCWxNVTLCeRfBpEa8X2+1fw==" + "integrity": "sha512-ejkkt3qYnsQ38ifc9llAAzuHiGM7kR8N5/mL3aHWgmWwet0OMFcmJB8aTsMV2PBHCWxNVTLCeRfBpEa8X2+1fw==", + "requires": { + "babel-core": "^6.26.0", + "babel-plugin-transform-es2015-block-scoping": "^6.26.0" + } }, "safe-buffer": { "version": "5.1.2", @@ -501,7 +727,10 @@ "sntp": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/sntp/-/sntp-2.1.0.tgz", - "integrity": "sha512-FL1b58BDrqS3A11lJ0zEdnJ3UOKqVxawAkF3k7F0CVN7VQ34aZrV+G8BZ1WC9ZL7NyrwsW0oviwsWDgRuVYtJg==" + "integrity": "sha512-FL1b58BDrqS3A11lJ0zEdnJ3UOKqVxawAkF3k7F0CVN7VQ34aZrV+G8BZ1WC9ZL7NyrwsW0oviwsWDgRuVYtJg==", + "requires": { + "hoek": "4.x.x" + } }, "source-map": { "version": "0.5.7", @@ -511,12 +740,25 @@ "source-map-support": { "version": "0.4.18", "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", - "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==" + "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", + "requires": { + "source-map": "^0.5.6" + } }, "sshpk": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.14.1.tgz", - "integrity": "sha1-Ew9Zde3a2WPx1W+SuaxsUfqfg+s=" + "integrity": "sha1-Ew9Zde3a2WPx1W+SuaxsUfqfg+s=", + "requires": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "tweetnacl": "~0.14.0" + } }, "stringstream": { "version": "0.0.5", @@ -526,7 +768,10 @@ "strip-ansi": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=" + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "requires": { + "ansi-regex": "^2.0.0" + } }, "supports-color": { "version": "2.0.0", @@ -541,7 +786,10 @@ "tough-cookie": { "version": "2.3.4", "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.4.tgz", - "integrity": "sha512-TZ6TTfI5NtZnuyy/Kecv+CnoROnyXn2DN97LontgQpCwsX2XyLYCC0ENhYkehSOwAp8rTQKc/NUIF7BkQ5rKLA==" + "integrity": "sha512-TZ6TTfI5NtZnuyy/Kecv+CnoROnyXn2DN97LontgQpCwsX2XyLYCC0ENhYkehSOwAp8rTQKc/NUIF7BkQ5rKLA==", + "requires": { + "punycode": "^1.4.1" + } }, "trim-right": { "version": "1.0.1", @@ -551,7 +799,10 @@ "tunnel-agent": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=" + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "requires": { + "safe-buffer": "^5.0.1" + } }, "tweetnacl": { "version": "0.14.5", @@ -573,7 +824,12 @@ "verror": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", - "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=" + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "requires": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } } } } diff --git a/samples/openapi3/client/petstore/php/.openapi-generator/VERSION b/samples/openapi3/client/petstore/php/.openapi-generator/VERSION index 1c00c5181548..82602aa4190d 100644 --- a/samples/openapi3/client/petstore/php/.openapi-generator/VERSION +++ b/samples/openapi3/client/petstore/php/.openapi-generator/VERSION @@ -1 +1 @@ -3.0.2-SNAPSHOT \ No newline at end of file +3.0.3-SNAPSHOT \ No newline at end of file diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Api/AnotherFakeApi.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Api/AnotherFakeApi.php index 07db904370c6..1c668d963da4 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Api/AnotherFakeApi.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Api/AnotherFakeApi.php @@ -17,7 +17,7 @@ * OpenAPI spec version: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 3.0.2-SNAPSHOT + * OpenAPI Generator version: 3.0.3-SNAPSHOT */ /** @@ -117,7 +117,6 @@ public function testSpecialTags($client) */ public function testSpecialTagsWithHttpInfo($client) { - $returnType = '\OpenAPI\Client\Model\Client'; $request = $this->testSpecialTagsRequest($client); try { @@ -148,6 +147,26 @@ public function testSpecialTagsWithHttpInfo($client) ); } + $responseBody = $response->getBody(); + switch($statusCode) { + case 200: + if ('\OpenAPI\Client\Model\Client' === '\SplFileObject') { + $content = $responseBody; //stream goes to serializer + } else { + $content = $responseBody->getContents(); + if ('\OpenAPI\Client\Model\Client' !== 'string') { + $content = json_decode($content); + } + } + + return [ + ObjectSerializer::deserialize($content, '\OpenAPI\Client\Model\Client', []), + $response->getStatusCode(), + $response->getHeaders() + ]; + } + + $returnType = '\OpenAPI\Client\Model\Client'; $responseBody = $response->getBody(); if ($returnType === '\SplFileObject') { $content = $responseBody; //stream goes to serializer diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Api/FakeApi.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Api/FakeApi.php index b0b3db3012bb..b6c1ea3487ae 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Api/FakeApi.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Api/FakeApi.php @@ -17,7 +17,7 @@ * OpenAPI spec version: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 3.0.2-SNAPSHOT + * OpenAPI Generator version: 3.0.3-SNAPSHOT */ /** @@ -113,7 +113,6 @@ public function fakeOuterBooleanSerialize($body = null) */ public function fakeOuterBooleanSerializeWithHttpInfo($body = null) { - $returnType = 'bool'; $request = $this->fakeOuterBooleanSerializeRequest($body); try { @@ -144,6 +143,26 @@ public function fakeOuterBooleanSerializeWithHttpInfo($body = null) ); } + $responseBody = $response->getBody(); + switch($statusCode) { + case 200: + if ('bool' === '\SplFileObject') { + $content = $responseBody; //stream goes to serializer + } else { + $content = $responseBody->getContents(); + if ('bool' !== 'string') { + $content = json_decode($content); + } + } + + return [ + ObjectSerializer::deserialize($content, 'bool', []), + $response->getStatusCode(), + $response->getHeaders() + ]; + } + + $returnType = 'bool'; $responseBody = $response->getBody(); if ($returnType === '\SplFileObject') { $content = $responseBody; //stream goes to serializer @@ -360,7 +379,6 @@ public function fakeOuterCompositeSerialize($outer_composite = null) */ public function fakeOuterCompositeSerializeWithHttpInfo($outer_composite = null) { - $returnType = '\OpenAPI\Client\Model\OuterComposite'; $request = $this->fakeOuterCompositeSerializeRequest($outer_composite); try { @@ -391,6 +409,26 @@ public function fakeOuterCompositeSerializeWithHttpInfo($outer_composite = null) ); } + $responseBody = $response->getBody(); + switch($statusCode) { + case 200: + if ('\OpenAPI\Client\Model\OuterComposite' === '\SplFileObject') { + $content = $responseBody; //stream goes to serializer + } else { + $content = $responseBody->getContents(); + if ('\OpenAPI\Client\Model\OuterComposite' !== 'string') { + $content = json_decode($content); + } + } + + return [ + ObjectSerializer::deserialize($content, '\OpenAPI\Client\Model\OuterComposite', []), + $response->getStatusCode(), + $response->getHeaders() + ]; + } + + $returnType = '\OpenAPI\Client\Model\OuterComposite'; $responseBody = $response->getBody(); if ($returnType === '\SplFileObject') { $content = $responseBody; //stream goes to serializer @@ -607,7 +645,6 @@ public function fakeOuterNumberSerialize($body = null) */ public function fakeOuterNumberSerializeWithHttpInfo($body = null) { - $returnType = 'float'; $request = $this->fakeOuterNumberSerializeRequest($body); try { @@ -638,6 +675,26 @@ public function fakeOuterNumberSerializeWithHttpInfo($body = null) ); } + $responseBody = $response->getBody(); + switch($statusCode) { + case 200: + if ('float' === '\SplFileObject') { + $content = $responseBody; //stream goes to serializer + } else { + $content = $responseBody->getContents(); + if ('float' !== 'string') { + $content = json_decode($content); + } + } + + return [ + ObjectSerializer::deserialize($content, 'float', []), + $response->getStatusCode(), + $response->getHeaders() + ]; + } + + $returnType = 'float'; $responseBody = $response->getBody(); if ($returnType === '\SplFileObject') { $content = $responseBody; //stream goes to serializer @@ -854,7 +911,6 @@ public function fakeOuterStringSerialize($body = null) */ public function fakeOuterStringSerializeWithHttpInfo($body = null) { - $returnType = 'string'; $request = $this->fakeOuterStringSerializeRequest($body); try { @@ -885,6 +941,26 @@ public function fakeOuterStringSerializeWithHttpInfo($body = null) ); } + $responseBody = $response->getBody(); + switch($statusCode) { + case 200: + if ('string' === '\SplFileObject') { + $content = $responseBody; //stream goes to serializer + } else { + $content = $responseBody->getContents(); + if ('string' !== 'string') { + $content = json_decode($content); + } + } + + return [ + ObjectSerializer::deserialize($content, 'string', []), + $response->getStatusCode(), + $response->getHeaders() + ]; + } + + $returnType = 'string'; $responseBody = $response->getBody(); if ($returnType === '\SplFileObject') { $content = $responseBody; //stream goes to serializer @@ -1105,7 +1181,6 @@ public function testClientModel($client) */ public function testClientModelWithHttpInfo($client) { - $returnType = '\OpenAPI\Client\Model\Client'; $request = $this->testClientModelRequest($client); try { @@ -1136,6 +1211,26 @@ public function testClientModelWithHttpInfo($client) ); } + $responseBody = $response->getBody(); + switch($statusCode) { + case 200: + if ('\OpenAPI\Client\Model\Client' === '\SplFileObject') { + $content = $responseBody; //stream goes to serializer + } else { + $content = $responseBody->getContents(); + if ('\OpenAPI\Client\Model\Client' !== 'string') { + $content = json_decode($content); + } + } + + return [ + ObjectSerializer::deserialize($content, '\OpenAPI\Client\Model\Client', []), + $response->getStatusCode(), + $response->getHeaders() + ]; + } + + $returnType = '\OpenAPI\Client\Model\Client'; $responseBody = $response->getBody(); if ($returnType === '\SplFileObject') { $content = $responseBody; //stream goes to serializer @@ -1387,7 +1482,6 @@ public function testEndpointParameters($number, $double, $pattern_without_delimi */ public function testEndpointParametersWithHttpInfo($number, $double, $pattern_without_delimiter, $byte, $integer = null, $int32 = null, $int64 = null, $float = null, $string = null, $binary = null, $date = null, $date_time = null, $password = null, $callback = null) { - $returnType = ''; $request = $this->testEndpointParametersRequest($number, $double, $pattern_without_delimiter, $byte, $integer, $int32, $int64, $float, $string, $binary, $date, $date_time, $password, $callback); try { @@ -1783,7 +1877,6 @@ public function testEnumParameters($enum_header_string_array = null, $enum_heade */ public function testEnumParametersWithHttpInfo($enum_header_string_array = null, $enum_header_string = '-efg', $enum_query_string_array = null, $enum_query_string = '-efg', $enum_query_integer = null, $enum_query_double = null, $enum_form_string_array = '$', $enum_form_string = '-efg') { - $returnType = ''; $request = $this->testEnumParametersRequest($enum_header_string_array, $enum_header_string, $enum_query_string_array, $enum_query_string, $enum_query_integer, $enum_query_double, $enum_form_string_array, $enum_form_string); try { @@ -2053,7 +2146,6 @@ public function testInlineAdditionalProperties($request_body) */ public function testInlineAdditionalPropertiesWithHttpInfo($request_body) { - $returnType = ''; $request = $this->testInlineAdditionalPropertiesRequest($request_body); try { @@ -2275,7 +2367,6 @@ public function testJsonFormData($param, $param2) */ public function testJsonFormDataWithHttpInfo($param, $param2) { - $returnType = ''; $request = $this->testJsonFormDataRequest($param, $param2); try { diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Api/FakeClassnameTags123Api.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Api/FakeClassnameTags123Api.php index 34585a87cb6e..ffe6a623b71f 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Api/FakeClassnameTags123Api.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Api/FakeClassnameTags123Api.php @@ -17,7 +17,7 @@ * OpenAPI spec version: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 3.0.2-SNAPSHOT + * OpenAPI Generator version: 3.0.3-SNAPSHOT */ /** @@ -117,7 +117,6 @@ public function testClassname($client) */ public function testClassnameWithHttpInfo($client) { - $returnType = '\OpenAPI\Client\Model\Client'; $request = $this->testClassnameRequest($client); try { @@ -148,6 +147,26 @@ public function testClassnameWithHttpInfo($client) ); } + $responseBody = $response->getBody(); + switch($statusCode) { + case 200: + if ('\OpenAPI\Client\Model\Client' === '\SplFileObject') { + $content = $responseBody; //stream goes to serializer + } else { + $content = $responseBody->getContents(); + if ('\OpenAPI\Client\Model\Client' !== 'string') { + $content = json_decode($content); + } + } + + return [ + ObjectSerializer::deserialize($content, '\OpenAPI\Client\Model\Client', []), + $response->getStatusCode(), + $response->getHeaders() + ]; + } + + $returnType = '\OpenAPI\Client\Model\Client'; $responseBody = $response->getBody(); if ($returnType === '\SplFileObject') { $content = $responseBody; //stream goes to serializer diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Api/PetApi.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Api/PetApi.php index 05400c03e354..9b495a9c624e 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Api/PetApi.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Api/PetApi.php @@ -17,7 +17,7 @@ * OpenAPI spec version: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 3.0.2-SNAPSHOT + * OpenAPI Generator version: 3.0.3-SNAPSHOT */ /** @@ -116,7 +116,6 @@ public function addPet($pet) */ public function addPetWithHttpInfo($pet) { - $returnType = ''; $request = $this->addPetRequest($pet); try { @@ -342,7 +341,6 @@ public function deletePet($pet_id, $api_key = null) */ public function deletePetWithHttpInfo($pet_id, $api_key = null) { - $returnType = ''; $request = $this->deletePetRequest($pet_id, $api_key); try { @@ -579,7 +577,6 @@ public function findPetsByStatus($status) */ public function findPetsByStatusWithHttpInfo($status) { - $returnType = '\OpenAPI\Client\Model\Pet[]'; $request = $this->findPetsByStatusRequest($status); try { @@ -610,6 +607,26 @@ public function findPetsByStatusWithHttpInfo($status) ); } + $responseBody = $response->getBody(); + switch($statusCode) { + case 200: + if ('\OpenAPI\Client\Model\Pet[]' === '\SplFileObject') { + $content = $responseBody; //stream goes to serializer + } else { + $content = $responseBody->getContents(); + if ('\OpenAPI\Client\Model\Pet[]' !== 'string') { + $content = json_decode($content); + } + } + + return [ + ObjectSerializer::deserialize($content, '\OpenAPI\Client\Model\Pet[]', []), + $response->getStatusCode(), + $response->getHeaders() + ]; + } + + $returnType = '\OpenAPI\Client\Model\Pet[]'; $responseBody = $response->getBody(); if ($returnType === '\SplFileObject') { $content = $responseBody; //stream goes to serializer @@ -844,7 +861,6 @@ public function findPetsByTags($tags) */ public function findPetsByTagsWithHttpInfo($tags) { - $returnType = '\OpenAPI\Client\Model\Pet[]'; $request = $this->findPetsByTagsRequest($tags); try { @@ -875,6 +891,26 @@ public function findPetsByTagsWithHttpInfo($tags) ); } + $responseBody = $response->getBody(); + switch($statusCode) { + case 200: + if ('\OpenAPI\Client\Model\Pet[]' === '\SplFileObject') { + $content = $responseBody; //stream goes to serializer + } else { + $content = $responseBody->getContents(); + if ('\OpenAPI\Client\Model\Pet[]' !== 'string') { + $content = json_decode($content); + } + } + + return [ + ObjectSerializer::deserialize($content, '\OpenAPI\Client\Model\Pet[]', []), + $response->getStatusCode(), + $response->getHeaders() + ]; + } + + $returnType = '\OpenAPI\Client\Model\Pet[]'; $responseBody = $response->getBody(); if ($returnType === '\SplFileObject') { $content = $responseBody; //stream goes to serializer @@ -1109,7 +1145,6 @@ public function getPetById($pet_id) */ public function getPetByIdWithHttpInfo($pet_id) { - $returnType = '\OpenAPI\Client\Model\Pet'; $request = $this->getPetByIdRequest($pet_id); try { @@ -1140,6 +1175,26 @@ public function getPetByIdWithHttpInfo($pet_id) ); } + $responseBody = $response->getBody(); + switch($statusCode) { + case 200: + if ('\OpenAPI\Client\Model\Pet' === '\SplFileObject') { + $content = $responseBody; //stream goes to serializer + } else { + $content = $responseBody->getContents(); + if ('\OpenAPI\Client\Model\Pet' !== 'string') { + $content = json_decode($content); + } + } + + return [ + ObjectSerializer::deserialize($content, '\OpenAPI\Client\Model\Pet', []), + $response->getStatusCode(), + $response->getHeaders() + ]; + } + + $returnType = '\OpenAPI\Client\Model\Pet'; $responseBody = $response->getBody(); if ($returnType === '\SplFileObject') { $content = $responseBody; //stream goes to serializer @@ -1375,7 +1430,6 @@ public function updatePet($pet) */ public function updatePetWithHttpInfo($pet) { - $returnType = ''; $request = $this->updatePetRequest($pet); try { @@ -1603,7 +1657,6 @@ public function updatePetWithForm($pet_id, $name = null, $status = null) */ public function updatePetWithFormWithHttpInfo($pet_id, $name = null, $status = null) { - $returnType = ''; $request = $this->updatePetWithFormRequest($pet_id, $name, $status); try { @@ -1851,7 +1904,6 @@ public function uploadFile($pet_id, $additional_metadata = null, $file = null) */ public function uploadFileWithHttpInfo($pet_id, $additional_metadata = null, $file = null) { - $returnType = '\OpenAPI\Client\Model\ApiResponse'; $request = $this->uploadFileRequest($pet_id, $additional_metadata, $file); try { @@ -1882,6 +1934,26 @@ public function uploadFileWithHttpInfo($pet_id, $additional_metadata = null, $fi ); } + $responseBody = $response->getBody(); + switch($statusCode) { + case 200: + if ('\OpenAPI\Client\Model\ApiResponse' === '\SplFileObject') { + $content = $responseBody; //stream goes to serializer + } else { + $content = $responseBody->getContents(); + if ('\OpenAPI\Client\Model\ApiResponse' !== 'string') { + $content = json_decode($content); + } + } + + return [ + ObjectSerializer::deserialize($content, '\OpenAPI\Client\Model\ApiResponse', []), + $response->getStatusCode(), + $response->getHeaders() + ]; + } + + $returnType = '\OpenAPI\Client\Model\ApiResponse'; $responseBody = $response->getBody(); if ($returnType === '\SplFileObject') { $content = $responseBody; //stream goes to serializer diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Api/StoreApi.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Api/StoreApi.php index 07f3bcd9f570..b4ba21addf78 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Api/StoreApi.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Api/StoreApi.php @@ -17,7 +17,7 @@ * OpenAPI spec version: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 3.0.2-SNAPSHOT + * OpenAPI Generator version: 3.0.3-SNAPSHOT */ /** @@ -116,7 +116,6 @@ public function deleteOrder($order_id) */ public function deleteOrderWithHttpInfo($order_id) { - $returnType = ''; $request = $this->deleteOrderRequest($order_id); try { @@ -340,7 +339,6 @@ public function getInventory() */ public function getInventoryWithHttpInfo() { - $returnType = 'map[string,int]'; $request = $this->getInventoryRequest(); try { @@ -371,6 +369,26 @@ public function getInventoryWithHttpInfo() ); } + $responseBody = $response->getBody(); + switch($statusCode) { + case 200: + if ('map[string,int]' === '\SplFileObject') { + $content = $responseBody; //stream goes to serializer + } else { + $content = $responseBody->getContents(); + if ('map[string,int]' !== 'string') { + $content = json_decode($content); + } + } + + return [ + ObjectSerializer::deserialize($content, 'map[string,int]', []), + $response->getStatusCode(), + $response->getHeaders() + ]; + } + + $returnType = 'map[string,int]'; $responseBody = $response->getBody(); if ($returnType === '\SplFileObject') { $content = $responseBody; //stream goes to serializer @@ -590,7 +608,6 @@ public function getOrderById($order_id) */ public function getOrderByIdWithHttpInfo($order_id) { - $returnType = '\OpenAPI\Client\Model\Order'; $request = $this->getOrderByIdRequest($order_id); try { @@ -621,6 +638,26 @@ public function getOrderByIdWithHttpInfo($order_id) ); } + $responseBody = $response->getBody(); + switch($statusCode) { + case 200: + if ('\OpenAPI\Client\Model\Order' === '\SplFileObject') { + $content = $responseBody; //stream goes to serializer + } else { + $content = $responseBody->getContents(); + if ('\OpenAPI\Client\Model\Order' !== 'string') { + $content = json_decode($content); + } + } + + return [ + ObjectSerializer::deserialize($content, '\OpenAPI\Client\Model\Order', []), + $response->getStatusCode(), + $response->getHeaders() + ]; + } + + $returnType = '\OpenAPI\Client\Model\Order'; $responseBody = $response->getBody(); if ($returnType === '\SplFileObject') { $content = $responseBody; //stream goes to serializer @@ -859,7 +896,6 @@ public function placeOrder($order) */ public function placeOrderWithHttpInfo($order) { - $returnType = '\OpenAPI\Client\Model\Order'; $request = $this->placeOrderRequest($order); try { @@ -890,6 +926,26 @@ public function placeOrderWithHttpInfo($order) ); } + $responseBody = $response->getBody(); + switch($statusCode) { + case 200: + if ('\OpenAPI\Client\Model\Order' === '\SplFileObject') { + $content = $responseBody; //stream goes to serializer + } else { + $content = $responseBody->getContents(); + if ('\OpenAPI\Client\Model\Order' !== 'string') { + $content = json_decode($content); + } + } + + return [ + ObjectSerializer::deserialize($content, '\OpenAPI\Client\Model\Order', []), + $response->getStatusCode(), + $response->getHeaders() + ]; + } + + $returnType = '\OpenAPI\Client\Model\Order'; $responseBody = $response->getBody(); if ($returnType === '\SplFileObject') { $content = $responseBody; //stream goes to serializer diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Api/UserApi.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Api/UserApi.php index f685a03029fc..bb8db0f4c31b 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Api/UserApi.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Api/UserApi.php @@ -17,7 +17,7 @@ * OpenAPI spec version: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 3.0.2-SNAPSHOT + * OpenAPI Generator version: 3.0.3-SNAPSHOT */ /** @@ -116,7 +116,6 @@ public function createUser($user) */ public function createUserWithHttpInfo($user) { - $returnType = ''; $request = $this->createUserRequest($user); try { @@ -336,7 +335,6 @@ public function createUsersWithArrayInput($user) */ public function createUsersWithArrayInputWithHttpInfo($user) { - $returnType = ''; $request = $this->createUsersWithArrayInputRequest($user); try { @@ -556,7 +554,6 @@ public function createUsersWithListInput($user) */ public function createUsersWithListInputWithHttpInfo($user) { - $returnType = ''; $request = $this->createUsersWithListInputRequest($user); try { @@ -776,7 +773,6 @@ public function deleteUser($username) */ public function deleteUserWithHttpInfo($username) { - $returnType = ''; $request = $this->deleteUserRequest($username); try { @@ -1002,7 +998,6 @@ public function getUserByName($username) */ public function getUserByNameWithHttpInfo($username) { - $returnType = '\OpenAPI\Client\Model\User'; $request = $this->getUserByNameRequest($username); try { @@ -1033,6 +1028,26 @@ public function getUserByNameWithHttpInfo($username) ); } + $responseBody = $response->getBody(); + switch($statusCode) { + case 200: + if ('\OpenAPI\Client\Model\User' === '\SplFileObject') { + $content = $responseBody; //stream goes to serializer + } else { + $content = $responseBody->getContents(); + if ('\OpenAPI\Client\Model\User' !== 'string') { + $content = json_decode($content); + } + } + + return [ + ObjectSerializer::deserialize($content, '\OpenAPI\Client\Model\User', []), + $response->getStatusCode(), + $response->getHeaders() + ]; + } + + $returnType = '\OpenAPI\Client\Model\User'; $responseBody = $response->getBody(); if ($returnType === '\SplFileObject') { $content = $responseBody; //stream goes to serializer @@ -1266,7 +1281,6 @@ public function loginUser($username, $password) */ public function loginUserWithHttpInfo($username, $password) { - $returnType = 'string'; $request = $this->loginUserRequest($username, $password); try { @@ -1297,6 +1311,26 @@ public function loginUserWithHttpInfo($username, $password) ); } + $responseBody = $response->getBody(); + switch($statusCode) { + case 200: + if ('string' === '\SplFileObject') { + $content = $responseBody; //stream goes to serializer + } else { + $content = $responseBody->getContents(); + if ('string' !== 'string') { + $content = json_decode($content); + } + } + + return [ + ObjectSerializer::deserialize($content, 'string', []), + $response->getStatusCode(), + $response->getHeaders() + ]; + } + + $returnType = 'string'; $responseBody = $response->getBody(); if ($returnType === '\SplFileObject') { $content = $responseBody; //stream goes to serializer @@ -1534,7 +1568,6 @@ public function logoutUser() */ public function logoutUserWithHttpInfo() { - $returnType = ''; $request = $this->logoutUserRequest(); try { @@ -1744,7 +1777,6 @@ public function updateUser($username, $user) */ public function updateUserWithHttpInfo($username, $user) { - $returnType = ''; $request = $this->updateUserRequest($username, $user); try { diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/ApiException.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/ApiException.php index c8df3a1c4560..a0a5b4d1caf9 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/ApiException.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/ApiException.php @@ -17,7 +17,7 @@ * OpenAPI spec version: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 3.0.2-SNAPSHOT + * OpenAPI Generator version: 3.0.3-SNAPSHOT */ /** diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Configuration.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Configuration.php index de4f29cca879..b58313a42200 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Configuration.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Configuration.php @@ -17,7 +17,7 @@ * OpenAPI spec version: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 3.0.2-SNAPSHOT + * OpenAPI Generator version: 3.0.3-SNAPSHOT */ /** diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/HeaderSelector.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/HeaderSelector.php index 39bfc9e5a541..dcf3363c78b8 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/HeaderSelector.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/HeaderSelector.php @@ -17,7 +17,7 @@ * OpenAPI spec version: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 3.0.2-SNAPSHOT + * OpenAPI Generator version: 3.0.3-SNAPSHOT */ /** diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/AdditionalPropertiesClass.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/AdditionalPropertiesClass.php index d14350fc2f94..ae5f3dc3de83 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/AdditionalPropertiesClass.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/AdditionalPropertiesClass.php @@ -18,7 +18,7 @@ * OpenAPI spec version: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 3.0.2-SNAPSHOT + * OpenAPI Generator version: 3.0.3-SNAPSHOT */ /** diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/Animal.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/Animal.php index 0afe71a6fdfd..16aef52de050 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/Animal.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/Animal.php @@ -18,7 +18,7 @@ * OpenAPI spec version: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 3.0.2-SNAPSHOT + * OpenAPI Generator version: 3.0.3-SNAPSHOT */ /** diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/AnimalFarm.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/AnimalFarm.php index 92b6da41a7f4..78c16fa1bb60 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/AnimalFarm.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/AnimalFarm.php @@ -18,7 +18,7 @@ * OpenAPI spec version: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 3.0.2-SNAPSHOT + * OpenAPI Generator version: 3.0.3-SNAPSHOT */ /** diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/ApiResponse.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/ApiResponse.php index b33a84b4a829..b8764bf3724b 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/ApiResponse.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/ApiResponse.php @@ -18,7 +18,7 @@ * OpenAPI spec version: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 3.0.2-SNAPSHOT + * OpenAPI Generator version: 3.0.3-SNAPSHOT */ /** diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/ArrayOfArrayOfNumberOnly.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/ArrayOfArrayOfNumberOnly.php index faaf0a5c98c6..1fdcfffbeedc 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/ArrayOfArrayOfNumberOnly.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/ArrayOfArrayOfNumberOnly.php @@ -18,7 +18,7 @@ * OpenAPI spec version: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 3.0.2-SNAPSHOT + * OpenAPI Generator version: 3.0.3-SNAPSHOT */ /** diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/ArrayOfNumberOnly.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/ArrayOfNumberOnly.php index 2ceb2f4239a4..392af57b47e7 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/ArrayOfNumberOnly.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/ArrayOfNumberOnly.php @@ -18,7 +18,7 @@ * OpenAPI spec version: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 3.0.2-SNAPSHOT + * OpenAPI Generator version: 3.0.3-SNAPSHOT */ /** diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/ArrayTest.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/ArrayTest.php index dd9ec8077df4..2a11f3de6e1d 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/ArrayTest.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/ArrayTest.php @@ -18,7 +18,7 @@ * OpenAPI spec version: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 3.0.2-SNAPSHOT + * OpenAPI Generator version: 3.0.3-SNAPSHOT */ /** diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/Capitalization.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/Capitalization.php index 213a79b0c521..ff26cc123c08 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/Capitalization.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/Capitalization.php @@ -18,7 +18,7 @@ * OpenAPI spec version: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 3.0.2-SNAPSHOT + * OpenAPI Generator version: 3.0.3-SNAPSHOT */ /** diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/Cat.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/Cat.php index 24afb981960d..665cc61a838e 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/Cat.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/Cat.php @@ -18,7 +18,7 @@ * OpenAPI spec version: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 3.0.2-SNAPSHOT + * OpenAPI Generator version: 3.0.3-SNAPSHOT */ /** diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/Category.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/Category.php index 63fd421498ff..e90f161fe02e 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/Category.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/Category.php @@ -18,7 +18,7 @@ * OpenAPI spec version: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 3.0.2-SNAPSHOT + * OpenAPI Generator version: 3.0.3-SNAPSHOT */ /** diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/ClassModel.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/ClassModel.php index 1296f22a7de8..2dd300ddc45c 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/ClassModel.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/ClassModel.php @@ -18,7 +18,7 @@ * OpenAPI spec version: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 3.0.2-SNAPSHOT + * OpenAPI Generator version: 3.0.3-SNAPSHOT */ /** diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/Client.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/Client.php index 8b2e75e075f9..82e0ee402985 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/Client.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/Client.php @@ -18,7 +18,7 @@ * OpenAPI spec version: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 3.0.2-SNAPSHOT + * OpenAPI Generator version: 3.0.3-SNAPSHOT */ /** diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/Dog.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/Dog.php index 3aa6ae264139..c404888a0eb9 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/Dog.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/Dog.php @@ -18,7 +18,7 @@ * OpenAPI spec version: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 3.0.2-SNAPSHOT + * OpenAPI Generator version: 3.0.3-SNAPSHOT */ /** diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/EnumArrays.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/EnumArrays.php index 934b95e7fb44..f12665f5e842 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/EnumArrays.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/EnumArrays.php @@ -18,7 +18,7 @@ * OpenAPI spec version: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 3.0.2-SNAPSHOT + * OpenAPI Generator version: 3.0.3-SNAPSHOT */ /** diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/EnumClass.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/EnumClass.php index 904cdc180362..e44e9eb161df 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/EnumClass.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/EnumClass.php @@ -18,7 +18,7 @@ * OpenAPI spec version: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 3.0.2-SNAPSHOT + * OpenAPI Generator version: 3.0.3-SNAPSHOT */ /** diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/EnumTest.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/EnumTest.php index 9437b3c2843b..561f5593bcfe 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/EnumTest.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/EnumTest.php @@ -18,7 +18,7 @@ * OpenAPI spec version: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 3.0.2-SNAPSHOT + * OpenAPI Generator version: 3.0.3-SNAPSHOT */ /** diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/FormatTest.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/FormatTest.php index 1f2a22ca71ce..07005c3df409 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/FormatTest.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/FormatTest.php @@ -18,7 +18,7 @@ * OpenAPI spec version: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 3.0.2-SNAPSHOT + * OpenAPI Generator version: 3.0.3-SNAPSHOT */ /** diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/HasOnlyReadOnly.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/HasOnlyReadOnly.php index cd95c541f96e..ba3d46a72385 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/HasOnlyReadOnly.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/HasOnlyReadOnly.php @@ -18,7 +18,7 @@ * OpenAPI spec version: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 3.0.2-SNAPSHOT + * OpenAPI Generator version: 3.0.3-SNAPSHOT */ /** diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/MapTest.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/MapTest.php index 9dda9ad7b585..e0c38408559a 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/MapTest.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/MapTest.php @@ -18,7 +18,7 @@ * OpenAPI spec version: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 3.0.2-SNAPSHOT + * OpenAPI Generator version: 3.0.3-SNAPSHOT */ /** diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/MixedPropertiesAndAdditionalPropertiesClass.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/MixedPropertiesAndAdditionalPropertiesClass.php index 1c4354e55304..920dbcf94212 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/MixedPropertiesAndAdditionalPropertiesClass.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/MixedPropertiesAndAdditionalPropertiesClass.php @@ -18,7 +18,7 @@ * OpenAPI spec version: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 3.0.2-SNAPSHOT + * OpenAPI Generator version: 3.0.3-SNAPSHOT */ /** diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/Model200Response.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/Model200Response.php index 1f7f3d188f98..d4d0d61eab42 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/Model200Response.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/Model200Response.php @@ -18,7 +18,7 @@ * OpenAPI spec version: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 3.0.2-SNAPSHOT + * OpenAPI Generator version: 3.0.3-SNAPSHOT */ /** diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/ModelInterface.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/ModelInterface.php index 3d5b27d5d36a..c0d21323450c 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/ModelInterface.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/ModelInterface.php @@ -18,7 +18,7 @@ * OpenAPI spec version: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 3.0.2-SNAPSHOT + * OpenAPI Generator version: 3.0.3-SNAPSHOT */ /** diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/ModelList.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/ModelList.php index 0c387665068c..8798057ca349 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/ModelList.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/ModelList.php @@ -18,7 +18,7 @@ * OpenAPI spec version: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 3.0.2-SNAPSHOT + * OpenAPI Generator version: 3.0.3-SNAPSHOT */ /** diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/ModelReturn.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/ModelReturn.php index b586ae0523a4..9c1d061f252f 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/ModelReturn.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/ModelReturn.php @@ -18,7 +18,7 @@ * OpenAPI spec version: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 3.0.2-SNAPSHOT + * OpenAPI Generator version: 3.0.3-SNAPSHOT */ /** diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/Name.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/Name.php index 6bef54db97a6..50f2f974d95c 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/Name.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/Name.php @@ -18,7 +18,7 @@ * OpenAPI spec version: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 3.0.2-SNAPSHOT + * OpenAPI Generator version: 3.0.3-SNAPSHOT */ /** diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/NumberOnly.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/NumberOnly.php index 4720e71b807e..4a7c1fcc7eba 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/NumberOnly.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/NumberOnly.php @@ -18,7 +18,7 @@ * OpenAPI spec version: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 3.0.2-SNAPSHOT + * OpenAPI Generator version: 3.0.3-SNAPSHOT */ /** diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/Order.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/Order.php index a1f426018363..a88c4e6313a1 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/Order.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/Order.php @@ -18,7 +18,7 @@ * OpenAPI spec version: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 3.0.2-SNAPSHOT + * OpenAPI Generator version: 3.0.3-SNAPSHOT */ /** diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/OuterComposite.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/OuterComposite.php index 8d5a5b9df06a..c2a7377ffa0f 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/OuterComposite.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/OuterComposite.php @@ -18,7 +18,7 @@ * OpenAPI spec version: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 3.0.2-SNAPSHOT + * OpenAPI Generator version: 3.0.3-SNAPSHOT */ /** diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/OuterEnum.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/OuterEnum.php index 1acb7f54d20c..59c373db531c 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/OuterEnum.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/OuterEnum.php @@ -18,7 +18,7 @@ * OpenAPI spec version: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 3.0.2-SNAPSHOT + * OpenAPI Generator version: 3.0.3-SNAPSHOT */ /** diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/Pet.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/Pet.php index 713fd8d59d90..031a73710ef1 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/Pet.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/Pet.php @@ -18,7 +18,7 @@ * OpenAPI spec version: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 3.0.2-SNAPSHOT + * OpenAPI Generator version: 3.0.3-SNAPSHOT */ /** diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/ReadOnlyFirst.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/ReadOnlyFirst.php index 6858e6347816..ff00acc3059f 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/ReadOnlyFirst.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/ReadOnlyFirst.php @@ -18,7 +18,7 @@ * OpenAPI spec version: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 3.0.2-SNAPSHOT + * OpenAPI Generator version: 3.0.3-SNAPSHOT */ /** diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/SpecialModelName.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/SpecialModelName.php index af6b453c7302..4ed4aac61c8c 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/SpecialModelName.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/SpecialModelName.php @@ -18,7 +18,7 @@ * OpenAPI spec version: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 3.0.2-SNAPSHOT + * OpenAPI Generator version: 3.0.3-SNAPSHOT */ /** diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/Tag.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/Tag.php index 1516326159fc..bb725bce935f 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/Tag.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/Tag.php @@ -18,7 +18,7 @@ * OpenAPI spec version: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 3.0.2-SNAPSHOT + * OpenAPI Generator version: 3.0.3-SNAPSHOT */ /** diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/User.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/User.php index 3679309dc837..ec4001d71821 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/User.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/Model/User.php @@ -18,7 +18,7 @@ * OpenAPI spec version: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 3.0.2-SNAPSHOT + * OpenAPI Generator version: 3.0.3-SNAPSHOT */ /** diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/ObjectSerializer.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/ObjectSerializer.php index 71906b46cd59..52fc6524d173 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/ObjectSerializer.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/ObjectSerializer.php @@ -18,7 +18,7 @@ * OpenAPI spec version: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 3.0.2-SNAPSHOT + * OpenAPI Generator version: 3.0.3-SNAPSHOT */ /** @@ -223,7 +223,7 @@ public static function serializeCollection(array $collection, $collectionFormat, * @param string[] $httpHeaders HTTP headers * @param string $discriminator discriminator if polymorphism is used * - * @return object|array|null an single or an array of $class instances + * @return object|array|null a single or an array of $class instances */ public static function deserialize($data, $class, $httpHeaders = null) { diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Api/AnotherFakeApiTest.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Api/AnotherFakeApiTest.php index 0dad0cd8a265..efb1f5fcc4fd 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Api/AnotherFakeApiTest.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Api/AnotherFakeApiTest.php @@ -17,7 +17,7 @@ * OpenAPI spec version: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 3.0.2-SNAPSHOT + * OpenAPI Generator version: 3.0.3-SNAPSHOT */ /** diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Api/FakeApiTest.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Api/FakeApiTest.php index fa88b0b7ea1b..28e53278f604 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Api/FakeApiTest.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Api/FakeApiTest.php @@ -17,7 +17,7 @@ * OpenAPI spec version: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 3.0.2-SNAPSHOT + * OpenAPI Generator version: 3.0.3-SNAPSHOT */ /** diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Api/FakeClassnameTags123ApiTest.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Api/FakeClassnameTags123ApiTest.php index f7b5550d1541..d45a51364a67 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Api/FakeClassnameTags123ApiTest.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Api/FakeClassnameTags123ApiTest.php @@ -17,7 +17,7 @@ * OpenAPI spec version: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 3.0.2-SNAPSHOT + * OpenAPI Generator version: 3.0.3-SNAPSHOT */ /** diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Api/PetApiTest.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Api/PetApiTest.php index 27de7c0d8ab4..0f1081c60534 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Api/PetApiTest.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Api/PetApiTest.php @@ -17,7 +17,7 @@ * OpenAPI spec version: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 3.0.2-SNAPSHOT + * OpenAPI Generator version: 3.0.3-SNAPSHOT */ /** diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Api/StoreApiTest.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Api/StoreApiTest.php index 633de8b71eac..668501cbf5d1 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Api/StoreApiTest.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Api/StoreApiTest.php @@ -17,7 +17,7 @@ * OpenAPI spec version: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 3.0.2-SNAPSHOT + * OpenAPI Generator version: 3.0.3-SNAPSHOT */ /** diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Api/UserApiTest.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Api/UserApiTest.php index 84f563ab326d..38b46ff60d2e 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Api/UserApiTest.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Api/UserApiTest.php @@ -17,7 +17,7 @@ * OpenAPI spec version: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 3.0.2-SNAPSHOT + * OpenAPI Generator version: 3.0.3-SNAPSHOT */ /** diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/AdditionalPropertiesClassTest.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/AdditionalPropertiesClassTest.php index f46c4ec9b5a1..367699196e60 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/AdditionalPropertiesClassTest.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/AdditionalPropertiesClassTest.php @@ -18,7 +18,7 @@ * OpenAPI spec version: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 3.0.2-SNAPSHOT + * OpenAPI Generator version: 3.0.3-SNAPSHOT */ /** diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/AnimalFarmTest.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/AnimalFarmTest.php index 79c6a1ac5a53..9a79dce72cb9 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/AnimalFarmTest.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/AnimalFarmTest.php @@ -18,7 +18,7 @@ * OpenAPI spec version: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 3.0.2-SNAPSHOT + * OpenAPI Generator version: 3.0.3-SNAPSHOT */ /** diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/AnimalTest.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/AnimalTest.php index fbd911191e82..087bf5139b94 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/AnimalTest.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/AnimalTest.php @@ -18,7 +18,7 @@ * OpenAPI spec version: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 3.0.2-SNAPSHOT + * OpenAPI Generator version: 3.0.3-SNAPSHOT */ /** diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/ApiResponseTest.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/ApiResponseTest.php index 470c1ff741dc..aa4ec27b52cc 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/ApiResponseTest.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/ApiResponseTest.php @@ -18,7 +18,7 @@ * OpenAPI spec version: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 3.0.2-SNAPSHOT + * OpenAPI Generator version: 3.0.3-SNAPSHOT */ /** diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/ArrayOfArrayOfNumberOnlyTest.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/ArrayOfArrayOfNumberOnlyTest.php index 3b2d11224d61..6e82cd038de0 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/ArrayOfArrayOfNumberOnlyTest.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/ArrayOfArrayOfNumberOnlyTest.php @@ -18,7 +18,7 @@ * OpenAPI spec version: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 3.0.2-SNAPSHOT + * OpenAPI Generator version: 3.0.3-SNAPSHOT */ /** diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/ArrayOfNumberOnlyTest.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/ArrayOfNumberOnlyTest.php index 716e2eb49cfd..da50230be508 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/ArrayOfNumberOnlyTest.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/ArrayOfNumberOnlyTest.php @@ -18,7 +18,7 @@ * OpenAPI spec version: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 3.0.2-SNAPSHOT + * OpenAPI Generator version: 3.0.3-SNAPSHOT */ /** diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/ArrayTestTest.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/ArrayTestTest.php index 90a29a4a45be..6ffa97a2f5eb 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/ArrayTestTest.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/ArrayTestTest.php @@ -18,7 +18,7 @@ * OpenAPI spec version: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 3.0.2-SNAPSHOT + * OpenAPI Generator version: 3.0.3-SNAPSHOT */ /** diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/CapitalizationTest.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/CapitalizationTest.php index 3092d0d14359..27415e821364 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/CapitalizationTest.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/CapitalizationTest.php @@ -18,7 +18,7 @@ * OpenAPI spec version: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 3.0.2-SNAPSHOT + * OpenAPI Generator version: 3.0.3-SNAPSHOT */ /** diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/CatTest.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/CatTest.php index 238f8de40d89..1f8efed8125a 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/CatTest.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/CatTest.php @@ -18,7 +18,7 @@ * OpenAPI spec version: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 3.0.2-SNAPSHOT + * OpenAPI Generator version: 3.0.3-SNAPSHOT */ /** diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/CategoryTest.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/CategoryTest.php index 3df3150c891a..36e5c38b5c43 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/CategoryTest.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/CategoryTest.php @@ -18,7 +18,7 @@ * OpenAPI spec version: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 3.0.2-SNAPSHOT + * OpenAPI Generator version: 3.0.3-SNAPSHOT */ /** diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/ClassModelTest.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/ClassModelTest.php index 25daa930ca1f..fb437b3b8c0d 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/ClassModelTest.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/ClassModelTest.php @@ -18,7 +18,7 @@ * OpenAPI spec version: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 3.0.2-SNAPSHOT + * OpenAPI Generator version: 3.0.3-SNAPSHOT */ /** diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/ClientTest.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/ClientTest.php index e648b1e1c0e3..77efed5cb06d 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/ClientTest.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/ClientTest.php @@ -18,7 +18,7 @@ * OpenAPI spec version: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 3.0.2-SNAPSHOT + * OpenAPI Generator version: 3.0.3-SNAPSHOT */ /** diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/DogTest.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/DogTest.php index a32faa91a4f9..e6f29e2cec7d 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/DogTest.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/DogTest.php @@ -18,7 +18,7 @@ * OpenAPI spec version: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 3.0.2-SNAPSHOT + * OpenAPI Generator version: 3.0.3-SNAPSHOT */ /** diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/EnumArraysTest.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/EnumArraysTest.php index 321227269cd2..9a8f9d10ef35 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/EnumArraysTest.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/EnumArraysTest.php @@ -18,7 +18,7 @@ * OpenAPI spec version: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 3.0.2-SNAPSHOT + * OpenAPI Generator version: 3.0.3-SNAPSHOT */ /** diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/EnumClassTest.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/EnumClassTest.php index d9b9b5f05e73..a9d6cd7fac6f 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/EnumClassTest.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/EnumClassTest.php @@ -18,7 +18,7 @@ * OpenAPI spec version: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 3.0.2-SNAPSHOT + * OpenAPI Generator version: 3.0.3-SNAPSHOT */ /** diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/EnumTestTest.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/EnumTestTest.php index 324735bb08a6..eefd2eb83f52 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/EnumTestTest.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/EnumTestTest.php @@ -18,7 +18,7 @@ * OpenAPI spec version: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 3.0.2-SNAPSHOT + * OpenAPI Generator version: 3.0.3-SNAPSHOT */ /** diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/FormatTestTest.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/FormatTestTest.php index 078cf09064e9..c5161755b52b 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/FormatTestTest.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/FormatTestTest.php @@ -18,7 +18,7 @@ * OpenAPI spec version: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 3.0.2-SNAPSHOT + * OpenAPI Generator version: 3.0.3-SNAPSHOT */ /** diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/HasOnlyReadOnlyTest.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/HasOnlyReadOnlyTest.php index 61c2864920ed..bb698360fff2 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/HasOnlyReadOnlyTest.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/HasOnlyReadOnlyTest.php @@ -18,7 +18,7 @@ * OpenAPI spec version: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 3.0.2-SNAPSHOT + * OpenAPI Generator version: 3.0.3-SNAPSHOT */ /** diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/MapTestTest.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/MapTestTest.php index 15229ac69ecb..c3f347e1bdaa 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/MapTestTest.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/MapTestTest.php @@ -18,7 +18,7 @@ * OpenAPI spec version: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 3.0.2-SNAPSHOT + * OpenAPI Generator version: 3.0.3-SNAPSHOT */ /** diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/MixedPropertiesAndAdditionalPropertiesClassTest.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/MixedPropertiesAndAdditionalPropertiesClassTest.php index 18c5ebbcdccb..35d7a9f5205c 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/MixedPropertiesAndAdditionalPropertiesClassTest.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/MixedPropertiesAndAdditionalPropertiesClassTest.php @@ -18,7 +18,7 @@ * OpenAPI spec version: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 3.0.2-SNAPSHOT + * OpenAPI Generator version: 3.0.3-SNAPSHOT */ /** diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/Model200ResponseTest.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/Model200ResponseTest.php index 557069b814cf..532d82516998 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/Model200ResponseTest.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/Model200ResponseTest.php @@ -18,7 +18,7 @@ * OpenAPI spec version: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 3.0.2-SNAPSHOT + * OpenAPI Generator version: 3.0.3-SNAPSHOT */ /** diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/ModelListTest.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/ModelListTest.php index 53f1c67e169f..66650ee5bf57 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/ModelListTest.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/ModelListTest.php @@ -18,7 +18,7 @@ * OpenAPI spec version: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 3.0.2-SNAPSHOT + * OpenAPI Generator version: 3.0.3-SNAPSHOT */ /** diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/ModelReturnTest.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/ModelReturnTest.php index 325e694ffcb1..226a12786fe0 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/ModelReturnTest.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/ModelReturnTest.php @@ -18,7 +18,7 @@ * OpenAPI spec version: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 3.0.2-SNAPSHOT + * OpenAPI Generator version: 3.0.3-SNAPSHOT */ /** diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/NameTest.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/NameTest.php index 0b79c41ddd2c..978ee08944b9 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/NameTest.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/NameTest.php @@ -18,7 +18,7 @@ * OpenAPI spec version: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 3.0.2-SNAPSHOT + * OpenAPI Generator version: 3.0.3-SNAPSHOT */ /** diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/NumberOnlyTest.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/NumberOnlyTest.php index f6b0d481a728..479ed393069c 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/NumberOnlyTest.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/NumberOnlyTest.php @@ -18,7 +18,7 @@ * OpenAPI spec version: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 3.0.2-SNAPSHOT + * OpenAPI Generator version: 3.0.3-SNAPSHOT */ /** diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/OrderTest.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/OrderTest.php index 137347b2b2a8..953fe0a76540 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/OrderTest.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/OrderTest.php @@ -18,7 +18,7 @@ * OpenAPI spec version: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 3.0.2-SNAPSHOT + * OpenAPI Generator version: 3.0.3-SNAPSHOT */ /** diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/OuterCompositeTest.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/OuterCompositeTest.php index 9601db42a064..736bcebb1c72 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/OuterCompositeTest.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/OuterCompositeTest.php @@ -18,7 +18,7 @@ * OpenAPI spec version: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 3.0.2-SNAPSHOT + * OpenAPI Generator version: 3.0.3-SNAPSHOT */ /** diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/OuterEnumTest.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/OuterEnumTest.php index a32b9bccaa88..fd20e51d581e 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/OuterEnumTest.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/OuterEnumTest.php @@ -18,7 +18,7 @@ * OpenAPI spec version: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 3.0.2-SNAPSHOT + * OpenAPI Generator version: 3.0.3-SNAPSHOT */ /** diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/PetTest.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/PetTest.php index a67a7dbfd60f..e6b5d5e97420 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/PetTest.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/PetTest.php @@ -18,7 +18,7 @@ * OpenAPI spec version: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 3.0.2-SNAPSHOT + * OpenAPI Generator version: 3.0.3-SNAPSHOT */ /** diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/ReadOnlyFirstTest.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/ReadOnlyFirstTest.php index ff2852af02bd..226fb97b0608 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/ReadOnlyFirstTest.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/ReadOnlyFirstTest.php @@ -18,7 +18,7 @@ * OpenAPI spec version: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 3.0.2-SNAPSHOT + * OpenAPI Generator version: 3.0.3-SNAPSHOT */ /** diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/SpecialModelNameTest.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/SpecialModelNameTest.php index 93745c7a00ab..17baa78ef02d 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/SpecialModelNameTest.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/SpecialModelNameTest.php @@ -18,7 +18,7 @@ * OpenAPI spec version: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 3.0.2-SNAPSHOT + * OpenAPI Generator version: 3.0.3-SNAPSHOT */ /** diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/TagTest.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/TagTest.php index b811e675777c..68734c49de25 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/TagTest.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/TagTest.php @@ -18,7 +18,7 @@ * OpenAPI spec version: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 3.0.2-SNAPSHOT + * OpenAPI Generator version: 3.0.3-SNAPSHOT */ /** diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/UserTest.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/UserTest.php index be5e689b8252..3e4a4822df6d 100644 --- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/UserTest.php +++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/test/Model/UserTest.php @@ -18,7 +18,7 @@ * OpenAPI spec version: 1.0.0 * * Generated by: https://openapi-generator.tech - * OpenAPI Generator version: 3.0.2-SNAPSHOT + * OpenAPI Generator version: 3.0.3-SNAPSHOT */ /** diff --git a/samples/server/petstore/finch/pom.xml b/samples/server/petstore/finch/pom.xml new file mode 100644 index 000000000000..92384f2a55a3 --- /dev/null +++ b/samples/server/petstore/finch/pom.xml @@ -0,0 +1,32 @@ + + 4.0.0 + org.openapitools + finch-server + pom + 1.0-SNAPSHOT + Finch server + + + + org.codehaus.mojo + exec-maven-plugin + 1.5.0 + + + sbt-test + integration-test + + exec + + + sbt + + test + + + + + + + + diff --git a/samples/server/petstore/go-api-server/.openapi-generator/VERSION b/samples/server/petstore/go-api-server/.openapi-generator/VERSION index 096bf47efe31..ad121e8340e0 100644 --- a/samples/server/petstore/go-api-server/.openapi-generator/VERSION +++ b/samples/server/petstore/go-api-server/.openapi-generator/VERSION @@ -1 +1 @@ -3.0.0-SNAPSHOT \ No newline at end of file +3.0.1-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/go-api-server/Dockerfile b/samples/server/petstore/go-api-server/Dockerfile new file mode 100644 index 000000000000..cfdfbaed0804 --- /dev/null +++ b/samples/server/petstore/go-api-server/Dockerfile @@ -0,0 +1,14 @@ +FROM golang:1.10 AS build +WORKDIR /go/src +COPY go ./go +COPY main.go . + +ENV CGO_ENABLED=0 +RUN go get -d -v ./... + +RUN go build -a -installsuffix cgo -o petstoreserver . + +FROM scratch AS runtime +COPY --from=build /go/src/petstoreserver ./ +EXPOSE 8080/tcp +ENTRYPOINT ["./petstoreserver"] diff --git a/samples/server/petstore/go-api-server/api/openapi.yaml b/samples/server/petstore/go-api-server/api/openapi.yaml index 01e572ba924f..c0b60f85ddeb 100644 --- a/samples/server/petstore/go-api-server/api/openapi.yaml +++ b/samples/server/petstore/go-api-server/api/openapi.yaml @@ -1,29 +1,25 @@ openapi: 3.0.1 info: - title: OpenAPI Petstore description: This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters. license: name: Apache-2.0 url: http://www.apache.org/licenses/LICENSE-2.0.html + title: OpenAPI Petstore version: 1.0.0 servers: - url: http://petstore.swagger.io/v2 tags: -- name: pet - description: Everything about your Pets -- name: store - description: Access to Petstore orders -- name: user - description: Operations about user +- description: Everything about your Pets + name: pet +- description: Access to Petstore orders + name: store +- description: Operations about user + name: user paths: /pet: - put: - tags: - - pet - summary: Update an existing pet - operationId: updatePet + post: + operationId: addPet requestBody: - description: Pet object that needs to be added to the store content: application/json: schema: @@ -31,28 +27,22 @@ paths: application/xml: schema: $ref: '#/components/schemas/Pet' + description: Pet object that needs to be added to the store required: true responses: - 400: - description: Invalid ID supplied - content: {} - 404: - description: Pet not found - content: {} 405: - description: Validation exception content: {} + description: Invalid input security: - petstore_auth: - write:pets - read:pets - post: + summary: Add a new pet to the store tags: - pet - summary: Add a new pet to the store - operationId: addPet + put: + operationId: updatePet requestBody: - description: Pet object that needs to be added to the store content: application/json: schema: @@ -60,115 +50,148 @@ paths: application/xml: schema: $ref: '#/components/schemas/Pet' + description: Pet object that needs to be added to the store required: true responses: + 400: + content: {} + description: Invalid ID supplied + 404: + content: {} + description: Pet not found 405: - description: Invalid input content: {} + description: Validation exception security: - petstore_auth: - write:pets - read:pets - /pet/findByStatus: - get: + summary: Update an existing pet tags: - pet - summary: Finds Pets by status + /pet/findByStatus: + get: description: Multiple status values can be provided with comma separated strings operationId: findPetsByStatus parameters: - - name: status + - description: Status values that need to be considered for filter + explode: false in: query - description: Status values that need to be considered for filter + name: status required: true - explode: false schema: - type: array items: - type: string default: available enum: - available - pending - sold + type: string + type: array + style: form responses: 200: - description: successful operation content: application/xml: schema: - type: array items: $ref: '#/components/schemas/Pet' + type: array application/json: schema: - type: array items: $ref: '#/components/schemas/Pet' + type: array + description: successful operation 400: - description: Invalid status value content: {} + description: Invalid status value security: - petstore_auth: - write:pets - read:pets - /pet/findByTags: - get: + summary: Finds Pets by status tags: - pet - summary: Finds Pets by tags + /pet/findByTags: + get: + deprecated: true description: Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing. operationId: findPetsByTags parameters: - - name: tags + - description: Tags to filter by + explode: false in: query - description: Tags to filter by + name: tags required: true - explode: false schema: - type: array items: type: string + type: array + style: form responses: 200: - description: successful operation content: application/xml: schema: - type: array items: $ref: '#/components/schemas/Pet' + type: array application/json: schema: - type: array items: $ref: '#/components/schemas/Pet' + type: array + description: successful operation 400: - description: Invalid tag value content: {} - deprecated: true + description: Invalid tag value security: - petstore_auth: - write:pets - read:pets + summary: Finds Pets by tags + tags: + - pet /pet/{petId}: - get: + delete: + operationId: deletePet + parameters: + - in: header + name: api_key + schema: + type: string + - description: Pet id to delete + in: path + name: petId + required: true + schema: + format: int64 + type: integer + responses: + 400: + content: {} + description: Invalid pet value + security: + - petstore_auth: + - write:pets + - read:pets + summary: Deletes a pet tags: - pet - summary: Find pet by ID + get: description: Returns a single pet operationId: getPetById parameters: - - name: petId + - description: ID of pet to return in: path - description: ID of pet to return + name: petId required: true schema: - type: integer format: int64 + type: integer responses: 200: - description: successful operation content: application/xml: schema: @@ -176,143 +199,118 @@ paths: application/json: schema: $ref: '#/components/schemas/Pet' + description: successful operation 400: - description: Invalid ID supplied content: {} + description: Invalid ID supplied 404: - description: Pet not found content: {} + description: Pet not found security: - api_key: [] - post: + summary: Find pet by ID tags: - pet - summary: Updates a pet in the store with form data + post: operationId: updatePetWithForm parameters: - - name: petId + - description: ID of pet that needs to be updated in: path - description: ID of pet that needs to be updated + name: petId required: true schema: - type: integer format: int64 + type: integer requestBody: content: application/x-www-form-urlencoded: schema: properties: name: - type: string description: Updated name of the pet - status: type: string + status: description: Updated status of the pet + type: string responses: 405: - description: Invalid input content: {} + description: Invalid input security: - petstore_auth: - write:pets - read:pets - delete: + summary: Updates a pet in the store with form data tags: - pet - summary: Deletes a pet - operationId: deletePet - parameters: - - name: api_key - in: header - schema: - type: string - - name: petId - in: path - description: Pet id to delete - required: true - schema: - type: integer - format: int64 - responses: - 400: - description: Invalid pet value - content: {} - security: - - petstore_auth: - - write:pets - - read:pets /pet/{petId}/uploadImage: post: - tags: - - pet - summary: uploads an image operationId: uploadFile parameters: - - name: petId + - description: ID of pet to update in: path - description: ID of pet to update + name: petId required: true schema: - type: integer format: int64 + type: integer requestBody: content: multipart/form-data: schema: properties: additionalMetadata: - type: string description: Additional data to pass to server - file: type: string + file: description: file to upload format: binary + type: string responses: 200: - description: successful operation content: application/json: schema: $ref: '#/components/schemas/ApiResponse' + description: successful operation security: - petstore_auth: - write:pets - read:pets + summary: uploads an image + tags: + - pet /store/inventory: get: - tags: - - store - summary: Returns pet inventories by status description: Returns a map of status codes to quantities operationId: getInventory responses: 200: - description: successful operation content: application/json: schema: - type: object additionalProperties: - type: integer format: int32 + type: integer + type: object + description: successful operation security: - api_key: [] - /store/order: - post: + summary: Returns pet inventories by status tags: - store - summary: Place an order for a pet + /store/order: + post: operationId: placeOrder requestBody: - description: order placed for purchasing the pet content: '*/*': schema: $ref: '#/components/schemas/Order' + description: order placed for purchasing the pet required: true responses: 200: - description: successful operation content: application/xml: schema: @@ -320,29 +318,49 @@ paths: application/json: schema: $ref: '#/components/schemas/Order' + description: successful operation 400: - description: Invalid Order content: {} + description: Invalid Order + summary: Place an order for a pet + tags: + - store /store/order/{orderId}: - get: + delete: + description: For valid response try integer IDs with value < 1000. Anything above 1000 or nonintegers will generate API errors + operationId: deleteOrder + parameters: + - description: ID of the order that needs to be deleted + in: path + name: orderId + required: true + schema: + type: string + responses: + 400: + content: {} + description: Invalid ID supplied + 404: + content: {} + description: Order not found + summary: Delete purchase order by ID tags: - store - summary: Find purchase order by ID + get: description: For valid response try integer IDs with value <= 5 or > 10. Other values will generated exceptions operationId: getOrderById parameters: - - name: orderId + - description: ID of pet that needs to be fetched in: path - description: ID of pet that needs to be fetched + name: orderId required: true schema: + format: int64 maximum: 5 minimum: 1 type: integer - format: int64 responses: 200: - description: successful operation content: application/xml: schema: @@ -350,157 +368,157 @@ paths: application/json: schema: $ref: '#/components/schemas/Order' + description: successful operation 400: - description: Invalid ID supplied content: {} + description: Invalid ID supplied 404: - description: Order not found content: {} - delete: + description: Order not found + summary: Find purchase order by ID tags: - store - summary: Delete purchase order by ID - description: For valid response try integer IDs with value < 1000. Anything above 1000 or nonintegers will generate API errors - operationId: deleteOrder - parameters: - - name: orderId - in: path - description: ID of the order that needs to be deleted - required: true - schema: - type: string - responses: - 400: - description: Invalid ID supplied - content: {} - 404: - description: Order not found - content: {} /user: post: - tags: - - user - summary: Create user description: This can only be done by the logged in user. operationId: createUser requestBody: - description: Created user object content: '*/*': schema: $ref: '#/components/schemas/User' + description: Created user object required: true responses: default: - description: successful operation content: {} - /user/createWithArray: - post: + description: successful operation + summary: Create user tags: - user - summary: Creates list of users with given input array + /user/createWithArray: + post: operationId: createUsersWithArrayInput requestBody: - description: List of user object content: '*/*': schema: - type: array items: $ref: '#/components/schemas/User' + type: array + description: List of user object required: true responses: default: - description: successful operation content: {} - /user/createWithList: - post: + description: successful operation + summary: Creates list of users with given input array tags: - user - summary: Creates list of users with given input array + /user/createWithList: + post: operationId: createUsersWithListInput requestBody: - description: List of user object content: '*/*': schema: - type: array items: $ref: '#/components/schemas/User' + type: array + description: List of user object required: true responses: default: - description: successful operation content: {} - /user/login: - get: + description: successful operation + summary: Creates list of users with given input array tags: - user - summary: Logs user into the system + /user/login: + get: operationId: loginUser parameters: - - name: username + - description: The user name for login in: query - description: The user name for login + name: username required: true schema: type: string - - name: password + - description: The password for login in clear text in: query - description: The password for login in clear text + name: password required: true schema: type: string responses: 200: + content: + application/xml: + schema: + type: string + application/json: + schema: + type: string description: successful operation headers: X-Rate-Limit: description: calls per hour allowed by the user schema: - type: integer format: int32 + type: integer X-Expires-After: description: date in UTC when toekn expires schema: - type: string format: date-time - content: - application/xml: - schema: - type: string - application/json: - schema: type: string 400: - description: Invalid username/password supplied content: {} - /user/logout: - get: + description: Invalid username/password supplied + summary: Logs user into the system tags: - user - summary: Logs out current logged in user session + /user/logout: + get: operationId: logoutUser responses: default: - description: successful operation content: {} + description: successful operation + summary: Logs out current logged in user session + tags: + - user /user/{username}: - get: + delete: + description: This can only be done by the logged in user. + operationId: deleteUser + parameters: + - description: The name that needs to be deleted + in: path + name: username + required: true + schema: + type: string + responses: + 400: + content: {} + description: Invalid username supplied + 404: + content: {} + description: User not found + summary: Delete user tags: - user - summary: Get user by user name + get: operationId: getUserByName parameters: - - name: username + - description: The name that needs to be fetched. Use user1 for testing. in: path - description: The name that needs to be fetched. Use user1 for testing. + name: username required: true schema: type: string responses: 200: - description: successful operation content: application/xml: schema: @@ -508,119 +526,111 @@ paths: application/json: schema: $ref: '#/components/schemas/User' + description: successful operation 400: - description: Invalid username supplied content: {} + description: Invalid username supplied 404: - description: User not found content: {} - put: + description: User not found + summary: Get user by user name tags: - user - summary: Updated user + put: description: This can only be done by the logged in user. operationId: updateUser parameters: - - name: username + - description: name that need to be deleted in: path - description: name that need to be deleted + name: username required: true schema: type: string requestBody: - description: Updated user object content: '*/*': schema: $ref: '#/components/schemas/User' + description: Updated user object required: true responses: 400: - description: Invalid user supplied content: {} + description: Invalid user supplied 404: - description: User not found content: {} - delete: + description: User not found + summary: Updated user tags: - user - summary: Delete user - description: This can only be done by the logged in user. - operationId: deleteUser - parameters: - - name: username - in: path - description: The name that needs to be deleted - required: true - schema: - type: string - responses: - 400: - description: Invalid username supplied - content: {} - 404: - description: User not found - content: {} components: schemas: Order: - title: Pet Order - type: object + description: An order for a pets from the pet store + example: + petId: 6 + quantity: 1 + id: 0 + shipDate: 2000-01-23T04:56:07.000+00:00 + complete: false + status: placed properties: id: - type: integer format: int64 - petId: type: integer + petId: format: int64 - quantity: type: integer + quantity: format: int32 + type: integer shipDate: - type: string format: date-time - status: type: string + status: description: Order Status enum: - placed - approved - delivered + type: string complete: - type: boolean default: false - description: An order for a pets from the pet store - example: - petId: 6 - quantity: 1 - id: 0 - shipDate: 2000-01-23T04:56:07.000+00:00 - complete: false - status: placed + type: boolean + title: Pet Order + type: object xml: name: Order Category: - title: Pet category - type: object + description: A category for a pet + example: + name: name + id: 6 properties: id: - type: integer format: int64 + type: integer name: type: string - description: A category for a pet - example: - name: name - id: 6 + title: Pet category + type: object xml: name: Category User: - title: a User - type: object + description: A User who is purchasing from the pet store + example: + firstName: firstName + lastName: lastName + password: password + userStatus: 6 + phone: phone + id: 0 + email: email + username: username properties: id: - type: integer format: int64 + type: integer username: type: string firstName: @@ -634,116 +644,108 @@ components: phone: type: string userStatus: - type: integer description: User Status format: int32 - description: A User who is purchasing from the pet store - example: - firstName: firstName - lastName: lastName - password: password - userStatus: 6 - phone: phone - id: 0 - email: email - username: username + type: integer + title: a User + type: object xml: name: User Tag: - title: Pet Tag - type: object + description: A tag for a pet + example: + name: name + id: 1 properties: id: - type: integer format: int64 + type: integer name: type: string - description: A tag for a pet - example: - name: name - id: 1 + title: Pet Tag + type: object xml: name: Tag Pet: - title: a Pet - required: - - name - - photoUrls - type: object + description: A pet for sale in the pet store + example: + photoUrls: + - photoUrls + - photoUrls + name: doggie + id: 0 + category: + name: name + id: 6 + tags: + - name: name + id: 1 + - name: name + id: 1 + status: available properties: id: - type: integer format: int64 + type: integer category: $ref: '#/components/schemas/Category' name: - type: string example: doggie + type: string photoUrls: + items: + type: string type: array xml: name: photoUrl wrapped: true - items: - type: string tags: + items: + $ref: '#/components/schemas/Tag' type: array xml: name: tag wrapped: true - items: - $ref: '#/components/schemas/Tag' status: - type: string description: pet status in the store enum: - available - pending - sold - description: A pet for sale in the pet store - example: - photoUrls: - - photoUrls - - photoUrls - name: doggie - id: 0 - category: - name: name - id: 6 - tags: - - name: name - id: 1 - - name: name - id: 1 - status: available + type: string + required: + - name + - photoUrls + title: a Pet + type: object xml: name: Pet ApiResponse: - title: An uploaded response - type: object + description: Describes the result of uploading an image resource + example: + code: 0 + type: type + message: message properties: code: - type: integer format: int32 + type: integer type: type: string message: type: string - description: Describes the result of uploading an image resource - example: - code: 0 - type: type - message: message + title: An uploaded response + type: object securitySchemes: petstore_auth: - type: oauth2 flows: implicit: authorizationUrl: http://petstore.swagger.io/api/oauth/dialog scopes: write:pets: modify pets in your account read:pets: read your pets + type: oauth2 api_key: - type: apiKey - name: api_key in: header + name: api_key + type: apiKey diff --git a/samples/server/petstore/go-api-server/go/README.md b/samples/server/petstore/go-api-server/go/README.md index 100f25037893..30088c34683d 100644 --- a/samples/server/petstore/go-api-server/go/README.md +++ b/samples/server/petstore/go-api-server/go/README.md @@ -1,16 +1,16 @@ # Go API Server for petstoreserver -This is a sample server Petstore server. You can find out more about Swagger at [http://swagger.io](http://swagger.io) or on [irc.freenode.net, #swagger](http://swagger.io/irc/). For this sample, you can use the api key `special-key` to test the authorization filters. +This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters. ## Overview -This server was generated by the [swagger-codegen] -(https://github.com/swagger-api/swagger-codegen) project. +This server was generated by the [openapi-generator] +(https://openapi-generator.tech) project. By using the [OpenAPI-Spec](https://github.com/OAI/OpenAPI-Specification) from a remote server, you can easily generate a server stub. - To see how to make this your own, look here: -[README](https://github.com/swagger-api/swagger-codegen/blob/master/README.md) +[README]((https://openapi-generator.tech)) - API version: 1.0.0 @@ -22,3 +22,14 @@ To run the server, follow these simple steps: go run main.go ``` +To run the server in a docker container +``` +docker build --network=host -t petstoreserver . +``` + +Once image is built use +``` +docker run --rm -it petstoreserver +``` + + diff --git a/samples/server/petstore/go-api-server/go/api_pet.go b/samples/server/petstore/go-api-server/go/api_pet.go index d57c66e5b5bf..02b798ec9504 100644 --- a/samples/server/petstore/go-api-server/go/api_pet.go +++ b/samples/server/petstore/go-api-server/go/api_pet.go @@ -13,41 +13,49 @@ import ( "net/http" ) +// AddPet - Add a new pet to the store func AddPet(w http.ResponseWriter, r *http.Request) { w.Header().Set("Content-Type", "application/json; charset=UTF-8") w.WriteHeader(http.StatusOK) } +// DeletePet - Deletes a pet func DeletePet(w http.ResponseWriter, r *http.Request) { w.Header().Set("Content-Type", "application/json; charset=UTF-8") w.WriteHeader(http.StatusOK) } +// FindPetsByStatus - Finds Pets by status func FindPetsByStatus(w http.ResponseWriter, r *http.Request) { w.Header().Set("Content-Type", "application/json; charset=UTF-8") w.WriteHeader(http.StatusOK) } +// FindPetsByTags - Finds Pets by tags func FindPetsByTags(w http.ResponseWriter, r *http.Request) { w.Header().Set("Content-Type", "application/json; charset=UTF-8") w.WriteHeader(http.StatusOK) } +// GetPetById - Find pet by ID func GetPetById(w http.ResponseWriter, r *http.Request) { w.Header().Set("Content-Type", "application/json; charset=UTF-8") w.WriteHeader(http.StatusOK) } +// UpdatePet - Update an existing pet func UpdatePet(w http.ResponseWriter, r *http.Request) { w.Header().Set("Content-Type", "application/json; charset=UTF-8") w.WriteHeader(http.StatusOK) } +// UpdatePetWithForm - Updates a pet in the store with form data func UpdatePetWithForm(w http.ResponseWriter, r *http.Request) { w.Header().Set("Content-Type", "application/json; charset=UTF-8") w.WriteHeader(http.StatusOK) } +// UploadFile - uploads an image func UploadFile(w http.ResponseWriter, r *http.Request) { w.Header().Set("Content-Type", "application/json; charset=UTF-8") w.WriteHeader(http.StatusOK) diff --git a/samples/server/petstore/go-api-server/go/api_store.go b/samples/server/petstore/go-api-server/go/api_store.go index 85037e5b5460..5174c6e7712f 100644 --- a/samples/server/petstore/go-api-server/go/api_store.go +++ b/samples/server/petstore/go-api-server/go/api_store.go @@ -13,21 +13,25 @@ import ( "net/http" ) +// DeleteOrder - Delete purchase order by ID func DeleteOrder(w http.ResponseWriter, r *http.Request) { w.Header().Set("Content-Type", "application/json; charset=UTF-8") w.WriteHeader(http.StatusOK) } +// GetInventory - Returns pet inventories by status func GetInventory(w http.ResponseWriter, r *http.Request) { w.Header().Set("Content-Type", "application/json; charset=UTF-8") w.WriteHeader(http.StatusOK) } +// GetOrderById - Find purchase order by ID func GetOrderById(w http.ResponseWriter, r *http.Request) { w.Header().Set("Content-Type", "application/json; charset=UTF-8") w.WriteHeader(http.StatusOK) } +// PlaceOrder - Place an order for a pet func PlaceOrder(w http.ResponseWriter, r *http.Request) { w.Header().Set("Content-Type", "application/json; charset=UTF-8") w.WriteHeader(http.StatusOK) diff --git a/samples/server/petstore/go-api-server/go/api_user.go b/samples/server/petstore/go-api-server/go/api_user.go index 3aba6e039de9..460afb24c2e8 100644 --- a/samples/server/petstore/go-api-server/go/api_user.go +++ b/samples/server/petstore/go-api-server/go/api_user.go @@ -13,41 +13,49 @@ import ( "net/http" ) +// CreateUser - Create user func CreateUser(w http.ResponseWriter, r *http.Request) { w.Header().Set("Content-Type", "application/json; charset=UTF-8") w.WriteHeader(http.StatusOK) } +// CreateUsersWithArrayInput - Creates list of users with given input array func CreateUsersWithArrayInput(w http.ResponseWriter, r *http.Request) { w.Header().Set("Content-Type", "application/json; charset=UTF-8") w.WriteHeader(http.StatusOK) } +// CreateUsersWithListInput - Creates list of users with given input array func CreateUsersWithListInput(w http.ResponseWriter, r *http.Request) { w.Header().Set("Content-Type", "application/json; charset=UTF-8") w.WriteHeader(http.StatusOK) } +// DeleteUser - Delete user func DeleteUser(w http.ResponseWriter, r *http.Request) { w.Header().Set("Content-Type", "application/json; charset=UTF-8") w.WriteHeader(http.StatusOK) } +// GetUserByName - Get user by user name func GetUserByName(w http.ResponseWriter, r *http.Request) { w.Header().Set("Content-Type", "application/json; charset=UTF-8") w.WriteHeader(http.StatusOK) } +// LoginUser - Logs user into the system func LoginUser(w http.ResponseWriter, r *http.Request) { w.Header().Set("Content-Type", "application/json; charset=UTF-8") w.WriteHeader(http.StatusOK) } +// LogoutUser - Logs out current logged in user session func LogoutUser(w http.ResponseWriter, r *http.Request) { w.Header().Set("Content-Type", "application/json; charset=UTF-8") w.WriteHeader(http.StatusOK) } +// UpdateUser - Updated user func UpdateUser(w http.ResponseWriter, r *http.Request) { w.Header().Set("Content-Type", "application/json; charset=UTF-8") w.WriteHeader(http.StatusOK) diff --git a/samples/server/petstore/go-api-server/go/logger.go b/samples/server/petstore/go-api-server/go/logger.go index 186d5d18ae4f..08cc0ea3f1d2 100644 --- a/samples/server/petstore/go-api-server/go/logger.go +++ b/samples/server/petstore/go-api-server/go/logger.go @@ -10,23 +10,23 @@ package petstoreserver import ( - "log" - "net/http" - "time" + "log" + "net/http" + "time" ) func Logger(inner http.Handler, name string) http.Handler { - return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - start := time.Now() + return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + start := time.Now() - inner.ServeHTTP(w, r) + inner.ServeHTTP(w, r) - log.Printf( - "%s %s %s %s", - r.Method, - r.RequestURI, - name, - time.Since(start), - ) - }) + log.Printf( + "%s %s %s %s", + r.Method, + r.RequestURI, + name, + time.Since(start), + ) + }) } diff --git a/samples/server/petstore/go-api-server/go/model_api_response.go b/samples/server/petstore/go-api-server/go/model_api_response.go index 48a48e715a24..2379e169080d 100644 --- a/samples/server/petstore/go-api-server/go/model_api_response.go +++ b/samples/server/petstore/go-api-server/go/model_api_response.go @@ -9,7 +9,7 @@ package petstoreserver -// Describes the result of uploading an image resource +// ApiResponse - Describes the result of uploading an image resource type ApiResponse struct { Code int32 `json:"code,omitempty"` diff --git a/samples/server/petstore/go-api-server/go/model_category.go b/samples/server/petstore/go-api-server/go/model_category.go index ac0089074eef..5e6f9d247fa4 100644 --- a/samples/server/petstore/go-api-server/go/model_category.go +++ b/samples/server/petstore/go-api-server/go/model_category.go @@ -9,7 +9,7 @@ package petstoreserver -// A category for a pet +// Category - A category for a pet type Category struct { Id int64 `json:"id,omitempty"` diff --git a/samples/server/petstore/go-api-server/go/model_order.go b/samples/server/petstore/go-api-server/go/model_order.go index 8a57968de187..a9d8dbb79579 100644 --- a/samples/server/petstore/go-api-server/go/model_order.go +++ b/samples/server/petstore/go-api-server/go/model_order.go @@ -13,7 +13,7 @@ import ( "time" ) -// An order for a pets from the pet store +// Order - An order for a pets from the pet store type Order struct { Id int64 `json:"id,omitempty"` diff --git a/samples/server/petstore/go-api-server/go/model_pet.go b/samples/server/petstore/go-api-server/go/model_pet.go index 011fb899ab68..ff09e500be57 100644 --- a/samples/server/petstore/go-api-server/go/model_pet.go +++ b/samples/server/petstore/go-api-server/go/model_pet.go @@ -9,7 +9,7 @@ package petstoreserver -// A pet for sale in the pet store +// Pet - A pet for sale in the pet store type Pet struct { Id int64 `json:"id,omitempty"` diff --git a/samples/server/petstore/go-api-server/go/model_tag.go b/samples/server/petstore/go-api-server/go/model_tag.go index d2194bba546c..2fb07fb32c46 100644 --- a/samples/server/petstore/go-api-server/go/model_tag.go +++ b/samples/server/petstore/go-api-server/go/model_tag.go @@ -9,7 +9,7 @@ package petstoreserver -// A tag for a pet +// Tag - A tag for a pet type Tag struct { Id int64 `json:"id,omitempty"` diff --git a/samples/server/petstore/go-api-server/go/model_user.go b/samples/server/petstore/go-api-server/go/model_user.go index cb48644e59dc..8f40d0ac04cb 100644 --- a/samples/server/petstore/go-api-server/go/model_user.go +++ b/samples/server/petstore/go-api-server/go/model_user.go @@ -9,7 +9,7 @@ package petstoreserver -// A User who is purchasing from the pet store +// User - A User who is purchasing from the pet store type User struct { Id int64 `json:"id,omitempty"` diff --git a/samples/server/petstore/go-api-server/go/routers.go b/samples/server/petstore/go-api-server/go/routers.go index 1d6a6c0e1fb0..986ce371ad01 100644 --- a/samples/server/petstore/go-api-server/go/routers.go +++ b/samples/server/petstore/go-api-server/go/routers.go @@ -48,147 +48,147 @@ func Index(w http.ResponseWriter, r *http.Request) { } var routes = Routes{ - Route{ + { "Index", "GET", "/v2/", Index, }, - Route{ + { "AddPet", strings.ToUpper("Post"), "/v2/pet", AddPet, }, - Route{ + { "DeletePet", strings.ToUpper("Delete"), "/v2/pet/{petId}", DeletePet, }, - Route{ + { "FindPetsByStatus", strings.ToUpper("Get"), "/v2/pet/findByStatus", FindPetsByStatus, }, - Route{ + { "FindPetsByTags", strings.ToUpper("Get"), "/v2/pet/findByTags", FindPetsByTags, }, - Route{ + { "GetPetById", strings.ToUpper("Get"), "/v2/pet/{petId}", GetPetById, }, - Route{ + { "UpdatePet", strings.ToUpper("Put"), "/v2/pet", UpdatePet, }, - Route{ + { "UpdatePetWithForm", strings.ToUpper("Post"), "/v2/pet/{petId}", UpdatePetWithForm, }, - Route{ + { "UploadFile", strings.ToUpper("Post"), "/v2/pet/{petId}/uploadImage", UploadFile, }, - Route{ + { "DeleteOrder", strings.ToUpper("Delete"), "/v2/store/order/{orderId}", DeleteOrder, }, - Route{ + { "GetInventory", strings.ToUpper("Get"), "/v2/store/inventory", GetInventory, }, - Route{ + { "GetOrderById", strings.ToUpper("Get"), "/v2/store/order/{orderId}", GetOrderById, }, - Route{ + { "PlaceOrder", strings.ToUpper("Post"), "/v2/store/order", PlaceOrder, }, - Route{ + { "CreateUser", strings.ToUpper("Post"), "/v2/user", CreateUser, }, - Route{ + { "CreateUsersWithArrayInput", strings.ToUpper("Post"), "/v2/user/createWithArray", CreateUsersWithArrayInput, }, - Route{ + { "CreateUsersWithListInput", strings.ToUpper("Post"), "/v2/user/createWithList", CreateUsersWithListInput, }, - Route{ + { "DeleteUser", strings.ToUpper("Delete"), "/v2/user/{username}", DeleteUser, }, - Route{ + { "GetUserByName", strings.ToUpper("Get"), "/v2/user/{username}", GetUserByName, }, - Route{ + { "LoginUser", strings.ToUpper("Get"), "/v2/user/login", LoginUser, }, - Route{ + { "LogoutUser", strings.ToUpper("Get"), "/v2/user/logout", LogoutUser, }, - Route{ + { "UpdateUser", strings.ToUpper("Put"), "/v2/user/{username}", diff --git a/samples/server/petstore/jaxrs-cxf-annotated-base-path/.openapi-generator/VERSION b/samples/server/petstore/jaxrs-cxf-annotated-base-path/.openapi-generator/VERSION index 1c00c5181548..82602aa4190d 100644 --- a/samples/server/petstore/jaxrs-cxf-annotated-base-path/.openapi-generator/VERSION +++ b/samples/server/petstore/jaxrs-cxf-annotated-base-path/.openapi-generator/VERSION @@ -1 +1 @@ -3.0.2-SNAPSHOT \ No newline at end of file +3.0.3-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/jaxrs-cxf-cdi/.openapi-generator/VERSION b/samples/server/petstore/jaxrs-cxf-cdi/.openapi-generator/VERSION index 1c00c5181548..82602aa4190d 100644 --- a/samples/server/petstore/jaxrs-cxf-cdi/.openapi-generator/VERSION +++ b/samples/server/petstore/jaxrs-cxf-cdi/.openapi-generator/VERSION @@ -1 +1 @@ -3.0.2-SNAPSHOT \ No newline at end of file +3.0.3-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/jaxrs-cxf-non-spring-app/.openapi-generator/VERSION b/samples/server/petstore/jaxrs-cxf-non-spring-app/.openapi-generator/VERSION index 1c00c5181548..82602aa4190d 100644 --- a/samples/server/petstore/jaxrs-cxf-non-spring-app/.openapi-generator/VERSION +++ b/samples/server/petstore/jaxrs-cxf-non-spring-app/.openapi-generator/VERSION @@ -1 +1 @@ -3.0.2-SNAPSHOT \ No newline at end of file +3.0.3-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/jaxrs-cxf/.openapi-generator/VERSION b/samples/server/petstore/jaxrs-cxf/.openapi-generator/VERSION index 1c00c5181548..82602aa4190d 100644 --- a/samples/server/petstore/jaxrs-cxf/.openapi-generator/VERSION +++ b/samples/server/petstore/jaxrs-cxf/.openapi-generator/VERSION @@ -1 +1 @@ -3.0.2-SNAPSHOT \ No newline at end of file +3.0.3-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/jaxrs-datelib-j8/.openapi-generator/VERSION b/samples/server/petstore/jaxrs-datelib-j8/.openapi-generator/VERSION index 1c00c5181548..82602aa4190d 100644 --- a/samples/server/petstore/jaxrs-datelib-j8/.openapi-generator/VERSION +++ b/samples/server/petstore/jaxrs-datelib-j8/.openapi-generator/VERSION @@ -1 +1 @@ -3.0.2-SNAPSHOT \ No newline at end of file +3.0.3-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/jaxrs-resteasy/default/.openapi-generator/VERSION b/samples/server/petstore/jaxrs-resteasy/default/.openapi-generator/VERSION index 1c00c5181548..82602aa4190d 100644 --- a/samples/server/petstore/jaxrs-resteasy/default/.openapi-generator/VERSION +++ b/samples/server/petstore/jaxrs-resteasy/default/.openapi-generator/VERSION @@ -1 +1 @@ -3.0.2-SNAPSHOT \ No newline at end of file +3.0.3-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/jaxrs-resteasy/eap-java8/.openapi-generator/VERSION b/samples/server/petstore/jaxrs-resteasy/eap-java8/.openapi-generator/VERSION index 1c00c5181548..82602aa4190d 100644 --- a/samples/server/petstore/jaxrs-resteasy/eap-java8/.openapi-generator/VERSION +++ b/samples/server/petstore/jaxrs-resteasy/eap-java8/.openapi-generator/VERSION @@ -1 +1 @@ -3.0.2-SNAPSHOT \ No newline at end of file +3.0.3-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/jaxrs-resteasy/eap-joda/.openapi-generator/VERSION b/samples/server/petstore/jaxrs-resteasy/eap-joda/.openapi-generator/VERSION index 1c00c5181548..82602aa4190d 100644 --- a/samples/server/petstore/jaxrs-resteasy/eap-joda/.openapi-generator/VERSION +++ b/samples/server/petstore/jaxrs-resteasy/eap-joda/.openapi-generator/VERSION @@ -1 +1 @@ -3.0.2-SNAPSHOT \ No newline at end of file +3.0.3-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/jaxrs-resteasy/eap/.openapi-generator/VERSION b/samples/server/petstore/jaxrs-resteasy/eap/.openapi-generator/VERSION index 1c00c5181548..82602aa4190d 100644 --- a/samples/server/petstore/jaxrs-resteasy/eap/.openapi-generator/VERSION +++ b/samples/server/petstore/jaxrs-resteasy/eap/.openapi-generator/VERSION @@ -1 +1 @@ -3.0.2-SNAPSHOT \ No newline at end of file +3.0.3-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/jaxrs-resteasy/joda/.openapi-generator/VERSION b/samples/server/petstore/jaxrs-resteasy/joda/.openapi-generator/VERSION index 1c00c5181548..82602aa4190d 100644 --- a/samples/server/petstore/jaxrs-resteasy/joda/.openapi-generator/VERSION +++ b/samples/server/petstore/jaxrs-resteasy/joda/.openapi-generator/VERSION @@ -1 +1 @@ -3.0.2-SNAPSHOT \ No newline at end of file +3.0.3-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/jaxrs-spec-interface/.openapi-generator/VERSION b/samples/server/petstore/jaxrs-spec-interface/.openapi-generator/VERSION index 1c00c5181548..82602aa4190d 100644 --- a/samples/server/petstore/jaxrs-spec-interface/.openapi-generator/VERSION +++ b/samples/server/petstore/jaxrs-spec-interface/.openapi-generator/VERSION @@ -1 +1 @@ -3.0.2-SNAPSHOT \ No newline at end of file +3.0.3-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/jaxrs-spec/.openapi-generator/VERSION b/samples/server/petstore/jaxrs-spec/.openapi-generator/VERSION index 1c00c5181548..82602aa4190d 100644 --- a/samples/server/petstore/jaxrs-spec/.openapi-generator/VERSION +++ b/samples/server/petstore/jaxrs-spec/.openapi-generator/VERSION @@ -1 +1 @@ -3.0.2-SNAPSHOT \ No newline at end of file +3.0.3-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/jaxrs/jersey1-useTags/.openapi-generator/VERSION b/samples/server/petstore/jaxrs/jersey1-useTags/.openapi-generator/VERSION index 1c00c5181548..82602aa4190d 100644 --- a/samples/server/petstore/jaxrs/jersey1-useTags/.openapi-generator/VERSION +++ b/samples/server/petstore/jaxrs/jersey1-useTags/.openapi-generator/VERSION @@ -1 +1 @@ -3.0.2-SNAPSHOT \ No newline at end of file +3.0.3-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/jaxrs/jersey1/.openapi-generator/VERSION b/samples/server/petstore/jaxrs/jersey1/.openapi-generator/VERSION index 1c00c5181548..82602aa4190d 100644 --- a/samples/server/petstore/jaxrs/jersey1/.openapi-generator/VERSION +++ b/samples/server/petstore/jaxrs/jersey1/.openapi-generator/VERSION @@ -1 +1 @@ -3.0.2-SNAPSHOT \ No newline at end of file +3.0.3-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/jaxrs/jersey2-useTags/.openapi-generator/VERSION b/samples/server/petstore/jaxrs/jersey2-useTags/.openapi-generator/VERSION index 1c00c5181548..82602aa4190d 100644 --- a/samples/server/petstore/jaxrs/jersey2-useTags/.openapi-generator/VERSION +++ b/samples/server/petstore/jaxrs/jersey2-useTags/.openapi-generator/VERSION @@ -1 +1 @@ -3.0.2-SNAPSHOT \ No newline at end of file +3.0.3-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/jaxrs/jersey2/.openapi-generator/VERSION b/samples/server/petstore/jaxrs/jersey2/.openapi-generator/VERSION index 1c00c5181548..82602aa4190d 100644 --- a/samples/server/petstore/jaxrs/jersey2/.openapi-generator/VERSION +++ b/samples/server/petstore/jaxrs/jersey2/.openapi-generator/VERSION @@ -1 +1 @@ -3.0.2-SNAPSHOT \ No newline at end of file +3.0.3-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/php-lumen/.openapi-generator/VERSION b/samples/server/petstore/php-lumen/.openapi-generator/VERSION index 1c00c5181548..82602aa4190d 100644 --- a/samples/server/petstore/php-lumen/.openapi-generator/VERSION +++ b/samples/server/petstore/php-lumen/.openapi-generator/VERSION @@ -1 +1 @@ -3.0.2-SNAPSHOT \ No newline at end of file +3.0.3-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/php-slim/.openapi-generator/VERSION b/samples/server/petstore/php-slim/.openapi-generator/VERSION index 1c00c5181548..82602aa4190d 100644 --- a/samples/server/petstore/php-slim/.openapi-generator/VERSION +++ b/samples/server/petstore/php-slim/.openapi-generator/VERSION @@ -1 +1 @@ -3.0.2-SNAPSHOT \ No newline at end of file +3.0.3-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/php-symfony/.openapi-generator/VERSION b/samples/server/petstore/php-symfony/.openapi-generator/VERSION index 1c00c5181548..82602aa4190d 100644 --- a/samples/server/petstore/php-symfony/.openapi-generator/VERSION +++ b/samples/server/petstore/php-symfony/.openapi-generator/VERSION @@ -1 +1 @@ -3.0.2-SNAPSHOT \ No newline at end of file +3.0.3-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/php-ze-ph/.openapi-generator/VERSION b/samples/server/petstore/php-ze-ph/.openapi-generator/VERSION index 1c00c5181548..82602aa4190d 100644 --- a/samples/server/petstore/php-ze-ph/.openapi-generator/VERSION +++ b/samples/server/petstore/php-ze-ph/.openapi-generator/VERSION @@ -1 +1 @@ -3.0.2-SNAPSHOT \ No newline at end of file +3.0.3-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/rust-server/.openapi-generator-ignore b/samples/server/petstore/rust-server/.openapi-generator-ignore index c5fa491b4c55..7484ee590a38 100644 --- a/samples/server/petstore/rust-server/.openapi-generator-ignore +++ b/samples/server/petstore/rust-server/.openapi-generator-ignore @@ -1,11 +1,11 @@ -# Swagger Codegen Ignore -# Generated by swagger-codegen https://github.com/swagger-api/swagger-codegen +# OpenAPI Generator Ignore +# Generated by openapi-generator https://github.com/openapitools/openapi-generator # Use this file to prevent files from being overwritten by the generator. # The patterns follow closely to .gitignore or .dockerignore. # As an example, the C# client generator defines ApiClient.cs. -# You can make changes and tell Swagger Codgen to ignore just this file by uncommenting the following line: +# You can make changes and tell OpenAPI Generator to ignore just this file by uncommenting the following line: #ApiClient.cs # You can match any string of characters against a directory, file or extension with a single asterisk (*): diff --git a/samples/server/petstore/rust-server/.openapi-generator/VERSION b/samples/server/petstore/rust-server/.openapi-generator/VERSION index 855ff9501eb8..ad121e8340e0 100644 --- a/samples/server/petstore/rust-server/.openapi-generator/VERSION +++ b/samples/server/petstore/rust-server/.openapi-generator/VERSION @@ -1 +1 @@ -2.4.0-SNAPSHOT \ No newline at end of file +3.0.1-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/rust-server/Cargo.toml b/samples/server/petstore/rust-server/Cargo.toml index 6b264cc4709b..536506c88c6d 100644 --- a/samples/server/petstore/rust-server/Cargo.toml +++ b/samples/server/petstore/rust-server/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "petstore_api" version = "1.0.0" -authors = ["apiteam@swagger.io"] +authors = [] description = "This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\" license = "Unlicense" @@ -17,7 +17,7 @@ chrono = { version = "0.4", features = ["serde"] } futures = "0.1" hyper = {version = "0.11", optional = true} hyper-tls = {version = "0.1.2", optional = true} -swagger = "0.10.0" +swagger = "0.12.1" # Not required by example server. # diff --git a/samples/server/petstore/rust-server/README.md b/samples/server/petstore/rust-server/README.md index 7080b7d2e495..9d56541b6a93 100644 --- a/samples/server/petstore/rust-server/README.md +++ b/samples/server/petstore/rust-server/README.md @@ -3,17 +3,16 @@ This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ ## Overview -This client/server was generated by the [swagger-codegen] -(https://github.com/swagger-api/swagger-codegen) project. +This client/server was generated by the [openapi-generator] +(https://openapi-generator.tech) project. By using the [OpenAPI-Spec](https://github.com/OAI/OpenAPI-Specification) from a remote server, you can easily generate a server stub. - To see how to make this your own, look here: -[README](https://github.com/swagger-api/swagger-codegen/blob/master/README.md) +[README]((https://openapi-generator.tech)) - API version: 1.0.0 -- Build date: 2018-04-03T12:24:00.479+01:00 This autogenerated project defines an API crate `petstore_api` which contains: * An `Api` trait defining the API in Rust. @@ -57,11 +56,11 @@ To run a client, follow one of the following simple steps: ``` cargo run --example client TestSpecialTags -cargo run --example client TestBodyWithQueryParams cargo run --example client FakeOuterBooleanSerialize cargo run --example client FakeOuterCompositeSerialize cargo run --example client FakeOuterNumberSerialize cargo run --example client FakeOuterStringSerialize +cargo run --example client TestBodyWithQueryParams cargo run --example client TestClientModel cargo run --example client TestEndpointParameters cargo run --example client TestEnumParameters diff --git a/samples/server/petstore/rust-server/api/openapi.yaml b/samples/server/petstore/rust-server/api/openapi.yaml new file mode 100644 index 000000000000..37cff2cebd93 --- /dev/null +++ b/samples/server/petstore/rust-server/api/openapi.yaml @@ -0,0 +1,1456 @@ +openapi: 3.0.1 +info: + description: 'This spec is mainly for testing Petstore server and contains fake + endpoints, models. Please do not use this for any other purpose. Special characters: + " \' + license: + name: Apache-2.0 + url: http://www.apache.org/licenses/LICENSE-2.0.html + title: OpenAPI Petstore + version: 1.0.0 +servers: +- url: http://petstore.swagger.io:80/v2 +tags: +- description: Everything about your Pets + name: pet +- description: Access to Petstore orders + name: store +- description: Operations about user + name: user +paths: + /pet: + post: + operationId: addPet + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/Pet' + application/xml: + schema: + $ref: '#/components/schemas/Pet' + description: Pet object that needs to be added to the store + required: true + responses: + 405: + content: {} + description: Invalid input + security: + - petstore_auth: + - write:pets + - read:pets + summary: Add a new pet to the store + tags: + - pet + put: + operationId: updatePet + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/Pet' + application/xml: + schema: + $ref: '#/components/schemas/Pet' + description: Pet object that needs to be added to the store + required: true + responses: + 400: + content: {} + description: Invalid ID supplied + 404: + content: {} + description: Pet not found + 405: + content: {} + description: Validation exception + security: + - petstore_auth: + - write:pets + - read:pets + summary: Update an existing pet + tags: + - pet + /pet/findByStatus: + get: + description: Multiple status values can be provided with comma separated strings + operationId: findPetsByStatus + parameters: + - description: Status values that need to be considered for filter + explode: false + in: query + name: status + required: true + schema: + items: + default: available + enum: + - available + - pending + - sold + type: string + type: array + style: form + responses: + 200: + content: + application/xml: + schema: + items: + $ref: '#/components/schemas/Pet' + type: array + application/json: + schema: + items: + $ref: '#/components/schemas/Pet' + type: array + description: successful operation + 400: + content: {} + description: Invalid status value + security: + - petstore_auth: + - write:pets + - read:pets + summary: Finds Pets by status + tags: + - pet + /pet/findByTags: + get: + deprecated: true + description: Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing. + operationId: findPetsByTags + parameters: + - description: Tags to filter by + explode: false + in: query + name: tags + required: true + schema: + items: + type: string + type: array + style: form + responses: + 200: + content: + application/xml: + schema: + items: + $ref: '#/components/schemas/Pet' + type: array + application/json: + schema: + items: + $ref: '#/components/schemas/Pet' + type: array + description: successful operation + 400: + content: {} + description: Invalid tag value + security: + - petstore_auth: + - write:pets + - read:pets + summary: Finds Pets by tags + tags: + - pet + /pet/{petId}: + delete: + operationId: deletePet + parameters: + - in: header + name: api_key + schema: + type: string + - description: Pet id to delete + in: path + name: petId + required: true + schema: + format: int64 + type: integer + responses: + 400: + content: {} + description: Invalid pet value + security: + - petstore_auth: + - write:pets + - read:pets + summary: Deletes a pet + tags: + - pet + get: + description: Returns a single pet + operationId: getPetById + parameters: + - description: ID of pet to return + in: path + name: petId + required: true + schema: + format: int64 + type: integer + responses: + 200: + content: + application/xml: + schema: + $ref: '#/components/schemas/Pet' + application/json: + schema: + $ref: '#/components/schemas/Pet' + description: successful operation + 400: + content: {} + description: Invalid ID supplied + 404: + content: {} + description: Pet not found + security: + - api_key: [] + summary: Find pet by ID + tags: + - pet + post: + operationId: updatePetWithForm + parameters: + - description: ID of pet that needs to be updated + in: path + name: petId + required: true + schema: + format: int64 + type: integer + requestBody: + content: + application/x-www-form-urlencoded: + schema: + properties: + name: + description: Updated name of the pet + type: string + status: + description: Updated status of the pet + type: string + responses: + 405: + content: {} + description: Invalid input + security: + - petstore_auth: + - write:pets + - read:pets + summary: Updates a pet in the store with form data + tags: + - pet + /pet/{petId}/uploadImage: + post: + operationId: uploadFile + parameters: + - description: ID of pet to update + in: path + name: petId + required: true + schema: + format: int64 + type: integer + requestBody: + content: + multipart/form-data: + schema: + properties: + additionalMetadata: + description: Additional data to pass to server + type: string + file: + description: file to upload + format: binary + type: string + responses: + 200: + content: + application/json: + schema: + $ref: '#/components/schemas/ApiResponse' + description: successful operation + security: + - petstore_auth: + - write:pets + - read:pets + summary: uploads an image + tags: + - pet + /store/inventory: + get: + description: Returns a map of status codes to quantities + operationId: getInventory + responses: + 200: + content: + application/json: + schema: + additionalProperties: + format: int32 + type: integer + type: object + description: successful operation + security: + - api_key: [] + summary: Returns pet inventories by status + tags: + - store + /store/order: + post: + operationId: placeOrder + requestBody: + content: + '*/*': + schema: + $ref: '#/components/schemas/Order' + description: order placed for purchasing the pet + required: true + responses: + 200: + content: + application/xml: + schema: + $ref: '#/components/schemas/Order' + application/json: + schema: + $ref: '#/components/schemas/Order' + description: successful operation + 400: + content: {} + description: Invalid Order + summary: Place an order for a pet + tags: + - store + /store/order/{order_id}: + delete: + description: For valid response try integer IDs with value < 1000. Anything above 1000 or nonintegers will generate API errors + operationId: deleteOrder + parameters: + - description: ID of the order that needs to be deleted + in: path + name: order_id + required: true + schema: + type: string + responses: + 400: + content: {} + description: Invalid ID supplied + 404: + content: {} + description: Order not found + summary: Delete purchase order by ID + tags: + - store + get: + description: For valid response try integer IDs with value <= 5 or > 10. Other values will generated exceptions + operationId: getOrderById + parameters: + - description: ID of pet that needs to be fetched + in: path + name: order_id + required: true + schema: + format: int64 + maximum: 5 + minimum: 1 + type: integer + responses: + 200: + content: + application/xml: + schema: + $ref: '#/components/schemas/Order' + application/json: + schema: + $ref: '#/components/schemas/Order' + description: successful operation + 400: + content: {} + description: Invalid ID supplied + 404: + content: {} + description: Order not found + summary: Find purchase order by ID + tags: + - store + /user: + post: + description: This can only be done by the logged in user. + operationId: createUser + requestBody: + content: + '*/*': + schema: + $ref: '#/components/schemas/User' + description: Created user object + required: true + responses: + default: + content: {} + description: successful operation + summary: Create user + tags: + - user + /user/createWithArray: + post: + operationId: createUsersWithArrayInput + requestBody: + content: + '*/*': + schema: + items: + $ref: '#/components/schemas/User' + type: array + description: List of user object + required: true + responses: + default: + content: {} + description: successful operation + summary: Creates list of users with given input array + tags: + - user + /user/createWithList: + post: + operationId: createUsersWithListInput + requestBody: + content: + '*/*': + schema: + items: + $ref: '#/components/schemas/User' + type: array + description: List of user object + required: true + responses: + default: + content: {} + description: successful operation + summary: Creates list of users with given input array + tags: + - user + /user/login: + get: + operationId: loginUser + parameters: + - description: The user name for login + in: query + name: username + required: true + schema: + type: string + - description: The password for login in clear text + in: query + name: password + required: true + schema: + type: string + responses: + 400: + content: {} + description: Invalid username/password supplied + summary: Logs user into the system + tags: + - user + /user/logout: + get: + operationId: logoutUser + responses: + default: + content: {} + description: successful operation + summary: Logs out current logged in user session + tags: + - user + /user/{username}: + delete: + description: This can only be done by the logged in user. + operationId: deleteUser + parameters: + - description: The name that needs to be deleted + in: path + name: username + required: true + schema: + type: string + responses: + 400: + content: {} + description: Invalid username supplied + 404: + content: {} + description: User not found + summary: Delete user + tags: + - user + get: + operationId: getUserByName + parameters: + - description: The name that needs to be fetched. Use user1 for testing. + in: path + name: username + required: true + schema: + type: string + responses: + 200: + content: + application/xml: + schema: + $ref: '#/components/schemas/User' + application/json: + schema: + $ref: '#/components/schemas/User' + description: successful operation + 400: + content: {} + description: Invalid username supplied + 404: + content: {} + description: User not found + summary: Get user by user name + tags: + - user + put: + description: This can only be done by the logged in user. + operationId: updateUser + parameters: + - description: name that need to be deleted + in: path + name: username + required: true + schema: + type: string + requestBody: + content: + '*/*': + schema: + $ref: '#/components/schemas/User' + description: Updated user object + required: true + responses: + 400: + content: {} + description: Invalid user supplied + 404: + content: {} + description: User not found + summary: Updated user + tags: + - user + /fake_classname_test: + patch: + description: To test class name in snake case + operationId: testClassname + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/Client' + description: client model + required: true + responses: + 200: + content: + application/json: + schema: + $ref: '#/components/schemas/Client' + description: successful operation + security: + - api_key_query: [] + summary: To test class name in snake case + tags: + - fake_classname_tags 123#$%^ + /fake: + get: + description: To test enum parameters + operationId: testEnumParameters + parameters: + - description: Header parameter enum test (string array) + explode: false + in: header + name: enum_header_string_array + schema: + items: + default: $ + enum: + - '>' + - $ + type: string + type: array + style: simple + - description: Header parameter enum test (string) + in: header + name: enum_header_string + schema: + default: -efg + enum: + - _abc + - -efg + - (xyz) + type: string + - description: Query parameter enum test (string array) + explode: false + in: query + name: enum_query_string_array + schema: + items: + default: $ + enum: + - '>' + - $ + type: string + type: array + style: form + - description: Query parameter enum test (string) + in: query + name: enum_query_string + schema: + default: -efg + enum: + - _abc + - -efg + - (xyz) + type: string + - description: Query parameter enum test (double) + in: query + name: enum_query_integer + schema: + enum: + - 1 + - -2 + format: int32 + type: integer + - description: Query parameter enum test (double) + in: query + name: enum_query_double + schema: + enum: + - 1.1 + - -1.2 + format: double + type: number + responses: + 400: + content: {} + description: Invalid request + 404: + content: {} + description: Not found + summary: To test enum parameters + tags: + - fake + patch: + description: To test "client" model + operationId: testClientModel + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/Client' + description: client model + required: true + responses: + 200: + content: + application/json: + schema: + $ref: '#/components/schemas/Client' + description: successful operation + summary: To test "client" model + tags: + - fake + post: + description: | + Fake endpoint for testing various parameters + 假端點 + 偽のエンドポイント + 가짜 엔드 포인트 + operationId: testEndpointParameters + requestBody: + content: + application/x-www-form-urlencoded: + schema: + properties: + integer: + description: None + maximum: 100 + minimum: 10 + type: integer + int32: + description: None + format: int32 + maximum: 200 + minimum: 20 + type: integer + int64: + description: None + format: int64 + type: integer + number: + description: None + maximum: 543.2 + minimum: 32.1 + type: number + float: + description: None + format: float + maximum: 987.6 + type: number + double: + description: None + format: double + maximum: 123.4 + minimum: 67.8 + type: number + string: + description: None + pattern: /[a-z]/i + type: string + pattern_without_delimiter: + description: None + pattern: ^[A-Z].* + type: string + binary: + description: None + format: binary + type: string + date: + description: None + format: date + type: string + dateTime: + description: None + format: date-time + type: string + password: + description: None + format: password + maxLength: 64 + minLength: 10 + type: string + callback: + description: None + type: string + required: + - double + - number + - pattern_without_delimiter + required: true + responses: + 400: + content: {} + description: Invalid username supplied + 404: + content: {} + description: User not found + security: + - http_basic_test: [] + summary: | + Fake endpoint for testing various parameters + 假端點 + 偽のエンドポイント + 가짜 엔드 포인트 + tags: + - fake + /fake/outer/number: + post: + description: Test serialization of outer number types + operationId: fakeOuterNumberSerialize + requestBody: + content: + '*/*': + schema: + $ref: '#/components/schemas/OuterNumber' + description: Input number as post body + required: false + responses: + 200: + content: + '*/*': + schema: + $ref: '#/components/schemas/OuterNumber' + description: Output number + tags: + - fake + /fake/outer/string: + post: + description: Test serialization of outer string types + operationId: fakeOuterStringSerialize + requestBody: + content: + '*/*': + schema: + $ref: '#/components/schemas/OuterString' + description: Input string as post body + required: false + responses: + 200: + content: + '*/*': + schema: + $ref: '#/components/schemas/OuterString' + description: Output string + tags: + - fake + /fake/outer/boolean: + post: + description: Test serialization of outer boolean types + operationId: fakeOuterBooleanSerialize + requestBody: + content: + '*/*': + schema: + $ref: '#/components/schemas/OuterBoolean' + description: Input boolean as post body + required: false + responses: + 200: + content: + '*/*': + schema: + $ref: '#/components/schemas/OuterBoolean' + description: Output boolean + tags: + - fake + /fake/outer/composite: + post: + description: Test serialization of object with outer number type + operationId: fakeOuterCompositeSerialize + requestBody: + content: + '*/*': + schema: + $ref: '#/components/schemas/OuterComposite' + description: Input composite as post body + required: false + responses: + 200: + content: + '*/*': + schema: + $ref: '#/components/schemas/OuterComposite' + description: Output composite + tags: + - fake + /fake/jsonFormData: + get: + operationId: testJsonFormData + requestBody: + content: + application/x-www-form-urlencoded: + schema: + properties: + param: + description: field1 + type: string + param2: + description: field2 + type: string + required: + - param + - param2 + required: true + responses: + 200: + content: {} + description: successful operation + summary: test json serialization of form data + tags: + - fake + /fake/inline-additionalProperties: + post: + operationId: testInlineAdditionalProperties + requestBody: + content: + application/json: + schema: + additionalProperties: + type: string + type: object + description: request body + required: true + responses: + 200: + content: {} + description: successful operation + summary: test inline additionalProperties + tags: + - fake + /fake/body-with-query-params: + put: + operationId: testBodyWithQueryParams + parameters: + - in: query + name: query + required: true + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/User' + required: true + responses: + 200: + content: {} + description: Success + tags: + - fake + /another-fake/dummy: + patch: + description: To test special tags + operationId: test_special_tags + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/Client' + description: client model + required: true + responses: + 200: + content: + application/json: + schema: + $ref: '#/components/schemas/Client' + description: successful operation + summary: To test special tags + tags: + - $another-fake? +components: + schemas: + Category: + example: + name: name + id: 6 + properties: + id: + format: int64 + type: integer + name: + type: string + type: object + xml: + name: Category + User: + example: + firstName: firstName + lastName: lastName + password: password + userStatus: 6 + phone: phone + id: 0 + email: email + username: username + properties: + id: + format: int64 + type: integer + x-is-unique: true + username: + type: string + firstName: + type: string + lastName: + type: string + email: + type: string + password: + type: string + phone: + type: string + userStatus: + description: User Status + format: int32 + type: integer + type: object + xml: + name: User + OuterNumber: + type: number + ArrayOfNumberOnly: + properties: + ArrayNumber: + items: + type: number + type: array + type: object + Capitalization: + properties: + smallCamel: + type: string + CapitalCamel: + type: string + small_Snake: + type: string + Capital_Snake: + type: string + SCA_ETH_Flow_Points: + type: string + ATT_NAME: + description: | + Name of the pet + type: string + type: object + MixedPropertiesAndAdditionalPropertiesClass: + properties: + uuid: + format: uuid + type: string + dateTime: + format: date-time + type: string + map: + additionalProperties: + $ref: '#/components/schemas/Animal' + type: object + type: object + ApiResponse: + example: + code: 0 + type: type + message: message + properties: + code: + format: int32 + type: integer + type: + type: string + message: + type: string + type: object + Name: + description: Model for testing model name same as property name + properties: + name: + format: int32 + type: integer + snake_case: + format: int32 + readOnly: true + type: integer + property: + type: string + 123Number: + readOnly: true + type: integer + required: + - name + type: object + xml: + name: Name + EnumClass: + default: -efg + enum: + - _abc + - -efg + - (xyz) + type: string + List: + properties: + 123-list: + type: string + type: object + NumberOnly: + properties: + JustNumber: + type: number + type: object + 200_response: + description: Model for testing model name starting with number + properties: + name: + format: int32 + type: integer + class: + type: string + type: object + xml: + name: Name + Client: + example: + client: client + properties: + client: + type: string + type: object + Dog: + allOf: + - $ref: '#/components/schemas/Animal' + - properties: + breed: + type: string + type: object + Enum_Test: + properties: + enum_string: + enum: + - UPPER + - lower + - "" + type: string + enum_string_required: + enum: + - UPPER + - lower + - "" + type: string + enum_integer: + enum: + - 1 + - -1 + format: int32 + type: integer + enum_number: + enum: + - 1.1 + - -1.2 + format: double + type: number + outerEnum: + $ref: '#/components/schemas/OuterEnum' + required: + - enum_string_required + type: object + Order: + example: + petId: 6 + quantity: 1 + id: 0 + shipDate: 2000-01-23T04:56:07.000+00:00 + complete: false + status: placed + properties: + id: + format: int64 + type: integer + petId: + format: int64 + type: integer + quantity: + format: int32 + type: integer + shipDate: + format: date-time + type: string + status: + description: Order Status + enum: + - placed + - approved + - delivered + type: string + complete: + default: false + type: boolean + type: object + xml: + name: Order + AdditionalPropertiesClass: + properties: + map_property: + additionalProperties: + type: string + type: object + map_of_map_property: + additionalProperties: + additionalProperties: + type: string + type: object + type: object + type: object + $special[model.name]: + properties: + $special[property.name]: + format: int64 + type: integer + type: object + xml: + name: $special[model.name] + Return: + description: Model for testing reserved words + properties: + return: + format: int32 + type: integer + type: object + xml: + name: Return + ReadOnlyFirst: + properties: + bar: + readOnly: true + type: string + baz: + type: string + type: object + ArrayOfArrayOfNumberOnly: + properties: + ArrayArrayNumber: + items: + items: + type: number + type: array + type: array + type: object + OuterEnum: + enum: + - placed + - approved + - delivered + type: string + ArrayTest: + properties: + array_of_string: + items: + type: string + type: array + array_array_of_integer: + items: + items: + format: int64 + type: integer + type: array + type: array + array_array_of_model: + items: + items: + $ref: '#/components/schemas/ReadOnlyFirst' + type: array + type: array + type: object + OuterComposite: + example: {} + properties: + my_number: + $ref: '#/components/schemas/OuterNumber' + my_string: + $ref: '#/components/schemas/OuterString' + my_boolean: + $ref: '#/components/schemas/OuterBoolean' + type: object + format_test: + properties: + integer: + maximum: 1E+2 + minimum: 1E+1 + type: integer + int32: + format: int32 + maximum: 2E+2 + minimum: 2E+1 + type: integer + int64: + format: int64 + type: integer + number: + maximum: 543.2 + minimum: 32.1 + type: number + float: + format: float + maximum: 987.6 + minimum: 54.3 + type: number + double: + format: double + maximum: 123.4 + minimum: 67.8 + type: number + string: + pattern: /[a-z]/i + type: string + byte: + format: byte + pattern: ^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$ + type: string + date: + format: date + type: string + dateTime: + format: date-time + type: string + uuid: + format: uuid + type: string + password: + format: password + maxLength: 64 + minLength: 10 + type: string + required: + - byte + - date + - number + - password + type: object + EnumArrays: + properties: + just_symbol: + enum: + - '>=' + - $ + type: string + array_enum: + items: + enum: + - fish + - crab + type: string + type: array + type: object + OuterString: + type: string + ClassModel: + description: Model for testing model with "_class" property + properties: + _class: + type: string + type: object + OuterBoolean: + type: boolean + x-codegen-body-parameter-name: boolean_post_body + Animal: + discriminator: + propertyName: className + properties: + className: + type: string + color: + default: red + type: string + required: + - className + type: object + Cat: + allOf: + - $ref: '#/components/schemas/Animal' + - properties: + declawed: + type: boolean + type: object + MapTest: + properties: + map_map_of_string: + additionalProperties: + additionalProperties: + type: string + type: object + type: object + map_of_enum_string: + additionalProperties: + enum: + - UPPER + - lower + type: string + type: object + type: object + Tag: + example: + name: name + id: 1 + properties: + id: + format: int64 + type: integer + name: + type: string + type: object + xml: + name: Tag + AnimalFarm: + items: + $ref: '#/components/schemas/Animal' + type: array + Pet: + example: + photoUrls: + - photoUrls + - photoUrls + name: doggie + id: 0 + category: + name: name + id: 6 + tags: + - name: name + id: 1 + - name: name + id: 1 + status: available + properties: + id: + format: int64 + type: integer + x-is-unique: true + category: + $ref: '#/components/schemas/Category' + name: + example: doggie + type: string + photoUrls: + items: + type: string + type: array + xml: + name: photoUrl + wrapped: true + tags: + items: + $ref: '#/components/schemas/Tag' + type: array + xml: + name: tag + wrapped: true + status: + description: pet status in the store + enum: + - available + - pending + - sold + type: string + required: + - name + - photoUrls + type: object + xml: + name: Pet + hasOnlyReadOnly: + properties: + bar: + readOnly: true + type: string + foo: + readOnly: true + type: string + type: object + securitySchemes: + petstore_auth: + flows: + implicit: + authorizationUrl: http://petstore.swagger.io/api/oauth/dialog + scopes: + write:pets: modify pets in your account + read:pets: read your pets + type: oauth2 + http_basic_test: + scheme: basic + type: http + api_key: + in: header + name: api_key + type: apiKey + api_key_query: + in: query + name: api_key_query + type: apiKey + diff --git a/samples/server/petstore/rust-server/api/swagger.yaml b/samples/server/petstore/rust-server/api/swagger.yaml deleted file mode 100644 index 3849ef4c25a5..000000000000 --- a/samples/server/petstore/rust-server/api/swagger.yaml +++ /dev/null @@ -1,2122 +0,0 @@ ---- -swagger: "2.0" -info: - description: "This spec is mainly for testing Petstore server and contains fake\ - \ endpoints, models. Please do not use this for any other purpose. Special characters:\ - \ \" \\" - version: "1.0.0" - title: "Swagger Petstore" - termsOfService: "http://swagger.io/terms/" - contact: - email: "apiteam@swagger.io" - license: - name: "Apache-2.0" - url: "http://www.apache.org/licenses/LICENSE-2.0.html" -host: "petstore.swagger.io:80" -basePath: "/v2" -tags: -- name: "pet" - description: "Everything about your Pets" - externalDocs: - description: "Find out more" - url: "http://swagger.io" -- name: "store" - description: "Access to Petstore orders" -- name: "user" - description: "Operations about user" - externalDocs: - description: "Find out more about our store" - url: "http://swagger.io" -schemes: -- "http" -paths: - /pet: - post: - tags: - - "pet" - summary: "Add a new pet to the store" - description: "" - operationId: "addPet" - consumes: - - "application/json" - - "application/xml" - produces: - - "application/xml" - - "application/json" - parameters: - - in: "body" - name: "body" - description: "Pet object that needs to be added to the store" - required: true - schema: - $ref: "#/definitions/Pet" - uppercase_data_type: "PET" - refName: "Pet" - formatString: "{:?}" - example: "???" - model_key: "OuterBoolean" - uppercase_operation_id: "ADD_PET" - consumesXml: true - responses: - 405: - description: "Invalid input" - x-responseId: "InvalidInput" - x-uppercaseResponseId: "INVALID_INPUT" - uppercase_operation_id: "ADD_PET" - security: - - petstore_auth: - - "write:pets" - - "read:pets" - operation_id: "add_pet" - uppercase_operation_id: "ADD_PET" - path: "/pet" - PATH_ID: "PET" - hasPathParams: false - HttpMethod: "Post" - noClientExample: true - put: - tags: - - "pet" - summary: "Update an existing pet" - description: "" - operationId: "updatePet" - consumes: - - "application/json" - - "application/xml" - produces: - - "application/xml" - - "application/json" - parameters: - - in: "body" - name: "body" - description: "Pet object that needs to be added to the store" - required: true - schema: - $ref: "#/definitions/Pet" - uppercase_data_type: "PET" - refName: "Pet" - formatString: "{:?}" - example: "???" - model_key: "OuterBoolean" - uppercase_operation_id: "UPDATE_PET" - consumesXml: true - responses: - 400: - description: "Invalid ID supplied" - x-responseId: "InvalidIDSupplied" - x-uppercaseResponseId: "INVALID_ID_SUPPLIED" - uppercase_operation_id: "UPDATE_PET" - 404: - description: "Pet not found" - x-responseId: "PetNotFound" - x-uppercaseResponseId: "PET_NOT_FOUND" - uppercase_operation_id: "UPDATE_PET" - 405: - description: "Validation exception" - x-responseId: "ValidationException" - x-uppercaseResponseId: "VALIDATION_EXCEPTION" - uppercase_operation_id: "UPDATE_PET" - security: - - petstore_auth: - - "write:pets" - - "read:pets" - operation_id: "update_pet" - uppercase_operation_id: "UPDATE_PET" - path: "/pet" - PATH_ID: "PET" - hasPathParams: false - HttpMethod: "Put" - noClientExample: true - /pet/findByStatus: - get: - tags: - - "pet" - summary: "Finds Pets by status" - description: "Multiple status values can be provided with comma separated strings" - operationId: "findPetsByStatus" - produces: - - "application/xml" - - "application/json" - parameters: - - name: "status" - in: "query" - description: "Status values that need to be considered for filter" - required: true - type: "array" - items: - type: "string" - default: "available" - enum: - - "available" - - "pending" - - "sold" - collectionFormat: "csv" - formatString: "{:?}" - example: "&Vec::new()" - responses: - 200: - description: "successful operation" - schema: - type: "array" - items: - $ref: "#/definitions/Pet" - x-responseId: "SuccessfulOperation" - x-uppercaseResponseId: "SUCCESSFUL_OPERATION" - uppercase_operation_id: "FIND_PETS_BY_STATUS" - uppercase_data_type: "VEC" - producesXml: true - 400: - description: "Invalid status value" - x-responseId: "InvalidStatusValue" - x-uppercaseResponseId: "INVALID_STATUS_VALUE" - uppercase_operation_id: "FIND_PETS_BY_STATUS" - security: - - petstore_auth: - - "write:pets" - - "read:pets" - operation_id: "find_pets_by_status" - uppercase_operation_id: "FIND_PETS_BY_STATUS" - path: "/pet/findByStatus" - PATH_ID: "PET_FINDBYSTATUS" - hasPathParams: false - HttpMethod: "Get" - /pet/findByTags: - get: - tags: - - "pet" - summary: "Finds Pets by tags" - description: "Multiple tags can be provided with comma separated strings. Use\ - \ tag1, tag2, tag3 for testing." - operationId: "findPetsByTags" - produces: - - "application/xml" - - "application/json" - parameters: - - name: "tags" - in: "query" - description: "Tags to filter by" - required: true - type: "array" - items: - type: "string" - collectionFormat: "csv" - formatString: "{:?}" - example: "&Vec::new()" - responses: - 200: - description: "successful operation" - schema: - type: "array" - items: - $ref: "#/definitions/Pet" - x-responseId: "SuccessfulOperation" - x-uppercaseResponseId: "SUCCESSFUL_OPERATION" - uppercase_operation_id: "FIND_PETS_BY_TAGS" - uppercase_data_type: "VEC" - producesXml: true - 400: - description: "Invalid tag value" - x-responseId: "InvalidTagValue" - x-uppercaseResponseId: "INVALID_TAG_VALUE" - uppercase_operation_id: "FIND_PETS_BY_TAGS" - security: - - petstore_auth: - - "write:pets" - - "read:pets" - deprecated: true - operation_id: "find_pets_by_tags" - uppercase_operation_id: "FIND_PETS_BY_TAGS" - path: "/pet/findByTags" - PATH_ID: "PET_FINDBYTAGS" - hasPathParams: false - HttpMethod: "Get" - /pet/{petId}: - get: - tags: - - "pet" - summary: "Find pet by ID" - description: "Returns a single pet" - operationId: "getPetById" - produces: - - "application/xml" - - "application/json" - parameters: - - name: "petId" - in: "path" - description: "ID of pet to return" - required: true - type: "integer" - format: "int64" - formatString: "{}" - example: "789" - responses: - 200: - description: "successful operation" - schema: - $ref: "#/definitions/Pet" - x-responseId: "SuccessfulOperation" - x-uppercaseResponseId: "SUCCESSFUL_OPERATION" - uppercase_operation_id: "GET_PET_BY_ID" - uppercase_data_type: "PET" - producesXml: true - 400: - description: "Invalid ID supplied" - x-responseId: "InvalidIDSupplied" - x-uppercaseResponseId: "INVALID_ID_SUPPLIED" - uppercase_operation_id: "GET_PET_BY_ID" - 404: - description: "Pet not found" - x-responseId: "PetNotFound" - x-uppercaseResponseId: "PET_NOT_FOUND" - uppercase_operation_id: "GET_PET_BY_ID" - security: - - api_key: [] - operation_id: "get_pet_by_id" - uppercase_operation_id: "GET_PET_BY_ID" - path: "/pet/:petId" - PATH_ID: "PET_PETID" - hasPathParams: true - HttpMethod: "Get" - post: - tags: - - "pet" - summary: "Updates a pet in the store with form data" - description: "" - operationId: "updatePetWithForm" - consumes: - - "application/x-www-form-urlencoded" - produces: - - "application/xml" - - "application/json" - parameters: - - name: "petId" - in: "path" - description: "ID of pet that needs to be updated" - required: true - type: "integer" - format: "int64" - formatString: "{}" - example: "789" - - name: "name" - in: "formData" - description: "Updated name of the pet" - required: false - type: "string" - formatString: "{:?}" - example: "Some(\"name_example\".to_string())" - - name: "status" - in: "formData" - description: "Updated status of the pet" - required: false - type: "string" - formatString: "{:?}" - example: "Some(\"status_example\".to_string())" - responses: - 405: - description: "Invalid input" - x-responseId: "InvalidInput" - x-uppercaseResponseId: "INVALID_INPUT" - uppercase_operation_id: "UPDATE_PET_WITH_FORM" - security: - - petstore_auth: - - "write:pets" - - "read:pets" - operation_id: "update_pet_with_form" - uppercase_operation_id: "UPDATE_PET_WITH_FORM" - path: "/pet/:petId" - PATH_ID: "PET_PETID" - hasPathParams: true - HttpMethod: "Post" - delete: - tags: - - "pet" - summary: "Deletes a pet" - description: "" - operationId: "deletePet" - produces: - - "application/xml" - - "application/json" - parameters: - - name: "api_key" - in: "header" - required: false - type: "string" - formatString: "{:?}" - example: "Some(\"api_key_example\".to_string())" - - name: "petId" - in: "path" - description: "Pet id to delete" - required: true - type: "integer" - format: "int64" - formatString: "{}" - example: "789" - responses: - 400: - description: "Invalid pet value" - x-responseId: "InvalidPetValue" - x-uppercaseResponseId: "INVALID_PET_VALUE" - uppercase_operation_id: "DELETE_PET" - security: - - petstore_auth: - - "write:pets" - - "read:pets" - operation_id: "delete_pet" - uppercase_operation_id: "DELETE_PET" - path: "/pet/:petId" - PATH_ID: "PET_PETID" - hasPathParams: true - HttpMethod: "Delete" - /pet/{petId}/uploadImage: - post: - tags: - - "pet" - summary: "uploads an image" - description: "" - operationId: "uploadFile" - consumes: - - "multipart/form-data" - produces: - - "application/json" - parameters: - - name: "petId" - in: "path" - description: "ID of pet to update" - required: true - type: "integer" - format: "int64" - formatString: "{}" - example: "789" - - name: "additionalMetadata" - in: "formData" - description: "Additional data to pass to server" - required: false - type: "string" - formatString: "{:?}" - example: "Some(\"additional_metadata_example\".to_string())" - - name: "file" - in: "formData" - description: "file to upload" - required: false - type: "file" - formatString: "{:?}" - example: "Box::new(future::ok(Some(Box::new(stream::once(Ok(b\"hello\".to_vec())))\ - \ as Box + Send>))) as Box\ - \ + Send>" - responses: - 200: - description: "successful operation" - schema: - $ref: "#/definitions/ApiResponse" - x-responseId: "SuccessfulOperation" - x-uppercaseResponseId: "SUCCESSFUL_OPERATION" - uppercase_operation_id: "UPLOAD_FILE" - uppercase_data_type: "APIRESPONSE" - producesJson: true - security: - - petstore_auth: - - "write:pets" - - "read:pets" - operation_id: "upload_file" - uppercase_operation_id: "UPLOAD_FILE" - path: "/pet/:petId/uploadImage" - PATH_ID: "PET_PETID_UPLOADIMAGE" - hasPathParams: true - HttpMethod: "Post" - hasFile: true - /store/inventory: - get: - tags: - - "store" - summary: "Returns pet inventories by status" - description: "Returns a map of status codes to quantities" - operationId: "getInventory" - produces: - - "application/json" - parameters: [] - responses: - 200: - description: "successful operation" - schema: - type: "object" - additionalProperties: - type: "integer" - format: "int32" - x-responseId: "SuccessfulOperation" - x-uppercaseResponseId: "SUCCESSFUL_OPERATION" - uppercase_operation_id: "GET_INVENTORY" - uppercase_data_type: "HASHMAP" - producesJson: true - security: - - api_key: [] - operation_id: "get_inventory" - uppercase_operation_id: "GET_INVENTORY" - path: "/store/inventory" - PATH_ID: "STORE_INVENTORY" - hasPathParams: false - HttpMethod: "Get" - /store/order: - post: - tags: - - "store" - summary: "Place an order for a pet" - description: "" - operationId: "placeOrder" - produces: - - "application/xml" - - "application/json" - parameters: - - in: "body" - name: "body" - description: "order placed for purchasing the pet" - required: true - schema: - $ref: "#/definitions/Order" - uppercase_data_type: "ORDER" - refName: "Order" - formatString: "{:?}" - example: "???" - model_key: "OuterBoolean" - uppercase_operation_id: "PLACE_ORDER" - consumesJson: true - responses: - 200: - description: "successful operation" - schema: - $ref: "#/definitions/Order" - x-responseId: "SuccessfulOperation" - x-uppercaseResponseId: "SUCCESSFUL_OPERATION" - uppercase_operation_id: "PLACE_ORDER" - uppercase_data_type: "ORDER" - producesXml: true - 400: - description: "Invalid Order" - x-responseId: "InvalidOrder" - x-uppercaseResponseId: "INVALID_ORDER" - uppercase_operation_id: "PLACE_ORDER" - operation_id: "place_order" - uppercase_operation_id: "PLACE_ORDER" - path: "/store/order" - PATH_ID: "STORE_ORDER" - hasPathParams: false - HttpMethod: "Post" - noClientExample: true - /store/order/{order_id}: - get: - tags: - - "store" - summary: "Find purchase order by ID" - description: "For valid response try integer IDs with value <= 5 or > 10. Other\ - \ values will generated exceptions" - operationId: "getOrderById" - produces: - - "application/xml" - - "application/json" - parameters: - - name: "order_id" - in: "path" - description: "ID of pet that needs to be fetched" - required: true - type: "integer" - maximum: 5 - minimum: 1 - format: "int64" - formatString: "{}" - example: "789" - responses: - 200: - description: "successful operation" - schema: - $ref: "#/definitions/Order" - x-responseId: "SuccessfulOperation" - x-uppercaseResponseId: "SUCCESSFUL_OPERATION" - uppercase_operation_id: "GET_ORDER_BY_ID" - uppercase_data_type: "ORDER" - producesXml: true - 400: - description: "Invalid ID supplied" - x-responseId: "InvalidIDSupplied" - x-uppercaseResponseId: "INVALID_ID_SUPPLIED" - uppercase_operation_id: "GET_ORDER_BY_ID" - 404: - description: "Order not found" - x-responseId: "OrderNotFound" - x-uppercaseResponseId: "ORDER_NOT_FOUND" - uppercase_operation_id: "GET_ORDER_BY_ID" - operation_id: "get_order_by_id" - uppercase_operation_id: "GET_ORDER_BY_ID" - path: "/store/order/:order_id" - PATH_ID: "STORE_ORDER_ORDER_ID" - hasPathParams: true - HttpMethod: "Get" - delete: - tags: - - "store" - summary: "Delete purchase order by ID" - description: "For valid response try integer IDs with value < 1000. Anything\ - \ above 1000 or nonintegers will generate API errors" - operationId: "deleteOrder" - produces: - - "application/xml" - - "application/json" - parameters: - - name: "order_id" - in: "path" - description: "ID of the order that needs to be deleted" - required: true - type: "string" - formatString: "\\\"{}\\\"" - example: "\"order_id_example\".to_string()" - responses: - 400: - description: "Invalid ID supplied" - x-responseId: "InvalidIDSupplied" - x-uppercaseResponseId: "INVALID_ID_SUPPLIED" - uppercase_operation_id: "DELETE_ORDER" - 404: - description: "Order not found" - x-responseId: "OrderNotFound" - x-uppercaseResponseId: "ORDER_NOT_FOUND" - uppercase_operation_id: "DELETE_ORDER" - operation_id: "delete_order" - uppercase_operation_id: "DELETE_ORDER" - path: "/store/order/:order_id" - PATH_ID: "STORE_ORDER_ORDER_ID" - hasPathParams: true - HttpMethod: "Delete" - /user: - post: - tags: - - "user" - summary: "Create user" - description: "This can only be done by the logged in user." - operationId: "createUser" - produces: - - "application/xml" - - "application/json" - parameters: - - in: "body" - name: "body" - description: "Created user object" - required: true - schema: - $ref: "#/definitions/User" - uppercase_data_type: "USER" - refName: "User" - formatString: "{:?}" - example: "???" - model_key: "OuterBoolean" - uppercase_operation_id: "CREATE_USER" - consumesJson: true - responses: - default: - description: "successful operation" - x-responseId: "SuccessfulOperation" - x-uppercaseResponseId: "SUCCESSFUL_OPERATION" - uppercase_operation_id: "CREATE_USER" - operation_id: "create_user" - uppercase_operation_id: "CREATE_USER" - path: "/user" - PATH_ID: "USER" - hasPathParams: false - HttpMethod: "Post" - noClientExample: true - /user/createWithArray: - post: - tags: - - "user" - summary: "Creates list of users with given input array" - description: "" - operationId: "createUsersWithArrayInput" - produces: - - "application/xml" - - "application/json" - parameters: - - in: "body" - name: "body" - description: "List of user object" - required: true - schema: - type: "array" - items: - $ref: "#/definitions/User" - formatString: "{:?}" - example: "&Vec::new()" - model_key: "OuterBoolean" - uppercase_operation_id: "CREATE_USERS_WITH_ARRAY_INPUT" - consumesJson: true - responses: - default: - description: "successful operation" - x-responseId: "SuccessfulOperation" - x-uppercaseResponseId: "SUCCESSFUL_OPERATION" - uppercase_operation_id: "CREATE_USERS_WITH_ARRAY_INPUT" - operation_id: "create_users_with_array_input" - uppercase_operation_id: "CREATE_USERS_WITH_ARRAY_INPUT" - path: "/user/createWithArray" - PATH_ID: "USER_CREATEWITHARRAY" - hasPathParams: false - HttpMethod: "Post" - /user/createWithList: - post: - tags: - - "user" - summary: "Creates list of users with given input array" - description: "" - operationId: "createUsersWithListInput" - produces: - - "application/xml" - - "application/json" - parameters: - - in: "body" - name: "body" - description: "List of user object" - required: true - schema: - type: "array" - items: - $ref: "#/definitions/User" - formatString: "{:?}" - example: "&Vec::new()" - model_key: "OuterBoolean" - uppercase_operation_id: "CREATE_USERS_WITH_LIST_INPUT" - consumesJson: true - responses: - default: - description: "successful operation" - x-responseId: "SuccessfulOperation" - x-uppercaseResponseId: "SUCCESSFUL_OPERATION" - uppercase_operation_id: "CREATE_USERS_WITH_LIST_INPUT" - operation_id: "create_users_with_list_input" - uppercase_operation_id: "CREATE_USERS_WITH_LIST_INPUT" - path: "/user/createWithList" - PATH_ID: "USER_CREATEWITHLIST" - hasPathParams: false - HttpMethod: "Post" - /user/login: - get: - tags: - - "user" - summary: "Logs user into the system" - description: "" - operationId: "loginUser" - produces: - - "application/xml" - - "application/json" - parameters: - - name: "username" - in: "query" - description: "The user name for login" - required: true - type: "string" - formatString: "\\\"{}\\\"" - example: "\"username_example\".to_string()" - - name: "password" - in: "query" - description: "The password for login in clear text" - required: true - type: "string" - formatString: "\\\"{}\\\"" - example: "\"password_example\".to_string()" - responses: - 200: - description: "successful operation" - schema: - type: "string" - headers: - X-Rate-Limit: - type: "integer" - format: "int32" - description: "calls per hour allowed by the user" - X-Expires-After: - type: "string" - format: "date-time" - description: "date in UTC when token expires" - x-responseId: "SuccessfulOperation" - x-uppercaseResponseId: "SUCCESSFUL_OPERATION" - uppercase_operation_id: "LOGIN_USER" - uppercase_data_type: "STRING" - producesXml: true - 400: - description: "Invalid username/password supplied" - x-responseId: "InvalidUsername" - x-uppercaseResponseId: "INVALID_USERNAME" - uppercase_operation_id: "LOGIN_USER" - operation_id: "login_user" - uppercase_operation_id: "LOGIN_USER" - path: "/user/login" - PATH_ID: "USER_LOGIN" - hasPathParams: false - HttpMethod: "Get" - /user/logout: - get: - tags: - - "user" - summary: "Logs out current logged in user session" - description: "" - operationId: "logoutUser" - produces: - - "application/xml" - - "application/json" - parameters: [] - responses: - default: - description: "successful operation" - x-responseId: "SuccessfulOperation" - x-uppercaseResponseId: "SUCCESSFUL_OPERATION" - uppercase_operation_id: "LOGOUT_USER" - operation_id: "logout_user" - uppercase_operation_id: "LOGOUT_USER" - path: "/user/logout" - PATH_ID: "USER_LOGOUT" - hasPathParams: false - HttpMethod: "Get" - /user/{username}: - get: - tags: - - "user" - summary: "Get user by user name" - description: "" - operationId: "getUserByName" - produces: - - "application/xml" - - "application/json" - parameters: - - name: "username" - in: "path" - description: "The name that needs to be fetched. Use user1 for testing." - required: true - type: "string" - formatString: "\\\"{}\\\"" - example: "\"username_example\".to_string()" - responses: - 200: - description: "successful operation" - schema: - $ref: "#/definitions/User" - x-responseId: "SuccessfulOperation" - x-uppercaseResponseId: "SUCCESSFUL_OPERATION" - uppercase_operation_id: "GET_USER_BY_NAME" - uppercase_data_type: "USER" - producesXml: true - 400: - description: "Invalid username supplied" - x-responseId: "InvalidUsernameSupplied" - x-uppercaseResponseId: "INVALID_USERNAME_SUPPLIED" - uppercase_operation_id: "GET_USER_BY_NAME" - 404: - description: "User not found" - x-responseId: "UserNotFound" - x-uppercaseResponseId: "USER_NOT_FOUND" - uppercase_operation_id: "GET_USER_BY_NAME" - operation_id: "get_user_by_name" - uppercase_operation_id: "GET_USER_BY_NAME" - path: "/user/:username" - PATH_ID: "USER_USERNAME" - hasPathParams: true - HttpMethod: "Get" - put: - tags: - - "user" - summary: "Updated user" - description: "This can only be done by the logged in user." - operationId: "updateUser" - produces: - - "application/xml" - - "application/json" - parameters: - - name: "username" - in: "path" - description: "name that need to be deleted" - required: true - type: "string" - formatString: "\\\"{}\\\"" - example: "\"username_example\".to_string()" - - in: "body" - name: "body" - description: "Updated user object" - required: true - schema: - $ref: "#/definitions/User" - uppercase_data_type: "USER" - refName: "User" - formatString: "{:?}" - example: "???" - model_key: "OuterBoolean" - uppercase_operation_id: "UPDATE_USER" - consumesJson: true - responses: - 400: - description: "Invalid user supplied" - x-responseId: "InvalidUserSupplied" - x-uppercaseResponseId: "INVALID_USER_SUPPLIED" - uppercase_operation_id: "UPDATE_USER" - 404: - description: "User not found" - x-responseId: "UserNotFound" - x-uppercaseResponseId: "USER_NOT_FOUND" - uppercase_operation_id: "UPDATE_USER" - operation_id: "update_user" - uppercase_operation_id: "UPDATE_USER" - path: "/user/:username" - PATH_ID: "USER_USERNAME" - hasPathParams: true - HttpMethod: "Put" - noClientExample: true - delete: - tags: - - "user" - summary: "Delete user" - description: "This can only be done by the logged in user." - operationId: "deleteUser" - produces: - - "application/xml" - - "application/json" - parameters: - - name: "username" - in: "path" - description: "The name that needs to be deleted" - required: true - type: "string" - formatString: "\\\"{}\\\"" - example: "\"username_example\".to_string()" - responses: - 400: - description: "Invalid username supplied" - x-responseId: "InvalidUsernameSupplied" - x-uppercaseResponseId: "INVALID_USERNAME_SUPPLIED" - uppercase_operation_id: "DELETE_USER" - 404: - description: "User not found" - x-responseId: "UserNotFound" - x-uppercaseResponseId: "USER_NOT_FOUND" - uppercase_operation_id: "DELETE_USER" - operation_id: "delete_user" - uppercase_operation_id: "DELETE_USER" - path: "/user/:username" - PATH_ID: "USER_USERNAME" - hasPathParams: true - HttpMethod: "Delete" - /fake_classname_test: - patch: - tags: - - "fake_classname_tags 123#$%^" - summary: "To test class name in snake case" - description: "To test class name in snake case" - operationId: "testClassname" - consumes: - - "application/json" - produces: - - "application/json" - parameters: - - in: "body" - name: "body" - description: "client model" - required: true - schema: - $ref: "#/definitions/Client" - uppercase_data_type: "CLIENT" - refName: "Client" - formatString: "{:?}" - example: "???" - model_key: "OuterBoolean" - uppercase_operation_id: "TEST_CLASSNAME" - consumesJson: true - responses: - 200: - description: "successful operation" - schema: - $ref: "#/definitions/Client" - x-responseId: "SuccessfulOperation" - x-uppercaseResponseId: "SUCCESSFUL_OPERATION" - uppercase_operation_id: "TEST_CLASSNAME" - uppercase_data_type: "CLIENT" - producesJson: true - security: - - api_key_query: [] - operation_id: "test_classname" - uppercase_operation_id: "TEST_CLASSNAME" - path: "/fake_classname_test" - PATH_ID: "FAKE_CLASSNAME_TEST" - hasPathParams: false - HttpMethod: "Patch" - noClientExample: true - /fake: - get: - tags: - - "fake" - summary: "To test enum parameters" - description: "To test enum parameters" - operationId: "testEnumParameters" - consumes: - - "*/*" - produces: - - "*/*" - parameters: - - name: "enum_form_string_array" - in: "formData" - description: "Form parameter enum test (string array)" - required: false - type: "array" - items: - type: "string" - default: "$" - enum: - - ">" - - "$" - formatString: "{:?}" - example: "Some(&Vec::new())" - - name: "enum_form_string" - in: "formData" - description: "Form parameter enum test (string)" - required: false - type: "string" - default: "-efg" - enum: - - "_abc" - - "-efg" - - "(xyz)" - formatString: "{:?}" - example: "Some(\"enum_form_string_example\".to_string())" - - name: "enum_header_string_array" - in: "header" - description: "Header parameter enum test (string array)" - required: false - type: "array" - items: - type: "string" - default: "$" - enum: - - ">" - - "$" - formatString: "{:?}" - example: "Some(&Vec::new())" - - name: "enum_header_string" - in: "header" - description: "Header parameter enum test (string)" - required: false - type: "string" - default: "-efg" - enum: - - "_abc" - - "-efg" - - "(xyz)" - formatString: "{:?}" - example: "Some(\"enum_header_string_example\".to_string())" - - name: "enum_query_string_array" - in: "query" - description: "Query parameter enum test (string array)" - required: false - type: "array" - items: - type: "string" - default: "$" - enum: - - ">" - - "$" - formatString: "{:?}" - example: "Some(&Vec::new())" - - name: "enum_query_string" - in: "query" - description: "Query parameter enum test (string)" - required: false - type: "string" - default: "-efg" - enum: - - "_abc" - - "-efg" - - "(xyz)" - formatString: "{:?}" - example: "Some(\"enum_query_string_example\".to_string())" - - name: "enum_query_integer" - in: "query" - description: "Query parameter enum test (double)" - required: false - type: "integer" - format: "int32" - enum: - - 1 - - -2 - formatString: "{:?}" - example: "Some(56)" - - name: "enum_query_double" - in: "formData" - description: "Query parameter enum test (double)" - required: false - type: "number" - format: "double" - enum: - - 1.1 - - -1.2 - formatString: "{:?}" - example: "Some(1.2)" - responses: - 400: - description: "Invalid request" - x-responseId: "InvalidRequest" - x-uppercaseResponseId: "INVALID_REQUEST" - uppercase_operation_id: "TEST_ENUM_PARAMETERS" - 404: - description: "Not found" - x-responseId: "NotFound" - x-uppercaseResponseId: "NOT_FOUND" - uppercase_operation_id: "TEST_ENUM_PARAMETERS" - operation_id: "test_enum_parameters" - uppercase_operation_id: "TEST_ENUM_PARAMETERS" - path: "/fake" - PATH_ID: "FAKE" - hasPathParams: false - HttpMethod: "Get" - post: - tags: - - "fake" - summary: "Fake endpoint for testing various parameters\n假端點\n偽のエンドポイント\n가짜 엔\ - 드 포인트\n" - description: "Fake endpoint for testing various parameters\n假端點\n偽のエンドポイント\n\ - 가짜 엔드 포인트\n" - operationId: "testEndpointParameters" - consumes: - - "application/xml; charset=utf-8" - - "application/json; charset=utf-8" - produces: - - "application/xml; charset=utf-8" - - "application/json; charset=utf-8" - parameters: - - name: "integer" - in: "formData" - description: "None" - required: false - type: "integer" - maximum: 100 - minimum: 10 - formatString: "{:?}" - example: "Some(56)" - - name: "int32" - in: "formData" - description: "None" - required: false - type: "integer" - maximum: 200 - minimum: 20 - format: "int32" - formatString: "{:?}" - example: "Some(56)" - - name: "int64" - in: "formData" - description: "None" - required: false - type: "integer" - format: "int64" - formatString: "{:?}" - example: "Some(789)" - - name: "number" - in: "formData" - description: "None" - required: true - type: "number" - maximum: 543.2 - minimum: 32.1 - formatString: "{}" - example: "8.14" - - name: "float" - in: "formData" - description: "None" - required: false - type: "number" - maximum: 987.6 - format: "float" - formatString: "{:?}" - example: "Some(3.4)" - - name: "double" - in: "formData" - description: "None" - required: true - type: "number" - maximum: 123.4 - minimum: 67.8 - format: "double" - formatString: "{}" - example: "1.2" - - name: "string" - in: "formData" - description: "None" - required: false - type: "string" - pattern: "/[a-z]/i" - formatString: "{:?}" - example: "Some(\"string_example\".to_string())" - - name: "pattern_without_delimiter" - in: "formData" - description: "None" - required: true - type: "string" - pattern: "^[A-Z].*" - formatString: "\\\"{}\\\"" - example: "\"pattern_without_delimiter_example\".to_string()" - - name: "byte" - in: "formData" - description: "None" - required: true - type: "string" - format: "byte" - formatString: "{:?}" - example: "swagger::ByteArray(Vec::from(\"B\"))" - - name: "binary" - in: "formData" - description: "None" - required: false - type: "string" - format: "binary" - formatString: "{:?}" - example: "Some(swagger::ByteArray(Vec::from(\"B\")))" - - name: "date" - in: "formData" - description: "None" - required: false - type: "string" - format: "date" - formatString: "{:?}" - example: "None" - - name: "dateTime" - in: "formData" - description: "None" - required: false - type: "string" - format: "date-time" - formatString: "{:?}" - example: "None" - - name: "password" - in: "formData" - description: "None" - required: false - type: "string" - maxLength: 64 - minLength: 10 - format: "password" - formatString: "{:?}" - example: "Some(\"password_example\".to_string())" - - name: "callback" - in: "formData" - description: "None" - required: false - type: "string" - formatString: "{:?}" - example: "Some(\"callback_example\".to_string())" - responses: - 400: - description: "Invalid username supplied" - x-responseId: "InvalidUsernameSupplied" - x-uppercaseResponseId: "INVALID_USERNAME_SUPPLIED" - uppercase_operation_id: "TEST_ENDPOINT_PARAMETERS" - 404: - description: "User not found" - x-responseId: "UserNotFound" - x-uppercaseResponseId: "USER_NOT_FOUND" - uppercase_operation_id: "TEST_ENDPOINT_PARAMETERS" - security: - - http_basic_test: [] - operation_id: "test_endpoint_parameters" - uppercase_operation_id: "TEST_ENDPOINT_PARAMETERS" - path: "/fake" - PATH_ID: "FAKE" - hasPathParams: false - HttpMethod: "Post" - patch: - tags: - - "fake" - summary: "To test \"client\" model" - description: "To test \"client\" model" - operationId: "testClientModel" - consumes: - - "application/json" - produces: - - "application/json" - parameters: - - in: "body" - name: "body" - description: "client model" - required: true - schema: - $ref: "#/definitions/Client" - uppercase_data_type: "CLIENT" - refName: "Client" - formatString: "{:?}" - example: "???" - model_key: "OuterBoolean" - uppercase_operation_id: "TEST_CLIENT_MODEL" - consumesJson: true - responses: - 200: - description: "successful operation" - schema: - $ref: "#/definitions/Client" - x-responseId: "SuccessfulOperation" - x-uppercaseResponseId: "SUCCESSFUL_OPERATION" - uppercase_operation_id: "TEST_CLIENT_MODEL" - uppercase_data_type: "CLIENT" - producesJson: true - operation_id: "test_client_model" - uppercase_operation_id: "TEST_CLIENT_MODEL" - path: "/fake" - PATH_ID: "FAKE" - hasPathParams: false - HttpMethod: "Patch" - noClientExample: true - /fake/outer/number: - post: - tags: - - "fake" - description: "Test serialization of outer number types" - operationId: "fakeOuterNumberSerialize" - parameters: - - in: "body" - name: "body" - description: "Input number as post body" - required: false - schema: - $ref: "#/definitions/OuterNumber" - uppercase_data_type: "OUTERNUMBER" - refName: "OuterNumber" - formatString: "{:?}" - example: "None" - model_key: "OuterBoolean" - uppercase_operation_id: "FAKE_OUTER_NUMBER_SERIALIZE" - consumesJson: true - responses: - 200: - description: "Output number" - schema: - $ref: "#/definitions/OuterNumber" - x-responseId: "OutputNumber" - x-uppercaseResponseId: "OUTPUT_NUMBER" - uppercase_operation_id: "FAKE_OUTER_NUMBER_SERIALIZE" - uppercase_data_type: "OUTERNUMBER" - producesJson: true - operation_id: "fake_outer_number_serialize" - uppercase_operation_id: "FAKE_OUTER_NUMBER_SERIALIZE" - path: "/fake/outer/number" - PATH_ID: "FAKE_OUTER_NUMBER" - hasPathParams: false - HttpMethod: "Post" - /fake/outer/string: - post: - tags: - - "fake" - description: "Test serialization of outer string types" - operationId: "fakeOuterStringSerialize" - parameters: - - in: "body" - name: "body" - description: "Input string as post body" - required: false - schema: - $ref: "#/definitions/OuterString" - uppercase_data_type: "OUTERSTRING" - refName: "OuterString" - formatString: "{:?}" - example: "None" - model_key: "OuterBoolean" - uppercase_operation_id: "FAKE_OUTER_STRING_SERIALIZE" - consumesJson: true - responses: - 200: - description: "Output string" - schema: - $ref: "#/definitions/OuterString" - x-responseId: "OutputString" - x-uppercaseResponseId: "OUTPUT_STRING" - uppercase_operation_id: "FAKE_OUTER_STRING_SERIALIZE" - uppercase_data_type: "OUTERSTRING" - producesJson: true - operation_id: "fake_outer_string_serialize" - uppercase_operation_id: "FAKE_OUTER_STRING_SERIALIZE" - path: "/fake/outer/string" - PATH_ID: "FAKE_OUTER_STRING" - hasPathParams: false - HttpMethod: "Post" - /fake/outer/boolean: - post: - tags: - - "fake" - description: "Test serialization of outer boolean types" - operationId: "fakeOuterBooleanSerialize" - parameters: - - in: "body" - name: "body" - description: "Input boolean as post body" - required: false - schema: - $ref: "#/definitions/OuterBoolean" - uppercase_data_type: "OUTERBOOLEAN" - refName: "OuterBoolean" - formatString: "{:?}" - example: "None" - model_key: "OuterBoolean" - uppercase_operation_id: "FAKE_OUTER_BOOLEAN_SERIALIZE" - consumesJson: true - responses: - 200: - description: "Output boolean" - schema: - $ref: "#/definitions/OuterBoolean" - x-responseId: "OutputBoolean" - x-uppercaseResponseId: "OUTPUT_BOOLEAN" - uppercase_operation_id: "FAKE_OUTER_BOOLEAN_SERIALIZE" - uppercase_data_type: "OUTERBOOLEAN" - producesJson: true - operation_id: "fake_outer_boolean_serialize" - uppercase_operation_id: "FAKE_OUTER_BOOLEAN_SERIALIZE" - path: "/fake/outer/boolean" - PATH_ID: "FAKE_OUTER_BOOLEAN" - hasPathParams: false - HttpMethod: "Post" - /fake/outer/composite: - post: - tags: - - "fake" - description: "Test serialization of object with outer number type" - operationId: "fakeOuterCompositeSerialize" - parameters: - - in: "body" - name: "body" - description: "Input composite as post body" - required: false - schema: - $ref: "#/definitions/OuterComposite" - uppercase_data_type: "OUTERCOMPOSITE" - refName: "OuterComposite" - formatString: "{:?}" - example: "None" - model_key: "OuterBoolean" - uppercase_operation_id: "FAKE_OUTER_COMPOSITE_SERIALIZE" - consumesJson: true - responses: - 200: - description: "Output composite" - schema: - $ref: "#/definitions/OuterComposite" - x-responseId: "OutputComposite" - x-uppercaseResponseId: "OUTPUT_COMPOSITE" - uppercase_operation_id: "FAKE_OUTER_COMPOSITE_SERIALIZE" - uppercase_data_type: "OUTERCOMPOSITE" - producesJson: true - operation_id: "fake_outer_composite_serialize" - uppercase_operation_id: "FAKE_OUTER_COMPOSITE_SERIALIZE" - path: "/fake/outer/composite" - PATH_ID: "FAKE_OUTER_COMPOSITE" - hasPathParams: false - HttpMethod: "Post" - /fake/jsonFormData: - get: - tags: - - "fake" - summary: "test json serialization of form data" - description: "" - operationId: "testJsonFormData" - consumes: - - "application/json" - parameters: - - name: "param" - in: "formData" - description: "field1" - required: true - type: "string" - formatString: "\\\"{}\\\"" - example: "\"param_example\".to_string()" - - name: "param2" - in: "formData" - description: "field2" - required: true - type: "string" - formatString: "\\\"{}\\\"" - example: "\"param2_example\".to_string()" - responses: - 200: - description: "successful operation" - x-responseId: "SuccessfulOperation" - x-uppercaseResponseId: "SUCCESSFUL_OPERATION" - uppercase_operation_id: "TEST_JSON_FORM_DATA" - operation_id: "test_json_form_data" - uppercase_operation_id: "TEST_JSON_FORM_DATA" - path: "/fake/jsonFormData" - PATH_ID: "FAKE_JSONFORMDATA" - hasPathParams: false - HttpMethod: "Get" - /fake/inline-additionalProperties: - post: - tags: - - "fake" - summary: "test inline additionalProperties" - description: "" - operationId: "testInlineAdditionalProperties" - consumes: - - "application/json" - parameters: - - in: "body" - name: "param" - description: "request body" - required: true - schema: - type: "object" - additionalProperties: - type: "string" - upperCaseName: "PARAM" - refName: null - formatString: "{:?}" - example: "???" - model_key: "OuterBoolean" - uppercase_operation_id: "TEST_INLINE_ADDITIONAL_PROPERTIES" - consumesJson: true - responses: - 200: - description: "successful operation" - x-responseId: "SuccessfulOperation" - x-uppercaseResponseId: "SUCCESSFUL_OPERATION" - uppercase_operation_id: "TEST_INLINE_ADDITIONAL_PROPERTIES" - operation_id: "test_inline_additional_properties" - uppercase_operation_id: "TEST_INLINE_ADDITIONAL_PROPERTIES" - path: "/fake/inline-additionalProperties" - PATH_ID: "FAKE_INLINE_ADDITIONALPROPERTIES" - hasPathParams: false - HttpMethod: "Post" - noClientExample: true - /fake/body-with-query-params: - put: - operationId: "testBodyWithQueryParams" - consumes: - - "application/json" - parameters: - - in: "body" - name: "body" - required: true - schema: - $ref: "#/definitions/User" - uppercase_data_type: "USER" - refName: "User" - formatString: "{:?}" - example: "???" - model_key: "OuterBoolean" - uppercase_operation_id: "TEST_BODY_WITH_QUERY_PARAMS" - consumesJson: true - - name: "query" - in: "query" - required: true - type: "string" - formatString: "\\\"{}\\\"" - example: "\"query_example\".to_string()" - responses: - 200: - description: "Success" - x-responseId: "Success" - x-uppercaseResponseId: "SUCCESS" - uppercase_operation_id: "TEST_BODY_WITH_QUERY_PARAMS" - operation_id: "test_body_with_query_params" - uppercase_operation_id: "TEST_BODY_WITH_QUERY_PARAMS" - path: "/fake/body-with-query-params" - PATH_ID: "FAKE_BODY_WITH_QUERY_PARAMS" - hasPathParams: false - HttpMethod: "Put" - noClientExample: true - /another-fake/dummy: - patch: - tags: - - "$another-fake?" - summary: "To test special tags" - description: "To test special tags" - operationId: "test_special_tags" - consumes: - - "application/json" - produces: - - "application/json" - parameters: - - in: "body" - name: "body" - description: "client model" - required: true - schema: - $ref: "#/definitions/Client" - uppercase_data_type: "CLIENT" - refName: "Client" - formatString: "{:?}" - example: "???" - model_key: "OuterBoolean" - uppercase_operation_id: "TEST_SPECIAL_TAGS" - consumesJson: true - responses: - 200: - description: "successful operation" - schema: - $ref: "#/definitions/Client" - x-responseId: "SuccessfulOperation" - x-uppercaseResponseId: "SUCCESSFUL_OPERATION" - uppercase_operation_id: "TEST_SPECIAL_TAGS" - uppercase_data_type: "CLIENT" - producesJson: true - operation_id: "test_special_tags" - uppercase_operation_id: "TEST_SPECIAL_TAGS" - path: "/another-fake/dummy" - PATH_ID: "ANOTHER_FAKE_DUMMY" - hasPathParams: false - HttpMethod: "Patch" - noClientExample: true -securityDefinitions: - petstore_auth: - type: "oauth2" - authorizationUrl: "http://petstore.swagger.io/api/oauth/dialog" - flow: "implicit" - scopes: - write:pets: "modify pets in your account" - read:pets: "read your pets" - api_key: - type: "apiKey" - name: "api_key" - in: "header" - api_key_query: - type: "apiKey" - name: "api_key_query" - in: "query" - http_basic_test: - type: "basic" -definitions: - Order: - type: "object" - properties: - id: - type: "integer" - format: "int64" - petId: - type: "integer" - format: "int64" - quantity: - type: "integer" - format: "int32" - shipDate: - type: "string" - format: "date-time" - status: - type: "string" - description: "Order Status" - enum: - - "placed" - - "approved" - - "delivered" - complete: - type: "boolean" - default: false - example: - petId: 6 - quantity: 1 - id: 0 - shipDate: "2000-01-23T04:56:07.000+00:00" - complete: false - status: "placed" - xml: - name: "Order" - upperCaseName: "ORDER" - Category: - type: "object" - properties: - id: - type: "integer" - format: "int64" - name: - type: "string" - example: - name: "name" - id: 6 - xml: - name: "Category" - upperCaseName: "CATEGORY" - User: - type: "object" - properties: - id: - type: "integer" - format: "int64" - x-is-unique: true - username: - type: "string" - firstName: - type: "string" - lastName: - type: "string" - email: - type: "string" - password: - type: "string" - phone: - type: "string" - userStatus: - type: "integer" - format: "int32" - description: "User Status" - example: - firstName: "firstName" - lastName: "lastName" - password: "password" - userStatus: 6 - phone: "phone" - id: 0 - email: "email" - username: "username" - xml: - name: "User" - upperCaseName: "USER" - Tag: - type: "object" - properties: - id: - type: "integer" - format: "int64" - name: - type: "string" - example: - name: "name" - id: 1 - xml: - name: "Tag" - upperCaseName: "TAG" - Pet: - type: "object" - required: - - "name" - - "photoUrls" - properties: - id: - type: "integer" - format: "int64" - x-is-unique: true - category: - $ref: "#/definitions/Category" - name: - type: "string" - example: "doggie" - photoUrls: - type: "array" - xml: - name: "photoUrl" - wrapped: true - items: - type: "string" - tags: - type: "array" - xml: - name: "tag" - wrapped: true - items: - $ref: "#/definitions/Tag" - status: - type: "string" - description: "pet status in the store" - enum: - - "available" - - "pending" - - "sold" - example: - photoUrls: - - "photoUrls" - - "photoUrls" - name: "doggie" - id: 0 - category: - name: "name" - id: 6 - tags: - - name: "name" - id: 1 - - name: "name" - id: 1 - status: "available" - xml: - name: "Pet" - upperCaseName: "PET" - ApiResponse: - type: "object" - properties: - code: - type: "integer" - format: "int32" - type: - type: "string" - message: - type: "string" - example: - code: 0 - type: "type" - message: "message" - upperCaseName: "APIRESPONSE" - $special[model.name]: - properties: - $special[property.name]: - type: "integer" - format: "int64" - xml: - name: "$special[model.name]" - upperCaseName: "$SPECIAL[MODEL.NAME]" - Return: - properties: - return: - type: "integer" - format: "int32" - description: "Model for testing reserved words" - xml: - name: "Return" - upperCaseName: "RETURN" - Name: - required: - - "name" - properties: - name: - type: "integer" - format: "int32" - snake_case: - type: "integer" - format: "int32" - readOnly: true - property: - type: "string" - 123Number: - type: "integer" - readOnly: true - description: "Model for testing model name same as property name" - xml: - name: "Name" - upperCaseName: "NAME" - 200_response: - properties: - name: - type: "integer" - format: "int32" - class: - type: "string" - description: "Model for testing model name starting with number" - xml: - name: "Name" - upperCaseName: "200_RESPONSE" - ClassModel: - properties: - _class: - type: "string" - description: "Model for testing model with \"_class\" property" - upperCaseName: "CLASSMODEL" - Dog: - allOf: - - $ref: "#/definitions/Animal" - - type: "object" - properties: - breed: - type: "string" - upperCaseName: "DOG" - Cat: - allOf: - - $ref: "#/definitions/Animal" - - type: "object" - properties: - declawed: - type: "boolean" - upperCaseName: "CAT" - Animal: - type: "object" - required: - - "className" - discriminator: "className" - properties: - className: - type: "string" - color: - type: "string" - default: "red" - upperCaseName: "ANIMAL" - AnimalFarm: - type: "array" - items: - $ref: "#/definitions/Animal" - upperCaseName: "ANIMALFARM" - format_test: - type: "object" - required: - - "byte" - - "date" - - "number" - - "password" - properties: - integer: - type: "integer" - minimum: 10 - maximum: 100 - int32: - type: "integer" - format: "int32" - minimum: 20 - maximum: 200 - int64: - type: "integer" - format: "int64" - number: - type: "number" - minimum: 32.1 - maximum: 543.2 - float: - type: "number" - format: "float" - minimum: 54.3 - maximum: 987.6 - double: - type: "number" - format: "double" - minimum: 67.8 - maximum: 123.4 - string: - type: "string" - pattern: "/[a-z]/i" - byte: - type: "string" - format: "byte" - pattern: "^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$" - binary: - type: "string" - format: "binary" - date: - type: "string" - format: "date" - dateTime: - type: "string" - format: "date-time" - uuid: - type: "string" - format: "uuid" - password: - type: "string" - format: "password" - minLength: 10 - maxLength: 64 - upperCaseName: "FORMAT_TEST" - EnumClass: - type: "string" - enum: - - "_abc" - - "-efg" - - "(xyz)" - default: "-efg" - upperCaseName: "ENUMCLASS" - Enum_Test: - type: "object" - required: - - "enum_string_required" - properties: - enum_string: - type: "string" - enum: - - "UPPER" - - "lower" - - "" - enum_string_required: - type: "string" - enum: - - "UPPER" - - "lower" - - "" - enum_integer: - type: "integer" - format: "int32" - enum: - - 1 - - -1 - enum_number: - type: "number" - format: "double" - enum: - - 1.1 - - -1.2 - outerEnum: - $ref: "#/definitions/OuterEnum" - upperCaseName: "ENUM_TEST" - AdditionalPropertiesClass: - type: "object" - properties: - map_property: - type: "object" - additionalProperties: - type: "string" - map_of_map_property: - type: "object" - additionalProperties: - type: "object" - additionalProperties: - type: "string" - upperCaseName: "ADDITIONALPROPERTIESCLASS" - MixedPropertiesAndAdditionalPropertiesClass: - type: "object" - properties: - uuid: - type: "string" - format: "uuid" - dateTime: - type: "string" - format: "date-time" - map: - type: "object" - additionalProperties: - $ref: "#/definitions/Animal" - upperCaseName: "MIXEDPROPERTIESANDADDITIONALPROPERTIESCLASS" - List: - type: "object" - properties: - 123-list: - type: "string" - upperCaseName: "LIST" - Client: - type: "object" - properties: - client: - type: "string" - example: - client: "client" - upperCaseName: "CLIENT" - ReadOnlyFirst: - type: "object" - properties: - bar: - type: "string" - readOnly: true - baz: - type: "string" - upperCaseName: "READONLYFIRST" - hasOnlyReadOnly: - type: "object" - properties: - bar: - type: "string" - readOnly: true - foo: - type: "string" - readOnly: true - upperCaseName: "HASONLYREADONLY" - Capitalization: - type: "object" - properties: - smallCamel: - type: "string" - CapitalCamel: - type: "string" - small_Snake: - type: "string" - Capital_Snake: - type: "string" - SCA_ETH_Flow_Points: - type: "string" - ATT_NAME: - type: "string" - description: "Name of the pet\n" - upperCaseName: "CAPITALIZATION" - MapTest: - type: "object" - properties: - map_map_of_string: - type: "object" - additionalProperties: - type: "object" - additionalProperties: - type: "string" - map_of_enum_string: - type: "object" - additionalProperties: - type: "string" - enum: - - "UPPER" - - "lower" - upperCaseName: "MAPTEST" - ArrayTest: - type: "object" - properties: - array_of_string: - type: "array" - items: - type: "string" - array_array_of_integer: - type: "array" - items: - type: "array" - items: - type: "integer" - format: "int64" - array_array_of_model: - type: "array" - items: - type: "array" - items: - $ref: "#/definitions/ReadOnlyFirst" - upperCaseName: "ARRAYTEST" - NumberOnly: - type: "object" - properties: - JustNumber: - type: "number" - upperCaseName: "NUMBERONLY" - ArrayOfNumberOnly: - type: "object" - properties: - ArrayNumber: - type: "array" - items: - type: "number" - upperCaseName: "ARRAYOFNUMBERONLY" - ArrayOfArrayOfNumberOnly: - type: "object" - properties: - ArrayArrayNumber: - type: "array" - items: - type: "array" - items: - type: "number" - upperCaseName: "ARRAYOFARRAYOFNUMBERONLY" - EnumArrays: - type: "object" - properties: - just_symbol: - type: "string" - enum: - - ">=" - - "$" - array_enum: - type: "array" - items: - type: "string" - enum: - - "fish" - - "crab" - upperCaseName: "ENUMARRAYS" - OuterEnum: - type: "string" - enum: - - "placed" - - "approved" - - "delivered" - upperCaseName: "OUTERENUM" - OuterComposite: - type: "object" - properties: - my_number: - $ref: "#/definitions/OuterNumber" - my_string: - $ref: "#/definitions/OuterString" - my_boolean: - $ref: "#/definitions/OuterBoolean" - example: - my_string: {} - my_number: {} - my_boolean: {} - upperCaseName: "OUTERCOMPOSITE" - OuterNumber: - type: "number" - upperCaseName: "OUTERNUMBER" - OuterString: - type: "string" - upperCaseName: "OUTERSTRING" - OuterBoolean: - type: "boolean" - upperCaseName: "OUTERBOOLEAN" -externalDocs: - description: "Find out more about Swagger" - url: "http://swagger.io" diff --git a/samples/server/petstore/rust-server/examples/client.rs b/samples/server/petstore/rust-server/examples/client.rs index 2b2f69d1179c..3bd3a3509708 100644 --- a/samples/server/petstore/rust-server/examples/client.rs +++ b/samples/server/petstore/rust-server/examples/client.rs @@ -4,12 +4,15 @@ extern crate petstore_api; #[allow(unused_extern_crates)] extern crate futures; #[allow(unused_extern_crates)] +#[macro_use] extern crate swagger; #[allow(unused_extern_crates)] extern crate uuid; extern crate clap; extern crate tokio_core; +use swagger::{ContextBuilder, EmptyContext, XSpanIdString, Has, Push, AuthData}; + #[allow(unused_imports)] use futures::{Future, future, Stream, stream}; use tokio_core::reactor; @@ -17,11 +20,11 @@ use tokio_core::reactor; use petstore_api::{ApiNoContext, ContextWrapperExt, ApiError, TestSpecialTagsResponse, - TestBodyWithQueryParamsResponse, FakeOuterBooleanSerializeResponse, FakeOuterCompositeSerializeResponse, FakeOuterNumberSerializeResponse, FakeOuterStringSerializeResponse, + TestBodyWithQueryParamsResponse, TestClientModelResponse, TestEndpointParametersResponse, TestEnumParametersResponse, @@ -112,179 +115,180 @@ fn main() { .expect("Failed to create HTTP client") }; - // Using a non-default `Context` is not required; this is just an example! - let client = client.with_context(petstore_api::Context::new_with_span_id(self::uuid::Uuid::new_v4().to_string())); + let context: make_context_ty!(ContextBuilder, EmptyContext, Option, XSpanIdString) = + make_context!(ContextBuilder, EmptyContext, None, XSpanIdString(self::uuid::Uuid::new_v4().to_string())); + let client = client.with_context(context); match matches.value_of("operation") { // Disabled because there's no example. // Some("TestSpecialTags") => { // let result = core.run(client.test_special_tags(???)); - // println!("{:?} (X-Span-ID: {:?})", result, client.context().x_span_id.clone().unwrap_or(String::from(""))); - // }, - - // Disabled because there's no example. - // Some("TestBodyWithQueryParams") => { - // let result = core.run(client.test_body_with_query_params(???, "query_example".to_string())); - // println!("{:?} (X-Span-ID: {:?})", result, client.context().x_span_id.clone().unwrap_or(String::from(""))); + // println!("{:?} (X-Span-ID: {:?})", result, (client.context() as &Has).get().clone()); // }, Some("FakeOuterBooleanSerialize") => { - let result = core.run(client.fake_outer_boolean_serialize(None)); - println!("{:?} (X-Span-ID: {:?})", result, client.context().x_span_id.clone().unwrap_or(String::from(""))); + let result = core.run(client.fake_outer_boolean_serialize(Some(true))); + println!("{:?} (X-Span-ID: {:?})", result, (client.context() as &Has).get().clone()); }, Some("FakeOuterCompositeSerialize") => { let result = core.run(client.fake_outer_composite_serialize(None)); - println!("{:?} (X-Span-ID: {:?})", result, client.context().x_span_id.clone().unwrap_or(String::from(""))); + println!("{:?} (X-Span-ID: {:?})", result, (client.context() as &Has).get().clone()); }, Some("FakeOuterNumberSerialize") => { - let result = core.run(client.fake_outer_number_serialize(None)); - println!("{:?} (X-Span-ID: {:?})", result, client.context().x_span_id.clone().unwrap_or(String::from(""))); + let result = core.run(client.fake_outer_number_serialize(Some(1.2))); + println!("{:?} (X-Span-ID: {:?})", result, (client.context() as &Has).get().clone()); }, Some("FakeOuterStringSerialize") => { - let result = core.run(client.fake_outer_string_serialize(None)); - println!("{:?} (X-Span-ID: {:?})", result, client.context().x_span_id.clone().unwrap_or(String::from(""))); + let result = core.run(client.fake_outer_string_serialize(Some("body_example".to_string()))); + println!("{:?} (X-Span-ID: {:?})", result, (client.context() as &Has).get().clone()); }, + // Disabled because there's no example. + // Some("TestBodyWithQueryParams") => { + // let result = core.run(client.test_body_with_query_params("query_example".to_string(), ???)); + // println!("{:?} (X-Span-ID: {:?})", result, (client.context() as &Has).get().clone()); + // }, + // Disabled because there's no example. // Some("TestClientModel") => { // let result = core.run(client.test_client_model(???)); - // println!("{:?} (X-Span-ID: {:?})", result, client.context().x_span_id.clone().unwrap_or(String::from(""))); + // println!("{:?} (X-Span-ID: {:?})", result, (client.context() as &Has).get().clone()); // }, Some("TestEndpointParameters") => { - let result = core.run(client.test_endpoint_parameters(8.14, 1.2, "pattern_without_delimiter_example".to_string(), swagger::ByteArray(Vec::from("B")), Some(56), Some(56), Some(789), Some(3.4), Some("string_example".to_string()), Some(swagger::ByteArray(Vec::from("B"))), None, None, Some("password_example".to_string()), Some("callback_example".to_string()))); - println!("{:?} (X-Span-ID: {:?})", result, client.context().x_span_id.clone().unwrap_or(String::from(""))); + let result = core.run(client.test_endpoint_parameters(8.14, 1.2, "pattern_without_delimiter_example".to_string(), Some(56), Some(56), Some(789), Some(3.4), Some("string_example".to_string()), Box::new(future::ok(Some(Box::new(stream::once(Ok(b"hello".to_vec()))) as Box + Send>))) as Box + Send>, None, None, Some("password_example".to_string()), Some("callback_example".to_string()))); + println!("{:?} (X-Span-ID: {:?})", result, (client.context() as &Has).get().clone()); }, Some("TestEnumParameters") => { - let result = core.run(client.test_enum_parameters(Some(&Vec::new()), Some("enum_form_string_example".to_string()), Some(&Vec::new()), Some("enum_header_string_example".to_string()), Some(&Vec::new()), Some("enum_query_string_example".to_string()), Some(56), Some(1.2))); - println!("{:?} (X-Span-ID: {:?})", result, client.context().x_span_id.clone().unwrap_or(String::from(""))); + let result = core.run(client.test_enum_parameters(Some(&Vec::new()), Some("enum_header_string_example".to_string()), Some(&Vec::new()), Some("enum_query_string_example".to_string()), Some(56), Some(1.2))); + println!("{:?} (X-Span-ID: {:?})", result, (client.context() as &Has).get().clone()); }, // Disabled because there's no example. // Some("TestInlineAdditionalProperties") => { // let result = core.run(client.test_inline_additional_properties(???)); - // println!("{:?} (X-Span-ID: {:?})", result, client.context().x_span_id.clone().unwrap_or(String::from(""))); + // println!("{:?} (X-Span-ID: {:?})", result, (client.context() as &Has).get().clone()); // }, Some("TestJsonFormData") => { let result = core.run(client.test_json_form_data("param_example".to_string(), "param2_example".to_string())); - println!("{:?} (X-Span-ID: {:?})", result, client.context().x_span_id.clone().unwrap_or(String::from(""))); + println!("{:?} (X-Span-ID: {:?})", result, (client.context() as &Has).get().clone()); }, // Disabled because there's no example. // Some("TestClassname") => { // let result = core.run(client.test_classname(???)); - // println!("{:?} (X-Span-ID: {:?})", result, client.context().x_span_id.clone().unwrap_or(String::from(""))); + // println!("{:?} (X-Span-ID: {:?})", result, (client.context() as &Has).get().clone()); // }, // Disabled because there's no example. // Some("AddPet") => { // let result = core.run(client.add_pet(???)); - // println!("{:?} (X-Span-ID: {:?})", result, client.context().x_span_id.clone().unwrap_or(String::from(""))); + // println!("{:?} (X-Span-ID: {:?})", result, (client.context() as &Has).get().clone()); // }, Some("DeletePet") => { let result = core.run(client.delete_pet(789, Some("api_key_example".to_string()))); - println!("{:?} (X-Span-ID: {:?})", result, client.context().x_span_id.clone().unwrap_or(String::from(""))); + println!("{:?} (X-Span-ID: {:?})", result, (client.context() as &Has).get().clone()); }, Some("FindPetsByStatus") => { let result = core.run(client.find_pets_by_status(&Vec::new())); - println!("{:?} (X-Span-ID: {:?})", result, client.context().x_span_id.clone().unwrap_or(String::from(""))); + println!("{:?} (X-Span-ID: {:?})", result, (client.context() as &Has).get().clone()); }, Some("FindPetsByTags") => { let result = core.run(client.find_pets_by_tags(&Vec::new())); - println!("{:?} (X-Span-ID: {:?})", result, client.context().x_span_id.clone().unwrap_or(String::from(""))); + println!("{:?} (X-Span-ID: {:?})", result, (client.context() as &Has).get().clone()); }, Some("GetPetById") => { let result = core.run(client.get_pet_by_id(789)); - println!("{:?} (X-Span-ID: {:?})", result, client.context().x_span_id.clone().unwrap_or(String::from(""))); + println!("{:?} (X-Span-ID: {:?})", result, (client.context() as &Has).get().clone()); }, // Disabled because there's no example. // Some("UpdatePet") => { // let result = core.run(client.update_pet(???)); - // println!("{:?} (X-Span-ID: {:?})", result, client.context().x_span_id.clone().unwrap_or(String::from(""))); + // println!("{:?} (X-Span-ID: {:?})", result, (client.context() as &Has).get().clone()); // }, Some("UpdatePetWithForm") => { let result = core.run(client.update_pet_with_form(789, Some("name_example".to_string()), Some("status_example".to_string()))); - println!("{:?} (X-Span-ID: {:?})", result, client.context().x_span_id.clone().unwrap_or(String::from(""))); + println!("{:?} (X-Span-ID: {:?})", result, (client.context() as &Has).get().clone()); }, Some("UploadFile") => { let result = core.run(client.upload_file(789, Some("additional_metadata_example".to_string()), Box::new(future::ok(Some(Box::new(stream::once(Ok(b"hello".to_vec()))) as Box + Send>))) as Box + Send>)); - println!("{:?} (X-Span-ID: {:?})", result, client.context().x_span_id.clone().unwrap_or(String::from(""))); + println!("{:?} (X-Span-ID: {:?})", result, (client.context() as &Has).get().clone()); }, Some("DeleteOrder") => { let result = core.run(client.delete_order("order_id_example".to_string())); - println!("{:?} (X-Span-ID: {:?})", result, client.context().x_span_id.clone().unwrap_or(String::from(""))); + println!("{:?} (X-Span-ID: {:?})", result, (client.context() as &Has).get().clone()); }, Some("GetInventory") => { let result = core.run(client.get_inventory()); - println!("{:?} (X-Span-ID: {:?})", result, client.context().x_span_id.clone().unwrap_or(String::from(""))); + println!("{:?} (X-Span-ID: {:?})", result, (client.context() as &Has).get().clone()); }, Some("GetOrderById") => { let result = core.run(client.get_order_by_id(789)); - println!("{:?} (X-Span-ID: {:?})", result, client.context().x_span_id.clone().unwrap_or(String::from(""))); + println!("{:?} (X-Span-ID: {:?})", result, (client.context() as &Has).get().clone()); }, // Disabled because there's no example. // Some("PlaceOrder") => { // let result = core.run(client.place_order(???)); - // println!("{:?} (X-Span-ID: {:?})", result, client.context().x_span_id.clone().unwrap_or(String::from(""))); + // println!("{:?} (X-Span-ID: {:?})", result, (client.context() as &Has).get().clone()); // }, // Disabled because there's no example. // Some("CreateUser") => { // let result = core.run(client.create_user(???)); - // println!("{:?} (X-Span-ID: {:?})", result, client.context().x_span_id.clone().unwrap_or(String::from(""))); + // println!("{:?} (X-Span-ID: {:?})", result, (client.context() as &Has).get().clone()); // }, Some("CreateUsersWithArrayInput") => { let result = core.run(client.create_users_with_array_input(&Vec::new())); - println!("{:?} (X-Span-ID: {:?})", result, client.context().x_span_id.clone().unwrap_or(String::from(""))); + println!("{:?} (X-Span-ID: {:?})", result, (client.context() as &Has).get().clone()); }, Some("CreateUsersWithListInput") => { let result = core.run(client.create_users_with_list_input(&Vec::new())); - println!("{:?} (X-Span-ID: {:?})", result, client.context().x_span_id.clone().unwrap_or(String::from(""))); + println!("{:?} (X-Span-ID: {:?})", result, (client.context() as &Has).get().clone()); }, Some("DeleteUser") => { let result = core.run(client.delete_user("username_example".to_string())); - println!("{:?} (X-Span-ID: {:?})", result, client.context().x_span_id.clone().unwrap_or(String::from(""))); + println!("{:?} (X-Span-ID: {:?})", result, (client.context() as &Has).get().clone()); }, Some("GetUserByName") => { let result = core.run(client.get_user_by_name("username_example".to_string())); - println!("{:?} (X-Span-ID: {:?})", result, client.context().x_span_id.clone().unwrap_or(String::from(""))); + println!("{:?} (X-Span-ID: {:?})", result, (client.context() as &Has).get().clone()); }, Some("LoginUser") => { let result = core.run(client.login_user("username_example".to_string(), "password_example".to_string())); - println!("{:?} (X-Span-ID: {:?})", result, client.context().x_span_id.clone().unwrap_or(String::from(""))); + println!("{:?} (X-Span-ID: {:?})", result, (client.context() as &Has).get().clone()); }, Some("LogoutUser") => { let result = core.run(client.logout_user()); - println!("{:?} (X-Span-ID: {:?})", result, client.context().x_span_id.clone().unwrap_or(String::from(""))); + println!("{:?} (X-Span-ID: {:?})", result, (client.context() as &Has).get().clone()); }, // Disabled because there's no example. // Some("UpdateUser") => { // let result = core.run(client.update_user("username_example".to_string(), ???)); - // println!("{:?} (X-Span-ID: {:?})", result, client.context().x_span_id.clone().unwrap_or(String::from(""))); + // println!("{:?} (X-Span-ID: {:?})", result, (client.context() as &Has).get().clone()); // }, _ => { diff --git a/samples/server/petstore/rust-server/examples/server.rs b/samples/server/petstore/rust-server/examples/server.rs index 65b48aced82d..f3846ade0ea9 100644 --- a/samples/server/petstore/rust-server/examples/server.rs +++ b/samples/server/petstore/rust-server/examples/server.rs @@ -29,6 +29,7 @@ use hyper::server::Http; use tokio_proto::TcpServer; use clap::{App, Arg}; use swagger::auth::AllowAllAuthenticator; +use swagger::EmptyContext; mod server_lib; @@ -54,9 +55,9 @@ fn main() { .get_matches(); let service_fn = - petstore_api::server::auth::NewService::new( + petstore_api::server::auth::NewService::<_, EmptyContext>::new( AllowAllAuthenticator::new( - server_lib::NewService, + server_lib::NewService::new(), "cosmo" ) ); diff --git a/samples/server/petstore/rust-server/examples/server_lib/mod.rs b/samples/server/petstore/rust-server/examples/server_lib/mod.rs index ac79dc722b51..c4f682d65397 100644 --- a/samples/server/petstore/rust-server/examples/server_lib/mod.rs +++ b/samples/server/petstore/rust-server/examples/server_lib/mod.rs @@ -8,19 +8,31 @@ mod errors { pub use self::errors::*; use std::io; +use std::clone::Clone; +use std::marker::PhantomData; use hyper; use petstore_api; +use swagger::{Has, XSpanIdString}; +use swagger::auth::Authorization; -pub struct NewService; +pub struct NewService{ + marker: PhantomData +} + +impl NewService{ + pub fn new() -> Self { + NewService{marker:PhantomData} + } +} -impl hyper::server::NewService for NewService { - type Request = (hyper::Request, petstore_api::Context); +impl hyper::server::NewService for NewService where C: Has + Has> + Clone + 'static { + type Request = (hyper::Request, C); type Response = hyper::Response; type Error = hyper::Error; - type Instance = petstore_api::server::Service; + type Instance = petstore_api::server::Service, C>; /// Instantiate a new server. fn new_service(&self) -> io::Result { - Ok(petstore_api::server::Service::new(server::Server)) + Ok(petstore_api::server::Service::new(server::Server::new())) } } diff --git a/samples/server/petstore/rust-server/examples/server_lib/server.rs b/samples/server/petstore/rust-server/examples/server_lib/server.rs index bb3a045dcbc4..47b500311271 100644 --- a/samples/server/petstore/rust-server/examples/server_lib/server.rs +++ b/samples/server/petstore/rust-server/examples/server_lib/server.rs @@ -7,16 +7,18 @@ use chrono; use futures::Stream; use std::collections::HashMap; use std::io::Error; +use std::marker::PhantomData; use swagger; +use swagger::{Has, XSpanIdString}; -use petstore_api::{Api, ApiError, Context, +use petstore_api::{Api, ApiError, TestSpecialTagsResponse, - TestBodyWithQueryParamsResponse, FakeOuterBooleanSerializeResponse, FakeOuterCompositeSerializeResponse, FakeOuterNumberSerializeResponse, FakeOuterStringSerializeResponse, + TestBodyWithQueryParamsResponse, TestClientModelResponse, TestEndpointParametersResponse, TestEnumParametersResponse, @@ -47,232 +49,241 @@ use petstore_api::{Api, ApiError, Context, use petstore_api::models; #[derive(Copy, Clone)] -pub struct Server; +pub struct Server { + marker: PhantomData, +} + +impl Server { + pub fn new() -> Self { + Server{marker: PhantomData} + } +} -impl Api for Server { +impl Api for Server where C: Has{ /// To test special tags - fn test_special_tags(&self, body: models::Client, context: &Context) -> Box> { + fn test_special_tags(&self, client: models::Client, context: &C) -> Box> { let context = context.clone(); - println!("test_special_tags({:?}) - X-Span-ID: {:?}", body, context.x_span_id.unwrap_or(String::from("")).clone()); + println!("test_special_tags({:?}) - X-Span-ID: {:?}", client, context.get().0.clone()); Box::new(futures::failed("Generic failure".into())) } - fn test_body_with_query_params(&self, body: models::User, query: String, context: &Context) -> Box> { + fn fake_outer_boolean_serialize(&self, body: Option, context: &C) -> Box> { let context = context.clone(); - println!("test_body_with_query_params({:?}, \"{}\") - X-Span-ID: {:?}", body, query, context.x_span_id.unwrap_or(String::from("")).clone()); + println!("fake_outer_boolean_serialize({:?}) - X-Span-ID: {:?}", body, context.get().0.clone()); Box::new(futures::failed("Generic failure".into())) } - fn fake_outer_boolean_serialize(&self, body: Option, context: &Context) -> Box> { + fn fake_outer_composite_serialize(&self, outer_composite: Option, context: &C) -> Box> { let context = context.clone(); - println!("fake_outer_boolean_serialize({:?}) - X-Span-ID: {:?}", body, context.x_span_id.unwrap_or(String::from("")).clone()); + println!("fake_outer_composite_serialize({:?}) - X-Span-ID: {:?}", outer_composite, context.get().0.clone()); Box::new(futures::failed("Generic failure".into())) } - fn fake_outer_composite_serialize(&self, body: Option, context: &Context) -> Box> { + fn fake_outer_number_serialize(&self, body: Option, context: &C) -> Box> { let context = context.clone(); - println!("fake_outer_composite_serialize({:?}) - X-Span-ID: {:?}", body, context.x_span_id.unwrap_or(String::from("")).clone()); + println!("fake_outer_number_serialize({:?}) - X-Span-ID: {:?}", body, context.get().0.clone()); Box::new(futures::failed("Generic failure".into())) } - fn fake_outer_number_serialize(&self, body: Option, context: &Context) -> Box> { + fn fake_outer_string_serialize(&self, body: Option, context: &C) -> Box> { let context = context.clone(); - println!("fake_outer_number_serialize({:?}) - X-Span-ID: {:?}", body, context.x_span_id.unwrap_or(String::from("")).clone()); + println!("fake_outer_string_serialize({:?}) - X-Span-ID: {:?}", body, context.get().0.clone()); Box::new(futures::failed("Generic failure".into())) } - fn fake_outer_string_serialize(&self, body: Option, context: &Context) -> Box> { + fn test_body_with_query_params(&self, query: String, user: models::User, context: &C) -> Box> { let context = context.clone(); - println!("fake_outer_string_serialize({:?}) - X-Span-ID: {:?}", body, context.x_span_id.unwrap_or(String::from("")).clone()); + println!("test_body_with_query_params(\"{}\", {:?}) - X-Span-ID: {:?}", query, user, context.get().0.clone()); Box::new(futures::failed("Generic failure".into())) } /// To test \"client\" model - fn test_client_model(&self, body: models::Client, context: &Context) -> Box> { + fn test_client_model(&self, client: models::Client, context: &C) -> Box> { let context = context.clone(); - println!("test_client_model({:?}) - X-Span-ID: {:?}", body, context.x_span_id.unwrap_or(String::from("")).clone()); + println!("test_client_model({:?}) - X-Span-ID: {:?}", client, context.get().0.clone()); Box::new(futures::failed("Generic failure".into())) } /// Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 - fn test_endpoint_parameters(&self, number: f64, double: f64, pattern_without_delimiter: String, byte: swagger::ByteArray, integer: Option, int32: Option, int64: Option, float: Option, string: Option, binary: Option, date: Option>, date_time: Option>, password: Option, callback: Option, context: &Context) -> Box> { + fn test_endpoint_parameters(&self, number: f64, double: f64, pattern_without_delimiter: String, integer: Option, int32: Option, int64: Option, float: Option, string: Option, binary: Box, Error=Error> + Send>>, Error=Error> + Send>, date: Option>, date_time: Option>, password: Option, callback: Option, context: &C) -> Box> { let context = context.clone(); - println!("test_endpoint_parameters({}, {}, \"{}\", {:?}, {:?}, {:?}, {:?}, {:?}, {:?}, {:?}, {:?}, {:?}, {:?}, {:?}) - X-Span-ID: {:?}", number, double, pattern_without_delimiter, byte, integer, int32, int64, float, string, binary, date, date_time, password, callback, context.x_span_id.unwrap_or(String::from("")).clone()); + println!("test_endpoint_parameters({}, {}, \"{}\", {:?}, {:?}, {:?}, {:?}, {:?}, {:?}, {:?}, {:?}, {:?}) - X-Span-ID: {:?}", number, double, pattern_without_delimiter, integer, int32, int64, float, string, date, date_time, password, callback, context.get().0.clone()); + let _ = binary; //Suppresses unused param warning Box::new(futures::failed("Generic failure".into())) } /// To test enum parameters - fn test_enum_parameters(&self, enum_form_string_array: Option<&Vec>, enum_form_string: Option, enum_header_string_array: Option<&Vec>, enum_header_string: Option, enum_query_string_array: Option<&Vec>, enum_query_string: Option, enum_query_integer: Option, enum_query_double: Option, context: &Context) -> Box> { + fn test_enum_parameters(&self, enum_header_string_array: Option<&Vec>, enum_header_string: Option, enum_query_string_array: Option<&Vec>, enum_query_string: Option, enum_query_integer: Option, enum_query_double: Option, context: &C) -> Box> { let context = context.clone(); - println!("test_enum_parameters({:?}, {:?}, {:?}, {:?}, {:?}, {:?}, {:?}, {:?}) - X-Span-ID: {:?}", enum_form_string_array, enum_form_string, enum_header_string_array, enum_header_string, enum_query_string_array, enum_query_string, enum_query_integer, enum_query_double, context.x_span_id.unwrap_or(String::from("")).clone()); + println!("test_enum_parameters({:?}, {:?}, {:?}, {:?}, {:?}, {:?}) - X-Span-ID: {:?}", enum_header_string_array, enum_header_string, enum_query_string_array, enum_query_string, enum_query_integer, enum_query_double, context.get().0.clone()); Box::new(futures::failed("Generic failure".into())) } /// test inline additionalProperties - fn test_inline_additional_properties(&self, param: object, context: &Context) -> Box> { + fn test_inline_additional_properties(&self, request_body: HashMap, context: &C) -> Box> { let context = context.clone(); - println!("test_inline_additional_properties({:?}) - X-Span-ID: {:?}", param, context.x_span_id.unwrap_or(String::from("")).clone()); + println!("test_inline_additional_properties({:?}) - X-Span-ID: {:?}", request_body, context.get().0.clone()); Box::new(futures::failed("Generic failure".into())) } /// test json serialization of form data - fn test_json_form_data(&self, param: String, param2: String, context: &Context) -> Box> { + fn test_json_form_data(&self, param: String, param2: String, context: &C) -> Box> { let context = context.clone(); - println!("test_json_form_data(\"{}\", \"{}\") - X-Span-ID: {:?}", param, param2, context.x_span_id.unwrap_or(String::from("")).clone()); + println!("test_json_form_data(\"{}\", \"{}\") - X-Span-ID: {:?}", param, param2, context.get().0.clone()); Box::new(futures::failed("Generic failure".into())) } /// To test class name in snake case - fn test_classname(&self, body: models::Client, context: &Context) -> Box> { + fn test_classname(&self, client: models::Client, context: &C) -> Box> { let context = context.clone(); - println!("test_classname({:?}) - X-Span-ID: {:?}", body, context.x_span_id.unwrap_or(String::from("")).clone()); + println!("test_classname({:?}) - X-Span-ID: {:?}", client, context.get().0.clone()); Box::new(futures::failed("Generic failure".into())) } /// Add a new pet to the store - fn add_pet(&self, body: models::Pet, context: &Context) -> Box> { + fn add_pet(&self, pet: models::Pet, context: &C) -> Box> { let context = context.clone(); - println!("add_pet({:?}) - X-Span-ID: {:?}", body, context.x_span_id.unwrap_or(String::from("")).clone()); + println!("add_pet({:?}) - X-Span-ID: {:?}", pet, context.get().0.clone()); Box::new(futures::failed("Generic failure".into())) } /// Deletes a pet - fn delete_pet(&self, pet_id: i64, api_key: Option, context: &Context) -> Box> { + fn delete_pet(&self, pet_id: i64, api_key: Option, context: &C) -> Box> { let context = context.clone(); - println!("delete_pet({}, {:?}) - X-Span-ID: {:?}", pet_id, api_key, context.x_span_id.unwrap_or(String::from("")).clone()); + println!("delete_pet({}, {:?}) - X-Span-ID: {:?}", pet_id, api_key, context.get().0.clone()); Box::new(futures::failed("Generic failure".into())) } /// Finds Pets by status - fn find_pets_by_status(&self, status: &Vec, context: &Context) -> Box> { + fn find_pets_by_status(&self, status: &Vec, context: &C) -> Box> { let context = context.clone(); - println!("find_pets_by_status({:?}) - X-Span-ID: {:?}", status, context.x_span_id.unwrap_or(String::from("")).clone()); + println!("find_pets_by_status({:?}) - X-Span-ID: {:?}", status, context.get().0.clone()); Box::new(futures::failed("Generic failure".into())) } /// Finds Pets by tags - fn find_pets_by_tags(&self, tags: &Vec, context: &Context) -> Box> { + fn find_pets_by_tags(&self, tags: &Vec, context: &C) -> Box> { let context = context.clone(); - println!("find_pets_by_tags({:?}) - X-Span-ID: {:?}", tags, context.x_span_id.unwrap_or(String::from("")).clone()); + println!("find_pets_by_tags({:?}) - X-Span-ID: {:?}", tags, context.get().0.clone()); Box::new(futures::failed("Generic failure".into())) } /// Find pet by ID - fn get_pet_by_id(&self, pet_id: i64, context: &Context) -> Box> { + fn get_pet_by_id(&self, pet_id: i64, context: &C) -> Box> { let context = context.clone(); - println!("get_pet_by_id({}) - X-Span-ID: {:?}", pet_id, context.x_span_id.unwrap_or(String::from("")).clone()); + println!("get_pet_by_id({}) - X-Span-ID: {:?}", pet_id, context.get().0.clone()); Box::new(futures::failed("Generic failure".into())) } /// Update an existing pet - fn update_pet(&self, body: models::Pet, context: &Context) -> Box> { + fn update_pet(&self, pet: models::Pet, context: &C) -> Box> { let context = context.clone(); - println!("update_pet({:?}) - X-Span-ID: {:?}", body, context.x_span_id.unwrap_or(String::from("")).clone()); + println!("update_pet({:?}) - X-Span-ID: {:?}", pet, context.get().0.clone()); Box::new(futures::failed("Generic failure".into())) } /// Updates a pet in the store with form data - fn update_pet_with_form(&self, pet_id: i64, name: Option, status: Option, context: &Context) -> Box> { + fn update_pet_with_form(&self, pet_id: i64, name: Option, status: Option, context: &C) -> Box> { let context = context.clone(); - println!("update_pet_with_form({}, {:?}, {:?}) - X-Span-ID: {:?}", pet_id, name, status, context.x_span_id.unwrap_or(String::from("")).clone()); + println!("update_pet_with_form({}, {:?}, {:?}) - X-Span-ID: {:?}", pet_id, name, status, context.get().0.clone()); Box::new(futures::failed("Generic failure".into())) } /// uploads an image - fn upload_file(&self, pet_id: i64, additional_metadata: Option, file: Box, Error=Error> + Send>>, Error=Error> + Send>, context: &Context) -> Box> { + fn upload_file(&self, pet_id: i64, additional_metadata: Option, file: Box, Error=Error> + Send>>, Error=Error> + Send>, context: &C) -> Box> { let context = context.clone(); - println!("upload_file({}, {:?}, ) - X-Span-ID: {:?}", pet_id, additional_metadata, context.x_span_id.unwrap_or(String::from("")).clone()); + println!("upload_file({}, {:?}, ) - X-Span-ID: {:?}", pet_id, additional_metadata, context.get().0.clone()); let _ = file; //Suppresses unused param warning Box::new(futures::failed("Generic failure".into())) } /// Delete purchase order by ID - fn delete_order(&self, order_id: String, context: &Context) -> Box> { + fn delete_order(&self, order_id: String, context: &C) -> Box> { let context = context.clone(); - println!("delete_order(\"{}\") - X-Span-ID: {:?}", order_id, context.x_span_id.unwrap_or(String::from("")).clone()); + println!("delete_order(\"{}\") - X-Span-ID: {:?}", order_id, context.get().0.clone()); Box::new(futures::failed("Generic failure".into())) } /// Returns pet inventories by status - fn get_inventory(&self, context: &Context) -> Box> { + fn get_inventory(&self, context: &C) -> Box> { let context = context.clone(); - println!("get_inventory() - X-Span-ID: {:?}", context.x_span_id.unwrap_or(String::from("")).clone()); + println!("get_inventory() - X-Span-ID: {:?}", context.get().0.clone()); Box::new(futures::failed("Generic failure".into())) } /// Find purchase order by ID - fn get_order_by_id(&self, order_id: i64, context: &Context) -> Box> { + fn get_order_by_id(&self, order_id: i64, context: &C) -> Box> { let context = context.clone(); - println!("get_order_by_id({}) - X-Span-ID: {:?}", order_id, context.x_span_id.unwrap_or(String::from("")).clone()); + println!("get_order_by_id({}) - X-Span-ID: {:?}", order_id, context.get().0.clone()); Box::new(futures::failed("Generic failure".into())) } /// Place an order for a pet - fn place_order(&self, body: models::Order, context: &Context) -> Box> { + fn place_order(&self, order: models::Order, context: &C) -> Box> { let context = context.clone(); - println!("place_order({:?}) - X-Span-ID: {:?}", body, context.x_span_id.unwrap_or(String::from("")).clone()); + println!("place_order({:?}) - X-Span-ID: {:?}", order, context.get().0.clone()); Box::new(futures::failed("Generic failure".into())) } /// Create user - fn create_user(&self, body: models::User, context: &Context) -> Box> { + fn create_user(&self, user: models::User, context: &C) -> Box> { let context = context.clone(); - println!("create_user({:?}) - X-Span-ID: {:?}", body, context.x_span_id.unwrap_or(String::from("")).clone()); + println!("create_user({:?}) - X-Span-ID: {:?}", user, context.get().0.clone()); Box::new(futures::failed("Generic failure".into())) } /// Creates list of users with given input array - fn create_users_with_array_input(&self, body: &Vec, context: &Context) -> Box> { + fn create_users_with_array_input(&self, user: &Vec, context: &C) -> Box> { let context = context.clone(); - println!("create_users_with_array_input({:?}) - X-Span-ID: {:?}", body, context.x_span_id.unwrap_or(String::from("")).clone()); + println!("create_users_with_array_input({:?}) - X-Span-ID: {:?}", user, context.get().0.clone()); Box::new(futures::failed("Generic failure".into())) } /// Creates list of users with given input array - fn create_users_with_list_input(&self, body: &Vec, context: &Context) -> Box> { + fn create_users_with_list_input(&self, user: &Vec, context: &C) -> Box> { let context = context.clone(); - println!("create_users_with_list_input({:?}) - X-Span-ID: {:?}", body, context.x_span_id.unwrap_or(String::from("")).clone()); + println!("create_users_with_list_input({:?}) - X-Span-ID: {:?}", user, context.get().0.clone()); Box::new(futures::failed("Generic failure".into())) } /// Delete user - fn delete_user(&self, username: String, context: &Context) -> Box> { + fn delete_user(&self, username: String, context: &C) -> Box> { let context = context.clone(); - println!("delete_user(\"{}\") - X-Span-ID: {:?}", username, context.x_span_id.unwrap_or(String::from("")).clone()); + println!("delete_user(\"{}\") - X-Span-ID: {:?}", username, context.get().0.clone()); Box::new(futures::failed("Generic failure".into())) } /// Get user by user name - fn get_user_by_name(&self, username: String, context: &Context) -> Box> { + fn get_user_by_name(&self, username: String, context: &C) -> Box> { let context = context.clone(); - println!("get_user_by_name(\"{}\") - X-Span-ID: {:?}", username, context.x_span_id.unwrap_or(String::from("")).clone()); + println!("get_user_by_name(\"{}\") - X-Span-ID: {:?}", username, context.get().0.clone()); Box::new(futures::failed("Generic failure".into())) } /// Logs user into the system - fn login_user(&self, username: String, password: String, context: &Context) -> Box> { + fn login_user(&self, username: String, password: String, context: &C) -> Box> { let context = context.clone(); - println!("login_user(\"{}\", \"{}\") - X-Span-ID: {:?}", username, password, context.x_span_id.unwrap_or(String::from("")).clone()); + println!("login_user(\"{}\", \"{}\") - X-Span-ID: {:?}", username, password, context.get().0.clone()); Box::new(futures::failed("Generic failure".into())) } /// Logs out current logged in user session - fn logout_user(&self, context: &Context) -> Box> { + fn logout_user(&self, context: &C) -> Box> { let context = context.clone(); - println!("logout_user() - X-Span-ID: {:?}", context.x_span_id.unwrap_or(String::from("")).clone()); + println!("logout_user() - X-Span-ID: {:?}", context.get().0.clone()); Box::new(futures::failed("Generic failure".into())) } /// Updated user - fn update_user(&self, username: String, body: models::User, context: &Context) -> Box> { + fn update_user(&self, username: String, user: models::User, context: &C) -> Box> { let context = context.clone(); - println!("update_user(\"{}\", {:?}) - X-Span-ID: {:?}", username, body, context.x_span_id.unwrap_or(String::from("")).clone()); + println!("update_user(\"{}\", {:?}) - X-Span-ID: {:?}", username, user, context.get().0.clone()); Box::new(futures::failed("Generic failure".into())) } diff --git a/samples/server/petstore/rust-server/pom.xml b/samples/server/petstore/rust-server/pom.xml new file mode 100644 index 000000000000..6255746d0ef3 --- /dev/null +++ b/samples/server/petstore/rust-server/pom.xml @@ -0,0 +1,46 @@ + + 4.0.0 + org.openapitools + RustServerTests + pom + 1.0-SNAPSHOT + Rust Petstore Sample + + + + maven-dependency-plugin + + + package + + copy-dependencies + + + ${project.build.directory} + + + + + + org.codehaus.mojo + exec-maven-plugin + 1.2.1 + + + bundle-test + integration-test + + exec + + + cargo + + test + + + + + + + + diff --git a/samples/server/petstore/rust-server/src/client/mod.rs b/samples/server/petstore/rust-server/src/client/mod.rs index 645907ba2d10..8ce1b41ce1c8 100644 --- a/samples/server/petstore/rust-server/src/client/mod.rs +++ b/samples/server/petstore/rust-server/src/client/mod.rs @@ -38,15 +38,15 @@ use std::collections::{HashMap, BTreeMap}; #[allow(unused_imports)] use swagger; -use swagger::{Context, ApiError, XSpanId}; +use swagger::{ApiError, XSpanId, XSpanIdString, Has, AuthData}; use {Api, TestSpecialTagsResponse, - TestBodyWithQueryParamsResponse, FakeOuterBooleanSerializeResponse, FakeOuterCompositeSerializeResponse, FakeOuterNumberSerializeResponse, FakeOuterStringSerializeResponse, + TestBodyWithQueryParamsResponse, TestClientModelResponse, TestEndpointParametersResponse, TestEnumParametersResponse, @@ -98,8 +98,7 @@ fn into_base_path(input: &str, correct_scheme: Option<&'static str>) -> Result Box, Response=hyper::Response, Error=hyper::Error, Future=hyper::client::FutureResponse>> + Sync + Send>, - handle: Arc, + hyper_client: Arc, Response=hyper::Response, Error=hyper::Error, Future=hyper::client::FutureResponse>>>, base_path: String, } @@ -204,25 +203,13 @@ impl Client { where C: hyper::client::Connect + hyper::client::Service, { - let hyper_client = { - move |handle: &Handle| -> Box< - hyper::client::Service< - Request = hyper::Request, - Response = hyper::Response, - Error = hyper::Error, - Future = hyper::client::FutureResponse, - >, - > { - let connector = connector_fn(handle); - Box::new(hyper::Client::configure().connector(connector).build( - handle, - )) - } - }; + let connector = connector_fn(&handle); + let hyper_client = Box::new(hyper::Client::configure().connector(connector).build( + &handle, + )); Ok(Client { hyper_client: Arc::new(hyper_client), - handle: Arc::new(handle), base_path: into_base_path(base_path, protocol)?, }) } @@ -236,22 +223,21 @@ impl Client { /// The reason for this function's existence is to support legacy test code, which did mocking at the hyper layer. /// This is not a recommended way to write new tests. If other reasons are found for using this function, they /// should be mentioned here. - pub fn try_new_with_hyper_client(hyper_client: Arc Box, Response=hyper::Response, Error=hyper::Error, Future=hyper::client::FutureResponse>> + Sync + Send>, + pub fn try_new_with_hyper_client(hyper_client: Arc, Response=hyper::Response, Error=hyper::Error, Future=hyper::client::FutureResponse>>>, handle: Handle, base_path: &str) -> Result { Ok(Client { hyper_client: hyper_client, - handle: Arc::new(handle), base_path: into_base_path(base_path, None)?, }) } } -impl Api for Client { +impl Api for Client where C: Has + Has>{ - fn test_special_tags(&self, param_body: models::Client, context: &Context) -> Box> { + fn test_special_tags(&self, param_client: models::Client, context: &C) -> Box> { let uri = format!( @@ -267,20 +253,21 @@ impl Api for Client { let mut request = hyper::Request::new(hyper::Method::Patch, uri); - let body = serde_json::to_string(¶m_body).expect("impossible to fail to serialize"); + // Body parameter + + let body = serde_json::to_string(¶m_client).expect("impossible to fail to serialize"); request.set_body(body.into_bytes()); request.headers_mut().set(ContentType(mimetypes::requests::TEST_SPECIAL_TAGS.clone())); - context.x_span_id.as_ref().map(|header| request.headers_mut().set(XSpanId(header.clone()))); + request.headers_mut().set(XSpanId((context as &Has).get().0.clone())); - let hyper_client = (self.hyper_client)(&*self.handle); - Box::new(hyper_client.call(request) + Box::new(self.hyper_client.call(request) .map_err(|e| ApiError(format!("No response received: {}", e))) .and_then(|mut response| { match response.status().as_u16() { @@ -328,16 +315,12 @@ impl Api for Client { } - fn test_body_with_query_params(&self, param_body: models::User, param_query: String, context: &Context) -> Box> { - - // Query parameters - let query_query = format!("query={query}&", query=param_query.to_string()); + fn fake_outer_boolean_serialize(&self, param_body: Option, context: &C) -> Box> { let uri = format!( - "{}/v2/fake/body-with-query-params?{query}", - self.base_path, - query=utf8_percent_encode(&query_query, QUERY_ENCODE_SET) + "{}/v2/fake/outer/boolean", + self.base_path ); let uri = match Uri::from_str(&uri) { @@ -345,23 +328,26 @@ impl Api for Client { Err(err) => return Box::new(futures::done(Err(ApiError(format!("Unable to build URI: {}", err))))), }; - let mut request = hyper::Request::new(hyper::Method::Put, uri); - + let mut request = hyper::Request::new(hyper::Method::Post, uri); - let body = serde_json::to_string(¶m_body).expect("impossible to fail to serialize"); + // Body parameter + let body = param_body.map(|ref body| { - request.set_body(body.into_bytes()); + serde_json::to_string(body).expect("impossible to fail to serialize") + }); +if let Some(body) = body { + request.set_body(body.into_bytes()); + } - request.headers_mut().set(ContentType(mimetypes::requests::TEST_BODY_WITH_QUERY_PARAMS.clone())); - context.x_span_id.as_ref().map(|header| request.headers_mut().set(XSpanId(header.clone()))); + request.headers_mut().set(ContentType(mimetypes::requests::FAKE_OUTER_BOOLEAN_SERIALIZE.clone())); + request.headers_mut().set(XSpanId((context as &Has).get().0.clone())); - let hyper_client = (self.hyper_client)(&*self.handle); - Box::new(hyper_client.call(request) + Box::new(self.hyper_client.call(request) .map_err(|e| ApiError(format!("No response received: {}", e))) .and_then(|mut response| { match response.status().as_u16() { @@ -369,8 +355,19 @@ impl Api for Client { let body = response.body(); Box::new( - future::ok( - TestBodyWithQueryParamsResponse::Success + body + .concat2() + .map_err(|e| ApiError(format!("Failed to read response: {}", e))) + .and_then(|body| str::from_utf8(&body) + .map_err(|e| ApiError(format!("Response was not valid UTF8: {}", e))) + .and_then(|body| + + serde_json::from_str::(body) + .map_err(|e| e.into()) + + )) + .map(move |body| + FakeOuterBooleanSerializeResponse::OutputBoolean(body) ) ) as Box> }, @@ -398,11 +395,11 @@ impl Api for Client { } - fn fake_outer_boolean_serialize(&self, param_body: Option, context: &Context) -> Box> { + fn fake_outer_composite_serialize(&self, param_outer_composite: Option, context: &C) -> Box> { let uri = format!( - "{}/v2/fake/outer/boolean", + "{}/v2/fake/outer/composite", self.base_path ); @@ -413,7 +410,7 @@ impl Api for Client { let mut request = hyper::Request::new(hyper::Method::Post, uri); - let body = param_body.map(|ref body| { + let body = param_outer_composite.map(|ref body| { serde_json::to_string(body).expect("impossible to fail to serialize") }); @@ -422,14 +419,13 @@ if let Some(body) = body { request.set_body(body.into_bytes()); } - request.headers_mut().set(ContentType(mimetypes::requests::FAKE_OUTER_BOOLEAN_SERIALIZE.clone())); - context.x_span_id.as_ref().map(|header| request.headers_mut().set(XSpanId(header.clone()))); + request.headers_mut().set(ContentType(mimetypes::requests::FAKE_OUTER_COMPOSITE_SERIALIZE.clone())); + request.headers_mut().set(XSpanId((context as &Has).get().0.clone())); - let hyper_client = (self.hyper_client)(&*self.handle); - Box::new(hyper_client.call(request) + Box::new(self.hyper_client.call(request) .map_err(|e| ApiError(format!("No response received: {}", e))) .and_then(|mut response| { match response.status().as_u16() { @@ -444,12 +440,12 @@ if let Some(body) = body { .map_err(|e| ApiError(format!("Response was not valid UTF8: {}", e))) .and_then(|body| - serde_json::from_str::(body) + serde_json::from_str::(body) .map_err(|e| e.into()) )) .map(move |body| - FakeOuterBooleanSerializeResponse::OutputBoolean(body) + FakeOuterCompositeSerializeResponse::OutputComposite(body) ) ) as Box> }, @@ -477,11 +473,11 @@ if let Some(body) = body { } - fn fake_outer_composite_serialize(&self, param_body: Option, context: &Context) -> Box> { + fn fake_outer_number_serialize(&self, param_body: Option, context: &C) -> Box> { let uri = format!( - "{}/v2/fake/outer/composite", + "{}/v2/fake/outer/number", self.base_path ); @@ -501,14 +497,13 @@ if let Some(body) = body { request.set_body(body.into_bytes()); } - request.headers_mut().set(ContentType(mimetypes::requests::FAKE_OUTER_COMPOSITE_SERIALIZE.clone())); - context.x_span_id.as_ref().map(|header| request.headers_mut().set(XSpanId(header.clone()))); + request.headers_mut().set(ContentType(mimetypes::requests::FAKE_OUTER_NUMBER_SERIALIZE.clone())); + request.headers_mut().set(XSpanId((context as &Has).get().0.clone())); - let hyper_client = (self.hyper_client)(&*self.handle); - Box::new(hyper_client.call(request) + Box::new(self.hyper_client.call(request) .map_err(|e| ApiError(format!("No response received: {}", e))) .and_then(|mut response| { match response.status().as_u16() { @@ -523,12 +518,12 @@ if let Some(body) = body { .map_err(|e| ApiError(format!("Response was not valid UTF8: {}", e))) .and_then(|body| - serde_json::from_str::(body) + serde_json::from_str::(body) .map_err(|e| e.into()) )) .map(move |body| - FakeOuterCompositeSerializeResponse::OutputComposite(body) + FakeOuterNumberSerializeResponse::OutputNumber(body) ) ) as Box> }, @@ -556,11 +551,11 @@ if let Some(body) = body { } - fn fake_outer_number_serialize(&self, param_body: Option, context: &Context) -> Box> { + fn fake_outer_string_serialize(&self, param_body: Option, context: &C) -> Box> { let uri = format!( - "{}/v2/fake/outer/number", + "{}/v2/fake/outer/string", self.base_path ); @@ -580,14 +575,13 @@ if let Some(body) = body { request.set_body(body.into_bytes()); } - request.headers_mut().set(ContentType(mimetypes::requests::FAKE_OUTER_NUMBER_SERIALIZE.clone())); - context.x_span_id.as_ref().map(|header| request.headers_mut().set(XSpanId(header.clone()))); + request.headers_mut().set(ContentType(mimetypes::requests::FAKE_OUTER_STRING_SERIALIZE.clone())); + request.headers_mut().set(XSpanId((context as &Has).get().0.clone())); - let hyper_client = (self.hyper_client)(&*self.handle); - Box::new(hyper_client.call(request) + Box::new(self.hyper_client.call(request) .map_err(|e| ApiError(format!("No response received: {}", e))) .and_then(|mut response| { match response.status().as_u16() { @@ -602,12 +596,12 @@ if let Some(body) = body { .map_err(|e| ApiError(format!("Response was not valid UTF8: {}", e))) .and_then(|body| - serde_json::from_str::(body) + serde_json::from_str::(body) .map_err(|e| e.into()) )) .map(move |body| - FakeOuterNumberSerializeResponse::OutputNumber(body) + FakeOuterStringSerializeResponse::OutputString(body) ) ) as Box> }, @@ -635,12 +629,16 @@ if let Some(body) = body { } - fn fake_outer_string_serialize(&self, param_body: Option, context: &Context) -> Box> { + fn test_body_with_query_params(&self, param_query: String, param_user: models::User, context: &C) -> Box> { + + // Query parameters + let query_query = format!("query={query}&", query=param_query.to_string()); let uri = format!( - "{}/v2/fake/outer/string", - self.base_path + "{}/v2/fake/body-with-query-params?{query}", + self.base_path, + query=utf8_percent_encode(&query_query, QUERY_ENCODE_SET) ); let uri = match Uri::from_str(&uri) { @@ -648,25 +646,22 @@ if let Some(body) = body { Err(err) => return Box::new(futures::done(Err(ApiError(format!("Unable to build URI: {}", err))))), }; - let mut request = hyper::Request::new(hyper::Method::Post, uri); + let mut request = hyper::Request::new(hyper::Method::Put, uri); - let body = param_body.map(|ref body| { - serde_json::to_string(body).expect("impossible to fail to serialize") - }); + let body = serde_json::to_string(¶m_user).expect("impossible to fail to serialize"); -if let Some(body) = body { - request.set_body(body.into_bytes()); - } - request.headers_mut().set(ContentType(mimetypes::requests::FAKE_OUTER_STRING_SERIALIZE.clone())); - context.x_span_id.as_ref().map(|header| request.headers_mut().set(XSpanId(header.clone()))); + request.set_body(body.into_bytes()); + + + request.headers_mut().set(ContentType(mimetypes::requests::TEST_BODY_WITH_QUERY_PARAMS.clone())); + request.headers_mut().set(XSpanId((context as &Has).get().0.clone())); - let hyper_client = (self.hyper_client)(&*self.handle); - Box::new(hyper_client.call(request) + Box::new(self.hyper_client.call(request) .map_err(|e| ApiError(format!("No response received: {}", e))) .and_then(|mut response| { match response.status().as_u16() { @@ -674,19 +669,8 @@ if let Some(body) = body { let body = response.body(); Box::new( - body - .concat2() - .map_err(|e| ApiError(format!("Failed to read response: {}", e))) - .and_then(|body| str::from_utf8(&body) - .map_err(|e| ApiError(format!("Response was not valid UTF8: {}", e))) - .and_then(|body| - - serde_json::from_str::(body) - .map_err(|e| e.into()) - - )) - .map(move |body| - FakeOuterStringSerializeResponse::OutputString(body) + future::ok( + TestBodyWithQueryParamsResponse::Success ) ) as Box> }, @@ -714,7 +698,7 @@ if let Some(body) = body { } - fn test_client_model(&self, param_body: models::Client, context: &Context) -> Box> { + fn test_client_model(&self, param_client: models::Client, context: &C) -> Box> { let uri = format!( @@ -730,20 +714,19 @@ if let Some(body) = body { let mut request = hyper::Request::new(hyper::Method::Patch, uri); - let body = serde_json::to_string(¶m_body).expect("impossible to fail to serialize"); + let body = serde_json::to_string(¶m_client).expect("impossible to fail to serialize"); request.set_body(body.into_bytes()); request.headers_mut().set(ContentType(mimetypes::requests::TEST_CLIENT_MODEL.clone())); - context.x_span_id.as_ref().map(|header| request.headers_mut().set(XSpanId(header.clone()))); + request.headers_mut().set(XSpanId((context as &Has).get().0.clone())); - let hyper_client = (self.hyper_client)(&*self.handle); - Box::new(hyper_client.call(request) + Box::new(self.hyper_client.call(request) .map_err(|e| ApiError(format!("No response received: {}", e))) .and_then(|mut response| { match response.status().as_u16() { @@ -791,7 +774,7 @@ if let Some(body) = body { } - fn test_endpoint_parameters(&self, param_number: f64, param_double: f64, param_pattern_without_delimiter: String, param_byte: swagger::ByteArray, param_integer: Option, param_int32: Option, param_int64: Option, param_float: Option, param_string: Option, param_binary: Option, param_date: Option>, param_date_time: Option>, param_password: Option, param_callback: Option, context: &Context) -> Box> { + fn test_endpoint_parameters(&self, param_number: f64, param_double: f64, param_pattern_without_delimiter: String, param_integer: Option, param_int32: Option, param_int64: Option, param_float: Option, param_string: Option, param_binary: Box, Error=Error> + Send>>, Error=Error> + Send>, param_date: Option>, param_date_time: Option>, param_password: Option, param_callback: Option, context: &C) -> Box> { let uri = format!( @@ -806,30 +789,45 @@ if let Some(body) = body { let mut request = hyper::Request::new(hyper::Method::Post, uri); - let params = &[ - ("integer", param_integer.map(|param| format!("{:?}", param))), - ("int32", param_int32.map(|param| format!("{:?}", param))), - ("int64", param_int64.map(|param| format!("{:?}", param))), - ("number", Some(format!("{:?}", param_number))), - ("float", param_float.map(|param| format!("{:?}", param))), - ("double", Some(format!("{:?}", param_double))), - ("string", param_string), - ("pattern_without_delimiter", Some(param_pattern_without_delimiter)), - ("byte", Some(format!("{:?}", param_byte))), - ("binary", param_binary.map(|param| format!("{:?}", param))), - ("date", param_date.map(|param| format!("{:?}", param))), - ("dateTime", param_date_time.map(|param| format!("{:?}", param))), - ("password", param_password), - ("callback", param_callback), - ]; - let body = serde_urlencoded::to_string(params).expect("impossible to fail to serialize"); + // Form data body + let mut multipart = Multipart::new(); - request.headers_mut().set(ContentType(mimetypes::requests::TEST_ENDPOINT_PARAMETERS.clone())); - request.set_body(body.into_bytes()); + // Helper function to convert a Stream into a String. The String can then be used to build the HTTP body. + fn convert_stream_to_string(stream: Box, Error=Error> + Send>) -> Result { - context.x_span_id.as_ref().map(|header| request.headers_mut().set(XSpanId(header.clone()))); - context.auth_data.as_ref().map(|auth_data| { - if let &swagger::AuthData::Basic(ref basic_header) = auth_data { + stream.concat2() + .wait() + .map_err(|e| ApiError(format!("Unable to collect stream: {}", e))) + .and_then(|body| String::from_utf8(body) + .map_err(|e| ApiError(format!("Failed to convert utf8 stream to String: {}", e)))) + } + + if let Ok(Some(param_binary)) = param_binary.wait() { + match convert_stream_to_string(param_binary) { + Ok(param_binary) => { + // Add file to multipart form. + multipart.add_text("binary", param_binary); + }, + Err(err) => return Box::new(futures::done(Err(err))), + } + } + + let mut fields = match multipart.prepare() { + Ok(fields) => fields, + Err(err) => return Box::new(futures::done(Err(ApiError(format!("Unable to build request: {}", err))))), + }; + + let mut body_string = String::new(); + let body = fields.to_body().read_to_string(&mut body_string); + let boundary = fields.boundary(); + let multipart_header = match mime::Mime::from_str(&format!("multipart/form-data;boundary={}", boundary)) { + Ok(multipart_header) => multipart_header, + Err(err) => return Box::new(futures::done(Err(ApiError(format!("Unable to build multipart header: {:?}", err))))), + }; + + request.headers_mut().set(XSpanId((context as &Has).get().0.clone())); + (context as &Has>).get().as_ref().map(|auth_data| { + if let &AuthData::Basic(ref basic_header) = auth_data { request.headers_mut().set(hyper::header::Authorization( basic_header.clone(), )) @@ -837,9 +835,11 @@ if let Some(body) = body { }); + request.headers_mut().set(ContentType(multipart_header)); + request.set_body(body_string.into_bytes()); + - let hyper_client = (self.hyper_client)(&*self.handle); - Box::new(hyper_client.call(request) + Box::new(self.hyper_client.call(request) .map_err(|e| ApiError(format!("No response received: {}", e))) .and_then(|mut response| { match response.status().as_u16() { @@ -885,20 +885,22 @@ if let Some(body) = body { } - fn test_enum_parameters(&self, param_enum_form_string_array: Option<&Vec>, param_enum_form_string: Option, param_enum_header_string_array: Option<&Vec>, param_enum_header_string: Option, param_enum_query_string_array: Option<&Vec>, param_enum_query_string: Option, param_enum_query_integer: Option, param_enum_query_double: Option, context: &Context) -> Box> { + fn test_enum_parameters(&self, param_enum_header_string_array: Option<&Vec>, param_enum_header_string: Option, param_enum_query_string_array: Option<&Vec>, param_enum_query_string: Option, param_enum_query_integer: Option, param_enum_query_double: Option, context: &C) -> Box> { // Query parameters let query_enum_query_string_array = param_enum_query_string_array.map_or_else(String::new, |query| format!("enum_query_string_array={enum_query_string_array}&", enum_query_string_array=query.join(","))); let query_enum_query_string = param_enum_query_string.map_or_else(String::new, |query| format!("enum_query_string={enum_query_string}&", enum_query_string=query.to_string())); let query_enum_query_integer = param_enum_query_integer.map_or_else(String::new, |query| format!("enum_query_integer={enum_query_integer}&", enum_query_integer=query.to_string())); + let query_enum_query_double = param_enum_query_double.map_or_else(String::new, |query| format!("enum_query_double={enum_query_double}&", enum_query_double=query.to_string())); let uri = format!( - "{}/v2/fake?{enum_query_string_array}{enum_query_string}{enum_query_integer}", + "{}/v2/fake?{enum_query_string_array}{enum_query_string}{enum_query_integer}{enum_query_double}", self.base_path, enum_query_string_array=utf8_percent_encode(&query_enum_query_string_array, QUERY_ENCODE_SET), enum_query_string=utf8_percent_encode(&query_enum_query_string, QUERY_ENCODE_SET), - enum_query_integer=utf8_percent_encode(&query_enum_query_integer, QUERY_ENCODE_SET) + enum_query_integer=utf8_percent_encode(&query_enum_query_integer, QUERY_ENCODE_SET), + enum_query_double=utf8_percent_encode(&query_enum_query_double, QUERY_ENCODE_SET) ); let uri = match Uri::from_str(&uri) { @@ -908,17 +910,9 @@ if let Some(body) = body { let mut request = hyper::Request::new(hyper::Method::Get, uri); - let params = &[ - ("enum_form_string_array", param_enum_form_string_array.map(|param| format!("{:?}", param))), - ("enum_form_string", param_enum_form_string), - ("enum_query_double", param_enum_query_double.map(|param| format!("{:?}", param))), - ]; - let body = serde_urlencoded::to_string(params).expect("impossible to fail to serialize"); - request.headers_mut().set(ContentType(mimetypes::requests::TEST_ENUM_PARAMETERS.clone())); - request.set_body(body.into_bytes()); - context.x_span_id.as_ref().map(|header| request.headers_mut().set(XSpanId(header.clone()))); + request.headers_mut().set(XSpanId((context as &Has).get().0.clone())); // Header parameters header! { (RequestEnumHeaderStringArray, "enum_header_string_array") => (String)* } @@ -929,8 +923,7 @@ if let Some(body) = body { - let hyper_client = (self.hyper_client)(&*self.handle); - Box::new(hyper_client.call(request) + Box::new(self.hyper_client.call(request) .map_err(|e| ApiError(format!("No response received: {}", e))) .and_then(|mut response| { match response.status().as_u16() { @@ -976,7 +969,7 @@ if let Some(body) = body { } - fn test_inline_additional_properties(&self, param_param: object, context: &Context) -> Box> { + fn test_inline_additional_properties(&self, param_request_body: HashMap, context: &C) -> Box> { let uri = format!( @@ -992,20 +985,19 @@ if let Some(body) = body { let mut request = hyper::Request::new(hyper::Method::Post, uri); - let body = serde_json::to_string(¶m_param).expect("impossible to fail to serialize"); + let body = serde_json::to_string(¶m_request_body).expect("impossible to fail to serialize"); request.set_body(body.into_bytes()); request.headers_mut().set(ContentType(mimetypes::requests::TEST_INLINE_ADDITIONAL_PROPERTIES.clone())); - context.x_span_id.as_ref().map(|header| request.headers_mut().set(XSpanId(header.clone()))); + request.headers_mut().set(XSpanId((context as &Has).get().0.clone())); - let hyper_client = (self.hyper_client)(&*self.handle); - Box::new(hyper_client.call(request) + Box::new(self.hyper_client.call(request) .map_err(|e| ApiError(format!("No response received: {}", e))) .and_then(|mut response| { match response.status().as_u16() { @@ -1042,7 +1034,7 @@ if let Some(body) = body { } - fn test_json_form_data(&self, param_param: String, param_param2: String, context: &Context) -> Box> { + fn test_json_form_data(&self, param_param: String, param_param2: String, context: &C) -> Box> { let uri = format!( @@ -1066,13 +1058,12 @@ if let Some(body) = body { request.headers_mut().set(ContentType(mimetypes::requests::TEST_JSON_FORM_DATA.clone())); request.set_body(body.into_bytes()); - context.x_span_id.as_ref().map(|header| request.headers_mut().set(XSpanId(header.clone()))); + request.headers_mut().set(XSpanId((context as &Has).get().0.clone())); - let hyper_client = (self.hyper_client)(&*self.handle); - Box::new(hyper_client.call(request) + Box::new(self.hyper_client.call(request) .map_err(|e| ApiError(format!("No response received: {}", e))) .and_then(|mut response| { match response.status().as_u16() { @@ -1109,7 +1100,7 @@ if let Some(body) = body { } - fn test_classname(&self, param_body: models::Client, context: &Context) -> Box> { + fn test_classname(&self, param_client: models::Client, context: &C) -> Box> { let uri = format!( @@ -1125,20 +1116,21 @@ if let Some(body) = body { let mut request = hyper::Request::new(hyper::Method::Patch, uri); - let body = serde_json::to_string(¶m_body).expect("impossible to fail to serialize"); + // Body parameter + + let body = serde_json::to_string(¶m_client).expect("impossible to fail to serialize"); request.set_body(body.into_bytes()); request.headers_mut().set(ContentType(mimetypes::requests::TEST_CLASSNAME.clone())); - context.x_span_id.as_ref().map(|header| request.headers_mut().set(XSpanId(header.clone()))); + request.headers_mut().set(XSpanId((context as &Has).get().0.clone())); - let hyper_client = (self.hyper_client)(&*self.handle); - Box::new(hyper_client.call(request) + Box::new(self.hyper_client.call(request) .map_err(|e| ApiError(format!("No response received: {}", e))) .and_then(|mut response| { match response.status().as_u16() { @@ -1186,7 +1178,7 @@ if let Some(body) = body { } - fn add_pet(&self, param_body: models::Pet, context: &Context) -> Box> { + fn add_pet(&self, param_pet: models::Pet, context: &C) -> Box> { let uri = format!( @@ -1202,20 +1194,21 @@ if let Some(body) = body { let mut request = hyper::Request::new(hyper::Method::Post, uri); - let body = serde_xml_rs::to_string(¶m_body).expect("impossible to fail to serialize"); + // Body parameter + + let body = serde_xml_rs::to_string(¶m_pet).expect("impossible to fail to serialize"); request.set_body(body.into_bytes()); request.headers_mut().set(ContentType(mimetypes::requests::ADD_PET.clone())); - context.x_span_id.as_ref().map(|header| request.headers_mut().set(XSpanId(header.clone()))); + request.headers_mut().set(XSpanId((context as &Has).get().0.clone())); - let hyper_client = (self.hyper_client)(&*self.handle); - Box::new(hyper_client.call(request) + Box::new(self.hyper_client.call(request) .map_err(|e| ApiError(format!("No response received: {}", e))) .and_then(|mut response| { match response.status().as_u16() { @@ -1252,7 +1245,7 @@ if let Some(body) = body { } - fn delete_pet(&self, param_pet_id: i64, param_api_key: Option, context: &Context) -> Box> { + fn delete_pet(&self, param_pet_id: i64, param_api_key: Option, context: &C) -> Box> { let uri = format!( @@ -1269,7 +1262,7 @@ if let Some(body) = body { - context.x_span_id.as_ref().map(|header| request.headers_mut().set(XSpanId(header.clone()))); + request.headers_mut().set(XSpanId((context as &Has).get().0.clone())); // Header parameters header! { (RequestApiKey, "api_key") => [String] } @@ -1278,8 +1271,7 @@ if let Some(body) = body { - let hyper_client = (self.hyper_client)(&*self.handle); - Box::new(hyper_client.call(request) + Box::new(self.hyper_client.call(request) .map_err(|e| ApiError(format!("No response received: {}", e))) .and_then(|mut response| { match response.status().as_u16() { @@ -1316,7 +1308,7 @@ if let Some(body) = body { } - fn find_pets_by_status(&self, param_status: &Vec, context: &Context) -> Box> { + fn find_pets_by_status(&self, param_status: &Vec, context: &C) -> Box> { // Query parameters let query_status = format!("status={status}&", status=param_status.join(",")); @@ -1337,13 +1329,12 @@ if let Some(body) = body { - context.x_span_id.as_ref().map(|header| request.headers_mut().set(XSpanId(header.clone()))); + request.headers_mut().set(XSpanId((context as &Has).get().0.clone())); - let hyper_client = (self.hyper_client)(&*self.handle); - Box::new(hyper_client.call(request) + Box::new(self.hyper_client.call(request) .map_err(|e| ApiError(format!("No response received: {}", e))) .and_then(|mut response| { match response.status().as_u16() { @@ -1402,7 +1393,7 @@ if let Some(body) = body { } - fn find_pets_by_tags(&self, param_tags: &Vec, context: &Context) -> Box> { + fn find_pets_by_tags(&self, param_tags: &Vec, context: &C) -> Box> { // Query parameters let query_tags = format!("tags={tags}&", tags=param_tags.join(",")); @@ -1423,13 +1414,12 @@ if let Some(body) = body { - context.x_span_id.as_ref().map(|header| request.headers_mut().set(XSpanId(header.clone()))); + request.headers_mut().set(XSpanId((context as &Has).get().0.clone())); - let hyper_client = (self.hyper_client)(&*self.handle); - Box::new(hyper_client.call(request) + Box::new(self.hyper_client.call(request) .map_err(|e| ApiError(format!("No response received: {}", e))) .and_then(|mut response| { match response.status().as_u16() { @@ -1488,7 +1478,7 @@ if let Some(body) = body { } - fn get_pet_by_id(&self, param_pet_id: i64, context: &Context) -> Box> { + fn get_pet_by_id(&self, param_pet_id: i64, context: &C) -> Box> { let uri = format!( @@ -1505,13 +1495,12 @@ if let Some(body) = body { - context.x_span_id.as_ref().map(|header| request.headers_mut().set(XSpanId(header.clone()))); + request.headers_mut().set(XSpanId((context as &Has).get().0.clone())); - let hyper_client = (self.hyper_client)(&*self.handle); - Box::new(hyper_client.call(request) + Box::new(self.hyper_client.call(request) .map_err(|e| ApiError(format!("No response received: {}", e))) .and_then(|mut response| { match response.status().as_u16() { @@ -1579,7 +1568,7 @@ if let Some(body) = body { } - fn update_pet(&self, param_body: models::Pet, context: &Context) -> Box> { + fn update_pet(&self, param_pet: models::Pet, context: &C) -> Box> { let uri = format!( @@ -1595,20 +1584,19 @@ if let Some(body) = body { let mut request = hyper::Request::new(hyper::Method::Put, uri); - let body = serde_xml_rs::to_string(¶m_body).expect("impossible to fail to serialize"); + let body = serde_xml_rs::to_string(¶m_pet).expect("impossible to fail to serialize"); request.set_body(body.into_bytes()); request.headers_mut().set(ContentType(mimetypes::requests::UPDATE_PET.clone())); - context.x_span_id.as_ref().map(|header| request.headers_mut().set(XSpanId(header.clone()))); + request.headers_mut().set(XSpanId((context as &Has).get().0.clone())); - let hyper_client = (self.hyper_client)(&*self.handle); - Box::new(hyper_client.call(request) + Box::new(self.hyper_client.call(request) .map_err(|e| ApiError(format!("No response received: {}", e))) .and_then(|mut response| { match response.status().as_u16() { @@ -1663,7 +1651,7 @@ if let Some(body) = body { } - fn update_pet_with_form(&self, param_pet_id: i64, param_name: Option, param_status: Option, context: &Context) -> Box> { + fn update_pet_with_form(&self, param_pet_id: i64, param_name: Option, param_status: Option, context: &C) -> Box> { let uri = format!( @@ -1687,13 +1675,12 @@ if let Some(body) = body { request.headers_mut().set(ContentType(mimetypes::requests::UPDATE_PET_WITH_FORM.clone())); request.set_body(body.into_bytes()); - context.x_span_id.as_ref().map(|header| request.headers_mut().set(XSpanId(header.clone()))); + request.headers_mut().set(XSpanId((context as &Has).get().0.clone())); - let hyper_client = (self.hyper_client)(&*self.handle); - Box::new(hyper_client.call(request) + Box::new(self.hyper_client.call(request) .map_err(|e| ApiError(format!("No response received: {}", e))) .and_then(|mut response| { match response.status().as_u16() { @@ -1730,7 +1717,7 @@ if let Some(body) = body { } - fn upload_file(&self, param_pet_id: i64, param_additional_metadata: Option, param_file: Box, Error=Error> + Send>>, Error=Error> + Send>, context: &Context) -> Box> { + fn upload_file(&self, param_pet_id: i64, param_additional_metadata: Option, param_file: Box, Error=Error> + Send>>, Error=Error> + Send>, context: &C) -> Box> { let uri = format!( @@ -1781,7 +1768,7 @@ if let Some(body) = body { Err(err) => return Box::new(futures::done(Err(ApiError(format!("Unable to build multipart header: {:?}", err))))), }; - context.x_span_id.as_ref().map(|header| request.headers_mut().set(XSpanId(header.clone()))); + request.headers_mut().set(XSpanId((context as &Has).get().0.clone())); @@ -1789,8 +1776,7 @@ if let Some(body) = body { request.set_body(body_string.into_bytes()); - let hyper_client = (self.hyper_client)(&*self.handle); - Box::new(hyper_client.call(request) + Box::new(self.hyper_client.call(request) .map_err(|e| ApiError(format!("No response received: {}", e))) .and_then(|mut response| { match response.status().as_u16() { @@ -1838,7 +1824,7 @@ if let Some(body) = body { } - fn delete_order(&self, param_order_id: String, context: &Context) -> Box> { + fn delete_order(&self, param_order_id: String, context: &C) -> Box> { let uri = format!( @@ -1855,13 +1841,12 @@ if let Some(body) = body { - context.x_span_id.as_ref().map(|header| request.headers_mut().set(XSpanId(header.clone()))); + request.headers_mut().set(XSpanId((context as &Has).get().0.clone())); - let hyper_client = (self.hyper_client)(&*self.handle); - Box::new(hyper_client.call(request) + Box::new(self.hyper_client.call(request) .map_err(|e| ApiError(format!("No response received: {}", e))) .and_then(|mut response| { match response.status().as_u16() { @@ -1907,7 +1892,7 @@ if let Some(body) = body { } - fn get_inventory(&self, context: &Context) -> Box> { + fn get_inventory(&self, context: &C) -> Box> { let uri = format!( @@ -1924,13 +1909,12 @@ if let Some(body) = body { - context.x_span_id.as_ref().map(|header| request.headers_mut().set(XSpanId(header.clone()))); + request.headers_mut().set(XSpanId((context as &Has).get().0.clone())); - let hyper_client = (self.hyper_client)(&*self.handle); - Box::new(hyper_client.call(request) + Box::new(self.hyper_client.call(request) .map_err(|e| ApiError(format!("No response received: {}", e))) .and_then(|mut response| { match response.status().as_u16() { @@ -1978,7 +1962,7 @@ if let Some(body) = body { } - fn get_order_by_id(&self, param_order_id: i64, context: &Context) -> Box> { + fn get_order_by_id(&self, param_order_id: i64, context: &C) -> Box> { let uri = format!( @@ -1995,13 +1979,12 @@ if let Some(body) = body { - context.x_span_id.as_ref().map(|header| request.headers_mut().set(XSpanId(header.clone()))); + request.headers_mut().set(XSpanId((context as &Has).get().0.clone())); - let hyper_client = (self.hyper_client)(&*self.handle); - Box::new(hyper_client.call(request) + Box::new(self.hyper_client.call(request) .map_err(|e| ApiError(format!("No response received: {}", e))) .and_then(|mut response| { match response.status().as_u16() { @@ -2069,7 +2052,7 @@ if let Some(body) = body { } - fn place_order(&self, param_body: models::Order, context: &Context) -> Box> { + fn place_order(&self, param_order: models::Order, context: &C) -> Box> { let uri = format!( @@ -2085,20 +2068,19 @@ if let Some(body) = body { let mut request = hyper::Request::new(hyper::Method::Post, uri); - let body = serde_json::to_string(¶m_body).expect("impossible to fail to serialize"); + let body = serde_json::to_string(¶m_order).expect("impossible to fail to serialize"); request.set_body(body.into_bytes()); request.headers_mut().set(ContentType(mimetypes::requests::PLACE_ORDER.clone())); - context.x_span_id.as_ref().map(|header| request.headers_mut().set(XSpanId(header.clone()))); + request.headers_mut().set(XSpanId((context as &Has).get().0.clone())); - let hyper_client = (self.hyper_client)(&*self.handle); - Box::new(hyper_client.call(request) + Box::new(self.hyper_client.call(request) .map_err(|e| ApiError(format!("No response received: {}", e))) .and_then(|mut response| { match response.status().as_u16() { @@ -2157,7 +2139,7 @@ if let Some(body) = body { } - fn create_user(&self, param_body: models::User, context: &Context) -> Box> { + fn create_user(&self, param_user: models::User, context: &C) -> Box> { let uri = format!( @@ -2173,20 +2155,21 @@ if let Some(body) = body { let mut request = hyper::Request::new(hyper::Method::Post, uri); - let body = serde_json::to_string(¶m_body).expect("impossible to fail to serialize"); + // Body parameter + + let body = serde_json::to_string(¶m_user).expect("impossible to fail to serialize"); request.set_body(body.into_bytes()); request.headers_mut().set(ContentType(mimetypes::requests::CREATE_USER.clone())); - context.x_span_id.as_ref().map(|header| request.headers_mut().set(XSpanId(header.clone()))); + request.headers_mut().set(XSpanId((context as &Has).get().0.clone())); - let hyper_client = (self.hyper_client)(&*self.handle); - Box::new(hyper_client.call(request) + Box::new(self.hyper_client.call(request) .map_err(|e| ApiError(format!("No response received: {}", e))) .and_then(|mut response| { match response.status().as_u16() { @@ -2223,7 +2206,7 @@ if let Some(body) = body { } - fn create_users_with_array_input(&self, param_body: &Vec, context: &Context) -> Box> { + fn create_users_with_array_input(&self, param_user: &Vec, context: &C) -> Box> { let uri = format!( @@ -2239,20 +2222,19 @@ if let Some(body) = body { let mut request = hyper::Request::new(hyper::Method::Post, uri); - let body = serde_json::to_string(¶m_body).expect("impossible to fail to serialize"); + let body = serde_json::to_string(¶m_user).expect("impossible to fail to serialize"); request.set_body(body.into_bytes()); request.headers_mut().set(ContentType(mimetypes::requests::CREATE_USERS_WITH_ARRAY_INPUT.clone())); - context.x_span_id.as_ref().map(|header| request.headers_mut().set(XSpanId(header.clone()))); + request.headers_mut().set(XSpanId((context as &Has).get().0.clone())); - let hyper_client = (self.hyper_client)(&*self.handle); - Box::new(hyper_client.call(request) + Box::new(self.hyper_client.call(request) .map_err(|e| ApiError(format!("No response received: {}", e))) .and_then(|mut response| { match response.status().as_u16() { @@ -2289,7 +2271,7 @@ if let Some(body) = body { } - fn create_users_with_list_input(&self, param_body: &Vec, context: &Context) -> Box> { + fn create_users_with_list_input(&self, param_user: &Vec, context: &C) -> Box> { let uri = format!( @@ -2305,20 +2287,19 @@ if let Some(body) = body { let mut request = hyper::Request::new(hyper::Method::Post, uri); - let body = serde_json::to_string(¶m_body).expect("impossible to fail to serialize"); + let body = serde_json::to_string(¶m_user).expect("impossible to fail to serialize"); request.set_body(body.into_bytes()); request.headers_mut().set(ContentType(mimetypes::requests::CREATE_USERS_WITH_LIST_INPUT.clone())); - context.x_span_id.as_ref().map(|header| request.headers_mut().set(XSpanId(header.clone()))); + request.headers_mut().set(XSpanId((context as &Has).get().0.clone())); - let hyper_client = (self.hyper_client)(&*self.handle); - Box::new(hyper_client.call(request) + Box::new(self.hyper_client.call(request) .map_err(|e| ApiError(format!("No response received: {}", e))) .and_then(|mut response| { match response.status().as_u16() { @@ -2355,7 +2336,7 @@ if let Some(body) = body { } - fn delete_user(&self, param_username: String, context: &Context) -> Box> { + fn delete_user(&self, param_username: String, context: &C) -> Box> { let uri = format!( @@ -2372,13 +2353,12 @@ if let Some(body) = body { - context.x_span_id.as_ref().map(|header| request.headers_mut().set(XSpanId(header.clone()))); + request.headers_mut().set(XSpanId((context as &Has).get().0.clone())); - let hyper_client = (self.hyper_client)(&*self.handle); - Box::new(hyper_client.call(request) + Box::new(self.hyper_client.call(request) .map_err(|e| ApiError(format!("No response received: {}", e))) .and_then(|mut response| { match response.status().as_u16() { @@ -2424,7 +2404,7 @@ if let Some(body) = body { } - fn get_user_by_name(&self, param_username: String, context: &Context) -> Box> { + fn get_user_by_name(&self, param_username: String, context: &C) -> Box> { let uri = format!( @@ -2441,13 +2421,12 @@ if let Some(body) = body { - context.x_span_id.as_ref().map(|header| request.headers_mut().set(XSpanId(header.clone()))); + request.headers_mut().set(XSpanId((context as &Has).get().0.clone())); - let hyper_client = (self.hyper_client)(&*self.handle); - Box::new(hyper_client.call(request) + Box::new(self.hyper_client.call(request) .map_err(|e| ApiError(format!("No response received: {}", e))) .and_then(|mut response| { match response.status().as_u16() { @@ -2515,7 +2494,7 @@ if let Some(body) = body { } - fn login_user(&self, param_username: String, param_password: String, context: &Context) -> Box> { + fn login_user(&self, param_username: String, param_password: String, context: &C) -> Box> { // Query parameters let query_username = format!("username={username}&", username=param_username.to_string()); @@ -2538,48 +2517,15 @@ if let Some(body) = body { - context.x_span_id.as_ref().map(|header| request.headers_mut().set(XSpanId(header.clone()))); + request.headers_mut().set(XSpanId((context as &Has).get().0.clone())); - let hyper_client = (self.hyper_client)(&*self.handle); - Box::new(hyper_client.call(request) + Box::new(self.hyper_client.call(request) .map_err(|e| ApiError(format!("No response received: {}", e))) .and_then(|mut response| { match response.status().as_u16() { - 200 => { - header! { (ResponseXRateLimit, "X-Rate-Limit") => [i32] } - let response_x_rate_limit = match response.headers().get::() { - Some(response_x_rate_limit) => response_x_rate_limit.0.clone(), - None => return Box::new(future::err(ApiError(String::from("Required response header X-Rate-Limit for response 200 was not found.")))) as Box>, - }; - header! { (ResponseXExpiresAfter, "X-Expires-After") => [chrono::DateTime] } - let response_x_expires_after = match response.headers().get::() { - Some(response_x_expires_after) => response_x_expires_after.0.clone(), - None => return Box::new(future::err(ApiError(String::from("Required response header X-Expires-After for response 200 was not found.")))) as Box>, - }; - let body = response.body(); - Box::new( - - body - .concat2() - .map_err(|e| ApiError(format!("Failed to read response: {}", e))) - .and_then(|body| str::from_utf8(&body) - .map_err(|e| ApiError(format!("Response was not valid UTF8: {}", e))) - .and_then(|body| - - // ToDo: this will move to swagger-rs and become a standard From conversion trait - // once https://github.com/RReverser/serde-xml-rs/pull/45 is accepted upstream - serde_xml_rs::from_str::(body) - .map_err(|e| ApiError(format!("Response body did not match the schema: {}", e))) - - )) - .map(move |body| - LoginUserResponse::SuccessfulOperation{ body: body, x_rate_limit: response_x_rate_limit, x_expires_after: response_x_expires_after } - ) - ) as Box> - }, 400 => { let body = response.body(); Box::new( @@ -2613,7 +2559,7 @@ if let Some(body) = body { } - fn logout_user(&self, context: &Context) -> Box> { + fn logout_user(&self, context: &C) -> Box> { let uri = format!( @@ -2630,13 +2576,12 @@ if let Some(body) = body { - context.x_span_id.as_ref().map(|header| request.headers_mut().set(XSpanId(header.clone()))); + request.headers_mut().set(XSpanId((context as &Has).get().0.clone())); - let hyper_client = (self.hyper_client)(&*self.handle); - Box::new(hyper_client.call(request) + Box::new(self.hyper_client.call(request) .map_err(|e| ApiError(format!("No response received: {}", e))) .and_then(|mut response| { match response.status().as_u16() { @@ -2673,7 +2618,7 @@ if let Some(body) = body { } - fn update_user(&self, param_username: String, param_body: models::User, context: &Context) -> Box> { + fn update_user(&self, param_username: String, param_user: models::User, context: &C) -> Box> { let uri = format!( @@ -2689,20 +2634,19 @@ if let Some(body) = body { let mut request = hyper::Request::new(hyper::Method::Put, uri); - let body = serde_json::to_string(¶m_body).expect("impossible to fail to serialize"); + let body = serde_json::to_string(¶m_user).expect("impossible to fail to serialize"); request.set_body(body.into_bytes()); request.headers_mut().set(ContentType(mimetypes::requests::UPDATE_USER.clone())); - context.x_span_id.as_ref().map(|header| request.headers_mut().set(XSpanId(header.clone()))); + request.headers_mut().set(XSpanId((context as &Has).get().0.clone())); - let hyper_client = (self.hyper_client)(&*self.handle); - Box::new(hyper_client.call(request) + Box::new(self.hyper_client.call(request) .map_err(|e| ApiError(format!("No response received: {}", e))) .and_then(|mut response| { match response.status().as_u16() { diff --git a/samples/server/petstore/rust-server/src/lib.rs b/samples/server/petstore/rust-server/src/lib.rs index cdfe30c6d018..e0311e333219 100644 --- a/samples/server/petstore/rust-server/src/lib.rs +++ b/samples/server/petstore/rust-server/src/lib.rs @@ -30,7 +30,7 @@ pub use futures::Future; #[cfg(any(feature = "client", feature = "server"))] mod mimetypes; -pub use swagger::{ApiError, Context, ContextWrapper}; +pub use swagger::{ApiError, ContextWrapper}; pub const BASE_PATH: &'static str = "/v2"; pub const API_VERSION: &'static str = "1.0.0"; @@ -42,12 +42,6 @@ pub enum TestSpecialTagsResponse { SuccessfulOperation ( models::Client ) , } -#[derive(Debug, PartialEq)] -pub enum TestBodyWithQueryParamsResponse { - /// Success - Success , -} - #[derive(Debug, PartialEq)] pub enum FakeOuterBooleanSerializeResponse { /// Output boolean @@ -72,6 +66,12 @@ pub enum FakeOuterStringSerializeResponse { OutputString ( models::OuterString ) , } +#[derive(Debug, PartialEq)] +pub enum TestBodyWithQueryParamsResponse { + /// Success + Success , +} + #[derive(Debug, PartialEq)] pub enum TestClientModelResponse { /// successful operation @@ -242,8 +242,6 @@ pub enum GetUserByNameResponse { #[derive(Debug, PartialEq)] pub enum LoginUserResponse { - /// successful operation - SuccessfulOperation { body: String, x_rate_limit: i32, x_expires_after: chrono::DateTime } , /// Invalid username/password supplied InvalidUsername , } @@ -264,103 +262,103 @@ pub enum UpdateUserResponse { /// API -pub trait Api { +pub trait Api { /// To test special tags - fn test_special_tags(&self, body: models::Client, context: &Context) -> Box>; + fn test_special_tags(&self, client: models::Client, context: &C) -> Box>; - fn test_body_with_query_params(&self, body: models::User, query: String, context: &Context) -> Box>; + fn fake_outer_boolean_serialize(&self, body: Option, context: &C) -> Box>; - fn fake_outer_boolean_serialize(&self, body: Option, context: &Context) -> Box>; + fn fake_outer_composite_serialize(&self, outer_composite: Option, context: &C) -> Box>; - fn fake_outer_composite_serialize(&self, body: Option, context: &Context) -> Box>; + fn fake_outer_number_serialize(&self, body: Option, context: &C) -> Box>; - fn fake_outer_number_serialize(&self, body: Option, context: &Context) -> Box>; + fn fake_outer_string_serialize(&self, body: Option, context: &C) -> Box>; - fn fake_outer_string_serialize(&self, body: Option, context: &Context) -> Box>; + fn test_body_with_query_params(&self, query: String, user: models::User, context: &C) -> Box>; /// To test \"client\" model - fn test_client_model(&self, body: models::Client, context: &Context) -> Box>; + fn test_client_model(&self, client: models::Client, context: &C) -> Box>; /// Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 - fn test_endpoint_parameters(&self, number: f64, double: f64, pattern_without_delimiter: String, byte: swagger::ByteArray, integer: Option, int32: Option, int64: Option, float: Option, string: Option, binary: Option, date: Option>, date_time: Option>, password: Option, callback: Option, context: &Context) -> Box>; + fn test_endpoint_parameters(&self, number: f64, double: f64, pattern_without_delimiter: String, integer: Option, int32: Option, int64: Option, float: Option, string: Option, binary: Box, Error=Error> + Send>>, Error=Error> + Send>, date: Option>, date_time: Option>, password: Option, callback: Option, context: &C) -> Box>; /// To test enum parameters - fn test_enum_parameters(&self, enum_form_string_array: Option<&Vec>, enum_form_string: Option, enum_header_string_array: Option<&Vec>, enum_header_string: Option, enum_query_string_array: Option<&Vec>, enum_query_string: Option, enum_query_integer: Option, enum_query_double: Option, context: &Context) -> Box>; + fn test_enum_parameters(&self, enum_header_string_array: Option<&Vec>, enum_header_string: Option, enum_query_string_array: Option<&Vec>, enum_query_string: Option, enum_query_integer: Option, enum_query_double: Option, context: &C) -> Box>; /// test inline additionalProperties - fn test_inline_additional_properties(&self, param: object, context: &Context) -> Box>; + fn test_inline_additional_properties(&self, request_body: HashMap, context: &C) -> Box>; /// test json serialization of form data - fn test_json_form_data(&self, param: String, param2: String, context: &Context) -> Box>; + fn test_json_form_data(&self, param: String, param2: String, context: &C) -> Box>; /// To test class name in snake case - fn test_classname(&self, body: models::Client, context: &Context) -> Box>; + fn test_classname(&self, client: models::Client, context: &C) -> Box>; /// Add a new pet to the store - fn add_pet(&self, body: models::Pet, context: &Context) -> Box>; + fn add_pet(&self, pet: models::Pet, context: &C) -> Box>; /// Deletes a pet - fn delete_pet(&self, pet_id: i64, api_key: Option, context: &Context) -> Box>; + fn delete_pet(&self, pet_id: i64, api_key: Option, context: &C) -> Box>; /// Finds Pets by status - fn find_pets_by_status(&self, status: &Vec, context: &Context) -> Box>; + fn find_pets_by_status(&self, status: &Vec, context: &C) -> Box>; /// Finds Pets by tags - fn find_pets_by_tags(&self, tags: &Vec, context: &Context) -> Box>; + fn find_pets_by_tags(&self, tags: &Vec, context: &C) -> Box>; /// Find pet by ID - fn get_pet_by_id(&self, pet_id: i64, context: &Context) -> Box>; + fn get_pet_by_id(&self, pet_id: i64, context: &C) -> Box>; /// Update an existing pet - fn update_pet(&self, body: models::Pet, context: &Context) -> Box>; + fn update_pet(&self, pet: models::Pet, context: &C) -> Box>; /// Updates a pet in the store with form data - fn update_pet_with_form(&self, pet_id: i64, name: Option, status: Option, context: &Context) -> Box>; + fn update_pet_with_form(&self, pet_id: i64, name: Option, status: Option, context: &C) -> Box>; /// uploads an image - fn upload_file(&self, pet_id: i64, additional_metadata: Option, file: Box, Error=Error> + Send>>, Error=Error> + Send>, context: &Context) -> Box>; + fn upload_file(&self, pet_id: i64, additional_metadata: Option, file: Box, Error=Error> + Send>>, Error=Error> + Send>, context: &C) -> Box>; /// Delete purchase order by ID - fn delete_order(&self, order_id: String, context: &Context) -> Box>; + fn delete_order(&self, order_id: String, context: &C) -> Box>; /// Returns pet inventories by status - fn get_inventory(&self, context: &Context) -> Box>; + fn get_inventory(&self, context: &C) -> Box>; /// Find purchase order by ID - fn get_order_by_id(&self, order_id: i64, context: &Context) -> Box>; + fn get_order_by_id(&self, order_id: i64, context: &C) -> Box>; /// Place an order for a pet - fn place_order(&self, body: models::Order, context: &Context) -> Box>; + fn place_order(&self, order: models::Order, context: &C) -> Box>; /// Create user - fn create_user(&self, body: models::User, context: &Context) -> Box>; + fn create_user(&self, user: models::User, context: &C) -> Box>; /// Creates list of users with given input array - fn create_users_with_array_input(&self, body: &Vec, context: &Context) -> Box>; + fn create_users_with_array_input(&self, user: &Vec, context: &C) -> Box>; /// Creates list of users with given input array - fn create_users_with_list_input(&self, body: &Vec, context: &Context) -> Box>; + fn create_users_with_list_input(&self, user: &Vec, context: &C) -> Box>; /// Delete user - fn delete_user(&self, username: String, context: &Context) -> Box>; + fn delete_user(&self, username: String, context: &C) -> Box>; /// Get user by user name - fn get_user_by_name(&self, username: String, context: &Context) -> Box>; + fn get_user_by_name(&self, username: String, context: &C) -> Box>; /// Logs user into the system - fn login_user(&self, username: String, password: String, context: &Context) -> Box>; + fn login_user(&self, username: String, password: String, context: &C) -> Box>; /// Logs out current logged in user session - fn logout_user(&self, context: &Context) -> Box>; + fn logout_user(&self, context: &C) -> Box>; /// Updated user - fn update_user(&self, username: String, body: models::User, context: &Context) -> Box>; + fn update_user(&self, username: String, user: models::User, context: &C) -> Box>; } @@ -368,43 +366,43 @@ pub trait Api { pub trait ApiNoContext { /// To test special tags - fn test_special_tags(&self, body: models::Client) -> Box>; + fn test_special_tags(&self, client: models::Client) -> Box>; - fn test_body_with_query_params(&self, body: models::User, query: String) -> Box>; + fn fake_outer_boolean_serialize(&self, body: Option) -> Box>; - fn fake_outer_boolean_serialize(&self, body: Option) -> Box>; + fn fake_outer_composite_serialize(&self, outer_composite: Option) -> Box>; - fn fake_outer_composite_serialize(&self, body: Option) -> Box>; + fn fake_outer_number_serialize(&self, body: Option) -> Box>; - fn fake_outer_number_serialize(&self, body: Option) -> Box>; + fn fake_outer_string_serialize(&self, body: Option) -> Box>; - fn fake_outer_string_serialize(&self, body: Option) -> Box>; + fn test_body_with_query_params(&self, query: String, user: models::User) -> Box>; /// To test \"client\" model - fn test_client_model(&self, body: models::Client) -> Box>; + fn test_client_model(&self, client: models::Client) -> Box>; /// Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 - fn test_endpoint_parameters(&self, number: f64, double: f64, pattern_without_delimiter: String, byte: swagger::ByteArray, integer: Option, int32: Option, int64: Option, float: Option, string: Option, binary: Option, date: Option>, date_time: Option>, password: Option, callback: Option) -> Box>; + fn test_endpoint_parameters(&self, number: f64, double: f64, pattern_without_delimiter: String, integer: Option, int32: Option, int64: Option, float: Option, string: Option, binary: Box, Error=Error> + Send>>, Error=Error> + Send>, date: Option>, date_time: Option>, password: Option, callback: Option) -> Box>; /// To test enum parameters - fn test_enum_parameters(&self, enum_form_string_array: Option<&Vec>, enum_form_string: Option, enum_header_string_array: Option<&Vec>, enum_header_string: Option, enum_query_string_array: Option<&Vec>, enum_query_string: Option, enum_query_integer: Option, enum_query_double: Option) -> Box>; + fn test_enum_parameters(&self, enum_header_string_array: Option<&Vec>, enum_header_string: Option, enum_query_string_array: Option<&Vec>, enum_query_string: Option, enum_query_integer: Option, enum_query_double: Option) -> Box>; /// test inline additionalProperties - fn test_inline_additional_properties(&self, param: object) -> Box>; + fn test_inline_additional_properties(&self, request_body: HashMap) -> Box>; /// test json serialization of form data fn test_json_form_data(&self, param: String, param2: String) -> Box>; /// To test class name in snake case - fn test_classname(&self, body: models::Client) -> Box>; + fn test_classname(&self, client: models::Client) -> Box>; /// Add a new pet to the store - fn add_pet(&self, body: models::Pet) -> Box>; + fn add_pet(&self, pet: models::Pet) -> Box>; /// Deletes a pet fn delete_pet(&self, pet_id: i64, api_key: Option) -> Box>; @@ -419,7 +417,7 @@ pub trait ApiNoContext { fn get_pet_by_id(&self, pet_id: i64) -> Box>; /// Update an existing pet - fn update_pet(&self, body: models::Pet) -> Box>; + fn update_pet(&self, pet: models::Pet) -> Box>; /// Updates a pet in the store with form data fn update_pet_with_form(&self, pet_id: i64, name: Option, status: Option) -> Box>; @@ -437,16 +435,16 @@ pub trait ApiNoContext { fn get_order_by_id(&self, order_id: i64) -> Box>; /// Place an order for a pet - fn place_order(&self, body: models::Order) -> Box>; + fn place_order(&self, order: models::Order) -> Box>; /// Create user - fn create_user(&self, body: models::User) -> Box>; + fn create_user(&self, user: models::User) -> Box>; /// Creates list of users with given input array - fn create_users_with_array_input(&self, body: &Vec) -> Box>; + fn create_users_with_array_input(&self, user: &Vec) -> Box>; /// Creates list of users with given input array - fn create_users_with_list_input(&self, body: &Vec) -> Box>; + fn create_users_with_list_input(&self, user: &Vec) -> Box>; /// Delete user fn delete_user(&self, username: String) -> Box>; @@ -461,72 +459,72 @@ pub trait ApiNoContext { fn logout_user(&self) -> Box>; /// Updated user - fn update_user(&self, username: String, body: models::User) -> Box>; + fn update_user(&self, username: String, user: models::User) -> Box>; } /// Trait to extend an API to make it easy to bind it to a context. -pub trait ContextWrapperExt<'a> where Self: Sized { +pub trait ContextWrapperExt<'a, C> where Self: Sized { /// Binds this API to a context. - fn with_context(self: &'a Self, context: Context) -> ContextWrapper<'a, Self>; + fn with_context(self: &'a Self, context: C) -> ContextWrapper<'a, Self, C>; } -impl<'a, T: Api + Sized> ContextWrapperExt<'a> for T { - fn with_context(self: &'a T, context: Context) -> ContextWrapper<'a, T> { - ContextWrapper::::new(self, context) +impl<'a, T: Api + Sized, C> ContextWrapperExt<'a, C> for T { + fn with_context(self: &'a T, context: C) -> ContextWrapper<'a, T, C> { + ContextWrapper::::new(self, context) } } -impl<'a, T: Api> ApiNoContext for ContextWrapper<'a, T> { +impl<'a, T: Api, C> ApiNoContext for ContextWrapper<'a, T, C> { /// To test special tags - fn test_special_tags(&self, body: models::Client) -> Box> { - self.api().test_special_tags(body, &self.context()) + fn test_special_tags(&self, client: models::Client) -> Box> { + self.api().test_special_tags(client, &self.context()) } - fn test_body_with_query_params(&self, body: models::User, query: String) -> Box> { - self.api().test_body_with_query_params(body, query, &self.context()) - } - - - fn fake_outer_boolean_serialize(&self, body: Option) -> Box> { + fn fake_outer_boolean_serialize(&self, body: Option) -> Box> { self.api().fake_outer_boolean_serialize(body, &self.context()) } - fn fake_outer_composite_serialize(&self, body: Option) -> Box> { - self.api().fake_outer_composite_serialize(body, &self.context()) + fn fake_outer_composite_serialize(&self, outer_composite: Option) -> Box> { + self.api().fake_outer_composite_serialize(outer_composite, &self.context()) } - fn fake_outer_number_serialize(&self, body: Option) -> Box> { + fn fake_outer_number_serialize(&self, body: Option) -> Box> { self.api().fake_outer_number_serialize(body, &self.context()) } - fn fake_outer_string_serialize(&self, body: Option) -> Box> { + fn fake_outer_string_serialize(&self, body: Option) -> Box> { self.api().fake_outer_string_serialize(body, &self.context()) } + + fn test_body_with_query_params(&self, query: String, user: models::User) -> Box> { + self.api().test_body_with_query_params(query, user, &self.context()) + } + /// To test \"client\" model - fn test_client_model(&self, body: models::Client) -> Box> { - self.api().test_client_model(body, &self.context()) + fn test_client_model(&self, client: models::Client) -> Box> { + self.api().test_client_model(client, &self.context()) } /// Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 - fn test_endpoint_parameters(&self, number: f64, double: f64, pattern_without_delimiter: String, byte: swagger::ByteArray, integer: Option, int32: Option, int64: Option, float: Option, string: Option, binary: Option, date: Option>, date_time: Option>, password: Option, callback: Option) -> Box> { - self.api().test_endpoint_parameters(number, double, pattern_without_delimiter, byte, integer, int32, int64, float, string, binary, date, date_time, password, callback, &self.context()) + fn test_endpoint_parameters(&self, number: f64, double: f64, pattern_without_delimiter: String, integer: Option, int32: Option, int64: Option, float: Option, string: Option, binary: Box, Error=Error> + Send>>, Error=Error> + Send>, date: Option>, date_time: Option>, password: Option, callback: Option) -> Box> { + self.api().test_endpoint_parameters(number, double, pattern_without_delimiter, integer, int32, int64, float, string, binary, date, date_time, password, callback, &self.context()) } /// To test enum parameters - fn test_enum_parameters(&self, enum_form_string_array: Option<&Vec>, enum_form_string: Option, enum_header_string_array: Option<&Vec>, enum_header_string: Option, enum_query_string_array: Option<&Vec>, enum_query_string: Option, enum_query_integer: Option, enum_query_double: Option) -> Box> { - self.api().test_enum_parameters(enum_form_string_array, enum_form_string, enum_header_string_array, enum_header_string, enum_query_string_array, enum_query_string, enum_query_integer, enum_query_double, &self.context()) + fn test_enum_parameters(&self, enum_header_string_array: Option<&Vec>, enum_header_string: Option, enum_query_string_array: Option<&Vec>, enum_query_string: Option, enum_query_integer: Option, enum_query_double: Option) -> Box> { + self.api().test_enum_parameters(enum_header_string_array, enum_header_string, enum_query_string_array, enum_query_string, enum_query_integer, enum_query_double, &self.context()) } /// test inline additionalProperties - fn test_inline_additional_properties(&self, param: object) -> Box> { - self.api().test_inline_additional_properties(param, &self.context()) + fn test_inline_additional_properties(&self, request_body: HashMap) -> Box> { + self.api().test_inline_additional_properties(request_body, &self.context()) } /// test json serialization of form data @@ -535,13 +533,13 @@ impl<'a, T: Api> ApiNoContext for ContextWrapper<'a, T> { } /// To test class name in snake case - fn test_classname(&self, body: models::Client) -> Box> { - self.api().test_classname(body, &self.context()) + fn test_classname(&self, client: models::Client) -> Box> { + self.api().test_classname(client, &self.context()) } /// Add a new pet to the store - fn add_pet(&self, body: models::Pet) -> Box> { - self.api().add_pet(body, &self.context()) + fn add_pet(&self, pet: models::Pet) -> Box> { + self.api().add_pet(pet, &self.context()) } /// Deletes a pet @@ -565,8 +563,8 @@ impl<'a, T: Api> ApiNoContext for ContextWrapper<'a, T> { } /// Update an existing pet - fn update_pet(&self, body: models::Pet) -> Box> { - self.api().update_pet(body, &self.context()) + fn update_pet(&self, pet: models::Pet) -> Box> { + self.api().update_pet(pet, &self.context()) } /// Updates a pet in the store with form data @@ -595,23 +593,23 @@ impl<'a, T: Api> ApiNoContext for ContextWrapper<'a, T> { } /// Place an order for a pet - fn place_order(&self, body: models::Order) -> Box> { - self.api().place_order(body, &self.context()) + fn place_order(&self, order: models::Order) -> Box> { + self.api().place_order(order, &self.context()) } /// Create user - fn create_user(&self, body: models::User) -> Box> { - self.api().create_user(body, &self.context()) + fn create_user(&self, user: models::User) -> Box> { + self.api().create_user(user, &self.context()) } /// Creates list of users with given input array - fn create_users_with_array_input(&self, body: &Vec) -> Box> { - self.api().create_users_with_array_input(body, &self.context()) + fn create_users_with_array_input(&self, user: &Vec) -> Box> { + self.api().create_users_with_array_input(user, &self.context()) } /// Creates list of users with given input array - fn create_users_with_list_input(&self, body: &Vec) -> Box> { - self.api().create_users_with_list_input(body, &self.context()) + fn create_users_with_list_input(&self, user: &Vec) -> Box> { + self.api().create_users_with_list_input(user, &self.context()) } /// Delete user @@ -635,8 +633,8 @@ impl<'a, T: Api> ApiNoContext for ContextWrapper<'a, T> { } /// Updated user - fn update_user(&self, username: String, body: models::User) -> Box> { - self.api().update_user(username, body, &self.context()) + fn update_user(&self, username: String, user: models::User) -> Box> { + self.api().update_user(username, user, &self.context()) } } diff --git a/samples/server/petstore/rust-server/src/mimetypes.rs b/samples/server/petstore/rust-server/src/mimetypes.rs index 1ad0e1d9b0c3..1aeb6ad47c86 100644 --- a/samples/server/petstore/rust-server/src/mimetypes.rs +++ b/samples/server/petstore/rust-server/src/mimetypes.rs @@ -8,6 +8,22 @@ pub mod responses { lazy_static! { pub static ref TEST_SPECIAL_TAGS_SUCCESSFUL_OPERATION: Mime = "application/json".parse().unwrap(); } + /// Create Mime objects for the response content types for FakeOuterBooleanSerialize + lazy_static! { + pub static ref FAKE_OUTER_BOOLEAN_SERIALIZE_OUTPUT_BOOLEAN: Mime = "*/*".parse().unwrap(); + } + /// Create Mime objects for the response content types for FakeOuterCompositeSerialize + lazy_static! { + pub static ref FAKE_OUTER_COMPOSITE_SERIALIZE_OUTPUT_COMPOSITE: Mime = "*/*".parse().unwrap(); + } + /// Create Mime objects for the response content types for FakeOuterNumberSerialize + lazy_static! { + pub static ref FAKE_OUTER_NUMBER_SERIALIZE_OUTPUT_NUMBER: Mime = "*/*".parse().unwrap(); + } + /// Create Mime objects for the response content types for FakeOuterStringSerialize + lazy_static! { + pub static ref FAKE_OUTER_STRING_SERIALIZE_OUTPUT_STRING: Mime = "*/*".parse().unwrap(); + } /// Create Mime objects for the response content types for TestClientModel lazy_static! { pub static ref TEST_CLIENT_MODEL_SUCCESSFUL_OPERATION: Mime = "application/json".parse().unwrap(); @@ -18,15 +34,15 @@ pub mod responses { } /// Create Mime objects for the response content types for FindPetsByStatus lazy_static! { - pub static ref FIND_PETS_BY_STATUS_SUCCESSFUL_OPERATION: Mime = "application/xml".parse().unwrap(); + pub static ref FIND_PETS_BY_STATUS_SUCCESSFUL_OPERATION: Mime = "application/json".parse().unwrap(); } /// Create Mime objects for the response content types for FindPetsByTags lazy_static! { - pub static ref FIND_PETS_BY_TAGS_SUCCESSFUL_OPERATION: Mime = "application/xml".parse().unwrap(); + pub static ref FIND_PETS_BY_TAGS_SUCCESSFUL_OPERATION: Mime = "application/json".parse().unwrap(); } /// Create Mime objects for the response content types for GetPetById lazy_static! { - pub static ref GET_PET_BY_ID_SUCCESSFUL_OPERATION: Mime = "application/xml".parse().unwrap(); + pub static ref GET_PET_BY_ID_SUCCESSFUL_OPERATION: Mime = "application/json".parse().unwrap(); } /// Create Mime objects for the response content types for UploadFile lazy_static! { @@ -38,19 +54,15 @@ pub mod responses { } /// Create Mime objects for the response content types for GetOrderById lazy_static! { - pub static ref GET_ORDER_BY_ID_SUCCESSFUL_OPERATION: Mime = "application/xml".parse().unwrap(); + pub static ref GET_ORDER_BY_ID_SUCCESSFUL_OPERATION: Mime = "application/json".parse().unwrap(); } /// Create Mime objects for the response content types for PlaceOrder lazy_static! { - pub static ref PLACE_ORDER_SUCCESSFUL_OPERATION: Mime = "application/xml".parse().unwrap(); + pub static ref PLACE_ORDER_SUCCESSFUL_OPERATION: Mime = "application/json".parse().unwrap(); } /// Create Mime objects for the response content types for GetUserByName lazy_static! { - pub static ref GET_USER_BY_NAME_SUCCESSFUL_OPERATION: Mime = "application/xml".parse().unwrap(); - } - /// Create Mime objects for the response content types for LoginUser - lazy_static! { - pub static ref LOGIN_USER_SUCCESSFUL_OPERATION: Mime = "application/xml".parse().unwrap(); + pub static ref GET_USER_BY_NAME_SUCCESSFUL_OPERATION: Mime = "application/json".parse().unwrap(); } } @@ -61,10 +73,6 @@ pub mod requests { lazy_static! { pub static ref TEST_SPECIAL_TAGS: Mime = "application/json".parse().unwrap(); } - /// Create Mime objects for the request content types for TestBodyWithQueryParams - lazy_static! { - pub static ref TEST_BODY_WITH_QUERY_PARAMS: Mime = "application/json".parse().unwrap(); - } /// Create Mime objects for the request content types for FakeOuterBooleanSerialize lazy_static! { pub static ref FAKE_OUTER_BOOLEAN_SERIALIZE: Mime = "application/json".parse().unwrap(); @@ -81,17 +89,13 @@ pub mod requests { lazy_static! { pub static ref FAKE_OUTER_STRING_SERIALIZE: Mime = "application/json".parse().unwrap(); } - /// Create Mime objects for the request content types for TestClientModel - lazy_static! { - pub static ref TEST_CLIENT_MODEL: Mime = "application/json".parse().unwrap(); - } - /// Create Mime objects for the request content types for TestEndpointParameters + /// Create Mime objects for the request content types for TestBodyWithQueryParams lazy_static! { - pub static ref TEST_ENDPOINT_PARAMETERS: Mime = "application/xml; charset=utf-8".parse().unwrap(); + pub static ref TEST_BODY_WITH_QUERY_PARAMS: Mime = "application/json".parse().unwrap(); } - /// Create Mime objects for the request content types for TestEnumParameters + /// Create Mime objects for the request content types for TestClientModel lazy_static! { - pub static ref TEST_ENUM_PARAMETERS: Mime = "*/*".parse().unwrap(); + pub static ref TEST_CLIENT_MODEL: Mime = "application/json".parse().unwrap(); } /// Create Mime objects for the request content types for TestInlineAdditionalProperties lazy_static! { @@ -99,7 +103,7 @@ pub mod requests { } /// Create Mime objects for the request content types for TestJsonFormData lazy_static! { - pub static ref TEST_JSON_FORM_DATA: Mime = "application/json".parse().unwrap(); + pub static ref TEST_JSON_FORM_DATA: Mime = "application/x-www-form-urlencoded".parse().unwrap(); } /// Create Mime objects for the request content types for TestClassname lazy_static! { diff --git a/samples/server/petstore/rust-server/src/models.rs b/samples/server/petstore/rust-server/src/models.rs index ce98abe8dca1..05dfeb9f3b59 100644 --- a/samples/server/petstore/rust-server/src/models.rs +++ b/samples/server/petstore/rust-server/src/models.rs @@ -239,6 +239,31 @@ impl Capitalization { } } +#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)] +pub struct Cat { + #[serde(rename = "className")] + pub class_name: String, + + #[serde(rename = "color")] + #[serde(skip_serializing_if="Option::is_none")] + pub color: Option, + + #[serde(rename = "declawed")] + #[serde(skip_serializing_if="Option::is_none")] + pub declawed: Option, + +} + +impl Cat { + pub fn new(class_name: String, ) -> Cat { + Cat { + class_name: class_name, + color: Some("red".to_string()), + declawed: None, + } + } +} + #[derive(Debug, Clone, PartialEq, Serialize, Deserialize)] #[serde(rename = "Category")] pub struct Category { @@ -294,14 +319,39 @@ impl Client { } } +#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)] +pub struct Dog { + #[serde(rename = "className")] + pub class_name: String, + + #[serde(rename = "color")] + #[serde(skip_serializing_if="Option::is_none")] + pub color: Option, + + #[serde(rename = "breed")] + #[serde(skip_serializing_if="Option::is_none")] + pub breed: Option, + +} + +impl Dog { + pub fn new(class_name: String, ) -> Dog { + Dog { + class_name: class_name, + color: Some("red".to_string()), + breed: None, + } + } +} + #[derive(Debug, Clone, PartialEq, Serialize, Deserialize)] pub struct EnumArrays { - // Note: inline enums are not fully supported by swagger-codegen + // Note: inline enums are not fully supported by openapi-generator #[serde(rename = "just_symbol")] #[serde(skip_serializing_if="Option::is_none")] pub just_symbol: Option, - // Note: inline enums are not fully supported by swagger-codegen + // Note: inline enums are not fully supported by openapi-generator #[serde(rename = "array_enum")] #[serde(skip_serializing_if="Option::is_none")] pub array_enum: Option>, @@ -356,21 +406,21 @@ impl ::std::str::FromStr for EnumClass { #[derive(Debug, Clone, PartialEq, Serialize, Deserialize)] pub struct EnumTest { - // Note: inline enums are not fully supported by swagger-codegen + // Note: inline enums are not fully supported by openapi-generator #[serde(rename = "enum_string")] #[serde(skip_serializing_if="Option::is_none")] pub enum_string: Option, - // Note: inline enums are not fully supported by swagger-codegen + // Note: inline enums are not fully supported by openapi-generator #[serde(rename = "enum_string_required")] pub enum_string_required: String, - // Note: inline enums are not fully supported by swagger-codegen + // Note: inline enums are not fully supported by openapi-generator #[serde(rename = "enum_integer")] #[serde(skip_serializing_if="Option::is_none")] pub enum_integer: Option, - // Note: inline enums are not fully supported by swagger-codegen + // Note: inline enums are not fully supported by openapi-generator #[serde(rename = "enum_number")] #[serde(skip_serializing_if="Option::is_none")] pub enum_number: Option, @@ -425,10 +475,6 @@ pub struct FormatTest { #[serde(rename = "byte")] pub byte: swagger::ByteArray, - #[serde(rename = "binary")] - #[serde(skip_serializing_if="Option::is_none")] - pub binary: Option, - #[serde(rename = "date")] pub date: chrono::DateTime, @@ -456,7 +502,6 @@ impl FormatTest { double: None, string: None, byte: byte, - binary: None, date: date, date_time: None, uuid: None, @@ -508,7 +553,7 @@ pub struct MapTest { #[serde(skip_serializing_if="Option::is_none")] pub map_map_of_string: Option>>, - // Note: inline enums are not fully supported by swagger-codegen + // Note: inline enums are not fully supported by openapi-generator #[serde(rename = "map_of_enum_string")] #[serde(skip_serializing_if="Option::is_none")] pub map_of_enum_string: Option>, @@ -659,7 +704,7 @@ pub struct Order { pub ship_date: Option>, /// Order Status - // Note: inline enums are not fully supported by swagger-codegen + // Note: inline enums are not fully supported by openapi-generator #[serde(rename = "status")] #[serde(skip_serializing_if="Option::is_none")] pub status: Option, @@ -858,7 +903,7 @@ pub struct Pet { pub tags: Option>, /// pet status in the store - // Note: inline enums are not fully supported by swagger-codegen + // Note: inline enums are not fully supported by openapi-generator #[serde(rename = "status")] #[serde(skip_serializing_if="Option::is_none")] pub status: Option, @@ -990,53 +1035,3 @@ impl User { } } } - -#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)] -pub struct Cat { - #[serde(rename = "className")] - pub class_name: String, - - #[serde(rename = "color")] - #[serde(skip_serializing_if="Option::is_none")] - pub color: Option, - - #[serde(rename = "declawed")] - #[serde(skip_serializing_if="Option::is_none")] - pub declawed: Option, - -} - -impl Cat { - pub fn new(class_name: String, ) -> Cat { - Cat { - class_name: class_name, - color: Some("red".to_string()), - declawed: None, - } - } -} - -#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)] -pub struct Dog { - #[serde(rename = "className")] - pub class_name: String, - - #[serde(rename = "color")] - #[serde(skip_serializing_if="Option::is_none")] - pub color: Option, - - #[serde(rename = "breed")] - #[serde(skip_serializing_if="Option::is_none")] - pub breed: Option, - -} - -impl Dog { - pub fn new(class_name: String, ) -> Dog { - Dog { - class_name: class_name, - color: Some("red".to_string()), - breed: None, - } - } -} diff --git a/samples/server/petstore/rust-server/src/server/auth.rs b/samples/server/petstore/rust-server/src/server/auth.rs index 5c120b74c7c4..1c770bcf6a71 100644 --- a/samples/server/petstore/rust-server/src/server/auth.rs +++ b/samples/server/petstore/rust-server/src/server/auth.rs @@ -1,25 +1,47 @@ use std::io; +use std::marker::PhantomData; +use std::default::Default; use hyper; use hyper::{Request, Response, Error, StatusCode}; use server::url::form_urlencoded; use swagger::auth::{Authorization, AuthData, Scopes}; +use swagger::{Has, Pop, Push, XSpanIdString}; use Api; -pub struct NewService where T: hyper::server::NewService), Response=Response, Error=Error> { +pub struct NewService + where + C: Default + Push, + C::Result: Push>, + T: hyper::server::NewService>>::Result), Response = Response, Error = Error>, +{ inner: T, + marker: PhantomData, } -impl NewService where T: hyper::server::NewService), Response=Response, Error=Error> + 'static { - pub fn new(inner: T) -> NewService { - NewService{inner} +impl NewService + where + C: Default + Push, + C::Result: Push>, + T: hyper::server::NewService>>::Result), Response = Response, Error = Error> + 'static, +{ + pub fn new(inner: T) -> NewService { + NewService { + inner, + marker: PhantomData, + } } } -impl hyper::server::NewService for NewService where T: hyper::server::NewService), Response=Response, Error=Error> + 'static { +impl hyper::server::NewService for NewService + where + C: Default + Push, + C::Result: Push>, + T: hyper::server::NewService>>::Result), Response = Response, Error = Error> + 'static, +{ type Request = Request; type Response = Response; type Error = Error; - type Instance = Service; + type Instance = Service; fn new_service(&self) -> Result { self.inner.new_service().map(|s| Service::new(s)) @@ -27,28 +49,50 @@ impl hyper::server::NewService for NewService where T: hyper::server::NewS } /// Middleware to extract authentication data from request -pub struct Service where T: hyper::server::Service), Response=Response, Error=Error> { +pub struct Service + where + C: Default + Push, + C::Result: Push>, + T: hyper::server::Service>>::Result), Response = Response, Error = Error>, +{ inner: T, + marker: PhantomData, } -impl Service where T: hyper::server::Service), Response=Response, Error=Error> { - pub fn new(inner: T) -> Service { - Service{inner} +impl Service + where + C: Default + Push, + C::Result: Push>, + T: hyper::server::Service>>::Result), Response = Response, Error = Error>, +{ + pub fn new(inner: T) -> Service { + Service { + inner, + marker: PhantomData, + } } } -impl hyper::server::Service for Service where T: hyper::server::Service), Response=Response, Error=Error> { +impl hyper::server::Service for Service + where + C: Default + Push, + C::Result: Push>, + T: hyper::server::Service>>::Result), Response = Response, Error = Error>, +{ type Request = Request; type Response = Response; type Error = Error; type Future = T::Future; fn call(&self, req: Self::Request) -> Self::Future { + let context = C::default().push(XSpanIdString::get_or_generate(&req)); + { header! { (ApiKey1, "api_key") => [String] } if let Some(header) = req.headers().get::().cloned() { let auth_data = AuthData::ApiKey(header.0); - return self.inner.call((req, Some(auth_data))); + let context = context.push(Some(auth_data)); + return self.inner.call((req, context)); } } { @@ -58,7 +102,8 @@ impl hyper::server::Service for Service where T: hyper::server::Service hyper::server::Service for Service where T: hyper::server::Service>().cloned() { let auth_data = AuthData::Basic(basic.deref().clone()); - return self.inner.call((req, Some(auth_data))); + let context = context.push(Some(auth_data)); + return self.inner.call((req, context)); } } { @@ -74,10 +120,12 @@ impl hyper::server::Service for Service where T: hyper::server::Service>().cloned() { let auth_data = AuthData::Bearer(bearer.deref().clone()); - return self.inner.call((req, Some(auth_data))); + let context = context.push(Some(auth_data)); + return self.inner.call((req, context)); } } - return self.inner.call((req, None)); + let context = context.push(None); + return self.inner.call((req, context)); } } diff --git a/samples/server/petstore/rust-server/src/server/mod.rs b/samples/server/petstore/rust-server/src/server/mod.rs index 7f88b6b3ad8e..0c246daad47b 100644 --- a/samples/server/petstore/rust-server/src/server/mod.rs +++ b/samples/server/petstore/rust-server/src/server/mod.rs @@ -13,6 +13,7 @@ extern crate url; use std::sync::Arc; +use std::marker::PhantomData; use futures::{Future, future, Stream, stream}; use hyper; use hyper::{Request, Response, Error, StatusCode}; @@ -35,16 +36,16 @@ use std::io; use std::collections::BTreeSet; pub use swagger::auth::Authorization; -use swagger::{ApiError, Context, XSpanId}; +use swagger::{ApiError, XSpanId, XSpanIdString, Has}; use swagger::auth::Scopes; use {Api, TestSpecialTagsResponse, - TestBodyWithQueryParamsResponse, FakeOuterBooleanSerializeResponse, FakeOuterCompositeSerializeResponse, FakeOuterNumberSerializeResponse, FakeOuterStringSerializeResponse, + TestBodyWithQueryParamsResponse, TestClientModelResponse, TestEndpointParametersResponse, TestEnumParametersResponse, @@ -148,39 +149,56 @@ mod paths { } } -pub struct NewService { +pub struct NewService { api_impl: Arc, + marker: PhantomData, } -impl NewService where T: Api + Clone + 'static { - pub fn new>>(api_impl: U) -> NewService { - NewService{api_impl: api_impl.into()} +impl NewService +where + T: Api + Clone + 'static, + C: Has + Has> + 'static +{ + pub fn new>>(api_impl: U) -> NewService { + NewService{api_impl: api_impl.into(), marker: PhantomData} } } -impl hyper::server::NewService for NewService where T: Api + Clone + 'static { - type Request = (Request, Context); +impl hyper::server::NewService for NewService +where + T: Api + Clone + 'static, + C: Has + Has> + 'static +{ + type Request = (Request, C); type Response = Response; type Error = Error; - type Instance = Service; + type Instance = Service; fn new_service(&self) -> Result { Ok(Service::new(self.api_impl.clone())) } } -pub struct Service { +pub struct Service { api_impl: Arc, + marker: PhantomData, } -impl Service where T: Api + Clone + 'static { - pub fn new>>(api_impl: U) -> Service { - Service{api_impl: api_impl.into()} +impl Service +where + T: Api + Clone + 'static, + C: Has + Has> + 'static { + pub fn new>>(api_impl: U) -> Service { + Service{api_impl: api_impl.into(), marker: PhantomData} } } -impl hyper::server::Service for Service where T: Api + Clone + 'static { - type Request = (Request, Context); +impl hyper::server::Service for Service +where + T: Api + Clone + 'static, + C: Has + Has> + 'static +{ + type Request = (Request, C); type Response = Response; type Error = Error; type Future = Box>; @@ -193,9 +211,6 @@ impl hyper::server::Service for Service where T: Api + Clone + 'static { // TestSpecialTags - PATCH /another-fake/dummy &hyper::Method::Patch if path.matched(paths::ID_ANOTHER_FAKE_DUMMY) => { - if context.x_span_id.is_none() { - context.x_span_id = Some(headers.get::().map(XSpanId::to_string).unwrap_or_else(|| self::uuid::Uuid::new_v4().to_string())); - } @@ -211,7 +226,7 @@ impl hyper::server::Service for Service where T: Api + Clone + 'static { Ok(body) => { let mut unused_elements = Vec::new(); - let param_body: Option = if !body.is_empty() { + let param_client: Option = if !body.is_empty() { let deserializer = &mut serde_json::Deserializer::from_slice(&*body); @@ -219,23 +234,23 @@ impl hyper::server::Service for Service where T: Api + Clone + 'static { warn!("Ignoring unknown field in body: {}", path); unused_elements.push(path.to_string()); }) { - Ok(param_body) => param_body, - Err(e) => return Box::new(future::ok(Response::new().with_status(StatusCode::BadRequest).with_body(format!("Couldn't parse body parameter body - doesn't match schema: {}", e)))), + Ok(param_client) => param_client, + Err(e) => return Box::new(future::ok(Response::new().with_status(StatusCode::BadRequest).with_body(format!("Couldn't parse body parameter Client - doesn't match schema: {}", e)))), } } else { None }; - let param_body = match param_body { - Some(param_body) => param_body, - None => return Box::new(future::ok(Response::new().with_status(StatusCode::BadRequest).with_body("Missing required body parameter body"))), + let param_client = match param_client { + Some(param_client) => param_client, + None => return Box::new(future::ok(Response::new().with_status(StatusCode::BadRequest).with_body("Missing required body parameter Client"))), }; - Box::new(api_impl.test_special_tags(param_body, &context) + Box::new(api_impl.test_special_tags(param_client, &context) .then(move |result| { let mut response = Response::new(); - context.x_span_id.as_ref().map(|header| response.headers_mut().set(XSpanId(header.clone()))); + response.headers_mut().set(XSpanId((&context as &Has).get().0.to_string())); if !unused_elements.is_empty() { response.headers_mut().set(Warning(format!("Ignoring unknown fields in body: {:?}", unused_elements))); @@ -273,7 +288,7 @@ impl hyper::server::Service for Service where T: Api + Clone + 'static { }, - Err(e) => Box::new(future::ok(Response::new().with_status(StatusCode::BadRequest).with_body(format!("Couldn't read body parameter body: {}", e)))), + Err(e) => Box::new(future::ok(Response::new().with_status(StatusCode::BadRequest).with_body(format!("Couldn't read body parameter Client: {}", e)))), } }) ) as Box> @@ -281,28 +296,12 @@ impl hyper::server::Service for Service where T: Api + Clone + 'static { }, - // TestBodyWithQueryParams - PUT /fake/body-with-query-params - &hyper::Method::Put if path.matched(paths::ID_FAKE_BODY_WITH_QUERY_PARAMS) => { - if context.x_span_id.is_none() { - context.x_span_id = Some(headers.get::().map(XSpanId::to_string).unwrap_or_else(|| self::uuid::Uuid::new_v4().to_string())); - } - - + // FakeOuterBooleanSerialize - POST /fake/outer/boolean + &hyper::Method::Post if path.matched(paths::ID_FAKE_OUTER_BOOLEAN) => { - // Query parameters (note that non-required or collection query parameters will ignore garbage values, rather than causing a 400 response) - let query_params = form_urlencoded::parse(uri.query().unwrap_or_default().as_bytes()).collect::>(); - let param_query = query_params.iter().filter(|e| e.0 == "query").map(|e| e.1.to_owned()) - .nth(0); - let param_query = match param_query { - Some(param_query) => match param_query.parse::() { - Ok(param_query) => param_query, - Err(e) => return Box::new(future::ok(Response::new().with_status(StatusCode::BadRequest).with_body(format!("Couldn't parse query parameter query - doesn't match schema: {}", e)))), - }, - None => return Box::new(future::ok(Response::new().with_status(StatusCode::BadRequest).with_body("Missing required query parameter query"))), - }; // Body parameters (note that non-required body parameters will ignore garbage @@ -314,7 +313,7 @@ impl hyper::server::Service for Service where T: Api + Clone + 'static { Ok(body) => { let mut unused_elements = Vec::new(); - let param_body: Option = if !body.is_empty() { + let param_body: Option = if !body.is_empty() { let deserializer = &mut serde_json::Deserializer::from_slice(&*body); @@ -323,22 +322,19 @@ impl hyper::server::Service for Service where T: Api + Clone + 'static { unused_elements.push(path.to_string()); }) { Ok(param_body) => param_body, - Err(e) => return Box::new(future::ok(Response::new().with_status(StatusCode::BadRequest).with_body(format!("Couldn't parse body parameter body - doesn't match schema: {}", e)))), + + Err(_) => None, } } else { None }; - let param_body = match param_body { - Some(param_body) => param_body, - None => return Box::new(future::ok(Response::new().with_status(StatusCode::BadRequest).with_body("Missing required body parameter body"))), - }; - Box::new(api_impl.test_body_with_query_params(param_body, param_query, &context) + Box::new(api_impl.fake_outer_boolean_serialize(param_body, &context) .then(move |result| { let mut response = Response::new(); - context.x_span_id.as_ref().map(|header| response.headers_mut().set(XSpanId(header.clone()))); + response.headers_mut().set(XSpanId((&context as &Has).get().0.to_string())); if !unused_elements.is_empty() { response.headers_mut().set(Warning(format!("Ignoring unknown fields in body: {:?}", unused_elements))); @@ -346,12 +342,20 @@ impl hyper::server::Service for Service where T: Api + Clone + 'static { match result { Ok(rsp) => match rsp { - TestBodyWithQueryParamsResponse::Success + FakeOuterBooleanSerializeResponse::OutputBoolean + + (body) => { response.set_status(StatusCode::try_from(200).unwrap()); + response.headers_mut().set(ContentType(mimetypes::responses::FAKE_OUTER_BOOLEAN_SERIALIZE_OUTPUT_BOOLEAN.clone())); + + + let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); + + response.set_body(body); }, }, Err(_) => { @@ -376,11 +380,8 @@ impl hyper::server::Service for Service where T: Api + Clone + 'static { }, - // FakeOuterBooleanSerialize - POST /fake/outer/boolean - &hyper::Method::Post if path.matched(paths::ID_FAKE_OUTER_BOOLEAN) => { - if context.x_span_id.is_none() { - context.x_span_id = Some(headers.get::().map(XSpanId::to_string).unwrap_or_else(|| self::uuid::Uuid::new_v4().to_string())); - } + // FakeOuterCompositeSerialize - POST /fake/outer/composite + &hyper::Method::Post if path.matched(paths::ID_FAKE_OUTER_COMPOSITE) => { @@ -396,7 +397,7 @@ impl hyper::server::Service for Service where T: Api + Clone + 'static { Ok(body) => { let mut unused_elements = Vec::new(); - let param_body: Option = if !body.is_empty() { + let param_outer_composite: Option = if !body.is_empty() { let deserializer = &mut serde_json::Deserializer::from_slice(&*body); @@ -404,7 +405,7 @@ impl hyper::server::Service for Service where T: Api + Clone + 'static { warn!("Ignoring unknown field in body: {}", path); unused_elements.push(path.to_string()); }) { - Ok(param_body) => param_body, + Ok(param_outer_composite) => param_outer_composite, Err(_) => None, } @@ -414,10 +415,10 @@ impl hyper::server::Service for Service where T: Api + Clone + 'static { }; - Box::new(api_impl.fake_outer_boolean_serialize(param_body, &context) + Box::new(api_impl.fake_outer_composite_serialize(param_outer_composite, &context) .then(move |result| { let mut response = Response::new(); - context.x_span_id.as_ref().map(|header| response.headers_mut().set(XSpanId(header.clone()))); + response.headers_mut().set(XSpanId((&context as &Has).get().0.to_string())); if !unused_elements.is_empty() { response.headers_mut().set(Warning(format!("Ignoring unknown fields in body: {:?}", unused_elements))); @@ -425,7 +426,7 @@ impl hyper::server::Service for Service where T: Api + Clone + 'static { match result { Ok(rsp) => match rsp { - FakeOuterBooleanSerializeResponse::OutputBoolean + FakeOuterCompositeSerializeResponse::OutputComposite (body) @@ -433,6 +434,8 @@ impl hyper::server::Service for Service where T: Api + Clone + 'static { => { response.set_status(StatusCode::try_from(200).unwrap()); + response.headers_mut().set(ContentType(mimetypes::responses::FAKE_OUTER_COMPOSITE_SERIALIZE_OUTPUT_COMPOSITE.clone())); + let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); @@ -453,7 +456,7 @@ impl hyper::server::Service for Service where T: Api + Clone + 'static { }, - Err(e) => Box::new(future::ok(Response::new().with_status(StatusCode::BadRequest).with_body(format!("Couldn't read body parameter body: {}", e)))), + Err(e) => Box::new(future::ok(Response::new().with_status(StatusCode::BadRequest).with_body(format!("Couldn't read body parameter OuterComposite: {}", e)))), } }) ) as Box> @@ -461,11 +464,8 @@ impl hyper::server::Service for Service where T: Api + Clone + 'static { }, - // FakeOuterCompositeSerialize - POST /fake/outer/composite - &hyper::Method::Post if path.matched(paths::ID_FAKE_OUTER_COMPOSITE) => { - if context.x_span_id.is_none() { - context.x_span_id = Some(headers.get::().map(XSpanId::to_string).unwrap_or_else(|| self::uuid::Uuid::new_v4().to_string())); - } + // FakeOuterNumberSerialize - POST /fake/outer/number + &hyper::Method::Post if path.matched(paths::ID_FAKE_OUTER_NUMBER) => { @@ -481,7 +481,7 @@ impl hyper::server::Service for Service where T: Api + Clone + 'static { Ok(body) => { let mut unused_elements = Vec::new(); - let param_body: Option = if !body.is_empty() { + let param_body: Option = if !body.is_empty() { let deserializer = &mut serde_json::Deserializer::from_slice(&*body); @@ -499,10 +499,10 @@ impl hyper::server::Service for Service where T: Api + Clone + 'static { }; - Box::new(api_impl.fake_outer_composite_serialize(param_body, &context) + Box::new(api_impl.fake_outer_number_serialize(param_body, &context) .then(move |result| { let mut response = Response::new(); - context.x_span_id.as_ref().map(|header| response.headers_mut().set(XSpanId(header.clone()))); + response.headers_mut().set(XSpanId((&context as &Has).get().0.to_string())); if !unused_elements.is_empty() { response.headers_mut().set(Warning(format!("Ignoring unknown fields in body: {:?}", unused_elements))); @@ -510,7 +510,7 @@ impl hyper::server::Service for Service where T: Api + Clone + 'static { match result { Ok(rsp) => match rsp { - FakeOuterCompositeSerializeResponse::OutputComposite + FakeOuterNumberSerializeResponse::OutputNumber (body) @@ -518,6 +518,8 @@ impl hyper::server::Service for Service where T: Api + Clone + 'static { => { response.set_status(StatusCode::try_from(200).unwrap()); + response.headers_mut().set(ContentType(mimetypes::responses::FAKE_OUTER_NUMBER_SERIALIZE_OUTPUT_NUMBER.clone())); + let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); @@ -546,11 +548,8 @@ impl hyper::server::Service for Service where T: Api + Clone + 'static { }, - // FakeOuterNumberSerialize - POST /fake/outer/number - &hyper::Method::Post if path.matched(paths::ID_FAKE_OUTER_NUMBER) => { - if context.x_span_id.is_none() { - context.x_span_id = Some(headers.get::().map(XSpanId::to_string).unwrap_or_else(|| self::uuid::Uuid::new_v4().to_string())); - } + // FakeOuterStringSerialize - POST /fake/outer/string + &hyper::Method::Post if path.matched(paths::ID_FAKE_OUTER_STRING) => { @@ -566,7 +565,7 @@ impl hyper::server::Service for Service where T: Api + Clone + 'static { Ok(body) => { let mut unused_elements = Vec::new(); - let param_body: Option = if !body.is_empty() { + let param_body: Option = if !body.is_empty() { let deserializer = &mut serde_json::Deserializer::from_slice(&*body); @@ -584,10 +583,10 @@ impl hyper::server::Service for Service where T: Api + Clone + 'static { }; - Box::new(api_impl.fake_outer_number_serialize(param_body, &context) + Box::new(api_impl.fake_outer_string_serialize(param_body, &context) .then(move |result| { let mut response = Response::new(); - context.x_span_id.as_ref().map(|header| response.headers_mut().set(XSpanId(header.clone()))); + response.headers_mut().set(XSpanId((&context as &Has).get().0.to_string())); if !unused_elements.is_empty() { response.headers_mut().set(Warning(format!("Ignoring unknown fields in body: {:?}", unused_elements))); @@ -595,7 +594,7 @@ impl hyper::server::Service for Service where T: Api + Clone + 'static { match result { Ok(rsp) => match rsp { - FakeOuterNumberSerializeResponse::OutputNumber + FakeOuterStringSerializeResponse::OutputString (body) @@ -603,6 +602,8 @@ impl hyper::server::Service for Service where T: Api + Clone + 'static { => { response.set_status(StatusCode::try_from(200).unwrap()); + response.headers_mut().set(ContentType(mimetypes::responses::FAKE_OUTER_STRING_SERIALIZE_OUTPUT_STRING.clone())); + let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); @@ -631,16 +632,26 @@ impl hyper::server::Service for Service where T: Api + Clone + 'static { }, - // FakeOuterStringSerialize - POST /fake/outer/string - &hyper::Method::Post if path.matched(paths::ID_FAKE_OUTER_STRING) => { - if context.x_span_id.is_none() { - context.x_span_id = Some(headers.get::().map(XSpanId::to_string).unwrap_or_else(|| self::uuid::Uuid::new_v4().to_string())); - } + // TestBodyWithQueryParams - PUT /fake/body-with-query-params + &hyper::Method::Put if path.matched(paths::ID_FAKE_BODY_WITH_QUERY_PARAMS) => { + // Query parameters (note that non-required or collection query parameters will ignore garbage values, rather than causing a 400 response) + let query_params = form_urlencoded::parse(uri.query().unwrap_or_default().as_bytes()).collect::>(); + let param_query = query_params.iter().filter(|e| e.0 == "query").map(|e| e.1.to_owned()) + + .nth(0); + let param_query = match param_query { + Some(param_query) => match param_query.parse::() { + Ok(param_query) => param_query, + Err(e) => return Box::new(future::ok(Response::new().with_status(StatusCode::BadRequest).with_body(format!("Couldn't parse query parameter query - doesn't match schema: {}", e)))), + }, + None => return Box::new(future::ok(Response::new().with_status(StatusCode::BadRequest).with_body("Missing required query parameter query"))), + }; + // Body parameters (note that non-required body parameters will ignore garbage // values, rather than causing a 400 response). Produce warning header and logs for @@ -651,7 +662,7 @@ impl hyper::server::Service for Service where T: Api + Clone + 'static { Ok(body) => { let mut unused_elements = Vec::new(); - let param_body: Option = if !body.is_empty() { + let param_user: Option = if !body.is_empty() { let deserializer = &mut serde_json::Deserializer::from_slice(&*body); @@ -659,20 +670,23 @@ impl hyper::server::Service for Service where T: Api + Clone + 'static { warn!("Ignoring unknown field in body: {}", path); unused_elements.push(path.to_string()); }) { - Ok(param_body) => param_body, - - Err(_) => None, + Ok(param_user) => param_user, + Err(e) => return Box::new(future::ok(Response::new().with_status(StatusCode::BadRequest).with_body(format!("Couldn't parse body parameter User - doesn't match schema: {}", e)))), } } else { None }; + let param_user = match param_user { + Some(param_user) => param_user, + None => return Box::new(future::ok(Response::new().with_status(StatusCode::BadRequest).with_body("Missing required body parameter User"))), + }; - Box::new(api_impl.fake_outer_string_serialize(param_body, &context) + Box::new(api_impl.test_body_with_query_params(param_query, param_user, &context) .then(move |result| { let mut response = Response::new(); - context.x_span_id.as_ref().map(|header| response.headers_mut().set(XSpanId(header.clone()))); + response.headers_mut().set(XSpanId((&context as &Has).get().0.to_string())); if !unused_elements.is_empty() { response.headers_mut().set(Warning(format!("Ignoring unknown fields in body: {:?}", unused_elements))); @@ -680,18 +694,12 @@ impl hyper::server::Service for Service where T: Api + Clone + 'static { match result { Ok(rsp) => match rsp { - FakeOuterStringSerializeResponse::OutputString - - (body) + TestBodyWithQueryParamsResponse::Success => { response.set_status(StatusCode::try_from(200).unwrap()); - - let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); - - response.set_body(body); }, }, Err(_) => { @@ -708,7 +716,7 @@ impl hyper::server::Service for Service where T: Api + Clone + 'static { }, - Err(e) => Box::new(future::ok(Response::new().with_status(StatusCode::BadRequest).with_body(format!("Couldn't read body parameter body: {}", e)))), + Err(e) => Box::new(future::ok(Response::new().with_status(StatusCode::BadRequest).with_body(format!("Couldn't read body parameter User: {}", e)))), } }) ) as Box> @@ -718,9 +726,6 @@ impl hyper::server::Service for Service where T: Api + Clone + 'static { // TestClientModel - PATCH /fake &hyper::Method::Patch if path.matched(paths::ID_FAKE) => { - if context.x_span_id.is_none() { - context.x_span_id = Some(headers.get::().map(XSpanId::to_string).unwrap_or_else(|| self::uuid::Uuid::new_v4().to_string())); - } @@ -736,7 +741,7 @@ impl hyper::server::Service for Service where T: Api + Clone + 'static { Ok(body) => { let mut unused_elements = Vec::new(); - let param_body: Option = if !body.is_empty() { + let param_client: Option = if !body.is_empty() { let deserializer = &mut serde_json::Deserializer::from_slice(&*body); @@ -744,23 +749,23 @@ impl hyper::server::Service for Service where T: Api + Clone + 'static { warn!("Ignoring unknown field in body: {}", path); unused_elements.push(path.to_string()); }) { - Ok(param_body) => param_body, - Err(e) => return Box::new(future::ok(Response::new().with_status(StatusCode::BadRequest).with_body(format!("Couldn't parse body parameter body - doesn't match schema: {}", e)))), + Ok(param_client) => param_client, + Err(e) => return Box::new(future::ok(Response::new().with_status(StatusCode::BadRequest).with_body(format!("Couldn't parse body parameter Client - doesn't match schema: {}", e)))), } } else { None }; - let param_body = match param_body { - Some(param_body) => param_body, - None => return Box::new(future::ok(Response::new().with_status(StatusCode::BadRequest).with_body("Missing required body parameter body"))), + let param_client = match param_client { + Some(param_client) => param_client, + None => return Box::new(future::ok(Response::new().with_status(StatusCode::BadRequest).with_body("Missing required body parameter Client"))), }; - Box::new(api_impl.test_client_model(param_body, &context) + Box::new(api_impl.test_client_model(param_client, &context) .then(move |result| { let mut response = Response::new(); - context.x_span_id.as_ref().map(|header| response.headers_mut().set(XSpanId(header.clone()))); + response.headers_mut().set(XSpanId((&context as &Has).get().0.to_string())); if !unused_elements.is_empty() { response.headers_mut().set(Warning(format!("Ignoring unknown fields in body: {:?}", unused_elements))); @@ -798,7 +803,7 @@ impl hyper::server::Service for Service where T: Api + Clone + 'static { }, - Err(e) => Box::new(future::ok(Response::new().with_status(StatusCode::BadRequest).with_body(format!("Couldn't read body parameter body: {}", e)))), + Err(e) => Box::new(future::ok(Response::new().with_status(StatusCode::BadRequest).with_body(format!("Couldn't read body parameter Client: {}", e)))), } }) ) as Box> @@ -808,13 +813,10 @@ impl hyper::server::Service for Service where T: Api + Clone + 'static { // TestEndpointParameters - POST /fake &hyper::Method::Post if path.matched(paths::ID_FAKE) => { - if context.x_span_id.is_none() { - context.x_span_id = Some(headers.get::().map(XSpanId::to_string).unwrap_or_else(|| self::uuid::Uuid::new_v4().to_string())); - } { - let authorization = match context.authorization.as_ref() { - Some(authorization) => authorization, - None => return Box::new(future::ok(Response::new() + let authorization = match (&context as &Has>).get() { + &Some(ref authorization) => authorization, + &None => return Box::new(future::ok(Response::new() .with_status(StatusCode::Forbidden) .with_body("Unauthenticated"))), }; @@ -827,29 +829,188 @@ impl hyper::server::Service for Service where T: Api + Clone + 'static { - Box::new(({ - {{ + let boundary = match multipart_boundary(&headers) { + Some(boundary) => boundary.to_string(), + None => return Box::new(future::ok(Response::new().with_status(StatusCode::BadRequest).with_body("Couldn't find valid multipart body"))), + }; + + Box::new(body.concat2() + .then(move |result| -> Box> { + match result { + Ok(body) => { + let mut entries = match Multipart::with_body(&body.to_vec()[..], boundary).save().temp() { + SaveResult::Full(entries) => { + entries + }, + _ => { + return Box::new(future::ok(Response::new().with_status(StatusCode::BadRequest).with_body(format!("Unable to process all message parts")))) + }, + }; // Form parameters - let param_integer = Some(56); - let param_int32 = Some(56); - let param_int64 = Some(789); - let param_number = 8.14; - let param_float = Some(3.4); - let param_double = 1.2; - let param_string = Some("string_example".to_string()); - let param_pattern_without_delimiter = "pattern_without_delimiter_example".to_string(); - let param_byte = swagger::ByteArray(Vec::from("B")); - let param_binary = Some(swagger::ByteArray(Vec::from("B"))); - let param_date = None; - let param_date_time = None; - let param_password = Some("password_example".to_string()); - let param_callback = Some("callback_example".to_string()); - - Box::new(api_impl.test_endpoint_parameters(param_number, param_double, param_pattern_without_delimiter, param_byte, param_integer, param_int32, param_int64, param_float, param_string, param_binary, param_date, param_date_time, param_password, param_callback, &context) + let param_integer = entries.fields.remove("integer"); + let param_integer = match param_integer { + Some(entry) => + + match entry.parse::() { + Ok(entry) => Some(entry), + + Err(_) => None, + }, + + None => None, + }; + + let param_int32 = entries.fields.remove("int32"); + let param_int32 = match param_int32 { + Some(entry) => + + match entry.parse::() { + Ok(entry) => Some(entry), + + Err(_) => None, + }, + + None => None, + }; + + let param_int64 = entries.fields.remove("int64"); + let param_int64 = match param_int64 { + Some(entry) => + + match entry.parse::() { + Ok(entry) => Some(entry), + + Err(_) => None, + }, + + None => None, + }; + + let param_number = entries.fields.remove("number"); + let param_number = match param_number { + Some(entry) => + + match entry.parse::() { + Ok(entry) => entry, + Err(e) => return Box::new(future::ok(Response::new().with_status(StatusCode::BadRequest).with_body(format!("Couldn't parse form parameter number - doesn't match schema: {}", e)))), + }, + None => return Box::new(future::ok(Response::new().with_status(StatusCode::BadRequest).with_body(format!("Missing required form parameter number")))), + }; + + let param_float = entries.fields.remove("float"); + let param_float = match param_float { + Some(entry) => + + match entry.parse::() { + Ok(entry) => Some(entry), + + Err(_) => None, + }, + + None => None, + }; + + let param_double = entries.fields.remove("double"); + let param_double = match param_double { + Some(entry) => + + match entry.parse::() { + Ok(entry) => entry, + Err(e) => return Box::new(future::ok(Response::new().with_status(StatusCode::BadRequest).with_body(format!("Couldn't parse form parameter double - doesn't match schema: {}", e)))), + }, + None => return Box::new(future::ok(Response::new().with_status(StatusCode::BadRequest).with_body(format!("Missing required form parameter double")))), + }; + + let param_string = entries.fields.remove("string"); + let param_string = match param_string { + Some(entry) => + + match entry.parse::() { + Ok(entry) => Some(entry), + + Err(_) => None, + }, + + None => None, + }; + + let param_pattern_without_delimiter = entries.fields.remove("pattern_without_delimiter"); + let param_pattern_without_delimiter = match param_pattern_without_delimiter { + Some(entry) => + + match entry.parse::() { + Ok(entry) => entry, + Err(e) => return Box::new(future::ok(Response::new().with_status(StatusCode::BadRequest).with_body(format!("Couldn't parse form parameter pattern_without_delimiter - doesn't match schema: {}", e)))), + }, + None => return Box::new(future::ok(Response::new().with_status(StatusCode::BadRequest).with_body(format!("Missing required form parameter pattern_without_delimiter")))), + }; + + let param_binary = entries.fields.remove("binary"); + let param_binary = match param_binary { + Some(entry) => + Some(Box::new(stream::once(Ok(entry.as_bytes().to_vec()))) as Box, Error=io::Error> + Send>), + + None => None, + }; + let param_binary = Box::new(future::ok(param_binary)); + let param_date = entries.fields.remove("date"); + let param_date = match param_date { + Some(entry) => + + match entry.parse::>() { + Ok(entry) => Some(entry), + + Err(_) => None, + }, + + None => None, + }; + + let param_date_time = entries.fields.remove("date_time"); + let param_date_time = match param_date_time { + Some(entry) => + + match entry.parse::>() { + Ok(entry) => Some(entry), + + Err(_) => None, + }, + + None => None, + }; + + let param_password = entries.fields.remove("password"); + let param_password = match param_password { + Some(entry) => + + match entry.parse::() { + Ok(entry) => Some(entry), + + Err(_) => None, + }, + + None => None, + }; + + let param_callback = entries.fields.remove("callback"); + let param_callback = match param_callback { + Some(entry) => + + match entry.parse::() { + Ok(entry) => Some(entry), + + Err(_) => None, + }, + + None => None, + }; + + + Box::new(api_impl.test_endpoint_parameters(param_number, param_double, param_pattern_without_delimiter, param_integer, param_int32, param_int64, param_float, param_string, param_binary, param_date, param_date_time, param_password, param_callback, &context) .then(move |result| { let mut response = Response::new(); - context.x_span_id.as_ref().map(|header| response.headers_mut().set(XSpanId(header.clone()))); + response.headers_mut().set(XSpanId((&context as &Has).get().0.to_string())); match result { Ok(rsp) => match rsp { @@ -880,8 +1041,12 @@ impl hyper::server::Service for Service where T: Api + Clone + 'static { } )) - }} - })) as Box> + as Box> + }, + Err(e) => Box::new(future::ok(Response::new().with_status(StatusCode::BadRequest).with_body(format!("Couldn't read multipart body")))), + } + }) + ) }, @@ -889,9 +1054,6 @@ impl hyper::server::Service for Service where T: Api + Clone + 'static { // TestEnumParameters - GET /fake &hyper::Method::Get if path.matched(paths::ID_FAKE) => { - if context.x_span_id.is_none() { - context.x_span_id = Some(headers.get::().map(XSpanId::to_string).unwrap_or_else(|| self::uuid::Uuid::new_v4().to_string())); - } @@ -923,21 +1085,21 @@ impl hyper::server::Service for Service where T: Api + Clone + 'static { .nth(0); let param_enum_query_integer = param_enum_query_integer.and_then(|param_enum_query_integer| param_enum_query_integer.parse::<>().ok()); + let param_enum_query_double = query_params.iter().filter(|e| e.0 == "enum_query_double").map(|e| e.1.to_owned()) + + .nth(0); + let param_enum_query_double = param_enum_query_double.and_then(|param_enum_query_double| param_enum_query_double.parse::<>().ok()); - Box::new(({ - {{ - // Form parameters - let param_enum_form_string_array = None; - let param_enum_form_string = Some("enum_form_string_example".to_string()); - let param_enum_query_double = Some(1.2); + Box::new({ + {{ - Box::new(api_impl.test_enum_parameters(param_enum_form_string_array.as_ref(), param_enum_form_string, param_enum_header_string_array.as_ref(), param_enum_header_string, param_enum_query_string_array.as_ref(), param_enum_query_string, param_enum_query_integer, param_enum_query_double, &context) + Box::new(api_impl.test_enum_parameters(param_enum_header_string_array.as_ref(), param_enum_header_string, param_enum_query_string_array.as_ref(), param_enum_query_string, param_enum_query_integer, param_enum_query_double, &context) .then(move |result| { let mut response = Response::new(); - context.x_span_id.as_ref().map(|header| response.headers_mut().set(XSpanId(header.clone()))); + response.headers_mut().set(XSpanId((&context as &Has).get().0.to_string())); match result { Ok(rsp) => match rsp { @@ -969,7 +1131,7 @@ impl hyper::server::Service for Service where T: Api + Clone + 'static { )) }} - })) as Box> + }) as Box> }, @@ -977,9 +1139,6 @@ impl hyper::server::Service for Service where T: Api + Clone + 'static { // TestInlineAdditionalProperties - POST /fake/inline-additionalProperties &hyper::Method::Post if path.matched(paths::ID_FAKE_INLINE_ADDITIONALPROPERTIES) => { - if context.x_span_id.is_none() { - context.x_span_id = Some(headers.get::().map(XSpanId::to_string).unwrap_or_else(|| self::uuid::Uuid::new_v4().to_string())); - } @@ -995,7 +1154,7 @@ impl hyper::server::Service for Service where T: Api + Clone + 'static { Ok(body) => { let mut unused_elements = Vec::new(); - let param_param: Option = if !body.is_empty() { + let param_request_body: Option> = if !body.is_empty() { let deserializer = &mut serde_json::Deserializer::from_slice(&*body); @@ -1003,23 +1162,23 @@ impl hyper::server::Service for Service where T: Api + Clone + 'static { warn!("Ignoring unknown field in body: {}", path); unused_elements.push(path.to_string()); }) { - Ok(param_param) => param_param, - Err(e) => return Box::new(future::ok(Response::new().with_status(StatusCode::BadRequest).with_body(format!("Couldn't parse body parameter param - doesn't match schema: {}", e)))), + Ok(param_request_body) => param_request_body, + Err(e) => return Box::new(future::ok(Response::new().with_status(StatusCode::BadRequest).with_body(format!("Couldn't parse body parameter request_body - doesn't match schema: {}", e)))), } } else { None }; - let param_param = match param_param { - Some(param_param) => param_param, - None => return Box::new(future::ok(Response::new().with_status(StatusCode::BadRequest).with_body("Missing required body parameter param"))), + let param_request_body = match param_request_body { + Some(param_request_body) => param_request_body, + None => return Box::new(future::ok(Response::new().with_status(StatusCode::BadRequest).with_body("Missing required body parameter request_body"))), }; - Box::new(api_impl.test_inline_additional_properties(param_param, &context) + Box::new(api_impl.test_inline_additional_properties(param_request_body, &context) .then(move |result| { let mut response = Response::new(); - context.x_span_id.as_ref().map(|header| response.headers_mut().set(XSpanId(header.clone()))); + response.headers_mut().set(XSpanId((&context as &Has).get().0.to_string())); if !unused_elements.is_empty() { response.headers_mut().set(Warning(format!("Ignoring unknown fields in body: {:?}", unused_elements))); @@ -1049,7 +1208,7 @@ impl hyper::server::Service for Service where T: Api + Clone + 'static { }, - Err(e) => Box::new(future::ok(Response::new().with_status(StatusCode::BadRequest).with_body(format!("Couldn't read body parameter param: {}", e)))), + Err(e) => Box::new(future::ok(Response::new().with_status(StatusCode::BadRequest).with_body(format!("Couldn't read body parameter request_body: {}", e)))), } }) ) as Box> @@ -1059,9 +1218,6 @@ impl hyper::server::Service for Service where T: Api + Clone + 'static { // TestJsonFormData - GET /fake/jsonFormData &hyper::Method::Get if path.matched(paths::ID_FAKE_JSONFORMDATA) => { - if context.x_span_id.is_none() { - context.x_span_id = Some(headers.get::().map(XSpanId::to_string).unwrap_or_else(|| self::uuid::Uuid::new_v4().to_string())); - } @@ -1069,7 +1225,7 @@ impl hyper::server::Service for Service where T: Api + Clone + 'static { - Box::new(({ + Box::new({ {{ // Form parameters @@ -1079,7 +1235,7 @@ impl hyper::server::Service for Service where T: Api + Clone + 'static { Box::new(api_impl.test_json_form_data(param_param, param_param2, &context) .then(move |result| { let mut response = Response::new(); - context.x_span_id.as_ref().map(|header| response.headers_mut().set(XSpanId(header.clone()))); + response.headers_mut().set(XSpanId((&context as &Has).get().0.to_string())); match result { Ok(rsp) => match rsp { @@ -1104,7 +1260,7 @@ impl hyper::server::Service for Service where T: Api + Clone + 'static { )) }} - })) as Box> + }) as Box> }, @@ -1112,13 +1268,10 @@ impl hyper::server::Service for Service where T: Api + Clone + 'static { // TestClassname - PATCH /fake_classname_test &hyper::Method::Patch if path.matched(paths::ID_FAKE_CLASSNAME_TEST) => { - if context.x_span_id.is_none() { - context.x_span_id = Some(headers.get::().map(XSpanId::to_string).unwrap_or_else(|| self::uuid::Uuid::new_v4().to_string())); - } { - let authorization = match context.authorization.as_ref() { - Some(authorization) => authorization, - None => return Box::new(future::ok(Response::new() + let authorization = match (&context as &Has>).get() { + &Some(ref authorization) => authorization, + &None => return Box::new(future::ok(Response::new() .with_status(StatusCode::Forbidden) .with_body("Unauthenticated"))), }; @@ -1139,7 +1292,7 @@ impl hyper::server::Service for Service where T: Api + Clone + 'static { Ok(body) => { let mut unused_elements = Vec::new(); - let param_body: Option = if !body.is_empty() { + let param_client: Option = if !body.is_empty() { let deserializer = &mut serde_json::Deserializer::from_slice(&*body); @@ -1147,23 +1300,23 @@ impl hyper::server::Service for Service where T: Api + Clone + 'static { warn!("Ignoring unknown field in body: {}", path); unused_elements.push(path.to_string()); }) { - Ok(param_body) => param_body, - Err(e) => return Box::new(future::ok(Response::new().with_status(StatusCode::BadRequest).with_body(format!("Couldn't parse body parameter body - doesn't match schema: {}", e)))), + Ok(param_client) => param_client, + Err(e) => return Box::new(future::ok(Response::new().with_status(StatusCode::BadRequest).with_body(format!("Couldn't parse body parameter Client - doesn't match schema: {}", e)))), } } else { None }; - let param_body = match param_body { - Some(param_body) => param_body, - None => return Box::new(future::ok(Response::new().with_status(StatusCode::BadRequest).with_body("Missing required body parameter body"))), + let param_client = match param_client { + Some(param_client) => param_client, + None => return Box::new(future::ok(Response::new().with_status(StatusCode::BadRequest).with_body("Missing required body parameter Client"))), }; - Box::new(api_impl.test_classname(param_body, &context) + Box::new(api_impl.test_classname(param_client, &context) .then(move |result| { let mut response = Response::new(); - context.x_span_id.as_ref().map(|header| response.headers_mut().set(XSpanId(header.clone()))); + response.headers_mut().set(XSpanId((&context as &Has).get().0.to_string())); if !unused_elements.is_empty() { response.headers_mut().set(Warning(format!("Ignoring unknown fields in body: {:?}", unused_elements))); @@ -1201,7 +1354,7 @@ impl hyper::server::Service for Service where T: Api + Clone + 'static { }, - Err(e) => Box::new(future::ok(Response::new().with_status(StatusCode::BadRequest).with_body(format!("Couldn't read body parameter body: {}", e)))), + Err(e) => Box::new(future::ok(Response::new().with_status(StatusCode::BadRequest).with_body(format!("Couldn't read body parameter Client: {}", e)))), } }) ) as Box> @@ -1211,13 +1364,10 @@ impl hyper::server::Service for Service where T: Api + Clone + 'static { // AddPet - POST /pet &hyper::Method::Post if path.matched(paths::ID_PET) => { - if context.x_span_id.is_none() { - context.x_span_id = Some(headers.get::().map(XSpanId::to_string).unwrap_or_else(|| self::uuid::Uuid::new_v4().to_string())); - } { - let authorization = match context.authorization.as_ref() { - Some(authorization) => authorization, - None => return Box::new(future::ok(Response::new() + let authorization = match (&context as &Has>).get() { + &Some(ref authorization) => authorization, + &None => return Box::new(future::ok(Response::new() .with_status(StatusCode::Forbidden) .with_body("Unauthenticated"))), }; @@ -1256,30 +1406,30 @@ impl hyper::server::Service for Service where T: Api + Clone + 'static { Ok(body) => { let mut unused_elements = Vec::new(); - let param_body: Option = if !body.is_empty() { + let param_pet: Option = if !body.is_empty() { let deserializer = &mut serde_xml_rs::de::Deserializer::new_from_reader(&*body); match serde_ignored::deserialize(deserializer, |path| { warn!("Ignoring unknown field in body: {}", path); unused_elements.push(path.to_string()); }) { - Ok(param_body) => param_body, - Err(e) => return Box::new(future::ok(Response::new().with_status(StatusCode::BadRequest).with_body(format!("Couldn't parse body parameter body - doesn't match schema: {}", e)))), + Ok(param_pet) => param_pet, + Err(e) => return Box::new(future::ok(Response::new().with_status(StatusCode::BadRequest).with_body(format!("Couldn't parse body parameter Pet - doesn't match schema: {}", e)))), } } else { None }; - let param_body = match param_body { - Some(param_body) => param_body, - None => return Box::new(future::ok(Response::new().with_status(StatusCode::BadRequest).with_body("Missing required body parameter body"))), + let param_pet = match param_pet { + Some(param_pet) => param_pet, + None => return Box::new(future::ok(Response::new().with_status(StatusCode::BadRequest).with_body("Missing required body parameter Pet"))), }; - Box::new(api_impl.add_pet(param_body, &context) + Box::new(api_impl.add_pet(param_pet, &context) .then(move |result| { let mut response = Response::new(); - context.x_span_id.as_ref().map(|header| response.headers_mut().set(XSpanId(header.clone()))); + response.headers_mut().set(XSpanId((&context as &Has).get().0.to_string())); if !unused_elements.is_empty() { response.headers_mut().set(Warning(format!("Ignoring unknown fields in body: {:?}", unused_elements))); @@ -1309,7 +1459,7 @@ impl hyper::server::Service for Service where T: Api + Clone + 'static { }, - Err(e) => Box::new(future::ok(Response::new().with_status(StatusCode::BadRequest).with_body(format!("Couldn't read body parameter body: {}", e)))), + Err(e) => Box::new(future::ok(Response::new().with_status(StatusCode::BadRequest).with_body(format!("Couldn't read body parameter Pet: {}", e)))), } }) ) as Box> @@ -1319,13 +1469,10 @@ impl hyper::server::Service for Service where T: Api + Clone + 'static { // DeletePet - DELETE /pet/{petId} &hyper::Method::Delete if path.matched(paths::ID_PET_PETID) => { - if context.x_span_id.is_none() { - context.x_span_id = Some(headers.get::().map(XSpanId::to_string).unwrap_or_else(|| self::uuid::Uuid::new_v4().to_string())); - } { - let authorization = match context.authorization.as_ref() { - Some(authorization) => authorization, - None => return Box::new(future::ok(Response::new() + let authorization = match (&context as &Has>).get() { + &Some(ref authorization) => authorization, + &None => return Box::new(future::ok(Response::new() .with_status(StatusCode::Forbidden) .with_body("Unauthenticated"))), }; @@ -1376,13 +1523,13 @@ impl hyper::server::Service for Service where T: Api + Clone + 'static { - Box::new(({ + Box::new({ {{ Box::new(api_impl.delete_pet(param_pet_id, param_api_key, &context) .then(move |result| { let mut response = Response::new(); - context.x_span_id.as_ref().map(|header| response.headers_mut().set(XSpanId(header.clone()))); + response.headers_mut().set(XSpanId((&context as &Has).get().0.to_string())); match result { Ok(rsp) => match rsp { @@ -1407,7 +1554,7 @@ impl hyper::server::Service for Service where T: Api + Clone + 'static { )) }} - })) as Box> + }) as Box> }, @@ -1415,13 +1562,10 @@ impl hyper::server::Service for Service where T: Api + Clone + 'static { // FindPetsByStatus - GET /pet/findByStatus &hyper::Method::Get if path.matched(paths::ID_PET_FINDBYSTATUS) => { - if context.x_span_id.is_none() { - context.x_span_id = Some(headers.get::().map(XSpanId::to_string).unwrap_or_else(|| self::uuid::Uuid::new_v4().to_string())); - } { - let authorization = match context.authorization.as_ref() { - Some(authorization) => authorization, - None => return Box::new(future::ok(Response::new() + let authorization = match (&context as &Has>).get() { + &Some(ref authorization) => authorization, + &None => return Box::new(future::ok(Response::new() .with_status(StatusCode::Forbidden) .with_body("Unauthenticated"))), }; @@ -1458,13 +1602,13 @@ impl hyper::server::Service for Service where T: Api + Clone + 'static { - Box::new(({ + Box::new({ {{ Box::new(api_impl.find_pets_by_status(param_status.as_ref(), &context) .then(move |result| { let mut response = Response::new(); - context.x_span_id.as_ref().map(|header| response.headers_mut().set(XSpanId(header.clone()))); + response.headers_mut().set(XSpanId((&context as &Has).get().0.to_string())); match result { Ok(rsp) => match rsp { @@ -1504,7 +1648,7 @@ impl hyper::server::Service for Service where T: Api + Clone + 'static { )) }} - })) as Box> + }) as Box> }, @@ -1512,13 +1656,10 @@ impl hyper::server::Service for Service where T: Api + Clone + 'static { // FindPetsByTags - GET /pet/findByTags &hyper::Method::Get if path.matched(paths::ID_PET_FINDBYTAGS) => { - if context.x_span_id.is_none() { - context.x_span_id = Some(headers.get::().map(XSpanId::to_string).unwrap_or_else(|| self::uuid::Uuid::new_v4().to_string())); - } { - let authorization = match context.authorization.as_ref() { - Some(authorization) => authorization, - None => return Box::new(future::ok(Response::new() + let authorization = match (&context as &Has>).get() { + &Some(ref authorization) => authorization, + &None => return Box::new(future::ok(Response::new() .with_status(StatusCode::Forbidden) .with_body("Unauthenticated"))), }; @@ -1555,13 +1696,13 @@ impl hyper::server::Service for Service where T: Api + Clone + 'static { - Box::new(({ + Box::new({ {{ Box::new(api_impl.find_pets_by_tags(param_tags.as_ref(), &context) .then(move |result| { let mut response = Response::new(); - context.x_span_id.as_ref().map(|header| response.headers_mut().set(XSpanId(header.clone()))); + response.headers_mut().set(XSpanId((&context as &Has).get().0.to_string())); match result { Ok(rsp) => match rsp { @@ -1601,7 +1742,7 @@ impl hyper::server::Service for Service where T: Api + Clone + 'static { )) }} - })) as Box> + }) as Box> }, @@ -1609,13 +1750,10 @@ impl hyper::server::Service for Service where T: Api + Clone + 'static { // GetPetById - GET /pet/{petId} &hyper::Method::Get if path.matched(paths::ID_PET_PETID) => { - if context.x_span_id.is_none() { - context.x_span_id = Some(headers.get::().map(XSpanId::to_string).unwrap_or_else(|| self::uuid::Uuid::new_v4().to_string())); - } { - let authorization = match context.authorization.as_ref() { - Some(authorization) => authorization, - None => return Box::new(future::ok(Response::new() + let authorization = match (&context as &Has>).get() { + &Some(ref authorization) => authorization, + &None => return Box::new(future::ok(Response::new() .with_status(StatusCode::Forbidden) .with_body("Unauthenticated"))), }; @@ -1644,13 +1782,13 @@ impl hyper::server::Service for Service where T: Api + Clone + 'static { - Box::new(({ + Box::new({ {{ Box::new(api_impl.get_pet_by_id(param_pet_id, &context) .then(move |result| { let mut response = Response::new(); - context.x_span_id.as_ref().map(|header| response.headers_mut().set(XSpanId(header.clone()))); + response.headers_mut().set(XSpanId((&context as &Has).get().0.to_string())); match result { Ok(rsp) => match rsp { @@ -1697,7 +1835,7 @@ impl hyper::server::Service for Service where T: Api + Clone + 'static { )) }} - })) as Box> + }) as Box> }, @@ -1705,13 +1843,10 @@ impl hyper::server::Service for Service where T: Api + Clone + 'static { // UpdatePet - PUT /pet &hyper::Method::Put if path.matched(paths::ID_PET) => { - if context.x_span_id.is_none() { - context.x_span_id = Some(headers.get::().map(XSpanId::to_string).unwrap_or_else(|| self::uuid::Uuid::new_v4().to_string())); - } { - let authorization = match context.authorization.as_ref() { - Some(authorization) => authorization, - None => return Box::new(future::ok(Response::new() + let authorization = match (&context as &Has>).get() { + &Some(ref authorization) => authorization, + &None => return Box::new(future::ok(Response::new() .with_status(StatusCode::Forbidden) .with_body("Unauthenticated"))), }; @@ -1750,30 +1885,30 @@ impl hyper::server::Service for Service where T: Api + Clone + 'static { Ok(body) => { let mut unused_elements = Vec::new(); - let param_body: Option = if !body.is_empty() { + let param_pet: Option = if !body.is_empty() { let deserializer = &mut serde_xml_rs::de::Deserializer::new_from_reader(&*body); match serde_ignored::deserialize(deserializer, |path| { warn!("Ignoring unknown field in body: {}", path); unused_elements.push(path.to_string()); }) { - Ok(param_body) => param_body, - Err(e) => return Box::new(future::ok(Response::new().with_status(StatusCode::BadRequest).with_body(format!("Couldn't parse body parameter body - doesn't match schema: {}", e)))), + Ok(param_pet) => param_pet, + Err(e) => return Box::new(future::ok(Response::new().with_status(StatusCode::BadRequest).with_body(format!("Couldn't parse body parameter Pet - doesn't match schema: {}", e)))), } } else { None }; - let param_body = match param_body { - Some(param_body) => param_body, - None => return Box::new(future::ok(Response::new().with_status(StatusCode::BadRequest).with_body("Missing required body parameter body"))), + let param_pet = match param_pet { + Some(param_pet) => param_pet, + None => return Box::new(future::ok(Response::new().with_status(StatusCode::BadRequest).with_body("Missing required body parameter Pet"))), }; - Box::new(api_impl.update_pet(param_body, &context) + Box::new(api_impl.update_pet(param_pet, &context) .then(move |result| { let mut response = Response::new(); - context.x_span_id.as_ref().map(|header| response.headers_mut().set(XSpanId(header.clone()))); + response.headers_mut().set(XSpanId((&context as &Has).get().0.to_string())); if !unused_elements.is_empty() { response.headers_mut().set(Warning(format!("Ignoring unknown fields in body: {:?}", unused_elements))); @@ -1817,7 +1952,7 @@ impl hyper::server::Service for Service where T: Api + Clone + 'static { }, - Err(e) => Box::new(future::ok(Response::new().with_status(StatusCode::BadRequest).with_body(format!("Couldn't read body parameter body: {}", e)))), + Err(e) => Box::new(future::ok(Response::new().with_status(StatusCode::BadRequest).with_body(format!("Couldn't read body parameter Pet: {}", e)))), } }) ) as Box> @@ -1827,13 +1962,10 @@ impl hyper::server::Service for Service where T: Api + Clone + 'static { // UpdatePetWithForm - POST /pet/{petId} &hyper::Method::Post if path.matched(paths::ID_PET_PETID) => { - if context.x_span_id.is_none() { - context.x_span_id = Some(headers.get::().map(XSpanId::to_string).unwrap_or_else(|| self::uuid::Uuid::new_v4().to_string())); - } { - let authorization = match context.authorization.as_ref() { - Some(authorization) => authorization, - None => return Box::new(future::ok(Response::new() + let authorization = match (&context as &Has>).get() { + &Some(ref authorization) => authorization, + &None => return Box::new(future::ok(Response::new() .with_status(StatusCode::Forbidden) .with_body("Unauthenticated"))), }; @@ -1880,7 +2012,7 @@ impl hyper::server::Service for Service where T: Api + Clone + 'static { - Box::new(({ + Box::new({ {{ // Form parameters @@ -1890,7 +2022,7 @@ impl hyper::server::Service for Service where T: Api + Clone + 'static { Box::new(api_impl.update_pet_with_form(param_pet_id, param_name, param_status, &context) .then(move |result| { let mut response = Response::new(); - context.x_span_id.as_ref().map(|header| response.headers_mut().set(XSpanId(header.clone()))); + response.headers_mut().set(XSpanId((&context as &Has).get().0.to_string())); match result { Ok(rsp) => match rsp { @@ -1915,7 +2047,7 @@ impl hyper::server::Service for Service where T: Api + Clone + 'static { )) }} - })) as Box> + }) as Box> }, @@ -1923,13 +2055,10 @@ impl hyper::server::Service for Service where T: Api + Clone + 'static { // UploadFile - POST /pet/{petId}/uploadImage &hyper::Method::Post if path.matched(paths::ID_PET_PETID_UPLOADIMAGE) => { - if context.x_span_id.is_none() { - context.x_span_id = Some(headers.get::().map(XSpanId::to_string).unwrap_or_else(|| self::uuid::Uuid::new_v4().to_string())); - } { - let authorization = match context.authorization.as_ref() { - Some(authorization) => authorization, - None => return Box::new(future::ok(Response::new() + let authorization = match (&context as &Has>).get() { + &Some(ref authorization) => authorization, + &None => return Box::new(future::ok(Response::new() .with_status(StatusCode::Forbidden) .with_body("Unauthenticated"))), }; @@ -2020,7 +2149,7 @@ impl hyper::server::Service for Service where T: Api + Clone + 'static { Box::new(api_impl.upload_file(param_pet_id, param_additional_metadata, param_file, &context) .then(move |result| { let mut response = Response::new(); - context.x_span_id.as_ref().map(|header| response.headers_mut().set(XSpanId(header.clone()))); + response.headers_mut().set(XSpanId((&context as &Has).get().0.to_string())); match result { Ok(rsp) => match rsp { @@ -2065,9 +2194,6 @@ impl hyper::server::Service for Service where T: Api + Clone + 'static { // DeleteOrder - DELETE /store/order/{order_id} &hyper::Method::Delete if path.matched(paths::ID_STORE_ORDER_ORDER_ID) => { - if context.x_span_id.is_none() { - context.x_span_id = Some(headers.get::().map(XSpanId::to_string).unwrap_or_else(|| self::uuid::Uuid::new_v4().to_string())); - } // Path parameters @@ -2091,13 +2217,13 @@ impl hyper::server::Service for Service where T: Api + Clone + 'static { - Box::new(({ + Box::new({ {{ Box::new(api_impl.delete_order(param_order_id, &context) .then(move |result| { let mut response = Response::new(); - context.x_span_id.as_ref().map(|header| response.headers_mut().set(XSpanId(header.clone()))); + response.headers_mut().set(XSpanId((&context as &Has).get().0.to_string())); match result { Ok(rsp) => match rsp { @@ -2129,7 +2255,7 @@ impl hyper::server::Service for Service where T: Api + Clone + 'static { )) }} - })) as Box> + }) as Box> }, @@ -2137,13 +2263,10 @@ impl hyper::server::Service for Service where T: Api + Clone + 'static { // GetInventory - GET /store/inventory &hyper::Method::Get if path.matched(paths::ID_STORE_INVENTORY) => { - if context.x_span_id.is_none() { - context.x_span_id = Some(headers.get::().map(XSpanId::to_string).unwrap_or_else(|| self::uuid::Uuid::new_v4().to_string())); - } { - let authorization = match context.authorization.as_ref() { - Some(authorization) => authorization, - None => return Box::new(future::ok(Response::new() + let authorization = match (&context as &Has>).get() { + &Some(ref authorization) => authorization, + &None => return Box::new(future::ok(Response::new() .with_status(StatusCode::Forbidden) .with_body("Unauthenticated"))), }; @@ -2156,13 +2279,13 @@ impl hyper::server::Service for Service where T: Api + Clone + 'static { - Box::new(({ + Box::new({ {{ Box::new(api_impl.get_inventory(&context) .then(move |result| { let mut response = Response::new(); - context.x_span_id.as_ref().map(|header| response.headers_mut().set(XSpanId(header.clone()))); + response.headers_mut().set(XSpanId((&context as &Has).get().0.to_string())); match result { Ok(rsp) => match rsp { @@ -2195,7 +2318,7 @@ impl hyper::server::Service for Service where T: Api + Clone + 'static { )) }} - })) as Box> + }) as Box> }, @@ -2203,9 +2326,6 @@ impl hyper::server::Service for Service where T: Api + Clone + 'static { // GetOrderById - GET /store/order/{order_id} &hyper::Method::Get if path.matched(paths::ID_STORE_ORDER_ORDER_ID) => { - if context.x_span_id.is_none() { - context.x_span_id = Some(headers.get::().map(XSpanId::to_string).unwrap_or_else(|| self::uuid::Uuid::new_v4().to_string())); - } // Path parameters @@ -2229,13 +2349,13 @@ impl hyper::server::Service for Service where T: Api + Clone + 'static { - Box::new(({ + Box::new({ {{ Box::new(api_impl.get_order_by_id(param_order_id, &context) .then(move |result| { let mut response = Response::new(); - context.x_span_id.as_ref().map(|header| response.headers_mut().set(XSpanId(header.clone()))); + response.headers_mut().set(XSpanId((&context as &Has).get().0.to_string())); match result { Ok(rsp) => match rsp { @@ -2282,7 +2402,7 @@ impl hyper::server::Service for Service where T: Api + Clone + 'static { )) }} - })) as Box> + }) as Box> }, @@ -2290,9 +2410,6 @@ impl hyper::server::Service for Service where T: Api + Clone + 'static { // PlaceOrder - POST /store/order &hyper::Method::Post if path.matched(paths::ID_STORE_ORDER) => { - if context.x_span_id.is_none() { - context.x_span_id = Some(headers.get::().map(XSpanId::to_string).unwrap_or_else(|| self::uuid::Uuid::new_v4().to_string())); - } @@ -2308,7 +2425,7 @@ impl hyper::server::Service for Service where T: Api + Clone + 'static { Ok(body) => { let mut unused_elements = Vec::new(); - let param_body: Option = if !body.is_empty() { + let param_order: Option = if !body.is_empty() { let deserializer = &mut serde_json::Deserializer::from_slice(&*body); @@ -2316,23 +2433,23 @@ impl hyper::server::Service for Service where T: Api + Clone + 'static { warn!("Ignoring unknown field in body: {}", path); unused_elements.push(path.to_string()); }) { - Ok(param_body) => param_body, - Err(e) => return Box::new(future::ok(Response::new().with_status(StatusCode::BadRequest).with_body(format!("Couldn't parse body parameter body - doesn't match schema: {}", e)))), + Ok(param_order) => param_order, + Err(e) => return Box::new(future::ok(Response::new().with_status(StatusCode::BadRequest).with_body(format!("Couldn't parse body parameter Order - doesn't match schema: {}", e)))), } } else { None }; - let param_body = match param_body { - Some(param_body) => param_body, - None => return Box::new(future::ok(Response::new().with_status(StatusCode::BadRequest).with_body("Missing required body parameter body"))), + let param_order = match param_order { + Some(param_order) => param_order, + None => return Box::new(future::ok(Response::new().with_status(StatusCode::BadRequest).with_body("Missing required body parameter Order"))), }; - Box::new(api_impl.place_order(param_body, &context) + Box::new(api_impl.place_order(param_order, &context) .then(move |result| { let mut response = Response::new(); - context.x_span_id.as_ref().map(|header| response.headers_mut().set(XSpanId(header.clone()))); + response.headers_mut().set(XSpanId((&context as &Has).get().0.to_string())); if !unused_elements.is_empty() { response.headers_mut().set(Warning(format!("Ignoring unknown fields in body: {:?}", unused_elements))); @@ -2377,7 +2494,7 @@ impl hyper::server::Service for Service where T: Api + Clone + 'static { }, - Err(e) => Box::new(future::ok(Response::new().with_status(StatusCode::BadRequest).with_body(format!("Couldn't read body parameter body: {}", e)))), + Err(e) => Box::new(future::ok(Response::new().with_status(StatusCode::BadRequest).with_body(format!("Couldn't read body parameter Order: {}", e)))), } }) ) as Box> @@ -2387,9 +2504,6 @@ impl hyper::server::Service for Service where T: Api + Clone + 'static { // CreateUser - POST /user &hyper::Method::Post if path.matched(paths::ID_USER) => { - if context.x_span_id.is_none() { - context.x_span_id = Some(headers.get::().map(XSpanId::to_string).unwrap_or_else(|| self::uuid::Uuid::new_v4().to_string())); - } @@ -2405,7 +2519,7 @@ impl hyper::server::Service for Service where T: Api + Clone + 'static { Ok(body) => { let mut unused_elements = Vec::new(); - let param_body: Option = if !body.is_empty() { + let param_user: Option = if !body.is_empty() { let deserializer = &mut serde_json::Deserializer::from_slice(&*body); @@ -2413,23 +2527,23 @@ impl hyper::server::Service for Service where T: Api + Clone + 'static { warn!("Ignoring unknown field in body: {}", path); unused_elements.push(path.to_string()); }) { - Ok(param_body) => param_body, - Err(e) => return Box::new(future::ok(Response::new().with_status(StatusCode::BadRequest).with_body(format!("Couldn't parse body parameter body - doesn't match schema: {}", e)))), + Ok(param_user) => param_user, + Err(e) => return Box::new(future::ok(Response::new().with_status(StatusCode::BadRequest).with_body(format!("Couldn't parse body parameter User - doesn't match schema: {}", e)))), } } else { None }; - let param_body = match param_body { - Some(param_body) => param_body, - None => return Box::new(future::ok(Response::new().with_status(StatusCode::BadRequest).with_body("Missing required body parameter body"))), + let param_user = match param_user { + Some(param_user) => param_user, + None => return Box::new(future::ok(Response::new().with_status(StatusCode::BadRequest).with_body("Missing required body parameter User"))), }; - Box::new(api_impl.create_user(param_body, &context) + Box::new(api_impl.create_user(param_user, &context) .then(move |result| { let mut response = Response::new(); - context.x_span_id.as_ref().map(|header| response.headers_mut().set(XSpanId(header.clone()))); + response.headers_mut().set(XSpanId((&context as &Has).get().0.to_string())); if !unused_elements.is_empty() { response.headers_mut().set(Warning(format!("Ignoring unknown fields in body: {:?}", unused_elements))); @@ -2459,7 +2573,7 @@ impl hyper::server::Service for Service where T: Api + Clone + 'static { }, - Err(e) => Box::new(future::ok(Response::new().with_status(StatusCode::BadRequest).with_body(format!("Couldn't read body parameter body: {}", e)))), + Err(e) => Box::new(future::ok(Response::new().with_status(StatusCode::BadRequest).with_body(format!("Couldn't read body parameter User: {}", e)))), } }) ) as Box> @@ -2469,9 +2583,6 @@ impl hyper::server::Service for Service where T: Api + Clone + 'static { // CreateUsersWithArrayInput - POST /user/createWithArray &hyper::Method::Post if path.matched(paths::ID_USER_CREATEWITHARRAY) => { - if context.x_span_id.is_none() { - context.x_span_id = Some(headers.get::().map(XSpanId::to_string).unwrap_or_else(|| self::uuid::Uuid::new_v4().to_string())); - } @@ -2487,7 +2598,7 @@ impl hyper::server::Service for Service where T: Api + Clone + 'static { Ok(body) => { let mut unused_elements = Vec::new(); - let param_body: Option> = if !body.is_empty() { + let param_user: Option> = if !body.is_empty() { let deserializer = &mut serde_json::Deserializer::from_slice(&*body); @@ -2495,23 +2606,23 @@ impl hyper::server::Service for Service where T: Api + Clone + 'static { warn!("Ignoring unknown field in body: {}", path); unused_elements.push(path.to_string()); }) { - Ok(param_body) => param_body, - Err(e) => return Box::new(future::ok(Response::new().with_status(StatusCode::BadRequest).with_body(format!("Couldn't parse body parameter body - doesn't match schema: {}", e)))), + Ok(param_user) => param_user, + Err(e) => return Box::new(future::ok(Response::new().with_status(StatusCode::BadRequest).with_body(format!("Couldn't parse body parameter User - doesn't match schema: {}", e)))), } } else { None }; - let param_body = match param_body { - Some(param_body) => param_body, - None => return Box::new(future::ok(Response::new().with_status(StatusCode::BadRequest).with_body("Missing required body parameter body"))), + let param_user = match param_user { + Some(param_user) => param_user, + None => return Box::new(future::ok(Response::new().with_status(StatusCode::BadRequest).with_body("Missing required body parameter User"))), }; - Box::new(api_impl.create_users_with_array_input(param_body.as_ref(), &context) + Box::new(api_impl.create_users_with_array_input(param_user.as_ref(), &context) .then(move |result| { let mut response = Response::new(); - context.x_span_id.as_ref().map(|header| response.headers_mut().set(XSpanId(header.clone()))); + response.headers_mut().set(XSpanId((&context as &Has).get().0.to_string())); if !unused_elements.is_empty() { response.headers_mut().set(Warning(format!("Ignoring unknown fields in body: {:?}", unused_elements))); @@ -2541,7 +2652,7 @@ impl hyper::server::Service for Service where T: Api + Clone + 'static { }, - Err(e) => Box::new(future::ok(Response::new().with_status(StatusCode::BadRequest).with_body(format!("Couldn't read body parameter body: {}", e)))), + Err(e) => Box::new(future::ok(Response::new().with_status(StatusCode::BadRequest).with_body(format!("Couldn't read body parameter User: {}", e)))), } }) ) as Box> @@ -2551,9 +2662,6 @@ impl hyper::server::Service for Service where T: Api + Clone + 'static { // CreateUsersWithListInput - POST /user/createWithList &hyper::Method::Post if path.matched(paths::ID_USER_CREATEWITHLIST) => { - if context.x_span_id.is_none() { - context.x_span_id = Some(headers.get::().map(XSpanId::to_string).unwrap_or_else(|| self::uuid::Uuid::new_v4().to_string())); - } @@ -2569,7 +2677,7 @@ impl hyper::server::Service for Service where T: Api + Clone + 'static { Ok(body) => { let mut unused_elements = Vec::new(); - let param_body: Option> = if !body.is_empty() { + let param_user: Option> = if !body.is_empty() { let deserializer = &mut serde_json::Deserializer::from_slice(&*body); @@ -2577,23 +2685,23 @@ impl hyper::server::Service for Service where T: Api + Clone + 'static { warn!("Ignoring unknown field in body: {}", path); unused_elements.push(path.to_string()); }) { - Ok(param_body) => param_body, - Err(e) => return Box::new(future::ok(Response::new().with_status(StatusCode::BadRequest).with_body(format!("Couldn't parse body parameter body - doesn't match schema: {}", e)))), + Ok(param_user) => param_user, + Err(e) => return Box::new(future::ok(Response::new().with_status(StatusCode::BadRequest).with_body(format!("Couldn't parse body parameter User - doesn't match schema: {}", e)))), } } else { None }; - let param_body = match param_body { - Some(param_body) => param_body, - None => return Box::new(future::ok(Response::new().with_status(StatusCode::BadRequest).with_body("Missing required body parameter body"))), + let param_user = match param_user { + Some(param_user) => param_user, + None => return Box::new(future::ok(Response::new().with_status(StatusCode::BadRequest).with_body("Missing required body parameter User"))), }; - Box::new(api_impl.create_users_with_list_input(param_body.as_ref(), &context) + Box::new(api_impl.create_users_with_list_input(param_user.as_ref(), &context) .then(move |result| { let mut response = Response::new(); - context.x_span_id.as_ref().map(|header| response.headers_mut().set(XSpanId(header.clone()))); + response.headers_mut().set(XSpanId((&context as &Has).get().0.to_string())); if !unused_elements.is_empty() { response.headers_mut().set(Warning(format!("Ignoring unknown fields in body: {:?}", unused_elements))); @@ -2623,7 +2731,7 @@ impl hyper::server::Service for Service where T: Api + Clone + 'static { }, - Err(e) => Box::new(future::ok(Response::new().with_status(StatusCode::BadRequest).with_body(format!("Couldn't read body parameter body: {}", e)))), + Err(e) => Box::new(future::ok(Response::new().with_status(StatusCode::BadRequest).with_body(format!("Couldn't read body parameter User: {}", e)))), } }) ) as Box> @@ -2633,9 +2741,6 @@ impl hyper::server::Service for Service where T: Api + Clone + 'static { // DeleteUser - DELETE /user/{username} &hyper::Method::Delete if path.matched(paths::ID_USER_USERNAME) => { - if context.x_span_id.is_none() { - context.x_span_id = Some(headers.get::().map(XSpanId::to_string).unwrap_or_else(|| self::uuid::Uuid::new_v4().to_string())); - } // Path parameters @@ -2659,13 +2764,13 @@ impl hyper::server::Service for Service where T: Api + Clone + 'static { - Box::new(({ + Box::new({ {{ Box::new(api_impl.delete_user(param_username, &context) .then(move |result| { let mut response = Response::new(); - context.x_span_id.as_ref().map(|header| response.headers_mut().set(XSpanId(header.clone()))); + response.headers_mut().set(XSpanId((&context as &Has).get().0.to_string())); match result { Ok(rsp) => match rsp { @@ -2697,7 +2802,7 @@ impl hyper::server::Service for Service where T: Api + Clone + 'static { )) }} - })) as Box> + }) as Box> }, @@ -2705,9 +2810,6 @@ impl hyper::server::Service for Service where T: Api + Clone + 'static { // GetUserByName - GET /user/{username} &hyper::Method::Get if path.matched(paths::ID_USER_USERNAME) => { - if context.x_span_id.is_none() { - context.x_span_id = Some(headers.get::().map(XSpanId::to_string).unwrap_or_else(|| self::uuid::Uuid::new_v4().to_string())); - } // Path parameters @@ -2731,13 +2833,13 @@ impl hyper::server::Service for Service where T: Api + Clone + 'static { - Box::new(({ + Box::new({ {{ Box::new(api_impl.get_user_by_name(param_username, &context) .then(move |result| { let mut response = Response::new(); - context.x_span_id.as_ref().map(|header| response.headers_mut().set(XSpanId(header.clone()))); + response.headers_mut().set(XSpanId((&context as &Has).get().0.to_string())); match result { Ok(rsp) => match rsp { @@ -2784,7 +2886,7 @@ impl hyper::server::Service for Service where T: Api + Clone + 'static { )) }} - })) as Box> + }) as Box> }, @@ -2792,9 +2894,6 @@ impl hyper::server::Service for Service where T: Api + Clone + 'static { // LoginUser - GET /user/login &hyper::Method::Get if path.matched(paths::ID_USER_LOGIN) => { - if context.x_span_id.is_none() { - context.x_span_id = Some(headers.get::().map(XSpanId::to_string).unwrap_or_else(|| self::uuid::Uuid::new_v4().to_string())); - } @@ -2825,40 +2924,16 @@ impl hyper::server::Service for Service where T: Api + Clone + 'static { - Box::new(({ + Box::new({ {{ Box::new(api_impl.login_user(param_username, param_password, &context) .then(move |result| { let mut response = Response::new(); - context.x_span_id.as_ref().map(|header| response.headers_mut().set(XSpanId(header.clone()))); + response.headers_mut().set(XSpanId((&context as &Has).get().0.to_string())); match result { Ok(rsp) => match rsp { - LoginUserResponse::SuccessfulOperation - - { - body, - x_rate_limit, - - x_expires_after - } - - - => { - response.set_status(StatusCode::try_from(200).unwrap()); - header! { (ResponseXRateLimit, "X-Rate-Limit") => [i32] } - response.headers_mut().set(ResponseXRateLimit(x_rate_limit)); - header! { (ResponseXExpiresAfter, "X-Expires-After") => [chrono::DateTime] } - response.headers_mut().set(ResponseXExpiresAfter(x_expires_after)); - - response.headers_mut().set(ContentType(mimetypes::responses::LOGIN_USER_SUCCESSFUL_OPERATION.clone())); - - - let body = serde_xml_rs::to_string(&body).expect("impossible to fail to serialize"); - - response.set_body(body); - }, LoginUserResponse::InvalidUsername @@ -2880,7 +2955,7 @@ impl hyper::server::Service for Service where T: Api + Clone + 'static { )) }} - })) as Box> + }) as Box> }, @@ -2888,9 +2963,6 @@ impl hyper::server::Service for Service where T: Api + Clone + 'static { // LogoutUser - GET /user/logout &hyper::Method::Get if path.matched(paths::ID_USER_LOGOUT) => { - if context.x_span_id.is_none() { - context.x_span_id = Some(headers.get::().map(XSpanId::to_string).unwrap_or_else(|| self::uuid::Uuid::new_v4().to_string())); - } @@ -2898,13 +2970,13 @@ impl hyper::server::Service for Service where T: Api + Clone + 'static { - Box::new(({ + Box::new({ {{ Box::new(api_impl.logout_user(&context) .then(move |result| { let mut response = Response::new(); - context.x_span_id.as_ref().map(|header| response.headers_mut().set(XSpanId(header.clone()))); + response.headers_mut().set(XSpanId((&context as &Has).get().0.to_string())); match result { Ok(rsp) => match rsp { @@ -2929,7 +3001,7 @@ impl hyper::server::Service for Service where T: Api + Clone + 'static { )) }} - })) as Box> + }) as Box> }, @@ -2937,9 +3009,6 @@ impl hyper::server::Service for Service where T: Api + Clone + 'static { // UpdateUser - PUT /user/{username} &hyper::Method::Put if path.matched(paths::ID_USER_USERNAME) => { - if context.x_span_id.is_none() { - context.x_span_id = Some(headers.get::().map(XSpanId::to_string).unwrap_or_else(|| self::uuid::Uuid::new_v4().to_string())); - } // Path parameters @@ -2971,7 +3040,7 @@ impl hyper::server::Service for Service where T: Api + Clone + 'static { Ok(body) => { let mut unused_elements = Vec::new(); - let param_body: Option = if !body.is_empty() { + let param_user: Option = if !body.is_empty() { let deserializer = &mut serde_json::Deserializer::from_slice(&*body); @@ -2979,23 +3048,23 @@ impl hyper::server::Service for Service where T: Api + Clone + 'static { warn!("Ignoring unknown field in body: {}", path); unused_elements.push(path.to_string()); }) { - Ok(param_body) => param_body, - Err(e) => return Box::new(future::ok(Response::new().with_status(StatusCode::BadRequest).with_body(format!("Couldn't parse body parameter body - doesn't match schema: {}", e)))), + Ok(param_user) => param_user, + Err(e) => return Box::new(future::ok(Response::new().with_status(StatusCode::BadRequest).with_body(format!("Couldn't parse body parameter User - doesn't match schema: {}", e)))), } } else { None }; - let param_body = match param_body { - Some(param_body) => param_body, - None => return Box::new(future::ok(Response::new().with_status(StatusCode::BadRequest).with_body("Missing required body parameter body"))), + let param_user = match param_user { + Some(param_user) => param_user, + None => return Box::new(future::ok(Response::new().with_status(StatusCode::BadRequest).with_body("Missing required body parameter User"))), }; - Box::new(api_impl.update_user(param_username, param_body, &context) + Box::new(api_impl.update_user(param_username, param_user, &context) .then(move |result| { let mut response = Response::new(); - context.x_span_id.as_ref().map(|header| response.headers_mut().set(XSpanId(header.clone()))); + response.headers_mut().set(XSpanId((&context as &Has).get().0.to_string())); if !unused_elements.is_empty() { response.headers_mut().set(Warning(format!("Ignoring unknown fields in body: {:?}", unused_elements))); @@ -3032,7 +3101,7 @@ impl hyper::server::Service for Service where T: Api + Clone + 'static { }, - Err(e) => Box::new(future::ok(Response::new().with_status(StatusCode::BadRequest).with_body(format!("Couldn't read body parameter body: {}", e)))), + Err(e) => Box::new(future::ok(Response::new().with_status(StatusCode::BadRequest).with_body(format!("Couldn't read body parameter User: {}", e)))), } }) ) as Box> diff --git a/samples/server/petstore/scalatra/pom.xml b/samples/server/petstore/scalatra/pom.xml index e00877441a34..d3b3420e90ad 100644 --- a/samples/server/petstore/scalatra/pom.xml +++ b/samples/server/petstore/scalatra/pom.xml @@ -1,6 +1,6 @@ 4.0.0 - io.swagger + org.openapitools scalatra-server pom 1.0-SNAPSHOT diff --git a/samples/server/petstore/spring-mvc-j8-async/.openapi-generator/VERSION b/samples/server/petstore/spring-mvc-j8-async/.openapi-generator/VERSION index 1c00c5181548..82602aa4190d 100644 --- a/samples/server/petstore/spring-mvc-j8-async/.openapi-generator/VERSION +++ b/samples/server/petstore/spring-mvc-j8-async/.openapi-generator/VERSION @@ -1 +1 @@ -3.0.2-SNAPSHOT \ No newline at end of file +3.0.3-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/spring-mvc-j8-async/src/main/java/org/openapitools/api/AnotherFakeApi.java b/samples/server/petstore/spring-mvc-j8-async/src/main/java/org/openapitools/api/AnotherFakeApi.java index 3e14a358b1f2..018ec6b31167 100644 --- a/samples/server/petstore/spring-mvc-j8-async/src/main/java/org/openapitools/api/AnotherFakeApi.java +++ b/samples/server/petstore/spring-mvc-j8-async/src/main/java/org/openapitools/api/AnotherFakeApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (3.0.2-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (3.0.3-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/spring-mvc-j8-async/src/main/java/org/openapitools/api/FakeApi.java b/samples/server/petstore/spring-mvc-j8-async/src/main/java/org/openapitools/api/FakeApi.java index e057c1a398e2..fccd5b762e5a 100644 --- a/samples/server/petstore/spring-mvc-j8-async/src/main/java/org/openapitools/api/FakeApi.java +++ b/samples/server/petstore/spring-mvc-j8-async/src/main/java/org/openapitools/api/FakeApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (3.0.2-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (3.0.3-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/spring-mvc-j8-async/src/main/java/org/openapitools/api/FakeClassnameTestApi.java b/samples/server/petstore/spring-mvc-j8-async/src/main/java/org/openapitools/api/FakeClassnameTestApi.java index 9b4ab845fcf2..ffc52ee082a8 100644 --- a/samples/server/petstore/spring-mvc-j8-async/src/main/java/org/openapitools/api/FakeClassnameTestApi.java +++ b/samples/server/petstore/spring-mvc-j8-async/src/main/java/org/openapitools/api/FakeClassnameTestApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (3.0.2-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (3.0.3-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/spring-mvc-j8-async/src/main/java/org/openapitools/api/PetApi.java b/samples/server/petstore/spring-mvc-j8-async/src/main/java/org/openapitools/api/PetApi.java index b08fc1b3c762..e7a52ac550a2 100644 --- a/samples/server/petstore/spring-mvc-j8-async/src/main/java/org/openapitools/api/PetApi.java +++ b/samples/server/petstore/spring-mvc-j8-async/src/main/java/org/openapitools/api/PetApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (3.0.2-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (3.0.3-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/spring-mvc-j8-async/src/main/java/org/openapitools/api/StoreApi.java b/samples/server/petstore/spring-mvc-j8-async/src/main/java/org/openapitools/api/StoreApi.java index 1a5a92ec3c33..b3ca47c6f83f 100644 --- a/samples/server/petstore/spring-mvc-j8-async/src/main/java/org/openapitools/api/StoreApi.java +++ b/samples/server/petstore/spring-mvc-j8-async/src/main/java/org/openapitools/api/StoreApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (3.0.2-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (3.0.3-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/spring-mvc-j8-async/src/main/java/org/openapitools/api/UserApi.java b/samples/server/petstore/spring-mvc-j8-async/src/main/java/org/openapitools/api/UserApi.java index f929898c7b41..08f87ef96585 100644 --- a/samples/server/petstore/spring-mvc-j8-async/src/main/java/org/openapitools/api/UserApi.java +++ b/samples/server/petstore/spring-mvc-j8-async/src/main/java/org/openapitools/api/UserApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (3.0.2-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (3.0.3-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/spring-mvc-j8-localdatetime/.openapi-generator/VERSION b/samples/server/petstore/spring-mvc-j8-localdatetime/.openapi-generator/VERSION index 1c00c5181548..82602aa4190d 100644 --- a/samples/server/petstore/spring-mvc-j8-localdatetime/.openapi-generator/VERSION +++ b/samples/server/petstore/spring-mvc-j8-localdatetime/.openapi-generator/VERSION @@ -1 +1 @@ -3.0.2-SNAPSHOT \ No newline at end of file +3.0.3-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/spring-mvc-j8-localdatetime/src/main/java/org/openapitools/api/AnotherFakeApi.java b/samples/server/petstore/spring-mvc-j8-localdatetime/src/main/java/org/openapitools/api/AnotherFakeApi.java index f1ce8b2275a6..8a2d6e46d733 100644 --- a/samples/server/petstore/spring-mvc-j8-localdatetime/src/main/java/org/openapitools/api/AnotherFakeApi.java +++ b/samples/server/petstore/spring-mvc-j8-localdatetime/src/main/java/org/openapitools/api/AnotherFakeApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (3.0.2-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (3.0.3-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/spring-mvc-j8-localdatetime/src/main/java/org/openapitools/api/FakeApi.java b/samples/server/petstore/spring-mvc-j8-localdatetime/src/main/java/org/openapitools/api/FakeApi.java index 1aa6bb2a4e11..a88e32d6cf40 100644 --- a/samples/server/petstore/spring-mvc-j8-localdatetime/src/main/java/org/openapitools/api/FakeApi.java +++ b/samples/server/petstore/spring-mvc-j8-localdatetime/src/main/java/org/openapitools/api/FakeApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (3.0.2-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (3.0.3-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/spring-mvc-j8-localdatetime/src/main/java/org/openapitools/api/FakeClassnameTestApi.java b/samples/server/petstore/spring-mvc-j8-localdatetime/src/main/java/org/openapitools/api/FakeClassnameTestApi.java index e06b69ec78e5..b98ac904a92d 100644 --- a/samples/server/petstore/spring-mvc-j8-localdatetime/src/main/java/org/openapitools/api/FakeClassnameTestApi.java +++ b/samples/server/petstore/spring-mvc-j8-localdatetime/src/main/java/org/openapitools/api/FakeClassnameTestApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (3.0.2-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (3.0.3-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/spring-mvc-j8-localdatetime/src/main/java/org/openapitools/api/PetApi.java b/samples/server/petstore/spring-mvc-j8-localdatetime/src/main/java/org/openapitools/api/PetApi.java index 8d47a3a9d6d9..7d63bc420b38 100644 --- a/samples/server/petstore/spring-mvc-j8-localdatetime/src/main/java/org/openapitools/api/PetApi.java +++ b/samples/server/petstore/spring-mvc-j8-localdatetime/src/main/java/org/openapitools/api/PetApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (3.0.2-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (3.0.3-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/spring-mvc-j8-localdatetime/src/main/java/org/openapitools/api/StoreApi.java b/samples/server/petstore/spring-mvc-j8-localdatetime/src/main/java/org/openapitools/api/StoreApi.java index f8b24358d21c..7c2302a18de0 100644 --- a/samples/server/petstore/spring-mvc-j8-localdatetime/src/main/java/org/openapitools/api/StoreApi.java +++ b/samples/server/petstore/spring-mvc-j8-localdatetime/src/main/java/org/openapitools/api/StoreApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (3.0.2-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (3.0.3-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/spring-mvc-j8-localdatetime/src/main/java/org/openapitools/api/UserApi.java b/samples/server/petstore/spring-mvc-j8-localdatetime/src/main/java/org/openapitools/api/UserApi.java index 75c1d37122a2..6ea4b10cea83 100644 --- a/samples/server/petstore/spring-mvc-j8-localdatetime/src/main/java/org/openapitools/api/UserApi.java +++ b/samples/server/petstore/spring-mvc-j8-localdatetime/src/main/java/org/openapitools/api/UserApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (3.0.2-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (3.0.3-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/spring-mvc/.openapi-generator/VERSION b/samples/server/petstore/spring-mvc/.openapi-generator/VERSION index 1c00c5181548..82602aa4190d 100644 --- a/samples/server/petstore/spring-mvc/.openapi-generator/VERSION +++ b/samples/server/petstore/spring-mvc/.openapi-generator/VERSION @@ -1 +1 @@ -3.0.2-SNAPSHOT \ No newline at end of file +3.0.3-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/spring-mvc/src/main/java/org/openapitools/api/AnotherFakeApi.java b/samples/server/petstore/spring-mvc/src/main/java/org/openapitools/api/AnotherFakeApi.java index 30cacec0b786..481e407e2600 100644 --- a/samples/server/petstore/spring-mvc/src/main/java/org/openapitools/api/AnotherFakeApi.java +++ b/samples/server/petstore/spring-mvc/src/main/java/org/openapitools/api/AnotherFakeApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (3.0.2-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (3.0.3-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/spring-mvc/src/main/java/org/openapitools/api/FakeApi.java b/samples/server/petstore/spring-mvc/src/main/java/org/openapitools/api/FakeApi.java index 118cbe671908..71dea109bbbc 100644 --- a/samples/server/petstore/spring-mvc/src/main/java/org/openapitools/api/FakeApi.java +++ b/samples/server/petstore/spring-mvc/src/main/java/org/openapitools/api/FakeApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (3.0.2-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (3.0.3-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/spring-mvc/src/main/java/org/openapitools/api/FakeClassnameTestApi.java b/samples/server/petstore/spring-mvc/src/main/java/org/openapitools/api/FakeClassnameTestApi.java index 90c0f1cadd3c..8d5594fd61c5 100644 --- a/samples/server/petstore/spring-mvc/src/main/java/org/openapitools/api/FakeClassnameTestApi.java +++ b/samples/server/petstore/spring-mvc/src/main/java/org/openapitools/api/FakeClassnameTestApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (3.0.2-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (3.0.3-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/spring-mvc/src/main/java/org/openapitools/api/PetApi.java b/samples/server/petstore/spring-mvc/src/main/java/org/openapitools/api/PetApi.java index 616f6337911e..0d6081e3d866 100644 --- a/samples/server/petstore/spring-mvc/src/main/java/org/openapitools/api/PetApi.java +++ b/samples/server/petstore/spring-mvc/src/main/java/org/openapitools/api/PetApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (3.0.2-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (3.0.3-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/spring-mvc/src/main/java/org/openapitools/api/StoreApi.java b/samples/server/petstore/spring-mvc/src/main/java/org/openapitools/api/StoreApi.java index d003a25322ea..937f19ffcebe 100644 --- a/samples/server/petstore/spring-mvc/src/main/java/org/openapitools/api/StoreApi.java +++ b/samples/server/petstore/spring-mvc/src/main/java/org/openapitools/api/StoreApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (3.0.2-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (3.0.3-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/spring-mvc/src/main/java/org/openapitools/api/UserApi.java b/samples/server/petstore/spring-mvc/src/main/java/org/openapitools/api/UserApi.java index 474c0055c99f..971fb6286a26 100644 --- a/samples/server/petstore/spring-mvc/src/main/java/org/openapitools/api/UserApi.java +++ b/samples/server/petstore/spring-mvc/src/main/java/org/openapitools/api/UserApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (3.0.2-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (3.0.3-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-beanvalidation/.openapi-generator/VERSION b/samples/server/petstore/springboot-beanvalidation/.openapi-generator/VERSION index 1c00c5181548..82602aa4190d 100644 --- a/samples/server/petstore/springboot-beanvalidation/.openapi-generator/VERSION +++ b/samples/server/petstore/springboot-beanvalidation/.openapi-generator/VERSION @@ -1 +1 @@ -3.0.2-SNAPSHOT \ No newline at end of file +3.0.3-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/springboot-beanvalidation/README.md b/samples/server/petstore/springboot-beanvalidation/README.md index 44429ae92381..3ea6a97db1b7 100644 --- a/samples/server/petstore/springboot-beanvalidation/README.md +++ b/samples/server/petstore/springboot-beanvalidation/README.md @@ -10,7 +10,7 @@ This is an example of building a OpenAPI-enabled server in Java using the Spring The underlying library integrating OpenAPI to SpringBoot is [springfox](https://github.com/springfox/springfox) -Start your server as an simple java application +Start your server as a simple java application You can view the api documentation in swagger-ui by pointing to http://localhost:80/ diff --git a/samples/server/petstore/springboot-beanvalidation/src/main/java/org/openapitools/api/AnotherFakeApi.java b/samples/server/petstore/springboot-beanvalidation/src/main/java/org/openapitools/api/AnotherFakeApi.java index 30cacec0b786..481e407e2600 100644 --- a/samples/server/petstore/springboot-beanvalidation/src/main/java/org/openapitools/api/AnotherFakeApi.java +++ b/samples/server/petstore/springboot-beanvalidation/src/main/java/org/openapitools/api/AnotherFakeApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (3.0.2-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (3.0.3-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-beanvalidation/src/main/java/org/openapitools/api/FakeApi.java b/samples/server/petstore/springboot-beanvalidation/src/main/java/org/openapitools/api/FakeApi.java index 118cbe671908..71dea109bbbc 100644 --- a/samples/server/petstore/springboot-beanvalidation/src/main/java/org/openapitools/api/FakeApi.java +++ b/samples/server/petstore/springboot-beanvalidation/src/main/java/org/openapitools/api/FakeApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (3.0.2-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (3.0.3-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-beanvalidation/src/main/java/org/openapitools/api/FakeClassnameTestApi.java b/samples/server/petstore/springboot-beanvalidation/src/main/java/org/openapitools/api/FakeClassnameTestApi.java index 90c0f1cadd3c..8d5594fd61c5 100644 --- a/samples/server/petstore/springboot-beanvalidation/src/main/java/org/openapitools/api/FakeClassnameTestApi.java +++ b/samples/server/petstore/springboot-beanvalidation/src/main/java/org/openapitools/api/FakeClassnameTestApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (3.0.2-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (3.0.3-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-beanvalidation/src/main/java/org/openapitools/api/PetApi.java b/samples/server/petstore/springboot-beanvalidation/src/main/java/org/openapitools/api/PetApi.java index 616f6337911e..0d6081e3d866 100644 --- a/samples/server/petstore/springboot-beanvalidation/src/main/java/org/openapitools/api/PetApi.java +++ b/samples/server/petstore/springboot-beanvalidation/src/main/java/org/openapitools/api/PetApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (3.0.2-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (3.0.3-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-beanvalidation/src/main/java/org/openapitools/api/StoreApi.java b/samples/server/petstore/springboot-beanvalidation/src/main/java/org/openapitools/api/StoreApi.java index d003a25322ea..937f19ffcebe 100644 --- a/samples/server/petstore/springboot-beanvalidation/src/main/java/org/openapitools/api/StoreApi.java +++ b/samples/server/petstore/springboot-beanvalidation/src/main/java/org/openapitools/api/StoreApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (3.0.2-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (3.0.3-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-beanvalidation/src/main/java/org/openapitools/api/UserApi.java b/samples/server/petstore/springboot-beanvalidation/src/main/java/org/openapitools/api/UserApi.java index 474c0055c99f..971fb6286a26 100644 --- a/samples/server/petstore/springboot-beanvalidation/src/main/java/org/openapitools/api/UserApi.java +++ b/samples/server/petstore/springboot-beanvalidation/src/main/java/org/openapitools/api/UserApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (3.0.2-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (3.0.3-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-delegate-j8/.openapi-generator/VERSION b/samples/server/petstore/springboot-delegate-j8/.openapi-generator/VERSION index 1c00c5181548..82602aa4190d 100644 --- a/samples/server/petstore/springboot-delegate-j8/.openapi-generator/VERSION +++ b/samples/server/petstore/springboot-delegate-j8/.openapi-generator/VERSION @@ -1 +1 @@ -3.0.2-SNAPSHOT \ No newline at end of file +3.0.3-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/springboot-delegate-j8/README.md b/samples/server/petstore/springboot-delegate-j8/README.md index 44429ae92381..3ea6a97db1b7 100644 --- a/samples/server/petstore/springboot-delegate-j8/README.md +++ b/samples/server/petstore/springboot-delegate-j8/README.md @@ -10,7 +10,7 @@ This is an example of building a OpenAPI-enabled server in Java using the Spring The underlying library integrating OpenAPI to SpringBoot is [springfox](https://github.com/springfox/springfox) -Start your server as an simple java application +Start your server as a simple java application You can view the api documentation in swagger-ui by pointing to http://localhost:80/ diff --git a/samples/server/petstore/springboot-delegate-j8/src/main/java/org/openapitools/api/AnotherFakeApi.java b/samples/server/petstore/springboot-delegate-j8/src/main/java/org/openapitools/api/AnotherFakeApi.java index 3881b4f6be87..b7c97b058e23 100644 --- a/samples/server/petstore/springboot-delegate-j8/src/main/java/org/openapitools/api/AnotherFakeApi.java +++ b/samples/server/petstore/springboot-delegate-j8/src/main/java/org/openapitools/api/AnotherFakeApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (3.0.2-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (3.0.3-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-delegate-j8/src/main/java/org/openapitools/api/FakeApi.java b/samples/server/petstore/springboot-delegate-j8/src/main/java/org/openapitools/api/FakeApi.java index e99c73bf7766..58d374983119 100644 --- a/samples/server/petstore/springboot-delegate-j8/src/main/java/org/openapitools/api/FakeApi.java +++ b/samples/server/petstore/springboot-delegate-j8/src/main/java/org/openapitools/api/FakeApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (3.0.2-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (3.0.3-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-delegate-j8/src/main/java/org/openapitools/api/FakeClassnameTestApi.java b/samples/server/petstore/springboot-delegate-j8/src/main/java/org/openapitools/api/FakeClassnameTestApi.java index f1bdd52568ac..e29cbe9af76b 100644 --- a/samples/server/petstore/springboot-delegate-j8/src/main/java/org/openapitools/api/FakeClassnameTestApi.java +++ b/samples/server/petstore/springboot-delegate-j8/src/main/java/org/openapitools/api/FakeClassnameTestApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (3.0.2-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (3.0.3-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-delegate-j8/src/main/java/org/openapitools/api/PetApi.java b/samples/server/petstore/springboot-delegate-j8/src/main/java/org/openapitools/api/PetApi.java index 67e539fb27c5..4e7c03ba98aa 100644 --- a/samples/server/petstore/springboot-delegate-j8/src/main/java/org/openapitools/api/PetApi.java +++ b/samples/server/petstore/springboot-delegate-j8/src/main/java/org/openapitools/api/PetApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (3.0.2-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (3.0.3-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-delegate-j8/src/main/java/org/openapitools/api/StoreApi.java b/samples/server/petstore/springboot-delegate-j8/src/main/java/org/openapitools/api/StoreApi.java index c72e3a6e377c..47828f511380 100644 --- a/samples/server/petstore/springboot-delegate-j8/src/main/java/org/openapitools/api/StoreApi.java +++ b/samples/server/petstore/springboot-delegate-j8/src/main/java/org/openapitools/api/StoreApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (3.0.2-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (3.0.3-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-delegate-j8/src/main/java/org/openapitools/api/UserApi.java b/samples/server/petstore/springboot-delegate-j8/src/main/java/org/openapitools/api/UserApi.java index ae94136dad43..d9a9950856b4 100644 --- a/samples/server/petstore/springboot-delegate-j8/src/main/java/org/openapitools/api/UserApi.java +++ b/samples/server/petstore/springboot-delegate-j8/src/main/java/org/openapitools/api/UserApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (3.0.2-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (3.0.3-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-delegate/.openapi-generator/VERSION b/samples/server/petstore/springboot-delegate/.openapi-generator/VERSION index 1c00c5181548..82602aa4190d 100644 --- a/samples/server/petstore/springboot-delegate/.openapi-generator/VERSION +++ b/samples/server/petstore/springboot-delegate/.openapi-generator/VERSION @@ -1 +1 @@ -3.0.2-SNAPSHOT \ No newline at end of file +3.0.3-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/springboot-delegate/README.md b/samples/server/petstore/springboot-delegate/README.md index 44429ae92381..3ea6a97db1b7 100644 --- a/samples/server/petstore/springboot-delegate/README.md +++ b/samples/server/petstore/springboot-delegate/README.md @@ -10,7 +10,7 @@ This is an example of building a OpenAPI-enabled server in Java using the Spring The underlying library integrating OpenAPI to SpringBoot is [springfox](https://github.com/springfox/springfox) -Start your server as an simple java application +Start your server as a simple java application You can view the api documentation in swagger-ui by pointing to http://localhost:80/ diff --git a/samples/server/petstore/springboot-delegate/src/main/java/org/openapitools/api/AnotherFakeApi.java b/samples/server/petstore/springboot-delegate/src/main/java/org/openapitools/api/AnotherFakeApi.java index 30cacec0b786..481e407e2600 100644 --- a/samples/server/petstore/springboot-delegate/src/main/java/org/openapitools/api/AnotherFakeApi.java +++ b/samples/server/petstore/springboot-delegate/src/main/java/org/openapitools/api/AnotherFakeApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (3.0.2-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (3.0.3-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-delegate/src/main/java/org/openapitools/api/FakeApi.java b/samples/server/petstore/springboot-delegate/src/main/java/org/openapitools/api/FakeApi.java index 118cbe671908..71dea109bbbc 100644 --- a/samples/server/petstore/springboot-delegate/src/main/java/org/openapitools/api/FakeApi.java +++ b/samples/server/petstore/springboot-delegate/src/main/java/org/openapitools/api/FakeApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (3.0.2-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (3.0.3-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-delegate/src/main/java/org/openapitools/api/FakeClassnameTestApi.java b/samples/server/petstore/springboot-delegate/src/main/java/org/openapitools/api/FakeClassnameTestApi.java index 90c0f1cadd3c..8d5594fd61c5 100644 --- a/samples/server/petstore/springboot-delegate/src/main/java/org/openapitools/api/FakeClassnameTestApi.java +++ b/samples/server/petstore/springboot-delegate/src/main/java/org/openapitools/api/FakeClassnameTestApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (3.0.2-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (3.0.3-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-delegate/src/main/java/org/openapitools/api/PetApi.java b/samples/server/petstore/springboot-delegate/src/main/java/org/openapitools/api/PetApi.java index 616f6337911e..0d6081e3d866 100644 --- a/samples/server/petstore/springboot-delegate/src/main/java/org/openapitools/api/PetApi.java +++ b/samples/server/petstore/springboot-delegate/src/main/java/org/openapitools/api/PetApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (3.0.2-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (3.0.3-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-delegate/src/main/java/org/openapitools/api/StoreApi.java b/samples/server/petstore/springboot-delegate/src/main/java/org/openapitools/api/StoreApi.java index d003a25322ea..937f19ffcebe 100644 --- a/samples/server/petstore/springboot-delegate/src/main/java/org/openapitools/api/StoreApi.java +++ b/samples/server/petstore/springboot-delegate/src/main/java/org/openapitools/api/StoreApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (3.0.2-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (3.0.3-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-delegate/src/main/java/org/openapitools/api/UserApi.java b/samples/server/petstore/springboot-delegate/src/main/java/org/openapitools/api/UserApi.java index 474c0055c99f..971fb6286a26 100644 --- a/samples/server/petstore/springboot-delegate/src/main/java/org/openapitools/api/UserApi.java +++ b/samples/server/petstore/springboot-delegate/src/main/java/org/openapitools/api/UserApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (3.0.2-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (3.0.3-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-implicitHeaders/.openapi-generator/VERSION b/samples/server/petstore/springboot-implicitHeaders/.openapi-generator/VERSION index 1c00c5181548..82602aa4190d 100644 --- a/samples/server/petstore/springboot-implicitHeaders/.openapi-generator/VERSION +++ b/samples/server/petstore/springboot-implicitHeaders/.openapi-generator/VERSION @@ -1 +1 @@ -3.0.2-SNAPSHOT \ No newline at end of file +3.0.3-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/springboot-implicitHeaders/README.md b/samples/server/petstore/springboot-implicitHeaders/README.md index 44429ae92381..3ea6a97db1b7 100644 --- a/samples/server/petstore/springboot-implicitHeaders/README.md +++ b/samples/server/petstore/springboot-implicitHeaders/README.md @@ -10,7 +10,7 @@ This is an example of building a OpenAPI-enabled server in Java using the Spring The underlying library integrating OpenAPI to SpringBoot is [springfox](https://github.com/springfox/springfox) -Start your server as an simple java application +Start your server as a simple java application You can view the api documentation in swagger-ui by pointing to http://localhost:80/ diff --git a/samples/server/petstore/springboot-implicitHeaders/src/main/java/org/openapitools/api/AnotherFakeApi.java b/samples/server/petstore/springboot-implicitHeaders/src/main/java/org/openapitools/api/AnotherFakeApi.java index 3ed7012d6fb1..37de57e42628 100644 --- a/samples/server/petstore/springboot-implicitHeaders/src/main/java/org/openapitools/api/AnotherFakeApi.java +++ b/samples/server/petstore/springboot-implicitHeaders/src/main/java/org/openapitools/api/AnotherFakeApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (3.0.2-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (3.0.3-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-implicitHeaders/src/main/java/org/openapitools/api/FakeApi.java b/samples/server/petstore/springboot-implicitHeaders/src/main/java/org/openapitools/api/FakeApi.java index 315b3ba8bb64..adb3b874c039 100644 --- a/samples/server/petstore/springboot-implicitHeaders/src/main/java/org/openapitools/api/FakeApi.java +++ b/samples/server/petstore/springboot-implicitHeaders/src/main/java/org/openapitools/api/FakeApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (3.0.2-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (3.0.3-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-implicitHeaders/src/main/java/org/openapitools/api/FakeClassnameTestApi.java b/samples/server/petstore/springboot-implicitHeaders/src/main/java/org/openapitools/api/FakeClassnameTestApi.java index d99f2a223408..03ee8b6e7bd4 100644 --- a/samples/server/petstore/springboot-implicitHeaders/src/main/java/org/openapitools/api/FakeClassnameTestApi.java +++ b/samples/server/petstore/springboot-implicitHeaders/src/main/java/org/openapitools/api/FakeClassnameTestApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (3.0.2-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (3.0.3-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-implicitHeaders/src/main/java/org/openapitools/api/PetApi.java b/samples/server/petstore/springboot-implicitHeaders/src/main/java/org/openapitools/api/PetApi.java index d7d25b67e243..0c77c3af1001 100644 --- a/samples/server/petstore/springboot-implicitHeaders/src/main/java/org/openapitools/api/PetApi.java +++ b/samples/server/petstore/springboot-implicitHeaders/src/main/java/org/openapitools/api/PetApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (3.0.2-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (3.0.3-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-implicitHeaders/src/main/java/org/openapitools/api/StoreApi.java b/samples/server/petstore/springboot-implicitHeaders/src/main/java/org/openapitools/api/StoreApi.java index 4a904b2e1e89..b4f08f7c6006 100644 --- a/samples/server/petstore/springboot-implicitHeaders/src/main/java/org/openapitools/api/StoreApi.java +++ b/samples/server/petstore/springboot-implicitHeaders/src/main/java/org/openapitools/api/StoreApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (3.0.2-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (3.0.3-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-implicitHeaders/src/main/java/org/openapitools/api/UserApi.java b/samples/server/petstore/springboot-implicitHeaders/src/main/java/org/openapitools/api/UserApi.java index 7e377ffbe7a7..38c6fe1250f2 100644 --- a/samples/server/petstore/springboot-implicitHeaders/src/main/java/org/openapitools/api/UserApi.java +++ b/samples/server/petstore/springboot-implicitHeaders/src/main/java/org/openapitools/api/UserApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (3.0.2-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (3.0.3-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-reactive/.openapi-generator/VERSION b/samples/server/petstore/springboot-reactive/.openapi-generator/VERSION index 1c00c5181548..82602aa4190d 100644 --- a/samples/server/petstore/springboot-reactive/.openapi-generator/VERSION +++ b/samples/server/petstore/springboot-reactive/.openapi-generator/VERSION @@ -1 +1 @@ -3.0.2-SNAPSHOT \ No newline at end of file +3.0.3-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/springboot-reactive/README.md b/samples/server/petstore/springboot-reactive/README.md index c24c6206ab1a..04666708ae53 100644 --- a/samples/server/petstore/springboot-reactive/README.md +++ b/samples/server/petstore/springboot-reactive/README.md @@ -8,6 +8,6 @@ This server was generated by the [OpenAPI Generator](https://openapi-generator.t By using the [OpenAPI-Spec](https://openapis.org), you can easily generate a server stub. This is an example of building a OpenAPI-enabled server in Java using the SpringBoot framework. -Start your server as an simple java application +Start your server as a simple java application Change default port value in application.properties \ No newline at end of file diff --git a/samples/server/petstore/springboot-reactive/src/main/java/org/openapitools/api/AnotherFakeApi.java b/samples/server/petstore/springboot-reactive/src/main/java/org/openapitools/api/AnotherFakeApi.java index 887f2af5d6fa..65f258ae85bf 100644 --- a/samples/server/petstore/springboot-reactive/src/main/java/org/openapitools/api/AnotherFakeApi.java +++ b/samples/server/petstore/springboot-reactive/src/main/java/org/openapitools/api/AnotherFakeApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (3.0.2-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (3.0.3-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-reactive/src/main/java/org/openapitools/api/FakeApi.java b/samples/server/petstore/springboot-reactive/src/main/java/org/openapitools/api/FakeApi.java index 32aca62a51e2..3aae8bea82a8 100644 --- a/samples/server/petstore/springboot-reactive/src/main/java/org/openapitools/api/FakeApi.java +++ b/samples/server/petstore/springboot-reactive/src/main/java/org/openapitools/api/FakeApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (3.0.2-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (3.0.3-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-reactive/src/main/java/org/openapitools/api/FakeClassnameTestApi.java b/samples/server/petstore/springboot-reactive/src/main/java/org/openapitools/api/FakeClassnameTestApi.java index 6fddcca4a3b8..b50b7f1b88d0 100644 --- a/samples/server/petstore/springboot-reactive/src/main/java/org/openapitools/api/FakeClassnameTestApi.java +++ b/samples/server/petstore/springboot-reactive/src/main/java/org/openapitools/api/FakeClassnameTestApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (3.0.2-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (3.0.3-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-reactive/src/main/java/org/openapitools/api/PetApi.java b/samples/server/petstore/springboot-reactive/src/main/java/org/openapitools/api/PetApi.java index c4ecd1b2c108..2c799a542e98 100644 --- a/samples/server/petstore/springboot-reactive/src/main/java/org/openapitools/api/PetApi.java +++ b/samples/server/petstore/springboot-reactive/src/main/java/org/openapitools/api/PetApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (3.0.2-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (3.0.3-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-reactive/src/main/java/org/openapitools/api/StoreApi.java b/samples/server/petstore/springboot-reactive/src/main/java/org/openapitools/api/StoreApi.java index d0f237ff60b3..dd9dabe662a1 100644 --- a/samples/server/petstore/springboot-reactive/src/main/java/org/openapitools/api/StoreApi.java +++ b/samples/server/petstore/springboot-reactive/src/main/java/org/openapitools/api/StoreApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (3.0.2-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (3.0.3-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-reactive/src/main/java/org/openapitools/api/UserApi.java b/samples/server/petstore/springboot-reactive/src/main/java/org/openapitools/api/UserApi.java index e9437f61096e..a269ee888cfb 100644 --- a/samples/server/petstore/springboot-reactive/src/main/java/org/openapitools/api/UserApi.java +++ b/samples/server/petstore/springboot-reactive/src/main/java/org/openapitools/api/UserApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (3.0.2-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (3.0.3-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-useoptional/.openapi-generator/VERSION b/samples/server/petstore/springboot-useoptional/.openapi-generator/VERSION index 1c00c5181548..82602aa4190d 100644 --- a/samples/server/petstore/springboot-useoptional/.openapi-generator/VERSION +++ b/samples/server/petstore/springboot-useoptional/.openapi-generator/VERSION @@ -1 +1 @@ -3.0.2-SNAPSHOT \ No newline at end of file +3.0.3-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/springboot-useoptional/README.md b/samples/server/petstore/springboot-useoptional/README.md index 44429ae92381..3ea6a97db1b7 100644 --- a/samples/server/petstore/springboot-useoptional/README.md +++ b/samples/server/petstore/springboot-useoptional/README.md @@ -10,7 +10,7 @@ This is an example of building a OpenAPI-enabled server in Java using the Spring The underlying library integrating OpenAPI to SpringBoot is [springfox](https://github.com/springfox/springfox) -Start your server as an simple java application +Start your server as a simple java application You can view the api documentation in swagger-ui by pointing to http://localhost:80/ diff --git a/samples/server/petstore/springboot-useoptional/src/main/java/org/openapitools/api/AnotherFakeApi.java b/samples/server/petstore/springboot-useoptional/src/main/java/org/openapitools/api/AnotherFakeApi.java index f1ce8b2275a6..8a2d6e46d733 100644 --- a/samples/server/petstore/springboot-useoptional/src/main/java/org/openapitools/api/AnotherFakeApi.java +++ b/samples/server/petstore/springboot-useoptional/src/main/java/org/openapitools/api/AnotherFakeApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (3.0.2-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (3.0.3-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-useoptional/src/main/java/org/openapitools/api/FakeApi.java b/samples/server/petstore/springboot-useoptional/src/main/java/org/openapitools/api/FakeApi.java index b057314b0d12..efe8b6a49fdd 100644 --- a/samples/server/petstore/springboot-useoptional/src/main/java/org/openapitools/api/FakeApi.java +++ b/samples/server/petstore/springboot-useoptional/src/main/java/org/openapitools/api/FakeApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (3.0.2-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (3.0.3-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-useoptional/src/main/java/org/openapitools/api/FakeClassnameTestApi.java b/samples/server/petstore/springboot-useoptional/src/main/java/org/openapitools/api/FakeClassnameTestApi.java index e06b69ec78e5..b98ac904a92d 100644 --- a/samples/server/petstore/springboot-useoptional/src/main/java/org/openapitools/api/FakeClassnameTestApi.java +++ b/samples/server/petstore/springboot-useoptional/src/main/java/org/openapitools/api/FakeClassnameTestApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (3.0.2-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (3.0.3-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-useoptional/src/main/java/org/openapitools/api/PetApi.java b/samples/server/petstore/springboot-useoptional/src/main/java/org/openapitools/api/PetApi.java index 79346fe033e9..b9a6469ab1e5 100644 --- a/samples/server/petstore/springboot-useoptional/src/main/java/org/openapitools/api/PetApi.java +++ b/samples/server/petstore/springboot-useoptional/src/main/java/org/openapitools/api/PetApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (3.0.2-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (3.0.3-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-useoptional/src/main/java/org/openapitools/api/StoreApi.java b/samples/server/petstore/springboot-useoptional/src/main/java/org/openapitools/api/StoreApi.java index f8b24358d21c..7c2302a18de0 100644 --- a/samples/server/petstore/springboot-useoptional/src/main/java/org/openapitools/api/StoreApi.java +++ b/samples/server/petstore/springboot-useoptional/src/main/java/org/openapitools/api/StoreApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (3.0.2-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (3.0.3-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot-useoptional/src/main/java/org/openapitools/api/UserApi.java b/samples/server/petstore/springboot-useoptional/src/main/java/org/openapitools/api/UserApi.java index 75c1d37122a2..6ea4b10cea83 100644 --- a/samples/server/petstore/springboot-useoptional/src/main/java/org/openapitools/api/UserApi.java +++ b/samples/server/petstore/springboot-useoptional/src/main/java/org/openapitools/api/UserApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (3.0.2-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (3.0.3-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot/.openapi-generator/VERSION b/samples/server/petstore/springboot/.openapi-generator/VERSION index 1c00c5181548..82602aa4190d 100644 --- a/samples/server/petstore/springboot/.openapi-generator/VERSION +++ b/samples/server/petstore/springboot/.openapi-generator/VERSION @@ -1 +1 @@ -3.0.2-SNAPSHOT \ No newline at end of file +3.0.3-SNAPSHOT \ No newline at end of file diff --git a/samples/server/petstore/springboot/README.md b/samples/server/petstore/springboot/README.md index 44429ae92381..3ea6a97db1b7 100644 --- a/samples/server/petstore/springboot/README.md +++ b/samples/server/petstore/springboot/README.md @@ -10,7 +10,7 @@ This is an example of building a OpenAPI-enabled server in Java using the Spring The underlying library integrating OpenAPI to SpringBoot is [springfox](https://github.com/springfox/springfox) -Start your server as an simple java application +Start your server as a simple java application You can view the api documentation in swagger-ui by pointing to http://localhost:80/ diff --git a/samples/server/petstore/springboot/src/main/java/org/openapitools/api/AnotherFakeApi.java b/samples/server/petstore/springboot/src/main/java/org/openapitools/api/AnotherFakeApi.java index f1ce8b2275a6..8a2d6e46d733 100644 --- a/samples/server/petstore/springboot/src/main/java/org/openapitools/api/AnotherFakeApi.java +++ b/samples/server/petstore/springboot/src/main/java/org/openapitools/api/AnotherFakeApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (3.0.2-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (3.0.3-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot/src/main/java/org/openapitools/api/FakeApi.java b/samples/server/petstore/springboot/src/main/java/org/openapitools/api/FakeApi.java index 38e7113611b6..f184edac3871 100644 --- a/samples/server/petstore/springboot/src/main/java/org/openapitools/api/FakeApi.java +++ b/samples/server/petstore/springboot/src/main/java/org/openapitools/api/FakeApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (3.0.2-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (3.0.3-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot/src/main/java/org/openapitools/api/FakeClassnameTestApi.java b/samples/server/petstore/springboot/src/main/java/org/openapitools/api/FakeClassnameTestApi.java index e06b69ec78e5..b98ac904a92d 100644 --- a/samples/server/petstore/springboot/src/main/java/org/openapitools/api/FakeClassnameTestApi.java +++ b/samples/server/petstore/springboot/src/main/java/org/openapitools/api/FakeClassnameTestApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (3.0.2-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (3.0.3-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot/src/main/java/org/openapitools/api/PetApi.java b/samples/server/petstore/springboot/src/main/java/org/openapitools/api/PetApi.java index 8d47a3a9d6d9..7d63bc420b38 100644 --- a/samples/server/petstore/springboot/src/main/java/org/openapitools/api/PetApi.java +++ b/samples/server/petstore/springboot/src/main/java/org/openapitools/api/PetApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (3.0.2-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (3.0.3-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot/src/main/java/org/openapitools/api/StoreApi.java b/samples/server/petstore/springboot/src/main/java/org/openapitools/api/StoreApi.java index f8b24358d21c..7c2302a18de0 100644 --- a/samples/server/petstore/springboot/src/main/java/org/openapitools/api/StoreApi.java +++ b/samples/server/petstore/springboot/src/main/java/org/openapitools/api/StoreApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (3.0.2-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (3.0.3-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/samples/server/petstore/springboot/src/main/java/org/openapitools/api/UserApi.java b/samples/server/petstore/springboot/src/main/java/org/openapitools/api/UserApi.java index 75c1d37122a2..6ea4b10cea83 100644 --- a/samples/server/petstore/springboot/src/main/java/org/openapitools/api/UserApi.java +++ b/samples/server/petstore/springboot/src/main/java/org/openapitools/api/UserApi.java @@ -1,5 +1,5 @@ /** - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (3.0.2-SNAPSHOT). + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (3.0.3-SNAPSHOT). * https://openapi-generator.tech * Do not edit the class manually. */ diff --git a/shippable.yml b/shippable.yml index 56aa70e09c68..937c34b9ff3e 100644 --- a/shippable.yml +++ b/shippable.yml @@ -10,10 +10,10 @@ build: - $HOME/.stack - $SHIPPABLE_REPO_DIR/samples/client/petstore/elixir/deps ci: - - mvn --quiet clean install -f CI/pom.xml.shippable + - mvn --quiet clean install # ensure all modifications created by 'mature' generators are in the git repo - - ./bin/ensure-up-to-date - # prepare enviroment for tests + - ./bin/utils/ensure-up-to-date + # prepare environment for tests - sudo apt-get update -qq # install stack - curl -sSL https://get.haskellstack.org/ | sh @@ -31,6 +31,6 @@ build: - elixir --version - mix --version # test samples defined in pom.xml - - mvn --quiet verify -P samples -f CI/pom.xml.shippable + - mvn --quiet verify -P samples.shippable # generate all petstore samples (client, servers, doc) - ./bin/run-all-petstore