diff --git a/CI/samples.ci/client/petstore/R/pom.xml b/CI/samples.ci/client/petstore/R/pom.xml
new file mode 100644
index 000000000000..949b3cd6bc4c
--- /dev/null
+++ b/CI/samples.ci/client/petstore/R/pom.xml
@@ -0,0 +1,46 @@
+
+ 4.0.0
+ org.openapitools
+ RPetstoreClientTests
+ pom
+ 1.0-SNAPSHOT
+ R OpenAPI Petstore Client
+
+
+
+ maven-dependency-plugin
+
+
+ package
+
+ copy-dependencies
+
+
+ ${project.build.directory}
+
+
+
+
+
+ org.codehaus.mojo
+ exec-maven-plugin
+ 1.2.1
+
+
+ nose-test
+ integration-test
+
+ exec
+
+
+ bash
+
+ test_petstore.bash
+
+
+
+
+
+
+
+
diff --git a/CI/samples.ci/client/petstore/R/test_petstore.bash b/CI/samples.ci/client/petstore/R/test_petstore.bash
new file mode 100644
index 000000000000..ad0b3a6aa19c
--- /dev/null
+++ b/CI/samples.ci/client/petstore/R/test_petstore.bash
@@ -0,0 +1,22 @@
+#!/bin/bash
+
+set -e
+
+REPO=http://cran.revolutionanalytics.com
+
+export R_LIBS_USER=$HOME/R
+
+echo "R lib directory: $R_LIBS_USER"
+
+mkdir $R_LIBS_USER || true
+
+Rscript -e "install.packages('jsonlite', repos='$REPO', lib='$R_LIBS_USER')"
+Rscript -e "install.packages('httr', repos='$REPO', lib='$R_LIBS_USER')"
+Rscript -e "install.packages('testthat', repos='$REPO', lib='$R_LIBS_USER')"
+Rscript -e "install.packages('R6', repos='$REPO', lib='$R_LIBS_USER')"
+Rscript -e "install.packages('caTools', repos='$REPO', lib='$R_LIBS_USER')"
+Rscript -e "install.packages('rlang', repos='$REPO', lib='$R_LIBS_USER')"
+
+R CMD build .
+R CMD check *tar.gz --no-manual
+R CMD INSTALL *tar.gz
diff --git a/CI/samples.ci/client/petstore/R/testthat.R b/CI/samples.ci/client/petstore/R/testthat.R
new file mode 100644
index 000000000000..d67bd9cf2380
--- /dev/null
+++ b/CI/samples.ci/client/petstore/R/testthat.R
@@ -0,0 +1,4 @@
+library(testthat)
+library(petstore)
+
+test_check("petstore")
diff --git a/CI/samples.ci/client/petstore/bash/pom.xml b/CI/samples.ci/client/petstore/bash/pom.xml
new file mode 100644
index 000000000000..fc8237d186c1
--- /dev/null
+++ b/CI/samples.ci/client/petstore/bash/pom.xml
@@ -0,0 +1,47 @@
+
+ 4.0.0
+ io.swagger
+ BashPetstoreClientTests
+ pom
+ 1.0-SNAPSHOT
+ Bash Swagger Petstore Client
+
+
+
+ maven-dependency-plugin
+
+
+ package
+
+ copy-dependencies
+
+
+ ${project.build.directory}
+
+
+
+
+
+ org.codehaus.mojo
+ exec-maven-plugin
+ 1.2.1
+
+
+ bats-test
+ integration-test
+
+ exec
+
+
+ bats
+
+ --tap
+ tests/petstore_test.sh
+
+
+
+
+
+
+
+
diff --git a/CI/samples.ci/client/petstore/bash/tests/petstore_test.sh b/CI/samples.ci/client/petstore/bash/tests/petstore_test.sh
new file mode 100644
index 000000000000..38c9456af86f
--- /dev/null
+++ b/CI/samples.ci/client/petstore/bash/tests/petstore_test.sh
@@ -0,0 +1,121 @@
+#!/usr/bin/env bats
+
+
+export PETSTORE_CLI="petstore-cli"
+
+export PETSTORE_HOST="http://petstore.swagger.io"
+
+#
+# Bash syntax check
+#
+@test "Generated script should pass Bash syntax check" {
+ result="$(bash -n $PETSTORE_CLI)"
+ [ "$result" -eq 0 ]
+}
+
+#
+# Tests for parameter handling and validation
+#
+@test "addPet without host" {
+ unset PETSTORE_HOST
+ run bash $PETSTORE_CLI -ac xml -ct json \
+ addPet id:=123321 name==lucky status==available
+ [[ "$output" =~ "Error: No hostname provided!!!" ]]
+}
+
+@test "addPet without content type" {
+ run bash $PETSTORE_CLI -ac xml --host $PETSTORE_HOST \
+ addPet id:=123321 name==lucky status==available
+ [[ "$output" =~ "Error: Request's content-type not specified!" ]]
+}
+
+@test "addPet abbreviated content type" {
+ run bash $PETSTORE_CLI -ct json -ac xml --host $PETSTORE_HOST \
+ addPet id:=123321 name==lucky status==available --dry-run
+ [[ "$output" =~ "Content-type: application/json" ]]
+}
+
+@test "addPet unabbreviated content type" {
+ run bash $PETSTORE_CLI -ct userdefined/custom -ac xml --host $PETSTORE_HOST \
+ addPet id:=123321 name==lucky status==available --dry-run
+ [[ "$output" =~ "Content-type: userdefined/custom" ]]
+}
+
+@test "fakeOperation invalid operation name" {
+ run bash \
+ -c "bash $PETSTORE_CLI --host http://petstore.swagger.io fakeOperation"
+ [[ "$output" =~ "Error: No operation specified!" ]]
+}
+
+@test "findPetsByStatus basic auth" {
+ run bash \
+ -c "bash $PETSTORE_CLI -u alice:secret --host http://petstore.swagger.io findPetsByStatus status=s1 --dry-run"
+ [[ "$output" =~ "-u alice:secret" ]]
+}
+
+@test "findPetsByStatus api key" {
+ run bash \
+ -c "bash $PETSTORE_CLI --host http://petstore.swagger.io findPetsByStatus status=s1 api_key:1234 --dry-run"
+ [[ "$output" =~ "-H \"api_key: 1234\"" ]]
+}
+
+@test "findPetsByStatus empty api key" {
+ run bash \
+ -c "bash $PETSTORE_CLI --host http://petstore.swagger.io findPetsByStatus status=s1 --dry-run"
+ [[ ! "$output" =~ "-H \"api_key:" ]]
+}
+
+@test "findPetsByStatus has default cURL parameters" {
+ run bash \
+ -c "bash $PETSTORE_CLI --host http://petstore.swagger.io findPetsByStatus status=s1 --dry-run"
+ [[ ! "$output" =~ " -Ss " ]]
+}
+
+@test "findPetsByStatus too few values" {
+ run bash \
+ -c "bash $PETSTORE_CLI --host http://petstore.swagger.io findPetsByStatus"
+ [[ "$output" =~ "Error: Too few values" ]]
+}
+
+@test "findPetsByTags too few values" {
+ run bash \
+ -c "bash $PETSTORE_CLI --host http://petstore.swagger.io findPetsByTags"
+ [[ "$output" =~ "Error: Too few values" ]]
+}
+
+@test "findPetsByStatus status with space" {
+ run bash \
+ -c "bash $PETSTORE_CLI --host http://petstore.swagger.io findPetsByStatus \
+ status=available status=\"gone test\" --dry-run"
+ [[ "$output" =~ "status=available,gone%20test" ]]
+}
+
+@test "findPetsByStatus collection csv" {
+ run bash \
+ -c "bash $PETSTORE_CLI --host http://petstore.swagger.io findPetsByTags \
+ tags=TAG1 tags=TAG2 --dry-run"
+ [[ "$output" =~ "tags=TAG1,TAG2" ]]
+}
+
+@test "findPetsByStatus collection csv with space and question mark" {
+ run bash \
+ -c "bash $PETSTORE_CLI --host http://petstore.swagger.io findPetsByTags \
+ tags=TAG1 tags=\"TAG2 TEST\" tags=TAG3?TEST --dry-run"
+ [[ "$output" =~ "tags=TAG1,TAG2%20TEST,TAG3%3FTEST" ]]
+}
+
+#
+# Operations calling the service and checking result
+#
+@test "addPet from parameters" {
+ run bash $PETSTORE_CLI -ct json -ac xml \
+ addPet id:=123321 name==lucky status==available
+ [[ "$output" =~ "123321" ]]
+}
+
+@test "addPet from pipe" {
+ run bash \
+ -c "echo '{\"id\": 37567, \"name\": \"lucky\", \"status\": \"available\"}' | \
+ bash $PETSTORE_CLI -ct json -ac xml addPet -"
+ [[ "$output" =~ "37567" ]]
+}
diff --git a/CI/samples.ci/client/petstore/c/build-and-test.bash b/CI/samples.ci/client/petstore/c/build-and-test.bash
new file mode 100755
index 000000000000..28256027f84d
--- /dev/null
+++ b/CI/samples.ci/client/petstore/c/build-and-test.bash
@@ -0,0 +1,21 @@
+#!/bin/bash
+
+set -e
+
+#install latest curl
+wget https://curl.haxx.se/download/curl-7.61.1.zip
+unzip curl-7.61.1.zip
+cd curl-7.61.1
+./configure
+make
+sudo make install
+cd ..
+
+# project
+cmake .
+
+make
+
+./unit-manual-PetAPI
+./unit-manual-UserAPI
+./unit-manual-StoreAPI
diff --git a/CI/samples.ci/client/petstore/c/pom.xml b/CI/samples.ci/client/petstore/c/pom.xml
new file mode 100644
index 000000000000..50246fbbe61c
--- /dev/null
+++ b/CI/samples.ci/client/petstore/c/pom.xml
@@ -0,0 +1,43 @@
+
+ 4.0.0
+ org.openapitools
+ CPetstoreClientTests
+ pom
+ 1.0-SNAPSHOT
+ C OpenAPI Petstore Client
+
+
+
+ maven-dependency-plugin
+
+
+ package
+
+ copy-dependencies
+
+
+ ${project.build.directory}
+
+
+
+
+
+ org.codehaus.mojo
+ exec-maven-plugin
+ 1.2.1
+
+
+ pet-test
+ integration-test
+
+ exec
+
+
+ ./build-and-test.bash
+
+
+
+
+
+
+
diff --git a/CI/samples.ci/client/petstore/c/unit-tests/manual-PetAPI.c b/CI/samples.ci/client/petstore/c/unit-tests/manual-PetAPI.c
new file mode 100644
index 000000000000..657a4fe38794
--- /dev/null
+++ b/CI/samples.ci/client/petstore/c/unit-tests/manual-PetAPI.c
@@ -0,0 +1,142 @@
+#include
+ #include
+ #include
+ #include
+ #include "../api/PetAPI.h"
+
+
+ #define EXAMPLE_CATEGORY_NAME "Example Category"
+ #define EXAMPLE_CATEGORY_ID 5
+ #define EXAMPLE_PET_NAME "Example Pet"
+ #define EXAMPLE_URL_1 "http://www.github.com"
+ #define EXAMPLE_URL_2 "http://www.gitter.im"
+ #define EXAMPLE_TAG_1_NAME "beautiful code"
+ #define EXAMPLE_TAG_2_NAME "at least I tried"
+ #define EXAMPLE_TAG_1_ID 1
+ #define EXAMPLE_TAG_2_ID 542353
+ #define EXAMPLE_PET_ID 1234 // Set to 0 to generate a new pet
+
+
+int main() {
+// Add pet test
+ apiClient_t *apiClient = apiClient_create();
+
+ char *categoryName = malloc(strlen(EXAMPLE_CATEGORY_NAME) + 1);
+ strcpy(categoryName, EXAMPLE_CATEGORY_NAME);
+
+ category_t *category =
+ category_create(EXAMPLE_CATEGORY_ID, categoryName);
+
+ char *petName = malloc(strlen(EXAMPLE_PET_NAME) + 1);
+ strcpy(petName, EXAMPLE_PET_NAME);
+
+ char *exampleUrl1 = malloc(strlen(EXAMPLE_URL_1) + 1);
+ strcpy(exampleUrl1, EXAMPLE_URL_1);
+
+ char *exampleUrl2 = malloc(strlen(EXAMPLE_URL_2) + 1);
+ strcpy(exampleUrl2, EXAMPLE_URL_2);
+
+ list_t *photoUrls = list_create();
+
+ list_addElement(photoUrls, exampleUrl1);
+ list_addElement(photoUrls, exampleUrl2);
+
+ char *exampleTag1Name = malloc(strlen(EXAMPLE_TAG_1_NAME) + 1);
+ strcpy(exampleTag1Name, EXAMPLE_TAG_1_NAME);
+ tag_t *exampleTag1 = tag_create(EXAMPLE_TAG_1_ID, exampleTag1Name);
+
+ char *exampleTag2Name = malloc(strlen(EXAMPLE_TAG_2_NAME) + 1);
+ strcpy(exampleTag2Name, EXAMPLE_TAG_2_NAME);
+ tag_t *exampleTag2 = tag_create(EXAMPLE_TAG_2_ID, exampleTag2Name);
+
+ list_t *tags = list_create();
+
+ list_addElement(tags, exampleTag1);
+ list_addElement(tags, exampleTag2);
+
+
+ status_e status = available;
+ pet_t *pet =
+ pet_create(EXAMPLE_PET_ID,
+ category,
+ petName,
+ photoUrls,
+ tags,
+ status);
+
+ PetAPI_addPet(apiClient, pet);
+ cJSON *JSONR_local = pet_convertToJSON(pet);
+ char *toPrint = cJSON_Print(JSONR_local);
+ printf("Data is:%s\n", toPrint);
+ free(toPrint);
+ pet_free(pet);
+ cJSON_Delete(JSONR_local);
+ apiClient_free(apiClient);
+
+// Pet update with form test
+ char *petName1 = "Rocky Handsome";
+
+ char *petName2 = "sold";
+
+ apiClient_t *apiClient1 = apiClient_create();
+ PetAPI_updatePetWithForm(apiClient1, EXAMPLE_PET_ID, petName1,
+ petName2);
+ apiClient_free(apiClient1);
+
+// Get pet by id test
+ apiClient_t *apiClient2 = apiClient_create();
+ pet_t *mypet = PetAPI_getPetById(apiClient2, EXAMPLE_PET_ID);
+
+ cJSON *JSONR = pet_convertToJSON(mypet);
+ char *petJson = cJSON_Print(JSONR);
+ printf("Data is:%s\n", petJson);
+
+ assert(strcmp(mypet->name, "Rocky Handsome") == 0);
+ assert(mypet->id == EXAMPLE_PET_ID);
+ assert(strcmp(mypet->category->name, EXAMPLE_CATEGORY_NAME) == 0);
+ assert(mypet->category->id == EXAMPLE_CATEGORY_ID);
+ assert(strcmp(list_getElementAt(mypet->photoUrls,
+ 0)->data, EXAMPLE_URL_1) == 0);
+ assert(strcmp(list_getElementAt(mypet->photoUrls,
+ 1)->data, EXAMPLE_URL_2) == 0);
+ assert(((tag_t *) list_getElementAt(mypet->tags,
+ 0)->data)->id == EXAMPLE_TAG_1_ID);
+ assert(((tag_t *) list_getElementAt(mypet->tags,
+ 1)->data)->id == EXAMPLE_TAG_2_ID);
+ assert(strcmp(((tag_t *) list_getElementAt(mypet->tags, 0)->data)->name,
+ EXAMPLE_TAG_1_NAME) == 0);
+ assert(strcmp(((tag_t *) list_getElementAt(mypet->tags, 1)->data)->name,
+ EXAMPLE_TAG_2_NAME) == 0);
+
+ free(petJson);
+ cJSON_Delete(JSONR);
+ pet_free(mypet);
+ apiClient_free(apiClient2);
+
+// Pet upload file Test
+ apiClient_t *apiClient3 = apiClient_create();
+ FILE *file = fopen("/opt/image.png", "r");
+ char *buff;
+ int read_size, len;
+ binary_t *data = malloc(sizeof(binary_t));
+ if(file) {
+ fseek(file, 0, SEEK_END);
+ read_size = 2 * ftell(file);
+ rewind(file);
+ data->data = (char *) malloc(read_size + 1);
+ data->len = fread((void *) data->data, 1, read_size, file);
+ data->data[read_size] = '\0';
+ }
+ if(file != NULL) {
+ api_response_t *respo = PetAPI_uploadFile(apiClient3,
+ EXAMPLE_PET_ID,
+ "dec",
+ data);
+
+ api_response_free(respo);
+ free(data->data);
+ free(data);
+ fclose(file);
+ }
+ apiClient_free(apiClient3);
+}
diff --git a/CI/samples.ci/client/petstore/c/unit-tests/manual-StoreAPI.c b/CI/samples.ci/client/petstore/c/unit-tests/manual-StoreAPI.c
new file mode 100644
index 000000000000..485cf384bbd1
--- /dev/null
+++ b/CI/samples.ci/client/petstore/c/unit-tests/manual-StoreAPI.c
@@ -0,0 +1,103 @@
+#include
+ #include
+ #include
+ #include
+ #include "../api/StoreAPI.h"
+
+
+ #define ORDER_ID 1234
+ #define PET_ID 12345
+ #define QUANTITY 50
+ #define SHIP_DATE "2018-09-24T10:19:09.592Z"
+ #define STATUS placed
+ #define COMPLETE true
+
+/*
+ Creates one pet and adds it. Then gets the pet with the just added ID and compare if the values are equal.
+ Could fail if someone else makes changes to the added pet, before it can be fetched again.
+ */
+int main() {
+// place order test
+ apiClient_t *apiClient = apiClient_create();
+
+ char *shipdate = malloc(strlen(SHIP_DATE) + 1);
+ strcpy(shipdate, SHIP_DATE);
+
+ order_t *neworder = order_create(ORDER_ID,
+ PET_ID,
+ QUANTITY,
+ shipdate,
+ STATUS,
+ COMPLETE);
+
+ order_t *returnorder = StoreAPI_placeOrder(apiClient, neworder);
+
+ cJSON *JSONNODE = order_convertToJSON(returnorder);
+
+ char *dataToPrint = cJSON_Print(JSONNODE);
+
+ printf("Placed order: \n%s\n", dataToPrint);
+ order_free(neworder);
+ order_free(returnorder);
+ cJSON_Delete(JSONNODE);
+ free(dataToPrint);
+ apiClient_free(apiClient);
+
+// order get by id test
+ apiClient_t *apiClient2 = apiClient_create();
+
+ neworder = StoreAPI_getOrderById(apiClient2, 1234);
+
+ JSONNODE = order_convertToJSON(neworder);
+
+ char *dataToPrint1 = cJSON_Print(JSONNODE);
+
+ printf("Order received: \n%s\n", dataToPrint1);
+
+ order_free(neworder);
+ cJSON_Delete(JSONNODE);
+ free(dataToPrint1);
+ apiClient_free(apiClient2);
+
+// delete order test
+ apiClient_t *apiClient3 = apiClient_create();
+
+ char *orderid = malloc(strlen("1234") + 1);
+ strcpy(orderid, "1234");
+
+ StoreAPI_deleteOrder(apiClient3, orderid);
+
+ printf("Order Deleted \n");
+ free(orderid);
+ apiClient_free(apiClient3);
+
+
+// get order by id test
+ apiClient_t *apiClient4 = apiClient_create();
+
+ neworder = StoreAPI_getOrderById(apiClient4, 1234);
+
+ if(neworder == NULL) {
+ printf("Order Not present \n");
+ }
+ order_free(neworder);
+ apiClient_free(apiClient4);
+
+// get inventory test
+ apiClient_t *apiClient5 = apiClient_create();
+ list_t *elementToReturn;
+ elementToReturn = StoreAPI_getInventory(apiClient5);
+ listEntry_t *listEntry;
+ list_ForEach(listEntry, elementToReturn) {
+ keyValuePair_t *pair = (keyValuePair_t *) listEntry->data;
+ printf("%s - %s\n", pair->key, (char *) pair->value);
+ }
+ list_ForEach(listEntry, elementToReturn) {
+ keyValuePair_t *pair = (keyValuePair_t *) listEntry->data;
+ free(pair->key);
+ free(pair->value);
+ keyValuePair_free(pair);
+ }
+ list_free(elementToReturn);
+ apiClient_free(apiClient5);
+}
diff --git a/CI/samples.ci/client/petstore/c/unit-tests/manual-UserAPI.c b/CI/samples.ci/client/petstore/c/unit-tests/manual-UserAPI.c
new file mode 100644
index 000000000000..56c7eac5ee1a
--- /dev/null
+++ b/CI/samples.ci/client/petstore/c/unit-tests/manual-UserAPI.c
@@ -0,0 +1,123 @@
+#include
+ #include
+ #include
+ #include
+ #include "../api/UserAPI.h"
+
+ #define USER_ID 1234
+ #define USER_NAME "example123"
+ #define FIRST_NAME "Example1"
+ #define LAST_NAME "Example2Last"
+ #define LAST_NAME1 "LastName"
+ #define EMAIL "example@example.com"
+ #define PASSWORD "thisisexample!123"
+ #define PHONE "+123456789"
+ #define USER_STATUS 4
+
+
+int main() {
+// create user test
+ apiClient_t *apiClient = apiClient_create();
+
+ char *username = malloc(strlen(USER_NAME) + 1);
+ strcpy(username, USER_NAME);
+ char *firstname = malloc(strlen(FIRST_NAME) + 1);
+ strcpy(firstname, FIRST_NAME);
+ char *lastname = malloc(strlen(LAST_NAME) + 1);
+ strcpy(lastname, LAST_NAME);
+ char *email = malloc(strlen(EMAIL) + 1);
+ strcpy(email, EMAIL);
+ char *password = malloc(strlen(PASSWORD) + 1);
+ strcpy(password, PASSWORD);
+ char *phone = malloc(strlen(PHONE) + 1);
+ strcpy(phone, PHONE);
+
+ user_t *newuser = user_create(USER_ID,
+ username,
+ firstname,
+ lastname,
+ email,
+ password,
+ phone,
+ USER_STATUS);
+
+ UserAPI_createUser(apiClient, newuser);
+ user_free(newuser);
+ apiClient_free(apiClient);
+
+// get user by name test
+ apiClient_t *apiClient1 = apiClient_create();
+ user_t *returnUser = UserAPI_getUserByName(apiClient1, USER_NAME);
+
+ cJSON *JSONNODE = user_convertToJSON(returnUser);
+
+ char *dataToPrint = cJSON_Print(JSONNODE);
+
+ printf("User is: \n%s\n", dataToPrint);
+ user_free(returnUser);
+ cJSON_Delete(JSONNODE);
+ free(dataToPrint);
+ apiClient_free(apiClient1);
+
+// update user test
+ {
+ apiClient_t *apiClient2 = apiClient_create();
+ char *username1 = malloc(strlen(USER_NAME) + 1);
+ strcpy(username1, USER_NAME);
+ char *firstname = malloc(strlen(FIRST_NAME) + 1);
+ strcpy(firstname, FIRST_NAME);
+ char *lastname = malloc(strlen(LAST_NAME) + 1);
+ strcpy(lastname, LAST_NAME);
+ char *email = malloc(strlen(EMAIL) + 1);
+ strcpy(email, EMAIL);
+ char *password = malloc(strlen(PASSWORD) + 1);
+ strcpy(password, PASSWORD);
+ char *phone = malloc(strlen(PHONE) + 1);
+ strcpy(phone, PHONE);
+
+ user_t *newuser1 = user_create(USER_ID,
+ username1,
+ firstname,
+ lastname,
+ email,
+ password,
+ phone,
+ USER_STATUS);
+
+ UserAPI_updateUser(apiClient2, username1, newuser1);
+ user_free(newuser1);
+ apiClient_free(apiClient2);
+ }
+
+// login user test
+ {
+ char *username1 = malloc(strlen(USER_NAME) + 1);
+ strcpy(username1, USER_NAME);
+ char *password = malloc(strlen(PASSWORD) + 1);
+ strcpy(password, PASSWORD);
+ apiClient_t *apiClient3 = apiClient_create();
+
+ char *loginuserreturn = UserAPI_loginUser(apiClient3,
+ username1,
+ password);
+
+ printf("Login User: %s\n", loginuserreturn);
+ free(loginuserreturn);
+ free(username1);
+ free(password);
+ apiClient_free(apiClient3);
+ }
+
+// logout user test
+ apiClient_t *apiClient4 = apiClient_create();
+
+ UserAPI_logoutUser(apiClient4);
+ apiClient_free(apiClient4);
+
+
+// delete user test
+ apiClient_t *apiClient5 = apiClient_create();
+
+ UserAPI_deleteUser(apiClient5, "example123");
+ apiClient_free(apiClient5);
+}
diff --git a/CI/samples.ci/client/petstore/c/unit-tests/manual-order.c b/CI/samples.ci/client/petstore/c/unit-tests/manual-order.c
new file mode 100644
index 000000000000..b1475bda6ae3
--- /dev/null
+++ b/CI/samples.ci/client/petstore/c/unit-tests/manual-order.c
@@ -0,0 +1,39 @@
+#include
+#include
+#include
+#include "../model/order.h"
+
+
+#define ORDER_ID 1234
+#define PET_ID 12345
+#define QUANTITY 50
+#define SHIP_DATE "13/10/2018"
+
+#define COMPLETE 1
+
+int main() {
+ status_e STATUS = placed;
+
+ order_t *neworder = order_create(ORDER_ID, PET_ID, QUANTITY, SHIP_DATE,
+ STATUS,
+ COMPLETE);
+
+ cJSON *JSONNODE = order_convertToJSON(neworder);
+
+ char *dataToPrint = cJSON_Print(JSONNODE);
+
+ printf("Created Order is: \n%s\n", dataToPrint);
+
+ order_t *parsedOrder = order_parseFromJSON(JSONNODE);
+
+ cJSON *fromJSON = order_convertToJSON(parsedOrder);
+
+ char *dataToPrintFromJSON = cJSON_Print(fromJSON);
+
+ printf("Parsed Order From JSON is: \n%s\n", dataToPrintFromJSON);
+
+ order_free(neworder);
+ order_free(parsedOrder);
+ cJSON_Delete(JSONNODE);
+ cJSON_Delete(fromJSON);
+}
diff --git a/CI/samples.ci/client/petstore/c/unit-tests/manual-user.c b/CI/samples.ci/client/petstore/c/unit-tests/manual-user.c
new file mode 100644
index 000000000000..738b21e22b2a
--- /dev/null
+++ b/CI/samples.ci/client/petstore/c/unit-tests/manual-user.c
@@ -0,0 +1,39 @@
+#include
+#include
+#include
+#include "../model/user.h"
+
+
+#define USER_ID 1234
+#define USER_NAME "example123"
+#define FIRST_NAME "Example1"
+#define LAST_NAME "Example2"
+#define EMAIL "example@example.com"
+#define PASSWORD "thisisexample!123"
+#define PHONE "+123456789"
+#define USER_STATUS 4
+
+int main() {
+ user_t *newuser = user_create(USER_ID, USER_NAME, FIRST_NAME, LAST_NAME,
+ EMAIL,
+ PASSWORD, PHONE, USER_STATUS);
+
+ cJSON *JSONNODE = user_convertToJSON(newuser);
+
+ char *dataToPrint = cJSON_Print(JSONNODE);
+
+ printf("Created User is: \n%s\n", dataToPrint);
+
+ user_t *pasrsedUser = user_parseFromJSON(JSONNODE);
+
+ cJSON *fromJSON = user_convertToJSON(pasrsedUser);
+
+ char *dataToPrintFromJSON = cJSON_Print(fromJSON);
+
+ printf("Parsed User From JSON is: \n%s\n", dataToPrintFromJSON);
+
+ user_free(newuser);
+ user_free(pasrsedUser);
+ cJSON_Delete(JSONNODE);
+ cJSON_Delete(fromJSON);
+}
diff --git a/CI/samples.ci/client/petstore/clojure/.gitignore b/CI/samples.ci/client/petstore/clojure/.gitignore
new file mode 100644
index 000000000000..e3388bed39e4
--- /dev/null
+++ b/CI/samples.ci/client/petstore/clojure/.gitignore
@@ -0,0 +1,11 @@
+pom.xml.asc
+*jar
+/lib/
+/classes/
+/target/
+/checkouts/
+.lein-deps-sum
+.lein-repl-history
+.lein-plugins/
+.lein-failures
+.nrepl-port
diff --git a/CI/samples.ci/client/petstore/clojure/pom.xml b/CI/samples.ci/client/petstore/clojure/pom.xml
new file mode 100644
index 000000000000..99466e226910
--- /dev/null
+++ b/CI/samples.ci/client/petstore/clojure/pom.xml
@@ -0,0 +1,32 @@
+
+ 4.0.0
+ org.openapitools
+ openapi-petstore-clojure
+ pom
+ 1.0-SNAPSHOT
+ OpenAPI Clogure Petstore Client
+
+
+
+ org.codehaus.mojo
+ exec-maven-plugin
+ 1.2.1
+
+
+ lein-test
+ integration-test
+
+ exec
+
+
+ lein
+
+ test
+
+
+
+
+
+
+
+
diff --git a/samples/openapi3/client/petstore/ruby-faraday/hello.txt b/CI/samples.ci/client/petstore/clojure/resources/hello.txt
similarity index 100%
rename from samples/openapi3/client/petstore/ruby-faraday/hello.txt
rename to CI/samples.ci/client/petstore/clojure/resources/hello.txt
diff --git a/CI/samples.ci/client/petstore/clojure/test/open_api_petstore/api/pet_test.clj b/CI/samples.ci/client/petstore/clojure/test/open_api_petstore/api/pet_test.clj
new file mode 100644
index 000000000000..77d2b0088b92
--- /dev/null
+++ b/CI/samples.ci/client/petstore/clojure/test/open_api_petstore/api/pet_test.clj
@@ -0,0 +1,104 @@
+(ns open-api-petstore.api.pet-test
+ (:require [clojure.test :refer :all]
+ [clojure.java.io :as io]
+ [open-api-petstore.core :refer [with-api-context]]
+ [open-api-petstore.api.pet :refer :all]))
+
+(defn credentials-fixture [f]
+ (with-api-context {:auths {"api_key" "special-key"}}
+ (f)))
+
+(use-fixtures :once credentials-fixture)
+
+(defn- make-random-pet
+ ([] (make-random-pet nil))
+ ([{:keys [id] :as attrs :or {id (System/currentTimeMillis)}}]
+ (merge {:id id
+ :name (str "pet-" id)
+ :status "available"
+ :photoUrls ["http://foo.bar.com/1" "http://foo.bar.com/2"]
+ :category {:name "really-happy"}}
+ attrs)))
+
+(deftest test-create-and-get-pet
+ (let [{:keys [id] :as pet} (make-random-pet)
+ _ (add-pet {:pet pet})
+ fetched (get-pet-by-id id)]
+ (is (identity fetched))
+ (is (= id (:id fetched)))
+ (is (identity (:category fetched)))
+ (is (= (get-in pet [:category :name]) (get-in fetched [:category :name])))
+ (delete-pet id)))
+
+(deftest test-create-and-get-pet-with-http-info
+ (let [{:keys [id] :as pet} (make-random-pet)
+ _ (add-pet-with-http-info {:pet pet})
+ {:keys [status headers data]} (get-pet-by-id-with-http-info id)]
+ (is (= 200 status))
+ (is (= "application/json" (:content-type headers)))
+ (is (identity data))
+ (is (= id (:id data)))
+ (is (identity (:category data)))
+ (is (= (get-in pet [:category :name]) (get-in data [:category :name])))
+ (delete-pet id)))
+
+(deftest test-find-pets-by-status
+ (let [status "pending"
+ {:keys [id] :as pet} (make-random-pet {:status status})
+ _ (add-pet {:pet pet})
+ pets (find-pets-by-status {:status [status]})]
+ (is (seq pets))
+ (is (some #{id} (map :id pets)))
+ (delete-pet id)))
+
+(deftest test-find-pets-by-tags
+ (let [tag-name (str "tag-" (rand-int 1000))
+ tag {:name tag-name}
+ {:keys [id] :as pet} (make-random-pet {:tags [tag]})
+ _ (add-pet {:pet pet})
+ pets (find-pets-by-tags {:tags [tag-name]})]
+ (is (seq pets))
+ (is (some #{id} (map :id pets)))
+ (delete-pet id)))
+
+(deftest test-update-pet-with-form
+ (let [{pet-id :id :as pet} (make-random-pet {:name "new name" :status "available"})
+ _ (add-pet {:pet pet})
+ {:keys [id name status]} (get-pet-by-id pet-id)]
+ (is (= pet-id id))
+ (is (= "new name" name))
+ (is (= "available" status))
+ ;; update "name" only
+ (update-pet-with-form pet-id {:name "updated name 1"})
+ (let [{:keys [id name status]} (get-pet-by-id pet-id)]
+ (is (= pet-id id))
+ (is (= "updated name 1" name))
+ (is (= "available" status)))
+ ;; update "status" only
+ (update-pet-with-form pet-id {:status "pending"})
+ (let [{:keys [id name status]} (get-pet-by-id pet-id)]
+ (is (= pet-id id))
+ (is (= "updated name 1" name))
+ (is (= "pending" status)))
+ ;; update both "name" and "status"
+ (update-pet-with-form pet-id {:name "updated name 2" :status "sold"})
+ (let [{:keys [id name status]} (get-pet-by-id pet-id)]
+ (is (= pet-id id))
+ (is (= "updated name 2" name))
+ (is (= "sold" status)))
+ (delete-pet pet-id)))
+
+(deftest test-delete-pet
+ (let [{:keys [id] :as pet} (make-random-pet)
+ _ (add-pet {:pet pet})
+ fetched (get-pet-by-id id)]
+ (is (= id (:id fetched)))
+ (delete-pet id)
+ (is (thrown? RuntimeException (get-pet-by-id id)))))
+
+(deftest test-upload-file
+ (let [{:keys [id] :as pet} (make-random-pet)
+ _ (add-pet {:pet pet})
+ file (io/file (io/resource "hello.txt"))]
+ ;; no errors with upload-file
+ (upload-file id {:file file :additional-metadata "uploading file with clojure client"})))
diff --git a/CI/samples.ci/client/petstore/clojure/test/open_api_petstore/api/store_test.clj b/CI/samples.ci/client/petstore/clojure/test/open_api_petstore/api/store_test.clj
new file mode 100644
index 000000000000..b7f3edc31c2d
--- /dev/null
+++ b/CI/samples.ci/client/petstore/clojure/test/open_api_petstore/api/store_test.clj
@@ -0,0 +1,42 @@
+(ns open-api-petstore.api.store-test
+ (:require [clojure.test :refer :all]
+ [open-api-petstore.core :refer [with-api-context]]
+ [open-api-petstore.api.store :refer :all])
+ (:import (java.util Date)))
+
+(defn credentials-fixture [f]
+ (with-api-context {:auths {"api_key" "special-key"}}
+ (f)))
+
+(use-fixtures :once credentials-fixture)
+
+(defn- make-random-order []
+ {:id (+ 90000 (rand-int 10000))
+ :petId 200
+ :quantity 13
+ :shipDate (Date.)
+ :status "placed"
+ :complete true})
+
+(deftest test-get-inventory
+ (let [inventory (get-inventory)]
+ (is (pos? (count inventory)))))
+
+(deftest test-place-and-delete-order
+ (let [order (make-random-order)
+ order-id (:id order)
+ _ (place-order {:order order})
+ fetched (get-order-by-id order-id)]
+ (doseq [attr [:id :petId :quantity]]
+ (is (= (attr order) (attr fetched))))
+ (delete-order order-id)
+ (comment "it seems that delete-order does not really delete the order"
+ (is (thrown? RuntimeException (get-order-by-id order-id))))))
+
+(deftest test-order-spec-conforming
+ (with-api-context {:decode-models true}
+ (let [order (make-random-order)
+ order-id (:id order)
+ _ (place-order {:order order})
+ fetched (get-order-by-id order-id)]
+ (is (= order fetched)))))
\ No newline at end of file
diff --git a/CI/samples.ci/client/petstore/clojure/test/open_api_petstore/api/user_test.clj b/CI/samples.ci/client/petstore/clojure/test/open_api_petstore/api/user_test.clj
new file mode 100644
index 000000000000..a64bd570c972
--- /dev/null
+++ b/CI/samples.ci/client/petstore/clojure/test/open_api_petstore/api/user_test.clj
@@ -0,0 +1,64 @@
+(ns open-api-petstore.api.user-test
+ (:require [clojure.test :refer :all]
+ [open-api-petstore.core :refer [with-api-context]]
+ [open-api-petstore.api.user :refer :all]))
+
+(defn credentials-fixture [f]
+ (with-api-context {:auths {"api_key" "special-key"}}
+ (f)))
+
+(use-fixtures :once credentials-fixture)
+
+(defn- make-random-user
+ ([] (make-random-user nil))
+ ([{:keys [id] :as attrs :or {id (System/currentTimeMillis)}}]
+ (merge {:id id
+ :username (str "user-" id)
+ :password "my-password"
+ :userStatus 0}
+ attrs)))
+
+(deftest test-create-and-delete-user
+ (let [user (make-random-user)
+ username (:username user)
+ _ (create-user {:user user})
+ fetched (get-user-by-name username)]
+ (doseq [attr [:id :username :password :userStatus]]
+ (is (= (attr user) (attr fetched))))
+ (delete-user username)
+ (is (thrown? RuntimeException (get-user-by-name username)))))
+
+(deftest test-create-users-with-array-input
+ (let [id1 (System/currentTimeMillis)
+ id2 (inc id1)
+ user1 (make-random-user {:id id1})
+ user2 (make-random-user {:id id2})]
+ (create-users-with-array-input {:user [user1 user2]})
+ (let [fetched (get-user-by-name (:username user1))]
+ (is (= id1 (:id fetched))))
+ (let [fetched (get-user-by-name (:username user2))]
+ (is (= id2 (:id fetched))))
+ (delete-user (:username user1))
+ (delete-user (:username user2))))
+
+(deftest test-create-users-with-list-input
+ (let [id1 (System/currentTimeMillis)
+ id2 (inc id1)
+ user1 (make-random-user {:id id1})
+ user2 (make-random-user {:id id2})]
+ (create-users-with-list-input {:user [user1 user2]})
+ (let [fetched (get-user-by-name (:username user1))]
+ (is (= id1 (:id fetched))))
+ (let [fetched (get-user-by-name (:username user2))]
+ (is (= id2 (:id fetched))))
+ (delete-user (:username user1))
+ (delete-user (:username user2))))
+
+(deftest test-login-and-lougout-user
+ (let [{:keys [username password] :as user} (make-random-user)
+ _ (create-user {:user user})
+ result (login-user {:username username :password password})]
+ (is (re-matches #"logged in user session:.+" result))
+ ;; no error with logout-user
+ (logout-user)
+ (delete-user username)))
diff --git a/CI/samples.ci/client/petstore/clojure/test/open_api_petstore/core_test.clj b/CI/samples.ci/client/petstore/clojure/test/open_api_petstore/core_test.clj
new file mode 100644
index 000000000000..d3cfcdfdb8b7
--- /dev/null
+++ b/CI/samples.ci/client/petstore/clojure/test/open_api_petstore/core_test.clj
@@ -0,0 +1,188 @@
+(ns open-api-petstore.core-test
+ (:require [clojure.java.io :as io]
+ [clojure.test :refer :all]
+ [open-api-petstore.core :refer :all])
+ (:import (java.text ParseException)))
+
+(deftest test-api-context
+ (testing "default"
+ (is (= {:base-url "http://petstore.swagger.io/v2"
+ :date-format "yyyy-MM-dd"
+ :datetime-format "yyyy-MM-dd'T'HH:mm:ss.SSSXXX"
+ :decode-models false
+ :debug false
+ :auths {"api_key" nil
+ "petstore_auth" nil}}
+ default-api-context
+ *api-context*
+ (with-api-context {}
+ *api-context*))))
+ (testing "customize via with-api-context"
+ (with-api-context {:base-url "http://localhost"
+ :debug true
+ :auths {"api_key" "key1"
+ "petstore_auth" "token1"}}
+ (is (= {:base-url "http://localhost"
+ :date-format "yyyy-MM-dd"
+ :datetime-format "yyyy-MM-dd'T'HH:mm:ss.SSSXXX"
+ :decode-models false
+ :debug true
+ :auths (merge (:auths default-api-context)
+ {"api_key" "key1"
+ "petstore_auth" "token1"})}
+ *api-context*))
+ ;; nested with-api-context inherits values from the outer api context
+ (with-api-context {:datetime-format "yyyy-MM-dd HH:mm:ss"
+ :auths {"api_key" "key2"}}
+ (is (= {:base-url "http://localhost"
+ :date-format "yyyy-MM-dd"
+ :datetime-format "yyyy-MM-dd HH:mm:ss"
+ :decode-models false
+ :debug true
+ :auths (merge (:auths default-api-context)
+ {"api_key" "key2"
+ "petstore_auth" "token1"})}
+ *api-context*))))
+ ;; back to default api context
+ (is (= {:base-url "http://petstore.swagger.io/v2"
+ :date-format "yyyy-MM-dd"
+ :datetime-format "yyyy-MM-dd'T'HH:mm:ss.SSSXXX"
+ :decode-models false
+ :debug false
+ :auths {"api_key" nil
+ "petstore_auth" nil}}
+ default-api-context
+ *api-context*))))
+
+(deftest test-check-required-params
+ (let [a nil b :not-nil]
+ (is (thrown? IllegalArgumentException (check-required-params a)))
+ (is (nil? (check-required-params b)))))
+
+(deftest test-parse-and-format-date
+ (testing "default date format"
+ (is (= "2015-11-07" (-> "2015-11-07T03:49:09.356+00:00" parse-datetime format-date)))
+ (is (= "2015-11-07" (-> "2015-11-07" parse-date format-date)))
+ (is (thrown? ParseException (parse-date "2015-11"))))
+ (testing "custom date format: without day"
+ (with-api-context {:date-format "yyyy-MM"}
+ (is (= "2015-11" (-> "2015-11-07T03:49:09.123Z" parse-datetime format-date)))
+ (is (= "2015-11" (-> "2015-11" parse-date format-date)))
+ (is (thrown? ParseException (parse-date "2015"))))))
+
+(deftest test-parse-and-format-datetime
+ (testing "default datetime format"
+ (are [s]
+ (is (= "2015-11-07T03:49:09.356Z" (-> s parse-datetime (format-datetime "UTC"))))
+ "2015-11-07T03:49:09.356+00:00"
+ "2015-11-07T05:49:09.356+02:00"
+ "2015-11-07T02:49:09.356-01:00"
+ "2015-11-07T03:49:09.356Z")
+ (is (thrown? ParseException (parse-datetime "2015-11-07 03:49:09"))))
+ (testing "custom datetime format: without milliseconds"
+ (with-api-context {:datetime-format "yyyy-MM-dd'T'HH:mm:ssXXX"}
+ (are [s]
+ (is (= "2015-11-07T13:49:09+10:00" (-> s parse-datetime (format-datetime "GMT+10"))))
+ "2015-11-07T03:49:09+00:00"
+ "2015-11-07T03:49:09Z"
+ "2015-11-07T00:49:09-03:00")
+ (is (thrown? ParseException (parse-datetime "2015-11-07T03:49:09.123Z"))))))
+
+(deftest test-param->str
+ (let [date (parse-datetime "2015-11-07T03:49:09.123Z")]
+ (are [param expected]
+ (is (= expected (param->str param)))
+ nil ""
+ "abc" "abc"
+ 123 "123"
+ 1.0 "1.0"
+ [12 "34"] "12,34"
+ date (format-datetime date))))
+
+(deftest test-auths->opts
+ (testing "auth values not set by default"
+ (is (= {} (auths->opts ["api_key" "petstore_auth"])))
+ (is (= {} (auths->opts []))))
+ (testing "set api_key"
+ (with-api-context {:auths {"api_key" "my key"}}
+ (is (= {:header-params {"api_key" "my key"}} (auths->opts ["api_key" "petstore_auth"])))
+ (is (= {:header-params {"api_key" "my key"}} (auths->opts ["api_key"])))
+ (is (= {} (auths->opts ["petstore_auth"])))
+ (is (= {} (auths->opts [])))))
+ (testing "set both api_key and petstore_auth"
+ (with-api-context {:auths {"api_key" "my key" "petstore_auth" "my token"}}
+ (is (= {:req-opts {:oauth-token "my token"}
+ :header-params {"api_key" "my key"}}
+ (auths->opts ["api_key" "petstore_auth"])))
+ (is (= {:req-opts {:oauth-token "my token"}} (auths->opts ["petstore_auth"])))
+ (is (= {:header-params {"api_key" "my key"}} (auths->opts ["api_key"])))
+ (is (= {} (auths->opts []))))))
+
+(deftest test-make-url
+ (are [path path-params url]
+ (is (= url (make-url path path-params)))
+ "/pet/{petId}" {"petId" 123} "http://petstore.swagger.io/v2/pet/123"
+ "/" nil "http://petstore.swagger.io/v2/"
+ "/pet" {"id" 1} "http://petstore.swagger.io/v2/pet"
+ "/pet/{id}" nil "http://petstore.swagger.io/v2/pet/{id}"))
+
+(deftest test-normalize-param
+ (let [file (-> "hello.txt" io/resource io/file)]
+ (are [param expected]
+ (is (= expected (normalize-param param)))
+ file file
+ "abc" "abc"
+ [12 "34"] "12,34"
+ ^{:collection-format :csv} [12 "34"] "12,34"
+ ^{:collection-format :ssv} [12 "34"] "12 34"
+ ^{:collection-format :tsv} [12 "34"] "12\t34"
+ (with-collection-format [12 "34"] :pipes) "12|34"
+ (with-collection-format [12 "34"] :multi) ["12" "34"]
+ [[12 "34"] file "abc"] ["12,34" file "abc"])))
+
+(deftest test-normalize-params
+ (is (= {:a "123" :b "4,5,6"}
+ (normalize-params {:a 123 :b [4 [5 "6"]] :c nil})))
+ (is (= {:a "123" :b ["4" "5,6"]}
+ (normalize-params {:a 123
+ :b ^{:collection-format :multi} [4 [5 "6"]]
+ :c nil})))
+ (is (= {:a "123" :b "4 5|6"}
+ (normalize-params {:a 123
+ :b (with-collection-format [4 (with-collection-format [5 "6"] :pipes)] :ssv)
+ :c nil}))))
+
+(deftest test-json-mime?
+ (are [mime expected]
+ (is (= expected (boolean (json-mime? mime))))
+ :json true
+ "application/json" true
+ "APPLICATION/JSON" true
+ "application/json; charset=utf8" true
+ nil false
+ :xml false
+ "application/pdf" false
+ "application/jsonp" false))
+
+(deftest test-json-preferred-mime
+ (are [mimes expected]
+ (is (= expected (json-preferred-mime mimes)))
+ ["application/xml" "application/json"] "application/json"
+ [:json] :json
+ [] nil
+ nil nil
+ ["application/xml"] "application/xml"))
+
+(deftest test-serialize
+ (is (= "{\"aa\":1,\"bb\":\"2\"}" (serialize {:aa 1 :bb "2"} :json)))
+ (is (= "{}" (serialize {} "application/json")))
+ (is (= "[1,\"2\"]" (serialize [1 "2"] "application/json; charset=UTF8")))
+ (is (thrown? IllegalArgumentException (serialize {} "application/xml"))))
+
+(deftest test-deserialize
+ (are [body content-type expected]
+ (is (= expected (deserialize {:body body :headers {:content-type content-type}})))
+ "{\"aa\": 1, \"bb\": \"2\"}" "application/json" {:aa 1 :bb "2"}
+ "[1, \"2\"]" "application/json; charset=UTF8" [1 "2"]
+ "{invalid json}" "application/json" "{invalid json}"
+ "plain text" "text/plain" "plain text"))
diff --git a/CI/samples.ci/client/petstore/csharp/OpenAPIClient/src/Org.OpenAPITools.Test/Client/ApiClientTests.cs b/CI/samples.ci/client/petstore/csharp/OpenAPIClient/src/Org.OpenAPITools.Test/Client/ApiClientTests.cs
new file mode 100644
index 000000000000..d9637bd92e4f
--- /dev/null
+++ b/CI/samples.ci/client/petstore/csharp/OpenAPIClient/src/Org.OpenAPITools.Test/Client/ApiClientTests.cs
@@ -0,0 +1,139 @@
+using NUnit.Framework;
+using System;
+using System.Collections.Generic;
+using Org.OpenAPITools.Client;
+using Org.OpenAPITools.Api;
+using Org.OpenAPITools.Model;
+
+namespace Org.OpenAPITools.Test
+{
+ public class ApiClientTests
+ {
+ public ApiClientTests()
+ {
+ }
+
+ [TearDown()]
+ public void TearDown()
+ {
+ // Reset to default, just in case
+ Configuration.Default.DateTimeFormat = "o";
+ }
+
+ ///
+ /// Test SelectHeaderContentType
+ ///
+ [Test()]
+ public void TestSelectHeaderContentType()
+ {
+ ApiClient api = new ApiClient();
+ String[] contentTypes = new String[] { "application/json", "application/xml" };
+ Assert.AreEqual("application/json", api.SelectHeaderContentType(contentTypes));
+
+ contentTypes = new String[] { "application/xml" };
+ Assert.AreEqual("application/xml", api.SelectHeaderContentType(contentTypes));
+
+ contentTypes = new String[] { };
+ Assert.AreEqual("application/json", api.SelectHeaderContentType(contentTypes));
+ }
+
+ ///
+ /// Test ParameterToString
+ ///
+ [Test()]
+ public void TestParameterToString()
+ {
+ ApiClient api = new ApiClient();
+
+ // test array of string
+ List statusList = new List(new String[] { "available", "sold" });
+ Assert.AreEqual("available,sold", api.ParameterToString(statusList));
+
+ // test array of int
+ List numList = new List(new int[] { 1, 37 });
+ Assert.AreEqual("1,37", api.ParameterToString(numList));
+ }
+
+ [Test()]
+ public void TestParameterToStringForDateTime()
+ {
+ ApiClient api = new ApiClient();
+
+ // test datetime
+ DateTime dateUtc = DateTime.Parse("2008-04-10T13:30:00.0000000z", null, System.Globalization.DateTimeStyles.RoundtripKind);
+ Assert.AreEqual("2008-04-10T13:30:00.0000000Z", api.ParameterToString(dateUtc));
+
+ // test datetime with no timezone
+ DateTime dateWithNoTz = DateTime.Parse("2008-04-10T13:30:00.000", null, System.Globalization.DateTimeStyles.RoundtripKind);
+ Assert.AreEqual("2008-04-10T13:30:00.0000000", api.ParameterToString(dateWithNoTz));
+ }
+
+ // The test below only passes when running at -04:00 timezone
+ [Ignore("The test below only passes when running at -04:00 timezone")]
+ public void TestParameterToStringWithTimeZoneForDateTime()
+ {
+ ApiClient api = new ApiClient();
+ // test datetime with a time zone
+ DateTimeOffset dateWithTz = DateTimeOffset.Parse("2008-04-10T13:30:00.0000000-04:00", null, System.Globalization.DateTimeStyles.RoundtripKind);
+ Assert.AreEqual("2008-04-10T13:30:00.0000000-04:00", api.ParameterToString(dateWithTz));
+ }
+
+ [Test()]
+ public void TestParameterToStringForDateTimeWithUFormat()
+ {
+ // Setup the DateTimeFormat across all of the calls
+ Configuration.Default.DateTimeFormat = "u";
+ ApiClient api = new ApiClient();
+
+ // test datetime
+ DateTime dateUtc = DateTime.Parse("2009-06-15 20:45:30Z", null, System.Globalization.DateTimeStyles.RoundtripKind);
+ Assert.AreEqual("2009-06-15 20:45:30Z", api.ParameterToString(dateUtc));
+ }
+
+ [Test()]
+ public void TestParameterToStringForDateTimeWithCustomFormat()
+ {
+ // Setup the DateTimeFormat across all of the calls
+ Configuration.Default.DateTimeFormat = "dd/MM/yy HH:mm:ss";
+ ApiClient api = new ApiClient();
+
+ // test datetime
+ DateTime dateUtc = DateTime.Parse("2009-06-15 20:45:30Z", null, System.Globalization.DateTimeStyles.RoundtripKind);
+ Assert.AreEqual("15/06/09 20:45:30", api.ParameterToString(dateUtc));
+ }
+
+ [Test()]
+ public void TestSanitizeFilename()
+ {
+ Assert.AreEqual("sun.gif", ApiClient.SanitizeFilename("sun.gif"));
+ Assert.AreEqual("sun.gif", ApiClient.SanitizeFilename("../sun.gif"));
+ Assert.AreEqual("sun.gif", ApiClient.SanitizeFilename("/var/tmp/sun.gif"));
+ Assert.AreEqual("sun.gif", ApiClient.SanitizeFilename("./sun.gif"));
+
+ Assert.AreEqual("sun", ApiClient.SanitizeFilename("sun"));
+ Assert.AreEqual("sun.gif", ApiClient.SanitizeFilename("..\\sun.gif"));
+ Assert.AreEqual("sun.gif", ApiClient.SanitizeFilename("\\var\\tmp\\sun.gif"));
+ Assert.AreEqual("sun.gif", ApiClient.SanitizeFilename("c:\\var\\tmp\\sun.gif"));
+ Assert.AreEqual("sun.gif", ApiClient.SanitizeFilename(".\\sun.gif"));
+
+ }
+
+ [Test()]
+ public void TestApiClientInstance()
+ {
+ PetApi p1 = new PetApi();
+ PetApi p2 = new PetApi();
+
+ Configuration c1 = new Configuration(); // using default ApiClient
+ PetApi p3 = new PetApi(c1);
+
+ // ensure both using the same default ApiClient
+ Assert.AreSame(p1.Configuration.ApiClient, p2.Configuration.ApiClient);
+ Assert.AreSame(p1.Configuration.ApiClient, Configuration.Default.ApiClient);
+
+ // ensure both using the same default ApiClient
+ Assert.AreSame(p3.Configuration.ApiClient, c1.ApiClient);
+
+ }
+ }
+}
diff --git a/CI/samples.ci/client/petstore/csharp/OpenAPIClient/src/Org.OpenAPITools.Test/Client/ConfigurationTests.cs b/CI/samples.ci/client/petstore/csharp/OpenAPIClient/src/Org.OpenAPITools.Test/Client/ConfigurationTests.cs
new file mode 100644
index 000000000000..53d15e3a6057
--- /dev/null
+++ b/CI/samples.ci/client/petstore/csharp/OpenAPIClient/src/Org.OpenAPITools.Test/Client/ConfigurationTests.cs
@@ -0,0 +1,111 @@
+using NUnit.Framework;
+using System;
+using System.Collections.Generic;
+using Org.OpenAPITools.Client;
+using Org.OpenAPITools.Api;
+using Org.OpenAPITools.Model;
+
+namespace Org.OpenAPITools.Test
+{
+ public class ConfigurationTests
+ {
+ public ConfigurationTests()
+ {
+ }
+
+ [TearDown()]
+ public void TearDown()
+ {
+ // Reset to default, just in case
+ Configuration.Default.DateTimeFormat = "o";
+ }
+
+ [Test()]
+ public void TestAuthentication()
+ {
+ Configuration c = new Configuration();
+ c.Username = "test_username";
+ c.Password = "test_password";
+
+ c.ApiKey["api_key_identifier"] = "1233456778889900";
+ c.ApiKeyPrefix["api_key_identifier"] = "PREFIX";
+ Assert.AreEqual(c.GetApiKeyWithPrefix("api_key_identifier"), "PREFIX 1233456778889900");
+
+ }
+
+ [Test()]
+ public void TestBasePath()
+ {
+ PetApi p = new PetApi("http://new-basepath.com");
+ Assert.AreEqual(p.Configuration.ApiClient.RestClient.BaseUrl, "http://new-basepath.com");
+ // Given that PetApi is initailized with a base path, a new configuration (with a new ApiClient)
+ // is created by default
+ Assert.AreNotSame(p.Configuration, Configuration.Default);
+ }
+
+ [Test()]
+ public void TestDateTimeFormat_Default()
+ {
+ // Should default to the Round-trip Format Specifier - "o"
+ // https://msdn.microsoft.com/en-us/library/az4se3k1(v=vs.110).aspx#Anchor_8
+ Assert.AreEqual("o", Configuration.Default.DateTimeFormat);
+ }
+
+ [Test()]
+ public void TestDateTimeFormat_UType()
+ {
+ Configuration.Default.DateTimeFormat = "u";
+
+ Assert.AreEqual("u", Configuration.Default.DateTimeFormat);
+ }
+
+ [Test()]
+ public void TestDefautlConfiguration()
+ {
+ PetApi p1 = new PetApi();
+ PetApi p2 = new PetApi();
+ Assert.AreSame(p1.Configuration, p2.Configuration);
+ // same as the default
+ Assert.AreSame(p1.Configuration, Configuration.Default);
+
+ Configuration c = new Configuration();
+ Assert.AreNotSame(c, p1.Configuration);
+
+ PetApi p3 = new PetApi(c);
+ // same as c
+ Assert.AreSame(p3.Configuration, c);
+ // not same as default
+ Assert.AreNotSame(p3.Configuration, p1.Configuration);
+
+ }
+
+ [Test()]
+ public void TestUsage()
+ {
+ // basic use case using default base URL
+ PetApi p1 = new PetApi();
+ Assert.AreSame(p1.Configuration, Configuration.Default, "PetApi should use default configuration");
+
+ // using a different base URL
+ PetApi p2 = new PetApi("http://new-base-url.com/");
+ Assert.AreEqual(p2.Configuration.ApiClient.RestClient.BaseUrl.ToString(), "http://new-base-url.com/");
+
+ // using a different configuration
+ Configuration c1 = new Configuration();
+ PetApi p3 = new PetApi(c1);
+ Assert.AreSame(p3.Configuration, c1);
+
+ }
+
+ [Test()]
+ public void TestTimeout()
+ {
+ Configuration c1 = new Configuration();
+ Assert.AreEqual(100000, c1.Timeout); // default vaue
+
+ c1.Timeout = 50000;
+ Assert.AreEqual(50000, c1.Timeout);
+ }
+
+ }
+}
diff --git a/samples/client/petstore/dart/petstore/.analysis_options b/CI/samples.ci/client/petstore/dart2/petstore/.analysis_options
similarity index 100%
rename from samples/client/petstore/dart/petstore/.analysis_options
rename to CI/samples.ci/client/petstore/dart2/petstore/.analysis_options
diff --git a/CI/samples.ci/client/petstore/dart2/petstore/README.md b/CI/samples.ci/client/petstore/dart2/petstore/README.md
new file mode 100644
index 000000000000..2139c301745c
--- /dev/null
+++ b/CI/samples.ci/client/petstore/dart2/petstore/README.md
@@ -0,0 +1,37 @@
+# Background
+
+## Current state of tests
+
+TL;DR currently the only tests are e2e tests that were adapted to use a faked http client. While pushing data around as a smoke test has some value, more testing is required. In particular we need comprehensive unit/integration tests.
+
+- an old set of e2e tests are skipped for CI, as they hit a live endpoint and so are inherently flaky
+ - `pet_test.dart`
+ - `store_test.dart`
+ - `user_test.dart`
+- the above set of tests were adapted to use a faked http client
+ - the tests are not really well suited to being used with a stubbed client, many are basically just testing the endpoint logic
+ - while not a great set of tests, they do have some value as a smoke test for template changes
+- the adapted tests and files that contain test data:
+ - `pet_test_fake_client.dart`
+ - `store_test_fake_client.dart`
+ - `user_test_fake_client.dart`
+ - `fake_client.dart`
+ - `file_upload_response.json`
+
+## Assumptions
+
+- the tests will be run as part of CI and so have access to dart:io
+
+# Running
+
+## If not already done, resolve dependencies
+
+`pub get`
+
+## To run tests in a single file:
+
+`pub run test test/pet_test.dart`
+
+## To run all tests in the test folder:
+
+`pub run test`
diff --git a/CI/samples.ci/client/petstore/dart2/petstore/pom.xml b/CI/samples.ci/client/petstore/dart2/petstore/pom.xml
new file mode 100644
index 000000000000..c4ce7b4d68e7
--- /dev/null
+++ b/CI/samples.ci/client/petstore/dart2/petstore/pom.xml
@@ -0,0 +1,73 @@
+
+ 4.0.0
+ org.openapitools
+ Dart2PetstoreClientTests
+ pom
+ 1.0.0-SNAPSHOT
+ Dart2 Petstore Client
+
+
+
+ maven-dependency-plugin
+
+
+ package
+
+ copy-dependencies
+
+
+ ${project.build.directory}
+
+
+
+
+
+ org.codehaus.mojo
+ exec-maven-plugin
+ 1.2.1
+
+
+ export-dartfmt
+ pre-install-test
+
+ exec
+
+
+ export
+
+ DART_FMT_PATH=/usr/local/bin/dartfmt
+
+
+
+
+ pub-get
+ pre-integration-test
+
+ exec
+
+
+ pub
+
+ get
+
+
+
+
+ pub-test
+ integration-test
+
+ exec
+
+
+ pub
+
+ run
+ test
+
+
+
+
+
+
+
+
diff --git a/CI/samples.ci/client/petstore/dart2/petstore/pubspec.lock b/CI/samples.ci/client/petstore/dart2/petstore/pubspec.lock
new file mode 100644
index 000000000000..78daa43da5d9
--- /dev/null
+++ b/CI/samples.ci/client/petstore/dart2/petstore/pubspec.lock
@@ -0,0 +1,355 @@
+# Generated by pub
+# See https://dart.dev/tools/pub/glossary#lockfile
+packages:
+ analyzer:
+ dependency: transitive
+ description:
+ name: analyzer
+ url: "https://pub.dartlang.org"
+ source: hosted
+ version: "0.38.4"
+ args:
+ dependency: transitive
+ description:
+ name: args
+ url: "https://pub.dartlang.org"
+ source: hosted
+ version: "1.5.2"
+ async:
+ dependency: transitive
+ description:
+ name: async
+ url: "https://pub.dartlang.org"
+ source: hosted
+ version: "2.3.0"
+ boolean_selector:
+ dependency: transitive
+ description:
+ name: boolean_selector
+ url: "https://pub.dartlang.org"
+ source: hosted
+ version: "1.0.5"
+ charcode:
+ dependency: transitive
+ description:
+ name: charcode
+ url: "https://pub.dartlang.org"
+ source: hosted
+ version: "1.1.2"
+ collection:
+ dependency: "direct dev"
+ description:
+ name: collection
+ url: "https://pub.dartlang.org"
+ source: hosted
+ version: "1.14.12"
+ convert:
+ dependency: transitive
+ description:
+ name: convert
+ url: "https://pub.dartlang.org"
+ source: hosted
+ version: "2.1.1"
+ crypto:
+ dependency: transitive
+ description:
+ name: crypto
+ url: "https://pub.dartlang.org"
+ source: hosted
+ version: "2.1.3"
+ csslib:
+ dependency: transitive
+ description:
+ name: csslib
+ url: "https://pub.dartlang.org"
+ source: hosted
+ version: "0.16.1"
+ front_end:
+ dependency: transitive
+ description:
+ name: front_end
+ url: "https://pub.dartlang.org"
+ source: hosted
+ version: "0.1.26"
+ glob:
+ dependency: transitive
+ description:
+ name: glob
+ url: "https://pub.dartlang.org"
+ source: hosted
+ version: "1.1.7"
+ html:
+ dependency: transitive
+ description:
+ name: html
+ url: "https://pub.dartlang.org"
+ source: hosted
+ version: "0.14.0+2"
+ http:
+ dependency: "direct dev"
+ description:
+ name: http
+ url: "https://pub.dartlang.org"
+ source: hosted
+ version: "0.12.0+2"
+ http_multi_server:
+ dependency: transitive
+ description:
+ name: http_multi_server
+ url: "https://pub.dartlang.org"
+ source: hosted
+ version: "2.1.0"
+ http_parser:
+ dependency: transitive
+ description:
+ name: http_parser
+ url: "https://pub.dartlang.org"
+ source: hosted
+ version: "3.1.3"
+ io:
+ dependency: transitive
+ description:
+ name: io
+ url: "https://pub.dartlang.org"
+ source: hosted
+ version: "0.3.3"
+ js:
+ dependency: transitive
+ description:
+ name: js
+ url: "https://pub.dartlang.org"
+ source: hosted
+ version: "0.6.1+1"
+ kernel:
+ dependency: transitive
+ description:
+ name: kernel
+ url: "https://pub.dartlang.org"
+ source: hosted
+ version: "0.3.26"
+ matcher:
+ dependency: transitive
+ description:
+ name: matcher
+ url: "https://pub.dartlang.org"
+ source: hosted
+ version: "0.12.5"
+ meta:
+ dependency: transitive
+ description:
+ name: meta
+ url: "https://pub.dartlang.org"
+ source: hosted
+ version: "1.1.7"
+ mime:
+ dependency: transitive
+ description:
+ name: mime
+ url: "https://pub.dartlang.org"
+ source: hosted
+ version: "0.9.6+3"
+ mockito:
+ dependency: "direct dev"
+ description:
+ name: mockito
+ url: "https://pub.dartlang.org"
+ source: hosted
+ version: "4.1.1"
+ multi_server_socket:
+ dependency: transitive
+ description:
+ name: multi_server_socket
+ url: "https://pub.dartlang.org"
+ source: hosted
+ version: "1.0.2"
+ node_preamble:
+ dependency: transitive
+ description:
+ name: node_preamble
+ url: "https://pub.dartlang.org"
+ source: hosted
+ version: "1.4.8"
+ openapi:
+ dependency: "direct main"
+ description:
+ path: "../petstore_client_lib"
+ relative: true
+ source: path
+ version: "1.0.0"
+ package_config:
+ dependency: transitive
+ description:
+ name: package_config
+ url: "https://pub.dartlang.org"
+ source: hosted
+ version: "1.1.0"
+ package_resolver:
+ dependency: transitive
+ description:
+ name: package_resolver
+ url: "https://pub.dartlang.org"
+ source: hosted
+ version: "1.0.10"
+ path:
+ dependency: transitive
+ description:
+ name: path
+ url: "https://pub.dartlang.org"
+ source: hosted
+ version: "1.6.4"
+ pedantic:
+ dependency: transitive
+ description:
+ name: pedantic
+ url: "https://pub.dartlang.org"
+ source: hosted
+ version: "1.8.0+1"
+ pool:
+ dependency: transitive
+ description:
+ name: pool
+ url: "https://pub.dartlang.org"
+ source: hosted
+ version: "1.4.0"
+ pub_semver:
+ dependency: transitive
+ description:
+ name: pub_semver
+ url: "https://pub.dartlang.org"
+ source: hosted
+ version: "1.4.2"
+ shelf:
+ dependency: transitive
+ description:
+ name: shelf
+ url: "https://pub.dartlang.org"
+ source: hosted
+ version: "0.7.5"
+ shelf_packages_handler:
+ dependency: transitive
+ description:
+ name: shelf_packages_handler
+ url: "https://pub.dartlang.org"
+ source: hosted
+ version: "1.0.4"
+ shelf_static:
+ dependency: transitive
+ description:
+ name: shelf_static
+ url: "https://pub.dartlang.org"
+ source: hosted
+ version: "0.2.8"
+ shelf_web_socket:
+ dependency: transitive
+ description:
+ name: shelf_web_socket
+ url: "https://pub.dartlang.org"
+ source: hosted
+ version: "0.2.3"
+ source_map_stack_trace:
+ dependency: transitive
+ description:
+ name: source_map_stack_trace
+ url: "https://pub.dartlang.org"
+ source: hosted
+ version: "1.1.5"
+ source_maps:
+ dependency: transitive
+ description:
+ name: source_maps
+ url: "https://pub.dartlang.org"
+ source: hosted
+ version: "0.10.8"
+ source_span:
+ dependency: transitive
+ description:
+ name: source_span
+ url: "https://pub.dartlang.org"
+ source: hosted
+ version: "1.5.5"
+ stack_trace:
+ dependency: transitive
+ description:
+ name: stack_trace
+ url: "https://pub.dartlang.org"
+ source: hosted
+ version: "1.9.3"
+ stream_channel:
+ dependency: transitive
+ description:
+ name: stream_channel
+ url: "https://pub.dartlang.org"
+ source: hosted
+ version: "2.0.0"
+ string_scanner:
+ dependency: transitive
+ description:
+ name: string_scanner
+ url: "https://pub.dartlang.org"
+ source: hosted
+ version: "1.0.5"
+ term_glyph:
+ dependency: transitive
+ description:
+ name: term_glyph
+ url: "https://pub.dartlang.org"
+ source: hosted
+ version: "1.1.0"
+ test:
+ dependency: "direct dev"
+ description:
+ name: test
+ url: "https://pub.dartlang.org"
+ source: hosted
+ version: "1.8.0"
+ test_api:
+ dependency: transitive
+ description:
+ name: test_api
+ url: "https://pub.dartlang.org"
+ source: hosted
+ version: "0.2.8"
+ test_core:
+ dependency: transitive
+ description:
+ name: test_core
+ url: "https://pub.dartlang.org"
+ source: hosted
+ version: "0.2.10"
+ typed_data:
+ dependency: transitive
+ description:
+ name: typed_data
+ url: "https://pub.dartlang.org"
+ source: hosted
+ version: "1.1.6"
+ vm_service:
+ dependency: transitive
+ description:
+ name: vm_service
+ url: "https://pub.dartlang.org"
+ source: hosted
+ version: "2.1.0"
+ watcher:
+ dependency: transitive
+ description:
+ name: watcher
+ url: "https://pub.dartlang.org"
+ source: hosted
+ version: "0.9.7+12"
+ web_socket_channel:
+ dependency: transitive
+ description:
+ name: web_socket_channel
+ url: "https://pub.dartlang.org"
+ source: hosted
+ version: "1.0.15"
+ yaml:
+ dependency: transitive
+ description:
+ name: yaml
+ url: "https://pub.dartlang.org"
+ source: hosted
+ version: "2.2.0"
+sdks:
+ dart: ">=2.5.0 <3.0.0"
diff --git a/CI/samples.ci/client/petstore/dart2/petstore/pubspec.yaml b/CI/samples.ci/client/petstore/dart2/petstore/pubspec.yaml
new file mode 100644
index 000000000000..f26301750933
--- /dev/null
+++ b/CI/samples.ci/client/petstore/dart2/petstore/pubspec.yaml
@@ -0,0 +1,13 @@
+name: petstore_client
+version: 1.0.0
+description: Petstore client using OpenAPI library
+environment:
+ sdk: '>=2.5.0 <3.0.0'
+dependencies:
+ openapi:
+ path: ../petstore_client_lib
+dev_dependencies:
+ test: ^1.8.0
+ mockito: ^4.1.1
+ http: ^0.12.0
+ collection: ^1.14.12
diff --git a/CI/samples.ci/client/petstore/dart2/petstore/test/fake_client.dart b/CI/samples.ci/client/petstore/dart2/petstore/test/fake_client.dart
new file mode 100644
index 000000000000..82daf74108e9
--- /dev/null
+++ b/CI/samples.ci/client/petstore/dart2/petstore/test/fake_client.dart
@@ -0,0 +1,133 @@
+import 'dart:convert';
+
+import 'package:collection/collection.dart';
+import 'package:http/http.dart';
+import 'package:mockito/mockito.dart';
+
+/// A fake client that checks for expected values and returns given responses
+///
+/// Checks for the expected values (url, headers, body) and throws if not found
+///
+/// If exception is non-null the request will throw the exception, after other
+/// checks are performed
+class FakeClient extends Fake implements Client {
+ FakeClient({
+ this.throwException,
+ this.expectedPostRequestBody,
+ this.postResponseBody,
+ this.expectedGetRequestBody,
+ this.getResponseBody,
+ this.deleteResponseBody,
+ this.expectedPutRequestBody,
+ this.putResponseBody,
+ this.sendResponseBody,
+ this.expectedUrl,
+ this.expectedHeaders = const {'Content-Type': 'application/json'},
+ });
+
+ Exception throwException;
+ Object expectedPostRequestBody;
+ String postResponseBody;
+ String expectedGetRequestBody;
+ String getResponseBody;
+ String deleteResponseBody;
+ String expectedPutRequestBody;
+ String putResponseBody;
+ String sendResponseBody;
+ String expectedUrl;
+ Map expectedHeaders;
+
+ @override
+ Future post(url,
+ {Map headers, body, Encoding encoding}) async {
+ // check that the request was made with expected values
+ if (url != expectedUrl) {
+ throw StateError(
+ 'POST was called with unexpected url: ${url} should be ${expectedUrl}');
+ }
+ if (!MapEquality().equals(headers, expectedHeaders)) {
+ throw StateError(
+ 'POST was called with unexpected headers: ${headers} should be ${expectedHeaders}');
+ }
+ // currently we only expect Map (and subtypes) or Strings
+ if (body is Map) {
+ if (!MapEquality().equals(body, expectedPostRequestBody)) {
+ throw StateError(
+ 'POST was called with unexpected body: ${body} should be ${expectedPostRequestBody}');
+ }
+ } else if (body != expectedPostRequestBody) {
+ throw StateError(
+ 'POST was called with unexpected body: ${body} should be ${expectedPostRequestBody}');
+ }
+
+ // throw if set to throw
+ if (throwException != null) throw throwException;
+
+ return Response(postResponseBody, 200);
+ }
+
+ @override
+ Future get(url, {Map headers}) async {
+ // check that the request was made with expected values
+ if (url != expectedUrl) {
+ throw StateError(
+ 'GET was called with unexpected url: ${url} should be ${expectedUrl}');
+ }
+ if (!MapEquality().equals(headers, expectedHeaders)) {
+ throw StateError(
+ 'GET was called with unexpected headers: ${headers} should be ${expectedHeaders}');
+ }
+
+ // throw if set to throw
+ if (throwException != null) throw throwException;
+
+ return Response(getResponseBody, 200);
+ }
+
+ @override
+ Future delete(url, {Map headers}) async {
+ // check that the request was made with expected values
+ if (url != expectedUrl) {
+ throw StateError(
+ 'DELETE was called with unexpected url: ${url} should be ${expectedUrl}');
+ }
+ if (!MapEquality().equals(headers, expectedHeaders)) {
+ throw StateError(
+ 'DELETE was called with unexpected headers: ${headers} should be ${expectedHeaders}');
+ }
+
+ // throw if set to throw
+ if (throwException != null) throw throwException;
+
+ return Response(deleteResponseBody, 200);
+ }
+
+ @override
+ Future put(url,
+ {Map headers, body, Encoding encoding}) async {
+ // check that the request was made with expected values
+ if (url != expectedUrl) {
+ throw StateError(
+ 'PUT was called with unexpected url: ${url} should be ${expectedUrl}');
+ }
+ if (!MapEquality().equals(headers, expectedHeaders)) {
+ throw StateError(
+ 'PUT was called with unexpected headers: ${headers} should be ${expectedHeaders}');
+ }
+ if (body != expectedPutRequestBody) {
+ throw StateError(
+ 'PUT was called with unexpected body: ${body} should be ${expectedPutRequestBody}');
+ }
+
+ // throw if set to throw
+ if (throwException != null) throw throwException;
+
+ return Response(putResponseBody, 200);
+ }
+
+ @override
+ Future send(BaseRequest request) async {
+ List bytes = utf8.encode(sendResponseBody);
+ return StreamedResponse(Stream.fromIterable([bytes]), 200);
+ }
+}
diff --git a/CI/samples.ci/client/petstore/dart2/petstore/test/file_upload_response.json b/CI/samples.ci/client/petstore/dart2/petstore/test/file_upload_response.json
new file mode 100644
index 000000000000..8855b00d9e38
--- /dev/null
+++ b/CI/samples.ci/client/petstore/dart2/petstore/test/file_upload_response.json
@@ -0,0 +1 @@
+{"code":200,"type":"unknown","message":"additionalMetadata: \nFile uploaded to ./null, 4 bytes"}
\ No newline at end of file
diff --git a/CI/samples.ci/client/petstore/dart2/petstore/test/inventory_response.json b/CI/samples.ci/client/petstore/dart2/petstore/test/inventory_response.json
new file mode 100644
index 000000000000..b4388d1e7b35
--- /dev/null
+++ b/CI/samples.ci/client/petstore/dart2/petstore/test/inventory_response.json
@@ -0,0 +1 @@
+{"mine":1,"sold":18,"string":568,"Dead":2,"test":2,"Nonavailable":1,"custom":3,"pending":20,"available":2212,"notAvailable":26,"avaiflable":1,"AVAILABLE":1,"swimming":1,"availablee":2,"success":1,"105":1,"missing":11,"disabled":1,"Available":1,"]]>":1}
\ No newline at end of file
diff --git a/CI/samples.ci/client/petstore/dart2/petstore/test/pet_faked_client_test.dart b/CI/samples.ci/client/petstore/dart2/petstore/test/pet_faked_client_test.dart
new file mode 100644
index 000000000000..c0374e8c8b1d
--- /dev/null
+++ b/CI/samples.ci/client/petstore/dart2/petstore/test/pet_faked_client_test.dart
@@ -0,0 +1,231 @@
+import 'dart:io';
+
+import 'package:http/http.dart';
+import 'package:openapi/api.dart';
+import 'package:test/test.dart';
+
+import 'fake_client.dart';
+import 'random_id.dart';
+
+void main() {
+ final petApi = PetApi();
+
+ Pet makePet({
+ int id = 1234,
+ String name = 'Fluffy',
+ String status = '',
+ }) {
+ final category = Category()
+ ..id = 1234
+ ..name = 'eyeColor';
+ final tags = [
+ Tag()
+ ..id = 1234
+ ..name = 'New York',
+ Tag()
+ ..id = 124321
+ ..name = 'Jose'
+ ];
+ return Pet()
+ ..id = id
+ ..category = category
+ ..tags = tags
+ ..name = name
+ ..status = status
+ ..photoUrls = ['https://petstore.com/sample/photo1.jpg'];
+ }
+
+ /// Setup the fake client then call [petApi.addPet]
+ Future addPet(Pet pet) {
+ petApi.apiClient.client = FakeClient(
+ expectedUrl: 'http://petstore.swagger.io/v2/pet',
+ expectedPostRequestBody: petApi.apiClient.serialize(pet),
+ postResponseBody: '',
+ );
+ return petApi.addPet(pet);
+ }
+
+ group('Pet API with faked client', () {
+ test('adds a new pet and gets it by id', () async {
+ final id = newId();
+ final newPet = makePet(id: id);
+
+ // use the pet api to add a pet
+ petApi.apiClient.client = FakeClient(
+ expectedUrl: 'http://petstore.swagger.io/v2/pet',
+ expectedPostRequestBody: petApi.apiClient.serialize(newPet),
+ postResponseBody: '',
+ );
+ await petApi.addPet(newPet);
+
+ // retrieve the same pet by id
+ petApi.apiClient.client = FakeClient(
+ expectedUrl: 'http://petstore.swagger.io/v2/pet/$id',
+ getResponseBody: petApi.apiClient.serialize(newPet),
+ );
+ final retrievedPet = await petApi.getPetById(id);
+
+ // check that the retrieved id is as expected
+ expect(retrievedPet.id, equals(id));
+ });
+
+ test('doesn\'t get non-existing pet by id', () {
+ final id = newId();
+ petApi.apiClient.client = FakeClient(
+ expectedUrl: 'http://petstore.swagger.io/v2/pet/$id',
+ throwException: ApiException(400, 'not found'),
+ );
+ expect(
+ petApi.getPetById(id), throwsA(equals(TypeMatcher())));
+ });
+
+ test('deletes existing pet by id', () async {
+ final id = newId();
+ Pet newPet = makePet(id: id);
+
+ // add a new pet
+ petApi.apiClient.client = FakeClient(
+ expectedUrl: 'http://petstore.swagger.io/v2/pet',
+ expectedPostRequestBody: petApi.apiClient.serialize(newPet),
+ postResponseBody: '',
+ );
+ await petApi.addPet(newPet);
+
+ // delete the pet
+ petApi.apiClient.client = FakeClient(
+ expectedUrl: 'http://petstore.swagger.io/v2/pet/$id',
+ expectedHeaders: {
+ 'Content-Type': 'application/json',
+ 'api_key': 'special-key'
+ },
+ deleteResponseBody: '',
+ );
+ await petApi.deletePet(id, apiKey: 'special-key');
+
+ // check for the deleted pet
+ petApi.apiClient.client = FakeClient(
+ expectedUrl: 'http://petstore.swagger.io/v2/pet/$id',
+ throwException: ApiException(400, 'Not found'),
+ );
+ expect(
+ petApi.getPetById(id), throwsA(equals(TypeMatcher())));
+ });
+
+ test('updates pet with form', () async {
+ final id = newId();
+ final newPet = makePet(id: id, name: 'Snowy');
+
+ // add a new pet
+ petApi.apiClient.client = FakeClient(
+ expectedUrl: 'http://petstore.swagger.io/v2/pet',
+ expectedPostRequestBody: petApi.apiClient.serialize(newPet),
+ postResponseBody: '',
+ );
+ await petApi.addPet(newPet);
+
+ final multipartRequest = MultipartRequest(null, null);
+ multipartRequest.fields['name'] = 'Doge';
+ multipartRequest.fields['status'] = '';
+
+ // update with form
+ petApi.apiClient.client = FakeClient(
+ expectedUrl: 'http://petstore.swagger.io/v2/pet/$id',
+ expectedHeaders: {
+ 'Content-Type': 'application/x-www-form-urlencoded',
+ },
+ expectedPostRequestBody: {'name': 'Doge', 'status': ''},
+ postResponseBody: '',
+ );
+ await petApi.updatePetWithForm(id, name: 'Doge', status: '');
+
+ // check update worked
+ newPet.name = 'Doge';
+ petApi.apiClient.client = FakeClient(
+ expectedUrl: 'http://petstore.swagger.io/v2/pet/$id',
+ getResponseBody: petApi.apiClient.serialize(newPet),
+ );
+ final pet = await petApi.getPetById(id);
+ expect(pet.name, equals('Doge'));
+ });
+
+ test('updates existing pet', () async {
+ final id = newId();
+ final name = 'Snowy';
+ final newPet = makePet(id: id);
+ final updatePet = makePet(id: id, name: name);
+
+ // add a new pet
+ petApi.apiClient.client = FakeClient(
+ expectedUrl: 'http://petstore.swagger.io/v2/pet',
+ expectedPostRequestBody: petApi.apiClient.serialize(newPet),
+ postResponseBody: '',
+ );
+ await petApi.addPet(newPet);
+
+ // update the same pet
+ petApi.apiClient.client = FakeClient(
+ expectedUrl: 'http://petstore.swagger.io/v2/pet',
+ expectedPutRequestBody: petApi.apiClient.serialize(updatePet),
+ putResponseBody: '',
+ );
+ await petApi.updatePet(updatePet);
+
+ // check update worked
+ petApi.apiClient.client = FakeClient(
+ expectedUrl: 'http://petstore.swagger.io/v2/pet/$id',
+ getResponseBody: petApi.apiClient.serialize(updatePet),
+ );
+ final pet = await petApi.getPetById(id);
+ expect(pet.name, equals(name));
+ });
+
+ test('finds pets by status', () async {
+ final id1 = newId();
+ final id2 = newId();
+ final id3 = newId();
+ final status = 'available';
+ final pet1 = makePet(id: id1, status: status);
+ final pet2 = makePet(id: id2, status: status);
+ final pet3 = makePet(id: id3, status: 'sold');
+
+ return Future.wait([addPet(pet1), addPet(pet2), addPet(pet3)])
+ .then((_) async {
+ // retrieve pets by status
+ petApi.apiClient.client = FakeClient(
+ expectedUrl:
+ 'http://petstore.swagger.io/v2/pet/findByStatus?status=$status',
+ getResponseBody: petApi.apiClient.serialize([pet1, pet2]),
+ );
+ final pets = await petApi.findPetsByStatus([status]);
+ final petIds = pets.map((pet) => pet.id).toList();
+ expect(petIds, contains(id1));
+ expect(petIds, contains(id2));
+ expect(petIds, isNot(contains(id3)));
+ });
+ });
+
+ test('uploads a pet image', () async {
+ final id = newId();
+ final newPet = makePet(id: id);
+ // get some test data (recorded from live response)
+ final uploadResponse =
+ await File('test/file_upload_response.json').readAsString();
+
+ // add a new pet
+ petApi.apiClient.client = FakeClient(
+ expectedUrl: 'http://petstore.swagger.io/v2/pet',
+ expectedPostRequestBody: petApi.apiClient.serialize(newPet),
+ postResponseBody: '',
+ );
+ await petApi.addPet(newPet);
+
+ petApi.apiClient.client = FakeClient(
+ expectedUrl: 'http://petstore.swagger.io/v2/pet',
+ sendResponseBody: uploadResponse,
+ );
+ final file =
+ new MultipartFile.fromBytes('file', [104, 101, 108, 108, 111]);
+ await petApi.uploadFile(id, additionalMetadata: '', file: file);
+ });
+ });
+}
diff --git a/CI/samples.ci/client/petstore/dart2/petstore/test/pet_test.dart b/CI/samples.ci/client/petstore/dart2/petstore/test/pet_test.dart
new file mode 100644
index 000000000000..b978022e5651
--- /dev/null
+++ b/CI/samples.ci/client/petstore/dart2/petstore/test/pet_test.dart
@@ -0,0 +1,103 @@
+import 'dart:async';
+
+import 'package:http/http.dart';
+import 'package:openapi/api.dart';
+import 'package:test/test.dart';
+
+import 'random_id.dart';
+
+void main() {
+ var petApi = PetApi();
+
+ Pet makePet({
+ int id = 1234,
+ String name = 'Fluffy',
+ String status = '',
+ }) {
+ final category = Category()
+ ..id = 1234
+ ..name = 'eyeColor';
+ final tags = [
+ Tag()
+ ..id = 1234
+ ..name = 'New York',
+ Tag()
+ ..id = 124321
+ ..name = 'Jose'
+ ];
+ return Pet()
+ ..id = id
+ ..category = category
+ ..tags = tags
+ ..name = name
+ ..status = status
+ ..photoUrls = ['https://petstore.com/sample/photo1.jpg'];
+ }
+
+ group('Pet API with live client', () {
+ test('adds a new pet and gets it by id', () async {
+ var id = newId();
+ await petApi.addPet(makePet(id: id));
+ var pet = await petApi.getPetById(id);
+ expect(pet.id, equals(id));
+ });
+
+ test('doesn\'t get non-existing pet by id', () {
+ expect(petApi.getPetById(newId()),
+ throwsA(equals(TypeMatcher())));
+ });
+
+ test('deletes existing pet by id', () async {
+ var id = newId();
+ await petApi.addPet(makePet(id: id));
+ await petApi.deletePet(id, apiKey: 'special-key');
+ expect(
+ petApi.getPetById(id), throwsA(equals(TypeMatcher())));
+ });
+
+ test('updates pet with form', () async {
+ var id = newId();
+
+ await petApi.addPet(makePet(id: id, name: 'Snowy'));
+ await petApi.updatePetWithForm(id, name: 'Doge', status: '');
+ var pet = await petApi.getPetById(id);
+ expect(pet.name, equals('Doge'));
+ });
+
+ test('updates existing pet', () async {
+ var id = newId();
+ var name = 'Snowy';
+
+ await petApi.addPet(makePet(id: id));
+ await petApi.updatePet(makePet(id: id, name: name));
+ var pet = await petApi.getPetById(id);
+ expect(pet.name, equals(name));
+ });
+
+ test('finds pets by status', () async {
+ var id1 = newId();
+ var id2 = newId();
+ var id3 = newId();
+ var status = 'available';
+
+ return Future.wait([
+ petApi.addPet(makePet(id: id1, status: status)),
+ petApi.addPet(makePet(id: id2, status: status)),
+ petApi.addPet(makePet(id: id3, status: 'sold'))
+ ]).then((_) async {
+ var pets = await petApi.findPetsByStatus([status]);
+ var petIds = pets.map((pet) => pet.id).toList();
+ expect(petIds, contains(id1));
+ expect(petIds, contains(id2));
+ expect(petIds, isNot(contains(id3)));
+ });
+ });
+
+ test('uploads a pet image', () async {
+ var id = newId();
+ await petApi.addPet(makePet(id: id));
+ var file = new MultipartFile.fromBytes('file', [104, 101, 108, 108, 111]);
+ await petApi.uploadFile(id, additionalMetadata: '', file: file);
+ });
+ }, skip: 'e2e tests for CI');
+}
diff --git a/CI/samples.ci/client/petstore/dart2/petstore/test/random_id.dart b/CI/samples.ci/client/petstore/dart2/petstore/test/random_id.dart
new file mode 100644
index 000000000000..0457428c7dd4
--- /dev/null
+++ b/CI/samples.ci/client/petstore/dart2/petstore/test/random_id.dart
@@ -0,0 +1,7 @@
+import 'dart:math';
+
+final _random = new Random();
+
+int newId() {
+ return _random.nextInt(999999);
+}
\ No newline at end of file
diff --git a/CI/samples.ci/client/petstore/dart2/petstore/test/store_faked_client_test.dart b/CI/samples.ci/client/petstore/dart2/petstore/test/store_faked_client_test.dart
new file mode 100644
index 000000000000..dce22ec58b2e
--- /dev/null
+++ b/CI/samples.ci/client/petstore/dart2/petstore/test/store_faked_client_test.dart
@@ -0,0 +1,85 @@
+import 'dart:io';
+
+import 'package:openapi/api.dart';
+import 'package:test/test.dart';
+
+import 'fake_client.dart';
+import 'random_id.dart';
+
+void main() {
+ var storeApi = new StoreApi();
+
+ Order makeOrder({int id}) {
+ return Order()
+ ..id = id
+ ..petId = 1234
+ ..quantity = 1
+ ..shipDate = DateTime.now()
+ ..status
+ ..complete = false;
+ }
+
+ group('Store API with faked client', () {
+ test('places an order and gets it by id', () async {
+ final id = newId();
+ final newOrder = makeOrder(id: id);
+
+ // use the store api to add an order
+ storeApi.apiClient.client = FakeClient(
+ expectedUrl: 'http://petstore.swagger.io/v2/store/order',
+ expectedPostRequestBody: storeApi.apiClient.serialize(newOrder),
+ postResponseBody: storeApi.apiClient.serialize(newOrder),
+ );
+ await storeApi.placeOrder(newOrder);
+
+ // retrieve the same order by id
+ storeApi.apiClient.client = FakeClient(
+ expectedUrl: 'http://petstore.swagger.io/v2/store/order/$id',
+ getResponseBody: storeApi.apiClient.serialize(newOrder),
+ );
+ final placedOrder = await storeApi.getOrderById(id);
+ expect(placedOrder.id, equals(id));
+ });
+
+ test('deletes an order', () async {
+ final id = newId();
+ final newOrder = makeOrder(id: id);
+
+ // use the store api to add an order
+ storeApi.apiClient.client = FakeClient(
+ expectedUrl: 'http://petstore.swagger.io/v2/store/order',
+ expectedPostRequestBody: storeApi.apiClient.serialize(newOrder),
+ postResponseBody: storeApi.apiClient.serialize(newOrder),
+ );
+ await storeApi.placeOrder(newOrder);
+
+ // delete the same order
+ storeApi.apiClient.client = FakeClient(
+ expectedUrl: 'http://petstore.swagger.io/v2/store/order/$id',
+ deleteResponseBody: '',
+ );
+ await storeApi.deleteOrder(id.toString());
+
+ // try and retrieve the order
+ storeApi.apiClient.client = FakeClient(
+ expectedUrl: 'http://petstore.swagger.io/v2/store/order/$id',
+ throwException: ApiException(400, 'Not found'),
+ );
+ expect(storeApi.getOrderById(id),
+ throwsA(equals(TypeMatcher())));
+ });
+
+ test('gets the store inventory', () async {
+ // get some test data (recorded from live response)
+ final inventoryResponse =
+ await File('test/inventory_response.json').readAsString();
+ // use the store api to get the inventory
+ storeApi.apiClient.client = FakeClient(
+ expectedUrl: 'http://petstore.swagger.io/v2/store/inventory',
+ getResponseBody: inventoryResponse,
+ );
+ Map inventory = await storeApi.getInventory();
+ expect(inventory.length, isNot(equals(0)));
+ });
+ });
+}
diff --git a/CI/samples.ci/client/petstore/dart2/petstore/test/store_test.dart b/CI/samples.ci/client/petstore/dart2/petstore/test/store_test.dart
new file mode 100644
index 000000000000..ce4531e372db
--- /dev/null
+++ b/CI/samples.ci/client/petstore/dart2/petstore/test/store_test.dart
@@ -0,0 +1,42 @@
+import 'package:openapi/api.dart';
+import 'package:test/test.dart';
+
+import 'random_id.dart';
+
+void main() {
+ var storeApi = new StoreApi();
+
+ Order makeOrder({int id}) {
+ return Order()
+ ..id = id
+ ..petId = 1234
+ ..quantity = 1
+ ..shipDate = DateTime.now()
+ ..status
+ ..complete = false;
+ }
+
+ group('Store API with live client', () {
+ test('places an order and gets it by id', () async {
+ var id = newId();
+
+ await storeApi.placeOrder(makeOrder(id: id));
+ var order = await storeApi.getOrderById(id);
+ expect(order.id, equals(id));
+ });
+
+ test('deletes an order', () async {
+ var id = newId();
+
+ await storeApi.placeOrder(makeOrder(id: id));
+ await storeApi.deleteOrder(id.toString());
+ expect(storeApi.getOrderById(id),
+ throwsA(equals(TypeMatcher())));
+ });
+
+ test('gets the store inventory', () async {
+ Map inventory = await storeApi.getInventory();
+ expect(inventory.length, isNot(equals(0)));
+ });
+ }); // , skip: 'e2e tests for CI'
+}
diff --git a/CI/samples.ci/client/petstore/dart2/petstore/test/user_faked_client_test.dart b/CI/samples.ci/client/petstore/dart2/petstore/test/user_faked_client_test.dart
new file mode 100644
index 000000000000..df2b4686f13a
--- /dev/null
+++ b/CI/samples.ci/client/petstore/dart2/petstore/test/user_faked_client_test.dart
@@ -0,0 +1,170 @@
+import 'package:openapi/api.dart';
+import 'package:test/test.dart';
+
+import 'fake_client.dart';
+import 'random_id.dart';
+
+void main() {
+ var userApi = new UserApi();
+
+ User makeUser(
+ {int id, String userName = 'username', String password = 'password'}) {
+ return User()
+ ..id = id
+ ..username = userName
+ ..firstName = 'firstname'
+ ..lastName = 'lastname'
+ ..email = 'email'
+ ..password = password
+ ..phone = 'phone'
+ ..userStatus = 0;
+ }
+
+ group('User API with faked client', () {
+ test('creates a user', () async {
+ final id = newId();
+ final username = 'Mally45';
+ final newUser = makeUser(id: id, userName: username);
+
+ // use the user api to create a user
+ userApi.apiClient.client = FakeClient(
+ expectedUrl: 'http://petstore.swagger.io/v2/user',
+ expectedPostRequestBody: userApi.apiClient.serialize(newUser),
+ postResponseBody: userApi.apiClient.serialize(newUser),
+ );
+ await userApi.createUser(newUser);
+
+ // retrieve the same user
+ userApi.apiClient.client = FakeClient(
+ expectedUrl: 'http://petstore.swagger.io/v2/user/$username',
+ getResponseBody: userApi.apiClient.serialize(newUser),
+ );
+ var user = await userApi.getUserByName(username);
+ expect(user.id, equals(id));
+ });
+
+ test('creates users with list input', () async {
+ final firstId = newId();
+ final joe = 'Joe';
+
+ final sally = 'Sally';
+ final secondId = newId();
+
+ final users = [
+ makeUser(id: firstId, userName: joe),
+ makeUser(id: secondId, userName: sally),
+ ];
+
+ // use the user api to create a list of users
+ userApi.apiClient.client = FakeClient(
+ expectedUrl: 'http://petstore.swagger.io/v2/user/createWithList',
+ expectedPostRequestBody: userApi.apiClient.serialize(users),
+ postResponseBody: userApi.apiClient.serialize(users),
+ );
+ await userApi.createUsersWithListInput(users);
+
+ // retrieve the users
+ userApi.apiClient.client = FakeClient(
+ expectedUrl:
+ 'http://petstore.swagger.io/v2/user/${users.elementAt(0).username}',
+ getResponseBody: userApi.apiClient.serialize(
+ users.elementAt(0),
+ ),
+ );
+ final firstUser = await userApi.getUserByName(joe);
+ userApi.apiClient.client = FakeClient(
+ expectedUrl:
+ 'http://petstore.swagger.io/v2/user/${users.elementAt(1).username}',
+ getResponseBody: userApi.apiClient.serialize(
+ users.elementAt(1),
+ ),
+ );
+ final secondUser = await userApi.getUserByName(sally);
+ expect(firstUser.id, equals(firstId));
+ expect(secondUser.id, equals(secondId));
+ });
+
+ test('updates a user', () async {
+ final username = 'Arkjam89';
+ final email = 'test@example.com';
+ final newUser = makeUser(id: newId(), userName: username);
+
+ // use the user api to create a user
+ userApi.apiClient.client = FakeClient(
+ expectedUrl: 'http://petstore.swagger.io/v2/user',
+ expectedPostRequestBody: userApi.apiClient.serialize(newUser),
+ postResponseBody: userApi.apiClient.serialize(newUser),
+ );
+ await userApi.createUser(newUser);
+ newUser.email = email;
+
+ // use the user api to update the user
+ userApi.apiClient.client = FakeClient(
+ expectedUrl: 'http://petstore.swagger.io/v2/user/${newUser.username}',
+ expectedPutRequestBody: userApi.apiClient.serialize(newUser),
+ putResponseBody: userApi.apiClient.serialize(newUser),
+ );
+ await userApi.updateUser(username, newUser);
+
+ // retrieve the same user
+ userApi.apiClient.client = FakeClient(
+ expectedUrl: 'http://petstore.swagger.io/v2/user/${newUser.username}',
+ getResponseBody: userApi.apiClient.serialize(newUser),
+ );
+ var foundUser = await userApi.getUserByName(username);
+ expect(foundUser.email, equals(email));
+ });
+
+ test('deletes a user', () async {
+ final username = 'Riddlem325';
+ final newUser = makeUser(id: newId(), userName: username);
+
+ // use the user api to create a user
+ userApi.apiClient.client = FakeClient(
+ expectedUrl: 'http://petstore.swagger.io/v2/user',
+ expectedPostRequestBody: userApi.apiClient.serialize(newUser),
+ postResponseBody: userApi.apiClient.serialize(newUser),
+ );
+ await userApi.createUser(newUser);
+
+ // delete the same user
+ userApi.apiClient.client = FakeClient(
+ expectedUrl: 'http://petstore.swagger.io/v2/user/${newUser.username}',
+ deleteResponseBody: '',
+ );
+ await userApi.deleteUser(username);
+
+ // try and retrieve the user
+ userApi.apiClient.client = FakeClient(
+ expectedUrl: 'http://petstore.swagger.io/v2/user/${newUser.username}',
+ throwException: ApiException(400, 'Not found'),
+ );
+ expect(userApi.getUserByName(username),
+ throwsA(TypeMatcher()));
+ });
+
+ test('logs a user in', () async {
+ final username = 'sgarad625';
+ final password = 'lokimoki1';
+ final newUser =
+ makeUser(id: newId(), userName: username, password: password);
+
+ // use the user api to create a user
+ userApi.apiClient.client = FakeClient(
+ expectedUrl: 'http://petstore.swagger.io/v2/user',
+ expectedPostRequestBody: userApi.apiClient.serialize(newUser),
+ postResponseBody: userApi.apiClient.serialize(newUser),
+ );
+ await userApi.createUser(newUser);
+
+ // use the user api to login
+ userApi.apiClient.client = FakeClient(
+ expectedUrl:
+ 'http://petstore.swagger.io/v2/user/login?username=${newUser.username}&password=${newUser.password}',
+ getResponseBody: 'logged in user session:',
+ );
+ final result = await userApi.loginUser(username, password);
+ expect(result, contains('logged in user session:'));
+ });
+ });
+}
diff --git a/CI/samples.ci/client/petstore/dart2/petstore/test/user_test.dart b/CI/samples.ci/client/petstore/dart2/petstore/test/user_test.dart
new file mode 100644
index 000000000000..ea34b3713fa7
--- /dev/null
+++ b/CI/samples.ci/client/petstore/dart2/petstore/test/user_test.dart
@@ -0,0 +1,80 @@
+import 'package:openapi/api.dart';
+import 'package:test/test.dart';
+
+import 'random_id.dart';
+
+void main() {
+ var userApi = new UserApi();
+
+ User makeUser(
+ {int id, String userName = 'username', String password = 'password'}) {
+ return User()
+ ..id = id
+ ..username = userName
+ ..firstName = 'firstname'
+ ..lastName = 'lastname'
+ ..email = 'email'
+ ..password = password
+ ..phone = 'phone'
+ ..userStatus = 0;
+ }
+
+ group('User API with live client', () {
+ test('creates a user', () async {
+ var id = newId();
+ var username = 'Mally45';
+ await userApi.createUser(makeUser(id: id, userName: username));
+ var user = await userApi.getUserByName(username);
+ expect(user.id, equals(id));
+ });
+
+ test('creates users with list input', () async {
+ var firstId = newId();
+ var joe = 'Joe';
+
+ var sally = 'Sally';
+ var secondId = newId();
+
+ var users = [
+ makeUser(id: firstId, userName: joe),
+ makeUser(id: secondId, userName: sally),
+ ];
+
+ await userApi.createUsersWithListInput(users);
+ var firstUser = await userApi.getUserByName(joe);
+ var secondUser = await userApi.getUserByName(sally);
+ expect(firstUser.id, equals(firstId));
+ expect(secondUser.id, equals(secondId));
+ });
+
+ test('updates a user', () async {
+ var username = 'Arkjam89';
+ var email = 'test@example.com';
+ var user = makeUser(id: newId(), userName: username);
+
+ await userApi.createUser(user);
+ user.email = email;
+ await userApi.updateUser(username, user);
+ var foundUser = await userApi.getUserByName(username);
+ expect(foundUser.email, equals(email));
+ });
+
+ test('deletes a user', () async {
+ var username = 'Riddlem325';
+ await userApi.createUser(makeUser(id: newId(), userName: username));
+ await userApi.deleteUser(username);
+ expect(userApi.getUserByName(username),
+ throwsA(TypeMatcher()));
+ });
+
+ test('logs a user in', () async {
+ var username = 'sgarad625';
+ var password = 'lokimoki1';
+ var user = makeUser(id: newId(), userName: username, password: password);
+
+ await userApi.createUser(user);
+ var result = await userApi.loginUser(username, password);
+ expect(result, contains('logged in user session:'));
+ });
+ }, skip: 'e2e tests for CI');
+}
diff --git a/CI/samples.ci/client/petstore/elixir/pom.xml b/CI/samples.ci/client/petstore/elixir/pom.xml
new file mode 100644
index 000000000000..589db62d2dca
--- /dev/null
+++ b/CI/samples.ci/client/petstore/elixir/pom.xml
@@ -0,0 +1,75 @@
+
+ 4.0.0
+ io.swagger
+ ElixirPetstoreClientTests
+ pom
+ 1.0-SNAPSHOT
+ Elixir Petstore Client
+
+
+
+ maven-dependency-plugin
+
+
+ package
+
+ copy-dependencies
+
+
+ ${project.build.directory}
+
+
+
+
+
+ org.codehaus.mojo
+ exec-maven-plugin
+ 1.2.1
+
+
+ dep-install
+ pre-integration-test
+
+ exec
+
+
+ mix
+
+ local.hex
+ --force
+
+
+
+
+ compile
+ integration-test
+
+ exec
+
+
+ mix
+
+ do
+ deps.get,
+ compile
+
+
+
+
+ test
+ integration-test
+
+ exec
+
+
+ mix
+
+ test
+
+
+
+
+
+
+
+
diff --git a/CI/samples.ci/client/petstore/elixir/test/pet_test.exs b/CI/samples.ci/client/petstore/elixir/test/pet_test.exs
new file mode 100644
index 000000000000..6011a08ccf58
--- /dev/null
+++ b/CI/samples.ci/client/petstore/elixir/test/pet_test.exs
@@ -0,0 +1,60 @@
+defmodule PetTest do
+ use ExUnit.Case
+ alias OpenapiPetstore.Connection
+ alias OpenapiPetstore.Api.Pet, as: PetApi
+ alias OpenapiPetstore.Model.Pet
+ alias OpenapiPetstore.Model.Category
+ alias OpenapiPetstore.Model.Tag
+
+ test "add and delete a pet" do
+ petId = 10007
+ pet = %Pet{
+ :id => petId,
+ :name => "elixir client test",
+ :photoUrls => ["http://test_elixir_unit_test.com"],
+ :category => %Category{:id => petId, :name=> "test elixir category"},
+ :tags => [%Tag{:id => petId, :name => "test elixir tag"}],
+ }
+ {:ok, response} = PetApi.add_pet(Connection.new, pet)
+ assert response.status == 200
+
+ {:ok, pet} = PetApi.get_pet_by_id(Connection.new, petId)
+ assert pet.id == petId
+ assert pet.name == "elixir client test"
+ assert List.first(pet.photoUrls) == "http://test_elixir_unit_test.com"
+ assert pet.category.id == petId
+ assert pet.category.name == "test elixir category"
+ assert List.first(pet.tags) == %Tag{:id => petId, :name => "test elixir tag"}
+
+ {:ok, response} = PetApi.delete_pet(Connection.new, petId)
+ assert response.status == 200
+ {:ok, response} = PetApi.get_pet_by_id(Connection.new, petId)
+ assert response.status == 404
+ end
+
+ test "update a pet" do
+ petId = 10007
+ pet = %Pet{
+ :id => petId,
+ :name => "elixir client updatePet",
+ :status => "pending",
+ :photoUrls => ["http://test_elixir_unit_test.com"]
+ }
+ {:ok, response} = PetApi.update_pet(Connection.new, pet)
+ assert response.status == 200
+
+ {:ok, pet} = PetApi.get_pet_by_id(Connection.new, petId)
+ assert pet.id == petId
+ assert pet.name == "elixir client updatePet"
+ assert pet.status == "pending"
+ end
+
+ test "find pet by status" do
+ {:ok, listPets} = PetApi.find_pets_by_status(Connection.new, "available")
+ assert List.first(listPets) != nil
+
+ {:ok, listPets} = PetApi.find_pets_by_status(Connection.new, "unknown_and_incorrect_status")
+ assert List.first(listPets) == nil
+ end
+
+end
diff --git a/CI/samples.ci/client/petstore/elm-0.18/elm-0.18-compile-test b/CI/samples.ci/client/petstore/elm-0.18/elm-0.18-compile-test
new file mode 100755
index 000000000000..c6ba0a25f68d
--- /dev/null
+++ b/CI/samples.ci/client/petstore/elm-0.18/elm-0.18-compile-test
@@ -0,0 +1,14 @@
+#!/bin/bash -e
+# elm 0.18 make all elm files under src
+
+for ELM in `find src -name "*.elm"`
+do
+ echo "Compiling $ELM"
+ elm make $ELM --output /dev/null --yes
+ rc=$?
+ if [[ $rc != 0 ]]
+ then
+ echo "ERROR!! FAILED TO COMPILE $ELM"
+ exit $rc;
+ fi
+done
diff --git a/CI/samples.ci/client/petstore/elm-0.18/pom.xml b/CI/samples.ci/client/petstore/elm-0.18/pom.xml
new file mode 100644
index 000000000000..7ddfe9d49e7c
--- /dev/null
+++ b/CI/samples.ci/client/petstore/elm-0.18/pom.xml
@@ -0,0 +1,43 @@
+
+ 4.0.0
+ org.openapitools
+ Elm018ClientTests
+ pom
+ 1.0-SNAPSHOT
+ Elm 0.18 Petstore Client
+
+
+
+ maven-dependency-plugin
+
+
+ package
+
+ copy-dependencies
+
+
+ ${project.build.directory}
+
+
+
+
+
+ org.codehaus.mojo
+ exec-maven-plugin
+ 1.2.1
+
+
+ bundle-test
+ integration-test
+
+ exec
+
+
+ ./elm-0.18-compile-test
+
+
+
+
+
+
+
diff --git a/samples/openapi3/client/composition/elm/elm-compile-test b/CI/samples.ci/client/petstore/elm/elm-compile-test
similarity index 100%
rename from samples/openapi3/client/composition/elm/elm-compile-test
rename to CI/samples.ci/client/petstore/elm/elm-compile-test
diff --git a/CI/samples.ci/client/petstore/elm/pom.xml b/CI/samples.ci/client/petstore/elm/pom.xml
new file mode 100644
index 000000000000..abedbfae9c5a
--- /dev/null
+++ b/CI/samples.ci/client/petstore/elm/pom.xml
@@ -0,0 +1,43 @@
+
+ 4.0.0
+ org.openapitools
+ ElmClientTests
+ pom
+ 1.0-SNAPSHOT
+ Elm Petstore Client
+
+
+
+ maven-dependency-plugin
+
+
+ package
+
+ copy-dependencies
+
+
+ ${project.build.directory}
+
+
+
+
+
+ org.codehaus.mojo
+ exec-maven-plugin
+ 1.2.1
+
+
+ bundle-test
+ integration-test
+
+ exec
+
+
+ ./elm-compile-test
+
+
+
+
+
+
+
diff --git a/CI/samples.ci/client/petstore/erlang-client/pom.xml b/CI/samples.ci/client/petstore/erlang-client/pom.xml
new file mode 100644
index 000000000000..ba943e98dfe6
--- /dev/null
+++ b/CI/samples.ci/client/petstore/erlang-client/pom.xml
@@ -0,0 +1,46 @@
+
+ 4.0.0
+ org.openapitools
+ ErlangClientTests
+ pom
+ 1.0-SNAPSHOT
+ Erlang Petstore Client
+
+
+
+ maven-dependency-plugin
+
+
+ package
+
+ copy-dependencies
+
+
+ ${project.build.directory}
+
+
+
+
+
+ org.codehaus.mojo
+ exec-maven-plugin
+ 1.6.0
+
+
+ compile-test
+ integration-test
+
+ exec
+
+
+ rebar3
+
+ compile
+
+
+
+
+
+
+
+
diff --git a/CI/samples.ci/client/petstore/erlang-proper/.gitignore b/CI/samples.ci/client/petstore/erlang-proper/.gitignore
new file mode 100644
index 000000000000..172c6579a4a9
--- /dev/null
+++ b/CI/samples.ci/client/petstore/erlang-proper/.gitignore
@@ -0,0 +1,2 @@
+_build/
+rebar.lock
diff --git a/CI/samples.ci/client/petstore/erlang-proper/pom.xml b/CI/samples.ci/client/petstore/erlang-proper/pom.xml
new file mode 100644
index 000000000000..541337e18b33
--- /dev/null
+++ b/CI/samples.ci/client/petstore/erlang-proper/pom.xml
@@ -0,0 +1,46 @@
+
+ 4.0.0
+ org.openapitools
+ ErlangProperClientTests
+ pom
+ 1.0-SNAPSHOT
+ Erlang Proper Petstore Client
+
+
+
+ maven-dependency-plugin
+
+
+ package
+
+ copy-dependencies
+
+
+ ${project.build.directory}
+
+
+
+
+
+ org.codehaus.mojo
+ exec-maven-plugin
+ 1.6.0
+
+
+ compile-test
+ integration-test
+
+ exec
+
+
+ rebar3
+
+ compile
+
+
+
+
+
+
+
+
diff --git a/CI/samples.ci/client/petstore/go-experimental/auth_test.go b/CI/samples.ci/client/petstore/go-experimental/auth_test.go
new file mode 100644
index 000000000000..1bb5d8175635
--- /dev/null
+++ b/CI/samples.ci/client/petstore/go-experimental/auth_test.go
@@ -0,0 +1,260 @@
+package main
+
+import (
+ "context"
+ "net/http"
+ "net/http/httputil"
+ "strings"
+ "testing"
+ "time"
+
+ "golang.org/x/oauth2"
+
+ sw "./go-petstore"
+)
+
+func TestOAuth2(t *testing.T) {
+ // Setup some fake oauth2 configuration
+ cfg := &oauth2.Config{
+ ClientID: "1234567",
+ ClientSecret: "SuperSecret",
+ Endpoint: oauth2.Endpoint{
+ AuthURL: "https://devnull",
+ TokenURL: "https://devnull",
+ },
+ RedirectURL: "https://devnull",
+ }
+
+ // and a fake token
+ tok := oauth2.Token{
+ AccessToken: "FAKE",
+ RefreshToken: "So Fake",
+ Expiry: time.Now().Add(time.Hour * 100000),
+ TokenType: "Bearer",
+ }
+
+ // then a fake tokenSource
+ tokenSource := cfg.TokenSource(createContext(nil), &tok)
+ auth := context.WithValue(context.Background(), sw.ContextOAuth2, tokenSource)
+
+ newPet := (sw.Pet{Id: sw.PtrInt64(12992), Name: sw.PtrString("gopher"),
+ PhotoUrls: &[]string{"http://1.com", "http://2.com"}, Status: sw.PtrString("pending"),
+ Tags: &[]sw.Tag{sw.Tag{Id: sw.PtrInt64(1), Name: sw.PtrString("tag2")}}})
+
+ r, err := client.PetApi.AddPet(context.Background(), newPet)
+
+ if err != nil {
+ t.Fatalf("Error while adding pet: %v", err)
+ }
+ if r.StatusCode != 200 {
+ t.Log(r)
+ }
+
+ r, err = client.PetApi.DeletePet(auth, 12992, nil)
+
+ if err != nil {
+ t.Fatalf("Error while deleting pet by id: %v", err)
+ }
+ if r.StatusCode != 200 {
+ t.Log(r)
+ }
+ reqb, _ := httputil.DumpRequest(r.Request, true)
+
+ if !strings.Contains((string)(reqb), "Authorization: Bearer FAKE") {
+ t.Errorf("OAuth2 Authentication is missing")
+ }
+}
+
+func TestBasicAuth(t *testing.T) {
+
+ auth := context.WithValue(context.Background(), sw.ContextBasicAuth, sw.BasicAuth{
+ UserName: "fakeUser",
+ Password: "f4k3p455",
+ })
+
+ newPet := (sw.Pet{Id: sw.PtrInt64(12992), Name: sw.PtrString("gopher"),
+ PhotoUrls: &[]string{"http://1.com", "http://2.com"}, Status: sw.PtrString("pending"),
+ Tags: &[]sw.Tag{sw.Tag{Id: sw.PtrInt64(1), Name: sw.PtrString("tag2")}}})
+
+ r, err := client.PetApi.AddPet(auth, newPet)
+
+ if err != nil {
+ t.Fatalf("Error while adding pet: %v", err)
+ }
+ if r.StatusCode != 200 {
+ t.Log(r)
+ }
+
+ r, err = client.PetApi.DeletePet(auth, 12992, nil)
+
+ if err != nil {
+ t.Fatalf("Error while deleting pet by id: %v", err)
+ }
+ if r.StatusCode != 200 {
+ t.Log(r)
+ }
+ reqb, _ := httputil.DumpRequest(r.Request, true)
+ if !strings.Contains((string)(reqb), "Authorization: Basic ZmFrZVVzZXI6ZjRrM3A0NTU") {
+ t.Errorf("Basic Authentication is missing")
+ }
+}
+
+func TestAccessToken(t *testing.T) {
+ auth := context.WithValue(context.Background(), sw.ContextAccessToken, "TESTFAKEACCESSTOKENISFAKE")
+
+ newPet := (sw.Pet{Id: sw.PtrInt64(12992), Name: sw.PtrString("gopher"),
+ PhotoUrls: &[]string{"http://1.com", "http://2.com"}, Status: sw.PtrString("pending"),
+ Tags: &[]sw.Tag{sw.Tag{Id: sw.PtrInt64(1), Name: sw.PtrString("tag2")}}})
+
+ r, err := client.PetApi.AddPet(nil, newPet)
+
+ if err != nil {
+ t.Fatalf("Error while adding pet: %v", err)
+ }
+ if r.StatusCode != 200 {
+ t.Log(r)
+ }
+
+ r, err = client.PetApi.DeletePet(auth, 12992, nil)
+
+ if err != nil {
+ t.Fatalf("Error while deleting pet by id: %v", err)
+ }
+ if r.StatusCode != 200 {
+ t.Log(r)
+ }
+ reqb, _ := httputil.DumpRequest(r.Request, true)
+ if !strings.Contains((string)(reqb), "Authorization: Bearer TESTFAKEACCESSTOKENISFAKE") {
+ t.Errorf("AccessToken Authentication is missing")
+ }
+}
+
+func TestAPIKeyNoPrefix(t *testing.T) {
+ auth := context.WithValue(context.Background(), sw.ContextAPIKeys, map[string]sw.APIKey{"api_key": sw.APIKey{Key: "TEST123"}})
+
+ newPet := (sw.Pet{Id: sw.PtrInt64(12992), Name: sw.PtrString("gopher"),
+ PhotoUrls: &[]string{"http://1.com", "http://2.com"}, Status: sw.PtrString("pending"),
+ Tags: &[]sw.Tag{sw.Tag{Id: sw.PtrInt64(1), Name: sw.PtrString("tag2")}}})
+
+ r, err := client.PetApi.AddPet(context.Background(), newPet)
+
+ if err != nil {
+ t.Fatalf("Error while adding pet: %v", err)
+ }
+ if r.StatusCode != 200 {
+ t.Log(r)
+ }
+
+ _, r, err = client.PetApi.GetPetById(auth, 12992)
+ if err != nil {
+ t.Fatalf("Error while deleting pet by id: %v", err)
+ }
+
+ reqb, _ := httputil.DumpRequest(r.Request, true)
+ if !strings.Contains((string)(reqb), "Api_key: TEST123") {
+ t.Errorf("APIKey Authentication is missing")
+ }
+
+ r, err = client.PetApi.DeletePet(auth, 12992, nil)
+ if err != nil {
+ t.Fatalf("Error while deleting pet by id: %v", err)
+ }
+ if r.StatusCode != 200 {
+ t.Log(r)
+ }
+}
+
+func TestAPIKeyWithPrefix(t *testing.T) {
+ auth := context.WithValue(context.Background(), sw.ContextAPIKeys, map[string]sw.APIKey{"api_key": sw.APIKey{Key: "TEST123", Prefix: "Bearer"}})
+
+ newPet := (sw.Pet{Id: sw.PtrInt64(12992), Name: sw.PtrString("gopher"),
+ PhotoUrls: &[]string{"http://1.com", "http://2.com"}, Status: sw.PtrString("pending"),
+ Tags: &[]sw.Tag{sw.Tag{Id: sw.PtrInt64(1), Name: sw.PtrString("tag2")}}})
+
+ r, err := client.PetApi.AddPet(nil, newPet)
+
+ if err != nil {
+ t.Fatalf("Error while adding pet: %v", err)
+ }
+ if r.StatusCode != 200 {
+ t.Log(r)
+ }
+
+ _, r, err = client.PetApi.GetPetById(auth, 12992)
+ if err != nil {
+ t.Fatalf("Error while deleting pet by id: %v", err)
+ }
+
+ reqb, _ := httputil.DumpRequest(r.Request, true)
+ if !strings.Contains((string)(reqb), "Api_key: Bearer TEST123") {
+ t.Errorf("APIKey Authentication is missing")
+ }
+
+ r, err = client.PetApi.DeletePet(auth, 12992, nil)
+ if err != nil {
+ t.Fatalf("Error while deleting pet by id: %v", err)
+ }
+ if r.StatusCode != 200 {
+ t.Log(r)
+ }
+}
+
+func TestDefaultHeader(t *testing.T) {
+
+ newPet := (sw.Pet{Id: sw.PtrInt64(12992), Name: sw.PtrString("gopher"),
+ PhotoUrls: &[]string{"http://1.com", "http://2.com"}, Status: sw.PtrString("pending"),
+ Tags: &[]sw.Tag{sw.Tag{Id: sw.PtrInt64(1), Name: sw.PtrString("tag2")}}})
+
+ r, err := client.PetApi.AddPet(context.Background(), newPet)
+
+ if err != nil {
+ t.Fatalf("Error while adding pet: %v", err)
+ }
+ if r.StatusCode != 200 {
+ t.Log(r)
+ }
+
+ r, err = client.PetApi.DeletePet(context.Background(), 12992, nil)
+
+ if err != nil {
+ t.Fatalf("Error while deleting pet by id: %v", err)
+ }
+ if r.StatusCode != 200 {
+ t.Log(r)
+ }
+ reqb, _ := httputil.DumpRequest(r.Request, true)
+ if !strings.Contains((string)(reqb), "Testheader: testvalue") {
+ t.Errorf("Default Header is missing")
+ }
+}
+
+func TestHostOverride(t *testing.T) {
+ _, r, err := client.PetApi.FindPetsByStatus(context.Background(), nil)
+
+ if err != nil {
+ t.Fatalf("Error while finding pets by status: %v", err)
+ }
+
+ if r.Request.URL.Host != testHost {
+ t.Errorf("Request Host is %v, expected %v", r.Request.Host, testHost)
+ }
+}
+
+func TestSchemeOverride(t *testing.T) {
+ _, r, err := client.PetApi.FindPetsByStatus(context.Background(), nil)
+
+ if err != nil {
+ t.Fatalf("Error while finding pets by status: %v", err)
+ }
+
+ if r.Request.URL.Scheme != testScheme {
+ t.Errorf("Request Scheme is %v, expected %v", r.Request.URL.Scheme, testScheme)
+ }
+}
+
+// Add custom clients to the context.
+func createContext(httpClient *http.Client) context.Context {
+ parent := oauth2.NoContext
+ ctx := context.WithValue(parent, oauth2.HTTPClient, httpClient)
+ return ctx
+}
diff --git a/CI/samples.ci/client/petstore/go-experimental/fake_api_test.go b/CI/samples.ci/client/petstore/go-experimental/fake_api_test.go
new file mode 100644
index 000000000000..e97bcb4846a8
--- /dev/null
+++ b/CI/samples.ci/client/petstore/go-experimental/fake_api_test.go
@@ -0,0 +1,28 @@
+package main
+
+import (
+ "testing"
+
+ sw "./go-petstore"
+ "golang.org/x/net/context"
+)
+
+// TestPutBodyWithFileSchema ensures a model with the name 'File'
+// gets converted properly to the petstore.File struct vs. *os.File
+// as specified in typeMapping for 'File'.
+func TestPutBodyWithFileSchema(t *testing.T) {
+ return // early return to test compilation
+
+ schema := sw.FileSchemaTestClass{
+ File: &sw.File{SourceURI: sw.PtrString("https://example.com/image.png")},
+ Files: &[]sw.File{{SourceURI: sw.PtrString("https://example.com/image.png")}}}
+
+ r, err := client.FakeApi.TestBodyWithFileSchema(context.Background(), schema)
+
+ if err != nil {
+ t.Fatalf("Error while adding pet: %v", err)
+ }
+ if r.StatusCode != 200 {
+ t.Log(r)
+ }
+}
diff --git a/CI/samples.ci/client/petstore/go-experimental/pet_api_test.go b/CI/samples.ci/client/petstore/go-experimental/pet_api_test.go
new file mode 100644
index 000000000000..c1e8006bb0cf
--- /dev/null
+++ b/CI/samples.ci/client/petstore/go-experimental/pet_api_test.go
@@ -0,0 +1,297 @@
+package main
+
+import (
+ "context"
+ "fmt"
+ "os"
+ "testing"
+
+ "github.com/antihax/optional"
+ "github.com/stretchr/testify/assert"
+
+ sw "./go-petstore"
+)
+
+var client *sw.APIClient
+
+const testHost = "petstore.swagger.io:80"
+const testScheme = "http"
+
+func TestMain(m *testing.M) {
+ cfg := sw.NewConfiguration()
+ cfg.AddDefaultHeader("testheader", "testvalue")
+ cfg.Host = testHost
+ cfg.Scheme = testScheme
+ client = sw.NewAPIClient(cfg)
+ retCode := m.Run()
+ os.Exit(retCode)
+}
+
+func TestAddPet(t *testing.T) {
+ newPet := (sw.Pet{Id: sw.PtrInt64(12830), Name: sw.PtrString("gopher"),
+ PhotoUrls: &[]string{"http://1.com", "http://2.com"}, Status: sw.PtrString("pending"),
+ Tags: &[]sw.Tag{sw.Tag{Id: sw.PtrInt64(1), Name: sw.PtrString("tag2")}}})
+
+ r, err := client.PetApi.AddPet(context.Background(), newPet)
+
+ if err != nil {
+ t.Fatalf("Error while adding pet: %v", err)
+ }
+ if r.StatusCode != 200 {
+ t.Log(r)
+ }
+}
+
+func TestFindPetsByStatusWithMissingParam(t *testing.T) {
+ _, r, err := client.PetApi.FindPetsByStatus(context.Background(), nil)
+
+ if err != nil {
+ t.Fatalf("Error while testing TestFindPetsByStatusWithMissingParam: %v", err)
+ }
+ if r.StatusCode != 200 {
+ t.Log(r)
+ }
+}
+
+func TestGetPetById(t *testing.T) {
+ isPetCorrect(t, 12830, "gopher", "pending")
+}
+
+func TestGetPetByIdWithInvalidID(t *testing.T) {
+ resp, r, err := client.PetApi.GetPetById(context.Background(), 999999999)
+ if r != nil && r.StatusCode == 404 {
+ assertedError, ok := err.(sw.GenericOpenAPIError)
+ a := assert.New(t)
+ a.True(ok)
+ a.Contains(string(assertedError.Body()), "type")
+
+ a.Contains(assertedError.Error(), "Not Found")
+ } else if err != nil {
+ t.Fatalf("Error while getting pet by invalid id: %v", err)
+ t.Log(r)
+ } else {
+ t.Log(resp)
+ }
+}
+
+func TestUpdatePetWithForm(t *testing.T) {
+ r, err := client.PetApi.UpdatePetWithForm(context.Background(), 12830, &sw.UpdatePetWithFormOpts{
+ Name: optional.NewString("golang"),
+ Status: optional.NewString("available"),
+ })
+ if err != nil {
+ t.Fatalf("Error while updating pet by id: %v", err)
+ t.Log(r)
+ }
+ if r.StatusCode != 200 {
+ t.Log(r)
+ }
+
+ // get the pet with id 12830 from server to verify the update
+ isPetCorrect(t, 12830, "golang", "available")
+}
+
+func TestFindPetsByTag(t *testing.T) {
+ var found = false
+ resp, r, err := client.PetApi.FindPetsByTags(context.Background(), []string{"tag2"})
+ if err != nil {
+ t.Fatalf("Error while getting pet by tag: %v", err)
+ t.Log(r)
+ } else {
+ if len(resp) == 0 {
+ t.Errorf("Error no pets returned")
+ } else {
+
+ assert := assert.New(t)
+ for i := 0; i < len(resp); i++ {
+ if *resp[i].Id == 12830 {
+ assert.Equal(*resp[i].Status, "available", "Pet status should be `pending`")
+ found = true
+ }
+ }
+ }
+
+ if found == false {
+ t.Errorf("Error while getting pet by tag could not find 12830")
+ }
+
+ if r.StatusCode != 200 {
+ t.Log(r)
+ }
+ }
+}
+
+func TestFindPetsByStatus(t *testing.T) {
+ resp, r, err := client.PetApi.FindPetsByStatus(context.Background(), []string{"available"})
+ if err != nil {
+ t.Fatalf("Error while getting pet by id: %v", err)
+ t.Log(r)
+ } else {
+ if len(resp) == 0 {
+ t.Errorf("Error no pets returned")
+ } else {
+ assert := assert.New(t)
+ for i := 0; i < len(resp); i++ {
+ assert.Equal(*resp[i].Status, "available", "Pet status should be `available`")
+ }
+ }
+
+ if r.StatusCode != 200 {
+ t.Log(r)
+ }
+ }
+}
+
+func TestUploadFile(t *testing.T) {
+ file, _ := os.Open("../python/testfiles/foo.png")
+
+ _, r, err := client.PetApi.UploadFile(context.Background(), 12830, &sw.UploadFileOpts{
+ AdditionalMetadata: optional.NewString("golang"),
+ File: optional.NewInterface(file),
+ })
+
+ if err != nil {
+ t.Fatalf("Error while uploading file: %v", err)
+ }
+
+ if r.StatusCode != 200 {
+ t.Log(r)
+ }
+}
+
+func TestUploadFileRequired(t *testing.T) {
+ return // remove when server supports this endpoint
+ file, _ := os.Open("../python/testfiles/foo.png")
+
+ _, r, err := client.PetApi.UploadFileWithRequiredFile(context.Background(), 12830,
+ file,
+ &sw.UploadFileWithRequiredFileOpts{
+ AdditionalMetadata: optional.NewString("golang"),
+ })
+
+ if err != nil {
+ t.Fatalf("Error while uploading file: %v", err)
+ }
+
+ if r.StatusCode != 200 {
+ t.Log(r)
+ }
+}
+
+func TestDeletePet(t *testing.T) {
+ r, err := client.PetApi.DeletePet(context.Background(), 12830, nil)
+
+ if err != nil {
+ t.Fatalf("Error while deleting pet by id: %v", err)
+ }
+ if r.StatusCode != 200 {
+ t.Log(r)
+ }
+}
+
+/*
+// Test we can concurrently create, retrieve, update, and delete.
+func TestConcurrency(t *testing.T) {
+ errc := make(chan error)
+
+ newPets := []sw.Pet{
+ sw.Pet{Id: 912345, Name: "gopherFred", PhotoUrls: []string{"http://1.com", "http://2.com"}, Status: "pending"},
+ sw.Pet{Id: 912346, Name: "gopherDan", PhotoUrls: []string{"http://1.com", "http://2.com"}, Status: "active"},
+ sw.Pet{Id: 912347, Name: "gopherRick", PhotoUrls: []string{"http://1.com", "http://2.com"}, Status: "mia"},
+ sw.Pet{Id: 912348, Name: "gopherJohn", PhotoUrls: []string{"http://1.com", "http://2.com"}, Status: "active"},
+ sw.Pet{Id: 912349, Name: "gopherAlf", PhotoUrls: []string{"http://1.com", "http://2.com"}, Status: "pending"},
+ sw.Pet{Id: 912350, Name: "gopherRob", PhotoUrls: []string{"http://1.com", "http://2.com"}, Status: "pending"},
+ sw.Pet{Id: 912351, Name: "gopherIan", PhotoUrls: []string{"http://1.com", "http://2.com"}, Status: "active"},
+ }
+
+ // Add the pets.
+ for _, pet := range newPets {
+ go func(newPet sw.Pet) {
+ r, err := client.PetApi.AddPet(nil, newPet)
+ if r.StatusCode != 200 {
+ t.Log(r)
+ }
+ errc <- err
+ }(pet)
+ }
+ waitOnFunctions(t, errc, len(newPets))
+
+ // Verify they are correct.
+ for _, pet := range newPets {
+ go func(pet sw.Pet) {
+ isPetCorrect(t, pet.Id, pet.Name, pet.Status)
+ errc <- nil
+ }(pet)
+ }
+
+ waitOnFunctions(t, errc, len(newPets))
+
+ // Update all to active with the name gopherDan
+ for _, pet := range newPets {
+ go func(id int64) {
+ r, err := client.PetApi.UpdatePet(nil, sw.Pet{Id: (int64)(id), Name: "gopherDan", PhotoUrls: []string{"http://1.com", "http://2.com"}, Status: "active"})
+ if r.StatusCode != 200 {
+ t.Log(r)
+ }
+ errc <- err
+ }(pet.Id)
+ }
+ waitOnFunctions(t, errc, len(newPets))
+
+ // Verify they are correct.
+ for _, pet := range newPets {
+ go func(pet sw.Pet) {
+ isPetCorrect(t, pet.Id, "gopherDan", "active")
+ errc <- nil
+ }(pet)
+ }
+
+ waitOnFunctions(t, errc, len(newPets))
+
+ // Delete them all.
+ for _, pet := range newPets {
+ go func(id int64) {
+ deletePet(t, (int64)(id))
+ errc <- nil
+ }(pet.Id)
+ }
+ waitOnFunctions(t, errc, len(newPets))
+}
+*/
+
+func waitOnFunctions(t *testing.T, errc chan error, n int) {
+ for i := 0; i < n; i++ {
+ err := <-errc
+ if err != nil {
+ t.Fatalf("Error performing concurrent test: %v", err)
+ }
+ }
+}
+
+func deletePet(t *testing.T, id int64) {
+ r, err := client.PetApi.DeletePet(context.Background(), id, nil)
+
+ if err != nil {
+ t.Fatalf("Error while deleting pet by id: %v", err)
+ }
+ if r.StatusCode != 200 {
+ t.Log(r)
+ }
+}
+
+func isPetCorrect(t *testing.T, id int64, name string, status string) {
+ assert := assert.New(t)
+ resp, r, err := client.PetApi.GetPetById(context.Background(), id)
+ if err != nil {
+ t.Fatalf("Error while getting pet by id: %v", err)
+ } else {
+ assert.Equal(*resp.Id, int64(id), "Pet id should be equal")
+ assert.Equal(*resp.Name, name, fmt.Sprintf("Pet name should be %s", name))
+ assert.Equal(*resp.Status, status, fmt.Sprintf("Pet status should be %s", status))
+
+ //t.Log(resp)
+ }
+ if r.StatusCode != 200 {
+ t.Log(r)
+ }
+}
diff --git a/CI/samples.ci/client/petstore/go-experimental/pom.xml b/CI/samples.ci/client/petstore/go-experimental/pom.xml
new file mode 100644
index 000000000000..91e3da8c34b4
--- /dev/null
+++ b/CI/samples.ci/client/petstore/go-experimental/pom.xml
@@ -0,0 +1,103 @@
+
+ 4.0.0
+ org.openapitools
+ GoExperimentalPetstore
+ pom
+ 1.0.0
+ Go Experimental Petstore Client
+
+
+
+ maven-dependency-plugin
+
+
+ package
+
+ copy-dependencies
+
+
+ ${project.build.directory}
+
+
+
+
+
+ org.codehaus.mojo
+ exec-maven-plugin
+ 1.2.1
+
+
+ go-get-testify
+ pre-integration-test
+
+ exec
+
+
+ go
+
+ get
+ github.com/stretchr/testify/assert
+
+
+
+
+ go-get-oauth2
+ pre-integration-test
+
+ exec
+
+
+ go
+
+ get
+ golang.org/x/oauth2
+
+
+
+
+ go-get-context
+ pre-integration-test
+
+ exec
+
+
+ go
+
+ get
+ golang.org/x/net/context
+
+
+
+
+ go-get-optional
+ pre-integration-test
+
+ exec
+
+
+ go
+
+ get
+ github.com/antihax/optional
+
+
+
+
+ go-test
+ integration-test
+
+ exec
+
+
+ go
+
+ test
+ -v
+
+
+
+
+
+
+
+
diff --git a/CI/samples.ci/client/petstore/go-experimental/store_api_test.go b/CI/samples.ci/client/petstore/go-experimental/store_api_test.go
new file mode 100644
index 000000000000..81f4fd7e33d9
--- /dev/null
+++ b/CI/samples.ci/client/petstore/go-experimental/store_api_test.go
@@ -0,0 +1,37 @@
+package main
+
+import (
+ "context"
+ "regexp"
+ "testing"
+ "time"
+
+ sw "./go-petstore"
+)
+
+func TestPlaceOrder(t *testing.T) {
+ newOrder := sw.Order{
+ Id: sw.PtrInt64(0),
+ PetId: sw.PtrInt64(0),
+ Quantity: sw.PtrInt32(0),
+ ShipDate: sw.PtrTime(time.Now().UTC()),
+ Status: sw.PtrString("placed"),
+ Complete: sw.PtrBool(false)}
+
+ _, r, err := client.StoreApi.PlaceOrder(context.Background(), newOrder)
+
+ if err != nil {
+ // Skip parsing time error due to error in Petstore Test Server
+ // https://github.com/OpenAPITools/openapi-generator/issues/1292
+ if regexp.
+ MustCompile(`^parsing time.+cannot parse "\+0000"" as "Z07:00"$`).
+ MatchString(err.Error()) {
+ t.Log("Skipping error for parsing time with `+0000` UTC offset as Petstore Test Server does not return valid RFC 3339 datetime")
+ } else {
+ t.Fatalf("Error while placing order: %v", err)
+ }
+ }
+ if r.StatusCode != 200 {
+ t.Log(r)
+ }
+}
diff --git a/CI/samples.ci/client/petstore/go-experimental/test.go.bak b/CI/samples.ci/client/petstore/go-experimental/test.go.bak
new file mode 100644
index 000000000000..54e14b9c7a04
--- /dev/null
+++ b/CI/samples.ci/client/petstore/go-experimental/test.go.bak
@@ -0,0 +1,30 @@
+package main
+
+import (
+ sw "./go-petstore"
+ "encoding/json"
+ "fmt"
+)
+
+func main() {
+
+ s := sw.NewPetApi()
+
+ // test POST(body)
+ newPet := (sw.Pet{Id: 12830, Name: "gopher",
+ PhotoUrls: []string{"http://1.com", "http://2.com"}, Status: "pending"})
+
+ jsonNewPet, _ := json.Marshal(newPet)
+ fmt.Println("newPet:", string(jsonNewPet))
+ s.AddPet(newPet)
+
+ // test POST(form)
+ s.UpdatePetWithForm(12830, "golang", "available")
+
+ // test GET
+ resp, apiResponse, err := s.GetPetById(12830)
+ fmt.Println("GetPetById: ", resp, err, apiResponse)
+
+ err2, apiResponse2 := s.DeletePet(12830, "")
+ fmt.Println("DeletePet: ", err2, apiResponse2)
+}
diff --git a/CI/samples.ci/client/petstore/go-experimental/user_api_test.go b/CI/samples.ci/client/petstore/go-experimental/user_api_test.go
new file mode 100644
index 000000000000..07b82ebb9757
--- /dev/null
+++ b/CI/samples.ci/client/petstore/go-experimental/user_api_test.go
@@ -0,0 +1,153 @@
+package main
+
+import (
+ "context"
+ "testing"
+
+ "github.com/stretchr/testify/assert"
+
+ sw "./go-petstore"
+)
+
+func TestCreateUser(t *testing.T) {
+ newUser := sw.User{
+ Id: sw.PtrInt64(1000),
+ FirstName: sw.PtrString("gopher"),
+ LastName: sw.PtrString("lang"),
+ Username: sw.PtrString("gopher"),
+ Password: sw.PtrString("lang"),
+ Email: sw.PtrString("lang@test.com"),
+ Phone: sw.PtrString("5101112222"),
+ UserStatus: sw.PtrInt32(1)}
+
+ apiResponse, err := client.UserApi.CreateUser(context.Background(), newUser)
+
+ if err != nil {
+ t.Fatalf("Error while adding user: %v", err)
+ }
+ if apiResponse.StatusCode != 200 {
+ t.Log(apiResponse)
+ }
+}
+
+//adding x to skip the test, currently it is failing
+func TestCreateUsersWithArrayInput(t *testing.T) {
+ newUsers := []sw.User{
+ sw.User{
+ Id: sw.PtrInt64(1001),
+ FirstName: sw.PtrString("gopher1"),
+ LastName: sw.PtrString("lang1"),
+ Username: sw.PtrString("gopher1"),
+ Password: sw.PtrString("lang1"),
+ Email: sw.PtrString("lang1@test.com"),
+ Phone: sw.PtrString("5101112222"),
+ UserStatus: sw.PtrInt32(1),
+ },
+ sw.User{
+ Id: sw.PtrInt64(1002),
+ FirstName: sw.PtrString("gopher2"),
+ LastName: sw.PtrString("lang2"),
+ Username: sw.PtrString("gopher2"),
+ Password: sw.PtrString("lang2"),
+ Email: sw.PtrString("lang2@test.com"),
+ Phone: sw.PtrString("5101112222"),
+ UserStatus: sw.PtrInt32(1),
+ },
+ }
+
+ apiResponse, err := client.UserApi.CreateUsersWithArrayInput(context.Background(), newUsers)
+ if err != nil {
+ t.Fatalf("Error while adding users: %v", err)
+ }
+ if apiResponse.StatusCode != 200 {
+ t.Log(apiResponse)
+ }
+
+ //tear down
+ _, err1 := client.UserApi.DeleteUser(context.Background(), "gopher1")
+ if err1 != nil {
+ t.Errorf("Error while deleting user")
+ t.Log(err1)
+ }
+
+ _, err2 := client.UserApi.DeleteUser(context.Background(), "gopher2")
+ if err2 != nil {
+ t.Errorf("Error while deleting user")
+ t.Log(err2)
+ }
+}
+
+func TestGetUserByName(t *testing.T) {
+ assert := assert.New(t)
+
+ resp, apiResponse, err := client.UserApi.GetUserByName(context.Background(), "gopher")
+ if err != nil {
+ t.Fatalf("Error while getting user by id: %v", err)
+ } else {
+ assert.Equal(*resp.Id, int64(1000), "User id should be equal")
+ assert.Equal(*resp.Username, "gopher", "User name should be gopher")
+ assert.Equal(*resp.LastName, "lang", "Last name should be lang")
+ //t.Log(resp)
+ }
+ if apiResponse.StatusCode != 200 {
+ t.Log(apiResponse)
+ }
+}
+
+func TestGetUserByNameWithInvalidID(t *testing.T) {
+ resp, apiResponse, err := client.UserApi.GetUserByName(context.Background(), "999999999")
+ if apiResponse != nil && apiResponse.StatusCode == 404 {
+ return // This is a pass condition. API will return with a 404 error.
+ } else if err != nil {
+ t.Fatalf("Error while getting user by invalid id: %v", err)
+ t.Log(apiResponse)
+ } else {
+ t.Log(resp)
+ }
+ if apiResponse.StatusCode != 200 {
+ t.Log(apiResponse)
+ }
+}
+
+func TestUpdateUser(t *testing.T) {
+ assert := assert.New(t)
+
+ newUser := sw.User{
+ Id: sw.PtrInt64(1000),
+ FirstName: sw.PtrString("gopher20"),
+ LastName: sw.PtrString("lang20"),
+ Username: sw.PtrString("gopher"),
+ Password: sw.PtrString("lang"),
+ Email: sw.PtrString("lang@test.com"),
+ Phone: sw.PtrString("5101112222"),
+ UserStatus: sw.PtrInt32(1)}
+
+ apiResponse, err := client.UserApi.UpdateUser(context.Background(), "gopher", newUser)
+ if err != nil {
+ t.Fatalf("Error while deleting user by id: %v", err)
+ }
+ if apiResponse.StatusCode != 200 {
+ t.Log(apiResponse)
+ }
+
+ //verify changings are correct
+ resp, apiResponse, err := client.UserApi.GetUserByName(context.Background(), "gopher")
+ if err != nil {
+ t.Fatalf("Error while getting user by id: %v", err)
+ } else {
+ assert.Equal(*resp.Id, int64(1000), "User id should be equal")
+ assert.Equal(*resp.FirstName, "gopher20", "User name should be gopher")
+ assert.Equal(*resp.Password, "lang", "User name should be the same")
+ }
+}
+
+func TestDeleteUser(t *testing.T) {
+ apiResponse, err := client.UserApi.DeleteUser(context.Background(), "gopher")
+
+ if err != nil {
+ t.Fatalf("Error while deleting user: %v", err)
+ }
+ if apiResponse.StatusCode != 200 {
+ t.Log(apiResponse)
+ }
+}
diff --git a/samples/openapi3/client/petstore/go-experimental/go-petstore/.gitignore b/CI/samples.ci/client/petstore/go/.gitignore
similarity index 100%
rename from samples/openapi3/client/petstore/go-experimental/go-petstore/.gitignore
rename to CI/samples.ci/client/petstore/go/.gitignore
diff --git a/CI/samples.ci/client/petstore/go/auth_test.go b/CI/samples.ci/client/petstore/go/auth_test.go
new file mode 100644
index 000000000000..5f817703a886
--- /dev/null
+++ b/CI/samples.ci/client/petstore/go/auth_test.go
@@ -0,0 +1,254 @@
+package main
+
+import (
+ "context"
+ "net/http"
+ "net/http/httputil"
+ "strings"
+ "testing"
+ "time"
+
+ "golang.org/x/oauth2"
+
+ sw "./go-petstore"
+)
+
+func TestOAuth2(t *testing.T) {
+ // Setup some fake oauth2 configuration
+ cfg := &oauth2.Config{
+ ClientID: "1234567",
+ ClientSecret: "SuperSecret",
+ Endpoint: oauth2.Endpoint{
+ AuthURL: "https://devnull",
+ TokenURL: "https://devnull",
+ },
+ RedirectURL: "https://devnull",
+ }
+
+ // and a fake token
+ tok := oauth2.Token{
+ AccessToken: "FAKE",
+ RefreshToken: "So Fake",
+ Expiry: time.Now().Add(time.Hour * 100000),
+ TokenType: "Bearer",
+ }
+
+ // then a fake tokenSource
+ tokenSource := cfg.TokenSource(createContext(nil), &tok)
+ auth := context.WithValue(context.Background(), sw.ContextOAuth2, tokenSource)
+
+ newPet := (sw.Pet{Id: 12992, Name: "gopher",
+ PhotoUrls: []string{"http://1.com", "http://2.com"}, Status: "pending", Tags: []sw.Tag{sw.Tag{Id: 1, Name: "tag2"}}})
+
+ r, err := client.PetApi.AddPet(context.Background(), newPet)
+
+ if err != nil {
+ t.Fatalf("Error while adding pet: %v", err)
+ }
+ if r.StatusCode != 200 {
+ t.Log(r)
+ }
+
+ r, err = client.PetApi.DeletePet(auth, 12992, nil)
+
+ if err != nil {
+ t.Fatalf("Error while deleting pet by id: %v", err)
+ }
+ if r.StatusCode != 200 {
+ t.Log(r)
+ }
+ reqb, _ := httputil.DumpRequest(r.Request, true)
+
+ if !strings.Contains((string)(reqb), "Authorization: Bearer FAKE") {
+ t.Errorf("OAuth2 Authentication is missing")
+ }
+}
+
+func TestBasicAuth(t *testing.T) {
+
+ auth := context.WithValue(context.Background(), sw.ContextBasicAuth, sw.BasicAuth{
+ UserName: "fakeUser",
+ Password: "f4k3p455",
+ })
+
+ newPet := (sw.Pet{Id: 12992, Name: "gopher",
+ PhotoUrls: []string{"http://1.com", "http://2.com"}, Status: "pending", Tags: []sw.Tag{sw.Tag{Id: 1, Name: "tag2"}}})
+
+ r, err := client.PetApi.AddPet(auth, newPet)
+
+ if err != nil {
+ t.Fatalf("Error while adding pet: %v", err)
+ }
+ if r.StatusCode != 200 {
+ t.Log(r)
+ }
+
+ r, err = client.PetApi.DeletePet(auth, 12992, nil)
+
+ if err != nil {
+ t.Fatalf("Error while deleting pet by id: %v", err)
+ }
+ if r.StatusCode != 200 {
+ t.Log(r)
+ }
+ reqb, _ := httputil.DumpRequest(r.Request, true)
+ if !strings.Contains((string)(reqb), "Authorization: Basic ZmFrZVVzZXI6ZjRrM3A0NTU") {
+ t.Errorf("Basic Authentication is missing")
+ }
+}
+
+func TestAccessToken(t *testing.T) {
+ auth := context.WithValue(context.Background(), sw.ContextAccessToken, "TESTFAKEACCESSTOKENISFAKE")
+
+ newPet := (sw.Pet{Id: 12992, Name: "gopher",
+ PhotoUrls: []string{"http://1.com", "http://2.com"}, Status: "pending", Tags: []sw.Tag{sw.Tag{Id: 1, Name: "tag2"}}})
+
+ r, err := client.PetApi.AddPet(nil, newPet)
+
+ if err != nil {
+ t.Fatalf("Error while adding pet: %v", err)
+ }
+ if r.StatusCode != 200 {
+ t.Log(r)
+ }
+
+ r, err = client.PetApi.DeletePet(auth, 12992, nil)
+
+ if err != nil {
+ t.Fatalf("Error while deleting pet by id: %v", err)
+ }
+ if r.StatusCode != 200 {
+ t.Log(r)
+ }
+ reqb, _ := httputil.DumpRequest(r.Request, true)
+ if !strings.Contains((string)(reqb), "Authorization: Bearer TESTFAKEACCESSTOKENISFAKE") {
+ t.Errorf("AccessToken Authentication is missing")
+ }
+}
+
+func TestAPIKeyNoPrefix(t *testing.T) {
+ auth := context.WithValue(context.Background(), sw.ContextAPIKey, sw.APIKey{Key: "TEST123"})
+
+ newPet := (sw.Pet{Id: 12992, Name: "gopher",
+ PhotoUrls: []string{"http://1.com", "http://2.com"}, Status: "pending", Tags: []sw.Tag{sw.Tag{Id: 1, Name: "tag2"}}})
+
+ r, err := client.PetApi.AddPet(context.Background(), newPet)
+
+ if err != nil {
+ t.Fatalf("Error while adding pet: %v", err)
+ }
+ if r.StatusCode != 200 {
+ t.Log(r)
+ }
+
+ _, r, err = client.PetApi.GetPetById(auth, 12992)
+ if err != nil {
+ t.Fatalf("Error while deleting pet by id: %v", err)
+ }
+
+ reqb, _ := httputil.DumpRequest(r.Request, true)
+ if !strings.Contains((string)(reqb), "Api_key: TEST123") {
+ t.Errorf("APIKey Authentication is missing")
+ }
+
+ r, err = client.PetApi.DeletePet(auth, 12992, nil)
+ if err != nil {
+ t.Fatalf("Error while deleting pet by id: %v", err)
+ }
+ if r.StatusCode != 200 {
+ t.Log(r)
+ }
+}
+
+func TestAPIKeyWithPrefix(t *testing.T) {
+ auth := context.WithValue(context.Background(), sw.ContextAPIKey, sw.APIKey{Key: "TEST123", Prefix: "Bearer"})
+
+ newPet := (sw.Pet{Id: 12992, Name: "gopher",
+ PhotoUrls: []string{"http://1.com", "http://2.com"}, Status: "pending", Tags: []sw.Tag{sw.Tag{Id: 1, Name: "tag2"}}})
+
+ r, err := client.PetApi.AddPet(nil, newPet)
+
+ if err != nil {
+ t.Fatalf("Error while adding pet: %v", err)
+ }
+ if r.StatusCode != 200 {
+ t.Log(r)
+ }
+
+ _, r, err = client.PetApi.GetPetById(auth, 12992)
+ if err != nil {
+ t.Fatalf("Error while deleting pet by id: %v", err)
+ }
+
+ reqb, _ := httputil.DumpRequest(r.Request, true)
+ if !strings.Contains((string)(reqb), "Api_key: Bearer TEST123") {
+ t.Errorf("APIKey Authentication is missing")
+ }
+
+ r, err = client.PetApi.DeletePet(auth, 12992, nil)
+ if err != nil {
+ t.Fatalf("Error while deleting pet by id: %v", err)
+ }
+ if r.StatusCode != 200 {
+ t.Log(r)
+ }
+}
+
+func TestDefaultHeader(t *testing.T) {
+
+ newPet := (sw.Pet{Id: 12992, Name: "gopher",
+ PhotoUrls: []string{"http://1.com", "http://2.com"}, Status: "pending", Tags: []sw.Tag{sw.Tag{Id: 1, Name: "tag2"}}})
+
+ r, err := client.PetApi.AddPet(context.Background(), newPet)
+
+ if err != nil {
+ t.Fatalf("Error while adding pet: %v", err)
+ }
+ if r.StatusCode != 200 {
+ t.Log(r)
+ }
+
+ r, err = client.PetApi.DeletePet(context.Background(), 12992, nil)
+
+ if err != nil {
+ t.Fatalf("Error while deleting pet by id: %v", err)
+ }
+ if r.StatusCode != 200 {
+ t.Log(r)
+ }
+ reqb, _ := httputil.DumpRequest(r.Request, true)
+ if !strings.Contains((string)(reqb), "Testheader: testvalue") {
+ t.Errorf("Default Header is missing")
+ }
+}
+
+func TestHostOverride(t *testing.T) {
+ _, r, err := client.PetApi.FindPetsByStatus(context.Background(), nil)
+
+ if err != nil {
+ t.Fatalf("Error while finding pets by status: %v", err)
+ }
+
+ if r.Request.URL.Host != testHost {
+ t.Errorf("Request Host is %v, expected %v", r.Request.Host, testHost)
+ }
+}
+
+func TestSchemeOverride(t *testing.T) {
+ _, r, err := client.PetApi.FindPetsByStatus(context.Background(), nil)
+
+ if err != nil {
+ t.Fatalf("Error while finding pets by status: %v", err)
+ }
+
+ if r.Request.URL.Scheme != testScheme {
+ t.Errorf("Request Scheme is %v, expected %v", r.Request.URL.Scheme, testScheme)
+ }
+}
+
+// Add custom clients to the context.
+func createContext(httpClient *http.Client) context.Context {
+ parent := oauth2.NoContext
+ ctx := context.WithValue(parent, oauth2.HTTPClient, httpClient)
+ return ctx
+}
diff --git a/CI/samples.ci/client/petstore/go/fake_api_test.go b/CI/samples.ci/client/petstore/go/fake_api_test.go
new file mode 100644
index 000000000000..f4242b5048c0
--- /dev/null
+++ b/CI/samples.ci/client/petstore/go/fake_api_test.go
@@ -0,0 +1,28 @@
+package main
+
+import (
+ "testing"
+
+ sw "./go-petstore"
+ "golang.org/x/net/context"
+)
+
+// TestPutBodyWithFileSchema ensures a model with the name 'File'
+// gets converted properly to the petstore.File struct vs. *os.File
+// as specified in typeMapping for 'File'.
+func TestPutBodyWithFileSchema(t *testing.T) {
+ return // early return to test compilation
+
+ schema := sw.FileSchemaTestClass{
+ File: sw.File{SourceURI: "https://example.com/image.png"},
+ Files: []sw.File{{SourceURI: "https://example.com/image.png"}}}
+
+ r, err := client.FakeApi.TestBodyWithFileSchema(context.Background(), schema)
+
+ if err != nil {
+ t.Fatalf("Error while adding pet: %v", err)
+ }
+ if r.StatusCode != 200 {
+ t.Log(r)
+ }
+}
diff --git a/CI/samples.ci/client/petstore/go/git_push.sh b/CI/samples.ci/client/petstore/go/git_push.sh
new file mode 100644
index 000000000000..1a36388db023
--- /dev/null
+++ b/CI/samples.ci/client/petstore/go/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 swagger-petstore-perl "minor update"
+
+git_user_id=$1
+git_repo_id=$2
+release_note=$3
+
+if [ "$git_user_id" = "" ]; then
+ git_user_id="YOUR_GIT_USR_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="YOUR_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 crediential 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/CI/samples.ci/client/petstore/go/pet_api_test.go b/CI/samples.ci/client/petstore/go/pet_api_test.go
new file mode 100644
index 000000000000..969fab1f667a
--- /dev/null
+++ b/CI/samples.ci/client/petstore/go/pet_api_test.go
@@ -0,0 +1,297 @@
+package main
+
+import (
+ "context"
+ "fmt"
+ "os"
+ "testing"
+
+ "github.com/antihax/optional"
+ "github.com/stretchr/testify/assert"
+
+ sw "./go-petstore"
+)
+
+var client *sw.APIClient
+
+const testHost = "petstore.swagger.io:80"
+const testScheme = "http"
+
+func TestMain(m *testing.M) {
+ cfg := sw.NewConfiguration()
+ cfg.AddDefaultHeader("testheader", "testvalue")
+ cfg.Host = testHost
+ cfg.Scheme = testScheme
+ client = sw.NewAPIClient(cfg)
+ retCode := m.Run()
+ os.Exit(retCode)
+}
+
+func TestAddPet(t *testing.T) {
+ newPet := (sw.Pet{Id: 12830, Name: "gopher",
+ PhotoUrls: []string{"http://1.com", "http://2.com"}, Status: "pending", Tags: []sw.Tag{sw.Tag{Id: 1, Name: "tag2"}}})
+
+ r, err := client.PetApi.AddPet(context.Background(), newPet)
+
+ if err != nil {
+ t.Fatalf("Error while adding pet: %v", err)
+ }
+ if r.StatusCode != 200 {
+ t.Log(r)
+ }
+}
+
+func TestFindPetsByStatusWithMissingParam(t *testing.T) {
+ _, r, err := client.PetApi.FindPetsByStatus(context.Background(), nil)
+
+ if err != nil {
+ t.Fatalf("Error while testing TestFindPetsByStatusWithMissingParam: %v", err)
+ }
+ if r.StatusCode != 200 {
+ t.Log(r)
+ }
+}
+
+func TestGetPetById(t *testing.T) {
+ isPetCorrect(t, 12830, "gopher", "pending")
+}
+
+func TestGetPetByIdWithInvalidID(t *testing.T) {
+ resp, r, err := client.PetApi.GetPetById(context.Background(), 999999999)
+ if r != nil && r.StatusCode == 404 {
+ assertedError, ok := err.(sw.GenericOpenAPIError)
+ a := assert.New(t)
+ a.True(ok)
+ a.Contains(string(assertedError.Body()), "type")
+
+ a.Contains(assertedError.Error(), "Not Found")
+ } else if err != nil {
+ t.Fatalf("Error while getting pet by invalid id: %v", err)
+ t.Log(r)
+ } else {
+ t.Log(resp)
+ }
+}
+
+func TestUpdatePetWithForm(t *testing.T) {
+ r, err := client.PetApi.UpdatePetWithForm(context.Background(), 12830, &sw.UpdatePetWithFormOpts{
+ Name: optional.NewString("golang"),
+ Status: optional.NewString("available"),
+ })
+ if err != nil {
+ t.Fatalf("Error while updating pet by id: %v", err)
+ t.Log(r)
+ }
+ if r.StatusCode != 200 {
+ t.Log(r)
+ }
+
+ // get the pet with id 12830 from server to verify the update
+ isPetCorrect(t, 12830, "golang", "available")
+}
+
+func TestFindPetsByTag(t *testing.T) {
+ var found = false
+ resp, r, err := client.PetApi.FindPetsByTags(context.Background(), []string{"tag2"})
+ if err != nil {
+ t.Fatalf("Error while getting pet by tag: %v", err)
+ t.Log(r)
+ } else {
+ if len(resp) == 0 {
+ t.Errorf("Error no pets returned")
+ } else {
+
+ assert := assert.New(t)
+ for i := 0; i < len(resp); i++ {
+ if resp[i].Id == 12830 {
+ assert.Equal(resp[i].Status, "available", "Pet status should be `pending`")
+ found = true
+ }
+ }
+ }
+
+ if found == false {
+ t.Errorf("Error while getting pet by tag could not find 12830")
+ }
+
+ if r.StatusCode != 200 {
+ t.Log(r)
+ }
+ }
+}
+
+func TestFindPetsByStatus(t *testing.T) {
+ resp, r, err := client.PetApi.FindPetsByStatus(context.Background(), []string{"available"})
+ if err != nil {
+ t.Fatalf("Error while getting pet by id: %v", err)
+ t.Log(r)
+ } else {
+ if len(resp) == 0 {
+ t.Errorf("Error no pets returned")
+ } else {
+ assert := assert.New(t)
+ for i := 0; i < len(resp); i++ {
+ assert.Equal(resp[i].Status, "available", "Pet status should be `available`")
+ }
+ }
+
+ if r.StatusCode != 200 {
+ t.Log(r)
+ }
+ }
+}
+
+func TestUploadFile(t *testing.T) {
+ file, _ := os.Open("../python/testfiles/foo.png")
+
+ _, r, err := client.PetApi.UploadFile(context.Background(), 12830, &sw.UploadFileOpts{
+ AdditionalMetadata: optional.NewString("golang"),
+ File: optional.NewInterface(file),
+ })
+
+ if err != nil {
+ t.Fatalf("Error while uploading file: %v", err)
+ }
+
+ if r.StatusCode != 200 {
+ t.Log(r)
+ }
+}
+
+func TestUploadFileRequired(t *testing.T) {
+ return // remove when server supports this endpoint
+ file, _ := os.Open("../python/testfiles/foo.png")
+
+ _, r, err := client.PetApi.UploadFileWithRequiredFile(context.Background(), 12830,
+ file,
+ &sw.UploadFileWithRequiredFileOpts{
+ AdditionalMetadata: optional.NewString("golang"),
+ })
+
+ if err != nil {
+ t.Fatalf("Error while uploading file: %v", err)
+ }
+
+ if r.StatusCode != 200 {
+ t.Log(r)
+ }
+}
+
+func TestDeletePet(t *testing.T) {
+ r, err := client.PetApi.DeletePet(context.Background(), 12830, nil)
+
+ if err != nil {
+ t.Fatalf("Error while deleting pet by id: %v", err)
+ }
+ if r.StatusCode != 200 {
+ t.Log(r)
+ }
+}
+
+/*
+// Test we can concurrently create, retrieve, update, and delete.
+func TestConcurrency(t *testing.T) {
+ errc := make(chan error)
+
+ newPets := []sw.Pet{
+ sw.Pet{Id: 912345, Name: "gopherFred", PhotoUrls: []string{"http://1.com", "http://2.com"}, Status: "pending"},
+ sw.Pet{Id: 912346, Name: "gopherDan", PhotoUrls: []string{"http://1.com", "http://2.com"}, Status: "active"},
+ sw.Pet{Id: 912347, Name: "gopherRick", PhotoUrls: []string{"http://1.com", "http://2.com"}, Status: "mia"},
+ sw.Pet{Id: 912348, Name: "gopherJohn", PhotoUrls: []string{"http://1.com", "http://2.com"}, Status: "active"},
+ sw.Pet{Id: 912349, Name: "gopherAlf", PhotoUrls: []string{"http://1.com", "http://2.com"}, Status: "pending"},
+ sw.Pet{Id: 912350, Name: "gopherRob", PhotoUrls: []string{"http://1.com", "http://2.com"}, Status: "pending"},
+ sw.Pet{Id: 912351, Name: "gopherIan", PhotoUrls: []string{"http://1.com", "http://2.com"}, Status: "active"},
+ }
+
+ // Add the pets.
+ for _, pet := range newPets {
+ go func(newPet sw.Pet) {
+ r, err := client.PetApi.AddPet(nil, newPet)
+ if r.StatusCode != 200 {
+ t.Log(r)
+ }
+ errc <- err
+ }(pet)
+ }
+ waitOnFunctions(t, errc, len(newPets))
+
+ // Verify they are correct.
+ for _, pet := range newPets {
+ go func(pet sw.Pet) {
+ isPetCorrect(t, pet.Id, pet.Name, pet.Status)
+ errc <- nil
+ }(pet)
+ }
+
+ waitOnFunctions(t, errc, len(newPets))
+
+ // Update all to active with the name gopherDan
+ for _, pet := range newPets {
+ go func(id int64) {
+ r, err := client.PetApi.UpdatePet(nil, sw.Pet{Id: (int64)(id), Name: "gopherDan", PhotoUrls: []string{"http://1.com", "http://2.com"}, Status: "active"})
+ if r.StatusCode != 200 {
+ t.Log(r)
+ }
+ errc <- err
+ }(pet.Id)
+ }
+ waitOnFunctions(t, errc, len(newPets))
+
+ // Verify they are correct.
+ for _, pet := range newPets {
+ go func(pet sw.Pet) {
+ isPetCorrect(t, pet.Id, "gopherDan", "active")
+ errc <- nil
+ }(pet)
+ }
+
+ waitOnFunctions(t, errc, len(newPets))
+
+ // Delete them all.
+ for _, pet := range newPets {
+ go func(id int64) {
+ deletePet(t, (int64)(id))
+ errc <- nil
+ }(pet.Id)
+ }
+ waitOnFunctions(t, errc, len(newPets))
+}
+*/
+
+func waitOnFunctions(t *testing.T, errc chan error, n int) {
+ for i := 0; i < n; i++ {
+ err := <-errc
+ if err != nil {
+ t.Fatalf("Error performing concurrent test: %v", err)
+ }
+ }
+}
+
+func deletePet(t *testing.T, id int64) {
+ r, err := client.PetApi.DeletePet(context.Background(), id, nil)
+
+ if err != nil {
+ t.Fatalf("Error while deleting pet by id: %v", err)
+ }
+ if r.StatusCode != 200 {
+ t.Log(r)
+ }
+}
+
+func isPetCorrect(t *testing.T, id int64, name string, status string) {
+ assert := assert.New(t)
+ resp, r, err := client.PetApi.GetPetById(context.Background(), id)
+ if err != nil {
+ t.Fatalf("Error while getting pet by id: %v", err)
+ } else {
+ assert.Equal(resp.Id, int64(id), "Pet id should be equal")
+ assert.Equal(resp.Name, name, fmt.Sprintf("Pet name should be %s", name))
+ assert.Equal(resp.Status, status, fmt.Sprintf("Pet status should be %s", status))
+
+ //t.Log(resp)
+ }
+ if r.StatusCode != 200 {
+ t.Log(r)
+ }
+}
+
diff --git a/CI/samples.ci/client/petstore/go/pom.xml b/CI/samples.ci/client/petstore/go/pom.xml
new file mode 100644
index 000000000000..7b3edeff64dc
--- /dev/null
+++ b/CI/samples.ci/client/petstore/go/pom.xml
@@ -0,0 +1,103 @@
+
+ 4.0.0
+ org.openapitools
+ GoPetstore
+ pom
+ 1.0.0
+ Go Petstore Client
+
+
+
+ maven-dependency-plugin
+
+
+ package
+
+ copy-dependencies
+
+
+ ${project.build.directory}
+
+
+
+
+
+ org.codehaus.mojo
+ exec-maven-plugin
+ 1.2.1
+
+
+ go-get-testify
+ pre-integration-test
+
+ exec
+
+
+ go
+
+ get
+ github.com/stretchr/testify/assert
+
+
+
+
+ go-get-oauth2
+ pre-integration-test
+
+ exec
+
+
+ go
+
+ get
+ golang.org/x/oauth2
+
+
+
+
+ go-get-context
+ pre-integration-test
+
+ exec
+
+
+ go
+
+ get
+ golang.org/x/net/context
+
+
+
+
+ go-get-optional
+ pre-integration-test
+
+ exec
+
+
+ go
+
+ get
+ github.com/antihax/optional
+
+
+
+
+ go-test
+ integration-test
+
+ exec
+
+
+ go
+
+ test
+ -v
+
+
+
+
+
+
+
+
diff --git a/CI/samples.ci/client/petstore/go/store_api_test.go b/CI/samples.ci/client/petstore/go/store_api_test.go
new file mode 100644
index 000000000000..3088adf7b40d
--- /dev/null
+++ b/CI/samples.ci/client/petstore/go/store_api_test.go
@@ -0,0 +1,37 @@
+package main
+
+import (
+ "context"
+ "regexp"
+ "testing"
+ "time"
+
+ sw "./go-petstore"
+)
+
+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 {
+ // Skip parsing time error due to error in Petstore Test Server
+ // https://github.com/OpenAPITools/openapi-generator/issues/1292
+ if regexp.
+ MustCompile(`^parsing time.+cannot parse "\+0000"" as "Z07:00"$`).
+ MatchString(err.Error()) {
+ t.Log("Skipping error for parsing time with `+0000` UTC offset as Petstore Test Server does not return valid RFC 3339 datetime")
+ } else {
+ t.Fatalf("Error while placing order: %v", err)
+ }
+ }
+ if r.StatusCode != 200 {
+ t.Log(r)
+ }
+}
diff --git a/CI/samples.ci/client/petstore/go/test.go.bak b/CI/samples.ci/client/petstore/go/test.go.bak
new file mode 100644
index 000000000000..54e14b9c7a04
--- /dev/null
+++ b/CI/samples.ci/client/petstore/go/test.go.bak
@@ -0,0 +1,30 @@
+package main
+
+import (
+ sw "./go-petstore"
+ "encoding/json"
+ "fmt"
+)
+
+func main() {
+
+ s := sw.NewPetApi()
+
+ // test POST(body)
+ newPet := (sw.Pet{Id: 12830, Name: "gopher",
+ PhotoUrls: []string{"http://1.com", "http://2.com"}, Status: "pending"})
+
+ jsonNewPet, _ := json.Marshal(newPet)
+ fmt.Println("newPet:", string(jsonNewPet))
+ s.AddPet(newPet)
+
+ // test POST(form)
+ s.UpdatePetWithForm(12830, "golang", "available")
+
+ // test GET
+ resp, apiResponse, err := s.GetPetById(12830)
+ fmt.Println("GetPetById: ", resp, err, apiResponse)
+
+ err2, apiResponse2 := s.DeletePet(12830, "")
+ fmt.Println("DeletePet: ", err2, apiResponse2)
+}
diff --git a/CI/samples.ci/client/petstore/go/user_api_test.go b/CI/samples.ci/client/petstore/go/user_api_test.go
new file mode 100644
index 000000000000..012c608fab6b
--- /dev/null
+++ b/CI/samples.ci/client/petstore/go/user_api_test.go
@@ -0,0 +1,153 @@
+package main
+
+import (
+ "context"
+ "testing"
+
+ "github.com/stretchr/testify/assert"
+
+ sw "./go-petstore"
+)
+
+func TestCreateUser(t *testing.T) {
+ newUser := sw.User{
+ Id: 1000,
+ FirstName: "gopher",
+ LastName: "lang",
+ Username: "gopher",
+ Password: "lang",
+ Email: "lang@test.com",
+ Phone: "5101112222",
+ UserStatus: 1}
+
+ apiResponse, err := client.UserApi.CreateUser(context.Background(), newUser)
+
+ if err != nil {
+ t.Fatalf("Error while adding user: %v", err)
+ }
+ if apiResponse.StatusCode != 200 {
+ t.Log(apiResponse)
+ }
+}
+
+//adding x to skip the test, currently it is failing
+func TestCreateUsersWithArrayInput(t *testing.T) {
+ newUsers := []sw.User{
+ sw.User{
+ Id: int64(1001),
+ FirstName: "gopher1",
+ LastName: "lang1",
+ Username: "gopher1",
+ Password: "lang1",
+ Email: "lang1@test.com",
+ Phone: "5101112222",
+ UserStatus: int32(1),
+ },
+ sw.User{
+ Id: int64(1002),
+ FirstName: "gopher2",
+ LastName: "lang2",
+ Username: "gopher2",
+ Password: "lang2",
+ Email: "lang2@test.com",
+ Phone: "5101112222",
+ UserStatus: int32(1),
+ },
+ }
+
+ apiResponse, err := client.UserApi.CreateUsersWithArrayInput(context.Background(), newUsers)
+ if err != nil {
+ t.Fatalf("Error while adding users: %v", err)
+ }
+ if apiResponse.StatusCode != 200 {
+ t.Log(apiResponse)
+ }
+
+ //tear down
+ _, err1 := client.UserApi.DeleteUser(context.Background(), "gopher1")
+ if err1 != nil {
+ t.Errorf("Error while deleting user")
+ t.Log(err1)
+ }
+
+ _, err2 := client.UserApi.DeleteUser(context.Background(), "gopher2")
+ if err2 != nil {
+ t.Errorf("Error while deleting user")
+ t.Log(err2)
+ }
+}
+
+func TestGetUserByName(t *testing.T) {
+ assert := assert.New(t)
+
+ resp, apiResponse, err := client.UserApi.GetUserByName(context.Background(), "gopher")
+ if err != nil {
+ t.Fatalf("Error while getting user by id: %v", err)
+ } else {
+ assert.Equal(resp.Id, int64(1000), "User id should be equal")
+ assert.Equal(resp.Username, "gopher", "User name should be gopher")
+ assert.Equal(resp.LastName, "lang", "Last name should be lang")
+ //t.Log(resp)
+ }
+ if apiResponse.StatusCode != 200 {
+ t.Log(apiResponse)
+ }
+}
+
+func TestGetUserByNameWithInvalidID(t *testing.T) {
+ resp, apiResponse, err := client.UserApi.GetUserByName(context.Background(), "999999999")
+ if apiResponse != nil && apiResponse.StatusCode == 404 {
+ return // This is a pass condition. API will return with a 404 error.
+ } else if err != nil {
+ t.Fatalf("Error while getting user by invalid id: %v", err)
+ t.Log(apiResponse)
+ } else {
+ t.Log(resp)
+ }
+ if apiResponse.StatusCode != 200 {
+ t.Log(apiResponse)
+ }
+}
+
+func TestUpdateUser(t *testing.T) {
+ assert := assert.New(t)
+
+ newUser := sw.User{
+ Id: 1000,
+ FirstName: "gopher20",
+ LastName: "lang20",
+ Username: "gopher",
+ Password: "lang",
+ Email: "lang@test.com",
+ Phone: "5101112222",
+ UserStatus: 1}
+
+ apiResponse, err := client.UserApi.UpdateUser(context.Background(), "gopher", newUser)
+ if err != nil {
+ t.Fatalf("Error while deleting user by id: %v", err)
+ }
+ if apiResponse.StatusCode != 200 {
+ t.Log(apiResponse)
+ }
+
+ //verify changings are correct
+ resp, apiResponse, err := client.UserApi.GetUserByName(context.Background(), "gopher")
+ if err != nil {
+ t.Fatalf("Error while getting user by id: %v", err)
+ } else {
+ assert.Equal(resp.Id, int64(1000), "User id should be equal")
+ assert.Equal(resp.FirstName, "gopher20", "User name should be gopher")
+ assert.Equal(resp.Password, "lang", "User name should be the same")
+ }
+}
+
+func TestDeleteUser(t *testing.T) {
+ apiResponse, err := client.UserApi.DeleteUser(context.Background(), "gopher")
+
+ if err != nil {
+ t.Fatalf("Error while deleting user: %v", err)
+ }
+ if apiResponse.StatusCode != 200 {
+ t.Log(apiResponse)
+ }
+}
diff --git a/CI/samples.ci/client/petstore/groovy/pom.xml b/CI/samples.ci/client/petstore/groovy/pom.xml
new file mode 100644
index 000000000000..ff81e4c0e5fd
--- /dev/null
+++ b/CI/samples.ci/client/petstore/groovy/pom.xml
@@ -0,0 +1,46 @@
+
+ 4.0.0
+ org.openapitools
+ GroovyPetstoreClientTests
+ pom
+ 1.0-SNAPSHOT
+ Groovy Petstore Client
+
+
+
+ maven-dependency-plugin
+
+
+ package
+
+ copy-dependencies
+
+
+ ${project.build.directory}
+
+
+
+
+
+ org.codehaus.mojo
+ exec-maven-plugin
+ 1.2.1
+
+
+ bundle-test
+ integration-test
+
+ exec
+
+
+ gradle
+
+ test
+
+
+
+
+
+
+
+
diff --git a/samples/client/petstore/groovy/src/test/groovy/openapitools/PetApiTest.groovy b/CI/samples.ci/client/petstore/groovy/test/groovy/openapitools/PetApiTest.groovy
similarity index 100%
rename from samples/client/petstore/groovy/src/test/groovy/openapitools/PetApiTest.groovy
rename to CI/samples.ci/client/petstore/groovy/test/groovy/openapitools/PetApiTest.groovy
diff --git a/CI/samples.ci/client/petstore/haskell-http-client/CONTRIBUTING.md b/CI/samples.ci/client/petstore/haskell-http-client/CONTRIBUTING.md
new file mode 100644
index 000000000000..4d86a160843c
--- /dev/null
+++ b/CI/samples.ci/client/petstore/haskell-http-client/CONTRIBUTING.md
@@ -0,0 +1,29 @@
+### Rebuild jar
+
+```
+ (cd ../../../..; mvn package);
+```
+
+### Regenerate Template
+
+1. Run the shell script `haskell-http-client-petstore.sh` to update the Petstore sample
+
+```bash
+ (cd ../../../..; ./bin/haskell-http-client-petstore.sh);
+```
+
+### Typecheck, Build and run Unit tests
+
+2. Check that the following commands complete build without any errors
+
+```bash
+ (rm -Rf ./.stack-work ./example-app/.stack-work ./tests-integration/.stack-work);
+ (stack haddock && stack test);
+ (cd ./example-app; stack build);
+ (cd ./tests-integration; stack build --no-run-tests);
+```
+
+### Integration Tests
+
+3. run the integration tests as described in `./tests-integration/README.md`
+
diff --git a/CI/samples.ci/client/petstore/haskell-http-client/Makefile b/CI/samples.ci/client/petstore/haskell-http-client/Makefile
new file mode 100644
index 000000000000..19812ed68a9f
--- /dev/null
+++ b/CI/samples.ci/client/petstore/haskell-http-client/Makefile
@@ -0,0 +1,10 @@
+STACKCMD := stack --install-ghc
+.PHONY: all clean build test test-integration build-example build-integration
+all: clean build test build-example build-integration
+clean: ; (rm -Rf ./.stack-work ./example-app/.stack-work ./tests-integration/.stack-work);
+build: ; ($(STACKCMD) haddock --no-haddock-deps --fast);
+test: ; ($(STACKCMD) test --fast);
+build-example: build ; (cd ./example-app; $(STACKCMD) build --fast);
+# a test-only project may exit with ExitFailure, despite building successfully
+build-integration: build ; (cd ./tests-integration; $(STACKCMD) build --no-run-tests --fast);
+test-integration: build-integration ; (cd ./tests-integration; $(STACKCMD) test --fast);
diff --git a/CI/samples.ci/client/petstore/haskell-http-client/pom.xml b/CI/samples.ci/client/petstore/haskell-http-client/pom.xml
new file mode 100644
index 000000000000..2e72fea324c8
--- /dev/null
+++ b/CI/samples.ci/client/petstore/haskell-http-client/pom.xml
@@ -0,0 +1,63 @@
+
+ 4.0.0
+ org.openapitools
+ openapi-petstore-haskell-http-client
+ pom
+ 1.0-SNAPSHOT
+ OpenAPI Petstore - Haskell http-client Client
+
+
+
+ maven-dependency-plugin
+
+
+ package
+
+ copy-dependencies
+
+
+ ${project.build.directory}
+
+
+
+
+
+ org.codehaus.mojo
+ exec-maven-plugin
+ 1.2.1
+
+
+ stack-haddock
+ pre-integration-test
+
+ exec
+
+
+ stack
+
+ --install-ghc
+ --no-haddock-deps
+ haddock
+ --fast
+
+
+
+
+ stack-test
+ integration-test
+
+ exec
+
+
+ stack
+
+ test
+ --fast
+
+
+
+
+
+
+
+
diff --git a/CI/samples.ci/client/petstore/haskell-http-client/tests-integration/README.md b/CI/samples.ci/client/petstore/haskell-http-client/tests-integration/README.md
new file mode 100644
index 000000000000..6efc9268c321
--- /dev/null
+++ b/CI/samples.ci/client/petstore/haskell-http-client/tests-integration/README.md
@@ -0,0 +1,54 @@
+# openapi-petstore-tests-integration
+
+This contains integration tests for the haskell http-client openapi-petstore api client library.
+
+This module is not auto-generated.
+
+The integration tests require a openapi petstore server running at
+`http://0.0.0.0/v2`, or the value of the `HOST` environment variable.
+
+The api client library bindings are expected to live in the parent folder
+
+
+### Petstore Server
+
+The petstore server can be obtained at:
+
+https://github.com/wing328/swagger-samples/tree/docker/java/java-jersey-jaxrs
+
+Follow the instructions in the readme to install and run the petstore
+server (the docker branch is used here, but docker is not required)
+
+### Usage
+
+1. Install the [Haskell `stack` tool](http://docs.haskellstack.org/en/stable/README).
+2. Start the petstore server (described above)
+3. To run the integration tests:
+```
+stack --install-ghc test
+```
+4. After stack installs ghc on the first run, `--install-ghc` can be omitted
+
+### Optional Environment Variables
+
+* `HOST` - the root url of the petstore server
+* `http_proxy` - the address of the http proxy
+
+Example:
+
+```
+HOST=http://0.0.0.0/v2 http_proxy=http://0.0.0.0:8080 stack --install-ghc test
+```
+
+
+### Running with Maven
+
+If using Maven, after ensuring the haskell `stack` tool is installed
+(run `stack --version` to verify installation), an example command to
+run the integration tests with maven in this directory is:
+
+```
+mvn -q verify -Pintegration-test
+```
+
+Adjust `pom.xml` as necessary to set environment variables.
diff --git a/CI/samples.ci/client/petstore/haskell-http-client/tests-integration/openapi-petstore-tests-integration.cabal b/CI/samples.ci/client/petstore/haskell-http-client/tests-integration/openapi-petstore-tests-integration.cabal
new file mode 100644
index 000000000000..d606f362919b
--- /dev/null
+++ b/CI/samples.ci/client/petstore/haskell-http-client/tests-integration/openapi-petstore-tests-integration.cabal
@@ -0,0 +1,57 @@
+cabal-version: 1.12
+
+-- This file has been generated from package.yaml by hpack version 0.31.2.
+--
+-- see: https://github.com/sol/hpack
+--
+-- hash: 1de2469e3014acffdfb079309edd15dc88ec7f5acce21f1062b61a1b002418fd
+
+name: openapi-petstore-tests-integration
+version: 0.1.0.0
+synopsis: integration tests for auto-generated openapi-petstore API Client
+description: integration tests for auto-generated openapi-petstore API Client
+category: Web
+homepage: https://openapi-generator.tech
+author: Author Name Here
+maintainer: author.name@email.com
+copyright: YEAR - AUTHOR
+license: UnspecifiedLicense
+build-type: Simple
+extra-source-files:
+ README.md
+
+test-suite tests
+ type: exitcode-stdio-1.0
+ main-is: Test.hs
+ other-modules:
+ Paths_openapi_petstore_tests_integration
+ hs-source-dirs:
+ tests
+ ghc-options: -Wall -fno-warn-orphans
+ build-depends:
+ HUnit >1.5.0
+ , QuickCheck
+ , aeson
+ , base >=4.7 && <5.0
+ , bytestring >=0.10.0 && <0.11
+ , case-insensitive
+ , containers
+ , exceptions >=0.4
+ , hspec >=1.8
+ , http-api-data >=0.3.4 && <0.5
+ , http-client >=0.5 && <0.7
+ , http-client-tls
+ , http-media >=0.4 && <0.9
+ , http-types >=0.8 && <0.13
+ , iso8601-time
+ , microlens >=0.4.3 && <0.5
+ , mtl >=2.2.1
+ , openapi-petstore
+ , safe-exceptions <0.2
+ , semigroups
+ , text
+ , time
+ , transformers >=0.4.0.0
+ , unordered-containers
+ , vector >=0.10.9 && <0.13
+ default-language: Haskell2010
diff --git a/CI/samples.ci/client/petstore/haskell-http-client/tests-integration/package.yaml b/CI/samples.ci/client/petstore/haskell-http-client/tests-integration/package.yaml
new file mode 100644
index 000000000000..bd2962fb5894
--- /dev/null
+++ b/CI/samples.ci/client/petstore/haskell-http-client/tests-integration/package.yaml
@@ -0,0 +1,54 @@
+name: openapi-petstore-tests-integration
+version: '0.1.0.0'
+synopsis: integration tests for auto-generated openapi-petstore API Client
+description: ! '
+ integration tests for auto-generated openapi-petstore API Client
+'
+category: Web
+author: Author Name Here
+maintainer: author.name@email.com
+copyright: YEAR - AUTHOR
+license: UnspecifiedLicense
+homepage: https://openapi-generator.tech
+extra-source-files:
+- README.md
+ghc-options: -Wall
+dependencies:
+- base >=4.7 && <5.0
+- transformers >=0.4.0.0
+- mtl >=2.2.1
+- unordered-containers
+- containers >=0.5.0.0 && <0.7
+- aeson >=1.0 && <2.0
+- bytestring >=0.10.0 && <0.11
+- http-types >=0.8 && <0.13
+- http-client >=0.5 && <0.7
+- http-client-tls
+- http-api-data >= 0.3.4 && <0.5
+- http-media >= 0.4 && < 0.9
+- text >=0.11 && <1.3
+- time >=1.5 && <1.9
+- vector >=0.10.9 && <0.13
+- exceptions >= 0.4
+- case-insensitive
+- safe-exceptions <0.2
+- microlens >= 0.4.3 && <0.5
+- openapi-petstore
+tests:
+ tests:
+ main: Test.hs
+ source-dirs: tests
+ ghc-options:
+ - -fno-warn-orphans
+ dependencies:
+ - openapi-petstore
+ - bytestring >=0.10.0 && <0.11
+ - containers
+ - hspec >=1.8
+ - HUnit > 1.5.0
+ - text
+ - time
+ - iso8601-time
+ - aeson
+ - semigroups
+ - QuickCheck
diff --git a/CI/samples.ci/client/petstore/haskell-http-client/tests-integration/pom.xml b/CI/samples.ci/client/petstore/haskell-http-client/tests-integration/pom.xml
new file mode 100644
index 000000000000..dbe2f2f85b96
--- /dev/null
+++ b/CI/samples.ci/client/petstore/haskell-http-client/tests-integration/pom.xml
@@ -0,0 +1,49 @@
+
+ 4.0.0
+ org.openapitools
+ openapi-petstore-haskell-http-client-tests-integration
+ pom
+ 1.0-SNAPSHOT
+ OpenAPI Petstore - Haskell http-client Client - Integration Tests
+
+
+
+ maven-dependency-plugin
+
+
+ package
+
+ copy-dependencies
+
+
+ ${project.build.directory}
+
+
+
+
+
+ org.codehaus.mojo
+ exec-maven-plugin
+ 1.2.1
+
+
+ stack-test
+ integration-test
+
+ exec
+
+
+
+ http://0.0.0.0/v2
+
+ stack
+
+ test
+
+
+
+
+
+
+
+
diff --git a/samples/client/petstore/haskell-http-client/example-app/stack.yaml b/CI/samples.ci/client/petstore/haskell-http-client/tests-integration/stack.yaml
similarity index 100%
rename from samples/client/petstore/haskell-http-client/example-app/stack.yaml
rename to CI/samples.ci/client/petstore/haskell-http-client/tests-integration/stack.yaml
diff --git a/samples/client/petstore/haskell-http-client/example-app/stack.yaml.lock b/CI/samples.ci/client/petstore/haskell-http-client/tests-integration/stack.yaml.lock
similarity index 100%
rename from samples/client/petstore/haskell-http-client/example-app/stack.yaml.lock
rename to CI/samples.ci/client/petstore/haskell-http-client/tests-integration/stack.yaml.lock
diff --git a/CI/samples.ci/client/petstore/haskell-http-client/tests-integration/tests/Test.hs b/CI/samples.ci/client/petstore/haskell-http-client/tests-integration/tests/Test.hs
new file mode 100644
index 000000000000..3f6d4b6fef65
--- /dev/null
+++ b/CI/samples.ci/client/petstore/haskell-http-client/tests-integration/tests/Test.hs
@@ -0,0 +1,292 @@
+{-# LANGUAGE MultiParamTypeClasses #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE LambdaCase #-}
+{-# OPTIONS_GHC -fno-warn-deprecations -fno-warn-unused-matches -fno-warn-unused-imports -fno-warn-unused-binds -fno-warn-orphans #-}
+
+import qualified Data.Aeson as A
+import qualified Data.ByteString.Lazy.Char8 as BCL
+import qualified Data.Text as T
+import qualified Data.Time as TI
+import qualified Lens.Micro as L
+import qualified Network.HTTP.Client as NH
+import qualified Network.HTTP.Types.Status as NH
+
+import Data.Typeable (Proxy(..))
+import Test.Hspec
+import Test.Hspec.QuickCheck
+import Test.HUnit
+import Test.HUnit.Lang
+
+import Control.Monad.IO.Class
+import Data.IORef
+import qualified Data.Map.Strict as Map
+import Data.Map.Strict (Map)
+import System.Environment (getEnvironment)
+
+import qualified OpenAPIPetstore as S
+
+import Data.Monoid ((<>))
+
+-- * UTILS
+
+assertSuccess :: Expectation
+assertSuccess = Success `shouldBe` Success
+
+-- * MAIN
+
+main :: IO ()
+main = do
+
+ env <- getEnvironment
+
+ mgr <- NH.newManager NH.defaultManagerSettings
+
+ config0 <- S.withStdoutLogging =<< S.newConfig
+
+ let config =
+ -- configure host
+ case lookup "HOST" env of
+ Just h -> config0 { S.configHost = BCL.pack h }
+ _ -> config0 { S.configHost = "http://0.0.0.0/v2" }
+ -- each configured auth method is only applied to requests that specify them
+ `S.addAuthMethod` S.AuthBasicHttpBasicTest "username" "password"
+ `S.addAuthMethod` S.AuthApiKeyApiKey "secret-key"
+ `S.addAuthMethod` S.AuthApiKeyApiKeyQuery "secret-key"
+ `S.addAuthMethod` S.AuthOAuthPetstoreAuth "secret-key"
+
+ putStrLn "\n******** CONFIG ********"
+ putStrLn (show config)
+
+
+ hspec $ do
+ testPetOps mgr config
+ testStoreOps mgr config
+ testUserOps mgr config
+
+-- * PET TESTS
+
+testPetOps :: NH.Manager -> S.OpenAPIPetstoreConfig -> Spec
+testPetOps mgr config =
+
+ describe "** pet operations" $ do
+
+ _pet <- runIO $ newIORef (Nothing :: Maybe S.Pet)
+
+ it "addPet" $ do
+ let addPetRequest =
+ S.addPet (S.ContentType S.MimeJSON) (S.mkPet "name" ["url1", "url2"])
+ addPetResponse <- S.dispatchLbs mgr config addPetRequest
+ NH.responseStatus addPetResponse `shouldBe` NH.status200
+ case A.eitherDecode (NH.responseBody addPetResponse) of
+ Right pet -> do
+ _pet `writeIORef` Just pet
+ assertSuccess
+ Left e -> assertFailure e
+
+ around (\go ->
+ readIORef _pet >>= \case
+ Just pet@S.Pet {S.petId = Just petId} -> go (petId, pet)
+ _ -> pendingWith "no petId") $
+ it "getPetById" $ \(petId, pet) -> do
+ let getPetByIdRequest = S.getPetById (S.Accept S.MimeJSON) (S.PetId petId)
+ getPetByIdRequestResult <- S.dispatchMime mgr config getPetByIdRequest
+ NH.responseStatus (S.mimeResultResponse getPetByIdRequestResult) `shouldBe` NH.status200
+ case S.mimeResult getPetByIdRequestResult of
+ Right p -> p `shouldBe` pet
+ Left (S.MimeError e _) -> assertFailure e
+
+ it "findPetsByStatus" $ do
+ let findPetsByStatusRequest = S.findPetsByStatus (S.Accept S.MimeJSON)
+ (S.Status [ S.E'Status2'Available
+ , S.E'Status2'Pending
+ , S.E'Status2'Sold])
+ findPetsByStatusResult <- S.dispatchMime mgr config findPetsByStatusRequest
+ NH.responseStatus (S.mimeResultResponse findPetsByStatusResult) `shouldBe` NH.status200
+ case S.mimeResult findPetsByStatusResult of
+ Right r -> length r `shouldSatisfy` (> 0)
+ Left (S.MimeError e _) -> assertFailure e
+
+ it "findPetsByTags" $ do
+ let findPetsByTagsRequest = S.findPetsByTags (S.Accept S.MimeJSON) (S.Tags ["name","tag1"])
+ findPetsByTagsResult <- S.dispatchMime mgr config findPetsByTagsRequest
+ NH.responseStatus (S.mimeResultResponse findPetsByTagsResult) `shouldBe` NH.status200
+ case S.mimeResult findPetsByTagsResult of
+ Right r -> length r `shouldSatisfy` (> 0)
+ Left (S.MimeError e _) -> assertFailure e
+
+ around (\go ->
+ readIORef _pet >>= \case
+ Just pet -> go pet
+ _ -> pendingWith "no pet") $
+ it "updatePet" $ \pet -> do
+ let updatePetRequest = S.updatePet (S.ContentType S.MimeJSON)
+ (pet
+ { S.petStatus = Just S.E'Status2'Available
+ , S.petCategory = Just (S.Category (Just 3) "catname")
+ })
+ updatePetResponse <- S.dispatchLbs mgr config updatePetRequest
+ NH.responseStatus updatePetResponse `shouldBe` NH.status200
+
+ it "updatePetWithFormRequest" $ do
+ readIORef _pet >>= \case
+ Just S.Pet {S.petId = Just petId} -> do
+ let updatePetWithFormRequest = S.updatePetWithForm
+ (S.PetId petId)
+ `S.applyOptionalParam` S.Name2 "petName"
+ `S.applyOptionalParam` S.StatusText "pending"
+ updatePetWithFormResponse <- S.dispatchLbs mgr config updatePetWithFormRequest
+ NH.responseStatus updatePetWithFormResponse `shouldBe` NH.status200
+ _ -> pendingWith "no pet"
+
+ around (\go ->
+ readIORef _pet >>= \case
+ Just pet@S.Pet {S.petId = Just petId} -> go petId
+ _ -> pendingWith "no petId") $
+ it "uploadFile" $ \petId -> do
+ let uploadFileRequest = S.uploadFile (S.PetId petId)
+ `S.applyOptionalParam` S.File2 "package.yaml"
+ `S.applyOptionalParam` S.AdditionalMetadata "a package.yaml file"
+ uploadFileRequestResult <- S.dispatchMime mgr config uploadFileRequest
+ NH.responseStatus (S.mimeResultResponse uploadFileRequestResult) `shouldBe` NH.status200
+ case S.mimeResult uploadFileRequestResult of
+ Right _ -> assertSuccess
+ Left (S.MimeError e _) -> assertFailure e
+
+ around (\go ->
+ readIORef _pet >>= \case
+ Just pet@S.Pet {S.petId = Just petId} -> go petId
+ _ -> pendingWith "no petId") $
+ it "deletePet" $ \petId -> do
+ let deletePetRequest = S.deletePet (S.PetId petId)
+ `S.applyOptionalParam` S.ApiKey "api key"
+ deletePetResponse <- S.dispatchLbs mgr config deletePetRequest
+ NH.responseStatus deletePetResponse `shouldBe` NH.status200
+
+-- * STORE TESTS
+
+testStoreOps :: NH.Manager -> S.OpenAPIPetstoreConfig -> Spec
+testStoreOps mgr config = do
+
+ describe "** store operations" $ do
+
+ _order <- runIO $ newIORef (Nothing :: Maybe S.Order)
+
+ it "getInventory" $ do
+ let getInventoryRequest = S.getInventory
+ `S.setHeader` [("api_key","special-key")]
+ getInventoryRequestRequestResult <- S.dispatchMime mgr config getInventoryRequest
+ NH.responseStatus (S.mimeResultResponse getInventoryRequestRequestResult) `shouldBe` NH.status200
+ case S.mimeResult getInventoryRequestRequestResult of
+ Right r -> length r `shouldSatisfy` (> 0)
+ Left (S.MimeError e _) -> assertFailure e
+
+ it "placeOrder" $ do
+ now <- TI.getCurrentTime
+ let placeOrderRequest = S.placeOrder (S.ContentType S.MimeJSON) (S.Accept S.MimeJSON)
+ (S.mkOrder
+ { S.orderId = Just 21
+ , S.orderQuantity = Just 210
+ , S.orderShipDate = Just (S.DateTime now)
+ })
+ placeOrderResult <- S.dispatchMime mgr config placeOrderRequest
+ NH.responseStatus (S.mimeResultResponse placeOrderResult) `shouldBe` NH.status200
+ case S.mimeResult placeOrderResult of
+ Right order -> do
+ _order `writeIORef` Just order
+ assertSuccess
+ Left (S.MimeError e _) -> assertFailure e
+
+ around (\go ->
+ readIORef _order >>= \case
+ Just order@S.Order {S.orderId = Just orderId} -> go (orderId, order)
+ _ -> pendingWith "no orderId") $
+ it "getOrderById" $ \(orderId, order) -> do
+ let getOrderByIdRequest = S.getOrderById (S.Accept S.MimeJSON) (S.OrderId orderId)
+ getOrderByIdRequestResult <- S.dispatchMime mgr config getOrderByIdRequest
+ NH.responseStatus (S.mimeResultResponse getOrderByIdRequestResult) `shouldBe` NH.status200
+ case S.mimeResult getOrderByIdRequestResult of
+ Right o -> o `shouldBe` order
+ Left (S.MimeError e _) -> assertFailure e
+
+ around (\go ->
+ readIORef _order >>= \case
+ Just S.Order {S.orderId = Just orderId} -> go (T.pack (show orderId))
+ _ -> pendingWith "no orderId") $
+ it "deleteOrder" $ \orderId -> do
+ let deleteOrderRequest = S.deleteOrder (S.OrderIdText orderId)
+ deleteOrderResult <- S.dispatchLbs mgr config deleteOrderRequest
+ NH.responseStatus deleteOrderResult `shouldBe` NH.status200
+
+
+-- * USER TESTS
+
+testUserOps :: NH.Manager -> S.OpenAPIPetstoreConfig -> Spec
+testUserOps mgr config = do
+
+ describe "** user operations" $ do
+
+ let _username = "hsusername"
+ _password = "password1"
+ _user =
+ S.mkUser
+ { S.userId = Just 21
+ , S.userUsername = Just _username
+ , S.userEmail = Just "xyz@example.com"
+ , S.userUserStatus = Just 0
+ }
+ _users =
+ take 8 $
+ drop 1 $
+ iterate
+ (L.over (S.userUsernameL . L._Just) (<> "*") .
+ L.over (S.userIdL . L._Just) (+ 1))
+ _user
+
+ before (pure _user) $
+ it "createUser" $ \user -> do
+ let createUserRequest = S.createUser (S.ContentType S.MimeJSON) user
+ createUserResult <- S.dispatchLbs mgr config createUserRequest
+ NH.responseStatus createUserResult `shouldBe` NH.status200
+
+ before (pure _users) $
+ it "createUsersWithArrayInput" $ \users -> do
+ let createUsersWithArrayInputRequest = S.createUsersWithArrayInput (S.ContentType S.MimeJSON) (S.Body users)
+ createUsersWithArrayInputResult <- S.dispatchLbs mgr config createUsersWithArrayInputRequest
+ NH.responseStatus createUsersWithArrayInputResult `shouldBe` NH.status200
+
+ before (pure _users) $
+ it "createUsersWithListInput" $ \users -> do
+ let createUsersWithListInputRequest = S.createUsersWithListInput (S.ContentType S.MimeJSON) (S.Body users)
+ createUsersWithListInputResult <- S.dispatchLbs mgr config createUsersWithListInputRequest
+ NH.responseStatus createUsersWithListInputResult `shouldBe` NH.status200
+
+ before (pure (_username, _user)) $
+ it "getUserByName" $ \(username, user) -> do
+ let getUserByNameRequest = S.getUserByName (S.Accept S.MimeJSON) (S.Username username)
+ getUserByNameResult <- S.dispatchMime mgr config getUserByNameRequest
+ NH.responseStatus (S.mimeResultResponse getUserByNameResult) `shouldBe` NH.status200
+ case S.mimeResult getUserByNameResult of
+ Right u -> u `shouldBe` user
+ Left (S.MimeError e _) -> assertFailure e
+
+ before (pure (_username, _password)) $
+ it "loginUser" $ \(username, password) -> do
+ let loginUserRequest = S.loginUser (S.Accept S.MimeJSON) (S.Username username) (S.Password password)
+ loginUserResult <- S.dispatchLbs mgr config loginUserRequest
+ NH.responseStatus loginUserResult `shouldBe` NH.status200
+
+ before (pure (_username, _user)) $
+ it "updateUser" $ \(username, user) -> do
+ let updateUserRequest = S.updateUser (S.ContentType S.MimeJSON) user (S.Username username)
+ updateUserResult <- S.dispatchLbs mgr config updateUserRequest
+ NH.responseStatus updateUserResult `shouldBe` NH.status200
+
+ it "logoutuser" $ do
+ logoutUserResult <- S.dispatchLbs mgr config S.logoutUser
+ NH.responseStatus logoutUserResult `shouldBe` NH.status200
+
+ before (pure _username) $
+ it "deleteUser" $ \username -> do
+ let deleteUserRequest = S.deleteUser (S.Username username)
+ deleteUserResult <- S.dispatchLbs mgr config deleteUserRequest
+ NH.responseStatus deleteUserResult `shouldBe` NH.status200
diff --git a/CI/samples.ci/client/petstore/javascript-es6/package-lock.json b/CI/samples.ci/client/petstore/javascript-es6/package-lock.json
new file mode 100644
index 000000000000..4b9d17d02486
--- /dev/null
+++ b/CI/samples.ci/client/petstore/javascript-es6/package-lock.json
@@ -0,0 +1,3511 @@
+{
+ "name": "open_api_petstore",
+ "version": "1.0.0",
+ "lockfileVersion": 1,
+ "requires": true,
+ "dependencies": {
+ "ansi-regex": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
+ "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8="
+ },
+ "ansi-styles": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
+ "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4="
+ },
+ "anymatch": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.2.tgz",
+ "integrity": "sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA==",
+ "optional": 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=",
+ "optional": 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=="
+ },
+ "arr-union": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz",
+ "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ="
+ },
+ "array-unique": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz",
+ "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=",
+ "optional": true
+ },
+ "assign-symbols": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz",
+ "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c="
+ },
+ "async-each": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz",
+ "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=",
+ "optional": true
+ },
+ "asynckit": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
+ "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k="
+ },
+ "atob": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz",
+ "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg=="
+ },
+ "babel": {
+ "version": "6.23.0",
+ "resolved": "https://registry.npmjs.org/babel/-/babel-6.23.0.tgz",
+ "integrity": "sha1-0NHn2APpdHZb7qMjLU4VPA77kPQ="
+ },
+ "babel-cli": {
+ "version": "6.26.0",
+ "resolved": "https://registry.npmjs.org/babel-cli/-/babel-cli-6.26.0.tgz",
+ "integrity": "sha1-UCq1SHTX24itALiHoGODzgPQAvE=",
+ "requires": {
+ "babel-core": "^6.26.0",
+ "babel-polyfill": "^6.26.0",
+ "babel-register": "^6.26.0",
+ "babel-runtime": "^6.26.0",
+ "chokidar": "^1.6.1",
+ "commander": "^2.11.0",
+ "convert-source-map": "^1.5.0",
+ "fs-readdir-recursive": "^1.0.0",
+ "glob": "^7.1.2",
+ "lodash": "^4.17.4",
+ "output-file-sync": "^1.1.2",
+ "path-is-absolute": "^1.0.1",
+ "slash": "^1.0.0",
+ "source-map": "^0.5.6",
+ "v8flags": "^2.1.1"
+ },
+ "dependencies": {
+ "babel-core": {
+ "version": "6.26.3",
+ "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.3.tgz",
+ "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-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=",
+ "requires": {
+ "chalk": "^1.1.3",
+ "esutils": "^2.0.2",
+ "js-tokens": "^3.0.2"
+ }
+ },
+ "babel-core": {
+ "version": "6.26.0",
+ "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.0.tgz",
+ "integrity": "sha1-rzL3izGm/O8RnIew/Y2XU/A6C7g=",
+ "dev": true,
+ "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.0",
+ "debug": "^2.6.8",
+ "json5": "^0.5.1",
+ "lodash": "^4.17.4",
+ "minimatch": "^3.0.4",
+ "path-is-absolute": "^1.0.1",
+ "private": "^0.1.7",
+ "slash": "^1.0.0",
+ "source-map": "^0.5.6"
+ }
+ },
+ "babel-generator": {
+ "version": "6.26.1",
+ "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.1.tgz",
+ "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-helper-bindify-decorators": {
+ "version": "6.24.1",
+ "resolved": "https://registry.npmjs.org/babel-helper-bindify-decorators/-/babel-helper-bindify-decorators-6.24.1.tgz",
+ "integrity": "sha1-FMGeXxQte0fxmlJDHlKxzLxAozA=",
+ "dev": true,
+ "requires": {
+ "babel-runtime": "^6.22.0",
+ "babel-traverse": "^6.24.1",
+ "babel-types": "^6.24.1"
+ }
+ },
+ "babel-helper-builder-binary-assignment-operator-visitor": {
+ "version": "6.24.1",
+ "resolved": "https://registry.npmjs.org/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.24.1.tgz",
+ "integrity": "sha1-zORReto1b0IgvK6KAsKzRvmlZmQ=",
+ "dev": true,
+ "requires": {
+ "babel-helper-explode-assignable-expression": "^6.24.1",
+ "babel-runtime": "^6.22.0",
+ "babel-types": "^6.24.1"
+ }
+ },
+ "babel-helper-call-delegate": {
+ "version": "6.24.1",
+ "resolved": "https://registry.npmjs.org/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz",
+ "integrity": "sha1-7Oaqzdx25Bw0YfiL/Fdb0Nqi340=",
+ "dev": true,
+ "requires": {
+ "babel-helper-hoist-variables": "^6.24.1",
+ "babel-runtime": "^6.22.0",
+ "babel-traverse": "^6.24.1",
+ "babel-types": "^6.24.1"
+ }
+ },
+ "babel-helper-define-map": {
+ "version": "6.26.0",
+ "resolved": "https://registry.npmjs.org/babel-helper-define-map/-/babel-helper-define-map-6.26.0.tgz",
+ "integrity": "sha1-pfVtq0GiX5fstJjH66ypgZ+Vvl8=",
+ "dev": true,
+ "requires": {
+ "babel-helper-function-name": "^6.24.1",
+ "babel-runtime": "^6.26.0",
+ "babel-types": "^6.26.0",
+ "lodash": "^4.17.4"
+ }
+ },
+ "babel-helper-explode-assignable-expression": {
+ "version": "6.24.1",
+ "resolved": "https://registry.npmjs.org/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.24.1.tgz",
+ "integrity": "sha1-8luCz33BBDPFX3BZLVdGQArCLKo=",
+ "dev": true,
+ "requires": {
+ "babel-runtime": "^6.22.0",
+ "babel-traverse": "^6.24.1",
+ "babel-types": "^6.24.1"
+ }
+ },
+ "babel-helper-explode-class": {
+ "version": "6.24.1",
+ "resolved": "https://registry.npmjs.org/babel-helper-explode-class/-/babel-helper-explode-class-6.24.1.tgz",
+ "integrity": "sha1-fcKjkQ3uAHBW4eMdZAztPVTqqes=",
+ "dev": true,
+ "requires": {
+ "babel-helper-bindify-decorators": "^6.24.1",
+ "babel-runtime": "^6.22.0",
+ "babel-traverse": "^6.24.1",
+ "babel-types": "^6.24.1"
+ }
+ },
+ "babel-helper-function-name": {
+ "version": "6.24.1",
+ "resolved": "https://registry.npmjs.org/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz",
+ "integrity": "sha1-00dbjAPtmCQqJbSDUasYOZ01gKk=",
+ "dev": true,
+ "requires": {
+ "babel-helper-get-function-arity": "^6.24.1",
+ "babel-runtime": "^6.22.0",
+ "babel-template": "^6.24.1",
+ "babel-traverse": "^6.24.1",
+ "babel-types": "^6.24.1"
+ }
+ },
+ "babel-helper-get-function-arity": {
+ "version": "6.24.1",
+ "resolved": "https://registry.npmjs.org/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz",
+ "integrity": "sha1-j3eCqpNAfEHTqlCQj4mwMbG2hT0=",
+ "dev": true,
+ "requires": {
+ "babel-runtime": "^6.22.0",
+ "babel-types": "^6.24.1"
+ }
+ },
+ "babel-helper-hoist-variables": {
+ "version": "6.24.1",
+ "resolved": "https://registry.npmjs.org/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz",
+ "integrity": "sha1-HssnaJydJVE+rbyZFKc/VAi+enY=",
+ "dev": true,
+ "requires": {
+ "babel-runtime": "^6.22.0",
+ "babel-types": "^6.24.1"
+ }
+ },
+ "babel-helper-optimise-call-expression": {
+ "version": "6.24.1",
+ "resolved": "https://registry.npmjs.org/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz",
+ "integrity": "sha1-96E0J7qfc/j0+pk8VKl4gtEkQlc=",
+ "dev": true,
+ "requires": {
+ "babel-runtime": "^6.22.0",
+ "babel-types": "^6.24.1"
+ }
+ },
+ "babel-helper-regex": {
+ "version": "6.26.0",
+ "resolved": "https://registry.npmjs.org/babel-helper-regex/-/babel-helper-regex-6.26.0.tgz",
+ "integrity": "sha1-MlxZ+QL4LyS3T6zu0DY5VPZJXnI=",
+ "dev": true,
+ "requires": {
+ "babel-runtime": "^6.26.0",
+ "babel-types": "^6.26.0",
+ "lodash": "^4.17.4"
+ }
+ },
+ "babel-helper-remap-async-to-generator": {
+ "version": "6.24.1",
+ "resolved": "https://registry.npmjs.org/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.24.1.tgz",
+ "integrity": "sha1-XsWBgnrXI/7N04HxySg5BnbkVRs=",
+ "dev": true,
+ "requires": {
+ "babel-helper-function-name": "^6.24.1",
+ "babel-runtime": "^6.22.0",
+ "babel-template": "^6.24.1",
+ "babel-traverse": "^6.24.1",
+ "babel-types": "^6.24.1"
+ }
+ },
+ "babel-helper-replace-supers": {
+ "version": "6.24.1",
+ "resolved": "https://registry.npmjs.org/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz",
+ "integrity": "sha1-v22/5Dk40XNpohPKiov3S2qQqxo=",
+ "dev": true,
+ "requires": {
+ "babel-helper-optimise-call-expression": "^6.24.1",
+ "babel-messages": "^6.23.0",
+ "babel-runtime": "^6.22.0",
+ "babel-template": "^6.24.1",
+ "babel-traverse": "^6.24.1",
+ "babel-types": "^6.24.1"
+ }
+ },
+ "babel-helpers": {
+ "version": "6.24.1",
+ "resolved": "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz",
+ "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=",
+ "requires": {
+ "babel-runtime": "^6.22.0"
+ }
+ },
+ "babel-plugin-check-es2015-constants": {
+ "version": "6.22.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz",
+ "integrity": "sha1-NRV7EBQm/S/9PaP3XH0ekYNbv4o=",
+ "dev": true,
+ "requires": {
+ "babel-runtime": "^6.22.0"
+ }
+ },
+ "babel-plugin-syntax-async-functions": {
+ "version": "6.13.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz",
+ "integrity": "sha1-ytnK0RkbWtY0vzCuCHI5HgZHvpU=",
+ "dev": true
+ },
+ "babel-plugin-syntax-async-generators": {
+ "version": "6.13.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-syntax-async-generators/-/babel-plugin-syntax-async-generators-6.13.0.tgz",
+ "integrity": "sha1-a8lj67FuzLrmuStZbrfzXDQqi5o=",
+ "dev": true
+ },
+ "babel-plugin-syntax-class-constructor-call": {
+ "version": "6.18.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-syntax-class-constructor-call/-/babel-plugin-syntax-class-constructor-call-6.18.0.tgz",
+ "integrity": "sha1-nLnTn+Q8hgC+yBRkVt3L1OGnZBY=",
+ "dev": true
+ },
+ "babel-plugin-syntax-class-properties": {
+ "version": "6.13.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-syntax-class-properties/-/babel-plugin-syntax-class-properties-6.13.0.tgz",
+ "integrity": "sha1-1+sjt5oxf4VDlixQW4J8fWysJ94=",
+ "dev": true
+ },
+ "babel-plugin-syntax-decorators": {
+ "version": "6.13.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-syntax-decorators/-/babel-plugin-syntax-decorators-6.13.0.tgz",
+ "integrity": "sha1-MSVjtNvePMgGzuPkFszurd0RrAs=",
+ "dev": true
+ },
+ "babel-plugin-syntax-do-expressions": {
+ "version": "6.13.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-syntax-do-expressions/-/babel-plugin-syntax-do-expressions-6.13.0.tgz",
+ "integrity": "sha1-V0d1YTmqJtOQ0JQQsDdEugfkeW0=",
+ "dev": true
+ },
+ "babel-plugin-syntax-dynamic-import": {
+ "version": "6.18.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-syntax-dynamic-import/-/babel-plugin-syntax-dynamic-import-6.18.0.tgz",
+ "integrity": "sha1-jWomIpyDdFqZgqRBBRVyyqF5sdo=",
+ "dev": true
+ },
+ "babel-plugin-syntax-exponentiation-operator": {
+ "version": "6.13.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz",
+ "integrity": "sha1-nufoM3KQ2pUoggGmpX9BcDF4MN4=",
+ "dev": true
+ },
+ "babel-plugin-syntax-export-extensions": {
+ "version": "6.13.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-syntax-export-extensions/-/babel-plugin-syntax-export-extensions-6.13.0.tgz",
+ "integrity": "sha1-cKFITw+QiaToStRLrDU8lbmxJyE=",
+ "dev": true
+ },
+ "babel-plugin-syntax-function-bind": {
+ "version": "6.13.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-syntax-function-bind/-/babel-plugin-syntax-function-bind-6.13.0.tgz",
+ "integrity": "sha1-SMSV8Xe98xqYHnMvVa3AvdJgH0Y=",
+ "dev": true
+ },
+ "babel-plugin-syntax-object-rest-spread": {
+ "version": "6.13.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz",
+ "integrity": "sha1-/WU28rzhODb/o6VFjEkDpZe7O/U=",
+ "dev": true
+ },
+ "babel-plugin-syntax-trailing-function-commas": {
+ "version": "6.22.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz",
+ "integrity": "sha1-ugNgk3+NBuQBgKQ/4NVhb/9TLPM=",
+ "dev": true
+ },
+ "babel-plugin-transform-async-generator-functions": {
+ "version": "6.24.1",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-async-generator-functions/-/babel-plugin-transform-async-generator-functions-6.24.1.tgz",
+ "integrity": "sha1-8FiQAUX9PpkHpt3yjaWfIVJYpds=",
+ "dev": true,
+ "requires": {
+ "babel-helper-remap-async-to-generator": "^6.24.1",
+ "babel-plugin-syntax-async-generators": "^6.5.0",
+ "babel-runtime": "^6.22.0"
+ }
+ },
+ "babel-plugin-transform-async-to-generator": {
+ "version": "6.24.1",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz",
+ "integrity": "sha1-ZTbjeK/2yx1VF6wOQOs+n8jQh2E=",
+ "dev": true,
+ "requires": {
+ "babel-helper-remap-async-to-generator": "^6.24.1",
+ "babel-plugin-syntax-async-functions": "^6.8.0",
+ "babel-runtime": "^6.22.0"
+ }
+ },
+ "babel-plugin-transform-class-constructor-call": {
+ "version": "6.24.1",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-class-constructor-call/-/babel-plugin-transform-class-constructor-call-6.24.1.tgz",
+ "integrity": "sha1-gNwoVQWsBn3LjWxl4vbxGrd2Xvk=",
+ "dev": true,
+ "requires": {
+ "babel-plugin-syntax-class-constructor-call": "^6.18.0",
+ "babel-runtime": "^6.22.0",
+ "babel-template": "^6.24.1"
+ }
+ },
+ "babel-plugin-transform-class-properties": {
+ "version": "6.24.1",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-class-properties/-/babel-plugin-transform-class-properties-6.24.1.tgz",
+ "integrity": "sha1-anl2PqYdM9NvN7YRqp3vgagbRqw=",
+ "dev": true,
+ "requires": {
+ "babel-helper-function-name": "^6.24.1",
+ "babel-plugin-syntax-class-properties": "^6.8.0",
+ "babel-runtime": "^6.22.0",
+ "babel-template": "^6.24.1"
+ }
+ },
+ "babel-plugin-transform-decorators": {
+ "version": "6.24.1",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-decorators/-/babel-plugin-transform-decorators-6.24.1.tgz",
+ "integrity": "sha1-eIAT2PjGtSIr33s0Q5Df13Vp4k0=",
+ "dev": true,
+ "requires": {
+ "babel-helper-explode-class": "^6.24.1",
+ "babel-plugin-syntax-decorators": "^6.13.0",
+ "babel-runtime": "^6.22.0",
+ "babel-template": "^6.24.1",
+ "babel-types": "^6.24.1"
+ }
+ },
+ "babel-plugin-transform-do-expressions": {
+ "version": "6.22.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-do-expressions/-/babel-plugin-transform-do-expressions-6.22.0.tgz",
+ "integrity": "sha1-KMyvkoEtlJws0SgfaQyP3EaK6bs=",
+ "dev": true,
+ "requires": {
+ "babel-plugin-syntax-do-expressions": "^6.8.0",
+ "babel-runtime": "^6.22.0"
+ }
+ },
+ "babel-plugin-transform-es2015-arrow-functions": {
+ "version": "6.22.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz",
+ "integrity": "sha1-RSaSy3EdX3ncf4XkQM5BufJE0iE=",
+ "dev": true,
+ "requires": {
+ "babel-runtime": "^6.22.0"
+ }
+ },
+ "babel-plugin-transform-es2015-block-scoped-functions": {
+ "version": "6.22.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz",
+ "integrity": "sha1-u8UbSflk1wy42OC5ToICRs46YUE=",
+ "dev": true,
+ "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=",
+ "dev": true,
+ "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-plugin-transform-es2015-classes": {
+ "version": "6.24.1",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz",
+ "integrity": "sha1-WkxYpQyclGHlZLSyo7+ryXolhNs=",
+ "dev": true,
+ "requires": {
+ "babel-helper-define-map": "^6.24.1",
+ "babel-helper-function-name": "^6.24.1",
+ "babel-helper-optimise-call-expression": "^6.24.1",
+ "babel-helper-replace-supers": "^6.24.1",
+ "babel-messages": "^6.23.0",
+ "babel-runtime": "^6.22.0",
+ "babel-template": "^6.24.1",
+ "babel-traverse": "^6.24.1",
+ "babel-types": "^6.24.1"
+ }
+ },
+ "babel-plugin-transform-es2015-computed-properties": {
+ "version": "6.24.1",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz",
+ "integrity": "sha1-b+Ko0WiV1WNPTNmZttNICjCBWbM=",
+ "dev": true,
+ "requires": {
+ "babel-runtime": "^6.22.0",
+ "babel-template": "^6.24.1"
+ }
+ },
+ "babel-plugin-transform-es2015-destructuring": {
+ "version": "6.23.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz",
+ "integrity": "sha1-mXux8auWf2gtKwh2/jWNYOdlxW0=",
+ "dev": true,
+ "requires": {
+ "babel-runtime": "^6.22.0"
+ }
+ },
+ "babel-plugin-transform-es2015-duplicate-keys": {
+ "version": "6.24.1",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz",
+ "integrity": "sha1-c+s9MQypaePvnskcU3QabxV2Qj4=",
+ "dev": true,
+ "requires": {
+ "babel-runtime": "^6.22.0",
+ "babel-types": "^6.24.1"
+ }
+ },
+ "babel-plugin-transform-es2015-for-of": {
+ "version": "6.23.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz",
+ "integrity": "sha1-9HyVsrYT3x0+zC/bdXNiPHUkhpE=",
+ "dev": true,
+ "requires": {
+ "babel-runtime": "^6.22.0"
+ }
+ },
+ "babel-plugin-transform-es2015-function-name": {
+ "version": "6.24.1",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz",
+ "integrity": "sha1-g0yJhTvDaxrw86TF26qU/Y6sqos=",
+ "dev": true,
+ "requires": {
+ "babel-helper-function-name": "^6.24.1",
+ "babel-runtime": "^6.22.0",
+ "babel-types": "^6.24.1"
+ }
+ },
+ "babel-plugin-transform-es2015-literals": {
+ "version": "6.22.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz",
+ "integrity": "sha1-T1SgLWzWbPkVKAAZox0xklN3yi4=",
+ "dev": true,
+ "requires": {
+ "babel-runtime": "^6.22.0"
+ }
+ },
+ "babel-plugin-transform-es2015-modules-amd": {
+ "version": "6.24.1",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz",
+ "integrity": "sha1-Oz5UAXI5hC1tGcMBHEvS8AoA0VQ=",
+ "dev": true,
+ "requires": {
+ "babel-plugin-transform-es2015-modules-commonjs": "^6.24.1",
+ "babel-runtime": "^6.22.0",
+ "babel-template": "^6.24.1"
+ }
+ },
+ "babel-plugin-transform-es2015-modules-commonjs": {
+ "version": "6.26.2",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.2.tgz",
+ "integrity": "sha512-CV9ROOHEdrjcwhIaJNBGMBCodN+1cfkwtM1SbUHmvyy35KGT7fohbpOxkE2uLz1o6odKK2Ck/tz47z+VqQfi9Q==",
+ "dev": true,
+ "requires": {
+ "babel-plugin-transform-strict-mode": "^6.24.1",
+ "babel-runtime": "^6.26.0",
+ "babel-template": "^6.26.0",
+ "babel-types": "^6.26.0"
+ }
+ },
+ "babel-plugin-transform-es2015-modules-systemjs": {
+ "version": "6.24.1",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz",
+ "integrity": "sha1-/4mhQrkRmpBhlfXxBuzzBdlAfSM=",
+ "dev": true,
+ "requires": {
+ "babel-helper-hoist-variables": "^6.24.1",
+ "babel-runtime": "^6.22.0",
+ "babel-template": "^6.24.1"
+ }
+ },
+ "babel-plugin-transform-es2015-modules-umd": {
+ "version": "6.24.1",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz",
+ "integrity": "sha1-rJl+YoXNGO1hdq22B9YCNErThGg=",
+ "dev": true,
+ "requires": {
+ "babel-plugin-transform-es2015-modules-amd": "^6.24.1",
+ "babel-runtime": "^6.22.0",
+ "babel-template": "^6.24.1"
+ }
+ },
+ "babel-plugin-transform-es2015-object-super": {
+ "version": "6.24.1",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz",
+ "integrity": "sha1-JM72muIcuDp/hgPa0CH1cusnj40=",
+ "dev": true,
+ "requires": {
+ "babel-helper-replace-supers": "^6.24.1",
+ "babel-runtime": "^6.22.0"
+ }
+ },
+ "babel-plugin-transform-es2015-parameters": {
+ "version": "6.24.1",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz",
+ "integrity": "sha1-V6w1GrScrxSpfNE7CfZv3wpiXys=",
+ "dev": true,
+ "requires": {
+ "babel-helper-call-delegate": "^6.24.1",
+ "babel-helper-get-function-arity": "^6.24.1",
+ "babel-runtime": "^6.22.0",
+ "babel-template": "^6.24.1",
+ "babel-traverse": "^6.24.1",
+ "babel-types": "^6.24.1"
+ }
+ },
+ "babel-plugin-transform-es2015-shorthand-properties": {
+ "version": "6.24.1",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz",
+ "integrity": "sha1-JPh11nIch2YbvZmkYi5R8U3jiqA=",
+ "dev": true,
+ "requires": {
+ "babel-runtime": "^6.22.0",
+ "babel-types": "^6.24.1"
+ }
+ },
+ "babel-plugin-transform-es2015-spread": {
+ "version": "6.22.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz",
+ "integrity": "sha1-1taKmfia7cRTbIGlQujdnxdG+NE=",
+ "dev": true,
+ "requires": {
+ "babel-runtime": "^6.22.0"
+ }
+ },
+ "babel-plugin-transform-es2015-sticky-regex": {
+ "version": "6.24.1",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz",
+ "integrity": "sha1-AMHNsaynERLN8M9hJsLta0V8zbw=",
+ "dev": true,
+ "requires": {
+ "babel-helper-regex": "^6.24.1",
+ "babel-runtime": "^6.22.0",
+ "babel-types": "^6.24.1"
+ }
+ },
+ "babel-plugin-transform-es2015-template-literals": {
+ "version": "6.22.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz",
+ "integrity": "sha1-qEs0UPfp+PH2g51taH2oS7EjbY0=",
+ "dev": true,
+ "requires": {
+ "babel-runtime": "^6.22.0"
+ }
+ },
+ "babel-plugin-transform-es2015-typeof-symbol": {
+ "version": "6.23.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz",
+ "integrity": "sha1-3sCfHN3/lLUqxz1QXITfWdzOs3I=",
+ "dev": true,
+ "requires": {
+ "babel-runtime": "^6.22.0"
+ }
+ },
+ "babel-plugin-transform-es2015-unicode-regex": {
+ "version": "6.24.1",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz",
+ "integrity": "sha1-04sS9C6nMj9yk4fxinxa4frrNek=",
+ "dev": true,
+ "requires": {
+ "babel-helper-regex": "^6.24.1",
+ "babel-runtime": "^6.22.0",
+ "regexpu-core": "^2.0.0"
+ }
+ },
+ "babel-plugin-transform-exponentiation-operator": {
+ "version": "6.24.1",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.24.1.tgz",
+ "integrity": "sha1-KrDJx/MJj6SJB3cruBP+QejeOg4=",
+ "dev": true,
+ "requires": {
+ "babel-helper-builder-binary-assignment-operator-visitor": "^6.24.1",
+ "babel-plugin-syntax-exponentiation-operator": "^6.8.0",
+ "babel-runtime": "^6.22.0"
+ }
+ },
+ "babel-plugin-transform-export-extensions": {
+ "version": "6.22.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-export-extensions/-/babel-plugin-transform-export-extensions-6.22.0.tgz",
+ "integrity": "sha1-U3OLR+deghhYnuqUbLvTkQm75lM=",
+ "dev": true,
+ "requires": {
+ "babel-plugin-syntax-export-extensions": "^6.8.0",
+ "babel-runtime": "^6.22.0"
+ }
+ },
+ "babel-plugin-transform-function-bind": {
+ "version": "6.22.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-function-bind/-/babel-plugin-transform-function-bind-6.22.0.tgz",
+ "integrity": "sha1-xvuOlqwpajELjPjqQBRiQH3fapc=",
+ "dev": true,
+ "requires": {
+ "babel-plugin-syntax-function-bind": "^6.8.0",
+ "babel-runtime": "^6.22.0"
+ }
+ },
+ "babel-plugin-transform-object-rest-spread": {
+ "version": "6.26.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.26.0.tgz",
+ "integrity": "sha1-DzZpLVD+9rfi1LOsFHgTepY7ewY=",
+ "dev": true,
+ "requires": {
+ "babel-plugin-syntax-object-rest-spread": "^6.8.0",
+ "babel-runtime": "^6.26.0"
+ }
+ },
+ "babel-plugin-transform-regenerator": {
+ "version": "6.26.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.26.0.tgz",
+ "integrity": "sha1-4HA2lvveJ/Cj78rPi03KL3s6jy8=",
+ "dev": true,
+ "requires": {
+ "regenerator-transform": "^0.10.0"
+ }
+ },
+ "babel-plugin-transform-strict-mode": {
+ "version": "6.24.1",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz",
+ "integrity": "sha1-1fr3qleKZbvlkc9e2uBKDGcCB1g=",
+ "dev": true,
+ "requires": {
+ "babel-runtime": "^6.22.0",
+ "babel-types": "^6.24.1"
+ }
+ },
+ "babel-polyfill": {
+ "version": "6.26.0",
+ "resolved": "https://registry.npmjs.org/babel-polyfill/-/babel-polyfill-6.26.0.tgz",
+ "integrity": "sha1-N5k3q8Z9eJWXCtxiHyhM2WbPIVM=",
+ "requires": {
+ "babel-runtime": "^6.26.0",
+ "core-js": "^2.5.0",
+ "regenerator-runtime": "^0.10.5"
+ },
+ "dependencies": {
+ "regenerator-runtime": {
+ "version": "0.10.5",
+ "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz",
+ "integrity": "sha1-M2w+/BIgrc7dosn6tntaeVWjNlg="
+ }
+ }
+ },
+ "babel-preset-env": {
+ "version": "1.7.0",
+ "resolved": "https://registry.npmjs.org/babel-preset-env/-/babel-preset-env-1.7.0.tgz",
+ "integrity": "sha512-9OR2afuKDneX2/q2EurSftUYM0xGu4O2D9adAhVfADDhrYDaxXV0rBbevVYoY9n6nyX1PmQW/0jtpJvUNr9CHg==",
+ "dev": true,
+ "requires": {
+ "babel-plugin-check-es2015-constants": "^6.22.0",
+ "babel-plugin-syntax-trailing-function-commas": "^6.22.0",
+ "babel-plugin-transform-async-to-generator": "^6.22.0",
+ "babel-plugin-transform-es2015-arrow-functions": "^6.22.0",
+ "babel-plugin-transform-es2015-block-scoped-functions": "^6.22.0",
+ "babel-plugin-transform-es2015-block-scoping": "^6.23.0",
+ "babel-plugin-transform-es2015-classes": "^6.23.0",
+ "babel-plugin-transform-es2015-computed-properties": "^6.22.0",
+ "babel-plugin-transform-es2015-destructuring": "^6.23.0",
+ "babel-plugin-transform-es2015-duplicate-keys": "^6.22.0",
+ "babel-plugin-transform-es2015-for-of": "^6.23.0",
+ "babel-plugin-transform-es2015-function-name": "^6.22.0",
+ "babel-plugin-transform-es2015-literals": "^6.22.0",
+ "babel-plugin-transform-es2015-modules-amd": "^6.22.0",
+ "babel-plugin-transform-es2015-modules-commonjs": "^6.23.0",
+ "babel-plugin-transform-es2015-modules-systemjs": "^6.23.0",
+ "babel-plugin-transform-es2015-modules-umd": "^6.23.0",
+ "babel-plugin-transform-es2015-object-super": "^6.22.0",
+ "babel-plugin-transform-es2015-parameters": "^6.23.0",
+ "babel-plugin-transform-es2015-shorthand-properties": "^6.22.0",
+ "babel-plugin-transform-es2015-spread": "^6.22.0",
+ "babel-plugin-transform-es2015-sticky-regex": "^6.22.0",
+ "babel-plugin-transform-es2015-template-literals": "^6.22.0",
+ "babel-plugin-transform-es2015-typeof-symbol": "^6.23.0",
+ "babel-plugin-transform-es2015-unicode-regex": "^6.22.0",
+ "babel-plugin-transform-exponentiation-operator": "^6.22.0",
+ "babel-plugin-transform-regenerator": "^6.22.0",
+ "browserslist": "^3.2.6",
+ "invariant": "^2.2.2",
+ "semver": "^5.3.0"
+ }
+ },
+ "babel-preset-stage-0": {
+ "version": "6.24.1",
+ "resolved": "https://registry.npmjs.org/babel-preset-stage-0/-/babel-preset-stage-0-6.24.1.tgz",
+ "integrity": "sha1-VkLRUEL5E4TX5a+LyIsduVsDnmo=",
+ "dev": true,
+ "requires": {
+ "babel-plugin-transform-do-expressions": "^6.22.0",
+ "babel-plugin-transform-function-bind": "^6.22.0",
+ "babel-preset-stage-1": "^6.24.1"
+ }
+ },
+ "babel-preset-stage-1": {
+ "version": "6.24.1",
+ "resolved": "https://registry.npmjs.org/babel-preset-stage-1/-/babel-preset-stage-1-6.24.1.tgz",
+ "integrity": "sha1-dpLNfc1oSZB+auSgqFWJz7niv7A=",
+ "dev": true,
+ "requires": {
+ "babel-plugin-transform-class-constructor-call": "^6.24.1",
+ "babel-plugin-transform-export-extensions": "^6.22.0",
+ "babel-preset-stage-2": "^6.24.1"
+ }
+ },
+ "babel-preset-stage-2": {
+ "version": "6.24.1",
+ "resolved": "https://registry.npmjs.org/babel-preset-stage-2/-/babel-preset-stage-2-6.24.1.tgz",
+ "integrity": "sha1-2eKWD7PXEYfw5k7sYrwHdnIZvcE=",
+ "dev": true,
+ "requires": {
+ "babel-plugin-syntax-dynamic-import": "^6.18.0",
+ "babel-plugin-transform-class-properties": "^6.24.1",
+ "babel-plugin-transform-decorators": "^6.24.1",
+ "babel-preset-stage-3": "^6.24.1"
+ }
+ },
+ "babel-preset-stage-3": {
+ "version": "6.24.1",
+ "resolved": "https://registry.npmjs.org/babel-preset-stage-3/-/babel-preset-stage-3-6.24.1.tgz",
+ "integrity": "sha1-g2raCp56f6N8sTj7kyb4eTSkg5U=",
+ "dev": true,
+ "requires": {
+ "babel-plugin-syntax-trailing-function-commas": "^6.22.0",
+ "babel-plugin-transform-async-generator-functions": "^6.24.1",
+ "babel-plugin-transform-async-to-generator": "^6.24.1",
+ "babel-plugin-transform-exponentiation-operator": "^6.24.1",
+ "babel-plugin-transform-object-rest-spread": "^6.22.0"
+ }
+ },
+ "babel-register": {
+ "version": "6.26.0",
+ "resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.26.0.tgz",
+ "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"
+ },
+ "dependencies": {
+ "babel-core": {
+ "version": "6.26.3",
+ "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.3.tgz",
+ "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-runtime": {
+ "version": "6.26.0",
+ "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz",
+ "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=",
+ "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=",
+ "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=",
+ "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=="
+ },
+ "balanced-match": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
+ "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c="
+ },
+ "base": {
+ "version": "0.11.2",
+ "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz",
+ "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==",
+ "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=",
+ "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==",
+ "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==",
+ "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==",
+ "requires": {
+ "is-accessor-descriptor": "^1.0.0",
+ "is-data-descriptor": "^1.0.0",
+ "kind-of": "^6.0.2"
+ }
+ },
+ "isobject": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
+ "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8="
+ },
+ "kind-of": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz",
+ "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA=="
+ }
+ }
+ },
+ "binary-extensions": {
+ "version": "1.12.0",
+ "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.12.0.tgz",
+ "integrity": "sha512-DYWGk01lDcxeS/K9IHPGWfT8PsJmbXRtRd2Sx72Tnb8pcYZQFF1oSDb8hJtS1vhp212q1Rzi5dUf9+nq0o9UIg==",
+ "optional": true
+ },
+ "brace-expansion": {
+ "version": "1.1.11",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
+ "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+ "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=",
+ "optional": true,
+ "requires": {
+ "expand-range": "^1.8.1",
+ "preserve": "^0.2.0",
+ "repeat-element": "^1.1.2"
+ }
+ },
+ "browser-stdout": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz",
+ "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==",
+ "dev": true
+ },
+ "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"
+ }
+ },
+ "cache-base": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz",
+ "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==",
+ "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"
+ },
+ "dependencies": {
+ "isobject": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
+ "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8="
+ }
+ }
+ },
+ "caniuse-lite": {
+ "version": "1.0.30000930",
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000930.tgz",
+ "integrity": "sha512-KD+pw9DderBLB8CGqBzYyFWpnrPVOEjsjargU/CvkNyg60od3cxSPTcTeMPhxJhDbkQPWvOz5BAyBzNl/St9vg==",
+ "dev": true
+ },
+ "chalk": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
+ "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"
+ }
+ },
+ "chokidar": {
+ "version": "1.7.0",
+ "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz",
+ "integrity": "sha1-eY5ol3gVHIB2tLNg5e3SjNortGg=",
+ "optional": 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"
+ }
+ },
+ "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==",
+ "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=",
+ "requires": {
+ "is-descriptor": "^0.1.0"
+ }
+ },
+ "isobject": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
+ "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8="
+ }
+ }
+ },
+ "collection-visit": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz",
+ "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=",
+ "requires": {
+ "map-visit": "^1.0.0",
+ "object-visit": "^1.0.0"
+ }
+ },
+ "combined-stream": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.7.tgz",
+ "integrity": "sha512-brWl9y6vOB1xYPZcpZde3N9zDByXTosAeMDo4p1wzo6UMOX4vumB+TP1RZ76sfE6Md68Q0NJSrE/gbezd4Ul+w==",
+ "requires": {
+ "delayed-stream": "~1.0.0"
+ }
+ },
+ "commander": {
+ "version": "2.19.0",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-2.19.0.tgz",
+ "integrity": "sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg=="
+ },
+ "component-emitter": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz",
+ "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY="
+ },
+ "concat-map": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
+ "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s="
+ },
+ "convert-source-map": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.6.0.tgz",
+ "integrity": "sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A==",
+ "requires": {
+ "safe-buffer": "~5.1.1"
+ }
+ },
+ "cookiejar": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.2.tgz",
+ "integrity": "sha512-Mw+adcfzPxcPeI+0WlvRrr/3lGVO0bD75SxX6811cxSh1Wbxx7xZBGK1eVtDf6si8rg2lhnUjsVLMFMfbRIuwA=="
+ },
+ "copy-descriptor": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz",
+ "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40="
+ },
+ "core-js": {
+ "version": "2.6.3",
+ "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.3.tgz",
+ "integrity": "sha512-l00tmFFZOBHtYhN4Cz7k32VM7vTn3rE2ANjQDxdEN6zmXZ/xq1jQuutnmHvMG1ZJ7xd72+TA5YpUK8wz3rWsfQ=="
+ },
+ "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="
+ },
+ "debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "requires": {
+ "ms": "2.0.0"
+ }
+ },
+ "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="
+ },
+ "define-property": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz",
+ "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==",
+ "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==",
+ "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==",
+ "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==",
+ "requires": {
+ "is-accessor-descriptor": "^1.0.0",
+ "is-data-descriptor": "^1.0.0",
+ "kind-of": "^6.0.2"
+ }
+ },
+ "isobject": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
+ "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8="
+ },
+ "kind-of": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz",
+ "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA=="
+ }
+ }
+ },
+ "delayed-stream": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
+ "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk="
+ },
+ "detect-indent": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz",
+ "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=",
+ "requires": {
+ "repeating": "^2.0.0"
+ }
+ },
+ "diff": {
+ "version": "3.5.0",
+ "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz",
+ "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==",
+ "dev": true
+ },
+ "electron-to-chromium": {
+ "version": "1.3.106",
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.106.tgz",
+ "integrity": "sha512-eXX45p4q9CRxG0G8D3ZBZYSdN3DnrcZfrFvt6VUr1u7aKITEtRY/xwWzJ/UZcWXa7DMqPu/pYwuZ6Nm+bl0GmA==",
+ "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="
+ },
+ "esutils": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz",
+ "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs="
+ },
+ "expand-brackets": {
+ "version": "0.1.5",
+ "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz",
+ "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=",
+ "optional": 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=",
+ "optional": true,
+ "requires": {
+ "fill-range": "^2.1.0"
+ }
+ },
+ "expect.js": {
+ "version": "0.3.1",
+ "resolved": "https://registry.npmjs.org/expect.js/-/expect.js-0.3.1.tgz",
+ "integrity": "sha1-sKWaDS7/VDdUTr8M6qYBWEHQm1s=",
+ "dev": true
+ },
+ "extend": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
+ "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g=="
+ },
+ "extend-shallow": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz",
+ "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=",
+ "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==",
+ "requires": {
+ "is-plain-object": "^2.0.4"
+ }
+ }
+ }
+ },
+ "extglob": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz",
+ "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=",
+ "optional": true,
+ "requires": {
+ "is-extglob": "^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=",
+ "optional": 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==",
+ "optional": 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"
+ }
+ },
+ "for-in": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz",
+ "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA="
+ },
+ "for-own": {
+ "version": "0.1.5",
+ "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz",
+ "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=",
+ "optional": true,
+ "requires": {
+ "for-in": "^1.0.1"
+ }
+ },
+ "form-data": {
+ "version": "2.3.3",
+ "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz",
+ "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==",
+ "requires": {
+ "asynckit": "^0.4.0",
+ "combined-stream": "^1.0.6",
+ "mime-types": "^2.1.12"
+ }
+ },
+ "formatio": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/formatio/-/formatio-1.1.1.tgz",
+ "integrity": "sha1-XtPM1jZVEJc4NGXZlhmRAOhhYek=",
+ "dev": true,
+ "requires": {
+ "samsam": "~1.1"
+ }
+ },
+ "formidable": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/formidable/-/formidable-1.2.1.tgz",
+ "integrity": "sha512-Fs9VRguL0gqGHkXS5GQiMCr1VhZBxz0JnJs4JmMp/2jL18Fmbzvv7vOFRU+U8TBkHEE/CX1qDXzJplVULgsLeg=="
+ },
+ "fragment-cache": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz",
+ "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=",
+ "requires": {
+ "map-cache": "^0.2.2"
+ }
+ },
+ "fs-readdir-recursive": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz",
+ "integrity": "sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA=="
+ },
+ "fs.realpath": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
+ "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8="
+ },
+ "fsevents": {
+ "version": "1.2.7",
+ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.7.tgz",
+ "integrity": "sha512-Pxm6sI2MeBD7RdD12RYsqaP0nMiwx8eZBXCa6z2L+mRHm2DYrOYwihmhjpkdjUHwQhslWQjRpEgNq4XvBmaAuw==",
+ "optional": true,
+ "requires": {
+ "nan": "^2.9.2",
+ "node-pre-gyp": "^0.10.0"
+ },
+ "dependencies": {
+ "abbrev": {
+ "version": "1.1.1",
+ "bundled": true,
+ "optional": true
+ },
+ "ansi-regex": {
+ "version": "2.1.1",
+ "bundled": true
+ },
+ "aproba": {
+ "version": "1.2.0",
+ "bundled": true,
+ "optional": true
+ },
+ "are-we-there-yet": {
+ "version": "1.1.5",
+ "bundled": true,
+ "optional": true,
+ "requires": {
+ "delegates": "^1.0.0",
+ "readable-stream": "^2.0.6"
+ }
+ },
+ "balanced-match": {
+ "version": "1.0.0",
+ "bundled": true
+ },
+ "brace-expansion": {
+ "version": "1.1.11",
+ "bundled": true,
+ "requires": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
+ "chownr": {
+ "version": "1.1.1",
+ "bundled": true,
+ "optional": true
+ },
+ "code-point-at": {
+ "version": "1.1.0",
+ "bundled": true
+ },
+ "concat-map": {
+ "version": "0.0.1",
+ "bundled": true
+ },
+ "console-control-strings": {
+ "version": "1.1.0",
+ "bundled": true
+ },
+ "core-util-is": {
+ "version": "1.0.2",
+ "bundled": true,
+ "optional": true
+ },
+ "debug": {
+ "version": "2.6.9",
+ "bundled": true,
+ "optional": true,
+ "requires": {
+ "ms": "2.0.0"
+ }
+ },
+ "deep-extend": {
+ "version": "0.6.0",
+ "bundled": true,
+ "optional": true
+ },
+ "delegates": {
+ "version": "1.0.0",
+ "bundled": true,
+ "optional": true
+ },
+ "detect-libc": {
+ "version": "1.0.3",
+ "bundled": true,
+ "optional": true
+ },
+ "fs-minipass": {
+ "version": "1.2.5",
+ "bundled": true,
+ "optional": true,
+ "requires": {
+ "minipass": "^2.2.1"
+ }
+ },
+ "fs.realpath": {
+ "version": "1.0.0",
+ "bundled": true,
+ "optional": true
+ },
+ "gauge": {
+ "version": "2.7.4",
+ "bundled": 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.3",
+ "bundled": 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,
+ "optional": true
+ },
+ "iconv-lite": {
+ "version": "0.4.24",
+ "bundled": true,
+ "optional": true,
+ "requires": {
+ "safer-buffer": ">= 2.1.2 < 3"
+ }
+ },
+ "ignore-walk": {
+ "version": "3.0.1",
+ "bundled": true,
+ "optional": true,
+ "requires": {
+ "minimatch": "^3.0.4"
+ }
+ },
+ "inflight": {
+ "version": "1.0.6",
+ "bundled": true,
+ "optional": true,
+ "requires": {
+ "once": "^1.3.0",
+ "wrappy": "1"
+ }
+ },
+ "inherits": {
+ "version": "2.0.3",
+ "bundled": true
+ },
+ "ini": {
+ "version": "1.3.5",
+ "bundled": true,
+ "optional": true
+ },
+ "is-fullwidth-code-point": {
+ "version": "1.0.0",
+ "bundled": true,
+ "requires": {
+ "number-is-nan": "^1.0.0"
+ }
+ },
+ "isarray": {
+ "version": "1.0.0",
+ "bundled": true,
+ "optional": true
+ },
+ "minimatch": {
+ "version": "3.0.4",
+ "bundled": true,
+ "requires": {
+ "brace-expansion": "^1.1.7"
+ }
+ },
+ "minimist": {
+ "version": "0.0.8",
+ "bundled": true
+ },
+ "minipass": {
+ "version": "2.3.5",
+ "bundled": true,
+ "requires": {
+ "safe-buffer": "^5.1.2",
+ "yallist": "^3.0.0"
+ }
+ },
+ "minizlib": {
+ "version": "1.2.1",
+ "bundled": true,
+ "optional": true,
+ "requires": {
+ "minipass": "^2.2.1"
+ }
+ },
+ "mkdirp": {
+ "version": "0.5.1",
+ "bundled": true,
+ "requires": {
+ "minimist": "0.0.8"
+ }
+ },
+ "ms": {
+ "version": "2.0.0",
+ "bundled": true,
+ "optional": true
+ },
+ "needle": {
+ "version": "2.2.4",
+ "bundled": true,
+ "optional": true,
+ "requires": {
+ "debug": "^2.1.2",
+ "iconv-lite": "^0.4.4",
+ "sax": "^1.2.4"
+ }
+ },
+ "node-pre-gyp": {
+ "version": "0.10.3",
+ "bundled": true,
+ "optional": true,
+ "requires": {
+ "detect-libc": "^1.0.2",
+ "mkdirp": "^0.5.1",
+ "needle": "^2.2.1",
+ "nopt": "^4.0.1",
+ "npm-packlist": "^1.1.6",
+ "npmlog": "^4.0.2",
+ "rc": "^1.2.7",
+ "rimraf": "^2.6.1",
+ "semver": "^5.3.0",
+ "tar": "^4"
+ }
+ },
+ "nopt": {
+ "version": "4.0.1",
+ "bundled": true,
+ "optional": true,
+ "requires": {
+ "abbrev": "1",
+ "osenv": "^0.1.4"
+ }
+ },
+ "npm-bundled": {
+ "version": "1.0.5",
+ "bundled": true,
+ "optional": true
+ },
+ "npm-packlist": {
+ "version": "1.2.0",
+ "bundled": true,
+ "optional": true,
+ "requires": {
+ "ignore-walk": "^3.0.1",
+ "npm-bundled": "^1.0.1"
+ }
+ },
+ "npmlog": {
+ "version": "4.1.2",
+ "bundled": 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
+ },
+ "object-assign": {
+ "version": "4.1.1",
+ "bundled": true,
+ "optional": true
+ },
+ "once": {
+ "version": "1.4.0",
+ "bundled": true,
+ "requires": {
+ "wrappy": "1"
+ }
+ },
+ "os-homedir": {
+ "version": "1.0.2",
+ "bundled": true,
+ "optional": true
+ },
+ "os-tmpdir": {
+ "version": "1.0.2",
+ "bundled": true,
+ "optional": true
+ },
+ "osenv": {
+ "version": "0.1.5",
+ "bundled": true,
+ "optional": true,
+ "requires": {
+ "os-homedir": "^1.0.0",
+ "os-tmpdir": "^1.0.0"
+ }
+ },
+ "path-is-absolute": {
+ "version": "1.0.1",
+ "bundled": true,
+ "optional": true
+ },
+ "process-nextick-args": {
+ "version": "2.0.0",
+ "bundled": true,
+ "optional": true
+ },
+ "rc": {
+ "version": "1.2.8",
+ "bundled": true,
+ "optional": true,
+ "requires": {
+ "deep-extend": "^0.6.0",
+ "ini": "~1.3.0",
+ "minimist": "^1.2.0",
+ "strip-json-comments": "~2.0.1"
+ },
+ "dependencies": {
+ "minimist": {
+ "version": "1.2.0",
+ "bundled": true,
+ "optional": true
+ }
+ }
+ },
+ "readable-stream": {
+ "version": "2.3.6",
+ "bundled": 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.3",
+ "bundled": true,
+ "optional": true,
+ "requires": {
+ "glob": "^7.1.3"
+ }
+ },
+ "safe-buffer": {
+ "version": "5.1.2",
+ "bundled": true
+ },
+ "safer-buffer": {
+ "version": "2.1.2",
+ "bundled": true,
+ "optional": true
+ },
+ "sax": {
+ "version": "1.2.4",
+ "bundled": true,
+ "optional": true
+ },
+ "semver": {
+ "version": "5.6.0",
+ "bundled": true,
+ "optional": true
+ },
+ "set-blocking": {
+ "version": "2.0.0",
+ "bundled": true,
+ "optional": true
+ },
+ "signal-exit": {
+ "version": "3.0.2",
+ "bundled": true,
+ "optional": true
+ },
+ "string-width": {
+ "version": "1.0.2",
+ "bundled": 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,
+ "optional": true,
+ "requires": {
+ "safe-buffer": "~5.1.0"
+ }
+ },
+ "strip-ansi": {
+ "version": "3.0.1",
+ "bundled": true,
+ "requires": {
+ "ansi-regex": "^2.0.0"
+ }
+ },
+ "strip-json-comments": {
+ "version": "2.0.1",
+ "bundled": true,
+ "optional": true
+ },
+ "tar": {
+ "version": "4.4.8",
+ "bundled": true,
+ "optional": true,
+ "requires": {
+ "chownr": "^1.1.1",
+ "fs-minipass": "^1.2.5",
+ "minipass": "^2.3.4",
+ "minizlib": "^1.1.1",
+ "mkdirp": "^0.5.0",
+ "safe-buffer": "^5.1.2",
+ "yallist": "^3.0.2"
+ }
+ },
+ "util-deprecate": {
+ "version": "1.0.2",
+ "bundled": true,
+ "optional": true
+ },
+ "wide-align": {
+ "version": "1.1.3",
+ "bundled": true,
+ "optional": true,
+ "requires": {
+ "string-width": "^1.0.2 || 2"
+ }
+ },
+ "wrappy": {
+ "version": "1.0.2",
+ "bundled": true
+ },
+ "yallist": {
+ "version": "3.0.3",
+ "bundled": true
+ }
+ }
+ },
+ "get-value": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz",
+ "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg="
+ },
+ "glob": {
+ "version": "7.1.3",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz",
+ "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==",
+ "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=",
+ "optional": 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=",
+ "requires": {
+ "is-glob": "^2.0.0"
+ }
+ },
+ "globals": {
+ "version": "9.18.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz",
+ "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ=="
+ },
+ "graceful-fs": {
+ "version": "4.1.15",
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz",
+ "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA=="
+ },
+ "growl": {
+ "version": "1.10.5",
+ "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz",
+ "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==",
+ "dev": true
+ },
+ "has-ansi": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz",
+ "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=",
+ "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-value": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz",
+ "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=",
+ "requires": {
+ "get-value": "^2.0.6",
+ "has-values": "^1.0.0",
+ "isobject": "^3.0.0"
+ },
+ "dependencies": {
+ "isobject": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
+ "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8="
+ }
+ }
+ },
+ "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=",
+ "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=",
+ "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=",
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ }
+ }
+ },
+ "kind-of": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz",
+ "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=",
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ }
+ }
+ },
+ "he": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/he/-/he-1.1.1.tgz",
+ "integrity": "sha1-k0EP0hsAlzUVH4howvJx80J+I/0=",
+ "dev": true
+ },
+ "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=",
+ "requires": {
+ "os-homedir": "^1.0.0",
+ "os-tmpdir": "^1.0.1"
+ }
+ },
+ "inflight": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
+ "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
+ "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="
+ },
+ "invariant": {
+ "version": "2.2.4",
+ "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz",
+ "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==",
+ "requires": {
+ "loose-envify": "^1.0.0"
+ }
+ },
+ "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=",
+ "requires": {
+ "kind-of": "^3.0.2"
+ }
+ },
+ "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=",
+ "optional": 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=="
+ },
+ "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=",
+ "requires": {
+ "kind-of": "^3.0.2"
+ }
+ },
+ "is-descriptor": {
+ "version": "0.1.6",
+ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz",
+ "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==",
+ "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=="
+ }
+ }
+ },
+ "is-dotfile": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz",
+ "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=",
+ "optional": 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=",
+ "optional": 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="
+ },
+ "is-extglob": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz",
+ "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA="
+ },
+ "is-finite": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz",
+ "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=",
+ "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=",
+ "requires": {
+ "is-extglob": "^1.0.0"
+ }
+ },
+ "is-number": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz",
+ "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=",
+ "optional": true,
+ "requires": {
+ "kind-of": "^3.0.2"
+ }
+ },
+ "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==",
+ "requires": {
+ "isobject": "^3.0.1"
+ },
+ "dependencies": {
+ "isobject": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
+ "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8="
+ }
+ }
+ },
+ "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=",
+ "optional": true
+ },
+ "is-primitive": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz",
+ "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=",
+ "optional": 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==",
+ "optional": true
+ },
+ "isarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+ "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE="
+ },
+ "isobject": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz",
+ "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=",
+ "optional": true,
+ "requires": {
+ "isarray": "1.0.0"
+ }
+ },
+ "js-tokens": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz",
+ "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls="
+ },
+ "jsesc": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz",
+ "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s="
+ },
+ "json5": {
+ "version": "0.5.1",
+ "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz",
+ "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE="
+ },
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ },
+ "lodash": {
+ "version": "4.17.11",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz",
+ "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg=="
+ },
+ "lolex": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/lolex/-/lolex-1.3.2.tgz",
+ "integrity": "sha1-fD2mL/yzDw9agKJWbKJORdigHzE=",
+ "dev": true
+ },
+ "loose-envify": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
+ "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==",
+ "requires": {
+ "js-tokens": "^3.0.0 || ^4.0.0"
+ }
+ },
+ "map-cache": {
+ "version": "0.2.2",
+ "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz",
+ "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8="
+ },
+ "map-visit": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz",
+ "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=",
+ "requires": {
+ "object-visit": "^1.0.0"
+ }
+ },
+ "math-random": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/math-random/-/math-random-1.0.4.tgz",
+ "integrity": "sha512-rUxjysqif/BZQH2yhd5Aaq7vXMSx9NdEsQcyA07uEzIvxgI7zIr33gGsh+RU0/XjmQpCW7RsVof1vlkvQVCK5A==",
+ "optional": true
+ },
+ "methods": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
+ "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4="
+ },
+ "micromatch": {
+ "version": "2.3.11",
+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz",
+ "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=",
+ "optional": 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=="
+ },
+ "mime-db": {
+ "version": "1.37.0",
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.37.0.tgz",
+ "integrity": "sha512-R3C4db6bgQhlIhPU48fUtdVmKnflq+hRdad7IyKhtFj06VPNVdk2RhiYL3UjQIlso8L+YxAtFkobT0VK+S/ybg=="
+ },
+ "mime-types": {
+ "version": "2.1.21",
+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.21.tgz",
+ "integrity": "sha512-3iL6DbwpyLzjR3xHSFNFeb9Nz/M8WDkX33t1GFQnFOllWk8pOrh/LSrB5OXlnlW5P9LH73X6loW/eogc+F5lJg==",
+ "requires": {
+ "mime-db": "~1.37.0"
+ }
+ },
+ "minimatch": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
+ "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
+ "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="
+ },
+ "mixin-deep": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.1.tgz",
+ "integrity": "sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ==",
+ "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==",
+ "requires": {
+ "is-plain-object": "^2.0.4"
+ }
+ }
+ }
+ },
+ "mkdirp": {
+ "version": "0.5.1",
+ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
+ "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
+ "requires": {
+ "minimist": "0.0.8"
+ }
+ },
+ "mocha": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/mocha/-/mocha-5.2.0.tgz",
+ "integrity": "sha512-2IUgKDhc3J7Uug+FxMXuqIyYzH7gJjXECKe/w43IGgQHTSj3InJi+yAA7T24L9bQMRKiUEHxEX37G5JpVUGLcQ==",
+ "dev": true,
+ "requires": {
+ "browser-stdout": "1.3.1",
+ "commander": "2.15.1",
+ "debug": "3.1.0",
+ "diff": "3.5.0",
+ "escape-string-regexp": "1.0.5",
+ "glob": "7.1.2",
+ "growl": "1.10.5",
+ "he": "1.1.1",
+ "minimatch": "3.0.4",
+ "mkdirp": "0.5.1",
+ "supports-color": "5.4.0"
+ },
+ "dependencies": {
+ "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
+ },
+ "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"
+ }
+ },
+ "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"
+ }
+ },
+ "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"
+ }
+ }
+ }
+ },
+ "ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
+ },
+ "nan": {
+ "version": "2.12.1",
+ "resolved": "https://registry.npmjs.org/nan/-/nan-2.12.1.tgz",
+ "integrity": "sha512-JY7V6lRkStKcKTvHO5NVSQRv+RV+FIL5pvDoLiAtSL9pKlC5x9PKQcZDsq7m4FO4d57mkhC6Z+QhAh3Jdk5JFw==",
+ "optional": true
+ },
+ "nanomatch": {
+ "version": "1.2.13",
+ "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz",
+ "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==",
+ "optional": 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-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"
+ },
+ "dependencies": {
+ "arr-diff": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz",
+ "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=",
+ "optional": true
+ },
+ "array-unique": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz",
+ "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=",
+ "optional": true
+ },
+ "kind-of": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz",
+ "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==",
+ "optional": true
+ }
+ }
+ },
+ "normalize-path": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz",
+ "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=",
+ "requires": {
+ "remove-trailing-separator": "^1.0.1"
+ }
+ },
+ "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="
+ },
+ "object-assign": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
+ "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM="
+ },
+ "object-copy": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz",
+ "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=",
+ "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=",
+ "requires": {
+ "is-descriptor": "^0.1.0"
+ }
+ }
+ }
+ },
+ "object-visit": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz",
+ "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=",
+ "requires": {
+ "isobject": "^3.0.0"
+ },
+ "dependencies": {
+ "isobject": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
+ "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8="
+ }
+ }
+ },
+ "object.omit": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz",
+ "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=",
+ "optional": true,
+ "requires": {
+ "for-own": "^0.1.4",
+ "is-extendable": "^0.1.1"
+ }
+ },
+ "object.pick": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz",
+ "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=",
+ "requires": {
+ "isobject": "^3.0.1"
+ },
+ "dependencies": {
+ "isobject": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
+ "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8="
+ }
+ }
+ },
+ "once": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
+ "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
+ "requires": {
+ "wrappy": "1"
+ }
+ },
+ "os-homedir": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz",
+ "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M="
+ },
+ "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="
+ },
+ "output-file-sync": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/output-file-sync/-/output-file-sync-1.1.2.tgz",
+ "integrity": "sha1-0KM+7+YaIF+suQCS6CZZjVJFznY=",
+ "requires": {
+ "graceful-fs": "^4.1.4",
+ "mkdirp": "^0.5.1",
+ "object-assign": "^4.1.0"
+ }
+ },
+ "parse-glob": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz",
+ "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=",
+ "optional": true,
+ "requires": {
+ "glob-base": "^0.3.0",
+ "is-dotfile": "^1.0.0",
+ "is-extglob": "^1.0.0",
+ "is-glob": "^2.0.0"
+ }
+ },
+ "pascalcase": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz",
+ "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ="
+ },
+ "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="
+ },
+ "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=",
+ "optional": true
+ },
+ "preserve": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz",
+ "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=",
+ "optional": 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=="
+ },
+ "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=="
+ },
+ "qs": {
+ "version": "6.6.0",
+ "resolved": "https://registry.npmjs.org/qs/-/qs-6.6.0.tgz",
+ "integrity": "sha512-KIJqT9jQJDQx5h5uAVPimw6yVg2SekOKu959OCtktD3FjzbpvaPr8i4zzg07DOMz+igA4W/aNM7OV8H37pFYfA=="
+ },
+ "randomatic": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-3.1.1.tgz",
+ "integrity": "sha512-TuDE5KxZ0J461RVjrJZCJc+J+zCkTb1MbH9AQUq68sMhOMcy9jLcb3BrZKgp9q9Ncltdg4QVqWrH02W2EFFVYw==",
+ "optional": 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==",
+ "optional": true
+ },
+ "kind-of": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz",
+ "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==",
+ "optional": true
+ }
+ }
+ },
+ "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==",
+ "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.2.1",
+ "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz",
+ "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==",
+ "optional": true,
+ "requires": {
+ "graceful-fs": "^4.1.11",
+ "micromatch": "^3.1.10",
+ "readable-stream": "^2.0.2"
+ },
+ "dependencies": {
+ "arr-diff": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz",
+ "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=",
+ "optional": true
+ },
+ "array-unique": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz",
+ "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg="
+ },
+ "braces": {
+ "version": "2.3.2",
+ "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz",
+ "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
+ "optional": 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=",
+ "optional": true,
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ }
+ }
+ },
+ "expand-brackets": {
+ "version": "2.1.4",
+ "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz",
+ "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=",
+ "optional": 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=",
+ "optional": 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=",
+ "optional": true,
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ },
+ "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=",
+ "optional": 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=",
+ "optional": true,
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ }
+ }
+ },
+ "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=",
+ "optional": 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=",
+ "optional": true,
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ }
+ }
+ },
+ "is-descriptor": {
+ "version": "0.1.6",
+ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz",
+ "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==",
+ "optional": true,
+ "requires": {
+ "is-accessor-descriptor": "^0.1.6",
+ "is-data-descriptor": "^0.1.4",
+ "kind-of": "^5.0.0"
+ }
+ },
+ "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==",
+ "optional": true
+ }
+ }
+ },
+ "extglob": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz",
+ "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==",
+ "optional": 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=",
+ "optional": 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=",
+ "optional": true,
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ }
+ }
+ },
+ "fill-range": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
+ "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=",
+ "optional": 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=",
+ "optional": 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==",
+ "optional": 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==",
+ "optional": 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==",
+ "optional": true,
+ "requires": {
+ "is-accessor-descriptor": "^1.0.0",
+ "is-data-descriptor": "^1.0.0",
+ "kind-of": "^6.0.2"
+ }
+ },
+ "is-number": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
+ "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
+ "optional": 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=",
+ "optional": true,
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ }
+ }
+ },
+ "isobject": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
+ "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=",
+ "optional": true
+ },
+ "kind-of": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz",
+ "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA=="
+ },
+ "micromatch": {
+ "version": "3.1.10",
+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
+ "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
+ "optional": 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"
+ }
+ }
+ }
+ },
+ "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=="
+ },
+ "regenerator-transform": {
+ "version": "0.10.1",
+ "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.10.1.tgz",
+ "integrity": "sha512-PJepbvDbuK1xgIgnau7Y90cwaAmO/LCLMI2mPvaXq2heGMR3aWW5/BQvYrhJ8jgmQjXewXvBjzfqKcVOmhjZ6Q==",
+ "dev": true,
+ "requires": {
+ "babel-runtime": "^6.18.0",
+ "babel-types": "^6.19.0",
+ "private": "^0.1.6"
+ }
+ },
+ "regex-cache": {
+ "version": "0.4.4",
+ "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz",
+ "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==",
+ "optional": 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==",
+ "requires": {
+ "extend-shallow": "^3.0.2",
+ "safe-regex": "^1.1.0"
+ }
+ },
+ "regexpu-core": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-2.0.0.tgz",
+ "integrity": "sha1-SdA4g3uNz4v6W5pCE5k45uoq4kA=",
+ "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
+ }
+ }
+ },
+ "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="
+ },
+ "repeat-element": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz",
+ "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g=="
+ },
+ "repeat-string": {
+ "version": "1.6.1",
+ "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz",
+ "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc="
+ },
+ "repeating": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz",
+ "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=",
+ "requires": {
+ "is-finite": "^1.0.0"
+ }
+ },
+ "resolve-url": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz",
+ "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo="
+ },
+ "ret": {
+ "version": "0.1.15",
+ "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz",
+ "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg=="
+ },
+ "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=="
+ },
+ "safe-regex": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz",
+ "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=",
+ "requires": {
+ "ret": "~0.1.10"
+ }
+ },
+ "samsam": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/samsam/-/samsam-1.1.2.tgz",
+ "integrity": "sha1-vsEf3IOp/aBjQBIQ5AF2wwJNFWc=",
+ "dev": true
+ },
+ "semver": {
+ "version": "5.6.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.6.0.tgz",
+ "integrity": "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==",
+ "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==",
+ "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=",
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ }
+ }
+ },
+ "sinon": {
+ "version": "1.17.3",
+ "resolved": "https://registry.npmjs.org/sinon/-/sinon-1.17.3.tgz",
+ "integrity": "sha1-RNZLx0jQI4gARsFUPO/Oo0xH0X4=",
+ "dev": true,
+ "requires": {
+ "formatio": "1.1.1",
+ "lolex": "1.3.2",
+ "samsam": "1.1.2",
+ "util": ">=0.10.3 <1"
+ }
+ },
+ "slash": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz",
+ "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU="
+ },
+ "snapdragon": {
+ "version": "0.8.2",
+ "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz",
+ "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==",
+ "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=",
+ "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=",
+ "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==",
+ "optional": 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=",
+ "optional": 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==",
+ "optional": 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==",
+ "optional": 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==",
+ "optional": true,
+ "requires": {
+ "is-accessor-descriptor": "^1.0.0",
+ "is-data-descriptor": "^1.0.0",
+ "kind-of": "^6.0.2"
+ }
+ },
+ "isobject": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
+ "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=",
+ "optional": true
+ },
+ "kind-of": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz",
+ "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA=="
+ }
+ }
+ },
+ "snapdragon-util": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz",
+ "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==",
+ "optional": true,
+ "requires": {
+ "kind-of": "^3.2.0"
+ }
+ },
+ "source-map": {
+ "version": "0.5.7",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
+ "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w="
+ },
+ "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==",
+ "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.4.18",
+ "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz",
+ "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==",
+ "requires": {
+ "source-map": "^0.5.6"
+ }
+ },
+ "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="
+ },
+ "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==",
+ "requires": {
+ "extend-shallow": "^3.0.0"
+ }
+ },
+ "static-extend": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz",
+ "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=",
+ "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=",
+ "requires": {
+ "is-descriptor": "^0.1.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==",
+ "requires": {
+ "safe-buffer": "~5.1.0"
+ }
+ },
+ "strip-ansi": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
+ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
+ "requires": {
+ "ansi-regex": "^2.0.0"
+ }
+ },
+ "superagent": {
+ "version": "3.7.0",
+ "resolved": "https://registry.npmjs.org/superagent/-/superagent-3.7.0.tgz",
+ "integrity": "sha512-/8trxO6NbLx4YXb7IeeFTSmsQ35pQBiTBsLNvobZx7qBzBeHYvKCyIIhW2gNcWbLzYxPAjdgFbiepd8ypwC0Gw==",
+ "requires": {
+ "component-emitter": "^1.2.0",
+ "cookiejar": "^2.1.0",
+ "debug": "^3.1.0",
+ "extend": "^3.0.0",
+ "form-data": "^2.3.1",
+ "formidable": "^1.1.1",
+ "methods": "^1.1.1",
+ "mime": "^1.4.1",
+ "qs": "^6.5.1",
+ "readable-stream": "^2.0.5"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "3.2.6",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz",
+ "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==",
+ "requires": {
+ "ms": "^2.1.1"
+ }
+ },
+ "ms": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
+ "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg=="
+ }
+ }
+ },
+ "supports-color": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
+ "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc="
+ },
+ "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="
+ },
+ "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=",
+ "requires": {
+ "kind-of": "^3.0.2"
+ }
+ },
+ "to-regex": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz",
+ "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==",
+ "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=",
+ "optional": true,
+ "requires": {
+ "is-number": "^3.0.0",
+ "repeat-string": "^1.6.1"
+ },
+ "dependencies": {
+ "is-number": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
+ "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
+ "optional": true,
+ "requires": {
+ "kind-of": "^3.0.2"
+ }
+ }
+ }
+ },
+ "trim-right": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz",
+ "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM="
+ },
+ "union-value": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.0.tgz",
+ "integrity": "sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ=",
+ "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=",
+ "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=",
+ "requires": {
+ "extend-shallow": "^2.0.1",
+ "is-extendable": "^0.1.1",
+ "is-plain-object": "^2.0.1",
+ "to-object-path": "^0.3.0"
+ }
+ }
+ }
+ },
+ "unset-value": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz",
+ "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=",
+ "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=",
+ "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=",
+ "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="
+ },
+ "isobject": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
+ "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8="
+ }
+ }
+ },
+ "urix": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz",
+ "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI="
+ },
+ "use": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz",
+ "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ=="
+ },
+ "user-home": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/user-home/-/user-home-1.1.1.tgz",
+ "integrity": "sha1-K1viOjK2Onyd640PKNSFcko98ZA="
+ },
+ "util": {
+ "version": "0.11.1",
+ "resolved": "https://registry.npmjs.org/util/-/util-0.11.1.tgz",
+ "integrity": "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==",
+ "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="
+ },
+ "v8flags": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-2.1.1.tgz",
+ "integrity": "sha1-qrGh+jDUX4jdMhFIh1rALAtV5bQ=",
+ "requires": {
+ "user-home": "^1.1.1"
+ }
+ },
+ "wrappy": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
+ "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8="
+ }
+ }
+}
diff --git a/CI/samples.ci/client/petstore/javascript-es6/pom.xml b/CI/samples.ci/client/petstore/javascript-es6/pom.xml
new file mode 100644
index 000000000000..66f75f962f93
--- /dev/null
+++ b/CI/samples.ci/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/CI/samples.ci/client/petstore/javascript-es6/test/ApiClientTest.js b/CI/samples.ci/client/petstore/javascript-es6/test/ApiClientTest.js
new file mode 100644
index 000000000000..5e98b685a911
--- /dev/null
+++ b/CI/samples.ci/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/CI/samples.ci/client/petstore/javascript-flowtyped/package-lock.json b/CI/samples.ci/client/petstore/javascript-flowtyped/package-lock.json
new file mode 100644
index 000000000000..7e6301347574
--- /dev/null
+++ b/CI/samples.ci/client/petstore/javascript-flowtyped/package-lock.json
@@ -0,0 +1,4477 @@
+{
+ "name": "open_api_petstore",
+ "version": "1.0.0",
+ "lockfileVersion": 1,
+ "requires": true,
+ "dependencies": {
+ "@babel/cli": {
+ "version": "7.5.0",
+ "resolved": "https://registry.npmjs.org/@babel/cli/-/cli-7.5.0.tgz",
+ "integrity": "sha512-qNH55fWbKrEsCwID+Qc/3JDPnsSGpIIiMDbppnR8Z6PxLAqMQCFNqBctkIkBrMH49Nx+qqVTrHRWUR+ho2k+qQ==",
+ "dev": true,
+ "requires": {
+ "chokidar": "^2.0.4",
+ "commander": "^2.8.1",
+ "convert-source-map": "^1.1.0",
+ "fs-readdir-recursive": "^1.1.0",
+ "glob": "^7.0.0",
+ "lodash": "^4.17.11",
+ "mkdirp": "^0.5.1",
+ "output-file-sync": "^2.0.0",
+ "slash": "^2.0.0",
+ "source-map": "^0.5.0"
+ }
+ },
+ "@babel/code-frame": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0.tgz",
+ "integrity": "sha512-OfC2uemaknXr87bdLUkWog7nYuliM9Ij5HUcajsVcMCpQrcLmtxRbVFTIqmcSkSeYRBFBRxs2FiUqFJDLdiebA==",
+ "dev": true,
+ "requires": {
+ "@babel/highlight": "^7.0.0"
+ }
+ },
+ "@babel/core": {
+ "version": "7.5.0",
+ "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.5.0.tgz",
+ "integrity": "sha512-6Isr4X98pwXqHvtigw71CKgmhL1etZjPs5A67jL/w0TkLM9eqmFR40YrnJvEc1WnMZFsskjsmid8bHZyxKEAnw==",
+ "dev": true,
+ "requires": {
+ "@babel/code-frame": "^7.0.0",
+ "@babel/generator": "^7.5.0",
+ "@babel/helpers": "^7.5.0",
+ "@babel/parser": "^7.5.0",
+ "@babel/template": "^7.4.4",
+ "@babel/traverse": "^7.5.0",
+ "@babel/types": "^7.5.0",
+ "convert-source-map": "^1.1.0",
+ "debug": "^4.1.0",
+ "json5": "^2.1.0",
+ "lodash": "^4.17.11",
+ "resolve": "^1.3.2",
+ "semver": "^5.4.1",
+ "source-map": "^0.5.0"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
+ "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
+ "dev": true,
+ "requires": {
+ "ms": "^2.1.1"
+ }
+ },
+ "ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
+ "dev": true
+ }
+ }
+ },
+ "@babel/generator": {
+ "version": "7.5.0",
+ "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.5.0.tgz",
+ "integrity": "sha512-1TTVrt7J9rcG5PMjvO7VEG3FrEoEJNHxumRq66GemPmzboLWtIjjcJgk8rokuAS7IiRSpgVSu5Vb9lc99iJkOA==",
+ "dev": true,
+ "requires": {
+ "@babel/types": "^7.5.0",
+ "jsesc": "^2.5.1",
+ "lodash": "^4.17.11",
+ "source-map": "^0.5.0",
+ "trim-right": "^1.0.1"
+ }
+ },
+ "@babel/helper-annotate-as-pure": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.0.0.tgz",
+ "integrity": "sha512-3UYcJUj9kvSLbLbUIfQTqzcy5VX7GRZ/CCDrnOaZorFFM01aXp1+GJwuFGV4NDDoAS+mOUyHcO6UD/RfqOks3Q==",
+ "dev": true,
+ "requires": {
+ "@babel/types": "^7.0.0"
+ }
+ },
+ "@babel/helper-builder-binary-assignment-operator-visitor": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.1.0.tgz",
+ "integrity": "sha512-qNSR4jrmJ8M1VMM9tibvyRAHXQs2PmaksQF7c1CGJNipfe3D8p+wgNwgso/P2A2r2mdgBWAXljNWR0QRZAMW8w==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-explode-assignable-expression": "^7.1.0",
+ "@babel/types": "^7.0.0"
+ }
+ },
+ "@babel/helper-builder-react-jsx": {
+ "version": "7.3.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-builder-react-jsx/-/helper-builder-react-jsx-7.3.0.tgz",
+ "integrity": "sha512-MjA9KgwCuPEkQd9ncSXvSyJ5y+j2sICHyrI0M3L+6fnS4wMSNDc1ARXsbTfbb2cXHn17VisSnU/sHFTCxVxSMw==",
+ "dev": true,
+ "requires": {
+ "@babel/types": "^7.3.0",
+ "esutils": "^2.0.0"
+ }
+ },
+ "@babel/helper-call-delegate": {
+ "version": "7.4.4",
+ "resolved": "https://registry.npmjs.org/@babel/helper-call-delegate/-/helper-call-delegate-7.4.4.tgz",
+ "integrity": "sha512-l79boDFJ8S1c5hvQvG+rc+wHw6IuH7YldmRKsYtpbawsxURu/paVy57FZMomGK22/JckepaikOkY0MoAmdyOlQ==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-hoist-variables": "^7.4.4",
+ "@babel/traverse": "^7.4.4",
+ "@babel/types": "^7.4.4"
+ }
+ },
+ "@babel/helper-create-class-features-plugin": {
+ "version": "7.5.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.5.0.tgz",
+ "integrity": "sha512-EAoMc3hE5vE5LNhMqDOwB1usHvmRjCDAnH8CD4PVkX9/Yr3W/tcz8xE8QvdZxfsFBDICwZnF2UTHIqslRpvxmA==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-function-name": "^7.1.0",
+ "@babel/helper-member-expression-to-functions": "^7.0.0",
+ "@babel/helper-optimise-call-expression": "^7.0.0",
+ "@babel/helper-plugin-utils": "^7.0.0",
+ "@babel/helper-replace-supers": "^7.4.4",
+ "@babel/helper-split-export-declaration": "^7.4.4"
+ }
+ },
+ "@babel/helper-define-map": {
+ "version": "7.4.4",
+ "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.4.4.tgz",
+ "integrity": "sha512-IX3Ln8gLhZpSuqHJSnTNBWGDE9kdkTEWl21A/K7PQ00tseBwbqCHTvNLHSBd9M0R5rER4h5Rsvj9vw0R5SieBg==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-function-name": "^7.1.0",
+ "@babel/types": "^7.4.4",
+ "lodash": "^4.17.11"
+ }
+ },
+ "@babel/helper-explode-assignable-expression": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.1.0.tgz",
+ "integrity": "sha512-NRQpfHrJ1msCHtKjbzs9YcMmJZOg6mQMmGRB+hbamEdG5PNpaSm95275VD92DvJKuyl0s2sFiDmMZ+EnnvufqA==",
+ "dev": true,
+ "requires": {
+ "@babel/traverse": "^7.1.0",
+ "@babel/types": "^7.0.0"
+ }
+ },
+ "@babel/helper-function-name": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.1.0.tgz",
+ "integrity": "sha512-A95XEoCpb3TO+KZzJ4S/5uW5fNe26DjBGqf1o9ucyLyCmi1dXq/B3c8iaWTfBk3VvetUxl16e8tIrd5teOCfGw==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-get-function-arity": "^7.0.0",
+ "@babel/template": "^7.1.0",
+ "@babel/types": "^7.0.0"
+ }
+ },
+ "@babel/helper-get-function-arity": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0.tgz",
+ "integrity": "sha512-r2DbJeg4svYvt3HOS74U4eWKsUAMRH01Z1ds1zx8KNTPtpTL5JAsdFv8BNyOpVqdFhHkkRDIg5B4AsxmkjAlmQ==",
+ "dev": true,
+ "requires": {
+ "@babel/types": "^7.0.0"
+ }
+ },
+ "@babel/helper-hoist-variables": {
+ "version": "7.4.4",
+ "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.4.4.tgz",
+ "integrity": "sha512-VYk2/H/BnYbZDDg39hr3t2kKyifAm1W6zHRfhx8jGjIHpQEBv9dry7oQ2f3+J703TLu69nYdxsovl0XYfcnK4w==",
+ "dev": true,
+ "requires": {
+ "@babel/types": "^7.4.4"
+ }
+ },
+ "@babel/helper-member-expression-to-functions": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.0.0.tgz",
+ "integrity": "sha512-avo+lm/QmZlv27Zsi0xEor2fKcqWG56D5ae9dzklpIaY7cQMK5N8VSpaNVPPagiqmy7LrEjK1IWdGMOqPu5csg==",
+ "dev": true,
+ "requires": {
+ "@babel/types": "^7.0.0"
+ }
+ },
+ "@babel/helper-module-imports": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.0.0.tgz",
+ "integrity": "sha512-aP/hlLq01DWNEiDg4Jn23i+CXxW/owM4WpDLFUbpjxe4NS3BhLVZQ5i7E0ZrxuQ/vwekIeciyamgB1UIYxxM6A==",
+ "dev": true,
+ "requires": {
+ "@babel/types": "^7.0.0"
+ }
+ },
+ "@babel/helper-module-transforms": {
+ "version": "7.4.4",
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.4.4.tgz",
+ "integrity": "sha512-3Z1yp8TVQf+B4ynN7WoHPKS8EkdTbgAEy0nU0rs/1Kw4pDgmvYH3rz3aI11KgxKCba2cn7N+tqzV1mY2HMN96w==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-module-imports": "^7.0.0",
+ "@babel/helper-simple-access": "^7.1.0",
+ "@babel/helper-split-export-declaration": "^7.4.4",
+ "@babel/template": "^7.4.4",
+ "@babel/types": "^7.4.4",
+ "lodash": "^4.17.11"
+ }
+ },
+ "@babel/helper-optimise-call-expression": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.0.0.tgz",
+ "integrity": "sha512-u8nd9NQePYNQV8iPWu/pLLYBqZBa4ZaY1YWRFMuxrid94wKI1QNt67NEZ7GAe5Kc/0LLScbim05xZFWkAdrj9g==",
+ "dev": true,
+ "requires": {
+ "@babel/types": "^7.0.0"
+ }
+ },
+ "@babel/helper-plugin-utils": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.0.0.tgz",
+ "integrity": "sha512-CYAOUCARwExnEixLdB6sDm2dIJ/YgEAKDM1MOeMeZu9Ld/bDgVo8aiWrXwcY7OBh+1Ea2uUcVRcxKk0GJvW7QA==",
+ "dev": true
+ },
+ "@babel/helper-regex": {
+ "version": "7.4.4",
+ "resolved": "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.4.4.tgz",
+ "integrity": "sha512-Y5nuB/kESmR3tKjU8Nkn1wMGEx1tjJX076HBMeL3XLQCu6vA/YRzuTW0bbb+qRnXvQGn+d6Rx953yffl8vEy7Q==",
+ "dev": true,
+ "requires": {
+ "lodash": "^4.17.11"
+ }
+ },
+ "@babel/helper-remap-async-to-generator": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.1.0.tgz",
+ "integrity": "sha512-3fOK0L+Fdlg8S5al8u/hWE6vhufGSn0bN09xm2LXMy//REAF8kDCrYoOBKYmA8m5Nom+sV9LyLCwrFynA8/slg==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-annotate-as-pure": "^7.0.0",
+ "@babel/helper-wrap-function": "^7.1.0",
+ "@babel/template": "^7.1.0",
+ "@babel/traverse": "^7.1.0",
+ "@babel/types": "^7.0.0"
+ }
+ },
+ "@babel/helper-replace-supers": {
+ "version": "7.4.4",
+ "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.4.4.tgz",
+ "integrity": "sha512-04xGEnd+s01nY1l15EuMS1rfKktNF+1CkKmHoErDppjAAZL+IUBZpzT748x262HF7fibaQPhbvWUl5HeSt1EXg==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-member-expression-to-functions": "^7.0.0",
+ "@babel/helper-optimise-call-expression": "^7.0.0",
+ "@babel/traverse": "^7.4.4",
+ "@babel/types": "^7.4.4"
+ }
+ },
+ "@babel/helper-simple-access": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.1.0.tgz",
+ "integrity": "sha512-Vk+78hNjRbsiu49zAPALxTb+JUQCz1aolpd8osOF16BGnLtseD21nbHgLPGUwrXEurZgiCOUmvs3ExTu4F5x6w==",
+ "dev": true,
+ "requires": {
+ "@babel/template": "^7.1.0",
+ "@babel/types": "^7.0.0"
+ }
+ },
+ "@babel/helper-split-export-declaration": {
+ "version": "7.4.4",
+ "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.4.4.tgz",
+ "integrity": "sha512-Ro/XkzLf3JFITkW6b+hNxzZ1n5OQ80NvIUdmHspih1XAhtN3vPTuUFT4eQnela+2MaZ5ulH+iyP513KJrxbN7Q==",
+ "dev": true,
+ "requires": {
+ "@babel/types": "^7.4.4"
+ }
+ },
+ "@babel/helper-wrap-function": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.2.0.tgz",
+ "integrity": "sha512-o9fP1BZLLSrYlxYEYyl2aS+Flun5gtjTIG8iln+XuEzQTs0PLagAGSXUcqruJwD5fM48jzIEggCKpIfWTcR7pQ==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-function-name": "^7.1.0",
+ "@babel/template": "^7.1.0",
+ "@babel/traverse": "^7.1.0",
+ "@babel/types": "^7.2.0"
+ }
+ },
+ "@babel/helpers": {
+ "version": "7.5.1",
+ "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.5.1.tgz",
+ "integrity": "sha512-rVOTDv8sH8kNI72Unenusxw6u+1vEepZgLxeV+jHkhsQlYhzVhzL1EpfoWT7Ub3zpWSv2WV03V853dqsnyoQzA==",
+ "dev": true,
+ "requires": {
+ "@babel/template": "^7.4.4",
+ "@babel/traverse": "^7.5.0",
+ "@babel/types": "^7.5.0"
+ }
+ },
+ "@babel/highlight": {
+ "version": "7.5.0",
+ "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.5.0.tgz",
+ "integrity": "sha512-7dV4eu9gBxoM0dAnj/BCFDW9LFU0zvTrkq0ugM7pnHEgguOEeOz1so2ZghEdzviYzQEED0r4EAgpsBChKy1TRQ==",
+ "dev": true,
+ "requires": {
+ "chalk": "^2.0.0",
+ "esutils": "^2.0.2",
+ "js-tokens": "^4.0.0"
+ }
+ },
+ "@babel/parser": {
+ "version": "7.5.0",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.5.0.tgz",
+ "integrity": "sha512-I5nW8AhGpOXGCCNYGc+p7ExQIBxRFnS2fd/d862bNOKvmoEPjYPcfIjsfdy0ujagYOIYPczKgD9l3FsgTkAzKA==",
+ "dev": true
+ },
+ "@babel/plugin-proposal-async-generator-functions": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.2.0.tgz",
+ "integrity": "sha512-+Dfo/SCQqrwx48ptLVGLdE39YtWRuKc/Y9I5Fy0P1DDBB9lsAHpjcEJQt+4IifuSOSTLBKJObJqMvaO1pIE8LQ==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.0.0",
+ "@babel/helper-remap-async-to-generator": "^7.1.0",
+ "@babel/plugin-syntax-async-generators": "^7.2.0"
+ }
+ },
+ "@babel/plugin-proposal-class-properties": {
+ "version": "7.3.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.3.0.tgz",
+ "integrity": "sha512-wNHxLkEKTQ2ay0tnsam2z7fGZUi+05ziDJflEt3AZTP3oXLKHJp9HqhfroB/vdMvt3sda9fAbq7FsG8QPDrZBg==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-create-class-features-plugin": "^7.3.0",
+ "@babel/helper-plugin-utils": "^7.0.0"
+ }
+ },
+ "@babel/plugin-proposal-decorators": {
+ "version": "7.3.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.3.0.tgz",
+ "integrity": "sha512-3W/oCUmsO43FmZIqermmq6TKaRSYhmh/vybPfVFwQWdSb8xwki38uAIvknCRzuyHRuYfCYmJzL9or1v0AffPjg==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-create-class-features-plugin": "^7.3.0",
+ "@babel/helper-plugin-utils": "^7.0.0",
+ "@babel/plugin-syntax-decorators": "^7.2.0"
+ }
+ },
+ "@babel/plugin-proposal-json-strings": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.2.0.tgz",
+ "integrity": "sha512-MAFV1CA/YVmYwZG0fBQyXhmj0BHCB5egZHCKWIFVv/XCxAeVGIHfos3SwDck4LvCllENIAg7xMKOG5kH0dzyUg==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.0.0",
+ "@babel/plugin-syntax-json-strings": "^7.2.0"
+ }
+ },
+ "@babel/plugin-proposal-object-rest-spread": {
+ "version": "7.3.2",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.3.2.tgz",
+ "integrity": "sha512-DjeMS+J2+lpANkYLLO+m6GjoTMygYglKmRe6cDTbFv3L9i6mmiE8fe6B8MtCSLZpVXscD5kn7s6SgtHrDoBWoA==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.0.0",
+ "@babel/plugin-syntax-object-rest-spread": "^7.2.0"
+ }
+ },
+ "@babel/plugin-proposal-optional-catch-binding": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.2.0.tgz",
+ "integrity": "sha512-mgYj3jCcxug6KUcX4OBoOJz3CMrwRfQELPQ5560F70YQUBZB7uac9fqaWamKR1iWUzGiK2t0ygzjTScZnVz75g==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.0.0",
+ "@babel/plugin-syntax-optional-catch-binding": "^7.2.0"
+ }
+ },
+ "@babel/plugin-proposal-unicode-property-regex": {
+ "version": "7.4.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.4.4.tgz",
+ "integrity": "sha512-j1NwnOqMG9mFUOH58JTFsA/+ZYzQLUZ/drqWUqxCYLGeu2JFZL8YrNC9hBxKmWtAuOCHPcRpgv7fhap09Fb4kA==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.0.0",
+ "@babel/helper-regex": "^7.4.4",
+ "regexpu-core": "^4.5.4"
+ }
+ },
+ "@babel/plugin-syntax-async-generators": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.2.0.tgz",
+ "integrity": "sha512-1ZrIRBv2t0GSlcwVoQ6VgSLpLgiN/FVQUzt9znxo7v2Ov4jJrs8RY8tv0wvDmFN3qIdMKWrmMMW6yZ0G19MfGg==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.0.0"
+ }
+ },
+ "@babel/plugin-syntax-decorators": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.2.0.tgz",
+ "integrity": "sha512-38QdqVoXdHUQfTpZo3rQwqQdWtCn5tMv4uV6r2RMfTqNBuv4ZBhz79SfaQWKTVmxHjeFv/DnXVC/+agHCklYWA==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.0.0"
+ }
+ },
+ "@babel/plugin-syntax-dynamic-import": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.2.0.tgz",
+ "integrity": "sha512-mVxuJ0YroI/h/tbFTPGZR8cv6ai+STMKNBq0f8hFxsxWjl94qqhsb+wXbpNMDPU3cfR1TIsVFzU3nXyZMqyK4w==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.0.0"
+ }
+ },
+ "@babel/plugin-syntax-flow": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.2.0.tgz",
+ "integrity": "sha512-r6YMuZDWLtLlu0kqIim5o/3TNRAlWb073HwT3e2nKf9I8IIvOggPrnILYPsrrKilmn/mYEMCf/Z07w3yQJF6dg==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.0.0"
+ }
+ },
+ "@babel/plugin-syntax-json-strings": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.2.0.tgz",
+ "integrity": "sha512-5UGYnMSLRE1dqqZwug+1LISpA403HzlSfsg6P9VXU6TBjcSHeNlw4DxDx7LgpF+iKZoOG/+uzqoRHTdcUpiZNg==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.0.0"
+ }
+ },
+ "@babel/plugin-syntax-jsx": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.2.0.tgz",
+ "integrity": "sha512-VyN4QANJkRW6lDBmENzRszvZf3/4AXaj9YR7GwrWeeN9tEBPuXbmDYVU9bYBN0D70zCWVwUy0HWq2553VCb6Hw==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.0.0"
+ }
+ },
+ "@babel/plugin-syntax-object-rest-spread": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.2.0.tgz",
+ "integrity": "sha512-t0JKGgqk2We+9may3t0xDdmneaXmyxq0xieYcKHxIsrJO64n1OiMWNUtc5gQK1PA0NpdCRrtZp4z+IUaKugrSA==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.0.0"
+ }
+ },
+ "@babel/plugin-syntax-optional-catch-binding": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.2.0.tgz",
+ "integrity": "sha512-bDe4xKNhb0LI7IvZHiA13kff0KEfaGX/Hv4lMA9+7TEc63hMNvfKo6ZFpXhKuEp+II/q35Gc4NoMeDZyaUbj9w==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.0.0"
+ }
+ },
+ "@babel/plugin-syntax-typescript": {
+ "version": "7.3.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.3.3.tgz",
+ "integrity": "sha512-dGwbSMA1YhVS8+31CnPR7LB4pcbrzcV99wQzby4uAfrkZPYZlQ7ImwdpzLqi6Z6IL02b8IAL379CaMwo0x5Lag==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.0.0"
+ }
+ },
+ "@babel/plugin-transform-arrow-functions": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.2.0.tgz",
+ "integrity": "sha512-ER77Cax1+8/8jCB9fo4Ud161OZzWN5qawi4GusDuRLcDbDG+bIGYY20zb2dfAFdTRGzrfq2xZPvF0R64EHnimg==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.0.0"
+ }
+ },
+ "@babel/plugin-transform-async-to-generator": {
+ "version": "7.5.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.5.0.tgz",
+ "integrity": "sha512-mqvkzwIGkq0bEF1zLRRiTdjfomZJDV33AH3oQzHVGkI2VzEmXLpKKOBvEVaFZBJdN0XTyH38s9j/Kiqr68dggg==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-module-imports": "^7.0.0",
+ "@babel/helper-plugin-utils": "^7.0.0",
+ "@babel/helper-remap-async-to-generator": "^7.1.0"
+ }
+ },
+ "@babel/plugin-transform-block-scoped-functions": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.2.0.tgz",
+ "integrity": "sha512-ntQPR6q1/NKuphly49+QiQiTN0O63uOwjdD6dhIjSWBI5xlrbUFh720TIpzBhpnrLfv2tNH/BXvLIab1+BAI0w==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.0.0"
+ }
+ },
+ "@babel/plugin-transform-block-scoping": {
+ "version": "7.4.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.4.4.tgz",
+ "integrity": "sha512-jkTUyWZcTrwxu5DD4rWz6rDB5Cjdmgz6z7M7RLXOJyCUkFBawssDGcGh8M/0FTSB87avyJI1HsTwUXp9nKA1PA==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.0.0",
+ "lodash": "^4.17.11"
+ }
+ },
+ "@babel/plugin-transform-classes": {
+ "version": "7.2.2",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.2.2.tgz",
+ "integrity": "sha512-gEZvgTy1VtcDOaQty1l10T3jQmJKlNVxLDCs+3rCVPr6nMkODLELxViq5X9l+rfxbie3XrfrMCYYY6eX3aOcOQ==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-annotate-as-pure": "^7.0.0",
+ "@babel/helper-define-map": "^7.1.0",
+ "@babel/helper-function-name": "^7.1.0",
+ "@babel/helper-optimise-call-expression": "^7.0.0",
+ "@babel/helper-plugin-utils": "^7.0.0",
+ "@babel/helper-replace-supers": "^7.1.0",
+ "@babel/helper-split-export-declaration": "^7.0.0",
+ "globals": "^11.1.0"
+ }
+ },
+ "@babel/plugin-transform-computed-properties": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.2.0.tgz",
+ "integrity": "sha512-kP/drqTxY6Xt3NNpKiMomfgkNn4o7+vKxK2DDKcBG9sHj51vHqMBGy8wbDS/J4lMxnqs153/T3+DmCEAkC5cpA==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.0.0"
+ }
+ },
+ "@babel/plugin-transform-destructuring": {
+ "version": "7.3.2",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.3.2.tgz",
+ "integrity": "sha512-Lrj/u53Ufqxl/sGxyjsJ2XNtNuEjDyjpqdhMNh5aZ+XFOdThL46KBj27Uem4ggoezSYBxKWAil6Hu8HtwqesYw==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.0.0"
+ }
+ },
+ "@babel/plugin-transform-dotall-regex": {
+ "version": "7.4.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.4.4.tgz",
+ "integrity": "sha512-P05YEhRc2h53lZDjRPk/OektxCVevFzZs2Gfjd545Wde3k+yFDbXORgl2e0xpbq8mLcKJ7Idss4fAg0zORN/zg==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.0.0",
+ "@babel/helper-regex": "^7.4.4",
+ "regexpu-core": "^4.5.4"
+ }
+ },
+ "@babel/plugin-transform-duplicate-keys": {
+ "version": "7.5.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.5.0.tgz",
+ "integrity": "sha512-igcziksHizyQPlX9gfSjHkE2wmoCH3evvD2qR5w29/Dk0SMKE/eOI7f1HhBdNhR/zxJDqrgpoDTq5YSLH/XMsQ==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.0.0"
+ }
+ },
+ "@babel/plugin-transform-exponentiation-operator": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.2.0.tgz",
+ "integrity": "sha512-umh4hR6N7mu4Elq9GG8TOu9M0bakvlsREEC+ialrQN6ABS4oDQ69qJv1VtR3uxlKMCQMCvzk7vr17RHKcjx68A==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-builder-binary-assignment-operator-visitor": "^7.1.0",
+ "@babel/helper-plugin-utils": "^7.0.0"
+ }
+ },
+ "@babel/plugin-transform-flow-strip-types": {
+ "version": "7.4.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.4.4.tgz",
+ "integrity": "sha512-WyVedfeEIILYEaWGAUWzVNyqG4sfsNooMhXWsu/YzOvVGcsnPb5PguysjJqI3t3qiaYj0BR8T2f5njdjTGe44Q==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.0.0",
+ "@babel/plugin-syntax-flow": "^7.2.0"
+ }
+ },
+ "@babel/plugin-transform-for-of": {
+ "version": "7.4.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.4.4.tgz",
+ "integrity": "sha512-9T/5Dlr14Z9TIEXLXkt8T1DU7F24cbhwhMNUziN3hB1AXoZcdzPcTiKGRn/6iOymDqtTKWnr/BtRKN9JwbKtdQ==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.0.0"
+ }
+ },
+ "@babel/plugin-transform-function-name": {
+ "version": "7.4.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.4.4.tgz",
+ "integrity": "sha512-iU9pv7U+2jC9ANQkKeNF6DrPy4GBa4NWQtl6dHB4Pb3izX2JOEvDTFarlNsBj/63ZEzNNIAMs3Qw4fNCcSOXJA==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-function-name": "^7.1.0",
+ "@babel/helper-plugin-utils": "^7.0.0"
+ }
+ },
+ "@babel/plugin-transform-literals": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.2.0.tgz",
+ "integrity": "sha512-2ThDhm4lI4oV7fVQ6pNNK+sx+c/GM5/SaML0w/r4ZB7sAneD/piDJtwdKlNckXeyGK7wlwg2E2w33C/Hh+VFCg==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.0.0"
+ }
+ },
+ "@babel/plugin-transform-modules-amd": {
+ "version": "7.5.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.5.0.tgz",
+ "integrity": "sha512-n20UsQMKnWrltocZZm24cRURxQnWIvsABPJlw/fvoy9c6AgHZzoelAIzajDHAQrDpuKFFPPcFGd7ChsYuIUMpg==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-module-transforms": "^7.1.0",
+ "@babel/helper-plugin-utils": "^7.0.0",
+ "babel-plugin-dynamic-import-node": "^2.3.0"
+ },
+ "dependencies": {
+ "babel-plugin-dynamic-import-node": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.0.tgz",
+ "integrity": "sha512-o6qFkpeQEBxcqt0XYlWzAVxNCSCZdUgcR8IRlhD/8DylxjjO4foPcvTW0GGKa/cVt3rvxZ7o5ippJ+/0nvLhlQ==",
+ "dev": true,
+ "requires": {
+ "object.assign": "^4.1.0"
+ }
+ }
+ }
+ },
+ "@babel/plugin-transform-modules-commonjs": {
+ "version": "7.5.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.5.0.tgz",
+ "integrity": "sha512-xmHq0B+ytyrWJvQTc5OWAC4ii6Dhr0s22STOoydokG51JjWhyYo5mRPXoi+ZmtHQhZZwuXNN+GG5jy5UZZJxIQ==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-module-transforms": "^7.4.4",
+ "@babel/helper-plugin-utils": "^7.0.0",
+ "@babel/helper-simple-access": "^7.1.0",
+ "babel-plugin-dynamic-import-node": "^2.3.0"
+ },
+ "dependencies": {
+ "babel-plugin-dynamic-import-node": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.0.tgz",
+ "integrity": "sha512-o6qFkpeQEBxcqt0XYlWzAVxNCSCZdUgcR8IRlhD/8DylxjjO4foPcvTW0GGKa/cVt3rvxZ7o5ippJ+/0nvLhlQ==",
+ "dev": true,
+ "requires": {
+ "object.assign": "^4.1.0"
+ }
+ }
+ }
+ },
+ "@babel/plugin-transform-modules-systemjs": {
+ "version": "7.5.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.5.0.tgz",
+ "integrity": "sha512-Q2m56tyoQWmuNGxEtUyeEkm6qJYFqs4c+XyXH5RAuYxObRNz9Zgj/1g2GMnjYp2EUyEy7YTrxliGCXzecl/vJg==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-hoist-variables": "^7.4.4",
+ "@babel/helper-plugin-utils": "^7.0.0",
+ "babel-plugin-dynamic-import-node": "^2.3.0"
+ },
+ "dependencies": {
+ "babel-plugin-dynamic-import-node": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.0.tgz",
+ "integrity": "sha512-o6qFkpeQEBxcqt0XYlWzAVxNCSCZdUgcR8IRlhD/8DylxjjO4foPcvTW0GGKa/cVt3rvxZ7o5ippJ+/0nvLhlQ==",
+ "dev": true,
+ "requires": {
+ "object.assign": "^4.1.0"
+ }
+ }
+ }
+ },
+ "@babel/plugin-transform-modules-umd": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.2.0.tgz",
+ "integrity": "sha512-BV3bw6MyUH1iIsGhXlOK6sXhmSarZjtJ/vMiD9dNmpY8QXFFQTj+6v92pcfy1iqa8DeAfJFwoxcrS/TUZda6sw==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-module-transforms": "^7.1.0",
+ "@babel/helper-plugin-utils": "^7.0.0"
+ }
+ },
+ "@babel/plugin-transform-named-capturing-groups-regex": {
+ "version": "7.4.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.4.5.tgz",
+ "integrity": "sha512-z7+2IsWafTBbjNsOxU/Iv5CvTJlr5w4+HGu1HovKYTtgJ362f7kBcQglkfmlspKKZ3bgrbSGvLfNx++ZJgCWsg==",
+ "dev": true,
+ "requires": {
+ "regexp-tree": "^0.1.6"
+ }
+ },
+ "@babel/plugin-transform-new-target": {
+ "version": "7.4.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.4.4.tgz",
+ "integrity": "sha512-r1z3T2DNGQwwe2vPGZMBNjioT2scgWzK9BCnDEh+46z8EEwXBq24uRzd65I7pjtugzPSj921aM15RpESgzsSuA==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.0.0"
+ }
+ },
+ "@babel/plugin-transform-object-super": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.2.0.tgz",
+ "integrity": "sha512-VMyhPYZISFZAqAPVkiYb7dUe2AsVi2/wCT5+wZdsNO31FojQJa9ns40hzZ6U9f50Jlq4w6qwzdBB2uwqZ00ebg==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.0.0",
+ "@babel/helper-replace-supers": "^7.1.0"
+ }
+ },
+ "@babel/plugin-transform-parameters": {
+ "version": "7.4.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.4.4.tgz",
+ "integrity": "sha512-oMh5DUO1V63nZcu/ZVLQFqiihBGo4OpxJxR1otF50GMeCLiRx5nUdtokd+u9SuVJrvvuIh9OosRFPP4pIPnwmw==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-call-delegate": "^7.4.4",
+ "@babel/helper-get-function-arity": "^7.0.0",
+ "@babel/helper-plugin-utils": "^7.0.0"
+ }
+ },
+ "@babel/plugin-transform-react-constant-elements": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.2.0.tgz",
+ "integrity": "sha512-YYQFg6giRFMsZPKUM9v+VcHOdfSQdz9jHCx3akAi3UYgyjndmdYGSXylQ/V+HswQt4fL8IklchD9HTsaOCrWQQ==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-annotate-as-pure": "^7.0.0",
+ "@babel/helper-plugin-utils": "^7.0.0"
+ }
+ },
+ "@babel/plugin-transform-react-display-name": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.2.0.tgz",
+ "integrity": "sha512-Htf/tPa5haZvRMiNSQSFifK12gtr/8vwfr+A9y69uF0QcU77AVu4K7MiHEkTxF7lQoHOL0F9ErqgfNEAKgXj7A==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.0.0"
+ }
+ },
+ "@babel/plugin-transform-react-jsx": {
+ "version": "7.3.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.3.0.tgz",
+ "integrity": "sha512-a/+aRb7R06WcKvQLOu4/TpjKOdvVEKRLWFpKcNuHhiREPgGRB4TQJxq07+EZLS8LFVYpfq1a5lDUnuMdcCpBKg==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-builder-react-jsx": "^7.3.0",
+ "@babel/helper-plugin-utils": "^7.0.0",
+ "@babel/plugin-syntax-jsx": "^7.2.0"
+ }
+ },
+ "@babel/plugin-transform-react-jsx-self": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.2.0.tgz",
+ "integrity": "sha512-v6S5L/myicZEy+jr6ielB0OR8h+EH/1QFx/YJ7c7Ua+7lqsjj/vW6fD5FR9hB/6y7mGbfT4vAURn3xqBxsUcdg==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.0.0",
+ "@babel/plugin-syntax-jsx": "^7.2.0"
+ }
+ },
+ "@babel/plugin-transform-react-jsx-source": {
+ "version": "7.5.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.5.0.tgz",
+ "integrity": "sha512-58Q+Jsy4IDCZx7kqEZuSDdam/1oW8OdDX8f+Loo6xyxdfg1yF0GE2XNJQSTZCaMol93+FBzpWiPEwtbMloAcPg==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.0.0",
+ "@babel/plugin-syntax-jsx": "^7.2.0"
+ }
+ },
+ "@babel/plugin-transform-regenerator": {
+ "version": "7.4.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.4.5.tgz",
+ "integrity": "sha512-gBKRh5qAaCWntnd09S8QC7r3auLCqq5DI6O0DlfoyDjslSBVqBibrMdsqO+Uhmx3+BlOmE/Kw1HFxmGbv0N9dA==",
+ "dev": true,
+ "requires": {
+ "regenerator-transform": "^0.14.0"
+ }
+ },
+ "@babel/plugin-transform-runtime": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.2.0.tgz",
+ "integrity": "sha512-jIgkljDdq4RYDnJyQsiWbdvGeei/0MOTtSHKO/rfbd/mXBxNpdlulMx49L0HQ4pug1fXannxoqCI+fYSle9eSw==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-module-imports": "^7.0.0",
+ "@babel/helper-plugin-utils": "^7.0.0",
+ "resolve": "^1.8.1",
+ "semver": "^5.5.1"
+ }
+ },
+ "@babel/plugin-transform-shorthand-properties": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.2.0.tgz",
+ "integrity": "sha512-QP4eUM83ha9zmYtpbnyjTLAGKQritA5XW/iG9cjtuOI8s1RuL/3V6a3DeSHfKutJQ+ayUfeZJPcnCYEQzaPQqg==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.0.0"
+ }
+ },
+ "@babel/plugin-transform-spread": {
+ "version": "7.2.2",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.2.2.tgz",
+ "integrity": "sha512-KWfky/58vubwtS0hLqEnrWJjsMGaOeSBn90Ezn5Jeg9Z8KKHmELbP1yGylMlm5N6TPKeY9A2+UaSYLdxahg01w==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.0.0"
+ }
+ },
+ "@babel/plugin-transform-sticky-regex": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.2.0.tgz",
+ "integrity": "sha512-KKYCoGaRAf+ckH8gEL3JHUaFVyNHKe3ASNsZ+AlktgHevvxGigoIttrEJb8iKN03Q7Eazlv1s6cx2B2cQ3Jabw==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.0.0",
+ "@babel/helper-regex": "^7.0.0"
+ }
+ },
+ "@babel/plugin-transform-template-literals": {
+ "version": "7.4.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.4.4.tgz",
+ "integrity": "sha512-mQrEC4TWkhLN0z8ygIvEL9ZEToPhG5K7KDW3pzGqOfIGZ28Jb0POUkeWcoz8HnHvhFy6dwAT1j8OzqN8s804+g==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-annotate-as-pure": "^7.0.0",
+ "@babel/helper-plugin-utils": "^7.0.0"
+ }
+ },
+ "@babel/plugin-transform-typeof-symbol": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.2.0.tgz",
+ "integrity": "sha512-2LNhETWYxiYysBtrBTqL8+La0jIoQQnIScUJc74OYvUGRmkskNY4EzLCnjHBzdmb38wqtTaixpo1NctEcvMDZw==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.0.0"
+ }
+ },
+ "@babel/plugin-transform-typescript": {
+ "version": "7.5.1",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.5.1.tgz",
+ "integrity": "sha512-dzJ4e/vIFjQOucCu6d+s/ebr+kc8/sAaSscI35X34yEX0gfS6yxY9pKX15U2kumeXe3ScQiTnTQcvRv48bmMtQ==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-create-class-features-plugin": "^7.5.0",
+ "@babel/helper-plugin-utils": "^7.0.0",
+ "@babel/plugin-syntax-typescript": "^7.2.0"
+ }
+ },
+ "@babel/plugin-transform-unicode-regex": {
+ "version": "7.4.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.4.4.tgz",
+ "integrity": "sha512-il+/XdNw01i93+M9J9u4T7/e/Ue/vWfNZE4IRUQjplu2Mqb/AFTDimkw2tdEdSH50wuQXZAbXSql0UphQke+vA==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.0.0",
+ "@babel/helper-regex": "^7.4.4",
+ "regexpu-core": "^4.5.4"
+ }
+ },
+ "@babel/preset-env": {
+ "version": "7.3.1",
+ "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.3.1.tgz",
+ "integrity": "sha512-FHKrD6Dxf30e8xgHQO0zJZpUPfVZg+Xwgz5/RdSWCbza9QLNk4Qbp40ctRoqDxml3O8RMzB1DU55SXeDG6PqHQ==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-module-imports": "^7.0.0",
+ "@babel/helper-plugin-utils": "^7.0.0",
+ "@babel/plugin-proposal-async-generator-functions": "^7.2.0",
+ "@babel/plugin-proposal-json-strings": "^7.2.0",
+ "@babel/plugin-proposal-object-rest-spread": "^7.3.1",
+ "@babel/plugin-proposal-optional-catch-binding": "^7.2.0",
+ "@babel/plugin-proposal-unicode-property-regex": "^7.2.0",
+ "@babel/plugin-syntax-async-generators": "^7.2.0",
+ "@babel/plugin-syntax-json-strings": "^7.2.0",
+ "@babel/plugin-syntax-object-rest-spread": "^7.2.0",
+ "@babel/plugin-syntax-optional-catch-binding": "^7.2.0",
+ "@babel/plugin-transform-arrow-functions": "^7.2.0",
+ "@babel/plugin-transform-async-to-generator": "^7.2.0",
+ "@babel/plugin-transform-block-scoped-functions": "^7.2.0",
+ "@babel/plugin-transform-block-scoping": "^7.2.0",
+ "@babel/plugin-transform-classes": "^7.2.0",
+ "@babel/plugin-transform-computed-properties": "^7.2.0",
+ "@babel/plugin-transform-destructuring": "^7.2.0",
+ "@babel/plugin-transform-dotall-regex": "^7.2.0",
+ "@babel/plugin-transform-duplicate-keys": "^7.2.0",
+ "@babel/plugin-transform-exponentiation-operator": "^7.2.0",
+ "@babel/plugin-transform-for-of": "^7.2.0",
+ "@babel/plugin-transform-function-name": "^7.2.0",
+ "@babel/plugin-transform-literals": "^7.2.0",
+ "@babel/plugin-transform-modules-amd": "^7.2.0",
+ "@babel/plugin-transform-modules-commonjs": "^7.2.0",
+ "@babel/plugin-transform-modules-systemjs": "^7.2.0",
+ "@babel/plugin-transform-modules-umd": "^7.2.0",
+ "@babel/plugin-transform-named-capturing-groups-regex": "^7.3.0",
+ "@babel/plugin-transform-new-target": "^7.0.0",
+ "@babel/plugin-transform-object-super": "^7.2.0",
+ "@babel/plugin-transform-parameters": "^7.2.0",
+ "@babel/plugin-transform-regenerator": "^7.0.0",
+ "@babel/plugin-transform-shorthand-properties": "^7.2.0",
+ "@babel/plugin-transform-spread": "^7.2.0",
+ "@babel/plugin-transform-sticky-regex": "^7.2.0",
+ "@babel/plugin-transform-template-literals": "^7.2.0",
+ "@babel/plugin-transform-typeof-symbol": "^7.2.0",
+ "@babel/plugin-transform-unicode-regex": "^7.2.0",
+ "browserslist": "^4.3.4",
+ "invariant": "^2.2.2",
+ "js-levenshtein": "^1.1.3",
+ "semver": "^5.3.0"
+ }
+ },
+ "@babel/preset-flow": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/@babel/preset-flow/-/preset-flow-7.0.0.tgz",
+ "integrity": "sha512-bJOHrYOPqJZCkPVbG1Lot2r5OSsB+iUOaxiHdlOeB1yPWS6evswVHwvkDLZ54WTaTRIk89ds0iHmGZSnxlPejQ==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.0.0",
+ "@babel/plugin-transform-flow-strip-types": "^7.0.0"
+ }
+ },
+ "@babel/preset-react": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.0.0.tgz",
+ "integrity": "sha512-oayxyPS4Zj+hF6Et11BwuBkmpgT/zMxyuZgFrMeZID6Hdh3dGlk4sHCAhdBCpuCKW2ppBfl2uCCetlrUIJRY3w==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.0.0",
+ "@babel/plugin-transform-react-display-name": "^7.0.0",
+ "@babel/plugin-transform-react-jsx": "^7.0.0",
+ "@babel/plugin-transform-react-jsx-self": "^7.0.0",
+ "@babel/plugin-transform-react-jsx-source": "^7.0.0"
+ }
+ },
+ "@babel/preset-typescript": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.1.0.tgz",
+ "integrity": "sha512-LYveByuF9AOM8WrsNne5+N79k1YxjNB6gmpCQsnuSBAcV8QUeB+ZUxQzL7Rz7HksPbahymKkq2qBR+o36ggFZA==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.0.0",
+ "@babel/plugin-transform-typescript": "^7.1.0"
+ }
+ },
+ "@babel/runtime": {
+ "version": "7.3.1",
+ "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.3.1.tgz",
+ "integrity": "sha512-7jGW8ppV0ant637pIqAcFfQDDH1orEPGJb8aXfUozuCU3QqX7rX4DA8iwrbPrR1hcH0FTTHz47yQnk+bl5xHQA==",
+ "dev": true,
+ "requires": {
+ "regenerator-runtime": "^0.12.0"
+ }
+ },
+ "@babel/template": {
+ "version": "7.4.4",
+ "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.4.4.tgz",
+ "integrity": "sha512-CiGzLN9KgAvgZsnivND7rkA+AeJ9JB0ciPOD4U59GKbQP2iQl+olF1l76kJOupqidozfZ32ghwBEJDhnk9MEcw==",
+ "dev": true,
+ "requires": {
+ "@babel/code-frame": "^7.0.0",
+ "@babel/parser": "^7.4.4",
+ "@babel/types": "^7.4.4"
+ }
+ },
+ "@babel/traverse": {
+ "version": "7.5.0",
+ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.5.0.tgz",
+ "integrity": "sha512-SnA9aLbyOCcnnbQEGwdfBggnc142h/rbqqsXcaATj2hZcegCl903pUD/lfpsNBlBSuWow/YDfRyJuWi2EPR5cg==",
+ "dev": true,
+ "requires": {
+ "@babel/code-frame": "^7.0.0",
+ "@babel/generator": "^7.5.0",
+ "@babel/helper-function-name": "^7.1.0",
+ "@babel/helper-split-export-declaration": "^7.4.4",
+ "@babel/parser": "^7.5.0",
+ "@babel/types": "^7.5.0",
+ "debug": "^4.1.0",
+ "globals": "^11.1.0",
+ "lodash": "^4.17.11"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
+ "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
+ "dev": true,
+ "requires": {
+ "ms": "^2.1.1"
+ }
+ },
+ "ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
+ "dev": true
+ }
+ }
+ },
+ "@babel/types": {
+ "version": "7.5.0",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.5.0.tgz",
+ "integrity": "sha512-UFpDVqRABKsW01bvw7/wSUe56uy6RXM5+VJibVVAybDGxEW25jdwiFJEf7ASvSaC7sN7rbE/l3cLp2izav+CtQ==",
+ "dev": true,
+ "requires": {
+ "esutils": "^2.0.2",
+ "lodash": "^4.17.11",
+ "to-fast-properties": "^2.0.0"
+ }
+ },
+ "ansi-regex": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
+ "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
+ "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,
+ "optional": true,
+ "requires": {
+ "micromatch": "^3.1.4",
+ "normalize-path": "^2.1.1"
+ },
+ "dependencies": {
+ "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,
+ "optional": true,
+ "requires": {
+ "remove-trailing-separator": "^1.0.1"
+ }
+ }
+ }
+ },
+ "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,
+ "optional": 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,
+ "optional": 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,
+ "optional": 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,
+ "optional": 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,
+ "optional": true
+ },
+ "async-each": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz",
+ "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==",
+ "dev": true,
+ "optional": true
+ },
+ "atob": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz",
+ "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==",
+ "dev": true,
+ "optional": true
+ },
+ "babel-loader": {
+ "version": "8.0.5",
+ "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.0.5.tgz",
+ "integrity": "sha512-NTnHnVRd2JnRqPC0vW+iOQWU5pchDbYXsG2E6DMXEpMfUcQKclF9gmf3G3ZMhzG7IG9ji4coL0cm+FxeWxDpnw==",
+ "dev": true,
+ "requires": {
+ "find-cache-dir": "^2.0.0",
+ "loader-utils": "^1.0.2",
+ "mkdirp": "^0.5.1",
+ "util.promisify": "^1.0.0"
+ }
+ },
+ "babel-plugin-dynamic-import-node": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.2.0.tgz",
+ "integrity": "sha512-fP899ELUnTaBcIzmrW7nniyqqdYWrWuJUyPWHxFa/c7r7hS6KC8FscNfLlBNIoPSc55kYMGEEKjPjJGCLbE1qA==",
+ "dev": true,
+ "requires": {
+ "object.assign": "^4.1.0"
+ }
+ },
+ "babel-plugin-macros": {
+ "version": "2.5.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-2.5.0.tgz",
+ "integrity": "sha512-BWw0lD0kVZAXRD3Od1kMrdmfudqzDzYv2qrN3l2ISR1HVp1EgLKfbOrYV9xmY5k3qx3RIu5uPAUZZZHpo0o5Iw==",
+ "dev": true,
+ "requires": {
+ "cosmiconfig": "^5.0.5",
+ "resolve": "^1.8.1"
+ }
+ },
+ "babel-plugin-transform-react-remove-prop-types": {
+ "version": "0.4.24",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-react-remove-prop-types/-/babel-plugin-transform-react-remove-prop-types-0.4.24.tgz",
+ "integrity": "sha512-eqj0hVcJUR57/Ug2zE1Yswsw4LhuqqHhD+8v120T1cl3kjg76QwtyBrdIk4WVwK+lAhBJVYCd/v+4nc4y+8JsA==",
+ "dev": true
+ },
+ "babel-preset-react-app": {
+ "version": "7.0.2",
+ "resolved": "https://registry.npmjs.org/babel-preset-react-app/-/babel-preset-react-app-7.0.2.tgz",
+ "integrity": "sha512-mwCk/u2wuiO8qQqblN5PlDa44taY0acq7hw6W+a70W522P7a9mIcdggL1fe5/LgAT7tqCq46q9wwhqaMoYKslQ==",
+ "dev": true,
+ "requires": {
+ "@babel/core": "7.2.2",
+ "@babel/plugin-proposal-class-properties": "7.3.0",
+ "@babel/plugin-proposal-decorators": "7.3.0",
+ "@babel/plugin-proposal-object-rest-spread": "7.3.2",
+ "@babel/plugin-syntax-dynamic-import": "7.2.0",
+ "@babel/plugin-transform-classes": "7.2.2",
+ "@babel/plugin-transform-destructuring": "7.3.2",
+ "@babel/plugin-transform-flow-strip-types": "7.2.3",
+ "@babel/plugin-transform-react-constant-elements": "7.2.0",
+ "@babel/plugin-transform-react-display-name": "7.2.0",
+ "@babel/plugin-transform-runtime": "7.2.0",
+ "@babel/preset-env": "7.3.1",
+ "@babel/preset-react": "7.0.0",
+ "@babel/preset-typescript": "7.1.0",
+ "@babel/runtime": "7.3.1",
+ "babel-loader": "8.0.5",
+ "babel-plugin-dynamic-import-node": "2.2.0",
+ "babel-plugin-macros": "2.5.0",
+ "babel-plugin-transform-react-remove-prop-types": "0.4.24"
+ },
+ "dependencies": {
+ "@babel/core": {
+ "version": "7.2.2",
+ "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.2.2.tgz",
+ "integrity": "sha512-59vB0RWt09cAct5EIe58+NzGP4TFSD3Bz//2/ELy3ZeTeKF6VTD1AXlH8BGGbCX0PuobZBsIzO7IAI9PH67eKw==",
+ "dev": true,
+ "requires": {
+ "@babel/code-frame": "^7.0.0",
+ "@babel/generator": "^7.2.2",
+ "@babel/helpers": "^7.2.0",
+ "@babel/parser": "^7.2.2",
+ "@babel/template": "^7.2.2",
+ "@babel/traverse": "^7.2.2",
+ "@babel/types": "^7.2.2",
+ "convert-source-map": "^1.1.0",
+ "debug": "^4.1.0",
+ "json5": "^2.1.0",
+ "lodash": "^4.17.10",
+ "resolve": "^1.3.2",
+ "semver": "^5.4.1",
+ "source-map": "^0.5.0"
+ }
+ },
+ "@babel/plugin-transform-flow-strip-types": {
+ "version": "7.2.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.2.3.tgz",
+ "integrity": "sha512-xnt7UIk9GYZRitqCnsVMjQK1O2eKZwFB3CvvHjf5SGx6K6vr/MScCKQDnf1DxRaj501e3pXjti+inbSXX2ZUoQ==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.0.0",
+ "@babel/plugin-syntax-flow": "^7.2.0"
+ }
+ },
+ "debug": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
+ "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
+ "dev": true,
+ "requires": {
+ "ms": "^2.1.1"
+ }
+ },
+ "ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
+ "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,
+ "optional": 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,
+ "optional": 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,
+ "optional": 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,
+ "optional": 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,
+ "optional": true,
+ "requires": {
+ "is-accessor-descriptor": "^1.0.0",
+ "is-data-descriptor": "^1.0.0",
+ "kind-of": "^6.0.2"
+ }
+ }
+ }
+ },
+ "big.js": {
+ "version": "5.2.2",
+ "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz",
+ "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==",
+ "dev": true
+ },
+ "binary-extensions": {
+ "version": "1.13.1",
+ "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz",
+ "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==",
+ "dev": true,
+ "optional": true
+ },
+ "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,
+ "optional": 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,
+ "optional": true,
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ }
+ }
+ },
+ "browserslist": {
+ "version": "4.6.3",
+ "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.6.3.tgz",
+ "integrity": "sha512-CNBqTCq22RKM8wKJNowcqihHJ4SkI8CGeK7KOR9tPboXUuS5Zk5lQgzzTbs4oxD8x+6HUshZUa2OyNI9lR93bQ==",
+ "dev": true,
+ "requires": {
+ "caniuse-lite": "^1.0.30000975",
+ "electron-to-chromium": "^1.3.164",
+ "node-releases": "^1.1.23"
+ }
+ },
+ "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,
+ "optional": 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"
+ }
+ },
+ "caller-callsite": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz",
+ "integrity": "sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ=",
+ "dev": true,
+ "requires": {
+ "callsites": "^2.0.0"
+ }
+ },
+ "caller-path": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz",
+ "integrity": "sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ=",
+ "dev": true,
+ "requires": {
+ "caller-callsite": "^2.0.0"
+ }
+ },
+ "callsites": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz",
+ "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=",
+ "dev": true
+ },
+ "camelcase": {
+ "version": "5.3.1",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz",
+ "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==",
+ "dev": true
+ },
+ "caniuse-lite": {
+ "version": "1.0.30000980",
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000980.tgz",
+ "integrity": "sha512-as0PRtWHaX3gl2gpC7qA7bX88lr+qLacMMXm1QKLLQtBCwT/Ljbgrv5EXKMNBoeEX6yFZ4vIsBb4Nh+PEwW2Rw==",
+ "dev": true
+ },
+ "chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ }
+ },
+ "chokidar": {
+ "version": "2.1.6",
+ "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.6.tgz",
+ "integrity": "sha512-V2jUo67OKkc6ySiRpJrjlpJKl9kDuG+Xb8VgsGzb+aEouhgS1D0weyPU4lEzdAcsCAvrih2J2BqyXqHWvVLw5g==",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "anymatch": "^2.0.0",
+ "async-each": "^1.0.1",
+ "braces": "^2.3.2",
+ "fsevents": "^1.2.7",
+ "glob-parent": "^3.1.0",
+ "inherits": "^2.0.3",
+ "is-binary-path": "^1.0.0",
+ "is-glob": "^4.0.0",
+ "normalize-path": "^3.0.0",
+ "path-is-absolute": "^1.0.0",
+ "readdirp": "^2.2.1",
+ "upath": "^1.1.1"
+ }
+ },
+ "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,
+ "optional": 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,
+ "optional": true,
+ "requires": {
+ "is-descriptor": "^0.1.0"
+ }
+ }
+ }
+ },
+ "cliui": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz",
+ "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==",
+ "dev": true,
+ "requires": {
+ "string-width": "^3.1.0",
+ "strip-ansi": "^5.2.0",
+ "wrap-ansi": "^5.1.0"
+ }
+ },
+ "collection-visit": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz",
+ "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "map-visit": "^1.0.0",
+ "object-visit": "^1.0.0"
+ }
+ },
+ "color-convert": {
+ "version": "1.9.3",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
+ "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
+ "dev": true,
+ "requires": {
+ "color-name": "1.1.3"
+ }
+ },
+ "color-name": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
+ "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
+ "dev": true
+ },
+ "commander": {
+ "version": "2.20.0",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.0.tgz",
+ "integrity": "sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ==",
+ "dev": true
+ },
+ "commondir": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz",
+ "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=",
+ "dev": true
+ },
+ "component-emitter": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz",
+ "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==",
+ "dev": true,
+ "optional": 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
+ },
+ "convert-source-map": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.6.0.tgz",
+ "integrity": "sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A==",
+ "dev": true,
+ "requires": {
+ "safe-buffer": "~5.1.1"
+ }
+ },
+ "copy-descriptor": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz",
+ "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=",
+ "dev": true,
+ "optional": 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,
+ "optional": true
+ },
+ "cosmiconfig": {
+ "version": "5.2.1",
+ "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz",
+ "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==",
+ "dev": true,
+ "requires": {
+ "import-fresh": "^2.0.0",
+ "is-directory": "^0.3.1",
+ "js-yaml": "^3.13.1",
+ "parse-json": "^4.0.0"
+ }
+ },
+ "cross-spawn": {
+ "version": "6.0.5",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz",
+ "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==",
+ "dev": true,
+ "requires": {
+ "nice-try": "^1.0.4",
+ "path-key": "^2.0.1",
+ "semver": "^5.5.0",
+ "shebang-command": "^1.2.0",
+ "which": "^1.2.9"
+ }
+ },
+ "debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dev": true,
+ "optional": 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,
+ "optional": true
+ },
+ "define-properties": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz",
+ "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==",
+ "dev": true,
+ "requires": {
+ "object-keys": "^1.0.12"
+ }
+ },
+ "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,
+ "optional": 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,
+ "optional": 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,
+ "optional": 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,
+ "optional": true,
+ "requires": {
+ "is-accessor-descriptor": "^1.0.0",
+ "is-data-descriptor": "^1.0.0",
+ "kind-of": "^6.0.2"
+ }
+ }
+ }
+ },
+ "electron-to-chromium": {
+ "version": "1.3.188",
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.188.tgz",
+ "integrity": "sha512-tEQcughYIMj8WDMc59EGEtNxdGgwal/oLLTDw+NEqJRJwGflQvH3aiyiexrWeZOETP4/ko78PVr6gwNhdozvuQ==",
+ "dev": true
+ },
+ "emoji-regex": {
+ "version": "7.0.3",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz",
+ "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==",
+ "dev": true
+ },
+ "emojis-list": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz",
+ "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=",
+ "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"
+ }
+ },
+ "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"
+ }
+ },
+ "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.13.0",
+ "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.13.0.tgz",
+ "integrity": "sha512-vDZfg/ykNxQVwup/8E1BZhVzFfBxs9NqMzGcvIJrqg5k2/5Za2bWo40dK2J1pgLngZ7c+Shh8lwYtLGyrwPutg==",
+ "dev": true,
+ "requires": {
+ "es-to-primitive": "^1.2.0",
+ "function-bind": "^1.1.1",
+ "has": "^1.0.3",
+ "is-callable": "^1.1.4",
+ "is-regex": "^1.0.4",
+ "object-keys": "^1.0.12"
+ }
+ },
+ "es-to-primitive": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.0.tgz",
+ "integrity": "sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg==",
+ "dev": true,
+ "requires": {
+ "is-callable": "^1.1.4",
+ "is-date-object": "^1.0.1",
+ "is-symbol": "^1.0.2"
+ }
+ },
+ "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": "4.0.1",
+ "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
+ "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
+ "dev": true
+ },
+ "esutils": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz",
+ "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=",
+ "dev": true
+ },
+ "execa": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz",
+ "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==",
+ "dev": true,
+ "requires": {
+ "cross-spawn": "^6.0.0",
+ "get-stream": "^4.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"
+ }
+ },
+ "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,
+ "optional": 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,
+ "optional": 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,
+ "optional": true,
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ }
+ }
+ },
+ "extend-shallow": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz",
+ "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=",
+ "dev": true,
+ "optional": 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,
+ "optional": 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,
+ "optional": 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,
+ "optional": 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,
+ "optional": 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,
+ "optional": 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,
+ "optional": 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,
+ "optional": true,
+ "requires": {
+ "is-accessor-descriptor": "^1.0.0",
+ "is-data-descriptor": "^1.0.0",
+ "kind-of": "^6.0.2"
+ }
+ }
+ }
+ },
+ "fill-range": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
+ "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=",
+ "dev": true,
+ "optional": 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,
+ "optional": true,
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ }
+ }
+ },
+ "find-cache-dir": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz",
+ "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==",
+ "dev": true,
+ "requires": {
+ "commondir": "^1.0.1",
+ "make-dir": "^2.0.0",
+ "pkg-dir": "^3.0.0"
+ }
+ },
+ "find-up": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
+ "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
+ "dev": true,
+ "requires": {
+ "locate-path": "^3.0.0"
+ }
+ },
+ "flow-copy-source": {
+ "version": "2.0.7",
+ "resolved": "https://registry.npmjs.org/flow-copy-source/-/flow-copy-source-2.0.7.tgz",
+ "integrity": "sha512-/9oYivwSRgIyRMWqRkzJgulUCRPqMA8JSt7l0uoW0Xmtp8ItJpURnBczJUvnAKnHp0TNttNILCeuqW2w9cwTFg==",
+ "dev": true,
+ "requires": {
+ "chokidar": "^3.0.0",
+ "fs-extra": "^8.1.0",
+ "glob": "^7.0.0",
+ "kefir": "^3.7.3",
+ "yargs": "^13.1.0"
+ },
+ "dependencies": {
+ "anymatch": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.0.3.tgz",
+ "integrity": "sha512-c6IvoeBECQlMVuYUjSwimnhmztImpErfxJzWZhIQinIvQWoGOnB0dLIgifbPHQt5heS6mNlaZG16f06H3C8t1g==",
+ "dev": true,
+ "requires": {
+ "normalize-path": "^3.0.0",
+ "picomatch": "^2.0.4"
+ }
+ },
+ "binary-extensions": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.0.0.tgz",
+ "integrity": "sha512-Phlt0plgpIIBOGTT/ehfFnbNlfsDEiqmzE2KRXoX1bLIlir4X/MR+zSyBEkL05ffWgnRSf/DXv+WrUAVr93/ow==",
+ "dev": true
+ },
+ "braces": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
+ "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
+ "dev": true,
+ "requires": {
+ "fill-range": "^7.0.1"
+ }
+ },
+ "chokidar": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.0.2.tgz",
+ "integrity": "sha512-c4PR2egjNjI1um6bamCQ6bUNPDiyofNQruHvKgHQ4gDUP/ITSVSzNsiI5OWtHOsX323i5ha/kk4YmOZ1Ktg7KA==",
+ "dev": true,
+ "requires": {
+ "anymatch": "^3.0.1",
+ "braces": "^3.0.2",
+ "fsevents": "^2.0.6",
+ "glob-parent": "^5.0.0",
+ "is-binary-path": "^2.1.0",
+ "is-glob": "^4.0.1",
+ "normalize-path": "^3.0.0",
+ "readdirp": "^3.1.1"
+ }
+ },
+ "fill-range": {
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
+ "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
+ "dev": true,
+ "requires": {
+ "to-regex-range": "^5.0.1"
+ }
+ },
+ "fsevents": {
+ "version": "2.0.7",
+ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.0.7.tgz",
+ "integrity": "sha512-a7YT0SV3RB+DjYcppwVDLtn13UQnmg0SWZS7ezZD0UjnLwXmy8Zm21GMVGLaFGimIqcvyMQaOJBrop8MyOp1kQ==",
+ "dev": true,
+ "optional": true
+ },
+ "glob-parent": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.0.0.tgz",
+ "integrity": "sha512-Z2RwiujPRGluePM6j699ktJYxmPpJKCfpGA13jz2hmFZC7gKetzrWvg5KN3+OsIFmydGyZ1AVwERCq1w/ZZwRg==",
+ "dev": true,
+ "requires": {
+ "is-glob": "^4.0.1"
+ }
+ },
+ "is-binary-path": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
+ "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
+ "dev": true,
+ "requires": {
+ "binary-extensions": "^2.0.0"
+ }
+ },
+ "is-number": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
+ "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
+ "dev": true
+ },
+ "readdirp": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.1.1.tgz",
+ "integrity": "sha512-XXdSXZrQuvqoETj50+JAitxz1UPdt5dupjT6T5nVB+WvjMv2XKYj+s7hPeAVCXvmJrL36O4YYyWlIC3an2ePiQ==",
+ "dev": true,
+ "requires": {
+ "picomatch": "^2.0.4"
+ }
+ },
+ "to-regex-range": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
+ "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
+ "dev": true,
+ "requires": {
+ "is-number": "^7.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,
+ "optional": 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,
+ "optional": true,
+ "requires": {
+ "map-cache": "^0.2.2"
+ }
+ },
+ "fs-extra": {
+ "version": "8.1.0",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz",
+ "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "^4.2.0",
+ "jsonfile": "^4.0.0",
+ "universalify": "^0.1.0"
+ }
+ },
+ "fs-readdir-recursive": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz",
+ "integrity": "sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA==",
+ "dev": true
+ },
+ "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.9",
+ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.9.tgz",
+ "integrity": "sha512-oeyj2H3EjjonWcFjD5NvZNE9Rqe4UW+nQBU2HNeKw0koVLEFIhtyETyAakeAM3de7Z/SW5kcA+fZUait9EApnw==",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "nan": "^2.12.1",
+ "node-pre-gyp": "^0.12.0"
+ },
+ "dependencies": {
+ "abbrev": {
+ "version": "1.1.1",
+ "resolved": false,
+ "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==",
+ "dev": true,
+ "optional": true
+ },
+ "ansi-regex": {
+ "version": "2.1.1",
+ "resolved": false,
+ "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
+ "dev": true,
+ "optional": true
+ },
+ "aproba": {
+ "version": "1.2.0",
+ "resolved": false,
+ "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==",
+ "dev": true,
+ "optional": true
+ },
+ "are-we-there-yet": {
+ "version": "1.1.5",
+ "resolved": false,
+ "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "delegates": "^1.0.0",
+ "readable-stream": "^2.0.6"
+ }
+ },
+ "balanced-match": {
+ "version": "1.0.0",
+ "resolved": false,
+ "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=",
+ "dev": true,
+ "optional": true
+ },
+ "brace-expansion": {
+ "version": "1.1.11",
+ "resolved": false,
+ "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
+ "chownr": {
+ "version": "1.1.1",
+ "resolved": false,
+ "integrity": "sha512-j38EvO5+LHX84jlo6h4UzmOwi0UgW61WRyPtJz4qaadK5eY3BTS5TY/S1Stc3Uk2lIM6TPevAlULiEJwie860g==",
+ "dev": true,
+ "optional": true
+ },
+ "code-point-at": {
+ "version": "1.1.0",
+ "resolved": false,
+ "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=",
+ "dev": true,
+ "optional": true
+ },
+ "concat-map": {
+ "version": "0.0.1",
+ "resolved": false,
+ "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
+ "dev": true,
+ "optional": true
+ },
+ "console-control-strings": {
+ "version": "1.1.0",
+ "resolved": false,
+ "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=",
+ "dev": true,
+ "optional": true
+ },
+ "core-util-is": {
+ "version": "1.0.2",
+ "resolved": false,
+ "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=",
+ "dev": true,
+ "optional": true
+ },
+ "debug": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
+ "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "ms": "^2.1.1"
+ }
+ },
+ "deep-extend": {
+ "version": "0.6.0",
+ "resolved": false,
+ "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==",
+ "dev": true,
+ "optional": true
+ },
+ "delegates": {
+ "version": "1.0.0",
+ "resolved": false,
+ "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=",
+ "dev": true,
+ "optional": true
+ },
+ "detect-libc": {
+ "version": "1.0.3",
+ "resolved": false,
+ "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=",
+ "dev": true,
+ "optional": true
+ },
+ "fs-minipass": {
+ "version": "1.2.5",
+ "resolved": false,
+ "integrity": "sha512-JhBl0skXjUPCFH7x6x61gQxrKyXsxB5gcgePLZCwfyCGGsTISMoIeObbrvVeP6Xmyaudw4TT43qV2Gz+iyd2oQ==",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "minipass": "^2.2.1"
+ }
+ },
+ "fs.realpath": {
+ "version": "1.0.0",
+ "resolved": false,
+ "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
+ "dev": true,
+ "optional": true
+ },
+ "gauge": {
+ "version": "2.7.4",
+ "resolved": false,
+ "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=",
+ "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.3",
+ "resolved": false,
+ "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==",
+ "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",
+ "resolved": false,
+ "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=",
+ "dev": true,
+ "optional": true
+ },
+ "iconv-lite": {
+ "version": "0.4.24",
+ "resolved": false,
+ "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "safer-buffer": ">= 2.1.2 < 3"
+ }
+ },
+ "ignore-walk": {
+ "version": "3.0.1",
+ "resolved": false,
+ "integrity": "sha512-DTVlMx3IYPe0/JJcYP7Gxg7ttZZu3IInhuEhbchuqneY9wWe5Ojy2mXLBaQFUQmo0AW2r3qG7m1mg86js+gnlQ==",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "minimatch": "^3.0.4"
+ }
+ },
+ "inflight": {
+ "version": "1.0.6",
+ "resolved": false,
+ "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "once": "^1.3.0",
+ "wrappy": "1"
+ }
+ },
+ "inherits": {
+ "version": "2.0.3",
+ "resolved": false,
+ "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
+ "dev": true,
+ "optional": true
+ },
+ "ini": {
+ "version": "1.3.5",
+ "resolved": false,
+ "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==",
+ "dev": true,
+ "optional": true
+ },
+ "is-fullwidth-code-point": {
+ "version": "1.0.0",
+ "resolved": false,
+ "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "number-is-nan": "^1.0.0"
+ }
+ },
+ "isarray": {
+ "version": "1.0.0",
+ "resolved": false,
+ "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
+ "dev": true,
+ "optional": true
+ },
+ "minimatch": {
+ "version": "3.0.4",
+ "resolved": false,
+ "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "brace-expansion": "^1.1.7"
+ }
+ },
+ "minimist": {
+ "version": "0.0.8",
+ "resolved": false,
+ "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=",
+ "dev": true,
+ "optional": true
+ },
+ "minipass": {
+ "version": "2.3.5",
+ "resolved": false,
+ "integrity": "sha512-Gi1W4k059gyRbyVUZQ4mEqLm0YIUiGYfvxhF6SIlk3ui1WVxMTGfGdQ2SInh3PDrRTVvPKgULkpJtT4RH10+VA==",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "safe-buffer": "^5.1.2",
+ "yallist": "^3.0.0"
+ }
+ },
+ "minizlib": {
+ "version": "1.2.1",
+ "resolved": false,
+ "integrity": "sha512-7+4oTUOWKg7AuL3vloEWekXY2/D20cevzsrNT2kGWm+39J9hGTCBv8VI5Pm5lXZ/o3/mdR4f8rflAPhnQb8mPA==",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "minipass": "^2.2.1"
+ }
+ },
+ "mkdirp": {
+ "version": "0.5.1",
+ "resolved": false,
+ "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "minimist": "0.0.8"
+ }
+ },
+ "ms": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
+ "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==",
+ "dev": true,
+ "optional": true
+ },
+ "needle": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/needle/-/needle-2.3.0.tgz",
+ "integrity": "sha512-QBZu7aAFR0522EyaXZM0FZ9GLpq6lvQ3uq8gteiDUp7wKdy0lSd2hPlgFwVuW1CBkfEs9PfDQsQzZghLs/psdg==",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "debug": "^4.1.0",
+ "iconv-lite": "^0.4.4",
+ "sax": "^1.2.4"
+ }
+ },
+ "node-pre-gyp": {
+ "version": "0.12.0",
+ "resolved": "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.12.0.tgz",
+ "integrity": "sha512-4KghwV8vH5k+g2ylT+sLTjy5wmUOb9vPhnM8NHvRf9dHmnW/CndrFXy2aRPaPST6dugXSdHXfeaHQm77PIz/1A==",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "detect-libc": "^1.0.2",
+ "mkdirp": "^0.5.1",
+ "needle": "^2.2.1",
+ "nopt": "^4.0.1",
+ "npm-packlist": "^1.1.6",
+ "npmlog": "^4.0.2",
+ "rc": "^1.2.7",
+ "rimraf": "^2.6.1",
+ "semver": "^5.3.0",
+ "tar": "^4"
+ }
+ },
+ "nopt": {
+ "version": "4.0.1",
+ "resolved": false,
+ "integrity": "sha1-0NRoWv1UFRk8jHUFYC0NF81kR00=",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "abbrev": "1",
+ "osenv": "^0.1.4"
+ }
+ },
+ "npm-bundled": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.0.6.tgz",
+ "integrity": "sha512-8/JCaftHwbd//k6y2rEWp6k1wxVfpFzB6t1p825+cUb7Ym2XQfhwIC5KwhrvzZRJu+LtDE585zVaS32+CGtf0g==",
+ "dev": true,
+ "optional": true
+ },
+ "npm-packlist": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-1.4.1.tgz",
+ "integrity": "sha512-+TcdO7HJJ8peiiYhvPxsEDhF3PJFGUGRcFsGve3vxvxdcpO2Z4Z7rkosRM0kWj6LfbK/P0gu3dzk5RU1ffvFcw==",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "ignore-walk": "^3.0.1",
+ "npm-bundled": "^1.0.1"
+ }
+ },
+ "npmlog": {
+ "version": "4.1.2",
+ "resolved": false,
+ "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==",
+ "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",
+ "resolved": false,
+ "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=",
+ "dev": true,
+ "optional": true
+ },
+ "object-assign": {
+ "version": "4.1.1",
+ "resolved": false,
+ "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=",
+ "dev": true,
+ "optional": true
+ },
+ "once": {
+ "version": "1.4.0",
+ "resolved": false,
+ "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "wrappy": "1"
+ }
+ },
+ "os-homedir": {
+ "version": "1.0.2",
+ "resolved": false,
+ "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=",
+ "dev": true,
+ "optional": true
+ },
+ "os-tmpdir": {
+ "version": "1.0.2",
+ "resolved": false,
+ "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=",
+ "dev": true,
+ "optional": true
+ },
+ "osenv": {
+ "version": "0.1.5",
+ "resolved": false,
+ "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "os-homedir": "^1.0.0",
+ "os-tmpdir": "^1.0.0"
+ }
+ },
+ "path-is-absolute": {
+ "version": "1.0.1",
+ "resolved": false,
+ "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
+ "dev": true,
+ "optional": true
+ },
+ "process-nextick-args": {
+ "version": "2.0.0",
+ "resolved": false,
+ "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==",
+ "dev": true,
+ "optional": true
+ },
+ "rc": {
+ "version": "1.2.8",
+ "resolved": false,
+ "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "deep-extend": "^0.6.0",
+ "ini": "~1.3.0",
+ "minimist": "^1.2.0",
+ "strip-json-comments": "~2.0.1"
+ },
+ "dependencies": {
+ "minimist": {
+ "version": "1.2.0",
+ "resolved": false,
+ "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=",
+ "dev": true,
+ "optional": true
+ }
+ }
+ },
+ "readable-stream": {
+ "version": "2.3.6",
+ "resolved": false,
+ "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
+ "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.3",
+ "resolved": false,
+ "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "glob": "^7.1.3"
+ }
+ },
+ "safe-buffer": {
+ "version": "5.1.2",
+ "resolved": false,
+ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
+ "dev": true,
+ "optional": true
+ },
+ "safer-buffer": {
+ "version": "2.1.2",
+ "resolved": false,
+ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
+ "dev": true,
+ "optional": true
+ },
+ "sax": {
+ "version": "1.2.4",
+ "resolved": false,
+ "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==",
+ "dev": true,
+ "optional": true
+ },
+ "semver": {
+ "version": "5.7.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz",
+ "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==",
+ "dev": true,
+ "optional": true
+ },
+ "set-blocking": {
+ "version": "2.0.0",
+ "resolved": false,
+ "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=",
+ "dev": true,
+ "optional": true
+ },
+ "signal-exit": {
+ "version": "3.0.2",
+ "resolved": false,
+ "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=",
+ "dev": true,
+ "optional": true
+ },
+ "string-width": {
+ "version": "1.0.2",
+ "resolved": false,
+ "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
+ "dev": true,
+ "optional": 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": false,
+ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "safe-buffer": "~5.1.0"
+ }
+ },
+ "strip-ansi": {
+ "version": "3.0.1",
+ "resolved": false,
+ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "ansi-regex": "^2.0.0"
+ }
+ },
+ "strip-json-comments": {
+ "version": "2.0.1",
+ "resolved": false,
+ "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=",
+ "dev": true,
+ "optional": true
+ },
+ "tar": {
+ "version": "4.4.8",
+ "resolved": false,
+ "integrity": "sha512-LzHF64s5chPQQS0IYBn9IN5h3i98c12bo4NCO7e0sGM2llXQ3p2FGC5sdENN4cTW48O915Sh+x+EXx7XW96xYQ==",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "chownr": "^1.1.1",
+ "fs-minipass": "^1.2.5",
+ "minipass": "^2.3.4",
+ "minizlib": "^1.1.1",
+ "mkdirp": "^0.5.0",
+ "safe-buffer": "^5.1.2",
+ "yallist": "^3.0.2"
+ }
+ },
+ "util-deprecate": {
+ "version": "1.0.2",
+ "resolved": false,
+ "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=",
+ "dev": true,
+ "optional": true
+ },
+ "wide-align": {
+ "version": "1.1.3",
+ "resolved": false,
+ "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "string-width": "^1.0.2 || 2"
+ }
+ },
+ "wrappy": {
+ "version": "1.0.2",
+ "resolved": false,
+ "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
+ "dev": true,
+ "optional": true
+ },
+ "yallist": {
+ "version": "3.0.3",
+ "resolved": false,
+ "integrity": "sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A==",
+ "dev": true,
+ "optional": true
+ }
+ }
+ },
+ "function-bind": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
+ "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
+ "dev": true
+ },
+ "get-caller-file": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
+ "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
+ "dev": true
+ },
+ "get-stream": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz",
+ "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==",
+ "dev": true,
+ "requires": {
+ "pump": "^3.0.0"
+ }
+ },
+ "get-value": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz",
+ "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=",
+ "dev": true,
+ "optional": true
+ },
+ "glob": {
+ "version": "7.1.4",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz",
+ "integrity": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==",
+ "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-parent": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz",
+ "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=",
+ "dev": true,
+ "optional": 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,
+ "optional": true,
+ "requires": {
+ "is-extglob": "^2.1.0"
+ }
+ }
+ }
+ },
+ "globals": {
+ "version": "11.12.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
+ "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==",
+ "dev": true
+ },
+ "graceful-fs": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.0.tgz",
+ "integrity": "sha512-jpSvDPV4Cq/bgtpndIWbI5hmYxhQGHPC4d4cqBPb4DLniCfhJokdXhwhaDuLBGLQdvvRum/UiX6ECVIPvDXqdg==",
+ "dev": true
+ },
+ "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-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-value": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz",
+ "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=",
+ "dev": true,
+ "optional": 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,
+ "optional": 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,
+ "optional": true,
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ }
+ }
+ },
+ "iconv-lite": {
+ "version": "0.4.24",
+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
+ "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
+ "requires": {
+ "safer-buffer": ">= 2.1.2 < 3"
+ }
+ },
+ "import-fresh": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz",
+ "integrity": "sha1-2BNVwVYS04bGH53dOSLUMEgipUY=",
+ "dev": true,
+ "requires": {
+ "caller-path": "^2.0.0",
+ "resolve-from": "^3.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.4",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
+ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
+ "dev": true
+ },
+ "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": "2.0.0",
+ "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz",
+ "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==",
+ "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,
+ "optional": 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,
+ "optional": 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,
+ "optional": 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,
+ "optional": true
+ },
+ "is-callable": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.4.tgz",
+ "integrity": "sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA==",
+ "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,
+ "optional": 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,
+ "optional": 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,
+ "optional": 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,
+ "optional": 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-extendable": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
+ "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=",
+ "dev": true,
+ "optional": 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-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
+ },
+ "is-glob": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz",
+ "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==",
+ "dev": true,
+ "requires": {
+ "is-extglob": "^2.1.1"
+ }
+ },
+ "is-number": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
+ "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
+ "dev": true,
+ "optional": 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,
+ "optional": true,
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ }
+ }
+ },
+ "is-plain-obj": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz",
+ "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=",
+ "dev": true
+ },
+ "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,
+ "optional": true,
+ "requires": {
+ "isobject": "^3.0.1"
+ }
+ },
+ "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="
+ },
+ "is-symbol": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.2.tgz",
+ "integrity": "sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw==",
+ "dev": true,
+ "requires": {
+ "has-symbols": "^1.0.0"
+ }
+ },
+ "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,
+ "optional": true
+ },
+ "isarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+ "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
+ "dev": true,
+ "optional": 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,
+ "optional": true
+ },
+ "js-levenshtein": {
+ "version": "1.1.6",
+ "resolved": "https://registry.npmjs.org/js-levenshtein/-/js-levenshtein-1.1.6.tgz",
+ "integrity": "sha512-X2BB11YZtrRqY4EnQcLX5Rh373zbK4alC1FW7D7MBhL2gtcC17cTnr6DmfHZeS0s2rTHjUTMMHfG7gO8SSdw+g==",
+ "dev": true
+ },
+ "js-tokens": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
+ "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
+ "dev": true
+ },
+ "js-yaml": {
+ "version": "3.13.1",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz",
+ "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==",
+ "dev": true,
+ "requires": {
+ "argparse": "^1.0.7",
+ "esprima": "^4.0.0"
+ }
+ },
+ "jsesc": {
+ "version": "2.5.2",
+ "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz",
+ "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==",
+ "dev": true
+ },
+ "json-parse-better-errors": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz",
+ "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==",
+ "dev": true
+ },
+ "json5": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.0.tgz",
+ "integrity": "sha512-8Mh9h6xViijj36g7Dxi+Y4S6hNGV96vcJZr/SrlHh1LR/pEn/8j/+qIBbs44YKl69Lrfctp4QD+AdWLTMqEZAQ==",
+ "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
+ }
+ }
+ },
+ "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"
+ }
+ },
+ "kefir": {
+ "version": "3.8.6",
+ "resolved": "https://registry.npmjs.org/kefir/-/kefir-3.8.6.tgz",
+ "integrity": "sha512-H/8ZTjmEEme2YL388rgy5fFlz2NM4ZImNI2rJrTsR8og454kpY3lPVv53W9lfevNELfNeYD33gMdIKHL25z7WA==",
+ "dev": true,
+ "requires": {
+ "symbol-observable": "1.0.4"
+ }
+ },
+ "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,
+ "optional": true
+ },
+ "lcid": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz",
+ "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==",
+ "dev": true,
+ "requires": {
+ "invert-kv": "^2.0.0"
+ }
+ },
+ "loader-utils": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.2.3.tgz",
+ "integrity": "sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA==",
+ "dev": true,
+ "requires": {
+ "big.js": "^5.2.2",
+ "emojis-list": "^2.0.0",
+ "json5": "^1.0.1"
+ },
+ "dependencies": {
+ "json5": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz",
+ "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==",
+ "dev": true,
+ "requires": {
+ "minimist": "^1.2.0"
+ }
+ },
+ "minimist": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
+ "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=",
+ "dev": true
+ }
+ }
+ },
+ "locate-path": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
+ "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
+ "dev": true,
+ "requires": {
+ "p-locate": "^3.0.0",
+ "path-exists": "^3.0.0"
+ }
+ },
+ "lodash": {
+ "version": "4.17.14",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.14.tgz",
+ "integrity": "sha512-mmKYbW3GLuJeX+iGP+Y7Gp1AiGHGbXHCOh/jZmrawMmsE7MS4znI3RL2FsjbqOyMayHInjOeykW7PEajUk1/xw==",
+ "dev": true
+ },
+ "loose-envify": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
+ "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==",
+ "dev": true,
+ "requires": {
+ "js-tokens": "^3.0.0 || ^4.0.0"
+ }
+ },
+ "make-dir": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz",
+ "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==",
+ "dev": true,
+ "requires": {
+ "pify": "^4.0.1",
+ "semver": "^5.6.0"
+ }
+ },
+ "map-age-cleaner": {
+ "version": "0.1.3",
+ "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz",
+ "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==",
+ "dev": true,
+ "requires": {
+ "p-defer": "^1.0.0"
+ }
+ },
+ "map-cache": {
+ "version": "0.2.2",
+ "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz",
+ "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=",
+ "dev": true,
+ "optional": 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,
+ "optional": true,
+ "requires": {
+ "object-visit": "^1.0.0"
+ }
+ },
+ "mem": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/mem/-/mem-4.3.0.tgz",
+ "integrity": "sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==",
+ "dev": true,
+ "requires": {
+ "map-age-cleaner": "^0.1.1",
+ "mimic-fn": "^2.0.0",
+ "p-is-promise": "^2.0.0"
+ }
+ },
+ "micromatch": {
+ "version": "3.1.10",
+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
+ "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
+ "dev": true,
+ "optional": 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"
+ }
+ },
+ "mimic-fn": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
+ "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
+ "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
+ },
+ "mixin-deep": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz",
+ "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==",
+ "dev": true,
+ "optional": 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,
+ "optional": true,
+ "requires": {
+ "is-plain-object": "^2.0.4"
+ }
+ }
+ }
+ },
+ "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"
+ }
+ },
+ "ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
+ "dev": true,
+ "optional": true
+ },
+ "nan": {
+ "version": "2.14.0",
+ "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.0.tgz",
+ "integrity": "sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg==",
+ "dev": true,
+ "optional": true
+ },
+ "nanomatch": {
+ "version": "1.2.13",
+ "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz",
+ "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==",
+ "dev": true,
+ "optional": 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-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"
+ }
+ },
+ "nice-try": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz",
+ "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==",
+ "dev": true
+ },
+ "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"
+ }
+ },
+ "node-releases": {
+ "version": "1.1.25",
+ "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.25.tgz",
+ "integrity": "sha512-fI5BXuk83lKEoZDdH3gRhtsNgh05/wZacuXkgbiYkceE7+QIMXOg98n9ZV7mz27B+kFHnqHcUpscZZlGRSmTpQ==",
+ "dev": true,
+ "requires": {
+ "semver": "^5.3.0"
+ }
+ },
+ "normalize-path": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
+ "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
+ "dev": true
+ },
+ "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"
+ }
+ },
+ "object-copy": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz",
+ "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=",
+ "dev": true,
+ "optional": 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,
+ "optional": 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,
+ "optional": true,
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ }
+ }
+ },
+ "object-keys": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz",
+ "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==",
+ "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,
+ "optional": 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.pick": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz",
+ "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "isobject": "^3.0.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"
+ }
+ },
+ "os-locale": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz",
+ "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==",
+ "dev": true,
+ "requires": {
+ "execa": "^1.0.0",
+ "lcid": "^2.0.0",
+ "mem": "^4.0.0"
+ }
+ },
+ "output-file-sync": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/output-file-sync/-/output-file-sync-2.0.1.tgz",
+ "integrity": "sha512-mDho4qm7WgIXIGf4eYU1RHN2UU5tPfVYVSRwDJw0uTmj35DQUt/eNp19N7v6T3SrR0ESTEf2up2CGO73qI35zQ==",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "^4.1.11",
+ "is-plain-obj": "^1.1.0",
+ "mkdirp": "^0.5.1"
+ }
+ },
+ "p-defer": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz",
+ "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=",
+ "dev": true
+ },
+ "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-is-promise": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.1.0.tgz",
+ "integrity": "sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg==",
+ "dev": true
+ },
+ "p-limit": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.0.tgz",
+ "integrity": "sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ==",
+ "dev": true,
+ "requires": {
+ "p-try": "^2.0.0"
+ }
+ },
+ "p-locate": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz",
+ "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
+ "dev": true,
+ "requires": {
+ "p-limit": "^2.0.0"
+ }
+ },
+ "p-try": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
+ "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
+ "dev": true
+ },
+ "parse-json": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz",
+ "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=",
+ "dev": true,
+ "requires": {
+ "error-ex": "^1.3.1",
+ "json-parse-better-errors": "^1.0.1"
+ }
+ },
+ "pascalcase": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz",
+ "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=",
+ "dev": true,
+ "optional": 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,
+ "optional": 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-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.6",
+ "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz",
+ "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==",
+ "dev": true
+ },
+ "picomatch": {
+ "version": "2.0.7",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.0.7.tgz",
+ "integrity": "sha512-oLHIdio3tZ0qH76NybpeneBhYVj0QFTfXEFTc/B3zKQspYfYYkWYgFsmzo+4kvId/bQRcNkVeguI3y+CD22BtA==",
+ "dev": true
+ },
+ "pify": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz",
+ "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==",
+ "dev": true
+ },
+ "pkg-dir": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz",
+ "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==",
+ "dev": true,
+ "requires": {
+ "find-up": "^3.0.0"
+ }
+ },
+ "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"
+ }
+ },
+ "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,
+ "optional": 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.1",
+ "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
+ "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==",
+ "dev": true,
+ "optional": true
+ },
+ "pump": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz",
+ "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==",
+ "dev": true,
+ "requires": {
+ "end-of-stream": "^1.1.0",
+ "once": "^1.3.1"
+ }
+ },
+ "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,
+ "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"
+ }
+ },
+ "readdirp": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz",
+ "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "graceful-fs": "^4.1.11",
+ "micromatch": "^3.1.10",
+ "readable-stream": "^2.0.2"
+ }
+ },
+ "regenerate": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.0.tgz",
+ "integrity": "sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg==",
+ "dev": true
+ },
+ "regenerate-unicode-properties": {
+ "version": "8.1.0",
+ "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-8.1.0.tgz",
+ "integrity": "sha512-LGZzkgtLY79GeXLm8Dp0BVLdQlWICzBnJz/ipWUgo59qBaZ+BHtq51P2q1uVZlppMuUAT37SDk39qUbjTWB7bA==",
+ "dev": true,
+ "requires": {
+ "regenerate": "^1.4.0"
+ }
+ },
+ "regenerator-runtime": {
+ "version": "0.12.1",
+ "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.12.1.tgz",
+ "integrity": "sha512-odxIc1/vDlo4iZcfXqRYFj0vpXFNoGdKMAUieAlFYO6m/nl5e9KR/beGf41z4a1FI+aQgtjhuaSlDxQ0hmkrHg==",
+ "dev": true
+ },
+ "regenerator-transform": {
+ "version": "0.14.0",
+ "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.0.tgz",
+ "integrity": "sha512-rtOelq4Cawlbmq9xuMR5gdFmv7ku/sFoB7sRiywx7aq53bc52b4j6zvH7Te1Vt/X2YveDKnCGUbioieU7FEL3w==",
+ "dev": true,
+ "requires": {
+ "private": "^0.1.6"
+ }
+ },
+ "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,
+ "optional": true,
+ "requires": {
+ "extend-shallow": "^3.0.2",
+ "safe-regex": "^1.1.0"
+ }
+ },
+ "regexp-tree": {
+ "version": "0.1.11",
+ "resolved": "https://registry.npmjs.org/regexp-tree/-/regexp-tree-0.1.11.tgz",
+ "integrity": "sha512-7/l/DgapVVDzZobwMCCgMlqiqyLFJ0cduo/j+3BcDJIB+yJdsYCfKuI3l/04NV+H/rfNRdPIDbXNZHM9XvQatg==",
+ "dev": true
+ },
+ "regexpu-core": {
+ "version": "4.5.4",
+ "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.5.4.tgz",
+ "integrity": "sha512-BtizvGtFQKGPUcTy56o3nk1bGRp4SZOTYrDtGNlqCQufptV5IkkLN6Emw+yunAJjzf+C9FQFtvq7IoA3+oMYHQ==",
+ "dev": true,
+ "requires": {
+ "regenerate": "^1.4.0",
+ "regenerate-unicode-properties": "^8.0.2",
+ "regjsgen": "^0.5.0",
+ "regjsparser": "^0.6.0",
+ "unicode-match-property-ecmascript": "^1.0.4",
+ "unicode-match-property-value-ecmascript": "^1.1.0"
+ }
+ },
+ "regjsgen": {
+ "version": "0.5.0",
+ "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.0.tgz",
+ "integrity": "sha512-RnIrLhrXCX5ow/E5/Mh2O4e/oa1/jW0eaBKTSy3LaCj+M3Bqvm97GWDp2yUtzIs4LEn65zR2yiYGFqb2ApnzDA==",
+ "dev": true
+ },
+ "regjsparser": {
+ "version": "0.6.0",
+ "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.0.tgz",
+ "integrity": "sha512-RQ7YyokLiQBomUJuUG8iGVvkgOLxwyZM8k6d3q5SAXpg4r5TZJZigKFvC6PpD+qQ98bCDC5YelPeA3EucDoNeQ==",
+ "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
+ }
+ }
+ },
+ "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,
+ "optional": true
+ },
+ "repeat-element": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz",
+ "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==",
+ "dev": true,
+ "optional": 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,
+ "optional": true
+ },
+ "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": "2.0.0",
+ "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz",
+ "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==",
+ "dev": true
+ },
+ "resolve": {
+ "version": "1.11.1",
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.11.1.tgz",
+ "integrity": "sha512-vIpgF6wfuJOZI7KKKSP+HmiKggadPQAdsp5HiC1mvqnfp0gF1vdwgBWZIdrVft9pgqoMFQN+R7BSWZiBxx+BBw==",
+ "dev": true,
+ "requires": {
+ "path-parse": "^1.0.6"
+ }
+ },
+ "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,
+ "optional": 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,
+ "optional": true
+ },
+ "rimraf": {
+ "version": "2.6.3",
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz",
+ "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==",
+ "dev": true,
+ "requires": {
+ "glob": "^7.1.3"
+ }
+ },
+ "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,
+ "optional": 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=="
+ },
+ "semver": {
+ "version": "5.7.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz",
+ "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==",
+ "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-value": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz",
+ "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==",
+ "dev": true,
+ "optional": 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,
+ "optional": true,
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ }
+ }
+ },
+ "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
+ },
+ "slash": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz",
+ "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==",
+ "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,
+ "optional": 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,
+ "optional": 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,
+ "optional": 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,
+ "optional": 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,
+ "optional": 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,
+ "optional": 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,
+ "optional": 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,
+ "optional": 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,
+ "optional": 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,
+ "optional": true,
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ }
+ }
+ },
+ "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,
+ "optional": 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-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,
+ "optional": true
+ },
+ "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,
+ "optional": 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
+ },
+ "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,
+ "optional": 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,
+ "optional": true,
+ "requires": {
+ "is-descriptor": "^0.1.0"
+ }
+ }
+ }
+ },
+ "string-width": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
+ "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
+ "dev": true,
+ "requires": {
+ "emoji-regex": "^7.0.1",
+ "is-fullwidth-code-point": "^2.0.0",
+ "strip-ansi": "^5.1.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,
+ "optional": true,
+ "requires": {
+ "safe-buffer": "~5.1.0"
+ }
+ },
+ "strip-ansi": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
+ "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^4.1.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
+ },
+ "supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "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
+ },
+ "to-fast-properties": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
+ "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=",
+ "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,
+ "optional": 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,
+ "optional": 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,
+ "optional": 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,
+ "optional": true,
+ "requires": {
+ "is-number": "^3.0.0",
+ "repeat-string": "^1.6.1"
+ }
+ },
+ "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
+ },
+ "unicode-canonical-property-names-ecmascript": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz",
+ "integrity": "sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ==",
+ "dev": true
+ },
+ "unicode-match-property-ecmascript": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz",
+ "integrity": "sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg==",
+ "dev": true,
+ "requires": {
+ "unicode-canonical-property-names-ecmascript": "^1.0.4",
+ "unicode-property-aliases-ecmascript": "^1.0.4"
+ }
+ },
+ "unicode-match-property-value-ecmascript": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.1.0.tgz",
+ "integrity": "sha512-hDTHvaBk3RmFzvSl0UVrUmC3PuW9wKVnpoUDYH0JDkSIovzw+J5viQmeYHxVSBptubnr7PbH2e0fnpDRQnQl5g==",
+ "dev": true
+ },
+ "unicode-property-aliases-ecmascript": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.0.5.tgz",
+ "integrity": "sha512-L5RAqCfXqAwR3RriF8pM0lU0w4Ryf/GgzONwi6KnL1taJQa7x1TCxdJnILX59WIGOwR57IVxn7Nej0fz1Ny6fw==",
+ "dev": true
+ },
+ "union-value": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz",
+ "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "arr-union": "^3.1.0",
+ "get-value": "^2.0.6",
+ "is-extendable": "^0.1.1",
+ "set-value": "^2.0.1"
+ }
+ },
+ "universalify": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz",
+ "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==",
+ "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,
+ "optional": 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,
+ "optional": 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,
+ "optional": 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,
+ "optional": true
+ }
+ }
+ },
+ "upath": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/upath/-/upath-1.1.2.tgz",
+ "integrity": "sha512-kXpym8nmDmlCBr7nKdIx8P2jNBa+pBpIUFRnKJ4dr8htyYGJFokkr2ZvERRtUN+9SY+JqXouNgUPtv6JQva/2Q==",
+ "dev": true,
+ "optional": true
+ },
+ "urix": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz",
+ "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=",
+ "dev": true,
+ "optional": true
+ },
+ "use": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz",
+ "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==",
+ "dev": true,
+ "optional": 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,
+ "optional": 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"
+ }
+ },
+ "whatwg-fetch": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.0.0.tgz",
+ "integrity": "sha512-9GSJUgz1D4MfyKU7KRqwOjXCXTqWdFNvEr7eUBYchQiVc744mqK/MzXPNR2WsPkmkOa4ywfg8C2n8h+13Bey1Q=="
+ },
+ "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": "2.0.0",
+ "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz",
+ "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=",
+ "dev": true
+ },
+ "wrap-ansi": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz",
+ "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^3.2.0",
+ "string-width": "^3.0.0",
+ "strip-ansi": "^5.0.0"
+ }
+ },
+ "wrappy": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
+ "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
+ "dev": true
+ },
+ "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
+ },
+ "yargs": {
+ "version": "13.2.4",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.2.4.tgz",
+ "integrity": "sha512-HG/DWAJa1PAnHT9JAhNa8AbAv3FPaiLzioSjCcmuXXhP8MlpHO5vwls4g4j6n30Z74GVQj8Xa62dWVx1QCGklg==",
+ "dev": true,
+ "requires": {
+ "cliui": "^5.0.0",
+ "find-up": "^3.0.0",
+ "get-caller-file": "^2.0.1",
+ "os-locale": "^3.1.0",
+ "require-directory": "^2.1.1",
+ "require-main-filename": "^2.0.0",
+ "set-blocking": "^2.0.0",
+ "string-width": "^3.0.0",
+ "which-module": "^2.0.0",
+ "y18n": "^4.0.0",
+ "yargs-parser": "^13.1.0"
+ }
+ },
+ "yargs-parser": {
+ "version": "13.1.1",
+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.1.tgz",
+ "integrity": "sha512-oVAVsHz6uFrg3XQheFII8ESO2ssAf9luWuAd6Wexsu4F3OtIW0o8IribPXYrD4WC24LWtPrJlGy87y5udK+dxQ==",
+ "dev": true,
+ "requires": {
+ "camelcase": "^5.0.0",
+ "decamelize": "^1.2.0"
+ }
+ }
+ }
+}
diff --git a/CI/samples.ci/client/petstore/javascript-flowtyped/pom.xml b/CI/samples.ci/client/petstore/javascript-flowtyped/pom.xml
new file mode 100644
index 000000000000..42f19fcf2e17
--- /dev/null
+++ b/CI/samples.ci/client/petstore/javascript-flowtyped/pom.xml
@@ -0,0 +1,46 @@
+
+ 4.0.0
+ org.openapitools
+ openapi-petstore-javascript-flowtyped
+ pom
+ 1.0-SNAPSHOT
+ Petstore JS Flowtyped Client
+
+
+
+ org.codehaus.mojo
+ exec-maven-plugin
+ 1.2.1
+
+
+ npm-install
+ pre-integration-test
+
+ exec
+
+
+ npm
+
+ install
+
+
+
+
+ mocha
+ integration-test
+
+ exec
+
+
+ npm
+
+ run
+ build
+
+
+
+
+
+
+
+
diff --git a/CI/samples.ci/client/petstore/javascript-promise-es6/pom.xml b/CI/samples.ci/client/petstore/javascript-promise-es6/pom.xml
new file mode 100644
index 000000000000..793a531b460e
--- /dev/null
+++ b/CI/samples.ci/client/petstore/javascript-promise-es6/pom.xml
@@ -0,0 +1,45 @@
+
+ 4.0.0
+ org.openapitools
+ openapi-petstore-javascript-promise-es6
+ pom
+ 1.0-SNAPSHOT
+ OpenAPI Petstore JS Client (ES6, Promise)
+
+
+
+ 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/CI/samples.ci/client/petstore/javascript-promise-es6/test/ApiClientTest.js b/CI/samples.ci/client/petstore/javascript-promise-es6/test/ApiClientTest.js
new file mode 100644
index 000000000000..5e98b685a911
--- /dev/null
+++ b/CI/samples.ci/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/CI/samples.ci/client/petstore/javascript-promise/.gitignore b/CI/samples.ci/client/petstore/javascript-promise/.gitignore
new file mode 100644
index 000000000000..2ccbe4656c60
--- /dev/null
+++ b/CI/samples.ci/client/petstore/javascript-promise/.gitignore
@@ -0,0 +1 @@
+/node_modules/
diff --git a/CI/samples.ci/client/petstore/javascript-promise/pom.xml b/CI/samples.ci/client/petstore/javascript-promise/pom.xml
new file mode 100644
index 000000000000..7aa5b80ba8cc
--- /dev/null
+++ b/CI/samples.ci/client/petstore/javascript-promise/pom.xml
@@ -0,0 +1,45 @@
+
+ 4.0.0
+ org.openapitools
+ openapi-petstore-javascript-promise
+ pom
+ 1.0-SNAPSHOT
+ OpenAPI Petstore JS Client (Promise)
+
+
+
+ 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/CI/samples.ci/client/petstore/javascript-promise/test/ApiClientTest.js b/CI/samples.ci/client/petstore/javascript-promise/test/ApiClientTest.js
new file mode 100644
index 000000000000..5e98b685a911
--- /dev/null
+++ b/CI/samples.ci/client/petstore/javascript-promise/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/CI/samples.ci/client/petstore/javascript-promise/test/mocha.opts b/CI/samples.ci/client/petstore/javascript-promise/test/mocha.opts
new file mode 100644
index 000000000000..907011807d68
--- /dev/null
+++ b/CI/samples.ci/client/petstore/javascript-promise/test/mocha.opts
@@ -0,0 +1 @@
+--timeout 10000
diff --git a/CI/samples.ci/client/petstore/javascript-promise/test/run_tests.html b/CI/samples.ci/client/petstore/javascript-promise/test/run_tests.html
new file mode 100644
index 000000000000..2f3e3f1e33ae
--- /dev/null
+++ b/CI/samples.ci/client/petstore/javascript-promise/test/run_tests.html
@@ -0,0 +1,41 @@
+
+
+
+ Mocha Tests
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/CI/samples.ci/client/petstore/javascript/.gitignore b/CI/samples.ci/client/petstore/javascript/.gitignore
new file mode 100644
index 000000000000..2ccbe4656c60
--- /dev/null
+++ b/CI/samples.ci/client/petstore/javascript/.gitignore
@@ -0,0 +1 @@
+/node_modules/
diff --git a/CI/samples.ci/client/petstore/javascript/pom.xml b/CI/samples.ci/client/petstore/javascript/pom.xml
new file mode 100644
index 000000000000..3d461be47216
--- /dev/null
+++ b/CI/samples.ci/client/petstore/javascript/pom.xml
@@ -0,0 +1,45 @@
+
+ 4.0.0
+ org.openapitools
+ openapi-petstore-javascript
+ pom
+ 1.0-SNAPSHOT
+ OpenAPI Petstore JS Client
+
+
+
+ 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/CI/samples.ci/client/petstore/javascript/test/ApiClientTest.js b/CI/samples.ci/client/petstore/javascript/test/ApiClientTest.js
new file mode 100755
index 000000000000..2674cf9e1359
--- /dev/null
+++ b/CI/samples.ci/client/petstore/javascript/test/ApiClientTest.js
@@ -0,0 +1,393 @@
+if (typeof module === 'object' && module.exports) {
+ var expect = require('expect.js');
+ var OpenAPIPetstore = require('../src/index');
+ var sinon = require('sinon');
+}
+
+var apiClient = OpenAPIPetstore.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'},
+ /* commented out the following as these fake security def (testing purpose)
+ * has been removed from the spec, we'll add it 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 OpenAPIPetstore.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 OpenAPIPetstore.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 OpenAPIPetstore.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 OpenAPIPetstore.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 collectionQueryParams = opts.collectionQueryParams || {};
+ 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, collectionQueryParams,
+ headerParams, formParams, bodyParam, authNames, contentTypes, accepts,
+ callback
+ );
+}
diff --git a/CI/samples.ci/client/petstore/javascript/test/mocha.opts b/CI/samples.ci/client/petstore/javascript/test/mocha.opts
new file mode 100644
index 000000000000..907011807d68
--- /dev/null
+++ b/CI/samples.ci/client/petstore/javascript/test/mocha.opts
@@ -0,0 +1 @@
+--timeout 10000
diff --git a/CI/samples.ci/client/petstore/javascript/test/run_tests.html b/CI/samples.ci/client/petstore/javascript/test/run_tests.html
new file mode 100644
index 000000000000..059f3a112ada
--- /dev/null
+++ b/CI/samples.ci/client/petstore/javascript/test/run_tests.html
@@ -0,0 +1,45 @@
+
+
+
+ Mocha Tests
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/CI/samples.ci/client/petstore/kotlin-gson/pom.xml b/CI/samples.ci/client/petstore/kotlin-gson/pom.xml
new file mode 100644
index 000000000000..46e3845d39ba
--- /dev/null
+++ b/CI/samples.ci/client/petstore/kotlin-gson/pom.xml
@@ -0,0 +1,46 @@
+
+ 4.0.0
+ io.swagger
+ KotlinGsonPetstoreClientTests
+ pom
+ 1.0-SNAPSHOT
+ Kotlin Gson Petstore Client
+
+
+
+ maven-dependency-plugin
+
+
+ package
+
+ copy-dependencies
+
+
+ ${project.build.directory}
+
+
+
+
+
+ org.codehaus.mojo
+ exec-maven-plugin
+ 1.2.1
+
+
+ bundle-test
+ integration-test
+
+ exec
+
+
+ gradle
+
+ test
+
+
+
+
+
+
+
+
diff --git a/CI/samples.ci/client/petstore/kotlin-multiplatform/pom.xml b/CI/samples.ci/client/petstore/kotlin-multiplatform/pom.xml
new file mode 100644
index 000000000000..bf62ae66e66c
--- /dev/null
+++ b/CI/samples.ci/client/petstore/kotlin-multiplatform/pom.xml
@@ -0,0 +1,47 @@
+
+ 4.0.0
+ io.swagger
+ KotlinMultiPlatformClientTests
+ pom
+ 1.0-SNAPSHOT
+ Kotlin MultiPlatform Petstore Client
+
+
+
+ maven-dependency-plugin
+
+
+ package
+
+ copy-dependencies
+
+
+ ${project.build.directory}
+
+
+
+
+
+ org.codehaus.mojo
+ exec-maven-plugin
+ 1.2.1
+
+
+ bundle-test
+ integration-test
+
+ exec
+
+
+ /bin/bash
+
+ gradlew
+ build
+
+
+
+
+
+
+
+
diff --git a/CI/samples.ci/client/petstore/kotlin-nonpublic/pom.xml b/CI/samples.ci/client/petstore/kotlin-nonpublic/pom.xml
new file mode 100644
index 000000000000..2b400e564b9a
--- /dev/null
+++ b/CI/samples.ci/client/petstore/kotlin-nonpublic/pom.xml
@@ -0,0 +1,46 @@
+
+ 4.0.0
+ io.swagger
+ KotlinNonpublicPetstoreClientTests
+ pom
+ 1.0-SNAPSHOT
+ Kotlin Nonpublic Petstore Client
+
+
+
+ maven-dependency-plugin
+
+
+ package
+
+ copy-dependencies
+
+
+ ${project.build.directory}
+
+
+
+
+
+ org.codehaus.mojo
+ exec-maven-plugin
+ 1.2.1
+
+
+ bundle-test
+ integration-test
+
+ exec
+
+
+ gradle
+
+ test
+
+
+
+
+
+
+
+
diff --git a/CI/samples.ci/client/petstore/kotlin/.gitignore b/CI/samples.ci/client/petstore/kotlin/.gitignore
new file mode 100644
index 000000000000..2983e3c1db32
--- /dev/null
+++ b/CI/samples.ci/client/petstore/kotlin/.gitignore
@@ -0,0 +1,106 @@
+./bin/
+# Created by https://www.gitignore.io/api/java,intellij,gradle
+
+### Intellij ###
+# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio and Webstorm
+# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839
+
+# User-specific stuff:
+.idea/**/workspace.xml
+.idea/**/tasks.xml
+.idea/dictionaries
+
+# Sensitive or high-churn files:
+.idea/**/dataSources/
+.idea/**/dataSources.ids
+.idea/**/dataSources.xml
+.idea/**/dataSources.local.xml
+.idea/**/sqlDataSources.xml
+.idea/**/dynamic.xml
+.idea/**/uiDesigner.xml
+
+# Gradle:
+.idea/**/gradle.xml
+.idea/**/libraries
+
+# CMake
+cmake-build-debug/
+
+# Mongo Explorer plugin:
+.idea/**/mongoSettings.xml
+
+## File-based project format:
+*.iws
+
+## Plugin-specific files:
+
+# IntelliJ
+/out/
+
+# mpeltonen/sbt-idea plugin
+.idea_modules/
+
+# JIRA plugin
+atlassian-ide-plugin.xml
+
+# Cursive Clojure plugin
+.idea/replstate.xml
+
+# Crashlytics plugin (for Android Studio and IntelliJ)
+com_crashlytics_export_strings.xml
+crashlytics.properties
+crashlytics-build.properties
+fabric.properties
+
+### Intellij Patch ###
+# Comment Reason: https://github.com/joeblau/gitignore.io/issues/186#issuecomment-215987721
+
+# *.iml
+# modules.xml
+# .idea/misc.xml
+# *.ipr
+
+# Sonarlint plugin
+.idea/sonarlint
+
+### Java ###
+# Compiled class file
+*.class
+
+# Log file
+*.log
+
+# BlueJ files
+*.ctxt
+
+# Mobile Tools for Java (J2ME)
+.mtj.tmp/
+
+# Package Files #
+*.jar
+*.war
+*.ear
+*.zip
+*.tar.gz
+*.rar
+
+# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
+hs_err_pid*
+
+### Gradle ###
+.gradle
+/build/
+
+# Ignore Gradle GUI config
+gradle-app.setting
+
+# Avoid ignoring Gradle wrapper jar file (.jar files are usually ignored)
+!gradle-wrapper.jar
+
+# Cache of project
+.gradletasknamecache
+
+# # Work around https://youtrack.jetbrains.com/issue/IDEA-116898
+# gradle/wrapper/gradle-wrapper.properties
+
+# End of https://www.gitignore.io/api/java,intellij,gradle
diff --git a/samples/client/petstore/android/httpclient/gradle/wrapper/gradle-wrapper.jar b/CI/samples.ci/client/petstore/kotlin/gradle/wrapper/gradle-wrapper.jar
similarity index 100%
rename from samples/client/petstore/android/httpclient/gradle/wrapper/gradle-wrapper.jar
rename to CI/samples.ci/client/petstore/kotlin/gradle/wrapper/gradle-wrapper.jar
diff --git a/CI/samples.ci/client/petstore/kotlin/gradle/wrapper/gradle-wrapper.properties b/CI/samples.ci/client/petstore/kotlin/gradle/wrapper/gradle-wrapper.properties
new file mode 100644
index 000000000000..7dc503f149d0
--- /dev/null
+++ b/CI/samples.ci/client/petstore/kotlin/gradle/wrapper/gradle-wrapper.properties
@@ -0,0 +1,5 @@
+distributionBase=GRADLE_USER_HOME
+distributionPath=wrapper/dists
+distributionUrl=https\://services.gradle.org/distributions/gradle-4.9-all.zip
+zipStoreBase=GRADLE_USER_HOME
+zipStorePath=wrapper/dists
diff --git a/CI/samples.ci/client/petstore/kotlin/gradlew b/CI/samples.ci/client/petstore/kotlin/gradlew
new file mode 100755
index 000000000000..4453ccea33d9
--- /dev/null
+++ b/CI/samples.ci/client/petstore/kotlin/gradlew
@@ -0,0 +1,172 @@
+#!/usr/bin/env sh
+
+##############################################################################
+##
+## Gradle start up script for UN*X
+##
+##############################################################################
+
+# Attempt to set APP_HOME
+# Resolve links: $0 may be a link
+PRG="$0"
+# Need this for relative symlinks.
+while [ -h "$PRG" ] ; do
+ ls=`ls -ld "$PRG"`
+ link=`expr "$ls" : '.*-> \(.*\)$'`
+ if expr "$link" : '/.*' > /dev/null; then
+ PRG="$link"
+ else
+ PRG=`dirname "$PRG"`"/$link"
+ fi
+done
+SAVED="`pwd`"
+cd "`dirname \"$PRG\"`/" >/dev/null
+APP_HOME="`pwd -P`"
+cd "$SAVED" >/dev/null
+
+APP_NAME="Gradle"
+APP_BASE_NAME=`basename "$0"`
+
+# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+DEFAULT_JVM_OPTS=""
+
+# Use the maximum available, or set MAX_FD != -1 to use that value.
+MAX_FD="maximum"
+
+warn ( ) {
+ echo "$*"
+}
+
+die ( ) {
+ echo
+ echo "$*"
+ echo
+ exit 1
+}
+
+# OS specific support (must be 'true' or 'false').
+cygwin=false
+msys=false
+darwin=false
+nonstop=false
+case "`uname`" in
+ CYGWIN* )
+ cygwin=true
+ ;;
+ Darwin* )
+ darwin=true
+ ;;
+ MINGW* )
+ msys=true
+ ;;
+ NONSTOP* )
+ nonstop=true
+ ;;
+esac
+
+CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
+
+# Determine the Java command to use to start the JVM.
+if [ -n "$JAVA_HOME" ] ; then
+ if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
+ # IBM's JDK on AIX uses strange locations for the executables
+ JAVACMD="$JAVA_HOME/jre/sh/java"
+ else
+ JAVACMD="$JAVA_HOME/bin/java"
+ fi
+ if [ ! -x "$JAVACMD" ] ; then
+ die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+ fi
+else
+ JAVACMD="java"
+ which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+fi
+
+# Increase the maximum file descriptors if we can.
+if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then
+ MAX_FD_LIMIT=`ulimit -H -n`
+ if [ $? -eq 0 ] ; then
+ if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
+ MAX_FD="$MAX_FD_LIMIT"
+ fi
+ ulimit -n $MAX_FD
+ if [ $? -ne 0 ] ; then
+ warn "Could not set maximum file descriptor limit: $MAX_FD"
+ fi
+ else
+ warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
+ fi
+fi
+
+# For Darwin, add options to specify how the application appears in the dock
+if $darwin; then
+ GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
+fi
+
+# For Cygwin, switch paths to Windows format before running java
+if $cygwin ; then
+ APP_HOME=`cygpath --path --mixed "$APP_HOME"`
+ CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
+ JAVACMD=`cygpath --unix "$JAVACMD"`
+
+ # We build the pattern for arguments to be converted via cygpath
+ ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
+ SEP=""
+ for dir in $ROOTDIRSRAW ; do
+ ROOTDIRS="$ROOTDIRS$SEP$dir"
+ SEP="|"
+ done
+ OURCYGPATTERN="(^($ROOTDIRS))"
+ # Add a user-defined pattern to the cygpath arguments
+ if [ "$GRADLE_CYGPATTERN" != "" ] ; then
+ OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
+ fi
+ # Now convert the arguments - kludge to limit ourselves to /bin/sh
+ i=0
+ for arg in "$@" ; do
+ CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
+ CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
+
+ if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
+ eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
+ else
+ eval `echo args$i`="\"$arg\""
+ fi
+ i=$((i+1))
+ done
+ case $i in
+ (0) set -- ;;
+ (1) set -- "$args0" ;;
+ (2) set -- "$args0" "$args1" ;;
+ (3) set -- "$args0" "$args1" "$args2" ;;
+ (4) set -- "$args0" "$args1" "$args2" "$args3" ;;
+ (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
+ (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
+ (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
+ (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
+ (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
+ esac
+fi
+
+# Escape application args
+save ( ) {
+ for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
+ echo " "
+}
+APP_ARGS=$(save "$@")
+
+# Collect all arguments for the java command, following the shell quoting and substitution rules
+eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS"
+
+# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong
+if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then
+ cd "$(dirname "$0")"
+fi
+
+exec "$JAVACMD" "$@"
diff --git a/samples/client/petstore/android/httpclient/gradlew.bat b/CI/samples.ci/client/petstore/kotlin/gradlew.bat
similarity index 100%
rename from samples/client/petstore/android/httpclient/gradlew.bat
rename to CI/samples.ci/client/petstore/kotlin/gradlew.bat
diff --git a/CI/samples.ci/client/petstore/kotlin/pom.xml b/CI/samples.ci/client/petstore/kotlin/pom.xml
new file mode 100644
index 000000000000..e52f9e969b08
--- /dev/null
+++ b/CI/samples.ci/client/petstore/kotlin/pom.xml
@@ -0,0 +1,46 @@
+
+ 4.0.0
+ io.swagger
+ KotlinPetstoreClientTests
+ pom
+ 1.0-SNAPSHOT
+ Kotlin Swagger Petstore Client
+
+
+
+ maven-dependency-plugin
+
+
+ package
+
+ copy-dependencies
+
+
+ ${project.build.directory}
+
+
+
+
+
+ org.codehaus.mojo
+ exec-maven-plugin
+ 1.2.1
+
+
+ bundle-test
+ integration-test
+
+ exec
+
+
+ gradle
+
+ test
+
+
+
+
+
+
+
+
diff --git a/samples/client/petstore/kotlin-string/src/test/kotlin/org/openapitools/client/PetApiTest.kt b/CI/samples.ci/client/petstore/kotlin/src/test/kotlin/org/openapitools/client/PetApiTest.kt
similarity index 100%
rename from samples/client/petstore/kotlin-string/src/test/kotlin/org/openapitools/client/PetApiTest.kt
rename to CI/samples.ci/client/petstore/kotlin/src/test/kotlin/org/openapitools/client/PetApiTest.kt
diff --git a/CI/samples.ci/client/petstore/kotlin/src/test/kotlin/org/openapitools/client/StoreApiTest.kt b/CI/samples.ci/client/petstore/kotlin/src/test/kotlin/org/openapitools/client/StoreApiTest.kt
new file mode 100644
index 000000000000..1807e516eb07
--- /dev/null
+++ b/CI/samples.ci/client/petstore/kotlin/src/test/kotlin/org/openapitools/client/StoreApiTest.kt
@@ -0,0 +1,48 @@
+package org.openapitools.client
+
+import io.kotlintest.shouldBe
+import io.kotlintest.specs.ShouldSpec
+import org.openapitools.client.apis.PetApi
+import org.openapitools.client.apis.StoreApi
+import org.openapitools.client.models.Order
+import org.openapitools.client.models.Pet
+import java.time.LocalDateTime.now
+
+class StoreApiTest : ShouldSpec() {
+ init {
+
+ val petId:Long = 10006
+ val petApi = PetApi()
+ val storeApi = StoreApi()
+
+ val pet = Pet(
+ id = petId,
+ name = "kotlin client test",
+ photoUrls = arrayOf("http://test_kotlin_unit_test.com")
+ )
+ petApi.addPet(pet)
+
+ should("add an order") {
+
+ val order = Order(
+ id = 12,
+ petId = petId,
+ quantity = 2,
+ shipDate = now(),
+ complete = true
+ )
+ storeApi.placeOrder(order);
+
+ }
+
+ should("get order by id") {
+ val result = storeApi.getOrderById(12)
+
+ // verify order
+ result.petId shouldBe (petId)
+ result.quantity shouldBe (2)
+ }
+
+ }
+
+}
diff --git a/CI/samples.ci/client/petstore/php/OpenAPIClient-php/composer.json b/CI/samples.ci/client/petstore/php/OpenAPIClient-php/composer.json
new file mode 100644
index 000000000000..370d12656b25
--- /dev/null
+++ b/CI/samples.ci/client/petstore/php/OpenAPIClient-php/composer.json
@@ -0,0 +1,39 @@
+{
+ "name": "GIT_USER_ID/GIT_REPO_ID",
+ "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: \" \\",
+ "keywords": [
+ "openapitools",
+ "openapi-generator",
+ "openapi",
+ "php",
+ "sdk",
+ "rest",
+ "api"
+ ],
+ "homepage": "https://openapi-generator.tech",
+ "license": "unlicense",
+ "authors": [
+ {
+ "name": "OpenAPI-Generator contributors",
+ "homepage": "https://openapi-generator.tech"
+ }
+ ],
+ "require": {
+ "php": ">=7.1",
+ "ext-curl": "*",
+ "ext-json": "*",
+ "ext-mbstring": "*",
+ "guzzlehttp/guzzle": "^6.2"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^7.4",
+ "squizlabs/php_codesniffer": "~2.6",
+ "friendsofphp/php-cs-fixer": "~2.12"
+ },
+ "autoload": {
+ "psr-4": { "OpenAPI\\Client\\" : "lib/" }
+ },
+ "autoload-dev": {
+ "psr-4": { "OpenAPI\\Client\\" : "test/" }
+ }
+}
diff --git a/CI/samples.ci/client/petstore/php/OpenAPIClient-php/pom.xml b/CI/samples.ci/client/petstore/php/OpenAPIClient-php/pom.xml
new file mode 100644
index 000000000000..da15e1c40968
--- /dev/null
+++ b/CI/samples.ci/client/petstore/php/OpenAPIClient-php/pom.xml
@@ -0,0 +1,59 @@
+
+ 4.0.0
+ org.openapitools
+ PhpPetstoreOAS2Tests
+ pom
+ 1.0-SNAPSHOT
+ PHP OpenAPI OAS2 Client
+
+
+
+ maven-dependency-plugin
+
+
+ package
+
+ copy-dependencies
+
+
+ ${project.build.directory}
+
+
+
+
+
+ org.codehaus.mojo
+ exec-maven-plugin
+ 1.2.1
+
+
+ bundle-install
+ pre-integration-test
+
+ exec
+
+
+ composer
+
+ install
+
+
+
+
+ bundle-test
+ integration-test
+
+ exec
+
+
+ vendor/bin/phpunit
+
+ tests
+
+
+
+
+
+
+
+
diff --git a/CI/samples.ci/client/petstore/php/OpenAPIClient-php/tests/AsyncTest.php b/CI/samples.ci/client/petstore/php/OpenAPIClient-php/tests/AsyncTest.php
new file mode 100644
index 000000000000..a1af7b1238b8
--- /dev/null
+++ b/CI/samples.ci/client/petstore/php/OpenAPIClient-php/tests/AsyncTest.php
@@ -0,0 +1,91 @@
+api = new Api\PetApi();
+
+ $this->petId = 10005;
+ $pet = new Model\Pet;
+ $pet->setId($this->petId);
+ $pet->setName("PHP Unit Test");
+ $pet->setPhotoUrls(array("http://test_php_unit_test.com"));
+ // new tag
+ $tag= new Model\Tag;
+ $tag->setId($this->petId); // use the same id as pet
+ $tag->setName("test php tag");
+ // new category
+ $category = new Model\Category;
+ $category->setId($this->petId); // use the same id as pet
+ $category->setName("test php category");
+
+ $pet->setTags(array($tag));
+ $pet->setCategory($category);
+
+ $pet_api = new Api\PetApi();
+ // add a new pet (model)
+ $add_response = $pet_api->addPet($pet);
+ }
+
+ public function testAsyncRequest()
+ {
+ $promise = $this->api->getPetByIdAsync(10005);
+
+ $promise2 = $this->api->getPetByIdAsync(10005);
+
+ $pet = $promise->wait();
+ $pet2 = $promise2->wait();
+ $this->assertInstanceOf(Pet::class, $pet);
+ $this->assertInstanceOf(Pet::class, $pet2);
+ }
+
+ public function testAsyncRequestWithHttpInfo()
+ {
+ $promise = $this->api->getPetByIdAsyncWithHttpInfo($this->petId);
+
+ list($pet, $status, $headers) = $promise->wait();
+ $this->assertEquals(200, $status);
+ $this->assertInternalType('array', $headers);
+ $this->assertInstanceOf(Pet::class, $pet);
+ }
+
+ /**
+ * @expectedException \OpenAPI\Client\ApiException
+ */
+ public function testAsyncThrowingException()
+ {
+ $promise = $this->api->getPetByIdAsync(0);
+ $promise->wait();
+ }
+
+ /**
+ * @doesNotPerformAssertions
+ */
+ public function testAsyncApiExceptionWithoutWaitIsNotThrown()
+ {
+ $promise = $this->api->getPetByIdAsync(0);
+ sleep(1);
+ }
+
+ /**
+ * @expectedException \OpenAPI\Client\ApiException
+ */
+ public function testAsyncHttpInfoThrowingException()
+ {
+ $promise = $this->api->getPetByIdAsyncWithHttpInfo(0);
+ $promise->wait();
+ }
+}
diff --git a/CI/samples.ci/client/petstore/php/OpenAPIClient-php/tests/AuthTest.php b/CI/samples.ci/client/petstore/php/OpenAPIClient-php/tests/AuthTest.php
new file mode 100644
index 000000000000..daafb50ede7c
--- /dev/null
+++ b/CI/samples.ci/client/petstore/php/OpenAPIClient-php/tests/AuthTest.php
@@ -0,0 +1,63 @@
+setApiKey('api_key', '123qwe');
+
+ $fakeHttpClient = new FakeHttpClient();
+ $api = new PetApi($fakeHttpClient, $authConfig);
+ $api->getPetById(123);
+
+ $headers = $fakeHttpClient->getLastRequest()->getHeaders();
+
+ $this->assertArrayHasKey('api_key', $headers);
+ $this->assertEquals(['123qwe'], $headers['api_key']);
+ }
+
+ public function testApiToken()
+ {
+ $authConfig = new Configuration();
+ $authConfig->setAccessToken('asd123');
+
+ $fakeHttpClient = new FakeHttpClient();
+ $api = new PetApi($fakeHttpClient, $authConfig);
+ $api->addPet(new Pet());
+
+ $headers = $fakeHttpClient->getLastRequest()->getHeaders();
+
+ $this->assertArrayHasKey('Authorization', $headers);
+ $this->assertEquals(['Bearer asd123'], $headers['Authorization']);
+ }
+
+ public function testBasicAuth()
+ {
+ $username = 'user';
+ $password = 'password';
+
+ $authConfig = new Configuration();
+ $authConfig->setUsername($username);
+ $authConfig->setPassword($password);
+
+ $fakeHttpClient = new FakeHttpClient();
+ $api = new FakeApi($fakeHttpClient, $authConfig);
+ $api->testEndpointParameters(123, 100.1, 'ASD_', 'ASD');
+
+ $headers = $fakeHttpClient->getLastRequest()->getHeaders();
+
+ $this->assertArrayHasKey('Authorization', $headers);
+ $encodedCredentials = base64_encode("$username:$password");
+ $this->assertEquals(["Basic $encodedCredentials"], $headers['Authorization']);
+ }
+}
diff --git a/CI/samples.ci/client/petstore/php/OpenAPIClient-php/tests/DateTimeSerializerTest.php b/CI/samples.ci/client/petstore/php/OpenAPIClient-php/tests/DateTimeSerializerTest.php
new file mode 100644
index 000000000000..3a889cba6dae
--- /dev/null
+++ b/CI/samples.ci/client/petstore/php/OpenAPIClient-php/tests/DateTimeSerializerTest.php
@@ -0,0 +1,35 @@
+ $dateTime,
+ ]);
+
+ $data = ObjectSerializer::sanitizeForSerialization($input);
+
+ $this->assertEquals($data->dateTime, '1973-04-30T17:05:00+02:00');
+ }
+
+ public function testDateSanitazion()
+ {
+ $dateTime = new \DateTime('April 30, 1973 17:05 CEST');
+
+ $input = new FormatTest([
+ 'date' => $dateTime,
+ ]);
+
+ $data = ObjectSerializer::sanitizeForSerialization($input);
+
+ $this->assertEquals($data->date, '1973-04-30');
+ }
+}
diff --git a/CI/samples.ci/client/petstore/php/OpenAPIClient-php/tests/DebugTest.php b/CI/samples.ci/client/petstore/php/OpenAPIClient-php/tests/DebugTest.php
new file mode 100644
index 000000000000..375b054b4791
--- /dev/null
+++ b/CI/samples.ci/client/petstore/php/OpenAPIClient-php/tests/DebugTest.php
@@ -0,0 +1,28 @@
+expectOutputRegex('#GET /v2/pet/1 HTTP/1.1#');
+
+ $config = new Configuration();
+ $config->setDebug(true);
+ $api = new Api\PetApi(null, $config);
+ $api->getPetById(1);
+ }
+
+ public function testEnableDebugOutputAsync()
+ {
+ $this->expectOutputRegex('#GET /v2/pet/1 HTTP/1.1#');
+
+ $config = new Configuration();
+ $config->setDebug(true);
+ $api = new Api\PetApi(null, $config);
+ $promise = $api->getPetByIdAsync(1);
+ $promise->wait();
+ }
+}
diff --git a/CI/samples.ci/client/petstore/php/OpenAPIClient-php/tests/EnumClassTest.php b/CI/samples.ci/client/petstore/php/OpenAPIClient-php/tests/EnumClassTest.php
new file mode 100644
index 000000000000..fbc089c7f187
--- /dev/null
+++ b/CI/samples.ci/client/petstore/php/OpenAPIClient-php/tests/EnumClassTest.php
@@ -0,0 +1,16 @@
+assertSame(EnumClass::ABC, '_abc');
+ $this->assertSame(EnumClass::EFG, '-efg');
+ $this->assertSame(EnumClass::XYZ, '(xyz)');
+ }
+}
diff --git a/CI/samples.ci/client/petstore/php/OpenAPIClient-php/tests/EnumTestTest.php b/CI/samples.ci/client/petstore/php/OpenAPIClient-php/tests/EnumTestTest.php
new file mode 100644
index 000000000000..24fdbeabb7e5
--- /dev/null
+++ b/CI/samples.ci/client/petstore/php/OpenAPIClient-php/tests/EnumTestTest.php
@@ -0,0 +1,59 @@
+assertSame(EnumTest::ENUM_STRING_UPPER, "UPPER");
+ $this->assertSame(EnumTest::ENUM_STRING_LOWER, "lower");
+ $this->assertSame(EnumTest::ENUM_INTEGER_1, 1);
+ $this->assertSame(EnumTest::ENUM_INTEGER_MINUS_1, -1);
+ $this->assertSame(EnumTest::ENUM_NUMBER_1_DOT_1, 1.1);
+ $this->assertSame(EnumTest::ENUM_NUMBER_MINUS_1_DOT_2, -1.2);
+ }
+
+ public function testStrictValidation()
+ {
+ $enum = new EnumTest([
+ 'enum_string' => 0,
+ ]);
+
+ $this->assertFalse($enum->valid());
+
+ $expected = [
+ "invalid value for 'enum_string', must be one of 'UPPER', 'lower', ''",
+ "'enum_string_required' can't be null",
+ ];
+ $this->assertSame($expected, $enum->listInvalidProperties());
+ }
+
+ /**
+ * @expectedException \InvalidArgumentException
+ */
+ public function testThrowExceptionWhenInvalidAmbiguousValueHasPassed()
+ {
+ $enum = new EnumTest();
+ $enum->setEnumString(0);
+ }
+
+ public function testNonRequiredPropertyIsOptional()
+ {
+ $enum = new EnumTest([
+ 'enum_string_required' => 'UPPER',
+ ]);
+ $this->assertSame([], $enum->listInvalidProperties());
+ $this->assertTrue($enum->valid());
+ }
+
+ public function testRequiredProperty()
+ {
+ $enum = new EnumTest();
+ $this->assertSame(["'enum_string_required' can't be null"], $enum->listInvalidProperties());
+ $this->assertFalse($enum->valid());
+ }
+}
diff --git a/CI/samples.ci/client/petstore/php/OpenAPIClient-php/tests/ExceptionTest.php b/CI/samples.ci/client/petstore/php/OpenAPIClient-php/tests/ExceptionTest.php
new file mode 100644
index 000000000000..ac69620fa2fc
--- /dev/null
+++ b/CI/samples.ci/client/petstore/php/OpenAPIClient-php/tests/ExceptionTest.php
@@ -0,0 +1,42 @@
+setHost('http://petstore.swagger.io/INVALID_URL');
+
+ $api = new Api\StoreApi(
+ new Client(),
+ $config
+ );
+ $api->getInventory();
+ }
+
+ /**
+ * @expectedException \OpenAPI\Client\ApiException
+ * @expectedExceptionMessage Could not resolve host
+ */
+ public function testWrongHost()
+ {
+ $config = new Configuration();
+ $config->setHost('http://wrong_host.zxc');
+
+ $api = new Api\StoreApi(
+ new Client(),
+ $config
+ );
+ $api->getInventory();
+ }
+}
diff --git a/CI/samples.ci/client/petstore/php/OpenAPIClient-php/tests/FakeHttpClient.php b/CI/samples.ci/client/petstore/php/OpenAPIClient-php/tests/FakeHttpClient.php
new file mode 100644
index 000000000000..d93b8f8b0b36
--- /dev/null
+++ b/CI/samples.ci/client/petstore/php/OpenAPIClient-php/tests/FakeHttpClient.php
@@ -0,0 +1,69 @@
+request;
+ }
+
+ /**
+ * @param null|ResponseInterface $response
+ */
+ public function setResponse(ResponseInterface $response = null)
+ {
+ $this->response = $response;
+ }
+
+ /**
+ * Send an HTTP request.
+ *
+ * @param RequestInterface $request Request to send
+ * @param array $options Request options to apply to the given
+ * request and to the transfer.
+ *
+ * @return ResponseInterface
+ * @throws GuzzleException
+ */
+ public function send(RequestInterface $request, array $options = [])
+ {
+ $this->request = $request;
+ return $this->response ?: new Response(200);
+ }
+
+ public function sendAsync(RequestInterface $request, array $options = [])
+ {
+ throw new \RuntimeException('not implemented');
+ }
+
+ public function request($method, $uri, array $options = [])
+ {
+ throw new \RuntimeException('not implemented');
+ }
+
+ public function requestAsync($method, $uri, array $options = [])
+ {
+ throw new \RuntimeException('not implemented');
+ }
+
+ public function getConfig($option = null)
+ {
+ throw new \RuntimeException('not implemented');
+ }
+}
diff --git a/CI/samples.ci/client/petstore/php/OpenAPIClient-php/tests/FormatTestTest.php b/CI/samples.ci/client/petstore/php/OpenAPIClient-php/tests/FormatTestTest.php
new file mode 100644
index 000000000000..0d96987614c0
--- /dev/null
+++ b/CI/samples.ci/client/petstore/php/OpenAPIClient-php/tests/FormatTestTest.php
@@ -0,0 +1,27 @@
+ $the64MultiByteStrings,
+ // mandatory parameters
+ 'number' => 500,
+ 'byte' => base64_encode('test'),
+ 'date' => new DateTime(),
+ ]);
+
+ $this->assertEmpty($formatTest->listInvalidProperties());
+
+ // Pass the strings via setter.
+ // Throws InvalidArgumentException if it doesn't count the length correctly.
+ $formatTest->setPassword($the64MultiByteStrings);
+ }
+}
diff --git a/CI/samples.ci/client/petstore/php/OpenAPIClient-php/tests/HeaderSelectorTest.php b/CI/samples.ci/client/petstore/php/OpenAPIClient-php/tests/HeaderSelectorTest.php
new file mode 100644
index 000000000000..6dd19a675f6a
--- /dev/null
+++ b/CI/samples.ci/client/petstore/php/OpenAPIClient-php/tests/HeaderSelectorTest.php
@@ -0,0 +1,58 @@
+selectHeaders([
+ 'application/xml',
+ 'application/json'
+ ], []);
+ $this->assertSame('application/json', $headers['Accept']);
+
+ $headers = $selector->selectHeaders([], []);
+ $this->assertArrayNotHasKey('Accept', $headers);
+
+ $header = $selector->selectHeaders([
+ 'application/yaml',
+ 'application/xml'
+ ], []);
+ $this->assertSame('application/yaml,application/xml', $header['Accept']);
+
+ // test selectHeaderContentType
+ $headers = $selector->selectHeaders([], [
+ 'application/xml',
+ 'application/json'
+ ]);
+ $this->assertSame('application/json', $headers['Content-Type']);
+
+ $headers = $selector->selectHeaders([], []);
+ $this->assertSame('application/json', $headers['Content-Type']);
+ $headers = $selector->selectHeaders([], [
+ 'application/yaml',
+ 'application/xml'
+ ]);
+ $this->assertSame('application/yaml,application/xml', $headers['Content-Type']);
+ }
+
+ public function testSelectingHeadersForMultipartBody()
+ {
+ // test selectHeaderAccept
+ $selector = new HeaderSelector();
+ $headers = $selector->selectHeadersForMultipart([
+ 'application/xml',
+ 'application/json'
+ ]);
+ $this->assertSame('application/json', $headers['Accept']);
+ $this->assertArrayNotHasKey('Content-Type', $headers);
+
+ $headers = $selector->selectHeadersForMultipart([]);
+ $this->assertArrayNotHasKey('Accept', $headers);
+ $this->assertArrayNotHasKey('Content-Type', $headers);
+ }
+}
diff --git a/CI/samples.ci/client/petstore/php/OpenAPIClient-php/tests/HeadersTest.php b/CI/samples.ci/client/petstore/php/OpenAPIClient-php/tests/HeadersTest.php
new file mode 100644
index 000000000000..4054876ee0e1
--- /dev/null
+++ b/CI/samples.ci/client/petstore/php/OpenAPIClient-php/tests/HeadersTest.php
@@ -0,0 +1,33 @@
+fakeHttpClient = new FakeHttpClient();
+ }
+
+ public function testUserAgent()
+ {
+ $config = new Configuration();
+ $config->setUserAgent('value');
+ $api = new Api\PetApi($this->fakeHttpClient, $config);
+
+ $api->getPetById(3);
+
+ $request = $this->fakeHttpClient->getLastRequest();
+ $headers = $request->getHeaders();
+
+ $this->assertArrayHasKey('User-Agent', $headers);
+ $this->assertEquals(['value'], $headers['User-Agent']);
+ }
+}
diff --git a/CI/samples.ci/client/petstore/php/OpenAPIClient-php/tests/ModelInheritanceTest.php b/CI/samples.ci/client/petstore/php/OpenAPIClient-php/tests/ModelInheritanceTest.php
new file mode 100644
index 000000000000..333b88bbedaa
--- /dev/null
+++ b/CI/samples.ci/client/petstore/php/OpenAPIClient-php/tests/ModelInheritanceTest.php
@@ -0,0 +1,96 @@
+assertSame('red', $dog->getColor());
+ $this->assertSame('red', $animal->getColor());
+ }
+
+ /**
+ * test inheritance in the model
+ */
+ public function testInheritance()
+ {
+ $newDog = new Dog;
+ // the object should be an instance of the derived class
+ $this->assertInstanceOf(Dog::class, $newDog);
+ // the object should also be an instance of the parent class
+ $this->assertInstanceOf(Animal::class, $newDog);
+ }
+
+ /**
+ * test inheritance constructor is working with data initialization
+ */
+ public function testInheritanceConstructorDataInitialization()
+ {
+ // initialize the object with data in the constructor
+ $data = [
+ 'class_name' => 'Dog',
+ 'breed' => 'Great Dane',
+ ];
+ $newDog = new Dog($data);
+
+ // the property on the derived class should be set
+ $this->assertSame('Great Dane', $newDog->getBreed());
+ // the property on the parent class should be set
+ $this->assertSame('Dog', $newDog->getClassName());
+ }
+
+ /**
+ * test if discriminator is initialized automatically
+ */
+ public function testDiscriminatorInitialization()
+ {
+ $newDog = new Dog();
+ $this->assertSame('Dog', $newDog->getClassName());
+ }
+
+ /**
+ * test if ArrayAccess interface works
+ */
+ public function testArrayStuff()
+ {
+ // create an array of Animal
+ $farm = array();
+
+ // add some animals to the farm to make sure the ArrayAccess interface works
+ $farm[] = new Dog();
+ $farm[] = new Cat();
+ $farm[] = new Animal();
+
+ // assert we can look up the animals in the farm by array indices (let's try a random order)
+ $this->assertInstanceOf(Cat::class, $farm[1]);
+ $this->assertInstanceOf(Dog::class, $farm[0]);
+ $this->assertInstanceOf(Animal::class, $farm[2]);
+
+ // let's try to `foreach` the animals in the farm and let's try to use the objects we loop through
+ foreach ($farm as $animal) {
+ $this->assertContains($animal->getClassName(), ['Dog', 'Cat', 'Animal']);
+ $this->assertInstanceOf('OpenAPI\Client\Model\Animal', $animal);
+ }
+ }
+}
diff --git a/CI/samples.ci/client/petstore/php/OpenAPIClient-php/tests/ObjectSerializerTest.php b/CI/samples.ci/client/petstore/php/OpenAPIClient-php/tests/ObjectSerializerTest.php
new file mode 100644
index 000000000000..818568873aa1
--- /dev/null
+++ b/CI/samples.ci/client/petstore/php/OpenAPIClient-php/tests/ObjectSerializerTest.php
@@ -0,0 +1,27 @@
+assertSame("sun.gif", $s->sanitizeFilename("sun.gif"));
+ $this->assertSame("sun.gif", $s->sanitizeFilename("../sun.gif"));
+ $this->assertSame("sun.gif", $s->sanitizeFilename("/var/tmp/sun.gif"));
+ $this->assertSame("sun.gif", $s->sanitizeFilename("./sun.gif"));
+
+ $this->assertSame("sun", $s->sanitizeFilename("sun"));
+ $this->assertSame("sun.gif", $s->sanitizeFilename("..\sun.gif"));
+ $this->assertSame("sun.gif", $s->sanitizeFilename("\var\tmp\sun.gif"));
+ $this->assertSame("sun.gif", $s->sanitizeFilename("c:\var\tmp\sun.gif"));
+ $this->assertSame("sun.gif", $s->sanitizeFilename(".\sun.gif"));
+ }
+}
diff --git a/CI/samples.ci/client/petstore/php/OpenAPIClient-php/tests/OrderApiTest.php b/CI/samples.ci/client/petstore/php/OpenAPIClient-php/tests/OrderApiTest.php
new file mode 100644
index 000000000000..60c1fc6f47ed
--- /dev/null
+++ b/CI/samples.ci/client/petstore/php/OpenAPIClient-php/tests/OrderApiTest.php
@@ -0,0 +1,135 @@
+assertSame(Model\Order::STATUS_PLACED, "placed");
+ $this->assertSame(Model\Order::STATUS_APPROVED, "approved");
+ }
+
+ // test get inventory
+ public function testOrder()
+ {
+ // initialize the API client
+ $order = new Model\Order();
+
+ $order->setStatus("placed");
+ $this->assertSame("placed", $order->getStatus());
+ }
+
+ /**
+ * @expectedException InvalidArgumentException
+ */
+ public function testOrderException()
+ {
+ // initialize the API client
+ $order = new Model\Order();
+ $order->setStatus("invalid_value");
+ }
+
+ // test deseralization of order
+ public function testDeserializationOfOrder()
+ {
+ $order_json = <<assertInstanceOf('OpenAPI\Client\Model\Order', $order);
+ $this->assertSame(10, $order->getId());
+ $this->assertSame(20, $order->getPetId());
+ $this->assertSame(30, $order->getQuantity());
+ $this->assertTrue(new \DateTime("2015-08-22T07:13:36.613Z") == $order->getShipDate());
+ $this->assertSame("placed", $order->getStatus());
+ $this->assertSame(false, $order->getComplete());
+ }
+
+ // test deseralization of array of array of order
+ public function testDeserializationOfArrayOfArrayOfOrder()
+ {
+ $order_json = <<assertArrayHasKey(0, $order);
+ $this->assertArrayHasKey(0, $order[0]);
+ $_order = $order[0][0];
+ $this->assertInstanceOf('OpenAPI\Client\Model\Order', $_order);
+ $this->assertSame(10, $_order->getId());
+ $this->assertSame(20, $_order->getPetId());
+ $this->assertSame(30, $_order->getQuantity());
+ $this->assertTrue(new \DateTime("2015-08-22T07:13:36.613Z") == $_order->getShipDate());
+ $this->assertSame("placed", $_order->getStatus());
+ $this->assertSame(false, $_order->getComplete());
+ }
+
+ // test deseralization of map of map of order
+ public function testDeserializationOfMapOfMapOfOrder()
+ {
+ $order_json = <<assertArrayHasKey('test', $order);
+ $this->assertArrayHasKey('test2', $order['test']);
+ $_order = $order['test']['test2'];
+ $this->assertInstanceOf('OpenAPI\Client\Model\Order', $_order);
+ $this->assertSame(10, $_order->getId());
+ $this->assertSame(20, $_order->getPetId());
+ $this->assertSame(30, $_order->getQuantity());
+ $this->assertTrue(new \DateTime("2015-08-22T07:13:36.613Z") == $_order->getShipDate());
+ $this->assertSame("placed", $_order->getStatus());
+ $this->assertSame(false, $_order->getComplete());
+ }
+}
diff --git a/CI/samples.ci/client/petstore/php/OpenAPIClient-php/tests/OuterEnumTest.php b/CI/samples.ci/client/petstore/php/OpenAPIClient-php/tests/OuterEnumTest.php
new file mode 100644
index 000000000000..71a28e466ce9
--- /dev/null
+++ b/CI/samples.ci/client/petstore/php/OpenAPIClient-php/tests/OuterEnumTest.php
@@ -0,0 +1,99 @@
+assertInternalType('string', $result);
+ $this->assertEquals('placed', $result);
+ }
+
+ /**
+ * @expectedException \InvalidArgumentException
+ * @expectedExceptionMessage Invalid value for enum
+ */
+ public function testDeserializeInvalidValue()
+ {
+ ObjectSerializer::deserialize(
+ "lkjfalgkdfjg",
+ OuterEnum::class
+ );
+ }
+
+ public function testDeserializeNested()
+ {
+ $json = '{
+ "enum_string": "UPPER",
+ "enum_integer": -1,
+ "enum_number": -1.2,
+ "outerEnum": "approved"
+ }';
+
+ /** * @var EnumTest $result */
+ $result = ObjectSerializer::deserialize(
+ json_decode($json),
+ EnumTest::class
+ );
+
+ $this->assertInstanceOf(EnumTest::class, $result);
+ $this->assertEquals('approved', $result->getOuterEnum());
+ }
+
+ public function testSanitize()
+ {
+ $json = "placed";
+
+ $result = ObjectSerializer::sanitizeForSerialization(
+ $json
+ );
+
+ $this->assertInternalType('string', $result);
+ }
+
+ public function testSanitizeNested()
+ {
+ $input = new EnumTest([
+ 'enum_string' => 'UPPER',
+ 'enum_integer' => -1,
+ 'enum_number' => -1.2,
+ 'outer_enum' => 'approved'
+ ]);
+
+ $result = ObjectSerializer::sanitizeForSerialization(
+ $input
+ );
+
+ $this->assertInternalType('object', $result);
+ $this->assertInstanceOf(\stdClass::class, $result);
+
+ $this->assertInternalType('string', $result->outerEnum);
+ $this->assertEquals('approved', $result->outerEnum);
+ }
+
+ /**
+ * @expectedException \InvalidArgumentException
+ * @expectedExceptionMessage Invalid value for enum
+ */
+ public function testSanitizeNestedInvalidValue()
+ {
+ $input = new EnumTest([
+ 'enum_string' => 'UPPER',
+ 'enum_integer' => -1,
+ 'enum_number' => -1.2,
+ 'outer_enum' => 'invalid_value'
+ ]);
+
+ ObjectSerializer::sanitizeForSerialization($input);
+ }
+}
diff --git a/CI/samples.ci/client/petstore/php/OpenAPIClient-php/tests/ParametersTest.php b/CI/samples.ci/client/petstore/php/OpenAPIClient-php/tests/ParametersTest.php
new file mode 100644
index 000000000000..c70a5c60e471
--- /dev/null
+++ b/CI/samples.ci/client/petstore/php/OpenAPIClient-php/tests/ParametersTest.php
@@ -0,0 +1,66 @@
+fakeHttpClient = new FakeHttpClient();
+ $this->fakeApi = new Api\FakeApi($this->fakeHttpClient);
+ $this->userApi = new Api\UserApi($this->fakeHttpClient);
+ }
+
+ public function testHeaderParam()
+ {
+ $this->fakeApi->testEnumParameters([], 'something');
+
+ $request = $this->fakeHttpClient->getLastRequest();
+ $headers = $request->getHeaders();
+
+ $this->assertArrayHasKey('enum_header_string', $headers);
+ $this->assertEquals(['something'], $headers['enum_header_string']);
+ }
+
+ public function testHeaderParamCollection()
+ {
+ $this->fakeApi->testEnumParameters(['string1', 'string2']);
+
+ $request = $this->fakeHttpClient->getLastRequest();
+ $headers = $request->getHeaders();
+
+ $this->assertArrayHasKey('enum_header_string_array', $headers);
+ $this->assertEquals(['string1,string2'], $headers['enum_header_string_array']);
+ }
+
+ public function testInlineAdditionalProperties()
+ {
+ $param = new \stdClass();
+ $param->foo = 'bar';
+ $this->fakeApi->testInlineAdditionalProperties($param);
+
+ $request = $this->fakeHttpClient->getLastRequest();
+ $this->assertSame('{"foo":"bar"}', $request->getBody()->getContents());
+ }
+
+// missing example for collection path param in config
+// public function testPathParamCollection()
+// {
+// $this->userApi->getUserByNameWithHttpInfo(['aa', 'bb']);
+// $request = $this->fakeHttpClient->getLastRequest();
+// $this->assertEquals('user/aa,bb', urldecode($request->getUri()->getPath()));
+// }
+}
diff --git a/CI/samples.ci/client/petstore/php/OpenAPIClient-php/tests/PetApiTest.php b/CI/samples.ci/client/petstore/php/OpenAPIClient-php/tests/PetApiTest.php
new file mode 100644
index 000000000000..9e7f1c54b3a9
--- /dev/null
+++ b/CI/samples.ci/client/petstore/php/OpenAPIClient-php/tests/PetApiTest.php
@@ -0,0 +1,391 @@
+setId($newPetId);
+ $newPet->setName("PHP Unit Test");
+ $newPet->setPhotoUrls(["http://test_php_unit_test.com"]);
+ // new tag
+ $tag = new Model\Tag;
+ $tag->setId($newPetId); // use the same id as pet
+ $tag->setName("test php tag");
+ // new category
+ $category = new Model\Category;
+ $category->setId($newPetId); // use the same id as pet
+ $category->setName("test php category");
+
+ $newPet->setTags(array($tag));
+ $newPet->setCategory($category);
+
+ $config = new Configuration();
+ $petApi = new Api\PetApi(null, $config);
+
+ // add a new pet (model)
+ list(, $status) = $petApi->addPetWithHttpInfo($newPet);
+ Assert::assertEquals(200, $status);
+ }
+
+ public function setUp()
+ {
+ $this->api = new Api\PetApi();
+ }
+
+ public function testGetPetById()
+ {
+ $petId = 10005;
+
+ $pet = $this->api->getPetById($petId);
+ $this->assertSame($pet->getId(), $petId);
+ $this->assertSame($pet->getName(), 'PHP Unit Test');
+ $this->assertSame($pet->getPhotoUrls()[0], 'http://test_php_unit_test.com');
+ $this->assertSame($pet->getCategory()->getId(), $petId);
+ $this->assertSame($pet->getCategory()->getName(), 'test php category');
+ $this->assertSame($pet->getTags()[0]->getId(), $petId);
+ $this->assertSame($pet->getTags()[0]->getName(), 'test php tag');
+ }
+
+ /**
+ * comment out as we've removed invalid endpoints from the spec, we'll introduce something
+ * similar in the future when we've time to update the petstore server
+ *
+ * // test getPetById with a Pet object (id 10005)
+ * public function testGetPetByIdInObject()
+ * {
+ * // initialize the API client without host
+ * $pet_id = 10005; // ID of pet that needs to be fetched
+ * $pet_api = new Api\PetApi();
+ * $pet_api->getApiClient()->getConfig()->setApiKey('api_key', '111222333444555');
+ * // return Pet (inline model)
+ * $response = $pet_api->getPetByIdInObject($pet_id);
+ * $this->assertInstanceOf('OpenAPI\Client\Model\InlineResponse200', $response);
+ * $this->assertSame($response->getId(), $pet_id);
+ * $this->assertSame($response->getName(), 'PHP Unit Test');
+ * $this->assertSame($response->getPhotoUrls()[0], 'http://test_php_unit_test.com');
+ *
+ * // category is type "object"
+ * $this->assertInternalType('array', $response->getCategory());
+ * $this->assertSame($response->getCategory()['id'], $pet_id);
+ * $this->assertSame($response->getCategory()['name'], 'test php category');
+ *
+ * $this->assertSame($response->getTags()[0]->getId(), $pet_id);
+ * $this->assertSame($response->getTags()[0]->getName(), 'test php tag');
+ * }
+ */
+
+ // test getPetByIdWithHttpInfo with a Pet object (id 10005)
+ public function testGetPetByIdWithHttpInfo()
+ {
+ // initialize the API client without host
+ $petId = 10005; // ID of pet that needs to be fetched
+
+ /** @var $pet Pet */
+ list($pet, $status_code, $response_headers) = $this->api->getPetByIdWithHttpInfo($petId);
+ $this->assertSame($pet->getId(), $petId);
+ $this->assertSame($pet->getName(), 'PHP Unit Test');
+ $this->assertSame($pet->getCategory()->getId(), $petId);
+ $this->assertSame($pet->getCategory()->getName(), 'test php category');
+ $this->assertSame($pet->getTags()[0]->getId(), $petId);
+ $this->assertSame($pet->getTags()[0]->getName(), 'test php tag');
+ $this->assertSame($status_code, 200);
+ $this->assertSame($response_headers['Content-Type'], ['application/json']);
+ }
+
+ public function testFindPetByStatus()
+ {
+ $response = $this->api->findPetsByStatus('available');
+ $this->assertGreaterThan(0, count($response)); // at least one object returned
+
+ $this->assertSame(get_class($response[0]), Pet::class); // verify the object is Pet
+ foreach ($response as $pet) {
+ $this->assertSame($pet['status'], 'available');
+ }
+
+ $response = $this->api->findPetsByStatus('unknown_and_incorrect_status');
+ $this->assertCount(0, $response);
+ }
+
+ public function testUpdatePet()
+ {
+ $petId = 10001;
+ $updatedPet = new Model\Pet;
+ $updatedPet->setId($petId);
+ $updatedPet->setName('updatePet');
+ $updatedPet->setStatus('pending');
+ $result = $this->api->updatePet($updatedPet);
+ $this->assertNull($result);
+
+ // verify updated Pet
+ $result = $this->api->getPetById($petId);
+ $this->assertSame($result->getId(), $petId);
+ $this->assertSame($result->getStatus(), 'pending');
+ $this->assertSame($result->getName(), 'updatePet');
+ }
+
+ // test updatePetWithFormWithHttpInfo and verify by the "name" of the response
+ public function testUpdatePetWithFormWithHttpInfo()
+ {
+ $petId = 10001; // ID of pet that needs to be fetched
+
+ // update Pet (form)
+ list($update_response, $status_code, $http_headers) = $this->api->updatePetWithFormWithHttpInfo(
+ $petId,
+ 'update pet with form with http info'
+ );
+ // return nothing (void)
+ $this->assertNull($update_response);
+ $this->assertSame($status_code, 200);
+ $this->assertSame($http_headers['Content-Type'], ['application/json']);
+ $response = $this->api->getPetById($petId);
+ $this->assertSame($response->getId(), $petId);
+ $this->assertSame($response->getName(), 'update pet with form with http info');
+ }
+
+ // test updatePetWithForm and verify by the "name" and "status" of the response
+ public function testUpdatePetWithForm()
+ {
+ $pet_id = 10001; // ID of pet that needs to be fetched
+ $result = $this->api->updatePetWithForm($pet_id, 'update pet with form', 'sold');
+ // return nothing (void)
+ $this->assertNull($result);
+
+ $response = $this->api->getPetById($pet_id);
+ $this->assertSame($response->getId(), $pet_id);
+ $this->assertSame($response->getName(), 'update pet with form');
+ $this->assertSame($response->getStatus(), 'sold');
+ }
+
+ // test addPet and verify by the "id" and "name" of the response
+ public function testAddPet()
+ {
+ $new_pet_id = 10005;
+ $newPet = new Model\Pet;
+ $newPet->setId($new_pet_id);
+ $newPet->setName("PHP Unit Test 2");
+
+ // add a new pet (model)
+ $add_response = $this->api->addPet($newPet);
+ // return nothing (void)
+ $this->assertNull($add_response);
+
+ // verify added Pet
+ $response = $this->api->getPetById($new_pet_id);
+ $this->assertSame($response->getId(), $new_pet_id);
+ $this->assertSame($response->getName(), 'PHP Unit Test 2');
+ }
+
+ /*
+ * comment out as we've removed invalid endpoints from the spec, we'll introduce something
+ * similar in the future when we've time to update the petstore server
+ *
+ // test addPetUsingByteArray and verify by the "id" and "name" of the response
+ public function testAddPetUsingByteArray()
+ {
+ // initialize the API client
+ $config = (new Configuration())->setHost('http://petstore.swagger.io/v2');
+ $api_client = new ApiClient($config);
+
+ $new_pet_id = 10005;
+ $new_pet = new Model\Pet;
+ $new_pet->setId($new_pet_id);
+ $new_pet->setName("PHP Unit Test 3");
+ // new tag
+ $tag= new Model\Tag;
+ $tag->setId($new_pet_id); // use the same id as pet
+ $tag->setName("test php tag");
+ // new category
+ $category = new Model\Category;
+ $category->setId($new_pet_id); // use the same id as pet
+ $category->setName("test php category");
+
+ $new_pet->setTags(array($tag));
+ $new_pet->setCategory($category);
+
+ $pet_api = new Api\PetApi($api_client);
+ // add a new pet (model)
+ $object_serializer = new ObjectSerializer();
+ $pet_json_string = json_encode($object_serializer->sanitizeForSerialization($new_pet));
+ $add_response = $pet_api->addPetUsingByteArray($pet_json_string);
+ // return nothing (void)
+ $this->assertSame($add_response, NULL);
+ // verify added Pet
+ $response = $pet_api->getPetById($new_pet_id);
+ $this->assertSame($response->getId(), $new_pet_id);
+ $this->assertSame($response->getName(), 'PHP Unit Test 3');
+ }
+ */
+
+ // test upload file
+ public function testUploadFile()
+ {
+ // upload file
+ $pet_id = 10001;
+ $response = $this->api->uploadFile($pet_id, 'test meta', __DIR__ . '/../composer.json');
+ // return ApiResponse
+ $this->assertInstanceOf(ApiResponse::class, $response);
+ }
+
+ /*
+ * comment out as we've removed invalid endpoints from the spec, we'll introduce something
+ * similar in the future when we've time to update the petstore server
+ *
+ // test byte array response
+ public function testGetPetByIdWithByteArray()
+ {
+ // initialize the API client
+ $config = new Configuration();
+ $config->setHost('http://petstore.swagger.io/v2');
+ $api_client = new APIClient($config);
+ $pet_api = new Api\PetApi($api_client);
+ // test getPetByIdWithByteArray
+ $pet_id = 10005;
+ $bytes = $pet_api->petPetIdtestingByteArraytrueGet($pet_id);
+ $json = json_decode($bytes, true);
+
+ $this->assertInternalType("string", $bytes);
+
+ $this->assertSame($json['id'], $pet_id);
+ // not testing name as it's tested by addPetUsingByteArray
+ //$this->assertSame($json['name'], 'PHP Unit Test');
+ $this->assertSame($json['category']['id'], $pet_id);
+ $this->assertSame($json['category']['name'], 'test php category');
+ $this->assertSame($json['tags'][0]['id'], $pet_id);
+ $this->assertSame($json['tags'][0]['name'], 'test php tag');
+ }
+ */
+
+ // test empty object serialization
+ public function testEmptyPetSerialization()
+ {
+ $new_pet = new Model\Pet;
+ // the empty object should be serialised to {}
+ $this->assertSame("{}", "$new_pet");
+ }
+
+ // test inheritance in the model
+ public function testInheritance()
+ {
+ $new_dog = new Model\Dog;
+ // the object should be an instance of the derived class
+ $this->assertInstanceOf('OpenAPI\Client\Model\Dog', $new_dog);
+ // the object should also be an instance of the parent class
+ $this->assertInstanceOf('OpenAPI\Client\Model\Animal', $new_dog);
+ }
+
+ // test inheritance constructor is working with data
+ // initialization
+ public function testInheritanceConstructorDataInitialization()
+ {
+ // initialize the object with data in the constructor
+ $data = array(
+ 'class_name' => 'Dog',
+ 'breed' => 'Great Dane'
+ );
+ $new_dog = new Model\Dog($data);
+
+ // the property on the derived class should be set
+ $this->assertSame('Great Dane', $new_dog->getBreed());
+ // the property on the parent class should be set
+ $this->assertSame('Dog', $new_dog->getClassName());
+ }
+
+ // test if discriminator is initialized automatically
+ public function testDiscriminatorInitialization()
+ {
+ $new_dog = new Model\Dog();
+ $this->assertSame('Dog', $new_dog->getClassName());
+ }
+
+ // test if ArrayAccess interface works
+ public function testArrayStuff()
+ {
+ // create an array of Animal
+ $farm = array();
+
+ // add some animals to the farm to make sure the ArrayAccess
+ // interface works
+ $farm[] = new Model\Dog();
+ $farm[] = new Model\Cat();
+ $farm[] = new Model\Animal();
+
+ // assert we can look up the animals in the farm by array
+ // indices (let's try a random order)
+ $this->assertInstanceOf('OpenAPI\Client\Model\Cat', $farm[1]);
+ $this->assertInstanceOf('OpenAPI\Client\Model\Dog', $farm[0]);
+ $this->assertInstanceOf('OpenAPI\Client\Model\Animal', $farm[2]);
+
+ // let's try to `foreach` the animals in the farm and let's
+ // try to use the objects we loop through
+ foreach ($farm as $animal) {
+ $this->assertContains($animal->getClassName(), array('Dog', 'Cat', 'Animal'));
+ $this->assertInstanceOf('OpenAPI\Client\Model\Animal', $animal);
+ }
+ }
+
+ // test if default values works
+ public function testDefaultValues()
+ {
+ // add some animals to the farm to make sure the ArrayAccess
+ // interface works
+ $dog = new Model\Dog();
+ $animal = new Model\Animal();
+
+ // assert we can look up the animals in the farm by array
+ // indices (let's try a random order)
+ $this->assertSame('red', $dog->getColor());
+ $this->assertSame('red', $animal->getColor());
+ }
+
+ /**
+ * test invalid argument
+ *
+ * @expectedException \InvalidArgumentException
+ * @expectedExceptionMessage Missing the required parameter $status when calling findPetsByStatus
+ */
+ public function testInvalidArgument()
+ {
+ // the argument is required, and we must specify one or some from 'available', 'pending', 'sold'
+ $this->api->findPetsByStatus([]);
+ }
+
+// Disabled as currently we don't have any endpoint that would return file
+// For testing I just replaced url and return type in Api method.
+// public function testDownloadingLargeFile()
+// {
+// $petId = 10005;
+// $config = new Configuration();
+// $config->setHost('https://getcomposer.org');
+// $api = new PetApi(new Client(), $config);
+// $result = $api->getPetById($petId);
+// $this->assertInstanceOf(\SplFileObject::class, $result);
+// var_dump([
+// 'peak mem (MiB)' => memory_get_peak_usage(true)/1024/1024,
+// 'file size (MiB)' => $result->getSize()/1024/1024,
+// 'path' => sys_get_temp_dir() . '/' . $result->getFilename()
+// ]);
+// }
+}
diff --git a/CI/samples.ci/client/petstore/php/OpenAPIClient-php/tests/PetTest.php b/CI/samples.ci/client/petstore/php/OpenAPIClient-php/tests/PetTest.php
new file mode 100644
index 000000000000..c3c4ee8950e3
--- /dev/null
+++ b/CI/samples.ci/client/petstore/php/OpenAPIClient-php/tests/PetTest.php
@@ -0,0 +1,19 @@
+assertSame("{}", "$new_pet");
+ }
+}
diff --git a/CI/samples.ci/client/petstore/php/OpenAPIClient-php/tests/RequestTest.php b/CI/samples.ci/client/petstore/php/OpenAPIClient-php/tests/RequestTest.php
new file mode 100644
index 000000000000..3bec91563618
--- /dev/null
+++ b/CI/samples.ci/client/petstore/php/OpenAPIClient-php/tests/RequestTest.php
@@ -0,0 +1,37 @@
+fakeClient = new FakeHttpClient();
+ $this->api = new Api\FakeApi($this->fakeClient);
+ }
+
+ public function testFormDataEncodingToJson()
+ {
+ $this->api->testJsonFormData('value', 'value2');
+
+ $request = $this->fakeClient->getLastRequest();
+ $contentType = $request->getHeader('Content-Type');
+ $this->assertEquals(['application/x-www-form-urlencoded'], $contentType);
+
+ $requestContent = $request->getBody()->getContents();
+
+ // JSON serialization of form data is not supported
+ $this->assertEquals('param=value¶m2=value2', $requestContent);
+ }
+}
diff --git a/CI/samples.ci/client/petstore/php/OpenAPIClient-php/tests/ResponseTypesTest.php b/CI/samples.ci/client/petstore/php/OpenAPIClient-php/tests/ResponseTypesTest.php
new file mode 100644
index 000000000000..499007fa03e0
--- /dev/null
+++ b/CI/samples.ci/client/petstore/php/OpenAPIClient-php/tests/ResponseTypesTest.php
@@ -0,0 +1,96 @@
+fakeHttpClient = new FakeHttpClient();
+ $this->api = new PetApi($this->fakeHttpClient);
+ }
+
+ public function testDefined200ReturnType()
+ {
+ $this->fakeHttpClient->setResponse(new Response(200, [], json_encode([])));
+ $result = $this->api->getPetById(123);
+
+ $this->assertInstanceOf(Pet::class, $result);
+ }
+
+ public function testDefault2xxReturnType()
+ {
+ $this->fakeHttpClient->setResponse(new Response(255, [], json_encode([])));
+ $result = $this->api->getPetById(123);
+
+ $this->assertInstanceOf(Pet::class, $result);
+ }
+
+ /**
+ * @expectedException \OpenAPI\Client\ApiException
+ * @expectedExceptionCode 400
+ */
+ public function testDefinedErrorException()
+ {
+ $statusCode = 400;
+
+ $this->fakeHttpClient->setResponse(new Response($statusCode, [], '{}'));
+ $this->api->getPetById(123);
+ }
+
+// missing case in spec:
+// responses:
+// '400':
+// description: failure
+// schema:
+// $ref: '#/definitions/Error'
+// public function testDefinedErrorResponseObject()
+// {
+// $result = null;
+// try {
+// $this->fakeHttpClient->setResponse(new Response(400, [], '{}'));
+// $this->api->getPetById(123);
+// } catch (ApiException $e) {
+// $result = $e->getResponseObject();
+// }
+//
+// $this->assertInstanceOf(Error::class, $result);
+// }
+
+ /**
+ * @expectedException \OpenAPI\Client\ApiException
+ * @expectedExceptionCode 404
+ */
+ public function testDefaultErrorException()
+ {
+ $statusCode = 404;
+
+ $this->fakeHttpClient->setResponse(new Response($statusCode, [], '{}'));
+ $this->api->getPetById(123);
+ }
+
+ public function testDefaultErrorResponseObject()
+ {
+ $result = null;
+ try {
+ $this->fakeHttpClient->setResponse(new Response(404, [], '{}'));
+ $this->api->getPetById(123);
+ } catch (ApiException $e) {
+ $result = $e->getResponseObject();
+ }
+
+ $this->assertNull($result);
+ }
+}
diff --git a/CI/samples.ci/client/petstore/php/OpenAPIClient-php/tests/StoreApiTest.php b/CI/samples.ci/client/petstore/php/OpenAPIClient-php/tests/StoreApiTest.php
new file mode 100644
index 000000000000..f18f3ce66cae
--- /dev/null
+++ b/CI/samples.ci/client/petstore/php/OpenAPIClient-php/tests/StoreApiTest.php
@@ -0,0 +1,57 @@
+api = new StoreApi();
+ }
+
+ /**
+ * Setup before running each test case
+ */
+ public static function setUpBeforeClass()
+ {
+ // add a new pet (id 10005) to ensure the pet object is available for all the tests
+ // new pet
+ $id = 10005;
+ $pet = new Pet();
+ $pet->setId($id);
+ $pet->setName('PHP Unit Test');
+ $pet->setStatus('available');
+ // new tag
+ $tag = new Tag();
+ $tag->setId($id); // use the same id as pet
+ $tag->setName('test php tag');
+ // new category
+ $category = new Category();
+ $category->setId($id); // use the same id as pet
+ $category->setName('test php category');
+
+ $pet->setTags([$tag]);
+ $pet->setCategory($category);
+
+ $api = new PetApi();
+ $api->addPet($pet);
+ }
+
+ public function testGetInventory()
+ {
+ $result = $this->api->getInventory();
+
+ $this->assertInternalType('array', $result);
+ $this->assertInternalType('int', $result['available']);
+ }
+}
diff --git a/CI/samples.ci/client/petstore/php/OpenAPIClient-php/tests/UserApiTest.php b/CI/samples.ci/client/petstore/php/OpenAPIClient-php/tests/UserApiTest.php
new file mode 100644
index 000000000000..41d4f2b3e6d0
--- /dev/null
+++ b/CI/samples.ci/client/petstore/php/OpenAPIClient-php/tests/UserApiTest.php
@@ -0,0 +1,33 @@
+api = new Api\UserApi();
+ }
+
+ // test login use
+ public function testLoginUser()
+ {
+ // initialize the API client
+ // login
+ $response = $this->api->loginUser('xxxxx', 'yyyyyyyy');
+
+ $this->assertInternalType('string', $response);
+ $this->assertRegExp(
+ '/^logged in user session/',
+ $response,
+ "response string starts with 'logged in user session'"
+ );
+ }
+}
diff --git a/CI/samples.ci/client/petstore/python-asyncio/Makefile b/CI/samples.ci/client/petstore/python-asyncio/Makefile
new file mode 100644
index 000000000000..8d0afd4974d6
--- /dev/null
+++ b/CI/samples.ci/client/petstore/python-asyncio/Makefile
@@ -0,0 +1,18 @@
+ #!/bin/bash
+
+REQUIREMENTS_FILE=dev-requirements.txt
+REQUIREMENTS_OUT=dev-requirements.txt.log
+SETUP_OUT=*.egg-info
+VENV=.venv
+
+clean:
+ rm -rf $(REQUIREMENTS_OUT)
+ rm -rf $(SETUP_OUT)
+ rm -rf $(VENV)
+ rm -rf .tox
+ rm -rf .coverage
+ find . -name "*.py[oc]" -delete
+ find . -name "__pycache__" -delete
+
+test-all: clean
+ bash ./test_python3.sh
diff --git a/CI/samples.ci/client/petstore/python-asyncio/dev-requirements.txt b/CI/samples.ci/client/petstore/python-asyncio/dev-requirements.txt
new file mode 100644
index 000000000000..49182426e202
--- /dev/null
+++ b/CI/samples.ci/client/petstore/python-asyncio/dev-requirements.txt
@@ -0,0 +1,4 @@
+tox
+coverage
+randomize
+flake8
diff --git a/CI/samples.ci/client/petstore/python-asyncio/pom.xml b/CI/samples.ci/client/petstore/python-asyncio/pom.xml
new file mode 100644
index 000000000000..6907f8a2a3e8
--- /dev/null
+++ b/CI/samples.ci/client/petstore/python-asyncio/pom.xml
@@ -0,0 +1,46 @@
+
+ 4.0.0
+ org.openapitools
+ PythonAsyncioClientTests
+ pom
+ 1.0-SNAPSHOT
+ Python Asyncio Petstore Client
+
+
+
+ maven-dependency-plugin
+
+
+ package
+
+ copy-dependencies
+
+
+ ${project.build.directory}
+
+
+
+
+
+ org.codehaus.mojo
+ exec-maven-plugin
+ 1.2.1
+
+
+ pytest-test
+ integration-test
+
+ exec
+
+
+ make
+
+ test-all
+
+
+
+
+
+
+
+
diff --git a/CI/samples.ci/client/petstore/python-asyncio/test_python3.sh b/CI/samples.ci/client/petstore/python-asyncio/test_python3.sh
new file mode 100755
index 000000000000..9160e25714ad
--- /dev/null
+++ b/CI/samples.ci/client/petstore/python-asyncio/test_python3.sh
@@ -0,0 +1,32 @@
+#!/bin/bash
+
+REQUIREMENTS_FILE=dev-requirements.txt
+REQUIREMENTS_OUT=dev-requirements.txt.log
+SETUP_OUT=*.egg-info
+VENV=.venv
+DEACTIVE=false
+
+export LC_ALL=en_US.UTF-8
+export LANG=en_US.UTF-8
+
+### set virtualenv
+if [ -z "$VIRTUAL_ENV" ]; then
+ virtualenv $VENV --no-site-packages --always-copy --python python3.6
+ source $VENV/bin/activate
+ DEACTIVE=true
+fi
+
+### install dependencies
+pip install -r $REQUIREMENTS_FILE | tee -a $REQUIREMENTS_OUT
+python setup.py develop
+
+### run tests
+tox || exit 1
+
+### static analysis of code
+flake8 --show-source petstore_api/
+
+### deactivate virtualenv
+#if [ $DEACTIVE == true ]; then
+# deactivate
+#fi
diff --git a/CI/samples.ci/client/petstore/python-asyncio/testfiles/foo.png b/CI/samples.ci/client/petstore/python-asyncio/testfiles/foo.png
new file mode 100644
index 000000000000..a9b12cf5927a
Binary files /dev/null and b/CI/samples.ci/client/petstore/python-asyncio/testfiles/foo.png differ
diff --git a/samples/openapi3/server/petstore/python-flask-python2/openapi_server/__init__.py b/CI/samples.ci/client/petstore/python-asyncio/tests/__init__.py
similarity index 100%
rename from samples/openapi3/server/petstore/python-flask-python2/openapi_server/__init__.py
rename to CI/samples.ci/client/petstore/python-asyncio/tests/__init__.py
diff --git a/CI/samples.ci/client/petstore/python-asyncio/tests/test_pet_api.py b/CI/samples.ci/client/petstore/python-asyncio/tests/test_pet_api.py
new file mode 100644
index 000000000000..32a336a4ac7d
--- /dev/null
+++ b/CI/samples.ci/client/petstore/python-asyncio/tests/test_pet_api.py
@@ -0,0 +1,208 @@
+# coding: utf-8
+
+# flake8: noqa
+
+"""
+Run the tests.
+$ docker pull swaggerapi/petstore
+$ docker run -d -e SWAGGER_HOST=http://petstore.swagger.io -e SWAGGER_BASE_PATH=/v2 -p 80:8080 swaggerapi/petstore
+$ pytest -vv
+"""
+
+import os
+import unittest
+import asyncio
+import pytest
+
+import petstore_api
+from petstore_api import Configuration
+from petstore_api.rest import ApiException
+
+from .util import id_gen
+
+import json
+
+import urllib3
+
+HOST = 'http://localhost:80/v2'
+
+
+def async_test(f):
+ def wrapper(*args, **kwargs):
+ coro = asyncio.coroutine(f)
+ future = coro(*args, **kwargs)
+ loop = asyncio.get_event_loop()
+ loop.run_until_complete(future)
+ return wrapper
+
+
+class TestPetApiTests(unittest.TestCase):
+
+ def setUp(self):
+ config = Configuration()
+ config.host = HOST
+
+ self.api_client = petstore_api.ApiClient(config)
+ self.pet_api = petstore_api.PetApi(self.api_client)
+ self.setUpModels()
+ self.setUpFiles()
+
+ def setUpModels(self):
+ self.category = petstore_api.Category()
+ self.category.id = id_gen()
+ self.category.name = "dog"
+ self.tag = petstore_api.Tag()
+ self.tag.id = id_gen()
+ self.tag.name = "openapi-generator-python-pet-tag"
+ self.pet = petstore_api.Pet(name="hello kity", photo_urls=["http://foo.bar.com/1", "http://foo.bar.com/2"])
+ self.pet.id = id_gen()
+ self.pet.status = "sold"
+ self.pet.category = self.category
+ self.pet.tags = [self.tag]
+
+ def setUpFiles(self):
+ self.test_file_dir = os.path.join(os.path.dirname(__file__), "..", "testfiles")
+ self.test_file_dir = os.path.realpath(self.test_file_dir)
+ self.foo = os.path.join(self.test_file_dir, "foo.png")
+
+ def test_separate_default_client_instances(self):
+ pet_api = petstore_api.PetApi()
+ pet_api2 = petstore_api.PetApi()
+ self.assertNotEqual(pet_api.api_client, pet_api2.api_client)
+
+ pet_api.api_client.user_agent = 'api client 3'
+ pet_api2.api_client.user_agent = 'api client 4'
+
+ self.assertNotEqual(pet_api.api_client.user_agent, pet_api2.api_client.user_agent)
+
+ def test_separate_default_config_instances(self):
+ pet_api = petstore_api.PetApi()
+ pet_api2 = petstore_api.PetApi()
+ self.assertNotEqual(pet_api.api_client.configuration, pet_api2.api_client.configuration)
+
+ pet_api.api_client.configuration.host = 'somehost'
+ pet_api2.api_client.configuration.host = 'someotherhost'
+ self.assertNotEqual(pet_api.api_client.configuration.host, pet_api2.api_client.configuration.host)
+
+ @async_test
+ async def test_async_with_result(self):
+ await self.pet_api.add_pet(self.pet)
+
+ calls = [self.pet_api.get_pet_by_id(self.pet.id),
+ self.pet_api.get_pet_by_id(self.pet.id)]
+
+ responses, _ = await asyncio.wait(calls)
+ for response in responses:
+ self.assertEqual(response.result().id, self.pet.id)
+ self.assertEqual(len(responses), 2)
+
+ @async_test
+ async def test_exception(self):
+ await self.pet_api.add_pet(self.pet)
+
+ try:
+ await self.pet_api.get_pet_by_id("-9999999999999")
+ except ApiException as e:
+ exception = e
+
+ self.assertIsInstance(exception, ApiException)
+ self.assertEqual(exception.status, 404)
+
+ @async_test
+ async def test_add_pet_and_get_pet_by_id(self):
+ await self.pet_api.add_pet(self.pet)
+
+ fetched = await self.pet_api.get_pet_by_id(pet_id=self.pet.id)
+ self.assertIsNotNone(fetched)
+ self.assertEqual(self.pet.id, fetched.id)
+ self.assertIsNotNone(fetched.category)
+ self.assertEqual(self.pet.category.name, fetched.category.name)
+
+ @async_test
+ async def test_add_pet_and_get_pet_by_id_with_http_info(self):
+ await self.pet_api.add_pet(self.pet)
+
+ fetched = await self.pet_api.get_pet_by_id_with_http_info(pet_id=self.pet.id)
+ self.assertIsNotNone(fetched)
+ self.assertEqual(self.pet.id, fetched[0].id)
+ self.assertIsNotNone(fetched[0].category)
+ self.assertEqual(self.pet.category.name, fetched[0].category.name)
+
+ @async_test
+ async def test_update_pet(self):
+ self.pet.name = "hello kity with updated"
+ await self.pet_api.update_pet(self.pet)
+
+ fetched = await self.pet_api.get_pet_by_id(pet_id=self.pet.id)
+ self.assertIsNotNone(fetched)
+ self.assertEqual(self.pet.id, fetched.id)
+ self.assertEqual(self.pet.name, fetched.name)
+ self.assertIsNotNone(fetched.category)
+ self.assertEqual(fetched.category.name, self.pet.category.name)
+
+ @async_test
+ async def test_find_pets_by_status(self):
+ await self.pet_api.add_pet(self.pet)
+ pets = await self.pet_api.find_pets_by_status(status=[self.pet.status])
+ self.assertIn(
+ self.pet.id,
+ list(map(lambda x: getattr(x, 'id'), pets))
+ )
+
+ @async_test
+ async def test_find_pets_by_tags(self):
+ await self.pet_api.add_pet(self.pet)
+ pets = await self.pet_api.find_pets_by_tags(tags=[self.tag.name])
+ self.assertIn(
+ self.pet.id,
+ list(map(lambda x: getattr(x, 'id'), pets))
+ )
+
+ @async_test
+ async def test_update_pet_with_form(self):
+ await self.pet_api.add_pet(self.pet)
+
+ name = "hello kity with form updated"
+ status = "pending"
+ await self.pet_api.update_pet_with_form(pet_id=self.pet.id, name=name, status=status)
+
+ fetched = await self.pet_api.get_pet_by_id(pet_id=self.pet.id)
+ self.assertEqual(self.pet.id, fetched.id)
+ self.assertEqual(name, fetched.name)
+ self.assertEqual(status, fetched.status)
+
+ @async_test
+ async def test_upload_file(self):
+ # upload file with form parameter
+ try:
+ additional_metadata = "special"
+ await self.pet_api.upload_file(
+ pet_id=self.pet.id,
+ additional_metadata=additional_metadata,
+ file=self.foo
+ )
+ except ApiException as e:
+ self.fail("upload_file() raised {0} unexpectedly".format(type(e)))
+
+ # upload only file
+ try:
+ await self.pet_api.upload_file(pet_id=self.pet.id, file=self.foo)
+ except ApiException as e:
+ self.fail("upload_file() raised {0} unexpectedly".format(type(e)))
+
+ @async_test
+ async def test_delete_pet(self):
+ await self.pet_api.add_pet(self.pet)
+ await self.pet_api.delete_pet(pet_id=self.pet.id, api_key="special-key")
+
+ try:
+ await self.pet_api.get_pet_by_id(pet_id=self.pet.id)
+ raise Exception("expected an error")
+ except ApiException as e:
+ self.assertEqual(404, e.status)
+
+
+if __name__ == '__main__':
+ import logging
+ logging.basicConfig(level=logging.DEBUG)
+ unittest.main()
diff --git a/CI/samples.ci/client/petstore/python-asyncio/tests/util.py b/CI/samples.ci/client/petstore/python-asyncio/tests/util.py
new file mode 100644
index 000000000000..39fba1514b33
--- /dev/null
+++ b/CI/samples.ci/client/petstore/python-asyncio/tests/util.py
@@ -0,0 +1,11 @@
+# flake8: noqa
+
+import random
+
+
+def id_gen(bits=32):
+ """ Returns a n-bit randomly generated int """
+ return int(random.getrandbits(bits))
+
+
+
diff --git a/CI/samples.ci/client/petstore/python-experimental/Makefile b/CI/samples.ci/client/petstore/python-experimental/Makefile
new file mode 100644
index 000000000000..a7ff5e1e2441
--- /dev/null
+++ b/CI/samples.ci/client/petstore/python-experimental/Makefile
@@ -0,0 +1,21 @@
+ #!/bin/bash
+
+REQUIREMENTS_FILE=dev-requirements.txt
+REQUIREMENTS_OUT=dev-requirements.txt.log
+SETUP_OUT=*.egg-info
+VENV=venv
+
+clean:
+ rm -rf $(REQUIREMENTS_OUT)
+ rm -rf $(SETUP_OUT)
+ rm -rf $(VENV)
+ rm -rf .tox
+ rm -rf .coverage
+ find . -name "*.py[oc]" -delete
+ find . -name "__pycache__" -delete
+
+test: clean
+ bash ./test_python2.sh
+
+test-all: clean
+ bash ./test_python2_and_3.sh
diff --git a/CI/samples.ci/client/petstore/python-experimental/dev-requirements.txt b/CI/samples.ci/client/petstore/python-experimental/dev-requirements.txt
new file mode 100644
index 000000000000..f50c13b5c503
--- /dev/null
+++ b/CI/samples.ci/client/petstore/python-experimental/dev-requirements.txt
@@ -0,0 +1,5 @@
+nose
+tox
+coverage
+randomize
+flake8
diff --git a/CI/samples.ci/client/petstore/python-experimental/pom.xml b/CI/samples.ci/client/petstore/python-experimental/pom.xml
new file mode 100644
index 000000000000..3c9463331861
--- /dev/null
+++ b/CI/samples.ci/client/petstore/python-experimental/pom.xml
@@ -0,0 +1,46 @@
+
+ 4.0.0
+ org.openapitools
+ PythonExperimentalPetstoreClientTests
+ pom
+ 1.0-SNAPSHOT
+ Python Experimental OpenAPI Petstore Client
+
+
+
+ maven-dependency-plugin
+
+
+ package
+
+ copy-dependencies
+
+
+ ${project.build.directory}
+
+
+
+
+
+ org.codehaus.mojo
+ exec-maven-plugin
+ 1.2.1
+
+
+ nose-test
+ integration-test
+
+ exec
+
+
+ make
+
+ test-all
+
+
+
+
+
+
+
+
diff --git a/CI/samples.ci/client/petstore/python-experimental/setup.cfg b/CI/samples.ci/client/petstore/python-experimental/setup.cfg
new file mode 100644
index 000000000000..26b7a359d580
--- /dev/null
+++ b/CI/samples.ci/client/petstore/python-experimental/setup.cfg
@@ -0,0 +1,11 @@
+[nosetests]
+logging-clear-handlers=true
+verbosity=2
+randomize=true
+exe=true
+with-coverage=true
+cover-package=petstore_api
+cover-erase=true
+
+[flake8]
+max-line-length=99
diff --git a/CI/samples.ci/client/petstore/python-experimental/test_python2.sh b/CI/samples.ci/client/petstore/python-experimental/test_python2.sh
new file mode 100644
index 000000000000..b68d0bd20a73
--- /dev/null
+++ b/CI/samples.ci/client/petstore/python-experimental/test_python2.sh
@@ -0,0 +1,33 @@
+#!/bin/bash
+
+REQUIREMENTS_FILE=dev-requirements.txt
+REQUIREMENTS_OUT=dev-requirements.txt.log
+SETUP_OUT=*.egg-info
+VENV=venv
+DEACTIVE=false
+
+export LC_ALL=en_US.UTF-8
+export LANG=en_US.UTF-8
+
+### set virtualenv
+if [ -z "$VIRTUAL_ENV" ]; then
+ virtualenv $VENV --no-site-packages --always-copy
+ source $VENV/bin/activate
+ DEACTIVE=true
+fi
+
+### install dependencies
+pip install -r $REQUIREMENTS_FILE | tee -a $REQUIREMENTS_OUT
+python setup.py develop
+
+### run tests
+nosetests || exit 1
+
+### static analysis of code
+flake8 --show-source petstore_api/
+
+### deactivate virtualenv
+#if [ $DEACTIVE == true ]; then
+# deactivate
+#fi
+
diff --git a/CI/samples.ci/client/petstore/python-experimental/test_python2_and_3.sh b/CI/samples.ci/client/petstore/python-experimental/test_python2_and_3.sh
new file mode 100644
index 000000000000..8511d46cd795
--- /dev/null
+++ b/CI/samples.ci/client/petstore/python-experimental/test_python2_and_3.sh
@@ -0,0 +1,32 @@
+#!/bin/bash
+
+REQUIREMENTS_FILE=dev-requirements.txt
+REQUIREMENTS_OUT=dev-requirements.txt.log
+SETUP_OUT=*.egg-info
+VENV=venv
+DEACTIVE=false
+
+export LC_ALL=en_US.UTF-8
+export LANG=en_US.UTF-8
+
+### set virtualenv
+if [ -z "$VIRTUAL_ENV" ]; then
+ virtualenv $VENV --no-site-packages --always-copy
+ source $VENV/bin/activate
+ DEACTIVE=true
+fi
+
+### install dependencies
+pip install -r $REQUIREMENTS_FILE | tee -a $REQUIREMENTS_OUT
+python setup.py develop
+
+### run tests
+tox || exit 1
+
+### static analysis of code
+flake8 --show-source petstore_api/
+
+### deactivate virtualenv
+#if [ $DEACTIVE == true ]; then
+# deactivate
+#fi
diff --git a/CI/samples.ci/client/petstore/python-experimental/testfiles/foo.png b/CI/samples.ci/client/petstore/python-experimental/testfiles/foo.png
new file mode 100644
index 000000000000..a9b12cf5927a
Binary files /dev/null and b/CI/samples.ci/client/petstore/python-experimental/testfiles/foo.png differ
diff --git a/samples/openapi3/server/petstore/python-flask-python2/openapi_server/controllers/__init__.py b/CI/samples.ci/client/petstore/python-experimental/tests/__init__.py
similarity index 100%
rename from samples/openapi3/server/petstore/python-flask-python2/openapi_server/controllers/__init__.py
rename to CI/samples.ci/client/petstore/python-experimental/tests/__init__.py
diff --git a/CI/samples.ci/client/petstore/python-experimental/tests/test_api_client.py b/CI/samples.ci/client/petstore/python-experimental/tests/test_api_client.py
new file mode 100644
index 000000000000..a41dbaba9c9f
--- /dev/null
+++ b/CI/samples.ci/client/petstore/python-experimental/tests/test_api_client.py
@@ -0,0 +1,172 @@
+# coding: utf-8
+
+# flake8: noqa
+
+"""
+Run the tests.
+$ pip install nose (optional)
+$ cd OpenAPIetstore-python
+$ nosetests -v
+"""
+
+import os
+import time
+import unittest
+from dateutil.parser import parse
+
+import petstore_api
+import petstore_api.configuration
+
+HOST = 'http://petstore.swagger.io/v2'
+
+
+class ApiClientTests(unittest.TestCase):
+
+ def setUp(self):
+ self.api_client = petstore_api.ApiClient()
+
+ def test_configuration(self):
+ config = petstore_api.Configuration()
+ config.host = 'http://localhost/'
+
+ config.api_key['api_key'] = '123456'
+ config.api_key_prefix['api_key'] = 'PREFIX'
+ config.username = 'test_username'
+ config.password = 'test_password'
+
+ header_params = {'test1': 'value1'}
+ query_params = {'test2': 'value2'}
+ auth_settings = ['api_key', 'unknown']
+
+ client = petstore_api.ApiClient(config)
+
+ # test prefix
+ self.assertEqual('PREFIX', client.configuration.api_key_prefix['api_key'])
+
+ # update parameters based on auth setting
+ client.update_params_for_auth(header_params, query_params, auth_settings)
+
+ # test api key auth
+ self.assertEqual(header_params['test1'], 'value1')
+ self.assertEqual(header_params['api_key'], 'PREFIX 123456')
+ self.assertEqual(query_params['test2'], 'value2')
+
+ # test basic auth
+ self.assertEqual('test_username', client.configuration.username)
+ self.assertEqual('test_password', client.configuration.password)
+
+ def test_select_header_accept(self):
+ accepts = ['APPLICATION/JSON', 'APPLICATION/XML']
+ accept = self.api_client.select_header_accept(accepts)
+ self.assertEqual(accept, 'application/json')
+
+ accepts = ['application/json', 'application/xml']
+ accept = self.api_client.select_header_accept(accepts)
+ self.assertEqual(accept, 'application/json')
+
+ accepts = ['application/xml', 'application/json']
+ accept = self.api_client.select_header_accept(accepts)
+ self.assertEqual(accept, 'application/json')
+
+ accepts = ['text/plain', 'application/xml']
+ accept = self.api_client.select_header_accept(accepts)
+ self.assertEqual(accept, 'text/plain, application/xml')
+
+ accepts = []
+ accept = self.api_client.select_header_accept(accepts)
+ self.assertEqual(accept, None)
+
+ def test_select_header_content_type(self):
+ content_types = ['APPLICATION/JSON', 'APPLICATION/XML']
+ content_type = self.api_client.select_header_content_type(content_types)
+ self.assertEqual(content_type, 'application/json')
+
+ content_types = ['application/json', 'application/xml']
+ content_type = self.api_client.select_header_content_type(content_types)
+ self.assertEqual(content_type, 'application/json')
+
+ content_types = ['application/xml', 'application/json']
+ content_type = self.api_client.select_header_content_type(content_types)
+ self.assertEqual(content_type, 'application/json')
+
+ content_types = ['text/plain', 'application/xml']
+ content_type = self.api_client.select_header_content_type(content_types)
+ self.assertEqual(content_type, 'text/plain')
+
+ content_types = []
+ content_type = self.api_client.select_header_content_type(content_types)
+ self.assertEqual(content_type, 'application/json')
+
+ def test_sanitize_for_serialization(self):
+ # None
+ data = None
+ result = self.api_client.sanitize_for_serialization(None)
+ self.assertEqual(result, data)
+
+ # str
+ data = "test string"
+ result = self.api_client.sanitize_for_serialization(data)
+ self.assertEqual(result, data)
+
+ # int
+ data = 1
+ result = self.api_client.sanitize_for_serialization(data)
+ self.assertEqual(result, data)
+
+ # bool
+ data = True
+ result = self.api_client.sanitize_for_serialization(data)
+ self.assertEqual(result, data)
+
+ # date
+ data = parse("1997-07-16").date() # date
+ result = self.api_client.sanitize_for_serialization(data)
+ self.assertEqual(result, "1997-07-16")
+
+ # datetime
+ data = parse("1997-07-16T19:20:30.45+01:00") # datetime
+ result = self.api_client.sanitize_for_serialization(data)
+ self.assertEqual(result, "1997-07-16T19:20:30.450000+01:00")
+
+ # list
+ data = [1]
+ result = self.api_client.sanitize_for_serialization(data)
+ self.assertEqual(result, data)
+
+ # dict
+ data = {"test key": "test value"}
+ result = self.api_client.sanitize_for_serialization(data)
+ self.assertEqual(result, data)
+
+ # model
+ pet_dict = {"id": 1, "name": "monkey",
+ "category": {"id": 1, "name": "test category"},
+ "tags": [{"id": 1, "name": "test tag1"},
+ {"id": 2, "name": "test tag2"}],
+ "status": "available",
+ "photoUrls": ["http://foo.bar.com/3",
+ "http://foo.bar.com/4"]}
+ pet = petstore_api.Pet(name=pet_dict["name"], photo_urls=pet_dict["photoUrls"])
+ pet.id = pet_dict["id"]
+ cate = petstore_api.Category()
+ cate.id = pet_dict["category"]["id"]
+ cate.name = pet_dict["category"]["name"]
+ pet.category = cate
+ tag1 = petstore_api.Tag()
+ tag1.id = pet_dict["tags"][0]["id"]
+ tag1.name = pet_dict["tags"][0]["name"]
+ tag2 = petstore_api.Tag()
+ tag2.id = pet_dict["tags"][1]["id"]
+ tag2.name = pet_dict["tags"][1]["name"]
+ pet.tags = [tag1, tag2]
+ pet.status = pet_dict["status"]
+
+ data = pet
+ result = self.api_client.sanitize_for_serialization(data)
+ self.assertEqual(result, pet_dict)
+
+ # list of models
+ list_of_pet_dict = [pet_dict]
+ data = [pet]
+ result = self.api_client.sanitize_for_serialization(data)
+ self.assertEqual(result, list_of_pet_dict)
diff --git a/CI/samples.ci/client/petstore/python-experimental/tests/test_api_exception.py b/CI/samples.ci/client/petstore/python-experimental/tests/test_api_exception.py
new file mode 100644
index 000000000000..a05c3e902c58
--- /dev/null
+++ b/CI/samples.ci/client/petstore/python-experimental/tests/test_api_exception.py
@@ -0,0 +1,84 @@
+# coding: utf-8
+
+# flake8: noqa
+
+"""
+Run the tests.
+$ pip install nose (optional)
+$ cd petstore_api-python
+$ nosetests -v
+"""
+
+import os
+import sys
+import unittest
+
+import petstore_api
+from petstore_api.rest import ApiException
+
+from .util import id_gen
+
+class ApiExceptionTests(unittest.TestCase):
+
+ def setUp(self):
+ self.api_client = petstore_api.ApiClient()
+ self.pet_api = petstore_api.PetApi(self.api_client)
+ self.setUpModels()
+
+ def setUpModels(self):
+ self.category = petstore_api.Category()
+ self.category.id = id_gen()
+ self.category.name = "dog"
+ self.tag = petstore_api.Tag()
+ self.tag.id = id_gen()
+ self.tag.name = "blank"
+ self.pet = petstore_api.Pet(name="hello kity", photo_urls=["http://foo.bar.com/1", "http://foo.bar.com/2"])
+ self.pet.id = id_gen()
+ self.pet.status = "sold"
+ self.pet.category = self.category
+ self.pet.tags = [self.tag]
+
+ def test_404_error(self):
+ self.pet_api.add_pet(self.pet)
+ self.pet_api.delete_pet(pet_id=self.pet.id)
+
+ with self.checkRaiseRegex(ApiException, "Pet not found"):
+ self.pet_api.get_pet_by_id(pet_id=self.pet.id)
+
+ try:
+ self.pet_api.get_pet_by_id(pet_id=self.pet.id)
+ except ApiException as e:
+ self.assertEqual(e.status, 404)
+ self.assertEqual(e.reason, "Not Found")
+ self.checkRegex(e.body, "Pet not found")
+
+ def test_500_error(self):
+ self.pet_api.add_pet(self.pet)
+
+ with self.checkRaiseRegex(ApiException, "Internal Server Error"):
+ self.pet_api.upload_file(
+ pet_id=self.pet.id,
+ additional_metadata="special"
+ )
+
+ try:
+ self.pet_api.upload_file(
+ pet_id=self.pet.id,
+ additional_metadata="special"
+ )
+ except ApiException as e:
+ self.assertEqual(e.status, 500)
+ self.assertEqual(e.reason, "Internal Server Error")
+ self.checkRegex(e.body, "Error 500 Internal Server Error")
+
+ def checkRaiseRegex(self, expected_exception, expected_regex):
+ if sys.version_info < (3, 0):
+ return self.assertRaisesRegexp(expected_exception, expected_regex)
+
+ return self.assertRaisesRegex(expected_exception, expected_regex)
+
+ def checkRegex(self, text, expected_regex):
+ if sys.version_info < (3, 0):
+ return self.assertRegexpMatches(text, expected_regex)
+
+ return self.assertRegex(text, expected_regex)
diff --git a/CI/samples.ci/client/petstore/python-experimental/tests/test_deserialization.py b/CI/samples.ci/client/petstore/python-experimental/tests/test_deserialization.py
new file mode 100644
index 000000000000..10c5ecef4239
--- /dev/null
+++ b/CI/samples.ci/client/petstore/python-experimental/tests/test_deserialization.py
@@ -0,0 +1,288 @@
+# coding: utf-8
+
+# flake8: noqa
+
+"""
+Run the tests.
+$ pip install nose (optional)
+$ cd OpenAPIPetstore-python
+$ nosetests -v
+"""
+from collections import namedtuple
+import json
+import os
+import time
+import unittest
+import datetime
+
+import petstore_api
+
+
+MockResponse = namedtuple('MockResponse', 'data')
+
+
+class DeserializationTests(unittest.TestCase):
+
+ def setUp(self):
+ self.api_client = petstore_api.ApiClient()
+ self.deserialize = self.api_client.deserialize
+
+ def test_enum_test(self):
+ """ deserialize dict(str, Enum_Test) """
+ data = {
+ 'enum_test': {
+ "enum_string": "UPPER",
+ "enum_string_required": "lower",
+ "enum_integer": 1,
+ "enum_number": 1.1,
+ "outerEnum": "placed"
+ }
+ }
+ response = MockResponse(data=json.dumps(data))
+
+ deserialized = self.deserialize(response, 'dict(str, EnumTest)')
+ self.assertTrue(isinstance(deserialized, dict))
+ self.assertTrue(
+ isinstance(deserialized['enum_test'], petstore_api.EnumTest))
+ outer_enum_value = (
+ petstore_api.OuterEnum.allowed_values[('value',)]["PLACED"])
+ outer_enum = petstore_api.OuterEnum(outer_enum_value)
+ sample_instance = petstore_api.EnumTest(
+ enum_string="UPPER",
+ enum_string_required="lower",
+ enum_integer=1,
+ enum_number=1.1,
+ outer_enum=outer_enum
+ )
+ self.assertEqual(deserialized['enum_test'], sample_instance)
+
+ def test_deserialize_dict_str_pet(self):
+ """ deserialize dict(str, Pet) """
+ data = {
+ 'pet': {
+ "id": 0,
+ "category": {
+ "id": 0,
+ "name": "string"
+ },
+ "name": "doggie",
+ "photoUrls": [
+ "string"
+ ],
+ "tags": [
+ {
+ "id": 0,
+ "name": "string"
+ }
+ ],
+ "status": "available"
+ }
+ }
+ response = MockResponse(data=json.dumps(data))
+
+ deserialized = self.deserialize(response, 'dict(str, Pet)')
+ self.assertTrue(isinstance(deserialized, dict))
+ self.assertTrue(isinstance(deserialized['pet'], petstore_api.Pet))
+
+ def test_deserialize_dict_str_dog(self):
+ """ deserialize dict(str, Dog), use discriminator"""
+ data = {
+ 'dog': {
+ "id": 0,
+ "className": "Dog",
+ "color": "white",
+ "bread": "Jack Russel Terrier"
+ }
+ }
+ response = MockResponse(data=json.dumps(data))
+
+ deserialized = self.deserialize(response, 'dict(str, Animal)')
+ self.assertTrue(isinstance(deserialized, dict))
+ self.assertTrue(isinstance(deserialized['dog'], petstore_api.Dog))
+
+ def test_deserialize_dict_str_int(self):
+ """ deserialize dict(str, int) """
+ data = {
+ 'integer': 1
+ }
+ response = MockResponse(data=json.dumps(data))
+
+ deserialized = self.deserialize(response, 'dict(str, int)')
+ self.assertTrue(isinstance(deserialized, dict))
+ self.assertTrue(isinstance(deserialized['integer'], int))
+
+ def test_deserialize_str(self):
+ """ deserialize str """
+ data = "test str"
+ response = MockResponse(data=json.dumps(data))
+
+ deserialized = self.deserialize(response, "str")
+ self.assertTrue(isinstance(deserialized, str))
+
+ def test_deserialize_date(self):
+ """ deserialize date """
+ data = "1997-07-16"
+ response = MockResponse(data=json.dumps(data))
+
+ deserialized = self.deserialize(response, "date")
+ self.assertTrue(isinstance(deserialized, datetime.date))
+
+ def test_deserialize_datetime(self):
+ """ deserialize datetime """
+ data = "1997-07-16T19:20:30.45+01:00"
+ response = MockResponse(data=json.dumps(data))
+
+ deserialized = self.deserialize(response, "datetime")
+ self.assertTrue(isinstance(deserialized, datetime.datetime))
+
+ def test_deserialize_pet(self):
+ """ deserialize pet """
+ data = {
+ "id": 0,
+ "category": {
+ "id": 0,
+ "name": "string"
+ },
+ "name": "doggie",
+ "photoUrls": [
+ "string"
+ ],
+ "tags": [
+ {
+ "id": 0,
+ "name": "string"
+ }
+ ],
+ "status": "available"
+ }
+ response = MockResponse(data=json.dumps(data))
+
+ deserialized = self.deserialize(response, "Pet")
+ self.assertTrue(isinstance(deserialized, petstore_api.Pet))
+ self.assertEqual(deserialized.id, 0)
+ self.assertEqual(deserialized.name, "doggie")
+ self.assertTrue(isinstance(deserialized.category, petstore_api.Category))
+ self.assertEqual(deserialized.category.name, "string")
+ self.assertTrue(isinstance(deserialized.tags, list))
+ self.assertEqual(deserialized.tags[0].name, "string")
+
+ def test_deserialize_list_of_pet(self):
+ """ deserialize list[Pet] """
+ data = [
+ {
+ "id": 0,
+ "category": {
+ "id": 0,
+ "name": "string"
+ },
+ "name": "doggie0",
+ "photoUrls": [
+ "string"
+ ],
+ "tags": [
+ {
+ "id": 0,
+ "name": "string"
+ }
+ ],
+ "status": "available"
+ },
+ {
+ "id": 1,
+ "category": {
+ "id": 0,
+ "name": "string"
+ },
+ "name": "doggie1",
+ "photoUrls": [
+ "string"
+ ],
+ "tags": [
+ {
+ "id": 0,
+ "name": "string"
+ }
+ ],
+ "status": "available"
+ }]
+ response = MockResponse(data=json.dumps(data))
+
+ deserialized = self.deserialize(response, "list[Pet]")
+ self.assertTrue(isinstance(deserialized, list))
+ self.assertTrue(isinstance(deserialized[0], petstore_api.Pet))
+ self.assertEqual(deserialized[0].id, 0)
+ self.assertEqual(deserialized[1].id, 1)
+ self.assertEqual(deserialized[0].name, "doggie0")
+ self.assertEqual(deserialized[1].name, "doggie1")
+
+ def test_deserialize_nested_dict(self):
+ """ deserialize dict(str, dict(str, int)) """
+ data = {
+ "foo": {
+ "bar": 1
+ }
+ }
+ response = MockResponse(data=json.dumps(data))
+
+ deserialized = self.deserialize(response, "dict(str, dict(str, int))")
+ self.assertTrue(isinstance(deserialized, dict))
+ self.assertTrue(isinstance(deserialized["foo"], dict))
+ self.assertTrue(isinstance(deserialized["foo"]["bar"], int))
+
+ def test_deserialize_nested_list(self):
+ """ deserialize list[list[str]] """
+ data = [["foo"]]
+ response = MockResponse(data=json.dumps(data))
+
+ deserialized = self.deserialize(response, "list[list[str]]")
+ self.assertTrue(isinstance(deserialized, list))
+ self.assertTrue(isinstance(deserialized[0], list))
+ self.assertTrue(isinstance(deserialized[0][0], str))
+
+ def test_deserialize_none(self):
+ """ deserialize None """
+ response = MockResponse(data=json.dumps(None))
+
+ deserialized = self.deserialize(response, "datetime")
+ self.assertIsNone(deserialized)
+
+ def test_deserialize_OuterEnum(self):
+ """ deserialize OuterEnum """
+ # make sure that an exception is thrown on an invalid value
+ with self.assertRaises(petstore_api.ApiValueError):
+ self.deserialize(
+ MockResponse(data=json.dumps("test str")),
+ "OuterEnum"
+ )
+
+ # valid value works
+ placed_str = (
+ petstore_api.OuterEnum.allowed_values[('value',)]["PLACED"]
+ )
+ response = MockResponse(data=json.dumps(placed_str))
+ outer_enum = self.deserialize(response, "OuterEnum")
+ self.assertTrue(isinstance(outer_enum, petstore_api.OuterEnum))
+ self.assertTrue(outer_enum.value == placed_str)
+
+ def test_deserialize_OuterNumber(self):
+ """ deserialize OuterNumber """
+ # make sure that an exception is thrown on an invalid type value
+ with self.assertRaises(petstore_api.ApiValueError):
+ deserialized = self.deserialize(
+ MockResponse(data=json.dumps("test str")),
+ "OuterNumber"
+ )
+
+ # make sure that an exception is thrown on an invalid value
+ with self.assertRaises(petstore_api.ApiValueError):
+ deserialized = self.deserialize(
+ MockResponse(data=json.dumps(21)),
+ "OuterNumber"
+ )
+
+ # valid value works
+ number_val = 11
+ response = MockResponse(data=json.dumps(number_val))
+ outer_number = self.deserialize(response, "OuterNumber")
+ self.assertTrue(isinstance(outer_number, petstore_api.OuterNumber))
+ self.assertTrue(outer_number.value == number_val)
\ No newline at end of file
diff --git a/CI/samples.ci/client/petstore/python-experimental/tests/test_enum_arrays.py b/CI/samples.ci/client/petstore/python-experimental/tests/test_enum_arrays.py
new file mode 100644
index 000000000000..2f7e347f9c35
--- /dev/null
+++ b/CI/samples.ci/client/petstore/python-experimental/tests/test_enum_arrays.py
@@ -0,0 +1,165 @@
+# coding: utf-8
+
+# flake8: noqa
+
+"""
+Run the tests.
+$ pip install nose (optional)
+$ cd petstore_api-python
+$ nosetests -v
+"""
+
+import os
+import time
+import unittest
+
+import petstore_api
+
+
+class EnumArraysTests(unittest.TestCase):
+
+ def test_enumarrays_init(self):
+ #
+ # Check various combinations of valid values.
+ #
+ fish_or_crab = petstore_api.EnumArrays(just_symbol=">=")
+ self.assertEqual(fish_or_crab.just_symbol, ">=")
+ self.assertEqual(fish_or_crab.array_enum, None)
+
+ fish_or_crab = petstore_api.EnumArrays(just_symbol="$", array_enum=["fish"])
+ self.assertEqual(fish_or_crab.just_symbol, "$")
+ self.assertEqual(fish_or_crab.array_enum, ["fish"])
+
+ fish_or_crab = petstore_api.EnumArrays(just_symbol=">=", array_enum=["fish"])
+ self.assertEqual(fish_or_crab.just_symbol, ">=")
+ self.assertEqual(fish_or_crab.array_enum, ["fish"])
+
+ fish_or_crab = petstore_api.EnumArrays("$", ["crab"])
+ self.assertEqual(fish_or_crab.just_symbol, "$")
+ self.assertEqual(fish_or_crab.array_enum, ["crab"])
+
+
+ #
+ # Check if setting invalid values fails
+ #
+ try:
+ fish_or_crab = petstore_api.EnumArrays(just_symbol="<=")
+ self.assertTrue(0)
+ except ValueError:
+ self.assertTrue(1)
+
+ try:
+ fish_or_crab = petstore_api.EnumArrays(just_symbol="$", array_enum=["dog"])
+ self.assertTrue(0)
+ except ValueError:
+ self.assertTrue(1)
+
+ try:
+ fish_or_crab = petstore_api.EnumArrays(just_symbol=["$"], array_enum=["dog"])
+ self.assertTrue(0)
+ except ValueError:
+ self.assertTrue(1)
+
+
+ def test_enumarrays_setter(self):
+
+ #
+ # Check various combinations of valid values
+ #
+ fish_or_crab = petstore_api.EnumArrays()
+
+ fish_or_crab.just_symbol = ">="
+ self.assertEqual(fish_or_crab.just_symbol, ">=")
+
+ fish_or_crab.just_symbol = "$"
+ self.assertEqual(fish_or_crab.just_symbol, "$")
+
+ fish_or_crab.array_enum = []
+ self.assertEqual(fish_or_crab.array_enum, [])
+
+ fish_or_crab.array_enum = ["fish"]
+ self.assertEqual(fish_or_crab.array_enum, ["fish"])
+
+ fish_or_crab.array_enum = ["fish", "fish", "fish"]
+ self.assertEqual(fish_or_crab.array_enum, ["fish", "fish", "fish"])
+
+ fish_or_crab.array_enum = ["crab"]
+ self.assertEqual(fish_or_crab.array_enum, ["crab"])
+
+ fish_or_crab.array_enum = ["crab", "fish"]
+ self.assertEqual(fish_or_crab.array_enum, ["crab", "fish"])
+
+ fish_or_crab.array_enum = ["crab", "fish", "crab", "fish"]
+ self.assertEqual(fish_or_crab.array_enum, ["crab", "fish", "crab", "fish"])
+
+ #
+ # Check if setting invalid values fails
+ #
+ fish_or_crab = petstore_api.EnumArrays()
+ try:
+ fish_or_crab.just_symbol = "!="
+ except ValueError:
+ self.assertEqual(fish_or_crab.just_symbol, None)
+
+ try:
+ fish_or_crab.just_symbol = ["fish"]
+ except ValueError:
+ self.assertEqual(fish_or_crab.just_symbol, None)
+
+ try:
+ fish_or_crab.array_enum = ["cat"]
+ except ValueError:
+ self.assertEqual(fish_or_crab.array_enum, None)
+
+ try:
+ fish_or_crab.array_enum = ["fish", "crab", "dog"]
+ except ValueError:
+ self.assertEqual(fish_or_crab.array_enum, None)
+
+ try:
+ fish_or_crab.array_enum = "fish"
+ except ValueError:
+ self.assertEqual(fish_or_crab.array_enum, None)
+
+
+ def test_todict(self):
+ #
+ # Check if dictionary serialization works
+ #
+ dollar_fish_crab_dict = {
+ 'just_symbol': "$",
+ 'array_enum': ["fish", "crab"]
+ }
+
+ dollar_fish_crab = petstore_api.EnumArrays("$", ["fish", "crab"])
+
+ self.assertEqual(dollar_fish_crab_dict, dollar_fish_crab.to_dict())
+
+ #
+ # Sanity check for different arrays
+ #
+ dollar_crab_fish_dict = {
+ 'just_symbol': "$",
+ 'array_enum': ["crab", "fish"]
+ }
+
+ dollar_fish_crab = petstore_api.EnumArrays("$", ["fish", "crab"])
+
+ self.assertNotEqual(dollar_crab_fish_dict, dollar_fish_crab.to_dict())
+
+
+ def test_equals(self):
+ #
+ # Check if object comparison works
+ #
+ fish1 = petstore_api.EnumArrays("$", ["fish"])
+ fish2 = petstore_api.EnumArrays("$", ["fish"])
+ self.assertEqual(fish1, fish2)
+
+ fish = petstore_api.EnumArrays("$", ["fish"])
+ crab = petstore_api.EnumArrays("$", ["crab"])
+ self.assertNotEqual(fish, crab)
+
+ dollar = petstore_api.EnumArrays("$")
+ greater = petstore_api.EnumArrays(">=")
+ self.assertNotEqual(dollar, greater)
\ No newline at end of file
diff --git a/CI/samples.ci/client/petstore/python-experimental/tests/test_map_test.py b/CI/samples.ci/client/petstore/python-experimental/tests/test_map_test.py
new file mode 100644
index 000000000000..6031cebf3a2b
--- /dev/null
+++ b/CI/samples.ci/client/petstore/python-experimental/tests/test_map_test.py
@@ -0,0 +1,117 @@
+# coding: utf-8
+
+# flake8: noqa
+
+"""
+Run the tests.
+$ pip install nose (optional)
+$ cd petstore_api-python
+$ nosetests -v
+"""
+
+import os
+import time
+import unittest
+
+import petstore_api
+
+
+class MapTestTests(unittest.TestCase):
+
+ def test_maptest_init(self):
+ #
+ # Test MapTest construction with valid values
+ #
+ up_or_low_dict = {
+ 'UPPER': "UP",
+ 'lower': "low"
+ }
+ map_enum_test = petstore_api.MapTest(map_of_enum_string=up_or_low_dict)
+
+ self.assertEqual(map_enum_test.map_of_enum_string, up_or_low_dict)
+
+ map_of_map_of_strings = {
+ 'val1': 1,
+ 'valText': "Text",
+ 'valueDict': up_or_low_dict
+ }
+ map_enum_test = petstore_api.MapTest(map_map_of_string=map_of_map_of_strings)
+
+ self.assertEqual(map_enum_test.map_map_of_string, map_of_map_of_strings)
+
+ #
+ # Make sure that the init fails for invalid enum values
+ #
+ black_or_white_dict = {
+ 'black': "UP",
+ 'white': "low"
+ }
+ try:
+ map_enum_test = petstore_api.MapTest(map_of_enum_string=black_or_white_dict)
+ self.assertTrue(0)
+ except ValueError:
+ self.assertTrue(1)
+
+ def test_maptest_setter(self):
+ #
+ # Check with some valid values
+ #
+ map_enum_test = petstore_api.MapTest()
+ up_or_low_dict = {
+ 'UPPER': "UP",
+ 'lower': "low"
+ }
+ map_enum_test.map_of_enum_string = up_or_low_dict
+ self.assertEqual(map_enum_test.map_of_enum_string, up_or_low_dict)
+
+ #
+ # Check if the setter fails for invalid enum values
+ #
+ map_enum_test = petstore_api.MapTest()
+ black_or_white_dict = {
+ 'black': "UP",
+ 'white': "low"
+ }
+ try:
+ map_enum_test.map_of_enum_string = black_or_white_dict
+ except ValueError:
+ self.assertEqual(map_enum_test.map_of_enum_string, None)
+
+ def test_todict(self):
+ #
+ # Check dictionary serialization
+ #
+ map_enum_test = petstore_api.MapTest()
+ up_or_low_dict = {
+ 'UPPER': "UP",
+ 'lower': "low"
+ }
+ map_of_map_of_strings = {
+ 'val1': 1,
+ 'valText': "Text",
+ 'valueDict': up_or_low_dict
+ }
+ indirect_map = {
+ 'option1': True
+ }
+ direct_map = {
+ 'option2': False
+ }
+ map_enum_test.map_of_enum_string = up_or_low_dict
+ map_enum_test.map_map_of_string = map_of_map_of_strings
+ map_enum_test.indirect_map = indirect_map
+ map_enum_test.direct_map = direct_map
+
+ self.assertEqual(map_enum_test.map_of_enum_string, up_or_low_dict)
+ self.assertEqual(map_enum_test.map_map_of_string, map_of_map_of_strings)
+ self.assertEqual(map_enum_test.indirect_map, indirect_map)
+ self.assertEqual(map_enum_test.direct_map, direct_map)
+
+ expected_dict = {
+ 'map_of_enum_string': up_or_low_dict,
+ 'map_map_of_string': map_of_map_of_strings,
+ 'indirect_map': indirect_map,
+ 'direct_map': direct_map
+ }
+
+ self.assertEqual(map_enum_test.to_dict(), expected_dict)
diff --git a/CI/samples.ci/client/petstore/python-experimental/tests/test_order_model.py b/CI/samples.ci/client/petstore/python-experimental/tests/test_order_model.py
new file mode 100644
index 000000000000..31dc6e3661cd
--- /dev/null
+++ b/CI/samples.ci/client/petstore/python-experimental/tests/test_order_model.py
@@ -0,0 +1,27 @@
+# coding: utf-8
+
+# flake8: noqa
+
+"""
+Run the tests.
+$ pip install nose (optional)
+$ cd petstore_api-python
+$ nosetests -v
+"""
+
+import os
+import time
+import unittest
+
+import petstore_api
+
+
+class OrderModelTests(unittest.TestCase):
+
+ def test_status(self):
+ order = petstore_api.Order()
+ order.status = "placed"
+ self.assertEqual("placed", order.status)
+
+ with self.assertRaises(ValueError):
+ order.status = "invalid"
diff --git a/CI/samples.ci/client/petstore/python-experimental/tests/test_pet_api.py b/CI/samples.ci/client/petstore/python-experimental/tests/test_pet_api.py
new file mode 100644
index 000000000000..f536f5ca288e
--- /dev/null
+++ b/CI/samples.ci/client/petstore/python-experimental/tests/test_pet_api.py
@@ -0,0 +1,276 @@
+# coding: utf-8
+
+# flake8: noqa
+
+"""
+Run the tests.
+$ docker pull swaggerapi/petstore
+$ docker run -d -e SWAGGER_HOST=http://petstore.swagger.io -e SWAGGER_BASE_PATH=/v2 -p 80:8080 swaggerapi/petstore
+$ pip install nose (optional)
+$ cd petstore_api-python
+$ nosetests -v
+"""
+
+import os
+import unittest
+
+import petstore_api
+from petstore_api import Configuration
+from petstore_api.rest import ApiException
+
+from .util import id_gen
+
+import json
+
+import urllib3
+
+HOST = 'http://localhost/v2'
+
+
+class TimeoutWithEqual(urllib3.Timeout):
+ def __init__(self, *arg, **kwargs):
+ super(TimeoutWithEqual, self).__init__(*arg, **kwargs)
+
+ def __eq__(self, other):
+ return self._read == other._read and self._connect == other._connect and self.total == other.total
+
+
+class MockPoolManager(object):
+ def __init__(self, tc):
+ self._tc = tc
+ self._reqs = []
+
+ def expect_request(self, *args, **kwargs):
+ self._reqs.append((args, kwargs))
+
+ def request(self, *args, **kwargs):
+ self._tc.assertTrue(len(self._reqs) > 0)
+ r = self._reqs.pop(0)
+ self._tc.maxDiff = None
+ self._tc.assertEqual(r[0], args)
+ self._tc.assertEqual(r[1], kwargs)
+ return urllib3.HTTPResponse(status=200, body=b'test')
+
+
+class PetApiTests(unittest.TestCase):
+
+ def setUp(self):
+ config = Configuration()
+ config.host = HOST
+ self.api_client = petstore_api.ApiClient(config)
+ self.pet_api = petstore_api.PetApi(self.api_client)
+ self.setUpModels()
+ self.setUpFiles()
+
+ def setUpModels(self):
+ self.category = petstore_api.Category()
+ self.category.id = id_gen()
+ self.category.name = "dog"
+ self.tag = petstore_api.Tag()
+ self.tag.id = id_gen()
+ self.tag.name = "python-pet-tag"
+ self.pet = petstore_api.Pet(name="hello kity", photo_urls=["http://foo.bar.com/1", "http://foo.bar.com/2"])
+ self.pet.id = id_gen()
+ self.pet.status = "sold"
+ self.pet.category = self.category
+ self.pet.tags = [self.tag]
+
+ def setUpFiles(self):
+ self.test_file_dir = os.path.join(os.path.dirname(__file__), "..", "testfiles")
+ self.test_file_dir = os.path.realpath(self.test_file_dir)
+ self.foo = os.path.join(self.test_file_dir, "foo.png")
+
+ def test_preload_content_flag(self):
+ self.pet_api.add_pet(self.pet)
+
+ resp = self.pet_api.find_pets_by_status(status=[self.pet.status], _preload_content=False)
+
+ # return response should at least have read and close methods.
+ self.assertTrue(hasattr(resp, 'read'))
+ self.assertTrue(hasattr(resp, 'close'))
+
+ # Also we need to make sure we can release the connection to a pool (if exists) when we are done with it.
+ self.assertTrue(hasattr(resp, 'release_conn'))
+
+ # Right now, the client returns urllib3.HTTPResponse. If that changed in future, it is probably a breaking
+ # change, however supporting above methods should be enough for most usecases. Remove this test case if
+ # we followed the breaking change procedure for python client (e.g. increasing major version).
+ self.assertTrue(resp.__class__, 'urllib3.response.HTTPResponse')
+
+ resp.close()
+ resp.release_conn()
+
+ def test_timeout(self):
+ mock_pool = MockPoolManager(self)
+ self.api_client.rest_client.pool_manager = mock_pool
+
+ mock_pool.expect_request('POST', 'http://localhost/v2/pet',
+ body=json.dumps(self.api_client.sanitize_for_serialization(self.pet)),
+ headers={'Content-Type': 'application/json',
+ 'Authorization': 'Bearer ',
+ 'User-Agent': 'OpenAPI-Generator/1.0.0/python'},
+ preload_content=True, timeout=TimeoutWithEqual(total=5))
+ mock_pool.expect_request('POST', 'http://localhost/v2/pet',
+ body=json.dumps(self.api_client.sanitize_for_serialization(self.pet)),
+ headers={'Content-Type': 'application/json',
+ 'Authorization': 'Bearer ',
+ 'User-Agent': 'OpenAPI-Generator/1.0.0/python'},
+ preload_content=True, timeout=TimeoutWithEqual(connect=1, read=2))
+
+ self.pet_api.add_pet(self.pet, _request_timeout=5)
+ self.pet_api.add_pet(self.pet, _request_timeout=(1, 2))
+
+ def test_separate_default_client_instances(self):
+ pet_api = petstore_api.PetApi()
+ pet_api2 = petstore_api.PetApi()
+ self.assertNotEqual(pet_api.api_client, pet_api2.api_client)
+
+ pet_api.api_client.user_agent = 'api client 3'
+ pet_api2.api_client.user_agent = 'api client 4'
+
+ self.assertNotEqual(pet_api.api_client.user_agent, pet_api2.api_client.user_agent)
+
+ def test_separate_default_config_instances(self):
+ pet_api = petstore_api.PetApi()
+ pet_api2 = petstore_api.PetApi()
+ self.assertNotEqual(pet_api.api_client.configuration, pet_api2.api_client.configuration)
+
+ pet_api.api_client.configuration.host = 'somehost'
+ pet_api2.api_client.configuration.host = 'someotherhost'
+ self.assertNotEqual(pet_api.api_client.configuration.host, pet_api2.api_client.configuration.host)
+
+ def test_async_request(self):
+ thread = self.pet_api.add_pet(self.pet, async_req=True)
+ response = thread.get()
+ self.assertIsNone(response)
+
+ thread = self.pet_api.get_pet_by_id(self.pet.id, async_req=True)
+ result = thread.get()
+ self.assertIsInstance(result, petstore_api.Pet)
+
+ def test_async_with_result(self):
+ self.pet_api.add_pet(self.pet, async_req=False)
+
+ thread = self.pet_api.get_pet_by_id(self.pet.id, async_req=True)
+ thread2 = self.pet_api.get_pet_by_id(self.pet.id, async_req=True)
+
+ response = thread.get()
+ response2 = thread2.get()
+
+ self.assertEquals(response.id, self.pet.id)
+ self.assertIsNotNone(response2.id, self.pet.id)
+
+ def test_async_with_http_info(self):
+ self.pet_api.add_pet(self.pet)
+
+ thread = self.pet_api.get_pet_by_id(self.pet.id, async_req=True,
+ _return_http_data_only=False)
+ data, status, headers = thread.get()
+
+ self.assertIsInstance(data, petstore_api.Pet)
+ self.assertEquals(status, 200)
+
+ def test_async_exception(self):
+ self.pet_api.add_pet(self.pet)
+
+ thread = self.pet_api.get_pet_by_id("-9999999999999", async_req=True)
+
+ exception = None
+ try:
+ thread.get()
+ except ApiException as e:
+ exception = e
+
+ self.assertIsInstance(exception, ApiException)
+ self.assertEqual(exception.status, 404)
+
+ def test_add_pet_and_get_pet_by_id(self):
+ self.pet_api.add_pet(self.pet)
+
+ fetched = self.pet_api.get_pet_by_id(pet_id=self.pet.id)
+ self.assertIsNotNone(fetched)
+ self.assertEqual(self.pet.id, fetched.id)
+ self.assertIsNotNone(fetched.category)
+ self.assertEqual(self.pet.category.name, fetched.category.name)
+
+ def test_add_pet_and_get_pet_by_id_with_http_info(self):
+ self.pet_api.add_pet(self.pet)
+
+ fetched = self.pet_api.get_pet_by_id(
+ pet_id=self.pet.id,
+ _return_http_data_only=False
+ )
+ self.assertIsNotNone(fetched)
+ self.assertEqual(self.pet.id, fetched[0].id)
+ self.assertIsNotNone(fetched[0].category)
+ self.assertEqual(self.pet.category.name, fetched[0].category.name)
+
+ def test_update_pet(self):
+ self.pet.name = "hello kity with updated"
+ self.pet_api.update_pet(self.pet)
+
+ fetched = self.pet_api.get_pet_by_id(pet_id=self.pet.id)
+ self.assertIsNotNone(fetched)
+ self.assertEqual(self.pet.id, fetched.id)
+ self.assertEqual(self.pet.name, fetched.name)
+ self.assertIsNotNone(fetched.category)
+ self.assertEqual(fetched.category.name, self.pet.category.name)
+
+ def test_find_pets_by_status(self):
+ self.pet_api.add_pet(self.pet)
+
+ self.assertIn(
+ self.pet.id,
+ list(map(lambda x: getattr(x, 'id'), self.pet_api.find_pets_by_status(status=[self.pet.status])))
+ )
+
+ def test_find_pets_by_tags(self):
+ self.pet_api.add_pet(self.pet)
+
+ self.assertIn(
+ self.pet.id,
+ list(map(lambda x: getattr(x, 'id'), self.pet_api.find_pets_by_tags(tags=[self.tag.name])))
+ )
+
+ def test_update_pet_with_form(self):
+ self.pet_api.add_pet(self.pet)
+
+ name = "hello kity with form updated"
+ status = "pending"
+ self.pet_api.update_pet_with_form(pet_id=self.pet.id, name=name, status=status)
+
+ fetched = self.pet_api.get_pet_by_id(pet_id=self.pet.id)
+ self.assertEqual(self.pet.id, fetched.id)
+ self.assertEqual(name, fetched.name)
+ self.assertEqual(status, fetched.status)
+
+ def test_upload_file(self):
+ # upload file with form parameter
+ try:
+ additional_metadata = "special"
+ self.pet_api.upload_file(
+ pet_id=self.pet.id,
+ additional_metadata=additional_metadata,
+ file=self.foo
+ )
+ except ApiException as e:
+ self.fail("upload_file() raised {0} unexpectedly".format(type(e)))
+
+ # upload only file
+ try:
+ self.pet_api.upload_file(pet_id=self.pet.id, file=self.foo)
+ except ApiException as e:
+ self.fail("upload_file() raised {0} unexpectedly".format(type(e)))
+
+ def test_delete_pet(self):
+ self.pet_api.add_pet(self.pet)
+ self.pet_api.delete_pet(pet_id=self.pet.id, api_key="special-key")
+
+ try:
+ self.pet_api.get_pet_by_id(pet_id=self.pet.id)
+ raise Exception("expected an error")
+ except ApiException as e:
+ self.assertEqual(404, e.status)
+
+if __name__ == '__main__':
+ unittest.main()
diff --git a/CI/samples.ci/client/petstore/python-experimental/tests/test_pet_model.py b/CI/samples.ci/client/petstore/python-experimental/tests/test_pet_model.py
new file mode 100644
index 000000000000..70ab1a007a06
--- /dev/null
+++ b/CI/samples.ci/client/petstore/python-experimental/tests/test_pet_model.py
@@ -0,0 +1,69 @@
+# coding: utf-8
+
+# flake8: noqa
+
+"""
+Run the tests.
+$ pip install nose (optional)
+$ cd petstore_api-python
+$ nosetests -v
+"""
+
+import os
+import time
+import unittest
+
+import petstore_api
+
+
+class PetModelTests(unittest.TestCase):
+
+ def setUp(self):
+ self.pet = petstore_api.Pet(name="test name", photo_urls=["string"])
+ self.pet.id = 1
+ self.pet.status = "available"
+ cate = petstore_api.Category()
+ cate.id = 1
+ cate.name = "dog"
+ self.pet.category = cate
+ tag = petstore_api.Tag()
+ tag.id = 1
+ self.pet.tags = [tag]
+
+ def test_to_str(self):
+ data = ("{'category': {'id': 1, 'name': 'dog'},\n"
+ " 'id': 1,\n"
+ " 'name': 'test name',\n"
+ " 'photo_urls': ['string'],\n"
+ " 'status': 'available',\n"
+ " 'tags': [{'id': 1, 'name': None}]}")
+ self.assertEqual(data, self.pet.to_str())
+
+ def test_equal(self):
+ self.pet1 = petstore_api.Pet(name="test name", photo_urls=["string"])
+ self.pet1.id = 1
+ self.pet1.status = "available"
+ cate1 = petstore_api.Category()
+ cate1.id = 1
+ cate1.name = "dog"
+ self.pet.category = cate1
+ tag1 = petstore_api.Tag()
+ tag1.id = 1
+ self.pet1.tags = [tag1]
+
+ self.pet2 = petstore_api.Pet(name="test name", photo_urls=["string"])
+ self.pet2.id = 1
+ self.pet2.status = "available"
+ cate2 = petstore_api.Category()
+ cate2.id = 1
+ cate2.name = "dog"
+ self.pet.category = cate2
+ tag2 = petstore_api.Tag()
+ tag2.id = 1
+ self.pet2.tags = [tag2]
+
+ self.assertTrue(self.pet1 == self.pet2)
+
+ # reset pet1 tags to empty array so that object comparison returns false
+ self.pet1.tags = []
+ self.assertFalse(self.pet1 == self.pet2)
diff --git a/CI/samples.ci/client/petstore/python-experimental/tests/test_store_api.py b/CI/samples.ci/client/petstore/python-experimental/tests/test_store_api.py
new file mode 100644
index 000000000000..1817477aba69
--- /dev/null
+++ b/CI/samples.ci/client/petstore/python-experimental/tests/test_store_api.py
@@ -0,0 +1,32 @@
+# coding: utf-8
+
+# flake8: noqa
+
+"""
+Run the tests.
+$ pip install nose (optional)
+$ cd OpenAP/Petstore-python
+$ nosetests -v
+"""
+
+import os
+import time
+import unittest
+
+import petstore_api
+from petstore_api.rest import ApiException
+
+
+class StoreApiTests(unittest.TestCase):
+
+ def setUp(self):
+ self.store_api = petstore_api.StoreApi()
+
+ def tearDown(self):
+ # sleep 1 sec between two every 2 tests
+ time.sleep(1)
+
+ def test_get_inventory(self):
+ data = self.store_api.get_inventory()
+ self.assertIsNotNone(data)
+ self.assertTrue(isinstance(data, dict))
diff --git a/CI/samples.ci/client/petstore/python-experimental/tests/util.py b/CI/samples.ci/client/petstore/python-experimental/tests/util.py
new file mode 100644
index 000000000000..113d7dcc5478
--- /dev/null
+++ b/CI/samples.ci/client/petstore/python-experimental/tests/util.py
@@ -0,0 +1,8 @@
+# flake8: noqa
+
+import random
+
+
+def id_gen(bits=32):
+ """ Returns a n-bit randomly generated int """
+ return int(random.getrandbits(bits))
diff --git a/CI/samples.ci/client/petstore/python-tornado/Makefile b/CI/samples.ci/client/petstore/python-tornado/Makefile
new file mode 100644
index 000000000000..1f9d56252268
--- /dev/null
+++ b/CI/samples.ci/client/petstore/python-tornado/Makefile
@@ -0,0 +1,18 @@
+ #!/bin/bash
+
+REQUIREMENTS_FILE=dev-requirements.txt
+REQUIREMENTS_OUT=dev-requirements.txt.log
+SETUP_OUT=*.egg-info
+VENV=.venv
+
+clean:
+ rm -rf $(REQUIREMENTS_OUT)
+ rm -rf $(SETUP_OUT)
+ rm -rf $(VENV)
+ rm -rf .tox
+ rm -rf .coverage
+ find . -name "*.py[oc]" -delete
+ find . -name "__pycache__" -delete
+
+test-all: clean
+ bash ./test_python2_and_3.sh
diff --git a/CI/samples.ci/client/petstore/python-tornado/dev-requirements.txt b/CI/samples.ci/client/petstore/python-tornado/dev-requirements.txt
new file mode 100644
index 000000000000..f50c13b5c503
--- /dev/null
+++ b/CI/samples.ci/client/petstore/python-tornado/dev-requirements.txt
@@ -0,0 +1,5 @@
+nose
+tox
+coverage
+randomize
+flake8
diff --git a/CI/samples.ci/client/petstore/python-tornado/pom.xml b/CI/samples.ci/client/petstore/python-tornado/pom.xml
new file mode 100644
index 000000000000..821e12dfe8d3
--- /dev/null
+++ b/CI/samples.ci/client/petstore/python-tornado/pom.xml
@@ -0,0 +1,46 @@
+
+ 4.0.0
+ org.openapitools
+ PythonTornadoClientTests
+ pom
+ 1.0-SNAPSHOT
+ Python Tornado Petstore Client
+
+
+
+ maven-dependency-plugin
+
+
+ package
+
+ copy-dependencies
+
+
+ ${project.build.directory}
+
+
+
+
+
+ org.codehaus.mojo
+ exec-maven-plugin
+ 1.2.1
+
+
+ nose-test
+ integration-test
+
+ exec
+
+
+ make
+
+ test-all
+
+
+
+
+
+
+
+
diff --git a/CI/samples.ci/client/petstore/python-tornado/test_python2_and_3.sh b/CI/samples.ci/client/petstore/python-tornado/test_python2_and_3.sh
new file mode 100755
index 000000000000..7b5795ec24a9
--- /dev/null
+++ b/CI/samples.ci/client/petstore/python-tornado/test_python2_and_3.sh
@@ -0,0 +1,32 @@
+#!/bin/bash
+
+REQUIREMENTS_FILE=dev-requirements.txt
+REQUIREMENTS_OUT=dev-requirements.txt.log
+SETUP_OUT=*.egg-info
+VENV=.venv
+DEACTIVE=false
+
+export LC_ALL=en_US.UTF-8
+export LANG=en_US.UTF-8
+
+### set virtualenv
+if [ -z "$VIRTUAL_ENV" ]; then
+ virtualenv $VENV --no-site-packages --always-copy
+ source $VENV/bin/activate
+ DEACTIVE=true
+fi
+
+### install dependencies
+pip install -r $REQUIREMENTS_FILE | tee -a $REQUIREMENTS_OUT
+python setup.py develop
+
+### run tests
+tox || exit 1
+
+### static analysis of code
+flake8 --show-source petstore_api/
+
+### deactivate virtualenv
+#if [ $DEACTIVE == true ]; then
+# deactivate
+#fi
diff --git a/CI/samples.ci/client/petstore/python-tornado/testfiles/foo.png b/CI/samples.ci/client/petstore/python-tornado/testfiles/foo.png
new file mode 100644
index 000000000000..a9b12cf5927a
Binary files /dev/null and b/CI/samples.ci/client/petstore/python-tornado/testfiles/foo.png differ
diff --git a/samples/openapi3/server/petstore/python-flask/openapi_server/__init__.py b/CI/samples.ci/client/petstore/python-tornado/tests/__init__.py
similarity index 100%
rename from samples/openapi3/server/petstore/python-flask/openapi_server/__init__.py
rename to CI/samples.ci/client/petstore/python-tornado/tests/__init__.py
diff --git a/CI/samples.ci/client/petstore/python-tornado/tests/test_pet_api.py b/CI/samples.ci/client/petstore/python-tornado/tests/test_pet_api.py
new file mode 100644
index 000000000000..468dd867f558
--- /dev/null
+++ b/CI/samples.ci/client/petstore/python-tornado/tests/test_pet_api.py
@@ -0,0 +1,220 @@
+# coding: utf-8
+
+# flake8: noqa
+
+"""
+Run the tests.
+$ docker pull swaggerapi/petstore
+$ docker run -d -e SWAGGER_HOST=http://petstore.swagger.io -e SWAGGER_BASE_PATH=/v2 -p 80:8080 swaggerapi/petstore
+$ pip install nose (optional)
+$ cd petstore_api-python
+$ nosetests -v
+"""
+
+import os
+import unittest
+
+from tornado.testing import AsyncTestCase, gen_test
+from tornado.ioloop import IOLoop
+
+import petstore_api
+from petstore_api import Configuration
+from petstore_api.rest import ApiException
+
+from .util import id_gen
+
+import json
+
+import urllib3
+
+HOST = 'http://localhost/v2'
+
+class PetApiTests(AsyncTestCase):
+
+ def setUp(self):
+ AsyncTestCase.setUp(self)
+ config = Configuration()
+ config.host = HOST
+ self.api_client = petstore_api.ApiClient(config)
+ self.pet_api = petstore_api.PetApi(self.api_client)
+ self.setUpModels()
+ self.setUpFiles()
+
+ def setUpModels(self):
+ self.category = petstore_api.Category()
+ self.category.id = id_gen()
+ self.category.name = "dog"
+ self.tag = petstore_api.Tag()
+ self.tag.id = id_gen()
+ self.tag.name = "opeanpi-generator-python-pet-tag"
+ self.pet = petstore_api.Pet(name="hello kity", photo_urls=["http://foo.bar.com/1", "http://foo.bar.com/2"])
+ self.pet.id = id_gen()
+ self.pet.status = "sold"
+ self.pet.category = self.category
+ self.pet.tags = [self.tag]
+
+ def setUpFiles(self):
+ self.test_file_dir = os.path.join(os.path.dirname(__file__), "..", "testfiles")
+ self.test_file_dir = os.path.realpath(self.test_file_dir)
+ self.foo = os.path.join(self.test_file_dir, "foo.png")
+
+ def get_new_ioloop(self):
+ return IOLoop.instance()
+
+ @gen_test
+ def test_separate_default_client_instances(self):
+ pet_api = petstore_api.PetApi()
+ pet_api2 = petstore_api.PetApi()
+ self.assertNotEqual(pet_api.api_client, pet_api2.api_client)
+
+ pet_api.api_client.user_agent = 'api client 3'
+ pet_api2.api_client.user_agent = 'api client 4'
+
+ self.assertNotEqual(pet_api.api_client.user_agent, pet_api2.api_client.user_agent)
+
+ @gen_test
+ def test_separate_default_config_instances(self):
+ pet_api = petstore_api.PetApi()
+ pet_api2 = petstore_api.PetApi()
+ self.assertNotEqual(pet_api.api_client.configuration, pet_api2.api_client.configuration)
+
+ pet_api.api_client.configuration.host = 'somehost'
+ pet_api2.api_client.configuration.host = 'someotherhost'
+ self.assertNotEqual(pet_api.api_client.configuration.host, pet_api2.api_client.configuration.host)
+
+ @gen_test
+ def test_async_request(self):
+ # It works but tornado is async by default and creating threadpool
+ # to do it looks crazy ;)
+ thread = self.pet_api.add_pet(self.pet, async_req=True)
+ response = yield thread.get()
+ self.assertIsNone(response)
+
+ thread = self.pet_api.get_pet_by_id(self.pet.id, async_req=True)
+ result = yield thread.get()
+ self.assertIsInstance(result, petstore_api.Pet)
+
+ @gen_test
+ def test_async_with_result(self):
+ yield self.pet_api.add_pet(self.pet)
+
+ thread = self.pet_api.get_pet_by_id(self.pet.id, async_req=True)
+ thread2 = self.pet_api.get_pet_by_id(self.pet.id, async_req=True)
+
+ response = yield thread.get()
+ response2 = yield thread2.get()
+
+ self.assertEquals(response.id, self.pet.id)
+ self.assertIsNotNone(response2.id, self.pet.id)
+
+ @gen_test
+ def test_tornado_async_with_result(self):
+ yield self.pet_api.add_pet(self.pet)
+
+ query1 = self.pet_api.get_pet_by_id(self.pet.id)
+ query2 = self.pet_api.get_pet_by_id(self.pet.id)
+
+ response1 = yield query1
+ response2 = yield query2
+
+ self.assertEquals(response1.id, self.pet.id)
+ self.assertIsNotNone(response2.id, self.pet.id)
+
+ @gen_test
+ def test_add_pet_and_get_pet_by_id(self):
+ yield self.pet_api.add_pet(self.pet)
+
+ fetched = yield self.pet_api.get_pet_by_id(pet_id=self.pet.id)
+ self.assertIsNotNone(fetched)
+ self.assertEqual(self.pet.id, fetched.id)
+ self.assertIsNotNone(fetched.category)
+ self.assertEqual(self.pet.category.name, fetched.category.name)
+
+ @gen_test
+ def test_add_pet_and_get_pet_by_id_with_http_info(self):
+ yield self.pet_api.add_pet(self.pet)
+
+ fetched = yield self.pet_api.get_pet_by_id_with_http_info(pet_id=self.pet.id)
+ self.assertIsNotNone(fetched)
+ self.assertEqual(self.pet.id, fetched[0].id)
+ self.assertIsNotNone(fetched[0].category)
+ self.assertEqual(self.pet.category.name, fetched[0].category.name)
+
+ @gen_test
+ def test_update_pet(self):
+ self.pet.name = "hello kity with updated"
+ yield self.pet_api.update_pet(self.pet)
+
+ fetched = yield self.pet_api.get_pet_by_id(pet_id=self.pet.id)
+ self.assertIsNotNone(fetched)
+ self.assertEqual(self.pet.id, fetched.id)
+ self.assertEqual(self.pet.name, fetched.name)
+ self.assertIsNotNone(fetched.category)
+ self.assertEqual(fetched.category.name, self.pet.category.name)
+
+ @gen_test
+ def test_find_pets_by_status(self):
+ yield self.pet_api.add_pet(self.pet)
+ pets = yield self.pet_api.find_pets_by_status(status=[self.pet.status])
+ self.assertIn(
+ self.pet.id,
+ list(map(lambda x: getattr(x, 'id'), pets))
+ )
+
+ @gen_test
+ def test_find_pets_by_tags(self):
+ yield self.pet_api.add_pet(self.pet)
+ pets = yield self.pet_api.find_pets_by_tags(tags=[self.tag.name])
+ self.assertIn(
+ self.pet.id,
+ list(map(lambda x: getattr(x, 'id'), pets))
+ )
+
+ @gen_test
+ def test_update_pet_with_form(self):
+ yield self.pet_api.add_pet(self.pet)
+
+ name = "hello kity with form updated"
+ status = "pending"
+ yield self.pet_api.update_pet_with_form(pet_id=self.pet.id, name=name, status=status)
+
+ fetched = yield self.pet_api.get_pet_by_id(pet_id=self.pet.id)
+ self.assertEqual(self.pet.id, fetched.id)
+ self.assertEqual(name, fetched.name)
+ self.assertEqual(status, fetched.status)
+
+ @gen_test(timeout=10)
+ def test_upload_file(self):
+ # upload file with form parameter
+ try:
+ additional_metadata = "special"
+ yield self.pet_api.upload_file(
+ pet_id=self.pet.id,
+ additional_metadata=additional_metadata,
+ file=self.foo
+ )
+ except ApiException as e:
+ self.fail("upload_file() raised {0} unexpectedly".format(type(e)))
+
+ # upload only file
+ try:
+ yield self.pet_api.upload_file(pet_id=self.pet.id, file=self.foo)
+ except ApiException as e:
+ self.fail("upload_file() raised {0} unexpectedly".format(type(e)))
+
+ @gen_test
+ def test_delete_pet(self):
+ yield self.pet_api.add_pet(self.pet)
+ yield self.pet_api.delete_pet(pet_id=self.pet.id, api_key="special-key")
+
+ try:
+ yield self.pet_api.get_pet_by_id(pet_id=self.pet.id)
+ raise Exception("expected an error")
+ except ApiException as e:
+ self.assertEqual(404, e.status)
+
+
+if __name__ == '__main__':
+ import logging
+ logging.basicConfig(level=logging.DEBUG)
+ unittest.main()
diff --git a/CI/samples.ci/client/petstore/python-tornado/tests/util.py b/CI/samples.ci/client/petstore/python-tornado/tests/util.py
new file mode 100644
index 000000000000..113d7dcc5478
--- /dev/null
+++ b/CI/samples.ci/client/petstore/python-tornado/tests/util.py
@@ -0,0 +1,8 @@
+# flake8: noqa
+
+import random
+
+
+def id_gen(bits=32):
+ """ Returns a n-bit randomly generated int """
+ return int(random.getrandbits(bits))
diff --git a/CI/samples.ci/client/petstore/python/Makefile b/CI/samples.ci/client/petstore/python/Makefile
new file mode 100644
index 000000000000..ba5c5e73c63c
--- /dev/null
+++ b/CI/samples.ci/client/petstore/python/Makefile
@@ -0,0 +1,21 @@
+ #!/bin/bash
+
+REQUIREMENTS_FILE=dev-requirements.txt
+REQUIREMENTS_OUT=dev-requirements.txt.log
+SETUP_OUT=*.egg-info
+VENV=.venv
+
+clean:
+ rm -rf $(REQUIREMENTS_OUT)
+ rm -rf $(SETUP_OUT)
+ rm -rf $(VENV)
+ rm -rf .tox
+ rm -rf .coverage
+ find . -name "*.py[oc]" -delete
+ find . -name "__pycache__" -delete
+
+test: clean
+ bash ./test_python2.sh
+
+test-all: clean
+ bash ./test_python2_and_3.sh
diff --git a/CI/samples.ci/client/petstore/python/dev-requirements.txt b/CI/samples.ci/client/petstore/python/dev-requirements.txt
new file mode 100644
index 000000000000..f50c13b5c503
--- /dev/null
+++ b/CI/samples.ci/client/petstore/python/dev-requirements.txt
@@ -0,0 +1,5 @@
+nose
+tox
+coverage
+randomize
+flake8
diff --git a/CI/samples.ci/client/petstore/python/pom.xml b/CI/samples.ci/client/petstore/python/pom.xml
new file mode 100644
index 000000000000..db2d09246c3b
--- /dev/null
+++ b/CI/samples.ci/client/petstore/python/pom.xml
@@ -0,0 +1,46 @@
+
+ 4.0.0
+ org.openapitools
+ PythonPetstoreClientTests
+ pom
+ 1.0-SNAPSHOT
+ Python OpenAPI Petstore Client
+
+
+
+ maven-dependency-plugin
+
+
+ package
+
+ copy-dependencies
+
+
+ ${project.build.directory}
+
+
+
+
+
+ org.codehaus.mojo
+ exec-maven-plugin
+ 1.2.1
+
+
+ nose-test
+ integration-test
+
+ exec
+
+
+ make
+
+ test-all
+
+
+
+
+
+
+
+
diff --git a/CI/samples.ci/client/petstore/python/setup.cfg b/CI/samples.ci/client/petstore/python/setup.cfg
new file mode 100644
index 000000000000..26b7a359d580
--- /dev/null
+++ b/CI/samples.ci/client/petstore/python/setup.cfg
@@ -0,0 +1,11 @@
+[nosetests]
+logging-clear-handlers=true
+verbosity=2
+randomize=true
+exe=true
+with-coverage=true
+cover-package=petstore_api
+cover-erase=true
+
+[flake8]
+max-line-length=99
diff --git a/CI/samples.ci/client/petstore/python/test_python2.sh b/CI/samples.ci/client/petstore/python/test_python2.sh
new file mode 100755
index 000000000000..fb0eaed6ffa0
--- /dev/null
+++ b/CI/samples.ci/client/petstore/python/test_python2.sh
@@ -0,0 +1,33 @@
+#!/bin/bash
+
+REQUIREMENTS_FILE=dev-requirements.txt
+REQUIREMENTS_OUT=dev-requirements.txt.log
+SETUP_OUT=*.egg-info
+VENV=.venv
+DEACTIVE=false
+
+export LC_ALL=en_US.UTF-8
+export LANG=en_US.UTF-8
+
+### set virtualenv
+if [ -z "$VIRTUAL_ENV" ]; then
+ virtualenv $VENV --no-site-packages --always-copy
+ source $VENV/bin/activate
+ DEACTIVE=true
+fi
+
+### install dependencies
+pip install -r $REQUIREMENTS_FILE | tee -a $REQUIREMENTS_OUT
+python setup.py develop
+
+### run tests
+nosetests || exit 1
+
+### static analysis of code
+flake8 --show-source petstore_api/
+
+### deactivate virtualenv
+#if [ $DEACTIVE == true ]; then
+# deactivate
+#fi
+
diff --git a/CI/samples.ci/client/petstore/python/test_python2_and_3.sh b/CI/samples.ci/client/petstore/python/test_python2_and_3.sh
new file mode 100755
index 000000000000..7b5795ec24a9
--- /dev/null
+++ b/CI/samples.ci/client/petstore/python/test_python2_and_3.sh
@@ -0,0 +1,32 @@
+#!/bin/bash
+
+REQUIREMENTS_FILE=dev-requirements.txt
+REQUIREMENTS_OUT=dev-requirements.txt.log
+SETUP_OUT=*.egg-info
+VENV=.venv
+DEACTIVE=false
+
+export LC_ALL=en_US.UTF-8
+export LANG=en_US.UTF-8
+
+### set virtualenv
+if [ -z "$VIRTUAL_ENV" ]; then
+ virtualenv $VENV --no-site-packages --always-copy
+ source $VENV/bin/activate
+ DEACTIVE=true
+fi
+
+### install dependencies
+pip install -r $REQUIREMENTS_FILE | tee -a $REQUIREMENTS_OUT
+python setup.py develop
+
+### run tests
+tox || exit 1
+
+### static analysis of code
+flake8 --show-source petstore_api/
+
+### deactivate virtualenv
+#if [ $DEACTIVE == true ]; then
+# deactivate
+#fi
diff --git a/CI/samples.ci/client/petstore/python/testfiles/foo.png b/CI/samples.ci/client/petstore/python/testfiles/foo.png
new file mode 100644
index 000000000000..a9b12cf5927a
Binary files /dev/null and b/CI/samples.ci/client/petstore/python/testfiles/foo.png differ
diff --git a/samples/openapi3/server/petstore/python-flask/openapi_server/controllers/__init__.py b/CI/samples.ci/client/petstore/python/tests/__init__.py
similarity index 100%
rename from samples/openapi3/server/petstore/python-flask/openapi_server/controllers/__init__.py
rename to CI/samples.ci/client/petstore/python/tests/__init__.py
diff --git a/CI/samples.ci/client/petstore/python/tests/test_api_client.py b/CI/samples.ci/client/petstore/python/tests/test_api_client.py
new file mode 100644
index 000000000000..a41dbaba9c9f
--- /dev/null
+++ b/CI/samples.ci/client/petstore/python/tests/test_api_client.py
@@ -0,0 +1,172 @@
+# coding: utf-8
+
+# flake8: noqa
+
+"""
+Run the tests.
+$ pip install nose (optional)
+$ cd OpenAPIetstore-python
+$ nosetests -v
+"""
+
+import os
+import time
+import unittest
+from dateutil.parser import parse
+
+import petstore_api
+import petstore_api.configuration
+
+HOST = 'http://petstore.swagger.io/v2'
+
+
+class ApiClientTests(unittest.TestCase):
+
+ def setUp(self):
+ self.api_client = petstore_api.ApiClient()
+
+ def test_configuration(self):
+ config = petstore_api.Configuration()
+ config.host = 'http://localhost/'
+
+ config.api_key['api_key'] = '123456'
+ config.api_key_prefix['api_key'] = 'PREFIX'
+ config.username = 'test_username'
+ config.password = 'test_password'
+
+ header_params = {'test1': 'value1'}
+ query_params = {'test2': 'value2'}
+ auth_settings = ['api_key', 'unknown']
+
+ client = petstore_api.ApiClient(config)
+
+ # test prefix
+ self.assertEqual('PREFIX', client.configuration.api_key_prefix['api_key'])
+
+ # update parameters based on auth setting
+ client.update_params_for_auth(header_params, query_params, auth_settings)
+
+ # test api key auth
+ self.assertEqual(header_params['test1'], 'value1')
+ self.assertEqual(header_params['api_key'], 'PREFIX 123456')
+ self.assertEqual(query_params['test2'], 'value2')
+
+ # test basic auth
+ self.assertEqual('test_username', client.configuration.username)
+ self.assertEqual('test_password', client.configuration.password)
+
+ def test_select_header_accept(self):
+ accepts = ['APPLICATION/JSON', 'APPLICATION/XML']
+ accept = self.api_client.select_header_accept(accepts)
+ self.assertEqual(accept, 'application/json')
+
+ accepts = ['application/json', 'application/xml']
+ accept = self.api_client.select_header_accept(accepts)
+ self.assertEqual(accept, 'application/json')
+
+ accepts = ['application/xml', 'application/json']
+ accept = self.api_client.select_header_accept(accepts)
+ self.assertEqual(accept, 'application/json')
+
+ accepts = ['text/plain', 'application/xml']
+ accept = self.api_client.select_header_accept(accepts)
+ self.assertEqual(accept, 'text/plain, application/xml')
+
+ accepts = []
+ accept = self.api_client.select_header_accept(accepts)
+ self.assertEqual(accept, None)
+
+ def test_select_header_content_type(self):
+ content_types = ['APPLICATION/JSON', 'APPLICATION/XML']
+ content_type = self.api_client.select_header_content_type(content_types)
+ self.assertEqual(content_type, 'application/json')
+
+ content_types = ['application/json', 'application/xml']
+ content_type = self.api_client.select_header_content_type(content_types)
+ self.assertEqual(content_type, 'application/json')
+
+ content_types = ['application/xml', 'application/json']
+ content_type = self.api_client.select_header_content_type(content_types)
+ self.assertEqual(content_type, 'application/json')
+
+ content_types = ['text/plain', 'application/xml']
+ content_type = self.api_client.select_header_content_type(content_types)
+ self.assertEqual(content_type, 'text/plain')
+
+ content_types = []
+ content_type = self.api_client.select_header_content_type(content_types)
+ self.assertEqual(content_type, 'application/json')
+
+ def test_sanitize_for_serialization(self):
+ # None
+ data = None
+ result = self.api_client.sanitize_for_serialization(None)
+ self.assertEqual(result, data)
+
+ # str
+ data = "test string"
+ result = self.api_client.sanitize_for_serialization(data)
+ self.assertEqual(result, data)
+
+ # int
+ data = 1
+ result = self.api_client.sanitize_for_serialization(data)
+ self.assertEqual(result, data)
+
+ # bool
+ data = True
+ result = self.api_client.sanitize_for_serialization(data)
+ self.assertEqual(result, data)
+
+ # date
+ data = parse("1997-07-16").date() # date
+ result = self.api_client.sanitize_for_serialization(data)
+ self.assertEqual(result, "1997-07-16")
+
+ # datetime
+ data = parse("1997-07-16T19:20:30.45+01:00") # datetime
+ result = self.api_client.sanitize_for_serialization(data)
+ self.assertEqual(result, "1997-07-16T19:20:30.450000+01:00")
+
+ # list
+ data = [1]
+ result = self.api_client.sanitize_for_serialization(data)
+ self.assertEqual(result, data)
+
+ # dict
+ data = {"test key": "test value"}
+ result = self.api_client.sanitize_for_serialization(data)
+ self.assertEqual(result, data)
+
+ # model
+ pet_dict = {"id": 1, "name": "monkey",
+ "category": {"id": 1, "name": "test category"},
+ "tags": [{"id": 1, "name": "test tag1"},
+ {"id": 2, "name": "test tag2"}],
+ "status": "available",
+ "photoUrls": ["http://foo.bar.com/3",
+ "http://foo.bar.com/4"]}
+ pet = petstore_api.Pet(name=pet_dict["name"], photo_urls=pet_dict["photoUrls"])
+ pet.id = pet_dict["id"]
+ cate = petstore_api.Category()
+ cate.id = pet_dict["category"]["id"]
+ cate.name = pet_dict["category"]["name"]
+ pet.category = cate
+ tag1 = petstore_api.Tag()
+ tag1.id = pet_dict["tags"][0]["id"]
+ tag1.name = pet_dict["tags"][0]["name"]
+ tag2 = petstore_api.Tag()
+ tag2.id = pet_dict["tags"][1]["id"]
+ tag2.name = pet_dict["tags"][1]["name"]
+ pet.tags = [tag1, tag2]
+ pet.status = pet_dict["status"]
+
+ data = pet
+ result = self.api_client.sanitize_for_serialization(data)
+ self.assertEqual(result, pet_dict)
+
+ # list of models
+ list_of_pet_dict = [pet_dict]
+ data = [pet]
+ result = self.api_client.sanitize_for_serialization(data)
+ self.assertEqual(result, list_of_pet_dict)
diff --git a/CI/samples.ci/client/petstore/python/tests/test_api_exception.py b/CI/samples.ci/client/petstore/python/tests/test_api_exception.py
new file mode 100644
index 000000000000..75bf81a8de07
--- /dev/null
+++ b/CI/samples.ci/client/petstore/python/tests/test_api_exception.py
@@ -0,0 +1,86 @@
+# coding: utf-8
+
+# flake8: noqa
+
+"""
+Run the tests.
+$ pip install nose (optional)
+$ cd petstore_api-python
+$ nosetests -v
+"""
+
+import os
+import sys
+import unittest
+
+import petstore_api
+from petstore_api.rest import ApiException
+
+from .util import id_gen
+
+class ApiExceptionTests(unittest.TestCase):
+
+ def setUp(self):
+ self.api_client = petstore_api.ApiClient()
+ self.pet_api = petstore_api.PetApi(self.api_client)
+ self.setUpModels()
+
+ def setUpModels(self):
+ self.category = petstore_api.Category()
+ self.category.id = id_gen()
+ self.category.name = "dog"
+ self.tag = petstore_api.Tag()
+ self.tag.id = id_gen()
+ self.tag.name = "blank"
+ self.pet = petstore_api.Pet(name="hello kity", photo_urls=["http://foo.bar.com/1", "http://foo.bar.com/2"])
+ self.pet.id = id_gen()
+ self.pet.status = "sold"
+ self.pet.category = self.category
+ self.pet.tags = [self.tag]
+
+ def test_404_error(self):
+ self.pet_api.add_pet(self.pet)
+ self.pet_api.delete_pet(pet_id=self.pet.id)
+
+ with self.checkRaiseRegex(ApiException, "Pet not found"):
+ self.pet_api.get_pet_by_id(pet_id=self.pet.id)
+
+ try:
+ self.pet_api.get_pet_by_id(pet_id=self.pet.id)
+ except ApiException as e:
+ self.assertEqual(e.status, 404)
+ self.assertEqual(e.reason, "Not Found")
+ self.checkRegex(e.body, "Pet not found")
+
+ def test_500_error(self):
+ self.pet_api.add_pet(self.pet)
+
+ with self.checkRaiseRegex(ApiException, "Internal Server Error"):
+ self.pet_api.upload_file(
+ pet_id=self.pet.id,
+ additional_metadata="special",
+ file=None
+ )
+
+ try:
+ self.pet_api.upload_file(
+ pet_id=self.pet.id,
+ additional_metadata="special",
+ file=None
+ )
+ except ApiException as e:
+ self.assertEqual(e.status, 500)
+ self.assertEqual(e.reason, "Internal Server Error")
+ self.checkRegex(e.body, "Error 500 Internal Server Error")
+
+ def checkRaiseRegex(self, expected_exception, expected_regex):
+ if sys.version_info < (3, 0):
+ return self.assertRaisesRegexp(expected_exception, expected_regex)
+
+ return self.assertRaisesRegex(expected_exception, expected_regex)
+
+ def checkRegex(self, text, expected_regex):
+ if sys.version_info < (3, 0):
+ return self.assertRegexpMatches(text, expected_regex)
+
+ return self.assertRegex(text, expected_regex)
diff --git a/CI/samples.ci/client/petstore/python/tests/test_deserialization.py b/CI/samples.ci/client/petstore/python/tests/test_deserialization.py
new file mode 100644
index 000000000000..6c4e083d1cd7
--- /dev/null
+++ b/CI/samples.ci/client/petstore/python/tests/test_deserialization.py
@@ -0,0 +1,241 @@
+# coding: utf-8
+
+# flake8: noqa
+
+"""
+Run the tests.
+$ pip install nose (optional)
+$ cd OpenAPIPetstore-python
+$ nosetests -v
+"""
+from collections import namedtuple
+import json
+import os
+import time
+import unittest
+import datetime
+
+import petstore_api
+
+
+MockResponse = namedtuple('MockResponse', 'data')
+
+
+class DeserializationTests(unittest.TestCase):
+
+ def setUp(self):
+ self.api_client = petstore_api.ApiClient()
+ self.deserialize = self.api_client.deserialize
+
+ def test_enum_test(self):
+ """ deserialize dict(str, Enum_Test) """
+ data = {
+ 'enum_test': {
+ "enum_string": "UPPER",
+ "enum_string_required": "lower",
+ "enum_integer": 1,
+ "enum_number": 1.1,
+ "outerEnum": "placed"
+ }
+ }
+ response = MockResponse(data=json.dumps(data))
+
+ deserialized = self.deserialize(response, 'dict(str, EnumTest)')
+ self.assertTrue(isinstance(deserialized, dict))
+ self.assertTrue(isinstance(deserialized['enum_test'], petstore_api.EnumTest))
+ self.assertEqual(deserialized['enum_test'],
+ petstore_api.EnumTest(enum_string="UPPER",
+ enum_string_required="lower",
+ enum_integer=1,
+ enum_number=1.1,
+ outer_enum=petstore_api.OuterEnum.PLACED))
+
+ def test_deserialize_dict_str_pet(self):
+ """ deserialize dict(str, Pet) """
+ data = {
+ 'pet': {
+ "id": 0,
+ "category": {
+ "id": 0,
+ "name": "string"
+ },
+ "name": "doggie",
+ "photoUrls": [
+ "string"
+ ],
+ "tags": [
+ {
+ "id": 0,
+ "name": "string"
+ }
+ ],
+ "status": "available"
+ }
+ }
+ response = MockResponse(data=json.dumps(data))
+
+ deserialized = self.deserialize(response, 'dict(str, Pet)')
+ self.assertTrue(isinstance(deserialized, dict))
+ self.assertTrue(isinstance(deserialized['pet'], petstore_api.Pet))
+
+ def test_deserialize_dict_str_dog(self):
+ """ deserialize dict(str, Dog), use discriminator"""
+ data = {
+ 'dog': {
+ "id": 0,
+ "className": "Dog",
+ "color": "white",
+ "bread": "Jack Russel Terrier"
+ }
+ }
+ response = MockResponse(data=json.dumps(data))
+
+ deserialized = self.deserialize(response, 'dict(str, Animal)')
+ self.assertTrue(isinstance(deserialized, dict))
+ self.assertTrue(isinstance(deserialized['dog'], petstore_api.Dog))
+
+ def test_deserialize_dict_str_int(self):
+ """ deserialize dict(str, int) """
+ data = {
+ 'integer': 1
+ }
+ response = MockResponse(data=json.dumps(data))
+
+ deserialized = self.deserialize(response, 'dict(str, int)')
+ self.assertTrue(isinstance(deserialized, dict))
+ self.assertTrue(isinstance(deserialized['integer'], int))
+
+ def test_deserialize_str(self):
+ """ deserialize str """
+ data = "test str"
+ response = MockResponse(data=json.dumps(data))
+
+ deserialized = self.deserialize(response, "str")
+ self.assertTrue(isinstance(deserialized, str))
+
+ def test_deserialize_date(self):
+ """ deserialize date """
+ data = "1997-07-16"
+ response = MockResponse(data=json.dumps(data))
+
+ deserialized = self.deserialize(response, "date")
+ self.assertTrue(isinstance(deserialized, datetime.date))
+
+ def test_deserialize_datetime(self):
+ """ deserialize datetime """
+ data = "1997-07-16T19:20:30.45+01:00"
+ response = MockResponse(data=json.dumps(data))
+
+ deserialized = self.deserialize(response, "datetime")
+ self.assertTrue(isinstance(deserialized, datetime.datetime))
+
+ def test_deserialize_pet(self):
+ """ deserialize pet """
+ data = {
+ "id": 0,
+ "category": {
+ "id": 0,
+ "name": "string"
+ },
+ "name": "doggie",
+ "photoUrls": [
+ "string"
+ ],
+ "tags": [
+ {
+ "id": 0,
+ "name": "string"
+ }
+ ],
+ "status": "available"
+ }
+ response = MockResponse(data=json.dumps(data))
+
+ deserialized = self.deserialize(response, "Pet")
+ self.assertTrue(isinstance(deserialized, petstore_api.Pet))
+ self.assertEqual(deserialized.id, 0)
+ self.assertEqual(deserialized.name, "doggie")
+ self.assertTrue(isinstance(deserialized.category, petstore_api.Category))
+ self.assertEqual(deserialized.category.name, "string")
+ self.assertTrue(isinstance(deserialized.tags, list))
+ self.assertEqual(deserialized.tags[0].name, "string")
+
+ def test_deserialize_list_of_pet(self):
+ """ deserialize list[Pet] """
+ data = [
+ {
+ "id": 0,
+ "category": {
+ "id": 0,
+ "name": "string"
+ },
+ "name": "doggie0",
+ "photoUrls": [
+ "string"
+ ],
+ "tags": [
+ {
+ "id": 0,
+ "name": "string"
+ }
+ ],
+ "status": "available"
+ },
+ {
+ "id": 1,
+ "category": {
+ "id": 0,
+ "name": "string"
+ },
+ "name": "doggie1",
+ "photoUrls": [
+ "string"
+ ],
+ "tags": [
+ {
+ "id": 0,
+ "name": "string"
+ }
+ ],
+ "status": "available"
+ }]
+ response = MockResponse(data=json.dumps(data))
+
+ deserialized = self.deserialize(response, "list[Pet]")
+ self.assertTrue(isinstance(deserialized, list))
+ self.assertTrue(isinstance(deserialized[0], petstore_api.Pet))
+ self.assertEqual(deserialized[0].id, 0)
+ self.assertEqual(deserialized[1].id, 1)
+ self.assertEqual(deserialized[0].name, "doggie0")
+ self.assertEqual(deserialized[1].name, "doggie1")
+
+ def test_deserialize_nested_dict(self):
+ """ deserialize dict(str, dict(str, int)) """
+ data = {
+ "foo": {
+ "bar": 1
+ }
+ }
+ response = MockResponse(data=json.dumps(data))
+
+ deserialized = self.deserialize(response, "dict(str, dict(str, int))")
+ self.assertTrue(isinstance(deserialized, dict))
+ self.assertTrue(isinstance(deserialized["foo"], dict))
+ self.assertTrue(isinstance(deserialized["foo"]["bar"], int))
+
+ def test_deserialize_nested_list(self):
+ """ deserialize list[list[str]] """
+ data = [["foo"]]
+ response = MockResponse(data=json.dumps(data))
+
+ deserialized = self.deserialize(response, "list[list[str]]")
+ self.assertTrue(isinstance(deserialized, list))
+ self.assertTrue(isinstance(deserialized[0], list))
+ self.assertTrue(isinstance(deserialized[0][0], str))
+
+ def test_deserialize_none(self):
+ """ deserialize None """
+ response = MockResponse(data=json.dumps(None))
+
+ deserialized = self.deserialize(response, "datetime")
+ self.assertIsNone(deserialized)
diff --git a/CI/samples.ci/client/petstore/python/tests/test_enum_arrays.py b/CI/samples.ci/client/petstore/python/tests/test_enum_arrays.py
new file mode 100644
index 000000000000..2f7e347f9c35
--- /dev/null
+++ b/CI/samples.ci/client/petstore/python/tests/test_enum_arrays.py
@@ -0,0 +1,165 @@
+# coding: utf-8
+
+# flake8: noqa
+
+"""
+Run the tests.
+$ pip install nose (optional)
+$ cd petstore_api-python
+$ nosetests -v
+"""
+
+import os
+import time
+import unittest
+
+import petstore_api
+
+
+class EnumArraysTests(unittest.TestCase):
+
+ def test_enumarrays_init(self):
+ #
+ # Check various combinations of valid values.
+ #
+ fish_or_crab = petstore_api.EnumArrays(just_symbol=">=")
+ self.assertEqual(fish_or_crab.just_symbol, ">=")
+ self.assertEqual(fish_or_crab.array_enum, None)
+
+ fish_or_crab = petstore_api.EnumArrays(just_symbol="$", array_enum=["fish"])
+ self.assertEqual(fish_or_crab.just_symbol, "$")
+ self.assertEqual(fish_or_crab.array_enum, ["fish"])
+
+ fish_or_crab = petstore_api.EnumArrays(just_symbol=">=", array_enum=["fish"])
+ self.assertEqual(fish_or_crab.just_symbol, ">=")
+ self.assertEqual(fish_or_crab.array_enum, ["fish"])
+
+ fish_or_crab = petstore_api.EnumArrays("$", ["crab"])
+ self.assertEqual(fish_or_crab.just_symbol, "$")
+ self.assertEqual(fish_or_crab.array_enum, ["crab"])
+
+
+ #
+ # Check if setting invalid values fails
+ #
+ try:
+ fish_or_crab = petstore_api.EnumArrays(just_symbol="<=")
+ self.assertTrue(0)
+ except ValueError:
+ self.assertTrue(1)
+
+ try:
+ fish_or_crab = petstore_api.EnumArrays(just_symbol="$", array_enum=["dog"])
+ self.assertTrue(0)
+ except ValueError:
+ self.assertTrue(1)
+
+ try:
+ fish_or_crab = petstore_api.EnumArrays(just_symbol=["$"], array_enum=["dog"])
+ self.assertTrue(0)
+ except ValueError:
+ self.assertTrue(1)
+
+
+ def test_enumarrays_setter(self):
+
+ #
+ # Check various combinations of valid values
+ #
+ fish_or_crab = petstore_api.EnumArrays()
+
+ fish_or_crab.just_symbol = ">="
+ self.assertEqual(fish_or_crab.just_symbol, ">=")
+
+ fish_or_crab.just_symbol = "$"
+ self.assertEqual(fish_or_crab.just_symbol, "$")
+
+ fish_or_crab.array_enum = []
+ self.assertEqual(fish_or_crab.array_enum, [])
+
+ fish_or_crab.array_enum = ["fish"]
+ self.assertEqual(fish_or_crab.array_enum, ["fish"])
+
+ fish_or_crab.array_enum = ["fish", "fish", "fish"]
+ self.assertEqual(fish_or_crab.array_enum, ["fish", "fish", "fish"])
+
+ fish_or_crab.array_enum = ["crab"]
+ self.assertEqual(fish_or_crab.array_enum, ["crab"])
+
+ fish_or_crab.array_enum = ["crab", "fish"]
+ self.assertEqual(fish_or_crab.array_enum, ["crab", "fish"])
+
+ fish_or_crab.array_enum = ["crab", "fish", "crab", "fish"]
+ self.assertEqual(fish_or_crab.array_enum, ["crab", "fish", "crab", "fish"])
+
+ #
+ # Check if setting invalid values fails
+ #
+ fish_or_crab = petstore_api.EnumArrays()
+ try:
+ fish_or_crab.just_symbol = "!="
+ except ValueError:
+ self.assertEqual(fish_or_crab.just_symbol, None)
+
+ try:
+ fish_or_crab.just_symbol = ["fish"]
+ except ValueError:
+ self.assertEqual(fish_or_crab.just_symbol, None)
+
+ try:
+ fish_or_crab.array_enum = ["cat"]
+ except ValueError:
+ self.assertEqual(fish_or_crab.array_enum, None)
+
+ try:
+ fish_or_crab.array_enum = ["fish", "crab", "dog"]
+ except ValueError:
+ self.assertEqual(fish_or_crab.array_enum, None)
+
+ try:
+ fish_or_crab.array_enum = "fish"
+ except ValueError:
+ self.assertEqual(fish_or_crab.array_enum, None)
+
+
+ def test_todict(self):
+ #
+ # Check if dictionary serialization works
+ #
+ dollar_fish_crab_dict = {
+ 'just_symbol': "$",
+ 'array_enum': ["fish", "crab"]
+ }
+
+ dollar_fish_crab = petstore_api.EnumArrays("$", ["fish", "crab"])
+
+ self.assertEqual(dollar_fish_crab_dict, dollar_fish_crab.to_dict())
+
+ #
+ # Sanity check for different arrays
+ #
+ dollar_crab_fish_dict = {
+ 'just_symbol': "$",
+ 'array_enum': ["crab", "fish"]
+ }
+
+ dollar_fish_crab = petstore_api.EnumArrays("$", ["fish", "crab"])
+
+ self.assertNotEqual(dollar_crab_fish_dict, dollar_fish_crab.to_dict())
+
+
+ def test_equals(self):
+ #
+ # Check if object comparison works
+ #
+ fish1 = petstore_api.EnumArrays("$", ["fish"])
+ fish2 = petstore_api.EnumArrays("$", ["fish"])
+ self.assertEqual(fish1, fish2)
+
+ fish = petstore_api.EnumArrays("$", ["fish"])
+ crab = petstore_api.EnumArrays("$", ["crab"])
+ self.assertNotEqual(fish, crab)
+
+ dollar = petstore_api.EnumArrays("$")
+ greater = petstore_api.EnumArrays(">=")
+ self.assertNotEqual(dollar, greater)
\ No newline at end of file
diff --git a/CI/samples.ci/client/petstore/python/tests/test_map_test.py b/CI/samples.ci/client/petstore/python/tests/test_map_test.py
new file mode 100644
index 000000000000..6031cebf3a2b
--- /dev/null
+++ b/CI/samples.ci/client/petstore/python/tests/test_map_test.py
@@ -0,0 +1,117 @@
+# coding: utf-8
+
+# flake8: noqa
+
+"""
+Run the tests.
+$ pip install nose (optional)
+$ cd petstore_api-python
+$ nosetests -v
+"""
+
+import os
+import time
+import unittest
+
+import petstore_api
+
+
+class MapTestTests(unittest.TestCase):
+
+ def test_maptest_init(self):
+ #
+ # Test MapTest construction with valid values
+ #
+ up_or_low_dict = {
+ 'UPPER': "UP",
+ 'lower': "low"
+ }
+ map_enum_test = petstore_api.MapTest(map_of_enum_string=up_or_low_dict)
+
+ self.assertEqual(map_enum_test.map_of_enum_string, up_or_low_dict)
+
+ map_of_map_of_strings = {
+ 'val1': 1,
+ 'valText': "Text",
+ 'valueDict': up_or_low_dict
+ }
+ map_enum_test = petstore_api.MapTest(map_map_of_string=map_of_map_of_strings)
+
+ self.assertEqual(map_enum_test.map_map_of_string, map_of_map_of_strings)
+
+ #
+ # Make sure that the init fails for invalid enum values
+ #
+ black_or_white_dict = {
+ 'black': "UP",
+ 'white': "low"
+ }
+ try:
+ map_enum_test = petstore_api.MapTest(map_of_enum_string=black_or_white_dict)
+ self.assertTrue(0)
+ except ValueError:
+ self.assertTrue(1)
+
+ def test_maptest_setter(self):
+ #
+ # Check with some valid values
+ #
+ map_enum_test = petstore_api.MapTest()
+ up_or_low_dict = {
+ 'UPPER': "UP",
+ 'lower': "low"
+ }
+ map_enum_test.map_of_enum_string = up_or_low_dict
+ self.assertEqual(map_enum_test.map_of_enum_string, up_or_low_dict)
+
+ #
+ # Check if the setter fails for invalid enum values
+ #
+ map_enum_test = petstore_api.MapTest()
+ black_or_white_dict = {
+ 'black': "UP",
+ 'white': "low"
+ }
+ try:
+ map_enum_test.map_of_enum_string = black_or_white_dict
+ except ValueError:
+ self.assertEqual(map_enum_test.map_of_enum_string, None)
+
+ def test_todict(self):
+ #
+ # Check dictionary serialization
+ #
+ map_enum_test = petstore_api.MapTest()
+ up_or_low_dict = {
+ 'UPPER': "UP",
+ 'lower': "low"
+ }
+ map_of_map_of_strings = {
+ 'val1': 1,
+ 'valText': "Text",
+ 'valueDict': up_or_low_dict
+ }
+ indirect_map = {
+ 'option1': True
+ }
+ direct_map = {
+ 'option2': False
+ }
+ map_enum_test.map_of_enum_string = up_or_low_dict
+ map_enum_test.map_map_of_string = map_of_map_of_strings
+ map_enum_test.indirect_map = indirect_map
+ map_enum_test.direct_map = direct_map
+
+ self.assertEqual(map_enum_test.map_of_enum_string, up_or_low_dict)
+ self.assertEqual(map_enum_test.map_map_of_string, map_of_map_of_strings)
+ self.assertEqual(map_enum_test.indirect_map, indirect_map)
+ self.assertEqual(map_enum_test.direct_map, direct_map)
+
+ expected_dict = {
+ 'map_of_enum_string': up_or_low_dict,
+ 'map_map_of_string': map_of_map_of_strings,
+ 'indirect_map': indirect_map,
+ 'direct_map': direct_map
+ }
+
+ self.assertEqual(map_enum_test.to_dict(), expected_dict)
diff --git a/CI/samples.ci/client/petstore/python/tests/test_order_model.py b/CI/samples.ci/client/petstore/python/tests/test_order_model.py
new file mode 100644
index 000000000000..31dc6e3661cd
--- /dev/null
+++ b/CI/samples.ci/client/petstore/python/tests/test_order_model.py
@@ -0,0 +1,27 @@
+# coding: utf-8
+
+# flake8: noqa
+
+"""
+Run the tests.
+$ pip install nose (optional)
+$ cd petstore_api-python
+$ nosetests -v
+"""
+
+import os
+import time
+import unittest
+
+import petstore_api
+
+
+class OrderModelTests(unittest.TestCase):
+
+ def test_status(self):
+ order = petstore_api.Order()
+ order.status = "placed"
+ self.assertEqual("placed", order.status)
+
+ with self.assertRaises(ValueError):
+ order.status = "invalid"
diff --git a/CI/samples.ci/client/petstore/python/tests/test_pet_api.py b/CI/samples.ci/client/petstore/python/tests/test_pet_api.py
new file mode 100644
index 000000000000..4f38fbd6e176
--- /dev/null
+++ b/CI/samples.ci/client/petstore/python/tests/test_pet_api.py
@@ -0,0 +1,272 @@
+# coding: utf-8
+
+# flake8: noqa
+
+"""
+Run the tests.
+$ docker pull swaggerapi/petstore
+$ docker run -d -e SWAGGER_HOST=http://petstore.swagger.io -e SWAGGER_BASE_PATH=/v2 -p 80:8080 swaggerapi/petstore
+$ pip install nose (optional)
+$ cd petstore_api-python
+$ nosetests -v
+"""
+
+import os
+import unittest
+
+import petstore_api
+from petstore_api import Configuration
+from petstore_api.rest import ApiException
+
+from .util import id_gen
+
+import json
+
+import urllib3
+
+HOST = 'http://localhost/v2'
+
+
+class TimeoutWithEqual(urllib3.Timeout):
+ def __init__(self, *arg, **kwargs):
+ super(TimeoutWithEqual, self).__init__(*arg, **kwargs)
+
+ def __eq__(self, other):
+ return self._read == other._read and self._connect == other._connect and self.total == other.total
+
+
+class MockPoolManager(object):
+ def __init__(self, tc):
+ self._tc = tc
+ self._reqs = []
+
+ def expect_request(self, *args, **kwargs):
+ self._reqs.append((args, kwargs))
+
+ def request(self, *args, **kwargs):
+ self._tc.assertTrue(len(self._reqs) > 0)
+ r = self._reqs.pop(0)
+ self._tc.maxDiff = None
+ self._tc.assertEqual(r[0], args)
+ self._tc.assertEqual(r[1], kwargs)
+ return urllib3.HTTPResponse(status=200, body=b'test')
+
+
+class PetApiTests(unittest.TestCase):
+
+ def setUp(self):
+ config = Configuration()
+ config.host = HOST
+ self.api_client = petstore_api.ApiClient(config)
+ self.pet_api = petstore_api.PetApi(self.api_client)
+ self.setUpModels()
+ self.setUpFiles()
+
+ def setUpModels(self):
+ self.category = petstore_api.Category()
+ self.category.id = id_gen()
+ self.category.name = "dog"
+ self.tag = petstore_api.Tag()
+ self.tag.id = id_gen()
+ self.tag.name = "python-pet-tag"
+ self.pet = petstore_api.Pet(name="hello kity", photo_urls=["http://foo.bar.com/1", "http://foo.bar.com/2"])
+ self.pet.id = id_gen()
+ self.pet.status = "sold"
+ self.pet.category = self.category
+ self.pet.tags = [self.tag]
+
+ def setUpFiles(self):
+ self.test_file_dir = os.path.join(os.path.dirname(__file__), "..", "testfiles")
+ self.test_file_dir = os.path.realpath(self.test_file_dir)
+ self.foo = os.path.join(self.test_file_dir, "foo.png")
+
+ def test_preload_content_flag(self):
+ self.pet_api.add_pet(self.pet)
+
+ resp = self.pet_api.find_pets_by_status(status=[self.pet.status], _preload_content=False)
+
+ # return response should at least have read and close methods.
+ self.assertTrue(hasattr(resp, 'read'))
+ self.assertTrue(hasattr(resp, 'close'))
+
+ # Also we need to make sure we can release the connection to a pool (if exists) when we are done with it.
+ self.assertTrue(hasattr(resp, 'release_conn'))
+
+ # Right now, the client returns urllib3.HTTPResponse. If that changed in future, it is probably a breaking
+ # change, however supporting above methods should be enough for most usecases. Remove this test case if
+ # we followed the breaking change procedure for python client (e.g. increasing major version).
+ self.assertTrue(resp.__class__, 'urllib3.response.HTTPResponse')
+
+ resp.close()
+ resp.release_conn()
+
+ def test_timeout(self):
+ mock_pool = MockPoolManager(self)
+ self.api_client.rest_client.pool_manager = mock_pool
+
+ mock_pool.expect_request('POST', 'http://localhost/v2/pet',
+ body=json.dumps(self.api_client.sanitize_for_serialization(self.pet)),
+ headers={'Content-Type': 'application/json',
+ 'Authorization': 'Bearer ',
+ 'User-Agent': 'OpenAPI-Generator/1.0.0/python'},
+ preload_content=True, timeout=TimeoutWithEqual(total=5))
+ mock_pool.expect_request('POST', 'http://localhost/v2/pet',
+ body=json.dumps(self.api_client.sanitize_for_serialization(self.pet)),
+ headers={'Content-Type': 'application/json',
+ 'Authorization': 'Bearer ',
+ 'User-Agent': 'OpenAPI-Generator/1.0.0/python'},
+ preload_content=True, timeout=TimeoutWithEqual(connect=1, read=2))
+
+ self.pet_api.add_pet(self.pet, _request_timeout=5)
+ self.pet_api.add_pet(self.pet, _request_timeout=(1, 2))
+
+ def test_separate_default_client_instances(self):
+ pet_api = petstore_api.PetApi()
+ pet_api2 = petstore_api.PetApi()
+ self.assertNotEqual(pet_api.api_client, pet_api2.api_client)
+
+ pet_api.api_client.user_agent = 'api client 3'
+ pet_api2.api_client.user_agent = 'api client 4'
+
+ self.assertNotEqual(pet_api.api_client.user_agent, pet_api2.api_client.user_agent)
+
+ def test_separate_default_config_instances(self):
+ pet_api = petstore_api.PetApi()
+ pet_api2 = petstore_api.PetApi()
+ self.assertNotEqual(pet_api.api_client.configuration, pet_api2.api_client.configuration)
+
+ pet_api.api_client.configuration.host = 'somehost'
+ pet_api2.api_client.configuration.host = 'someotherhost'
+ self.assertNotEqual(pet_api.api_client.configuration.host, pet_api2.api_client.configuration.host)
+
+ def test_async_request(self):
+ thread = self.pet_api.add_pet(self.pet, async_req=True)
+ response = thread.get()
+ self.assertIsNone(response)
+
+ thread = self.pet_api.get_pet_by_id(self.pet.id, async_req=True)
+ result = thread.get()
+ self.assertIsInstance(result, petstore_api.Pet)
+
+ def test_async_with_result(self):
+ self.pet_api.add_pet(self.pet, async_req=False)
+
+ thread = self.pet_api.get_pet_by_id(self.pet.id, async_req=True)
+ thread2 = self.pet_api.get_pet_by_id(self.pet.id, async_req=True)
+
+ response = thread.get()
+ response2 = thread2.get()
+
+ self.assertEquals(response.id, self.pet.id)
+ self.assertIsNotNone(response2.id, self.pet.id)
+
+ def test_async_with_http_info(self):
+ self.pet_api.add_pet(self.pet)
+
+ thread = self.pet_api.get_pet_by_id_with_http_info(self.pet.id, async_req=True)
+ data, status, headers = thread.get()
+
+ self.assertIsInstance(data, petstore_api.Pet)
+ self.assertEquals(status, 200)
+
+ def test_async_exception(self):
+ self.pet_api.add_pet(self.pet)
+
+ thread = self.pet_api.get_pet_by_id("-9999999999999", async_req=True)
+
+ exception = None
+ try:
+ thread.get()
+ except ApiException as e:
+ exception = e
+
+ self.assertIsInstance(exception, ApiException)
+ self.assertEqual(exception.status, 404)
+
+ def test_add_pet_and_get_pet_by_id(self):
+ self.pet_api.add_pet(self.pet)
+
+ fetched = self.pet_api.get_pet_by_id(pet_id=self.pet.id)
+ self.assertIsNotNone(fetched)
+ self.assertEqual(self.pet.id, fetched.id)
+ self.assertIsNotNone(fetched.category)
+ self.assertEqual(self.pet.category.name, fetched.category.name)
+
+ def test_add_pet_and_get_pet_by_id_with_http_info(self):
+ self.pet_api.add_pet(self.pet)
+
+ fetched = self.pet_api.get_pet_by_id_with_http_info(pet_id=self.pet.id)
+ self.assertIsNotNone(fetched)
+ self.assertEqual(self.pet.id, fetched[0].id)
+ self.assertIsNotNone(fetched[0].category)
+ self.assertEqual(self.pet.category.name, fetched[0].category.name)
+
+ def test_update_pet(self):
+ self.pet.name = "hello kity with updated"
+ self.pet_api.update_pet(self.pet)
+
+ fetched = self.pet_api.get_pet_by_id(pet_id=self.pet.id)
+ self.assertIsNotNone(fetched)
+ self.assertEqual(self.pet.id, fetched.id)
+ self.assertEqual(self.pet.name, fetched.name)
+ self.assertIsNotNone(fetched.category)
+ self.assertEqual(fetched.category.name, self.pet.category.name)
+
+ def test_find_pets_by_status(self):
+ self.pet_api.add_pet(self.pet)
+
+ self.assertIn(
+ self.pet.id,
+ list(map(lambda x: getattr(x, 'id'), self.pet_api.find_pets_by_status(status=[self.pet.status])))
+ )
+
+ def test_find_pets_by_tags(self):
+ self.pet_api.add_pet(self.pet)
+
+ self.assertIn(
+ self.pet.id,
+ list(map(lambda x: getattr(x, 'id'), self.pet_api.find_pets_by_tags(tags=[self.tag.name])))
+ )
+
+ def test_update_pet_with_form(self):
+ self.pet_api.add_pet(self.pet)
+
+ name = "hello kity with form updated"
+ status = "pending"
+ self.pet_api.update_pet_with_form(pet_id=self.pet.id, name=name, status=status)
+
+ fetched = self.pet_api.get_pet_by_id(pet_id=self.pet.id)
+ self.assertEqual(self.pet.id, fetched.id)
+ self.assertEqual(name, fetched.name)
+ self.assertEqual(status, fetched.status)
+
+ def test_upload_file(self):
+ # upload file with form parameter
+ try:
+ additional_metadata = "special"
+ self.pet_api.upload_file(
+ pet_id=self.pet.id,
+ additional_metadata=additional_metadata,
+ file=self.foo
+ )
+ except ApiException as e:
+ self.fail("upload_file() raised {0} unexpectedly".format(type(e)))
+
+ # upload only file
+ try:
+ self.pet_api.upload_file(pet_id=self.pet.id, file=self.foo)
+ except ApiException as e:
+ self.fail("upload_file() raised {0} unexpectedly".format(type(e)))
+
+ def test_delete_pet(self):
+ self.pet_api.add_pet(self.pet)
+ self.pet_api.delete_pet(pet_id=self.pet.id, api_key="special-key")
+
+ try:
+ self.pet_api.get_pet_by_id(pet_id=self.pet.id)
+ raise Exception("expected an error")
+ except ApiException as e:
+ self.assertEqual(404, e.status)
+
+if __name__ == '__main__':
+ unittest.main()
diff --git a/CI/samples.ci/client/petstore/python/tests/test_pet_model.py b/CI/samples.ci/client/petstore/python/tests/test_pet_model.py
new file mode 100644
index 000000000000..70ab1a007a06
--- /dev/null
+++ b/CI/samples.ci/client/petstore/python/tests/test_pet_model.py
@@ -0,0 +1,69 @@
+# coding: utf-8
+
+# flake8: noqa
+
+"""
+Run the tests.
+$ pip install nose (optional)
+$ cd petstore_api-python
+$ nosetests -v
+"""
+
+import os
+import time
+import unittest
+
+import petstore_api
+
+
+class PetModelTests(unittest.TestCase):
+
+ def setUp(self):
+ self.pet = petstore_api.Pet(name="test name", photo_urls=["string"])
+ self.pet.id = 1
+ self.pet.status = "available"
+ cate = petstore_api.Category()
+ cate.id = 1
+ cate.name = "dog"
+ self.pet.category = cate
+ tag = petstore_api.Tag()
+ tag.id = 1
+ self.pet.tags = [tag]
+
+ def test_to_str(self):
+ data = ("{'category': {'id': 1, 'name': 'dog'},\n"
+ " 'id': 1,\n"
+ " 'name': 'test name',\n"
+ " 'photo_urls': ['string'],\n"
+ " 'status': 'available',\n"
+ " 'tags': [{'id': 1, 'name': None}]}")
+ self.assertEqual(data, self.pet.to_str())
+
+ def test_equal(self):
+ self.pet1 = petstore_api.Pet(name="test name", photo_urls=["string"])
+ self.pet1.id = 1
+ self.pet1.status = "available"
+ cate1 = petstore_api.Category()
+ cate1.id = 1
+ cate1.name = "dog"
+ self.pet.category = cate1
+ tag1 = petstore_api.Tag()
+ tag1.id = 1
+ self.pet1.tags = [tag1]
+
+ self.pet2 = petstore_api.Pet(name="test name", photo_urls=["string"])
+ self.pet2.id = 1
+ self.pet2.status = "available"
+ cate2 = petstore_api.Category()
+ cate2.id = 1
+ cate2.name = "dog"
+ self.pet.category = cate2
+ tag2 = petstore_api.Tag()
+ tag2.id = 1
+ self.pet2.tags = [tag2]
+
+ self.assertTrue(self.pet1 == self.pet2)
+
+ # reset pet1 tags to empty array so that object comparison returns false
+ self.pet1.tags = []
+ self.assertFalse(self.pet1 == self.pet2)
diff --git a/CI/samples.ci/client/petstore/python/tests/test_store_api.py b/CI/samples.ci/client/petstore/python/tests/test_store_api.py
new file mode 100644
index 000000000000..1817477aba69
--- /dev/null
+++ b/CI/samples.ci/client/petstore/python/tests/test_store_api.py
@@ -0,0 +1,32 @@
+# coding: utf-8
+
+# flake8: noqa
+
+"""
+Run the tests.
+$ pip install nose (optional)
+$ cd OpenAP/Petstore-python
+$ nosetests -v
+"""
+
+import os
+import time
+import unittest
+
+import petstore_api
+from petstore_api.rest import ApiException
+
+
+class StoreApiTests(unittest.TestCase):
+
+ def setUp(self):
+ self.store_api = petstore_api.StoreApi()
+
+ def tearDown(self):
+ # sleep 1 sec between two every 2 tests
+ time.sleep(1)
+
+ def test_get_inventory(self):
+ data = self.store_api.get_inventory()
+ self.assertIsNotNone(data)
+ self.assertTrue(isinstance(data, dict))
diff --git a/CI/samples.ci/client/petstore/python/tests/util.py b/CI/samples.ci/client/petstore/python/tests/util.py
new file mode 100644
index 000000000000..113d7dcc5478
--- /dev/null
+++ b/CI/samples.ci/client/petstore/python/tests/util.py
@@ -0,0 +1,8 @@
+# flake8: noqa
+
+import random
+
+
+def id_gen(bits=32):
+ """ Returns a n-bit randomly generated int """
+ return int(random.getrandbits(bits))
diff --git a/CI/samples.ci/client/petstore/ruby/Gemfile.lock b/CI/samples.ci/client/petstore/ruby/Gemfile.lock
new file mode 100644
index 000000000000..14030efc945a
--- /dev/null
+++ b/CI/samples.ci/client/petstore/ruby/Gemfile.lock
@@ -0,0 +1,79 @@
+PATH
+ remote: .
+ specs:
+ petstore (1.0.0)
+ json (~> 2.1, >= 2.1.0)
+ typhoeus (~> 1.0, >= 1.0.1)
+
+GEM
+ remote: https://rubygems.org/
+ specs:
+ ZenTest (4.11.2)
+ addressable (2.5.2)
+ public_suffix (>= 2.0.2, < 4.0)
+ autotest (4.4.6)
+ ZenTest (>= 4.4.1)
+ autotest-fsevent (0.2.14)
+ sys-uname
+ autotest-growl (0.2.16)
+ autotest-rails-pure (4.1.2)
+ byebug (10.0.2)
+ coderay (1.1.2)
+ crack (0.4.3)
+ safe_yaml (~> 1.0.0)
+ diff-lcs (1.3)
+ ethon (0.11.0)
+ ffi (>= 1.3.0)
+ ffi (1.9.25)
+ hashdiff (0.3.7)
+ json (2.1.0)
+ method_source (0.9.0)
+ pry (0.11.3)
+ coderay (~> 1.1.0)
+ method_source (~> 0.9.0)
+ pry-byebug (3.6.0)
+ byebug (~> 10.0)
+ pry (~> 0.10)
+ public_suffix (3.0.3)
+ rake (12.0.0)
+ rspec (3.8.0)
+ rspec-core (~> 3.8.0)
+ rspec-expectations (~> 3.8.0)
+ rspec-mocks (~> 3.8.0)
+ rspec-core (3.8.0)
+ rspec-support (~> 3.8.0)
+ rspec-expectations (3.8.1)
+ diff-lcs (>= 1.2.0, < 2.0)
+ rspec-support (~> 3.8.0)
+ rspec-mocks (3.8.0)
+ diff-lcs (>= 1.2.0, < 2.0)
+ rspec-support (~> 3.8.0)
+ rspec-support (3.8.0)
+ safe_yaml (1.0.4)
+ sys-uname (1.0.3)
+ ffi (>= 1.0.0)
+ typhoeus (1.3.0)
+ ethon (>= 0.9.0)
+ vcr (3.0.3)
+ webmock (1.24.6)
+ addressable (>= 2.3.6)
+ crack (>= 0.3.2)
+ hashdiff
+
+PLATFORMS
+ ruby
+
+DEPENDENCIES
+ autotest (~> 4.4, >= 4.4.6)
+ autotest-fsevent (~> 0.2, >= 0.2.12)
+ autotest-growl (~> 0.2, >= 0.2.16)
+ autotest-rails-pure (~> 4.1, >= 4.1.2)
+ petstore!
+ pry-byebug
+ rake (~> 12.0.0)
+ rspec (~> 3.6, >= 3.6.0)
+ vcr (~> 3.0, >= 3.0.1)
+ webmock (~> 1.24, >= 1.24.3)
+
+BUNDLED WITH
+ 1.16.1
diff --git a/CI/samples.ci/client/petstore/rust/.gitignore b/CI/samples.ci/client/petstore/rust/.gitignore
new file mode 100644
index 000000000000..a9d37c560c6a
--- /dev/null
+++ b/CI/samples.ci/client/petstore/rust/.gitignore
@@ -0,0 +1,2 @@
+target
+Cargo.lock
diff --git a/CI/samples.ci/client/petstore/rust/Cargo.toml b/CI/samples.ci/client/petstore/rust/Cargo.toml
new file mode 100644
index 000000000000..46b06cf9bbe3
--- /dev/null
+++ b/CI/samples.ci/client/petstore/rust/Cargo.toml
@@ -0,0 +1,2 @@
+[workspace]
+members = ["hyper/*", "reqwest/*"]
diff --git a/CI/samples.ci/client/petstore/rust/pom.xml b/CI/samples.ci/client/petstore/rust/pom.xml
new file mode 100644
index 000000000000..86adf2289ece
--- /dev/null
+++ b/CI/samples.ci/client/petstore/rust/pom.xml
@@ -0,0 +1,46 @@
+
+ 4.0.0
+ org.openapitools
+ RustPetstoreClientTests
+ pom
+ 1.0-SNAPSHOT
+ Rust Petstore Client
+
+
+
+ maven-dependency-plugin
+
+
+ package
+
+ copy-dependencies
+
+
+ ${project.build.directory}
+
+
+
+
+
+ org.codehaus.mojo
+ exec-maven-plugin
+ 1.2.1
+
+
+ bundle-test
+ integration-test
+
+ exec
+
+
+ cargo
+
+ check
+
+
+
+
+
+
+
+
diff --git a/samples/client/petstore/scala-httpclient/bin/PetApiTest.scala b/CI/samples.ci/client/petstore/scala-httpclient/src/test/scala/PetApiTest.scala
similarity index 100%
rename from samples/client/petstore/scala-httpclient/bin/PetApiTest.scala
rename to CI/samples.ci/client/petstore/scala-httpclient/src/test/scala/PetApiTest.scala
diff --git a/samples/client/petstore/scala-httpclient/bin/StoreApiTest.scala b/CI/samples.ci/client/petstore/scala-httpclient/src/test/scala/StoreApiTest.scala
similarity index 100%
rename from samples/client/petstore/scala-httpclient/bin/StoreApiTest.scala
rename to CI/samples.ci/client/petstore/scala-httpclient/src/test/scala/StoreApiTest.scala
diff --git a/samples/client/petstore/scala-httpclient/bin/UserApiTest.scala b/CI/samples.ci/client/petstore/scala-httpclient/src/test/scala/UserApiTest.scala
similarity index 100%
rename from samples/client/petstore/scala-httpclient/bin/UserApiTest.scala
rename to CI/samples.ci/client/petstore/scala-httpclient/src/test/scala/UserApiTest.scala
diff --git a/CI/samples.ci/client/petstore/scalaz/pom.xml b/CI/samples.ci/client/petstore/scalaz/pom.xml
new file mode 100644
index 000000000000..166ba81bda7d
--- /dev/null
+++ b/CI/samples.ci/client/petstore/scalaz/pom.xml
@@ -0,0 +1,32 @@
+
+ 4.0.0
+ org.openapitools
+ scalaz-petstore-client
+ pom
+ 1.0-SNAPSHOT
+ scalaz-petstore-client
+
+
+
+ org.codehaus.mojo
+ exec-maven-plugin
+ 1.5.0
+
+
+ sbt-test
+ integration-test
+
+ exec
+
+
+ sbt
+
+ test
+
+
+
+
+
+
+
+
diff --git a/samples/client/test/swift4/default/.gitignore b/CI/samples.ci/client/petstore/swift/.gitignore
similarity index 100%
rename from samples/client/test/swift4/default/.gitignore
rename to CI/samples.ci/client/petstore/swift/.gitignore
diff --git a/samples/client/petstore/async-scala/.openapi-generator-ignore b/CI/samples.ci/client/petstore/swift/.openapi-generator-ignore
similarity index 100%
rename from samples/client/petstore/async-scala/.openapi-generator-ignore
rename to CI/samples.ci/client/petstore/swift/.openapi-generator-ignore
diff --git a/CI/samples.ci/client/petstore/swift/default/SwaggerClientTests/Podfile b/CI/samples.ci/client/petstore/swift/default/SwaggerClientTests/Podfile
new file mode 100644
index 000000000000..218aae4920f5
--- /dev/null
+++ b/CI/samples.ci/client/petstore/swift/default/SwaggerClientTests/Podfile
@@ -0,0 +1,11 @@
+use_frameworks!
+source 'https://github.com/CocoaPods/Specs.git'
+
+target 'SwaggerClient' do
+ pod "PetstoreClient", :path => "../"
+
+ target 'SwaggerClientTests' do
+ inherit! :search_paths
+ end
+end
+
diff --git a/CI/samples.ci/client/petstore/swift/default/SwaggerClientTests/SwaggerClient.xcodeproj/project.pbxproj b/CI/samples.ci/client/petstore/swift/default/SwaggerClientTests/SwaggerClient.xcodeproj/project.pbxproj
new file mode 100644
index 000000000000..d8ae490623cf
--- /dev/null
+++ b/CI/samples.ci/client/petstore/swift/default/SwaggerClientTests/SwaggerClient.xcodeproj/project.pbxproj
@@ -0,0 +1,529 @@
+// !$*UTF8*$!
+{
+ archiveVersion = 1;
+ classes = {
+ };
+ objectVersion = 46;
+ objects = {
+
+/* Begin PBXBuildFile section */
+ 6D4EFB951C692C6300B96B06 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6D4EFB941C692C6300B96B06 /* AppDelegate.swift */; };
+ 6D4EFB971C692C6300B96B06 /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6D4EFB961C692C6300B96B06 /* ViewController.swift */; };
+ 6D4EFB9A1C692C6300B96B06 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 6D4EFB981C692C6300B96B06 /* Main.storyboard */; };
+ 6D4EFB9C1C692C6300B96B06 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 6D4EFB9B1C692C6300B96B06 /* Assets.xcassets */; };
+ 6D4EFB9F1C692C6300B96B06 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 6D4EFB9D1C692C6300B96B06 /* LaunchScreen.storyboard */; };
+ 6D4EFBB51C693BE200B96B06 /* PetAPITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6D4EFBB41C693BE200B96B06 /* PetAPITests.swift */; };
+ 6D4EFBB71C693BED00B96B06 /* StoreAPITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6D4EFBB61C693BED00B96B06 /* StoreAPITests.swift */; };
+ 6D4EFBB91C693BFC00B96B06 /* UserAPITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6D4EFBB81C693BFC00B96B06 /* UserAPITests.swift */; };
+ A77F0668DAC6BFAB9DBB7D37 /* Pods_SwaggerClient.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E9AE2FEF8E8F914C1D2F168B /* Pods_SwaggerClient.framework */; };
+ C6AAAD211D8718D00016A515 /* ISOFullDateTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C6AAAD201D8718D00016A515 /* ISOFullDateTests.swift */; };
+ F3FCC41175F14274266B53FA /* Pods_SwaggerClientTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A3C56BADD08FA3D474DBDF71 /* Pods_SwaggerClientTests.framework */; };
+/* End PBXBuildFile section */
+
+/* Begin PBXContainerItemProxy section */
+ 6D4EFBA61C692C6300B96B06 /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = 6D4EFB891C692C6300B96B06 /* Project object */;
+ proxyType = 1;
+ remoteGlobalIDString = 6D4EFB901C692C6300B96B06;
+ remoteInfo = SwaggerClient;
+ };
+/* End PBXContainerItemProxy section */
+
+/* Begin PBXFileReference section */
+ 6D4EFB911C692C6300B96B06 /* SwaggerClient.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = SwaggerClient.app; sourceTree = BUILT_PRODUCTS_DIR; };
+ 6D4EFB941C692C6300B96B06 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; };
+ 6D4EFB961C692C6300B96B06 /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = ""; };
+ 6D4EFB991C692C6300B96B06 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; };
+ 6D4EFB9B1C692C6300B96B06 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; };
+ 6D4EFB9E1C692C6300B96B06 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; };
+ 6D4EFBA01C692C6300B96B06 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
+ 6D4EFBA51C692C6300B96B06 /* SwaggerClientTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = SwaggerClientTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
+ 6D4EFBAB1C692C6300B96B06 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
+ 6D4EFBB41C693BE200B96B06 /* PetAPITests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PetAPITests.swift; sourceTree = ""; };
+ 6D4EFBB61C693BED00B96B06 /* StoreAPITests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = StoreAPITests.swift; sourceTree = ""; };
+ 6D4EFBB81C693BFC00B96B06 /* UserAPITests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UserAPITests.swift; sourceTree = ""; };
+ 78ED7EF301CC6DF958B4BFAB /* Pods-SwaggerClientTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-SwaggerClientTests.debug.xcconfig"; path = "Pods/Target Support Files/Pods-SwaggerClientTests/Pods-SwaggerClientTests.debug.xcconfig"; sourceTree = ""; };
+ A3C56BADD08FA3D474DBDF71 /* Pods_SwaggerClientTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_SwaggerClientTests.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ C07EC0A94AA0F86D60668B32 /* Pods.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ C6AAAD201D8718D00016A515 /* ISOFullDateTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ISOFullDateTests.swift; sourceTree = ""; };
+ E9AE2FEF8E8F914C1D2F168B /* Pods_SwaggerClient.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_SwaggerClient.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ EA2BED756A4C5389B0F46BC4 /* Pods-SwaggerClient.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-SwaggerClient.debug.xcconfig"; path = "Pods/Target Support Files/Pods-SwaggerClient/Pods-SwaggerClient.debug.xcconfig"; sourceTree = ""; };
+ EA32712FFC62EA5F96CC006F /* Pods-SwaggerClientTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-SwaggerClientTests.release.xcconfig"; path = "Pods/Target Support Files/Pods-SwaggerClientTests/Pods-SwaggerClientTests.release.xcconfig"; sourceTree = ""; };
+ F18FDCB0CAAA15B973147EED /* Pods-SwaggerClient.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-SwaggerClient.release.xcconfig"; path = "Pods/Target Support Files/Pods-SwaggerClient/Pods-SwaggerClient.release.xcconfig"; sourceTree = ""; };
+/* End PBXFileReference section */
+
+/* Begin PBXFrameworksBuildPhase section */
+ 6D4EFB8E1C692C6300B96B06 /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ A77F0668DAC6BFAB9DBB7D37 /* Pods_SwaggerClient.framework in Frameworks */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ 6D4EFBA21C692C6300B96B06 /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ F3FCC41175F14274266B53FA /* Pods_SwaggerClientTests.framework in Frameworks */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXFrameworksBuildPhase section */
+
+/* Begin PBXGroup section */
+ 3FABC56EC0BA84CBF4F99564 /* Frameworks */ = {
+ isa = PBXGroup;
+ children = (
+ C07EC0A94AA0F86D60668B32 /* Pods.framework */,
+ E9AE2FEF8E8F914C1D2F168B /* Pods_SwaggerClient.framework */,
+ A3C56BADD08FA3D474DBDF71 /* Pods_SwaggerClientTests.framework */,
+ );
+ name = Frameworks;
+ sourceTree = "";
+ };
+ 6D4EFB881C692C6300B96B06 = {
+ isa = PBXGroup;
+ children = (
+ 6D4EFB931C692C6300B96B06 /* SwaggerClient */,
+ 6D4EFBA81C692C6300B96B06 /* SwaggerClientTests */,
+ 6D4EFB921C692C6300B96B06 /* Products */,
+ 3FABC56EC0BA84CBF4F99564 /* Frameworks */,
+ D598C75400476D9194EADBAA /* Pods */,
+ );
+ sourceTree = "";
+ };
+ 6D4EFB921C692C6300B96B06 /* Products */ = {
+ isa = PBXGroup;
+ children = (
+ 6D4EFB911C692C6300B96B06 /* SwaggerClient.app */,
+ 6D4EFBA51C692C6300B96B06 /* SwaggerClientTests.xctest */,
+ );
+ name = Products;
+ sourceTree = "";
+ };
+ 6D4EFB931C692C6300B96B06 /* SwaggerClient */ = {
+ isa = PBXGroup;
+ children = (
+ 6D4EFB941C692C6300B96B06 /* AppDelegate.swift */,
+ 6D4EFB961C692C6300B96B06 /* ViewController.swift */,
+ 6D4EFB981C692C6300B96B06 /* Main.storyboard */,
+ 6D4EFB9B1C692C6300B96B06 /* Assets.xcassets */,
+ 6D4EFB9D1C692C6300B96B06 /* LaunchScreen.storyboard */,
+ 6D4EFBA01C692C6300B96B06 /* Info.plist */,
+ );
+ path = SwaggerClient;
+ sourceTree = "";
+ };
+ 6D4EFBA81C692C6300B96B06 /* SwaggerClientTests */ = {
+ isa = PBXGroup;
+ children = (
+ 6D4EFBAB1C692C6300B96B06 /* Info.plist */,
+ C6AAAD201D8718D00016A515 /* ISOFullDateTests.swift */,
+ 6D4EFBB41C693BE200B96B06 /* PetAPITests.swift */,
+ 6D4EFBB61C693BED00B96B06 /* StoreAPITests.swift */,
+ 6D4EFBB81C693BFC00B96B06 /* UserAPITests.swift */,
+ );
+ path = SwaggerClientTests;
+ sourceTree = "";
+ };
+ D598C75400476D9194EADBAA /* Pods */ = {
+ isa = PBXGroup;
+ children = (
+ EA2BED756A4C5389B0F46BC4 /* Pods-SwaggerClient.debug.xcconfig */,
+ F18FDCB0CAAA15B973147EED /* Pods-SwaggerClient.release.xcconfig */,
+ 78ED7EF301CC6DF958B4BFAB /* Pods-SwaggerClientTests.debug.xcconfig */,
+ EA32712FFC62EA5F96CC006F /* Pods-SwaggerClientTests.release.xcconfig */,
+ );
+ name = Pods;
+ sourceTree = "";
+ };
+/* End PBXGroup section */
+
+/* Begin PBXNativeTarget section */
+ 6D4EFB901C692C6300B96B06 /* SwaggerClient */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = 6D4EFBAE1C692C6300B96B06 /* Build configuration list for PBXNativeTarget "SwaggerClient" */;
+ buildPhases = (
+ E5F6E842A9A53DF5152241BC /* [CP] Check Pods Manifest.lock */,
+ 6D4EFB8D1C692C6300B96B06 /* Sources */,
+ 6D4EFB8E1C692C6300B96B06 /* Frameworks */,
+ 6D4EFB8F1C692C6300B96B06 /* Resources */,
+ 4A8C29C17AE187506924CE72 /* [CP] Embed Pods Frameworks */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ );
+ name = SwaggerClient;
+ productName = SwaggerClient;
+ productReference = 6D4EFB911C692C6300B96B06 /* SwaggerClient.app */;
+ productType = "com.apple.product-type.application";
+ };
+ 6D4EFBA41C692C6300B96B06 /* SwaggerClientTests */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = 6D4EFBB11C692C6300B96B06 /* Build configuration list for PBXNativeTarget "SwaggerClientTests" */;
+ buildPhases = (
+ 18CD551FE8D8E7492A1C4100 /* [CP] Check Pods Manifest.lock */,
+ 6D4EFBA11C692C6300B96B06 /* Sources */,
+ 6D4EFBA21C692C6300B96B06 /* Frameworks */,
+ 6D4EFBA31C692C6300B96B06 /* Resources */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ 6D4EFBA71C692C6300B96B06 /* PBXTargetDependency */,
+ );
+ name = SwaggerClientTests;
+ productName = SwaggerClientTests;
+ productReference = 6D4EFBA51C692C6300B96B06 /* SwaggerClientTests.xctest */;
+ productType = "com.apple.product-type.bundle.unit-test";
+ };
+/* End PBXNativeTarget section */
+
+/* Begin PBXProject section */
+ 6D4EFB891C692C6300B96B06 /* Project object */ = {
+ isa = PBXProject;
+ attributes = {
+ LastSwiftUpdateCheck = 0720;
+ LastUpgradeCheck = 0720;
+ ORGANIZATIONNAME = Swagger;
+ TargetAttributes = {
+ 6D4EFB901C692C6300B96B06 = {
+ CreatedOnToolsVersion = 7.2.1;
+ };
+ 6D4EFBA41C692C6300B96B06 = {
+ CreatedOnToolsVersion = 7.2.1;
+ TestTargetID = 6D4EFB901C692C6300B96B06;
+ };
+ };
+ };
+ buildConfigurationList = 6D4EFB8C1C692C6300B96B06 /* Build configuration list for PBXProject "SwaggerClient" */;
+ compatibilityVersion = "Xcode 3.2";
+ developmentRegion = English;
+ hasScannedForEncodings = 0;
+ knownRegions = (
+ en,
+ Base,
+ );
+ mainGroup = 6D4EFB881C692C6300B96B06;
+ productRefGroup = 6D4EFB921C692C6300B96B06 /* Products */;
+ projectDirPath = "";
+ projectRoot = "";
+ targets = (
+ 6D4EFB901C692C6300B96B06 /* SwaggerClient */,
+ 6D4EFBA41C692C6300B96B06 /* SwaggerClientTests */,
+ );
+ };
+/* End PBXProject section */
+
+/* Begin PBXResourcesBuildPhase section */
+ 6D4EFB8F1C692C6300B96B06 /* Resources */ = {
+ isa = PBXResourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 6D4EFB9F1C692C6300B96B06 /* LaunchScreen.storyboard in Resources */,
+ 6D4EFB9C1C692C6300B96B06 /* Assets.xcassets in Resources */,
+ 6D4EFB9A1C692C6300B96B06 /* Main.storyboard in Resources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ 6D4EFBA31C692C6300B96B06 /* Resources */ = {
+ isa = PBXResourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXResourcesBuildPhase section */
+
+/* Begin PBXShellScriptBuildPhase section */
+ 18CD551FE8D8E7492A1C4100 /* [CP] Check Pods Manifest.lock */ = {
+ isa = PBXShellScriptBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ inputFileListPaths = (
+ );
+ inputPaths = (
+ "${PODS_PODFILE_DIR_PATH}/Podfile.lock",
+ "${PODS_ROOT}/Manifest.lock",
+ );
+ name = "[CP] Check Pods Manifest.lock";
+ outputFileListPaths = (
+ );
+ outputPaths = (
+ "$(DERIVED_FILE_DIR)/Pods-SwaggerClientTests-checkManifestLockResult.txt",
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ shellPath = /bin/sh;
+ shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
+ showEnvVarsInLog = 0;
+ };
+ 4A8C29C17AE187506924CE72 /* [CP] Embed Pods Frameworks */ = {
+ isa = PBXShellScriptBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ inputFileListPaths = (
+ );
+ inputPaths = (
+ "${SRCROOT}/Pods/Target Support Files/Pods-SwaggerClient/Pods-SwaggerClient-frameworks.sh",
+ "${BUILT_PRODUCTS_DIR}/Alamofire/Alamofire.framework",
+ "${BUILT_PRODUCTS_DIR}/PetstoreClient/PetstoreClient.framework",
+ );
+ name = "[CP] Embed Pods Frameworks";
+ outputFileListPaths = (
+ );
+ outputPaths = (
+ "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Alamofire.framework",
+ "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/PetstoreClient.framework",
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ shellPath = /bin/sh;
+ shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-SwaggerClient/Pods-SwaggerClient-frameworks.sh\"\n";
+ showEnvVarsInLog = 0;
+ };
+ E5F6E842A9A53DF5152241BC /* [CP] Check Pods Manifest.lock */ = {
+ isa = PBXShellScriptBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ inputFileListPaths = (
+ );
+ inputPaths = (
+ "${PODS_PODFILE_DIR_PATH}/Podfile.lock",
+ "${PODS_ROOT}/Manifest.lock",
+ );
+ name = "[CP] Check Pods Manifest.lock";
+ outputFileListPaths = (
+ );
+ outputPaths = (
+ "$(DERIVED_FILE_DIR)/Pods-SwaggerClient-checkManifestLockResult.txt",
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ shellPath = /bin/sh;
+ shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
+ showEnvVarsInLog = 0;
+ };
+/* End PBXShellScriptBuildPhase section */
+
+/* Begin PBXSourcesBuildPhase section */
+ 6D4EFB8D1C692C6300B96B06 /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 6D4EFB971C692C6300B96B06 /* ViewController.swift in Sources */,
+ 6D4EFB951C692C6300B96B06 /* AppDelegate.swift in Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ 6D4EFBA11C692C6300B96B06 /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ C6AAAD211D8718D00016A515 /* ISOFullDateTests.swift in Sources */,
+ 6D4EFBB71C693BED00B96B06 /* StoreAPITests.swift in Sources */,
+ 6D4EFBB91C693BFC00B96B06 /* UserAPITests.swift in Sources */,
+ 6D4EFBB51C693BE200B96B06 /* PetAPITests.swift in Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXSourcesBuildPhase section */
+
+/* Begin PBXTargetDependency section */
+ 6D4EFBA71C692C6300B96B06 /* PBXTargetDependency */ = {
+ isa = PBXTargetDependency;
+ target = 6D4EFB901C692C6300B96B06 /* SwaggerClient */;
+ targetProxy = 6D4EFBA61C692C6300B96B06 /* PBXContainerItemProxy */;
+ };
+/* End PBXTargetDependency section */
+
+/* Begin PBXVariantGroup section */
+ 6D4EFB981C692C6300B96B06 /* Main.storyboard */ = {
+ isa = PBXVariantGroup;
+ children = (
+ 6D4EFB991C692C6300B96B06 /* Base */,
+ );
+ name = Main.storyboard;
+ sourceTree = "";
+ };
+ 6D4EFB9D1C692C6300B96B06 /* LaunchScreen.storyboard */ = {
+ isa = PBXVariantGroup;
+ children = (
+ 6D4EFB9E1C692C6300B96B06 /* Base */,
+ );
+ name = LaunchScreen.storyboard;
+ sourceTree = "";
+ };
+/* End PBXVariantGroup section */
+
+/* Begin XCBuildConfiguration section */
+ 6D4EFBAC1C692C6300B96B06 /* Debug */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ALWAYS_SEARCH_USER_PATHS = NO;
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
+ CLANG_CXX_LIBRARY = "libc++";
+ CLANG_ENABLE_MODULES = YES;
+ CLANG_ENABLE_OBJC_ARC = YES;
+ CLANG_WARN_BOOL_CONVERSION = YES;
+ CLANG_WARN_CONSTANT_CONVERSION = YES;
+ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+ CLANG_WARN_EMPTY_BODY = YES;
+ CLANG_WARN_ENUM_CONVERSION = YES;
+ CLANG_WARN_INT_CONVERSION = YES;
+ CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+ CLANG_WARN_UNREACHABLE_CODE = YES;
+ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
+ COPY_PHASE_STRIP = NO;
+ DEBUG_INFORMATION_FORMAT = dwarf;
+ ENABLE_STRICT_OBJC_MSGSEND = YES;
+ ENABLE_TESTABILITY = YES;
+ GCC_C_LANGUAGE_STANDARD = gnu99;
+ GCC_DYNAMIC_NO_PIC = NO;
+ GCC_NO_COMMON_BLOCKS = YES;
+ GCC_OPTIMIZATION_LEVEL = 0;
+ GCC_PREPROCESSOR_DEFINITIONS = (
+ "DEBUG=1",
+ "$(inherited)",
+ );
+ GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+ GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+ GCC_WARN_UNDECLARED_SELECTOR = YES;
+ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+ GCC_WARN_UNUSED_FUNCTION = YES;
+ GCC_WARN_UNUSED_VARIABLE = YES;
+ IPHONEOS_DEPLOYMENT_TARGET = 9.2;
+ MTL_ENABLE_DEBUG_INFO = YES;
+ ONLY_ACTIVE_ARCH = YES;
+ SDKROOT = iphoneos;
+ SWIFT_OPTIMIZATION_LEVEL = "-Onone";
+ TARGETED_DEVICE_FAMILY = "1,2";
+ };
+ name = Debug;
+ };
+ 6D4EFBAD1C692C6300B96B06 /* Release */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ALWAYS_SEARCH_USER_PATHS = NO;
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
+ CLANG_CXX_LIBRARY = "libc++";
+ CLANG_ENABLE_MODULES = YES;
+ CLANG_ENABLE_OBJC_ARC = YES;
+ CLANG_WARN_BOOL_CONVERSION = YES;
+ CLANG_WARN_CONSTANT_CONVERSION = YES;
+ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+ CLANG_WARN_EMPTY_BODY = YES;
+ CLANG_WARN_ENUM_CONVERSION = YES;
+ CLANG_WARN_INT_CONVERSION = YES;
+ CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+ CLANG_WARN_UNREACHABLE_CODE = YES;
+ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
+ COPY_PHASE_STRIP = NO;
+ DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
+ ENABLE_NS_ASSERTIONS = NO;
+ ENABLE_STRICT_OBJC_MSGSEND = YES;
+ GCC_C_LANGUAGE_STANDARD = gnu99;
+ GCC_NO_COMMON_BLOCKS = YES;
+ GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+ GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+ GCC_WARN_UNDECLARED_SELECTOR = YES;
+ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+ GCC_WARN_UNUSED_FUNCTION = YES;
+ GCC_WARN_UNUSED_VARIABLE = YES;
+ IPHONEOS_DEPLOYMENT_TARGET = 9.2;
+ MTL_ENABLE_DEBUG_INFO = NO;
+ SDKROOT = iphoneos;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ VALIDATE_PRODUCT = YES;
+ };
+ name = Release;
+ };
+ 6D4EFBAF1C692C6300B96B06 /* Debug */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = EA2BED756A4C5389B0F46BC4 /* Pods-SwaggerClient.debug.xcconfig */;
+ buildSettings = {
+ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+ INFOPLIST_FILE = SwaggerClient/Info.plist;
+ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
+ PRODUCT_BUNDLE_IDENTIFIER = com.swagger.SwaggerClient;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ };
+ name = Debug;
+ };
+ 6D4EFBB01C692C6300B96B06 /* Release */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = F18FDCB0CAAA15B973147EED /* Pods-SwaggerClient.release.xcconfig */;
+ buildSettings = {
+ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+ INFOPLIST_FILE = SwaggerClient/Info.plist;
+ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
+ PRODUCT_BUNDLE_IDENTIFIER = com.swagger.SwaggerClient;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ };
+ name = Release;
+ };
+ 6D4EFBB21C692C6300B96B06 /* Debug */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = 78ED7EF301CC6DF958B4BFAB /* Pods-SwaggerClientTests.debug.xcconfig */;
+ buildSettings = {
+ BUNDLE_LOADER = "$(TEST_HOST)";
+ INFOPLIST_FILE = SwaggerClientTests/Info.plist;
+ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
+ PRODUCT_BUNDLE_IDENTIFIER = com.swagger.SwaggerClientTests;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ TEST_HOST = "$(BUILT_PRODUCTS_DIR)/SwaggerClient.app/SwaggerClient";
+ };
+ name = Debug;
+ };
+ 6D4EFBB31C692C6300B96B06 /* Release */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = EA32712FFC62EA5F96CC006F /* Pods-SwaggerClientTests.release.xcconfig */;
+ buildSettings = {
+ BUNDLE_LOADER = "$(TEST_HOST)";
+ INFOPLIST_FILE = SwaggerClientTests/Info.plist;
+ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
+ PRODUCT_BUNDLE_IDENTIFIER = com.swagger.SwaggerClientTests;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ TEST_HOST = "$(BUILT_PRODUCTS_DIR)/SwaggerClient.app/SwaggerClient";
+ };
+ name = Release;
+ };
+/* End XCBuildConfiguration section */
+
+/* Begin XCConfigurationList section */
+ 6D4EFB8C1C692C6300B96B06 /* Build configuration list for PBXProject "SwaggerClient" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ 6D4EFBAC1C692C6300B96B06 /* Debug */,
+ 6D4EFBAD1C692C6300B96B06 /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+ 6D4EFBAE1C692C6300B96B06 /* Build configuration list for PBXNativeTarget "SwaggerClient" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ 6D4EFBAF1C692C6300B96B06 /* Debug */,
+ 6D4EFBB01C692C6300B96B06 /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+ 6D4EFBB11C692C6300B96B06 /* Build configuration list for PBXNativeTarget "SwaggerClientTests" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ 6D4EFBB21C692C6300B96B06 /* Debug */,
+ 6D4EFBB31C692C6300B96B06 /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+/* End XCConfigurationList section */
+ };
+ rootObject = 6D4EFB891C692C6300B96B06 /* Project object */;
+}
diff --git a/CI/samples.ci/client/petstore/swift/default/SwaggerClientTests/SwaggerClient.xcodeproj/xcshareddata/xcschemes/SwaggerClient.xcscheme b/CI/samples.ci/client/petstore/swift/default/SwaggerClientTests/SwaggerClient.xcodeproj/xcshareddata/xcschemes/SwaggerClient.xcscheme
new file mode 100644
index 000000000000..5ba034cec55a
--- /dev/null
+++ b/CI/samples.ci/client/petstore/swift/default/SwaggerClientTests/SwaggerClient.xcodeproj/xcshareddata/xcschemes/SwaggerClient.xcscheme
@@ -0,0 +1,102 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/CI/samples.ci/client/petstore/swift/default/SwaggerClientTests/SwaggerClient.xcworkspace/contents.xcworkspacedata b/CI/samples.ci/client/petstore/swift/default/SwaggerClientTests/SwaggerClient.xcworkspace/contents.xcworkspacedata
new file mode 100644
index 000000000000..9b3fa18954f7
--- /dev/null
+++ b/CI/samples.ci/client/petstore/swift/default/SwaggerClientTests/SwaggerClient.xcworkspace/contents.xcworkspacedata
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
diff --git a/CI/samples.ci/client/petstore/swift/default/SwaggerClientTests/SwaggerClient/AppDelegate.swift b/CI/samples.ci/client/petstore/swift/default/SwaggerClientTests/SwaggerClient/AppDelegate.swift
new file mode 100644
index 000000000000..3769667ad9cc
--- /dev/null
+++ b/CI/samples.ci/client/petstore/swift/default/SwaggerClientTests/SwaggerClient/AppDelegate.swift
@@ -0,0 +1,46 @@
+//
+// AppDelegate.swift
+// SwaggerClient
+//
+// Created by Joseph Zuromski on 2/8/16.
+// Copyright © 2016 Swagger. All rights reserved.
+//
+
+import UIKit
+
+@UIApplicationMain
+class AppDelegate: UIResponder, UIApplicationDelegate {
+
+ var window: UIWindow?
+
+
+ func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
+ // Override point for customization after application launch.
+ return true
+ }
+
+ func applicationWillResignActive(application: UIApplication) {
+ // Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state.
+ // Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game.
+ }
+
+ func applicationDidEnterBackground(application: UIApplication) {
+ // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later.
+ // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits.
+ }
+
+ func applicationWillEnterForeground(application: UIApplication) {
+ // Called as part of the transition from the background to the inactive state; here you can undo many of the changes made on entering the background.
+ }
+
+ func applicationDidBecomeActive(application: UIApplication) {
+ // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface.
+ }
+
+ func applicationWillTerminate(application: UIApplication) {
+ // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:.
+ }
+
+
+}
+
diff --git a/CI/samples.ci/client/petstore/swift/default/SwaggerClientTests/SwaggerClient/Assets.xcassets/AppIcon.appiconset/Contents.json b/CI/samples.ci/client/petstore/swift/default/SwaggerClientTests/SwaggerClient/Assets.xcassets/AppIcon.appiconset/Contents.json
new file mode 100644
index 000000000000..eeea76c2db59
--- /dev/null
+++ b/CI/samples.ci/client/petstore/swift/default/SwaggerClientTests/SwaggerClient/Assets.xcassets/AppIcon.appiconset/Contents.json
@@ -0,0 +1,73 @@
+{
+ "images" : [
+ {
+ "idiom" : "iphone",
+ "size" : "29x29",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "iphone",
+ "size" : "29x29",
+ "scale" : "3x"
+ },
+ {
+ "idiom" : "iphone",
+ "size" : "40x40",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "iphone",
+ "size" : "40x40",
+ "scale" : "3x"
+ },
+ {
+ "idiom" : "iphone",
+ "size" : "60x60",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "iphone",
+ "size" : "60x60",
+ "scale" : "3x"
+ },
+ {
+ "idiom" : "ipad",
+ "size" : "29x29",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "ipad",
+ "size" : "29x29",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "ipad",
+ "size" : "40x40",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "ipad",
+ "size" : "40x40",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "ipad",
+ "size" : "76x76",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "ipad",
+ "size" : "76x76",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "ipad",
+ "size" : "83.5x83.5",
+ "scale" : "2x"
+ }
+ ],
+ "info" : {
+ "version" : 1,
+ "author" : "xcode"
+ }
+}
\ No newline at end of file
diff --git a/CI/samples.ci/client/petstore/swift/default/SwaggerClientTests/SwaggerClient/Base.lproj/LaunchScreen.storyboard b/CI/samples.ci/client/petstore/swift/default/SwaggerClientTests/SwaggerClient/Base.lproj/LaunchScreen.storyboard
new file mode 100644
index 000000000000..2e721e1833f0
--- /dev/null
+++ b/CI/samples.ci/client/petstore/swift/default/SwaggerClientTests/SwaggerClient/Base.lproj/LaunchScreen.storyboard
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/CI/samples.ci/client/petstore/swift/default/SwaggerClientTests/SwaggerClient/Base.lproj/Main.storyboard b/CI/samples.ci/client/petstore/swift/default/SwaggerClientTests/SwaggerClient/Base.lproj/Main.storyboard
new file mode 100644
index 000000000000..3a2a49bad8c6
--- /dev/null
+++ b/CI/samples.ci/client/petstore/swift/default/SwaggerClientTests/SwaggerClient/Base.lproj/Main.storyboard
@@ -0,0 +1,25 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/CI/samples.ci/client/petstore/swift/default/SwaggerClientTests/SwaggerClient/Info.plist b/CI/samples.ci/client/petstore/swift/default/SwaggerClientTests/SwaggerClient/Info.plist
new file mode 100644
index 000000000000..bb71d00fa8ae
--- /dev/null
+++ b/CI/samples.ci/client/petstore/swift/default/SwaggerClientTests/SwaggerClient/Info.plist
@@ -0,0 +1,59 @@
+
+
+
+
+ CFBundleDevelopmentRegion
+ en
+ CFBundleExecutable
+ $(EXECUTABLE_NAME)
+ CFBundleIdentifier
+ $(PRODUCT_BUNDLE_IDENTIFIER)
+ CFBundleInfoDictionaryVersion
+ 6.0
+ CFBundleName
+ $(PRODUCT_NAME)
+ CFBundlePackageType
+ APPL
+ CFBundleShortVersionString
+ 1.0
+ CFBundleSignature
+ ????
+ CFBundleVersion
+ 1
+ LSRequiresIPhoneOS
+
+ UILaunchStoryboardName
+ LaunchScreen
+ UIMainStoryboardFile
+ Main
+ UIRequiredDeviceCapabilities
+
+ armv7
+
+ UISupportedInterfaceOrientations
+
+ UIInterfaceOrientationPortrait
+ UIInterfaceOrientationLandscapeLeft
+ UIInterfaceOrientationLandscapeRight
+
+ UISupportedInterfaceOrientations~ipad
+
+ UIInterfaceOrientationPortrait
+ UIInterfaceOrientationPortraitUpsideDown
+ UIInterfaceOrientationLandscapeLeft
+ UIInterfaceOrientationLandscapeRight
+
+ NSAppTransportSecurity
+
+ NSExceptionDomains
+
+ petstore.swagger.io
+
+
+ NSTemporaryExceptionAllowsInsecureHTTPLoads
+
+
+
+
+
+
diff --git a/CI/samples.ci/client/petstore/swift/default/SwaggerClientTests/SwaggerClient/ViewController.swift b/CI/samples.ci/client/petstore/swift/default/SwaggerClientTests/SwaggerClient/ViewController.swift
new file mode 100644
index 000000000000..cd7e9a167615
--- /dev/null
+++ b/CI/samples.ci/client/petstore/swift/default/SwaggerClientTests/SwaggerClient/ViewController.swift
@@ -0,0 +1,25 @@
+//
+// ViewController.swift
+// SwaggerClient
+//
+// Created by Joseph Zuromski on 2/8/16.
+// Copyright © 2016 Swagger. All rights reserved.
+//
+
+import UIKit
+
+class ViewController: UIViewController {
+
+ override func viewDidLoad() {
+ super.viewDidLoad()
+ // Do any additional setup after loading the view, typically from a nib.
+ }
+
+ override func didReceiveMemoryWarning() {
+ super.didReceiveMemoryWarning()
+ // Dispose of any resources that can be recreated.
+ }
+
+
+}
+
diff --git a/CI/samples.ci/client/petstore/swift/default/SwaggerClientTests/SwaggerClientTests/ISOFullDateTests.swift b/CI/samples.ci/client/petstore/swift/default/SwaggerClientTests/SwaggerClientTests/ISOFullDateTests.swift
new file mode 100644
index 000000000000..67d841cc7c6d
--- /dev/null
+++ b/CI/samples.ci/client/petstore/swift/default/SwaggerClientTests/SwaggerClientTests/ISOFullDateTests.swift
@@ -0,0 +1,83 @@
+/// Copyright 2012-2016 (C) Butterfly Network, Inc.
+
+import PetstoreClient
+import XCTest
+@testable import SwaggerClient
+
+final class ISOFullDateTests: XCTestCase {
+
+ var fullDate = ISOFullDate(year: 1999, month: 12, day: 31)
+
+ func testValidDate() {
+ XCTAssertEqual(fullDate.year, 1999)
+ XCTAssertEqual(fullDate.month, 12)
+ XCTAssertEqual(fullDate.day, 31)
+ }
+
+ func testFromDate() {
+ let date = NSDate()
+ let fullDate = ISOFullDate.from(date: date)
+
+ guard let calendar = NSCalendar(identifier: NSCalendarIdentifierGregorian) else {
+ XCTFail()
+ return
+ }
+
+ let components = calendar.components(
+ [
+ .Year,
+ .Month,
+ .Day,
+ ],
+ fromDate: date
+ )
+
+ XCTAssertEqual(fullDate?.year, components.year)
+ XCTAssertEqual(fullDate?.month, components.month)
+ XCTAssertEqual(fullDate?.day, components.day)
+ }
+
+ func testFromString() {
+ let string = "1999-12-31"
+ let fullDate = ISOFullDate.from(string: string)
+ XCTAssertEqual(fullDate?.year, 1999)
+ XCTAssertEqual(fullDate?.month, 12)
+ XCTAssertEqual(fullDate?.day, 31)
+ }
+
+ func testFromInvalidString() {
+ XCTAssertNil(ISOFullDate.from(string: "1999-12"))
+ }
+
+ func testToDate() {
+ let fullDate = ISOFullDate(year: 1999, month: 12, day: 31)
+
+ guard let date = fullDate.toDate(),
+ let calendar = NSCalendar(identifier: NSCalendarIdentifierGregorian) else {
+ XCTFail()
+ return
+ }
+
+ let components = calendar.components(
+ [
+ .Year,
+ .Month,
+ .Day,
+ ],
+ fromDate: date
+ )
+
+ XCTAssertEqual(fullDate.year, components.year)
+ XCTAssertEqual(fullDate.month, components.month)
+ XCTAssertEqual(fullDate.day, components.day)
+ }
+
+ func testDescription() {
+ XCTAssertEqual(fullDate.description, "1999-12-31")
+ }
+
+ func testEncodeToJSON() {
+ XCTAssertEqual(fullDate.encodeToJSON() as? String, "1999-12-31")
+ }
+
+}
diff --git a/CI/samples.ci/client/petstore/swift/default/SwaggerClientTests/SwaggerClientTests/Info.plist b/CI/samples.ci/client/petstore/swift/default/SwaggerClientTests/SwaggerClientTests/Info.plist
new file mode 100644
index 000000000000..802f84f540d0
--- /dev/null
+++ b/CI/samples.ci/client/petstore/swift/default/SwaggerClientTests/SwaggerClientTests/Info.plist
@@ -0,0 +1,36 @@
+
+
+
+
+ CFBundleDevelopmentRegion
+ en
+ CFBundleExecutable
+ $(EXECUTABLE_NAME)
+ CFBundleIdentifier
+ $(PRODUCT_BUNDLE_IDENTIFIER)
+ CFBundleInfoDictionaryVersion
+ 6.0
+ CFBundleName
+ $(PRODUCT_NAME)
+ CFBundlePackageType
+ BNDL
+ CFBundleShortVersionString
+ 1.0
+ CFBundleSignature
+ ????
+ CFBundleVersion
+ 1
+ NSAppTransportSecurity
+
+ NSExceptionDomains
+
+ petstore.swagger.io
+
+
+ NSTemporaryExceptionAllowsInsecureHTTPLoads
+
+
+
+
+
+
diff --git a/CI/samples.ci/client/petstore/swift/default/SwaggerClientTests/SwaggerClientTests/PetAPITests.swift b/CI/samples.ci/client/petstore/swift/default/SwaggerClientTests/SwaggerClientTests/PetAPITests.swift
new file mode 100644
index 000000000000..7446c53aa3b0
--- /dev/null
+++ b/CI/samples.ci/client/petstore/swift/default/SwaggerClientTests/SwaggerClientTests/PetAPITests.swift
@@ -0,0 +1,86 @@
+//
+// PetAPITests.swift
+// SwaggerClient
+//
+// Created by Robin Eggenkamp on 5/21/16.
+// Copyright © 2016 Swagger. All rights reserved.
+//
+
+import PetstoreClient
+import XCTest
+@testable import SwaggerClient
+
+class PetAPITests: XCTestCase {
+
+ let testTimeout = 10.0
+
+ override func setUp() {
+ super.setUp()
+ // Put setup code here. This method is called before the invocation of each test method in the class.
+ }
+
+ override func tearDown() {
+ // Put teardown code here. This method is called after the invocation of each test method in the class.
+ super.tearDown()
+ }
+
+ func test1CreatePet() {
+ let expectation = self.expectationWithDescription("testCreatePet")
+
+ let newPet = Pet()
+ let category = PetstoreClient.Category()
+ category.id = 1234
+ category.name = "eyeColor"
+ newPet.category = category
+ newPet.id = 1000
+ newPet.name = "Fluffy"
+ newPet.status = .Available
+
+ PetAPI.addPet(body: newPet) { (error) in
+ guard error == nil else {
+ XCTFail("error creating pet")
+ return
+ }
+
+ expectation.fulfill()
+ }
+
+ self.waitForExpectationsWithTimeout(testTimeout, handler: nil)
+ }
+
+ func test2GetPet() {
+ let expectation = self.expectationWithDescription("testGetPet")
+
+ PetAPI.getPetById(petId: 1000) { (pet, error) in
+ guard error == nil else {
+ XCTFail("error retrieving pet")
+ return
+ }
+
+ if let pet = pet {
+ XCTAssert(pet.id == 1000, "invalid id")
+ XCTAssert(pet.name == "Fluffy", "invalid name")
+
+ expectation.fulfill()
+ }
+ }
+
+ self.waitForExpectationsWithTimeout(testTimeout, handler: nil)
+ }
+
+ func test3DeletePet() {
+ let expectation = self.expectationWithDescription("testDeletePet")
+
+ PetAPI.deletePet(petId: 1000) { (error) in
+ guard error == nil else {
+ XCTFail("error deleting pet")
+ return
+ }
+
+ expectation.fulfill()
+ }
+
+ self.waitForExpectationsWithTimeout(testTimeout, handler: nil)
+ }
+
+}
diff --git a/CI/samples.ci/client/petstore/swift/default/SwaggerClientTests/SwaggerClientTests/StoreAPITests.swift b/CI/samples.ci/client/petstore/swift/default/SwaggerClientTests/SwaggerClientTests/StoreAPITests.swift
new file mode 100644
index 000000000000..ba235ca32db7
--- /dev/null
+++ b/CI/samples.ci/client/petstore/swift/default/SwaggerClientTests/SwaggerClientTests/StoreAPITests.swift
@@ -0,0 +1,122 @@
+//
+// StoreAPITests.swift
+// SwaggerClient
+//
+// Created by Robin Eggenkamp on 5/21/16.
+// Copyright © 2016 Swagger. All rights reserved.
+//
+
+import PetstoreClient
+import XCTest
+@testable import SwaggerClient
+
+class StoreAPITests: XCTestCase {
+
+ let isoDateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSSZZZZZ"
+
+ let testTimeout = 10.0
+
+ func test1PlaceOrder() {
+ let expectation = self.expectationWithDescription("testPlaceOrder")
+ let shipDate = NSDate()
+
+ let newOrder = Order()
+ newOrder.id = 1000
+ newOrder.petId = 1000
+ newOrder.complete = false
+ newOrder.quantity = 10
+ newOrder.shipDate = shipDate
+ // use explicit naming to reference the enum so that we test we don't regress on enum naming
+ newOrder.status = Order.Status.Placed
+
+ StoreAPI.placeOrder(body: newOrder) { (order, error) in
+ guard error == nil else {
+ XCTFail("error placing order: \(error.debugDescription)")
+ return
+ }
+
+ if let order = order {
+ XCTAssert(order.id == 1000, "invalid id")
+ XCTAssert(order.quantity == 10, "invalid quantity")
+ XCTAssert(order.status == .Placed, "invalid status")
+ XCTAssert(order.shipDate!.isEqual(shipDate, format: self.isoDateFormat),
+ "Date should be idempotent")
+
+ expectation.fulfill()
+ }
+ }
+
+ self.waitForExpectationsWithTimeout(testTimeout, handler: nil)
+ }
+
+ func test2GetOrder() {
+ let expectation = self.expectationWithDescription("testGetOrder")
+
+ StoreAPI.getOrderById(orderId: "1000") { (order, error) in
+ guard error == nil else {
+ XCTFail("error retrieving order: \(error.debugDescription)")
+ return
+ }
+
+ if let order = order {
+ XCTAssert(order.id == 1000, "invalid id")
+ XCTAssert(order.quantity == 10, "invalid quantity")
+ XCTAssert(order.status == .Placed, "invalid status")
+
+ expectation.fulfill()
+ }
+ }
+
+ self.waitForExpectationsWithTimeout(testTimeout, handler: nil)
+ }
+
+ func test3DeleteOrder() {
+ let expectation = self.expectationWithDescription("testDeleteOrder")
+
+ StoreAPI.deleteOrder(orderId: "1000") { (error) in
+ guard error == nil else {
+ XCTFail("error deleting order")
+ return
+ }
+
+ expectation.fulfill()
+ }
+
+ self.waitForExpectationsWithTimeout(testTimeout, handler: nil)
+ }
+
+ func testDownloadProgress() {
+ let responseExpectation = self.expectationWithDescription("obtain response")
+ let progressExpectation = self.expectationWithDescription("obtain progress")
+ let requestBuilder = StoreAPI.getOrderByIdWithRequestBuilder(orderId: "1000")
+
+ requestBuilder.onProgressReady = { (progress) in
+ progressExpectation.fulfill()
+ }
+
+ requestBuilder.execute { (response, error) in
+ responseExpectation.fulfill()
+ }
+
+ self.waitForExpectationsWithTimeout(testTimeout, handler: nil)
+ }
+
+}
+
+private extension NSDate {
+
+ /**
+ Returns true if the dates are equal given the format string.
+
+ - parameter date: The date to compare to.
+ - parameter format: The format string to use to compare.
+
+ - returns: true if the dates are equal, given the format string.
+ */
+ func isEqual(date: NSDate, format: String) -> Bool {
+ let fmt = NSDateFormatter()
+ fmt.dateFormat = format
+ return fmt.stringFromDate(self).isEqual(fmt.stringFromDate(date))
+ }
+
+}
diff --git a/CI/samples.ci/client/petstore/swift/default/SwaggerClientTests/SwaggerClientTests/UserAPITests.swift b/CI/samples.ci/client/petstore/swift/default/SwaggerClientTests/SwaggerClientTests/UserAPITests.swift
new file mode 100644
index 000000000000..fc8b19d66299
--- /dev/null
+++ b/CI/samples.ci/client/petstore/swift/default/SwaggerClientTests/SwaggerClientTests/UserAPITests.swift
@@ -0,0 +1,119 @@
+//
+// UserAPITests.swift
+// SwaggerClient
+//
+// Created by Robin Eggenkamp on 5/21/16.
+// Copyright © 2016 Swagger. All rights reserved.
+//
+
+import PetstoreClient
+import XCTest
+@testable import SwaggerClient
+
+class UserAPITests: XCTestCase {
+
+ let testTimeout = 10.0
+
+ func testLogin() {
+ let expectation = self.expectationWithDescription("testLogin")
+
+ UserAPI.loginUser(username: "swiftTester", password: "swift") { (_, error) in
+ guard error == nil else {
+ XCTFail("error logging in")
+ return
+ }
+
+ expectation.fulfill()
+ }
+
+ self.waitForExpectationsWithTimeout(testTimeout, handler: nil)
+ }
+
+ func testLogout() {
+ let expectation = self.expectationWithDescription("testLogout")
+
+ UserAPI.logoutUser { (error) in
+ guard error == nil else {
+ XCTFail("error logging out")
+ return
+ }
+
+ expectation.fulfill()
+ }
+
+ self.waitForExpectationsWithTimeout(testTimeout, handler: nil)
+ }
+
+ func test1CreateUser() {
+ let expectation = self.expectationWithDescription("testCreateUser")
+
+ let newUser = User()
+ newUser.email = "test@test.com"
+ // TODO comment out the following as dateOfBirth has been removed
+ // from petstore.json, we'll need to add back the test after switching
+ // to petstore-with-fake-endpoints-models-for-testing.yaml
+ ////newUser.dateOfBirth = ISOFullDate.from(string: "1999-12-31")
+ newUser.firstName = "Test"
+ newUser.lastName = "Tester"
+ newUser.id = 1000
+ newUser.password = "test!"
+ newUser.phone = "867-5309"
+ newUser.username = "test@test.com"
+ newUser.userStatus = 0
+
+ UserAPI.createUser(body: newUser) { (error) in
+ guard error == nil else {
+ XCTFail("error creating user")
+ return
+ }
+
+ expectation.fulfill()
+ }
+
+ self.waitForExpectationsWithTimeout(testTimeout, handler: nil)
+ }
+
+ func test2GetUser() {
+ let expectation = self.expectationWithDescription("testGetUser")
+
+ UserAPI.getUserByName(username: "test@test.com") { (user, error) in
+ guard error == nil else {
+ XCTFail("error getting user")
+ return
+ }
+
+ if let user = user {
+ XCTAssert(user.userStatus == 0, "invalid userStatus")
+ XCTAssert(user.email == "test@test.com", "invalid email")
+ XCTAssert(user.firstName == "Test", "invalid firstName")
+ XCTAssert(user.lastName == "Tester", "invalid lastName")
+ XCTAssert(user.password == "test!", "invalid password")
+ XCTAssert(user.phone == "867-5309", "invalid phone")
+ // TODO comment out the following as dateOfBirth has been removed
+ // from petstore.json, we'll need to add back the test after switching
+ // to petstore-with-fake-endpoints-models-for-testing.yaml
+ //XCTAssert(user.dateOfBirth?.description == "1999-12-31", "invalid date of birth")
+
+ expectation.fulfill()
+ }
+ }
+
+ self.waitForExpectationsWithTimeout(testTimeout, handler: nil)
+ }
+
+ func test3DeleteUser() {
+ let expectation = self.expectationWithDescription("testDeleteUser")
+
+ UserAPI.deleteUser(username: "test@test.com") { (error) in
+ guard error == nil else {
+ XCTFail("error deleting user")
+ return
+ }
+
+ expectation.fulfill()
+ }
+
+ self.waitForExpectationsWithTimeout(testTimeout, handler: nil)
+ }
+
+}
diff --git a/CI/samples.ci/client/petstore/swift/default/SwaggerClientTests/pom.xml b/CI/samples.ci/client/petstore/swift/default/SwaggerClientTests/pom.xml
new file mode 100644
index 000000000000..741fd2170882
--- /dev/null
+++ b/CI/samples.ci/client/petstore/swift/default/SwaggerClientTests/pom.xml
@@ -0,0 +1,43 @@
+
+ 4.0.0
+ io.swagger
+ SwiftPetstoreClientTests
+ pom
+ 1.0-SNAPSHOT
+ Swift Swagger Petstore Client
+
+
+
+ maven-dependency-plugin
+
+
+ package
+
+ copy-dependencies
+
+
+ ${project.build.directory}
+
+
+
+
+
+ org.codehaus.mojo
+ exec-maven-plugin
+ 1.2.1
+
+
+ xcodebuild-test
+ integration-test
+
+ exec
+
+
+ ./run_xcodebuild.sh
+
+
+
+
+
+
+
diff --git a/CI/samples.ci/client/petstore/swift/default/SwaggerClientTests/run_xcodebuild.sh b/CI/samples.ci/client/petstore/swift/default/SwaggerClientTests/run_xcodebuild.sh
new file mode 100755
index 000000000000..edcc142971b7
--- /dev/null
+++ b/CI/samples.ci/client/petstore/swift/default/SwaggerClientTests/run_xcodebuild.sh
@@ -0,0 +1,5 @@
+#!/bin/sh
+
+#pod install && xcodebuild clean test -workspace "SwaggerClient.xcworkspace" -scheme "SwaggerClient" -sdk iphonesimulator GCC_INSTRUMENT_PROGRAM_FLOW_ARCS=YES GCC_GENERATE_TEST_COVERAGE_FILES=YES | xcpretty
+
+pod install && xcodebuild -workspace "SwaggerClient.xcworkspace" -scheme "SwaggerClient" test -destination "platform=iOS Simulator,name=iPhone 6,OS=9.3" | xcpretty
diff --git a/CI/samples.ci/client/petstore/swift/promisekit/SwaggerClientTests/Podfile b/CI/samples.ci/client/petstore/swift/promisekit/SwaggerClientTests/Podfile
new file mode 100644
index 000000000000..218aae4920f5
--- /dev/null
+++ b/CI/samples.ci/client/petstore/swift/promisekit/SwaggerClientTests/Podfile
@@ -0,0 +1,11 @@
+use_frameworks!
+source 'https://github.com/CocoaPods/Specs.git'
+
+target 'SwaggerClient' do
+ pod "PetstoreClient", :path => "../"
+
+ target 'SwaggerClientTests' do
+ inherit! :search_paths
+ end
+end
+
diff --git a/samples/client/petstore/swift/promisekit/SwaggerClientTests/Pods/Alamofire/README.md b/CI/samples.ci/client/petstore/swift/promisekit/SwaggerClientTests/Pods/Alamofire/README.md
similarity index 100%
rename from samples/client/petstore/swift/promisekit/SwaggerClientTests/Pods/Alamofire/README.md
rename to CI/samples.ci/client/petstore/swift/promisekit/SwaggerClientTests/Pods/Alamofire/README.md
diff --git a/samples/client/petstore/swift/promisekit/SwaggerClientTests/Pods/Alamofire/Source/Alamofire.swift b/CI/samples.ci/client/petstore/swift/promisekit/SwaggerClientTests/Pods/Alamofire/Source/Alamofire.swift
similarity index 100%
rename from samples/client/petstore/swift/promisekit/SwaggerClientTests/Pods/Alamofire/Source/Alamofire.swift
rename to CI/samples.ci/client/petstore/swift/promisekit/SwaggerClientTests/Pods/Alamofire/Source/Alamofire.swift
diff --git a/samples/client/petstore/swift/promisekit/SwaggerClientTests/Pods/Alamofire/Source/Download.swift b/CI/samples.ci/client/petstore/swift/promisekit/SwaggerClientTests/Pods/Alamofire/Source/Download.swift
similarity index 100%
rename from samples/client/petstore/swift/promisekit/SwaggerClientTests/Pods/Alamofire/Source/Download.swift
rename to CI/samples.ci/client/petstore/swift/promisekit/SwaggerClientTests/Pods/Alamofire/Source/Download.swift
diff --git a/samples/client/petstore/swift/promisekit/SwaggerClientTests/Pods/Alamofire/Source/Manager.swift b/CI/samples.ci/client/petstore/swift/promisekit/SwaggerClientTests/Pods/Alamofire/Source/Manager.swift
similarity index 100%
rename from samples/client/petstore/swift/promisekit/SwaggerClientTests/Pods/Alamofire/Source/Manager.swift
rename to CI/samples.ci/client/petstore/swift/promisekit/SwaggerClientTests/Pods/Alamofire/Source/Manager.swift
diff --git a/samples/client/petstore/swift/promisekit/SwaggerClientTests/Pods/Alamofire/Source/MultipartFormData.swift b/CI/samples.ci/client/petstore/swift/promisekit/SwaggerClientTests/Pods/Alamofire/Source/MultipartFormData.swift
similarity index 100%
rename from samples/client/petstore/swift/promisekit/SwaggerClientTests/Pods/Alamofire/Source/MultipartFormData.swift
rename to CI/samples.ci/client/petstore/swift/promisekit/SwaggerClientTests/Pods/Alamofire/Source/MultipartFormData.swift
diff --git a/samples/client/petstore/swift/promisekit/SwaggerClientTests/Pods/Alamofire/Source/NetworkReachabilityManager.swift b/CI/samples.ci/client/petstore/swift/promisekit/SwaggerClientTests/Pods/Alamofire/Source/NetworkReachabilityManager.swift
similarity index 100%
rename from samples/client/petstore/swift/promisekit/SwaggerClientTests/Pods/Alamofire/Source/NetworkReachabilityManager.swift
rename to CI/samples.ci/client/petstore/swift/promisekit/SwaggerClientTests/Pods/Alamofire/Source/NetworkReachabilityManager.swift
diff --git a/samples/client/petstore/swift/promisekit/SwaggerClientTests/Pods/Alamofire/Source/Notifications.swift b/CI/samples.ci/client/petstore/swift/promisekit/SwaggerClientTests/Pods/Alamofire/Source/Notifications.swift
similarity index 100%
rename from samples/client/petstore/swift/promisekit/SwaggerClientTests/Pods/Alamofire/Source/Notifications.swift
rename to CI/samples.ci/client/petstore/swift/promisekit/SwaggerClientTests/Pods/Alamofire/Source/Notifications.swift
diff --git a/samples/client/petstore/swift/promisekit/SwaggerClientTests/Pods/Alamofire/Source/ParameterEncoding.swift b/CI/samples.ci/client/petstore/swift/promisekit/SwaggerClientTests/Pods/Alamofire/Source/ParameterEncoding.swift
similarity index 100%
rename from samples/client/petstore/swift/promisekit/SwaggerClientTests/Pods/Alamofire/Source/ParameterEncoding.swift
rename to CI/samples.ci/client/petstore/swift/promisekit/SwaggerClientTests/Pods/Alamofire/Source/ParameterEncoding.swift
diff --git a/samples/client/petstore/swift/promisekit/SwaggerClientTests/Pods/Alamofire/Source/Request.swift b/CI/samples.ci/client/petstore/swift/promisekit/SwaggerClientTests/Pods/Alamofire/Source/Request.swift
similarity index 100%
rename from samples/client/petstore/swift/promisekit/SwaggerClientTests/Pods/Alamofire/Source/Request.swift
rename to CI/samples.ci/client/petstore/swift/promisekit/SwaggerClientTests/Pods/Alamofire/Source/Request.swift
diff --git a/samples/client/petstore/swift/promisekit/SwaggerClientTests/Pods/Alamofire/Source/Response.swift b/CI/samples.ci/client/petstore/swift/promisekit/SwaggerClientTests/Pods/Alamofire/Source/Response.swift
similarity index 100%
rename from samples/client/petstore/swift/promisekit/SwaggerClientTests/Pods/Alamofire/Source/Response.swift
rename to CI/samples.ci/client/petstore/swift/promisekit/SwaggerClientTests/Pods/Alamofire/Source/Response.swift
diff --git a/samples/client/petstore/swift/promisekit/SwaggerClientTests/Pods/Alamofire/Source/ResponseSerialization.swift b/CI/samples.ci/client/petstore/swift/promisekit/SwaggerClientTests/Pods/Alamofire/Source/ResponseSerialization.swift
similarity index 100%
rename from samples/client/petstore/swift/promisekit/SwaggerClientTests/Pods/Alamofire/Source/ResponseSerialization.swift
rename to CI/samples.ci/client/petstore/swift/promisekit/SwaggerClientTests/Pods/Alamofire/Source/ResponseSerialization.swift
diff --git a/samples/client/petstore/swift/promisekit/SwaggerClientTests/Pods/Alamofire/Source/Result.swift b/CI/samples.ci/client/petstore/swift/promisekit/SwaggerClientTests/Pods/Alamofire/Source/Result.swift
similarity index 100%
rename from samples/client/petstore/swift/promisekit/SwaggerClientTests/Pods/Alamofire/Source/Result.swift
rename to CI/samples.ci/client/petstore/swift/promisekit/SwaggerClientTests/Pods/Alamofire/Source/Result.swift
diff --git a/samples/client/petstore/swift/promisekit/SwaggerClientTests/Pods/Alamofire/Source/ServerTrustPolicy.swift b/CI/samples.ci/client/petstore/swift/promisekit/SwaggerClientTests/Pods/Alamofire/Source/ServerTrustPolicy.swift
similarity index 100%
rename from samples/client/petstore/swift/promisekit/SwaggerClientTests/Pods/Alamofire/Source/ServerTrustPolicy.swift
rename to CI/samples.ci/client/petstore/swift/promisekit/SwaggerClientTests/Pods/Alamofire/Source/ServerTrustPolicy.swift
diff --git a/samples/client/petstore/swift/promisekit/SwaggerClientTests/Pods/Alamofire/Source/Stream.swift b/CI/samples.ci/client/petstore/swift/promisekit/SwaggerClientTests/Pods/Alamofire/Source/Stream.swift
similarity index 100%
rename from samples/client/petstore/swift/promisekit/SwaggerClientTests/Pods/Alamofire/Source/Stream.swift
rename to CI/samples.ci/client/petstore/swift/promisekit/SwaggerClientTests/Pods/Alamofire/Source/Stream.swift
diff --git a/samples/client/petstore/swift/promisekit/SwaggerClientTests/Pods/Alamofire/Source/Timeline.swift b/CI/samples.ci/client/petstore/swift/promisekit/SwaggerClientTests/Pods/Alamofire/Source/Timeline.swift
similarity index 100%
rename from samples/client/petstore/swift/promisekit/SwaggerClientTests/Pods/Alamofire/Source/Timeline.swift
rename to CI/samples.ci/client/petstore/swift/promisekit/SwaggerClientTests/Pods/Alamofire/Source/Timeline.swift
diff --git a/samples/client/petstore/swift/promisekit/SwaggerClientTests/Pods/Alamofire/Source/Upload.swift b/CI/samples.ci/client/petstore/swift/promisekit/SwaggerClientTests/Pods/Alamofire/Source/Upload.swift
similarity index 100%
rename from samples/client/petstore/swift/promisekit/SwaggerClientTests/Pods/Alamofire/Source/Upload.swift
rename to CI/samples.ci/client/petstore/swift/promisekit/SwaggerClientTests/Pods/Alamofire/Source/Upload.swift
diff --git a/samples/client/petstore/swift/promisekit/SwaggerClientTests/Pods/Alamofire/Source/Validation.swift b/CI/samples.ci/client/petstore/swift/promisekit/SwaggerClientTests/Pods/Alamofire/Source/Validation.swift
similarity index 100%
rename from samples/client/petstore/swift/promisekit/SwaggerClientTests/Pods/Alamofire/Source/Validation.swift
rename to CI/samples.ci/client/petstore/swift/promisekit/SwaggerClientTests/Pods/Alamofire/Source/Validation.swift
diff --git a/samples/client/petstore/swift/promisekit/SwaggerClientTests/Pods/Local Podspecs/PetstoreClient.podspec.json b/CI/samples.ci/client/petstore/swift/promisekit/SwaggerClientTests/Pods/Local Podspecs/PetstoreClient.podspec.json
similarity index 100%
rename from samples/client/petstore/swift/promisekit/SwaggerClientTests/Pods/Local Podspecs/PetstoreClient.podspec.json
rename to CI/samples.ci/client/petstore/swift/promisekit/SwaggerClientTests/Pods/Local Podspecs/PetstoreClient.podspec.json
diff --git a/samples/client/petstore/swift/promisekit/SwaggerClientTests/Pods/Manifest.lock b/CI/samples.ci/client/petstore/swift/promisekit/SwaggerClientTests/Pods/Manifest.lock
similarity index 100%
rename from samples/client/petstore/swift/promisekit/SwaggerClientTests/Pods/Manifest.lock
rename to CI/samples.ci/client/petstore/swift/promisekit/SwaggerClientTests/Pods/Manifest.lock
diff --git a/samples/client/petstore/swift/promisekit/SwaggerClientTests/Pods/Pods.xcodeproj/project.pbxproj b/CI/samples.ci/client/petstore/swift/promisekit/SwaggerClientTests/Pods/Pods.xcodeproj/project.pbxproj
similarity index 100%
rename from samples/client/petstore/swift/promisekit/SwaggerClientTests/Pods/Pods.xcodeproj/project.pbxproj
rename to CI/samples.ci/client/petstore/swift/promisekit/SwaggerClientTests/Pods/Pods.xcodeproj/project.pbxproj
diff --git a/samples/client/petstore/swift/promisekit/SwaggerClientTests/Pods/Target Support Files/Alamofire/Alamofire-umbrella.h b/CI/samples.ci/client/petstore/swift/promisekit/SwaggerClientTests/Pods/Target Support Files/Alamofire/Alamofire-umbrella.h
similarity index 100%
rename from samples/client/petstore/swift/promisekit/SwaggerClientTests/Pods/Target Support Files/Alamofire/Alamofire-umbrella.h
rename to CI/samples.ci/client/petstore/swift/promisekit/SwaggerClientTests/Pods/Target Support Files/Alamofire/Alamofire-umbrella.h
diff --git a/samples/client/petstore/swift/promisekit/SwaggerClientTests/Pods/Target Support Files/Alamofire/Info.plist b/CI/samples.ci/client/petstore/swift/promisekit/SwaggerClientTests/Pods/Target Support Files/Alamofire/Info.plist
similarity index 100%
rename from samples/client/petstore/swift/promisekit/SwaggerClientTests/Pods/Target Support Files/Alamofire/Info.plist
rename to CI/samples.ci/client/petstore/swift/promisekit/SwaggerClientTests/Pods/Target Support Files/Alamofire/Info.plist
diff --git a/samples/client/petstore/swift/promisekit/SwaggerClientTests/Pods/Target Support Files/OMGHTTPURLRQ/OMGHTTPURLRQ-umbrella.h b/CI/samples.ci/client/petstore/swift/promisekit/SwaggerClientTests/Pods/Target Support Files/OMGHTTPURLRQ/OMGHTTPURLRQ-umbrella.h
similarity index 100%
rename from samples/client/petstore/swift/promisekit/SwaggerClientTests/Pods/Target Support Files/OMGHTTPURLRQ/OMGHTTPURLRQ-umbrella.h
rename to CI/samples.ci/client/petstore/swift/promisekit/SwaggerClientTests/Pods/Target Support Files/OMGHTTPURLRQ/OMGHTTPURLRQ-umbrella.h
diff --git a/samples/client/petstore/swift/promisekit/SwaggerClientTests/Pods/Target Support Files/PetstoreClient/PetstoreClient-umbrella.h b/CI/samples.ci/client/petstore/swift/promisekit/SwaggerClientTests/Pods/Target Support Files/PetstoreClient/PetstoreClient-umbrella.h
similarity index 100%
rename from samples/client/petstore/swift/promisekit/SwaggerClientTests/Pods/Target Support Files/PetstoreClient/PetstoreClient-umbrella.h
rename to CI/samples.ci/client/petstore/swift/promisekit/SwaggerClientTests/Pods/Target Support Files/PetstoreClient/PetstoreClient-umbrella.h
diff --git a/samples/client/petstore/swift/promisekit/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient/Pods-SwaggerClient-acknowledgements.markdown b/CI/samples.ci/client/petstore/swift/promisekit/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient/Pods-SwaggerClient-acknowledgements.markdown
similarity index 100%
rename from samples/client/petstore/swift/promisekit/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient/Pods-SwaggerClient-acknowledgements.markdown
rename to CI/samples.ci/client/petstore/swift/promisekit/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient/Pods-SwaggerClient-acknowledgements.markdown
diff --git a/samples/client/petstore/swift/promisekit/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient/Pods-SwaggerClient-acknowledgements.plist b/CI/samples.ci/client/petstore/swift/promisekit/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient/Pods-SwaggerClient-acknowledgements.plist
similarity index 100%
rename from samples/client/petstore/swift/promisekit/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient/Pods-SwaggerClient-acknowledgements.plist
rename to CI/samples.ci/client/petstore/swift/promisekit/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient/Pods-SwaggerClient-acknowledgements.plist
diff --git a/samples/client/petstore/swift/promisekit/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient/Pods-SwaggerClient-resources.sh b/CI/samples.ci/client/petstore/swift/promisekit/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient/Pods-SwaggerClient-resources.sh
similarity index 100%
rename from samples/client/petstore/swift/promisekit/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient/Pods-SwaggerClient-resources.sh
rename to CI/samples.ci/client/petstore/swift/promisekit/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient/Pods-SwaggerClient-resources.sh
diff --git a/samples/client/petstore/swift/promisekit/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient/Pods-SwaggerClient-umbrella.h b/CI/samples.ci/client/petstore/swift/promisekit/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient/Pods-SwaggerClient-umbrella.h
similarity index 100%
rename from samples/client/petstore/swift/promisekit/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient/Pods-SwaggerClient-umbrella.h
rename to CI/samples.ci/client/petstore/swift/promisekit/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient/Pods-SwaggerClient-umbrella.h
diff --git a/samples/client/petstore/swift/promisekit/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient/Pods-SwaggerClient.debug.xcconfig b/CI/samples.ci/client/petstore/swift/promisekit/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient/Pods-SwaggerClient.debug.xcconfig
similarity index 100%
rename from samples/client/petstore/swift/promisekit/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient/Pods-SwaggerClient.debug.xcconfig
rename to CI/samples.ci/client/petstore/swift/promisekit/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient/Pods-SwaggerClient.debug.xcconfig
diff --git a/samples/client/petstore/swift/promisekit/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient/Pods-SwaggerClient.release.xcconfig b/CI/samples.ci/client/petstore/swift/promisekit/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient/Pods-SwaggerClient.release.xcconfig
similarity index 100%
rename from samples/client/petstore/swift/promisekit/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient/Pods-SwaggerClient.release.xcconfig
rename to CI/samples.ci/client/petstore/swift/promisekit/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient/Pods-SwaggerClient.release.xcconfig
diff --git a/samples/client/petstore/swift/promisekit/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClientTests/Pods-SwaggerClientTests-resources.sh b/CI/samples.ci/client/petstore/swift/promisekit/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClientTests/Pods-SwaggerClientTests-resources.sh
similarity index 100%
rename from samples/client/petstore/swift/promisekit/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClientTests/Pods-SwaggerClientTests-resources.sh
rename to CI/samples.ci/client/petstore/swift/promisekit/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClientTests/Pods-SwaggerClientTests-resources.sh
diff --git a/samples/client/petstore/swift/promisekit/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClientTests/Pods-SwaggerClientTests-umbrella.h b/CI/samples.ci/client/petstore/swift/promisekit/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClientTests/Pods-SwaggerClientTests-umbrella.h
similarity index 100%
rename from samples/client/petstore/swift/promisekit/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClientTests/Pods-SwaggerClientTests-umbrella.h
rename to CI/samples.ci/client/petstore/swift/promisekit/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClientTests/Pods-SwaggerClientTests-umbrella.h
diff --git a/samples/client/petstore/swift/promisekit/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClientTests/Pods-SwaggerClientTests.debug.xcconfig b/CI/samples.ci/client/petstore/swift/promisekit/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClientTests/Pods-SwaggerClientTests.debug.xcconfig
similarity index 100%
rename from samples/client/petstore/swift/promisekit/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClientTests/Pods-SwaggerClientTests.debug.xcconfig
rename to CI/samples.ci/client/petstore/swift/promisekit/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClientTests/Pods-SwaggerClientTests.debug.xcconfig
diff --git a/samples/client/petstore/swift/promisekit/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClientTests/Pods-SwaggerClientTests.release.xcconfig b/CI/samples.ci/client/petstore/swift/promisekit/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClientTests/Pods-SwaggerClientTests.release.xcconfig
similarity index 100%
rename from samples/client/petstore/swift/promisekit/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClientTests/Pods-SwaggerClientTests.release.xcconfig
rename to CI/samples.ci/client/petstore/swift/promisekit/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClientTests/Pods-SwaggerClientTests.release.xcconfig
diff --git a/CI/samples.ci/client/petstore/swift/promisekit/SwaggerClientTests/SwaggerClient.xcodeproj/project.pbxproj b/CI/samples.ci/client/petstore/swift/promisekit/SwaggerClientTests/SwaggerClient.xcodeproj/project.pbxproj
new file mode 100644
index 000000000000..b1c5cd52bee3
--- /dev/null
+++ b/CI/samples.ci/client/petstore/swift/promisekit/SwaggerClientTests/SwaggerClient.xcodeproj/project.pbxproj
@@ -0,0 +1,550 @@
+// !$*UTF8*$!
+{
+ archiveVersion = 1;
+ classes = {
+ };
+ objectVersion = 46;
+ objects = {
+
+/* Begin PBXBuildFile section */
+ 54DA06C1D70D78EC0EC72B61 /* Pods_SwaggerClientTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F65B6638217EDDC99D103B16 /* Pods_SwaggerClientTests.framework */; };
+ 6D4EFB951C692C6300B96B06 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6D4EFB941C692C6300B96B06 /* AppDelegate.swift */; };
+ 6D4EFB971C692C6300B96B06 /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6D4EFB961C692C6300B96B06 /* ViewController.swift */; };
+ 6D4EFB9A1C692C6300B96B06 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 6D4EFB981C692C6300B96B06 /* Main.storyboard */; };
+ 6D4EFB9C1C692C6300B96B06 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 6D4EFB9B1C692C6300B96B06 /* Assets.xcassets */; };
+ 6D4EFB9F1C692C6300B96B06 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 6D4EFB9D1C692C6300B96B06 /* LaunchScreen.storyboard */; };
+ 6D4EFBB51C693BE200B96B06 /* PetAPITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6D4EFBB41C693BE200B96B06 /* PetAPITests.swift */; };
+ 6D4EFBB71C693BED00B96B06 /* StoreAPITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6D4EFBB61C693BED00B96B06 /* StoreAPITests.swift */; };
+ 6D4EFBB91C693BFC00B96B06 /* UserAPITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6D4EFBB81C693BFC00B96B06 /* UserAPITests.swift */; };
+ 751C65B82F596107A3DC8ED9 /* Pods_SwaggerClient.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8F60AECFF321A25553B6A5B0 /* Pods_SwaggerClient.framework */; };
+/* End PBXBuildFile section */
+
+/* Begin PBXContainerItemProxy section */
+ 6D4EFBA61C692C6300B96B06 /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = 6D4EFB891C692C6300B96B06 /* Project object */;
+ proxyType = 1;
+ remoteGlobalIDString = 6D4EFB901C692C6300B96B06;
+ remoteInfo = SwaggerClient;
+ };
+/* End PBXContainerItemProxy section */
+
+/* Begin PBXFileReference section */
+ 289E8A9E9C0BB66AD190C7C6 /* Pods-SwaggerClientTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-SwaggerClientTests.debug.xcconfig"; path = "Pods/Target Support Files/Pods-SwaggerClientTests/Pods-SwaggerClientTests.debug.xcconfig"; sourceTree = ""; };
+ 6D4EFB911C692C6300B96B06 /* SwaggerClient.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = SwaggerClient.app; sourceTree = BUILT_PRODUCTS_DIR; };
+ 6D4EFB941C692C6300B96B06 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; };
+ 6D4EFB961C692C6300B96B06 /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = ""; };
+ 6D4EFB991C692C6300B96B06 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; };
+ 6D4EFB9B1C692C6300B96B06 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; };
+ 6D4EFB9E1C692C6300B96B06 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; };
+ 6D4EFBA01C692C6300B96B06 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
+ 6D4EFBA51C692C6300B96B06 /* SwaggerClientTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = SwaggerClientTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
+ 6D4EFBAB1C692C6300B96B06 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
+ 6D4EFBB41C693BE200B96B06 /* PetAPITests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PetAPITests.swift; sourceTree = ""; };
+ 6D4EFBB61C693BED00B96B06 /* StoreAPITests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = StoreAPITests.swift; sourceTree = ""; };
+ 6D4EFBB81C693BFC00B96B06 /* UserAPITests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UserAPITests.swift; sourceTree = ""; };
+ 8F60AECFF321A25553B6A5B0 /* Pods_SwaggerClient.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_SwaggerClient.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ A638467ACFB30852DEA51F7A /* Pods-SwaggerClient.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-SwaggerClient.debug.xcconfig"; path = "Pods/Target Support Files/Pods-SwaggerClient/Pods-SwaggerClient.debug.xcconfig"; sourceTree = ""; };
+ B4B2BEC2ECA535C616F2F3FE /* Pods-SwaggerClientTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-SwaggerClientTests.release.xcconfig"; path = "Pods/Target Support Files/Pods-SwaggerClientTests/Pods-SwaggerClientTests.release.xcconfig"; sourceTree = ""; };
+ C07EC0A94AA0F86D60668B32 /* Pods.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ F65B6638217EDDC99D103B16 /* Pods_SwaggerClientTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_SwaggerClientTests.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ FC60BDC7328C2AA916F25840 /* Pods-SwaggerClient.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-SwaggerClient.release.xcconfig"; path = "Pods/Target Support Files/Pods-SwaggerClient/Pods-SwaggerClient.release.xcconfig"; sourceTree = ""; };
+/* End PBXFileReference section */
+
+/* Begin PBXFrameworksBuildPhase section */
+ 6D4EFB8E1C692C6300B96B06 /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 751C65B82F596107A3DC8ED9 /* Pods_SwaggerClient.framework in Frameworks */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ 6D4EFBA21C692C6300B96B06 /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 54DA06C1D70D78EC0EC72B61 /* Pods_SwaggerClientTests.framework in Frameworks */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXFrameworksBuildPhase section */
+
+/* Begin PBXGroup section */
+ 0CAA98BEFA303B94D3664C7D /* Pods */ = {
+ isa = PBXGroup;
+ children = (
+ A638467ACFB30852DEA51F7A /* Pods-SwaggerClient.debug.xcconfig */,
+ FC60BDC7328C2AA916F25840 /* Pods-SwaggerClient.release.xcconfig */,
+ 289E8A9E9C0BB66AD190C7C6 /* Pods-SwaggerClientTests.debug.xcconfig */,
+ B4B2BEC2ECA535C616F2F3FE /* Pods-SwaggerClientTests.release.xcconfig */,
+ );
+ name = Pods;
+ sourceTree = "";
+ };
+ 3FABC56EC0BA84CBF4F99564 /* Frameworks */ = {
+ isa = PBXGroup;
+ children = (
+ C07EC0A94AA0F86D60668B32 /* Pods.framework */,
+ 8F60AECFF321A25553B6A5B0 /* Pods_SwaggerClient.framework */,
+ F65B6638217EDDC99D103B16 /* Pods_SwaggerClientTests.framework */,
+ );
+ name = Frameworks;
+ sourceTree = "";
+ };
+ 6D4EFB881C692C6300B96B06 = {
+ isa = PBXGroup;
+ children = (
+ 6D4EFB931C692C6300B96B06 /* SwaggerClient */,
+ 6D4EFBA81C692C6300B96B06 /* SwaggerClientTests */,
+ 6D4EFB921C692C6300B96B06 /* Products */,
+ 3FABC56EC0BA84CBF4F99564 /* Frameworks */,
+ 0CAA98BEFA303B94D3664C7D /* Pods */,
+ );
+ sourceTree = "";
+ };
+ 6D4EFB921C692C6300B96B06 /* Products */ = {
+ isa = PBXGroup;
+ children = (
+ 6D4EFB911C692C6300B96B06 /* SwaggerClient.app */,
+ 6D4EFBA51C692C6300B96B06 /* SwaggerClientTests.xctest */,
+ );
+ name = Products;
+ sourceTree = "";
+ };
+ 6D4EFB931C692C6300B96B06 /* SwaggerClient */ = {
+ isa = PBXGroup;
+ children = (
+ 6D4EFB941C692C6300B96B06 /* AppDelegate.swift */,
+ 6D4EFB961C692C6300B96B06 /* ViewController.swift */,
+ 6D4EFB981C692C6300B96B06 /* Main.storyboard */,
+ 6D4EFB9B1C692C6300B96B06 /* Assets.xcassets */,
+ 6D4EFB9D1C692C6300B96B06 /* LaunchScreen.storyboard */,
+ 6D4EFBA01C692C6300B96B06 /* Info.plist */,
+ );
+ path = SwaggerClient;
+ sourceTree = "";
+ };
+ 6D4EFBA81C692C6300B96B06 /* SwaggerClientTests */ = {
+ isa = PBXGroup;
+ children = (
+ 6D4EFBAB1C692C6300B96B06 /* Info.plist */,
+ 6D4EFBB41C693BE200B96B06 /* PetAPITests.swift */,
+ 6D4EFBB61C693BED00B96B06 /* StoreAPITests.swift */,
+ 6D4EFBB81C693BFC00B96B06 /* UserAPITests.swift */,
+ );
+ path = SwaggerClientTests;
+ sourceTree = "";
+ };
+/* End PBXGroup section */
+
+/* Begin PBXNativeTarget section */
+ 6D4EFB901C692C6300B96B06 /* SwaggerClient */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = 6D4EFBAE1C692C6300B96B06 /* Build configuration list for PBXNativeTarget "SwaggerClient" */;
+ buildPhases = (
+ 1F03F780DC2D9727E5E64BA9 /* [CP] Check Pods Manifest.lock */,
+ 6D4EFB8D1C692C6300B96B06 /* Sources */,
+ 6D4EFB8E1C692C6300B96B06 /* Frameworks */,
+ 6D4EFB8F1C692C6300B96B06 /* Resources */,
+ 4485A75250058E2D5BBDF63F /* [CP] Embed Pods Frameworks */,
+ 808CE4A0CE801CAC5ABF5B08 /* [CP] Copy Pods Resources */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ );
+ name = SwaggerClient;
+ productName = SwaggerClient;
+ productReference = 6D4EFB911C692C6300B96B06 /* SwaggerClient.app */;
+ productType = "com.apple.product-type.application";
+ };
+ 6D4EFBA41C692C6300B96B06 /* SwaggerClientTests */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = 6D4EFBB11C692C6300B96B06 /* Build configuration list for PBXNativeTarget "SwaggerClientTests" */;
+ buildPhases = (
+ 79FE27B09B2DD354C831BD49 /* [CP] Check Pods Manifest.lock */,
+ 6D4EFBA11C692C6300B96B06 /* Sources */,
+ 6D4EFBA21C692C6300B96B06 /* Frameworks */,
+ 6D4EFBA31C692C6300B96B06 /* Resources */,
+ 796EAD48F1BCCDAA291CD963 /* [CP] Embed Pods Frameworks */,
+ 1652CB1A246A4689869E442D /* [CP] Copy Pods Resources */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ 6D4EFBA71C692C6300B96B06 /* PBXTargetDependency */,
+ );
+ name = SwaggerClientTests;
+ productName = SwaggerClientTests;
+ productReference = 6D4EFBA51C692C6300B96B06 /* SwaggerClientTests.xctest */;
+ productType = "com.apple.product-type.bundle.unit-test";
+ };
+/* End PBXNativeTarget section */
+
+/* Begin PBXProject section */
+ 6D4EFB891C692C6300B96B06 /* Project object */ = {
+ isa = PBXProject;
+ attributes = {
+ LastSwiftUpdateCheck = 0720;
+ LastUpgradeCheck = 0720;
+ ORGANIZATIONNAME = Swagger;
+ TargetAttributes = {
+ 6D4EFB901C692C6300B96B06 = {
+ CreatedOnToolsVersion = 7.2.1;
+ };
+ 6D4EFBA41C692C6300B96B06 = {
+ CreatedOnToolsVersion = 7.2.1;
+ TestTargetID = 6D4EFB901C692C6300B96B06;
+ };
+ };
+ };
+ buildConfigurationList = 6D4EFB8C1C692C6300B96B06 /* Build configuration list for PBXProject "SwaggerClient" */;
+ compatibilityVersion = "Xcode 3.2";
+ developmentRegion = English;
+ hasScannedForEncodings = 0;
+ knownRegions = (
+ en,
+ Base,
+ );
+ mainGroup = 6D4EFB881C692C6300B96B06;
+ productRefGroup = 6D4EFB921C692C6300B96B06 /* Products */;
+ projectDirPath = "";
+ projectRoot = "";
+ targets = (
+ 6D4EFB901C692C6300B96B06 /* SwaggerClient */,
+ 6D4EFBA41C692C6300B96B06 /* SwaggerClientTests */,
+ );
+ };
+/* End PBXProject section */
+
+/* Begin PBXResourcesBuildPhase section */
+ 6D4EFB8F1C692C6300B96B06 /* Resources */ = {
+ isa = PBXResourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 6D4EFB9F1C692C6300B96B06 /* LaunchScreen.storyboard in Resources */,
+ 6D4EFB9C1C692C6300B96B06 /* Assets.xcassets in Resources */,
+ 6D4EFB9A1C692C6300B96B06 /* Main.storyboard in Resources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ 6D4EFBA31C692C6300B96B06 /* Resources */ = {
+ isa = PBXResourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXResourcesBuildPhase section */
+
+/* Begin PBXShellScriptBuildPhase section */
+ 1652CB1A246A4689869E442D /* [CP] Copy Pods Resources */ = {
+ isa = PBXShellScriptBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ inputPaths = (
+ );
+ name = "[CP] Copy Pods Resources";
+ outputPaths = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ shellPath = /bin/sh;
+ shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-SwaggerClientTests/Pods-SwaggerClientTests-resources.sh\"\n";
+ showEnvVarsInLog = 0;
+ };
+ 1F03F780DC2D9727E5E64BA9 /* [CP] Check Pods Manifest.lock */ = {
+ isa = PBXShellScriptBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ inputPaths = (
+ );
+ name = "[CP] Check Pods Manifest.lock";
+ outputPaths = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ shellPath = /bin/sh;
+ shellScript = "diff \"${PODS_ROOT}/../Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n";
+ showEnvVarsInLog = 0;
+ };
+ 4485A75250058E2D5BBDF63F /* [CP] Embed Pods Frameworks */ = {
+ isa = PBXShellScriptBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ inputPaths = (
+ );
+ name = "[CP] Embed Pods Frameworks";
+ outputPaths = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ shellPath = /bin/sh;
+ shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-SwaggerClient/Pods-SwaggerClient-frameworks.sh\"\n";
+ showEnvVarsInLog = 0;
+ };
+ 796EAD48F1BCCDAA291CD963 /* [CP] Embed Pods Frameworks */ = {
+ isa = PBXShellScriptBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ inputPaths = (
+ );
+ name = "[CP] Embed Pods Frameworks";
+ outputPaths = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ shellPath = /bin/sh;
+ shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-SwaggerClientTests/Pods-SwaggerClientTests-frameworks.sh\"\n";
+ showEnvVarsInLog = 0;
+ };
+ 79FE27B09B2DD354C831BD49 /* [CP] Check Pods Manifest.lock */ = {
+ isa = PBXShellScriptBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ inputPaths = (
+ );
+ name = "[CP] Check Pods Manifest.lock";
+ outputPaths = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ shellPath = /bin/sh;
+ shellScript = "diff \"${PODS_ROOT}/../Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n";
+ showEnvVarsInLog = 0;
+ };
+ 808CE4A0CE801CAC5ABF5B08 /* [CP] Copy Pods Resources */ = {
+ isa = PBXShellScriptBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ inputPaths = (
+ );
+ name = "[CP] Copy Pods Resources";
+ outputPaths = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ shellPath = /bin/sh;
+ shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-SwaggerClient/Pods-SwaggerClient-resources.sh\"\n";
+ showEnvVarsInLog = 0;
+ };
+/* End PBXShellScriptBuildPhase section */
+
+/* Begin PBXSourcesBuildPhase section */
+ 6D4EFB8D1C692C6300B96B06 /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 6D4EFB971C692C6300B96B06 /* ViewController.swift in Sources */,
+ 6D4EFB951C692C6300B96B06 /* AppDelegate.swift in Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ 6D4EFBA11C692C6300B96B06 /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 6D4EFBB71C693BED00B96B06 /* StoreAPITests.swift in Sources */,
+ 6D4EFBB91C693BFC00B96B06 /* UserAPITests.swift in Sources */,
+ 6D4EFBB51C693BE200B96B06 /* PetAPITests.swift in Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXSourcesBuildPhase section */
+
+/* Begin PBXTargetDependency section */
+ 6D4EFBA71C692C6300B96B06 /* PBXTargetDependency */ = {
+ isa = PBXTargetDependency;
+ target = 6D4EFB901C692C6300B96B06 /* SwaggerClient */;
+ targetProxy = 6D4EFBA61C692C6300B96B06 /* PBXContainerItemProxy */;
+ };
+/* End PBXTargetDependency section */
+
+/* Begin PBXVariantGroup section */
+ 6D4EFB981C692C6300B96B06 /* Main.storyboard */ = {
+ isa = PBXVariantGroup;
+ children = (
+ 6D4EFB991C692C6300B96B06 /* Base */,
+ );
+ name = Main.storyboard;
+ sourceTree = "";
+ };
+ 6D4EFB9D1C692C6300B96B06 /* LaunchScreen.storyboard */ = {
+ isa = PBXVariantGroup;
+ children = (
+ 6D4EFB9E1C692C6300B96B06 /* Base */,
+ );
+ name = LaunchScreen.storyboard;
+ sourceTree = "";
+ };
+/* End PBXVariantGroup section */
+
+/* Begin XCBuildConfiguration section */
+ 6D4EFBAC1C692C6300B96B06 /* Debug */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ALWAYS_SEARCH_USER_PATHS = NO;
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
+ CLANG_CXX_LIBRARY = "libc++";
+ CLANG_ENABLE_MODULES = YES;
+ CLANG_ENABLE_OBJC_ARC = YES;
+ CLANG_WARN_BOOL_CONVERSION = YES;
+ CLANG_WARN_CONSTANT_CONVERSION = YES;
+ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+ CLANG_WARN_EMPTY_BODY = YES;
+ CLANG_WARN_ENUM_CONVERSION = YES;
+ CLANG_WARN_INT_CONVERSION = YES;
+ CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+ CLANG_WARN_UNREACHABLE_CODE = YES;
+ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
+ COPY_PHASE_STRIP = NO;
+ DEBUG_INFORMATION_FORMAT = dwarf;
+ ENABLE_STRICT_OBJC_MSGSEND = YES;
+ ENABLE_TESTABILITY = YES;
+ GCC_C_LANGUAGE_STANDARD = gnu99;
+ GCC_DYNAMIC_NO_PIC = NO;
+ GCC_NO_COMMON_BLOCKS = YES;
+ GCC_OPTIMIZATION_LEVEL = 0;
+ GCC_PREPROCESSOR_DEFINITIONS = (
+ "DEBUG=1",
+ "$(inherited)",
+ );
+ GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+ GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+ GCC_WARN_UNDECLARED_SELECTOR = YES;
+ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+ GCC_WARN_UNUSED_FUNCTION = YES;
+ GCC_WARN_UNUSED_VARIABLE = YES;
+ IPHONEOS_DEPLOYMENT_TARGET = 9.2;
+ MTL_ENABLE_DEBUG_INFO = YES;
+ ONLY_ACTIVE_ARCH = YES;
+ SDKROOT = iphoneos;
+ SWIFT_OPTIMIZATION_LEVEL = "-Onone";
+ TARGETED_DEVICE_FAMILY = "1,2";
+ };
+ name = Debug;
+ };
+ 6D4EFBAD1C692C6300B96B06 /* Release */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ALWAYS_SEARCH_USER_PATHS = NO;
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
+ CLANG_CXX_LIBRARY = "libc++";
+ CLANG_ENABLE_MODULES = YES;
+ CLANG_ENABLE_OBJC_ARC = YES;
+ CLANG_WARN_BOOL_CONVERSION = YES;
+ CLANG_WARN_CONSTANT_CONVERSION = YES;
+ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+ CLANG_WARN_EMPTY_BODY = YES;
+ CLANG_WARN_ENUM_CONVERSION = YES;
+ CLANG_WARN_INT_CONVERSION = YES;
+ CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+ CLANG_WARN_UNREACHABLE_CODE = YES;
+ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
+ COPY_PHASE_STRIP = NO;
+ DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
+ ENABLE_NS_ASSERTIONS = NO;
+ ENABLE_STRICT_OBJC_MSGSEND = YES;
+ GCC_C_LANGUAGE_STANDARD = gnu99;
+ GCC_NO_COMMON_BLOCKS = YES;
+ GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+ GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+ GCC_WARN_UNDECLARED_SELECTOR = YES;
+ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+ GCC_WARN_UNUSED_FUNCTION = YES;
+ GCC_WARN_UNUSED_VARIABLE = YES;
+ IPHONEOS_DEPLOYMENT_TARGET = 9.2;
+ MTL_ENABLE_DEBUG_INFO = NO;
+ SDKROOT = iphoneos;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ VALIDATE_PRODUCT = YES;
+ };
+ name = Release;
+ };
+ 6D4EFBAF1C692C6300B96B06 /* Debug */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = A638467ACFB30852DEA51F7A /* Pods-SwaggerClient.debug.xcconfig */;
+ buildSettings = {
+ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+ INFOPLIST_FILE = SwaggerClient/Info.plist;
+ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
+ PRODUCT_BUNDLE_IDENTIFIER = com.swagger.SwaggerClient;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ };
+ name = Debug;
+ };
+ 6D4EFBB01C692C6300B96B06 /* Release */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = FC60BDC7328C2AA916F25840 /* Pods-SwaggerClient.release.xcconfig */;
+ buildSettings = {
+ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+ INFOPLIST_FILE = SwaggerClient/Info.plist;
+ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
+ PRODUCT_BUNDLE_IDENTIFIER = com.swagger.SwaggerClient;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ };
+ name = Release;
+ };
+ 6D4EFBB21C692C6300B96B06 /* Debug */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = 289E8A9E9C0BB66AD190C7C6 /* Pods-SwaggerClientTests.debug.xcconfig */;
+ buildSettings = {
+ BUNDLE_LOADER = "$(TEST_HOST)";
+ INFOPLIST_FILE = SwaggerClientTests/Info.plist;
+ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
+ PRODUCT_BUNDLE_IDENTIFIER = com.swagger.SwaggerClientTests;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ TEST_HOST = "$(BUILT_PRODUCTS_DIR)/SwaggerClient.app/SwaggerClient";
+ };
+ name = Debug;
+ };
+ 6D4EFBB31C692C6300B96B06 /* Release */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = B4B2BEC2ECA535C616F2F3FE /* Pods-SwaggerClientTests.release.xcconfig */;
+ buildSettings = {
+ BUNDLE_LOADER = "$(TEST_HOST)";
+ INFOPLIST_FILE = SwaggerClientTests/Info.plist;
+ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
+ PRODUCT_BUNDLE_IDENTIFIER = com.swagger.SwaggerClientTests;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ TEST_HOST = "$(BUILT_PRODUCTS_DIR)/SwaggerClient.app/SwaggerClient";
+ };
+ name = Release;
+ };
+/* End XCBuildConfiguration section */
+
+/* Begin XCConfigurationList section */
+ 6D4EFB8C1C692C6300B96B06 /* Build configuration list for PBXProject "SwaggerClient" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ 6D4EFBAC1C692C6300B96B06 /* Debug */,
+ 6D4EFBAD1C692C6300B96B06 /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+ 6D4EFBAE1C692C6300B96B06 /* Build configuration list for PBXNativeTarget "SwaggerClient" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ 6D4EFBAF1C692C6300B96B06 /* Debug */,
+ 6D4EFBB01C692C6300B96B06 /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+ 6D4EFBB11C692C6300B96B06 /* Build configuration list for PBXNativeTarget "SwaggerClientTests" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ 6D4EFBB21C692C6300B96B06 /* Debug */,
+ 6D4EFBB31C692C6300B96B06 /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+/* End XCConfigurationList section */
+ };
+ rootObject = 6D4EFB891C692C6300B96B06 /* Project object */;
+}
diff --git a/CI/samples.ci/client/petstore/swift/promisekit/SwaggerClientTests/SwaggerClient.xcodeproj/xcshareddata/xcschemes/SwaggerClient.xcscheme b/CI/samples.ci/client/petstore/swift/promisekit/SwaggerClientTests/SwaggerClient.xcodeproj/xcshareddata/xcschemes/SwaggerClient.xcscheme
new file mode 100644
index 000000000000..5ba034cec55a
--- /dev/null
+++ b/CI/samples.ci/client/petstore/swift/promisekit/SwaggerClientTests/SwaggerClient.xcodeproj/xcshareddata/xcschemes/SwaggerClient.xcscheme
@@ -0,0 +1,102 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/CI/samples.ci/client/petstore/swift/promisekit/SwaggerClientTests/SwaggerClient.xcworkspace/contents.xcworkspacedata b/CI/samples.ci/client/petstore/swift/promisekit/SwaggerClientTests/SwaggerClient.xcworkspace/contents.xcworkspacedata
new file mode 100644
index 000000000000..9b3fa18954f7
--- /dev/null
+++ b/CI/samples.ci/client/petstore/swift/promisekit/SwaggerClientTests/SwaggerClient.xcworkspace/contents.xcworkspacedata
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
diff --git a/CI/samples.ci/client/petstore/swift/promisekit/SwaggerClientTests/SwaggerClient/AppDelegate.swift b/CI/samples.ci/client/petstore/swift/promisekit/SwaggerClientTests/SwaggerClient/AppDelegate.swift
new file mode 100644
index 000000000000..3769667ad9cc
--- /dev/null
+++ b/CI/samples.ci/client/petstore/swift/promisekit/SwaggerClientTests/SwaggerClient/AppDelegate.swift
@@ -0,0 +1,46 @@
+//
+// AppDelegate.swift
+// SwaggerClient
+//
+// Created by Joseph Zuromski on 2/8/16.
+// Copyright © 2016 Swagger. All rights reserved.
+//
+
+import UIKit
+
+@UIApplicationMain
+class AppDelegate: UIResponder, UIApplicationDelegate {
+
+ var window: UIWindow?
+
+
+ func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
+ // Override point for customization after application launch.
+ return true
+ }
+
+ func applicationWillResignActive(application: UIApplication) {
+ // Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state.
+ // Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game.
+ }
+
+ func applicationDidEnterBackground(application: UIApplication) {
+ // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later.
+ // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits.
+ }
+
+ func applicationWillEnterForeground(application: UIApplication) {
+ // Called as part of the transition from the background to the inactive state; here you can undo many of the changes made on entering the background.
+ }
+
+ func applicationDidBecomeActive(application: UIApplication) {
+ // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface.
+ }
+
+ func applicationWillTerminate(application: UIApplication) {
+ // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:.
+ }
+
+
+}
+
diff --git a/CI/samples.ci/client/petstore/swift/promisekit/SwaggerClientTests/SwaggerClient/Assets.xcassets/AppIcon.appiconset/Contents.json b/CI/samples.ci/client/petstore/swift/promisekit/SwaggerClientTests/SwaggerClient/Assets.xcassets/AppIcon.appiconset/Contents.json
new file mode 100644
index 000000000000..eeea76c2db59
--- /dev/null
+++ b/CI/samples.ci/client/petstore/swift/promisekit/SwaggerClientTests/SwaggerClient/Assets.xcassets/AppIcon.appiconset/Contents.json
@@ -0,0 +1,73 @@
+{
+ "images" : [
+ {
+ "idiom" : "iphone",
+ "size" : "29x29",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "iphone",
+ "size" : "29x29",
+ "scale" : "3x"
+ },
+ {
+ "idiom" : "iphone",
+ "size" : "40x40",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "iphone",
+ "size" : "40x40",
+ "scale" : "3x"
+ },
+ {
+ "idiom" : "iphone",
+ "size" : "60x60",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "iphone",
+ "size" : "60x60",
+ "scale" : "3x"
+ },
+ {
+ "idiom" : "ipad",
+ "size" : "29x29",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "ipad",
+ "size" : "29x29",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "ipad",
+ "size" : "40x40",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "ipad",
+ "size" : "40x40",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "ipad",
+ "size" : "76x76",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "ipad",
+ "size" : "76x76",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "ipad",
+ "size" : "83.5x83.5",
+ "scale" : "2x"
+ }
+ ],
+ "info" : {
+ "version" : 1,
+ "author" : "xcode"
+ }
+}
\ No newline at end of file
diff --git a/CI/samples.ci/client/petstore/swift/promisekit/SwaggerClientTests/SwaggerClient/Base.lproj/LaunchScreen.storyboard b/CI/samples.ci/client/petstore/swift/promisekit/SwaggerClientTests/SwaggerClient/Base.lproj/LaunchScreen.storyboard
new file mode 100644
index 000000000000..2e721e1833f0
--- /dev/null
+++ b/CI/samples.ci/client/petstore/swift/promisekit/SwaggerClientTests/SwaggerClient/Base.lproj/LaunchScreen.storyboard
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/CI/samples.ci/client/petstore/swift/promisekit/SwaggerClientTests/SwaggerClient/Base.lproj/Main.storyboard b/CI/samples.ci/client/petstore/swift/promisekit/SwaggerClientTests/SwaggerClient/Base.lproj/Main.storyboard
new file mode 100644
index 000000000000..3a2a49bad8c6
--- /dev/null
+++ b/CI/samples.ci/client/petstore/swift/promisekit/SwaggerClientTests/SwaggerClient/Base.lproj/Main.storyboard
@@ -0,0 +1,25 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/CI/samples.ci/client/petstore/swift/promisekit/SwaggerClientTests/SwaggerClient/Info.plist b/CI/samples.ci/client/petstore/swift/promisekit/SwaggerClientTests/SwaggerClient/Info.plist
new file mode 100644
index 000000000000..bb71d00fa8ae
--- /dev/null
+++ b/CI/samples.ci/client/petstore/swift/promisekit/SwaggerClientTests/SwaggerClient/Info.plist
@@ -0,0 +1,59 @@
+
+
+
+
+ CFBundleDevelopmentRegion
+ en
+ CFBundleExecutable
+ $(EXECUTABLE_NAME)
+ CFBundleIdentifier
+ $(PRODUCT_BUNDLE_IDENTIFIER)
+ CFBundleInfoDictionaryVersion
+ 6.0
+ CFBundleName
+ $(PRODUCT_NAME)
+ CFBundlePackageType
+ APPL
+ CFBundleShortVersionString
+ 1.0
+ CFBundleSignature
+ ????
+ CFBundleVersion
+ 1
+ LSRequiresIPhoneOS
+
+ UILaunchStoryboardName
+ LaunchScreen
+ UIMainStoryboardFile
+ Main
+ UIRequiredDeviceCapabilities
+
+ armv7
+
+ UISupportedInterfaceOrientations
+
+ UIInterfaceOrientationPortrait
+ UIInterfaceOrientationLandscapeLeft
+ UIInterfaceOrientationLandscapeRight
+
+ UISupportedInterfaceOrientations~ipad
+
+ UIInterfaceOrientationPortrait
+ UIInterfaceOrientationPortraitUpsideDown
+ UIInterfaceOrientationLandscapeLeft
+ UIInterfaceOrientationLandscapeRight
+
+ NSAppTransportSecurity
+
+ NSExceptionDomains
+
+ petstore.swagger.io
+
+
+ NSTemporaryExceptionAllowsInsecureHTTPLoads
+
+
+
+
+
+
diff --git a/CI/samples.ci/client/petstore/swift/promisekit/SwaggerClientTests/SwaggerClient/ViewController.swift b/CI/samples.ci/client/petstore/swift/promisekit/SwaggerClientTests/SwaggerClient/ViewController.swift
new file mode 100644
index 000000000000..cd7e9a167615
--- /dev/null
+++ b/CI/samples.ci/client/petstore/swift/promisekit/SwaggerClientTests/SwaggerClient/ViewController.swift
@@ -0,0 +1,25 @@
+//
+// ViewController.swift
+// SwaggerClient
+//
+// Created by Joseph Zuromski on 2/8/16.
+// Copyright © 2016 Swagger. All rights reserved.
+//
+
+import UIKit
+
+class ViewController: UIViewController {
+
+ override func viewDidLoad() {
+ super.viewDidLoad()
+ // Do any additional setup after loading the view, typically from a nib.
+ }
+
+ override func didReceiveMemoryWarning() {
+ super.didReceiveMemoryWarning()
+ // Dispose of any resources that can be recreated.
+ }
+
+
+}
+
diff --git a/CI/samples.ci/client/petstore/swift/promisekit/SwaggerClientTests/SwaggerClientTests/Info.plist b/CI/samples.ci/client/petstore/swift/promisekit/SwaggerClientTests/SwaggerClientTests/Info.plist
new file mode 100644
index 000000000000..802f84f540d0
--- /dev/null
+++ b/CI/samples.ci/client/petstore/swift/promisekit/SwaggerClientTests/SwaggerClientTests/Info.plist
@@ -0,0 +1,36 @@
+
+
+
+
+ CFBundleDevelopmentRegion
+ en
+ CFBundleExecutable
+ $(EXECUTABLE_NAME)
+ CFBundleIdentifier
+ $(PRODUCT_BUNDLE_IDENTIFIER)
+ CFBundleInfoDictionaryVersion
+ 6.0
+ CFBundleName
+ $(PRODUCT_NAME)
+ CFBundlePackageType
+ BNDL
+ CFBundleShortVersionString
+ 1.0
+ CFBundleSignature
+ ????
+ CFBundleVersion
+ 1
+ NSAppTransportSecurity
+
+ NSExceptionDomains
+
+ petstore.swagger.io
+
+
+ NSTemporaryExceptionAllowsInsecureHTTPLoads
+
+
+
+
+
+
diff --git a/CI/samples.ci/client/petstore/swift/promisekit/SwaggerClientTests/SwaggerClientTests/PetAPITests.swift b/CI/samples.ci/client/petstore/swift/promisekit/SwaggerClientTests/SwaggerClientTests/PetAPITests.swift
new file mode 100644
index 000000000000..e76c5700aa2b
--- /dev/null
+++ b/CI/samples.ci/client/petstore/swift/promisekit/SwaggerClientTests/SwaggerClientTests/PetAPITests.swift
@@ -0,0 +1,69 @@
+//
+// PetAPITests.swift
+// SwaggerClient
+//
+// Created by Joseph Zuromski on 2/8/16.
+// Copyright © 2016 Swagger. All rights reserved.
+//
+
+import PetstoreClient
+import PromiseKit
+import XCTest
+@testable import SwaggerClient
+
+class PetAPITests: XCTestCase {
+
+ let testTimeout = 10.0
+
+ override func setUp() {
+ super.setUp()
+ // Put setup code here. This method is called before the invocation of each test method in the class.
+ }
+
+ override func tearDown() {
+ // Put teardown code here. This method is called after the invocation of each test method in the class.
+ super.tearDown()
+ }
+
+ func test1CreatePet() {
+ let expectation = self.expectationWithDescription("testCreatePet")
+ let newPet = Pet()
+ let category = PetstoreClient.Category()
+ category.id = 1234
+ category.name = "eyeColor"
+ newPet.category = category
+ newPet.id = 1000
+ newPet.name = "Fluffy"
+ newPet.status = .Available
+ PetAPI.addPet(body: newPet).then {
+ expectation.fulfill()
+ }.always {
+ // Noop for now
+ }.error { errorType -> Void in
+ XCTFail("error creating pet")
+ }
+ self.waitForExpectationsWithTimeout(testTimeout, handler: nil)
+ }
+
+ func test2GetPet() {
+ let expectation = self.expectationWithDescription("testGetPet")
+ PetAPI.getPetById(petId: 1000).then { pet -> Void in
+ XCTAssert(pet.id == 1000, "invalid id")
+ XCTAssert(pet.name == "Fluffy", "invalid name")
+ expectation.fulfill()
+ }.always {
+ // Noop for now
+ }.error { errorType -> Void in
+ XCTFail("error creating pet")
+ }
+ self.waitForExpectationsWithTimeout(testTimeout, handler: nil)
+ }
+
+ func test3DeletePet() {
+ let expectation = self.expectationWithDescription("testDeletePet")
+ PetAPI.deletePet(petId: 1000).then {
+ expectation.fulfill()
+ }
+ self.waitForExpectationsWithTimeout(testTimeout, handler: nil)
+ }
+}
diff --git a/CI/samples.ci/client/petstore/swift/promisekit/SwaggerClientTests/SwaggerClientTests/StoreAPITests.swift b/CI/samples.ci/client/petstore/swift/promisekit/SwaggerClientTests/SwaggerClientTests/StoreAPITests.swift
new file mode 100644
index 000000000000..2e37e3d3917e
--- /dev/null
+++ b/CI/samples.ci/client/petstore/swift/promisekit/SwaggerClientTests/SwaggerClientTests/StoreAPITests.swift
@@ -0,0 +1,88 @@
+//
+// StoreAPITests.swift
+// SwaggerClient
+//
+// Created by Joseph Zuromski on 2/8/16.
+// Copyright © 2016 Swagger. All rights reserved.
+//
+
+import PetstoreClient
+import PromiseKit
+import XCTest
+@testable import SwaggerClient
+
+class StoreAPITests: XCTestCase {
+
+ let isoDateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSSZZZZZ"
+
+ let testTimeout = 10.0
+
+ func test1PlaceOrder() {
+ let order = Order()
+ let shipDate = NSDate()
+ order.id = 1000
+ order.petId = 1000
+ order.complete = false
+ order.quantity = 10
+ order.shipDate = shipDate
+ // use explicit naming to reference the enum so that we test we don't regress on enum naming
+ order.status = Order.Status.Placed
+ let expectation = self.expectationWithDescription("testPlaceOrder")
+ StoreAPI.placeOrder(body: order).then { order -> Void in
+ XCTAssert(order.id == 1000, "invalid id")
+ XCTAssert(order.quantity == 10, "invalid quantity")
+ XCTAssert(order.status == .Placed, "invalid status")
+ XCTAssert(order.shipDate!.isEqual(shipDate, format: self.isoDateFormat),
+ "Date should be idempotent")
+
+ expectation.fulfill()
+ }.always {
+ // Noop for now
+ }.error { errorType -> Void in
+ XCTFail("error placing order")
+ }
+ self.waitForExpectationsWithTimeout(testTimeout, handler: nil)
+ }
+
+ func test2GetOrder() {
+ let expectation = self.expectationWithDescription("testGetOrder")
+ StoreAPI.getOrderById(orderId: "1000").then { order -> Void in
+ XCTAssert(order.id == 1000, "invalid id")
+ XCTAssert(order.quantity == 10, "invalid quantity")
+ XCTAssert(order.status == .Placed, "invalid status")
+ expectation.fulfill()
+ }.always {
+ // Noop for now
+ }.error { errorType -> Void in
+ XCTFail("error placing order")
+ }
+ self.waitForExpectationsWithTimeout(testTimeout, handler: nil)
+ }
+
+ func test3DeleteOrder() {
+ let expectation = self.expectationWithDescription("testDeleteOrder")
+ StoreAPI.deleteOrder(orderId: "1000").then {
+ expectation.fulfill()
+ }
+ self.waitForExpectationsWithTimeout(testTimeout, handler: nil)
+ }
+
+}
+
+private extension NSDate {
+
+ /**
+ Returns true if the dates are equal given the format string.
+
+ - parameter date: The date to compare to.
+ - parameter format: The format string to use to compare.
+
+ - returns: true if the dates are equal, given the format string.
+ */
+ func isEqual(date: NSDate, format: String) -> Bool {
+ let fmt = NSDateFormatter()
+ fmt.dateFormat = format
+ return fmt.stringFromDate(self).isEqual(fmt.stringFromDate(date))
+ }
+
+}
diff --git a/CI/samples.ci/client/petstore/swift/promisekit/SwaggerClientTests/SwaggerClientTests/UserAPITests.swift b/CI/samples.ci/client/petstore/swift/promisekit/SwaggerClientTests/SwaggerClientTests/UserAPITests.swift
new file mode 100644
index 000000000000..2caacc8d6dad
--- /dev/null
+++ b/CI/samples.ci/client/petstore/swift/promisekit/SwaggerClientTests/SwaggerClientTests/UserAPITests.swift
@@ -0,0 +1,77 @@
+//
+// UserAPITests.swift
+// SwaggerClient
+//
+// Created by Joseph Zuromski on 2/8/16.
+// Copyright © 2016 Swagger. All rights reserved.
+//
+
+import PetstoreClient
+import PromiseKit
+import XCTest
+@testable import SwaggerClient
+
+class UserAPITests: XCTestCase {
+
+ let testTimeout = 10.0
+
+ func testLogin() {
+ let expectation = self.expectationWithDescription("testLogin")
+ UserAPI.loginUser(username: "swiftTester", password: "swift").then { _ -> Void in
+ expectation.fulfill()
+ }
+ self.waitForExpectationsWithTimeout(testTimeout, handler: nil)
+ }
+
+ func testLogout() {
+ let expectation = self.expectationWithDescription("testLogout")
+ UserAPI.logoutUser().then {
+ expectation.fulfill()
+ }
+ self.waitForExpectationsWithTimeout(testTimeout, handler: nil)
+ }
+
+ func test1CreateUser() {
+ let expectation = self.expectationWithDescription("testCreateUser")
+ let newUser = User()
+ newUser.email = "test@test.com"
+ newUser.firstName = "Test"
+ newUser.lastName = "Tester"
+ newUser.id = 1000
+ newUser.password = "test!"
+ newUser.phone = "867-5309"
+ newUser.username = "test@test.com"
+ newUser.userStatus = 0
+ UserAPI.createUser(body: newUser).then {
+ expectation.fulfill()
+ }
+ self.waitForExpectationsWithTimeout(testTimeout, handler: nil)
+ }
+
+ func test2GetUser() {
+ let expectation = self.expectationWithDescription("testGetUser")
+ UserAPI.getUserByName(username: "test@test.com").then {user -> Void in
+ XCTAssert(user.userStatus == 0, "invalid userStatus")
+ XCTAssert(user.email == "test@test.com", "invalid email")
+ XCTAssert(user.firstName == "Test", "invalid firstName")
+ XCTAssert(user.lastName == "Tester", "invalid lastName")
+ XCTAssert(user.password == "test!", "invalid password")
+ XCTAssert(user.phone == "867-5309", "invalid phone")
+ expectation.fulfill()
+ }.always {
+ // Noop for now
+ }.error { errorType -> Void in
+ XCTFail("error getting user")
+ }
+ self.waitForExpectationsWithTimeout(testTimeout, handler: nil)
+ }
+
+ func test3DeleteUser() {
+ let expectation = self.expectationWithDescription("testDeleteUser")
+ UserAPI.deleteUser(username: "test@test.com").then {
+ expectation.fulfill()
+ }
+ self.waitForExpectationsWithTimeout(testTimeout, handler: nil)
+ }
+
+}
diff --git a/CI/samples.ci/client/petstore/swift/promisekit/SwaggerClientTests/pom.xml b/CI/samples.ci/client/petstore/swift/promisekit/SwaggerClientTests/pom.xml
new file mode 100644
index 000000000000..11686eaaede9
--- /dev/null
+++ b/CI/samples.ci/client/petstore/swift/promisekit/SwaggerClientTests/pom.xml
@@ -0,0 +1,43 @@
+
+ 4.0.0
+ io.swagger
+ SwiftPromiseKitPetstoreClientTests
+ pom
+ 1.0-SNAPSHOT
+ Swift PromiseKit Swagger Petstore Client
+
+
+
+ maven-dependency-plugin
+
+
+ package
+
+ copy-dependencies
+
+
+ ${project.build.directory}
+
+
+
+
+
+ org.codehaus.mojo
+ exec-maven-plugin
+ 1.2.1
+
+
+ xcodebuild-test
+ integration-test
+
+ exec
+
+
+ ./run_xcodebuild.sh
+
+
+
+
+
+
+
diff --git a/CI/samples.ci/client/petstore/swift/promisekit/SwaggerClientTests/run_xcodebuild.sh b/CI/samples.ci/client/petstore/swift/promisekit/SwaggerClientTests/run_xcodebuild.sh
new file mode 100755
index 000000000000..edcc142971b7
--- /dev/null
+++ b/CI/samples.ci/client/petstore/swift/promisekit/SwaggerClientTests/run_xcodebuild.sh
@@ -0,0 +1,5 @@
+#!/bin/sh
+
+#pod install && xcodebuild clean test -workspace "SwaggerClient.xcworkspace" -scheme "SwaggerClient" -sdk iphonesimulator GCC_INSTRUMENT_PROGRAM_FLOW_ARCS=YES GCC_GENERATE_TEST_COVERAGE_FILES=YES | xcpretty
+
+pod install && xcodebuild -workspace "SwaggerClient.xcworkspace" -scheme "SwaggerClient" test -destination "platform=iOS Simulator,name=iPhone 6,OS=9.3" | xcpretty
diff --git a/CI/samples.ci/client/petstore/swift/rxswift/SwaggerClientTests/Podfile b/CI/samples.ci/client/petstore/swift/rxswift/SwaggerClientTests/Podfile
new file mode 100644
index 000000000000..29843508b65b
--- /dev/null
+++ b/CI/samples.ci/client/petstore/swift/rxswift/SwaggerClientTests/Podfile
@@ -0,0 +1,10 @@
+use_frameworks!
+source 'https://github.com/CocoaPods/Specs.git'
+
+target 'SwaggerClient' do
+ pod "PetstoreClient", :path => "../"
+
+ target 'SwaggerClientTests' do
+ inherit! :search_paths
+ end
+end
diff --git a/CI/samples.ci/client/petstore/swift/rxswift/SwaggerClientTests/SwaggerClient.xcodeproj/project.pbxproj b/CI/samples.ci/client/petstore/swift/rxswift/SwaggerClientTests/SwaggerClient.xcodeproj/project.pbxproj
new file mode 100644
index 000000000000..d6a4062151e3
--- /dev/null
+++ b/CI/samples.ci/client/petstore/swift/rxswift/SwaggerClientTests/SwaggerClient.xcodeproj/project.pbxproj
@@ -0,0 +1,649 @@
+// !$*UTF8*$!
+{
+ archiveVersion = 1;
+ classes = {
+ };
+ objectVersion = 46;
+ objects = {
+
+/* Begin PBXBuildFile section */
+ B024164FBFF71BF644D4419A /* Pods_SwaggerClient.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 177A58DD5CF63F2989335DCC /* Pods_SwaggerClient.framework */; };
+ B1D0246C8960F47A60098F37 /* Pods_SwaggerClientTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6F96A0131101344CC5406CB3 /* Pods_SwaggerClientTests.framework */; };
+ EAEC0BC21D4E30CE00C908A3 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = EAEC0BC11D4E30CE00C908A3 /* AppDelegate.swift */; };
+ EAEC0BC41D4E30CE00C908A3 /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = EAEC0BC31D4E30CE00C908A3 /* ViewController.swift */; };
+ EAEC0BC71D4E30CE00C908A3 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = EAEC0BC51D4E30CE00C908A3 /* Main.storyboard */; };
+ EAEC0BC91D4E30CE00C908A3 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = EAEC0BC81D4E30CE00C908A3 /* Assets.xcassets */; };
+ EAEC0BCC1D4E30CE00C908A3 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = EAEC0BCA1D4E30CE00C908A3 /* LaunchScreen.storyboard */; };
+ EAEC0BE41D4E330700C908A3 /* PetAPITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = EAEC0BE31D4E330700C908A3 /* PetAPITests.swift */; };
+ EAEC0BE61D4E379000C908A3 /* StoreAPITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = EAEC0BE51D4E379000C908A3 /* StoreAPITests.swift */; };
+ EAEC0BE81D4E38CB00C908A3 /* UserAPITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = EAEC0BE71D4E38CB00C908A3 /* UserAPITests.swift */; };
+/* End PBXBuildFile section */
+
+/* Begin PBXContainerItemProxy section */
+ EAEC0BD31D4E30CE00C908A3 /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = EAEC0BB61D4E30CE00C908A3 /* Project object */;
+ proxyType = 1;
+ remoteGlobalIDString = EAEC0BBD1D4E30CE00C908A3;
+ remoteInfo = SwaggerClient;
+ };
+/* End PBXContainerItemProxy section */
+
+/* Begin PBXFileReference section */
+ 177A58DD5CF63F2989335DCC /* Pods_SwaggerClient.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_SwaggerClient.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ 2DEFA8828BD4E38FA5262F53 /* Pods-SwaggerClient.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-SwaggerClient.release.xcconfig"; path = "Pods/Target Support Files/Pods-SwaggerClient/Pods-SwaggerClient.release.xcconfig"; sourceTree = ""; };
+ 4EF2021609D112A6F5AE0F55 /* Pods-SwaggerClientTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-SwaggerClientTests.debug.xcconfig"; path = "Pods/Target Support Files/Pods-SwaggerClientTests/Pods-SwaggerClientTests.debug.xcconfig"; sourceTree = ""; };
+ 6F96A0131101344CC5406CB3 /* Pods_SwaggerClientTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_SwaggerClientTests.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ 8D99518E8E05FD856A952698 /* Pods-SwaggerClient.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-SwaggerClient.debug.xcconfig"; path = "Pods/Target Support Files/Pods-SwaggerClient/Pods-SwaggerClient.debug.xcconfig"; sourceTree = ""; };
+ EAEC0BBE1D4E30CE00C908A3 /* SwaggerClient.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = SwaggerClient.app; sourceTree = BUILT_PRODUCTS_DIR; };
+ EAEC0BC11D4E30CE00C908A3 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; };
+ EAEC0BC31D4E30CE00C908A3 /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = ""; };
+ EAEC0BC61D4E30CE00C908A3 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; };
+ EAEC0BC81D4E30CE00C908A3 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; };
+ EAEC0BCB1D4E30CE00C908A3 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; };
+ EAEC0BCD1D4E30CE00C908A3 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
+ EAEC0BD21D4E30CE00C908A3 /* SwaggerClientTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = SwaggerClientTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
+ EAEC0BD81D4E30CE00C908A3 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
+ EAEC0BE31D4E330700C908A3 /* PetAPITests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PetAPITests.swift; sourceTree = ""; };
+ EAEC0BE51D4E379000C908A3 /* StoreAPITests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = StoreAPITests.swift; sourceTree = ""; };
+ EAEC0BE71D4E38CB00C908A3 /* UserAPITests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UserAPITests.swift; sourceTree = ""; };
+ EFD8AB05F53C74985527D117 /* Pods-SwaggerClientTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-SwaggerClientTests.release.xcconfig"; path = "Pods/Target Support Files/Pods-SwaggerClientTests/Pods-SwaggerClientTests.release.xcconfig"; sourceTree = ""; };
+/* End PBXFileReference section */
+
+/* Begin PBXFrameworksBuildPhase section */
+ EAEC0BBB1D4E30CE00C908A3 /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ B024164FBFF71BF644D4419A /* Pods_SwaggerClient.framework in Frameworks */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ EAEC0BCF1D4E30CE00C908A3 /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ B1D0246C8960F47A60098F37 /* Pods_SwaggerClientTests.framework in Frameworks */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXFrameworksBuildPhase section */
+
+/* Begin PBXGroup section */
+ 55DC454FF5FFEF8A9CBC1CA3 /* Frameworks */ = {
+ isa = PBXGroup;
+ children = (
+ 177A58DD5CF63F2989335DCC /* Pods_SwaggerClient.framework */,
+ 6F96A0131101344CC5406CB3 /* Pods_SwaggerClientTests.framework */,
+ );
+ name = Frameworks;
+ sourceTree = "";
+ };
+ CB19142D951AB5DD885404A8 /* Pods */ = {
+ isa = PBXGroup;
+ children = (
+ 8D99518E8E05FD856A952698 /* Pods-SwaggerClient.debug.xcconfig */,
+ 2DEFA8828BD4E38FA5262F53 /* Pods-SwaggerClient.release.xcconfig */,
+ 4EF2021609D112A6F5AE0F55 /* Pods-SwaggerClientTests.debug.xcconfig */,
+ EFD8AB05F53C74985527D117 /* Pods-SwaggerClientTests.release.xcconfig */,
+ );
+ name = Pods;
+ sourceTree = "";
+ };
+ EAEC0BB51D4E30CE00C908A3 = {
+ isa = PBXGroup;
+ children = (
+ EAEC0BC01D4E30CE00C908A3 /* SwaggerClient */,
+ EAEC0BD51D4E30CE00C908A3 /* SwaggerClientTests */,
+ EAEC0BBF1D4E30CE00C908A3 /* Products */,
+ CB19142D951AB5DD885404A8 /* Pods */,
+ 55DC454FF5FFEF8A9CBC1CA3 /* Frameworks */,
+ );
+ sourceTree = "";
+ };
+ EAEC0BBF1D4E30CE00C908A3 /* Products */ = {
+ isa = PBXGroup;
+ children = (
+ EAEC0BBE1D4E30CE00C908A3 /* SwaggerClient.app */,
+ EAEC0BD21D4E30CE00C908A3 /* SwaggerClientTests.xctest */,
+ );
+ name = Products;
+ sourceTree = "";
+ };
+ EAEC0BC01D4E30CE00C908A3 /* SwaggerClient */ = {
+ isa = PBXGroup;
+ children = (
+ EAEC0BC11D4E30CE00C908A3 /* AppDelegate.swift */,
+ EAEC0BC31D4E30CE00C908A3 /* ViewController.swift */,
+ EAEC0BC51D4E30CE00C908A3 /* Main.storyboard */,
+ EAEC0BC81D4E30CE00C908A3 /* Assets.xcassets */,
+ EAEC0BCA1D4E30CE00C908A3 /* LaunchScreen.storyboard */,
+ EAEC0BCD1D4E30CE00C908A3 /* Info.plist */,
+ );
+ path = SwaggerClient;
+ sourceTree = "";
+ };
+ EAEC0BD51D4E30CE00C908A3 /* SwaggerClientTests */ = {
+ isa = PBXGroup;
+ children = (
+ EAEC0BD81D4E30CE00C908A3 /* Info.plist */,
+ EAEC0BE31D4E330700C908A3 /* PetAPITests.swift */,
+ EAEC0BE51D4E379000C908A3 /* StoreAPITests.swift */,
+ EAEC0BE71D4E38CB00C908A3 /* UserAPITests.swift */,
+ );
+ path = SwaggerClientTests;
+ sourceTree = "";
+ };
+/* End PBXGroup section */
+
+/* Begin PBXNativeTarget section */
+ EAEC0BBD1D4E30CE00C908A3 /* SwaggerClient */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = EAEC0BDB1D4E30CE00C908A3 /* Build configuration list for PBXNativeTarget "SwaggerClient" */;
+ buildPhases = (
+ C70A8FFDB7B0A20D2C3436C9 /* [CP] Check Pods Manifest.lock */,
+ 898E536ECC2C4811DDDF67C1 /* [CP] Check Pods Manifest.lock */,
+ EAEC0BBA1D4E30CE00C908A3 /* Sources */,
+ EAEC0BBB1D4E30CE00C908A3 /* Frameworks */,
+ EAEC0BBC1D4E30CE00C908A3 /* Resources */,
+ 8A7961360961F06AADAF17C9 /* [CP] Embed Pods Frameworks */,
+ E008DDC7FA2126F111F972F5 /* [CP] Copy Pods Resources */,
+ 374C38046621787C3C859B01 /* 📦 Embed Pods Frameworks */,
+ 73DCA4494CB87F25D3D5F63E /* 📦 Copy Pods Resources */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ );
+ name = SwaggerClient;
+ productName = SwaggerClient;
+ productReference = EAEC0BBE1D4E30CE00C908A3 /* SwaggerClient.app */;
+ productType = "com.apple.product-type.application";
+ };
+ EAEC0BD11D4E30CE00C908A3 /* SwaggerClientTests */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = EAEC0BDE1D4E30CE00C908A3 /* Build configuration list for PBXNativeTarget "SwaggerClientTests" */;
+ buildPhases = (
+ 48EADFABBF79C1D5C79CE9A6 /* [CP] Check Pods Manifest.lock */,
+ 82CB35D52E274C6177DAC0DD /* [CP] Check Pods Manifest.lock */,
+ EAEC0BCE1D4E30CE00C908A3 /* Sources */,
+ EAEC0BCF1D4E30CE00C908A3 /* Frameworks */,
+ EAEC0BD01D4E30CE00C908A3 /* Resources */,
+ 3920D9C143B997879E5A5B9C /* [CP] Embed Pods Frameworks */,
+ 60E7B02FBDEB028CCE7CCCC5 /* [CP] Copy Pods Resources */,
+ 5879911F238B959C753C7FC4 /* 📦 Embed Pods Frameworks */,
+ AA1A263EEA3CDAE83EC2DFB9 /* 📦 Copy Pods Resources */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ EAEC0BD41D4E30CE00C908A3 /* PBXTargetDependency */,
+ );
+ name = SwaggerClientTests;
+ productName = SwaggerClientTests;
+ productReference = EAEC0BD21D4E30CE00C908A3 /* SwaggerClientTests.xctest */;
+ productType = "com.apple.product-type.bundle.unit-test";
+ };
+/* End PBXNativeTarget section */
+
+/* Begin PBXProject section */
+ EAEC0BB61D4E30CE00C908A3 /* Project object */ = {
+ isa = PBXProject;
+ attributes = {
+ LastSwiftUpdateCheck = 0730;
+ LastUpgradeCheck = 0730;
+ ORGANIZATIONNAME = Swagger;
+ TargetAttributes = {
+ EAEC0BBD1D4E30CE00C908A3 = {
+ CreatedOnToolsVersion = 7.3.1;
+ };
+ EAEC0BD11D4E30CE00C908A3 = {
+ CreatedOnToolsVersion = 7.3.1;
+ TestTargetID = EAEC0BBD1D4E30CE00C908A3;
+ };
+ };
+ };
+ buildConfigurationList = EAEC0BB91D4E30CE00C908A3 /* Build configuration list for PBXProject "SwaggerClient" */;
+ compatibilityVersion = "Xcode 3.2";
+ developmentRegion = English;
+ hasScannedForEncodings = 0;
+ knownRegions = (
+ en,
+ Base,
+ );
+ mainGroup = EAEC0BB51D4E30CE00C908A3;
+ productRefGroup = EAEC0BBF1D4E30CE00C908A3 /* Products */;
+ projectDirPath = "";
+ projectRoot = "";
+ targets = (
+ EAEC0BBD1D4E30CE00C908A3 /* SwaggerClient */,
+ EAEC0BD11D4E30CE00C908A3 /* SwaggerClientTests */,
+ );
+ };
+/* End PBXProject section */
+
+/* Begin PBXResourcesBuildPhase section */
+ EAEC0BBC1D4E30CE00C908A3 /* Resources */ = {
+ isa = PBXResourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ EAEC0BCC1D4E30CE00C908A3 /* LaunchScreen.storyboard in Resources */,
+ EAEC0BC91D4E30CE00C908A3 /* Assets.xcassets in Resources */,
+ EAEC0BC71D4E30CE00C908A3 /* Main.storyboard in Resources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ EAEC0BD01D4E30CE00C908A3 /* Resources */ = {
+ isa = PBXResourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXResourcesBuildPhase section */
+
+/* Begin PBXShellScriptBuildPhase section */
+ 374C38046621787C3C859B01 /* 📦 Embed Pods Frameworks */ = {
+ isa = PBXShellScriptBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ inputPaths = (
+ );
+ name = "📦 Embed Pods Frameworks";
+ outputPaths = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ shellPath = /bin/sh;
+ shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-SwaggerClient/Pods-SwaggerClient-frameworks.sh\"\n";
+ showEnvVarsInLog = 0;
+ };
+ 3920D9C143B997879E5A5B9C /* [CP] Embed Pods Frameworks */ = {
+ isa = PBXShellScriptBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ inputPaths = (
+ );
+ name = "[CP] Embed Pods Frameworks";
+ outputPaths = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ shellPath = /bin/sh;
+ shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-SwaggerClientTests/Pods-SwaggerClientTests-frameworks.sh\"\n";
+ showEnvVarsInLog = 0;
+ };
+ 48EADFABBF79C1D5C79CE9A6 /* [CP] Check Pods Manifest.lock */ = {
+ isa = PBXShellScriptBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ inputPaths = (
+ );
+ name = "[CP] Check Pods Manifest.lock";
+ outputPaths = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ shellPath = /bin/sh;
+ shellScript = "diff \"${PODS_ROOT}/../Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n";
+ showEnvVarsInLog = 0;
+ };
+ 5879911F238B959C753C7FC4 /* 📦 Embed Pods Frameworks */ = {
+ isa = PBXShellScriptBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ inputPaths = (
+ );
+ name = "📦 Embed Pods Frameworks";
+ outputPaths = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ shellPath = /bin/sh;
+ shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-SwaggerClientTests/Pods-SwaggerClientTests-frameworks.sh\"\n";
+ showEnvVarsInLog = 0;
+ };
+ 60E7B02FBDEB028CCE7CCCC5 /* [CP] Copy Pods Resources */ = {
+ isa = PBXShellScriptBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ inputPaths = (
+ );
+ name = "[CP] Copy Pods Resources";
+ outputPaths = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ shellPath = /bin/sh;
+ shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-SwaggerClientTests/Pods-SwaggerClientTests-resources.sh\"\n";
+ showEnvVarsInLog = 0;
+ };
+ 73DCA4494CB87F25D3D5F63E /* 📦 Copy Pods Resources */ = {
+ isa = PBXShellScriptBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ inputPaths = (
+ );
+ name = "📦 Copy Pods Resources";
+ outputPaths = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ shellPath = /bin/sh;
+ shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-SwaggerClient/Pods-SwaggerClient-resources.sh\"\n";
+ showEnvVarsInLog = 0;
+ };
+ 82CB35D52E274C6177DAC0DD /* [CP] Check Pods Manifest.lock */ = {
+ isa = PBXShellScriptBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ inputPaths = (
+ );
+ name = "[CP] Check Pods Manifest.lock";
+ outputPaths = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ shellPath = /bin/sh;
+ shellScript = "diff \"${PODS_ROOT}/../Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [[ $? != 0 ]] ; then\n cat << EOM\nerror: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\nEOM\n exit 1\nfi\n";
+ showEnvVarsInLog = 0;
+ };
+ 898E536ECC2C4811DDDF67C1 /* [CP] Check Pods Manifest.lock */ = {
+ isa = PBXShellScriptBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ inputPaths = (
+ );
+ name = "[CP] Check Pods Manifest.lock";
+ outputPaths = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ shellPath = /bin/sh;
+ shellScript = "diff \"${PODS_ROOT}/../Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [[ $? != 0 ]] ; then\n cat << EOM\nerror: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\nEOM\n exit 1\nfi\n";
+ showEnvVarsInLog = 0;
+ };
+ 8A7961360961F06AADAF17C9 /* [CP] Embed Pods Frameworks */ = {
+ isa = PBXShellScriptBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ inputPaths = (
+ );
+ name = "[CP] Embed Pods Frameworks";
+ outputPaths = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ shellPath = /bin/sh;
+ shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-SwaggerClient/Pods-SwaggerClient-frameworks.sh\"\n";
+ showEnvVarsInLog = 0;
+ };
+ AA1A263EEA3CDAE83EC2DFB9 /* 📦 Copy Pods Resources */ = {
+ isa = PBXShellScriptBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ inputPaths = (
+ );
+ name = "📦 Copy Pods Resources";
+ outputPaths = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ shellPath = /bin/sh;
+ shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-SwaggerClientTests/Pods-SwaggerClientTests-resources.sh\"\n";
+ showEnvVarsInLog = 0;
+ };
+ C70A8FFDB7B0A20D2C3436C9 /* [CP] Check Pods Manifest.lock */ = {
+ isa = PBXShellScriptBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ inputPaths = (
+ );
+ name = "[CP] Check Pods Manifest.lock";
+ outputPaths = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ shellPath = /bin/sh;
+ shellScript = "diff \"${PODS_ROOT}/../Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n";
+ showEnvVarsInLog = 0;
+ };
+ E008DDC7FA2126F111F972F5 /* [CP] Copy Pods Resources */ = {
+ isa = PBXShellScriptBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ inputPaths = (
+ );
+ name = "[CP] Copy Pods Resources";
+ outputPaths = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ shellPath = /bin/sh;
+ shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-SwaggerClient/Pods-SwaggerClient-resources.sh\"\n";
+ showEnvVarsInLog = 0;
+ };
+/* End PBXShellScriptBuildPhase section */
+
+/* Begin PBXSourcesBuildPhase section */
+ EAEC0BBA1D4E30CE00C908A3 /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ EAEC0BC41D4E30CE00C908A3 /* ViewController.swift in Sources */,
+ EAEC0BC21D4E30CE00C908A3 /* AppDelegate.swift in Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ EAEC0BCE1D4E30CE00C908A3 /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ EAEC0BE81D4E38CB00C908A3 /* UserAPITests.swift in Sources */,
+ EAEC0BE61D4E379000C908A3 /* StoreAPITests.swift in Sources */,
+ EAEC0BE41D4E330700C908A3 /* PetAPITests.swift in Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXSourcesBuildPhase section */
+
+/* Begin PBXTargetDependency section */
+ EAEC0BD41D4E30CE00C908A3 /* PBXTargetDependency */ = {
+ isa = PBXTargetDependency;
+ target = EAEC0BBD1D4E30CE00C908A3 /* SwaggerClient */;
+ targetProxy = EAEC0BD31D4E30CE00C908A3 /* PBXContainerItemProxy */;
+ };
+/* End PBXTargetDependency section */
+
+/* Begin PBXVariantGroup section */
+ EAEC0BC51D4E30CE00C908A3 /* Main.storyboard */ = {
+ isa = PBXVariantGroup;
+ children = (
+ EAEC0BC61D4E30CE00C908A3 /* Base */,
+ );
+ name = Main.storyboard;
+ sourceTree = "";
+ };
+ EAEC0BCA1D4E30CE00C908A3 /* LaunchScreen.storyboard */ = {
+ isa = PBXVariantGroup;
+ children = (
+ EAEC0BCB1D4E30CE00C908A3 /* Base */,
+ );
+ name = LaunchScreen.storyboard;
+ sourceTree = "";
+ };
+/* End PBXVariantGroup section */
+
+/* Begin XCBuildConfiguration section */
+ EAEC0BD91D4E30CE00C908A3 /* Debug */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ALWAYS_SEARCH_USER_PATHS = NO;
+ CLANG_ANALYZER_NONNULL = YES;
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
+ CLANG_CXX_LIBRARY = "libc++";
+ CLANG_ENABLE_MODULES = YES;
+ CLANG_ENABLE_OBJC_ARC = YES;
+ CLANG_WARN_BOOL_CONVERSION = YES;
+ CLANG_WARN_CONSTANT_CONVERSION = YES;
+ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+ CLANG_WARN_EMPTY_BODY = YES;
+ CLANG_WARN_ENUM_CONVERSION = YES;
+ CLANG_WARN_INT_CONVERSION = YES;
+ CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+ CLANG_WARN_UNREACHABLE_CODE = YES;
+ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
+ COPY_PHASE_STRIP = NO;
+ DEBUG_INFORMATION_FORMAT = dwarf;
+ ENABLE_STRICT_OBJC_MSGSEND = YES;
+ ENABLE_TESTABILITY = YES;
+ GCC_C_LANGUAGE_STANDARD = gnu99;
+ GCC_DYNAMIC_NO_PIC = NO;
+ GCC_NO_COMMON_BLOCKS = YES;
+ GCC_OPTIMIZATION_LEVEL = 0;
+ GCC_PREPROCESSOR_DEFINITIONS = (
+ "DEBUG=1",
+ "$(inherited)",
+ );
+ GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+ GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+ GCC_WARN_UNDECLARED_SELECTOR = YES;
+ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+ GCC_WARN_UNUSED_FUNCTION = YES;
+ GCC_WARN_UNUSED_VARIABLE = YES;
+ IPHONEOS_DEPLOYMENT_TARGET = 9.3;
+ MTL_ENABLE_DEBUG_INFO = YES;
+ ONLY_ACTIVE_ARCH = YES;
+ SDKROOT = iphoneos;
+ SWIFT_OPTIMIZATION_LEVEL = "-Onone";
+ };
+ name = Debug;
+ };
+ EAEC0BDA1D4E30CE00C908A3 /* Release */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ALWAYS_SEARCH_USER_PATHS = NO;
+ CLANG_ANALYZER_NONNULL = YES;
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
+ CLANG_CXX_LIBRARY = "libc++";
+ CLANG_ENABLE_MODULES = YES;
+ CLANG_ENABLE_OBJC_ARC = YES;
+ CLANG_WARN_BOOL_CONVERSION = YES;
+ CLANG_WARN_CONSTANT_CONVERSION = YES;
+ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+ CLANG_WARN_EMPTY_BODY = YES;
+ CLANG_WARN_ENUM_CONVERSION = YES;
+ CLANG_WARN_INT_CONVERSION = YES;
+ CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+ CLANG_WARN_UNREACHABLE_CODE = YES;
+ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
+ COPY_PHASE_STRIP = NO;
+ DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
+ ENABLE_NS_ASSERTIONS = NO;
+ ENABLE_STRICT_OBJC_MSGSEND = YES;
+ GCC_C_LANGUAGE_STANDARD = gnu99;
+ GCC_NO_COMMON_BLOCKS = YES;
+ GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+ GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+ GCC_WARN_UNDECLARED_SELECTOR = YES;
+ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+ GCC_WARN_UNUSED_FUNCTION = YES;
+ GCC_WARN_UNUSED_VARIABLE = YES;
+ IPHONEOS_DEPLOYMENT_TARGET = 9.3;
+ MTL_ENABLE_DEBUG_INFO = NO;
+ SDKROOT = iphoneos;
+ VALIDATE_PRODUCT = YES;
+ };
+ name = Release;
+ };
+ EAEC0BDC1D4E30CE00C908A3 /* Debug */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = 8D99518E8E05FD856A952698 /* Pods-SwaggerClient.debug.xcconfig */;
+ buildSettings = {
+ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+ INFOPLIST_FILE = SwaggerClient/Info.plist;
+ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
+ PRODUCT_BUNDLE_IDENTIFIER = com.swagger.SwaggerClient;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ TARGETED_DEVICE_FAMILY = "1,2";
+ };
+ name = Debug;
+ };
+ EAEC0BDD1D4E30CE00C908A3 /* Release */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = 2DEFA8828BD4E38FA5262F53 /* Pods-SwaggerClient.release.xcconfig */;
+ buildSettings = {
+ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+ INFOPLIST_FILE = SwaggerClient/Info.plist;
+ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
+ PRODUCT_BUNDLE_IDENTIFIER = com.swagger.SwaggerClient;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ TARGETED_DEVICE_FAMILY = "1,2";
+ };
+ name = Release;
+ };
+ EAEC0BDF1D4E30CE00C908A3 /* Debug */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = 4EF2021609D112A6F5AE0F55 /* Pods-SwaggerClientTests.debug.xcconfig */;
+ buildSettings = {
+ BUNDLE_LOADER = "$(TEST_HOST)";
+ CLANG_ENABLE_MODULES = YES;
+ INFOPLIST_FILE = SwaggerClientTests/Info.plist;
+ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
+ PRODUCT_BUNDLE_IDENTIFIER = com.swagger.SwaggerClientTests;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ SWIFT_OPTIMIZATION_LEVEL = "-Onone";
+ TEST_HOST = "$(BUILT_PRODUCTS_DIR)/SwaggerClient.app/SwaggerClient";
+ };
+ name = Debug;
+ };
+ EAEC0BE01D4E30CE00C908A3 /* Release */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = EFD8AB05F53C74985527D117 /* Pods-SwaggerClientTests.release.xcconfig */;
+ buildSettings = {
+ BUNDLE_LOADER = "$(TEST_HOST)";
+ CLANG_ENABLE_MODULES = YES;
+ INFOPLIST_FILE = SwaggerClientTests/Info.plist;
+ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
+ PRODUCT_BUNDLE_IDENTIFIER = com.swagger.SwaggerClientTests;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ TEST_HOST = "$(BUILT_PRODUCTS_DIR)/SwaggerClient.app/SwaggerClient";
+ };
+ name = Release;
+ };
+/* End XCBuildConfiguration section */
+
+/* Begin XCConfigurationList section */
+ EAEC0BB91D4E30CE00C908A3 /* Build configuration list for PBXProject "SwaggerClient" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ EAEC0BD91D4E30CE00C908A3 /* Debug */,
+ EAEC0BDA1D4E30CE00C908A3 /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+ EAEC0BDB1D4E30CE00C908A3 /* Build configuration list for PBXNativeTarget "SwaggerClient" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ EAEC0BDC1D4E30CE00C908A3 /* Debug */,
+ EAEC0BDD1D4E30CE00C908A3 /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+ EAEC0BDE1D4E30CE00C908A3 /* Build configuration list for PBXNativeTarget "SwaggerClientTests" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ EAEC0BDF1D4E30CE00C908A3 /* Debug */,
+ EAEC0BE01D4E30CE00C908A3 /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+/* End XCConfigurationList section */
+ };
+ rootObject = EAEC0BB61D4E30CE00C908A3 /* Project object */;
+}
diff --git a/samples/client/petstore/objc/core-data/SwaggerClientTests/SwaggerClient.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/CI/samples.ci/client/petstore/swift/rxswift/SwaggerClientTests/SwaggerClient.xcodeproj/project.xcworkspace/contents.xcworkspacedata
similarity index 100%
rename from samples/client/petstore/objc/core-data/SwaggerClientTests/SwaggerClient.xcodeproj/project.xcworkspace/contents.xcworkspacedata
rename to CI/samples.ci/client/petstore/swift/rxswift/SwaggerClientTests/SwaggerClient.xcodeproj/project.xcworkspace/contents.xcworkspacedata
diff --git a/CI/samples.ci/client/petstore/swift/rxswift/SwaggerClientTests/SwaggerClient.xcodeproj/xcshareddata/xcschemes/SwaggerClient.xcscheme b/CI/samples.ci/client/petstore/swift/rxswift/SwaggerClientTests/SwaggerClient.xcodeproj/xcshareddata/xcschemes/SwaggerClient.xcscheme
new file mode 100644
index 000000000000..ec4a1f5eb1c2
--- /dev/null
+++ b/CI/samples.ci/client/petstore/swift/rxswift/SwaggerClientTests/SwaggerClient.xcodeproj/xcshareddata/xcschemes/SwaggerClient.xcscheme
@@ -0,0 +1,101 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/CI/samples.ci/client/petstore/swift/rxswift/SwaggerClientTests/SwaggerClient.xcworkspace/contents.xcworkspacedata b/CI/samples.ci/client/petstore/swift/rxswift/SwaggerClientTests/SwaggerClient.xcworkspace/contents.xcworkspacedata
new file mode 100644
index 000000000000..9b3fa18954f7
--- /dev/null
+++ b/CI/samples.ci/client/petstore/swift/rxswift/SwaggerClientTests/SwaggerClient.xcworkspace/contents.xcworkspacedata
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
diff --git a/CI/samples.ci/client/petstore/swift/rxswift/SwaggerClientTests/SwaggerClient/AppDelegate.swift b/CI/samples.ci/client/petstore/swift/rxswift/SwaggerClientTests/SwaggerClient/AppDelegate.swift
new file mode 100644
index 000000000000..387a82565020
--- /dev/null
+++ b/CI/samples.ci/client/petstore/swift/rxswift/SwaggerClientTests/SwaggerClient/AppDelegate.swift
@@ -0,0 +1,45 @@
+//
+// AppDelegate.swift
+// SwaggerClient
+//
+// Created by Tony Wang on 7/31/16.
+// Copyright © 2016 Swagger. All rights reserved.
+//
+
+import UIKit
+
+@UIApplicationMain
+class AppDelegate: UIResponder, UIApplicationDelegate {
+
+ var window: UIWindow?
+
+
+ func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
+ // Override point for customization after application launch.
+ return true
+ }
+
+ func applicationWillResignActive(application: UIApplication) {
+ // Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state.
+ // Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game.
+ }
+
+ func applicationDidEnterBackground(application: UIApplication) {
+ // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later.
+ // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits.
+ }
+
+ func applicationWillEnterForeground(application: UIApplication) {
+ // Called as part of the transition from the background to the inactive state; here you can undo many of the changes made on entering the background.
+ }
+
+ func applicationDidBecomeActive(application: UIApplication) {
+ // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface.
+ }
+
+ func applicationWillTerminate(application: UIApplication) {
+ // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:.
+ }
+
+
+}
diff --git a/CI/samples.ci/client/petstore/swift/rxswift/SwaggerClientTests/SwaggerClient/Assets.xcassets/AppIcon.appiconset/Contents.json b/CI/samples.ci/client/petstore/swift/rxswift/SwaggerClientTests/SwaggerClient/Assets.xcassets/AppIcon.appiconset/Contents.json
new file mode 100644
index 000000000000..118c98f7461b
--- /dev/null
+++ b/CI/samples.ci/client/petstore/swift/rxswift/SwaggerClientTests/SwaggerClient/Assets.xcassets/AppIcon.appiconset/Contents.json
@@ -0,0 +1,38 @@
+{
+ "images" : [
+ {
+ "idiom" : "iphone",
+ "size" : "29x29",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "iphone",
+ "size" : "29x29",
+ "scale" : "3x"
+ },
+ {
+ "idiom" : "iphone",
+ "size" : "40x40",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "iphone",
+ "size" : "40x40",
+ "scale" : "3x"
+ },
+ {
+ "idiom" : "iphone",
+ "size" : "60x60",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "iphone",
+ "size" : "60x60",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "version" : 1,
+ "author" : "xcode"
+ }
+}
\ No newline at end of file
diff --git a/CI/samples.ci/client/petstore/swift/rxswift/SwaggerClientTests/SwaggerClient/Base.lproj/LaunchScreen.storyboard b/CI/samples.ci/client/petstore/swift/rxswift/SwaggerClientTests/SwaggerClient/Base.lproj/LaunchScreen.storyboard
new file mode 100644
index 000000000000..2e721e1833f0
--- /dev/null
+++ b/CI/samples.ci/client/petstore/swift/rxswift/SwaggerClientTests/SwaggerClient/Base.lproj/LaunchScreen.storyboard
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/CI/samples.ci/client/petstore/swift/rxswift/SwaggerClientTests/SwaggerClient/Base.lproj/Main.storyboard b/CI/samples.ci/client/petstore/swift/rxswift/SwaggerClientTests/SwaggerClient/Base.lproj/Main.storyboard
new file mode 100644
index 000000000000..3a2a49bad8c6
--- /dev/null
+++ b/CI/samples.ci/client/petstore/swift/rxswift/SwaggerClientTests/SwaggerClient/Base.lproj/Main.storyboard
@@ -0,0 +1,25 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/CI/samples.ci/client/petstore/swift/rxswift/SwaggerClientTests/SwaggerClient/Info.plist b/CI/samples.ci/client/petstore/swift/rxswift/SwaggerClientTests/SwaggerClient/Info.plist
new file mode 100644
index 000000000000..3d8b6fc4a709
--- /dev/null
+++ b/CI/samples.ci/client/petstore/swift/rxswift/SwaggerClientTests/SwaggerClient/Info.plist
@@ -0,0 +1,58 @@
+
+
+
+
+ CFBundleDevelopmentRegion
+ en
+ CFBundleExecutable
+ $(EXECUTABLE_NAME)
+ CFBundleIdentifier
+ $(PRODUCT_BUNDLE_IDENTIFIER)
+ CFBundleInfoDictionaryVersion
+ 6.0
+ CFBundleName
+ $(PRODUCT_NAME)
+ CFBundlePackageType
+ APPL
+ CFBundleShortVersionString
+ 1.0
+ CFBundleSignature
+ ????
+ CFBundleVersion
+ 1
+ LSRequiresIPhoneOS
+
+ UILaunchStoryboardName
+ LaunchScreen
+ UIMainStoryboardFile
+ Main
+ UIRequiredDeviceCapabilities
+
+ armv7
+
+ UISupportedInterfaceOrientations
+
+ UIInterfaceOrientationPortrait
+ UIInterfaceOrientationLandscapeLeft
+ UIInterfaceOrientationLandscapeRight
+
+ UISupportedInterfaceOrientations~ipad
+
+ UIInterfaceOrientationPortrait
+ UIInterfaceOrientationPortraitUpsideDown
+ UIInterfaceOrientationLandscapeLeft
+ UIInterfaceOrientationLandscapeRight
+
+ NSAppTransportSecurity
+
+ NSExceptionDomains
+
+ petstore.swagger.io
+
+ NSTemporaryExceptionAllowsInsecureHTTPLoads
+
+
+
+
+
+
diff --git a/CI/samples.ci/client/petstore/swift/rxswift/SwaggerClientTests/SwaggerClient/ViewController.swift b/CI/samples.ci/client/petstore/swift/rxswift/SwaggerClientTests/SwaggerClient/ViewController.swift
new file mode 100644
index 000000000000..14180180be44
--- /dev/null
+++ b/CI/samples.ci/client/petstore/swift/rxswift/SwaggerClientTests/SwaggerClient/ViewController.swift
@@ -0,0 +1,24 @@
+//
+// ViewController.swift
+// SwaggerClient
+//
+// Created by Tony Wang on 7/31/16.
+// Copyright © 2016 Swagger. All rights reserved.
+//
+
+import UIKit
+
+class ViewController: UIViewController {
+
+ override func viewDidLoad() {
+ super.viewDidLoad()
+ // Do any additional setup after loading the view, typically from a nib.
+ }
+
+ override func didReceiveMemoryWarning() {
+ super.didReceiveMemoryWarning()
+ // Dispose of any resources that can be recreated.
+ }
+
+
+}
diff --git a/CI/samples.ci/client/petstore/swift/rxswift/SwaggerClientTests/SwaggerClientTests/Info.plist b/CI/samples.ci/client/petstore/swift/rxswift/SwaggerClientTests/SwaggerClientTests/Info.plist
new file mode 100644
index 000000000000..619bf44ed70e
--- /dev/null
+++ b/CI/samples.ci/client/petstore/swift/rxswift/SwaggerClientTests/SwaggerClientTests/Info.plist
@@ -0,0 +1,35 @@
+
+
+
+
+ CFBundleDevelopmentRegion
+ en
+ CFBundleExecutable
+ $(EXECUTABLE_NAME)
+ CFBundleIdentifier
+ $(PRODUCT_BUNDLE_IDENTIFIER)
+ CFBundleInfoDictionaryVersion
+ 6.0
+ CFBundleName
+ $(PRODUCT_NAME)
+ CFBundlePackageType
+ BNDL
+ CFBundleShortVersionString
+ 1.0
+ CFBundleSignature
+ ????
+ CFBundleVersion
+ 1
+ NSAppTransportSecurity
+
+ NSExceptionDomains
+
+ petstore.swagger.io
+
+ NSTemporaryExceptionAllowsInsecureHTTPLoads
+
+
+
+
+
+
diff --git a/CI/samples.ci/client/petstore/swift/rxswift/SwaggerClientTests/SwaggerClientTests/PetAPITests.swift b/CI/samples.ci/client/petstore/swift/rxswift/SwaggerClientTests/SwaggerClientTests/PetAPITests.swift
new file mode 100644
index 000000000000..3074080455ce
--- /dev/null
+++ b/CI/samples.ci/client/petstore/swift/rxswift/SwaggerClientTests/SwaggerClientTests/PetAPITests.swift
@@ -0,0 +1,78 @@
+//
+// PetAPITests.swift
+// SwaggerClient
+//
+// Created by Tony Wang on 7/31/16.
+// Copyright © 2016 Swagger. All rights reserved.
+//
+
+import PetstoreClient
+import RxSwift
+import XCTest
+@testable import SwaggerClient
+
+class PetAPITests: XCTestCase {
+
+ let testTimeout = 10.0
+ let disposeBag = DisposeBag()
+
+ override func setUp() {
+ super.setUp()
+ // Put setup code here. This method is called before the invocation of each test method in the class.
+ }
+
+ override func tearDown() {
+ // Put teardown code here. This method is called after the invocation of each test method in the class.
+ super.tearDown()
+ }
+
+ func test1CreatePet() {
+ let expectation = self.expectationWithDescription("testCreatePet")
+ let newPet = Pet()
+ let category = PetstoreClient.Category()
+ category.id = 1234
+ category.name = "eyeColor"
+ newPet.category = category
+ newPet.id = 1000
+ newPet.name = "Fluffy"
+ newPet.status = .Available
+ PetAPI.addPet(body: newPet).subscribe(onNext: {
+ expectation.fulfill()
+ }, onError: { errorType in
+ XCTFail("error creating pet")
+ }, onCompleted: nil, onDisposed: nil).addDisposableTo(disposeBag)
+ self.waitForExpectationsWithTimeout(testTimeout, handler: nil)
+ }
+
+ func test2GetPet() {
+ let expectation = self.expectationWithDescription("testGetPet")
+ PetAPI.getPetById(petId: 1000).subscribe(onNext: { pet in
+ XCTAssert(pet.id == 1000, "invalid id")
+ XCTAssert(pet.name == "Fluffy", "invalid name")
+ expectation.fulfill()
+ }, onError: { errorType in
+ XCTFail("error getting pet")
+ }, onCompleted: nil, onDisposed: nil).addDisposableTo(disposeBag)
+ self.waitForExpectationsWithTimeout(testTimeout, handler: nil)
+ }
+
+ func test3DeletePet() {
+ let expectation = self.expectationWithDescription("testDeletePet")
+ PetAPI.deletePet(petId: 1000).subscribe(onNext: {
+// expectation.fulfill()
+ }, onError: { errorType in
+ // The server gives us no data back so alamofire parsing fails - at least
+ // verify that is the error we get here
+ // Error Domain=com.alamofire.error Code=-6006 "JSON could not be serialized. Input data was nil or zero
+ // length." UserInfo={NSLocalizedFailureReason=JSON could not be serialized. Input data was nil or zero
+ // length.}
+ let error = errorType as NSError
+ if error.code == -6006 {
+ expectation.fulfill()
+ } else {
+ XCTFail("error deleting pet")
+ }
+ }, onCompleted: nil, onDisposed: nil).addDisposableTo(disposeBag)
+ self.waitForExpectationsWithTimeout(testTimeout, handler: nil)
+ }
+}
diff --git a/CI/samples.ci/client/petstore/swift/rxswift/SwaggerClientTests/SwaggerClientTests/StoreAPITests.swift b/CI/samples.ci/client/petstore/swift/rxswift/SwaggerClientTests/SwaggerClientTests/StoreAPITests.swift
new file mode 100644
index 000000000000..dc808766116a
--- /dev/null
+++ b/CI/samples.ci/client/petstore/swift/rxswift/SwaggerClientTests/SwaggerClientTests/StoreAPITests.swift
@@ -0,0 +1,97 @@
+//
+// StoreAPITests.swift
+// SwaggerClient
+//
+// Created by Tony Wang on 7/31/16.
+// Copyright © 2016 Swagger. All rights reserved.
+//
+
+import PetstoreClient
+import RxSwift
+import XCTest
+@testable import SwaggerClient
+
+class StoreAPITests: XCTestCase {
+
+ let isoDateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSSZZZZZ"
+
+ let testTimeout = 10.0
+ let disposeBag = DisposeBag()
+
+ func test1PlaceOrder() {
+ let order = Order()
+ let shipDate = NSDate()
+ order.id = 1000
+ order.petId = 1000
+ order.complete = false
+ order.quantity = 10
+ order.shipDate = shipDate
+ // use explicit naming to reference the enum so that we test we don't regress on enum naming
+ order.status = Order.Status.Placed
+ let expectation = self.expectationWithDescription("testPlaceOrder")
+ StoreAPI.placeOrder(body: order).subscribe(onNext: { order in
+ XCTAssert(order.id == 1000, "invalid id")
+ XCTAssert(order.quantity == 10, "invalid quantity")
+ XCTAssert(order.status == .Placed, "invalid status")
+ XCTAssert(order.shipDate!.isEqual(shipDate, format: self.isoDateFormat),
+ "Date should be idempotent")
+
+ expectation.fulfill()
+ }, onError: { errorType in
+ XCTFail("error placing order")
+ }, onCompleted: nil, onDisposed: nil).addDisposableTo(disposeBag)
+ self.waitForExpectationsWithTimeout(testTimeout, handler: nil)
+ }
+
+ func test2GetOrder() {
+ let expectation = self.expectationWithDescription("testGetOrder")
+ StoreAPI.getOrderById(orderId: "1000").subscribe(onNext: { order -> Void in
+ XCTAssert(order.id == 1000, "invalid id")
+ XCTAssert(order.quantity == 10, "invalid quantity")
+ XCTAssert(order.status == .Placed, "invalid status")
+ expectation.fulfill()
+ }, onError: { errorType in
+ XCTFail("error placing order")
+ }, onCompleted: nil, onDisposed: nil).addDisposableTo(disposeBag)
+ self.waitForExpectationsWithTimeout(testTimeout, handler: nil)
+ }
+
+ func test3DeleteOrder() {
+ let expectation = self.expectationWithDescription("testDeleteOrder")
+ StoreAPI.deleteOrder(orderId: "1000").subscribe(onNext: {
+ expectation.fulfill()
+ }, onError: { errorType -> Void in
+ // The server gives us no data back so alamofire parsing fails - at least
+ // verify that is the error we get here
+ // Error Domain=com.alamofire.error Code=-6006 "JSON could not be serialized. Input data was nil or zero
+ // length." UserInfo={NSLocalizedFailureReason=JSON could not be serialized. Input data was nil or zero
+ // length.}
+ let error = errorType as NSError
+ if error.code == -6006 {
+ expectation.fulfill()
+ } else {
+ XCTFail("error deleting order")
+ }
+ }, onCompleted: nil, onDisposed: nil).addDisposableTo(disposeBag)
+ self.waitForExpectationsWithTimeout(testTimeout, handler: nil)
+ }
+
+}
+
+private extension NSDate {
+
+ /**
+ Returns true if the dates are equal given the format string.
+
+ - parameter date: The date to compare to.
+ - parameter format: The format string to use to compare.
+
+ - returns: true if the dates are equal, given the format string.
+ */
+ func isEqual(date: NSDate, format: String) -> Bool {
+ let fmt = NSDateFormatter()
+ fmt.dateFormat = format
+ return fmt.stringFromDate(self).isEqual(fmt.stringFromDate(date))
+ }
+
+}
diff --git a/CI/samples.ci/client/petstore/swift/rxswift/SwaggerClientTests/SwaggerClientTests/UserAPITests.swift b/CI/samples.ci/client/petstore/swift/rxswift/SwaggerClientTests/SwaggerClientTests/UserAPITests.swift
new file mode 100644
index 000000000000..c9fc3f0bd962
--- /dev/null
+++ b/CI/samples.ci/client/petstore/swift/rxswift/SwaggerClientTests/SwaggerClientTests/UserAPITests.swift
@@ -0,0 +1,133 @@
+//
+// UserAPITests.swift
+// SwaggerClient
+//
+// Created by Tony Wang on 7/31/16.
+// Copyright © 2016 Swagger. All rights reserved.
+//
+
+import PetstoreClient
+import RxSwift
+import XCTest
+@testable import SwaggerClient
+
+class UserAPITests: XCTestCase {
+
+ let testTimeout = 10.0
+ let disposeBag = DisposeBag()
+
+ override func setUp() {
+ super.setUp()
+ // Put setup code here. This method is called before the invocation of each test method in the class.
+ }
+
+ override func tearDown() {
+ // Put teardown code here. This method is called after the invocation of each test method in the class.
+ super.tearDown()
+ }
+
+ func testLogin() {
+ let expectation = self.expectationWithDescription("testLogin")
+ UserAPI.loginUser(username: "swiftTester", password: "swift").subscribe(onNext: { _ in
+ expectation.fulfill()
+ }, onError: { errorType in
+ // The server isn't returning JSON - and currently the alamofire implementation
+ // always parses responses as JSON, so making an exception for this here
+ // Error Domain=NSCocoaErrorDomain Code=3840 "Invalid value around character 0."
+ // UserInfo={NSDebugDescription=Invalid value around character 0.}
+ let error = errorType as NSError
+ if error.code == 3840 {
+ expectation.fulfill()
+ } else {
+ XCTFail("error logging in")
+ }
+ }, onCompleted: nil, onDisposed: nil).addDisposableTo(disposeBag)
+ self.waitForExpectationsWithTimeout(testTimeout, handler: nil)
+ }
+
+ func testLogout() {
+ let expectation = self.expectationWithDescription("testLogout")
+ UserAPI.logoutUser().subscribe(onNext: {
+ expectation.fulfill()
+ }, onError: { errorType in
+ // The server gives us no data back so alamofire parsing fails - at least
+ // verify that is the error we get here
+ // Error Domain=com.alamofire.error Code=-6006 "JSON could not be serialized. Input data was nil or zero
+ // length." UserInfo={NSLocalizedFailureReason=JSON could not be serialized. Input data was nil or zero
+ // length.}
+ let error = errorType as NSError
+ if error.code == -6006 {
+ expectation.fulfill()
+ } else {
+ XCTFail("error logging out")
+ }
+ }, onCompleted: nil, onDisposed: nil).addDisposableTo(disposeBag)
+ self.waitForExpectationsWithTimeout(testTimeout, handler: nil)
+ }
+
+ func test1CreateUser() {
+ let expectation = self.expectationWithDescription("testCreateUser")
+ let newUser = User()
+ newUser.email = "test@test.com"
+ newUser.firstName = "Test"
+ newUser.lastName = "Tester"
+ newUser.id = 1000
+ newUser.password = "test!"
+ newUser.phone = "867-5309"
+ newUser.username = "test@test.com"
+ newUser.userStatus = 0
+ UserAPI.createUser(body: newUser).subscribe(onNext: {
+ expectation.fulfill()
+ }, onError: { errorType in
+ // The server gives us no data back so alamofire parsing fails - at least
+ // verify that is the error we get here
+ // Error Domain=com.alamofire.error Code=-6006 "JSON could not be serialized. Input data was nil or zero
+ // length." UserInfo={NSLocalizedFailureReason=JSON could not be serialized. Input data was nil or zero
+ // length.}
+ let error = errorType as NSError
+ if error.code == -6006 {
+ expectation.fulfill()
+ } else {
+ XCTFail("error creating user")
+ }
+ }, onCompleted: nil, onDisposed: nil).addDisposableTo(disposeBag)
+ self.waitForExpectationsWithTimeout(testTimeout, handler: nil)
+ }
+
+ func test2GetUser() {
+ let expectation = self.expectationWithDescription("testGetUser")
+ UserAPI.getUserByName(username: "test@test.com").subscribe(onNext: {user -> Void in
+ XCTAssert(user.userStatus == 0, "invalid userStatus")
+ XCTAssert(user.email == "test@test.com", "invalid email")
+ XCTAssert(user.firstName == "Test", "invalid firstName")
+ XCTAssert(user.lastName == "Tester", "invalid lastName")
+ XCTAssert(user.password == "test!", "invalid password")
+ XCTAssert(user.phone == "867-5309", "invalid phone")
+ expectation.fulfill()
+ }, onError: { errorType in
+ XCTFail("error getting user")
+ }, onCompleted: nil, onDisposed: nil).addDisposableTo(disposeBag)
+ self.waitForExpectationsWithTimeout(testTimeout, handler: nil)
+ }
+
+ func test3DeleteUser() {
+ let expectation = self.expectationWithDescription("testDeleteUser")
+ UserAPI.deleteUser(username: "test@test.com").subscribe(onNext: {
+ expectation.fulfill()
+ }, onError: { errorType -> Void in
+ // The server gives us no data back so alamofire parsing fails - at least
+ // verify that is the error we get here
+ // Error Domain=com.alamofire.error Code=-6006 "JSON could not be serialized. Input data was nil or zero
+ // length." UserInfo={NSLocalizedFailureReason=JSON could not be serialized. Input data was nil or zero
+ // length.}
+ let error = errorType as NSError
+ if error.code == -6006 {
+ expectation.fulfill()
+ } else {
+ XCTFail("error deleting user")
+ }
+ }, onCompleted: nil, onDisposed: nil).addDisposableTo(disposeBag)
+ self.waitForExpectationsWithTimeout(testTimeout, handler: nil)
+ }
+
+}
diff --git a/CI/samples.ci/client/petstore/swift/rxswift/SwaggerClientTests/pom.xml b/CI/samples.ci/client/petstore/swift/rxswift/SwaggerClientTests/pom.xml
new file mode 100644
index 000000000000..86f773d7a253
--- /dev/null
+++ b/CI/samples.ci/client/petstore/swift/rxswift/SwaggerClientTests/pom.xml
@@ -0,0 +1,43 @@
+
+ 4.0.0
+ io.swagger
+ SwiftRxSwiftPetstoreClientTests
+ pom
+ 1.0-SNAPSHOT
+ Swift RxSwift Swagger Petstore Client
+
+
+
+ maven-dependency-plugin
+
+
+ package
+
+ copy-dependencies
+
+
+ ${project.build.directory}
+
+
+
+
+
+ org.codehaus.mojo
+ exec-maven-plugin
+ 1.2.1
+
+
+ xcodebuild-test
+ integration-test
+
+ exec
+
+
+ ./run_xcodebuild.sh
+
+
+
+
+
+
+
diff --git a/CI/samples.ci/client/petstore/swift/rxswift/SwaggerClientTests/run_xcodebuild.sh b/CI/samples.ci/client/petstore/swift/rxswift/SwaggerClientTests/run_xcodebuild.sh
new file mode 100755
index 000000000000..edcc142971b7
--- /dev/null
+++ b/CI/samples.ci/client/petstore/swift/rxswift/SwaggerClientTests/run_xcodebuild.sh
@@ -0,0 +1,5 @@
+#!/bin/sh
+
+#pod install && xcodebuild clean test -workspace "SwaggerClient.xcworkspace" -scheme "SwaggerClient" -sdk iphonesimulator GCC_INSTRUMENT_PROGRAM_FLOW_ARCS=YES GCC_GENERATE_TEST_COVERAGE_FILES=YES | xcpretty
+
+pod install && xcodebuild -workspace "SwaggerClient.xcworkspace" -scheme "SwaggerClient" test -destination "platform=iOS Simulator,name=iPhone 6,OS=9.3" | xcpretty
diff --git a/samples/client/petstore/swift4/unwrapRequired/.gitignore b/CI/samples.ci/client/petstore/swift3/.gitignore
similarity index 100%
rename from samples/client/petstore/swift4/unwrapRequired/.gitignore
rename to CI/samples.ci/client/petstore/swift3/.gitignore
diff --git a/samples/client/petstore/dart/.openapi-generator-ignore b/CI/samples.ci/client/petstore/swift3/.openapi-generator-ignore
similarity index 100%
rename from samples/client/petstore/dart/.openapi-generator-ignore
rename to CI/samples.ci/client/petstore/swift3/.openapi-generator-ignore
diff --git a/CI/samples.ci/client/petstore/swift3/default/SwaggerClientTests/Podfile b/CI/samples.ci/client/petstore/swift3/default/SwaggerClientTests/Podfile
new file mode 100644
index 000000000000..77b1f16f2fe6
--- /dev/null
+++ b/CI/samples.ci/client/petstore/swift3/default/SwaggerClientTests/Podfile
@@ -0,0 +1,18 @@
+use_frameworks!
+source 'https://github.com/CocoaPods/Specs.git'
+
+target 'SwaggerClient' do
+ pod "PetstoreClient", :path => "../"
+
+ target 'SwaggerClientTests' do
+ inherit! :search_paths
+ end
+end
+
+post_install do |installer|
+ installer.pods_project.targets.each do |target|
+ target.build_configurations.each do |configuration|
+ configuration.build_settings['SWIFT_VERSION'] = "3.0"
+ end
+ end
+end
diff --git a/samples/client/petstore/swift3/default/SwaggerClientTests/Podfile.lock b/CI/samples.ci/client/petstore/swift3/default/SwaggerClientTests/Podfile.lock
similarity index 100%
rename from samples/client/petstore/swift3/default/SwaggerClientTests/Podfile.lock
rename to CI/samples.ci/client/petstore/swift3/default/SwaggerClientTests/Podfile.lock
diff --git a/samples/client/petstore/swift3/default/SwaggerClientTests/Pods/Alamofire/LICENSE b/CI/samples.ci/client/petstore/swift3/default/SwaggerClientTests/Pods/Alamofire/LICENSE
similarity index 100%
rename from samples/client/petstore/swift3/default/SwaggerClientTests/Pods/Alamofire/LICENSE
rename to CI/samples.ci/client/petstore/swift3/default/SwaggerClientTests/Pods/Alamofire/LICENSE
diff --git a/samples/client/petstore/swift3/default/SwaggerClientTests/Pods/Alamofire/README.md b/CI/samples.ci/client/petstore/swift3/default/SwaggerClientTests/Pods/Alamofire/README.md
similarity index 100%
rename from samples/client/petstore/swift3/default/SwaggerClientTests/Pods/Alamofire/README.md
rename to CI/samples.ci/client/petstore/swift3/default/SwaggerClientTests/Pods/Alamofire/README.md
diff --git a/samples/client/petstore/swift3/default/SwaggerClientTests/Pods/Alamofire/Source/AFError.swift b/CI/samples.ci/client/petstore/swift3/default/SwaggerClientTests/Pods/Alamofire/Source/AFError.swift
similarity index 100%
rename from samples/client/petstore/swift3/default/SwaggerClientTests/Pods/Alamofire/Source/AFError.swift
rename to CI/samples.ci/client/petstore/swift3/default/SwaggerClientTests/Pods/Alamofire/Source/AFError.swift
diff --git a/samples/client/petstore/swift3/default/SwaggerClientTests/Pods/Alamofire/Source/Alamofire.swift b/CI/samples.ci/client/petstore/swift3/default/SwaggerClientTests/Pods/Alamofire/Source/Alamofire.swift
similarity index 100%
rename from samples/client/petstore/swift3/default/SwaggerClientTests/Pods/Alamofire/Source/Alamofire.swift
rename to CI/samples.ci/client/petstore/swift3/default/SwaggerClientTests/Pods/Alamofire/Source/Alamofire.swift
diff --git a/samples/client/petstore/swift3/default/SwaggerClientTests/Pods/Alamofire/Source/DispatchQueue+Alamofire.swift b/CI/samples.ci/client/petstore/swift3/default/SwaggerClientTests/Pods/Alamofire/Source/DispatchQueue+Alamofire.swift
similarity index 100%
rename from samples/client/petstore/swift3/default/SwaggerClientTests/Pods/Alamofire/Source/DispatchQueue+Alamofire.swift
rename to CI/samples.ci/client/petstore/swift3/default/SwaggerClientTests/Pods/Alamofire/Source/DispatchQueue+Alamofire.swift
diff --git a/samples/client/petstore/swift3/default/SwaggerClientTests/Pods/Alamofire/Source/MultipartFormData.swift b/CI/samples.ci/client/petstore/swift3/default/SwaggerClientTests/Pods/Alamofire/Source/MultipartFormData.swift
similarity index 100%
rename from samples/client/petstore/swift3/default/SwaggerClientTests/Pods/Alamofire/Source/MultipartFormData.swift
rename to CI/samples.ci/client/petstore/swift3/default/SwaggerClientTests/Pods/Alamofire/Source/MultipartFormData.swift
diff --git a/samples/client/petstore/swift3/default/SwaggerClientTests/Pods/Alamofire/Source/NetworkReachabilityManager.swift b/CI/samples.ci/client/petstore/swift3/default/SwaggerClientTests/Pods/Alamofire/Source/NetworkReachabilityManager.swift
similarity index 100%
rename from samples/client/petstore/swift3/default/SwaggerClientTests/Pods/Alamofire/Source/NetworkReachabilityManager.swift
rename to CI/samples.ci/client/petstore/swift3/default/SwaggerClientTests/Pods/Alamofire/Source/NetworkReachabilityManager.swift
diff --git a/samples/client/petstore/swift3/default/SwaggerClientTests/Pods/Alamofire/Source/Notifications.swift b/CI/samples.ci/client/petstore/swift3/default/SwaggerClientTests/Pods/Alamofire/Source/Notifications.swift
similarity index 100%
rename from samples/client/petstore/swift3/default/SwaggerClientTests/Pods/Alamofire/Source/Notifications.swift
rename to CI/samples.ci/client/petstore/swift3/default/SwaggerClientTests/Pods/Alamofire/Source/Notifications.swift
diff --git a/samples/client/petstore/swift3/default/SwaggerClientTests/Pods/Alamofire/Source/ParameterEncoding.swift b/CI/samples.ci/client/petstore/swift3/default/SwaggerClientTests/Pods/Alamofire/Source/ParameterEncoding.swift
similarity index 100%
rename from samples/client/petstore/swift3/default/SwaggerClientTests/Pods/Alamofire/Source/ParameterEncoding.swift
rename to CI/samples.ci/client/petstore/swift3/default/SwaggerClientTests/Pods/Alamofire/Source/ParameterEncoding.swift
diff --git a/samples/client/petstore/swift3/default/SwaggerClientTests/Pods/Alamofire/Source/Request.swift b/CI/samples.ci/client/petstore/swift3/default/SwaggerClientTests/Pods/Alamofire/Source/Request.swift
similarity index 100%
rename from samples/client/petstore/swift3/default/SwaggerClientTests/Pods/Alamofire/Source/Request.swift
rename to CI/samples.ci/client/petstore/swift3/default/SwaggerClientTests/Pods/Alamofire/Source/Request.swift
diff --git a/samples/client/petstore/swift3/default/SwaggerClientTests/Pods/Alamofire/Source/Response.swift b/CI/samples.ci/client/petstore/swift3/default/SwaggerClientTests/Pods/Alamofire/Source/Response.swift
similarity index 100%
rename from samples/client/petstore/swift3/default/SwaggerClientTests/Pods/Alamofire/Source/Response.swift
rename to CI/samples.ci/client/petstore/swift3/default/SwaggerClientTests/Pods/Alamofire/Source/Response.swift
diff --git a/samples/client/petstore/swift3/default/SwaggerClientTests/Pods/Alamofire/Source/ResponseSerialization.swift b/CI/samples.ci/client/petstore/swift3/default/SwaggerClientTests/Pods/Alamofire/Source/ResponseSerialization.swift
similarity index 100%
rename from samples/client/petstore/swift3/default/SwaggerClientTests/Pods/Alamofire/Source/ResponseSerialization.swift
rename to CI/samples.ci/client/petstore/swift3/default/SwaggerClientTests/Pods/Alamofire/Source/ResponseSerialization.swift
diff --git a/samples/client/petstore/swift3/default/SwaggerClientTests/Pods/Alamofire/Source/Result.swift b/CI/samples.ci/client/petstore/swift3/default/SwaggerClientTests/Pods/Alamofire/Source/Result.swift
similarity index 100%
rename from samples/client/petstore/swift3/default/SwaggerClientTests/Pods/Alamofire/Source/Result.swift
rename to CI/samples.ci/client/petstore/swift3/default/SwaggerClientTests/Pods/Alamofire/Source/Result.swift
diff --git a/samples/client/petstore/swift3/default/SwaggerClientTests/Pods/Alamofire/Source/ServerTrustPolicy.swift b/CI/samples.ci/client/petstore/swift3/default/SwaggerClientTests/Pods/Alamofire/Source/ServerTrustPolicy.swift
similarity index 100%
rename from samples/client/petstore/swift3/default/SwaggerClientTests/Pods/Alamofire/Source/ServerTrustPolicy.swift
rename to CI/samples.ci/client/petstore/swift3/default/SwaggerClientTests/Pods/Alamofire/Source/ServerTrustPolicy.swift
diff --git a/samples/client/petstore/swift3/default/SwaggerClientTests/Pods/Alamofire/Source/SessionDelegate.swift b/CI/samples.ci/client/petstore/swift3/default/SwaggerClientTests/Pods/Alamofire/Source/SessionDelegate.swift
similarity index 100%
rename from samples/client/petstore/swift3/default/SwaggerClientTests/Pods/Alamofire/Source/SessionDelegate.swift
rename to CI/samples.ci/client/petstore/swift3/default/SwaggerClientTests/Pods/Alamofire/Source/SessionDelegate.swift
diff --git a/samples/client/petstore/swift3/default/SwaggerClientTests/Pods/Alamofire/Source/SessionManager.swift b/CI/samples.ci/client/petstore/swift3/default/SwaggerClientTests/Pods/Alamofire/Source/SessionManager.swift
similarity index 100%
rename from samples/client/petstore/swift3/default/SwaggerClientTests/Pods/Alamofire/Source/SessionManager.swift
rename to CI/samples.ci/client/petstore/swift3/default/SwaggerClientTests/Pods/Alamofire/Source/SessionManager.swift
diff --git a/samples/client/petstore/swift3/default/SwaggerClientTests/Pods/Alamofire/Source/TaskDelegate.swift b/CI/samples.ci/client/petstore/swift3/default/SwaggerClientTests/Pods/Alamofire/Source/TaskDelegate.swift
similarity index 100%
rename from samples/client/petstore/swift3/default/SwaggerClientTests/Pods/Alamofire/Source/TaskDelegate.swift
rename to CI/samples.ci/client/petstore/swift3/default/SwaggerClientTests/Pods/Alamofire/Source/TaskDelegate.swift
diff --git a/samples/client/petstore/swift3/default/SwaggerClientTests/Pods/Alamofire/Source/Timeline.swift b/CI/samples.ci/client/petstore/swift3/default/SwaggerClientTests/Pods/Alamofire/Source/Timeline.swift
similarity index 100%
rename from samples/client/petstore/swift3/default/SwaggerClientTests/Pods/Alamofire/Source/Timeline.swift
rename to CI/samples.ci/client/petstore/swift3/default/SwaggerClientTests/Pods/Alamofire/Source/Timeline.swift
diff --git a/samples/client/petstore/swift3/default/SwaggerClientTests/Pods/Alamofire/Source/Validation.swift b/CI/samples.ci/client/petstore/swift3/default/SwaggerClientTests/Pods/Alamofire/Source/Validation.swift
similarity index 100%
rename from samples/client/petstore/swift3/default/SwaggerClientTests/Pods/Alamofire/Source/Validation.swift
rename to CI/samples.ci/client/petstore/swift3/default/SwaggerClientTests/Pods/Alamofire/Source/Validation.swift
diff --git a/samples/client/petstore/swift3/default/SwaggerClientTests/Pods/Local Podspecs/PetstoreClient.podspec.json b/CI/samples.ci/client/petstore/swift3/default/SwaggerClientTests/Pods/Local Podspecs/PetstoreClient.podspec.json
similarity index 100%
rename from samples/client/petstore/swift3/default/SwaggerClientTests/Pods/Local Podspecs/PetstoreClient.podspec.json
rename to CI/samples.ci/client/petstore/swift3/default/SwaggerClientTests/Pods/Local Podspecs/PetstoreClient.podspec.json
diff --git a/samples/client/petstore/swift3/default/SwaggerClientTests/Pods/Manifest.lock b/CI/samples.ci/client/petstore/swift3/default/SwaggerClientTests/Pods/Manifest.lock
similarity index 100%
rename from samples/client/petstore/swift3/default/SwaggerClientTests/Pods/Manifest.lock
rename to CI/samples.ci/client/petstore/swift3/default/SwaggerClientTests/Pods/Manifest.lock
diff --git a/samples/client/petstore/swift3/default/SwaggerClientTests/Pods/Pods.xcodeproj/project.pbxproj b/CI/samples.ci/client/petstore/swift3/default/SwaggerClientTests/Pods/Pods.xcodeproj/project.pbxproj
similarity index 100%
rename from samples/client/petstore/swift3/default/SwaggerClientTests/Pods/Pods.xcodeproj/project.pbxproj
rename to CI/samples.ci/client/petstore/swift3/default/SwaggerClientTests/Pods/Pods.xcodeproj/project.pbxproj
diff --git a/samples/client/test/swift4/default/TestClientApp/Pods/Target Support Files/Alamofire/Alamofire-dummy.m b/CI/samples.ci/client/petstore/swift3/default/SwaggerClientTests/Pods/Target Support Files/Alamofire/Alamofire-dummy.m
similarity index 100%
rename from samples/client/test/swift4/default/TestClientApp/Pods/Target Support Files/Alamofire/Alamofire-dummy.m
rename to CI/samples.ci/client/petstore/swift3/default/SwaggerClientTests/Pods/Target Support Files/Alamofire/Alamofire-dummy.m
diff --git a/samples/client/test/swift4/default/TestClientApp/Pods/Target Support Files/Alamofire/Alamofire-prefix.pch b/CI/samples.ci/client/petstore/swift3/default/SwaggerClientTests/Pods/Target Support Files/Alamofire/Alamofire-prefix.pch
similarity index 100%
rename from samples/client/test/swift4/default/TestClientApp/Pods/Target Support Files/Alamofire/Alamofire-prefix.pch
rename to CI/samples.ci/client/petstore/swift3/default/SwaggerClientTests/Pods/Target Support Files/Alamofire/Alamofire-prefix.pch
diff --git a/samples/client/test/swift4/default/TestClientApp/Pods/Target Support Files/Alamofire/Alamofire-umbrella.h b/CI/samples.ci/client/petstore/swift3/default/SwaggerClientTests/Pods/Target Support Files/Alamofire/Alamofire-umbrella.h
similarity index 100%
rename from samples/client/test/swift4/default/TestClientApp/Pods/Target Support Files/Alamofire/Alamofire-umbrella.h
rename to CI/samples.ci/client/petstore/swift3/default/SwaggerClientTests/Pods/Target Support Files/Alamofire/Alamofire-umbrella.h
diff --git a/samples/client/test/swift4/default/TestClientApp/Pods/Target Support Files/Alamofire/Alamofire.modulemap b/CI/samples.ci/client/petstore/swift3/default/SwaggerClientTests/Pods/Target Support Files/Alamofire/Alamofire.modulemap
similarity index 100%
rename from samples/client/test/swift4/default/TestClientApp/Pods/Target Support Files/Alamofire/Alamofire.modulemap
rename to CI/samples.ci/client/petstore/swift3/default/SwaggerClientTests/Pods/Target Support Files/Alamofire/Alamofire.modulemap
diff --git a/samples/client/petstore/swift3/default/SwaggerClientTests/Pods/Target Support Files/Alamofire/Alamofire.xcconfig b/CI/samples.ci/client/petstore/swift3/default/SwaggerClientTests/Pods/Target Support Files/Alamofire/Alamofire.xcconfig
similarity index 100%
rename from samples/client/petstore/swift3/default/SwaggerClientTests/Pods/Target Support Files/Alamofire/Alamofire.xcconfig
rename to CI/samples.ci/client/petstore/swift3/default/SwaggerClientTests/Pods/Target Support Files/Alamofire/Alamofire.xcconfig
diff --git a/samples/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Target Support Files/Alamofire/Info.plist b/CI/samples.ci/client/petstore/swift3/default/SwaggerClientTests/Pods/Target Support Files/Alamofire/Info.plist
similarity index 100%
rename from samples/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Target Support Files/Alamofire/Info.plist
rename to CI/samples.ci/client/petstore/swift3/default/SwaggerClientTests/Pods/Target Support Files/Alamofire/Info.plist
diff --git a/samples/client/test/swift4/default/TestClientApp/Pods/Target Support Files/TestClient/Info.plist b/CI/samples.ci/client/petstore/swift3/default/SwaggerClientTests/Pods/Target Support Files/PetstoreClient/Info.plist
similarity index 100%
rename from samples/client/test/swift4/default/TestClientApp/Pods/Target Support Files/TestClient/Info.plist
rename to CI/samples.ci/client/petstore/swift3/default/SwaggerClientTests/Pods/Target Support Files/PetstoreClient/Info.plist
diff --git a/CI/samples.ci/client/petstore/swift3/default/SwaggerClientTests/Pods/Target Support Files/PetstoreClient/PetstoreClient-dummy.m b/CI/samples.ci/client/petstore/swift3/default/SwaggerClientTests/Pods/Target Support Files/PetstoreClient/PetstoreClient-dummy.m
new file mode 100644
index 000000000000..749b412f85c0
--- /dev/null
+++ b/CI/samples.ci/client/petstore/swift3/default/SwaggerClientTests/Pods/Target Support Files/PetstoreClient/PetstoreClient-dummy.m
@@ -0,0 +1,5 @@
+#import
+@interface PodsDummy_PetstoreClient : NSObject
+@end
+@implementation PodsDummy_PetstoreClient
+@end
diff --git a/samples/client/test/swift4/default/TestClientApp/Pods/Target Support Files/TestClient/TestClient-prefix.pch b/CI/samples.ci/client/petstore/swift3/default/SwaggerClientTests/Pods/Target Support Files/PetstoreClient/PetstoreClient-prefix.pch
similarity index 100%
rename from samples/client/test/swift4/default/TestClientApp/Pods/Target Support Files/TestClient/TestClient-prefix.pch
rename to CI/samples.ci/client/petstore/swift3/default/SwaggerClientTests/Pods/Target Support Files/PetstoreClient/PetstoreClient-prefix.pch
diff --git a/CI/samples.ci/client/petstore/swift3/default/SwaggerClientTests/Pods/Target Support Files/PetstoreClient/PetstoreClient-umbrella.h b/CI/samples.ci/client/petstore/swift3/default/SwaggerClientTests/Pods/Target Support Files/PetstoreClient/PetstoreClient-umbrella.h
new file mode 100644
index 000000000000..2a366623a36f
--- /dev/null
+++ b/CI/samples.ci/client/petstore/swift3/default/SwaggerClientTests/Pods/Target Support Files/PetstoreClient/PetstoreClient-umbrella.h
@@ -0,0 +1,16 @@
+#ifdef __OBJC__
+#import
+#else
+#ifndef FOUNDATION_EXPORT
+#if defined(__cplusplus)
+#define FOUNDATION_EXPORT extern "C"
+#else
+#define FOUNDATION_EXPORT extern
+#endif
+#endif
+#endif
+
+
+FOUNDATION_EXPORT double PetstoreClientVersionNumber;
+FOUNDATION_EXPORT const unsigned char PetstoreClientVersionString[];
+
diff --git a/CI/samples.ci/client/petstore/swift3/default/SwaggerClientTests/Pods/Target Support Files/PetstoreClient/PetstoreClient.modulemap b/CI/samples.ci/client/petstore/swift3/default/SwaggerClientTests/Pods/Target Support Files/PetstoreClient/PetstoreClient.modulemap
new file mode 100644
index 000000000000..7fdfc46cf796
--- /dev/null
+++ b/CI/samples.ci/client/petstore/swift3/default/SwaggerClientTests/Pods/Target Support Files/PetstoreClient/PetstoreClient.modulemap
@@ -0,0 +1,6 @@
+framework module PetstoreClient {
+ umbrella header "PetstoreClient-umbrella.h"
+
+ export *
+ module * { export * }
+}
diff --git a/samples/client/petstore/swift3/default/SwaggerClientTests/Pods/Target Support Files/PetstoreClient/PetstoreClient.xcconfig b/CI/samples.ci/client/petstore/swift3/default/SwaggerClientTests/Pods/Target Support Files/PetstoreClient/PetstoreClient.xcconfig
similarity index 100%
rename from samples/client/petstore/swift3/default/SwaggerClientTests/Pods/Target Support Files/PetstoreClient/PetstoreClient.xcconfig
rename to CI/samples.ci/client/petstore/swift3/default/SwaggerClientTests/Pods/Target Support Files/PetstoreClient/PetstoreClient.xcconfig
diff --git a/samples/client/petstore/swift3/default/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient/Pods-SwaggerClient-acknowledgements.markdown b/CI/samples.ci/client/petstore/swift3/default/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient/Pods-SwaggerClient-acknowledgements.markdown
similarity index 100%
rename from samples/client/petstore/swift3/default/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient/Pods-SwaggerClient-acknowledgements.markdown
rename to CI/samples.ci/client/petstore/swift3/default/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient/Pods-SwaggerClient-acknowledgements.markdown
diff --git a/samples/client/petstore/swift3/default/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient/Pods-SwaggerClient-acknowledgements.plist b/CI/samples.ci/client/petstore/swift3/default/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient/Pods-SwaggerClient-acknowledgements.plist
similarity index 100%
rename from samples/client/petstore/swift3/default/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient/Pods-SwaggerClient-acknowledgements.plist
rename to CI/samples.ci/client/petstore/swift3/default/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient/Pods-SwaggerClient-acknowledgements.plist
diff --git a/CI/samples.ci/client/petstore/swift3/default/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient/Pods-SwaggerClient-dummy.m b/CI/samples.ci/client/petstore/swift3/default/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient/Pods-SwaggerClient-dummy.m
new file mode 100644
index 000000000000..6236440163b8
--- /dev/null
+++ b/CI/samples.ci/client/petstore/swift3/default/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient/Pods-SwaggerClient-dummy.m
@@ -0,0 +1,5 @@
+#import
+@interface PodsDummy_Pods_SwaggerClient : NSObject
+@end
+@implementation PodsDummy_Pods_SwaggerClient
+@end
diff --git a/samples/client/petstore/swift3/default/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient/Pods-SwaggerClient-frameworks.sh b/CI/samples.ci/client/petstore/swift3/default/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient/Pods-SwaggerClient-frameworks.sh
similarity index 100%
rename from samples/client/petstore/swift3/default/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient/Pods-SwaggerClient-frameworks.sh
rename to CI/samples.ci/client/petstore/swift3/default/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient/Pods-SwaggerClient-frameworks.sh
diff --git a/CI/samples.ci/client/petstore/swift3/default/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient/Pods-SwaggerClient-resources.sh b/CI/samples.ci/client/petstore/swift3/default/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient/Pods-SwaggerClient-resources.sh
new file mode 100755
index 000000000000..345301f2c5ca
--- /dev/null
+++ b/CI/samples.ci/client/petstore/swift3/default/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient/Pods-SwaggerClient-resources.sh
@@ -0,0 +1,118 @@
+#!/bin/sh
+set -e
+set -u
+set -o pipefail
+
+if [ -z ${UNLOCALIZED_RESOURCES_FOLDER_PATH+x} ]; then
+ # If UNLOCALIZED_RESOURCES_FOLDER_PATH is not set, then there's nowhere for us to copy
+ # resources to, so exit 0 (signalling the script phase was successful).
+ exit 0
+fi
+
+mkdir -p "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}"
+
+RESOURCES_TO_COPY=${PODS_ROOT}/resources-to-copy-${TARGETNAME}.txt
+> "$RESOURCES_TO_COPY"
+
+XCASSET_FILES=()
+
+# This protects against multiple targets copying the same framework dependency at the same time. The solution
+# was originally proposed here: https://lists.samba.org/archive/rsync/2008-February/020158.html
+RSYNC_PROTECT_TMP_FILES=(--filter "P .*.??????")
+
+case "${TARGETED_DEVICE_FAMILY:-}" in
+ 1,2)
+ TARGET_DEVICE_ARGS="--target-device ipad --target-device iphone"
+ ;;
+ 1)
+ TARGET_DEVICE_ARGS="--target-device iphone"
+ ;;
+ 2)
+ TARGET_DEVICE_ARGS="--target-device ipad"
+ ;;
+ 3)
+ TARGET_DEVICE_ARGS="--target-device tv"
+ ;;
+ 4)
+ TARGET_DEVICE_ARGS="--target-device watch"
+ ;;
+ *)
+ TARGET_DEVICE_ARGS="--target-device mac"
+ ;;
+esac
+
+install_resource()
+{
+ if [[ "$1" = /* ]] ; then
+ RESOURCE_PATH="$1"
+ else
+ RESOURCE_PATH="${PODS_ROOT}/$1"
+ fi
+ if [[ ! -e "$RESOURCE_PATH" ]] ; then
+ cat << EOM
+error: Resource "$RESOURCE_PATH" not found. Run 'pod install' to update the copy resources script.
+EOM
+ exit 1
+ fi
+ case $RESOURCE_PATH in
+ *.storyboard)
+ echo "ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .storyboard`.storyboardc $RESOURCE_PATH --sdk ${SDKROOT} ${TARGET_DEVICE_ARGS}" || true
+ ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .storyboard`.storyboardc" "$RESOURCE_PATH" --sdk "${SDKROOT}" ${TARGET_DEVICE_ARGS}
+ ;;
+ *.xib)
+ echo "ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib $RESOURCE_PATH --sdk ${SDKROOT} ${TARGET_DEVICE_ARGS}" || true
+ ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib" "$RESOURCE_PATH" --sdk "${SDKROOT}" ${TARGET_DEVICE_ARGS}
+ ;;
+ *.framework)
+ echo "mkdir -p ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" || true
+ mkdir -p "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
+ echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" $RESOURCE_PATH ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" || true
+ rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
+ ;;
+ *.xcdatamodel)
+ echo "xcrun momc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH"`.mom\"" || true
+ xcrun momc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodel`.mom"
+ ;;
+ *.xcdatamodeld)
+ echo "xcrun momc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodeld`.momd\"" || true
+ xcrun momc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodeld`.momd"
+ ;;
+ *.xcmappingmodel)
+ echo "xcrun mapc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcmappingmodel`.cdm\"" || true
+ xcrun mapc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcmappingmodel`.cdm"
+ ;;
+ *.xcassets)
+ ABSOLUTE_XCASSET_FILE="$RESOURCE_PATH"
+ XCASSET_FILES+=("$ABSOLUTE_XCASSET_FILE")
+ ;;
+ *)
+ echo "$RESOURCE_PATH" || true
+ echo "$RESOURCE_PATH" >> "$RESOURCES_TO_COPY"
+ ;;
+ esac
+}
+
+mkdir -p "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}"
+rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from="$RESOURCES_TO_COPY" / "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}"
+if [[ "${ACTION}" == "install" ]] && [[ "${SKIP_INSTALL}" == "NO" ]]; then
+ mkdir -p "${INSTALL_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}"
+ rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from="$RESOURCES_TO_COPY" / "${INSTALL_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}"
+fi
+rm -f "$RESOURCES_TO_COPY"
+
+if [[ -n "${WRAPPER_EXTENSION}" ]] && [ "`xcrun --find actool`" ] && [ -n "${XCASSET_FILES:-}" ]
+then
+ # Find all other xcassets (this unfortunately includes those of path pods and other targets).
+ OTHER_XCASSETS=$(find "$PWD" -iname "*.xcassets" -type d)
+ while read line; do
+ if [[ $line != "${PODS_ROOT}*" ]]; then
+ XCASSET_FILES+=("$line")
+ fi
+ done <<<"$OTHER_XCASSETS"
+
+ if [ -z ${ASSETCATALOG_COMPILER_APPICON_NAME+x} ]; then
+ printf "%s\0" "${XCASSET_FILES[@]}" | xargs -0 xcrun actool --output-format human-readable-text --notices --warnings --platform "${PLATFORM_NAME}" --minimum-deployment-target "${!DEPLOYMENT_TARGET_SETTING_NAME}" ${TARGET_DEVICE_ARGS} --compress-pngs --compile "${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}"
+ else
+ printf "%s\0" "${XCASSET_FILES[@]}" | xargs -0 xcrun actool --output-format human-readable-text --notices --warnings --platform "${PLATFORM_NAME}" --minimum-deployment-target "${!DEPLOYMENT_TARGET_SETTING_NAME}" ${TARGET_DEVICE_ARGS} --compress-pngs --compile "${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" --app-icon "${ASSETCATALOG_COMPILER_APPICON_NAME}" --output-partial-info-plist "${TARGET_TEMP_DIR}/assetcatalog_generated_info_cocoapods.plist"
+ fi
+fi
diff --git a/CI/samples.ci/client/petstore/swift3/default/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient/Pods-SwaggerClient-umbrella.h b/CI/samples.ci/client/petstore/swift3/default/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient/Pods-SwaggerClient-umbrella.h
new file mode 100644
index 000000000000..b7da51aaf252
--- /dev/null
+++ b/CI/samples.ci/client/petstore/swift3/default/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient/Pods-SwaggerClient-umbrella.h
@@ -0,0 +1,16 @@
+#ifdef __OBJC__
+#import
+#else
+#ifndef FOUNDATION_EXPORT
+#if defined(__cplusplus)
+#define FOUNDATION_EXPORT extern "C"
+#else
+#define FOUNDATION_EXPORT extern
+#endif
+#endif
+#endif
+
+
+FOUNDATION_EXPORT double Pods_SwaggerClientVersionNumber;
+FOUNDATION_EXPORT const unsigned char Pods_SwaggerClientVersionString[];
+
diff --git a/samples/client/petstore/swift3/default/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient/Pods-SwaggerClient.debug.xcconfig b/CI/samples.ci/client/petstore/swift3/default/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient/Pods-SwaggerClient.debug.xcconfig
similarity index 100%
rename from samples/client/petstore/swift3/default/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient/Pods-SwaggerClient.debug.xcconfig
rename to CI/samples.ci/client/petstore/swift3/default/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient/Pods-SwaggerClient.debug.xcconfig
diff --git a/CI/samples.ci/client/petstore/swift3/default/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient/Pods-SwaggerClient.modulemap b/CI/samples.ci/client/petstore/swift3/default/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient/Pods-SwaggerClient.modulemap
new file mode 100644
index 000000000000..ef919b6c0d1f
--- /dev/null
+++ b/CI/samples.ci/client/petstore/swift3/default/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient/Pods-SwaggerClient.modulemap
@@ -0,0 +1,6 @@
+framework module Pods_SwaggerClient {
+ umbrella header "Pods-SwaggerClient-umbrella.h"
+
+ export *
+ module * { export * }
+}
diff --git a/samples/client/petstore/swift3/default/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient/Pods-SwaggerClient.release.xcconfig b/CI/samples.ci/client/petstore/swift3/default/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient/Pods-SwaggerClient.release.xcconfig
similarity index 100%
rename from samples/client/petstore/swift3/default/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient/Pods-SwaggerClient.release.xcconfig
rename to CI/samples.ci/client/petstore/swift3/default/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient/Pods-SwaggerClient.release.xcconfig
diff --git a/samples/client/test/swift4/default/TestClientApp/Pods/Target Support Files/Pods-TestClientAppTests/Pods-TestClientAppTests-acknowledgements.markdown b/CI/samples.ci/client/petstore/swift3/default/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClientTests/Pods-SwaggerClientTests-acknowledgements.markdown
similarity index 100%
rename from samples/client/test/swift4/default/TestClientApp/Pods/Target Support Files/Pods-TestClientAppTests/Pods-TestClientAppTests-acknowledgements.markdown
rename to CI/samples.ci/client/petstore/swift3/default/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClientTests/Pods-SwaggerClientTests-acknowledgements.markdown
diff --git a/samples/client/test/swift4/default/TestClientApp/Pods/Target Support Files/Pods-TestClientAppTests/Pods-TestClientAppTests-acknowledgements.plist b/CI/samples.ci/client/petstore/swift3/default/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClientTests/Pods-SwaggerClientTests-acknowledgements.plist
similarity index 100%
rename from samples/client/test/swift4/default/TestClientApp/Pods/Target Support Files/Pods-TestClientAppTests/Pods-TestClientAppTests-acknowledgements.plist
rename to CI/samples.ci/client/petstore/swift3/default/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClientTests/Pods-SwaggerClientTests-acknowledgements.plist
diff --git a/CI/samples.ci/client/petstore/swift3/default/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClientTests/Pods-SwaggerClientTests-dummy.m b/CI/samples.ci/client/petstore/swift3/default/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClientTests/Pods-SwaggerClientTests-dummy.m
new file mode 100644
index 000000000000..bb17fa2b80ff
--- /dev/null
+++ b/CI/samples.ci/client/petstore/swift3/default/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClientTests/Pods-SwaggerClientTests-dummy.m
@@ -0,0 +1,5 @@
+#import
+@interface PodsDummy_Pods_SwaggerClientTests : NSObject
+@end
+@implementation PodsDummy_Pods_SwaggerClientTests
+@end
diff --git a/CI/samples.ci/client/petstore/swift3/default/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClientTests/Pods-SwaggerClientTests-frameworks.sh b/CI/samples.ci/client/petstore/swift3/default/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClientTests/Pods-SwaggerClientTests-frameworks.sh
new file mode 100755
index 000000000000..08e3eaaca45a
--- /dev/null
+++ b/CI/samples.ci/client/petstore/swift3/default/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClientTests/Pods-SwaggerClientTests-frameworks.sh
@@ -0,0 +1,146 @@
+#!/bin/sh
+set -e
+set -u
+set -o pipefail
+
+if [ -z ${FRAMEWORKS_FOLDER_PATH+x} ]; then
+ # If FRAMEWORKS_FOLDER_PATH is not set, then there's nowhere for us to copy
+ # frameworks to, so exit 0 (signalling the script phase was successful).
+ exit 0
+fi
+
+echo "mkdir -p ${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
+mkdir -p "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
+
+COCOAPODS_PARALLEL_CODE_SIGN="${COCOAPODS_PARALLEL_CODE_SIGN:-false}"
+SWIFT_STDLIB_PATH="${DT_TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}"
+
+# Used as a return value for each invocation of `strip_invalid_archs` function.
+STRIP_BINARY_RETVAL=0
+
+# This protects against multiple targets copying the same framework dependency at the same time. The solution
+# was originally proposed here: https://lists.samba.org/archive/rsync/2008-February/020158.html
+RSYNC_PROTECT_TMP_FILES=(--filter "P .*.??????")
+
+# Copies and strips a vendored framework
+install_framework()
+{
+ if [ -r "${BUILT_PRODUCTS_DIR}/$1" ]; then
+ local source="${BUILT_PRODUCTS_DIR}/$1"
+ elif [ -r "${BUILT_PRODUCTS_DIR}/$(basename "$1")" ]; then
+ local source="${BUILT_PRODUCTS_DIR}/$(basename "$1")"
+ elif [ -r "$1" ]; then
+ local source="$1"
+ fi
+
+ local destination="${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
+
+ if [ -L "${source}" ]; then
+ echo "Symlinked..."
+ source="$(readlink "${source}")"
+ fi
+
+ # Use filter instead of exclude so missing patterns don't throw errors.
+ echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${source}\" \"${destination}\""
+ rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${source}" "${destination}"
+
+ local basename
+ basename="$(basename -s .framework "$1")"
+ binary="${destination}/${basename}.framework/${basename}"
+ if ! [ -r "$binary" ]; then
+ binary="${destination}/${basename}"
+ fi
+
+ # Strip invalid architectures so "fat" simulator / device frameworks work on device
+ if [[ "$(file "$binary")" == *"dynamically linked shared library"* ]]; then
+ strip_invalid_archs "$binary"
+ fi
+
+ # Resign the code if required by the build settings to avoid unstable apps
+ code_sign_if_enabled "${destination}/$(basename "$1")"
+
+ # Embed linked Swift runtime libraries. No longer necessary as of Xcode 7.
+ if [ "${XCODE_VERSION_MAJOR}" -lt 7 ]; then
+ local swift_runtime_libs
+ swift_runtime_libs=$(xcrun otool -LX "$binary" | grep --color=never @rpath/libswift | sed -E s/@rpath\\/\(.+dylib\).*/\\1/g | uniq -u && exit ${PIPESTATUS[0]})
+ for lib in $swift_runtime_libs; do
+ echo "rsync -auv \"${SWIFT_STDLIB_PATH}/${lib}\" \"${destination}\""
+ rsync -auv "${SWIFT_STDLIB_PATH}/${lib}" "${destination}"
+ code_sign_if_enabled "${destination}/${lib}"
+ done
+ fi
+}
+
+# Copies and strips a vendored dSYM
+install_dsym() {
+ local source="$1"
+ if [ -r "$source" ]; then
+ # Copy the dSYM into a the targets temp dir.
+ echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${source}\" \"${DERIVED_FILES_DIR}\""
+ rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${source}" "${DERIVED_FILES_DIR}"
+
+ local basename
+ basename="$(basename -s .framework.dSYM "$source")"
+ binary="${DERIVED_FILES_DIR}/${basename}.framework.dSYM/Contents/Resources/DWARF/${basename}"
+
+ # Strip invalid architectures so "fat" simulator / device frameworks work on device
+ if [[ "$(file "$binary")" == *"Mach-O dSYM companion"* ]]; then
+ strip_invalid_archs "$binary"
+ fi
+
+ if [[ $STRIP_BINARY_RETVAL == 1 ]]; then
+ # Move the stripped file into its final destination.
+ echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${DERIVED_FILES_DIR}/${basename}.framework.dSYM\" \"${DWARF_DSYM_FOLDER_PATH}\""
+ rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${DERIVED_FILES_DIR}/${basename}.framework.dSYM" "${DWARF_DSYM_FOLDER_PATH}"
+ else
+ # The dSYM was not stripped at all, in this case touch a fake folder so the input/output paths from Xcode do not reexecute this script because the file is missing.
+ touch "${DWARF_DSYM_FOLDER_PATH}/${basename}.framework.dSYM"
+ fi
+ fi
+}
+
+# Signs a framework with the provided identity
+code_sign_if_enabled() {
+ if [ -n "${EXPANDED_CODE_SIGN_IDENTITY}" -a "${CODE_SIGNING_REQUIRED:-}" != "NO" -a "${CODE_SIGNING_ALLOWED}" != "NO" ]; then
+ # Use the current code_sign_identitiy
+ echo "Code Signing $1 with Identity ${EXPANDED_CODE_SIGN_IDENTITY_NAME}"
+ local code_sign_cmd="/usr/bin/codesign --force --sign ${EXPANDED_CODE_SIGN_IDENTITY} ${OTHER_CODE_SIGN_FLAGS:-} --preserve-metadata=identifier,entitlements '$1'"
+
+ if [ "${COCOAPODS_PARALLEL_CODE_SIGN}" == "true" ]; then
+ code_sign_cmd="$code_sign_cmd &"
+ fi
+ echo "$code_sign_cmd"
+ eval "$code_sign_cmd"
+ fi
+}
+
+# Strip invalid architectures
+strip_invalid_archs() {
+ binary="$1"
+ # Get architectures for current target binary
+ binary_archs="$(lipo -info "$binary" | rev | cut -d ':' -f1 | awk '{$1=$1;print}' | rev)"
+ # Intersect them with the architectures we are building for
+ intersected_archs="$(echo ${ARCHS[@]} ${binary_archs[@]} | tr ' ' '\n' | sort | uniq -d)"
+ # If there are no archs supported by this binary then warn the user
+ if [[ -z "$intersected_archs" ]]; then
+ echo "warning: [CP] Vendored binary '$binary' contains architectures ($binary_archs) none of which match the current build architectures ($ARCHS)."
+ STRIP_BINARY_RETVAL=0
+ return
+ fi
+ stripped=""
+ for arch in $binary_archs; do
+ if ! [[ "${ARCHS}" == *"$arch"* ]]; then
+ # Strip non-valid architectures in-place
+ lipo -remove "$arch" -output "$binary" "$binary" || exit 1
+ stripped="$stripped $arch"
+ fi
+ done
+ if [[ "$stripped" ]]; then
+ echo "Stripped $binary of architectures:$stripped"
+ fi
+ STRIP_BINARY_RETVAL=1
+}
+
+if [ "${COCOAPODS_PARALLEL_CODE_SIGN}" == "true" ]; then
+ wait
+fi
diff --git a/CI/samples.ci/client/petstore/swift3/default/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClientTests/Pods-SwaggerClientTests-resources.sh b/CI/samples.ci/client/petstore/swift3/default/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClientTests/Pods-SwaggerClientTests-resources.sh
new file mode 100755
index 000000000000..345301f2c5ca
--- /dev/null
+++ b/CI/samples.ci/client/petstore/swift3/default/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClientTests/Pods-SwaggerClientTests-resources.sh
@@ -0,0 +1,118 @@
+#!/bin/sh
+set -e
+set -u
+set -o pipefail
+
+if [ -z ${UNLOCALIZED_RESOURCES_FOLDER_PATH+x} ]; then
+ # If UNLOCALIZED_RESOURCES_FOLDER_PATH is not set, then there's nowhere for us to copy
+ # resources to, so exit 0 (signalling the script phase was successful).
+ exit 0
+fi
+
+mkdir -p "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}"
+
+RESOURCES_TO_COPY=${PODS_ROOT}/resources-to-copy-${TARGETNAME}.txt
+> "$RESOURCES_TO_COPY"
+
+XCASSET_FILES=()
+
+# This protects against multiple targets copying the same framework dependency at the same time. The solution
+# was originally proposed here: https://lists.samba.org/archive/rsync/2008-February/020158.html
+RSYNC_PROTECT_TMP_FILES=(--filter "P .*.??????")
+
+case "${TARGETED_DEVICE_FAMILY:-}" in
+ 1,2)
+ TARGET_DEVICE_ARGS="--target-device ipad --target-device iphone"
+ ;;
+ 1)
+ TARGET_DEVICE_ARGS="--target-device iphone"
+ ;;
+ 2)
+ TARGET_DEVICE_ARGS="--target-device ipad"
+ ;;
+ 3)
+ TARGET_DEVICE_ARGS="--target-device tv"
+ ;;
+ 4)
+ TARGET_DEVICE_ARGS="--target-device watch"
+ ;;
+ *)
+ TARGET_DEVICE_ARGS="--target-device mac"
+ ;;
+esac
+
+install_resource()
+{
+ if [[ "$1" = /* ]] ; then
+ RESOURCE_PATH="$1"
+ else
+ RESOURCE_PATH="${PODS_ROOT}/$1"
+ fi
+ if [[ ! -e "$RESOURCE_PATH" ]] ; then
+ cat << EOM
+error: Resource "$RESOURCE_PATH" not found. Run 'pod install' to update the copy resources script.
+EOM
+ exit 1
+ fi
+ case $RESOURCE_PATH in
+ *.storyboard)
+ echo "ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .storyboard`.storyboardc $RESOURCE_PATH --sdk ${SDKROOT} ${TARGET_DEVICE_ARGS}" || true
+ ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .storyboard`.storyboardc" "$RESOURCE_PATH" --sdk "${SDKROOT}" ${TARGET_DEVICE_ARGS}
+ ;;
+ *.xib)
+ echo "ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib $RESOURCE_PATH --sdk ${SDKROOT} ${TARGET_DEVICE_ARGS}" || true
+ ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib" "$RESOURCE_PATH" --sdk "${SDKROOT}" ${TARGET_DEVICE_ARGS}
+ ;;
+ *.framework)
+ echo "mkdir -p ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" || true
+ mkdir -p "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
+ echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" $RESOURCE_PATH ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" || true
+ rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
+ ;;
+ *.xcdatamodel)
+ echo "xcrun momc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH"`.mom\"" || true
+ xcrun momc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodel`.mom"
+ ;;
+ *.xcdatamodeld)
+ echo "xcrun momc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodeld`.momd\"" || true
+ xcrun momc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodeld`.momd"
+ ;;
+ *.xcmappingmodel)
+ echo "xcrun mapc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcmappingmodel`.cdm\"" || true
+ xcrun mapc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcmappingmodel`.cdm"
+ ;;
+ *.xcassets)
+ ABSOLUTE_XCASSET_FILE="$RESOURCE_PATH"
+ XCASSET_FILES+=("$ABSOLUTE_XCASSET_FILE")
+ ;;
+ *)
+ echo "$RESOURCE_PATH" || true
+ echo "$RESOURCE_PATH" >> "$RESOURCES_TO_COPY"
+ ;;
+ esac
+}
+
+mkdir -p "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}"
+rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from="$RESOURCES_TO_COPY" / "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}"
+if [[ "${ACTION}" == "install" ]] && [[ "${SKIP_INSTALL}" == "NO" ]]; then
+ mkdir -p "${INSTALL_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}"
+ rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from="$RESOURCES_TO_COPY" / "${INSTALL_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}"
+fi
+rm -f "$RESOURCES_TO_COPY"
+
+if [[ -n "${WRAPPER_EXTENSION}" ]] && [ "`xcrun --find actool`" ] && [ -n "${XCASSET_FILES:-}" ]
+then
+ # Find all other xcassets (this unfortunately includes those of path pods and other targets).
+ OTHER_XCASSETS=$(find "$PWD" -iname "*.xcassets" -type d)
+ while read line; do
+ if [[ $line != "${PODS_ROOT}*" ]]; then
+ XCASSET_FILES+=("$line")
+ fi
+ done <<<"$OTHER_XCASSETS"
+
+ if [ -z ${ASSETCATALOG_COMPILER_APPICON_NAME+x} ]; then
+ printf "%s\0" "${XCASSET_FILES[@]}" | xargs -0 xcrun actool --output-format human-readable-text --notices --warnings --platform "${PLATFORM_NAME}" --minimum-deployment-target "${!DEPLOYMENT_TARGET_SETTING_NAME}" ${TARGET_DEVICE_ARGS} --compress-pngs --compile "${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}"
+ else
+ printf "%s\0" "${XCASSET_FILES[@]}" | xargs -0 xcrun actool --output-format human-readable-text --notices --warnings --platform "${PLATFORM_NAME}" --minimum-deployment-target "${!DEPLOYMENT_TARGET_SETTING_NAME}" ${TARGET_DEVICE_ARGS} --compress-pngs --compile "${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" --app-icon "${ASSETCATALOG_COMPILER_APPICON_NAME}" --output-partial-info-plist "${TARGET_TEMP_DIR}/assetcatalog_generated_info_cocoapods.plist"
+ fi
+fi
diff --git a/CI/samples.ci/client/petstore/swift3/default/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClientTests/Pods-SwaggerClientTests-umbrella.h b/CI/samples.ci/client/petstore/swift3/default/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClientTests/Pods-SwaggerClientTests-umbrella.h
new file mode 100644
index 000000000000..b2e4925a9e41
--- /dev/null
+++ b/CI/samples.ci/client/petstore/swift3/default/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClientTests/Pods-SwaggerClientTests-umbrella.h
@@ -0,0 +1,16 @@
+#ifdef __OBJC__
+#import
+#else
+#ifndef FOUNDATION_EXPORT
+#if defined(__cplusplus)
+#define FOUNDATION_EXPORT extern "C"
+#else
+#define FOUNDATION_EXPORT extern
+#endif
+#endif
+#endif
+
+
+FOUNDATION_EXPORT double Pods_SwaggerClientTestsVersionNumber;
+FOUNDATION_EXPORT const unsigned char Pods_SwaggerClientTestsVersionString[];
+
diff --git a/samples/client/petstore/swift3/default/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClientTests/Pods-SwaggerClientTests.debug.xcconfig b/CI/samples.ci/client/petstore/swift3/default/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClientTests/Pods-SwaggerClientTests.debug.xcconfig
similarity index 100%
rename from samples/client/petstore/swift3/default/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClientTests/Pods-SwaggerClientTests.debug.xcconfig
rename to CI/samples.ci/client/petstore/swift3/default/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClientTests/Pods-SwaggerClientTests.debug.xcconfig
diff --git a/CI/samples.ci/client/petstore/swift3/default/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClientTests/Pods-SwaggerClientTests.modulemap b/CI/samples.ci/client/petstore/swift3/default/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClientTests/Pods-SwaggerClientTests.modulemap
new file mode 100644
index 000000000000..a848da7ffb30
--- /dev/null
+++ b/CI/samples.ci/client/petstore/swift3/default/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClientTests/Pods-SwaggerClientTests.modulemap
@@ -0,0 +1,6 @@
+framework module Pods_SwaggerClientTests {
+ umbrella header "Pods-SwaggerClientTests-umbrella.h"
+
+ export *
+ module * { export * }
+}
diff --git a/samples/client/petstore/swift3/default/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClientTests/Pods-SwaggerClientTests.release.xcconfig b/CI/samples.ci/client/petstore/swift3/default/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClientTests/Pods-SwaggerClientTests.release.xcconfig
similarity index 100%
rename from samples/client/petstore/swift3/default/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClientTests/Pods-SwaggerClientTests.release.xcconfig
rename to CI/samples.ci/client/petstore/swift3/default/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClientTests/Pods-SwaggerClientTests.release.xcconfig
diff --git a/CI/samples.ci/client/petstore/swift3/default/SwaggerClientTests/SwaggerClient.xcodeproj/project.pbxproj b/CI/samples.ci/client/petstore/swift3/default/SwaggerClientTests/SwaggerClient.xcodeproj/project.pbxproj
new file mode 100644
index 000000000000..a6881f1db9fe
--- /dev/null
+++ b/CI/samples.ci/client/petstore/swift3/default/SwaggerClientTests/SwaggerClient.xcodeproj/project.pbxproj
@@ -0,0 +1,615 @@
+// !$*UTF8*$!
+{
+ archiveVersion = 1;
+ classes = {
+ };
+ objectVersion = 46;
+ objects = {
+
+/* Begin PBXBuildFile section */
+ 54DA06C1D70D78EC0EC72B61 /* Pods_SwaggerClientTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F65B6638217EDDC99D103B16 /* Pods_SwaggerClientTests.framework */; };
+ 6D4EFB951C692C6300B96B06 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6D4EFB941C692C6300B96B06 /* AppDelegate.swift */; };
+ 6D4EFB971C692C6300B96B06 /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6D4EFB961C692C6300B96B06 /* ViewController.swift */; };
+ 6D4EFB9A1C692C6300B96B06 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 6D4EFB981C692C6300B96B06 /* Main.storyboard */; };
+ 6D4EFB9C1C692C6300B96B06 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 6D4EFB9B1C692C6300B96B06 /* Assets.xcassets */; };
+ 6D4EFB9F1C692C6300B96B06 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 6D4EFB9D1C692C6300B96B06 /* LaunchScreen.storyboard */; };
+ 6D4EFBB51C693BE200B96B06 /* PetAPITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6D4EFBB41C693BE200B96B06 /* PetAPITests.swift */; };
+ 6D4EFBB71C693BED00B96B06 /* StoreAPITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6D4EFBB61C693BED00B96B06 /* StoreAPITests.swift */; };
+ 6D4EFBB91C693BFC00B96B06 /* UserAPITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6D4EFBB81C693BFC00B96B06 /* UserAPITests.swift */; };
+ 751C65B82F596107A3DC8ED9 /* Pods_SwaggerClient.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8F60AECFF321A25553B6A5B0 /* Pods_SwaggerClient.framework */; };
+/* End PBXBuildFile section */
+
+/* Begin PBXContainerItemProxy section */
+ 6D4EFBA61C692C6300B96B06 /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = 6D4EFB891C692C6300B96B06 /* Project object */;
+ proxyType = 1;
+ remoteGlobalIDString = 6D4EFB901C692C6300B96B06;
+ remoteInfo = SwaggerClient;
+ };
+/* End PBXContainerItemProxy section */
+
+/* Begin PBXFileReference section */
+ 289E8A9E9C0BB66AD190C7C6 /* Pods-SwaggerClientTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-SwaggerClientTests.debug.xcconfig"; path = "Pods/Target Support Files/Pods-SwaggerClientTests/Pods-SwaggerClientTests.debug.xcconfig"; sourceTree = ""; };
+ 6D4EFB911C692C6300B96B06 /* SwaggerClient.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = SwaggerClient.app; sourceTree = BUILT_PRODUCTS_DIR; };
+ 6D4EFB941C692C6300B96B06 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; };
+ 6D4EFB961C692C6300B96B06 /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = ""; };
+ 6D4EFB991C692C6300B96B06 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; };
+ 6D4EFB9B1C692C6300B96B06 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; };
+ 6D4EFB9E1C692C6300B96B06 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; };
+ 6D4EFBA01C692C6300B96B06 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
+ 6D4EFBA51C692C6300B96B06 /* SwaggerClientTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = SwaggerClientTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
+ 6D4EFBAB1C692C6300B96B06 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
+ 6D4EFBB41C693BE200B96B06 /* PetAPITests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PetAPITests.swift; sourceTree = ""; };
+ 6D4EFBB61C693BED00B96B06 /* StoreAPITests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = StoreAPITests.swift; sourceTree = ""; };
+ 6D4EFBB81C693BFC00B96B06 /* UserAPITests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UserAPITests.swift; sourceTree = ""; };
+ 8F60AECFF321A25553B6A5B0 /* Pods_SwaggerClient.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_SwaggerClient.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ A638467ACFB30852DEA51F7A /* Pods-SwaggerClient.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-SwaggerClient.debug.xcconfig"; path = "Pods/Target Support Files/Pods-SwaggerClient/Pods-SwaggerClient.debug.xcconfig"; sourceTree = ""; };
+ B4B2BEC2ECA535C616F2F3FE /* Pods-SwaggerClientTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-SwaggerClientTests.release.xcconfig"; path = "Pods/Target Support Files/Pods-SwaggerClientTests/Pods-SwaggerClientTests.release.xcconfig"; sourceTree = ""; };
+ C07EC0A94AA0F86D60668B32 /* Pods.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ F65B6638217EDDC99D103B16 /* Pods_SwaggerClientTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_SwaggerClientTests.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ FC60BDC7328C2AA916F25840 /* Pods-SwaggerClient.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-SwaggerClient.release.xcconfig"; path = "Pods/Target Support Files/Pods-SwaggerClient/Pods-SwaggerClient.release.xcconfig"; sourceTree = ""; };
+/* End PBXFileReference section */
+
+/* Begin PBXFrameworksBuildPhase section */
+ 6D4EFB8E1C692C6300B96B06 /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 751C65B82F596107A3DC8ED9 /* Pods_SwaggerClient.framework in Frameworks */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ 6D4EFBA21C692C6300B96B06 /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 54DA06C1D70D78EC0EC72B61 /* Pods_SwaggerClientTests.framework in Frameworks */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXFrameworksBuildPhase section */
+
+/* Begin PBXGroup section */
+ 0CAA98BEFA303B94D3664C7D /* Pods */ = {
+ isa = PBXGroup;
+ children = (
+ A638467ACFB30852DEA51F7A /* Pods-SwaggerClient.debug.xcconfig */,
+ FC60BDC7328C2AA916F25840 /* Pods-SwaggerClient.release.xcconfig */,
+ 289E8A9E9C0BB66AD190C7C6 /* Pods-SwaggerClientTests.debug.xcconfig */,
+ B4B2BEC2ECA535C616F2F3FE /* Pods-SwaggerClientTests.release.xcconfig */,
+ );
+ name = Pods;
+ sourceTree = "";
+ };
+ 3FABC56EC0BA84CBF4F99564 /* Frameworks */ = {
+ isa = PBXGroup;
+ children = (
+ C07EC0A94AA0F86D60668B32 /* Pods.framework */,
+ 8F60AECFF321A25553B6A5B0 /* Pods_SwaggerClient.framework */,
+ F65B6638217EDDC99D103B16 /* Pods_SwaggerClientTests.framework */,
+ );
+ name = Frameworks;
+ sourceTree = "";
+ };
+ 6D4EFB881C692C6300B96B06 = {
+ isa = PBXGroup;
+ children = (
+ 6D4EFB931C692C6300B96B06 /* SwaggerClient */,
+ 6D4EFBA81C692C6300B96B06 /* SwaggerClientTests */,
+ 6D4EFB921C692C6300B96B06 /* Products */,
+ 3FABC56EC0BA84CBF4F99564 /* Frameworks */,
+ 0CAA98BEFA303B94D3664C7D /* Pods */,
+ );
+ sourceTree = "";
+ };
+ 6D4EFB921C692C6300B96B06 /* Products */ = {
+ isa = PBXGroup;
+ children = (
+ 6D4EFB911C692C6300B96B06 /* SwaggerClient.app */,
+ 6D4EFBA51C692C6300B96B06 /* SwaggerClientTests.xctest */,
+ );
+ name = Products;
+ sourceTree = "";
+ };
+ 6D4EFB931C692C6300B96B06 /* SwaggerClient */ = {
+ isa = PBXGroup;
+ children = (
+ 6D4EFB941C692C6300B96B06 /* AppDelegate.swift */,
+ 6D4EFB961C692C6300B96B06 /* ViewController.swift */,
+ 6D4EFB981C692C6300B96B06 /* Main.storyboard */,
+ 6D4EFB9B1C692C6300B96B06 /* Assets.xcassets */,
+ 6D4EFB9D1C692C6300B96B06 /* LaunchScreen.storyboard */,
+ 6D4EFBA01C692C6300B96B06 /* Info.plist */,
+ );
+ path = SwaggerClient;
+ sourceTree = "";
+ };
+ 6D4EFBA81C692C6300B96B06 /* SwaggerClientTests */ = {
+ isa = PBXGroup;
+ children = (
+ 6D4EFBAB1C692C6300B96B06 /* Info.plist */,
+ 6D4EFBB41C693BE200B96B06 /* PetAPITests.swift */,
+ 6D4EFBB61C693BED00B96B06 /* StoreAPITests.swift */,
+ 6D4EFBB81C693BFC00B96B06 /* UserAPITests.swift */,
+ );
+ path = SwaggerClientTests;
+ sourceTree = "";
+ };
+/* End PBXGroup section */
+
+/* Begin PBXNativeTarget section */
+ 6D4EFB901C692C6300B96B06 /* SwaggerClient */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = 6D4EFBAE1C692C6300B96B06 /* Build configuration list for PBXNativeTarget "SwaggerClient" */;
+ buildPhases = (
+ CF310079E3CB0BE5BE604471 /* [CP] Check Pods Manifest.lock */,
+ 1F03F780DC2D9727E5E64BA9 /* [CP] Check Pods Manifest.lock */,
+ 6D4EFB8D1C692C6300B96B06 /* Sources */,
+ 6D4EFB8E1C692C6300B96B06 /* Frameworks */,
+ 6D4EFB8F1C692C6300B96B06 /* Resources */,
+ 4485A75250058E2D5BBDF63F /* [CP] Embed Pods Frameworks */,
+ 3D9471620628F03313096EB2 /* 📦 Embed Pods Frameworks */,
+ EEEC2B2D0497D38CEAD2DB24 /* 📦 Copy Pods Resources */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ );
+ name = SwaggerClient;
+ productName = SwaggerClient;
+ productReference = 6D4EFB911C692C6300B96B06 /* SwaggerClient.app */;
+ productType = "com.apple.product-type.application";
+ };
+ 6D4EFBA41C692C6300B96B06 /* SwaggerClientTests */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = 6D4EFBB11C692C6300B96B06 /* Build configuration list for PBXNativeTarget "SwaggerClientTests" */;
+ buildPhases = (
+ B4DB169E5F018305D6759D34 /* [CP] Check Pods Manifest.lock */,
+ 79FE27B09B2DD354C831BD49 /* [CP] Check Pods Manifest.lock */,
+ 6D4EFBA11C692C6300B96B06 /* Sources */,
+ 6D4EFBA21C692C6300B96B06 /* Frameworks */,
+ 6D4EFBA31C692C6300B96B06 /* Resources */,
+ ECE47F6BF90C3848F6E94AFF /* 📦 Embed Pods Frameworks */,
+ 1494090872F3F18E536E8902 /* 📦 Copy Pods Resources */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ 6D4EFBA71C692C6300B96B06 /* PBXTargetDependency */,
+ );
+ name = SwaggerClientTests;
+ productName = SwaggerClientTests;
+ productReference = 6D4EFBA51C692C6300B96B06 /* SwaggerClientTests.xctest */;
+ productType = "com.apple.product-type.bundle.unit-test";
+ };
+/* End PBXNativeTarget section */
+
+/* Begin PBXProject section */
+ 6D4EFB891C692C6300B96B06 /* Project object */ = {
+ isa = PBXProject;
+ attributes = {
+ LastSwiftUpdateCheck = 0720;
+ LastUpgradeCheck = 0720;
+ ORGANIZATIONNAME = Swagger;
+ TargetAttributes = {
+ 6D4EFB901C692C6300B96B06 = {
+ CreatedOnToolsVersion = 7.2.1;
+ LastSwiftMigration = 0800;
+ };
+ 6D4EFBA41C692C6300B96B06 = {
+ CreatedOnToolsVersion = 7.2.1;
+ LastSwiftMigration = 0800;
+ TestTargetID = 6D4EFB901C692C6300B96B06;
+ };
+ };
+ };
+ buildConfigurationList = 6D4EFB8C1C692C6300B96B06 /* Build configuration list for PBXProject "SwaggerClient" */;
+ compatibilityVersion = "Xcode 3.2";
+ developmentRegion = English;
+ hasScannedForEncodings = 0;
+ knownRegions = (
+ en,
+ Base,
+ );
+ mainGroup = 6D4EFB881C692C6300B96B06;
+ productRefGroup = 6D4EFB921C692C6300B96B06 /* Products */;
+ projectDirPath = "";
+ projectRoot = "";
+ targets = (
+ 6D4EFB901C692C6300B96B06 /* SwaggerClient */,
+ 6D4EFBA41C692C6300B96B06 /* SwaggerClientTests */,
+ );
+ };
+/* End PBXProject section */
+
+/* Begin PBXResourcesBuildPhase section */
+ 6D4EFB8F1C692C6300B96B06 /* Resources */ = {
+ isa = PBXResourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 6D4EFB9F1C692C6300B96B06 /* LaunchScreen.storyboard in Resources */,
+ 6D4EFB9C1C692C6300B96B06 /* Assets.xcassets in Resources */,
+ 6D4EFB9A1C692C6300B96B06 /* Main.storyboard in Resources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ 6D4EFBA31C692C6300B96B06 /* Resources */ = {
+ isa = PBXResourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXResourcesBuildPhase section */
+
+/* Begin PBXShellScriptBuildPhase section */
+ 1494090872F3F18E536E8902 /* 📦 Copy Pods Resources */ = {
+ isa = PBXShellScriptBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ inputPaths = (
+ );
+ name = "📦 Copy Pods Resources";
+ outputPaths = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ shellPath = /bin/sh;
+ shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-SwaggerClientTests/Pods-SwaggerClientTests-resources.sh\"\n";
+ showEnvVarsInLog = 0;
+ };
+ 1F03F780DC2D9727E5E64BA9 /* [CP] Check Pods Manifest.lock */ = {
+ isa = PBXShellScriptBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ inputPaths = (
+ );
+ name = "[CP] Check Pods Manifest.lock";
+ outputPaths = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ shellPath = /bin/sh;
+ shellScript = "diff \"${PODS_ROOT}/../Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [[ $? != 0 ]] ; then\n cat << EOM\nerror: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\nEOM\n exit 1\nfi\n";
+ showEnvVarsInLog = 0;
+ };
+ 3D9471620628F03313096EB2 /* 📦 Embed Pods Frameworks */ = {
+ isa = PBXShellScriptBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ inputPaths = (
+ );
+ name = "📦 Embed Pods Frameworks";
+ outputPaths = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ shellPath = /bin/sh;
+ shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-SwaggerClient/Pods-SwaggerClient-frameworks.sh\"\n";
+ showEnvVarsInLog = 0;
+ };
+ 4485A75250058E2D5BBDF63F /* [CP] Embed Pods Frameworks */ = {
+ isa = PBXShellScriptBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ inputPaths = (
+ "${SRCROOT}/Pods/Target Support Files/Pods-SwaggerClient/Pods-SwaggerClient-frameworks.sh",
+ "${BUILT_PRODUCTS_DIR}/Alamofire/Alamofire.framework",
+ "${BUILT_PRODUCTS_DIR}/PetstoreClient/PetstoreClient.framework",
+ );
+ name = "[CP] Embed Pods Frameworks";
+ outputPaths = (
+ "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Alamofire.framework",
+ "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/PetstoreClient.framework",
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ shellPath = /bin/sh;
+ shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-SwaggerClient/Pods-SwaggerClient-frameworks.sh\"\n";
+ showEnvVarsInLog = 0;
+ };
+ 79FE27B09B2DD354C831BD49 /* [CP] Check Pods Manifest.lock */ = {
+ isa = PBXShellScriptBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ inputPaths = (
+ );
+ name = "[CP] Check Pods Manifest.lock";
+ outputPaths = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ shellPath = /bin/sh;
+ shellScript = "diff \"${PODS_ROOT}/../Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [[ $? != 0 ]] ; then\n cat << EOM\nerror: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\nEOM\n exit 1\nfi\n";
+ showEnvVarsInLog = 0;
+ };
+ B4DB169E5F018305D6759D34 /* [CP] Check Pods Manifest.lock */ = {
+ isa = PBXShellScriptBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ inputPaths = (
+ "${PODS_PODFILE_DIR_PATH}/Podfile.lock",
+ "${PODS_ROOT}/Manifest.lock",
+ );
+ name = "[CP] Check Pods Manifest.lock";
+ outputPaths = (
+ "$(DERIVED_FILE_DIR)/Pods-SwaggerClientTests-checkManifestLockResult.txt",
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ shellPath = /bin/sh;
+ shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
+ showEnvVarsInLog = 0;
+ };
+ CF310079E3CB0BE5BE604471 /* [CP] Check Pods Manifest.lock */ = {
+ isa = PBXShellScriptBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ inputPaths = (
+ "${PODS_PODFILE_DIR_PATH}/Podfile.lock",
+ "${PODS_ROOT}/Manifest.lock",
+ );
+ name = "[CP] Check Pods Manifest.lock";
+ outputPaths = (
+ "$(DERIVED_FILE_DIR)/Pods-SwaggerClient-checkManifestLockResult.txt",
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ shellPath = /bin/sh;
+ shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
+ showEnvVarsInLog = 0;
+ };
+ ECE47F6BF90C3848F6E94AFF /* 📦 Embed Pods Frameworks */ = {
+ isa = PBXShellScriptBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ inputPaths = (
+ );
+ name = "📦 Embed Pods Frameworks";
+ outputPaths = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ shellPath = /bin/sh;
+ shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-SwaggerClientTests/Pods-SwaggerClientTests-frameworks.sh\"\n";
+ showEnvVarsInLog = 0;
+ };
+ EEEC2B2D0497D38CEAD2DB24 /* 📦 Copy Pods Resources */ = {
+ isa = PBXShellScriptBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ inputPaths = (
+ );
+ name = "📦 Copy Pods Resources";
+ outputPaths = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ shellPath = /bin/sh;
+ shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-SwaggerClient/Pods-SwaggerClient-resources.sh\"\n";
+ showEnvVarsInLog = 0;
+ };
+/* End PBXShellScriptBuildPhase section */
+
+/* Begin PBXSourcesBuildPhase section */
+ 6D4EFB8D1C692C6300B96B06 /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 6D4EFB971C692C6300B96B06 /* ViewController.swift in Sources */,
+ 6D4EFB951C692C6300B96B06 /* AppDelegate.swift in Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ 6D4EFBA11C692C6300B96B06 /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 6D4EFBB71C693BED00B96B06 /* StoreAPITests.swift in Sources */,
+ 6D4EFBB91C693BFC00B96B06 /* UserAPITests.swift in Sources */,
+ 6D4EFBB51C693BE200B96B06 /* PetAPITests.swift in Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXSourcesBuildPhase section */
+
+/* Begin PBXTargetDependency section */
+ 6D4EFBA71C692C6300B96B06 /* PBXTargetDependency */ = {
+ isa = PBXTargetDependency;
+ target = 6D4EFB901C692C6300B96B06 /* SwaggerClient */;
+ targetProxy = 6D4EFBA61C692C6300B96B06 /* PBXContainerItemProxy */;
+ };
+/* End PBXTargetDependency section */
+
+/* Begin PBXVariantGroup section */
+ 6D4EFB981C692C6300B96B06 /* Main.storyboard */ = {
+ isa = PBXVariantGroup;
+ children = (
+ 6D4EFB991C692C6300B96B06 /* Base */,
+ );
+ name = Main.storyboard;
+ sourceTree = "";
+ };
+ 6D4EFB9D1C692C6300B96B06 /* LaunchScreen.storyboard */ = {
+ isa = PBXVariantGroup;
+ children = (
+ 6D4EFB9E1C692C6300B96B06 /* Base */,
+ );
+ name = LaunchScreen.storyboard;
+ sourceTree = "";
+ };
+/* End PBXVariantGroup section */
+
+/* Begin XCBuildConfiguration section */
+ 6D4EFBAC1C692C6300B96B06 /* Debug */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ALWAYS_SEARCH_USER_PATHS = NO;
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
+ CLANG_CXX_LIBRARY = "libc++";
+ CLANG_ENABLE_MODULES = YES;
+ CLANG_ENABLE_OBJC_ARC = YES;
+ CLANG_WARN_BOOL_CONVERSION = YES;
+ CLANG_WARN_CONSTANT_CONVERSION = YES;
+ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+ CLANG_WARN_EMPTY_BODY = YES;
+ CLANG_WARN_ENUM_CONVERSION = YES;
+ CLANG_WARN_INT_CONVERSION = YES;
+ CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+ CLANG_WARN_UNREACHABLE_CODE = YES;
+ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
+ COPY_PHASE_STRIP = NO;
+ DEBUG_INFORMATION_FORMAT = dwarf;
+ ENABLE_STRICT_OBJC_MSGSEND = YES;
+ ENABLE_TESTABILITY = YES;
+ GCC_C_LANGUAGE_STANDARD = gnu99;
+ GCC_DYNAMIC_NO_PIC = NO;
+ GCC_NO_COMMON_BLOCKS = YES;
+ GCC_OPTIMIZATION_LEVEL = 0;
+ GCC_PREPROCESSOR_DEFINITIONS = (
+ "DEBUG=1",
+ "$(inherited)",
+ );
+ GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+ GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+ GCC_WARN_UNDECLARED_SELECTOR = YES;
+ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+ GCC_WARN_UNUSED_FUNCTION = YES;
+ GCC_WARN_UNUSED_VARIABLE = YES;
+ IPHONEOS_DEPLOYMENT_TARGET = 9.2;
+ MTL_ENABLE_DEBUG_INFO = YES;
+ ONLY_ACTIVE_ARCH = YES;
+ SDKROOT = iphoneos;
+ SWIFT_OPTIMIZATION_LEVEL = "-Onone";
+ TARGETED_DEVICE_FAMILY = "1,2";
+ };
+ name = Debug;
+ };
+ 6D4EFBAD1C692C6300B96B06 /* Release */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ALWAYS_SEARCH_USER_PATHS = NO;
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
+ CLANG_CXX_LIBRARY = "libc++";
+ CLANG_ENABLE_MODULES = YES;
+ CLANG_ENABLE_OBJC_ARC = YES;
+ CLANG_WARN_BOOL_CONVERSION = YES;
+ CLANG_WARN_CONSTANT_CONVERSION = YES;
+ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+ CLANG_WARN_EMPTY_BODY = YES;
+ CLANG_WARN_ENUM_CONVERSION = YES;
+ CLANG_WARN_INT_CONVERSION = YES;
+ CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+ CLANG_WARN_UNREACHABLE_CODE = YES;
+ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
+ COPY_PHASE_STRIP = NO;
+ DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
+ ENABLE_NS_ASSERTIONS = NO;
+ ENABLE_STRICT_OBJC_MSGSEND = YES;
+ GCC_C_LANGUAGE_STANDARD = gnu99;
+ GCC_NO_COMMON_BLOCKS = YES;
+ GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+ GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+ GCC_WARN_UNDECLARED_SELECTOR = YES;
+ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+ GCC_WARN_UNUSED_FUNCTION = YES;
+ GCC_WARN_UNUSED_VARIABLE = YES;
+ IPHONEOS_DEPLOYMENT_TARGET = 9.2;
+ MTL_ENABLE_DEBUG_INFO = NO;
+ SDKROOT = iphoneos;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ VALIDATE_PRODUCT = YES;
+ };
+ name = Release;
+ };
+ 6D4EFBAF1C692C6300B96B06 /* Debug */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = A638467ACFB30852DEA51F7A /* Pods-SwaggerClient.debug.xcconfig */;
+ buildSettings = {
+ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+ INFOPLIST_FILE = SwaggerClient/Info.plist;
+ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
+ PRODUCT_BUNDLE_IDENTIFIER = com.swagger.SwaggerClient;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ SWIFT_VERSION = 3.0;
+ };
+ name = Debug;
+ };
+ 6D4EFBB01C692C6300B96B06 /* Release */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = FC60BDC7328C2AA916F25840 /* Pods-SwaggerClient.release.xcconfig */;
+ buildSettings = {
+ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+ INFOPLIST_FILE = SwaggerClient/Info.plist;
+ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
+ PRODUCT_BUNDLE_IDENTIFIER = com.swagger.SwaggerClient;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ SWIFT_VERSION = 3.0;
+ };
+ name = Release;
+ };
+ 6D4EFBB21C692C6300B96B06 /* Debug */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = 289E8A9E9C0BB66AD190C7C6 /* Pods-SwaggerClientTests.debug.xcconfig */;
+ buildSettings = {
+ BUNDLE_LOADER = "$(TEST_HOST)";
+ INFOPLIST_FILE = SwaggerClientTests/Info.plist;
+ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
+ PRODUCT_BUNDLE_IDENTIFIER = com.swagger.SwaggerClientTests;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ SWIFT_VERSION = 3.0;
+ TEST_HOST = "$(BUILT_PRODUCTS_DIR)/SwaggerClient.app/SwaggerClient";
+ };
+ name = Debug;
+ };
+ 6D4EFBB31C692C6300B96B06 /* Release */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = B4B2BEC2ECA535C616F2F3FE /* Pods-SwaggerClientTests.release.xcconfig */;
+ buildSettings = {
+ BUNDLE_LOADER = "$(TEST_HOST)";
+ INFOPLIST_FILE = SwaggerClientTests/Info.plist;
+ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
+ PRODUCT_BUNDLE_IDENTIFIER = com.swagger.SwaggerClientTests;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ SWIFT_VERSION = 3.0;
+ TEST_HOST = "$(BUILT_PRODUCTS_DIR)/SwaggerClient.app/SwaggerClient";
+ };
+ name = Release;
+ };
+/* End XCBuildConfiguration section */
+
+/* Begin XCConfigurationList section */
+ 6D4EFB8C1C692C6300B96B06 /* Build configuration list for PBXProject "SwaggerClient" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ 6D4EFBAC1C692C6300B96B06 /* Debug */,
+ 6D4EFBAD1C692C6300B96B06 /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+ 6D4EFBAE1C692C6300B96B06 /* Build configuration list for PBXNativeTarget "SwaggerClient" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ 6D4EFBAF1C692C6300B96B06 /* Debug */,
+ 6D4EFBB01C692C6300B96B06 /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+ 6D4EFBB11C692C6300B96B06 /* Build configuration list for PBXNativeTarget "SwaggerClientTests" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ 6D4EFBB21C692C6300B96B06 /* Debug */,
+ 6D4EFBB31C692C6300B96B06 /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+/* End XCConfigurationList section */
+ };
+ rootObject = 6D4EFB891C692C6300B96B06 /* Project object */;
+}
diff --git a/CI/samples.ci/client/petstore/swift3/default/SwaggerClientTests/SwaggerClient.xcodeproj/xcshareddata/xcschemes/SwaggerClient.xcscheme b/CI/samples.ci/client/petstore/swift3/default/SwaggerClientTests/SwaggerClient.xcodeproj/xcshareddata/xcschemes/SwaggerClient.xcscheme
new file mode 100644
index 000000000000..5ba034cec55a
--- /dev/null
+++ b/CI/samples.ci/client/petstore/swift3/default/SwaggerClientTests/SwaggerClient.xcodeproj/xcshareddata/xcschemes/SwaggerClient.xcscheme
@@ -0,0 +1,102 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/CI/samples.ci/client/petstore/swift3/default/SwaggerClientTests/SwaggerClient.xcworkspace/contents.xcworkspacedata b/CI/samples.ci/client/petstore/swift3/default/SwaggerClientTests/SwaggerClient.xcworkspace/contents.xcworkspacedata
new file mode 100644
index 000000000000..9b3fa18954f7
--- /dev/null
+++ b/CI/samples.ci/client/petstore/swift3/default/SwaggerClientTests/SwaggerClient.xcworkspace/contents.xcworkspacedata
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
diff --git a/CI/samples.ci/client/petstore/swift3/default/SwaggerClientTests/SwaggerClient/AppDelegate.swift b/CI/samples.ci/client/petstore/swift3/default/SwaggerClientTests/SwaggerClient/AppDelegate.swift
new file mode 100644
index 000000000000..7fd692961767
--- /dev/null
+++ b/CI/samples.ci/client/petstore/swift3/default/SwaggerClientTests/SwaggerClient/AppDelegate.swift
@@ -0,0 +1,46 @@
+//
+// AppDelegate.swift
+// SwaggerClient
+//
+// Created by Joseph Zuromski on 2/8/16.
+// Copyright © 2016 Swagger. All rights reserved.
+//
+
+import UIKit
+
+@UIApplicationMain
+class AppDelegate: UIResponder, UIApplicationDelegate {
+
+ var window: UIWindow?
+
+
+ func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
+ // Override point for customization after application launch.
+ return true
+ }
+
+ func applicationWillResignActive(_ application: UIApplication) {
+ // Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state.
+ // Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game.
+ }
+
+ func applicationDidEnterBackground(_ application: UIApplication) {
+ // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later.
+ // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits.
+ }
+
+ func applicationWillEnterForeground(_ application: UIApplication) {
+ // Called as part of the transition from the background to the inactive state; here you can undo many of the changes made on entering the background.
+ }
+
+ func applicationDidBecomeActive(_ application: UIApplication) {
+ // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface.
+ }
+
+ func applicationWillTerminate(_ application: UIApplication) {
+ // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:.
+ }
+
+
+}
+
diff --git a/samples/client/test/swift4/default/TestClientApp/TestClientApp/Assets.xcassets/AppIcon.appiconset/Contents.json b/CI/samples.ci/client/petstore/swift3/default/SwaggerClientTests/SwaggerClient/Assets.xcassets/AppIcon.appiconset/Contents.json
similarity index 100%
rename from samples/client/test/swift4/default/TestClientApp/TestClientApp/Assets.xcassets/AppIcon.appiconset/Contents.json
rename to CI/samples.ci/client/petstore/swift3/default/SwaggerClientTests/SwaggerClient/Assets.xcassets/AppIcon.appiconset/Contents.json
diff --git a/CI/samples.ci/client/petstore/swift3/default/SwaggerClientTests/SwaggerClient/Base.lproj/LaunchScreen.storyboard b/CI/samples.ci/client/petstore/swift3/default/SwaggerClientTests/SwaggerClient/Base.lproj/LaunchScreen.storyboard
new file mode 100644
index 000000000000..2e721e1833f0
--- /dev/null
+++ b/CI/samples.ci/client/petstore/swift3/default/SwaggerClientTests/SwaggerClient/Base.lproj/LaunchScreen.storyboard
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/CI/samples.ci/client/petstore/swift3/default/SwaggerClientTests/SwaggerClient/Base.lproj/Main.storyboard b/CI/samples.ci/client/petstore/swift3/default/SwaggerClientTests/SwaggerClient/Base.lproj/Main.storyboard
new file mode 100644
index 000000000000..3a2a49bad8c6
--- /dev/null
+++ b/CI/samples.ci/client/petstore/swift3/default/SwaggerClientTests/SwaggerClient/Base.lproj/Main.storyboard
@@ -0,0 +1,25 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/CI/samples.ci/client/petstore/swift3/default/SwaggerClientTests/SwaggerClient/Info.plist b/CI/samples.ci/client/petstore/swift3/default/SwaggerClientTests/SwaggerClient/Info.plist
new file mode 100644
index 000000000000..bb71d00fa8ae
--- /dev/null
+++ b/CI/samples.ci/client/petstore/swift3/default/SwaggerClientTests/SwaggerClient/Info.plist
@@ -0,0 +1,59 @@
+
+
+
+
+ CFBundleDevelopmentRegion
+ en
+ CFBundleExecutable
+ $(EXECUTABLE_NAME)
+ CFBundleIdentifier
+ $(PRODUCT_BUNDLE_IDENTIFIER)
+ CFBundleInfoDictionaryVersion
+ 6.0
+ CFBundleName
+ $(PRODUCT_NAME)
+ CFBundlePackageType
+ APPL
+ CFBundleShortVersionString
+ 1.0
+ CFBundleSignature
+ ????
+ CFBundleVersion
+ 1
+ LSRequiresIPhoneOS
+
+ UILaunchStoryboardName
+ LaunchScreen
+ UIMainStoryboardFile
+ Main
+ UIRequiredDeviceCapabilities
+
+ armv7
+
+ UISupportedInterfaceOrientations
+
+ UIInterfaceOrientationPortrait
+ UIInterfaceOrientationLandscapeLeft
+ UIInterfaceOrientationLandscapeRight
+
+ UISupportedInterfaceOrientations~ipad
+
+ UIInterfaceOrientationPortrait
+ UIInterfaceOrientationPortraitUpsideDown
+ UIInterfaceOrientationLandscapeLeft
+ UIInterfaceOrientationLandscapeRight
+
+ NSAppTransportSecurity
+
+ NSExceptionDomains
+
+ petstore.swagger.io
+
+
+ NSTemporaryExceptionAllowsInsecureHTTPLoads
+
+
+
+
+
+
diff --git a/CI/samples.ci/client/petstore/swift3/default/SwaggerClientTests/SwaggerClient/ViewController.swift b/CI/samples.ci/client/petstore/swift3/default/SwaggerClientTests/SwaggerClient/ViewController.swift
new file mode 100644
index 000000000000..cd7e9a167615
--- /dev/null
+++ b/CI/samples.ci/client/petstore/swift3/default/SwaggerClientTests/SwaggerClient/ViewController.swift
@@ -0,0 +1,25 @@
+//
+// ViewController.swift
+// SwaggerClient
+//
+// Created by Joseph Zuromski on 2/8/16.
+// Copyright © 2016 Swagger. All rights reserved.
+//
+
+import UIKit
+
+class ViewController: UIViewController {
+
+ override func viewDidLoad() {
+ super.viewDidLoad()
+ // Do any additional setup after loading the view, typically from a nib.
+ }
+
+ override func didReceiveMemoryWarning() {
+ super.didReceiveMemoryWarning()
+ // Dispose of any resources that can be recreated.
+ }
+
+
+}
+
diff --git a/CI/samples.ci/client/petstore/swift3/default/SwaggerClientTests/SwaggerClientTests/Info.plist b/CI/samples.ci/client/petstore/swift3/default/SwaggerClientTests/SwaggerClientTests/Info.plist
new file mode 100644
index 000000000000..802f84f540d0
--- /dev/null
+++ b/CI/samples.ci/client/petstore/swift3/default/SwaggerClientTests/SwaggerClientTests/Info.plist
@@ -0,0 +1,36 @@
+
+
+
+
+ CFBundleDevelopmentRegion
+ en
+ CFBundleExecutable
+ $(EXECUTABLE_NAME)
+ CFBundleIdentifier
+ $(PRODUCT_BUNDLE_IDENTIFIER)
+ CFBundleInfoDictionaryVersion
+ 6.0
+ CFBundleName
+ $(PRODUCT_NAME)
+ CFBundlePackageType
+ BNDL
+ CFBundleShortVersionString
+ 1.0
+ CFBundleSignature
+ ????
+ CFBundleVersion
+ 1
+ NSAppTransportSecurity
+
+ NSExceptionDomains
+
+ petstore.swagger.io
+
+
+ NSTemporaryExceptionAllowsInsecureHTTPLoads
+
+
+
+
+
+
diff --git a/CI/samples.ci/client/petstore/swift3/default/SwaggerClientTests/SwaggerClientTests/PetAPITests.swift b/CI/samples.ci/client/petstore/swift3/default/SwaggerClientTests/SwaggerClientTests/PetAPITests.swift
new file mode 100644
index 000000000000..ffb9e8b209f4
--- /dev/null
+++ b/CI/samples.ci/client/petstore/swift3/default/SwaggerClientTests/SwaggerClientTests/PetAPITests.swift
@@ -0,0 +1,86 @@
+//
+// PetAPITests.swift
+// SwaggerClient
+//
+// Created by Robin Eggenkamp on 5/21/16.
+// Copyright © 2016 Swagger. All rights reserved.
+//
+
+import PetstoreClient
+import XCTest
+@testable import SwaggerClient
+
+class PetAPITests: XCTestCase {
+
+ let testTimeout = 10.0
+
+ override func setUp() {
+ super.setUp()
+ // Put setup code here. This method is called before the invocation of each test method in the class.
+ }
+
+ override func tearDown() {
+ // Put teardown code here. This method is called after the invocation of each test method in the class.
+ super.tearDown()
+ }
+
+ func test1CreatePet() {
+ let expectation = self.expectation(description: "testCreatePet")
+
+ let newPet = Pet()
+ let category = PetstoreClient.Category()
+ category.id = 1234
+ category.name = "eyeColor"
+ newPet.category = category
+ newPet.id = 1000
+ newPet.name = "Fluffy"
+ newPet.status = .available
+
+ PetAPI.addPet(body: newPet) { (error) in
+ guard error == nil else {
+ XCTFail("error creating pet")
+ return
+ }
+
+ expectation.fulfill()
+ }
+
+ self.waitForExpectations(timeout: testTimeout, handler: nil)
+ }
+
+ func test2GetPet() {
+ let expectation = self.expectation(description: "testGetPet")
+
+ PetAPI.getPetById(petId: 1000) { (pet, error) in
+ guard error == nil else {
+ XCTFail("error retrieving pet")
+ return
+ }
+
+ if let pet = pet {
+ XCTAssert(pet.id == 1000, "invalid id")
+ XCTAssert(pet.name == "Fluffy", "invalid name")
+
+ expectation.fulfill()
+ }
+ }
+
+ self.waitForExpectations(timeout: testTimeout, handler: nil)
+ }
+
+ func test3DeletePet() {
+ let expectation = self.expectation(description: "testDeletePet")
+
+ PetAPI.deletePet(petId: 1000) { (error) in
+ guard error == nil else {
+ XCTFail("error deleting pet")
+ return
+ }
+
+ expectation.fulfill()
+ }
+
+ self.waitForExpectations(timeout: testTimeout, handler: nil)
+ }
+
+}
diff --git a/CI/samples.ci/client/petstore/swift3/default/SwaggerClientTests/SwaggerClientTests/StoreAPITests.swift b/CI/samples.ci/client/petstore/swift3/default/SwaggerClientTests/SwaggerClientTests/StoreAPITests.swift
new file mode 100644
index 000000000000..c48355a6ff8f
--- /dev/null
+++ b/CI/samples.ci/client/petstore/swift3/default/SwaggerClientTests/SwaggerClientTests/StoreAPITests.swift
@@ -0,0 +1,122 @@
+//
+// StoreAPITests.swift
+// SwaggerClient
+//
+// Created by Robin Eggenkamp on 5/21/16.
+// Copyright © 2016 Swagger. All rights reserved.
+//
+
+import PetstoreClient
+import XCTest
+@testable import SwaggerClient
+
+class StoreAPITests: XCTestCase {
+
+ let isoDateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSSZZZZZ"
+
+ let testTimeout = 10.0
+
+ func test1PlaceOrder() {
+ let expectation = self.expectation(description: "testPlaceOrder")
+ let shipDate = Date()
+
+ let newOrder = Order()
+ newOrder.id = 1000
+ newOrder.petId = 1000
+ newOrder.complete = false
+ newOrder.quantity = 10
+ newOrder.shipDate = shipDate
+ // use explicit naming to reference the enum so that we test we don't regress on enum naming
+ newOrder.status = Order.Status.placed
+
+ StoreAPI.placeOrder(body: newOrder) { (order, error) in
+ guard error == nil else {
+ XCTFail("error placing order: \(error.debugDescription)")
+ return
+ }
+
+ if let order = order {
+ XCTAssert(order.id == 1000, "invalid id")
+ XCTAssert(order.quantity == 10, "invalid quantity")
+ XCTAssert(order.status == .placed, "invalid status")
+ XCTAssert(order.shipDate!.isEqual(shipDate, format: self.isoDateFormat),
+ "Date should be idempotent")
+
+ expectation.fulfill()
+ }
+ }
+
+ self.waitForExpectations(timeout: testTimeout, handler: nil)
+ }
+
+ func test2GetOrder() {
+ let expectation = self.expectation(description: "testGetOrder")
+
+ StoreAPI.getOrderById(orderId: 1000) { (order, error) in
+ guard error == nil else {
+ XCTFail("error retrieving order: \(error.debugDescription)")
+ return
+ }
+
+ if let order = order {
+ XCTAssert(order.id == 1000, "invalid id")
+ XCTAssert(order.quantity == 10, "invalid quantity")
+ XCTAssert(order.status == .placed, "invalid status")
+
+ expectation.fulfill()
+ }
+ }
+
+ self.waitForExpectations(timeout: testTimeout, handler: nil)
+ }
+
+ func test3DeleteOrder() {
+ let expectation = self.expectation(description: "testDeleteOrder")
+
+ StoreAPI.deleteOrder(orderId: "1000") { (error) in
+ guard error == nil else {
+ XCTFail("error deleting order")
+ return
+ }
+
+ expectation.fulfill()
+ }
+
+ self.waitForExpectations(timeout: testTimeout, handler: nil)
+ }
+
+ func testDownloadProgress() {
+ let responseExpectation = self.expectation(description: "obtain response")
+ let progressExpectation = self.expectation(description: "obtain progress")
+ let requestBuilder = StoreAPI.getOrderByIdWithRequestBuilder(orderId: 1000)
+
+ requestBuilder.onProgressReady = { (progress) in
+ progressExpectation.fulfill()
+ }
+
+ requestBuilder.execute { (response, error) in
+ responseExpectation.fulfill()
+ }
+
+ self.waitForExpectations(timeout: testTimeout, handler: nil)
+ }
+
+}
+
+private extension Date {
+
+ /**
+ Returns true if the dates are equal given the format string.
+
+ - parameter date: The date to compare to.
+ - parameter format: The format string to use to compare.
+
+ - returns: true if the dates are equal, given the format string.
+ */
+ func isEqual(_ date: Date, format: String) -> Bool {
+ let fmt = DateFormatter()
+ fmt.dateFormat = format
+ return fmt.string(from: self).isEqual(fmt.string(from: date))
+ }
+
+}
diff --git a/CI/samples.ci/client/petstore/swift3/default/SwaggerClientTests/SwaggerClientTests/UserAPITests.swift b/CI/samples.ci/client/petstore/swift3/default/SwaggerClientTests/SwaggerClientTests/UserAPITests.swift
new file mode 100644
index 000000000000..f6f87e9e7634
--- /dev/null
+++ b/CI/samples.ci/client/petstore/swift3/default/SwaggerClientTests/SwaggerClientTests/UserAPITests.swift
@@ -0,0 +1,164 @@
+//
+// UserAPITests.swift
+// SwaggerClient
+//
+// Created by Robin Eggenkamp on 5/21/16.
+// Copyright © 2016 Swagger. All rights reserved.
+//
+
+import PetstoreClient
+import XCTest
+@testable import SwaggerClient
+
+class UserAPITests: XCTestCase {
+
+ let testTimeout = 10.0
+
+ override func setUp() {
+ super.setUp()
+ // Put setup code here. This method is called before the invocation of each test method in the class.
+ }
+
+ override func tearDown() {
+ // Put teardown code here. This method is called after the invocation of each test method in the class.
+ super.tearDown()
+ }
+
+ func testLogin() {
+ let expectation = self.expectation(description: "testLogin")
+
+ UserAPI.loginUser(username: "swiftTester", password: "swift") { (_, error) in
+ guard error == nil else {
+ XCTFail("error logging in")
+ return
+ }
+
+ expectation.fulfill()
+ }
+
+ self.waitForExpectations(timeout: testTimeout, handler: nil)
+ }
+
+ func testLogout() {
+ let expectation = self.expectation(description: "testLogout")
+
+ UserAPI.logoutUser { (error) in
+ guard error == nil else {
+ XCTFail("error logging out")
+ return
+ }
+
+ expectation.fulfill()
+ }
+
+ self.waitForExpectations(timeout: testTimeout, handler: nil)
+ }
+
+ func test1CreateUser() {
+ let expectation = self.expectation(description: "testCreateUser")
+
+ let newUser = User()
+ newUser.email = "test@test.com"
+ newUser.firstName = "Test"
+ newUser.lastName = "Tester"
+ newUser.id = 1000
+ newUser.password = "test!"
+ newUser.phone = "867-5309"
+ newUser.username = "test@test.com"
+ newUser.userStatus = 0
+
+ UserAPI.createUser(body: newUser) { (error) in
+ guard error == nil else {
+ XCTFail("error creating user")
+ return
+ }
+
+ expectation.fulfill()
+ }
+
+ self.waitForExpectations(timeout: testTimeout, handler: nil)
+ }
+
+ func testCreateUserWithArray() {
+ let expectation = self.expectation(description: "testCreateUserWithArray")
+ let newUser = User()
+ newUser.email = "test@test.com"
+ newUser.firstName = "Test"
+ newUser.lastName = "Tester"
+ newUser.id = 1000
+ newUser.password = "test!"
+ newUser.phone = "867-5309"
+ newUser.username = "test@test.com"
+ newUser.userStatus = 0
+
+ let newUser2 = User()
+ newUser2.email = "test2@test.com"
+ newUser2.firstName = "Test2"
+ newUser2.lastName = "Tester2"
+ newUser2.id = 1001
+ newUser2.password = "test2!"
+ newUser2.phone = "867-5302"
+ newUser2.username = "test2@test.com"
+ newUser2.userStatus = 0
+
+ UserAPI.createUsersWithArrayInput(body: [newUser, newUser2]) { (error) in
+ guard error == nil else {
+ XCTFail("error creating users")
+ return
+ }
+
+ expectation.fulfill()
+ }
+ self.waitForExpectations(timeout: testTimeout, handler: nil)
+ }
+
+ func test2GetUser() {
+ let expectation = self.expectation(description: "testGetUser")
+
+ UserAPI.getUserByName(username: "test@test.com") { (user, error) in
+ guard error == nil else {
+ XCTFail("error getting user")
+ return
+ }
+
+ if let user = user {
+ XCTAssert(user.userStatus == 0, "invalid userStatus")
+ XCTAssert(user.email == "test@test.com", "invalid email")
+ XCTAssert(user.firstName == "Test", "invalid firstName")
+ XCTAssert(user.lastName == "Tester", "invalid lastName")
+ XCTAssert(user.password == "test!", "invalid password")
+ XCTAssert(user.phone == "867-5309", "invalid phone")
+
+ expectation.fulfill()
+ }
+ }
+
+ self.waitForExpectations(timeout: testTimeout, handler: nil)
+ }
+
+ func test3DeleteUser() {
+ let expectation = self.expectation(description: "testDeleteUser")
+
+ UserAPI.deleteUser(username: "test@test.com") { (error) in
+ guard error == nil else {
+ XCTFail("error deleting user")
+ return
+ }
+
+ expectation.fulfill()
+ }
+
+ self.waitForExpectations(timeout: testTimeout, handler: nil)
+ }
+
+ func testPathParamsAreEscaped() {
+ // The path for this operation is /user/{userId}. In order to make a usable path,
+ // then we must make sure that {userId} is percent-escaped when it is substituted
+ // into the path. So we intentionally introduce a path with spaces.
+ let userRequestBuilder = UserAPI.getUserByNameWithRequestBuilder(username: "User Name With Spaces")
+ let urlContainsSpace = userRequestBuilder.URLString.contains(" ")
+
+ XCTAssert(!urlContainsSpace, "Expected URL to be escaped, but it was not.")
+ }
+
+}
diff --git a/CI/samples.ci/client/petstore/swift3/default/SwaggerClientTests/pom.xml b/CI/samples.ci/client/petstore/swift3/default/SwaggerClientTests/pom.xml
new file mode 100644
index 000000000000..10919bfdda98
--- /dev/null
+++ b/CI/samples.ci/client/petstore/swift3/default/SwaggerClientTests/pom.xml
@@ -0,0 +1,43 @@
+
+ 4.0.0
+ io.swagger
+ Swift3PetstoreClientTests
+ pom
+ 1.0-SNAPSHOT
+ Swift3 Swagger Petstore Client
+
+
+
+ maven-dependency-plugin
+
+
+ package
+
+ copy-dependencies
+
+
+ ${project.build.directory}
+
+
+
+
+
+ org.codehaus.mojo
+ exec-maven-plugin
+ 1.2.1
+
+
+ xcodebuild-test
+ integration-test
+
+ exec
+
+
+ ./run_xcodebuild.sh
+
+
+
+
+
+
+
diff --git a/CI/samples.ci/client/petstore/swift3/default/SwaggerClientTests/run_xcodebuild.sh b/CI/samples.ci/client/petstore/swift3/default/SwaggerClientTests/run_xcodebuild.sh
new file mode 100755
index 000000000000..85622eef70df
--- /dev/null
+++ b/CI/samples.ci/client/petstore/swift3/default/SwaggerClientTests/run_xcodebuild.sh
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+xcodebuild clean build build-for-testing -workspace "SwaggerClient.xcworkspace" -scheme "SwaggerClient" -destination "platform=iOS Simulator,name=iPhone 6,OS=9.3" && xcodebuild test-without-building -workspace "SwaggerClient.xcworkspace" -scheme "SwaggerClient" -destination "platform=iOS Simulator,name=iPhone 6,OS=9.3" | xcpretty && exit ${PIPESTATUS[0]}
diff --git a/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Podfile b/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Podfile
new file mode 100644
index 000000000000..5556eaf23442
--- /dev/null
+++ b/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Podfile
@@ -0,0 +1,18 @@
+use_frameworks!
+source 'https://github.com/CocoaPods/Specs.git'
+
+target 'SwaggerClient' do
+ pod "PetstoreClient", :path => "../"
+
+ target 'SwaggerClientTests' do
+ inherit! :search_paths
+ end
+end
+
+post_install do |installer|
+ installer.pods_project.targets.each do |target|
+ target.build_configurations.each do |configuration|
+ configuration.build_settings['SWIFT_VERSION'] = "3.0"
+ end
+ end
+end
\ No newline at end of file
diff --git a/samples/client/petstore/swift3/promisekit/SwaggerClientTests/Podfile.lock b/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Podfile.lock
similarity index 100%
rename from samples/client/petstore/swift3/promisekit/SwaggerClientTests/Podfile.lock
rename to CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Podfile.lock
diff --git a/samples/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Alamofire/LICENSE b/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Alamofire/LICENSE
similarity index 100%
rename from samples/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Alamofire/LICENSE
rename to CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Alamofire/LICENSE
diff --git a/samples/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Alamofire/README.md b/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Alamofire/README.md
similarity index 100%
rename from samples/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Alamofire/README.md
rename to CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Alamofire/README.md
diff --git a/samples/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Alamofire/Source/AFError.swift b/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Alamofire/Source/AFError.swift
similarity index 100%
rename from samples/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Alamofire/Source/AFError.swift
rename to CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Alamofire/Source/AFError.swift
diff --git a/samples/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Alamofire/Source/Alamofire.swift b/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Alamofire/Source/Alamofire.swift
similarity index 100%
rename from samples/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Alamofire/Source/Alamofire.swift
rename to CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Alamofire/Source/Alamofire.swift
diff --git a/samples/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Alamofire/Source/DispatchQueue+Alamofire.swift b/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Alamofire/Source/DispatchQueue+Alamofire.swift
similarity index 100%
rename from samples/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Alamofire/Source/DispatchQueue+Alamofire.swift
rename to CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Alamofire/Source/DispatchQueue+Alamofire.swift
diff --git a/samples/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Alamofire/Source/MultipartFormData.swift b/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Alamofire/Source/MultipartFormData.swift
similarity index 100%
rename from samples/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Alamofire/Source/MultipartFormData.swift
rename to CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Alamofire/Source/MultipartFormData.swift
diff --git a/samples/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Alamofire/Source/NetworkReachabilityManager.swift b/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Alamofire/Source/NetworkReachabilityManager.swift
similarity index 100%
rename from samples/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Alamofire/Source/NetworkReachabilityManager.swift
rename to CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Alamofire/Source/NetworkReachabilityManager.swift
diff --git a/samples/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Alamofire/Source/Notifications.swift b/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Alamofire/Source/Notifications.swift
similarity index 100%
rename from samples/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Alamofire/Source/Notifications.swift
rename to CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Alamofire/Source/Notifications.swift
diff --git a/samples/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Alamofire/Source/ParameterEncoding.swift b/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Alamofire/Source/ParameterEncoding.swift
similarity index 100%
rename from samples/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Alamofire/Source/ParameterEncoding.swift
rename to CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Alamofire/Source/ParameterEncoding.swift
diff --git a/samples/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Alamofire/Source/Request.swift b/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Alamofire/Source/Request.swift
similarity index 100%
rename from samples/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Alamofire/Source/Request.swift
rename to CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Alamofire/Source/Request.swift
diff --git a/samples/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Alamofire/Source/Response.swift b/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Alamofire/Source/Response.swift
similarity index 100%
rename from samples/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Alamofire/Source/Response.swift
rename to CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Alamofire/Source/Response.swift
diff --git a/samples/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Alamofire/Source/ResponseSerialization.swift b/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Alamofire/Source/ResponseSerialization.swift
similarity index 100%
rename from samples/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Alamofire/Source/ResponseSerialization.swift
rename to CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Alamofire/Source/ResponseSerialization.swift
diff --git a/samples/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Alamofire/Source/Result.swift b/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Alamofire/Source/Result.swift
similarity index 100%
rename from samples/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Alamofire/Source/Result.swift
rename to CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Alamofire/Source/Result.swift
diff --git a/samples/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Alamofire/Source/ServerTrustPolicy.swift b/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Alamofire/Source/ServerTrustPolicy.swift
similarity index 100%
rename from samples/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Alamofire/Source/ServerTrustPolicy.swift
rename to CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Alamofire/Source/ServerTrustPolicy.swift
diff --git a/samples/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Alamofire/Source/SessionDelegate.swift b/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Alamofire/Source/SessionDelegate.swift
similarity index 100%
rename from samples/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Alamofire/Source/SessionDelegate.swift
rename to CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Alamofire/Source/SessionDelegate.swift
diff --git a/samples/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Alamofire/Source/SessionManager.swift b/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Alamofire/Source/SessionManager.swift
similarity index 100%
rename from samples/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Alamofire/Source/SessionManager.swift
rename to CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Alamofire/Source/SessionManager.swift
diff --git a/samples/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Alamofire/Source/TaskDelegate.swift b/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Alamofire/Source/TaskDelegate.swift
similarity index 100%
rename from samples/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Alamofire/Source/TaskDelegate.swift
rename to CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Alamofire/Source/TaskDelegate.swift
diff --git a/samples/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Alamofire/Source/Timeline.swift b/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Alamofire/Source/Timeline.swift
similarity index 100%
rename from samples/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Alamofire/Source/Timeline.swift
rename to CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Alamofire/Source/Timeline.swift
diff --git a/samples/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Alamofire/Source/Validation.swift b/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Alamofire/Source/Validation.swift
similarity index 100%
rename from samples/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Alamofire/Source/Validation.swift
rename to CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Alamofire/Source/Validation.swift
diff --git a/samples/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Local Podspecs/PetstoreClient.podspec.json b/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Local Podspecs/PetstoreClient.podspec.json
similarity index 100%
rename from samples/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Local Podspecs/PetstoreClient.podspec.json
rename to CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Local Podspecs/PetstoreClient.podspec.json
diff --git a/samples/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Manifest.lock b/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Manifest.lock
similarity index 100%
rename from samples/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Manifest.lock
rename to CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Manifest.lock
diff --git a/samples/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Pods.xcodeproj/project.pbxproj b/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Pods.xcodeproj/project.pbxproj
similarity index 100%
rename from samples/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Pods.xcodeproj/project.pbxproj
rename to CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Pods.xcodeproj/project.pbxproj
diff --git a/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/PromiseKit/LICENSE b/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/PromiseKit/LICENSE
new file mode 100644
index 000000000000..c547fa84913d
--- /dev/null
+++ b/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/PromiseKit/LICENSE
@@ -0,0 +1,20 @@
+Copyright 2016, Max Howell; mxcl@me.com
+
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be included
+in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/samples/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/PromiseKit/README.md b/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/PromiseKit/README.md
similarity index 100%
rename from samples/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/PromiseKit/README.md
rename to CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/PromiseKit/README.md
diff --git a/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/PromiseKit/Sources/AnyPromise+Private.h b/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/PromiseKit/Sources/AnyPromise+Private.h
new file mode 100644
index 000000000000..756ba7b7b4d7
--- /dev/null
+++ b/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/PromiseKit/Sources/AnyPromise+Private.h
@@ -0,0 +1,38 @@
+@import Foundation.NSError;
+@import Foundation.NSPointerArray;
+
+#if TARGET_OS_IPHONE
+ #define NSPointerArrayMake(N) ({ \
+ NSPointerArray *aa = [NSPointerArray strongObjectsPointerArray]; \
+ aa.count = N; \
+ aa; \
+ })
+#else
+ static inline NSPointerArray * __nonnull NSPointerArrayMake(NSUInteger count) {
+ #pragma clang diagnostic push
+ #pragma clang diagnostic ignored "-Wdeprecated-declarations"
+ NSPointerArray *aa = [[NSPointerArray class] respondsToSelector:@selector(strongObjectsPointerArray)]
+ ? [NSPointerArray strongObjectsPointerArray]
+ : [NSPointerArray pointerArrayWithStrongObjects];
+ #pragma clang diagnostic pop
+ aa.count = count;
+ return aa;
+ }
+#endif
+
+#define IsError(o) [o isKindOfClass:[NSError class]]
+#define IsPromise(o) [o isKindOfClass:[AnyPromise class]]
+
+#import "AnyPromise.h"
+
+@interface AnyPromise (Swift)
+- (AnyPromise * __nonnull)__thenOn:(__nonnull dispatch_queue_t)q execute:(id __nullable (^ __nonnull)(id __nullable))body;
+- (AnyPromise * __nonnull)__catchOn:(__nonnull dispatch_queue_t)q withPolicy:(PMKCatchPolicy)policy execute:(id __nullable (^ __nonnull)(id __nullable))body;
+- (AnyPromise * __nonnull)__alwaysOn:(__nonnull dispatch_queue_t)q execute:(void (^ __nonnull)(void))body;
+- (void)__pipe:(void(^ __nonnull)(__nullable id))body;
+- (AnyPromise * __nonnull)initWithResolverBlock:(void (^ __nonnull)(PMKResolver __nonnull))resolver;
+@end
+
+extern NSError * __nullable PMKProcessUnhandledException(id __nonnull thrown);
+
+@class PMKArray;
diff --git a/samples/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/PromiseKit/Sources/AnyPromise.h b/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/PromiseKit/Sources/AnyPromise.h
similarity index 100%
rename from samples/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/PromiseKit/Sources/AnyPromise.h
rename to CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/PromiseKit/Sources/AnyPromise.h
diff --git a/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/PromiseKit/Sources/AnyPromise.m b/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/PromiseKit/Sources/AnyPromise.m
new file mode 100644
index 000000000000..c0f81f4c30b8
--- /dev/null
+++ b/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/PromiseKit/Sources/AnyPromise.m
@@ -0,0 +1,141 @@
+#import "PMKCallVariadicBlock.m"
+#import "AnyPromise+Private.h"
+
+extern dispatch_queue_t PMKDefaultDispatchQueue(void);
+
+NSString *const PMKErrorDomain = @"PMKErrorDomain";
+
+
+@implementation AnyPromise (objc)
+
+- (instancetype)initWithResolver:(PMKResolver __strong *)resolver {
+ return [[self class] promiseWithResolverBlock:^(PMKResolver resolve){
+ *resolver = resolve;
+ }];
+}
+
+- (AnyPromise *(^)(id))then {
+ return ^(id block) {
+ return [self __thenOn:PMKDefaultDispatchQueue() execute:^(id obj) {
+ return PMKCallVariadicBlock(block, obj);
+ }];
+ };
+}
+
+- (AnyPromise *(^)(dispatch_queue_t, id))thenOn {
+ return ^(dispatch_queue_t queue, id block) {
+ return [self __thenOn:queue execute:^(id obj) {
+ return PMKCallVariadicBlock(block, obj);
+ }];
+ };
+}
+
+- (AnyPromise *(^)(id))thenInBackground {
+ return ^(id block) {
+ return [self __thenOn:dispatch_get_global_queue(0, 0) execute:^(id obj) {
+ return PMKCallVariadicBlock(block, obj);
+ }];
+ };
+}
+
+- (AnyPromise *(^)(dispatch_queue_t, id))catchOn {
+ return ^(dispatch_queue_t q, id block) {
+ return [self __catchOn:q withPolicy:PMKCatchPolicyAllErrorsExceptCancellation execute:^(id obj) {
+ return PMKCallVariadicBlock(block, obj);
+ }];
+ };
+}
+
+- (AnyPromise *(^)(id))catch {
+ return ^(id block) {
+ return [self __catchOn:PMKDefaultDispatchQueue() withPolicy:PMKCatchPolicyAllErrorsExceptCancellation execute:^(id obj) {
+ return PMKCallVariadicBlock(block, obj);
+ }];
+ };
+}
+
+- (AnyPromise *(^)(id))catchInBackground {
+ return ^(id block) {
+ return [self __catchOn:dispatch_get_global_queue(0, 0) withPolicy:PMKCatchPolicyAllErrorsExceptCancellation execute:^(id obj) {
+ return PMKCallVariadicBlock(block, obj);
+ }];
+ };
+}
+
+- (AnyPromise *(^)(dispatch_queue_t, PMKCatchPolicy, id))catchOnWithPolicy {
+ return ^(dispatch_queue_t q, PMKCatchPolicy policy, id block) {
+ return [self __catchOn:q withPolicy:policy execute:^(id obj) {
+ return PMKCallVariadicBlock(block, obj);
+ }];
+ };
+}
+
+- (AnyPromise *(^)(PMKCatchPolicy, id))catchWithPolicy {
+ return ^(PMKCatchPolicy policy, id block) {
+ return [self __catchOn:PMKDefaultDispatchQueue() withPolicy:policy execute:^(id obj) {
+ return PMKCallVariadicBlock(block, obj);
+ }];
+ };
+}
+
+- (AnyPromise *(^)(dispatch_block_t))always {
+ return ^(dispatch_block_t block) {
+ return [self __alwaysOn:PMKDefaultDispatchQueue() execute:block];
+ };
+}
+
+- (AnyPromise *(^)(dispatch_queue_t, dispatch_block_t))alwaysOn {
+ return ^(dispatch_queue_t queue, dispatch_block_t block) {
+ return [self __alwaysOn:queue execute:block];
+ };
+}
+
+@end
+
+
+
+@implementation AnyPromise (Adapters)
+
++ (instancetype)promiseWithAdapterBlock:(void (^)(PMKAdapter))block {
+ return [self promiseWithResolverBlock:^(PMKResolver resolve) {
+ block(^(id value, id error){
+ resolve(error ?: value);
+ });
+ }];
+}
+
++ (instancetype)promiseWithIntegerAdapterBlock:(void (^)(PMKIntegerAdapter))block {
+ return [self promiseWithResolverBlock:^(PMKResolver resolve) {
+ block(^(NSInteger value, id error){
+ if (error) {
+ resolve(error);
+ } else {
+ resolve(@(value));
+ }
+ });
+ }];
+}
+
++ (instancetype)promiseWithBooleanAdapterBlock:(void (^)(PMKBooleanAdapter adapter))block {
+ return [self promiseWithResolverBlock:^(PMKResolver resolve) {
+ block(^(BOOL value, id error){
+ if (error) {
+ resolve(error);
+ } else {
+ resolve(@(value));
+ }
+ });
+ }];
+}
+
+- (id)value {
+ id obj = [self valueForKey:@"__value"];
+
+ if ([obj isKindOfClass:[PMKArray class]]) {
+ return obj[0];
+ } else {
+ return obj;
+ }
+}
+
+@end
diff --git a/samples/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/PromiseKit/Sources/AnyPromise.swift b/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/PromiseKit/Sources/AnyPromise.swift
similarity index 100%
rename from samples/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/PromiseKit/Sources/AnyPromise.swift
rename to CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/PromiseKit/Sources/AnyPromise.swift
diff --git a/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/PromiseKit/Sources/DispatchQueue+Promise.swift b/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/PromiseKit/Sources/DispatchQueue+Promise.swift
new file mode 100644
index 000000000000..2c912129e2bf
--- /dev/null
+++ b/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/PromiseKit/Sources/DispatchQueue+Promise.swift
@@ -0,0 +1,53 @@
+import Dispatch
+
+extension DispatchQueue {
+ /**
+ Submits a block for asynchronous execution on a dispatch queue.
+
+ DispatchQueue.global().promise {
+ try md5(input)
+ }.then { md5 in
+ //…
+ }
+
+ - Parameter body: The closure that resolves this promise.
+ - Returns: A new promise resolved by the result of the provided closure.
+
+ - SeeAlso: `DispatchQueue.async(group:qos:flags:execute:)`
+ - SeeAlso: `dispatch_promise()`
+ - SeeAlso: `dispatch_promise_on()`
+ */
+ public final func promise(group: DispatchGroup? = nil, qos: DispatchQoS = .default, flags: DispatchWorkItemFlags = [], execute body: @escaping () throws -> T) -> Promise {
+
+ return Promise(sealant: { resolve in
+ async(group: group, qos: qos, flags: flags) {
+ do {
+ resolve(.fulfilled(try body()))
+ } catch {
+ resolve(Resolution(error))
+ }
+ }
+ })
+ }
+
+ /// Unavailable due to Swift compiler issues
+ @available(*, unavailable)
+ public final func promise(group: DispatchGroup? = nil, qos: DispatchQoS = .default, flags: DispatchWorkItemFlags = [], execute body: () throws -> Promise) -> Promise { fatalError() }
+
+ /**
+ The default queue for all handlers.
+
+ Defaults to `DispatchQueue.main`.
+
+ - SeeAlso: `PMKDefaultDispatchQueue()`
+ - SeeAlso: `PMKSetDefaultDispatchQueue()`
+ */
+ class public final var `default`: DispatchQueue {
+ get {
+ return __PMKDefaultDispatchQueue()
+ }
+ set {
+ __PMKSetDefaultDispatchQueue(newValue)
+ }
+ }
+}
diff --git a/samples/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/PromiseKit/Sources/Error.swift b/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/PromiseKit/Sources/Error.swift
similarity index 100%
rename from samples/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/PromiseKit/Sources/Error.swift
rename to CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/PromiseKit/Sources/Error.swift
diff --git a/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/PromiseKit/Sources/GlobalState.m b/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/PromiseKit/Sources/GlobalState.m
new file mode 100644
index 000000000000..c156cde9480f
--- /dev/null
+++ b/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/PromiseKit/Sources/GlobalState.m
@@ -0,0 +1,76 @@
+#import "PromiseKit.h"
+
+@interface NSError (PMK)
+- (BOOL)isCancelled;
+@end
+
+static dispatch_once_t __PMKDefaultDispatchQueueToken;
+static dispatch_queue_t __PMKDefaultDispatchQueue;
+
+dispatch_queue_t PMKDefaultDispatchQueue() {
+ dispatch_once(&__PMKDefaultDispatchQueueToken, ^{
+ if (__PMKDefaultDispatchQueue == nil) {
+ __PMKDefaultDispatchQueue = dispatch_get_main_queue();
+ }
+ });
+ return __PMKDefaultDispatchQueue;
+}
+
+void PMKSetDefaultDispatchQueue(dispatch_queue_t newDefaultQueue) {
+ dispatch_once(&__PMKDefaultDispatchQueueToken, ^{
+ __PMKDefaultDispatchQueue = newDefaultQueue;
+ });
+}
+
+
+static dispatch_once_t __PMKErrorUnhandlerToken;
+static void (^__PMKErrorUnhandler)(NSError *);
+
+void PMKUnhandledErrorHandler(NSError *error) {
+ dispatch_once(&__PMKErrorUnhandlerToken, ^{
+ if (__PMKErrorUnhandler == nil) {
+ __PMKErrorUnhandler = ^(NSError *error){
+ if (!error.isCancelled) {
+ NSLog(@"PromiseKit: unhandled error: %@", error);
+ }
+ };
+ }
+ });
+ return __PMKErrorUnhandler(error);
+}
+
+void PMKSetUnhandledErrorHandler(void(^newHandler)(NSError *)) {
+ dispatch_once(&__PMKErrorUnhandlerToken, ^{
+ __PMKErrorUnhandler = newHandler;
+ });
+}
+
+
+static dispatch_once_t __PMKUnhandledExceptionHandlerToken;
+static NSError *(^__PMKUnhandledExceptionHandler)(id);
+
+NSError *PMKProcessUnhandledException(id thrown) {
+
+ dispatch_once(&__PMKUnhandledExceptionHandlerToken, ^{
+ __PMKUnhandledExceptionHandler = ^id(id reason){
+ if ([reason isKindOfClass:[NSError class]])
+ return reason;
+ if ([reason isKindOfClass:[NSString class]])
+ return [NSError errorWithDomain:PMKErrorDomain code:PMKUnexpectedError userInfo:@{NSLocalizedDescriptionKey: reason}];
+ return nil;
+ };
+ });
+
+ id err = __PMKUnhandledExceptionHandler(thrown);
+ if (!err) {
+ NSLog(@"PromiseKit no longer catches *all* exceptions. However you can change this behavior by setting a new PMKProcessUnhandledException handler.");
+ @throw thrown;
+ }
+ return err;
+}
+
+void PMKSetUnhandledExceptionHandler(NSError *(^newHandler)(id)) {
+ dispatch_once(&__PMKUnhandledExceptionHandlerToken, ^{
+ __PMKUnhandledExceptionHandler = newHandler;
+ });
+}
diff --git a/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/PromiseKit/Sources/NSMethodSignatureForBlock.m b/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/PromiseKit/Sources/NSMethodSignatureForBlock.m
new file mode 100644
index 000000000000..700c1b37ef7c
--- /dev/null
+++ b/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/PromiseKit/Sources/NSMethodSignatureForBlock.m
@@ -0,0 +1,77 @@
+#import
+
+struct PMKBlockLiteral {
+ void *isa; // initialized to &_NSConcreteStackBlock or &_NSConcreteGlobalBlock
+ int flags;
+ int reserved;
+ void (*invoke)(void *, ...);
+ struct block_descriptor {
+ unsigned long int reserved; // NULL
+ unsigned long int size; // sizeof(struct Block_literal_1)
+ // optional helper functions
+ void (*copy_helper)(void *dst, void *src); // IFF (1<<25)
+ void (*dispose_helper)(void *src); // IFF (1<<25)
+ // required ABI.2010.3.16
+ const char *signature; // IFF (1<<30)
+ } *descriptor;
+ // imported variables
+};
+
+typedef NS_OPTIONS(NSUInteger, PMKBlockDescriptionFlags) {
+ PMKBlockDescriptionFlagsHasCopyDispose = (1 << 25),
+ PMKBlockDescriptionFlagsHasCtor = (1 << 26), // helpers have C++ code
+ PMKBlockDescriptionFlagsIsGlobal = (1 << 28),
+ PMKBlockDescriptionFlagsHasStret = (1 << 29), // IFF BLOCK_HAS_SIGNATURE
+ PMKBlockDescriptionFlagsHasSignature = (1 << 30)
+};
+
+// It appears 10.7 doesn't support quotes in method signatures. Remove them
+// via @rabovik's method. See https://github.com/OliverLetterer/SLObjectiveCRuntimeAdditions/pull/2
+#if defined(__MAC_OS_X_VERSION_MIN_REQUIRED) && __MAC_OS_X_VERSION_MIN_REQUIRED < __MAC_10_8
+NS_INLINE static const char * pmk_removeQuotesFromMethodSignature(const char *str){
+ char *result = malloc(strlen(str) + 1);
+ BOOL skip = NO;
+ char *to = result;
+ char c;
+ while ((c = *str++)) {
+ if ('"' == c) {
+ skip = !skip;
+ continue;
+ }
+ if (skip) continue;
+ *to++ = c;
+ }
+ *to = '\0';
+ return result;
+}
+#endif
+
+static NSMethodSignature *NSMethodSignatureForBlock(id block) {
+ if (!block)
+ return nil;
+
+ struct PMKBlockLiteral *blockRef = (__bridge struct PMKBlockLiteral *)block;
+ PMKBlockDescriptionFlags flags = (PMKBlockDescriptionFlags)blockRef->flags;
+
+ if (flags & PMKBlockDescriptionFlagsHasSignature) {
+ void *signatureLocation = blockRef->descriptor;
+ signatureLocation += sizeof(unsigned long int);
+ signatureLocation += sizeof(unsigned long int);
+
+ if (flags & PMKBlockDescriptionFlagsHasCopyDispose) {
+ signatureLocation += sizeof(void(*)(void *dst, void *src));
+ signatureLocation += sizeof(void (*)(void *src));
+ }
+
+ const char *signature = (*(const char **)signatureLocation);
+#if defined(__MAC_OS_X_VERSION_MIN_REQUIRED) && __MAC_OS_X_VERSION_MIN_REQUIRED < __MAC_10_8
+ signature = pmk_removeQuotesFromMethodSignature(signature);
+ NSMethodSignature *nsSignature = [NSMethodSignature signatureWithObjCTypes:signature];
+ free((void *)signature);
+
+ return nsSignature;
+#endif
+ return [NSMethodSignature signatureWithObjCTypes:signature];
+ }
+ return 0;
+}
diff --git a/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/PromiseKit/Sources/PMKCallVariadicBlock.m b/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/PromiseKit/Sources/PMKCallVariadicBlock.m
new file mode 100644
index 000000000000..f89197ec04e8
--- /dev/null
+++ b/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/PromiseKit/Sources/PMKCallVariadicBlock.m
@@ -0,0 +1,114 @@
+#import "NSMethodSignatureForBlock.m"
+#import
+#import
+#import "AnyPromise+Private.h"
+#import
+#import
+#import
+
+#ifndef PMKLog
+#define PMKLog NSLog
+#endif
+
+@interface PMKArray : NSObject {
+@public
+ id objs[3];
+ NSUInteger count;
+} @end
+
+@implementation PMKArray
+
+- (id)objectAtIndexedSubscript:(NSUInteger)idx {
+ if (count <= idx) {
+ // this check is necessary due to lack of checks in `pmk_safely_call_block`
+ return nil;
+ }
+ return objs[idx];
+}
+
+@end
+
+id __PMKArrayWithCount(NSUInteger count, ...) {
+ PMKArray *this = [PMKArray new];
+ this->count = count;
+ va_list args;
+ va_start(args, count);
+ for (NSUInteger x = 0; x < count; ++x)
+ this->objs[x] = va_arg(args, id);
+ va_end(args);
+ return this;
+}
+
+
+static inline id _PMKCallVariadicBlock(id frock, id result) {
+ NSCAssert(frock, @"");
+
+ NSMethodSignature *sig = NSMethodSignatureForBlock(frock);
+ const NSUInteger nargs = sig.numberOfArguments;
+ const char rtype = sig.methodReturnType[0];
+
+ #define call_block_with_rtype(type) ({^type{ \
+ switch (nargs) { \
+ case 1: \
+ return ((type(^)(void))frock)(); \
+ case 2: { \
+ const id arg = [result class] == [PMKArray class] ? result[0] : result; \
+ return ((type(^)(id))frock)(arg); \
+ } \
+ case 3: { \
+ type (^block)(id, id) = frock; \
+ return [result class] == [PMKArray class] \
+ ? block(result[0], result[1]) \
+ : block(result, nil); \
+ } \
+ case 4: { \
+ type (^block)(id, id, id) = frock; \
+ return [result class] == [PMKArray class] \
+ ? block(result[0], result[1], result[2]) \
+ : block(result, nil, nil); \
+ } \
+ default: \
+ @throw [NSException exceptionWithName:NSInvalidArgumentException reason:@"PromiseKit: The provided block’s argument count is unsupported." userInfo:nil]; \
+ }}();})
+
+ switch (rtype) {
+ case 'v':
+ call_block_with_rtype(void);
+ return nil;
+ case '@':
+ return call_block_with_rtype(id) ?: nil;
+ case '*': {
+ char *str = call_block_with_rtype(char *);
+ return str ? @(str) : nil;
+ }
+ case 'c': return @(call_block_with_rtype(char));
+ case 'i': return @(call_block_with_rtype(int));
+ case 's': return @(call_block_with_rtype(short));
+ case 'l': return @(call_block_with_rtype(long));
+ case 'q': return @(call_block_with_rtype(long long));
+ case 'C': return @(call_block_with_rtype(unsigned char));
+ case 'I': return @(call_block_with_rtype(unsigned int));
+ case 'S': return @(call_block_with_rtype(unsigned short));
+ case 'L': return @(call_block_with_rtype(unsigned long));
+ case 'Q': return @(call_block_with_rtype(unsigned long long));
+ case 'f': return @(call_block_with_rtype(float));
+ case 'd': return @(call_block_with_rtype(double));
+ case 'B': return @(call_block_with_rtype(_Bool));
+ case '^':
+ if (strcmp(sig.methodReturnType, "^v") == 0) {
+ call_block_with_rtype(void);
+ return nil;
+ }
+ // else fall through!
+ default:
+ @throw [NSException exceptionWithName:@"PromiseKit" reason:@"PromiseKit: Unsupported method signature." userInfo:nil];
+ }
+}
+
+static id PMKCallVariadicBlock(id frock, id result) {
+ @try {
+ return _PMKCallVariadicBlock(frock, result);
+ } @catch (id thrown) {
+ return PMKProcessUnhandledException(thrown);
+ }
+}
diff --git a/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/PromiseKit/Sources/Promise+AnyPromise.swift b/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/PromiseKit/Sources/Promise+AnyPromise.swift
new file mode 100644
index 000000000000..5d77d4c83328
--- /dev/null
+++ b/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/PromiseKit/Sources/Promise+AnyPromise.swift
@@ -0,0 +1,41 @@
+import class Dispatch.DispatchQueue
+
+extension Promise {
+ /**
+ The provided closure executes once this promise resolves.
+
+ - Parameter on: The queue on which the provided closure executes.
+ - Parameter body: The closure that is executed when this promise fulfills.
+ - Returns: A new promise that resolves when the `AnyPromise` returned from the provided closure resolves. For example:
+
+ URLSession.GET(url).then { (data: NSData) -> AnyPromise in
+ //…
+ return SCNetworkReachability()
+ }.then { _ in
+ //…
+ }
+ */
+ public func then(on q: DispatchQueue = .default, execute body: @escaping (T) throws -> AnyPromise) -> Promise {
+ return Promise(sealant: { resolve in
+ state.then(on: q, else: resolve) { value in
+ try body(value).state.pipe(resolve)
+ }
+ })
+ }
+
+ @available(*, unavailable, message: "unwrap the promise")
+ public func then(on: DispatchQueue = .default, execute body: (T) throws -> AnyPromise?) -> Promise { fatalError() }
+}
+
+/**
+ `firstly` can make chains more readable.
+*/
+public func firstly(execute body: () throws -> AnyPromise) -> Promise {
+ return Promise(sealant: { resolve in
+ do {
+ try body().state.pipe(resolve)
+ } catch {
+ resolve(Resolution(error))
+ }
+ })
+}
diff --git a/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/PromiseKit/Sources/Promise+Properties.swift b/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/PromiseKit/Sources/Promise+Properties.swift
new file mode 100644
index 000000000000..251ea6dcb4b6
--- /dev/null
+++ b/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/PromiseKit/Sources/Promise+Properties.swift
@@ -0,0 +1,57 @@
+extension Promise {
+ /**
+ - Returns: The error with which this promise was rejected; `nil` if this promise is not rejected.
+ */
+ public var error: Error? {
+ switch state.get() {
+ case .none:
+ return nil
+ case .some(.fulfilled):
+ return nil
+ case .some(.rejected(let error, _)):
+ return error
+ }
+ }
+
+ /**
+ - Returns: `true` if the promise has not yet resolved.
+ */
+ public var isPending: Bool {
+ return state.get() == nil
+ }
+
+ /**
+ - Returns: `true` if the promise has resolved.
+ */
+ public var isResolved: Bool {
+ return !isPending
+ }
+
+ /**
+ - Returns: `true` if the promise was fulfilled.
+ */
+ public var isFulfilled: Bool {
+ return value != nil
+ }
+
+ /**
+ - Returns: `true` if the promise was rejected.
+ */
+ public var isRejected: Bool {
+ return error != nil
+ }
+
+ /**
+ - Returns: The value with which this promise was fulfilled or `nil` if this promise is pending or rejected.
+ */
+ public var value: T? {
+ switch state.get() {
+ case .none:
+ return nil
+ case .some(.fulfilled(let value)):
+ return value
+ case .some(.rejected):
+ return nil
+ }
+ }
+}
diff --git a/samples/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/PromiseKit/Sources/Promise.swift b/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/PromiseKit/Sources/Promise.swift
similarity index 100%
rename from samples/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/PromiseKit/Sources/Promise.swift
rename to CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/PromiseKit/Sources/Promise.swift
diff --git a/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/PromiseKit/Sources/PromiseKit.h b/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/PromiseKit/Sources/PromiseKit.h
new file mode 100644
index 000000000000..2651530cbc92
--- /dev/null
+++ b/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/PromiseKit/Sources/PromiseKit.h
@@ -0,0 +1,7 @@
+#import "fwd.h"
+#import "AnyPromise.h"
+
+#import // `FOUNDATION_EXPORT`
+
+FOUNDATION_EXPORT double PromiseKitVersionNumber;
+FOUNDATION_EXPORT const unsigned char PromiseKitVersionString[];
diff --git a/samples/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/PromiseKit/Sources/State.swift b/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/PromiseKit/Sources/State.swift
similarity index 100%
rename from samples/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/PromiseKit/Sources/State.swift
rename to CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/PromiseKit/Sources/State.swift
diff --git a/samples/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/PromiseKit/Sources/Zalgo.swift b/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/PromiseKit/Sources/Zalgo.swift
similarity index 100%
rename from samples/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/PromiseKit/Sources/Zalgo.swift
rename to CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/PromiseKit/Sources/Zalgo.swift
diff --git a/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/PromiseKit/Sources/after.m b/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/PromiseKit/Sources/after.m
new file mode 100644
index 000000000000..25f9966fc59e
--- /dev/null
+++ b/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/PromiseKit/Sources/after.m
@@ -0,0 +1,14 @@
+#import "AnyPromise.h"
+@import Dispatch;
+@import Foundation.NSDate;
+@import Foundation.NSValue;
+
+/// @return A promise that fulfills after the specified duration.
+AnyPromise *PMKAfter(NSTimeInterval duration) {
+ return [AnyPromise promiseWithResolverBlock:^(PMKResolver resolve) {
+ dispatch_time_t time = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(duration * NSEC_PER_SEC));
+ dispatch_after(time, dispatch_get_global_queue(0, 0), ^{
+ resolve(@(duration));
+ });
+ }];
+}
diff --git a/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/PromiseKit/Sources/after.swift b/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/PromiseKit/Sources/after.swift
new file mode 100644
index 000000000000..902dc4264a30
--- /dev/null
+++ b/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/PromiseKit/Sources/after.swift
@@ -0,0 +1,37 @@
+import struct Foundation.TimeInterval
+import Dispatch
+
+/**
+ - Returns: A new promise that fulfills after the specified duration.
+*/
+@available(*, deprecated: 4.3, message: "Use after(seconds:)")
+public func after(interval: TimeInterval) -> Promise {
+ return after(seconds: interval)
+}
+
+/**
+ after(.seconds(2)).then {
+ }
+
+- Returns: A new promise that fulfills after the specified duration.
+*/
+public func after(seconds: TimeInterval) -> Promise {
+ return Promise { fulfill, _ in
+ let when = DispatchTime.now() + seconds
+ DispatchQueue.global().asyncAfter(deadline: when) { fulfill(()) }
+ }
+}
+
+/**
+ - Returns: A new promise that fulfills after the specified duration.
+*/
+public func after(interval: DispatchTimeInterval) -> Promise {
+ return Promise { fulfill, _ in
+ let when = DispatchTime.now() + interval
+ #if swift(>=4.0)
+ DispatchQueue.global().asyncAfter(deadline: when) { fulfill(()) }
+ #else
+ DispatchQueue.global().asyncAfter(deadline: when, execute: fulfill)
+ #endif
+ }
+}
diff --git a/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/PromiseKit/Sources/dispatch_promise.m b/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/PromiseKit/Sources/dispatch_promise.m
new file mode 100644
index 000000000000..ecb89f711183
--- /dev/null
+++ b/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/PromiseKit/Sources/dispatch_promise.m
@@ -0,0 +1,10 @@
+#import "AnyPromise.h"
+@import Dispatch;
+
+AnyPromise *dispatch_promise_on(dispatch_queue_t queue, id block) {
+ return [AnyPromise promiseWithValue:nil].thenOn(queue, block);
+}
+
+AnyPromise *dispatch_promise(id block) {
+ return dispatch_promise_on(dispatch_get_global_queue(0, 0), block);
+}
diff --git a/samples/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/PromiseKit/Sources/fwd.h b/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/PromiseKit/Sources/fwd.h
similarity index 100%
rename from samples/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/PromiseKit/Sources/fwd.h
rename to CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/PromiseKit/Sources/fwd.h
diff --git a/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/PromiseKit/Sources/hang.m b/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/PromiseKit/Sources/hang.m
new file mode 100644
index 000000000000..1065d91f2f3b
--- /dev/null
+++ b/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/PromiseKit/Sources/hang.m
@@ -0,0 +1,29 @@
+#import "AnyPromise.h"
+#import "AnyPromise+Private.h"
+@import CoreFoundation.CFRunLoop;
+
+/**
+ Suspends the active thread waiting on the provided promise.
+
+ @return The value of the provided promise once resolved.
+ */
+id PMKHang(AnyPromise *promise) {
+ if (promise.pending) {
+ static CFRunLoopSourceContext context;
+
+ CFRunLoopRef runLoop = CFRunLoopGetCurrent();
+ CFRunLoopSourceRef runLoopSource = CFRunLoopSourceCreate(NULL, 0, &context);
+ CFRunLoopAddSource(runLoop, runLoopSource, kCFRunLoopDefaultMode);
+
+ promise.always(^{
+ CFRunLoopStop(runLoop);
+ });
+ while (promise.pending) {
+ CFRunLoopRun();
+ }
+ CFRunLoopRemoveSource(runLoop, runLoopSource, kCFRunLoopDefaultMode);
+ CFRelease(runLoopSource);
+ }
+
+ return promise.value;
+}
diff --git a/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/PromiseKit/Sources/join.m b/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/PromiseKit/Sources/join.m
new file mode 100644
index 000000000000..979f092df088
--- /dev/null
+++ b/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/PromiseKit/Sources/join.m
@@ -0,0 +1,54 @@
+@import Foundation.NSDictionary;
+#import "AnyPromise+Private.h"
+#import
+@import Foundation.NSError;
+@import Foundation.NSNull;
+#import "PromiseKit.h"
+#import
+
+/**
+ Waits on all provided promises.
+
+ `PMKWhen` rejects as soon as one of the provided promises rejects. `PMKJoin` waits on all provided promises, then rejects if any of those promises rejects, otherwise it fulfills with values from the provided promises.
+
+ - Returns: A new promise that resolves once all the provided promises resolve.
+*/
+AnyPromise *PMKJoin(NSArray *promises) {
+ if (promises == nil)
+ return [AnyPromise promiseWithValue:[NSError errorWithDomain:PMKErrorDomain code:PMKInvalidUsageError userInfo:@{NSLocalizedDescriptionKey: @"PMKJoin(nil)"}]];
+
+ if (promises.count == 0)
+ return [AnyPromise promiseWithValue:promises];
+
+ return [AnyPromise promiseWithResolverBlock:^(PMKResolver resolve) {
+ NSPointerArray *results = NSPointerArrayMake(promises.count);
+ __block atomic_int countdown = promises.count;
+ __block BOOL rejected = NO;
+
+ [promises enumerateObjectsUsingBlock:^(AnyPromise *promise, NSUInteger ii, BOOL *stop) {
+ [promise __pipe:^(id value) {
+
+ if (IsError(value)) {
+ rejected = YES;
+ }
+
+ //FIXME surely this isn't thread safe on multiple cores?
+ [results replacePointerAtIndex:ii withPointer:(__bridge void *)(value ?: [NSNull null])];
+
+ atomic_fetch_sub_explicit(&countdown, 1, memory_order_relaxed);
+
+ if (countdown == 0) {
+ if (!rejected) {
+ resolve(results.allObjects);
+ } else {
+ id userInfo = @{PMKJoinPromisesKey: promises};
+ id err = [NSError errorWithDomain:PMKErrorDomain code:PMKJoinError userInfo:userInfo];
+ resolve(err);
+ }
+ }
+ }];
+
+ (void) stop;
+ }];
+ }];
+}
diff --git a/samples/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/PromiseKit/Sources/join.swift b/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/PromiseKit/Sources/join.swift
similarity index 100%
rename from samples/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/PromiseKit/Sources/join.swift
rename to CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/PromiseKit/Sources/join.swift
diff --git a/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/PromiseKit/Sources/race.swift b/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/PromiseKit/Sources/race.swift
new file mode 100644
index 000000000000..9ff17005c9e3
--- /dev/null
+++ b/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/PromiseKit/Sources/race.swift
@@ -0,0 +1,40 @@
+/**
+ Resolves with the first resolving promise from a set of promises.
+
+ race(promise1, promise2, promise3).then { winner in
+ //…
+ }
+
+ - Returns: A new promise that resolves when the first promise in the provided promises resolves.
+ - Warning: If any of the provided promises reject, the returned promise is rejected.
+ - Warning: aborts if the array is empty.
+*/
+public func race(promises: [Promise]) -> Promise {
+ guard promises.count > 0 else {
+ fatalError("Cannot race with an empty array of promises")
+ }
+ return _race(promises: promises)
+}
+
+/**
+ Resolves with the first resolving promise from a set of promises.
+
+ race(promise1, promise2, promise3).then { winner in
+ //…
+ }
+
+ - Returns: A new promise that resolves when the first promise in the provided promises resolves.
+ - Warning: If any of the provided promises reject, the returned promise is rejected.
+ - Warning: aborts if the array is empty.
+*/
+public func race(_ promises: Promise...) -> Promise {
+ return _race(promises: promises)
+}
+
+private func _race(promises: [Promise]) -> Promise {
+ return Promise(sealant: { resolve in
+ for promise in promises {
+ promise.state.pipe(resolve)
+ }
+ })
+}
diff --git a/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/PromiseKit/Sources/when.m b/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/PromiseKit/Sources/when.m
new file mode 100644
index 000000000000..cafb54720c98
--- /dev/null
+++ b/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/PromiseKit/Sources/when.m
@@ -0,0 +1,100 @@
+@import Foundation.NSDictionary;
+#import "AnyPromise+Private.h"
+@import Foundation.NSProgress;
+#import
+@import Foundation.NSError;
+@import Foundation.NSNull;
+#import "PromiseKit.h"
+
+// NSProgress resources:
+// * https://robots.thoughtbot.com/asynchronous-nsprogress
+// * http://oleb.net/blog/2014/03/nsprogress/
+// NSProgress! Beware!
+// * https://github.com/AFNetworking/AFNetworking/issues/2261
+
+/**
+ Wait for all promises in a set to resolve.
+
+ @note If *any* of the provided promises reject, the returned promise is immediately rejected with that error.
+ @warning In the event of rejection the other promises will continue to resolve and, as per any other promise, will either fulfill or reject. This is the right pattern for `getter` style asynchronous tasks, but often for `setter` tasks (eg. storing data on a server), you most likely will need to wait on all tasks and then act based on which have succeeded and which have failed, in such situations use `when(resolved:)`.
+ @param promises The promises upon which to wait before the returned promise resolves.
+ @note PMKWhen provides NSProgress.
+ @return A new promise that resolves when all the provided promises fulfill or one of the provided promises rejects.
+*/
+AnyPromise *PMKWhen(id promises) {
+ if (promises == nil)
+ return [AnyPromise promiseWithValue:[NSError errorWithDomain:PMKErrorDomain code:PMKInvalidUsageError userInfo:@{NSLocalizedDescriptionKey: @"PMKWhen(nil)"}]];
+
+ if ([promises isKindOfClass:[NSArray class]] || [promises isKindOfClass:[NSDictionary class]]) {
+ if ([promises count] == 0)
+ return [AnyPromise promiseWithValue:promises];
+ } else if ([promises isKindOfClass:[AnyPromise class]]) {
+ promises = @[promises];
+ } else {
+ return [AnyPromise promiseWithValue:promises];
+ }
+
+#ifndef PMKDisableProgress
+ NSProgress *progress = [NSProgress progressWithTotalUnitCount:(int64_t)[promises count]];
+ progress.pausable = NO;
+ progress.cancellable = NO;
+#else
+ struct PMKProgress {
+ int completedUnitCount;
+ int totalUnitCount;
+ double fractionCompleted;
+ };
+ __block struct PMKProgress progress;
+#endif
+
+ __block int32_t countdown = (int32_t)[promises count];
+ BOOL const isdict = [promises isKindOfClass:[NSDictionary class]];
+
+ return [AnyPromise promiseWithResolverBlock:^(PMKResolver resolve) {
+ NSInteger index = 0;
+
+ for (__strong id key in promises) {
+ AnyPromise *promise = isdict ? promises[key] : key;
+ if (!isdict) key = @(index);
+
+ if (![promise isKindOfClass:[AnyPromise class]])
+ promise = [AnyPromise promiseWithValue:promise];
+
+ [promise __pipe:^(id value){
+ if (progress.fractionCompleted >= 1)
+ return;
+
+ if (IsError(value)) {
+ progress.completedUnitCount = progress.totalUnitCount;
+
+ NSMutableDictionary *userInfo = [NSMutableDictionary dictionaryWithDictionary:[value userInfo] ?: @{}];
+ userInfo[PMKFailingPromiseIndexKey] = key;
+ [userInfo setObject:value forKey:NSUnderlyingErrorKey];
+ id err = [[NSError alloc] initWithDomain:[value domain] code:[value code] userInfo:userInfo];
+ resolve(err);
+ }
+ else if (OSAtomicDecrement32(&countdown) == 0) {
+ progress.completedUnitCount = progress.totalUnitCount;
+
+ id results;
+ if (isdict) {
+ results = [NSMutableDictionary new];
+ for (id key in promises) {
+ id promise = promises[key];
+ results[key] = IsPromise(promise) ? ((AnyPromise *)promise).value : promise;
+ }
+ } else {
+ results = [NSMutableArray new];
+ for (AnyPromise *promise in promises) {
+ id value = IsPromise(promise) ? (promise.value ?: [NSNull null]) : promise;
+ [results addObject:value];
+ }
+ }
+ resolve(results);
+ } else {
+ progress.completedUnitCount++;
+ }
+ }];
+ }
+ }];
+}
diff --git a/samples/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/PromiseKit/Sources/when.swift b/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/PromiseKit/Sources/when.swift
similarity index 100%
rename from samples/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/PromiseKit/Sources/when.swift
rename to CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/PromiseKit/Sources/when.swift
diff --git a/samples/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/PromiseKit/Sources/wrap.swift b/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/PromiseKit/Sources/wrap.swift
similarity index 100%
rename from samples/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/PromiseKit/Sources/wrap.swift
rename to CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/PromiseKit/Sources/wrap.swift
diff --git a/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Target Support Files/Alamofire/Alamofire-dummy.m b/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Target Support Files/Alamofire/Alamofire-dummy.m
new file mode 100644
index 000000000000..a6c4594242e9
--- /dev/null
+++ b/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Target Support Files/Alamofire/Alamofire-dummy.m
@@ -0,0 +1,5 @@
+#import
+@interface PodsDummy_Alamofire : NSObject
+@end
+@implementation PodsDummy_Alamofire
+@end
diff --git a/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Target Support Files/Alamofire/Alamofire-prefix.pch b/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Target Support Files/Alamofire/Alamofire-prefix.pch
new file mode 100644
index 000000000000..beb2a2441835
--- /dev/null
+++ b/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Target Support Files/Alamofire/Alamofire-prefix.pch
@@ -0,0 +1,12 @@
+#ifdef __OBJC__
+#import
+#else
+#ifndef FOUNDATION_EXPORT
+#if defined(__cplusplus)
+#define FOUNDATION_EXPORT extern "C"
+#else
+#define FOUNDATION_EXPORT extern
+#endif
+#endif
+#endif
+
diff --git a/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Target Support Files/Alamofire/Alamofire-umbrella.h b/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Target Support Files/Alamofire/Alamofire-umbrella.h
new file mode 100644
index 000000000000..00014e3cd82a
--- /dev/null
+++ b/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Target Support Files/Alamofire/Alamofire-umbrella.h
@@ -0,0 +1,16 @@
+#ifdef __OBJC__
+#import
+#else
+#ifndef FOUNDATION_EXPORT
+#if defined(__cplusplus)
+#define FOUNDATION_EXPORT extern "C"
+#else
+#define FOUNDATION_EXPORT extern
+#endif
+#endif
+#endif
+
+
+FOUNDATION_EXPORT double AlamofireVersionNumber;
+FOUNDATION_EXPORT const unsigned char AlamofireVersionString[];
+
diff --git a/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Target Support Files/Alamofire/Alamofire.modulemap b/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Target Support Files/Alamofire/Alamofire.modulemap
new file mode 100644
index 000000000000..d1f125fab6b0
--- /dev/null
+++ b/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Target Support Files/Alamofire/Alamofire.modulemap
@@ -0,0 +1,6 @@
+framework module Alamofire {
+ umbrella header "Alamofire-umbrella.h"
+
+ export *
+ module * { export * }
+}
diff --git a/samples/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Target Support Files/Alamofire/Alamofire.xcconfig b/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Target Support Files/Alamofire/Alamofire.xcconfig
similarity index 100%
rename from samples/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Target Support Files/Alamofire/Alamofire.xcconfig
rename to CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Target Support Files/Alamofire/Alamofire.xcconfig
diff --git a/samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Target Support Files/Alamofire/Info.plist b/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Target Support Files/Alamofire/Info.plist
similarity index 100%
rename from samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Target Support Files/Alamofire/Info.plist
rename to CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Target Support Files/Alamofire/Info.plist
diff --git a/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Target Support Files/PetstoreClient/Info.plist b/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Target Support Files/PetstoreClient/Info.plist
new file mode 100644
index 000000000000..cba258550bd0
--- /dev/null
+++ b/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Target Support Files/PetstoreClient/Info.plist
@@ -0,0 +1,26 @@
+
+
+
+
+ CFBundleDevelopmentRegion
+ en
+ CFBundleExecutable
+ ${EXECUTABLE_NAME}
+ CFBundleIdentifier
+ ${PRODUCT_BUNDLE_IDENTIFIER}
+ CFBundleInfoDictionaryVersion
+ 6.0
+ CFBundleName
+ ${PRODUCT_NAME}
+ CFBundlePackageType
+ FMWK
+ CFBundleShortVersionString
+ 0.0.1
+ CFBundleSignature
+ ????
+ CFBundleVersion
+ ${CURRENT_PROJECT_VERSION}
+ NSPrincipalClass
+
+
+
diff --git a/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Target Support Files/PetstoreClient/PetstoreClient-dummy.m b/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Target Support Files/PetstoreClient/PetstoreClient-dummy.m
new file mode 100644
index 000000000000..749b412f85c0
--- /dev/null
+++ b/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Target Support Files/PetstoreClient/PetstoreClient-dummy.m
@@ -0,0 +1,5 @@
+#import
+@interface PodsDummy_PetstoreClient : NSObject
+@end
+@implementation PodsDummy_PetstoreClient
+@end
diff --git a/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Target Support Files/PetstoreClient/PetstoreClient-prefix.pch b/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Target Support Files/PetstoreClient/PetstoreClient-prefix.pch
new file mode 100644
index 000000000000..beb2a2441835
--- /dev/null
+++ b/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Target Support Files/PetstoreClient/PetstoreClient-prefix.pch
@@ -0,0 +1,12 @@
+#ifdef __OBJC__
+#import
+#else
+#ifndef FOUNDATION_EXPORT
+#if defined(__cplusplus)
+#define FOUNDATION_EXPORT extern "C"
+#else
+#define FOUNDATION_EXPORT extern
+#endif
+#endif
+#endif
+
diff --git a/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Target Support Files/PetstoreClient/PetstoreClient-umbrella.h b/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Target Support Files/PetstoreClient/PetstoreClient-umbrella.h
new file mode 100644
index 000000000000..2a366623a36f
--- /dev/null
+++ b/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Target Support Files/PetstoreClient/PetstoreClient-umbrella.h
@@ -0,0 +1,16 @@
+#ifdef __OBJC__
+#import
+#else
+#ifndef FOUNDATION_EXPORT
+#if defined(__cplusplus)
+#define FOUNDATION_EXPORT extern "C"
+#else
+#define FOUNDATION_EXPORT extern
+#endif
+#endif
+#endif
+
+
+FOUNDATION_EXPORT double PetstoreClientVersionNumber;
+FOUNDATION_EXPORT const unsigned char PetstoreClientVersionString[];
+
diff --git a/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Target Support Files/PetstoreClient/PetstoreClient.modulemap b/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Target Support Files/PetstoreClient/PetstoreClient.modulemap
new file mode 100644
index 000000000000..7fdfc46cf796
--- /dev/null
+++ b/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Target Support Files/PetstoreClient/PetstoreClient.modulemap
@@ -0,0 +1,6 @@
+framework module PetstoreClient {
+ umbrella header "PetstoreClient-umbrella.h"
+
+ export *
+ module * { export * }
+}
diff --git a/samples/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Target Support Files/PetstoreClient/PetstoreClient.xcconfig b/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Target Support Files/PetstoreClient/PetstoreClient.xcconfig
similarity index 100%
rename from samples/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Target Support Files/PetstoreClient/PetstoreClient.xcconfig
rename to CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Target Support Files/PetstoreClient/PetstoreClient.xcconfig
diff --git a/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient/Info.plist b/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient/Info.plist
new file mode 100644
index 000000000000..2243fe6e27dc
--- /dev/null
+++ b/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient/Info.plist
@@ -0,0 +1,26 @@
+
+
+
+
+ CFBundleDevelopmentRegion
+ en
+ CFBundleExecutable
+ ${EXECUTABLE_NAME}
+ CFBundleIdentifier
+ ${PRODUCT_BUNDLE_IDENTIFIER}
+ CFBundleInfoDictionaryVersion
+ 6.0
+ CFBundleName
+ ${PRODUCT_NAME}
+ CFBundlePackageType
+ FMWK
+ CFBundleShortVersionString
+ 1.0.0
+ CFBundleSignature
+ ????
+ CFBundleVersion
+ ${CURRENT_PROJECT_VERSION}
+ NSPrincipalClass
+
+
+
diff --git a/samples/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient/Pods-SwaggerClient-acknowledgements.markdown b/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient/Pods-SwaggerClient-acknowledgements.markdown
similarity index 100%
rename from samples/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient/Pods-SwaggerClient-acknowledgements.markdown
rename to CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient/Pods-SwaggerClient-acknowledgements.markdown
diff --git a/samples/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient/Pods-SwaggerClient-acknowledgements.plist b/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient/Pods-SwaggerClient-acknowledgements.plist
similarity index 100%
rename from samples/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient/Pods-SwaggerClient-acknowledgements.plist
rename to CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient/Pods-SwaggerClient-acknowledgements.plist
diff --git a/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient/Pods-SwaggerClient-dummy.m b/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient/Pods-SwaggerClient-dummy.m
new file mode 100644
index 000000000000..6236440163b8
--- /dev/null
+++ b/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient/Pods-SwaggerClient-dummy.m
@@ -0,0 +1,5 @@
+#import
+@interface PodsDummy_Pods_SwaggerClient : NSObject
+@end
+@implementation PodsDummy_Pods_SwaggerClient
+@end
diff --git a/samples/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient/Pods-SwaggerClient-frameworks.sh b/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient/Pods-SwaggerClient-frameworks.sh
similarity index 100%
rename from samples/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient/Pods-SwaggerClient-frameworks.sh
rename to CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient/Pods-SwaggerClient-frameworks.sh
diff --git a/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient/Pods-SwaggerClient-resources.sh b/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient/Pods-SwaggerClient-resources.sh
new file mode 100755
index 000000000000..345301f2c5ca
--- /dev/null
+++ b/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient/Pods-SwaggerClient-resources.sh
@@ -0,0 +1,118 @@
+#!/bin/sh
+set -e
+set -u
+set -o pipefail
+
+if [ -z ${UNLOCALIZED_RESOURCES_FOLDER_PATH+x} ]; then
+ # If UNLOCALIZED_RESOURCES_FOLDER_PATH is not set, then there's nowhere for us to copy
+ # resources to, so exit 0 (signalling the script phase was successful).
+ exit 0
+fi
+
+mkdir -p "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}"
+
+RESOURCES_TO_COPY=${PODS_ROOT}/resources-to-copy-${TARGETNAME}.txt
+> "$RESOURCES_TO_COPY"
+
+XCASSET_FILES=()
+
+# This protects against multiple targets copying the same framework dependency at the same time. The solution
+# was originally proposed here: https://lists.samba.org/archive/rsync/2008-February/020158.html
+RSYNC_PROTECT_TMP_FILES=(--filter "P .*.??????")
+
+case "${TARGETED_DEVICE_FAMILY:-}" in
+ 1,2)
+ TARGET_DEVICE_ARGS="--target-device ipad --target-device iphone"
+ ;;
+ 1)
+ TARGET_DEVICE_ARGS="--target-device iphone"
+ ;;
+ 2)
+ TARGET_DEVICE_ARGS="--target-device ipad"
+ ;;
+ 3)
+ TARGET_DEVICE_ARGS="--target-device tv"
+ ;;
+ 4)
+ TARGET_DEVICE_ARGS="--target-device watch"
+ ;;
+ *)
+ TARGET_DEVICE_ARGS="--target-device mac"
+ ;;
+esac
+
+install_resource()
+{
+ if [[ "$1" = /* ]] ; then
+ RESOURCE_PATH="$1"
+ else
+ RESOURCE_PATH="${PODS_ROOT}/$1"
+ fi
+ if [[ ! -e "$RESOURCE_PATH" ]] ; then
+ cat << EOM
+error: Resource "$RESOURCE_PATH" not found. Run 'pod install' to update the copy resources script.
+EOM
+ exit 1
+ fi
+ case $RESOURCE_PATH in
+ *.storyboard)
+ echo "ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .storyboard`.storyboardc $RESOURCE_PATH --sdk ${SDKROOT} ${TARGET_DEVICE_ARGS}" || true
+ ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .storyboard`.storyboardc" "$RESOURCE_PATH" --sdk "${SDKROOT}" ${TARGET_DEVICE_ARGS}
+ ;;
+ *.xib)
+ echo "ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib $RESOURCE_PATH --sdk ${SDKROOT} ${TARGET_DEVICE_ARGS}" || true
+ ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib" "$RESOURCE_PATH" --sdk "${SDKROOT}" ${TARGET_DEVICE_ARGS}
+ ;;
+ *.framework)
+ echo "mkdir -p ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" || true
+ mkdir -p "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
+ echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" $RESOURCE_PATH ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" || true
+ rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
+ ;;
+ *.xcdatamodel)
+ echo "xcrun momc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH"`.mom\"" || true
+ xcrun momc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodel`.mom"
+ ;;
+ *.xcdatamodeld)
+ echo "xcrun momc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodeld`.momd\"" || true
+ xcrun momc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodeld`.momd"
+ ;;
+ *.xcmappingmodel)
+ echo "xcrun mapc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcmappingmodel`.cdm\"" || true
+ xcrun mapc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcmappingmodel`.cdm"
+ ;;
+ *.xcassets)
+ ABSOLUTE_XCASSET_FILE="$RESOURCE_PATH"
+ XCASSET_FILES+=("$ABSOLUTE_XCASSET_FILE")
+ ;;
+ *)
+ echo "$RESOURCE_PATH" || true
+ echo "$RESOURCE_PATH" >> "$RESOURCES_TO_COPY"
+ ;;
+ esac
+}
+
+mkdir -p "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}"
+rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from="$RESOURCES_TO_COPY" / "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}"
+if [[ "${ACTION}" == "install" ]] && [[ "${SKIP_INSTALL}" == "NO" ]]; then
+ mkdir -p "${INSTALL_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}"
+ rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from="$RESOURCES_TO_COPY" / "${INSTALL_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}"
+fi
+rm -f "$RESOURCES_TO_COPY"
+
+if [[ -n "${WRAPPER_EXTENSION}" ]] && [ "`xcrun --find actool`" ] && [ -n "${XCASSET_FILES:-}" ]
+then
+ # Find all other xcassets (this unfortunately includes those of path pods and other targets).
+ OTHER_XCASSETS=$(find "$PWD" -iname "*.xcassets" -type d)
+ while read line; do
+ if [[ $line != "${PODS_ROOT}*" ]]; then
+ XCASSET_FILES+=("$line")
+ fi
+ done <<<"$OTHER_XCASSETS"
+
+ if [ -z ${ASSETCATALOG_COMPILER_APPICON_NAME+x} ]; then
+ printf "%s\0" "${XCASSET_FILES[@]}" | xargs -0 xcrun actool --output-format human-readable-text --notices --warnings --platform "${PLATFORM_NAME}" --minimum-deployment-target "${!DEPLOYMENT_TARGET_SETTING_NAME}" ${TARGET_DEVICE_ARGS} --compress-pngs --compile "${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}"
+ else
+ printf "%s\0" "${XCASSET_FILES[@]}" | xargs -0 xcrun actool --output-format human-readable-text --notices --warnings --platform "${PLATFORM_NAME}" --minimum-deployment-target "${!DEPLOYMENT_TARGET_SETTING_NAME}" ${TARGET_DEVICE_ARGS} --compress-pngs --compile "${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" --app-icon "${ASSETCATALOG_COMPILER_APPICON_NAME}" --output-partial-info-plist "${TARGET_TEMP_DIR}/assetcatalog_generated_info_cocoapods.plist"
+ fi
+fi
diff --git a/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient/Pods-SwaggerClient-umbrella.h b/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient/Pods-SwaggerClient-umbrella.h
new file mode 100644
index 000000000000..b7da51aaf252
--- /dev/null
+++ b/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient/Pods-SwaggerClient-umbrella.h
@@ -0,0 +1,16 @@
+#ifdef __OBJC__
+#import
+#else
+#ifndef FOUNDATION_EXPORT
+#if defined(__cplusplus)
+#define FOUNDATION_EXPORT extern "C"
+#else
+#define FOUNDATION_EXPORT extern
+#endif
+#endif
+#endif
+
+
+FOUNDATION_EXPORT double Pods_SwaggerClientVersionNumber;
+FOUNDATION_EXPORT const unsigned char Pods_SwaggerClientVersionString[];
+
diff --git a/samples/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient/Pods-SwaggerClient.debug.xcconfig b/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient/Pods-SwaggerClient.debug.xcconfig
similarity index 100%
rename from samples/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient/Pods-SwaggerClient.debug.xcconfig
rename to CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient/Pods-SwaggerClient.debug.xcconfig
diff --git a/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient/Pods-SwaggerClient.modulemap b/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient/Pods-SwaggerClient.modulemap
new file mode 100644
index 000000000000..ef919b6c0d1f
--- /dev/null
+++ b/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient/Pods-SwaggerClient.modulemap
@@ -0,0 +1,6 @@
+framework module Pods_SwaggerClient {
+ umbrella header "Pods-SwaggerClient-umbrella.h"
+
+ export *
+ module * { export * }
+}
diff --git a/samples/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient/Pods-SwaggerClient.release.xcconfig b/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient/Pods-SwaggerClient.release.xcconfig
similarity index 100%
rename from samples/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient/Pods-SwaggerClient.release.xcconfig
rename to CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient/Pods-SwaggerClient.release.xcconfig
diff --git a/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClientTests/Info.plist b/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClientTests/Info.plist
new file mode 100644
index 000000000000..2243fe6e27dc
--- /dev/null
+++ b/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClientTests/Info.plist
@@ -0,0 +1,26 @@
+
+
+
+
+ CFBundleDevelopmentRegion
+ en
+ CFBundleExecutable
+ ${EXECUTABLE_NAME}
+ CFBundleIdentifier
+ ${PRODUCT_BUNDLE_IDENTIFIER}
+ CFBundleInfoDictionaryVersion
+ 6.0
+ CFBundleName
+ ${PRODUCT_NAME}
+ CFBundlePackageType
+ FMWK
+ CFBundleShortVersionString
+ 1.0.0
+ CFBundleSignature
+ ????
+ CFBundleVersion
+ ${CURRENT_PROJECT_VERSION}
+ NSPrincipalClass
+
+
+
diff --git a/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClientTests/Pods-SwaggerClientTests-acknowledgements.markdown b/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClientTests/Pods-SwaggerClientTests-acknowledgements.markdown
new file mode 100644
index 000000000000..102af7538517
--- /dev/null
+++ b/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClientTests/Pods-SwaggerClientTests-acknowledgements.markdown
@@ -0,0 +1,3 @@
+# Acknowledgements
+This application makes use of the following third party libraries:
+Generated by CocoaPods - https://cocoapods.org
diff --git a/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClientTests/Pods-SwaggerClientTests-acknowledgements.plist b/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClientTests/Pods-SwaggerClientTests-acknowledgements.plist
new file mode 100644
index 000000000000..7acbad1eabbf
--- /dev/null
+++ b/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClientTests/Pods-SwaggerClientTests-acknowledgements.plist
@@ -0,0 +1,29 @@
+
+
+
+
+ PreferenceSpecifiers
+
+
+ FooterText
+ This application makes use of the following third party libraries:
+ Title
+ Acknowledgements
+ Type
+ PSGroupSpecifier
+
+
+ FooterText
+ Generated by CocoaPods - https://cocoapods.org
+ Title
+
+ Type
+ PSGroupSpecifier
+
+
+ StringsTable
+ Acknowledgements
+ Title
+ Acknowledgements
+
+
diff --git a/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClientTests/Pods-SwaggerClientTests-dummy.m b/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClientTests/Pods-SwaggerClientTests-dummy.m
new file mode 100644
index 000000000000..bb17fa2b80ff
--- /dev/null
+++ b/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClientTests/Pods-SwaggerClientTests-dummy.m
@@ -0,0 +1,5 @@
+#import
+@interface PodsDummy_Pods_SwaggerClientTests : NSObject
+@end
+@implementation PodsDummy_Pods_SwaggerClientTests
+@end
diff --git a/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClientTests/Pods-SwaggerClientTests-frameworks.sh b/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClientTests/Pods-SwaggerClientTests-frameworks.sh
new file mode 100755
index 000000000000..08e3eaaca45a
--- /dev/null
+++ b/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClientTests/Pods-SwaggerClientTests-frameworks.sh
@@ -0,0 +1,146 @@
+#!/bin/sh
+set -e
+set -u
+set -o pipefail
+
+if [ -z ${FRAMEWORKS_FOLDER_PATH+x} ]; then
+ # If FRAMEWORKS_FOLDER_PATH is not set, then there's nowhere for us to copy
+ # frameworks to, so exit 0 (signalling the script phase was successful).
+ exit 0
+fi
+
+echo "mkdir -p ${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
+mkdir -p "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
+
+COCOAPODS_PARALLEL_CODE_SIGN="${COCOAPODS_PARALLEL_CODE_SIGN:-false}"
+SWIFT_STDLIB_PATH="${DT_TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}"
+
+# Used as a return value for each invocation of `strip_invalid_archs` function.
+STRIP_BINARY_RETVAL=0
+
+# This protects against multiple targets copying the same framework dependency at the same time. The solution
+# was originally proposed here: https://lists.samba.org/archive/rsync/2008-February/020158.html
+RSYNC_PROTECT_TMP_FILES=(--filter "P .*.??????")
+
+# Copies and strips a vendored framework
+install_framework()
+{
+ if [ -r "${BUILT_PRODUCTS_DIR}/$1" ]; then
+ local source="${BUILT_PRODUCTS_DIR}/$1"
+ elif [ -r "${BUILT_PRODUCTS_DIR}/$(basename "$1")" ]; then
+ local source="${BUILT_PRODUCTS_DIR}/$(basename "$1")"
+ elif [ -r "$1" ]; then
+ local source="$1"
+ fi
+
+ local destination="${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
+
+ if [ -L "${source}" ]; then
+ echo "Symlinked..."
+ source="$(readlink "${source}")"
+ fi
+
+ # Use filter instead of exclude so missing patterns don't throw errors.
+ echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${source}\" \"${destination}\""
+ rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${source}" "${destination}"
+
+ local basename
+ basename="$(basename -s .framework "$1")"
+ binary="${destination}/${basename}.framework/${basename}"
+ if ! [ -r "$binary" ]; then
+ binary="${destination}/${basename}"
+ fi
+
+ # Strip invalid architectures so "fat" simulator / device frameworks work on device
+ if [[ "$(file "$binary")" == *"dynamically linked shared library"* ]]; then
+ strip_invalid_archs "$binary"
+ fi
+
+ # Resign the code if required by the build settings to avoid unstable apps
+ code_sign_if_enabled "${destination}/$(basename "$1")"
+
+ # Embed linked Swift runtime libraries. No longer necessary as of Xcode 7.
+ if [ "${XCODE_VERSION_MAJOR}" -lt 7 ]; then
+ local swift_runtime_libs
+ swift_runtime_libs=$(xcrun otool -LX "$binary" | grep --color=never @rpath/libswift | sed -E s/@rpath\\/\(.+dylib\).*/\\1/g | uniq -u && exit ${PIPESTATUS[0]})
+ for lib in $swift_runtime_libs; do
+ echo "rsync -auv \"${SWIFT_STDLIB_PATH}/${lib}\" \"${destination}\""
+ rsync -auv "${SWIFT_STDLIB_PATH}/${lib}" "${destination}"
+ code_sign_if_enabled "${destination}/${lib}"
+ done
+ fi
+}
+
+# Copies and strips a vendored dSYM
+install_dsym() {
+ local source="$1"
+ if [ -r "$source" ]; then
+ # Copy the dSYM into a the targets temp dir.
+ echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${source}\" \"${DERIVED_FILES_DIR}\""
+ rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${source}" "${DERIVED_FILES_DIR}"
+
+ local basename
+ basename="$(basename -s .framework.dSYM "$source")"
+ binary="${DERIVED_FILES_DIR}/${basename}.framework.dSYM/Contents/Resources/DWARF/${basename}"
+
+ # Strip invalid architectures so "fat" simulator / device frameworks work on device
+ if [[ "$(file "$binary")" == *"Mach-O dSYM companion"* ]]; then
+ strip_invalid_archs "$binary"
+ fi
+
+ if [[ $STRIP_BINARY_RETVAL == 1 ]]; then
+ # Move the stripped file into its final destination.
+ echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${DERIVED_FILES_DIR}/${basename}.framework.dSYM\" \"${DWARF_DSYM_FOLDER_PATH}\""
+ rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${DERIVED_FILES_DIR}/${basename}.framework.dSYM" "${DWARF_DSYM_FOLDER_PATH}"
+ else
+ # The dSYM was not stripped at all, in this case touch a fake folder so the input/output paths from Xcode do not reexecute this script because the file is missing.
+ touch "${DWARF_DSYM_FOLDER_PATH}/${basename}.framework.dSYM"
+ fi
+ fi
+}
+
+# Signs a framework with the provided identity
+code_sign_if_enabled() {
+ if [ -n "${EXPANDED_CODE_SIGN_IDENTITY}" -a "${CODE_SIGNING_REQUIRED:-}" != "NO" -a "${CODE_SIGNING_ALLOWED}" != "NO" ]; then
+ # Use the current code_sign_identitiy
+ echo "Code Signing $1 with Identity ${EXPANDED_CODE_SIGN_IDENTITY_NAME}"
+ local code_sign_cmd="/usr/bin/codesign --force --sign ${EXPANDED_CODE_SIGN_IDENTITY} ${OTHER_CODE_SIGN_FLAGS:-} --preserve-metadata=identifier,entitlements '$1'"
+
+ if [ "${COCOAPODS_PARALLEL_CODE_SIGN}" == "true" ]; then
+ code_sign_cmd="$code_sign_cmd &"
+ fi
+ echo "$code_sign_cmd"
+ eval "$code_sign_cmd"
+ fi
+}
+
+# Strip invalid architectures
+strip_invalid_archs() {
+ binary="$1"
+ # Get architectures for current target binary
+ binary_archs="$(lipo -info "$binary" | rev | cut -d ':' -f1 | awk '{$1=$1;print}' | rev)"
+ # Intersect them with the architectures we are building for
+ intersected_archs="$(echo ${ARCHS[@]} ${binary_archs[@]} | tr ' ' '\n' | sort | uniq -d)"
+ # If there are no archs supported by this binary then warn the user
+ if [[ -z "$intersected_archs" ]]; then
+ echo "warning: [CP] Vendored binary '$binary' contains architectures ($binary_archs) none of which match the current build architectures ($ARCHS)."
+ STRIP_BINARY_RETVAL=0
+ return
+ fi
+ stripped=""
+ for arch in $binary_archs; do
+ if ! [[ "${ARCHS}" == *"$arch"* ]]; then
+ # Strip non-valid architectures in-place
+ lipo -remove "$arch" -output "$binary" "$binary" || exit 1
+ stripped="$stripped $arch"
+ fi
+ done
+ if [[ "$stripped" ]]; then
+ echo "Stripped $binary of architectures:$stripped"
+ fi
+ STRIP_BINARY_RETVAL=1
+}
+
+if [ "${COCOAPODS_PARALLEL_CODE_SIGN}" == "true" ]; then
+ wait
+fi
diff --git a/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClientTests/Pods-SwaggerClientTests-resources.sh b/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClientTests/Pods-SwaggerClientTests-resources.sh
new file mode 100755
index 000000000000..345301f2c5ca
--- /dev/null
+++ b/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClientTests/Pods-SwaggerClientTests-resources.sh
@@ -0,0 +1,118 @@
+#!/bin/sh
+set -e
+set -u
+set -o pipefail
+
+if [ -z ${UNLOCALIZED_RESOURCES_FOLDER_PATH+x} ]; then
+ # If UNLOCALIZED_RESOURCES_FOLDER_PATH is not set, then there's nowhere for us to copy
+ # resources to, so exit 0 (signalling the script phase was successful).
+ exit 0
+fi
+
+mkdir -p "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}"
+
+RESOURCES_TO_COPY=${PODS_ROOT}/resources-to-copy-${TARGETNAME}.txt
+> "$RESOURCES_TO_COPY"
+
+XCASSET_FILES=()
+
+# This protects against multiple targets copying the same framework dependency at the same time. The solution
+# was originally proposed here: https://lists.samba.org/archive/rsync/2008-February/020158.html
+RSYNC_PROTECT_TMP_FILES=(--filter "P .*.??????")
+
+case "${TARGETED_DEVICE_FAMILY:-}" in
+ 1,2)
+ TARGET_DEVICE_ARGS="--target-device ipad --target-device iphone"
+ ;;
+ 1)
+ TARGET_DEVICE_ARGS="--target-device iphone"
+ ;;
+ 2)
+ TARGET_DEVICE_ARGS="--target-device ipad"
+ ;;
+ 3)
+ TARGET_DEVICE_ARGS="--target-device tv"
+ ;;
+ 4)
+ TARGET_DEVICE_ARGS="--target-device watch"
+ ;;
+ *)
+ TARGET_DEVICE_ARGS="--target-device mac"
+ ;;
+esac
+
+install_resource()
+{
+ if [[ "$1" = /* ]] ; then
+ RESOURCE_PATH="$1"
+ else
+ RESOURCE_PATH="${PODS_ROOT}/$1"
+ fi
+ if [[ ! -e "$RESOURCE_PATH" ]] ; then
+ cat << EOM
+error: Resource "$RESOURCE_PATH" not found. Run 'pod install' to update the copy resources script.
+EOM
+ exit 1
+ fi
+ case $RESOURCE_PATH in
+ *.storyboard)
+ echo "ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .storyboard`.storyboardc $RESOURCE_PATH --sdk ${SDKROOT} ${TARGET_DEVICE_ARGS}" || true
+ ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .storyboard`.storyboardc" "$RESOURCE_PATH" --sdk "${SDKROOT}" ${TARGET_DEVICE_ARGS}
+ ;;
+ *.xib)
+ echo "ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib $RESOURCE_PATH --sdk ${SDKROOT} ${TARGET_DEVICE_ARGS}" || true
+ ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib" "$RESOURCE_PATH" --sdk "${SDKROOT}" ${TARGET_DEVICE_ARGS}
+ ;;
+ *.framework)
+ echo "mkdir -p ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" || true
+ mkdir -p "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
+ echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" $RESOURCE_PATH ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" || true
+ rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
+ ;;
+ *.xcdatamodel)
+ echo "xcrun momc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH"`.mom\"" || true
+ xcrun momc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodel`.mom"
+ ;;
+ *.xcdatamodeld)
+ echo "xcrun momc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodeld`.momd\"" || true
+ xcrun momc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodeld`.momd"
+ ;;
+ *.xcmappingmodel)
+ echo "xcrun mapc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcmappingmodel`.cdm\"" || true
+ xcrun mapc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcmappingmodel`.cdm"
+ ;;
+ *.xcassets)
+ ABSOLUTE_XCASSET_FILE="$RESOURCE_PATH"
+ XCASSET_FILES+=("$ABSOLUTE_XCASSET_FILE")
+ ;;
+ *)
+ echo "$RESOURCE_PATH" || true
+ echo "$RESOURCE_PATH" >> "$RESOURCES_TO_COPY"
+ ;;
+ esac
+}
+
+mkdir -p "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}"
+rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from="$RESOURCES_TO_COPY" / "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}"
+if [[ "${ACTION}" == "install" ]] && [[ "${SKIP_INSTALL}" == "NO" ]]; then
+ mkdir -p "${INSTALL_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}"
+ rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from="$RESOURCES_TO_COPY" / "${INSTALL_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}"
+fi
+rm -f "$RESOURCES_TO_COPY"
+
+if [[ -n "${WRAPPER_EXTENSION}" ]] && [ "`xcrun --find actool`" ] && [ -n "${XCASSET_FILES:-}" ]
+then
+ # Find all other xcassets (this unfortunately includes those of path pods and other targets).
+ OTHER_XCASSETS=$(find "$PWD" -iname "*.xcassets" -type d)
+ while read line; do
+ if [[ $line != "${PODS_ROOT}*" ]]; then
+ XCASSET_FILES+=("$line")
+ fi
+ done <<<"$OTHER_XCASSETS"
+
+ if [ -z ${ASSETCATALOG_COMPILER_APPICON_NAME+x} ]; then
+ printf "%s\0" "${XCASSET_FILES[@]}" | xargs -0 xcrun actool --output-format human-readable-text --notices --warnings --platform "${PLATFORM_NAME}" --minimum-deployment-target "${!DEPLOYMENT_TARGET_SETTING_NAME}" ${TARGET_DEVICE_ARGS} --compress-pngs --compile "${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}"
+ else
+ printf "%s\0" "${XCASSET_FILES[@]}" | xargs -0 xcrun actool --output-format human-readable-text --notices --warnings --platform "${PLATFORM_NAME}" --minimum-deployment-target "${!DEPLOYMENT_TARGET_SETTING_NAME}" ${TARGET_DEVICE_ARGS} --compress-pngs --compile "${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" --app-icon "${ASSETCATALOG_COMPILER_APPICON_NAME}" --output-partial-info-plist "${TARGET_TEMP_DIR}/assetcatalog_generated_info_cocoapods.plist"
+ fi
+fi
diff --git a/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClientTests/Pods-SwaggerClientTests-umbrella.h b/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClientTests/Pods-SwaggerClientTests-umbrella.h
new file mode 100644
index 000000000000..b2e4925a9e41
--- /dev/null
+++ b/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClientTests/Pods-SwaggerClientTests-umbrella.h
@@ -0,0 +1,16 @@
+#ifdef __OBJC__
+#import
+#else
+#ifndef FOUNDATION_EXPORT
+#if defined(__cplusplus)
+#define FOUNDATION_EXPORT extern "C"
+#else
+#define FOUNDATION_EXPORT extern
+#endif
+#endif
+#endif
+
+
+FOUNDATION_EXPORT double Pods_SwaggerClientTestsVersionNumber;
+FOUNDATION_EXPORT const unsigned char Pods_SwaggerClientTestsVersionString[];
+
diff --git a/samples/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClientTests/Pods-SwaggerClientTests.debug.xcconfig b/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClientTests/Pods-SwaggerClientTests.debug.xcconfig
similarity index 100%
rename from samples/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClientTests/Pods-SwaggerClientTests.debug.xcconfig
rename to CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClientTests/Pods-SwaggerClientTests.debug.xcconfig
diff --git a/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClientTests/Pods-SwaggerClientTests.modulemap b/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClientTests/Pods-SwaggerClientTests.modulemap
new file mode 100644
index 000000000000..a848da7ffb30
--- /dev/null
+++ b/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClientTests/Pods-SwaggerClientTests.modulemap
@@ -0,0 +1,6 @@
+framework module Pods_SwaggerClientTests {
+ umbrella header "Pods-SwaggerClientTests-umbrella.h"
+
+ export *
+ module * { export * }
+}
diff --git a/samples/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClientTests/Pods-SwaggerClientTests.release.xcconfig b/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClientTests/Pods-SwaggerClientTests.release.xcconfig
similarity index 100%
rename from samples/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClientTests/Pods-SwaggerClientTests.release.xcconfig
rename to CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClientTests/Pods-SwaggerClientTests.release.xcconfig
diff --git a/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Target Support Files/PromiseKit/Info.plist b/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Target Support Files/PromiseKit/Info.plist
new file mode 100644
index 000000000000..df276491a16e
--- /dev/null
+++ b/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Target Support Files/PromiseKit/Info.plist
@@ -0,0 +1,26 @@
+
+
+
+
+ CFBundleDevelopmentRegion
+ en
+ CFBundleExecutable
+ ${EXECUTABLE_NAME}
+ CFBundleIdentifier
+ ${PRODUCT_BUNDLE_IDENTIFIER}
+ CFBundleInfoDictionaryVersion
+ 6.0
+ CFBundleName
+ ${PRODUCT_NAME}
+ CFBundlePackageType
+ FMWK
+ CFBundleShortVersionString
+ 4.4.0
+ CFBundleSignature
+ ????
+ CFBundleVersion
+ ${CURRENT_PROJECT_VERSION}
+ NSPrincipalClass
+
+
+
diff --git a/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Target Support Files/PromiseKit/PromiseKit-dummy.m b/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Target Support Files/PromiseKit/PromiseKit-dummy.m
new file mode 100644
index 000000000000..ce92451305bc
--- /dev/null
+++ b/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Target Support Files/PromiseKit/PromiseKit-dummy.m
@@ -0,0 +1,5 @@
+#import
+@interface PodsDummy_PromiseKit : NSObject
+@end
+@implementation PodsDummy_PromiseKit
+@end
diff --git a/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Target Support Files/PromiseKit/PromiseKit-prefix.pch b/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Target Support Files/PromiseKit/PromiseKit-prefix.pch
new file mode 100644
index 000000000000..beb2a2441835
--- /dev/null
+++ b/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Target Support Files/PromiseKit/PromiseKit-prefix.pch
@@ -0,0 +1,12 @@
+#ifdef __OBJC__
+#import
+#else
+#ifndef FOUNDATION_EXPORT
+#if defined(__cplusplus)
+#define FOUNDATION_EXPORT extern "C"
+#else
+#define FOUNDATION_EXPORT extern
+#endif
+#endif
+#endif
+
diff --git a/samples/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Target Support Files/PromiseKit/PromiseKit-umbrella.h b/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Target Support Files/PromiseKit/PromiseKit-umbrella.h
similarity index 100%
rename from samples/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Target Support Files/PromiseKit/PromiseKit-umbrella.h
rename to CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Target Support Files/PromiseKit/PromiseKit-umbrella.h
diff --git a/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Target Support Files/PromiseKit/PromiseKit.modulemap b/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Target Support Files/PromiseKit/PromiseKit.modulemap
new file mode 100644
index 000000000000..2b26033e4ab5
--- /dev/null
+++ b/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Target Support Files/PromiseKit/PromiseKit.modulemap
@@ -0,0 +1,6 @@
+framework module PromiseKit {
+ umbrella header "PromiseKit-umbrella.h"
+
+ export *
+ module * { export * }
+}
diff --git a/samples/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Target Support Files/PromiseKit/PromiseKit.xcconfig b/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Target Support Files/PromiseKit/PromiseKit.xcconfig
similarity index 100%
rename from samples/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Target Support Files/PromiseKit/PromiseKit.xcconfig
rename to CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/Pods/Target Support Files/PromiseKit/PromiseKit.xcconfig
diff --git a/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/SwaggerClient.xcodeproj/project.pbxproj b/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/SwaggerClient.xcodeproj/project.pbxproj
new file mode 100644
index 000000000000..fafcbb55afc4
--- /dev/null
+++ b/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/SwaggerClient.xcodeproj/project.pbxproj
@@ -0,0 +1,528 @@
+// !$*UTF8*$!
+{
+ archiveVersion = 1;
+ classes = {
+ };
+ objectVersion = 46;
+ objects = {
+
+/* Begin PBXBuildFile section */
+ 54DA06C1D70D78EC0EC72B61 /* Pods_SwaggerClientTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F65B6638217EDDC99D103B16 /* Pods_SwaggerClientTests.framework */; };
+ 6D4EFB951C692C6300B96B06 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6D4EFB941C692C6300B96B06 /* AppDelegate.swift */; };
+ 6D4EFB971C692C6300B96B06 /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6D4EFB961C692C6300B96B06 /* ViewController.swift */; };
+ 6D4EFB9A1C692C6300B96B06 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 6D4EFB981C692C6300B96B06 /* Main.storyboard */; };
+ 6D4EFB9C1C692C6300B96B06 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 6D4EFB9B1C692C6300B96B06 /* Assets.xcassets */; };
+ 6D4EFB9F1C692C6300B96B06 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 6D4EFB9D1C692C6300B96B06 /* LaunchScreen.storyboard */; };
+ 6D4EFBB51C693BE200B96B06 /* PetAPITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6D4EFBB41C693BE200B96B06 /* PetAPITests.swift */; };
+ 6D4EFBB71C693BED00B96B06 /* StoreAPITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6D4EFBB61C693BED00B96B06 /* StoreAPITests.swift */; };
+ 6D4EFBB91C693BFC00B96B06 /* UserAPITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6D4EFBB81C693BFC00B96B06 /* UserAPITests.swift */; };
+ 751C65B82F596107A3DC8ED9 /* Pods_SwaggerClient.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8F60AECFF321A25553B6A5B0 /* Pods_SwaggerClient.framework */; };
+/* End PBXBuildFile section */
+
+/* Begin PBXContainerItemProxy section */
+ 6D4EFBA61C692C6300B96B06 /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = 6D4EFB891C692C6300B96B06 /* Project object */;
+ proxyType = 1;
+ remoteGlobalIDString = 6D4EFB901C692C6300B96B06;
+ remoteInfo = SwaggerClient;
+ };
+/* End PBXContainerItemProxy section */
+
+/* Begin PBXFileReference section */
+ 289E8A9E9C0BB66AD190C7C6 /* Pods-SwaggerClientTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-SwaggerClientTests.debug.xcconfig"; path = "Pods/Target Support Files/Pods-SwaggerClientTests/Pods-SwaggerClientTests.debug.xcconfig"; sourceTree = ""; };
+ 6D4EFB911C692C6300B96B06 /* SwaggerClient.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = SwaggerClient.app; sourceTree = BUILT_PRODUCTS_DIR; };
+ 6D4EFB941C692C6300B96B06 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; };
+ 6D4EFB961C692C6300B96B06 /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = ""; };
+ 6D4EFB991C692C6300B96B06 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; };
+ 6D4EFB9B1C692C6300B96B06 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; };
+ 6D4EFB9E1C692C6300B96B06 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; };
+ 6D4EFBA01C692C6300B96B06 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
+ 6D4EFBA51C692C6300B96B06 /* SwaggerClientTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = SwaggerClientTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
+ 6D4EFBAB1C692C6300B96B06 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
+ 6D4EFBB41C693BE200B96B06 /* PetAPITests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PetAPITests.swift; sourceTree = ""; };
+ 6D4EFBB61C693BED00B96B06 /* StoreAPITests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = StoreAPITests.swift; sourceTree = ""; };
+ 6D4EFBB81C693BFC00B96B06 /* UserAPITests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UserAPITests.swift; sourceTree = ""; };
+ 8F60AECFF321A25553B6A5B0 /* Pods_SwaggerClient.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_SwaggerClient.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ A638467ACFB30852DEA51F7A /* Pods-SwaggerClient.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-SwaggerClient.debug.xcconfig"; path = "Pods/Target Support Files/Pods-SwaggerClient/Pods-SwaggerClient.debug.xcconfig"; sourceTree = ""; };
+ B4B2BEC2ECA535C616F2F3FE /* Pods-SwaggerClientTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-SwaggerClientTests.release.xcconfig"; path = "Pods/Target Support Files/Pods-SwaggerClientTests/Pods-SwaggerClientTests.release.xcconfig"; sourceTree = ""; };
+ C07EC0A94AA0F86D60668B32 /* Pods.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ F65B6638217EDDC99D103B16 /* Pods_SwaggerClientTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_SwaggerClientTests.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ FC60BDC7328C2AA916F25840 /* Pods-SwaggerClient.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-SwaggerClient.release.xcconfig"; path = "Pods/Target Support Files/Pods-SwaggerClient/Pods-SwaggerClient.release.xcconfig"; sourceTree = ""; };
+/* End PBXFileReference section */
+
+/* Begin PBXFrameworksBuildPhase section */
+ 6D4EFB8E1C692C6300B96B06 /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 751C65B82F596107A3DC8ED9 /* Pods_SwaggerClient.framework in Frameworks */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ 6D4EFBA21C692C6300B96B06 /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 54DA06C1D70D78EC0EC72B61 /* Pods_SwaggerClientTests.framework in Frameworks */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXFrameworksBuildPhase section */
+
+/* Begin PBXGroup section */
+ 0CAA98BEFA303B94D3664C7D /* Pods */ = {
+ isa = PBXGroup;
+ children = (
+ A638467ACFB30852DEA51F7A /* Pods-SwaggerClient.debug.xcconfig */,
+ FC60BDC7328C2AA916F25840 /* Pods-SwaggerClient.release.xcconfig */,
+ 289E8A9E9C0BB66AD190C7C6 /* Pods-SwaggerClientTests.debug.xcconfig */,
+ B4B2BEC2ECA535C616F2F3FE /* Pods-SwaggerClientTests.release.xcconfig */,
+ );
+ name = Pods;
+ sourceTree = "";
+ };
+ 3FABC56EC0BA84CBF4F99564 /* Frameworks */ = {
+ isa = PBXGroup;
+ children = (
+ C07EC0A94AA0F86D60668B32 /* Pods.framework */,
+ 8F60AECFF321A25553B6A5B0 /* Pods_SwaggerClient.framework */,
+ F65B6638217EDDC99D103B16 /* Pods_SwaggerClientTests.framework */,
+ );
+ name = Frameworks;
+ sourceTree = "";
+ };
+ 6D4EFB881C692C6300B96B06 = {
+ isa = PBXGroup;
+ children = (
+ 6D4EFB931C692C6300B96B06 /* SwaggerClient */,
+ 6D4EFBA81C692C6300B96B06 /* SwaggerClientTests */,
+ 6D4EFB921C692C6300B96B06 /* Products */,
+ 3FABC56EC0BA84CBF4F99564 /* Frameworks */,
+ 0CAA98BEFA303B94D3664C7D /* Pods */,
+ );
+ sourceTree = "";
+ };
+ 6D4EFB921C692C6300B96B06 /* Products */ = {
+ isa = PBXGroup;
+ children = (
+ 6D4EFB911C692C6300B96B06 /* SwaggerClient.app */,
+ 6D4EFBA51C692C6300B96B06 /* SwaggerClientTests.xctest */,
+ );
+ name = Products;
+ sourceTree = "";
+ };
+ 6D4EFB931C692C6300B96B06 /* SwaggerClient */ = {
+ isa = PBXGroup;
+ children = (
+ 6D4EFB941C692C6300B96B06 /* AppDelegate.swift */,
+ 6D4EFB961C692C6300B96B06 /* ViewController.swift */,
+ 6D4EFB981C692C6300B96B06 /* Main.storyboard */,
+ 6D4EFB9B1C692C6300B96B06 /* Assets.xcassets */,
+ 6D4EFB9D1C692C6300B96B06 /* LaunchScreen.storyboard */,
+ 6D4EFBA01C692C6300B96B06 /* Info.plist */,
+ );
+ path = SwaggerClient;
+ sourceTree = "";
+ };
+ 6D4EFBA81C692C6300B96B06 /* SwaggerClientTests */ = {
+ isa = PBXGroup;
+ children = (
+ 6D4EFBAB1C692C6300B96B06 /* Info.plist */,
+ 6D4EFBB41C693BE200B96B06 /* PetAPITests.swift */,
+ 6D4EFBB61C693BED00B96B06 /* StoreAPITests.swift */,
+ 6D4EFBB81C693BFC00B96B06 /* UserAPITests.swift */,
+ );
+ path = SwaggerClientTests;
+ sourceTree = "";
+ };
+/* End PBXGroup section */
+
+/* Begin PBXNativeTarget section */
+ 6D4EFB901C692C6300B96B06 /* SwaggerClient */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = 6D4EFBAE1C692C6300B96B06 /* Build configuration list for PBXNativeTarget "SwaggerClient" */;
+ buildPhases = (
+ 1F03F780DC2D9727E5E64BA9 /* [CP] Check Pods Manifest.lock */,
+ 6D4EFB8D1C692C6300B96B06 /* Sources */,
+ 6D4EFB8E1C692C6300B96B06 /* Frameworks */,
+ 6D4EFB8F1C692C6300B96B06 /* Resources */,
+ 4485A75250058E2D5BBDF63F /* [CP] Embed Pods Frameworks */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ );
+ name = SwaggerClient;
+ productName = SwaggerClient;
+ productReference = 6D4EFB911C692C6300B96B06 /* SwaggerClient.app */;
+ productType = "com.apple.product-type.application";
+ };
+ 6D4EFBA41C692C6300B96B06 /* SwaggerClientTests */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = 6D4EFBB11C692C6300B96B06 /* Build configuration list for PBXNativeTarget "SwaggerClientTests" */;
+ buildPhases = (
+ 79FE27B09B2DD354C831BD49 /* [CP] Check Pods Manifest.lock */,
+ 6D4EFBA11C692C6300B96B06 /* Sources */,
+ 6D4EFBA21C692C6300B96B06 /* Frameworks */,
+ 6D4EFBA31C692C6300B96B06 /* Resources */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ 6D4EFBA71C692C6300B96B06 /* PBXTargetDependency */,
+ );
+ name = SwaggerClientTests;
+ productName = SwaggerClientTests;
+ productReference = 6D4EFBA51C692C6300B96B06 /* SwaggerClientTests.xctest */;
+ productType = "com.apple.product-type.bundle.unit-test";
+ };
+/* End PBXNativeTarget section */
+
+/* Begin PBXProject section */
+ 6D4EFB891C692C6300B96B06 /* Project object */ = {
+ isa = PBXProject;
+ attributes = {
+ LastSwiftUpdateCheck = 0720;
+ LastUpgradeCheck = 0800;
+ ORGANIZATIONNAME = Swagger;
+ TargetAttributes = {
+ 6D4EFB901C692C6300B96B06 = {
+ CreatedOnToolsVersion = 7.2.1;
+ LastSwiftMigration = 0800;
+ };
+ 6D4EFBA41C692C6300B96B06 = {
+ CreatedOnToolsVersion = 7.2.1;
+ LastSwiftMigration = 0800;
+ TestTargetID = 6D4EFB901C692C6300B96B06;
+ };
+ };
+ };
+ buildConfigurationList = 6D4EFB8C1C692C6300B96B06 /* Build configuration list for PBXProject "SwaggerClient" */;
+ compatibilityVersion = "Xcode 3.2";
+ developmentRegion = English;
+ hasScannedForEncodings = 0;
+ knownRegions = (
+ en,
+ Base,
+ );
+ mainGroup = 6D4EFB881C692C6300B96B06;
+ productRefGroup = 6D4EFB921C692C6300B96B06 /* Products */;
+ projectDirPath = "";
+ projectRoot = "";
+ targets = (
+ 6D4EFB901C692C6300B96B06 /* SwaggerClient */,
+ 6D4EFBA41C692C6300B96B06 /* SwaggerClientTests */,
+ );
+ };
+/* End PBXProject section */
+
+/* Begin PBXResourcesBuildPhase section */
+ 6D4EFB8F1C692C6300B96B06 /* Resources */ = {
+ isa = PBXResourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 6D4EFB9F1C692C6300B96B06 /* LaunchScreen.storyboard in Resources */,
+ 6D4EFB9C1C692C6300B96B06 /* Assets.xcassets in Resources */,
+ 6D4EFB9A1C692C6300B96B06 /* Main.storyboard in Resources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ 6D4EFBA31C692C6300B96B06 /* Resources */ = {
+ isa = PBXResourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXResourcesBuildPhase section */
+
+/* Begin PBXShellScriptBuildPhase section */
+ 1F03F780DC2D9727E5E64BA9 /* [CP] Check Pods Manifest.lock */ = {
+ isa = PBXShellScriptBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ inputPaths = (
+ "${PODS_PODFILE_DIR_PATH}/Podfile.lock",
+ "${PODS_ROOT}/Manifest.lock",
+ );
+ name = "[CP] Check Pods Manifest.lock";
+ outputPaths = (
+ "$(DERIVED_FILE_DIR)/Pods-SwaggerClient-checkManifestLockResult.txt",
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ shellPath = /bin/sh;
+ shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
+ showEnvVarsInLog = 0;
+ };
+ 4485A75250058E2D5BBDF63F /* [CP] Embed Pods Frameworks */ = {
+ isa = PBXShellScriptBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ inputPaths = (
+ "${SRCROOT}/Pods/Target Support Files/Pods-SwaggerClient/Pods-SwaggerClient-frameworks.sh",
+ "${BUILT_PRODUCTS_DIR}/Alamofire/Alamofire.framework",
+ "${BUILT_PRODUCTS_DIR}/PetstoreClient/PetstoreClient.framework",
+ "${BUILT_PRODUCTS_DIR}/PromiseKit/PromiseKit.framework",
+ );
+ name = "[CP] Embed Pods Frameworks";
+ outputPaths = (
+ "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Alamofire.framework",
+ "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/PetstoreClient.framework",
+ "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/PromiseKit.framework",
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ shellPath = /bin/sh;
+ shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-SwaggerClient/Pods-SwaggerClient-frameworks.sh\"\n";
+ showEnvVarsInLog = 0;
+ };
+ 79FE27B09B2DD354C831BD49 /* [CP] Check Pods Manifest.lock */ = {
+ isa = PBXShellScriptBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ inputPaths = (
+ "${PODS_PODFILE_DIR_PATH}/Podfile.lock",
+ "${PODS_ROOT}/Manifest.lock",
+ );
+ name = "[CP] Check Pods Manifest.lock";
+ outputPaths = (
+ "$(DERIVED_FILE_DIR)/Pods-SwaggerClientTests-checkManifestLockResult.txt",
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ shellPath = /bin/sh;
+ shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
+ showEnvVarsInLog = 0;
+ };
+/* End PBXShellScriptBuildPhase section */
+
+/* Begin PBXSourcesBuildPhase section */
+ 6D4EFB8D1C692C6300B96B06 /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 6D4EFB971C692C6300B96B06 /* ViewController.swift in Sources */,
+ 6D4EFB951C692C6300B96B06 /* AppDelegate.swift in Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ 6D4EFBA11C692C6300B96B06 /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 6D4EFBB71C693BED00B96B06 /* StoreAPITests.swift in Sources */,
+ 6D4EFBB91C693BFC00B96B06 /* UserAPITests.swift in Sources */,
+ 6D4EFBB51C693BE200B96B06 /* PetAPITests.swift in Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXSourcesBuildPhase section */
+
+/* Begin PBXTargetDependency section */
+ 6D4EFBA71C692C6300B96B06 /* PBXTargetDependency */ = {
+ isa = PBXTargetDependency;
+ target = 6D4EFB901C692C6300B96B06 /* SwaggerClient */;
+ targetProxy = 6D4EFBA61C692C6300B96B06 /* PBXContainerItemProxy */;
+ };
+/* End PBXTargetDependency section */
+
+/* Begin PBXVariantGroup section */
+ 6D4EFB981C692C6300B96B06 /* Main.storyboard */ = {
+ isa = PBXVariantGroup;
+ children = (
+ 6D4EFB991C692C6300B96B06 /* Base */,
+ );
+ name = Main.storyboard;
+ sourceTree = "";
+ };
+ 6D4EFB9D1C692C6300B96B06 /* LaunchScreen.storyboard */ = {
+ isa = PBXVariantGroup;
+ children = (
+ 6D4EFB9E1C692C6300B96B06 /* Base */,
+ );
+ name = LaunchScreen.storyboard;
+ sourceTree = "";
+ };
+/* End PBXVariantGroup section */
+
+/* Begin XCBuildConfiguration section */
+ 6D4EFBAC1C692C6300B96B06 /* Debug */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ALWAYS_SEARCH_USER_PATHS = NO;
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
+ CLANG_CXX_LIBRARY = "libc++";
+ CLANG_ENABLE_MODULES = YES;
+ CLANG_ENABLE_OBJC_ARC = YES;
+ CLANG_WARN_BOOL_CONVERSION = YES;
+ CLANG_WARN_CONSTANT_CONVERSION = YES;
+ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+ CLANG_WARN_EMPTY_BODY = YES;
+ CLANG_WARN_ENUM_CONVERSION = YES;
+ CLANG_WARN_INFINITE_RECURSION = YES;
+ CLANG_WARN_INT_CONVERSION = YES;
+ CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+ CLANG_WARN_SUSPICIOUS_MOVE = YES;
+ CLANG_WARN_UNREACHABLE_CODE = YES;
+ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
+ COPY_PHASE_STRIP = NO;
+ DEBUG_INFORMATION_FORMAT = dwarf;
+ ENABLE_STRICT_OBJC_MSGSEND = YES;
+ ENABLE_TESTABILITY = YES;
+ GCC_C_LANGUAGE_STANDARD = gnu99;
+ GCC_DYNAMIC_NO_PIC = NO;
+ GCC_NO_COMMON_BLOCKS = YES;
+ GCC_OPTIMIZATION_LEVEL = 0;
+ GCC_PREPROCESSOR_DEFINITIONS = (
+ "DEBUG=1",
+ "$(inherited)",
+ );
+ GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+ GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+ GCC_WARN_UNDECLARED_SELECTOR = YES;
+ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+ GCC_WARN_UNUSED_FUNCTION = YES;
+ GCC_WARN_UNUSED_VARIABLE = YES;
+ IPHONEOS_DEPLOYMENT_TARGET = 9.2;
+ MTL_ENABLE_DEBUG_INFO = YES;
+ ONLY_ACTIVE_ARCH = YES;
+ SDKROOT = iphoneos;
+ SWIFT_OPTIMIZATION_LEVEL = "-Onone";
+ TARGETED_DEVICE_FAMILY = "1,2";
+ };
+ name = Debug;
+ };
+ 6D4EFBAD1C692C6300B96B06 /* Release */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ALWAYS_SEARCH_USER_PATHS = NO;
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
+ CLANG_CXX_LIBRARY = "libc++";
+ CLANG_ENABLE_MODULES = YES;
+ CLANG_ENABLE_OBJC_ARC = YES;
+ CLANG_WARN_BOOL_CONVERSION = YES;
+ CLANG_WARN_CONSTANT_CONVERSION = YES;
+ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+ CLANG_WARN_EMPTY_BODY = YES;
+ CLANG_WARN_ENUM_CONVERSION = YES;
+ CLANG_WARN_INFINITE_RECURSION = YES;
+ CLANG_WARN_INT_CONVERSION = YES;
+ CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+ CLANG_WARN_SUSPICIOUS_MOVE = YES;
+ CLANG_WARN_UNREACHABLE_CODE = YES;
+ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
+ COPY_PHASE_STRIP = NO;
+ DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
+ ENABLE_NS_ASSERTIONS = NO;
+ ENABLE_STRICT_OBJC_MSGSEND = YES;
+ GCC_C_LANGUAGE_STANDARD = gnu99;
+ GCC_NO_COMMON_BLOCKS = YES;
+ GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+ GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+ GCC_WARN_UNDECLARED_SELECTOR = YES;
+ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+ GCC_WARN_UNUSED_FUNCTION = YES;
+ GCC_WARN_UNUSED_VARIABLE = YES;
+ IPHONEOS_DEPLOYMENT_TARGET = 9.2;
+ MTL_ENABLE_DEBUG_INFO = NO;
+ SDKROOT = iphoneos;
+ SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule";
+ TARGETED_DEVICE_FAMILY = "1,2";
+ VALIDATE_PRODUCT = YES;
+ };
+ name = Release;
+ };
+ 6D4EFBAF1C692C6300B96B06 /* Debug */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = A638467ACFB30852DEA51F7A /* Pods-SwaggerClient.debug.xcconfig */;
+ buildSettings = {
+ ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
+ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+ INFOPLIST_FILE = SwaggerClient/Info.plist;
+ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
+ PRODUCT_BUNDLE_IDENTIFIER = com.swagger.SwaggerClient;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ SWIFT_VERSION = 3.0;
+ };
+ name = Debug;
+ };
+ 6D4EFBB01C692C6300B96B06 /* Release */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = FC60BDC7328C2AA916F25840 /* Pods-SwaggerClient.release.xcconfig */;
+ buildSettings = {
+ ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
+ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+ INFOPLIST_FILE = SwaggerClient/Info.plist;
+ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
+ PRODUCT_BUNDLE_IDENTIFIER = com.swagger.SwaggerClient;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ SWIFT_VERSION = 3.0;
+ };
+ name = Release;
+ };
+ 6D4EFBB21C692C6300B96B06 /* Debug */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = 289E8A9E9C0BB66AD190C7C6 /* Pods-SwaggerClientTests.debug.xcconfig */;
+ buildSettings = {
+ BUNDLE_LOADER = "$(TEST_HOST)";
+ INFOPLIST_FILE = SwaggerClientTests/Info.plist;
+ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
+ PRODUCT_BUNDLE_IDENTIFIER = com.swagger.SwaggerClientTests;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ SWIFT_VERSION = 3.0;
+ TEST_HOST = "$(BUILT_PRODUCTS_DIR)/SwaggerClient.app/SwaggerClient";
+ };
+ name = Debug;
+ };
+ 6D4EFBB31C692C6300B96B06 /* Release */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = B4B2BEC2ECA535C616F2F3FE /* Pods-SwaggerClientTests.release.xcconfig */;
+ buildSettings = {
+ BUNDLE_LOADER = "$(TEST_HOST)";
+ INFOPLIST_FILE = SwaggerClientTests/Info.plist;
+ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
+ PRODUCT_BUNDLE_IDENTIFIER = com.swagger.SwaggerClientTests;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ SWIFT_VERSION = 3.0;
+ TEST_HOST = "$(BUILT_PRODUCTS_DIR)/SwaggerClient.app/SwaggerClient";
+ };
+ name = Release;
+ };
+/* End XCBuildConfiguration section */
+
+/* Begin XCConfigurationList section */
+ 6D4EFB8C1C692C6300B96B06 /* Build configuration list for PBXProject "SwaggerClient" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ 6D4EFBAC1C692C6300B96B06 /* Debug */,
+ 6D4EFBAD1C692C6300B96B06 /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+ 6D4EFBAE1C692C6300B96B06 /* Build configuration list for PBXNativeTarget "SwaggerClient" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ 6D4EFBAF1C692C6300B96B06 /* Debug */,
+ 6D4EFBB01C692C6300B96B06 /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+ 6D4EFBB11C692C6300B96B06 /* Build configuration list for PBXNativeTarget "SwaggerClientTests" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ 6D4EFBB21C692C6300B96B06 /* Debug */,
+ 6D4EFBB31C692C6300B96B06 /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+/* End XCConfigurationList section */
+ };
+ rootObject = 6D4EFB891C692C6300B96B06 /* Project object */;
+}
diff --git a/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/SwaggerClient.xcodeproj/xcshareddata/xcschemes/SwaggerClient.xcscheme b/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/SwaggerClient.xcodeproj/xcshareddata/xcschemes/SwaggerClient.xcscheme
new file mode 100644
index 000000000000..4d00ed5f92e4
--- /dev/null
+++ b/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/SwaggerClient.xcodeproj/xcshareddata/xcschemes/SwaggerClient.xcscheme
@@ -0,0 +1,101 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/SwaggerClient.xcworkspace/contents.xcworkspacedata b/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/SwaggerClient.xcworkspace/contents.xcworkspacedata
new file mode 100644
index 000000000000..9b3fa18954f7
--- /dev/null
+++ b/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/SwaggerClient.xcworkspace/contents.xcworkspacedata
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
diff --git a/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/SwaggerClient/AppDelegate.swift b/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/SwaggerClient/AppDelegate.swift
new file mode 100644
index 000000000000..7fd692961767
--- /dev/null
+++ b/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/SwaggerClient/AppDelegate.swift
@@ -0,0 +1,46 @@
+//
+// AppDelegate.swift
+// SwaggerClient
+//
+// Created by Joseph Zuromski on 2/8/16.
+// Copyright © 2016 Swagger. All rights reserved.
+//
+
+import UIKit
+
+@UIApplicationMain
+class AppDelegate: UIResponder, UIApplicationDelegate {
+
+ var window: UIWindow?
+
+
+ func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
+ // Override point for customization after application launch.
+ return true
+ }
+
+ func applicationWillResignActive(_ application: UIApplication) {
+ // Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state.
+ // Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game.
+ }
+
+ func applicationDidEnterBackground(_ application: UIApplication) {
+ // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later.
+ // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits.
+ }
+
+ func applicationWillEnterForeground(_ application: UIApplication) {
+ // Called as part of the transition from the background to the inactive state; here you can undo many of the changes made on entering the background.
+ }
+
+ func applicationDidBecomeActive(_ application: UIApplication) {
+ // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface.
+ }
+
+ func applicationWillTerminate(_ application: UIApplication) {
+ // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:.
+ }
+
+
+}
+
diff --git a/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/SwaggerClient/Assets.xcassets/AppIcon.appiconset/Contents.json b/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/SwaggerClient/Assets.xcassets/AppIcon.appiconset/Contents.json
new file mode 100644
index 000000000000..1d060ed28827
--- /dev/null
+++ b/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/SwaggerClient/Assets.xcassets/AppIcon.appiconset/Contents.json
@@ -0,0 +1,93 @@
+{
+ "images" : [
+ {
+ "idiom" : "iphone",
+ "size" : "20x20",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "iphone",
+ "size" : "20x20",
+ "scale" : "3x"
+ },
+ {
+ "idiom" : "iphone",
+ "size" : "29x29",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "iphone",
+ "size" : "29x29",
+ "scale" : "3x"
+ },
+ {
+ "idiom" : "iphone",
+ "size" : "40x40",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "iphone",
+ "size" : "40x40",
+ "scale" : "3x"
+ },
+ {
+ "idiom" : "iphone",
+ "size" : "60x60",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "iphone",
+ "size" : "60x60",
+ "scale" : "3x"
+ },
+ {
+ "idiom" : "ipad",
+ "size" : "20x20",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "ipad",
+ "size" : "20x20",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "ipad",
+ "size" : "29x29",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "ipad",
+ "size" : "29x29",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "ipad",
+ "size" : "40x40",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "ipad",
+ "size" : "40x40",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "ipad",
+ "size" : "76x76",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "ipad",
+ "size" : "76x76",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "ipad",
+ "size" : "83.5x83.5",
+ "scale" : "2x"
+ }
+ ],
+ "info" : {
+ "version" : 1,
+ "author" : "xcode"
+ }
+}
\ No newline at end of file
diff --git a/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/SwaggerClient/Base.lproj/LaunchScreen.storyboard b/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/SwaggerClient/Base.lproj/LaunchScreen.storyboard
new file mode 100644
index 000000000000..2e721e1833f0
--- /dev/null
+++ b/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/SwaggerClient/Base.lproj/LaunchScreen.storyboard
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/SwaggerClient/Base.lproj/Main.storyboard b/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/SwaggerClient/Base.lproj/Main.storyboard
new file mode 100644
index 000000000000..3a2a49bad8c6
--- /dev/null
+++ b/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/SwaggerClient/Base.lproj/Main.storyboard
@@ -0,0 +1,25 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/SwaggerClient/Info.plist b/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/SwaggerClient/Info.plist
new file mode 100644
index 000000000000..bb71d00fa8ae
--- /dev/null
+++ b/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/SwaggerClient/Info.plist
@@ -0,0 +1,59 @@
+
+
+
+
+ CFBundleDevelopmentRegion
+ en
+ CFBundleExecutable
+ $(EXECUTABLE_NAME)
+ CFBundleIdentifier
+ $(PRODUCT_BUNDLE_IDENTIFIER)
+ CFBundleInfoDictionaryVersion
+ 6.0
+ CFBundleName
+ $(PRODUCT_NAME)
+ CFBundlePackageType
+ APPL
+ CFBundleShortVersionString
+ 1.0
+ CFBundleSignature
+ ????
+ CFBundleVersion
+ 1
+ LSRequiresIPhoneOS
+
+ UILaunchStoryboardName
+ LaunchScreen
+ UIMainStoryboardFile
+ Main
+ UIRequiredDeviceCapabilities
+
+ armv7
+
+ UISupportedInterfaceOrientations
+
+ UIInterfaceOrientationPortrait
+ UIInterfaceOrientationLandscapeLeft
+ UIInterfaceOrientationLandscapeRight
+
+ UISupportedInterfaceOrientations~ipad
+
+ UIInterfaceOrientationPortrait
+ UIInterfaceOrientationPortraitUpsideDown
+ UIInterfaceOrientationLandscapeLeft
+ UIInterfaceOrientationLandscapeRight
+
+ NSAppTransportSecurity
+
+ NSExceptionDomains
+
+ petstore.swagger.io
+
+
+ NSTemporaryExceptionAllowsInsecureHTTPLoads
+
+
+
+
+
+
diff --git a/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/SwaggerClient/ViewController.swift b/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/SwaggerClient/ViewController.swift
new file mode 100644
index 000000000000..cd7e9a167615
--- /dev/null
+++ b/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/SwaggerClient/ViewController.swift
@@ -0,0 +1,25 @@
+//
+// ViewController.swift
+// SwaggerClient
+//
+// Created by Joseph Zuromski on 2/8/16.
+// Copyright © 2016 Swagger. All rights reserved.
+//
+
+import UIKit
+
+class ViewController: UIViewController {
+
+ override func viewDidLoad() {
+ super.viewDidLoad()
+ // Do any additional setup after loading the view, typically from a nib.
+ }
+
+ override func didReceiveMemoryWarning() {
+ super.didReceiveMemoryWarning()
+ // Dispose of any resources that can be recreated.
+ }
+
+
+}
+
diff --git a/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/SwaggerClientTests/Info.plist b/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/SwaggerClientTests/Info.plist
new file mode 100644
index 000000000000..802f84f540d0
--- /dev/null
+++ b/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/SwaggerClientTests/Info.plist
@@ -0,0 +1,36 @@
+
+
+
+
+ CFBundleDevelopmentRegion
+ en
+ CFBundleExecutable
+ $(EXECUTABLE_NAME)
+ CFBundleIdentifier
+ $(PRODUCT_BUNDLE_IDENTIFIER)
+ CFBundleInfoDictionaryVersion
+ 6.0
+ CFBundleName
+ $(PRODUCT_NAME)
+ CFBundlePackageType
+ BNDL
+ CFBundleShortVersionString
+ 1.0
+ CFBundleSignature
+ ????
+ CFBundleVersion
+ 1
+ NSAppTransportSecurity
+
+ NSExceptionDomains
+
+ petstore.swagger.io
+
+
+ NSTemporaryExceptionAllowsInsecureHTTPLoads
+
+
+
+
+
+
diff --git a/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/SwaggerClientTests/PetAPITests.swift b/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/SwaggerClientTests/PetAPITests.swift
new file mode 100644
index 000000000000..7151720bf4e5
--- /dev/null
+++ b/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/SwaggerClientTests/PetAPITests.swift
@@ -0,0 +1,69 @@
+//
+// PetAPITests.swift
+// SwaggerClient
+//
+// Created by Joseph Zuromski on 2/8/16.
+// Copyright © 2016 Swagger. All rights reserved.
+//
+
+import PetstoreClient
+import PromiseKit
+import XCTest
+@testable import SwaggerClient
+
+class PetAPITests: XCTestCase {
+
+ let testTimeout = 10.0
+
+ override func setUp() {
+ super.setUp()
+ // Put setup code here. This method is called before the invocation of each test method in the class.
+ }
+
+ override func tearDown() {
+ // Put teardown code here. This method is called after the invocation of each test method in the class.
+ super.tearDown()
+ }
+
+ func test1CreatePet() {
+ let expectation = self.expectation(description: "testCreatePet")
+ let newPet = Pet()
+ let category = PetstoreClient.Category()
+ category.id = 1234
+ category.name = "eyeColor"
+ newPet.category = category
+ newPet.id = 1000
+ newPet.name = "Fluffy"
+ newPet.status = .available
+ PetAPI.addPet(body: newPet).then {
+ expectation.fulfill()
+ }.always {
+ // Noop for now
+ }.catch { errorType in
+ XCTFail("error creating pet")
+ }
+ self.waitForExpectations(timeout: testTimeout, handler: nil)
+ }
+
+ func test2GetPet() {
+ let expectation = self.expectation(description: "testGetPet")
+ PetAPI.getPetById(petId: 1000).then { pet -> Void in
+ XCTAssert(pet.id == 1000, "invalid id")
+ XCTAssert(pet.name == "Fluffy", "invalid name")
+ expectation.fulfill()
+ }.always {
+ // Noop for now
+ }.catch { errorType in
+ XCTFail("error creating pet")
+ }
+ self.waitForExpectations(timeout: testTimeout, handler: nil)
+ }
+
+ func test3DeletePet() {
+ let expectation = self.expectation(description: "testDeletePet")
+ PetAPI.deletePet(petId: 1000).then {
+ expectation.fulfill()
+ }
+ self.waitForExpectations(timeout: testTimeout, handler: nil)
+ }
+}
diff --git a/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/SwaggerClientTests/StoreAPITests.swift b/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/SwaggerClientTests/StoreAPITests.swift
new file mode 100644
index 000000000000..6a40c5643786
--- /dev/null
+++ b/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/SwaggerClientTests/StoreAPITests.swift
@@ -0,0 +1,88 @@
+//
+// StoreAPITests.swift
+// SwaggerClient
+//
+// Created by Joseph Zuromski on 2/8/16.
+// Copyright © 2016 Swagger. All rights reserved.
+//
+
+import PetstoreClient
+import PromiseKit
+import XCTest
+@testable import SwaggerClient
+
+class StoreAPITests: XCTestCase {
+
+ let isoDateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSSZZZZZ"
+
+ let testTimeout = 10.0
+
+ func test1PlaceOrder() {
+ let order = Order()
+ let shipDate = Date()
+ order.id = 1000
+ order.petId = 1000
+ order.complete = false
+ order.quantity = 10
+ order.shipDate = shipDate
+ // use explicit naming to reference the enum so that we test we don't regress on enum naming
+ order.status = Order.Status.placed
+ let expectation = self.expectation(description: "testPlaceOrder")
+ StoreAPI.placeOrder(body: order).then { order -> Void in
+ XCTAssert(order.id == 1000, "invalid id")
+ XCTAssert(order.quantity == 10, "invalid quantity")
+ XCTAssert(order.status == .placed, "invalid status")
+ XCTAssert(order.shipDate!.isEqual(shipDate, format: self.isoDateFormat),
+ "Date should be idempotent")
+
+ expectation.fulfill()
+ }.always {
+ // Noop for now
+ }.catch { errorType in
+ XCTFail("error placing order")
+ }
+ self.waitForExpectations(timeout: testTimeout, handler: nil)
+ }
+
+ func test2GetOrder() {
+ let expectation = self.expectation(description: "testGetOrder")
+ StoreAPI.getOrderById(orderId: 1000).then { order -> Void in
+ XCTAssert(order.id == 1000, "invalid id")
+ XCTAssert(order.quantity == 10, "invalid quantity")
+ XCTAssert(order.status == .placed, "invalid status")
+ expectation.fulfill()
+ }.always {
+ // Noop for now
+ }.catch { errorType in
+ XCTFail("error placing order")
+ }
+ self.waitForExpectations(timeout: testTimeout, handler: nil)
+ }
+
+ func test3DeleteOrder() {
+ let expectation = self.expectation(description: "testDeleteOrder")
+ StoreAPI.deleteOrder(orderId: "1000").then {
+ expectation.fulfill()
+ }
+ self.waitForExpectations(timeout: testTimeout, handler: nil)
+ }
+
+}
+
+private extension Date {
+
+ /**
+ Returns true if the dates are equal given the format string.
+
+ - parameter date: The date to compare to.
+ - parameter format: The format string to use to compare.
+
+ - returns: true if the dates are equal, given the format string.
+ */
+ func isEqual(_ date: Date, format: String) -> Bool {
+ let fmt = DateFormatter()
+ fmt.dateFormat = format
+ return fmt.string(from: self).isEqual(fmt.string(from: date))
+ }
+
+}
diff --git a/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/SwaggerClientTests/UserAPITests.swift b/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/SwaggerClientTests/UserAPITests.swift
new file mode 100644
index 000000000000..ec8631589c2d
--- /dev/null
+++ b/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/SwaggerClientTests/UserAPITests.swift
@@ -0,0 +1,115 @@
+//
+// UserAPITests.swift
+// SwaggerClient
+//
+// Created by Joseph Zuromski on 2/8/16.
+// Copyright © 2016 Swagger. All rights reserved.
+//
+
+import PetstoreClient
+import PromiseKit
+import XCTest
+@testable import SwaggerClient
+
+class UserAPITests: XCTestCase {
+
+ let testTimeout = 10.0
+
+ func testLogin() {
+ let expectation = self.expectation(description: "testLogin")
+ UserAPI.loginUser(username: "swiftTester", password: "swift").then { _ -> Void in
+ expectation.fulfill()
+ }
+ self.waitForExpectations(timeout: testTimeout, handler: nil)
+ }
+
+ func testLogout() {
+ let expectation = self.expectation(description: "testLogout")
+ UserAPI.logoutUser().then {
+ expectation.fulfill()
+ }
+ self.waitForExpectations(timeout: testTimeout, handler: nil)
+ }
+
+ func test1CreateUser() {
+ let expectation = self.expectation(description: "testCreateUser")
+ let newUser = User()
+ newUser.email = "test@test.com"
+ newUser.firstName = "Test"
+ newUser.lastName = "Tester"
+ newUser.id = 1000
+ newUser.password = "test!"
+ newUser.phone = "867-5309"
+ newUser.username = "test@test.com"
+ newUser.userStatus = 0
+ UserAPI.createUser(body: newUser).then {
+ expectation.fulfill()
+ }
+ self.waitForExpectations(timeout: testTimeout, handler: nil)
+ }
+
+ func testCreateUserWithArray() {
+ let expectation = self.expectation(description: "testCreateUserWithArray")
+ let newUser = User()
+ newUser.email = "test@test.com"
+ newUser.firstName = "Test"
+ newUser.lastName = "Tester"
+ newUser.id = 1000
+ newUser.password = "test!"
+ newUser.phone = "867-5309"
+ newUser.username = "test@test.com"
+ newUser.userStatus = 0
+
+ let newUser2 = User()
+ newUser2.email = "test2@test.com"
+ newUser2.firstName = "Test2"
+ newUser2.lastName = "Tester2"
+ newUser2.id = 1001
+ newUser2.password = "test2!"
+ newUser2.phone = "867-5302"
+ newUser2.username = "test2@test.com"
+ newUser2.userStatus = 0
+
+ _ = UserAPI.createUsersWithArrayInput(body: [newUser, newUser2]).then {
+ expectation.fulfill()
+ }
+ self.waitForExpectations(timeout: testTimeout, handler: nil)
+ }
+
+ func test2GetUser() {
+ let expectation = self.expectation(description: "testGetUser")
+ UserAPI.getUserByName(username: "test@test.com").then {user -> Void in
+ XCTAssert(user.userStatus == 0, "invalid userStatus")
+ XCTAssert(user.email == "test@test.com", "invalid email")
+ XCTAssert(user.firstName == "Test", "invalid firstName")
+ XCTAssert(user.lastName == "Tester", "invalid lastName")
+ XCTAssert(user.password == "test!", "invalid password")
+ XCTAssert(user.phone == "867-5309", "invalid phone")
+ expectation.fulfill()
+ }.always {
+ // Noop for now
+ }.catch { errorType in
+ XCTFail("error getting user")
+ }
+ self.waitForExpectations(timeout: testTimeout, handler: nil)
+ }
+
+ func test3DeleteUser() {
+ let expectation = self.expectation(description: "testDeleteUser")
+ UserAPI.deleteUser(username: "test@test.com").then {
+ expectation.fulfill()
+ }
+ self.waitForExpectations(timeout: testTimeout, handler: nil)
+ }
+
+ func testPathParamsAreEscaped() {
+ // The path for this operation is /user/{userId}. In order to make a usable path,
+ // then we must make sure that {userId} is percent-escaped when it is substituted
+ // into the path. So we intentionally introduce a path with spaces.
+ let userRequestBuilder = UserAPI.getUserByNameWithRequestBuilder(username: "User Name With Spaces")
+ let urlContainsSpace = userRequestBuilder.URLString.contains(" ")
+
+ XCTAssert(!urlContainsSpace, "Expected URL to be escaped, but it was not.")
+ }
+
+}
diff --git a/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/pom.xml b/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/pom.xml
new file mode 100644
index 000000000000..16941c95284d
--- /dev/null
+++ b/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/pom.xml
@@ -0,0 +1,43 @@
+
+ 4.0.0
+ io.swagger
+ Swift3PromiseKitPetstoreClientTests
+ pom
+ 1.0-SNAPSHOT
+ Swift3 PromiseKit Swagger Petstore Client
+
+
+
+ maven-dependency-plugin
+
+
+ package
+
+ copy-dependencies
+
+
+ ${project.build.directory}
+
+
+
+
+
+ org.codehaus.mojo
+ exec-maven-plugin
+ 1.2.1
+
+
+ xcodebuild-test
+ integration-test
+
+ exec
+
+
+ ./run_xcodebuild.sh
+
+
+
+
+
+
+
diff --git a/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/run_xcodebuild.sh b/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/run_xcodebuild.sh
new file mode 100755
index 000000000000..f1d496086680
--- /dev/null
+++ b/CI/samples.ci/client/petstore/swift3/promisekit/SwaggerClientTests/run_xcodebuild.sh
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+xcodebuild -workspace "SwaggerClient.xcworkspace" -scheme "SwaggerClient" test -destination "platform=iOS Simulator,name=iPhone 6,OS=9.3" | xcpretty && exit ${PIPESTATUS[0]}
diff --git a/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Podfile b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Podfile
new file mode 100644
index 000000000000..77b1f16f2fe6
--- /dev/null
+++ b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Podfile
@@ -0,0 +1,18 @@
+use_frameworks!
+source 'https://github.com/CocoaPods/Specs.git'
+
+target 'SwaggerClient' do
+ pod "PetstoreClient", :path => "../"
+
+ target 'SwaggerClientTests' do
+ inherit! :search_paths
+ end
+end
+
+post_install do |installer|
+ installer.pods_project.targets.each do |target|
+ target.build_configurations.each do |configuration|
+ configuration.build_settings['SWIFT_VERSION'] = "3.0"
+ end
+ end
+end
diff --git a/samples/client/petstore/swift3/rxswift/SwaggerClientTests/Podfile.lock b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Podfile.lock
similarity index 100%
rename from samples/client/petstore/swift3/rxswift/SwaggerClientTests/Podfile.lock
rename to CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Podfile.lock
diff --git a/samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Alamofire/LICENSE b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Alamofire/LICENSE
similarity index 100%
rename from samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Alamofire/LICENSE
rename to CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Alamofire/LICENSE
diff --git a/samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Alamofire/README.md b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Alamofire/README.md
similarity index 100%
rename from samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Alamofire/README.md
rename to CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Alamofire/README.md
diff --git a/samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Alamofire/Source/AFError.swift b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Alamofire/Source/AFError.swift
similarity index 100%
rename from samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Alamofire/Source/AFError.swift
rename to CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Alamofire/Source/AFError.swift
diff --git a/samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Alamofire/Source/Alamofire.swift b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Alamofire/Source/Alamofire.swift
similarity index 100%
rename from samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Alamofire/Source/Alamofire.swift
rename to CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Alamofire/Source/Alamofire.swift
diff --git a/samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Alamofire/Source/DispatchQueue+Alamofire.swift b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Alamofire/Source/DispatchQueue+Alamofire.swift
similarity index 100%
rename from samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Alamofire/Source/DispatchQueue+Alamofire.swift
rename to CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Alamofire/Source/DispatchQueue+Alamofire.swift
diff --git a/samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Alamofire/Source/MultipartFormData.swift b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Alamofire/Source/MultipartFormData.swift
similarity index 100%
rename from samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Alamofire/Source/MultipartFormData.swift
rename to CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Alamofire/Source/MultipartFormData.swift
diff --git a/samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Alamofire/Source/NetworkReachabilityManager.swift b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Alamofire/Source/NetworkReachabilityManager.swift
similarity index 100%
rename from samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Alamofire/Source/NetworkReachabilityManager.swift
rename to CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Alamofire/Source/NetworkReachabilityManager.swift
diff --git a/samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Alamofire/Source/Notifications.swift b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Alamofire/Source/Notifications.swift
similarity index 100%
rename from samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Alamofire/Source/Notifications.swift
rename to CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Alamofire/Source/Notifications.swift
diff --git a/samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Alamofire/Source/ParameterEncoding.swift b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Alamofire/Source/ParameterEncoding.swift
similarity index 100%
rename from samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Alamofire/Source/ParameterEncoding.swift
rename to CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Alamofire/Source/ParameterEncoding.swift
diff --git a/samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Alamofire/Source/Request.swift b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Alamofire/Source/Request.swift
similarity index 100%
rename from samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Alamofire/Source/Request.swift
rename to CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Alamofire/Source/Request.swift
diff --git a/samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Alamofire/Source/Response.swift b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Alamofire/Source/Response.swift
similarity index 100%
rename from samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Alamofire/Source/Response.swift
rename to CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Alamofire/Source/Response.swift
diff --git a/samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Alamofire/Source/ResponseSerialization.swift b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Alamofire/Source/ResponseSerialization.swift
similarity index 100%
rename from samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Alamofire/Source/ResponseSerialization.swift
rename to CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Alamofire/Source/ResponseSerialization.swift
diff --git a/samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Alamofire/Source/Result.swift b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Alamofire/Source/Result.swift
similarity index 100%
rename from samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Alamofire/Source/Result.swift
rename to CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Alamofire/Source/Result.swift
diff --git a/samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Alamofire/Source/ServerTrustPolicy.swift b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Alamofire/Source/ServerTrustPolicy.swift
similarity index 100%
rename from samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Alamofire/Source/ServerTrustPolicy.swift
rename to CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Alamofire/Source/ServerTrustPolicy.swift
diff --git a/samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Alamofire/Source/SessionDelegate.swift b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Alamofire/Source/SessionDelegate.swift
similarity index 100%
rename from samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Alamofire/Source/SessionDelegate.swift
rename to CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Alamofire/Source/SessionDelegate.swift
diff --git a/samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Alamofire/Source/SessionManager.swift b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Alamofire/Source/SessionManager.swift
similarity index 100%
rename from samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Alamofire/Source/SessionManager.swift
rename to CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Alamofire/Source/SessionManager.swift
diff --git a/samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Alamofire/Source/TaskDelegate.swift b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Alamofire/Source/TaskDelegate.swift
similarity index 100%
rename from samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Alamofire/Source/TaskDelegate.swift
rename to CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Alamofire/Source/TaskDelegate.swift
diff --git a/samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Alamofire/Source/Timeline.swift b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Alamofire/Source/Timeline.swift
similarity index 100%
rename from samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Alamofire/Source/Timeline.swift
rename to CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Alamofire/Source/Timeline.swift
diff --git a/samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Alamofire/Source/Validation.swift b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Alamofire/Source/Validation.swift
similarity index 100%
rename from samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Alamofire/Source/Validation.swift
rename to CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Alamofire/Source/Validation.swift
diff --git a/samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Local Podspecs/PetstoreClient.podspec.json b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Local Podspecs/PetstoreClient.podspec.json
similarity index 100%
rename from samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Local Podspecs/PetstoreClient.podspec.json
rename to CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Local Podspecs/PetstoreClient.podspec.json
diff --git a/samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Manifest.lock b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Manifest.lock
similarity index 100%
rename from samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Manifest.lock
rename to CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Manifest.lock
diff --git a/samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Pods.xcodeproj/project.pbxproj b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Pods.xcodeproj/project.pbxproj
similarity index 100%
rename from samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Pods.xcodeproj/project.pbxproj
rename to CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Pods.xcodeproj/project.pbxproj
diff --git a/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/LICENSE.md b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/LICENSE.md
new file mode 100644
index 000000000000..d6765d9c9b9b
--- /dev/null
+++ b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/LICENSE.md
@@ -0,0 +1,9 @@
+**The MIT License**
+**Copyright © 2015 Krunoslav Zaher**
+**All rights reserved.**
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
\ No newline at end of file
diff --git a/samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/Platform/DataStructures/Bag.swift b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/Platform/DataStructures/Bag.swift
similarity index 100%
rename from samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/Platform/DataStructures/Bag.swift
rename to CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/Platform/DataStructures/Bag.swift
diff --git a/samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/Platform/DataStructures/InfiniteSequence.swift b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/Platform/DataStructures/InfiniteSequence.swift
similarity index 100%
rename from samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/Platform/DataStructures/InfiniteSequence.swift
rename to CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/Platform/DataStructures/InfiniteSequence.swift
diff --git a/samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/Platform/DataStructures/PriorityQueue.swift b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/Platform/DataStructures/PriorityQueue.swift
similarity index 100%
rename from samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/Platform/DataStructures/PriorityQueue.swift
rename to CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/Platform/DataStructures/PriorityQueue.swift
diff --git a/samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/Platform/DataStructures/Queue.swift b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/Platform/DataStructures/Queue.swift
similarity index 100%
rename from samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/Platform/DataStructures/Queue.swift
rename to CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/Platform/DataStructures/Queue.swift
diff --git a/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/Platform/DispatchQueue+Extensions.swift b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/Platform/DispatchQueue+Extensions.swift
new file mode 100644
index 000000000000..552314a16909
--- /dev/null
+++ b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/Platform/DispatchQueue+Extensions.swift
@@ -0,0 +1,21 @@
+//
+// DispatchQueue+Extensions.swift
+// Platform
+//
+// Created by Krunoslav Zaher on 10/22/16.
+// Copyright © 2016 Krunoslav Zaher. All rights reserved.
+//
+
+import Dispatch
+
+extension DispatchQueue {
+ private static var token: DispatchSpecificKey<()> = {
+ let key = DispatchSpecificKey<()>()
+ DispatchQueue.main.setSpecific(key: key, value: ())
+ return key
+ }()
+
+ static var isMain: Bool {
+ return DispatchQueue.getSpecific(key: token) != nil
+ }
+}
diff --git a/samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/Platform/Platform.Darwin.swift b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/Platform/Platform.Darwin.swift
similarity index 100%
rename from samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/Platform/Platform.Darwin.swift
rename to CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/Platform/Platform.Darwin.swift
diff --git a/samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/Platform/Platform.Linux.swift b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/Platform/Platform.Linux.swift
similarity index 100%
rename from samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/Platform/Platform.Linux.swift
rename to CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/Platform/Platform.Linux.swift
diff --git a/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/Platform/RecursiveLock.swift b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/Platform/RecursiveLock.swift
new file mode 100644
index 000000000000..c03471d502f4
--- /dev/null
+++ b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/Platform/RecursiveLock.swift
@@ -0,0 +1,34 @@
+//
+// RecursiveLock.swift
+// Platform
+//
+// Created by Krunoslav Zaher on 12/18/16.
+// Copyright © 2016 Krunoslav Zaher. All rights reserved.
+//
+
+import class Foundation.NSRecursiveLock
+
+#if TRACE_RESOURCES
+ class RecursiveLock: NSRecursiveLock {
+ override init() {
+ _ = Resources.incrementTotal()
+ super.init()
+ }
+
+ override func lock() {
+ super.lock()
+ _ = Resources.incrementTotal()
+ }
+
+ override func unlock() {
+ super.unlock()
+ _ = Resources.decrementTotal()
+ }
+
+ deinit {
+ _ = Resources.decrementTotal()
+ }
+ }
+#else
+ typealias RecursiveLock = NSRecursiveLock
+#endif
diff --git a/samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/README.md b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/README.md
similarity index 100%
rename from samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/README.md
rename to CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/README.md
diff --git a/samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/AnyObserver.swift b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/AnyObserver.swift
similarity index 100%
rename from samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/AnyObserver.swift
rename to CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/AnyObserver.swift
diff --git a/samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Cancelable.swift b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Cancelable.swift
similarity index 100%
rename from samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Cancelable.swift
rename to CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Cancelable.swift
diff --git a/samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Concurrency/AsyncLock.swift b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Concurrency/AsyncLock.swift
similarity index 100%
rename from samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Concurrency/AsyncLock.swift
rename to CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Concurrency/AsyncLock.swift
diff --git a/samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Concurrency/Lock.swift b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Concurrency/Lock.swift
similarity index 100%
rename from samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Concurrency/Lock.swift
rename to CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Concurrency/Lock.swift
diff --git a/samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Concurrency/LockOwnerType.swift b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Concurrency/LockOwnerType.swift
similarity index 100%
rename from samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Concurrency/LockOwnerType.swift
rename to CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Concurrency/LockOwnerType.swift
diff --git a/samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Concurrency/SynchronizedDisposeType.swift b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Concurrency/SynchronizedDisposeType.swift
similarity index 100%
rename from samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Concurrency/SynchronizedDisposeType.swift
rename to CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Concurrency/SynchronizedDisposeType.swift
diff --git a/samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Concurrency/SynchronizedOnType.swift b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Concurrency/SynchronizedOnType.swift
similarity index 100%
rename from samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Concurrency/SynchronizedOnType.swift
rename to CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Concurrency/SynchronizedOnType.swift
diff --git a/samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Concurrency/SynchronizedSubscribeType.swift b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Concurrency/SynchronizedSubscribeType.swift
similarity index 100%
rename from samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Concurrency/SynchronizedSubscribeType.swift
rename to CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Concurrency/SynchronizedSubscribeType.swift
diff --git a/samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Concurrency/SynchronizedUnsubscribeType.swift b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Concurrency/SynchronizedUnsubscribeType.swift
similarity index 100%
rename from samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Concurrency/SynchronizedUnsubscribeType.swift
rename to CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Concurrency/SynchronizedUnsubscribeType.swift
diff --git a/samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/ConnectableObservableType.swift b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/ConnectableObservableType.swift
similarity index 100%
rename from samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/ConnectableObservableType.swift
rename to CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/ConnectableObservableType.swift
diff --git a/samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Deprecated.swift b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Deprecated.swift
similarity index 100%
rename from samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Deprecated.swift
rename to CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Deprecated.swift
diff --git a/samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Disposable.swift b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Disposable.swift
similarity index 100%
rename from samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Disposable.swift
rename to CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Disposable.swift
diff --git a/samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Disposables/AnonymousDisposable.swift b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Disposables/AnonymousDisposable.swift
similarity index 100%
rename from samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Disposables/AnonymousDisposable.swift
rename to CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Disposables/AnonymousDisposable.swift
diff --git a/samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Disposables/BinaryDisposable.swift b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Disposables/BinaryDisposable.swift
similarity index 100%
rename from samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Disposables/BinaryDisposable.swift
rename to CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Disposables/BinaryDisposable.swift
diff --git a/samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Disposables/BooleanDisposable.swift b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Disposables/BooleanDisposable.swift
similarity index 100%
rename from samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Disposables/BooleanDisposable.swift
rename to CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Disposables/BooleanDisposable.swift
diff --git a/samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Disposables/CompositeDisposable.swift b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Disposables/CompositeDisposable.swift
similarity index 100%
rename from samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Disposables/CompositeDisposable.swift
rename to CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Disposables/CompositeDisposable.swift
diff --git a/samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Disposables/Disposables.swift b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Disposables/Disposables.swift
similarity index 100%
rename from samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Disposables/Disposables.swift
rename to CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Disposables/Disposables.swift
diff --git a/samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Disposables/DisposeBag.swift b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Disposables/DisposeBag.swift
similarity index 100%
rename from samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Disposables/DisposeBag.swift
rename to CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Disposables/DisposeBag.swift
diff --git a/samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Disposables/DisposeBase.swift b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Disposables/DisposeBase.swift
similarity index 100%
rename from samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Disposables/DisposeBase.swift
rename to CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Disposables/DisposeBase.swift
diff --git a/samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Disposables/NopDisposable.swift b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Disposables/NopDisposable.swift
similarity index 100%
rename from samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Disposables/NopDisposable.swift
rename to CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Disposables/NopDisposable.swift
diff --git a/samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Disposables/RefCountDisposable.swift b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Disposables/RefCountDisposable.swift
similarity index 100%
rename from samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Disposables/RefCountDisposable.swift
rename to CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Disposables/RefCountDisposable.swift
diff --git a/samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Disposables/ScheduledDisposable.swift b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Disposables/ScheduledDisposable.swift
similarity index 100%
rename from samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Disposables/ScheduledDisposable.swift
rename to CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Disposables/ScheduledDisposable.swift
diff --git a/samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Disposables/SerialDisposable.swift b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Disposables/SerialDisposable.swift
similarity index 100%
rename from samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Disposables/SerialDisposable.swift
rename to CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Disposables/SerialDisposable.swift
diff --git a/samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Disposables/SingleAssignmentDisposable.swift b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Disposables/SingleAssignmentDisposable.swift
similarity index 100%
rename from samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Disposables/SingleAssignmentDisposable.swift
rename to CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Disposables/SingleAssignmentDisposable.swift
diff --git a/samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Disposables/SubscriptionDisposable.swift b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Disposables/SubscriptionDisposable.swift
similarity index 100%
rename from samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Disposables/SubscriptionDisposable.swift
rename to CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Disposables/SubscriptionDisposable.swift
diff --git a/samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Errors.swift b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Errors.swift
similarity index 100%
rename from samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Errors.swift
rename to CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Errors.swift
diff --git a/samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Event.swift b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Event.swift
similarity index 100%
rename from samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Event.swift
rename to CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Event.swift
diff --git a/samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Extensions/Bag+Rx.swift b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Extensions/Bag+Rx.swift
similarity index 100%
rename from samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Extensions/Bag+Rx.swift
rename to CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Extensions/Bag+Rx.swift
diff --git a/samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Extensions/String+Rx.swift b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Extensions/String+Rx.swift
similarity index 100%
rename from samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Extensions/String+Rx.swift
rename to CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Extensions/String+Rx.swift
diff --git a/samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/GroupedObservable.swift b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/GroupedObservable.swift
similarity index 100%
rename from samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/GroupedObservable.swift
rename to CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/GroupedObservable.swift
diff --git a/samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/ImmediateSchedulerType.swift b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/ImmediateSchedulerType.swift
similarity index 100%
rename from samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/ImmediateSchedulerType.swift
rename to CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/ImmediateSchedulerType.swift
diff --git a/samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observable.swift b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observable.swift
similarity index 100%
rename from samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observable.swift
rename to CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observable.swift
diff --git a/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/ObservableConvertibleType.swift b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/ObservableConvertibleType.swift
new file mode 100644
index 000000000000..d89c5aa70b9c
--- /dev/null
+++ b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/ObservableConvertibleType.swift
@@ -0,0 +1,18 @@
+//
+// ObservableConvertibleType.swift
+// RxSwift
+//
+// Created by Krunoslav Zaher on 9/17/15.
+// Copyright © 2015 Krunoslav Zaher. All rights reserved.
+//
+
+/// Type that can be converted to observable sequence (`Observable`).
+public protocol ObservableConvertibleType {
+ /// Type of elements in sequence.
+ associatedtype E
+
+ /// Converts `self` to `Observable` sequence.
+ ///
+ /// - returns: Observable sequence that represents `self`.
+ func asObservable() -> Observable
+}
diff --git a/samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/ObservableType+Extensions.swift b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/ObservableType+Extensions.swift
similarity index 100%
rename from samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/ObservableType+Extensions.swift
rename to CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/ObservableType+Extensions.swift
diff --git a/samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/ObservableType.swift b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/ObservableType.swift
similarity index 100%
rename from samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/ObservableType.swift
rename to CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/ObservableType.swift
diff --git a/samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/AddRef.swift b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/AddRef.swift
similarity index 100%
rename from samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/AddRef.swift
rename to CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/AddRef.swift
diff --git a/samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/Amb.swift b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/Amb.swift
similarity index 100%
rename from samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/Amb.swift
rename to CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/Amb.swift
diff --git a/samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/AsMaybe.swift b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/AsMaybe.swift
similarity index 100%
rename from samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/AsMaybe.swift
rename to CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/AsMaybe.swift
diff --git a/samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/AsSingle.swift b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/AsSingle.swift
similarity index 100%
rename from samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/AsSingle.swift
rename to CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/AsSingle.swift
diff --git a/samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/Buffer.swift b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/Buffer.swift
similarity index 100%
rename from samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/Buffer.swift
rename to CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/Buffer.swift
diff --git a/samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/Catch.swift b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/Catch.swift
similarity index 100%
rename from samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/Catch.swift
rename to CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/Catch.swift
diff --git a/samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/CombineLatest+Collection.swift b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/CombineLatest+Collection.swift
similarity index 100%
rename from samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/CombineLatest+Collection.swift
rename to CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/CombineLatest+Collection.swift
diff --git a/samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/CombineLatest+arity.swift b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/CombineLatest+arity.swift
similarity index 100%
rename from samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/CombineLatest+arity.swift
rename to CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/CombineLatest+arity.swift
diff --git a/samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/CombineLatest.swift b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/CombineLatest.swift
similarity index 100%
rename from samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/CombineLatest.swift
rename to CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/CombineLatest.swift
diff --git a/samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/Concat.swift b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/Concat.swift
similarity index 100%
rename from samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/Concat.swift
rename to CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/Concat.swift
diff --git a/samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/Create.swift b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/Create.swift
similarity index 100%
rename from samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/Create.swift
rename to CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/Create.swift
diff --git a/samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/Debounce.swift b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/Debounce.swift
similarity index 100%
rename from samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/Debounce.swift
rename to CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/Debounce.swift
diff --git a/samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/Debug.swift b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/Debug.swift
similarity index 100%
rename from samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/Debug.swift
rename to CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/Debug.swift
diff --git a/samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/DefaultIfEmpty.swift b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/DefaultIfEmpty.swift
similarity index 100%
rename from samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/DefaultIfEmpty.swift
rename to CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/DefaultIfEmpty.swift
diff --git a/samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/Deferred.swift b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/Deferred.swift
similarity index 100%
rename from samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/Deferred.swift
rename to CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/Deferred.swift
diff --git a/samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/Delay.swift b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/Delay.swift
similarity index 100%
rename from samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/Delay.swift
rename to CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/Delay.swift
diff --git a/samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/DelaySubscription.swift b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/DelaySubscription.swift
similarity index 100%
rename from samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/DelaySubscription.swift
rename to CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/DelaySubscription.swift
diff --git a/samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/Dematerialize.swift b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/Dematerialize.swift
similarity index 100%
rename from samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/Dematerialize.swift
rename to CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/Dematerialize.swift
diff --git a/samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/DistinctUntilChanged.swift b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/DistinctUntilChanged.swift
similarity index 100%
rename from samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/DistinctUntilChanged.swift
rename to CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/DistinctUntilChanged.swift
diff --git a/samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/Do.swift b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/Do.swift
similarity index 100%
rename from samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/Do.swift
rename to CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/Do.swift
diff --git a/samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/ElementAt.swift b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/ElementAt.swift
similarity index 100%
rename from samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/ElementAt.swift
rename to CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/ElementAt.swift
diff --git a/samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/Empty.swift b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/Empty.swift
similarity index 100%
rename from samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/Empty.swift
rename to CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/Empty.swift
diff --git a/samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/Error.swift b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/Error.swift
similarity index 100%
rename from samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/Error.swift
rename to CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/Error.swift
diff --git a/samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/Filter.swift b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/Filter.swift
similarity index 100%
rename from samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/Filter.swift
rename to CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/Filter.swift
diff --git a/samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/Generate.swift b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/Generate.swift
similarity index 100%
rename from samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/Generate.swift
rename to CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/Generate.swift
diff --git a/samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/GroupBy.swift b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/GroupBy.swift
similarity index 100%
rename from samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/GroupBy.swift
rename to CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/GroupBy.swift
diff --git a/samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/Just.swift b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/Just.swift
similarity index 100%
rename from samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/Just.swift
rename to CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/Just.swift
diff --git a/samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/Map.swift b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/Map.swift
similarity index 100%
rename from samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/Map.swift
rename to CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/Map.swift
diff --git a/samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/Materialize.swift b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/Materialize.swift
similarity index 100%
rename from samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/Materialize.swift
rename to CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/Materialize.swift
diff --git a/samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/Merge.swift b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/Merge.swift
similarity index 100%
rename from samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/Merge.swift
rename to CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/Merge.swift
diff --git a/samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/Multicast.swift b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/Multicast.swift
similarity index 100%
rename from samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/Multicast.swift
rename to CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/Multicast.swift
diff --git a/samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/Never.swift b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/Never.swift
similarity index 100%
rename from samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/Never.swift
rename to CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/Never.swift
diff --git a/samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/ObserveOn.swift b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/ObserveOn.swift
similarity index 100%
rename from samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/ObserveOn.swift
rename to CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/ObserveOn.swift
diff --git a/samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/Optional.swift b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/Optional.swift
similarity index 100%
rename from samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/Optional.swift
rename to CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/Optional.swift
diff --git a/samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/Producer.swift b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/Producer.swift
similarity index 100%
rename from samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/Producer.swift
rename to CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/Producer.swift
diff --git a/samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/Range.swift b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/Range.swift
similarity index 100%
rename from samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/Range.swift
rename to CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/Range.swift
diff --git a/samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/Reduce.swift b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/Reduce.swift
similarity index 100%
rename from samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/Reduce.swift
rename to CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/Reduce.swift
diff --git a/samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/Repeat.swift b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/Repeat.swift
similarity index 100%
rename from samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/Repeat.swift
rename to CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/Repeat.swift
diff --git a/samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/RetryWhen.swift b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/RetryWhen.swift
similarity index 100%
rename from samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/RetryWhen.swift
rename to CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/RetryWhen.swift
diff --git a/samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/Sample.swift b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/Sample.swift
similarity index 100%
rename from samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/Sample.swift
rename to CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/Sample.swift
diff --git a/samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/Scan.swift b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/Scan.swift
similarity index 100%
rename from samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/Scan.swift
rename to CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/Scan.swift
diff --git a/samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/Sequence.swift b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/Sequence.swift
similarity index 100%
rename from samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/Sequence.swift
rename to CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/Sequence.swift
diff --git a/samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/ShareReplayScope.swift b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/ShareReplayScope.swift
similarity index 100%
rename from samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/ShareReplayScope.swift
rename to CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/ShareReplayScope.swift
diff --git a/samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/SingleAsync.swift b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/SingleAsync.swift
similarity index 100%
rename from samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/SingleAsync.swift
rename to CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/SingleAsync.swift
diff --git a/samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/Sink.swift b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/Sink.swift
similarity index 100%
rename from samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/Sink.swift
rename to CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/Sink.swift
diff --git a/samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/Skip.swift b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/Skip.swift
similarity index 100%
rename from samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/Skip.swift
rename to CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/Skip.swift
diff --git a/samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/SkipUntil.swift b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/SkipUntil.swift
similarity index 100%
rename from samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/SkipUntil.swift
rename to CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/SkipUntil.swift
diff --git a/samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/SkipWhile.swift b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/SkipWhile.swift
similarity index 100%
rename from samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/SkipWhile.swift
rename to CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/SkipWhile.swift
diff --git a/samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/StartWith.swift b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/StartWith.swift
similarity index 100%
rename from samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/StartWith.swift
rename to CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/StartWith.swift
diff --git a/samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/SubscribeOn.swift b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/SubscribeOn.swift
similarity index 100%
rename from samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/SubscribeOn.swift
rename to CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/SubscribeOn.swift
diff --git a/samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/Switch.swift b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/Switch.swift
similarity index 100%
rename from samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/Switch.swift
rename to CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/Switch.swift
diff --git a/samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/SwitchIfEmpty.swift b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/SwitchIfEmpty.swift
similarity index 100%
rename from samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/SwitchIfEmpty.swift
rename to CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/SwitchIfEmpty.swift
diff --git a/samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/Take.swift b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/Take.swift
similarity index 100%
rename from samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/Take.swift
rename to CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/Take.swift
diff --git a/samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/TakeLast.swift b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/TakeLast.swift
similarity index 100%
rename from samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/TakeLast.swift
rename to CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/TakeLast.swift
diff --git a/samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/TakeUntil.swift b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/TakeUntil.swift
similarity index 100%
rename from samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/TakeUntil.swift
rename to CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/TakeUntil.swift
diff --git a/samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/TakeWhile.swift b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/TakeWhile.swift
similarity index 100%
rename from samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/TakeWhile.swift
rename to CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/TakeWhile.swift
diff --git a/samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/Throttle.swift b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/Throttle.swift
similarity index 100%
rename from samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/Throttle.swift
rename to CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/Throttle.swift
diff --git a/samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/Timeout.swift b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/Timeout.swift
similarity index 100%
rename from samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/Timeout.swift
rename to CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/Timeout.swift
diff --git a/samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/Timer.swift b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/Timer.swift
similarity index 100%
rename from samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/Timer.swift
rename to CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/Timer.swift
diff --git a/samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/ToArray.swift b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/ToArray.swift
similarity index 100%
rename from samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/ToArray.swift
rename to CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/ToArray.swift
diff --git a/samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/Using.swift b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/Using.swift
similarity index 100%
rename from samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/Using.swift
rename to CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/Using.swift
diff --git a/samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/Window.swift b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/Window.swift
similarity index 100%
rename from samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/Window.swift
rename to CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/Window.swift
diff --git a/samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/WithLatestFrom.swift b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/WithLatestFrom.swift
similarity index 100%
rename from samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/WithLatestFrom.swift
rename to CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/WithLatestFrom.swift
diff --git a/samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/Zip+Collection.swift b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/Zip+Collection.swift
similarity index 100%
rename from samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/Zip+Collection.swift
rename to CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/Zip+Collection.swift
diff --git a/samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/Zip+arity.swift b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/Zip+arity.swift
similarity index 100%
rename from samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/Zip+arity.swift
rename to CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/Zip+arity.swift
diff --git a/samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/Zip.swift b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/Zip.swift
similarity index 100%
rename from samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/Zip.swift
rename to CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observables/Zip.swift
diff --git a/samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/ObserverType.swift b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/ObserverType.swift
similarity index 100%
rename from samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/ObserverType.swift
rename to CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/ObserverType.swift
diff --git a/samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observers/AnonymousObserver.swift b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observers/AnonymousObserver.swift
similarity index 100%
rename from samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observers/AnonymousObserver.swift
rename to CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observers/AnonymousObserver.swift
diff --git a/samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observers/ObserverBase.swift b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observers/ObserverBase.swift
similarity index 100%
rename from samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observers/ObserverBase.swift
rename to CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observers/ObserverBase.swift
diff --git a/samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observers/TailRecursiveSink.swift b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observers/TailRecursiveSink.swift
similarity index 100%
rename from samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observers/TailRecursiveSink.swift
rename to CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Observers/TailRecursiveSink.swift
diff --git a/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Reactive.swift b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Reactive.swift
new file mode 100644
index 000000000000..b87399664f3e
--- /dev/null
+++ b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Reactive.swift
@@ -0,0 +1,74 @@
+//
+// Reactive.swift
+// RxSwift
+//
+// Created by Yury Korolev on 5/2/16.
+// Copyright © 2016 Krunoslav Zaher. All rights reserved.
+//
+
+/**
+ Use `Reactive` proxy as customization point for constrained protocol extensions.
+
+ General pattern would be:
+
+ // 1. Extend Reactive protocol with constrain on Base
+ // Read as: Reactive Extension where Base is a SomeType
+ extension Reactive where Base: SomeType {
+ // 2. Put any specific reactive extension for SomeType here
+ }
+
+ With this approach we can have more specialized methods and properties using
+ `Base` and not just specialized on common base type.
+
+ */
+
+public struct Reactive {
+ /// Base object to extend.
+ public let base: Base
+
+ /// Creates extensions with base object.
+ ///
+ /// - parameter base: Base object.
+ public init(_ base: Base) {
+ self.base = base
+ }
+}
+
+/// A type that has reactive extensions.
+public protocol ReactiveCompatible {
+ /// Extended type
+ associatedtype CompatibleType
+
+ /// Reactive extensions.
+ static var rx: Reactive.Type { get set }
+
+ /// Reactive extensions.
+ var rx: Reactive { get set }
+}
+
+extension ReactiveCompatible {
+ /// Reactive extensions.
+ public static var rx: Reactive.Type {
+ get {
+ return Reactive.self
+ }
+ set {
+ // this enables using Reactive to "mutate" base type
+ }
+ }
+
+ /// Reactive extensions.
+ public var rx: Reactive {
+ get {
+ return Reactive(self)
+ }
+ set {
+ // this enables using Reactive to "mutate" base object
+ }
+ }
+}
+
+import class Foundation.NSObject
+
+/// Extend NSObject with `rx` proxy.
+extension NSObject: ReactiveCompatible { }
diff --git a/samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Rx.swift b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Rx.swift
similarity index 100%
rename from samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Rx.swift
rename to CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Rx.swift
diff --git a/samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/RxMutableBox.swift b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/RxMutableBox.swift
similarity index 100%
rename from samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/RxMutableBox.swift
rename to CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/RxMutableBox.swift
diff --git a/samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/SchedulerType.swift b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/SchedulerType.swift
similarity index 100%
rename from samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/SchedulerType.swift
rename to CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/SchedulerType.swift
diff --git a/samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Schedulers/ConcurrentDispatchQueueScheduler.swift b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Schedulers/ConcurrentDispatchQueueScheduler.swift
similarity index 100%
rename from samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Schedulers/ConcurrentDispatchQueueScheduler.swift
rename to CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Schedulers/ConcurrentDispatchQueueScheduler.swift
diff --git a/samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Schedulers/ConcurrentMainScheduler.swift b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Schedulers/ConcurrentMainScheduler.swift
similarity index 100%
rename from samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Schedulers/ConcurrentMainScheduler.swift
rename to CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Schedulers/ConcurrentMainScheduler.swift
diff --git a/samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Schedulers/CurrentThreadScheduler.swift b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Schedulers/CurrentThreadScheduler.swift
similarity index 100%
rename from samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Schedulers/CurrentThreadScheduler.swift
rename to CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Schedulers/CurrentThreadScheduler.swift
diff --git a/samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Schedulers/HistoricalScheduler.swift b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Schedulers/HistoricalScheduler.swift
similarity index 100%
rename from samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Schedulers/HistoricalScheduler.swift
rename to CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Schedulers/HistoricalScheduler.swift
diff --git a/samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Schedulers/HistoricalSchedulerTimeConverter.swift b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Schedulers/HistoricalSchedulerTimeConverter.swift
similarity index 100%
rename from samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Schedulers/HistoricalSchedulerTimeConverter.swift
rename to CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Schedulers/HistoricalSchedulerTimeConverter.swift
diff --git a/samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Schedulers/ImmediateScheduler.swift b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Schedulers/ImmediateScheduler.swift
similarity index 100%
rename from samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Schedulers/ImmediateScheduler.swift
rename to CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Schedulers/ImmediateScheduler.swift
diff --git a/samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Schedulers/Internal/AnonymousInvocable.swift b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Schedulers/Internal/AnonymousInvocable.swift
similarity index 100%
rename from samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Schedulers/Internal/AnonymousInvocable.swift
rename to CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Schedulers/Internal/AnonymousInvocable.swift
diff --git a/samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Schedulers/Internal/DispatchQueueConfiguration.swift b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Schedulers/Internal/DispatchQueueConfiguration.swift
similarity index 100%
rename from samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Schedulers/Internal/DispatchQueueConfiguration.swift
rename to CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Schedulers/Internal/DispatchQueueConfiguration.swift
diff --git a/samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Schedulers/Internal/InvocableScheduledItem.swift b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Schedulers/Internal/InvocableScheduledItem.swift
similarity index 100%
rename from samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Schedulers/Internal/InvocableScheduledItem.swift
rename to CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Schedulers/Internal/InvocableScheduledItem.swift
diff --git a/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Schedulers/Internal/InvocableType.swift b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Schedulers/Internal/InvocableType.swift
new file mode 100644
index 000000000000..0dba4336a743
--- /dev/null
+++ b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Schedulers/Internal/InvocableType.swift
@@ -0,0 +1,17 @@
+//
+// InvocableType.swift
+// RxSwift
+//
+// Created by Krunoslav Zaher on 11/7/15.
+// Copyright © 2015 Krunoslav Zaher. All rights reserved.
+//
+
+protocol InvocableType {
+ func invoke()
+}
+
+protocol InvocableWithValueType {
+ associatedtype Value
+
+ func invoke(_ value: Value)
+}
diff --git a/samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Schedulers/Internal/ScheduledItem.swift b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Schedulers/Internal/ScheduledItem.swift
similarity index 100%
rename from samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Schedulers/Internal/ScheduledItem.swift
rename to CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Schedulers/Internal/ScheduledItem.swift
diff --git a/samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Schedulers/Internal/ScheduledItemType.swift b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Schedulers/Internal/ScheduledItemType.swift
similarity index 100%
rename from samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Schedulers/Internal/ScheduledItemType.swift
rename to CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Schedulers/Internal/ScheduledItemType.swift
diff --git a/samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Schedulers/MainScheduler.swift b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Schedulers/MainScheduler.swift
similarity index 100%
rename from samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Schedulers/MainScheduler.swift
rename to CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Schedulers/MainScheduler.swift
diff --git a/samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Schedulers/OperationQueueScheduler.swift b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Schedulers/OperationQueueScheduler.swift
similarity index 100%
rename from samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Schedulers/OperationQueueScheduler.swift
rename to CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Schedulers/OperationQueueScheduler.swift
diff --git a/samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Schedulers/RecursiveScheduler.swift b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Schedulers/RecursiveScheduler.swift
similarity index 100%
rename from samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Schedulers/RecursiveScheduler.swift
rename to CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Schedulers/RecursiveScheduler.swift
diff --git a/samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Schedulers/SchedulerServices+Emulation.swift b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Schedulers/SchedulerServices+Emulation.swift
similarity index 100%
rename from samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Schedulers/SchedulerServices+Emulation.swift
rename to CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Schedulers/SchedulerServices+Emulation.swift
diff --git a/samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Schedulers/SerialDispatchQueueScheduler.swift b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Schedulers/SerialDispatchQueueScheduler.swift
similarity index 100%
rename from samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Schedulers/SerialDispatchQueueScheduler.swift
rename to CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Schedulers/SerialDispatchQueueScheduler.swift
diff --git a/samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Schedulers/VirtualTimeConverterType.swift b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Schedulers/VirtualTimeConverterType.swift
similarity index 100%
rename from samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Schedulers/VirtualTimeConverterType.swift
rename to CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Schedulers/VirtualTimeConverterType.swift
diff --git a/samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Schedulers/VirtualTimeScheduler.swift b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Schedulers/VirtualTimeScheduler.swift
similarity index 100%
rename from samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Schedulers/VirtualTimeScheduler.swift
rename to CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Schedulers/VirtualTimeScheduler.swift
diff --git a/samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Subjects/AsyncSubject.swift b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Subjects/AsyncSubject.swift
similarity index 100%
rename from samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Subjects/AsyncSubject.swift
rename to CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Subjects/AsyncSubject.swift
diff --git a/samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Subjects/BehaviorSubject.swift b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Subjects/BehaviorSubject.swift
similarity index 100%
rename from samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Subjects/BehaviorSubject.swift
rename to CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Subjects/BehaviorSubject.swift
diff --git a/samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Subjects/PublishSubject.swift b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Subjects/PublishSubject.swift
similarity index 100%
rename from samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Subjects/PublishSubject.swift
rename to CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Subjects/PublishSubject.swift
diff --git a/samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Subjects/ReplaySubject.swift b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Subjects/ReplaySubject.swift
similarity index 100%
rename from samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Subjects/ReplaySubject.swift
rename to CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Subjects/ReplaySubject.swift
diff --git a/samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Subjects/SubjectType.swift b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Subjects/SubjectType.swift
similarity index 100%
rename from samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Subjects/SubjectType.swift
rename to CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Subjects/SubjectType.swift
diff --git a/samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Subjects/Variable.swift b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Subjects/Variable.swift
similarity index 100%
rename from samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Subjects/Variable.swift
rename to CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Subjects/Variable.swift
diff --git a/samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Traits/Completable+AndThen.swift b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Traits/Completable+AndThen.swift
similarity index 100%
rename from samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Traits/Completable+AndThen.swift
rename to CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Traits/Completable+AndThen.swift
diff --git a/samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Traits/PrimitiveSequence+Zip+arity.swift b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Traits/PrimitiveSequence+Zip+arity.swift
similarity index 100%
rename from samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Traits/PrimitiveSequence+Zip+arity.swift
rename to CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Traits/PrimitiveSequence+Zip+arity.swift
diff --git a/samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Traits/PrimitiveSequence.swift b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Traits/PrimitiveSequence.swift
similarity index 100%
rename from samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Traits/PrimitiveSequence.swift
rename to CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/RxSwift/RxSwift/Traits/PrimitiveSequence.swift
diff --git a/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Target Support Files/Alamofire/Alamofire-dummy.m b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Target Support Files/Alamofire/Alamofire-dummy.m
new file mode 100644
index 000000000000..a6c4594242e9
--- /dev/null
+++ b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Target Support Files/Alamofire/Alamofire-dummy.m
@@ -0,0 +1,5 @@
+#import
+@interface PodsDummy_Alamofire : NSObject
+@end
+@implementation PodsDummy_Alamofire
+@end
diff --git a/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Target Support Files/Alamofire/Alamofire-prefix.pch b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Target Support Files/Alamofire/Alamofire-prefix.pch
new file mode 100644
index 000000000000..beb2a2441835
--- /dev/null
+++ b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Target Support Files/Alamofire/Alamofire-prefix.pch
@@ -0,0 +1,12 @@
+#ifdef __OBJC__
+#import
+#else
+#ifndef FOUNDATION_EXPORT
+#if defined(__cplusplus)
+#define FOUNDATION_EXPORT extern "C"
+#else
+#define FOUNDATION_EXPORT extern
+#endif
+#endif
+#endif
+
diff --git a/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Target Support Files/Alamofire/Alamofire-umbrella.h b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Target Support Files/Alamofire/Alamofire-umbrella.h
new file mode 100644
index 000000000000..00014e3cd82a
--- /dev/null
+++ b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Target Support Files/Alamofire/Alamofire-umbrella.h
@@ -0,0 +1,16 @@
+#ifdef __OBJC__
+#import
+#else
+#ifndef FOUNDATION_EXPORT
+#if defined(__cplusplus)
+#define FOUNDATION_EXPORT extern "C"
+#else
+#define FOUNDATION_EXPORT extern
+#endif
+#endif
+#endif
+
+
+FOUNDATION_EXPORT double AlamofireVersionNumber;
+FOUNDATION_EXPORT const unsigned char AlamofireVersionString[];
+
diff --git a/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Target Support Files/Alamofire/Alamofire.modulemap b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Target Support Files/Alamofire/Alamofire.modulemap
new file mode 100644
index 000000000000..d1f125fab6b0
--- /dev/null
+++ b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Target Support Files/Alamofire/Alamofire.modulemap
@@ -0,0 +1,6 @@
+framework module Alamofire {
+ umbrella header "Alamofire-umbrella.h"
+
+ export *
+ module * { export * }
+}
diff --git a/samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Target Support Files/Alamofire/Alamofire.xcconfig b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Target Support Files/Alamofire/Alamofire.xcconfig
similarity index 100%
rename from samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Target Support Files/Alamofire/Alamofire.xcconfig
rename to CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Target Support Files/Alamofire/Alamofire.xcconfig
diff --git a/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Target Support Files/Alamofire/Info.plist b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Target Support Files/Alamofire/Info.plist
new file mode 100644
index 000000000000..c1c4a98b9a1e
--- /dev/null
+++ b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Target Support Files/Alamofire/Info.plist
@@ -0,0 +1,26 @@
+
+
+
+
+ CFBundleDevelopmentRegion
+ en
+ CFBundleExecutable
+ ${EXECUTABLE_NAME}
+ CFBundleIdentifier
+ ${PRODUCT_BUNDLE_IDENTIFIER}
+ CFBundleInfoDictionaryVersion
+ 6.0
+ CFBundleName
+ ${PRODUCT_NAME}
+ CFBundlePackageType
+ FMWK
+ CFBundleShortVersionString
+ 4.5.0
+ CFBundleSignature
+ ????
+ CFBundleVersion
+ ${CURRENT_PROJECT_VERSION}
+ NSPrincipalClass
+
+
+
diff --git a/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Target Support Files/PetstoreClient/Info.plist b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Target Support Files/PetstoreClient/Info.plist
new file mode 100644
index 000000000000..cba258550bd0
--- /dev/null
+++ b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Target Support Files/PetstoreClient/Info.plist
@@ -0,0 +1,26 @@
+
+
+
+
+ CFBundleDevelopmentRegion
+ en
+ CFBundleExecutable
+ ${EXECUTABLE_NAME}
+ CFBundleIdentifier
+ ${PRODUCT_BUNDLE_IDENTIFIER}
+ CFBundleInfoDictionaryVersion
+ 6.0
+ CFBundleName
+ ${PRODUCT_NAME}
+ CFBundlePackageType
+ FMWK
+ CFBundleShortVersionString
+ 0.0.1
+ CFBundleSignature
+ ????
+ CFBundleVersion
+ ${CURRENT_PROJECT_VERSION}
+ NSPrincipalClass
+
+
+
diff --git a/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Target Support Files/PetstoreClient/PetstoreClient-dummy.m b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Target Support Files/PetstoreClient/PetstoreClient-dummy.m
new file mode 100644
index 000000000000..749b412f85c0
--- /dev/null
+++ b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Target Support Files/PetstoreClient/PetstoreClient-dummy.m
@@ -0,0 +1,5 @@
+#import
+@interface PodsDummy_PetstoreClient : NSObject
+@end
+@implementation PodsDummy_PetstoreClient
+@end
diff --git a/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Target Support Files/PetstoreClient/PetstoreClient-prefix.pch b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Target Support Files/PetstoreClient/PetstoreClient-prefix.pch
new file mode 100644
index 000000000000..beb2a2441835
--- /dev/null
+++ b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Target Support Files/PetstoreClient/PetstoreClient-prefix.pch
@@ -0,0 +1,12 @@
+#ifdef __OBJC__
+#import
+#else
+#ifndef FOUNDATION_EXPORT
+#if defined(__cplusplus)
+#define FOUNDATION_EXPORT extern "C"
+#else
+#define FOUNDATION_EXPORT extern
+#endif
+#endif
+#endif
+
diff --git a/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Target Support Files/PetstoreClient/PetstoreClient-umbrella.h b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Target Support Files/PetstoreClient/PetstoreClient-umbrella.h
new file mode 100644
index 000000000000..2a366623a36f
--- /dev/null
+++ b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Target Support Files/PetstoreClient/PetstoreClient-umbrella.h
@@ -0,0 +1,16 @@
+#ifdef __OBJC__
+#import
+#else
+#ifndef FOUNDATION_EXPORT
+#if defined(__cplusplus)
+#define FOUNDATION_EXPORT extern "C"
+#else
+#define FOUNDATION_EXPORT extern
+#endif
+#endif
+#endif
+
+
+FOUNDATION_EXPORT double PetstoreClientVersionNumber;
+FOUNDATION_EXPORT const unsigned char PetstoreClientVersionString[];
+
diff --git a/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Target Support Files/PetstoreClient/PetstoreClient.modulemap b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Target Support Files/PetstoreClient/PetstoreClient.modulemap
new file mode 100644
index 000000000000..7fdfc46cf796
--- /dev/null
+++ b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Target Support Files/PetstoreClient/PetstoreClient.modulemap
@@ -0,0 +1,6 @@
+framework module PetstoreClient {
+ umbrella header "PetstoreClient-umbrella.h"
+
+ export *
+ module * { export * }
+}
diff --git a/samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Target Support Files/PetstoreClient/PetstoreClient.xcconfig b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Target Support Files/PetstoreClient/PetstoreClient.xcconfig
similarity index 100%
rename from samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Target Support Files/PetstoreClient/PetstoreClient.xcconfig
rename to CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Target Support Files/PetstoreClient/PetstoreClient.xcconfig
diff --git a/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient/Info.plist b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient/Info.plist
new file mode 100644
index 000000000000..2243fe6e27dc
--- /dev/null
+++ b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient/Info.plist
@@ -0,0 +1,26 @@
+
+
+
+
+ CFBundleDevelopmentRegion
+ en
+ CFBundleExecutable
+ ${EXECUTABLE_NAME}
+ CFBundleIdentifier
+ ${PRODUCT_BUNDLE_IDENTIFIER}
+ CFBundleInfoDictionaryVersion
+ 6.0
+ CFBundleName
+ ${PRODUCT_NAME}
+ CFBundlePackageType
+ FMWK
+ CFBundleShortVersionString
+ 1.0.0
+ CFBundleSignature
+ ????
+ CFBundleVersion
+ ${CURRENT_PROJECT_VERSION}
+ NSPrincipalClass
+
+
+
diff --git a/samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient/Pods-SwaggerClient-acknowledgements.markdown b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient/Pods-SwaggerClient-acknowledgements.markdown
similarity index 100%
rename from samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient/Pods-SwaggerClient-acknowledgements.markdown
rename to CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient/Pods-SwaggerClient-acknowledgements.markdown
diff --git a/samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient/Pods-SwaggerClient-acknowledgements.plist b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient/Pods-SwaggerClient-acknowledgements.plist
similarity index 100%
rename from samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient/Pods-SwaggerClient-acknowledgements.plist
rename to CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient/Pods-SwaggerClient-acknowledgements.plist
diff --git a/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient/Pods-SwaggerClient-dummy.m b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient/Pods-SwaggerClient-dummy.m
new file mode 100644
index 000000000000..6236440163b8
--- /dev/null
+++ b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient/Pods-SwaggerClient-dummy.m
@@ -0,0 +1,5 @@
+#import
+@interface PodsDummy_Pods_SwaggerClient : NSObject
+@end
+@implementation PodsDummy_Pods_SwaggerClient
+@end
diff --git a/samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient/Pods-SwaggerClient-frameworks.sh b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient/Pods-SwaggerClient-frameworks.sh
similarity index 100%
rename from samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient/Pods-SwaggerClient-frameworks.sh
rename to CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient/Pods-SwaggerClient-frameworks.sh
diff --git a/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient/Pods-SwaggerClient-resources.sh b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient/Pods-SwaggerClient-resources.sh
new file mode 100755
index 000000000000..345301f2c5ca
--- /dev/null
+++ b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient/Pods-SwaggerClient-resources.sh
@@ -0,0 +1,118 @@
+#!/bin/sh
+set -e
+set -u
+set -o pipefail
+
+if [ -z ${UNLOCALIZED_RESOURCES_FOLDER_PATH+x} ]; then
+ # If UNLOCALIZED_RESOURCES_FOLDER_PATH is not set, then there's nowhere for us to copy
+ # resources to, so exit 0 (signalling the script phase was successful).
+ exit 0
+fi
+
+mkdir -p "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}"
+
+RESOURCES_TO_COPY=${PODS_ROOT}/resources-to-copy-${TARGETNAME}.txt
+> "$RESOURCES_TO_COPY"
+
+XCASSET_FILES=()
+
+# This protects against multiple targets copying the same framework dependency at the same time. The solution
+# was originally proposed here: https://lists.samba.org/archive/rsync/2008-February/020158.html
+RSYNC_PROTECT_TMP_FILES=(--filter "P .*.??????")
+
+case "${TARGETED_DEVICE_FAMILY:-}" in
+ 1,2)
+ TARGET_DEVICE_ARGS="--target-device ipad --target-device iphone"
+ ;;
+ 1)
+ TARGET_DEVICE_ARGS="--target-device iphone"
+ ;;
+ 2)
+ TARGET_DEVICE_ARGS="--target-device ipad"
+ ;;
+ 3)
+ TARGET_DEVICE_ARGS="--target-device tv"
+ ;;
+ 4)
+ TARGET_DEVICE_ARGS="--target-device watch"
+ ;;
+ *)
+ TARGET_DEVICE_ARGS="--target-device mac"
+ ;;
+esac
+
+install_resource()
+{
+ if [[ "$1" = /* ]] ; then
+ RESOURCE_PATH="$1"
+ else
+ RESOURCE_PATH="${PODS_ROOT}/$1"
+ fi
+ if [[ ! -e "$RESOURCE_PATH" ]] ; then
+ cat << EOM
+error: Resource "$RESOURCE_PATH" not found. Run 'pod install' to update the copy resources script.
+EOM
+ exit 1
+ fi
+ case $RESOURCE_PATH in
+ *.storyboard)
+ echo "ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .storyboard`.storyboardc $RESOURCE_PATH --sdk ${SDKROOT} ${TARGET_DEVICE_ARGS}" || true
+ ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .storyboard`.storyboardc" "$RESOURCE_PATH" --sdk "${SDKROOT}" ${TARGET_DEVICE_ARGS}
+ ;;
+ *.xib)
+ echo "ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib $RESOURCE_PATH --sdk ${SDKROOT} ${TARGET_DEVICE_ARGS}" || true
+ ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib" "$RESOURCE_PATH" --sdk "${SDKROOT}" ${TARGET_DEVICE_ARGS}
+ ;;
+ *.framework)
+ echo "mkdir -p ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" || true
+ mkdir -p "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
+ echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" $RESOURCE_PATH ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" || true
+ rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
+ ;;
+ *.xcdatamodel)
+ echo "xcrun momc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH"`.mom\"" || true
+ xcrun momc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodel`.mom"
+ ;;
+ *.xcdatamodeld)
+ echo "xcrun momc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodeld`.momd\"" || true
+ xcrun momc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodeld`.momd"
+ ;;
+ *.xcmappingmodel)
+ echo "xcrun mapc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcmappingmodel`.cdm\"" || true
+ xcrun mapc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcmappingmodel`.cdm"
+ ;;
+ *.xcassets)
+ ABSOLUTE_XCASSET_FILE="$RESOURCE_PATH"
+ XCASSET_FILES+=("$ABSOLUTE_XCASSET_FILE")
+ ;;
+ *)
+ echo "$RESOURCE_PATH" || true
+ echo "$RESOURCE_PATH" >> "$RESOURCES_TO_COPY"
+ ;;
+ esac
+}
+
+mkdir -p "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}"
+rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from="$RESOURCES_TO_COPY" / "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}"
+if [[ "${ACTION}" == "install" ]] && [[ "${SKIP_INSTALL}" == "NO" ]]; then
+ mkdir -p "${INSTALL_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}"
+ rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from="$RESOURCES_TO_COPY" / "${INSTALL_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}"
+fi
+rm -f "$RESOURCES_TO_COPY"
+
+if [[ -n "${WRAPPER_EXTENSION}" ]] && [ "`xcrun --find actool`" ] && [ -n "${XCASSET_FILES:-}" ]
+then
+ # Find all other xcassets (this unfortunately includes those of path pods and other targets).
+ OTHER_XCASSETS=$(find "$PWD" -iname "*.xcassets" -type d)
+ while read line; do
+ if [[ $line != "${PODS_ROOT}*" ]]; then
+ XCASSET_FILES+=("$line")
+ fi
+ done <<<"$OTHER_XCASSETS"
+
+ if [ -z ${ASSETCATALOG_COMPILER_APPICON_NAME+x} ]; then
+ printf "%s\0" "${XCASSET_FILES[@]}" | xargs -0 xcrun actool --output-format human-readable-text --notices --warnings --platform "${PLATFORM_NAME}" --minimum-deployment-target "${!DEPLOYMENT_TARGET_SETTING_NAME}" ${TARGET_DEVICE_ARGS} --compress-pngs --compile "${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}"
+ else
+ printf "%s\0" "${XCASSET_FILES[@]}" | xargs -0 xcrun actool --output-format human-readable-text --notices --warnings --platform "${PLATFORM_NAME}" --minimum-deployment-target "${!DEPLOYMENT_TARGET_SETTING_NAME}" ${TARGET_DEVICE_ARGS} --compress-pngs --compile "${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" --app-icon "${ASSETCATALOG_COMPILER_APPICON_NAME}" --output-partial-info-plist "${TARGET_TEMP_DIR}/assetcatalog_generated_info_cocoapods.plist"
+ fi
+fi
diff --git a/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient/Pods-SwaggerClient-umbrella.h b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient/Pods-SwaggerClient-umbrella.h
new file mode 100644
index 000000000000..b7da51aaf252
--- /dev/null
+++ b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient/Pods-SwaggerClient-umbrella.h
@@ -0,0 +1,16 @@
+#ifdef __OBJC__
+#import
+#else
+#ifndef FOUNDATION_EXPORT
+#if defined(__cplusplus)
+#define FOUNDATION_EXPORT extern "C"
+#else
+#define FOUNDATION_EXPORT extern
+#endif
+#endif
+#endif
+
+
+FOUNDATION_EXPORT double Pods_SwaggerClientVersionNumber;
+FOUNDATION_EXPORT const unsigned char Pods_SwaggerClientVersionString[];
+
diff --git a/samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient/Pods-SwaggerClient.debug.xcconfig b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient/Pods-SwaggerClient.debug.xcconfig
similarity index 100%
rename from samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient/Pods-SwaggerClient.debug.xcconfig
rename to CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient/Pods-SwaggerClient.debug.xcconfig
diff --git a/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient/Pods-SwaggerClient.modulemap b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient/Pods-SwaggerClient.modulemap
new file mode 100644
index 000000000000..ef919b6c0d1f
--- /dev/null
+++ b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient/Pods-SwaggerClient.modulemap
@@ -0,0 +1,6 @@
+framework module Pods_SwaggerClient {
+ umbrella header "Pods-SwaggerClient-umbrella.h"
+
+ export *
+ module * { export * }
+}
diff --git a/samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient/Pods-SwaggerClient.release.xcconfig b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient/Pods-SwaggerClient.release.xcconfig
similarity index 100%
rename from samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient/Pods-SwaggerClient.release.xcconfig
rename to CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient/Pods-SwaggerClient.release.xcconfig
diff --git a/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClientTests/Info.plist b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClientTests/Info.plist
new file mode 100644
index 000000000000..2243fe6e27dc
--- /dev/null
+++ b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClientTests/Info.plist
@@ -0,0 +1,26 @@
+
+
+
+
+ CFBundleDevelopmentRegion
+ en
+ CFBundleExecutable
+ ${EXECUTABLE_NAME}
+ CFBundleIdentifier
+ ${PRODUCT_BUNDLE_IDENTIFIER}
+ CFBundleInfoDictionaryVersion
+ 6.0
+ CFBundleName
+ ${PRODUCT_NAME}
+ CFBundlePackageType
+ FMWK
+ CFBundleShortVersionString
+ 1.0.0
+ CFBundleSignature
+ ????
+ CFBundleVersion
+ ${CURRENT_PROJECT_VERSION}
+ NSPrincipalClass
+
+
+
diff --git a/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClientTests/Pods-SwaggerClientTests-acknowledgements.markdown b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClientTests/Pods-SwaggerClientTests-acknowledgements.markdown
new file mode 100644
index 000000000000..102af7538517
--- /dev/null
+++ b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClientTests/Pods-SwaggerClientTests-acknowledgements.markdown
@@ -0,0 +1,3 @@
+# Acknowledgements
+This application makes use of the following third party libraries:
+Generated by CocoaPods - https://cocoapods.org
diff --git a/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClientTests/Pods-SwaggerClientTests-acknowledgements.plist b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClientTests/Pods-SwaggerClientTests-acknowledgements.plist
new file mode 100644
index 000000000000..7acbad1eabbf
--- /dev/null
+++ b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClientTests/Pods-SwaggerClientTests-acknowledgements.plist
@@ -0,0 +1,29 @@
+
+
+
+
+ PreferenceSpecifiers
+
+
+ FooterText
+ This application makes use of the following third party libraries:
+ Title
+ Acknowledgements
+ Type
+ PSGroupSpecifier
+
+
+ FooterText
+ Generated by CocoaPods - https://cocoapods.org
+ Title
+
+ Type
+ PSGroupSpecifier
+
+
+ StringsTable
+ Acknowledgements
+ Title
+ Acknowledgements
+
+
diff --git a/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClientTests/Pods-SwaggerClientTests-dummy.m b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClientTests/Pods-SwaggerClientTests-dummy.m
new file mode 100644
index 000000000000..bb17fa2b80ff
--- /dev/null
+++ b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClientTests/Pods-SwaggerClientTests-dummy.m
@@ -0,0 +1,5 @@
+#import
+@interface PodsDummy_Pods_SwaggerClientTests : NSObject
+@end
+@implementation PodsDummy_Pods_SwaggerClientTests
+@end
diff --git a/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClientTests/Pods-SwaggerClientTests-frameworks.sh b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClientTests/Pods-SwaggerClientTests-frameworks.sh
new file mode 100755
index 000000000000..08e3eaaca45a
--- /dev/null
+++ b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClientTests/Pods-SwaggerClientTests-frameworks.sh
@@ -0,0 +1,146 @@
+#!/bin/sh
+set -e
+set -u
+set -o pipefail
+
+if [ -z ${FRAMEWORKS_FOLDER_PATH+x} ]; then
+ # If FRAMEWORKS_FOLDER_PATH is not set, then there's nowhere for us to copy
+ # frameworks to, so exit 0 (signalling the script phase was successful).
+ exit 0
+fi
+
+echo "mkdir -p ${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
+mkdir -p "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
+
+COCOAPODS_PARALLEL_CODE_SIGN="${COCOAPODS_PARALLEL_CODE_SIGN:-false}"
+SWIFT_STDLIB_PATH="${DT_TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}"
+
+# Used as a return value for each invocation of `strip_invalid_archs` function.
+STRIP_BINARY_RETVAL=0
+
+# This protects against multiple targets copying the same framework dependency at the same time. The solution
+# was originally proposed here: https://lists.samba.org/archive/rsync/2008-February/020158.html
+RSYNC_PROTECT_TMP_FILES=(--filter "P .*.??????")
+
+# Copies and strips a vendored framework
+install_framework()
+{
+ if [ -r "${BUILT_PRODUCTS_DIR}/$1" ]; then
+ local source="${BUILT_PRODUCTS_DIR}/$1"
+ elif [ -r "${BUILT_PRODUCTS_DIR}/$(basename "$1")" ]; then
+ local source="${BUILT_PRODUCTS_DIR}/$(basename "$1")"
+ elif [ -r "$1" ]; then
+ local source="$1"
+ fi
+
+ local destination="${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
+
+ if [ -L "${source}" ]; then
+ echo "Symlinked..."
+ source="$(readlink "${source}")"
+ fi
+
+ # Use filter instead of exclude so missing patterns don't throw errors.
+ echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${source}\" \"${destination}\""
+ rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${source}" "${destination}"
+
+ local basename
+ basename="$(basename -s .framework "$1")"
+ binary="${destination}/${basename}.framework/${basename}"
+ if ! [ -r "$binary" ]; then
+ binary="${destination}/${basename}"
+ fi
+
+ # Strip invalid architectures so "fat" simulator / device frameworks work on device
+ if [[ "$(file "$binary")" == *"dynamically linked shared library"* ]]; then
+ strip_invalid_archs "$binary"
+ fi
+
+ # Resign the code if required by the build settings to avoid unstable apps
+ code_sign_if_enabled "${destination}/$(basename "$1")"
+
+ # Embed linked Swift runtime libraries. No longer necessary as of Xcode 7.
+ if [ "${XCODE_VERSION_MAJOR}" -lt 7 ]; then
+ local swift_runtime_libs
+ swift_runtime_libs=$(xcrun otool -LX "$binary" | grep --color=never @rpath/libswift | sed -E s/@rpath\\/\(.+dylib\).*/\\1/g | uniq -u && exit ${PIPESTATUS[0]})
+ for lib in $swift_runtime_libs; do
+ echo "rsync -auv \"${SWIFT_STDLIB_PATH}/${lib}\" \"${destination}\""
+ rsync -auv "${SWIFT_STDLIB_PATH}/${lib}" "${destination}"
+ code_sign_if_enabled "${destination}/${lib}"
+ done
+ fi
+}
+
+# Copies and strips a vendored dSYM
+install_dsym() {
+ local source="$1"
+ if [ -r "$source" ]; then
+ # Copy the dSYM into a the targets temp dir.
+ echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${source}\" \"${DERIVED_FILES_DIR}\""
+ rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${source}" "${DERIVED_FILES_DIR}"
+
+ local basename
+ basename="$(basename -s .framework.dSYM "$source")"
+ binary="${DERIVED_FILES_DIR}/${basename}.framework.dSYM/Contents/Resources/DWARF/${basename}"
+
+ # Strip invalid architectures so "fat" simulator / device frameworks work on device
+ if [[ "$(file "$binary")" == *"Mach-O dSYM companion"* ]]; then
+ strip_invalid_archs "$binary"
+ fi
+
+ if [[ $STRIP_BINARY_RETVAL == 1 ]]; then
+ # Move the stripped file into its final destination.
+ echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${DERIVED_FILES_DIR}/${basename}.framework.dSYM\" \"${DWARF_DSYM_FOLDER_PATH}\""
+ rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${DERIVED_FILES_DIR}/${basename}.framework.dSYM" "${DWARF_DSYM_FOLDER_PATH}"
+ else
+ # The dSYM was not stripped at all, in this case touch a fake folder so the input/output paths from Xcode do not reexecute this script because the file is missing.
+ touch "${DWARF_DSYM_FOLDER_PATH}/${basename}.framework.dSYM"
+ fi
+ fi
+}
+
+# Signs a framework with the provided identity
+code_sign_if_enabled() {
+ if [ -n "${EXPANDED_CODE_SIGN_IDENTITY}" -a "${CODE_SIGNING_REQUIRED:-}" != "NO" -a "${CODE_SIGNING_ALLOWED}" != "NO" ]; then
+ # Use the current code_sign_identitiy
+ echo "Code Signing $1 with Identity ${EXPANDED_CODE_SIGN_IDENTITY_NAME}"
+ local code_sign_cmd="/usr/bin/codesign --force --sign ${EXPANDED_CODE_SIGN_IDENTITY} ${OTHER_CODE_SIGN_FLAGS:-} --preserve-metadata=identifier,entitlements '$1'"
+
+ if [ "${COCOAPODS_PARALLEL_CODE_SIGN}" == "true" ]; then
+ code_sign_cmd="$code_sign_cmd &"
+ fi
+ echo "$code_sign_cmd"
+ eval "$code_sign_cmd"
+ fi
+}
+
+# Strip invalid architectures
+strip_invalid_archs() {
+ binary="$1"
+ # Get architectures for current target binary
+ binary_archs="$(lipo -info "$binary" | rev | cut -d ':' -f1 | awk '{$1=$1;print}' | rev)"
+ # Intersect them with the architectures we are building for
+ intersected_archs="$(echo ${ARCHS[@]} ${binary_archs[@]} | tr ' ' '\n' | sort | uniq -d)"
+ # If there are no archs supported by this binary then warn the user
+ if [[ -z "$intersected_archs" ]]; then
+ echo "warning: [CP] Vendored binary '$binary' contains architectures ($binary_archs) none of which match the current build architectures ($ARCHS)."
+ STRIP_BINARY_RETVAL=0
+ return
+ fi
+ stripped=""
+ for arch in $binary_archs; do
+ if ! [[ "${ARCHS}" == *"$arch"* ]]; then
+ # Strip non-valid architectures in-place
+ lipo -remove "$arch" -output "$binary" "$binary" || exit 1
+ stripped="$stripped $arch"
+ fi
+ done
+ if [[ "$stripped" ]]; then
+ echo "Stripped $binary of architectures:$stripped"
+ fi
+ STRIP_BINARY_RETVAL=1
+}
+
+if [ "${COCOAPODS_PARALLEL_CODE_SIGN}" == "true" ]; then
+ wait
+fi
diff --git a/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClientTests/Pods-SwaggerClientTests-resources.sh b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClientTests/Pods-SwaggerClientTests-resources.sh
new file mode 100755
index 000000000000..345301f2c5ca
--- /dev/null
+++ b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClientTests/Pods-SwaggerClientTests-resources.sh
@@ -0,0 +1,118 @@
+#!/bin/sh
+set -e
+set -u
+set -o pipefail
+
+if [ -z ${UNLOCALIZED_RESOURCES_FOLDER_PATH+x} ]; then
+ # If UNLOCALIZED_RESOURCES_FOLDER_PATH is not set, then there's nowhere for us to copy
+ # resources to, so exit 0 (signalling the script phase was successful).
+ exit 0
+fi
+
+mkdir -p "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}"
+
+RESOURCES_TO_COPY=${PODS_ROOT}/resources-to-copy-${TARGETNAME}.txt
+> "$RESOURCES_TO_COPY"
+
+XCASSET_FILES=()
+
+# This protects against multiple targets copying the same framework dependency at the same time. The solution
+# was originally proposed here: https://lists.samba.org/archive/rsync/2008-February/020158.html
+RSYNC_PROTECT_TMP_FILES=(--filter "P .*.??????")
+
+case "${TARGETED_DEVICE_FAMILY:-}" in
+ 1,2)
+ TARGET_DEVICE_ARGS="--target-device ipad --target-device iphone"
+ ;;
+ 1)
+ TARGET_DEVICE_ARGS="--target-device iphone"
+ ;;
+ 2)
+ TARGET_DEVICE_ARGS="--target-device ipad"
+ ;;
+ 3)
+ TARGET_DEVICE_ARGS="--target-device tv"
+ ;;
+ 4)
+ TARGET_DEVICE_ARGS="--target-device watch"
+ ;;
+ *)
+ TARGET_DEVICE_ARGS="--target-device mac"
+ ;;
+esac
+
+install_resource()
+{
+ if [[ "$1" = /* ]] ; then
+ RESOURCE_PATH="$1"
+ else
+ RESOURCE_PATH="${PODS_ROOT}/$1"
+ fi
+ if [[ ! -e "$RESOURCE_PATH" ]] ; then
+ cat << EOM
+error: Resource "$RESOURCE_PATH" not found. Run 'pod install' to update the copy resources script.
+EOM
+ exit 1
+ fi
+ case $RESOURCE_PATH in
+ *.storyboard)
+ echo "ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .storyboard`.storyboardc $RESOURCE_PATH --sdk ${SDKROOT} ${TARGET_DEVICE_ARGS}" || true
+ ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .storyboard`.storyboardc" "$RESOURCE_PATH" --sdk "${SDKROOT}" ${TARGET_DEVICE_ARGS}
+ ;;
+ *.xib)
+ echo "ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib $RESOURCE_PATH --sdk ${SDKROOT} ${TARGET_DEVICE_ARGS}" || true
+ ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib" "$RESOURCE_PATH" --sdk "${SDKROOT}" ${TARGET_DEVICE_ARGS}
+ ;;
+ *.framework)
+ echo "mkdir -p ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" || true
+ mkdir -p "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
+ echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" $RESOURCE_PATH ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" || true
+ rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
+ ;;
+ *.xcdatamodel)
+ echo "xcrun momc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH"`.mom\"" || true
+ xcrun momc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodel`.mom"
+ ;;
+ *.xcdatamodeld)
+ echo "xcrun momc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodeld`.momd\"" || true
+ xcrun momc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodeld`.momd"
+ ;;
+ *.xcmappingmodel)
+ echo "xcrun mapc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcmappingmodel`.cdm\"" || true
+ xcrun mapc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcmappingmodel`.cdm"
+ ;;
+ *.xcassets)
+ ABSOLUTE_XCASSET_FILE="$RESOURCE_PATH"
+ XCASSET_FILES+=("$ABSOLUTE_XCASSET_FILE")
+ ;;
+ *)
+ echo "$RESOURCE_PATH" || true
+ echo "$RESOURCE_PATH" >> "$RESOURCES_TO_COPY"
+ ;;
+ esac
+}
+
+mkdir -p "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}"
+rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from="$RESOURCES_TO_COPY" / "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}"
+if [[ "${ACTION}" == "install" ]] && [[ "${SKIP_INSTALL}" == "NO" ]]; then
+ mkdir -p "${INSTALL_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}"
+ rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from="$RESOURCES_TO_COPY" / "${INSTALL_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}"
+fi
+rm -f "$RESOURCES_TO_COPY"
+
+if [[ -n "${WRAPPER_EXTENSION}" ]] && [ "`xcrun --find actool`" ] && [ -n "${XCASSET_FILES:-}" ]
+then
+ # Find all other xcassets (this unfortunately includes those of path pods and other targets).
+ OTHER_XCASSETS=$(find "$PWD" -iname "*.xcassets" -type d)
+ while read line; do
+ if [[ $line != "${PODS_ROOT}*" ]]; then
+ XCASSET_FILES+=("$line")
+ fi
+ done <<<"$OTHER_XCASSETS"
+
+ if [ -z ${ASSETCATALOG_COMPILER_APPICON_NAME+x} ]; then
+ printf "%s\0" "${XCASSET_FILES[@]}" | xargs -0 xcrun actool --output-format human-readable-text --notices --warnings --platform "${PLATFORM_NAME}" --minimum-deployment-target "${!DEPLOYMENT_TARGET_SETTING_NAME}" ${TARGET_DEVICE_ARGS} --compress-pngs --compile "${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}"
+ else
+ printf "%s\0" "${XCASSET_FILES[@]}" | xargs -0 xcrun actool --output-format human-readable-text --notices --warnings --platform "${PLATFORM_NAME}" --minimum-deployment-target "${!DEPLOYMENT_TARGET_SETTING_NAME}" ${TARGET_DEVICE_ARGS} --compress-pngs --compile "${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" --app-icon "${ASSETCATALOG_COMPILER_APPICON_NAME}" --output-partial-info-plist "${TARGET_TEMP_DIR}/assetcatalog_generated_info_cocoapods.plist"
+ fi
+fi
diff --git a/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClientTests/Pods-SwaggerClientTests-umbrella.h b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClientTests/Pods-SwaggerClientTests-umbrella.h
new file mode 100644
index 000000000000..b2e4925a9e41
--- /dev/null
+++ b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClientTests/Pods-SwaggerClientTests-umbrella.h
@@ -0,0 +1,16 @@
+#ifdef __OBJC__
+#import
+#else
+#ifndef FOUNDATION_EXPORT
+#if defined(__cplusplus)
+#define FOUNDATION_EXPORT extern "C"
+#else
+#define FOUNDATION_EXPORT extern
+#endif
+#endif
+#endif
+
+
+FOUNDATION_EXPORT double Pods_SwaggerClientTestsVersionNumber;
+FOUNDATION_EXPORT const unsigned char Pods_SwaggerClientTestsVersionString[];
+
diff --git a/samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClientTests/Pods-SwaggerClientTests.debug.xcconfig b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClientTests/Pods-SwaggerClientTests.debug.xcconfig
similarity index 100%
rename from samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClientTests/Pods-SwaggerClientTests.debug.xcconfig
rename to CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClientTests/Pods-SwaggerClientTests.debug.xcconfig
diff --git a/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClientTests/Pods-SwaggerClientTests.modulemap b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClientTests/Pods-SwaggerClientTests.modulemap
new file mode 100644
index 000000000000..a848da7ffb30
--- /dev/null
+++ b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClientTests/Pods-SwaggerClientTests.modulemap
@@ -0,0 +1,6 @@
+framework module Pods_SwaggerClientTests {
+ umbrella header "Pods-SwaggerClientTests-umbrella.h"
+
+ export *
+ module * { export * }
+}
diff --git a/samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClientTests/Pods-SwaggerClientTests.release.xcconfig b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClientTests/Pods-SwaggerClientTests.release.xcconfig
similarity index 100%
rename from samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClientTests/Pods-SwaggerClientTests.release.xcconfig
rename to CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClientTests/Pods-SwaggerClientTests.release.xcconfig
diff --git a/samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Target Support Files/RxSwift/Info.plist b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Target Support Files/RxSwift/Info.plist
similarity index 100%
rename from samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Target Support Files/RxSwift/Info.plist
rename to CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Target Support Files/RxSwift/Info.plist
diff --git a/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Target Support Files/RxSwift/RxSwift-dummy.m b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Target Support Files/RxSwift/RxSwift-dummy.m
new file mode 100644
index 000000000000..3783f72cea34
--- /dev/null
+++ b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Target Support Files/RxSwift/RxSwift-dummy.m
@@ -0,0 +1,5 @@
+#import
+@interface PodsDummy_RxSwift : NSObject
+@end
+@implementation PodsDummy_RxSwift
+@end
diff --git a/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Target Support Files/RxSwift/RxSwift-prefix.pch b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Target Support Files/RxSwift/RxSwift-prefix.pch
new file mode 100644
index 000000000000..beb2a2441835
--- /dev/null
+++ b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Target Support Files/RxSwift/RxSwift-prefix.pch
@@ -0,0 +1,12 @@
+#ifdef __OBJC__
+#import
+#else
+#ifndef FOUNDATION_EXPORT
+#if defined(__cplusplus)
+#define FOUNDATION_EXPORT extern "C"
+#else
+#define FOUNDATION_EXPORT extern
+#endif
+#endif
+#endif
+
diff --git a/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Target Support Files/RxSwift/RxSwift-umbrella.h b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Target Support Files/RxSwift/RxSwift-umbrella.h
new file mode 100644
index 000000000000..9a2721193781
--- /dev/null
+++ b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Target Support Files/RxSwift/RxSwift-umbrella.h
@@ -0,0 +1,16 @@
+#ifdef __OBJC__
+#import
+#else
+#ifndef FOUNDATION_EXPORT
+#if defined(__cplusplus)
+#define FOUNDATION_EXPORT extern "C"
+#else
+#define FOUNDATION_EXPORT extern
+#endif
+#endif
+#endif
+
+
+FOUNDATION_EXPORT double RxSwiftVersionNumber;
+FOUNDATION_EXPORT const unsigned char RxSwiftVersionString[];
+
diff --git a/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Target Support Files/RxSwift/RxSwift.modulemap b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Target Support Files/RxSwift/RxSwift.modulemap
new file mode 100644
index 000000000000..eae3d1c4187b
--- /dev/null
+++ b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Target Support Files/RxSwift/RxSwift.modulemap
@@ -0,0 +1,6 @@
+framework module RxSwift {
+ umbrella header "RxSwift-umbrella.h"
+
+ export *
+ module * { export * }
+}
diff --git a/samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Target Support Files/RxSwift/RxSwift.xcconfig b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Target Support Files/RxSwift/RxSwift.xcconfig
similarity index 100%
rename from samples/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Target Support Files/RxSwift/RxSwift.xcconfig
rename to CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/Pods/Target Support Files/RxSwift/RxSwift.xcconfig
diff --git a/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/SwaggerClient.xcodeproj/project.pbxproj b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/SwaggerClient.xcodeproj/project.pbxproj
new file mode 100644
index 000000000000..1db674bd3aa5
--- /dev/null
+++ b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/SwaggerClient.xcodeproj/project.pbxproj
@@ -0,0 +1,531 @@
+// !$*UTF8*$!
+{
+ archiveVersion = 1;
+ classes = {
+ };
+ objectVersion = 46;
+ objects = {
+
+/* Begin PBXBuildFile section */
+ B024164FBFF71BF644D4419A /* Pods_SwaggerClient.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 177A58DD5CF63F2989335DCC /* Pods_SwaggerClient.framework */; };
+ B1D0246C8960F47A60098F37 /* Pods_SwaggerClientTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6F96A0131101344CC5406CB3 /* Pods_SwaggerClientTests.framework */; };
+ EAEC0BC21D4E30CE00C908A3 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = EAEC0BC11D4E30CE00C908A3 /* AppDelegate.swift */; };
+ EAEC0BC41D4E30CE00C908A3 /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = EAEC0BC31D4E30CE00C908A3 /* ViewController.swift */; };
+ EAEC0BC71D4E30CE00C908A3 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = EAEC0BC51D4E30CE00C908A3 /* Main.storyboard */; };
+ EAEC0BC91D4E30CE00C908A3 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = EAEC0BC81D4E30CE00C908A3 /* Assets.xcassets */; };
+ EAEC0BCC1D4E30CE00C908A3 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = EAEC0BCA1D4E30CE00C908A3 /* LaunchScreen.storyboard */; };
+ EAEC0BE41D4E330700C908A3 /* PetAPITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = EAEC0BE31D4E330700C908A3 /* PetAPITests.swift */; };
+ EAEC0BE61D4E379000C908A3 /* StoreAPITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = EAEC0BE51D4E379000C908A3 /* StoreAPITests.swift */; };
+ EAEC0BE81D4E38CB00C908A3 /* UserAPITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = EAEC0BE71D4E38CB00C908A3 /* UserAPITests.swift */; };
+/* End PBXBuildFile section */
+
+/* Begin PBXContainerItemProxy section */
+ EAEC0BD31D4E30CE00C908A3 /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = EAEC0BB61D4E30CE00C908A3 /* Project object */;
+ proxyType = 1;
+ remoteGlobalIDString = EAEC0BBD1D4E30CE00C908A3;
+ remoteInfo = SwaggerClient;
+ };
+/* End PBXContainerItemProxy section */
+
+/* Begin PBXFileReference section */
+ 177A58DD5CF63F2989335DCC /* Pods_SwaggerClient.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_SwaggerClient.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ 2DEFA8828BD4E38FA5262F53 /* Pods-SwaggerClient.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-SwaggerClient.release.xcconfig"; path = "Pods/Target Support Files/Pods-SwaggerClient/Pods-SwaggerClient.release.xcconfig"; sourceTree = ""; };
+ 4EF2021609D112A6F5AE0F55 /* Pods-SwaggerClientTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-SwaggerClientTests.debug.xcconfig"; path = "Pods/Target Support Files/Pods-SwaggerClientTests/Pods-SwaggerClientTests.debug.xcconfig"; sourceTree = ""; };
+ 6F96A0131101344CC5406CB3 /* Pods_SwaggerClientTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_SwaggerClientTests.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ 8D99518E8E05FD856A952698 /* Pods-SwaggerClient.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-SwaggerClient.debug.xcconfig"; path = "Pods/Target Support Files/Pods-SwaggerClient/Pods-SwaggerClient.debug.xcconfig"; sourceTree = ""; };
+ EAEC0BBE1D4E30CE00C908A3 /* SwaggerClient.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = SwaggerClient.app; sourceTree = BUILT_PRODUCTS_DIR; };
+ EAEC0BC11D4E30CE00C908A3 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; };
+ EAEC0BC31D4E30CE00C908A3 /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = ""; };
+ EAEC0BC61D4E30CE00C908A3 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; };
+ EAEC0BC81D4E30CE00C908A3 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; };
+ EAEC0BCB1D4E30CE00C908A3 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; };
+ EAEC0BCD1D4E30CE00C908A3 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
+ EAEC0BD21D4E30CE00C908A3 /* SwaggerClientTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = SwaggerClientTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
+ EAEC0BD81D4E30CE00C908A3 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
+ EAEC0BE31D4E330700C908A3 /* PetAPITests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PetAPITests.swift; sourceTree = ""; };
+ EAEC0BE51D4E379000C908A3 /* StoreAPITests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = StoreAPITests.swift; sourceTree = ""; };
+ EAEC0BE71D4E38CB00C908A3 /* UserAPITests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UserAPITests.swift; sourceTree = ""; };
+ EFD8AB05F53C74985527D117 /* Pods-SwaggerClientTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-SwaggerClientTests.release.xcconfig"; path = "Pods/Target Support Files/Pods-SwaggerClientTests/Pods-SwaggerClientTests.release.xcconfig"; sourceTree = ""; };
+/* End PBXFileReference section */
+
+/* Begin PBXFrameworksBuildPhase section */
+ EAEC0BBB1D4E30CE00C908A3 /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ B024164FBFF71BF644D4419A /* Pods_SwaggerClient.framework in Frameworks */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ EAEC0BCF1D4E30CE00C908A3 /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ B1D0246C8960F47A60098F37 /* Pods_SwaggerClientTests.framework in Frameworks */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXFrameworksBuildPhase section */
+
+/* Begin PBXGroup section */
+ 55DC454FF5FFEF8A9CBC1CA3 /* Frameworks */ = {
+ isa = PBXGroup;
+ children = (
+ 177A58DD5CF63F2989335DCC /* Pods_SwaggerClient.framework */,
+ 6F96A0131101344CC5406CB3 /* Pods_SwaggerClientTests.framework */,
+ );
+ name = Frameworks;
+ sourceTree = "";
+ };
+ CB19142D951AB5DD885404A8 /* Pods */ = {
+ isa = PBXGroup;
+ children = (
+ 8D99518E8E05FD856A952698 /* Pods-SwaggerClient.debug.xcconfig */,
+ 2DEFA8828BD4E38FA5262F53 /* Pods-SwaggerClient.release.xcconfig */,
+ 4EF2021609D112A6F5AE0F55 /* Pods-SwaggerClientTests.debug.xcconfig */,
+ EFD8AB05F53C74985527D117 /* Pods-SwaggerClientTests.release.xcconfig */,
+ );
+ name = Pods;
+ sourceTree = "";
+ };
+ EAEC0BB51D4E30CE00C908A3 = {
+ isa = PBXGroup;
+ children = (
+ EAEC0BC01D4E30CE00C908A3 /* SwaggerClient */,
+ EAEC0BD51D4E30CE00C908A3 /* SwaggerClientTests */,
+ EAEC0BBF1D4E30CE00C908A3 /* Products */,
+ CB19142D951AB5DD885404A8 /* Pods */,
+ 55DC454FF5FFEF8A9CBC1CA3 /* Frameworks */,
+ );
+ sourceTree = "";
+ };
+ EAEC0BBF1D4E30CE00C908A3 /* Products */ = {
+ isa = PBXGroup;
+ children = (
+ EAEC0BBE1D4E30CE00C908A3 /* SwaggerClient.app */,
+ EAEC0BD21D4E30CE00C908A3 /* SwaggerClientTests.xctest */,
+ );
+ name = Products;
+ sourceTree = "";
+ };
+ EAEC0BC01D4E30CE00C908A3 /* SwaggerClient */ = {
+ isa = PBXGroup;
+ children = (
+ EAEC0BC11D4E30CE00C908A3 /* AppDelegate.swift */,
+ EAEC0BC31D4E30CE00C908A3 /* ViewController.swift */,
+ EAEC0BC51D4E30CE00C908A3 /* Main.storyboard */,
+ EAEC0BC81D4E30CE00C908A3 /* Assets.xcassets */,
+ EAEC0BCA1D4E30CE00C908A3 /* LaunchScreen.storyboard */,
+ EAEC0BCD1D4E30CE00C908A3 /* Info.plist */,
+ );
+ path = SwaggerClient;
+ sourceTree = "";
+ };
+ EAEC0BD51D4E30CE00C908A3 /* SwaggerClientTests */ = {
+ isa = PBXGroup;
+ children = (
+ EAEC0BD81D4E30CE00C908A3 /* Info.plist */,
+ EAEC0BE31D4E330700C908A3 /* PetAPITests.swift */,
+ EAEC0BE51D4E379000C908A3 /* StoreAPITests.swift */,
+ EAEC0BE71D4E38CB00C908A3 /* UserAPITests.swift */,
+ );
+ path = SwaggerClientTests;
+ sourceTree = "";
+ };
+/* End PBXGroup section */
+
+/* Begin PBXNativeTarget section */
+ EAEC0BBD1D4E30CE00C908A3 /* SwaggerClient */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = EAEC0BDB1D4E30CE00C908A3 /* Build configuration list for PBXNativeTarget "SwaggerClient" */;
+ buildPhases = (
+ 898E536ECC2C4811DDDF67C1 /* [CP] Check Pods Manifest.lock */,
+ EAEC0BBA1D4E30CE00C908A3 /* Sources */,
+ EAEC0BBB1D4E30CE00C908A3 /* Frameworks */,
+ EAEC0BBC1D4E30CE00C908A3 /* Resources */,
+ 8A7961360961F06AADAF17C9 /* [CP] Embed Pods Frameworks */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ );
+ name = SwaggerClient;
+ productName = SwaggerClient;
+ productReference = EAEC0BBE1D4E30CE00C908A3 /* SwaggerClient.app */;
+ productType = "com.apple.product-type.application";
+ };
+ EAEC0BD11D4E30CE00C908A3 /* SwaggerClientTests */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = EAEC0BDE1D4E30CE00C908A3 /* Build configuration list for PBXNativeTarget "SwaggerClientTests" */;
+ buildPhases = (
+ 82CB35D52E274C6177DAC0DD /* [CP] Check Pods Manifest.lock */,
+ EAEC0BCE1D4E30CE00C908A3 /* Sources */,
+ EAEC0BCF1D4E30CE00C908A3 /* Frameworks */,
+ EAEC0BD01D4E30CE00C908A3 /* Resources */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ EAEC0BD41D4E30CE00C908A3 /* PBXTargetDependency */,
+ );
+ name = SwaggerClientTests;
+ productName = SwaggerClientTests;
+ productReference = EAEC0BD21D4E30CE00C908A3 /* SwaggerClientTests.xctest */;
+ productType = "com.apple.product-type.bundle.unit-test";
+ };
+/* End PBXNativeTarget section */
+
+/* Begin PBXProject section */
+ EAEC0BB61D4E30CE00C908A3 /* Project object */ = {
+ isa = PBXProject;
+ attributes = {
+ LastSwiftUpdateCheck = 0730;
+ LastUpgradeCheck = 0800;
+ ORGANIZATIONNAME = Swagger;
+ TargetAttributes = {
+ EAEC0BBD1D4E30CE00C908A3 = {
+ CreatedOnToolsVersion = 7.3.1;
+ LastSwiftMigration = 0800;
+ };
+ EAEC0BD11D4E30CE00C908A3 = {
+ CreatedOnToolsVersion = 7.3.1;
+ LastSwiftMigration = 0800;
+ TestTargetID = EAEC0BBD1D4E30CE00C908A3;
+ };
+ };
+ };
+ buildConfigurationList = EAEC0BB91D4E30CE00C908A3 /* Build configuration list for PBXProject "SwaggerClient" */;
+ compatibilityVersion = "Xcode 3.2";
+ developmentRegion = English;
+ hasScannedForEncodings = 0;
+ knownRegions = (
+ en,
+ Base,
+ );
+ mainGroup = EAEC0BB51D4E30CE00C908A3;
+ productRefGroup = EAEC0BBF1D4E30CE00C908A3 /* Products */;
+ projectDirPath = "";
+ projectRoot = "";
+ targets = (
+ EAEC0BBD1D4E30CE00C908A3 /* SwaggerClient */,
+ EAEC0BD11D4E30CE00C908A3 /* SwaggerClientTests */,
+ );
+ };
+/* End PBXProject section */
+
+/* Begin PBXResourcesBuildPhase section */
+ EAEC0BBC1D4E30CE00C908A3 /* Resources */ = {
+ isa = PBXResourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ EAEC0BCC1D4E30CE00C908A3 /* LaunchScreen.storyboard in Resources */,
+ EAEC0BC91D4E30CE00C908A3 /* Assets.xcassets in Resources */,
+ EAEC0BC71D4E30CE00C908A3 /* Main.storyboard in Resources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ EAEC0BD01D4E30CE00C908A3 /* Resources */ = {
+ isa = PBXResourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXResourcesBuildPhase section */
+
+/* Begin PBXShellScriptBuildPhase section */
+ 82CB35D52E274C6177DAC0DD /* [CP] Check Pods Manifest.lock */ = {
+ isa = PBXShellScriptBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ inputPaths = (
+ "${PODS_PODFILE_DIR_PATH}/Podfile.lock",
+ "${PODS_ROOT}/Manifest.lock",
+ );
+ name = "[CP] Check Pods Manifest.lock";
+ outputPaths = (
+ "$(DERIVED_FILE_DIR)/Pods-SwaggerClientTests-checkManifestLockResult.txt",
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ shellPath = /bin/sh;
+ shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
+ showEnvVarsInLog = 0;
+ };
+ 898E536ECC2C4811DDDF67C1 /* [CP] Check Pods Manifest.lock */ = {
+ isa = PBXShellScriptBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ inputPaths = (
+ "${PODS_PODFILE_DIR_PATH}/Podfile.lock",
+ "${PODS_ROOT}/Manifest.lock",
+ );
+ name = "[CP] Check Pods Manifest.lock";
+ outputPaths = (
+ "$(DERIVED_FILE_DIR)/Pods-SwaggerClient-checkManifestLockResult.txt",
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ shellPath = /bin/sh;
+ shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
+ showEnvVarsInLog = 0;
+ };
+ 8A7961360961F06AADAF17C9 /* [CP] Embed Pods Frameworks */ = {
+ isa = PBXShellScriptBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ inputPaths = (
+ "${SRCROOT}/Pods/Target Support Files/Pods-SwaggerClient/Pods-SwaggerClient-frameworks.sh",
+ "${BUILT_PRODUCTS_DIR}/Alamofire/Alamofire.framework",
+ "${BUILT_PRODUCTS_DIR}/PetstoreClient/PetstoreClient.framework",
+ "${BUILT_PRODUCTS_DIR}/RxSwift/RxSwift.framework",
+ );
+ name = "[CP] Embed Pods Frameworks";
+ outputPaths = (
+ "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Alamofire.framework",
+ "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/PetstoreClient.framework",
+ "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/RxSwift.framework",
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ shellPath = /bin/sh;
+ shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-SwaggerClient/Pods-SwaggerClient-frameworks.sh\"\n";
+ showEnvVarsInLog = 0;
+ };
+/* End PBXShellScriptBuildPhase section */
+
+/* Begin PBXSourcesBuildPhase section */
+ EAEC0BBA1D4E30CE00C908A3 /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ EAEC0BC41D4E30CE00C908A3 /* ViewController.swift in Sources */,
+ EAEC0BC21D4E30CE00C908A3 /* AppDelegate.swift in Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ EAEC0BCE1D4E30CE00C908A3 /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ EAEC0BE81D4E38CB00C908A3 /* UserAPITests.swift in Sources */,
+ EAEC0BE61D4E379000C908A3 /* StoreAPITests.swift in Sources */,
+ EAEC0BE41D4E330700C908A3 /* PetAPITests.swift in Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXSourcesBuildPhase section */
+
+/* Begin PBXTargetDependency section */
+ EAEC0BD41D4E30CE00C908A3 /* PBXTargetDependency */ = {
+ isa = PBXTargetDependency;
+ target = EAEC0BBD1D4E30CE00C908A3 /* SwaggerClient */;
+ targetProxy = EAEC0BD31D4E30CE00C908A3 /* PBXContainerItemProxy */;
+ };
+/* End PBXTargetDependency section */
+
+/* Begin PBXVariantGroup section */
+ EAEC0BC51D4E30CE00C908A3 /* Main.storyboard */ = {
+ isa = PBXVariantGroup;
+ children = (
+ EAEC0BC61D4E30CE00C908A3 /* Base */,
+ );
+ name = Main.storyboard;
+ sourceTree = "";
+ };
+ EAEC0BCA1D4E30CE00C908A3 /* LaunchScreen.storyboard */ = {
+ isa = PBXVariantGroup;
+ children = (
+ EAEC0BCB1D4E30CE00C908A3 /* Base */,
+ );
+ name = LaunchScreen.storyboard;
+ sourceTree = "";
+ };
+/* End PBXVariantGroup section */
+
+/* Begin XCBuildConfiguration section */
+ EAEC0BD91D4E30CE00C908A3 /* Debug */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ALWAYS_SEARCH_USER_PATHS = NO;
+ CLANG_ANALYZER_NONNULL = YES;
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
+ CLANG_CXX_LIBRARY = "libc++";
+ CLANG_ENABLE_MODULES = YES;
+ CLANG_ENABLE_OBJC_ARC = YES;
+ CLANG_WARN_BOOL_CONVERSION = YES;
+ CLANG_WARN_CONSTANT_CONVERSION = YES;
+ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+ CLANG_WARN_EMPTY_BODY = YES;
+ CLANG_WARN_ENUM_CONVERSION = YES;
+ CLANG_WARN_INFINITE_RECURSION = YES;
+ CLANG_WARN_INT_CONVERSION = YES;
+ CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+ CLANG_WARN_SUSPICIOUS_MOVE = YES;
+ CLANG_WARN_UNREACHABLE_CODE = YES;
+ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
+ COPY_PHASE_STRIP = NO;
+ DEBUG_INFORMATION_FORMAT = dwarf;
+ ENABLE_STRICT_OBJC_MSGSEND = YES;
+ ENABLE_TESTABILITY = YES;
+ GCC_C_LANGUAGE_STANDARD = gnu99;
+ GCC_DYNAMIC_NO_PIC = NO;
+ GCC_NO_COMMON_BLOCKS = YES;
+ GCC_OPTIMIZATION_LEVEL = 0;
+ GCC_PREPROCESSOR_DEFINITIONS = (
+ "DEBUG=1",
+ "$(inherited)",
+ );
+ GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+ GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+ GCC_WARN_UNDECLARED_SELECTOR = YES;
+ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+ GCC_WARN_UNUSED_FUNCTION = YES;
+ GCC_WARN_UNUSED_VARIABLE = YES;
+ IPHONEOS_DEPLOYMENT_TARGET = 9.3;
+ MTL_ENABLE_DEBUG_INFO = YES;
+ ONLY_ACTIVE_ARCH = YES;
+ SDKROOT = iphoneos;
+ SWIFT_OPTIMIZATION_LEVEL = "-Onone";
+ };
+ name = Debug;
+ };
+ EAEC0BDA1D4E30CE00C908A3 /* Release */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ALWAYS_SEARCH_USER_PATHS = NO;
+ CLANG_ANALYZER_NONNULL = YES;
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
+ CLANG_CXX_LIBRARY = "libc++";
+ CLANG_ENABLE_MODULES = YES;
+ CLANG_ENABLE_OBJC_ARC = YES;
+ CLANG_WARN_BOOL_CONVERSION = YES;
+ CLANG_WARN_CONSTANT_CONVERSION = YES;
+ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+ CLANG_WARN_EMPTY_BODY = YES;
+ CLANG_WARN_ENUM_CONVERSION = YES;
+ CLANG_WARN_INFINITE_RECURSION = YES;
+ CLANG_WARN_INT_CONVERSION = YES;
+ CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+ CLANG_WARN_SUSPICIOUS_MOVE = YES;
+ CLANG_WARN_UNREACHABLE_CODE = YES;
+ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
+ COPY_PHASE_STRIP = NO;
+ DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
+ ENABLE_NS_ASSERTIONS = NO;
+ ENABLE_STRICT_OBJC_MSGSEND = YES;
+ GCC_C_LANGUAGE_STANDARD = gnu99;
+ GCC_NO_COMMON_BLOCKS = YES;
+ GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+ GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+ GCC_WARN_UNDECLARED_SELECTOR = YES;
+ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+ GCC_WARN_UNUSED_FUNCTION = YES;
+ GCC_WARN_UNUSED_VARIABLE = YES;
+ IPHONEOS_DEPLOYMENT_TARGET = 9.3;
+ MTL_ENABLE_DEBUG_INFO = NO;
+ SDKROOT = iphoneos;
+ SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule";
+ VALIDATE_PRODUCT = YES;
+ };
+ name = Release;
+ };
+ EAEC0BDC1D4E30CE00C908A3 /* Debug */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = 8D99518E8E05FD856A952698 /* Pods-SwaggerClient.debug.xcconfig */;
+ buildSettings = {
+ ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
+ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+ INFOPLIST_FILE = SwaggerClient/Info.plist;
+ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
+ PRODUCT_BUNDLE_IDENTIFIER = com.swagger.SwaggerClient;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ SWIFT_VERSION = 3.0;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ };
+ name = Debug;
+ };
+ EAEC0BDD1D4E30CE00C908A3 /* Release */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = 2DEFA8828BD4E38FA5262F53 /* Pods-SwaggerClient.release.xcconfig */;
+ buildSettings = {
+ ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
+ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+ INFOPLIST_FILE = SwaggerClient/Info.plist;
+ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
+ PRODUCT_BUNDLE_IDENTIFIER = com.swagger.SwaggerClient;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ SWIFT_VERSION = 3.0;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ };
+ name = Release;
+ };
+ EAEC0BDF1D4E30CE00C908A3 /* Debug */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = 4EF2021609D112A6F5AE0F55 /* Pods-SwaggerClientTests.debug.xcconfig */;
+ buildSettings = {
+ BUNDLE_LOADER = "$(TEST_HOST)";
+ CLANG_ENABLE_MODULES = YES;
+ INFOPLIST_FILE = SwaggerClientTests/Info.plist;
+ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
+ PRODUCT_BUNDLE_IDENTIFIER = com.swagger.SwaggerClientTests;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ SWIFT_OPTIMIZATION_LEVEL = "-Onone";
+ SWIFT_VERSION = 3.0;
+ TEST_HOST = "$(BUILT_PRODUCTS_DIR)/SwaggerClient.app/SwaggerClient";
+ };
+ name = Debug;
+ };
+ EAEC0BE01D4E30CE00C908A3 /* Release */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = EFD8AB05F53C74985527D117 /* Pods-SwaggerClientTests.release.xcconfig */;
+ buildSettings = {
+ BUNDLE_LOADER = "$(TEST_HOST)";
+ CLANG_ENABLE_MODULES = YES;
+ INFOPLIST_FILE = SwaggerClientTests/Info.plist;
+ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
+ PRODUCT_BUNDLE_IDENTIFIER = com.swagger.SwaggerClientTests;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ SWIFT_VERSION = 3.0;
+ TEST_HOST = "$(BUILT_PRODUCTS_DIR)/SwaggerClient.app/SwaggerClient";
+ };
+ name = Release;
+ };
+/* End XCBuildConfiguration section */
+
+/* Begin XCConfigurationList section */
+ EAEC0BB91D4E30CE00C908A3 /* Build configuration list for PBXProject "SwaggerClient" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ EAEC0BD91D4E30CE00C908A3 /* Debug */,
+ EAEC0BDA1D4E30CE00C908A3 /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+ EAEC0BDB1D4E30CE00C908A3 /* Build configuration list for PBXNativeTarget "SwaggerClient" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ EAEC0BDC1D4E30CE00C908A3 /* Debug */,
+ EAEC0BDD1D4E30CE00C908A3 /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+ EAEC0BDE1D4E30CE00C908A3 /* Build configuration list for PBXNativeTarget "SwaggerClientTests" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ EAEC0BDF1D4E30CE00C908A3 /* Debug */,
+ EAEC0BE01D4E30CE00C908A3 /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+/* End XCConfigurationList section */
+ };
+ rootObject = EAEC0BB61D4E30CE00C908A3 /* Project object */;
+}
diff --git a/samples/client/petstore/objc/default/SwaggerClientTests/SwaggerClient.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/SwaggerClient.xcodeproj/project.xcworkspace/contents.xcworkspacedata
similarity index 100%
rename from samples/client/petstore/objc/default/SwaggerClientTests/SwaggerClient.xcodeproj/project.xcworkspace/contents.xcworkspacedata
rename to CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/SwaggerClient.xcodeproj/project.xcworkspace/contents.xcworkspacedata
diff --git a/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/SwaggerClient.xcodeproj/xcshareddata/xcschemes/SwaggerClient.xcscheme b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/SwaggerClient.xcodeproj/xcshareddata/xcschemes/SwaggerClient.xcscheme
new file mode 100644
index 000000000000..7e4b2d97f313
--- /dev/null
+++ b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/SwaggerClient.xcodeproj/xcshareddata/xcschemes/SwaggerClient.xcscheme
@@ -0,0 +1,101 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/SwaggerClient.xcworkspace/contents.xcworkspacedata b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/SwaggerClient.xcworkspace/contents.xcworkspacedata
new file mode 100644
index 000000000000..9b3fa18954f7
--- /dev/null
+++ b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/SwaggerClient.xcworkspace/contents.xcworkspacedata
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
diff --git a/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/SwaggerClient/AppDelegate.swift b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/SwaggerClient/AppDelegate.swift
new file mode 100644
index 000000000000..cd894e005de4
--- /dev/null
+++ b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/SwaggerClient/AppDelegate.swift
@@ -0,0 +1,45 @@
+//
+// AppDelegate.swift
+// SwaggerClient
+//
+// Created by Tony Wang on 7/31/16.
+// Copyright © 2016 Swagger. All rights reserved.
+//
+
+import UIKit
+
+@UIApplicationMain
+class AppDelegate: UIResponder, UIApplicationDelegate {
+
+ var window: UIWindow?
+
+
+ func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
+ // Override point for customization after application launch.
+ return true
+ }
+
+ func applicationWillResignActive(_ application: UIApplication) {
+ // Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state.
+ // Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game.
+ }
+
+ func applicationDidEnterBackground(_ application: UIApplication) {
+ // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later.
+ // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits.
+ }
+
+ func applicationWillEnterForeground(_ application: UIApplication) {
+ // Called as part of the transition from the background to the inactive state; here you can undo many of the changes made on entering the background.
+ }
+
+ func applicationDidBecomeActive(_ application: UIApplication) {
+ // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface.
+ }
+
+ func applicationWillTerminate(_ application: UIApplication) {
+ // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:.
+ }
+
+
+}
diff --git a/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/SwaggerClient/Assets.xcassets/AppIcon.appiconset/Contents.json b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/SwaggerClient/Assets.xcassets/AppIcon.appiconset/Contents.json
new file mode 100644
index 000000000000..b8236c653481
--- /dev/null
+++ b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/SwaggerClient/Assets.xcassets/AppIcon.appiconset/Contents.json
@@ -0,0 +1,48 @@
+{
+ "images" : [
+ {
+ "idiom" : "iphone",
+ "size" : "20x20",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "iphone",
+ "size" : "20x20",
+ "scale" : "3x"
+ },
+ {
+ "idiom" : "iphone",
+ "size" : "29x29",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "iphone",
+ "size" : "29x29",
+ "scale" : "3x"
+ },
+ {
+ "idiom" : "iphone",
+ "size" : "40x40",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "iphone",
+ "size" : "40x40",
+ "scale" : "3x"
+ },
+ {
+ "idiom" : "iphone",
+ "size" : "60x60",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "iphone",
+ "size" : "60x60",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "version" : 1,
+ "author" : "xcode"
+ }
+}
\ No newline at end of file
diff --git a/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/SwaggerClient/Base.lproj/LaunchScreen.storyboard b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/SwaggerClient/Base.lproj/LaunchScreen.storyboard
new file mode 100644
index 000000000000..2e721e1833f0
--- /dev/null
+++ b/CI/samples.ci/client/petstore/swift3/rxswift/SwaggerClientTests/SwaggerClient/Base.lproj/LaunchScreen.storyboard
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+
+
+
+
+