From ec68132b8bfd027cadf4cc9b5d86c4aca6d22528 Mon Sep 17 00:00:00 2001 From: LJay79 Date: Fri, 17 May 2019 07:59:45 +0200 Subject: [PATCH 01/19] update node packages --- package-lock.json | 2741 +++++++++++++++++++++++++-------------------- package.json | 6 +- 2 files changed, 1508 insertions(+), 1239 deletions(-) diff --git a/package-lock.json b/package-lock.json index 5e3c1e7..0accf05 100644 --- a/package-lock.json +++ b/package-lock.json @@ -14,18 +14,18 @@ } }, "@babel/core": { - "version": "7.3.4", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.3.4.tgz", - "integrity": "sha512-jRsuseXBo9pN197KnDwhhaaBzyZr2oIcLHHTt2oDdQrej5Qp57dCCJafWx5ivU8/alEYDpssYqv1MUqcxwQlrA==", + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.4.4.tgz", + "integrity": "sha512-lQgGX3FPRgbz2SKmhMtYgJvVzGZrmjaF4apZ2bLwofAKiSjxU0drPh4S/VasyYXwaTs+A1gvQ45BN8SQJzHsQQ==", "dev": true, "requires": { "@babel/code-frame": "^7.0.0", - "@babel/generator": "^7.3.4", - "@babel/helpers": "^7.2.0", - "@babel/parser": "^7.3.4", - "@babel/template": "^7.2.2", - "@babel/traverse": "^7.3.4", - "@babel/types": "^7.3.4", + "@babel/generator": "^7.4.4", + "@babel/helpers": "^7.4.4", + "@babel/parser": "^7.4.4", + "@babel/template": "^7.4.4", + "@babel/traverse": "^7.4.4", + "@babel/types": "^7.4.4", "convert-source-map": "^1.1.0", "debug": "^4.1.0", "json5": "^2.1.0", @@ -53,12 +53,12 @@ } }, "@babel/generator": { - "version": "7.3.4", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.3.4.tgz", - "integrity": "sha512-8EXhHRFqlVVWXPezBW5keTiQi/rJMQTg/Y9uVCEZ0CAF3PKtCCaVRnp64Ii1ujhkoDhhF1fVsImoN4yJ2uz4Wg==", + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.4.4.tgz", + "integrity": "sha512-53UOLK6TVNqKxf7RUh8NE851EHRxOOeVXKbK2bivdb+iziMyk03Sr4eaE9OELCbyZAAafAKPDwF2TPUES5QbxQ==", "dev": true, "requires": { - "@babel/types": "^7.3.4", + "@babel/types": "^7.4.4", "jsesc": "^2.5.1", "lodash": "^4.17.11", "source-map": "^0.5.0", @@ -92,23 +92,23 @@ "dev": true }, "@babel/helper-split-export-declaration": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.0.0.tgz", - "integrity": "sha512-MXkOJqva62dfC0w85mEf/LucPPS/1+04nmmRMPEBUB++hiiThQ2zPtX/mEWQ3mtzCEjIJvPY8nuwxXtQeQwUag==", + "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.0.0" + "@babel/types": "^7.4.4" } }, "@babel/helpers": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.3.1.tgz", - "integrity": "sha512-Q82R3jKsVpUV99mgX50gOPCWwco9Ec5Iln/8Vyu4osNIOQgSrd9RFrQeUvmvddFNoLwMyOUWU+5ckioEKpDoGA==", + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.4.4.tgz", + "integrity": "sha512-igczbR/0SeuPR8RFfC7tGrbdTbFL3QTvH6D+Z6zNxnTe//GyqmtHmDkzrqDmyZ3eSwPqB/LhyKoU5DXsp+Vp2A==", "dev": true, "requires": { - "@babel/template": "^7.1.2", - "@babel/traverse": "^7.1.5", - "@babel/types": "^7.3.0" + "@babel/template": "^7.4.4", + "@babel/traverse": "^7.4.4", + "@babel/types": "^7.4.4" } }, "@babel/highlight": { @@ -123,9 +123,9 @@ } }, "@babel/parser": { - "version": "7.3.4", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.3.4.tgz", - "integrity": "sha512-tXZCqWtlOOP4wgCp6RjRvLmfuhnqTLy9VHwRochJBCP2nDm27JnnuFEnXFASVyQNHk36jD1tAammsCEEqgscIQ==", + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.4.4.tgz", + "integrity": "sha512-5pCS4mOsL+ANsFZGdvNLybx4wtqAZJ0MJjMHxvzI3bvIsz6sQvzW8XX92EYIkiPtIvcfG3Aj+Ir5VNyjnZhP7w==", "dev": true }, "@babel/plugin-syntax-object-rest-spread": { @@ -138,28 +138,28 @@ } }, "@babel/template": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.2.2.tgz", - "integrity": "sha512-zRL0IMM02AUDwghf5LMSSDEz7sBCO2YnNmpg3uWTZj/v1rcG2BmQUvaGU8GhU8BvfMh1k2KIAYZ7Ji9KXPUg7g==", + "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.2.2", - "@babel/types": "^7.2.2" + "@babel/parser": "^7.4.4", + "@babel/types": "^7.4.4" } }, "@babel/traverse": { - "version": "7.3.4", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.3.4.tgz", - "integrity": "sha512-TvTHKp6471OYEcE/91uWmhR6PrrYywQntCHSaZ8CM8Vmp+pjAusal4nGB2WCCQd0rvI7nOMKn9GnbcvTUz3/ZQ==", + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.4.4.tgz", + "integrity": "sha512-Gw6qqkw/e6AGzlyj9KnkabJX7VcubqPtkUQVAwkc0wUMldr3A/hezNB3Rc5eIvId95iSGkGIOe5hh1kMKf951A==", "dev": true, "requires": { "@babel/code-frame": "^7.0.0", - "@babel/generator": "^7.3.4", + "@babel/generator": "^7.4.4", "@babel/helper-function-name": "^7.1.0", - "@babel/helper-split-export-declaration": "^7.0.0", - "@babel/parser": "^7.3.4", - "@babel/types": "^7.3.4", + "@babel/helper-split-export-declaration": "^7.4.4", + "@babel/parser": "^7.4.4", + "@babel/types": "^7.4.4", "debug": "^4.1.0", "globals": "^11.1.0", "lodash": "^4.17.11" @@ -183,9 +183,9 @@ } }, "@babel/types": { - "version": "7.3.4", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.3.4.tgz", - "integrity": "sha512-WEkp8MsLftM7O/ty580wAmZzN1nDmCACc5+jFzUt+GUFNNIi3LdRlueYz0YIlmJhlZx1QYDMZL5vdWCL0fNjFQ==", + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.4.4.tgz", + "integrity": "sha512-dOllgYdnEFOebhkKCjzSVFqw/PmmB8pH6RGOWkY4GsboQNd47b1fBThBSwlHAq9alF9vc1M3+6oqR47R50L0tQ==", "dev": true, "requires": { "esutils": "^2.0.2", @@ -193,20 +193,10 @@ "to-fast-properties": "^2.0.0" } }, - "@cnakazawa/watch": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@cnakazawa/watch/-/watch-1.0.3.tgz", - "integrity": "sha512-r5160ogAvGyHsal38Kux7YYtodEKOj89RGb28ht1jh3SJb08VwRwAKKJL0bGb04Zd/3r9FL3BFIc3bBidYffCA==", - "dev": true, - "requires": { - "exec-sh": "^0.3.2", - "minimist": "^1.2.0" - } - }, "@google/clasp": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@google/clasp/-/clasp-2.0.1.tgz", - "integrity": "sha512-FdxpFk4/HfY+nGWcwZuUqThQOmVuhcckv7KOG7ePqJDjJRJlA+1+k9WwLp+CiNCb/OEkhmANORXePgF1mGEcyw==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@google/clasp/-/clasp-2.1.0.tgz", + "integrity": "sha512-6cryoM5k8E95SMEriPEhEJU3HHtx0LUZahhQlfXvJjPSTeSJXjC9Ka6nxamhsgpAGozVrbvt675edfFL6nRCeg==", "dev": true, "requires": { "chalk": "^2.4.1", @@ -219,8 +209,8 @@ "find-parent-dir": "^0.3.0", "fs": "^0.0.1-security", "fuzzy": "^0.1.3", - "google-auth-library": "^2.0.0", - "googleapis": "^36.0.0", + "google-auth-library": "^3.1.0", + "googleapis": "^37.2.0", "inquirer": "^5.2.0", "inquirer-autocomplete-prompt": "1.0.1", "is-online": "^7.0.0", @@ -235,72 +225,50 @@ "recursive-readdir": "^2.2.2", "split-lines": "^1.1.0", "string.prototype.padend": "^3.0.0", - "ts2gas": "1.6.0", + "ts2gas": "^1.6.1", "ucfirst": "^1.0.0", "url": "^0.11.0", "watch": "^1.0.2" - }, - "dependencies": { - "exec-sh": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/exec-sh/-/exec-sh-0.2.2.tgz", - "integrity": "sha512-FIUCJz1RbuS0FKTdaAafAByGS0CPvU3R0MeHxgtl+djzCc//F8HakL8GzmVNZanasTbTAY/3DRFA0KpVqj/eAw==", - "dev": true, - "requires": { - "merge": "^1.2.0" - } - }, - "watch": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/watch/-/watch-1.0.2.tgz", - "integrity": "sha1-NApxe952Vyb6CqB9ch4BR6VR3ww=", - "dev": true, - "requires": { - "exec-sh": "^0.2.0", - "minimist": "^1.2.0" - } - } } }, "@jest/console": { - "version": "24.3.0", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-24.3.0.tgz", - "integrity": "sha512-NaCty/OOei6rSDcbPdMiCbYCI0KGFGPgGO6B09lwWt5QTxnkuhKYET9El5u5z1GAcSxkQmSMtM63e24YabCWqA==", + "version": "24.7.1", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-24.7.1.tgz", + "integrity": "sha512-iNhtIy2M8bXlAOULWVTUxmnelTLFneTNEkHCgPmgd+zNwy9zVddJ6oS5rZ9iwoscNdT5mMwUd0C51v/fSlzItg==", "dev": true, "requires": { "@jest/source-map": "^24.3.0", - "@types/node": "*", "chalk": "^2.0.1", "slash": "^2.0.0" } }, "@jest/core": { - "version": "24.5.0", - "resolved": "https://registry.npmjs.org/@jest/core/-/core-24.5.0.tgz", - "integrity": "sha512-RDZArRzAs51YS7dXG1pbXbWGxK53rvUu8mCDYsgqqqQ6uSOaTjcVyBl2Jce0exT2rSLk38ca7az7t2f3b0/oYQ==", + "version": "24.8.0", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-24.8.0.tgz", + "integrity": "sha512-R9rhAJwCBQzaRnrRgAdVfnglUuATXdwTRsYqs6NMdVcAl5euG8LtWDe+fVkN27YfKVBW61IojVsXKaOmSnqd/A==", "dev": true, "requires": { - "@jest/console": "^24.3.0", - "@jest/reporters": "^24.5.0", - "@jest/test-result": "^24.5.0", - "@jest/transform": "^24.5.0", - "@jest/types": "^24.5.0", + "@jest/console": "^24.7.1", + "@jest/reporters": "^24.8.0", + "@jest/test-result": "^24.8.0", + "@jest/transform": "^24.8.0", + "@jest/types": "^24.8.0", "ansi-escapes": "^3.0.0", "chalk": "^2.0.1", "exit": "^0.1.2", "graceful-fs": "^4.1.15", - "jest-changed-files": "^24.5.0", - "jest-config": "^24.5.0", - "jest-haste-map": "^24.5.0", - "jest-message-util": "^24.5.0", + "jest-changed-files": "^24.8.0", + "jest-config": "^24.8.0", + "jest-haste-map": "^24.8.0", + "jest-message-util": "^24.8.0", "jest-regex-util": "^24.3.0", - "jest-resolve-dependencies": "^24.5.0", - "jest-runner": "^24.5.0", - "jest-runtime": "^24.5.0", - "jest-snapshot": "^24.5.0", - "jest-util": "^24.5.0", - "jest-validate": "^24.5.0", - "jest-watcher": "^24.5.0", + "jest-resolve-dependencies": "^24.8.0", + "jest-runner": "^24.8.0", + "jest-runtime": "^24.8.0", + "jest-snapshot": "^24.8.0", + "jest-util": "^24.8.0", + "jest-validate": "^24.8.0", + "jest-watcher": "^24.8.0", "micromatch": "^3.1.10", "p-each-series": "^1.0.0", "pirates": "^4.0.1", @@ -316,9 +284,9 @@ "dev": true }, "strip-ansi": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.1.0.tgz", - "integrity": "sha512-TjxrkPONqO2Z8QDCpeE2j6n0M6EwxzyDgzEeGp+FbdvaJAt//ClYi6W5my+3ROlC/hZX2KACUwDfK49Ka5eDvg==", + "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" @@ -327,52 +295,51 @@ } }, "@jest/environment": { - "version": "24.5.0", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-24.5.0.tgz", - "integrity": "sha512-tzUHR9SHjMXwM8QmfHb/EJNbF0fjbH4ieefJBvtwO8YErLTrecc1ROj0uo2VnIT6SlpEGZnvdCK6VgKYBo8LsA==", + "version": "24.8.0", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-24.8.0.tgz", + "integrity": "sha512-vlGt2HLg7qM+vtBrSkjDxk9K0YtRBi7HfRFaDxoRtyi+DyVChzhF20duvpdAnKVBV6W5tym8jm0U9EfXbDk1tw==", "dev": true, "requires": { - "@jest/fake-timers": "^24.5.0", - "@jest/transform": "^24.5.0", - "@jest/types": "^24.5.0", - "@types/node": "*", - "jest-mock": "^24.5.0" + "@jest/fake-timers": "^24.8.0", + "@jest/transform": "^24.8.0", + "@jest/types": "^24.8.0", + "jest-mock": "^24.8.0" } }, "@jest/fake-timers": { - "version": "24.5.0", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-24.5.0.tgz", - "integrity": "sha512-i59KVt3QBz9d+4Qr4QxsKgsIg+NjfuCjSOWj3RQhjF5JNy+eVJDhANQ4WzulzNCHd72srMAykwtRn5NYDGVraw==", + "version": "24.8.0", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-24.8.0.tgz", + "integrity": "sha512-2M4d5MufVXwi6VzZhJ9f5S/wU4ud2ck0kxPof1Iz3zWx6Y+V2eJrES9jEktB6O3o/oEyk+il/uNu9PvASjWXQw==", "dev": true, "requires": { - "@jest/types": "^24.5.0", - "@types/node": "*", - "jest-message-util": "^24.5.0", - "jest-mock": "^24.5.0" + "@jest/types": "^24.8.0", + "jest-message-util": "^24.8.0", + "jest-mock": "^24.8.0" } }, "@jest/reporters": { - "version": "24.5.0", - "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-24.5.0.tgz", - "integrity": "sha512-vfpceiaKtGgnuC3ss5czWOihKOUSyjJA4M4udm6nH8xgqsuQYcyDCi4nMMcBKsHXWgz9/V5G7iisnZGfOh1w6Q==", + "version": "24.8.0", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-24.8.0.tgz", + "integrity": "sha512-eZ9TyUYpyIIXfYCrw0UHUWUvE35vx5I92HGMgS93Pv7du+GHIzl+/vh8Qj9MCWFK/4TqyttVBPakWMOfZRIfxw==", "dev": true, "requires": { - "@jest/environment": "^24.5.0", - "@jest/test-result": "^24.5.0", - "@jest/transform": "^24.5.0", - "@jest/types": "^24.5.0", + "@jest/environment": "^24.8.0", + "@jest/test-result": "^24.8.0", + "@jest/transform": "^24.8.0", + "@jest/types": "^24.8.0", "chalk": "^2.0.1", "exit": "^0.1.2", "glob": "^7.1.2", - "istanbul-api": "^2.1.1", "istanbul-lib-coverage": "^2.0.2", "istanbul-lib-instrument": "^3.0.1", + "istanbul-lib-report": "^2.0.4", "istanbul-lib-source-maps": "^3.0.1", - "jest-haste-map": "^24.5.0", - "jest-resolve": "^24.5.0", - "jest-runtime": "^24.5.0", - "jest-util": "^24.5.0", - "jest-worker": "^24.4.0", + "istanbul-reports": "^2.1.1", + "jest-haste-map": "^24.8.0", + "jest-resolve": "^24.8.0", + "jest-runtime": "^24.8.0", + "jest-util": "^24.8.0", + "jest-worker": "^24.6.0", "node-notifier": "^5.2.1", "slash": "^2.0.0", "source-map": "^0.6.0", @@ -407,32 +374,44 @@ } }, "@jest/test-result": { - "version": "24.5.0", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-24.5.0.tgz", - "integrity": "sha512-u66j2vBfa8Bli1+o3rCaVnVYa9O8CAFZeqiqLVhnarXtreSXG33YQ6vNYBogT7+nYiFNOohTU21BKiHlgmxD5A==", + "version": "24.8.0", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-24.8.0.tgz", + "integrity": "sha512-+YdLlxwizlfqkFDh7Mc7ONPQAhA4YylU1s529vVM1rsf67vGZH/2GGm5uO8QzPeVyaVMobCQ7FTxl38QrKRlng==", + "dev": true, + "requires": { + "@jest/console": "^24.7.1", + "@jest/types": "^24.8.0", + "@types/istanbul-lib-coverage": "^2.0.0" + } + }, + "@jest/test-sequencer": { + "version": "24.8.0", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-24.8.0.tgz", + "integrity": "sha512-OzL/2yHyPdCHXEzhoBuq37CE99nkme15eHkAzXRVqthreWZamEMA0WoetwstsQBCXABhczpK03JNbc4L01vvLg==", "dev": true, "requires": { - "@jest/console": "^24.3.0", - "@jest/types": "^24.5.0", - "@types/istanbul-lib-coverage": "^1.1.0" + "@jest/test-result": "^24.8.0", + "jest-haste-map": "^24.8.0", + "jest-runner": "^24.8.0", + "jest-runtime": "^24.8.0" } }, "@jest/transform": { - "version": "24.5.0", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-24.5.0.tgz", - "integrity": "sha512-XSsDz1gdR/QMmB8UCKlweAReQsZrD/DK7FuDlNo/pE8EcKMrfi2kqLRk8h8Gy/PDzgqJj64jNEzOce9pR8oj1w==", + "version": "24.8.0", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-24.8.0.tgz", + "integrity": "sha512-xBMfFUP7TortCs0O+Xtez2W7Zu1PLH9bvJgtraN1CDST6LBM/eTOZ9SfwS/lvV8yOfcDpFmwf9bq5cYbXvqsvA==", "dev": true, "requires": { "@babel/core": "^7.1.0", - "@jest/types": "^24.5.0", + "@jest/types": "^24.8.0", "babel-plugin-istanbul": "^5.1.0", "chalk": "^2.0.1", "convert-source-map": "^1.4.0", "fast-json-stable-stringify": "^2.0.0", "graceful-fs": "^4.1.15", - "jest-haste-map": "^24.5.0", + "jest-haste-map": "^24.8.0", "jest-regex-util": "^24.3.0", - "jest-util": "^24.5.0", + "jest-util": "^24.8.0", "micromatch": "^3.1.10", "realpath-native": "^1.1.0", "slash": "^2.0.0", @@ -449,12 +428,13 @@ } }, "@jest/types": { - "version": "24.5.0", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-24.5.0.tgz", - "integrity": "sha512-kN7RFzNMf2R8UDadPOl6ReyI+MT8xfqRuAnuVL+i4gwjv/zubdDK+EDeLHYwq1j0CSSR2W/MmgaRlMZJzXdmVA==", + "version": "24.8.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-24.8.0.tgz", + "integrity": "sha512-g17UxVr2YfBtaMUxn9u/4+siG1ptg9IGYAYwvpwn61nBg779RXnjE/m7CxYcIzEt0AbHZZAHSEZNhkE2WxURVg==", "dev": true, "requires": { - "@types/istanbul-lib-coverage": "^1.1.0", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^1.1.1", "@types/yargs": "^12.0.9" } }, @@ -465,9 +445,9 @@ "dev": true }, "@types/babel__core": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.0.tgz", - "integrity": "sha512-wJTeJRt7BToFx3USrCDs2BhEi4ijBInTQjOIukj6a/5tEkwpFMVZ+1ppgmE+Q/FQyc5P/VWUbx7I9NELrKruHA==", + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.2.tgz", + "integrity": "sha512-cfCCrFmiGY/yq0NuKNxIQvZFy9kY/1immpSpTngOnyIbD4+eJOG5mxphhHDv3CHL9GltO4GcKr54kGBg3RNdbg==", "dev": true, "requires": { "@babel/parser": "^7.1.0", @@ -511,16 +491,29 @@ "integrity": "sha512-rm5ojk+E1IbVKUoKvEypp9aJVcr6+uFIghznf+rmu+waX9e6bOU/kP4uBliAw1V/FM1pcbVBozSLTYxBoY5mow==" }, "@types/istanbul-lib-coverage": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-1.1.0.tgz", - "integrity": "sha512-ohkhb9LehJy+PA40rDtGAji61NCgdtKLAlFoYp4cnuuQEswwdK3vz9SOIkkyc3wrk8dzjphQApNs56yyXLStaQ==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.1.tgz", + "integrity": "sha512-hRJD2ahnnpLgsj6KWMYSrmXkM3rm2Dl1qkx6IOFD5FnuNPXJIG5L0dhgKXCYTRMGzU4n0wImQ/xfmRc4POUFlg==", "dev": true }, - "@types/node": { - "version": "11.11.3", - "resolved": "https://registry.npmjs.org/@types/node/-/node-11.11.3.tgz", - "integrity": "sha512-wp6IOGu1lxsfnrD+5mX6qwSwWuqsdkKKxTN4aQc4wByHAKZJf9/D4KXPQ1POUjEbnCP5LMggB0OEFNY9OTsMqg==", - "dev": true + "@types/istanbul-lib-report": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-1.1.1.tgz", + "integrity": "sha512-3BUTyMzbZa2DtDI2BkERNC6jJw2Mr2Y0oGI7mRxYNBPxppbtEK1F66u3bKwU2g+wxwWI7PAoRpJnOY1grJqzHg==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "*" + } + }, + "@types/istanbul-reports": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-1.1.1.tgz", + "integrity": "sha512-UpYjBi8xefVChsCoBpKShdxTllC9pwISirfoZsUa2AAdQg/Jd2KQGtSbw+ya7GPo7x/wAPlH6JBhKhAsXUEZNA==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "*", + "@types/istanbul-lib-report": "*" + } }, "@types/stack-utils": { "version": "1.0.1", @@ -529,9 +522,9 @@ "dev": true }, "@types/yargs": { - "version": "12.0.9", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-12.0.9.tgz", - "integrity": "sha512-sCZy4SxP9rN2w30Hlmg5dtdRwgYQfYRiLo9usw8X9cxlf+H4FqM1xX7+sNH7NNKVdbXMJWqva7iyy+fxh/V7fA==", + "version": "12.0.12", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-12.0.12.tgz", + "integrity": "sha512-SOhuU4wNBxhhTHxYaiG5NY4HBhDIDnJF60GU+2LqHAdKKer86//e4yg69aENCtQ04n0ovz+tq2YPME5t5yp4pw==", "dev": true }, "abab": { @@ -547,9 +540,9 @@ "dev": true }, "abort-controller": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-2.0.2.tgz", - "integrity": "sha512-JXEYGxxMwiNl9EUdLysK0K0DwB7ENw6KeeaLHgofijTfJYPB/vOer3Mb+IcP913dCfWiQsd05MmVNl0H5PanrQ==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", + "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", "dev": true, "requires": { "event-target-shim": "^5.0.0" @@ -562,9 +555,9 @@ "dev": true }, "acorn-globals": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-4.3.0.tgz", - "integrity": "sha512-hMtHj3s5RnuhvHPowpBYvJVj3rAar82JiDQHvGs1zO0l10ocX/xEdBShNHTJaboucJUsScghp74pH3s7EnHHQw==", + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-4.3.2.tgz", + "integrity": "sha512-BbzvZhVtZP+Bs1J1HcwrQe8ycfO0wStkSGxuul3He3GkHOIZ6eTqOkPuw9IP1X3+IkOo4wiJmwkobzXYz4wewQ==", "dev": true, "requires": { "acorn": "^6.0.1", @@ -641,9 +634,9 @@ } }, "ansi-escapes": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.1.0.tgz", - "integrity": "sha512-UgAb8H9D41AQnu/PbWlCofQVcnV4Gs2bBJi9eZPxfU/hgglFh3SMDMENRIqdr7H6XFnXdoknctFByVsCOotTVw==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", + "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", "dev": true }, "ansi-gray": { @@ -704,39 +697,12 @@ "buffer-equal": "^1.0.0" } }, - "append-transform": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-1.0.0.tgz", - "integrity": "sha512-P009oYkeHyU742iSZJzZZywj4QRJdnTWffaKuJQLablCZ1uz6/cW4yaRgcDaoQ+uwOxxnt0gRUcwfsNP2ri0gw==", - "dev": true, - "requires": { - "default-require-extensions": "^2.0.0" - } - }, - "aproba": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", - "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", - "dev": true, - "optional": true - }, "archy": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=", "dev": true }, - "are-we-there-yet": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz", - "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==", - "dev": true, - "optional": true, - "requires": { - "delegates": "^1.0.0", - "readable-stream": "^2.0.6" - } - }, "argparse": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", @@ -914,15 +880,6 @@ "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", "dev": true }, - "async": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.2.tgz", - "integrity": "sha512-H1qVYh1MYhEEFLsP97cVKqCGo7KfCyTt6uEWqsTBr9SO84oK9Uwbyd/yCW+6rKJLHksBNUVWZDAjfS+Ccx0Bbg==", - "dev": true, - "requires": { - "lodash": "^4.17.11" - } - }, "async-done": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/async-done/-/async-done-1.3.1.tgz", @@ -933,12 +890,20 @@ "once": "^1.3.2", "process-nextick-args": "^1.0.7", "stream-exhaust": "^1.0.1" + }, + "dependencies": { + "process-nextick-args": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", + "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=", + "dev": true + } } }, "async-each": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz", - "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=", + "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 }, "async-limiter": { @@ -980,40 +945,30 @@ "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==", "dev": true }, - "axios": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.18.0.tgz", - "integrity": "sha1-MtU+SFHv3AoRmTts0AB4nXDAUQI=", - "dev": true, - "requires": { - "follow-redirects": "^1.3.0", - "is-buffer": "^1.1.5" - } - }, "babel-jest": { - "version": "24.5.0", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-24.5.0.tgz", - "integrity": "sha512-0fKCXyRwxFTJL0UXDJiT2xYxO9Lu2vBd9n+cC+eDjESzcVG3s2DRGAxbzJX21fceB1WYoBjAh8pQ83dKcl003g==", + "version": "24.8.0", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-24.8.0.tgz", + "integrity": "sha512-+5/kaZt4I9efoXzPlZASyK/lN9qdRKmmUav9smVc0ruPQD7IsfucQ87gpOE8mn2jbDuS6M/YOW6n3v9ZoIfgnw==", "dev": true, "requires": { - "@jest/transform": "^24.5.0", - "@jest/types": "^24.5.0", + "@jest/transform": "^24.8.0", + "@jest/types": "^24.8.0", "@types/babel__core": "^7.1.0", "babel-plugin-istanbul": "^5.1.0", - "babel-preset-jest": "^24.3.0", + "babel-preset-jest": "^24.6.0", "chalk": "^2.4.2", "slash": "^2.0.0" } }, "babel-plugin-istanbul": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-5.1.1.tgz", - "integrity": "sha512-RNNVv2lsHAXJQsEJ5jonQwrJVWK8AcZpG1oxhnjCUaAjL7xahYLANhPUZbzEQHjKy1NMYUwn+0NPKQc8iSY4xQ==", + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-5.1.4.tgz", + "integrity": "sha512-dySz4VJMH+dpndj0wjJ8JPs/7i1TdSPb1nRrn56/92pKOF9VKC1FMFJmMXjzlGGusnCAqujP6PBCiKq0sVA+YQ==", "dev": true, "requires": { "find-up": "^3.0.0", - "istanbul-lib-instrument": "^3.0.0", - "test-exclude": "^5.0.0" + "istanbul-lib-instrument": "^3.3.0", + "test-exclude": "^5.2.3" }, "dependencies": { "find-up": { @@ -1028,22 +983,22 @@ } }, "babel-plugin-jest-hoist": { - "version": "24.3.0", - "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-24.3.0.tgz", - "integrity": "sha512-nWh4N1mVH55Tzhx2isvUN5ebM5CDUvIpXPZYMRazQughie/EqGnbR+czzoQlhUmJG9pPJmYDRhvocotb2THl1w==", + "version": "24.6.0", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-24.6.0.tgz", + "integrity": "sha512-3pKNH6hMt9SbOv0F3WVmy5CWQ4uogS3k0GY5XLyQHJ9EGpAT9XWkFd2ZiXXtkwFHdAHa5j7w7kfxSP5lAIwu7w==", "dev": true, "requires": { "@types/babel__traverse": "^7.0.6" } }, "babel-preset-jest": { - "version": "24.3.0", - "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-24.3.0.tgz", - "integrity": "sha512-VGTV2QYBa/Kn3WCOKdfS31j9qomaXSgJqi65B6o05/1GsJyj9LVhSljM9ro4S+IBGj/ENhNBuH9bpqzztKAQSw==", + "version": "24.6.0", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-24.6.0.tgz", + "integrity": "sha512-pdZqLEdmy1ZK5kyRUfvBb2IfTPb2BUvIJczlPspS8fWmBQslNNDBqVfh7BW5leOVJMDZKzjD8XEyABTk6gQ5yw==", "dev": true, "requires": { "@babel/plugin-syntax-object-rest-spread": "^7.0.0", - "babel-plugin-jest-hoist": "^24.3.0" + "babel-plugin-jest-hoist": "^24.6.0" } }, "bach": { @@ -1121,9 +1076,21 @@ "is-data-descriptor": "^1.0.0", "kind-of": "^6.0.2" } + }, + "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 } } }, + "base64-js": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.0.tgz", + "integrity": "sha512-ccav/yGvoa80BQDljCxsmmQ3Xvx60/UpBIij5QN21W3wBi/hhIC9OoO+KLpu9IJTS9j4DRVJ3aDDF9cMSoa2lw==", + "dev": true + }, "bcrypt-pbkdf": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", @@ -1133,10 +1100,16 @@ "tweetnacl": "^0.14.3" } }, + "bignumber.js": { + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-7.2.1.tgz", + "integrity": "sha512-S4XzBk5sMB+Rcb/LNcpzXr57VRTxgAvaAEDAl1AwRx27j00hT84O6OkteE7u8UB3NuaaygCRrEpqox4uDOrbdQ==", + "dev": true + }, "binary-extensions": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.12.0.tgz", - "integrity": "sha512-DYWGk01lDcxeS/K9IHPGWfT8PsJmbXRtRd2Sx72Tnb8pcYZQFF1oSDb8hJtS1vhp212q1Rzi5dUf9+nq0o9UIg==", + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", + "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", "dev": true }, "binaryextensions": { @@ -1234,12 +1207,6 @@ "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", "dev": true }, - "builtin-modules": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", - "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", - "dev": true - }, "cache-base": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", @@ -1293,12 +1260,12 @@ "dev": true }, "capture-exit": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/capture-exit/-/capture-exit-1.2.0.tgz", - "integrity": "sha1-HF/MSJ/QqwDU8ax64QcuMXP7q28=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/capture-exit/-/capture-exit-2.0.0.tgz", + "integrity": "sha512-PiT/hQmTonHhl/HFGN+Lx3JJUznrVYJ3+AQsnthneZbvW7x+f08Tk7yLJTLEOUvBTbduLeeBkxEaYXUOUrRq6g==", "dev": true, "requires": { - "rsvp": "^3.3.3" + "rsvp": "^4.8.4" } }, "capture-stack-trace": { @@ -1331,33 +1298,33 @@ "dev": true }, "chokidar": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.0.4.tgz", - "integrity": "sha512-z9n7yt9rOvIJrMhvDtDictKrkFHeihkNl6uWMmZlmL6tJtX9Cs+87oK+teBx+JIgzvbX3yZHT3eF8vpbDxHJXQ==", + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.6.tgz", + "integrity": "sha512-V2jUo67OKkc6ySiRpJrjlpJKl9kDuG+Xb8VgsGzb+aEouhgS1D0weyPU4lEzdAcsCAvrih2J2BqyXqHWvVLw5g==", "dev": true, "requires": { "anymatch": "^2.0.0", - "async-each": "^1.0.0", - "braces": "^2.3.0", - "fsevents": "^1.2.2", + "async-each": "^1.0.1", + "braces": "^2.3.2", + "fsevents": "^1.2.7", "glob-parent": "^3.1.0", - "inherits": "^2.0.1", + "inherits": "^2.0.3", "is-binary-path": "^1.0.0", "is-glob": "^4.0.0", - "lodash.debounce": "^4.0.8", - "normalize-path": "^2.1.1", + "normalize-path": "^3.0.0", "path-is-absolute": "^1.0.0", - "readdirp": "^2.0.0", - "upath": "^1.0.5" + "readdirp": "^2.2.1", + "upath": "^1.1.1" + }, + "dependencies": { + "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 + } } }, - "chownr": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.1.tgz", - "integrity": "sha512-j38EvO5+LHX84jlo6h4UzmOwi0UgW61WRyPtJz4qaadK5eY3BTS5TY/S1Stc3Uk2lIM6TPevAlULiEJwie860g==", - "dev": true, - "optional": true - }, "ci-info": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", @@ -1403,9 +1370,9 @@ } }, "cli-spinner": { - "version": "0.2.8", - "resolved": "https://registry.npmjs.org/cli-spinner/-/cli-spinner-0.2.8.tgz", - "integrity": "sha512-Z4l0jljucEUsW/5GNaVYOpGgVmnB/Sq4l2vG9k7RbJYRZ97hVncP+BqRMemTZNBHZ4aYUPJPU/wl6zt/ZSqzPQ==", + "version": "0.2.10", + "resolved": "https://registry.npmjs.org/cli-spinner/-/cli-spinner-0.2.10.tgz", + "integrity": "sha512-U0sSQ+JJvSLi1pAYuJykwiA8Dsr15uHEy85iCJ6A+0DjVxivr3d+N2Wjvodeg89uP5K6TswFkKBfAD7B3YSn/Q==", "dev": true }, "cli-width": { @@ -1494,14 +1461,6 @@ "inherits": "^2.0.1", "process-nextick-args": "^2.0.0", "readable-stream": "^2.3.5" - }, - "dependencies": { - "process-nextick-args": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", - "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", - "dev": true - } } }, "co": { @@ -1559,30 +1518,24 @@ "dev": true }, "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==", + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", "dev": true, "requires": { "delayed-stream": "~1.0.0" } }, "commander": { - "version": "2.17.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.17.1.tgz", - "integrity": "sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg==", - "dev": true - }, - "compare-versions": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/compare-versions/-/compare-versions-3.4.0.tgz", - "integrity": "sha512-tK69D7oNXXqUW3ZNo/z7NXTEz22TCF0pTE+YF9cxvaAM9XnkLo1fV621xCLrRR6aevJlKxExkss0vWqUCUpqdg==", + "version": "2.20.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.0.tgz", + "integrity": "sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ==", "dev": true }, "component-emitter": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", - "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", + "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 }, "concat-map": { @@ -1615,12 +1568,6 @@ "utils-merge": "1.0.1" } }, - "console-control-strings": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", - "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", - "dev": true - }, "convert-source-map": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.6.0.tgz", @@ -1681,9 +1628,9 @@ "dev": true }, "cssstyle": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-1.2.1.tgz", - "integrity": "sha512-7DYm8qe+gPx/h77QlCyFmX80+fGaE/6A/Ekl0zaszYOubvySO2saYFdQ78P29D0UsULxFKCetDGNaNRUdSF+2A==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-1.2.2.tgz", + "integrity": "sha512-43wY3kl1CVQSvL7wUY1qXkxVGkStjpkDmVjiIKX8R97uhajy8Bybay78uOtqvh7Q5GK75dNPfW0geWjE6qQQow==", "dev": true, "requires": { "cssom": "0.3.x" @@ -1771,13 +1718,6 @@ "mimic-response": "^1.0.0" } }, - "deep-extend": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", - "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", - "dev": true, - "optional": true - }, "deep-is": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", @@ -1801,23 +1741,6 @@ } } }, - "default-require-extensions": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-2.0.0.tgz", - "integrity": "sha1-9fj7sYp9bVCyH2QfZJ67Uiz+JPc=", - "dev": true, - "requires": { - "strip-bom": "^3.0.0" - }, - "dependencies": { - "strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", - "dev": true - } - } - }, "default-resolution": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/default-resolution/-/default-resolution-2.0.0.tgz", @@ -1871,6 +1794,12 @@ "is-data-descriptor": "^1.0.0", "kind-of": "^6.0.2" } + }, + "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 } } }, @@ -1894,13 +1823,6 @@ "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", "dev": true }, - "delegates": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", - "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", - "dev": true, - "optional": true - }, "depd": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", @@ -1913,13 +1835,6 @@ "integrity": "sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc=", "dev": true }, - "detect-libc": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", - "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=", - "dev": true, - "optional": true - }, "detect-newline": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-2.1.0.tgz", @@ -1993,9 +1908,9 @@ "dev": true }, "duplexify": { - "version": "3.6.1", - "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.6.1.tgz", - "integrity": "sha512-vM58DwdnKmty+FSPzT14K9JXb90H+j5emaR4KYbr2KTIz00WHGbWOe5ghQTx233ZCLZtrGDALzKwcjEtSt35mA==", + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", + "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", "dev": true, "requires": { "end-of-stream": "^1.0.0", @@ -2025,9 +1940,9 @@ } }, "ecdsa-sig-formatter": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.10.tgz", - "integrity": "sha1-HFlQAPBKiJffuFAAiSoPTDOvhsM=", + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", + "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", "dev": true, "requires": { "safe-buffer": "^5.0.1" @@ -2107,14 +2022,14 @@ } }, "es5-ext": { - "version": "0.10.46", - "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.46.tgz", - "integrity": "sha512-24XxRvJXNFwEMpJb3nOkiRJKRoupmjYmOPVlI65Qy2SrtxwOTB+g6ODjBKOtwEHbYrhWRty9xxOWLNdClT2djw==", + "version": "0.10.50", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.50.tgz", + "integrity": "sha512-KMzZTPBkeQV/JcSQhI5/z6d9VWJ3EnQ194USTUwIYZ2ZbpN8+SGXQKt1h68EX44+qt+Fzr8DO17vnxrw7c3agw==", "dev": true, "requires": { "es6-iterator": "~2.0.3", "es6-symbol": "~3.1.1", - "next-tick": "1" + "next-tick": "^1.0.0" } }, "es6-iterator": { @@ -2451,9 +2366,9 @@ "dev": true }, "event-target-shim": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.0.tgz", - "integrity": "sha512-vu4tlY5xqMEGj/rzuDHxfvm9Kk2562O5h58i8xwnkMkv/yqmBqBcDJt/vGBrOBbCKuVc5eV3ghYxAX9YUhyi0w==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", + "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", "dev": true }, "exec-sh": { @@ -2549,16 +2464,16 @@ } }, "expect": { - "version": "24.5.0", - "resolved": "https://registry.npmjs.org/expect/-/expect-24.5.0.tgz", - "integrity": "sha512-p2Gmc0CLxOgkyA93ySWmHFYHUPFIHG6XZ06l7WArWAsrqYVaVEkOU5NtT5i68KUyGKbkQgDCkiT65bWmdoL6Bw==", + "version": "24.8.0", + "resolved": "https://registry.npmjs.org/expect/-/expect-24.8.0.tgz", + "integrity": "sha512-/zYvP8iMDrzaaxHVa724eJBCKqSHmO0FA7EDkBiRHxg6OipmMn1fN+C8T9L9K8yr7UONkOifu6+LLH+z76CnaA==", "dev": true, "requires": { - "@jest/types": "^24.5.0", + "@jest/types": "^24.8.0", "ansi-styles": "^3.2.0", - "jest-get-type": "^24.3.0", - "jest-matcher-utils": "^24.5.0", - "jest-message-util": "^24.5.0", + "jest-get-type": "^24.8.0", + "jest-matcher-utils": "^24.8.0", + "jest-message-util": "^24.8.0", "jest-regex-util": "^24.3.0" } }, @@ -2662,6 +2577,12 @@ "is-data-descriptor": "^1.0.0", "kind-of": "^6.0.2" } + }, + "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 } } }, @@ -2701,6 +2622,12 @@ "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", "dev": true }, + "fast-text-encoding": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fast-text-encoding/-/fast-text-encoding-1.0.0.tgz", + "integrity": "sha512-R9bHCvweUxxwkDwhjav5vxpFvdPGlVngtqmx4pIZfSUhM/Q4NiIUHB456BAf+Q1Nwu3HEZYONtu+Rya+af4jiQ==", + "dev": true + }, "fb-watchman": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.0.tgz", @@ -2728,16 +2655,6 @@ "flat-cache": "^2.0.1" } }, - "fileset": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/fileset/-/fileset-2.0.3.tgz", - "integrity": "sha1-jnVIqW08wjJ+5eZ0FocjozO7oqA=", - "dev": true, - "requires": { - "glob": "^7.0.3", - "minimatch": "^3.0.3" - } - }, "fill-range": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", @@ -2784,55 +2701,6 @@ "requires": { "fs-exists-sync": "^0.1.0", "resolve-dir": "^0.1.0" - }, - "dependencies": { - "expand-tilde": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-1.2.2.tgz", - "integrity": "sha1-C4HrqJflo9MdHD0QL48BRB5VlEk=", - "dev": true, - "requires": { - "os-homedir": "^1.0.1" - } - }, - "global-modules": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-0.2.3.tgz", - "integrity": "sha1-6lo77ULG1s6ZWk+KEmm12uIjgo0=", - "dev": true, - "requires": { - "global-prefix": "^0.1.4", - "is-windows": "^0.2.0" - } - }, - "global-prefix": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-0.1.5.tgz", - "integrity": "sha1-jTvGuNo8qBEqFg2NSW/wRiv+948=", - "dev": true, - "requires": { - "homedir-polyfill": "^1.0.0", - "ini": "^1.3.4", - "is-windows": "^0.2.0", - "which": "^1.2.12" - } - }, - "is-windows": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-0.2.0.tgz", - "integrity": "sha1-3hqm1j6indJIc3tp8f+LgALSEIw=", - "dev": true - }, - "resolve-dir": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-0.1.1.tgz", - "integrity": "sha1-shklmlYC+sXFxJatiUpujMQwJh4=", - "dev": true, - "requires": { - "expand-tilde": "^1.2.2", - "global-modules": "^0.2.3" - } - } } }, "find-parent-dir": { @@ -2861,32 +2729,63 @@ } }, "findup-sync": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-2.0.0.tgz", - "integrity": "sha1-kyaxSIwi0aYIhlCoaQGy2akKLLw=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-3.0.0.tgz", + "integrity": "sha512-YbffarhcicEhOrm4CtrwdKBdCuz576RLdhJDsIfvNtxUuhdRet1qZcsMjqbePtAseKdAnDyM/IyXbu7PRPRLYg==", "dev": true, "requires": { "detect-file": "^1.0.0", - "is-glob": "^3.1.0", + "is-glob": "^4.0.0", "micromatch": "^3.0.4", "resolve-dir": "^1.0.1" }, "dependencies": { - "is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "global-modules": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", + "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", "dev": true, "requires": { - "is-extglob": "^2.1.0" + "global-prefix": "^1.0.1", + "is-windows": "^1.0.1", + "resolve-dir": "^1.0.0" + } + }, + "global-prefix": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", + "integrity": "sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=", + "dev": true, + "requires": { + "expand-tilde": "^2.0.2", + "homedir-polyfill": "^1.0.1", + "ini": "^1.3.4", + "is-windows": "^1.0.1", + "which": "^1.2.14" + } + }, + "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 + }, + "resolve-dir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", + "integrity": "sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=", + "dev": true, + "requires": { + "expand-tilde": "^2.0.0", + "global-modules": "^1.0.0" } } } }, "fined": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/fined/-/fined-1.1.1.tgz", - "integrity": "sha512-jQp949ZmEbiYHk3gkbdtpJ0G1+kgtLQBNdP5edFP7Fh+WAYceLQz6yO1SBj72Xkg8GVyTB3bBzAYrHJVh5Xd5g==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/fined/-/fined-1.2.0.tgz", + "integrity": "sha512-ZYDqPLGxDkDhDZBjZBb+oD1+j0rA4E0pXY50eplAAOPg2N/gUBSSk5IM1/QhPfyVo19lJ+CvXpqfvk+b2p/8Ng==", "dev": true, "requires": { "expand-tilde": "^2.0.2", @@ -2920,51 +2819,25 @@ "dev": true }, "flush-write-stream": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.0.3.tgz", - "integrity": "sha512-calZMC10u0FMUqoiunI2AiGIIUtUIvifNwkHhNupZH4cbNnW1Itkoh/Nf5HFYmDrwWPjrUxpkZT0KhuCq0jmGw==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz", + "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==", "dev": true, "requires": { - "inherits": "^2.0.1", - "readable-stream": "^2.0.4" + "inherits": "^2.0.3", + "readable-stream": "^2.3.6" } }, - "follow-redirects": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.7.0.tgz", - "integrity": "sha512-m/pZQy4Gj287eNy94nivy5wchN3Kp+Q5WgUPNy5lJSZ3sgkVKSYV/ZChMAQVIgx1SqfZ2zBZtPA2YlXIWxxJOQ==", - "dev": true, - "requires": { - "debug": "^3.2.6" - }, - "dependencies": { - "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", - "dev": true, - "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==", - "dev": true - } - } - }, - "for-in": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", - "dev": true - }, - "for-own": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz", - "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=", + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "dev": true + }, + "for-own": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz", + "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=", "dev": true, "requires": { "for-in": "^1.0.1" @@ -3018,16 +2891,6 @@ "integrity": "sha1-mC1ok6+RjnLQjeyehnP/K1qNat0=", "dev": true }, - "fs-minipass": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.5.tgz", - "integrity": "sha512-JhBl0skXjUPCFH7x6x61gQxrKyXsxB5gcgePLZCwfyCGGsTISMoIeObbrvVeP6Xmyaudw4TT43qV2Gz+iyd2oQ==", - "dev": true, - "optional": true, - "requires": { - "minipass": "^2.2.1" - } - }, "fs-mkdirp-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs-mkdirp-stream/-/fs-mkdirp-stream-1.0.0.tgz", @@ -3045,14 +2908,532 @@ "dev": true }, "fsevents": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.4.tgz", - "integrity": "sha512-z8H8/diyk76B7q5wg+Ud0+CqzcAF3mBBI/bA5ne5zrRUUIvNkJY//D3BqyH571KuAC4Nr7Rw7CjWX4r0y9DvNg==", + "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.9.2", - "node-pre-gyp": "^0.10.0" + "nan": "^2.12.1", + "node-pre-gyp": "^0.12.0" + }, + "dependencies": { + "abbrev": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "ansi-regex": { + "version": "2.1.1", + "bundled": true, + "dev": true + }, + "aproba": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "optional": true + }, + "are-we-there-yet": { + "version": "1.1.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, + "balanced-match": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "brace-expansion": { + "version": "1.1.11", + "bundled": true, + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "chownr": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "code-point-at": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "concat-map": { + "version": "0.0.1", + "bundled": true, + "dev": true + }, + "console-control-strings": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "core-util-is": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "debug": { + "version": "4.1.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ms": "^2.1.1" + } + }, + "deep-extend": { + "version": "0.6.0", + "bundled": true, + "dev": true, + "optional": true + }, + "delegates": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "detect-libc": { + "version": "1.0.3", + "bundled": true, + "dev": true, + "optional": true + }, + "fs-minipass": { + "version": "1.2.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minipass": "^2.2.1" + } + }, + "fs.realpath": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "gauge": { + "version": "2.7.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + } + }, + "glob": { + "version": "7.1.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "has-unicode": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "iconv-lite": { + "version": "0.4.24", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "ignore-walk": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minimatch": "^3.0.4" + } + }, + "inflight": { + "version": "1.0.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.3", + "bundled": true, + "dev": true + }, + "ini": { + "version": "1.3.5", + "bundled": true, + "dev": true, + "optional": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "isarray": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "minimatch": { + "version": "3.0.4", + "bundled": true, + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "0.0.8", + "bundled": true, + "dev": true + }, + "minipass": { + "version": "2.3.5", + "bundled": true, + "dev": true, + "requires": { + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" + } + }, + "minizlib": { + "version": "1.2.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minipass": "^2.2.1" + } + }, + "mkdirp": { + "version": "0.5.1", + "bundled": true, + "dev": true, + "requires": { + "minimist": "0.0.8" + } + }, + "ms": { + "version": "2.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "needle": { + "version": "2.3.0", + "bundled": true, + "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", + "bundled": true, + "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", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "abbrev": "1", + "osenv": "^0.1.4" + } + }, + "npm-bundled": { + "version": "1.0.6", + "bundled": true, + "dev": true, + "optional": true + }, + "npm-packlist": { + "version": "1.4.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ignore-walk": "^3.0.1", + "npm-bundled": "^1.0.1" + } + }, + "npmlog": { + "version": "4.1.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "object-assign": { + "version": "4.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "once": { + "version": "1.4.0", + "bundled": true, + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "os-homedir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "os-tmpdir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "osenv": { + "version": "0.1.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "process-nextick-args": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "rc": { + "version": "1.2.8", + "bundled": true, + "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", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "readable-stream": { + "version": "2.3.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "rimraf": { + "version": "2.6.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "glob": "^7.1.3" + } + }, + "safe-buffer": { + "version": "5.1.2", + "bundled": true, + "dev": true + }, + "safer-buffer": { + "version": "2.1.2", + "bundled": true, + "dev": true, + "optional": true + }, + "sax": { + "version": "1.2.4", + "bundled": true, + "dev": true, + "optional": true + }, + "semver": { + "version": "5.7.0", + "bundled": true, + "dev": true, + "optional": true + }, + "set-blocking": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "signal-exit": { + "version": "3.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "string-width": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "string_decoder": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "tar": { + "version": "4.4.8", + "bundled": true, + "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", + "bundled": true, + "dev": true, + "optional": true + }, + "wide-align": { + "version": "1.1.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "string-width": "^1.0.2 || 2" + } + }, + "wrappy": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "yallist": { + "version": "3.0.3", + "bundled": true, + "dev": true + } } }, "function-bind": { @@ -3073,44 +3454,26 @@ "integrity": "sha1-THbsL/CsGjap3M+aAN+GIweNTtg=", "dev": true }, - "gauge": { - "version": "2.7.4", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", - "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", - "dev": true, - "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" - } - }, "gaxios": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-1.7.0.tgz", - "integrity": "sha512-2SaZTtaEgnSMgRrBVnPA5O9Tc8xWfnL48fuxFL7zOHZwnam3HiNOkoosnRgnkNBZoEZrH1Aja3wMCrrDtOEqUw==", + "version": "1.8.4", + "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-1.8.4.tgz", + "integrity": "sha512-BoENMnu1Gav18HcpV9IleMPZ9exM+AvUjrAOV4Mzs/vfz2Lu/ABv451iEXByKiMPn2M140uul1txXCg83sAENw==", "dev": true, "requires": { - "abort-controller": "^2.0.2", + "abort-controller": "^3.0.0", "extend": "^3.0.2", "https-proxy-agent": "^2.2.1", - "node-fetch": "^2.2.0" + "node-fetch": "^2.3.0" } }, "gcp-metadata": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-0.7.0.tgz", - "integrity": "sha512-ffjC09amcDWjh3VZdkDngIo7WoluyC5Ag9PAYxZbmQLOLNI8lvPtoKTSCyU54j2gwy5roZh6sSMTfkY2ct7K3g==", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-1.0.0.tgz", + "integrity": "sha512-Q6HrgfrCQeEircnNP3rCcEgiDv7eF9+1B+1MMgpE190+/+0mjQR8PxeOaRgxZWmdDAF9EIryHB9g1moPiw1SbQ==", "dev": true, "requires": { - "axios": "^0.18.0", - "extend": "^3.0.1", - "retry-axios": "0.3.2" + "gaxios": "^1.0.2", + "json-bigint": "^0.3.0" } }, "get-caller-file": { @@ -3208,27 +3571,25 @@ } }, "global-modules": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", - "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-0.2.3.tgz", + "integrity": "sha1-6lo77ULG1s6ZWk+KEmm12uIjgo0=", "dev": true, "requires": { - "global-prefix": "^1.0.1", - "is-windows": "^1.0.1", - "resolve-dir": "^1.0.0" + "global-prefix": "^0.1.4", + "is-windows": "^0.2.0" } }, "global-prefix": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", - "integrity": "sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=", + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-0.1.5.tgz", + "integrity": "sha1-jTvGuNo8qBEqFg2NSW/wRiv+948=", "dev": true, "requires": { - "expand-tilde": "^2.0.2", - "homedir-polyfill": "^1.0.1", + "homedir-polyfill": "^1.0.0", "ini": "^1.3.4", - "is-windows": "^1.0.1", - "which": "^1.2.14" + "is-windows": "^0.2.0", + "which": "^1.2.12" } }, "globals": { @@ -3268,14 +3629,16 @@ } }, "google-auth-library": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-2.0.2.tgz", - "integrity": "sha512-FURxmo1hBVmcfLauuMRKOPYAPKht3dGuI2wjeJFalDUThO0HoYVjr4yxt5cgYSFm1dgUpmN9G/poa7ceTFAIiA==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-3.1.2.tgz", + "integrity": "sha512-cDQMzTotwyWMrg5jRO7q0A4TL/3GWBgO7I7q5xGKNiiFf9SmGY/OJ1YsLMgI2MVHHsEGyrqYnbnmV1AE+Z6DnQ==", "dev": true, "requires": { - "axios": "^0.18.0", - "gcp-metadata": "^0.7.0", - "gtoken": "^2.3.0", + "base64-js": "^1.3.0", + "fast-text-encoding": "^1.0.0", + "gaxios": "^1.2.1", + "gcp-metadata": "^1.0.0", + "gtoken": "^2.3.2", "https-proxy-agent": "^2.2.1", "jws": "^3.1.5", "lru-cache": "^5.0.0", @@ -3283,12 +3646,12 @@ } }, "google-p12-pem": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/google-p12-pem/-/google-p12-pem-1.0.3.tgz", - "integrity": "sha512-KGnAiMMWaJp4j4tYVvAjfP3wCKZRLv9M1Nir2wRRNWUYO7j1aX8O9Qgz+a8/EQ5rAvuo4SIu79n6SIdkNl7Msg==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/google-p12-pem/-/google-p12-pem-1.0.4.tgz", + "integrity": "sha512-SwLAUJqUfTB2iS+wFfSS/G9p7bt4eWcc2LyfvmUXe7cWp6p3mpxDo6LLI29MXdU6wvPcQ/up298X7GMC5ylAlA==", "dev": true, "requires": { - "node-forge": "^0.7.5", + "node-forge": "^0.8.0", "pify": "^4.0.0" }, "dependencies": { @@ -3301,23 +3664,23 @@ } }, "googleapis": { - "version": "36.0.0", - "resolved": "https://registry.npmjs.org/googleapis/-/googleapis-36.0.0.tgz", - "integrity": "sha512-+0lkijBkCByKa0vrAEx1ez0agbdOMUMCwdXkXv0VpW2ImoKwUonWTowrAuF5WD1+nox6VIzmz/Vg86l+PvK+qg==", + "version": "37.2.0", + "resolved": "https://registry.npmjs.org/googleapis/-/googleapis-37.2.0.tgz", + "integrity": "sha512-UenlZ0c4eaVAylIPvvsIlL/q5/3Xg8DuKug5aqdmRMk+tTVfJUmEKgp3s4ZSUOI5oKqO/+arIW5UnY2S62B13w==", "dev": true, "requires": { - "google-auth-library": "^2.0.0", - "googleapis-common": "^0.4.0" + "google-auth-library": "^3.0.0", + "googleapis-common": "^0.7.0" } }, "googleapis-common": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/googleapis-common/-/googleapis-common-0.4.0.tgz", - "integrity": "sha512-G8U5eUhmCzvZa80BtfcL2ECPiIJxmJYsPPIY3/9iODrIvDkY75wtxnEobG7HDUprtn/3Es6mP6KevqNZ5u6t4g==", + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/googleapis-common/-/googleapis-common-0.7.2.tgz", + "integrity": "sha512-9DEJIiO4nS7nw0VE1YVkEfXEj8x8MxsuB+yZIpOBULFSN9OIKcUU8UuKgSZFU4lJmRioMfngktrbkMwWJcUhQg==", "dev": true, "requires": { - "axios": "^0.18.0", - "google-auth-library": "^2.0.0", + "gaxios": "^1.2.2", + "google-auth-library": "^3.0.0", "pify": "^4.0.0", "qs": "^6.5.2", "url-template": "^2.0.8", @@ -3364,9 +3727,9 @@ "dev": true }, "gtoken": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/gtoken/-/gtoken-2.3.2.tgz", - "integrity": "sha512-F8EObUGyC8Qd3WXTloNULZBwfUsOABoHElihB1F6zGhT/cy38iPL09wGLRY712I+hQnOyA+sYlgPFX2cOKz0qg==", + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/gtoken/-/gtoken-2.3.3.tgz", + "integrity": "sha512-EaB49bu/TCoNeQjhCYKI/CurooBKkGxIqFHsWABW0b25fobBYVTMe84A8EBVVZhl8emiUdNypil9huMOTmyAnw==", "dev": true, "requires": { "gaxios": "^1.0.4", @@ -3385,14 +3748,14 @@ } }, "gulp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/gulp/-/gulp-4.0.0.tgz", - "integrity": "sha1-lXZsYB2t5Kd+0+eyttwDiBtZY2Y=", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/gulp/-/gulp-4.0.2.tgz", + "integrity": "sha512-dvEs27SCZt2ibF29xYgmnwwCYZxdxhQ/+LFWlbAW8y7jt68L/65402Lz3+CKy0Ov4rOs+NERmDq7YlZaDqUIfA==", "dev": true, "requires": { - "glob-watcher": "^5.0.0", - "gulp-cli": "^2.0.0", - "undertaker": "^1.0.0", + "glob-watcher": "^5.0.3", + "gulp-cli": "^2.2.0", + "undertaker": "^1.2.1", "vinyl-fs": "^3.0.0" }, "dependencies": { @@ -3414,9 +3777,9 @@ } }, "gulp-cli": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/gulp-cli/-/gulp-cli-2.0.1.tgz", - "integrity": "sha512-RxujJJdN8/O6IW2nPugl7YazhmrIEjmiVfPKrWt68r71UCaLKS71Hp0gpKT+F6qOUFtr7KqtifDKaAJPRVvMYQ==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/gulp-cli/-/gulp-cli-2.2.0.tgz", + "integrity": "sha512-rGs3bVYHdyJpLqR0TUBnlcZ1O5O++Zs4bA0ajm+zr3WFCfiSLjGwoCBqFs18wzN+ZxahT9DkOK5nDf26iDsWjA==", "dev": true, "requires": { "ansi-colors": "^1.0.1", @@ -3429,7 +3792,7 @@ "gulplog": "^1.0.0", "interpret": "^1.1.0", "isobject": "^3.0.1", - "liftoff": "^2.5.0", + "liftoff": "^3.1.0", "matchdep": "^2.0.0", "mute-stdout": "^1.0.0", "pretty-hrtime": "^1.0.0", @@ -3437,29 +3800,6 @@ "semver-greatest-satisfied-range": "^1.1.0", "v8flags": "^3.0.1", "yargs": "^7.1.0" - }, - "dependencies": { - "yargs": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-7.1.0.tgz", - "integrity": "sha1-a6MY6xaWFyf10oT46gA+jWFU0Mg=", - "dev": true, - "requires": { - "camelcase": "^3.0.0", - "cliui": "^3.2.0", - "decamelize": "^1.1.1", - "get-caller-file": "^1.0.1", - "os-locale": "^1.4.0", - "read-pkg-up": "^1.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^1.0.1", - "set-blocking": "^2.0.0", - "string-width": "^1.0.2", - "which-module": "^1.0.0", - "y18n": "^3.2.1", - "yargs-parser": "^5.0.0" - } - } } }, "os-locale": { @@ -3477,6 +3817,27 @@ "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=", "dev": true }, + "yargs": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-7.1.0.tgz", + "integrity": "sha1-a6MY6xaWFyf10oT46gA+jWFU0Mg=", + "dev": true, + "requires": { + "camelcase": "^3.0.0", + "cliui": "^3.2.0", + "decamelize": "^1.1.1", + "get-caller-file": "^1.0.1", + "os-locale": "^1.4.0", + "read-pkg-up": "^1.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^1.0.2", + "which-module": "^1.0.0", + "y18n": "^3.2.1", + "yargs-parser": "^5.0.0" + } + }, "yargs-parser": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-5.0.0.tgz", @@ -3500,6 +3861,17 @@ "replace-ext": "^1.0.0", "through2": "^2.0.0", "touch": "^3.1.0" + }, + "dependencies": { + "make-dir": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", + "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==", + "dev": true, + "requires": { + "pify": "^3.0.0" + } + } } }, "gulp-eslint": { @@ -3554,12 +3926,12 @@ } }, "handlebars": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.1.0.tgz", - "integrity": "sha512-l2jRuU1NAWK6AW5qqcTATWQJvNPEwkM7NEKSiv/gqOsoSQbVoWyqVEY5GS+XPQ88zLNmqASRpzfdm8d79hJS+w==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.1.2.tgz", + "integrity": "sha512-nvfrjqvt9xQ8Z/w0ijewdD/vvWDTOweBUm96NTr66Wfvo1mJenBLwcYmPs3TIBP5ruzYGD7Hx/DaM9RmhroGPw==", "dev": true, "requires": { - "async": "^2.5.0", + "neo-async": "^2.6.0", "optimist": "^0.6.1", "source-map": "^0.6.1", "uglify-js": "^3.1.4" @@ -3625,13 +3997,6 @@ "has-symbol-support-x": "^1.4.1" } }, - "has-unicode": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", - "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", - "dev": true, - "optional": true - }, "has-value": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", @@ -3665,9 +4030,9 @@ } }, "homedir-polyfill": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.1.tgz", - "integrity": "sha1-TCu8inWJmP7r9e1oWA921GdotLw=", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", + "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==", "dev": true, "requires": { "parse-passwd": "^1.0.0" @@ -3767,16 +4132,6 @@ "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", "dev": true }, - "ignore-walk": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.1.tgz", - "integrity": "sha512-DTVlMx3IYPe0/JJcYP7Gxg7ttZZu3IInhuEhbchuqneY9wWe5Ojy2mXLBaQFUQmo0AW2r3qG7m1mg86js+gnlQ==", - "dev": true, - "optional": true, - "requires": { - "minimatch": "^3.0.4" - } - }, "import-fresh": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.0.0.tgz", @@ -3956,6 +4311,14 @@ "requires": { "is-relative": "^1.0.0", "is-windows": "^1.0.1" + }, + "dependencies": { + "is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "dev": true + } } }, "is-accessor-descriptor": { @@ -3965,17 +4328,6 @@ "dev": true, "requires": { "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } } }, "is-arrayish": { @@ -3999,15 +4351,6 @@ "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", "dev": true }, - "is-builtin-module": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", - "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", - "dev": true, - "requires": { - "builtin-modules": "^1.0.0" - } - }, "is-callable": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.4.tgz", @@ -4030,17 +4373,6 @@ "dev": true, "requires": { "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } } }, "is-date-object": { @@ -4090,15 +4422,15 @@ } }, "is-generator-fn": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.0.0.tgz", - "integrity": "sha512-elzyIdM7iKoFHzcrndIqjYomImhxrFRnGP3galODoII4TB9gI7mZ+FnlLQmmjf27SxHS2gKEeyhX5/+YRS6H9g==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", + "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", "dev": true }, "is-glob": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.0.tgz", - "integrity": "sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=", + "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" @@ -4126,17 +4458,6 @@ "dev": true, "requires": { "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } } }, "is-object": { @@ -4275,9 +4596,9 @@ "dev": true }, "is-windows": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", - "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-0.2.0.tgz", + "integrity": "sha1-3hqm1j6indJIc3tp8f+LgALSEIw=", "dev": true }, "is-wsl": { @@ -4310,66 +4631,44 @@ "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", "dev": true }, - "istanbul-api": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/istanbul-api/-/istanbul-api-2.1.1.tgz", - "integrity": "sha512-kVmYrehiwyeBAk/wE71tW6emzLiHGjYIiDrc8sfyty4F8M02/lrgXSm+R1kXysmF20zArvmZXjlE/mg24TVPJw==", - "dev": true, - "requires": { - "async": "^2.6.1", - "compare-versions": "^3.2.1", - "fileset": "^2.0.3", - "istanbul-lib-coverage": "^2.0.3", - "istanbul-lib-hook": "^2.0.3", - "istanbul-lib-instrument": "^3.1.0", - "istanbul-lib-report": "^2.0.4", - "istanbul-lib-source-maps": "^3.0.2", - "istanbul-reports": "^2.1.1", - "js-yaml": "^3.12.0", - "make-dir": "^1.3.0", - "minimatch": "^3.0.4", - "once": "^1.4.0" - } - }, "istanbul-lib-coverage": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.3.tgz", - "integrity": "sha512-dKWuzRGCs4G+67VfW9pBFFz2Jpi4vSp/k7zBcJ888ofV5Mi1g5CUML5GvMvV6u9Cjybftu+E8Cgp+k0dI1E5lw==", + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz", + "integrity": "sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA==", "dev": true }, - "istanbul-lib-hook": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-2.0.3.tgz", - "integrity": "sha512-CLmEqwEhuCYtGcpNVJjLV1DQyVnIqavMLFHV/DP+np/g3qvdxu3gsPqYoJMXm15sN84xOlckFB3VNvRbf5yEgA==", - "dev": true, - "requires": { - "append-transform": "^1.0.0" - } - }, "istanbul-lib-instrument": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-3.1.0.tgz", - "integrity": "sha512-ooVllVGT38HIk8MxDj/OIHXSYvH+1tq/Vb38s8ixt9GoJadXska4WkGY+0wkmtYCZNYtaARniH/DixUGGLZ0uA==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-3.3.0.tgz", + "integrity": "sha512-5nnIN4vo5xQZHdXno/YDXJ0G+I3dAm4XgzfSVTPLQpj/zAV2dV6Juy0yaf10/zrJOJeHoN3fraFe+XRq2bFVZA==", "dev": true, "requires": { - "@babel/generator": "^7.0.0", - "@babel/parser": "^7.0.0", - "@babel/template": "^7.0.0", - "@babel/traverse": "^7.0.0", - "@babel/types": "^7.0.0", - "istanbul-lib-coverage": "^2.0.3", - "semver": "^5.5.0" + "@babel/generator": "^7.4.0", + "@babel/parser": "^7.4.3", + "@babel/template": "^7.4.0", + "@babel/traverse": "^7.4.3", + "@babel/types": "^7.4.0", + "istanbul-lib-coverage": "^2.0.5", + "semver": "^6.0.0" + }, + "dependencies": { + "semver": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.0.0.tgz", + "integrity": "sha512-0UewU+9rFapKFnlbirLi3byoOuhrSsli/z/ihNnvM24vgF+8sNBiI1LZPBSH9wJKUwaUbw+s3hToDLCXkrghrQ==", + "dev": true + } } }, "istanbul-lib-report": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-2.0.4.tgz", - "integrity": "sha512-sOiLZLAWpA0+3b5w5/dq0cjm2rrNdAfHWaGhmn7XEFW6X++IV9Ohn+pnELAl9K3rfpaeBfbmH9JU5sejacdLeA==", + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-2.0.8.tgz", + "integrity": "sha512-fHBeG573EIihhAblwgxrSenp0Dby6tJMFR/HvlerBsrCTD5bkUuoNtn3gVh29ZCS824cGGBPn7Sg7cNk+2xUsQ==", "dev": true, "requires": { - "istanbul-lib-coverage": "^2.0.3", - "make-dir": "^1.3.0", - "supports-color": "^6.0.0" + "istanbul-lib-coverage": "^2.0.5", + "make-dir": "^2.1.0", + "supports-color": "^6.1.0" }, "dependencies": { "supports-color": { @@ -4384,15 +4683,15 @@ } }, "istanbul-lib-source-maps": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-3.0.2.tgz", - "integrity": "sha512-JX4v0CiKTGp9fZPmoxpu9YEkPbEqCqBbO3403VabKjH+NRXo72HafD5UgnjTEqHL2SAjaZK1XDuDOkn6I5QVfQ==", + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-3.0.6.tgz", + "integrity": "sha512-R47KzMtDJH6X4/YW9XTx+jrLnZnscW4VpNN+1PViSYTejLVPWv7oov+Duf8YQSPyVRUvueQqz1TcsC6mooZTXw==", "dev": true, "requires": { "debug": "^4.1.1", - "istanbul-lib-coverage": "^2.0.3", - "make-dir": "^1.3.0", - "rimraf": "^2.6.2", + "istanbul-lib-coverage": "^2.0.5", + "make-dir": "^2.1.0", + "rimraf": "^2.6.3", "source-map": "^0.6.1" }, "dependencies": { @@ -4420,12 +4719,12 @@ } }, "istanbul-reports": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-2.1.1.tgz", - "integrity": "sha512-FzNahnidyEPBCI0HcufJoSEoKykesRlFcSzQqjH9x0+LC8tnnE/p/90PBLu8iZTxr8yYZNyTtiAujUqyN+CIxw==", + "version": "2.2.6", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-2.2.6.tgz", + "integrity": "sha512-SKi4rnMyLBKe0Jy2uUdx28h8oG7ph2PPuQPvIAh31d+Ci+lSiEu4C+h3oBPuJ9+mPKhOyW0M8gY4U5NM1WLeXA==", "dev": true, "requires": { - "handlebars": "^4.1.0" + "handlebars": "^4.1.2" } }, "istextorbinary": { @@ -4450,31 +4749,31 @@ } }, "jest": { - "version": "24.5.0", - "resolved": "https://registry.npmjs.org/jest/-/jest-24.5.0.tgz", - "integrity": "sha512-lxL+Fq5/RH7inxxmfS2aZLCf8MsS+YCUBfeiNO6BWz/MmjhDGaIEA/2bzEf9q4Q0X+mtFHiinHFvQ0u+RvW/qQ==", + "version": "24.8.0", + "resolved": "https://registry.npmjs.org/jest/-/jest-24.8.0.tgz", + "integrity": "sha512-o0HM90RKFRNWmAWvlyV8i5jGZ97pFwkeVoGvPW1EtLTgJc2+jcuqcbbqcSZLE/3f2S5pt0y2ZBETuhpWNl1Reg==", "dev": true, "requires": { "import-local": "^2.0.0", - "jest-cli": "^24.5.0" + "jest-cli": "^24.8.0" }, "dependencies": { "jest-cli": { - "version": "24.5.0", - "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-24.5.0.tgz", - "integrity": "sha512-P+Jp0SLO4KWN0cGlNtC7JV0dW1eSFR7eRpoOucP2UM0sqlzp/bVHeo71Omonvigrj9AvCKy7NtQANtqJ7FXz8g==", + "version": "24.8.0", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-24.8.0.tgz", + "integrity": "sha512-+p6J00jSMPQ116ZLlHJJvdf8wbjNbZdeSX9ptfHX06/MSNaXmKihQzx5vQcw0q2G6JsdVkUIdWbOWtSnaYs3yA==", "dev": true, "requires": { - "@jest/core": "^24.5.0", - "@jest/test-result": "^24.5.0", - "@jest/types": "^24.5.0", + "@jest/core": "^24.8.0", + "@jest/test-result": "^24.8.0", + "@jest/types": "^24.8.0", "chalk": "^2.0.1", "exit": "^0.1.2", "import-local": "^2.0.0", "is-ci": "^2.0.0", - "jest-config": "^24.5.0", - "jest-util": "^24.5.0", - "jest-validate": "^24.5.0", + "jest-config": "^24.8.0", + "jest-util": "^24.8.0", + "jest-validate": "^24.8.0", "prompts": "^2.0.1", "realpath-native": "^1.1.0", "yargs": "^12.0.2" @@ -4483,50 +4782,51 @@ } }, "jest-changed-files": { - "version": "24.5.0", - "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-24.5.0.tgz", - "integrity": "sha512-Ikl29dosYnTsH9pYa1Tv9POkILBhN/TLZ37xbzgNsZ1D2+2n+8oEZS2yP1BrHn/T4Rs4Ggwwbp/x8CKOS5YJOg==", + "version": "24.8.0", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-24.8.0.tgz", + "integrity": "sha512-qgANC1Yrivsq+UrLXsvJefBKVoCsKB0Hv+mBb6NMjjZ90wwxCDmU3hsCXBya30cH+LnPYjwgcU65i6yJ5Nfuug==", "dev": true, "requires": { - "@jest/types": "^24.5.0", + "@jest/types": "^24.8.0", "execa": "^1.0.0", "throat": "^4.0.0" } }, "jest-config": { - "version": "24.5.0", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-24.5.0.tgz", - "integrity": "sha512-t2UTh0Z2uZhGBNVseF8wA2DS2SuBiLOL6qpLq18+OZGfFUxTM7BzUVKyHFN/vuN+s/aslY1COW95j1Rw81huOQ==", + "version": "24.8.0", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-24.8.0.tgz", + "integrity": "sha512-Czl3Nn2uEzVGsOeaewGWoDPD8GStxCpAe0zOYs2x2l0fZAgPbCr3uwUkgNKV3LwE13VXythM946cd5rdGkkBZw==", "dev": true, "requires": { "@babel/core": "^7.1.0", - "@jest/types": "^24.5.0", - "babel-jest": "^24.5.0", + "@jest/test-sequencer": "^24.8.0", + "@jest/types": "^24.8.0", + "babel-jest": "^24.8.0", "chalk": "^2.0.1", "glob": "^7.1.1", - "jest-environment-jsdom": "^24.5.0", - "jest-environment-node": "^24.5.0", - "jest-get-type": "^24.3.0", - "jest-jasmine2": "^24.5.0", + "jest-environment-jsdom": "^24.8.0", + "jest-environment-node": "^24.8.0", + "jest-get-type": "^24.8.0", + "jest-jasmine2": "^24.8.0", "jest-regex-util": "^24.3.0", - "jest-resolve": "^24.5.0", - "jest-util": "^24.5.0", - "jest-validate": "^24.5.0", + "jest-resolve": "^24.8.0", + "jest-util": "^24.8.0", + "jest-validate": "^24.8.0", "micromatch": "^3.1.10", - "pretty-format": "^24.5.0", + "pretty-format": "^24.8.0", "realpath-native": "^1.1.0" } }, "jest-diff": { - "version": "24.5.0", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-24.5.0.tgz", - "integrity": "sha512-mCILZd9r7zqL9Uh6yNoXjwGQx0/J43OD2vvWVKwOEOLZliQOsojXwqboubAQ+Tszrb6DHGmNU7m4whGeB9YOqw==", + "version": "24.8.0", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-24.8.0.tgz", + "integrity": "sha512-wxetCEl49zUpJ/bvUmIFjd/o52J+yWcoc5ZyPq4/W1LUKGEhRYDIbP1KcF6t+PvqNrGAFk4/JhtxDq/Nnzs66g==", "dev": true, "requires": { "chalk": "^2.0.1", "diff-sequences": "^24.3.0", - "jest-get-type": "^24.3.0", - "pretty-format": "^24.5.0" + "jest-get-type": "^24.8.0", + "pretty-format": "^24.8.0" } }, "jest-docblock": { @@ -4539,122 +4839,125 @@ } }, "jest-each": { - "version": "24.5.0", - "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-24.5.0.tgz", - "integrity": "sha512-6gy3Kh37PwIT5sNvNY2VchtIFOOBh8UCYnBlxXMb5sr5wpJUDPTUATX2Axq1Vfk+HWTMpsYPeVYp4TXx5uqUBw==", + "version": "24.8.0", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-24.8.0.tgz", + "integrity": "sha512-NrwK9gaL5+XgrgoCsd9svsoWdVkK4gnvyhcpzd6m487tXHqIdYeykgq3MKI1u4I+5Zf0tofr70at9dWJDeb+BA==", "dev": true, "requires": { - "@jest/types": "^24.5.0", + "@jest/types": "^24.8.0", "chalk": "^2.0.1", - "jest-get-type": "^24.3.0", - "jest-util": "^24.5.0", - "pretty-format": "^24.5.0" + "jest-get-type": "^24.8.0", + "jest-util": "^24.8.0", + "pretty-format": "^24.8.0" } }, "jest-environment-jsdom": { - "version": "24.5.0", - "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-24.5.0.tgz", - "integrity": "sha512-62Ih5HbdAWcsqBx2ktUnor/mABBo1U111AvZWcLKeWN/n/gc5ZvDBKe4Og44fQdHKiXClrNGC6G0mBo6wrPeGQ==", + "version": "24.8.0", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-24.8.0.tgz", + "integrity": "sha512-qbvgLmR7PpwjoFjM/sbuqHJt/NCkviuq9vus9NBn/76hhSidO+Z6Bn9tU8friecegbJL8gzZQEMZBQlFWDCwAQ==", "dev": true, "requires": { - "@jest/environment": "^24.5.0", - "@jest/fake-timers": "^24.5.0", - "@jest/types": "^24.5.0", - "jest-mock": "^24.5.0", - "jest-util": "^24.5.0", + "@jest/environment": "^24.8.0", + "@jest/fake-timers": "^24.8.0", + "@jest/types": "^24.8.0", + "jest-mock": "^24.8.0", + "jest-util": "^24.8.0", "jsdom": "^11.5.1" } }, "jest-environment-node": { - "version": "24.5.0", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-24.5.0.tgz", - "integrity": "sha512-du6FuyWr/GbKLsmAbzNF9mpr2Iu2zWSaq/BNHzX+vgOcts9f2ayXBweS7RAhr+6bLp6qRpMB6utAMF5Ygktxnw==", + "version": "24.8.0", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-24.8.0.tgz", + "integrity": "sha512-vIGUEScd1cdDgR6sqn2M08sJTRLQp6Dk/eIkCeO4PFHxZMOgy+uYLPMC4ix3PEfM5Au/x3uQ/5Tl0DpXXZsJ/Q==", "dev": true, "requires": { - "@jest/environment": "^24.5.0", - "@jest/fake-timers": "^24.5.0", - "@jest/types": "^24.5.0", - "jest-mock": "^24.5.0", - "jest-util": "^24.5.0" + "@jest/environment": "^24.8.0", + "@jest/fake-timers": "^24.8.0", + "@jest/types": "^24.8.0", + "jest-mock": "^24.8.0", + "jest-util": "^24.8.0" } }, "jest-get-type": { - "version": "24.3.0", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-24.3.0.tgz", - "integrity": "sha512-HYF6pry72YUlVcvUx3sEpMRwXEWGEPlJ0bSPVnB3b3n++j4phUEoSPcS6GC0pPJ9rpyPSe4cb5muFo6D39cXow==", + "version": "24.8.0", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-24.8.0.tgz", + "integrity": "sha512-RR4fo8jEmMD9zSz2nLbs2j0zvPpk/KCEz3a62jJWbd2ayNo0cb+KFRxPHVhE4ZmgGJEQp0fosmNz84IfqM8cMQ==", "dev": true }, "jest-haste-map": { - "version": "24.5.0", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-24.5.0.tgz", - "integrity": "sha512-mb4Yrcjw9vBgSvobDwH8QUovxApdimGcOkp+V1ucGGw4Uvr3VzZQBJhNm1UY3dXYm4XXyTW2G7IBEZ9pM2ggRQ==", + "version": "24.8.0", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-24.8.0.tgz", + "integrity": "sha512-ZBPRGHdPt1rHajWelXdqygIDpJx8u3xOoLyUBWRW28r3tagrgoepPrzAozW7kW9HrQfhvmiv1tncsxqHJO1onQ==", "dev": true, "requires": { - "@jest/types": "^24.5.0", + "@jest/types": "^24.8.0", + "anymatch": "^2.0.0", "fb-watchman": "^2.0.0", + "fsevents": "^1.2.7", "graceful-fs": "^4.1.15", "invariant": "^2.2.4", "jest-serializer": "^24.4.0", - "jest-util": "^24.5.0", - "jest-worker": "^24.4.0", + "jest-util": "^24.8.0", + "jest-worker": "^24.6.0", "micromatch": "^3.1.10", - "sane": "^4.0.3" + "sane": "^4.0.3", + "walker": "^1.0.7" } }, "jest-jasmine2": { - "version": "24.5.0", - "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-24.5.0.tgz", - "integrity": "sha512-sfVrxVcx1rNUbBeyIyhkqZ4q+seNKyAG6iM0S2TYBdQsXjoFDdqWFfsUxb6uXSsbimbXX/NMkJIwUZ1uT9+/Aw==", + "version": "24.8.0", + "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-24.8.0.tgz", + "integrity": "sha512-cEky88npEE5LKd5jPpTdDCLvKkdyklnaRycBXL6GNmpxe41F0WN44+i7lpQKa/hcbXaQ+rc9RMaM4dsebrYong==", "dev": true, "requires": { "@babel/traverse": "^7.1.0", - "@jest/environment": "^24.5.0", - "@jest/test-result": "^24.5.0", - "@jest/types": "^24.5.0", + "@jest/environment": "^24.8.0", + "@jest/test-result": "^24.8.0", + "@jest/types": "^24.8.0", "chalk": "^2.0.1", "co": "^4.6.0", - "expect": "^24.5.0", + "expect": "^24.8.0", "is-generator-fn": "^2.0.0", - "jest-each": "^24.5.0", - "jest-matcher-utils": "^24.5.0", - "jest-message-util": "^24.5.0", - "jest-runtime": "^24.5.0", - "jest-snapshot": "^24.5.0", - "jest-util": "^24.5.0", - "pretty-format": "^24.5.0", + "jest-each": "^24.8.0", + "jest-matcher-utils": "^24.8.0", + "jest-message-util": "^24.8.0", + "jest-runtime": "^24.8.0", + "jest-snapshot": "^24.8.0", + "jest-util": "^24.8.0", + "pretty-format": "^24.8.0", "throat": "^4.0.0" } }, "jest-leak-detector": { - "version": "24.5.0", - "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-24.5.0.tgz", - "integrity": "sha512-LZKBjGovFRx3cRBkqmIg+BZnxbrLqhQl09IziMk3oeh1OV81Hg30RUIx885mq8qBv1PA0comB9bjKcuyNO1bCQ==", + "version": "24.8.0", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-24.8.0.tgz", + "integrity": "sha512-cG0yRSK8A831LN8lIHxI3AblB40uhv0z+SsQdW3GoMMVcK+sJwrIIyax5tu3eHHNJ8Fu6IMDpnLda2jhn2pD/g==", "dev": true, "requires": { - "pretty-format": "^24.5.0" + "pretty-format": "^24.8.0" } }, "jest-matcher-utils": { - "version": "24.5.0", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-24.5.0.tgz", - "integrity": "sha512-QM1nmLROjLj8GMGzg5VBra3I9hLpjMPtF1YqzQS3rvWn2ltGZLrGAO1KQ9zUCVi5aCvrkbS5Ndm2evIP9yZg1Q==", + "version": "24.8.0", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-24.8.0.tgz", + "integrity": "sha512-lex1yASY51FvUuHgm0GOVj7DCYEouWSlIYmCW7APSqB9v8mXmKSn5+sWVF0MhuASG0bnYY106/49JU1FZNl5hw==", "dev": true, "requires": { "chalk": "^2.0.1", - "jest-diff": "^24.5.0", - "jest-get-type": "^24.3.0", - "pretty-format": "^24.5.0" + "jest-diff": "^24.8.0", + "jest-get-type": "^24.8.0", + "pretty-format": "^24.8.0" } }, "jest-message-util": { - "version": "24.5.0", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-24.5.0.tgz", - "integrity": "sha512-6ZYgdOojowCGiV0D8WdgctZEAe+EcFU+KrVds+0ZjvpZurUW2/oKJGltJ6FWY2joZwYXN5VL36GPV6pNVRqRnQ==", + "version": "24.8.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-24.8.0.tgz", + "integrity": "sha512-p2k71rf/b6ns8btdB0uVdljWo9h0ovpnEe05ZKWceQGfXYr4KkzgKo3PBi8wdnd9OtNh46VpNIJynUn/3MKm1g==", "dev": true, "requires": { "@babel/code-frame": "^7.0.0", - "@jest/test-result": "^24.5.0", - "@jest/types": "^24.5.0", + "@jest/test-result": "^24.8.0", + "@jest/types": "^24.8.0", "@types/stack-utils": "^1.0.1", "chalk": "^2.0.1", "micromatch": "^3.1.10", @@ -4663,12 +4966,12 @@ } }, "jest-mock": { - "version": "24.5.0", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-24.5.0.tgz", - "integrity": "sha512-ZnAtkWrKf48eERgAOiUxVoFavVBziO2pAi2MfZ1+bGXVkDfxWLxU0//oJBkgwbsv6OAmuLBz4XFFqvCFMqnGUw==", + "version": "24.8.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-24.8.0.tgz", + "integrity": "sha512-6kWugwjGjJw+ZkK4mDa0Df3sDlUTsV47MSrT0nGQ0RBWJbpODDQ8MHDVtGtUYBne3IwZUhtB7elxHspU79WH3A==", "dev": true, "requires": { - "@jest/types": "^24.5.0" + "@jest/types": "^24.8.0" } }, "jest-pnp-resolver": { @@ -4684,12 +4987,12 @@ "dev": true }, "jest-resolve": { - "version": "24.5.0", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-24.5.0.tgz", - "integrity": "sha512-ZIfGqLX1Rg8xJpQqNjdoO8MuxHV1q/i2OO1hLXjgCWFWs5bsedS8UrOdgjUqqNae6DXA+pCyRmdcB7lQEEbXew==", + "version": "24.8.0", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-24.8.0.tgz", + "integrity": "sha512-+hjSzi1PoRvnuOICoYd5V/KpIQmkAsfjFO71458hQ2Whi/yf1GDeBOFj8Gxw4LrApHsVJvn5fmjcPdmoUHaVKw==", "dev": true, "requires": { - "@jest/types": "^24.5.0", + "@jest/types": "^24.8.0", "browser-resolve": "^1.11.3", "chalk": "^2.0.1", "jest-pnp-resolver": "^1.2.1", @@ -4697,68 +5000,68 @@ } }, "jest-resolve-dependencies": { - "version": "24.5.0", - "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-24.5.0.tgz", - "integrity": "sha512-dRVM1D+gWrFfrq2vlL5P9P/i8kB4BOYqYf3S7xczZ+A6PC3SgXYSErX/ScW/469pWMboM1uAhgLF+39nXlirCQ==", + "version": "24.8.0", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-24.8.0.tgz", + "integrity": "sha512-hyK1qfIf/krV+fSNyhyJeq3elVMhK9Eijlwy+j5jqmZ9QsxwKBiP6qukQxaHtK8k6zql/KYWwCTQ+fDGTIJauw==", "dev": true, "requires": { - "@jest/types": "^24.5.0", + "@jest/types": "^24.8.0", "jest-regex-util": "^24.3.0", - "jest-snapshot": "^24.5.0" + "jest-snapshot": "^24.8.0" } }, "jest-runner": { - "version": "24.5.0", - "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-24.5.0.tgz", - "integrity": "sha512-oqsiS9TkIZV5dVkD+GmbNfWBRPIvxqmlTQ+AQUJUQ07n+4xTSDc40r+aKBynHw9/tLzafC00DIbJjB2cOZdvMA==", + "version": "24.8.0", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-24.8.0.tgz", + "integrity": "sha512-utFqC5BaA3JmznbissSs95X1ZF+d+4WuOWwpM9+Ak356YtMhHE/GXUondZdcyAAOTBEsRGAgH/0TwLzfI9h7ow==", "dev": true, "requires": { - "@jest/console": "^24.3.0", - "@jest/environment": "^24.5.0", - "@jest/test-result": "^24.5.0", - "@jest/types": "^24.5.0", + "@jest/console": "^24.7.1", + "@jest/environment": "^24.8.0", + "@jest/test-result": "^24.8.0", + "@jest/types": "^24.8.0", "chalk": "^2.4.2", "exit": "^0.1.2", "graceful-fs": "^4.1.15", - "jest-config": "^24.5.0", + "jest-config": "^24.8.0", "jest-docblock": "^24.3.0", - "jest-haste-map": "^24.5.0", - "jest-jasmine2": "^24.5.0", - "jest-leak-detector": "^24.5.0", - "jest-message-util": "^24.5.0", - "jest-resolve": "^24.5.0", - "jest-runtime": "^24.5.0", - "jest-util": "^24.5.0", - "jest-worker": "^24.4.0", + "jest-haste-map": "^24.8.0", + "jest-jasmine2": "^24.8.0", + "jest-leak-detector": "^24.8.0", + "jest-message-util": "^24.8.0", + "jest-resolve": "^24.8.0", + "jest-runtime": "^24.8.0", + "jest-util": "^24.8.0", + "jest-worker": "^24.6.0", "source-map-support": "^0.5.6", "throat": "^4.0.0" } }, "jest-runtime": { - "version": "24.5.0", - "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-24.5.0.tgz", - "integrity": "sha512-GTFHzfLdwpaeoDPilNpBrorlPoNZuZrwKKzKJs09vWwHo+9TOsIIuszK8cWOuKC7ss07aN1922Ge8fsGdsqCuw==", + "version": "24.8.0", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-24.8.0.tgz", + "integrity": "sha512-Mq0aIXhvO/3bX44ccT+czU1/57IgOMyy80oM0XR/nyD5zgBcesF84BPabZi39pJVA6UXw+fY2Q1N+4BiVUBWOA==", "dev": true, "requires": { - "@jest/console": "^24.3.0", - "@jest/environment": "^24.5.0", + "@jest/console": "^24.7.1", + "@jest/environment": "^24.8.0", "@jest/source-map": "^24.3.0", - "@jest/transform": "^24.5.0", - "@jest/types": "^24.5.0", + "@jest/transform": "^24.8.0", + "@jest/types": "^24.8.0", "@types/yargs": "^12.0.2", "chalk": "^2.0.1", "exit": "^0.1.2", "glob": "^7.1.3", "graceful-fs": "^4.1.15", - "jest-config": "^24.5.0", - "jest-haste-map": "^24.5.0", - "jest-message-util": "^24.5.0", - "jest-mock": "^24.5.0", + "jest-config": "^24.8.0", + "jest-haste-map": "^24.8.0", + "jest-message-util": "^24.8.0", + "jest-mock": "^24.8.0", "jest-regex-util": "^24.3.0", - "jest-resolve": "^24.5.0", - "jest-snapshot": "^24.5.0", - "jest-util": "^24.5.0", - "jest-validate": "^24.5.0", + "jest-resolve": "^24.8.0", + "jest-snapshot": "^24.8.0", + "jest-util": "^24.8.0", + "jest-validate": "^24.8.0", "realpath-native": "^1.1.0", "slash": "^2.0.0", "strip-bom": "^3.0.0", @@ -4780,37 +5083,36 @@ "dev": true }, "jest-snapshot": { - "version": "24.5.0", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-24.5.0.tgz", - "integrity": "sha512-eBEeJb5ROk0NcpodmSKnCVgMOo+Qsu5z9EDl3tGffwPzK1yV37mjGWF2YeIz1NkntgTzP+fUL4s09a0+0dpVWA==", + "version": "24.8.0", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-24.8.0.tgz", + "integrity": "sha512-5ehtWoc8oU9/cAPe6fez6QofVJLBKyqkY2+TlKTOf0VllBB/mqUNdARdcjlZrs9F1Cv+/HKoCS/BknT0+tmfPg==", "dev": true, "requires": { "@babel/types": "^7.0.0", - "@jest/types": "^24.5.0", + "@jest/types": "^24.8.0", "chalk": "^2.0.1", - "expect": "^24.5.0", - "jest-diff": "^24.5.0", - "jest-matcher-utils": "^24.5.0", - "jest-message-util": "^24.5.0", - "jest-resolve": "^24.5.0", + "expect": "^24.8.0", + "jest-diff": "^24.8.0", + "jest-matcher-utils": "^24.8.0", + "jest-message-util": "^24.8.0", + "jest-resolve": "^24.8.0", "mkdirp": "^0.5.1", "natural-compare": "^1.4.0", - "pretty-format": "^24.5.0", + "pretty-format": "^24.8.0", "semver": "^5.5.0" } }, "jest-util": { - "version": "24.5.0", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-24.5.0.tgz", - "integrity": "sha512-Xy8JsD0jvBz85K7VsTIQDuY44s+hYJyppAhcsHsOsGisVtdhar6fajf2UOf2mEVEgh15ZSdA0zkCuheN8cbr1Q==", + "version": "24.8.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-24.8.0.tgz", + "integrity": "sha512-DYZeE+XyAnbNt0BG1OQqKy/4GVLPtzwGx5tsnDrFcax36rVE3lTA5fbvgmbVPUZf9w77AJ8otqR4VBbfFJkUZA==", "dev": true, "requires": { - "@jest/console": "^24.3.0", - "@jest/fake-timers": "^24.5.0", + "@jest/console": "^24.7.1", + "@jest/fake-timers": "^24.8.0", "@jest/source-map": "^24.3.0", - "@jest/test-result": "^24.5.0", - "@jest/types": "^24.5.0", - "@types/node": "*", + "@jest/test-result": "^24.8.0", + "@jest/types": "^24.8.0", "callsites": "^3.0.0", "chalk": "^2.0.1", "graceful-fs": "^4.1.15", @@ -4829,42 +5131,40 @@ } }, "jest-validate": { - "version": "24.5.0", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-24.5.0.tgz", - "integrity": "sha512-gg0dYszxjgK2o11unSIJhkOFZqNRQbWOAB2/LOUdsd2LfD9oXiMeuee8XsT0iRy5EvSccBgB4h/9HRbIo3MHgQ==", + "version": "24.8.0", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-24.8.0.tgz", + "integrity": "sha512-+/N7VOEMW1Vzsrk3UWBDYTExTPwf68tavEPKDnJzrC6UlHtUDU/fuEdXqFoHzv9XnQ+zW6X3qMZhJ3YexfeLDA==", "dev": true, "requires": { - "@jest/types": "^24.5.0", + "@jest/types": "^24.8.0", "camelcase": "^5.0.0", "chalk": "^2.0.1", - "jest-get-type": "^24.3.0", + "jest-get-type": "^24.8.0", "leven": "^2.1.0", - "pretty-format": "^24.5.0" + "pretty-format": "^24.8.0" } }, "jest-watcher": { - "version": "24.5.0", - "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-24.5.0.tgz", - "integrity": "sha512-/hCpgR6bg0nKvD3nv4KasdTxuhwfViVMHUATJlnGCD0r1QrmIssimPbmc5KfAQblAVxkD8xrzuij9vfPUk1/rA==", + "version": "24.8.0", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-24.8.0.tgz", + "integrity": "sha512-SBjwHt5NedQoVu54M5GEx7cl7IGEFFznvd/HNT8ier7cCAx/Qgu9ZMlaTQkvK22G1YOpcWBLQPFSImmxdn3DAw==", "dev": true, "requires": { - "@jest/test-result": "^24.5.0", - "@jest/types": "^24.5.0", - "@types/node": "*", + "@jest/test-result": "^24.8.0", + "@jest/types": "^24.8.0", "@types/yargs": "^12.0.9", "ansi-escapes": "^3.0.0", "chalk": "^2.0.1", - "jest-util": "^24.5.0", + "jest-util": "^24.8.0", "string-length": "^2.0.0" } }, "jest-worker": { - "version": "24.4.0", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-24.4.0.tgz", - "integrity": "sha512-BH9X/klG9vxwoO99ZBUbZFfV8qO0XNZ5SIiCyYK2zOuJBl6YJVAeNIQjcoOVNu4HGEHeYEKsUWws8kSlSbZ9YQ==", + "version": "24.6.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-24.6.0.tgz", + "integrity": "sha512-jDwgW5W9qGNvpI1tNnvajh0a5IE/PuGLFmHk6aR/BZFz8tSgGw17GsDPXAJ6p91IvYDjOw8GpFbvvZGAK+DPQQ==", "dev": true, "requires": { - "@types/node": "*", "merge-stream": "^1.0.1", "supports-color": "^6.1.0" }, @@ -4887,9 +5187,9 @@ "dev": true }, "js-yaml": { - "version": "3.12.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.12.1.tgz", - "integrity": "sha512-um46hB9wNOKlwkHgiuyEVAybXBjwFUV0Z/RaHJblRd9DXltue9FTYvzCr9ErQrK9Adz5MU4gHWVaNUfdmrC8qA==", + "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", @@ -4942,6 +5242,15 @@ "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", "dev": true }, + "json-bigint": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/json-bigint/-/json-bigint-0.3.0.tgz", + "integrity": "sha1-DM2RLEuCcNBfBW+9E4FLU9OCWx4=", + "dev": true, + "requires": { + "bignumber.js": "^7.0.0" + } + }, "json-buffer": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", @@ -5015,23 +5324,23 @@ "dev": true }, "jwa": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.2.0.tgz", - "integrity": "sha512-Grku9ZST5NNQ3hqNUodSkDfEBqAmGA1R8yiyPHOnLzEKI0GaCQC/XhFmsheXYuXzFQJdILbh+lYBiliqG5R/Vg==", + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz", + "integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==", "dev": true, "requires": { "buffer-equal-constant-time": "1.0.1", - "ecdsa-sig-formatter": "1.0.10", + "ecdsa-sig-formatter": "1.0.11", "safe-buffer": "^5.0.1" } }, "jws": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.1.tgz", - "integrity": "sha512-bGA2omSrFUkd72dhh05bIAN832znP4wOU3lfuXtRBuGTbsmNmDXMQg28f0Vsxaxgk4myF5YkKQpz6qeRpMgX9g==", + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz", + "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==", "dev": true, "requires": { - "jwa": "^1.2.0", + "jwa": "^1.4.1", "safe-buffer": "^5.0.1" } }, @@ -5045,15 +5354,18 @@ } }, "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 + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } }, "kleur": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.2.tgz", - "integrity": "sha512-3h7B2WRT5LNXOtQiAaWonilegHcPSf9nLVXlSTci8lu1dZUuui61+EsPEZqSVxY7rXYmB2DVKMQILxaO5WL61Q==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", "dev": true }, "last-run": { @@ -5125,13 +5437,13 @@ } }, "liftoff": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/liftoff/-/liftoff-2.5.0.tgz", - "integrity": "sha1-IAkpG7Mc6oYbvxCnwVooyvdcMew=", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/liftoff/-/liftoff-3.1.0.tgz", + "integrity": "sha512-DlIPlJUkCV0Ips2zf2pJP0unEoT1kwYhiiPUGF3s/jtxTCjziNLoiVVh+jqWOWeFi6mmwQ5fNxvAUyPad4Dfog==", "dev": true, "requires": { "extend": "^3.0.0", - "findup-sync": "^2.0.0", + "findup-sync": "^3.0.0", "fined": "^1.0.1", "flagged-respawn": "^1.0.0", "is-plain-object": "^2.0.4", @@ -5185,12 +5497,6 @@ "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==", "dev": true }, - "lodash.debounce": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", - "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=", - "dev": true - }, "lodash.sortby": { "version": "4.7.0", "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", @@ -5222,12 +5528,21 @@ } }, "make-dir": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", - "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==", + "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": "^3.0.0" + "pify": "^4.0.1", + "semver": "^5.6.0" + }, + "dependencies": { + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true + } } }, "make-iterator": { @@ -5237,6 +5552,14 @@ "dev": true, "requires": { "kind-of": "^6.0.2" + }, + "dependencies": { + "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 + } } }, "makeerror": { @@ -5282,6 +5605,69 @@ "micromatch": "^3.0.4", "resolve": "^1.4.0", "stack-trace": "0.0.10" + }, + "dependencies": { + "findup-sync": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-2.0.0.tgz", + "integrity": "sha1-kyaxSIwi0aYIhlCoaQGy2akKLLw=", + "dev": true, + "requires": { + "detect-file": "^1.0.0", + "is-glob": "^3.1.0", + "micromatch": "^3.0.4", + "resolve-dir": "^1.0.1" + } + }, + "global-modules": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", + "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", + "dev": true, + "requires": { + "global-prefix": "^1.0.1", + "is-windows": "^1.0.1", + "resolve-dir": "^1.0.0" + } + }, + "global-prefix": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", + "integrity": "sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=", + "dev": true, + "requires": { + "expand-tilde": "^2.0.2", + "homedir-polyfill": "^1.0.1", + "ini": "^1.3.4", + "is-windows": "^1.0.1", + "which": "^1.2.14" + } + }, + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dev": true, + "requires": { + "is-extglob": "^2.1.0" + } + }, + "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 + }, + "resolve-dir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", + "integrity": "sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=", + "dev": true, + "requires": { + "expand-tilde": "^2.0.0", + "global-modules": "^1.0.0" + } + } } }, "merge": { @@ -5318,27 +5704,35 @@ "regex-not": "^1.0.0", "snapdragon": "^0.8.1", "to-regex": "^3.0.2" + }, + "dependencies": { + "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 + } } }, "mime": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.0.tgz", - "integrity": "sha512-ikBcWwyqXQSHKtciCcctu9YfPbFYZ4+gbHEmE0Q8jzcTYQg5dHCr3g2wwAZjPoJfQVXZq6KXAjpXOTf5/cjT7w==", + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.3.tgz", + "integrity": "sha512-QgrPRJfE+riq5TPZMcHZOtm8c6K/yYrMbKIoRfapfiGLxS8OTeIfRhUGW5LU7MlRa52KOAGCfUNruqLrIBvWZw==", "dev": true }, "mime-db": { - "version": "1.38.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.38.0.tgz", - "integrity": "sha512-bqVioMFFzc2awcdJZIzR3HjZFX20QhilVS7hytkKrv7xFAn8bM1gzc/FOX2awLISvWe0PV8ptFKcon+wZ5qYkg==", + "version": "1.40.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.40.0.tgz", + "integrity": "sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA==", "dev": true }, "mime-types": { - "version": "2.1.22", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.22.tgz", - "integrity": "sha512-aGl6TZGnhm/li6F7yx82bJiBZwgiEa4Hf6CNr8YO+r5UHr53tSTYZb102zyU50DOWWKeOv0uQLRL0/9EiKWCog==", + "version": "2.1.24", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.24.tgz", + "integrity": "sha512-WaFHS3MCl5fapm3oLxU4eYDw77IQM2ACcxQ9RIxfaC3ooc6PFuBMGZZsYpvoXS5D5QTWPieo1jjLdAm3TBP3cQ==", "dev": true, "requires": { - "mime-db": "~1.38.0" + "mime-db": "1.40.0" } }, "mimic-fn": { @@ -5368,34 +5762,6 @@ "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", "dev": true }, - "minipass": { - "version": "2.3.5", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.3.5.tgz", - "integrity": "sha512-Gi1W4k059gyRbyVUZQ4mEqLm0YIUiGYfvxhF6SIlk3ui1WVxMTGfGdQ2SInh3PDrRTVvPKgULkpJtT4RH10+VA==", - "dev": true, - "requires": { - "safe-buffer": "^5.1.2", - "yallist": "^3.0.0" - }, - "dependencies": { - "yallist": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.0.3.tgz", - "integrity": "sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A==", - "dev": true - } - } - }, - "minizlib": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.2.1.tgz", - "integrity": "sha512-7+4oTUOWKg7AuL3vloEWekXY2/D20cevzsrNT2kGWm+39J9hGTCBv8VI5Pm5lXZ/o3/mdR4f8rflAPhnQb8mPA==", - "dev": true, - "optional": true, - "requires": { - "minipass": "^2.2.1" - } - }, "mixin-deep": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.1.tgz", @@ -5465,9 +5831,9 @@ "dev": true }, "nan": { - "version": "2.12.1", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.12.1.tgz", - "integrity": "sha512-JY7V6lRkStKcKTvHO5NVSQRv+RV+FIL5pvDoLiAtSL9pKlC5x9PKQcZDsq7m4FO4d57mkhC6Z+QhAh3Jdk5JFw==", + "version": "2.14.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.0.tgz", + "integrity": "sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg==", "dev": true, "optional": true }, @@ -5488,6 +5854,20 @@ "regex-not": "^1.0.0", "snapdragon": "^0.8.1", "to-regex": "^3.0.1" + }, + "dependencies": { + "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 + }, + "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 + } } }, "natural-compare": { @@ -5496,17 +5876,11 @@ "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", "dev": true }, - "needle": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/needle/-/needle-2.2.4.tgz", - "integrity": "sha512-HyoqEb4wr/rsoaIDfTH2aVL9nWtQqba2/HvMv+++m8u0dz808MaagKILxtfeSN7QU7nvbQ79zk3vYOJp9zsNEA==", - "dev": true, - "optional": true, - "requires": { - "debug": "^2.1.2", - "iconv-lite": "^0.4.4", - "sax": "^1.2.4" - } + "neo-async": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.1.tgz", + "integrity": "sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw==", + "dev": true }, "next-tick": { "version": "1.0.0", @@ -5521,15 +5895,15 @@ "dev": true }, "node-fetch": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.3.0.tgz", - "integrity": "sha512-MOd8pV3fxENbryESLgVIeaGKrdl+uaYhCSSVkjeOb/31/njTpcis5aWfdqgNlHIrKOLRbMnfPINPOML2CIFeXA==", + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.0.tgz", + "integrity": "sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA==", "dev": true }, "node-forge": { - "version": "0.7.6", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.7.6.tgz", - "integrity": "sha512-sol30LUpz1jQFBjOKwbjxijiE3b6pjd74YwfD0fJOKPjF+fONKb2Yg8rYgS6+bK6VDl+/wfr4IYpC7jDzLUIfw==", + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.8.3.tgz", + "integrity": "sha512-5lv9UKmvTBog+m4AWL8XpZnr3WbNKxYL2M77i903ylY/huJIooSTDHyUWQ/OppFuKQpAGMk6qNtDymSJNRIEIg==", "dev": true }, "node-int64": { @@ -5557,38 +5931,6 @@ "which": "^1.3.0" } }, - "node-pre-gyp": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.10.0.tgz", - "integrity": "sha512-G7kEonQLRbcA/mOoFoxvlMrw6Q6dPf92+t/l0DFSMuSlDoWaI9JWIyPwK0jyE1bph//CUEL65/Fz1m2vJbmjQQ==", - "dev": true, - "optional": true, - "requires": { - "detect-libc": "^1.0.2", - "mkdirp": "^0.5.1", - "needle": "^2.2.0", - "nopt": "^4.0.1", - "npm-packlist": "^1.1.6", - "npmlog": "^4.0.2", - "rc": "^1.1.7", - "rimraf": "^2.6.1", - "semver": "^5.3.0", - "tar": "^4" - }, - "dependencies": { - "nopt": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.1.tgz", - "integrity": "sha1-0NRoWv1UFRk8jHUFYC0NF81kR00=", - "dev": true, - "optional": true, - "requires": { - "abbrev": "1", - "osenv": "^0.1.4" - } - } - } - }, "nopt": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz", @@ -5599,13 +5941,13 @@ } }, "normalize-package-data": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", - "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", "dev": true, "requires": { "hosted-git-info": "^2.1.4", - "is-builtin-module": "^1.0.0", + "resolve": "^1.10.0", "semver": "2 || 3 || 4 || 5", "validate-npm-package-license": "^3.0.1" } @@ -5639,32 +5981,14 @@ } }, "now-and-later": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/now-and-later/-/now-and-later-2.0.0.tgz", - "integrity": "sha1-vGHLtFbXnLMiB85HygUTb/Ln1u4=", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/now-and-later/-/now-and-later-2.0.1.tgz", + "integrity": "sha512-KGvQ0cB70AQfg107Xvs/Fbu+dGmZoTRJp2TaPwcwQm3/7PteUyN2BCgk8KBMPGBUXZdVwyWS8fDCGFygBm19UQ==", "dev": true, "requires": { "once": "^1.3.2" } }, - "npm-bundled": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.0.5.tgz", - "integrity": "sha512-m/e6jgWu8/v5niCUKQi9qQl8QdeEduFA96xHDDzFGqly0OOjI7c+60KM/2sppfnUU9JJagf+zs+yGhqSOFj71g==", - "dev": true, - "optional": true - }, - "npm-packlist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-1.2.0.tgz", - "integrity": "sha512-7Mni4Z8Xkx0/oegoqlcao/JpPCPEMtUvsmB0q7mgvlMinykJLSRTYuFqoQLYgGY8biuxIeiHO+QNJKbCfljewQ==", - "dev": true, - "optional": true, - "requires": { - "ignore-walk": "^3.0.1", - "npm-bundled": "^1.0.1" - } - }, "npm-run-path": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", @@ -5674,19 +5998,6 @@ "path-key": "^2.0.0" } }, - "npmlog": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", - "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", - "dev": true, - "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": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", @@ -5694,9 +6005,9 @@ "dev": true }, "nwsapi": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.1.1.tgz", - "integrity": "sha512-T5GaA1J/d34AC8mkrFD2O0DR17kwJ702ZOtJOsS8RpbsQZVOC2/xYFb1i/cw+xdM54JIlMuojjDOYct8GIWtwg==", + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.1.4.tgz", + "integrity": "sha512-iGfd9Y6SFdTNldEy2L0GUhcarIutFmk+MPWIn9dmj8NMIup03G08uUF2KGbbmv/Ux4RT0VZJoP/sVbWA6d/VIw==", "dev": true }, "oauth-sign": { @@ -5730,22 +6041,13 @@ "requires": { "is-descriptor": "^0.1.0" } - }, - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } } } }, "object-keys": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.12.tgz", - "integrity": "sha512-FTMyFUm2wBcGHnH2eXmz7tC6IwlqQZ6mVZ+6dm6vZ4IQIHjs6FdNsQBuKGPuUUUY6NfJw2PshC08Tn6LzLDOag==", + "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": { @@ -5848,9 +6150,9 @@ } }, "opn": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/opn/-/opn-5.4.0.tgz", - "integrity": "sha512-YF9MNdVy/0qvJvDtunAOzFw9iasOQHpVthTCvGzxt61Il64AYSGdK+rYwld7NAfk9qJ7dt+hymBNSc9LNYS+Sw==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/opn/-/opn-5.5.0.tgz", + "integrity": "sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA==", "dev": true, "requires": { "is-wsl": "^1.1.0" @@ -6003,17 +6305,6 @@ "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", "dev": true }, - "osenv": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", - "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", - "dev": true, - "optional": true, - "requires": { - "os-homedir": "^1.0.0", - "os-tmpdir": "^1.0.0" - } - }, "p-any": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/p-any/-/p-any-1.1.0.tgz", @@ -6105,9 +6396,9 @@ } }, "p-try": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.0.0.tgz", - "integrity": "sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ==", + "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 }, "parent-module": { @@ -6158,9 +6449,9 @@ "dev": true }, "parseurl": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.2.tgz", - "integrity": "sha1-/CidTtiZMRlGDBViUyYs3I3mW/M=", + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", "dev": true }, "pascalcase": { @@ -6391,12 +6682,12 @@ "dev": true }, "pretty-format": { - "version": "24.5.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-24.5.0.tgz", - "integrity": "sha512-/3RuSghukCf8Riu5Ncve0iI+BzVkbRU5EeUoArKARZobREycuH5O4waxvaNIloEXdb0qwgmEAed5vTpX1HNROQ==", + "version": "24.8.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-24.8.0.tgz", + "integrity": "sha512-P952T7dkrDEplsR+TuY7q3VXDae5Sr7zmQb12JU/NDQa/3CH7/QW0yvqLcGN6jL+zQFKaoJcPc+yJxMTGmosqw==", "dev": true, "requires": { - "@jest/types": "^24.5.0", + "@jest/types": "^24.8.0", "ansi-regex": "^4.0.0", "ansi-styles": "^3.2.0", "react-is": "^16.8.4" @@ -6423,9 +6714,9 @@ "dev": true }, "process-nextick-args": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", - "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", + "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", "dev": true }, "progress": { @@ -6435,9 +6726,9 @@ "dev": true }, "prompts": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.0.3.tgz", - "integrity": "sha512-H8oWEoRZpybm6NV4to9/1limhttEo13xK62pNvn2JzY0MA03p7s0OjtmhXyon3uJmxiJJVSuUwEJFFssI3eBiQ==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.0.4.tgz", + "integrity": "sha512-HTzM3UWp/99A0gk51gAegwo1QRYA7xjcZufMNe33rCclFszUYAuHe1fIN/3ZmiHeGPkUsNaRyQm1hHOfM0PKxA==", "dev": true, "requires": { "kleur": "^3.0.2", @@ -6541,9 +6832,9 @@ "dev": true }, "qs": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", - "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", + "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==", "dev": true }, "query-string": { @@ -6563,23 +6854,10 @@ "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", "dev": true }, - "rc": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", - "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" - } - }, "react-is": { - "version": "16.8.4", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.8.4.tgz", - "integrity": "sha512-PVadd+WaUDOAciICm/J1waJaSvgq+4rHE/K70j0PFqKhkTBsPv/82UGQJNXAngz1fOQLLxI6z1sEDmJDQhCTAA==", + "version": "16.8.6", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.8.6.tgz", + "integrity": "sha512-aUk3bHfZ2bRSVFFbbeVS4i+lNPZr3/WM5jT2J5omUVV1zzcs1nAaf3l51ctA5FFvCRbhrH0bdAsRRQddFJZPtA==", "dev": true }, "read-file": { @@ -6633,14 +6911,6 @@ "safe-buffer": "~5.1.1", "string_decoder": "~1.1.1", "util-deprecate": "~1.0.1" - }, - "dependencies": { - "process-nextick-args": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", - "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", - "dev": true - } } }, "readdirp": { @@ -6804,6 +7074,12 @@ "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", "dev": true }, + "qs": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", + "dev": true + }, "tough-cookie": { "version": "2.4.3", "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", @@ -6849,9 +7125,9 @@ "dev": true }, "resolve": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.9.0.tgz", - "integrity": "sha512-TZNye00tI67lwYvzxCxHGjwTNlUV70io54/Ed4j6PscB8xVfuBJpRenI/o6dVk0cY0PYTY27AgCoGGxRnYuItQ==", + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.11.0.tgz", + "integrity": "sha512-WL2pBDjqT6pGUNSUzMw00o4T7If+z4H2x3Gz893WoUQ5KW8Vr9txp00ykiP16VBaZF5+j/OcXJHZ9+PCvdiDKw==", "dev": true, "requires": { "path-parse": "^1.0.6" @@ -6867,13 +7143,24 @@ } }, "resolve-dir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", - "integrity": "sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=", + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-0.1.1.tgz", + "integrity": "sha1-shklmlYC+sXFxJatiUpujMQwJh4=", "dev": true, "requires": { - "expand-tilde": "^2.0.0", - "global-modules": "^1.0.0" + "expand-tilde": "^1.2.2", + "global-modules": "^0.2.3" + }, + "dependencies": { + "expand-tilde": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-1.2.2.tgz", + "integrity": "sha1-C4HrqJflo9MdHD0QL48BRB5VlEk=", + "dev": true, + "requires": { + "os-homedir": "^1.0.1" + } + } } }, "resolve-file": { @@ -6958,12 +7245,6 @@ "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", "dev": true }, - "retry-axios": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/retry-axios/-/retry-axios-0.3.2.tgz", - "integrity": "sha512-jp4YlI0qyDFfXiXGhkCOliBN1G7fRH03Nqy8YdShzGqbY5/9S2x/IR6C88ls2DFkbWuL3ASkP7QD3pVrNpPgwQ==", - "dev": true - }, "rimraf": { "version": "2.6.3", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", @@ -6974,9 +7255,9 @@ } }, "rsvp": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/rsvp/-/rsvp-3.6.2.tgz", - "integrity": "sha512-OfWGQTb9vnwRjwtA2QwpG2ICclHC3pgXZO5xt8H2EfgDquO0qVdSb5T88L4qJVAEugbS56pAuV4XZM58UX8ulw==", + "version": "4.8.4", + "resolved": "https://registry.npmjs.org/rsvp/-/rsvp-4.8.4.tgz", + "integrity": "sha512-6FomvYPfs+Jy9TfXmBpBuMWNH94SgCsZmJKcanySzgNNP6LjWxBvyLTa9KaMfDDM5oxRfrKDB0r/qeRsLwnBfA==", "dev": true }, "run-async": { @@ -7025,20 +7306,32 @@ "dev": true }, "sane": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/sane/-/sane-4.0.3.tgz", - "integrity": "sha512-hSLkC+cPHiBQs7LSyXkotC3UUtyn8C4FMn50TNaacRyvBlI+3ebcxMpqckmTdtXVtel87YS7GXN3UIOj7NiGVQ==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/sane/-/sane-4.1.0.tgz", + "integrity": "sha512-hhbzAgTIX8O7SHfp2c8/kREfEn4qO/9q8C9beyY6+tvZ87EpoZ3i1RIEvp27YBswnNbY9mWd6paKVmKbAgLfZA==", "dev": true, "requires": { "@cnakazawa/watch": "^1.0.3", "anymatch": "^2.0.0", - "capture-exit": "^1.2.0", + "capture-exit": "^2.0.0", "exec-sh": "^0.3.2", "execa": "^1.0.0", "fb-watchman": "^2.0.0", "micromatch": "^3.1.4", "minimist": "^1.1.1", "walker": "~1.0.5" + }, + "dependencies": { + "@cnakazawa/watch": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@cnakazawa/watch/-/watch-1.0.3.tgz", + "integrity": "sha512-r5160ogAvGyHsal38Kux7YYtodEKOj89RGb28ht1jh3SJb08VwRwAKKJL0bGb04Zd/3r9FL3BFIc3bBidYffCA==", + "dev": true, + "requires": { + "exec-sh": "^0.3.2", + "minimist": "^1.2.0" + } + } } }, "sax": { @@ -7248,6 +7541,12 @@ "is-data-descriptor": "^1.0.0", "kind-of": "^6.0.2" } + }, + "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 } } }, @@ -7258,17 +7557,6 @@ "dev": true, "requires": { "kind-of": "^3.2.0" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } } }, "sort-keys": { @@ -7300,9 +7588,9 @@ } }, "source-map-support": { - "version": "0.5.11", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.11.tgz", - "integrity": "sha512-//sajEx/fGL3iw6fltKMdPvy8kL3kJ2O3iuYlRoT3k9Kb4BjOoZ+BZzaNHeuaruSt+Kf3Zk9tnfAQg9/AJqUVQ==", + "version": "0.5.12", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.12.tgz", + "integrity": "sha512-4h2Pbvyy15EE02G+JOZpUCmqWJuqrs+sEkzewTm++BPi7Hvn/HwcqLAcNxYAyI0x13CpPPn+kMjl+hplXMHITQ==", "dev": true, "requires": { "buffer-from": "^1.0.0", @@ -7356,9 +7644,9 @@ } }, "spdx-license-ids": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.3.tgz", - "integrity": "sha512-uBIcIl3Ih6Phe3XHK1NqboJLdGfwr1UN3k6wSD1dZpmPsIkb8AGNbZYJ1fOBk834+Gxy8rpfDxrS6XLEMZMY2g==", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.4.tgz", + "integrity": "sha512-7j8LYJLeY/Yb6ACbQ7F76qy5jHkp0U6jgBfJsk97bwWlVUnUWsAgpyaCvo17h0/RQGnQ036tVDomiwoI4pDkQA==", "dev": true }, "split-lines": { @@ -7627,41 +7915,16 @@ } } }, - "tar": { - "version": "4.4.8", - "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.8.tgz", - "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" - }, - "dependencies": { - "yallist": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.0.3.tgz", - "integrity": "sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A==", - "dev": true, - "optional": true - } - } - }, "test-exclude": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-5.1.0.tgz", - "integrity": "sha512-gwf0S2fFsANC55fSeSqpb8BYk6w3FDvwZxfNjeF6FRgvFa43r+7wRiA/Q0IxoRU37wB/LE8IQ4221BsNucTaCA==", + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-5.2.3.tgz", + "integrity": "sha512-M+oxtseCFO3EDtAaGH7iiej3CBkzXqFMbzqYAACdzKui4eZA+pq3tZEwChvOdNfa7xxy8BfbmgJSIr43cC/+2g==", "dev": true, "requires": { - "arrify": "^1.0.1", + "glob": "^7.1.3", "minimatch": "^3.0.4", "read-pkg-up": "^4.0.0", - "require-main-filename": "^1.0.1" + "require-main-filename": "^2.0.0" }, "dependencies": { "find-up": { @@ -7725,6 +7988,12 @@ "read-pkg": "^3.0.0" } }, + "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 + }, "strip-bom": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", @@ -7827,17 +8096,6 @@ "dev": true, "requires": { "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } } }, "to-regex": { @@ -7906,9 +8164,9 @@ "dev": true }, "ts2gas": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/ts2gas/-/ts2gas-1.6.0.tgz", - "integrity": "sha512-YapSoKYSqOVEfdnShdk9vNCXITlaHyRwi7a1KpariboUUCSYvNEeirQLPqVF/YVOjRDpcqeB3wrn4XP2w304LQ==", + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/ts2gas/-/ts2gas-1.6.2.tgz", + "integrity": "sha512-u7WSYlXhGx5EvD1ODSQINz4KXHLcUFbAJtFBPrz4yINREKjKb8YIjfrW3CAo/+pgBV7R7KCHacY3atNwT76ROg==", "dev": true, "requires": { "typescript": "^3.2.2" @@ -7951,9 +8209,9 @@ "dev": true }, "typescript": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.3.3.tgz", - "integrity": "sha512-Y21Xqe54TBVp+VDSNbuDYdGw0BpoR/Q6wo/+35M8PAU0vipahnyduJWirxxdxjsAkS7hue53x2zp8gz7F05u0A==", + "version": "3.4.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.4.5.tgz", + "integrity": "sha512-YycBxUb49UUhdNMU5aJ7z5Ej2XGmaIBL0x34vZ82fn3hGvD+bgrMrVDpatgz2f7YxUMJxMkbWxJZeAvDxVe7Vw==", "dev": true }, "ucfirst": { @@ -7963,13 +8221,13 @@ "dev": true }, "uglify-js": { - "version": "3.4.9", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.4.9.tgz", - "integrity": "sha512-8CJsbKOtEbnJsTyv6LE6m6ZKniqMiFWmm9sRbopbkGs3gMPPfd3Fh8iIA4Ykv5MgaTbqHr4BaoGLJLZNhsrW1Q==", + "version": "3.5.12", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.5.12.tgz", + "integrity": "sha512-KeQesOpPiZNgVwJj8Ge3P4JYbQHUdZzpx6Fahy6eKAYRSV4zhVmLXoC+JtOeYxcHCHTve8RG1ZGdTvpeOUM26Q==", "dev": true, "optional": true, "requires": { - "commander": "~2.17.1", + "commander": "~2.20.0", "source-map": "~0.6.1" }, "dependencies": { @@ -7989,9 +8247,9 @@ "dev": true }, "undertaker": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/undertaker/-/undertaker-1.2.0.tgz", - "integrity": "sha1-M52kZGJS0ILcN45wgGcpl1DhG0k=", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/undertaker/-/undertaker-1.2.1.tgz", + "integrity": "sha512-71WxIzDkgYk9ZS+spIB8iZXchFhAdEo2YU8xYqBYJ39DIUIqziK78ftm26eecoIY49X0J2MLhG4hr18Yp6/CMA==", "dev": true, "requires": { "arr-flatten": "^1.0.1", @@ -8109,9 +8367,9 @@ "dev": true }, "upath": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/upath/-/upath-1.1.0.tgz", - "integrity": "sha512-bzpH/oBhoS/QI/YtbkqCg6VEiPYjSZtrHQM6/QnJS6OL9pKUFLqb3aFh4Scvwm45+7iAgiMkLhSbaZxUqmrprw==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.1.2.tgz", + "integrity": "sha512-kXpym8nmDmlCBr7nKdIx8P2jNBa+pBpIUFRnKJ4dr8htyYGJFokkr2ZvERRtUN+9SY+JqXouNgUPtv6JQva/2Q==", "dev": true }, "uri-js": { @@ -8212,9 +8470,9 @@ "dev": true }, "v8flags": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-3.1.2.tgz", - "integrity": "sha512-MtivA7GF24yMPte9Rp/BWGCYQNaUj86zeYxV/x2RRJMKagImbbv3u8iJC57lNhWLPcGLJmHcHmFWkNsplbbLWw==", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-3.1.3.tgz", + "integrity": "sha512-amh9CCg3ZxkzQ48Mhcb8iX7xpAfYJgePHxWMQCBWECpOSqJUXgY26ncA61UTV0BkPqfhcy6mzwCIoP4ygxpW8w==", "dev": true, "requires": { "homedir-polyfill": "^1.0.1" @@ -8319,6 +8577,27 @@ "makeerror": "1.0.x" } }, + "watch": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/watch/-/watch-1.0.2.tgz", + "integrity": "sha1-NApxe952Vyb6CqB9ch4BR6VR3ww=", + "dev": true, + "requires": { + "exec-sh": "^0.2.0", + "minimist": "^1.2.0" + }, + "dependencies": { + "exec-sh": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/exec-sh/-/exec-sh-0.2.2.tgz", + "integrity": "sha512-FIUCJz1RbuS0FKTdaAafAByGS0CPvU3R0MeHxgtl+djzCc//F8HakL8GzmVNZanasTbTAY/3DRFA0KpVqj/eAw==", + "dev": true, + "requires": { + "merge": "^1.2.0" + } + } + } + }, "webidl-conversions": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", @@ -8366,16 +8645,6 @@ "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", "dev": true }, - "wide-align": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", - "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", - "dev": true, - "optional": true, - "requires": { - "string-width": "^1.0.2 || 2" - } - }, "wordwrap": { "version": "0.0.3", "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", diff --git a/package.json b/package.json index faf5608..76fdfec 100644 --- a/package.json +++ b/package.json @@ -17,17 +17,17 @@ "@types/google-apps-script": "^0.0.35" }, "devDependencies": { - "@google/clasp": "^2.0.1", + "@google/clasp": "^2.1.0", "del": "3.x", "directory-exists": "latest", "eslint-config-google": "^0.12.0", "exec-sh": "0.3.x", - "gulp": "^4.0.0", + "gulp": "^4.0.2", "gulp-changed": "latest", "gulp-eslint": "^5.0.0", "gulp-rename": "latest", "gulp-replace": "latest", - "jest": "^24.5.0", + "jest": "^24.8.0", "yargs": "^12.0.5" }, "scripts": { From 32f63a051f5caeb6fdea5d6edbded64b4d7906ac Mon Sep 17 00:00:00 2001 From: LJay79 Date: Fri, 17 May 2019 16:15:54 +0200 Subject: [PATCH 02/19] #212 start refactoring settings dialog into sidebar including UI tweaks --- assets/s3/README.md | 5 + assets/s3/custom.css | 2 +- src/controllers/settings.gs | 43 +++ src/settings.gs | 1 + src/views/sidebar/settings.html | 612 ++++++++++++++++++++++++++++++++ 5 files changed, 662 insertions(+), 1 deletion(-) create mode 100644 src/controllers/settings.gs create mode 100644 src/views/sidebar/settings.html diff --git a/assets/s3/README.md b/assets/s3/README.md index 5fc832e..ff4fdbd 100644 --- a/assets/s3/README.md +++ b/assets/s3/README.md @@ -10,3 +10,8 @@ https://s3.eu-central-1.amazonaws.com/jira-tools/logo-aid4jira-44x50.png https://s3.eu-central-1.amazonaws.com/jira-tools/symbol.png +## Material Design Lite + https://storage.googleapis.com/code.getmdl.io/1.3.0/material.min.js + https://cdnjs.cloudflare.com/ajax/libs/material-design-lite/1.3.0/material.css + https://cdnjs.cloudflare.com/ajax/libs/material-design-lite/1.3.0/material.blue-light_green.min.css + https://cdnjs.cloudflare.com/ajax/libs/material-design-lite/1.3.0/material.green-blue.min.css \ No newline at end of file diff --git a/assets/s3/custom.css b/assets/s3/custom.css index 7515022..1b1a834 100644 --- a/assets/s3/custom.css +++ b/assets/s3/custom.css @@ -129,7 +129,7 @@ a, a:active, a:visited { font-family: var(--docs-material-header-font-family, Roboto, Helvetica, Arial, sans-serif); font-weight: var(--docs-material-font-weight-bold, 500); letter-spacing: 0.25px; - line-height: 16px; + line-height: 16px; /* to be removed asap! */ color: #188038; display: inline-block; } diff --git a/src/controllers/settings.gs b/src/controllers/settings.gs new file mode 100644 index 0000000..f9ffe68 --- /dev/null +++ b/src/controllers/settings.gs @@ -0,0 +1,43 @@ +/** + * @file Contains controller class and sidebar/callback method for add-on settings. + */ + +/** + * @desc Wrapper: Sidebar for "Settings" + */ +function menuSettings() { + Settings_Controller_.sidebar(); +} + +/** + * Creates a new Settings_Controller_ object, controller for multiple actions. + */ +Settings_Controller_ = { + name : 'Settings_Controller_', + + /** + * @desc Menu called to open new sidebar dialog. + */ + sidebar : function () { + initDefaults(); + + var sidebar = getDialog('views/sidebar/settings', getServerCfg()); + + debug.log('Processed: %s', sidebar); + + var html = HtmlService.createHtmlOutput(sidebar.getContent()) + .setTitle('Settings') + .setSandboxMode(HtmlService.SandboxMode.IFRAME) + ; + + SpreadsheetApp.getUi().showSidebar(html); + } + +} + +// Node required code block +module.exports = { + menuSettings : menuSettings, + Settings_Controller_ : Settings_Controller_ +} +// End of Node required code block diff --git a/src/settings.gs b/src/settings.gs index 44c8a62..eb1bd88 100644 --- a/src/settings.gs +++ b/src/settings.gs @@ -101,6 +101,7 @@ function initDefaults() { */ function getServerCfg() { return { + buildNumber: BUILD, available: getCfg_('available'), url: getCfg_('jira_url'), username: getCfg_('jira_username'), diff --git a/src/views/sidebar/settings.html b/src/views/sidebar/settings.html new file mode 100644 index 0000000..5475956 --- /dev/null +++ b/src/views/sidebar/settings.html @@ -0,0 +1,612 @@ + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file From 8aac37530a6e7d0a943f7eafbd2d06b4c13aa794 Mon Sep 17 00:00:00 2001 From: LJay79 Date: Tue, 21 May 2019 17:13:05 +0200 Subject: [PATCH 03/19] implement (soft) custom exception handling for "Custom function" with error count and feature suspension - CustomFunctionErrorException --- src/customFunctions.gs | 100 +++++++++++++++++++++++++++++++++++++---- 1 file changed, 91 insertions(+), 9 deletions(-) diff --git a/src/customFunctions.gs b/src/customFunctions.gs index eca2455..b706559 100644 --- a/src/customFunctions.gs +++ b/src/customFunctions.gs @@ -28,12 +28,12 @@ function JST_EPICLABEL(TicketId) { var response = {}; if(TicketId == '') { - throw new Error("{TicketId} can not be empty."); + throw new CustomFunctionErrorException("{TicketId} can not be empty."); } if(!EpicField.isUsable()) { debug.error("epicField seems not be configured: %s", EpicField.getJson()); - throw new Error("Please configure your Jira Epic field first. Go to 'Project Aid for Jira' -> 'Configure custom fields'"); + throw new CustomFunctionErrorException("Please configure your Jira Epic field first. Go to 'Project Aid for Jira' -> 'Configure custom fields'"); } response = request.call('issueStatus', { @@ -50,7 +50,7 @@ function JST_EPICLABEL(TicketId) { return value; } else { debug.error("In JST_EPICLABEL; Response %s", response); - throw new Error(response.respData.errorMessages.join(",") || response.respData.errorMessages); + throw new CustomFunctionErrorException(response.respData.errorMessages.join(",") || response.respData.errorMessages); } } @@ -85,7 +85,7 @@ function JST_getTotalForSearchResult(JQL) { if (response.statusCode == 401) { msg = msg + ' for Jira user [' + getCfg_('jira_username') + ']'; } - throw new Error("[" + response.statusCode + "] - " + msg + " - JQL: " + JQL); + throw new CustomFunctionErrorException("[" + response.statusCode + "] - " + msg + " - JQL: " + JQL); } } @@ -104,18 +104,18 @@ function JST_search(JQL, Fields, Limit, StartAt) { // - checks - if (undefined == JQL || JQL == '') { - throw new Error("{JQL} can not be empty."); + throw new CustomFunctionErrorException("{JQL} can not be empty."); } if (undefined == Fields || Fields == '') { - throw new Error("{Fields} can not be empty."); + throw new CustomFunctionErrorException("{Fields} can not be empty."); } else if(typeof Fields !== 'string') { - throw new Error("{Fields} must be a string. A comma separated list of JIRA field names."); + throw new CustomFunctionErrorException("{Fields} must be a string. A comma separated list of JIRA field names."); } Limit = parseInt(Limit) || 1; if (Limit > 100) { - throw new Error("{Limit} must be between 1 and 100."); + throw new CustomFunctionErrorException("{Limit} must be between 1 and 100."); } StartAt = parseInt(StartAt) || 0; @@ -169,7 +169,7 @@ function JST_search(JQL, Fields, Limit, StartAt) { if (response.statusCode == 401) { msg = msg + ' for Jira user [' + getCfg_('jira_username') + ']'; } - throw new Error("[" + response.statusCode + "] - " + msg); + throw new CustomFunctionErrorException("[" + response.statusCode + "] - " + msg); } } @@ -198,6 +198,9 @@ function customFunctionAllowed_() { if (!customFunctionsEnabled_()) { throw new Error("The document owner (you) must enable custom functions. Open 'Add-ons > Project Aid for Jira > Settings' and toggle 'Custom Functions' to enabled. If you are not the document owner, ask him to enable custom functions."); } + + // no return value; throws Error is feature is suspended + customFunctionsSuspended_(); } /** @@ -209,6 +212,85 @@ function customFunctionsEnabled_() { } +/** + * @desc Custom Error Exception handler. Does same as Error just implemented a error counter. + */ +function CustomFunctionErrorException(message) { + this.message = message; + this._countHandler(); + + // Use V8's native method if available, otherwise fallback + if ("captureStackTrace" in Error) + Error.captureStackTrace(this, CustomFunctionErrorException); + else + this.stack = (new Error()).stack; +} + +CustomFunctionErrorException.prototype = Object.create(Error.prototype); +CustomFunctionErrorException.prototype.name = "JST_Error"; +CustomFunctionErrorException.prototype.constructor = CustomFunctionErrorException; +CustomFunctionErrorException.prototype._countHandler = function() { + var docProps = CacheService.getDocumentCache(); + var key = 'CUSTOM_FUNCTIONS_ERROR_COUNT'; + var count = docProps.get(key) || 0; + docProps.put(key, ++count, 60*60); +}; + + +/** + * @TODO: Not activated yet - soft launch with logging before lauching such critical code + * @desc Check for CustomFunctions Error count and decide to suspend any further calls for a while or not. + * @throws Error + * @return void + */ +function customFunctionsSuspended_() { + var docProps = CacheService.getDocumentCache(); + var key_count = 'CUSTOM_FUNCTIONS_ERROR_COUNT'; + var key_time = 'CUSTOM_FUNCTIONS_ERROR_TIME'; + var count = docProps.get(key_count) || 0; + var now = new Date(); + var _timeUntil = docProps.get(key_time); + var timeUntil = new Date(); + + console.info('customFunctionsSuspended_(): Counter is at: %s', count); + + if (_timeUntil != null) { + // suspension time is set, convert to Date object + timeUntil.setTime(_timeUntil); + } + + if (timeUntil.getSeconds() > (now.getSeconds()+5)) { + var _delay_seconds = timeUntil.getSeconds() - now.getSeconds(); + var _msg = "Suspension of custom functions for about " + _delay_seconds + " seconds because of to many errors! Please correct all your custom function calls in this document and wait before re-trying."; + console.info("customFunctionsSuspended_():" + _msg + " Now: %s < Until: %s", now.toString(), timeUntil.toString()); + //@TODO: throw new Error(_msg); // NOT YET ACTIVE + } + + // else + if (count >= 100) { + // set suspension +300s + console.info('customFunctionsSuspended_(): ... setting 300s suspension!'); + now.setSeconds(now.getSeconds() + 300); + docProps.put(key_time, now.getTime()); + + // reset error counter + docProps.put(key_count, 0); + + } else if (count >= 25 && count < 30) { + // set suspension +300s + console.info('customFunctionsSuspended_(): ... setting 60s suspension!'); + now.setSeconds(now.getSeconds() + 60); + docProps.put(key_time, now.getTime()); + + } else if (count >= 10 && count < 15) { + // set suspension +30s + console.info('customFunctionsSuspended_(): ... setting 30s suspension!'); + now.setSeconds(now.getSeconds() + 30); + docProps.put(key_time, now.getTime()); + } +} + + // Node required code block module.exports = { customFunctionAllowed_: customFunctionAllowed_ From 1b730401c211c747887457b63f166d4ab13b06d4 Mon Sep 17 00:00:00 2001 From: LJay79 Date: Tue, 21 May 2019 17:31:00 +0200 Subject: [PATCH 04/19] adding CacheService to tests mocks --- src/customFunctions.gs | 1 - test/initTestEnvironment.js | 1 + test/mocks/CacheService.js | 83 +++++++++++++++++++++++++++++++++++++ 3 files changed, 84 insertions(+), 1 deletion(-) create mode 100644 test/mocks/CacheService.js diff --git a/src/customFunctions.gs b/src/customFunctions.gs index b706559..6f9e3c6 100644 --- a/src/customFunctions.gs +++ b/src/customFunctions.gs @@ -1,7 +1,6 @@ // Node required code blockconst const getCfg_ = require("./settings.gs").getCfg_; const setCfg_ = require("./settings.gs").setCfg_; - // End of Node required code block /** diff --git a/test/initTestEnvironment.js b/test/initTestEnvironment.js index 1903bfa..1e9eada 100644 --- a/test/initTestEnvironment.js +++ b/test/initTestEnvironment.js @@ -6,6 +6,7 @@ debug = require('src/debug.gs').debug; // define GAS globals ScriptApp = require('test/mocks/ScriptApp'); PropertiesService = require('test/mocks/PropertiesService'); +CacheService = require('test/mocks/CacheService'); SpreadsheetApp = require('test/mocks/SpreadsheetApp'); HtmlService = require('test/mocks/HtmlService'); Session = require('test/mocks/Session'); diff --git a/test/mocks/CacheService.js b/test/mocks/CacheService.js new file mode 100644 index 0000000..7008f1e --- /dev/null +++ b/test/mocks/CacheService.js @@ -0,0 +1,83 @@ + +/* + * @see https://developers.google.com/apps-script/reference/cache/cache-service + */ + +var _userCache = {}; +var _scriptCache = {}; +var _documentCache = {}; + +var UserCache = { + get: jest.fn().mockImplementation((key)=> _userCache[key]), + put: jest.fn().mockImplementation(function(key) { _userCache[key] = data; }), + remove: jest.fn().mockImplementation(function(key) { + _userCache[key] = null; + delete _userCache[key]; + }), + removeAll: jest.fn().mockImplementation(function() { _userCache = {}; }), +}; + +var ScriptCache = { + get: jest.fn().mockImplementation((key)=> _scriptCache[key]), + put: jest.fn().mockImplementation(function(key) { _scriptCache[key] = data; }), + remove: jest.fn().mockImplementation(function(key) { + _scriptCache[key] = null; + delete _scriptCache[key]; + }), + removeAll: jest.fn().mockImplementation(function() { _scriptCache = {}; }), +}; + +var DocumentCache = { + get: jest.fn().mockImplementation((key)=> _documentCache[key]), + put: jest.fn().mockImplementation(function(key) { _documentCache[key] = data; }), + remove: jest.fn().mockImplementation(function(key) { + _documentCache[key] = null; + delete _documentCache[key]; + }), + removeAll: jest.fn().mockImplementation(function() { _documentCache = {}; }), +}; + +var CacheService = { + getUserCache: jest.fn(), + getScriptCache: jest.fn(), + getDocumentCache: jest.fn(), + resetMocks: function () { + var mocks = [ + [UserCache.get, (key)=> _userCache[key]], + [UserCache.put, (key,data) => { _userCache[key] = data; }], + [UserCache.remove, (key) => {delete(_userCache[key])}], + [UserCache.removeAll, null], + [CacheService.getUserCache,() => UserCache], + + [ScriptCache.get, (key)=> _scriptCache[key]], + [ScriptCache.put, (key,data) => { _scriptCache[key] = data; }], + [ScriptCache.remove, (key) => {delete(_scriptCache[key])}], + [ScriptCache.removeAll, null], + [CacheService.getScriptCache,() => ScriptCache], + + [DocumentCache.get, (key)=> _documentCache[key]], + [DocumentCache.put, (key,data) => { _documentCache[key] = data; }], + [DocumentCache.remove, (key) => {delete(_documentCache[key])}], + [DocumentCache.removeAll, null], + [CacheService.getDocumentCache,() => DocumentCache] + ]; + mocks.forEach((pair) => { + pair[0].mockReset(); + if (pair[1] != null) { + pair[0].mockImplementation(pair[1]); + } + }); + }, + resetMockUserData: function() { + _userCache = {}; + _scriptCache = {}; + _documentCache = {}; + }, + mockUserCache: UserCache, + mockScriptCache: ScriptCache, + mockDocumentCache: DocumentCache +} + +CacheService.resetMocks(); + +module.exports = CacheService; From 486bedf74119a2089b7dda65b9cb98735b50ac6c Mon Sep 17 00:00:00 2001 From: LJay79 Date: Wed, 12 Jun 2019 11:12:33 +0200 Subject: [PATCH 05/19] add tests for "customFunctionsSuspended_" --- test/customFunctions.test.js | 108 ++++++++++++++++++++++++++++------- 1 file changed, 88 insertions(+), 20 deletions(-) diff --git a/test/customFunctions.test.js b/test/customFunctions.test.js index 4c2e626..dffec92 100644 --- a/test/customFunctions.test.js +++ b/test/customFunctions.test.js @@ -1,32 +1,100 @@ +CacheService = require('test/mocks/CacheService'); +const getCfg_ = require("../src/settings.gs").getCfg_; +const setCfg_ = require("../src/settings.gs").setCfg_; +const customFunctions = require('src/customFunctions.gs'); + beforeEach(() => { - jest.resetAllMocks(); jest.resetModules(); + CacheService.resetMocks(); }); -test("customFunctionAllowed_ throws exceptions", () => { - jest.mock('src/settings.gs'); - const settingsMock = require('src/settings.gs'); - settingsMock.getCfg_ = jest.fn(); - const customFunctions = require('src/customFunctions.gs'); - - settingsMock.getCfg_.mockImplementationOnce( ()=> { - return null; - }); +test("customFunctionAllowed_ throws exceptions", () => { + // custom_fn_enabled not defined + setCfg_('custom_fn_enabled', null); expect(customFunctions.customFunctionAllowed_).toThrowError(); - settingsMock.getCfg_.mockImplementationOnce( ()=> { - return undefined; - }); + // custom_fn_enabled undefined + setCfg_('custom_fn_enabled', undefined); expect(customFunctions.customFunctionAllowed_).toThrowError(); - settingsMock.getCfg_.mockImplementationOnce( ()=> { - return 0; - }); + // custom_fn_enabled disabled + setCfg_('custom_fn_enabled', 0); expect(customFunctions.customFunctionAllowed_).toThrowError(); - settingsMock.getCfg_.mockImplementationOnce( ()=> { - return 1; - }); + // custom_fn_enabled enabled + setCfg_('custom_fn_enabled', 1); + expect(customFunctions.customFunctionAllowed_).not.toThrowError(); +}); + +test("customFunctionsSuspended_ for 30 seconds", () => { + var docProps = CacheService.getDocumentCache(); + var key_count = 'CUSTOM_FUNCTIONS_ERROR_COUNT'; + var key_time = 'CUSTOM_FUNCTIONS_ERROR_TIME'; + var now = new Date(), suspension = null, seconds = 0; + // custom_fn_enabled enabled + setCfg_('custom_fn_enabled', 1) + + /* error count = >= 10 */ + docProps.put(key_count, 10, 60*60); + now = new Date(); suspension = new Date(); + + expect(customFunctions.customFunctionAllowed_).not.toThrowError(); + // verify suspension time + suspension.setTime( docProps.get(key_time) ); + seconds = (suspension - now) / 1000; + + expect(seconds).toBeGreaterThanOrEqual(30); + expect(seconds).toBeLessThan(40); + + // not yet + //expect(customFunctions.customFunctionAllowed_).toThrowError(); +}); + +test("customFunctionsSuspended_ for 60 seconds", () => { + var docProps = CacheService.getDocumentCache(); + var key_count = 'CUSTOM_FUNCTIONS_ERROR_COUNT'; + var key_time = 'CUSTOM_FUNCTIONS_ERROR_TIME'; + var now = new Date(), suspension = null, seconds = 0; + // custom_fn_enabled enabled + setCfg_('custom_fn_enabled', 1) + + /* error count = >= 25 */ + docProps.put(key_count, 25, 60*60); + now = new Date(); suspension = new Date(); + expect(customFunctions.customFunctionAllowed_).not.toThrowError(); -}); \ No newline at end of file + // verify suspension time + suspension.setTime( docProps.get(key_time) ); + seconds = (suspension - now) / 1000; + + expect(seconds).toBeGreaterThanOrEqual(60); + expect(seconds).toBeLessThan(70); + + // not yet + //expect(customFunctions.customFunctionAllowed_).toThrowError(); +}); + +test("customFunctionsSuspended_ for 300 seconds", () => { + var docProps = CacheService.getDocumentCache(); + var key_count = 'CUSTOM_FUNCTIONS_ERROR_COUNT'; + var key_time = 'CUSTOM_FUNCTIONS_ERROR_TIME'; + var now = new Date(), suspension = null, seconds = 0; + // custom_fn_enabled enabled + setCfg_('custom_fn_enabled', 1) + + /* error count = >= 100 */ + docProps.put(key_count, 100, 60*60); + now = new Date(); suspension = new Date(); + + expect(customFunctions.customFunctionAllowed_).not.toThrowError(); + // verify suspension time + suspension.setTime( docProps.get(key_time) ); + seconds = (suspension - now) / 1000; + + expect(seconds).toBeGreaterThanOrEqual(300); + expect(seconds).toBeLessThan(310); + + // not yet + //expect(customFunctions.customFunctionAllowed_).toThrowError(); +}); From 3a55de82b09f66d5f5bec568dd71d9158dd7988c Mon Sep 17 00:00:00 2001 From: LJay79 Date: Thu, 13 Jun 2019 09:18:13 +0200 Subject: [PATCH 06/19] refactoring of settings dialog into sidebar with MDL google like style design --- assets/s3/add-ons1.css | 418 +++++++++++++++++++ assets/s3/add-ons1.min.css | 9 + assets/s3/styles.css | 557 +++++++++++++++++++++++++ assets/s3/styles.min.css | 12 + src/Code.gs | 2 +- src/controllers/settings.gs | 56 +++ src/dialogs.gs | 3 +- src/jiraApi.gs | 3 +- src/settings.gs | 1 + src/views/sidebar/settings.html | 716 +++++++++----------------------- 10 files changed, 1243 insertions(+), 534 deletions(-) create mode 100644 assets/s3/add-ons1.css create mode 100644 assets/s3/add-ons1.min.css create mode 100644 assets/s3/styles.css create mode 100644 assets/s3/styles.min.css diff --git a/assets/s3/add-ons1.css b/assets/s3/add-ons1.css new file mode 100644 index 0000000..c27ab49 --- /dev/null +++ b/assets/s3/add-ons1.css @@ -0,0 +1,418 @@ +/* + +Copyright 2015 Google Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + +*/ + +/*! + * Only the used styles from add-ons1.css + * + * Project Aid for Jira + * @version v1.4.0 + * @license GNU GENERAL PUBLIC LICENSE v3. + * @copyright 2017-2019, Jens Rosemeier. All rights reserved. + * @link https://github.com/ljay79/jira-tools + */ + +/* CONTAINERS */ + +.sidebar { + -moz-box-sizing: border-box; + box-sizing: border-box; + overflow-y: auto; + padding: 12px; + position: absolute; + width: 100%; +} + +.block { + display: block; +} + +.block + .block { + margin-top: 16px; +} + +.inline { + display: inline-block; +} + +.inline + .inline { + margin-left: 12px; +} + +.top, +.top-left { + top: 0; + position: absolute; +} + +.top-right { + top: 0; + position: absolute; + right: 0; +} + +.bottom, +.bottom-left, +.button-bar { + bottom: 0; + position: absolute; +} + +.bottom-right, +.button-bar-right { + bottom: 0; + position: absolute; + right: 0; +} + +.gray, +.grey { + color: #777; +} + +.secondary, +.small { + color: #777; + font: 11px/16px arial, sans-serif; +} + +/* BUTTONS */ + +.button, +button, +input[type="button"], +input[type="image"], +input[type="reset"], +input[type="submit"] { + background: -moz-linear-gradient(top, #f5f5f5, #f1f1f1); + background: -ms-linear-gradient(top, #f5f5f5, #f1f1f1); + background: -o-linear-gradient(top, #f5f5f5, #f1f1f1); + background: -webkit-linear-gradient(top, #f5f5f5, #f1f1f1); + background: linear-gradient(top, #f5f5f5, #f1f1f1); + border: 1px solid #dcdcdc; + -moz-border-radius: 2px; + -webkit-border-radius: 2px; + border-radius: 2px; + -moz-box-shadow: none; + -webkit-box-shadow: none; + box-shadow: none; + color: #333; + cursor: default; + font-family: arial, sans-serif; + font-size: 11px; + font-weight: bold; + height: 29px; + line-height: 27px; + margin: 0; + min-width: 72px; + outline: 0; + padding: 0 8px; + text-align: center; + white-space: nowrap; +} + +.button { + box-sizing: border-box; + display: inline-block; + padding: 0; +} + +.button.action, +.button.blue, +button.action, +button.blue, +input[type="button"].action, +input[type="button"].blue, +input[type="submit"].action, +input[type="submit"].blue { + background: -moz-linear-gradient(top, #4d90fe, #4787ed); + background: -ms-linear-gradient(top, #4d90fe, #4787ed); + background: -o-linear-gradient(top, #4d90fe, #4787ed); + background: -webkit-linear-gradient(top, #4d90fe, #4787ed); + background: linear-gradient(top, #4d90fe, #4787ed); + border: 1px solid #3079ed; + color: #fff; +} + +.button.create, +.button.red, +button.create, +button.red, +input[type="button"].create, +input[type="button"].red, +input[type="submit"].create, +input[type="submit"].red { + background: -moz-linear-gradient(top, #dd4b39, #d14836); + background: -ms-linear-gradient(top, #dd4b39, #d14836); + background: -o-linear-gradient(top, #dd4b39, #d14836); + background: -webkit-linear-gradient(top, #dd4b39, #d14836); + background: linear-gradient(top, #dd4b39, #d14836); + border: 1px solid transparent; + color: #fff; + text-shadow: 0 1px rgba(0, 0, 0, .1); + text-transform: uppercase; +} + +.button.green, +.button.share, +button.green, +button.share, +input[type="button"].green, +input[type="button"].share, +input[type="submit"].green, +input[type="submit"].share { + background: -moz-linear-gradient(top, #3d9400, #398a00); + background: -ms-linear-gradient(top, #3d9400, #398a00); + background: -o-linear-gradient(top, #3d9400, #398a00); + background: -webkit-linear-gradient(top, #3d9400, #398a00); + background: linear-gradient(top, #3d9400, #398a00); + border: 1px solid #29691d; + color: #fff; + text-shadow: 0 1px rgba(0, 0, 0, .1); +} + +.button:hover, +button:hover, +input[type="button"]:hover, +input[type="image"]:hover, +input[type="reset"]:hover, +input[type="submit"]:hover { + background: -moz-linear-gradient(top, #f8f8f8, #f1f1f1); + background: -ms-linear-gradient(top, #f8f8f8, #f1f1f1); + background: -o-linear-gradient(top, #f8f8f8, #f1f1f1); + background: -webkit-linear-gradient(top, #f8f8f8, #f1f1f1); + background: linear-gradient(top, #f8f8f8, #f1f1f1); + border: 1px solid #c6c6c6; + color: #111; + text-decoration: none; +} + +.button.action:hover, +.button.blue:hover, +button.action:hover, +button.blue:hover, +input[type="button"].action:hover, +input[type="button"].blue:hover, +input[type="submit"].action:hover, +input[type="submit"].blue:hover { + background: -moz-linear-gradient(top, #4d90fe, #357ae8); + background: -ms-linear-gradient(top, #4d90fe, #357ae8); + background: -o-linear-gradient(top, #4d90fe, #357ae8); + background: -webkit-linear-gradient(top, #4d90fe, #357ae8); + background: linear-gradient(top, #4d90fe, #357ae8); + border: 1px solid #2f5bb7; + color: #fff; +} + +.button.create:hover, +.button.red:hover, +button.create:hover, +button.red:hover, +input[type="button"].create:hover, +input[type="button"].red:hover, +input[type="submit"].create:hover, +input[type="submit"].red:hover { + background: -webkit-linear-gradient(top, #dd4b39, #c53727); + background: -moz-linear-gradient(top, #dd4b39, #c53727); + background: -ms-linear-gradient(top, #dd4b39, #c53727); + background: -o-linear-gradient(top, #dd4b39, #c53727); + background: linear-gradient(top, #dd4b39, #c53727); + border: 1px solid #b0281a; + border-bottom: 1px solid #af301f; + -moz-box-shadow: 0 1px 1px rgba(0, 0, 0, .2); + -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, .2); + box-shadow: 0 1px 1px rgba(0, 0, 0, .2); + color: #fff; +} + +.button.green:hover, +.button.share:hover, +button.green:hover, +button.share:hover, +input[type="button"].green:hover, +input[type="button"].share:hover, +input[type="button"].green:hover, +input[type="submit"].share:hover { + background: -moz-linear-gradient(top, #3d9400, #368200); + background: -ms-linear-gradient(top, #3d9400, #368200); + background: -o-linear-gradient(top, #3d9400, #368200); + background: -webkit-linear-gradient(top, #3d9400, #368200); + background: linear-gradient(top, #3d9400, #368200); + border: 1px solid #2d6200; + color: #fff; + text-shadow: 0 1px rgba(0, 0, 0, .3); +} + +.button:focus, +button:focus, +input[type="button"]:focus, +input[type="image"]:focus, +input[type="reset"]:focus, +input[type="submit"]:focus { + -moz-box-shadow: inset 0 0 0 1px #fff; + -webkit-box-shadow: inset 0 0 0 1px #fff; + box-shadow: inset 0 0 0 1px #fff; +} + +.button:active, +button:active, +input[type="button"]:active, +input[type="submit"]:active { + background: -moz-linear-gradient(top, #f8f8f8, #f1f1f1); + background: -ms-linear-gradient(top, #f8f8f8, #f1f1f1); + background: -o-linear-gradient(top, #f8f8f8, #f1f1f1); + background: -webkit-linear-gradient(top, #f8f8f8, #f1f1f1); + background: linear-gradient(top, #f8f8f8, #f1f1f1); + border: 1px solid #ccc; + -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, .1); + -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, .1); + box-shadow: inset 0 1px 2px rgba(0, 0, 0, .1); + color: #111; +} + +.button.action:active, +.button.blue:active, +button.action:active, +button.blue:active, +input[type="button"].action:active, +input[type="button"].blue:active, +input[type="submit"].action:active, +input[type="submit"].blue:active { + background: #357ae8; + border: 1px solid #2f5bb7; + -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, .3); + -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, .3); + box-shadow: inset 0 1px 2px rgba(0, 0, 0, .3); + color: #fff; +} + +.button.create:active, +.button.red:active, +button.create:active, +button.red:active, +input[type="button"].create:active, +input[type="button"].red:active, +input[type="submit"].create:active, +input[type="submit"].red:active { + background: -moz-linear-gradient(top, #dd4b39, #b0281a); + background: -ms-linear-gradient(top, #dd4b39, #b0281a); + background: -o-linear-gradient(top, #dd4b39, #b0281a); + background: -webkit-linear-gradient(top, #dd4b39, #b0281a); + background: linear-gradient(top, #dd4b39, #b0281a); + border: 1px solid #992a1b; + -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, .3); + -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, .3); + box-shadow: inset 0 1px 2px rgba(0, 0, 0, .3); + color: #fff; +} + +.button.green:active, +.button.share:active, +button.green:active, +button.share:active, +input[type="button"].green:active, +input[type="button"].share:active, +input[type="submit"].green:active, +input[type="submit"].share:active { + background: #368200; + border: 1px solid #2d6200; + -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, .3); + -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, .3); + box-shadow: inset 0 1px 2px rgba(0, 0, 0, .3); + color: #fff; +} + +.button.disabled, +button:disabled, +input[type="button"]:disabled, +input[type="image"]:disabled, +input[type="reset"]:disabled, +input[type="submit"]:disabled { + background: #fff; + border: 1px solid #dcdcdc; + -moz-box-shadow: none; + -webkit-box-shadow: none; + box-shadow: none; + color: #333; + opacity: .5; +} + +.button.action.disabled, +.button.blue.disabled, +button.action:disabled, +button.blue:disabled, +input[type="button"].action:disabled, +input[type="button"].blue:disabled, +input[type="submit"].action:disabled, +input[type="submit"].blue:disabled { + background: -moz-linear-gradient(top, #4d90fe, #4787ed); + background: -ms-linear-gradient(top, #4d90fe, #4787ed); + background: -o-linear-gradient(top, #4d90fe, #4787ed); + background: -webkit-linear-gradient(top, #4d90fe, #4787ed); + background: linear-gradient(top, #4d90fe, #4787ed); + border: 1px solid #3079ed; + color: #fff; +} + +.button.create.disabled, +.button.red.disabled, +button.create:disabled, +button.red:disabled, +input[type="button"].create:disabled, +input[type="button"].red:disabled, +input[type="submit"].create:disabled, +input[type="submit"].red:disabled { + background: -moz-linear-gradient(top, #dd4b39, #d14836); + background: -ms-linear-gradient(top, #dd4b39, #d14836); + background: -o-linear-gradient(top, #dd4b39, #d14836); + background: -webkit-linear-gradient(top, #dd4b39, #d14836); + background: linear-gradient(top, #dd4b39, #d14836); + border: 1px solid transparent; + color: #fff; +} + +.button.green.disabled, +.button.share.disabled, +button.green:disabled, +button.share:disabled, +input[type="button"].green:disabled, +input[type="button"].share:disabled, +input[type="submit"].green:disabled, +input[type="submit"].share:disabled { + background: -moz-linear-gradient(top, #3d9400, #398a00); + background: -ms-linear-gradient(top, #3d9400, #398a00); + background: -o-linear-gradient(top, #3d9400, #398a00); + background: -webkit-linear-gradient(top, #3d9400, #398a00); + background: linear-gradient(top, #3d9400, #398a00); + border: 1px solid #29691d; + color: #fff; + text-shadow: 0 1px rgba(0, 0, 0, .1); +} + +.button + .button, +button + button, +input + input { + margin-left: 12px; +} + +/* OTHER FORM ELEMENTS */ + +.form-group label + input, +.form-group label + select, +.form-group label + textarea { + display: block; +} diff --git a/assets/s3/add-ons1.min.css b/assets/s3/add-ons1.min.css new file mode 100644 index 0000000..2a1fe1a --- /dev/null +++ b/assets/s3/add-ons1.min.css @@ -0,0 +1,9 @@ +/*! + * Only the used styles from add-ons1.css + * + * Project Aid for Jira + * @version v1.4.0 + * @license GNU GENERAL PUBLIC LICENSE v3. + * @copyright 2017-2019, Jens Rosemeier. All rights reserved. + * @link https://github.com/ljay79/jira-tools + */.top,.top-left,.top-right{top:0;position:absolute}.sidebar{-moz-box-sizing:border-box;box-sizing:border-box;overflow-y:auto;padding:12px;position:absolute;width:100%}.block{display:block}.button,.inline{display:inline-block}.block+.block{margin-top:16px}.inline+.inline{margin-left:12px}.top-right{right:0}.bottom,.bottom-left,.button-bar{bottom:0;position:absolute}.bottom-right,.button-bar-right{bottom:0;position:absolute;right:0}.gray,.grey{color:#777}.secondary,.small{color:#777;font:11px/16px arial,sans-serif}.button,button,input[type=button],input[type=image],input[type=reset],input[type=submit]{background:-moz-linear-gradient(top,#f5f5f5,#f1f1f1);background:-ms-linear-gradient(top,#f5f5f5,#f1f1f1);background:-o-linear-gradient(top,#f5f5f5,#f1f1f1);background:-webkit-linear-gradient(top,#f5f5f5,#f1f1f1);background:linear-gradient(top,#f5f5f5,#f1f1f1);border:1px solid #dcdcdc;-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px;-moz-box-shadow:none;-webkit-box-shadow:none;box-shadow:none;color:#333;cursor:default;font-family:arial,sans-serif;font-size:11px;font-weight:700;height:29px;line-height:27px;margin:0;min-width:72px;outline:0;padding:0 8px;text-align:center;white-space:nowrap}.button{box-sizing:border-box;padding:0}.button.action,.button.blue,button.action,button.blue,input[type=button].action,input[type=button].blue,input[type=submit].action,input[type=submit].blue{background:-moz-linear-gradient(top,#4d90fe,#4787ed);background:-ms-linear-gradient(top,#4d90fe,#4787ed);background:-o-linear-gradient(top,#4d90fe,#4787ed);background:-webkit-linear-gradient(top,#4d90fe,#4787ed);background:linear-gradient(top,#4d90fe,#4787ed);border:1px solid #3079ed;color:#fff}.button.create,.button.red,button.create,button.red,input[type=button].create,input[type=button].red,input[type=submit].create,input[type=submit].red{background:-moz-linear-gradient(top,#dd4b39,#d14836);background:-ms-linear-gradient(top,#dd4b39,#d14836);background:-o-linear-gradient(top,#dd4b39,#d14836);background:-webkit-linear-gradient(top,#dd4b39,#d14836);background:linear-gradient(top,#dd4b39,#d14836);border:1px solid transparent;color:#fff;text-shadow:0 1px rgba(0,0,0,.1);text-transform:uppercase}.button.green,.button.share,button.green,button.share,input[type=button].green,input[type=button].share,input[type=submit].green,input[type=submit].share{background:-moz-linear-gradient(top,#3d9400,#398a00);background:-ms-linear-gradient(top,#3d9400,#398a00);background:-o-linear-gradient(top,#3d9400,#398a00);background:-webkit-linear-gradient(top,#3d9400,#398a00);background:linear-gradient(top,#3d9400,#398a00);border:1px solid #29691d;color:#fff;text-shadow:0 1px rgba(0,0,0,.1)}.button:hover,button:hover,input[type=button]:hover,input[type=image]:hover,input[type=reset]:hover,input[type=submit]:hover{background:-moz-linear-gradient(top,#f8f8f8,#f1f1f1);background:-ms-linear-gradient(top,#f8f8f8,#f1f1f1);background:-o-linear-gradient(top,#f8f8f8,#f1f1f1);background:-webkit-linear-gradient(top,#f8f8f8,#f1f1f1);background:linear-gradient(top,#f8f8f8,#f1f1f1);border:1px solid #c6c6c6;color:#111;text-decoration:none}.button.action:hover,.button.blue:hover,button.action:hover,button.blue:hover,input[type=button].action:hover,input[type=button].blue:hover,input[type=submit].action:hover,input[type=submit].blue:hover{background:-moz-linear-gradient(top,#4d90fe,#357ae8);background:-ms-linear-gradient(top,#4d90fe,#357ae8);background:-o-linear-gradient(top,#4d90fe,#357ae8);background:-webkit-linear-gradient(top,#4d90fe,#357ae8);background:linear-gradient(top,#4d90fe,#357ae8);border:1px solid #2f5bb7;color:#fff}.button.create:hover,.button.red:hover,button.create:hover,button.red:hover,input[type=button].create:hover,input[type=button].red:hover,input[type=submit].create:hover,input[type=submit].red:hover{background:-webkit-linear-gradient(top,#dd4b39,#c53727);background:-moz-linear-gradient(top,#dd4b39,#c53727);background:-ms-linear-gradient(top,#dd4b39,#c53727);background:-o-linear-gradient(top,#dd4b39,#c53727);background:linear-gradient(top,#dd4b39,#c53727);border:1px solid #b0281a;border-bottom:1px solid #af301f;-moz-box-shadow:0 1px 1px rgba(0,0,0,.2);-webkit-box-shadow:0 1px 1px rgba(0,0,0,.2);box-shadow:0 1px 1px rgba(0,0,0,.2);color:#fff}.button.green:hover,.button.share:hover,button.green:hover,button.share:hover,input[type=button].green:hover,input[type=button].share:hover,input[type=submit].share:hover{background:-moz-linear-gradient(top,#3d9400,#368200);background:-ms-linear-gradient(top,#3d9400,#368200);background:-o-linear-gradient(top,#3d9400,#368200);background:-webkit-linear-gradient(top,#3d9400,#368200);background:linear-gradient(top,#3d9400,#368200);border:1px solid #2d6200;color:#fff;text-shadow:0 1px rgba(0,0,0,.3)}.button:focus,button:focus,input[type=button]:focus,input[type=image]:focus,input[type=reset]:focus,input[type=submit]:focus{-moz-box-shadow:inset 0 0 0 1px #fff;-webkit-box-shadow:inset 0 0 0 1px #fff;box-shadow:inset 0 0 0 1px #fff}.button:active,button:active,input[type=button]:active,input[type=submit]:active{background:-moz-linear-gradient(top,#f8f8f8,#f1f1f1);background:-ms-linear-gradient(top,#f8f8f8,#f1f1f1);background:-o-linear-gradient(top,#f8f8f8,#f1f1f1);background:-webkit-linear-gradient(top,#f8f8f8,#f1f1f1);background:linear-gradient(top,#f8f8f8,#f1f1f1);border:1px solid #ccc;-moz-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 1px 2px rgba(0,0,0,.1);color:#111}.button.action:active,.button.blue:active,button.action:active,button.blue:active,input[type=button].action:active,input[type=button].blue:active,input[type=submit].action:active,input[type=submit].blue:active{background:#357ae8;border:1px solid #2f5bb7;-moz-box-shadow:inset 0 1px 2px rgba(0,0,0,.3);-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.3);box-shadow:inset 0 1px 2px rgba(0,0,0,.3);color:#fff}.button.create:active,.button.red:active,button.create:active,button.red:active,input[type=button].create:active,input[type=button].red:active,input[type=submit].create:active,input[type=submit].red:active{background:-moz-linear-gradient(top,#dd4b39,#b0281a);background:-ms-linear-gradient(top,#dd4b39,#b0281a);background:-o-linear-gradient(top,#dd4b39,#b0281a);background:-webkit-linear-gradient(top,#dd4b39,#b0281a);background:linear-gradient(top,#dd4b39,#b0281a);border:1px solid #992a1b;-moz-box-shadow:inset 0 1px 2px rgba(0,0,0,.3);-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.3);box-shadow:inset 0 1px 2px rgba(0,0,0,.3);color:#fff}.button.green:active,.button.share:active,button.green:active,button.share:active,input[type=button].green:active,input[type=button].share:active,input[type=submit].green:active,input[type=submit].share:active{background:#368200;border:1px solid #2d6200;-moz-box-shadow:inset 0 1px 2px rgba(0,0,0,.3);-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.3);box-shadow:inset 0 1px 2px rgba(0,0,0,.3);color:#fff}.button.disabled,button:disabled,input[type=button]:disabled,input[type=image]:disabled,input[type=reset]:disabled,input[type=submit]:disabled{background:#fff;border:1px solid #dcdcdc;-moz-box-shadow:none;-webkit-box-shadow:none;box-shadow:none;color:#333;opacity:.5}.button.action.disabled,.button.blue.disabled,button.action:disabled,button.blue:disabled,input[type=button].action:disabled,input[type=button].blue:disabled,input[type=submit].action:disabled,input[type=submit].blue:disabled{background:-moz-linear-gradient(top,#4d90fe,#4787ed);background:-ms-linear-gradient(top,#4d90fe,#4787ed);background:-o-linear-gradient(top,#4d90fe,#4787ed);background:-webkit-linear-gradient(top,#4d90fe,#4787ed);background:linear-gradient(top,#4d90fe,#4787ed);border:1px solid #3079ed;color:#fff}.button.create.disabled,.button.red.disabled,button.create:disabled,button.red:disabled,input[type=button].create:disabled,input[type=button].red:disabled,input[type=submit].create:disabled,input[type=submit].red:disabled{background:-moz-linear-gradient(top,#dd4b39,#d14836);background:-ms-linear-gradient(top,#dd4b39,#d14836);background:-o-linear-gradient(top,#dd4b39,#d14836);background:-webkit-linear-gradient(top,#dd4b39,#d14836);background:linear-gradient(top,#dd4b39,#d14836);border:1px solid transparent;color:#fff}.button.green.disabled,.button.share.disabled,button.green:disabled,button.share:disabled,input[type=button].green:disabled,input[type=button].share:disabled,input[type=submit].green:disabled,input[type=submit].share:disabled{background:-moz-linear-gradient(top,#3d9400,#398a00);background:-ms-linear-gradient(top,#3d9400,#398a00);background:-o-linear-gradient(top,#3d9400,#398a00);background:-webkit-linear-gradient(top,#3d9400,#398a00);background:linear-gradient(top,#3d9400,#398a00);border:1px solid #29691d;color:#fff;text-shadow:0 1px rgba(0,0,0,.1)}.button+.button,button+button,input+input{margin-left:12px}.form-group label+input,.form-group label+select,.form-group label+textarea{display:block} \ No newline at end of file diff --git a/assets/s3/styles.css b/assets/s3/styles.css new file mode 100644 index 0000000..454e66f --- /dev/null +++ b/assets/s3/styles.css @@ -0,0 +1,557 @@ +/*! + * jQuery Autocomplete plugin v1.2.8 + * @homepage http://xdsoft.net/jqplugins/autocomplete/ + * @license MIT - MIT-LICENSE.txt + * (c) 2014, Chupurnov Valeriy + */ +.xdsoft_autocomplete, +.xdsoft_autocomplete div, +.xdsoft_autocomplete span{ +/* -moz-box-sizing: border-box !important; + box-sizing: border-box !important;*/ +} + +.xdsoft_autocomplete{ +display:inline; +position:relative; +word-spacing: normal; +text-transform: none; +text-indent: 0px; +text-shadow: none; +text-align: start; +} + +.xdsoft_autocomplete .xdsoft_input{ + position:relative; + z-index:2; +} +.xdsoft_autocomplete .xdsoft_autocomplete_dropdown{ + position:absolute; + border: 1px solid #ccc; + border-top-color: #d9d9d9; + box-shadow: 0 2px 4px rgba(0,0,0,0.2); + -webkit-box-shadow: 0 2px 4px rgba(0,0,0,0.2); + cursor: default; + display:none; + z-index: 1001; + margin-top:-1px; + background-color:#fff; + min-width:100%; + overflow:auto; +} +.xdsoft_autocomplete .xdsoft_autocomplete_hint{ + position:absolute; + z-index:1; + color:#ccc !important; + -webkit-text-fill-color:#ccc !important; + text-fill-color:#ccc !important; + overflow:hidden !important; + white-space: pre !important; +} + +.xdsoft_autocomplete .xdsoft_autocomplete_hint span{ + color:transparent; + opacity: 0.0; +} + +.xdsoft_autocomplete .xdsoft_autocomplete_dropdown > .xdsoft_autocomplete_copyright{ + color:#ddd; + font-size:10px; + text-decoration:none; + right:5px; + position:absolute; + margin-top:-15px; + z-index:1002; +} +.xdsoft_autocomplete .xdsoft_autocomplete_dropdown > div{ + background:#fff; + white-space: nowrap; + cursor: pointer; + line-height: 1.5em; + padding: 2px 0px 2px 0px; +} +.xdsoft_autocomplete .xdsoft_autocomplete_dropdown > div.active{ + background: #0097CF; + color: #FFFFFF; +} + +/*! + * Project Aid for Jira + * @version v1.4.0 + * @license GNU GENERAL PUBLIC LICENSE v3. + * @copyright 2017-2019, Jens Rosemeier. All rights reserved. + * @link https://github.com/ljay79/jira-tools + */ +:root { + --docs-material-font-family: Roboto, Helvetica, Arial, sans-serif; + --docs-material-header-font-family: var(--docs-material-font-family); + --docs-material-font-weight-normal: 400; + --docs-material-font-weight-bold: 500; + --docs-material-font-size-normal: 14px; + --docs-material-font-size-9: 9px; + --docs-material-font-size-11: 11px; + --docs-material-font-size-12: 12px; + --docs-material-font-size-22: 22px; +} + +html, body { + /*font-family: 'Roboto-Light', 'Roboto-Medium', 'Roboto-Bold', 'Roboto', Helvetica, Arial, sans-serif;*/ + font-family: Roboto, Helvetica, Arial, sans-serif; + font-size: 14px; + color: black; + font-weight: normal; +} + +fieldset { + margin: 0; + padding-block-start: 0.35em; + padding-inline-start: 0.75em; + padding-inline-end: 0.75em; + padding-block-end: 0.625em; + border: 1px solid #ebebeb; +} + +fieldset legend { + font-weight: 700; + padding: 4px 8px 0px 8px; +} + +fieldset.block p { + margin-top: 0; +} + +textarea { + width: 100%; + height: 100px; +} + +a, a:active, a:visited { + font-family: var(--docs-material-header-font-family, Roboto, Helvetica, Arial, sans-serif); + font-weight: var(--docs-material-font-weight-bold, 500); + letter-spacing: 0.25px; + line-height: 16px; /* to be removed asap! */ + color: #188038; + display: inline-block; +} + +.tip-footer a, .tip-footer a:active, .tip-footer a:visited { + background-image: none; + border: 1px solid transparent !important; + border-radius: 4px; + box-shadow: none; + box-sizing: border-box; + font-family: var(--docs-material-header-font-family, Roboto, Helvetica, Arial, sans-serif); + font-weight: var(--docs-material-font-weight-bold, 500); + font-size: 14px; + height: 36px; + letter-spacing: 0.25px; + line-height: 16px; + padding: 9px 24px 11px 24px; + color: #188038; + display: inline-block; +} + +a.feedback-link, a.feedback-link:active, a.feedback-link:visited, /* obsolete since v1.3.5 */ +a.whatsnew, a.whatsnew:active, a.whatsnew:visited +{ + border-radius: 4px; + font-family: var(--docs-material-header-font-family, Roboto, Helvetica, Arial, sans-serif); + font-weight: var(--docs-material-font-weight-bold, 500); + font-size: 14px; + height: auto; + letter-spacing: 0.25px; + line-height: normal; + padding: 0; + color: #188038; + display: inline-block; +} + +fieldset p a, +fieldset p a:active, +fieldset p a:visited { + font-size: inherit; + height: auto; + padding: inherit; +} + +.loader, .loader:after { + border-radius: 50%; + width: 5em; + height: 5em; +} + +.loader { + margin: 60px auto; + font-size: 10px; + position: relative; + text-indent: -9999em; + border-top: .7em solid rgba(24, 158, 26, 0.2); + border-right: .7em solid rgba(24, 158, 26, 0.2); + border-bottom: .7em solid rgba(24, 158, 26, 0.2); + border-left: .7em solid #189e1a; + -webkit-transform: translateZ(0); + -ms-transform: translateZ(0); + transform: translateZ(0); + -webkit-animation: load8 1.1s infinite linear; + animation: load8 1.1s infinite linear; +} + +.error-container { display: none; margin-bottom: 16px; padding: 5px 10px; text-align: center; color: #fff; } +.is-loading { animation: blink .5s infinite; } +@keyframes blink { 0% { opacity: 1; } 50% { opacity: 0; } 100% { opacity: 1; } } + +@-webkit-keyframes load8 { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(360deg); + transform: rotate(360deg); + } +} +@keyframes load8 { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(360deg); + transform: rotate(360deg); + } +} + +.sidebar { + padding: 0; +} + +.branding-below { + bottom: 46px; + top: 0; +} + +.sidebar.bottom { + font-size: 12px; + padding: 12px; +} + +.sidebar.bottom a.feedback-link, /* obsolete since v1.3.5 */ +.sidebar.bottom a.whatsnew { + float: right; +} + +#box-tip { + margin: 10px; + padding: 15px; + background-color: #e6f4ea; + border-radius: 8px; + color: #188038; +} + +#box-tip h4 { + color: #188038; + font-size: 14px; + font-weight: 500; + margin: 0 0 10px; +} + +#box-tip p { + color: #188038; + font-size: 12px; + letter-spacing: .3px; + line-height: normal; +} + +#box-tip .tip-footer { + display: flex; + justify-content: flex-end; +} + +.create-box { + border-bottom: 1px solid grey; + padding: 20px; + text-align: center; +} + +.issuetable { + font-size: 13px; + font-weight: 400; + border-bottom: 1px solid #ddd; + cursor: default; + padding: 10px 20px; + position: relative; +} + +.issuetable .name { + font-size: 14px; + font-weight: 500; +} + +.issuetable .actions { + margin-top: 10px; +} + +.issuetable .actions .action { + /* Schedule button appears disabled, feature coming soon */ + opacity: .5 +} + +.issuetable .schedule-setup { + border: 1px solid grey; + padding: 10px; + margin: 10px 0; + background-color: aliceblue; + display: none; + font-style: italic; +} + +form > div.block { + padding: 10px; +} + +.block + .block { + margin-top: 20px; +} + +.block2x2 { + width:43%; +} + +.block2x2.left { + margin-right:20px; + float:left; +} + +fieldset .block2x2 { + display: inline-block; + width:46%; +} + +.toggle { + position: relative; + display: block; + width: 40px; + height: 20px; + cursor: pointer; + -webkit-tap-highlight-color: transparent; + transform: translate3d(0, 0, 0); +} +.toggle:before { + content: ""; + position: relative; + top: 3px; + left: 3px; + width: 34px; + height: 14px; + display: block; + background: #9A9999; + border-radius: 8px; + transition: background 0.2s ease; +} +.toggle span { + position: absolute; + top: 0; + left: 0; + width: 20px; + height: 20px; + display: block; + background: white; + border-radius: 10px; + box-shadow: 0 3px 8px rgba(154, 153, 153, 0.5); + transition: all 0.2s ease; +} +.toggle span:before { + content: ""; + position: absolute; + display: block; + margin: -18px; + width: 56px; + height: 56px; + background: rgba(71, 135, 237, 0.5); + border-radius: 50%; + transform: scale(0); + opacity: 1; + pointer-events: none; +} +#cbx:checked + .toggle:before { + background: #6dbfff; +} +#cbx:checked + .toggle span { + background: #4787ed; + transform: translateX(20px); + transition: all 0.2s cubic-bezier(0.8, 0.4, 0.3, 1.25), background 0.15s ease; + box-shadow: 0 3px 8px rgba(71, 135, 237, 0.2); +} +#cbx:checked + .toggle span:before { + transform: scale(1); + opacity: 0; + transition: all 0.4s ease; +} +.toggle-center { + position: absolute; + top: 0; + left: 0; +} + +/* Tooltip - Filter changed warning in Refresh sidebar */ +.material-icons.orange600 { color: #FB8C00; } + +/* Tooltip container */ +.tooltip { + position: absolute; + top: 10px; + right: 20px; + z-index: 2; +} + +/* Tooltip text */ +.tooltip .tooltiptext { + visibility: hidden; + width: 210px; + padding: 10px; + background-color: #e6f4ea; + border-radius: 8px; + color: #188038; + position: absolute; + z-index: 1; + /* Fade in tooltip */ + opacity: 0; + transition: opacity 0.3s; +} +.tooltiptext h4 { + color: #188038; + font-size: 14px; + font-weight: 500; + margin: 0; + line-height: 28px; +} +.tooltiptext p { + color: #188038; + font-size: 12px; + letter-spacing: .3px; + line-height: normal; + margin: 0; +} +.tooltiptext a { + height: auto; +} +.tooltip-top { + bottom: 60%; + left: 0%; + margin-left: 0px; +} +.tooltip-bottom { + top: 75%; + right: 0%; + margin-left: 0px; +} +/* Show the tooltip text when you mouse over the tooltip container */ +.tooltip:hover .tooltiptext { + visibility: visible; + opacity: 1; +} + +.message-container { display: none; padding: 5px 10px; text-align: center; color: #fff; } + +/* ------------------------------------------- */ +/* override material.blue-green.min.css styles */ +.mdl-tabs__tab-bar.numTabs2 > a { + width: 50%; +} +.mdl-tabs__tab-barnumTabs3 > a { + width: 33%; +} + +.mdl-tabs__tab .mdl-tabs__ripple-container .mdl-ripple { + background: #5f6368; +} + +.mdl-tabs.is-upgraded .mdl-tabs__tab.is-active { + color: #188038; +} +.mdl-tabs.is-upgraded .mdl-tabs__tab.is-active:after { + background: #188038; +} + +.mdl-tabs__tab-bar > a, +.mdl-tabs__tab-bar > a:hover, +.mdl-tabs__tab-bar > a:active, +.mdl-tabs__tab-bar > a:visited { + line-height: 48px; /*required due to: custom.css -> a, a:active, a:visited {} */ + text-decoration: inherit; +} + +.mdl-textfield, +.mdl-textfield__label, +.mdl-textfield__input, +.mdl-switch__label, +.mdl-radio__label { + font-size: 14px; +} + +.mdl-textfield { + width: 100%; + padding: 10px 0 0 0; +} +.mdl-textfield__label { + top: 14px; + margin: 10px 0; +} +.mdl-textfield__label:after { + bottom: 0; +} + +.mdl-textfield__input { + color: #3c4043; + width: 94%; + margin: 10px 0; + padding: 8px; + border: 1px solid rgba(0,0,0,.12); +} +.mdl-textfield__input:placeholder, +.mdl-textfield__input:-ms-input-placeholder { + color: #c5c5c5; +} + +.mdl-textfield.is-dirty .mdl-textfield__label, +.mdl-textfield.has-placeholder .mdl-textfield__label { + visibility: visible; + top: -10px; + color: #3c4043; + letter-spacing: .8px; +} + +.mdl-switch__label { + padding-right: 20px; + display: block; +} + +/* ----------------------------------------------- */ +/* override some old styles for new sidebar layout */ +.mdl-js fieldset { + padding: 10px; + border: none; +} +.mdl-js legend { + color: #3c4043; + font-size: 14px; + font-weight: 500; + line-height: 20px; + padding: 10px 10px 0 0; +} +.mdl-js fieldset div.block p { + font-size: 13px; +} + +.mdl-js fieldset.input-switch { + padding-bottom: 50px; +} + +.mdl-js div.block.actions { + float: right; +} + +.mdl-tabs__panel #box-tip { + margin-top: 40px; +} +/* --- */ diff --git a/assets/s3/styles.min.css b/assets/s3/styles.min.css new file mode 100644 index 0000000..bbdf75e --- /dev/null +++ b/assets/s3/styles.min.css @@ -0,0 +1,12 @@ +/*! + * jQuery Autocomplete plugin v1.2.8 + * @homepage http://xdsoft.net/jqplugins/autocomplete/ + * @license MIT - MIT-LICENSE.txt + * (c) 2014, Chupurnov Valeriy + */.toggle span:before,.toggle:before{content:""}.xdsoft_autocomplete{display:inline;position:relative;word-spacing:normal;text-transform:none;text-indent:0;text-shadow:none;text-align:start}.xdsoft_autocomplete .xdsoft_input{position:relative;z-index:2}.xdsoft_autocomplete .xdsoft_autocomplete_dropdown{position:absolute;border:1px solid #ccc;border-top-color:#d9d9d9;box-shadow:0 2px 4px rgba(0,0,0,.2);-webkit-box-shadow:0 2px 4px rgba(0,0,0,.2);cursor:default;display:none;z-index:1001;margin-top:-1px;background-color:#fff;min-width:100%;overflow:auto}.xdsoft_autocomplete .xdsoft_autocomplete_hint{position:absolute;z-index:1;color:#ccc!important;-webkit-text-fill-color:#ccc!important;text-fill-color:#ccc!important;overflow:hidden!important;white-space:pre!important}.xdsoft_autocomplete .xdsoft_autocomplete_hint span{color:transparent;opacity:0}.xdsoft_autocomplete .xdsoft_autocomplete_dropdown>.xdsoft_autocomplete_copyright{color:#ddd;font-size:10px;text-decoration:none;right:5px;position:absolute;margin-top:-15px;z-index:1002}.issuetable,.loader,.toggle,.toggle:before{position:relative}.xdsoft_autocomplete .xdsoft_autocomplete_dropdown>div{background:#fff;white-space:nowrap;cursor:pointer;line-height:1.5em;padding:2px 0}.xdsoft_autocomplete .xdsoft_autocomplete_dropdown>div.active{background:#0097CF;color:#FFF}/*! + * Project Aid for Jira + * @version v1.4.0 + * @license GNU GENERAL PUBLIC LICENSE v3. + * @copyright 2017-2019, Jens Rosemeier. All rights reserved. + * @link https://github.com/ljay79/jira-tools + */:root{--docs-material-font-family:Roboto,Helvetica,Arial,sans-serif;--docs-material-header-font-family:var(--docs-material-font-family);--docs-material-font-weight-normal:400;--docs-material-font-weight-bold:500;--docs-material-font-size-normal:14px;--docs-material-font-size-9:9px;--docs-material-font-size-11:11px;--docs-material-font-size-12:12px;--docs-material-font-size-22:22px}body,html{font-family:Roboto,Helvetica,Arial,sans-serif;font-size:14px;color:#000;font-weight:400}fieldset{margin:0;padding-block-start:.35em;padding-inline-start:.75em;padding-inline-end:.75em;padding-block-end:.625em;border:1px solid #ebebeb}fieldset legend{font-weight:700;padding:4px 8px 0}.tip-footer a,.tip-footer a:active,.tip-footer a:visited,a,a.feedback-link,a.feedback-link:active,a.feedback-link:visited,a.whatsnew,a.whatsnew:active,a.whatsnew:visited,a:active,a:visited{font-family:var(--docs-material-header-font-family,Roboto,Helvetica,Arial,sans-serif);font-weight:var(--docs-material-font-weight-bold,500);letter-spacing:.25px;color:#188038;display:inline-block}fieldset.block p{margin-top:0}textarea{width:100%;height:100px}a,a:active,a:visited{line-height:16px}.tip-footer a,.tip-footer a:active,.tip-footer a:visited{background-image:none;border:1px solid transparent!important;border-radius:4px;box-shadow:none;box-sizing:border-box;font-size:14px;height:36px;line-height:16px;padding:9px 24px 11px}a.feedback-link,a.feedback-link:active,a.feedback-link:visited,a.whatsnew,a.whatsnew:active,a.whatsnew:visited{border-radius:4px;font-size:14px;height:auto;line-height:normal;padding:0}fieldset p a,fieldset p a:active,fieldset p a:visited{font-size:inherit;height:auto;padding:inherit}.loader,.loader:after{border-radius:50%;width:5em;height:5em}.loader{margin:60px auto;font-size:10px;text-indent:-9999em;border-top:.7em solid rgba(24,158,26,.2);border-right:.7em solid rgba(24,158,26,.2);border-bottom:.7em solid rgba(24,158,26,.2);border-left:.7em solid #189e1a;-webkit-transform:translateZ(0);-ms-transform:translateZ(0);transform:translateZ(0);-webkit-animation:load8 1.1s infinite linear;animation:load8 1.1s infinite linear}.error-container{display:none;margin-bottom:16px;padding:5px 10px;text-align:center;color:#fff}.is-loading{animation:blink .5s infinite}@keyframes blink{0%,100%{opacity:1}50%{opacity:0}}@-webkit-keyframes load8{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes load8{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.sidebar{padding:0}.branding-below{bottom:46px;top:0}.sidebar.bottom{font-size:12px;padding:12px}.sidebar.bottom a.feedback-link,.sidebar.bottom a.whatsnew{float:right}#box-tip{margin:10px;padding:15px;background-color:#e6f4ea;border-radius:8px;color:#188038}#box-tip h4{color:#188038;font-size:14px;font-weight:500;margin:0 0 10px}#box-tip p{color:#188038;font-size:12px;letter-spacing:.3px;line-height:normal}#box-tip .tip-footer{display:flex;justify-content:flex-end}.create-box{border-bottom:1px solid grey;padding:20px;text-align:center}.issuetable{font-size:13px;font-weight:400;border-bottom:1px solid #ddd;cursor:default;padding:10px 20px}.issuetable .name,.tooltiptext h4{font-size:14px;font-weight:500}.issuetable .actions{margin-top:10px}.issuetable .actions .action{opacity:.5}.issuetable .schedule-setup{border:1px solid grey;padding:10px;margin:10px 0;background-color:#f0f8ff;display:none;font-style:italic}form>div.block{padding:10px}.block+.block{margin-top:20px}.block2x2{width:43%}.block2x2.left{margin-right:20px;float:left}fieldset .block2x2{display:inline-block;width:46%}.toggle{display:block;width:40px;height:20px;cursor:pointer;-webkit-tap-highlight-color:transparent;transform:translate3d(0,0,0)}.toggle:before{top:3px;left:3px;width:34px;height:14px;display:block;background:#9A9999;border-radius:8px;transition:background .2s ease}.toggle span{position:absolute;top:0;left:0;width:20px;height:20px;display:block;background:#fff;border-radius:10px;box-shadow:0 3px 8px rgba(154,153,153,.5);transition:all .2s ease}.toggle span:before{position:absolute;display:block;margin:-18px;width:56px;height:56px;background:rgba(71,135,237,.5);border-radius:50%;transform:scale(0);opacity:1;pointer-events:none}#cbx:checked+.toggle:before{background:#6dbfff}#cbx:checked+.toggle span{background:#4787ed;transform:translateX(20px);transition:all .2s cubic-bezier(.8,.4,.3,1.25),background .15s ease;box-shadow:0 3px 8px rgba(71,135,237,.2)}#cbx:checked+.toggle span:before{transform:scale(1);opacity:0;transition:all .4s ease}.toggle-center{position:absolute;top:0;left:0}.material-icons.orange600{color:#FB8C00}.tooltip{position:absolute;top:10px;right:20px;z-index:2}.tooltip .tooltiptext{visibility:hidden;width:210px;padding:10px;background-color:#e6f4ea;border-radius:8px;color:#188038;position:absolute;z-index:1;opacity:0;transition:opacity .3s}.tooltiptext h4{color:#188038;margin:0;line-height:28px}.tooltiptext p{color:#188038;font-size:12px;letter-spacing:.3px;line-height:normal;margin:0}.mdl-js legend,.mdl-radio__label,.mdl-switch__label,.mdl-textfield,.mdl-textfield__input,.mdl-textfield__label{font-size:14px}.tooltiptext a{height:auto}.tooltip-top{bottom:60%;left:0;margin-left:0}.tooltip-bottom{top:75%;right:0;margin-left:0}.tooltip:hover .tooltiptext{visibility:visible;opacity:1}.message-container{display:none;padding:5px 10px;text-align:center;color:#fff}.mdl-tabs__tab-bar.numTabs2>a{width:50%}.mdl-tabs__tab-barnumTabs3>a{width:33%}.mdl-tabs__tab .mdl-tabs__ripple-container .mdl-ripple{background:#5f6368}.mdl-tabs.is-upgraded .mdl-tabs__tab.is-active{color:#188038}.mdl-tabs.is-upgraded .mdl-tabs__tab.is-active:after{background:#188038}.mdl-tabs__tab-bar>a,.mdl-tabs__tab-bar>a:active,.mdl-tabs__tab-bar>a:hover,.mdl-tabs__tab-bar>a:visited{line-height:48px;text-decoration:inherit}.mdl-textfield{width:100%;padding:10px 0 0}.mdl-textfield__label{top:14px;margin:10px 0}.mdl-textfield__label:after{bottom:0}.mdl-textfield__input{color:#3c4043;width:94%;margin:10px 0;padding:8px;border:1px solid rgba(0,0,0,.12)}.mdl-textfield__input:-ms-input-placeholder,.mdl-textfield__input:placeholder{color:#c5c5c5}.mdl-textfield.has-placeholder .mdl-textfield__label,.mdl-textfield.is-dirty .mdl-textfield__label{visibility:visible;top:-10px;color:#3c4043;letter-spacing:.8px}.mdl-switch__label{padding-right:20px;display:block}.mdl-js fieldset{padding:10px;border:none}.mdl-js legend{color:#3c4043;font-weight:500;line-height:20px;padding:10px 10px 0 0}.mdl-js fieldset div.block p{font-size:13px}.mdl-js fieldset.input-switch{padding-bottom:50px}.mdl-js div.block.actions{float:right}.mdl-tabs__panel #box-tip{margin-top:40px} \ No newline at end of file diff --git a/src/Code.gs b/src/Code.gs index 640e3bd..4909d8e 100644 --- a/src/Code.gs +++ b/src/Code.gs @@ -49,7 +49,7 @@ function addMenu() { .addItem('Update issue key status "KEY-123 [Done]"', 'dialogRefreshTicketsIds') .addItem('Jira field map', 'menuJiraFieldMap') .addSeparator() - .addItem('Settings', 'dialogSettings') + .addItem('Settings', 'menuSettings') .addItem('Configure custom fields', 'menuCustomFields') .addItem('About', 'dialogAbout') .addSeparator() diff --git a/src/controllers/settings.gs b/src/controllers/settings.gs index f9ffe68..9ab7b10 100644 --- a/src/controllers/settings.gs +++ b/src/controllers/settings.gs @@ -9,6 +9,23 @@ function menuSettings() { Settings_Controller_.sidebar(); } +/** + * @desc Wrapper: Settings callback handler for saving jira access settings + * @return {object} Object({status: [boolean], tables: [object]}) + */ +function callbackSettings_saveAccess(args) { + return Settings_Controller_.callbackSaveAccess(args); +} + +/** + * @desc Wrapper: Settings callback handler for saving add-on options + * @return {object} Object({status: [boolean], tables: [object]}) + */ +function callbackSettings_saveOptions(args) { + return Settings_Controller_.callbackSaveOptions(args); +} + + /** * Creates a new Settings_Controller_ object, controller for multiple actions. */ @@ -19,6 +36,7 @@ Settings_Controller_ = { * @desc Menu called to open new sidebar dialog. */ sidebar : function () { + debug.log(this.name + '.sidebar()'); initDefaults(); var sidebar = getDialog('views/sidebar/settings', getServerCfg()); @@ -31,6 +49,44 @@ Settings_Controller_ = { ; SpreadsheetApp.getUi().showSidebar(html); + }, + + /** + * @desc Save Jira access settings, provided in dialog form and perform + * a connection test to Jira api. + * @param jsonFormData {object} JSON Form object of all form values + * @return {object} Object({status: [boolean], response: [string]}) + */ + callbackSaveAccess : function (jsonFormData) { + debug.log(this.name + '.callbackSaveSettings()'); + + var url = trimChar(jsonFormData.jira_url, "/"); + setCfg_('available', false); + setCfg_('jira_url', url); + setCfg_('jira_username', jsonFormData.jira_username); + setCfg_('jira_password', jsonFormData.jira_password); + + var test = testConnection(); // doesnt test authentification yet + + setCfg_('server_type', (url.indexOf('atlassian.net') == -1) ? 'server' : 'onDemand'); + + return {status: test.status, message: test.response}; + }, + + /** + * @desc Save Jira Add-on options/settings, provided in sidebar form + * @param jsonFormData {object} JSON Form object of all form values + * @return {object} Object({status: [boolean], response: [string]}) + */ + callbackSaveOptions : function (jsonFormData) { + debug.log(this.name + '.callbackSaveOptions()'); + + setCfg_('custom_fn_enabled', (jsonFormData.custom_fn_enabled == 'on') ? 1 : 0); + UserStorage.setValue('workhours', jsonFormData.ts_workhours); + UserStorage.setValue('dspuseras_name', parseInt(jsonFormData.ts_dspuseras_name)); + UserStorage.setValue('dspdurationas', jsonFormData.ts_dspdurationas); + + return {status: true, message: 'Options successfully saved.'}; } } diff --git a/src/dialogs.gs b/src/dialogs.gs index 94b4afa..5332d38 100644 --- a/src/dialogs.gs +++ b/src/dialogs.gs @@ -6,7 +6,7 @@ const extend = require('./jsLib.gs').extend; //*** All UI Dialogs for this add-on ***// /** - * @desc Jira Settings Dialog preprocessor + * @desc Jira Dialog preprocessor * @param file {string} Filename * @param values {object} * @return {HtmlOutput} @@ -34,6 +34,7 @@ function getDialog(file, values) { /* Dialog: Settings */ /** + * @deprecated * @desc Jira Settings Dialog constructor */ function dialogSettings() { diff --git a/src/jiraApi.gs b/src/jiraApi.gs index 76472e1..935711d 100644 --- a/src/jiraApi.gs +++ b/src/jiraApi.gs @@ -69,7 +69,8 @@ var httpErrorCodes = { }; /** - * Test JIRA API connection with provided settings. + * @desc Test JIRA API connection with provided settings. + * @TODO Doesnt test authentification yet * @return {object} Object({status:[boolean], response:[string]}) */ function testConnection() { diff --git a/src/settings.gs b/src/settings.gs index eb1bd88..e8461cc 100644 --- a/src/settings.gs +++ b/src/settings.gs @@ -115,6 +115,7 @@ function getServerCfg() { /** + * @deprecated * @desc Save Jira server settings, provided in dialog form and perform * a connection test to Jira api. * @param jsonFormData {object} JSON Form object of all form values diff --git a/src/views/sidebar/settings.html b/src/views/sidebar/settings.html index 5475956..e12280e 100644 --- a/src/views/sidebar/settings.html +++ b/src/views/sidebar/settings.html @@ -2,541 +2,41 @@ - + - - - - + + + + \ No newline at end of file From a2d0ee9bb33e0beadf44e0c4ce1b5544c954c866 Mon Sep 17 00:00:00 2001 From: LJay79 Date: Thu, 13 Jun 2019 13:56:13 +0200 Subject: [PATCH 07/19] add MDL switch and custom functions warning dialog --- assets/s3/styles.css | 127 +++++----- assets/s3/styles.min.css | 4 +- src/controllers/settings.gs | 4 +- src/dialogSettings.html | 199 ---------------- src/dialogs.gs | 22 -- src/settings.gs | 25 -- src/views/sidebar/settings.html | 407 +++++++++++++++++++------------- 7 files changed, 298 insertions(+), 490 deletions(-) delete mode 100644 src/dialogSettings.html diff --git a/assets/s3/styles.css b/assets/s3/styles.css index 454e66f..f20c978 100644 --- a/assets/s3/styles.css +++ b/assets/s3/styles.css @@ -82,6 +82,48 @@ text-align: start; * @copyright 2017-2019, Jens Rosemeier. All rights reserved. * @link https://github.com/ljay79/jira-tools */ + +/* Polyfill Dialog (see: https://cdnjs.cloudflare.com/ajax/libs/dialog-polyfill/0.5.0/dialog-polyfill.css) */ +dialog { + position: absolute; + left: 0; right: 0; + width: -moz-fit-content; + width: -webkit-fit-content; + width: fit-content; + height: -moz-fit-content; + height: -webkit-fit-content; + height: fit-content; + margin: auto; + border: solid; + padding: 1em; + background: white; + color: black; + display: block; +} + +dialog:not([open]) { + display: none; +} + +dialog + .backdrop { + position: fixed; + top: 0; right: 0; bottom: 0; left: 0; + background: rgba(0,0,0,0.1); +} + +._dialog_overlay { + position: fixed; + top: 0; right: 0; bottom: 0; left: 0; +} + +dialog.fixed { + position: fixed; + top: 50%; + transform: translate(0, -50%); +} + +/* *** Styles *** */ + :root { --docs-material-font-family: Roboto, Helvetica, Arial, sans-serif; --docs-material-header-font-family: var(--docs-material-font-family); @@ -327,72 +369,6 @@ fieldset .block2x2 { width:46%; } -.toggle { - position: relative; - display: block; - width: 40px; - height: 20px; - cursor: pointer; - -webkit-tap-highlight-color: transparent; - transform: translate3d(0, 0, 0); -} -.toggle:before { - content: ""; - position: relative; - top: 3px; - left: 3px; - width: 34px; - height: 14px; - display: block; - background: #9A9999; - border-radius: 8px; - transition: background 0.2s ease; -} -.toggle span { - position: absolute; - top: 0; - left: 0; - width: 20px; - height: 20px; - display: block; - background: white; - border-radius: 10px; - box-shadow: 0 3px 8px rgba(154, 153, 153, 0.5); - transition: all 0.2s ease; -} -.toggle span:before { - content: ""; - position: absolute; - display: block; - margin: -18px; - width: 56px; - height: 56px; - background: rgba(71, 135, 237, 0.5); - border-radius: 50%; - transform: scale(0); - opacity: 1; - pointer-events: none; -} -#cbx:checked + .toggle:before { - background: #6dbfff; -} -#cbx:checked + .toggle span { - background: #4787ed; - transform: translateX(20px); - transition: all 0.2s cubic-bezier(0.8, 0.4, 0.3, 1.25), background 0.15s ease; - box-shadow: 0 3px 8px rgba(71, 135, 237, 0.2); -} -#cbx:checked + .toggle span:before { - transform: scale(1); - opacity: 0; - transition: all 0.4s ease; -} -.toggle-center { - position: absolute; - top: 0; - left: 0; -} - /* Tooltip - Filter changed warning in Refresh sidebar */ .material-icons.orange600 { color: #FB8C00; } @@ -453,6 +429,20 @@ fieldset .block2x2 { .message-container { display: none; padding: 5px 10px; text-align: center; color: #fff; } +/* MDL Modal Dialog */ +dialog { + z-index: 9000; + border: 1px solid rgba(0, 0, 0, 0.3); + box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3); +} +/* dialog in sidebar */ +.mdl-js .mdl-dialog { + width: 90%; +} +.dialog-background { + background-color: rgba(0, 0, 0, 0.1); +} + /* ------------------------------------------- */ /* override material.blue-green.min.css styles */ .mdl-tabs__tab-bar.numTabs2 > a { @@ -521,11 +511,6 @@ fieldset .block2x2 { letter-spacing: .8px; } -.mdl-switch__label { - padding-right: 20px; - display: block; -} - /* ----------------------------------------------- */ /* override some old styles for new sidebar layout */ .mdl-js fieldset { diff --git a/assets/s3/styles.min.css b/assets/s3/styles.min.css index bbdf75e..3de798c 100644 --- a/assets/s3/styles.min.css +++ b/assets/s3/styles.min.css @@ -3,10 +3,10 @@ * @homepage http://xdsoft.net/jqplugins/autocomplete/ * @license MIT - MIT-LICENSE.txt * (c) 2014, Chupurnov Valeriy - */.toggle span:before,.toggle:before{content:""}.xdsoft_autocomplete{display:inline;position:relative;word-spacing:normal;text-transform:none;text-indent:0;text-shadow:none;text-align:start}.xdsoft_autocomplete .xdsoft_input{position:relative;z-index:2}.xdsoft_autocomplete .xdsoft_autocomplete_dropdown{position:absolute;border:1px solid #ccc;border-top-color:#d9d9d9;box-shadow:0 2px 4px rgba(0,0,0,.2);-webkit-box-shadow:0 2px 4px rgba(0,0,0,.2);cursor:default;display:none;z-index:1001;margin-top:-1px;background-color:#fff;min-width:100%;overflow:auto}.xdsoft_autocomplete .xdsoft_autocomplete_hint{position:absolute;z-index:1;color:#ccc!important;-webkit-text-fill-color:#ccc!important;text-fill-color:#ccc!important;overflow:hidden!important;white-space:pre!important}.xdsoft_autocomplete .xdsoft_autocomplete_hint span{color:transparent;opacity:0}.xdsoft_autocomplete .xdsoft_autocomplete_dropdown>.xdsoft_autocomplete_copyright{color:#ddd;font-size:10px;text-decoration:none;right:5px;position:absolute;margin-top:-15px;z-index:1002}.issuetable,.loader,.toggle,.toggle:before{position:relative}.xdsoft_autocomplete .xdsoft_autocomplete_dropdown>div{background:#fff;white-space:nowrap;cursor:pointer;line-height:1.5em;padding:2px 0}.xdsoft_autocomplete .xdsoft_autocomplete_dropdown>div.active{background:#0097CF;color:#FFF}/*! + */._dialog_overlay,dialog+.backdrop{top:0;bottom:0;right:0;position:fixed}.xdsoft_autocomplete{display:inline;position:relative;word-spacing:normal;text-transform:none;text-indent:0;text-shadow:none;text-align:start}.xdsoft_autocomplete .xdsoft_input{position:relative;z-index:2}.xdsoft_autocomplete .xdsoft_autocomplete_dropdown{position:absolute;border:1px solid #ccc;border-top-color:#d9d9d9;box-shadow:0 2px 4px rgba(0,0,0,.2);-webkit-box-shadow:0 2px 4px rgba(0,0,0,.2);cursor:default;display:none;z-index:1001;margin-top:-1px;background-color:#fff;min-width:100%;overflow:auto}.xdsoft_autocomplete .xdsoft_autocomplete_hint{position:absolute;z-index:1;color:#ccc!important;-webkit-text-fill-color:#ccc!important;text-fill-color:#ccc!important;overflow:hidden!important;white-space:pre!important}.xdsoft_autocomplete .xdsoft_autocomplete_hint span{color:transparent;opacity:0}.xdsoft_autocomplete .xdsoft_autocomplete_dropdown>.xdsoft_autocomplete_copyright{color:#ddd;font-size:10px;text-decoration:none;right:5px;position:absolute;margin-top:-15px;z-index:1002}.xdsoft_autocomplete .xdsoft_autocomplete_dropdown>div{background:#fff;white-space:nowrap;cursor:pointer;line-height:1.5em;padding:2px 0}.xdsoft_autocomplete .xdsoft_autocomplete_dropdown>div.active{background:#0097CF;color:#FFF}/*! * Project Aid for Jira * @version v1.4.0 * @license GNU GENERAL PUBLIC LICENSE v3. * @copyright 2017-2019, Jens Rosemeier. All rights reserved. * @link https://github.com/ljay79/jira-tools - */:root{--docs-material-font-family:Roboto,Helvetica,Arial,sans-serif;--docs-material-header-font-family:var(--docs-material-font-family);--docs-material-font-weight-normal:400;--docs-material-font-weight-bold:500;--docs-material-font-size-normal:14px;--docs-material-font-size-9:9px;--docs-material-font-size-11:11px;--docs-material-font-size-12:12px;--docs-material-font-size-22:22px}body,html{font-family:Roboto,Helvetica,Arial,sans-serif;font-size:14px;color:#000;font-weight:400}fieldset{margin:0;padding-block-start:.35em;padding-inline-start:.75em;padding-inline-end:.75em;padding-block-end:.625em;border:1px solid #ebebeb}fieldset legend{font-weight:700;padding:4px 8px 0}.tip-footer a,.tip-footer a:active,.tip-footer a:visited,a,a.feedback-link,a.feedback-link:active,a.feedback-link:visited,a.whatsnew,a.whatsnew:active,a.whatsnew:visited,a:active,a:visited{font-family:var(--docs-material-header-font-family,Roboto,Helvetica,Arial,sans-serif);font-weight:var(--docs-material-font-weight-bold,500);letter-spacing:.25px;color:#188038;display:inline-block}fieldset.block p{margin-top:0}textarea{width:100%;height:100px}a,a:active,a:visited{line-height:16px}.tip-footer a,.tip-footer a:active,.tip-footer a:visited{background-image:none;border:1px solid transparent!important;border-radius:4px;box-shadow:none;box-sizing:border-box;font-size:14px;height:36px;line-height:16px;padding:9px 24px 11px}a.feedback-link,a.feedback-link:active,a.feedback-link:visited,a.whatsnew,a.whatsnew:active,a.whatsnew:visited{border-radius:4px;font-size:14px;height:auto;line-height:normal;padding:0}fieldset p a,fieldset p a:active,fieldset p a:visited{font-size:inherit;height:auto;padding:inherit}.loader,.loader:after{border-radius:50%;width:5em;height:5em}.loader{margin:60px auto;font-size:10px;text-indent:-9999em;border-top:.7em solid rgba(24,158,26,.2);border-right:.7em solid rgba(24,158,26,.2);border-bottom:.7em solid rgba(24,158,26,.2);border-left:.7em solid #189e1a;-webkit-transform:translateZ(0);-ms-transform:translateZ(0);transform:translateZ(0);-webkit-animation:load8 1.1s infinite linear;animation:load8 1.1s infinite linear}.error-container{display:none;margin-bottom:16px;padding:5px 10px;text-align:center;color:#fff}.is-loading{animation:blink .5s infinite}@keyframes blink{0%,100%{opacity:1}50%{opacity:0}}@-webkit-keyframes load8{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes load8{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.sidebar{padding:0}.branding-below{bottom:46px;top:0}.sidebar.bottom{font-size:12px;padding:12px}.sidebar.bottom a.feedback-link,.sidebar.bottom a.whatsnew{float:right}#box-tip{margin:10px;padding:15px;background-color:#e6f4ea;border-radius:8px;color:#188038}#box-tip h4{color:#188038;font-size:14px;font-weight:500;margin:0 0 10px}#box-tip p{color:#188038;font-size:12px;letter-spacing:.3px;line-height:normal}#box-tip .tip-footer{display:flex;justify-content:flex-end}.create-box{border-bottom:1px solid grey;padding:20px;text-align:center}.issuetable{font-size:13px;font-weight:400;border-bottom:1px solid #ddd;cursor:default;padding:10px 20px}.issuetable .name,.tooltiptext h4{font-size:14px;font-weight:500}.issuetable .actions{margin-top:10px}.issuetable .actions .action{opacity:.5}.issuetable .schedule-setup{border:1px solid grey;padding:10px;margin:10px 0;background-color:#f0f8ff;display:none;font-style:italic}form>div.block{padding:10px}.block+.block{margin-top:20px}.block2x2{width:43%}.block2x2.left{margin-right:20px;float:left}fieldset .block2x2{display:inline-block;width:46%}.toggle{display:block;width:40px;height:20px;cursor:pointer;-webkit-tap-highlight-color:transparent;transform:translate3d(0,0,0)}.toggle:before{top:3px;left:3px;width:34px;height:14px;display:block;background:#9A9999;border-radius:8px;transition:background .2s ease}.toggle span{position:absolute;top:0;left:0;width:20px;height:20px;display:block;background:#fff;border-radius:10px;box-shadow:0 3px 8px rgba(154,153,153,.5);transition:all .2s ease}.toggle span:before{position:absolute;display:block;margin:-18px;width:56px;height:56px;background:rgba(71,135,237,.5);border-radius:50%;transform:scale(0);opacity:1;pointer-events:none}#cbx:checked+.toggle:before{background:#6dbfff}#cbx:checked+.toggle span{background:#4787ed;transform:translateX(20px);transition:all .2s cubic-bezier(.8,.4,.3,1.25),background .15s ease;box-shadow:0 3px 8px rgba(71,135,237,.2)}#cbx:checked+.toggle span:before{transform:scale(1);opacity:0;transition:all .4s ease}.toggle-center{position:absolute;top:0;left:0}.material-icons.orange600{color:#FB8C00}.tooltip{position:absolute;top:10px;right:20px;z-index:2}.tooltip .tooltiptext{visibility:hidden;width:210px;padding:10px;background-color:#e6f4ea;border-radius:8px;color:#188038;position:absolute;z-index:1;opacity:0;transition:opacity .3s}.tooltiptext h4{color:#188038;margin:0;line-height:28px}.tooltiptext p{color:#188038;font-size:12px;letter-spacing:.3px;line-height:normal;margin:0}.mdl-js legend,.mdl-radio__label,.mdl-switch__label,.mdl-textfield,.mdl-textfield__input,.mdl-textfield__label{font-size:14px}.tooltiptext a{height:auto}.tooltip-top{bottom:60%;left:0;margin-left:0}.tooltip-bottom{top:75%;right:0;margin-left:0}.tooltip:hover .tooltiptext{visibility:visible;opacity:1}.message-container{display:none;padding:5px 10px;text-align:center;color:#fff}.mdl-tabs__tab-bar.numTabs2>a{width:50%}.mdl-tabs__tab-barnumTabs3>a{width:33%}.mdl-tabs__tab .mdl-tabs__ripple-container .mdl-ripple{background:#5f6368}.mdl-tabs.is-upgraded .mdl-tabs__tab.is-active{color:#188038}.mdl-tabs.is-upgraded .mdl-tabs__tab.is-active:after{background:#188038}.mdl-tabs__tab-bar>a,.mdl-tabs__tab-bar>a:active,.mdl-tabs__tab-bar>a:hover,.mdl-tabs__tab-bar>a:visited{line-height:48px;text-decoration:inherit}.mdl-textfield{width:100%;padding:10px 0 0}.mdl-textfield__label{top:14px;margin:10px 0}.mdl-textfield__label:after{bottom:0}.mdl-textfield__input{color:#3c4043;width:94%;margin:10px 0;padding:8px;border:1px solid rgba(0,0,0,.12)}.mdl-textfield__input:-ms-input-placeholder,.mdl-textfield__input:placeholder{color:#c5c5c5}.mdl-textfield.has-placeholder .mdl-textfield__label,.mdl-textfield.is-dirty .mdl-textfield__label{visibility:visible;top:-10px;color:#3c4043;letter-spacing:.8px}.mdl-switch__label{padding-right:20px;display:block}.mdl-js fieldset{padding:10px;border:none}.mdl-js legend{color:#3c4043;font-weight:500;line-height:20px;padding:10px 10px 0 0}.mdl-js fieldset div.block p{font-size:13px}.mdl-js fieldset.input-switch{padding-bottom:50px}.mdl-js div.block.actions{float:right}.mdl-tabs__panel #box-tip{margin-top:40px} \ No newline at end of file + */dialog{position:absolute;left:0;right:0;width:-moz-fit-content;width:-webkit-fit-content;width:fit-content;height:-moz-fit-content;height:-webkit-fit-content;height:fit-content;margin:auto;border:solid;padding:1em;background:#fff;color:#000;display:block}dialog:not([open]){display:none}dialog+.backdrop{left:0;background:rgba(0,0,0,.1)}._dialog_overlay{left:0}dialog.fixed{position:fixed;top:50%;transform:translate(0,-50%)}:root{--docs-material-font-family:Roboto,Helvetica,Arial,sans-serif;--docs-material-header-font-family:var(--docs-material-font-family);--docs-material-font-weight-normal:400;--docs-material-font-weight-bold:500;--docs-material-font-size-normal:14px;--docs-material-font-size-9:9px;--docs-material-font-size-11:11px;--docs-material-font-size-12:12px;--docs-material-font-size-22:22px}body,html{font-family:Roboto,Helvetica,Arial,sans-serif;font-size:14px;color:#000;font-weight:400}fieldset{margin:0;padding-block-start:.35em;padding-inline-start:.75em;padding-inline-end:.75em;padding-block-end:.625em;border:1px solid #ebebeb}fieldset legend{font-weight:700;padding:4px 8px 0}.tip-footer a,.tip-footer a:active,.tip-footer a:visited,a,a.feedback-link,a.feedback-link:active,a.feedback-link:visited,a.whatsnew,a.whatsnew:active,a.whatsnew:visited,a:active,a:visited{font-family:var(--docs-material-header-font-family,Roboto,Helvetica,Arial,sans-serif);font-weight:var(--docs-material-font-weight-bold,500);letter-spacing:.25px;color:#188038;display:inline-block}fieldset.block p{margin-top:0}textarea{width:100%;height:100px}a,a:active,a:visited{line-height:16px}.tip-footer a,.tip-footer a:active,.tip-footer a:visited{background-image:none;border:1px solid transparent!important;border-radius:4px;box-shadow:none;box-sizing:border-box;font-size:14px;height:36px;line-height:16px;padding:9px 24px 11px}a.feedback-link,a.feedback-link:active,a.feedback-link:visited,a.whatsnew,a.whatsnew:active,a.whatsnew:visited{border-radius:4px;font-size:14px;height:auto;line-height:normal;padding:0}fieldset p a,fieldset p a:active,fieldset p a:visited{font-size:inherit;height:auto;padding:inherit}.loader,.loader:after{border-radius:50%;width:5em;height:5em}.loader{margin:60px auto;font-size:10px;position:relative;text-indent:-9999em;border-top:.7em solid rgba(24,158,26,.2);border-right:.7em solid rgba(24,158,26,.2);border-bottom:.7em solid rgba(24,158,26,.2);border-left:.7em solid #189e1a;-webkit-transform:translateZ(0);-ms-transform:translateZ(0);transform:translateZ(0);-webkit-animation:load8 1.1s infinite linear;animation:load8 1.1s infinite linear}.error-container{display:none;margin-bottom:16px;padding:5px 10px;text-align:center;color:#fff}.is-loading{animation:blink .5s infinite}@keyframes blink{0%,100%{opacity:1}50%{opacity:0}}@-webkit-keyframes load8{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes load8{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.sidebar{padding:0}.branding-below{bottom:46px;top:0}.sidebar.bottom{font-size:12px;padding:12px}.sidebar.bottom a.feedback-link,.sidebar.bottom a.whatsnew{float:right}#box-tip{margin:10px;padding:15px;background-color:#e6f4ea;border-radius:8px;color:#188038}#box-tip h4{color:#188038;font-size:14px;font-weight:500;margin:0 0 10px}#box-tip p{color:#188038;font-size:12px;letter-spacing:.3px;line-height:normal}#box-tip .tip-footer{display:flex;justify-content:flex-end}.create-box{border-bottom:1px solid grey;padding:20px;text-align:center}.issuetable{font-size:13px;font-weight:400;border-bottom:1px solid #ddd;cursor:default;padding:10px 20px;position:relative}.issuetable .name,.tooltiptext h4{font-size:14px;font-weight:500}.issuetable .actions{margin-top:10px}.issuetable .actions .action{opacity:.5}.issuetable .schedule-setup{border:1px solid grey;padding:10px;margin:10px 0;background-color:#f0f8ff;display:none;font-style:italic}form>div.block{padding:10px}.block+.block{margin-top:20px}.block2x2{width:43%}.block2x2.left{margin-right:20px;float:left}fieldset .block2x2{display:inline-block;width:46%}.material-icons.orange600{color:#FB8C00}.tooltip{position:absolute;top:10px;right:20px;z-index:2}.tooltip .tooltiptext{visibility:hidden;width:210px;padding:10px;background-color:#e6f4ea;border-radius:8px;color:#188038;position:absolute;z-index:1;opacity:0;transition:opacity .3s}.tooltiptext h4{color:#188038;margin:0;line-height:28px}.tooltiptext p{color:#188038;font-size:12px;letter-spacing:.3px;line-height:normal;margin:0}.mdl-js legend,.mdl-radio__label,.mdl-switch__label,.mdl-textfield,.mdl-textfield__input,.mdl-textfield__label{font-size:14px}.tooltiptext a{height:auto}.tooltip-top{bottom:60%;left:0;margin-left:0}.tooltip-bottom{top:75%;right:0;margin-left:0}.tooltip:hover .tooltiptext{visibility:visible;opacity:1}.message-container{display:none;padding:5px 10px;text-align:center;color:#fff}dialog{z-index:9000;border:1px solid rgba(0,0,0,.3);box-shadow:0 3px 7px rgba(0,0,0,.3)}.mdl-js .mdl-dialog{width:90%}.dialog-background{background-color:rgba(0,0,0,.1)}.mdl-tabs__tab-bar.numTabs2>a{width:50%}.mdl-tabs__tab-barnumTabs3>a{width:33%}.mdl-tabs__tab .mdl-tabs__ripple-container .mdl-ripple{background:#5f6368}.mdl-tabs.is-upgraded .mdl-tabs__tab.is-active{color:#188038}.mdl-tabs.is-upgraded .mdl-tabs__tab.is-active:after{background:#188038}.mdl-tabs__tab-bar>a,.mdl-tabs__tab-bar>a:active,.mdl-tabs__tab-bar>a:hover,.mdl-tabs__tab-bar>a:visited{line-height:48px;text-decoration:inherit}.mdl-textfield{width:100%;padding:10px 0 0}.mdl-textfield__label{top:14px;margin:10px 0}.mdl-textfield__label:after{bottom:0}.mdl-textfield__input{color:#3c4043;width:94%;margin:10px 0;padding:8px;border:1px solid rgba(0,0,0,.12)}.mdl-textfield__input:-ms-input-placeholder,.mdl-textfield__input:placeholder{color:#c5c5c5}.mdl-textfield.has-placeholder .mdl-textfield__label,.mdl-textfield.is-dirty .mdl-textfield__label{visibility:visible;top:-10px;color:#3c4043;letter-spacing:.8px}.mdl-js fieldset{padding:10px;border:none}.mdl-js legend{color:#3c4043;font-weight:500;line-height:20px;padding:10px 10px 0 0}.mdl-js fieldset div.block p{font-size:13px}.mdl-js fieldset.input-switch{padding-bottom:50px}.mdl-js div.block.actions{float:right}.mdl-tabs__panel #box-tip{margin-top:40px} \ No newline at end of file diff --git a/src/controllers/settings.gs b/src/controllers/settings.gs index 9ab7b10..0b27e54 100644 --- a/src/controllers/settings.gs +++ b/src/controllers/settings.gs @@ -94,6 +94,8 @@ Settings_Controller_ = { // Node required code block module.exports = { menuSettings : menuSettings, + callbackSettings_saveAccess: callbackSettings_saveAccess, + callbackSettings_saveOptions: callbackSettings_saveOptions, Settings_Controller_ : Settings_Controller_ } -// End of Node required code block +// End of Node required code block \ No newline at end of file diff --git a/src/dialogSettings.html b/src/dialogSettings.html deleted file mode 100644 index 4a0ac1c..0000000 --- a/src/dialogSettings.html +++ /dev/null @@ -1,199 +0,0 @@ - - - - - - - - - - - - - -
-
- General - -
- (https://YOURCOMPANY.atlassian.net/) - -
-
- - - (Email or Atlassian account name) -
-
- - - (Email + API Token recommended [?]) - -
-
- -
- Time Sheet - -
- - - h -
-
- -
- Display User as -
-
- -
-
- -
- Show Duration as -
- - -
-
- -
- Custom Functions -
-
- checked="checked" /> -
- - Custom functions use the document owner's configured site and - Jira credentials to query Jira. - -
-
- -
- - -
-
- - -

Be careful when sharing this spreadsheet. Anyone who can edit - it will be able to use the custom functions and import Jira data - using your account.

- - -
- - - - \ No newline at end of file diff --git a/src/dialogs.gs b/src/dialogs.gs index 5332d38..a820ff1 100644 --- a/src/dialogs.gs +++ b/src/dialogs.gs @@ -31,28 +31,6 @@ function getDialog(file, values) { } } -/* Dialog: Settings */ - -/** - * @deprecated - * @desc Jira Settings Dialog constructor - */ -function dialogSettings() { - initDefaults(); - - var dialog = getDialog('dialogSettings', getServerCfg()); - - dialog - .setWidth(510) - .setHeight(500) - .setSandboxMode(HtmlService.SandboxMode.IFRAME); - - debug.log('Processed: %s', dialog); - - SpreadsheetApp.getUi().showModalDialog(dialog, 'Settings'); -} - -/* Dialog: Settings - END */ /** * @desc Fetch all Jira Issue IDs from active sheet and update their status. diff --git a/src/settings.gs b/src/settings.gs index e8461cc..9947ef1 100644 --- a/src/settings.gs +++ b/src/settings.gs @@ -114,31 +114,6 @@ function getServerCfg() { } -/** - * @deprecated - * @desc Save Jira server settings, provided in dialog form and perform - * a connection test to Jira api. - * @param jsonFormData {object} JSON Form object of all form values - * @return {object} Object({status: [boolean], response: [string]}) - */ -function saveSettings(jsonFormData) { - var url = trimChar(jsonFormData.jira_url, "/"); - setCfg_('available', false); - setCfg_('jira_url', url); - setCfg_('jira_username', jsonFormData.jira_username); - setCfg_('jira_password', jsonFormData.jira_password); - setCfg_('custom_fn_enabled', (jsonFormData.custom_fn_enabled == 'on') ? 1 : 0); - UserStorage.setValue('workhours', jsonFormData.ts_workhours); - UserStorage.setValue('dspuseras_name', parseInt(jsonFormData.ts_dspuseras_name)); - UserStorage.setValue('dspdurationas', jsonFormData.ts_dspdurationas); - - var test = testConnection(); - - setCfg_('server_type', (url.indexOf('atlassian.net') == -1) ? 'server' : 'onDemand'); - - return {status: test.status, message: test.response}; -} - /** * Delete entire user properties - for testing only */ diff --git a/src/views/sidebar/settings.html b/src/views/sidebar/settings.html index e12280e..effe7ad 100644 --- a/src/views/sidebar/settings.html +++ b/src/views/sidebar/settings.html @@ -7,145 +7,173 @@ + - - - + + + + + + + From 2b6d8ed795f9b29dc677cabc64d1132c6502a47b Mon Sep 17 00:00:00 2001 From: LJay79 Date: Thu, 13 Jun 2019 14:52:00 +0200 Subject: [PATCH 08/19] add new clearOldWarnings_(); fix time handling of customFunctionsSuspended_() --- src/controllers/insertIssueTable.gs | 4 ++++ src/customFunctions.gs | 16 ++++++++-------- src/jsLib.gs | 25 ++++++++++++++++++++++++- 3 files changed, 36 insertions(+), 9 deletions(-) diff --git a/src/controllers/insertIssueTable.gs b/src/controllers/insertIssueTable.gs index 67e8a92..f0ac03c 100644 --- a/src/controllers/insertIssueTable.gs +++ b/src/controllers/insertIssueTable.gs @@ -257,6 +257,10 @@ function TriggerIssueTableModification_(e) { 'Changes in this issue table may prevent "Refresh IssueTable".', ui.ButtonSet.OK); } + + try { + clearOldWarnings_(); + } catch(e){} } else { debug.log('[TriggerIssueTableModification_] DONT show warning: %ss elapsed from %s', (timeNow - lastWarningTime)/1000, warningSuspendSeconds/1000); diff --git a/src/customFunctions.gs b/src/customFunctions.gs index 6f9e3c6..f1b3217 100644 --- a/src/customFunctions.gs +++ b/src/customFunctions.gs @@ -258,8 +258,11 @@ function customFunctionsSuspended_() { timeUntil.setTime(_timeUntil); } - if (timeUntil.getSeconds() > (now.getSeconds()+5)) { - var _delay_seconds = timeUntil.getSeconds() - now.getSeconds(); + var timeUntilSeconds = Math.round(timeUntil.getTime() / 1000); + var nowSeconds = Math.round(now.getTime() / 1000); + + if (timeUntilSeconds > (nowSeconds+3)) { + var _delay_seconds = timeUntilSeconds - nowSeconds; var _msg = "Suspension of custom functions for about " + _delay_seconds + " seconds because of to many errors! Please correct all your custom function calls in this document and wait before re-trying."; console.info("customFunctionsSuspended_():" + _msg + " Now: %s < Until: %s", now.toString(), timeUntil.toString()); //@TODO: throw new Error(_msg); // NOT YET ACTIVE @@ -269,8 +272,7 @@ function customFunctionsSuspended_() { if (count >= 100) { // set suspension +300s console.info('customFunctionsSuspended_(): ... setting 300s suspension!'); - now.setSeconds(now.getSeconds() + 300); - docProps.put(key_time, now.getTime()); + docProps.put(key_time, now.getTime() + (300*1000)); // reset error counter docProps.put(key_count, 0); @@ -278,14 +280,12 @@ function customFunctionsSuspended_() { } else if (count >= 25 && count < 30) { // set suspension +300s console.info('customFunctionsSuspended_(): ... setting 60s suspension!'); - now.setSeconds(now.getSeconds() + 60); - docProps.put(key_time, now.getTime()); + docProps.put(key_time, now.getTime() + (60*1000)); } else if (count >= 10 && count < 15) { // set suspension +30s console.info('customFunctionsSuspended_(): ... setting 30s suspension!'); - now.setSeconds(now.getSeconds() + 30); - docProps.put(key_time, now.getTime()); + docProps.put(key_time, now.getTime() + (30*1000)); } } diff --git a/src/jsLib.gs b/src/jsLib.gs index 1eb500b..37871f7 100644 --- a/src/jsLib.gs +++ b/src/jsLib.gs @@ -365,6 +365,28 @@ function getSheetById(id) { })[0]; } +/** + * @desc Clearing old/obsolete warnings previously set by "TriggerIssueTableModification_()" + * @returns void + */ +function clearOldWarnings_() { + var prop = PropertiesService.getUserProperties(); + var all_props = prop.getProperties(); + var now = new Date(); + var nowSeconds = Math.round(now.getTime() / 1000); + + for( var key in all_props) { + if (all_props.hasOwnProperty(key)) { + if (key.indexOf('jst.warning') == 0) { + var time = Math.round(all_props[key] / 1000); + if ((nowSeconds - time) > 86400) { + // warning is older than a day, remove them + UserStorage.removeValue(key.replace('jst.', '')); + } + } + } + } +} // Node required code block module.exports = { @@ -381,6 +403,7 @@ module.exports = { formatTimeDiff: formatTimeDiff, formatWorkhours: formatWorkhours, trimChar: trimChar, - removeFromArray: removeFromArray + removeFromArray: removeFromArray, + clearOldWarnings_: clearOldWarnings_ }; // End of Node required code block From ee87982429687b603d830aa268046e2453ed856f Mon Sep 17 00:00:00 2001 From: LJay79 Date: Thu, 13 Jun 2019 15:02:34 +0200 Subject: [PATCH 09/19] BugFix; ReferenceError: httpResp is not defined --- src/controllers/jiraFieldMap.gs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/controllers/jiraFieldMap.gs b/src/controllers/jiraFieldMap.gs index acf00bc..34bdc30 100644 --- a/src/controllers/jiraFieldMap.gs +++ b/src/controllers/jiraFieldMap.gs @@ -19,12 +19,12 @@ function menuJiraFieldMap() { sidebarFieldMap_(fieldMap); }; - var error = function(msg) { + var error = function(msg, httpResp, status) { Browser.msgBox(msg, Browser.Buttons.OK); debug.error(msg + " httpResp: %s", httpResp); }; - IssueFields.getAllFields(ok,error); + IssueFields.getAllFields(ok, error); } From 6a4b00325ee30cbc2651daec85d7df842a5713ae Mon Sep 17 00:00:00 2001 From: LJay79 Date: Thu, 13 Jun 2019 16:23:16 +0200 Subject: [PATCH 10/19] #212; fix user/search api as behavior for getting ALL users did change recently --- src/controllers/timeReport.gs | 12 ++++++++++-- src/jiraApi.gs | 6 ++++-- src/userManager.gs | 24 +++++++++++++++++++----- 3 files changed, 33 insertions(+), 9 deletions(-) diff --git a/src/controllers/timeReport.gs b/src/controllers/timeReport.gs index a1a8d64..cae4d46 100644 --- a/src/controllers/timeReport.gs +++ b/src/controllers/timeReport.gs @@ -54,17 +54,25 @@ TimeReport_Controller_ = { message : null }; - result = findUser('%', true, maxResults).filter(function (user) { + result = findUser('', true, maxResults).filter(function (user) { return user.active !== false; }); // Jira Server Issue workaround (https://jira.atlassian.com/browse/JRASERVER-29069) if (result.length == 0 && getCfg_('server_type') == 'server') { - // try it again with custom query param apparently working like % + // try it again with custom query param apparently working like %,+,*,. result = findUser('.', true, maxResults).filter(function (user) { return user.active !== false; }); } + + // workaround 2 as the param val appears to change + if (result.length == 0) { + // try it again with custom query param apparently working like %,+,*,. + result = findUser('', true, maxResults, 'userSearchV2').filter(function (user) { + return user.active !== false; + }); + } result.sort(function (a, b) { // as we go over each user anyway, we extend it same time with our autocomplete value diff --git a/src/jiraApi.gs b/src/jiraApi.gs index 935711d..d0ad269 100644 --- a/src/jiraApi.gs +++ b/src/jiraApi.gs @@ -26,7 +26,8 @@ var restMethods = { 'search' : {method: '/search'}, // POST 'myFilters' : {method: '/filter/my', queryparams: {includeFavourites: 'true'}}, - 'userSearch' : {method: '/user/search', queryparams: {startAt:0, maxResults: 250, username:'%'}}, + 'userSearch' : {method: '/user/search', queryparams: {startAt:0, maxResults: 250, username:''}}, + 'userSearchV2' : {method: '/user/search', queryparams: {startAt:0, maxResults: 250, query:''}}, 'groupSearch' : {method: '/groups/picker', queryparams: {maxResults: 250, query: ''}}, 'field' : {method: '/field'} }, @@ -42,7 +43,7 @@ var restMethods = { // server api doesnt support /filter/my 'myFilters' : {method: '/filter/favourite', queryparams: {includeFavourites: 'true'}}, - 'userSearch' : {method: '/user/search', queryparams: {startAt:0, maxResults: 250, username:'%'}}, + 'userSearch' : {method: '/user/search', queryparams: {startAt:0, maxResults: 250, username:'.'}}, 'groupSearch' : {method: '/groups/picker', queryparams: {maxResults: 250, query: ''}}, 'field' : {method: '/field'} } @@ -172,6 +173,7 @@ function Request() { * @return {this} Allows chaining */ this.call = function(method, data, fetchArgs) { + console.info('data: %s', data); if( !hasSettings(false) ) { // check if server settings are available responseData = {errorMessages: ['Internal Error! No Jira Settings.']}; diff --git a/src/userManager.gs b/src/userManager.gs index 797909a..fbc5fbd 100644 --- a/src/userManager.gs +++ b/src/userManager.gs @@ -9,14 +9,16 @@ * @param usernameTerm {string} A query string used to search username, name or e-mail address * @param {boolean} minimal Def:FALSE; Returning data only includes minimal info (displayName,name[,active]) * @param {integer} maxResults Def:100; sets max user records fetched from Jira api + * @param {string} methodOverride Dev:null, workarround api method name ie: "userSearchV2" * @return {Array} */ -function findUser(usernameTerm, minimal, maxResults) { - var method = 'userSearch', - usernameTerm = usernameTerm || '%', +function findUser(usernameTerm, minimal, maxResults, methodOverride) { + var _method = 'userSearch', + method = methodOverride || _method, + usernameTerm = usernameTerm || '', minimal = minimal || false, maxResults = maxResults || 100, - users = []; + users = [], reqData = {}; /** * @desc OnSuccess handler @@ -55,7 +57,19 @@ function findUser(usernameTerm, minimal, maxResults) { var request = new Request(); - request.call(method, {username: usernameTerm, maxResults: maxResults}) + if (methodOverride) { + reqData = { + 'query': usernameTerm, + 'maxResults': maxResults + }; + } else { + reqData = { + 'username': usernameTerm, + 'maxResults': maxResults + }; + } + + request.call(method, reqData) .withSuccessHandler(ok) .withFailureHandler(error); From c2fd5d5c9cdcb2d708e522bc1158581fa38f6a0d Mon Sep 17 00:00:00 2001 From: LJay79 Date: Thu, 13 Jun 2019 16:49:44 +0200 Subject: [PATCH 11/19] #212; adding some references to documentation --- src/jiraApi.gs | 1 + src/jiraCommon.gs | 1 + 2 files changed, 2 insertions(+) diff --git a/src/jiraApi.gs b/src/jiraApi.gs index d0ad269..63e39c4 100644 --- a/src/jiraApi.gs +++ b/src/jiraApi.gs @@ -26,6 +26,7 @@ var restMethods = { 'search' : {method: '/search'}, // POST 'myFilters' : {method: '/filter/my', queryparams: {includeFavourites: 'true'}}, + // https://SITENAME.atlassian.net/rest/api/2/user/search?startAt=0&maxResults=1000&query= 'userSearch' : {method: '/user/search', queryparams: {startAt:0, maxResults: 250, username:''}}, 'userSearchV2' : {method: '/user/search', queryparams: {startAt:0, maxResults: 250, query:''}}, 'groupSearch' : {method: '/groups/picker', queryparams: {maxResults: 250, query: ''}}, diff --git a/src/jiraCommon.gs b/src/jiraCommon.gs index 306b8ad..5df6c9f 100644 --- a/src/jiraCommon.gs +++ b/src/jiraCommon.gs @@ -421,6 +421,7 @@ function unifyIssueAttrib(attrib, data) { case 'assignee': case 'creator': case 'reporter': + // see: https://ecosystem.atlassian.net/browse/ACJIRA-1510 if (data.fields[attrib] != null && data.fields[attrib] != undefined) { resp = { value: (UserStorage.getValue('dspuseras_name') == 1 ? data.fields[attrib].displayName : data.fields[attrib].name) || 'Unknown', From 49d72c97b3a3efd3f29d88af1decf07ea55bb434 Mon Sep 17 00:00:00 2001 From: LJay79 Date: Thu, 13 Jun 2019 17:06:38 +0200 Subject: [PATCH 12/19] remove debugging console.info --- src/jiraApi.gs | 1 - 1 file changed, 1 deletion(-) diff --git a/src/jiraApi.gs b/src/jiraApi.gs index 63e39c4..11963c1 100644 --- a/src/jiraApi.gs +++ b/src/jiraApi.gs @@ -174,7 +174,6 @@ function Request() { * @return {this} Allows chaining */ this.call = function(method, data, fetchArgs) { - console.info('data: %s', data); if( !hasSettings(false) ) { // check if server settings are available responseData = {errorMessages: ['Internal Error! No Jira Settings.']}; From 3faf11c2609a581f55d70f9b89b5ae09e59cea6e Mon Sep 17 00:00:00 2001 From: LJay79 Date: Thu, 13 Jun 2019 17:09:16 +0200 Subject: [PATCH 13/19] Fix vulnerabilities alert; update eslint-config-google to 0.13.0 and gulp-changed 4.0.0 --- package-lock.json | 114 ++++++++++++++-------------------------------- package.json | 4 +- 2 files changed, 37 insertions(+), 81 deletions(-) diff --git a/package-lock.json b/package-lock.json index 0accf05..e4b65fa 100644 --- a/package-lock.json +++ b/package-lock.json @@ -624,15 +624,6 @@ "ansi-wrap": "^0.1.0" } }, - "ansi-cyan": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/ansi-cyan/-/ansi-cyan-0.1.1.tgz", - "integrity": "sha1-U4rlKK+JgvKK4w2G8vF0VtJgmHM=", - "dev": true, - "requires": { - "ansi-wrap": "0.1.0" - } - }, "ansi-escapes": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", @@ -648,15 +639,6 @@ "ansi-wrap": "0.1.0" } }, - "ansi-red": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/ansi-red/-/ansi-red-0.1.1.tgz", - "integrity": "sha1-jGOPnRCAgAo1PJwoyKgcpHBdlGw=", - "dev": true, - "requires": { - "ansi-wrap": "0.1.0" - } - }, "ansi-regex": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", @@ -2283,9 +2265,9 @@ } }, "eslint-config-google": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/eslint-config-google/-/eslint-config-google-0.12.0.tgz", - "integrity": "sha512-SHDM3nIRCJBACjf8c/H6FvCwRmKbphESNl3gJFBNbw4KYDLCONB3ABYLXDGF+iaVP9XSTND/Q5/PuGoFkp4xbg==", + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/eslint-config-google/-/eslint-config-google-0.13.0.tgz", + "integrity": "sha512-ELgMdOIpn0CFdsQS+FuxO+Ttu4p+aLaXHv9wA9yVnzqlUGV7oN/eRRnJekk7TCur6Cu2FXX0fqfIXRBaM14lpQ==", "dev": true }, "eslint-scope": { @@ -3850,26 +3832,40 @@ } }, "gulp-changed": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/gulp-changed/-/gulp-changed-3.2.0.tgz", - "integrity": "sha1-zumGbZSeCRh1IlI9bGVWX24yvXw=", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/gulp-changed/-/gulp-changed-4.0.0.tgz", + "integrity": "sha512-BiPKI25QMP48dMChfqPjKpv1a7BCT1ATg6ob2oKzS8iFE/gepVwwz3PgK4vvIOiUrPmhb/tDnXptZNHQ5kpB3g==", "dev": true, "requires": { - "make-dir": "^1.1.0", - "pify": "^3.0.0", - "plugin-error": "^0.1.2", + "make-dir": "^3.0.0", + "plugin-error": "^1.0.1", "replace-ext": "^1.0.0", - "through2": "^2.0.0", + "through2": "^3.0.1", "touch": "^3.1.0" }, "dependencies": { "make-dir": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", - "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.0.0.tgz", + "integrity": "sha512-grNJDhb8b1Jm1qeqW5R/O63wUo4UXo2v2HMic6YT9i/HBlF93S8jkMgH7yugvY9ABDShH4VZMn8I+U8+fCNegw==", "dev": true, "requires": { - "pify": "^3.0.0" + "semver": "^6.0.0" + } + }, + "semver": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.1.1.tgz", + "integrity": "sha512-rWYq2e5iYW+fFe/oPPtYJxYgjBm8sC4rmoGdUOgBB7VnwKt6HrL793l2voH1UlsyYZpJ4g0wfjnTEO1s1NP2eQ==", + "dev": true + }, + "through2": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/through2/-/through2-3.0.1.tgz", + "integrity": "sha512-M96dvTalPT3YbYLaKaCuwu+j06D/8Jfib0o/PxbVt6Amhv3dUAtW6rTV1jPgJSBG83I/e04Y6xkVdVhSRhi0ww==", + "dev": true, + "requires": { + "readable-stream": "2 || 3" } } } @@ -6600,55 +6596,15 @@ } }, "plugin-error": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/plugin-error/-/plugin-error-0.1.2.tgz", - "integrity": "sha1-O5uzM1zPAPQl4HQ34ZJ2ln2kes4=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/plugin-error/-/plugin-error-1.0.1.tgz", + "integrity": "sha512-L1zP0dk7vGweZME2i+EeakvUNqSrdiI3F91TwEoYiGrAfUXmVv6fJIq4g82PAXxNsWOp0J7ZqQy/3Szz0ajTxA==", "dev": true, "requires": { - "ansi-cyan": "^0.1.1", - "ansi-red": "^0.1.1", - "arr-diff": "^1.0.1", - "arr-union": "^2.0.1", - "extend-shallow": "^1.1.2" - }, - "dependencies": { - "arr-diff": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-1.1.0.tgz", - "integrity": "sha1-aHwydYFjWI/vfeezb6vklesaOZo=", - "dev": true, - "requires": { - "arr-flatten": "^1.0.1", - "array-slice": "^0.2.3" - } - }, - "arr-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-2.1.0.tgz", - "integrity": "sha1-IPnqtexw9cfSFbEHexw5Fh0pLH0=", - "dev": true - }, - "array-slice": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-0.2.3.tgz", - "integrity": "sha1-3Tz7gO15c6dRF82sabC5nshhhvU=", - "dev": true - }, - "extend-shallow": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-1.1.4.tgz", - "integrity": "sha1-Gda/lN/AnXa6cR85uHLSH/TdkHE=", - "dev": true, - "requires": { - "kind-of": "^1.1.0" - } - }, - "kind-of": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-1.1.0.tgz", - "integrity": "sha1-FAo9LUGjbS78+pN3tiwk+ElaXEQ=", - "dev": true - } + "ansi-colors": "^1.0.1", + "arr-diff": "^4.0.0", + "arr-union": "^3.1.0", + "extend-shallow": "^3.0.2" } }, "pluralize": { diff --git a/package.json b/package.json index 76fdfec..c15f929 100644 --- a/package.json +++ b/package.json @@ -20,10 +20,10 @@ "@google/clasp": "^2.1.0", "del": "3.x", "directory-exists": "latest", - "eslint-config-google": "^0.12.0", + "eslint-config-google": "^0.13.0", "exec-sh": "0.3.x", "gulp": "^4.0.2", - "gulp-changed": "latest", + "gulp-changed": "^4.0.0", "gulp-eslint": "^5.0.0", "gulp-rename": "latest", "gulp-replace": "latest", From acaafe5e6d5aca309526437a471776f996d713fc Mon Sep 17 00:00:00 2001 From: LJay79 Date: Thu, 13 Jun 2019 17:37:16 +0200 Subject: [PATCH 14/19] rename getServerCfg to getAddonConfig_ and make it private --- src/controllers/settings.gs | 2 +- src/settings.gs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/controllers/settings.gs b/src/controllers/settings.gs index 0b27e54..7650202 100644 --- a/src/controllers/settings.gs +++ b/src/controllers/settings.gs @@ -39,7 +39,7 @@ Settings_Controller_ = { debug.log(this.name + '.sidebar()'); initDefaults(); - var sidebar = getDialog('views/sidebar/settings', getServerCfg()); + var sidebar = getDialog('views/sidebar/settings', getAddonConfig_()); debug.log('Processed: %s', sidebar); diff --git a/src/settings.gs b/src/settings.gs index 9947ef1..038ac6e 100644 --- a/src/settings.gs +++ b/src/settings.gs @@ -99,7 +99,7 @@ function initDefaults() { * @desc Helper for our Settings Dialogs HTML. * @return {object} */ -function getServerCfg() { +function getAddonConfig_() { return { buildNumber: BUILD, available: getCfg_('available'), From 4ea3b0e9de454eec26af1ab599f050cf6ff3c43d Mon Sep 17 00:00:00 2001 From: LJay79 Date: Fri, 14 Jun 2019 10:03:04 +0200 Subject: [PATCH 15/19] fix task when running gulp pull series --- gulpfile.js | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/gulpfile.js b/gulpfile.js index ba815d9..d7bc3ba 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -133,10 +133,14 @@ gulp.task('un-google', function (done) { * the src folder */ gulp.task('copy-changed-pulled-code', function (done) { - return gulp - .src(["dist/pull/**/*", "dist/pull/**/.*","!dist/pull/environmentConfiguration.gs"]) + var stream = gulp + .src(["dist/pull/**/*.gs", "dist/pull/**/.*","!dist/pull/environmentConfiguration.gs"]) .pipe(changed('src')) - .pipe(gulp.dest('src')) + .pipe(gulp.dest('src')); + + stream.on('end', function () { + done(); + }); }); gulp.task('lint', (done) => { From a01c613378b60169120346f1f6001220d65043b9 Mon Sep 17 00:00:00 2001 From: LJay79 Date: Fri, 14 Jun 2019 10:04:06 +0200 Subject: [PATCH 16/19] #218 adding new option to turn on/off system comment when updating jira issues --- assets/s3/styles.css | 3 ++ assets/s3/styles.min.css | 2 +- package.json | 2 +- src/controllers/settings.gs | 1 + src/jiraUpdateIssue.gs | 23 +++++++--- src/settings.gs | 6 ++- src/views/sidebar/settings.html | 13 +++++- test/jiraUpdateIssue.test.js | 75 +++++++++------------------------ 8 files changed, 59 insertions(+), 66 deletions(-) diff --git a/assets/s3/styles.css b/assets/s3/styles.css index f20c978..22539c7 100644 --- a/assets/s3/styles.css +++ b/assets/s3/styles.css @@ -531,6 +531,9 @@ dialog { .mdl-js fieldset.input-switch { padding-bottom: 50px; } +.mdl-js fieldset.input-switch > .mdl-switch { + width: calc(100% - 20px); +} .mdl-js div.block.actions { float: right; diff --git a/assets/s3/styles.min.css b/assets/s3/styles.min.css index 3de798c..0932fd0 100644 --- a/assets/s3/styles.min.css +++ b/assets/s3/styles.min.css @@ -9,4 +9,4 @@ * @license GNU GENERAL PUBLIC LICENSE v3. * @copyright 2017-2019, Jens Rosemeier. All rights reserved. * @link https://github.com/ljay79/jira-tools - */dialog{position:absolute;left:0;right:0;width:-moz-fit-content;width:-webkit-fit-content;width:fit-content;height:-moz-fit-content;height:-webkit-fit-content;height:fit-content;margin:auto;border:solid;padding:1em;background:#fff;color:#000;display:block}dialog:not([open]){display:none}dialog+.backdrop{left:0;background:rgba(0,0,0,.1)}._dialog_overlay{left:0}dialog.fixed{position:fixed;top:50%;transform:translate(0,-50%)}:root{--docs-material-font-family:Roboto,Helvetica,Arial,sans-serif;--docs-material-header-font-family:var(--docs-material-font-family);--docs-material-font-weight-normal:400;--docs-material-font-weight-bold:500;--docs-material-font-size-normal:14px;--docs-material-font-size-9:9px;--docs-material-font-size-11:11px;--docs-material-font-size-12:12px;--docs-material-font-size-22:22px}body,html{font-family:Roboto,Helvetica,Arial,sans-serif;font-size:14px;color:#000;font-weight:400}fieldset{margin:0;padding-block-start:.35em;padding-inline-start:.75em;padding-inline-end:.75em;padding-block-end:.625em;border:1px solid #ebebeb}fieldset legend{font-weight:700;padding:4px 8px 0}.tip-footer a,.tip-footer a:active,.tip-footer a:visited,a,a.feedback-link,a.feedback-link:active,a.feedback-link:visited,a.whatsnew,a.whatsnew:active,a.whatsnew:visited,a:active,a:visited{font-family:var(--docs-material-header-font-family,Roboto,Helvetica,Arial,sans-serif);font-weight:var(--docs-material-font-weight-bold,500);letter-spacing:.25px;color:#188038;display:inline-block}fieldset.block p{margin-top:0}textarea{width:100%;height:100px}a,a:active,a:visited{line-height:16px}.tip-footer a,.tip-footer a:active,.tip-footer a:visited{background-image:none;border:1px solid transparent!important;border-radius:4px;box-shadow:none;box-sizing:border-box;font-size:14px;height:36px;line-height:16px;padding:9px 24px 11px}a.feedback-link,a.feedback-link:active,a.feedback-link:visited,a.whatsnew,a.whatsnew:active,a.whatsnew:visited{border-radius:4px;font-size:14px;height:auto;line-height:normal;padding:0}fieldset p a,fieldset p a:active,fieldset p a:visited{font-size:inherit;height:auto;padding:inherit}.loader,.loader:after{border-radius:50%;width:5em;height:5em}.loader{margin:60px auto;font-size:10px;position:relative;text-indent:-9999em;border-top:.7em solid rgba(24,158,26,.2);border-right:.7em solid rgba(24,158,26,.2);border-bottom:.7em solid rgba(24,158,26,.2);border-left:.7em solid #189e1a;-webkit-transform:translateZ(0);-ms-transform:translateZ(0);transform:translateZ(0);-webkit-animation:load8 1.1s infinite linear;animation:load8 1.1s infinite linear}.error-container{display:none;margin-bottom:16px;padding:5px 10px;text-align:center;color:#fff}.is-loading{animation:blink .5s infinite}@keyframes blink{0%,100%{opacity:1}50%{opacity:0}}@-webkit-keyframes load8{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes load8{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.sidebar{padding:0}.branding-below{bottom:46px;top:0}.sidebar.bottom{font-size:12px;padding:12px}.sidebar.bottom a.feedback-link,.sidebar.bottom a.whatsnew{float:right}#box-tip{margin:10px;padding:15px;background-color:#e6f4ea;border-radius:8px;color:#188038}#box-tip h4{color:#188038;font-size:14px;font-weight:500;margin:0 0 10px}#box-tip p{color:#188038;font-size:12px;letter-spacing:.3px;line-height:normal}#box-tip .tip-footer{display:flex;justify-content:flex-end}.create-box{border-bottom:1px solid grey;padding:20px;text-align:center}.issuetable{font-size:13px;font-weight:400;border-bottom:1px solid #ddd;cursor:default;padding:10px 20px;position:relative}.issuetable .name,.tooltiptext h4{font-size:14px;font-weight:500}.issuetable .actions{margin-top:10px}.issuetable .actions .action{opacity:.5}.issuetable .schedule-setup{border:1px solid grey;padding:10px;margin:10px 0;background-color:#f0f8ff;display:none;font-style:italic}form>div.block{padding:10px}.block+.block{margin-top:20px}.block2x2{width:43%}.block2x2.left{margin-right:20px;float:left}fieldset .block2x2{display:inline-block;width:46%}.material-icons.orange600{color:#FB8C00}.tooltip{position:absolute;top:10px;right:20px;z-index:2}.tooltip .tooltiptext{visibility:hidden;width:210px;padding:10px;background-color:#e6f4ea;border-radius:8px;color:#188038;position:absolute;z-index:1;opacity:0;transition:opacity .3s}.tooltiptext h4{color:#188038;margin:0;line-height:28px}.tooltiptext p{color:#188038;font-size:12px;letter-spacing:.3px;line-height:normal;margin:0}.mdl-js legend,.mdl-radio__label,.mdl-switch__label,.mdl-textfield,.mdl-textfield__input,.mdl-textfield__label{font-size:14px}.tooltiptext a{height:auto}.tooltip-top{bottom:60%;left:0;margin-left:0}.tooltip-bottom{top:75%;right:0;margin-left:0}.tooltip:hover .tooltiptext{visibility:visible;opacity:1}.message-container{display:none;padding:5px 10px;text-align:center;color:#fff}dialog{z-index:9000;border:1px solid rgba(0,0,0,.3);box-shadow:0 3px 7px rgba(0,0,0,.3)}.mdl-js .mdl-dialog{width:90%}.dialog-background{background-color:rgba(0,0,0,.1)}.mdl-tabs__tab-bar.numTabs2>a{width:50%}.mdl-tabs__tab-barnumTabs3>a{width:33%}.mdl-tabs__tab .mdl-tabs__ripple-container .mdl-ripple{background:#5f6368}.mdl-tabs.is-upgraded .mdl-tabs__tab.is-active{color:#188038}.mdl-tabs.is-upgraded .mdl-tabs__tab.is-active:after{background:#188038}.mdl-tabs__tab-bar>a,.mdl-tabs__tab-bar>a:active,.mdl-tabs__tab-bar>a:hover,.mdl-tabs__tab-bar>a:visited{line-height:48px;text-decoration:inherit}.mdl-textfield{width:100%;padding:10px 0 0}.mdl-textfield__label{top:14px;margin:10px 0}.mdl-textfield__label:after{bottom:0}.mdl-textfield__input{color:#3c4043;width:94%;margin:10px 0;padding:8px;border:1px solid rgba(0,0,0,.12)}.mdl-textfield__input:-ms-input-placeholder,.mdl-textfield__input:placeholder{color:#c5c5c5}.mdl-textfield.has-placeholder .mdl-textfield__label,.mdl-textfield.is-dirty .mdl-textfield__label{visibility:visible;top:-10px;color:#3c4043;letter-spacing:.8px}.mdl-js fieldset{padding:10px;border:none}.mdl-js legend{color:#3c4043;font-weight:500;line-height:20px;padding:10px 10px 0 0}.mdl-js fieldset div.block p{font-size:13px}.mdl-js fieldset.input-switch{padding-bottom:50px}.mdl-js div.block.actions{float:right}.mdl-tabs__panel #box-tip{margin-top:40px} \ No newline at end of file + */dialog{position:absolute;left:0;right:0;width:-moz-fit-content;width:-webkit-fit-content;width:fit-content;height:-moz-fit-content;height:-webkit-fit-content;height:fit-content;margin:auto;border:solid;padding:1em;background:#fff;color:#000;display:block}dialog:not([open]){display:none}dialog+.backdrop{left:0;background:rgba(0,0,0,.1)}._dialog_overlay{left:0}dialog.fixed{position:fixed;top:50%;transform:translate(0,-50%)}:root{--docs-material-font-family:Roboto,Helvetica,Arial,sans-serif;--docs-material-header-font-family:var(--docs-material-font-family);--docs-material-font-weight-normal:400;--docs-material-font-weight-bold:500;--docs-material-font-size-normal:14px;--docs-material-font-size-9:9px;--docs-material-font-size-11:11px;--docs-material-font-size-12:12px;--docs-material-font-size-22:22px}body,html{font-family:Roboto,Helvetica,Arial,sans-serif;font-size:14px;color:#000;font-weight:400}fieldset{margin:0;padding-block-start:.35em;padding-inline-start:.75em;padding-inline-end:.75em;padding-block-end:.625em;border:1px solid #ebebeb}fieldset legend{font-weight:700;padding:4px 8px 0}.tip-footer a,.tip-footer a:active,.tip-footer a:visited,a,a.feedback-link,a.feedback-link:active,a.feedback-link:visited,a.whatsnew,a.whatsnew:active,a.whatsnew:visited,a:active,a:visited{font-family:var(--docs-material-header-font-family,Roboto,Helvetica,Arial,sans-serif);font-weight:var(--docs-material-font-weight-bold,500);letter-spacing:.25px;color:#188038;display:inline-block}fieldset.block p{margin-top:0}textarea{width:100%;height:100px}a,a:active,a:visited{line-height:16px}.tip-footer a,.tip-footer a:active,.tip-footer a:visited{background-image:none;border:1px solid transparent!important;border-radius:4px;box-shadow:none;box-sizing:border-box;font-size:14px;height:36px;line-height:16px;padding:9px 24px 11px}a.feedback-link,a.feedback-link:active,a.feedback-link:visited,a.whatsnew,a.whatsnew:active,a.whatsnew:visited{border-radius:4px;font-size:14px;height:auto;line-height:normal;padding:0}fieldset p a,fieldset p a:active,fieldset p a:visited{font-size:inherit;height:auto;padding:inherit}.loader,.loader:after{border-radius:50%;width:5em;height:5em}.loader{margin:60px auto;font-size:10px;position:relative;text-indent:-9999em;border-top:.7em solid rgba(24,158,26,.2);border-right:.7em solid rgba(24,158,26,.2);border-bottom:.7em solid rgba(24,158,26,.2);border-left:.7em solid #189e1a;-webkit-transform:translateZ(0);-ms-transform:translateZ(0);transform:translateZ(0);-webkit-animation:load8 1.1s infinite linear;animation:load8 1.1s infinite linear}.error-container{display:none;margin-bottom:16px;padding:5px 10px;text-align:center;color:#fff}.is-loading{animation:blink .5s infinite}@keyframes blink{0%,100%{opacity:1}50%{opacity:0}}@-webkit-keyframes load8{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes load8{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.sidebar{padding:0}.branding-below{bottom:46px;top:0}.sidebar.bottom{font-size:12px;padding:12px}.sidebar.bottom a.feedback-link,.sidebar.bottom a.whatsnew{float:right}#box-tip{margin:10px;padding:15px;background-color:#e6f4ea;border-radius:8px;color:#188038}#box-tip h4{color:#188038;font-size:14px;font-weight:500;margin:0 0 10px}#box-tip p{color:#188038;font-size:12px;letter-spacing:.3px;line-height:normal}#box-tip .tip-footer{display:flex;justify-content:flex-end}.create-box{border-bottom:1px solid grey;padding:20px;text-align:center}.issuetable{font-size:13px;font-weight:400;border-bottom:1px solid #ddd;cursor:default;padding:10px 20px;position:relative}.issuetable .name,.tooltiptext h4{font-size:14px;font-weight:500}.issuetable .actions{margin-top:10px}.issuetable .actions .action{opacity:.5}.issuetable .schedule-setup{border:1px solid grey;padding:10px;margin:10px 0;background-color:#f0f8ff;display:none;font-style:italic}form>div.block{padding:10px}.block+.block{margin-top:20px}.block2x2{width:43%}.block2x2.left{margin-right:20px;float:left}fieldset .block2x2{display:inline-block;width:46%}.material-icons.orange600{color:#FB8C00}.tooltip{position:absolute;top:10px;right:20px;z-index:2}.tooltip .tooltiptext{visibility:hidden;width:210px;padding:10px;background-color:#e6f4ea;border-radius:8px;color:#188038;position:absolute;z-index:1;opacity:0;transition:opacity .3s}.tooltiptext h4{color:#188038;margin:0;line-height:28px}.tooltiptext p{color:#188038;font-size:12px;letter-spacing:.3px;line-height:normal;margin:0}.mdl-js legend,.mdl-radio__label,.mdl-switch__label,.mdl-textfield,.mdl-textfield__input,.mdl-textfield__label{font-size:14px}.tooltiptext a{height:auto}.tooltip-top{bottom:60%;left:0;margin-left:0}.tooltip-bottom{top:75%;right:0;margin-left:0}.tooltip:hover .tooltiptext{visibility:visible;opacity:1}.message-container{display:none;padding:5px 10px;text-align:center;color:#fff}dialog{z-index:9000;border:1px solid rgba(0,0,0,.3);box-shadow:0 3px 7px rgba(0,0,0,.3)}.mdl-js .mdl-dialog{width:90%}.dialog-background{background-color:rgba(0,0,0,.1)}.mdl-tabs__tab-bar.numTabs2>a{width:50%}.mdl-tabs__tab-barnumTabs3>a{width:33%}.mdl-tabs__tab .mdl-tabs__ripple-container .mdl-ripple{background:#5f6368}.mdl-tabs.is-upgraded .mdl-tabs__tab.is-active{color:#188038}.mdl-tabs.is-upgraded .mdl-tabs__tab.is-active:after{background:#188038}.mdl-tabs__tab-bar>a,.mdl-tabs__tab-bar>a:active,.mdl-tabs__tab-bar>a:hover,.mdl-tabs__tab-bar>a:visited{line-height:48px;text-decoration:inherit}.mdl-textfield{width:100%;padding:10px 0 0}.mdl-textfield__label{top:14px;margin:10px 0}.mdl-textfield__label:after{bottom:0}.mdl-textfield__input{color:#3c4043;width:94%;margin:10px 0;padding:8px;border:1px solid rgba(0,0,0,.12)}.mdl-textfield__input:-ms-input-placeholder,.mdl-textfield__input:placeholder{color:#c5c5c5}.mdl-textfield.has-placeholder .mdl-textfield__label,.mdl-textfield.is-dirty .mdl-textfield__label{visibility:visible;top:-10px;color:#3c4043;letter-spacing:.8px}.mdl-js fieldset{padding:10px;border:none}.mdl-js legend{color:#3c4043;font-weight:500;line-height:20px;padding:10px 10px 0 0}.mdl-js fieldset div.block p{font-size:13px}.mdl-js fieldset.input-switch{padding-bottom:50px}.mdl-js fieldset.input-switch>.mdl-switch{width:calc(100% - 20px)}.mdl-js div.block.actions{float:right}.mdl-tabs__panel #box-tip{margin-top:40px} \ No newline at end of file diff --git a/package.json b/package.json index c15f929..46bd2f8 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "jira-sheet-tools", - "version": "1.1.0", + "version": "1.4.0", "description": "Work with JIRA within Google Sheets", "author": "Jens Rosemeier ", "license": "GPL-3.0-or-later", diff --git a/src/controllers/settings.gs b/src/controllers/settings.gs index 7650202..5a31926 100644 --- a/src/controllers/settings.gs +++ b/src/controllers/settings.gs @@ -85,6 +85,7 @@ Settings_Controller_ = { UserStorage.setValue('workhours', jsonFormData.ts_workhours); UserStorage.setValue('dspuseras_name', parseInt(jsonFormData.ts_dspuseras_name)); UserStorage.setValue('dspdurationas', jsonFormData.ts_dspdurationas); + UserStorage.setValue('issue_update_comment', (jsonFormData.issue_update_comment == 'on') ? 1 : 0); return {status: true, message: 'Options successfully saved.'}; } diff --git a/src/jiraUpdateIssue.gs b/src/jiraUpdateIssue.gs index 115845a..0684412 100644 --- a/src/jiraUpdateIssue.gs +++ b/src/jiraUpdateIssue.gs @@ -1,10 +1,11 @@ // Node required code block const Request = require('../src/jiraApi.gs'); +const UserStorage = require('src/models/gas/UserStorage.gs'); const IssueFields = require('src/models/jira/IssueFields.gs'); const unifyIssueAttrib = require('./jiraCommon.gs').unifyIssueAttrib; -const debug = require("./debug.gs").debug; -const extend = require("./jsLib.gs").extend; -const splitCommaList_ = require("./jsLib.gs").splitCommaList_; +const debug = require('./debug.gs').debug; +const extend = require('./jsLib.gs').extend; +const splitCommaList_ = require('./jsLib.gs').splitCommaList_; const IssueTransitioner = require('./jiraIssueStatusUpdates/issueTransitioner.gs'); // End of Node required code block @@ -225,6 +226,7 @@ function getMatchingJiraFields(headerRow) { */ function updateIssueinJira(issueData, callback) { debug.log("updateIssueinJira called issueData=" + issueData); + var method = "issueUpdate"; var request = new Request(); var ok = function (responseData, httpResponse, statusCode) { @@ -251,29 +253,36 @@ function updateIssueinJira(issueData, callback) { var message = jiraErrorMessage; callback(issueData.key, false, message); } - }; + var payload = { issueIdOrKey: issueData.key, - update: { + update: {} + }; + + if (1 == UserStorage.getValue('issue_update_comment')) { + payload.update = { comment: [{ add: { body: "Updated by [Project Aid for Jira|https://github.com/ljay79/jira-tools]" } }] - } + }; } + if (issueData.fields != null) { payload.fields = issueData.fields; } + if (issueData.update != null) { extend(payload.update, issueData.update); } + request.call(method, payload); request.withSuccessHandler(ok); request.withFailureHandler(error); - return (request.getResponse().success === true); + return (request.getResponse().success === true); } // Node required code block diff --git a/src/settings.gs b/src/settings.gs index 038ac6e..a412486 100644 --- a/src/settings.gs +++ b/src/settings.gs @@ -86,6 +86,9 @@ function initDefaults() { if (null == UserStorage.getValue('dspdurationas')) UserStorage.setValue('dspdurationas', "w"); + if (null == UserStorage.getValue('issue_update_comment')) + UserStorage.setValue('issue_update_comment', 1); + // Jira onDemand or Server var server_type = getCfg_('server_type'); if (server_type == null) server_type = 'onDemand'; @@ -109,7 +112,8 @@ function getAddonConfig_() { custom_fn_enabled: getCfg_('custom_fn_enabled') || 0, workhours: UserStorage.getValue('workhours'), dspuseras_name: UserStorage.getValue('dspuseras_name'), - dspdurationas: UserStorage.getValue('dspdurationas') + dspdurationas: UserStorage.getValue('dspdurationas'), + issue_update_comment: UserStorage.getValue('issue_update_comment') || 0 }; } diff --git a/src/views/sidebar/settings.html b/src/views/sidebar/settings.html index effe7ad..39b1e0a 100644 --- a/src/views/sidebar/settings.html +++ b/src/views/sidebar/settings.html @@ -99,8 +99,7 @@

Explore Tips

Custom Functions -
+ +
+ Add comment on update + +
+
diff --git a/test/jiraUpdateIssue.test.js b/test/jiraUpdateIssue.test.js index e7bc300..96dfb45 100644 --- a/test/jiraUpdateIssue.test.js +++ b/test/jiraUpdateIssue.test.js @@ -1,9 +1,10 @@ - -jiraApiMock = require('./mocks/mockJiraApi.js'); -IssueFields = require('src/models/jira/IssueFields.gs'); +var jiraApiMock = require('./mocks/mockJiraApi.js'); +const UserStorage = require('src/models/gas/UserStorage.gs'); +const IssueFields = require('src/models/jira/IssueFields.gs'); beforeAll(() => { - //set the cached field list + UserStorage.setValue('issue_update_comment', 1); + // set the cached field list IssueFields.setAllFields_(jiraFieldList); }); @@ -142,13 +143,9 @@ const jiraFieldList = [ name: "Priority", custom: false } -] - - +]; describe('processing list of Jira Issues with status transition', () => { - - const updateJiraIssues = require('../src/jiraUpdateIssue.gs').updateJiraIssues; // mock the transitioning code @@ -187,7 +184,6 @@ describe('processing list of Jira Issues with status transition', () => { }); test("only the status is changed but a comment should still be added to the issue", () => { - jiraApiMock.setAllResponsesSuccesfull(204); var result = updateJiraIssues({ status: 1, Key: 0 }, [["PBI-1", "DONE"]]); expect(mockTransitionFunction.mock.calls.length).toBe(2); @@ -206,7 +202,6 @@ describe('processing list of Jira Issues with status transition', () => { }); test("Error handling", () => { - mockTransitionFunction.mockClear(); mockTransitionFunction.mockImplementationOnce(function () { return { success: false, errors: ["an error"] }; @@ -231,8 +226,8 @@ describe('processing list of Jira Issues with status transition', () => { }); describe('processing list of Jira Issues', () => { - const updateJiraIssues = require('../src/jiraUpdateIssue.gs').updateJiraIssues; + test("no records to update", () => { var result = updateJiraIssues({}, []); expect(result.rowsUpdated).toBe(0); @@ -240,8 +235,6 @@ describe('processing list of Jira Issues', () => { expect(result.finished).toBe(true); expect(result.message).not.toBeNull(); - - var result = updateJiraIssues({ columnA: 1, Key: 0 }, []); expect(result.rowsUpdated).toBe(0); expect(result.status).toBe(false); @@ -273,7 +266,6 @@ describe('processing list of Jira Issues', () => { expect(jiraApiMock.call.mock.calls[0][0]).toBe("issueUpdate"); expect(jiraApiMock.call.mock.calls[0][1].fields["priority"]).not.toBeDefined(); - var result = updateJiraIssues({ columnA: 2, priority: 1, Key: 0 }, [["PBI-1", "P1", "column A value"]]); expect(result.message).not.toBeNull(); expect(result.rowsUpdated).toBe(1); @@ -285,7 +277,6 @@ describe('processing list of Jira Issues', () => { expect(jiraApiMock.call.mock.calls[1][1].fields["priority"]).toEqual({ name: "P1" }); }); - test("Update two issues", () => { jiraApiMock.setAllResponsesSuccesfull(204); var result = updateJiraIssues({ columnA: 1, Key: 0 }, [["PBI-1", "column A value"], ["PBI-2", "column A value 2"]]); @@ -297,7 +288,6 @@ describe('processing list of Jira Issues', () => { expect(jiraApiMock.call.mock.calls.length).toBe(result.rowsUpdated); }); - test("Update multiple issues where two have no valid JIRA Issue Key", () => { jiraApiMock.setAllResponsesSuccesfull(204); var result = updateJiraIssues({ columnA: 1, Key: 0 }, [[null, "column A value"], ["", "column A value"], ["PBI-2", "column A value 2"]]); @@ -344,10 +334,8 @@ describe('processing list of Jira Issues', () => { expect(result.finished).toBe(true); expect(jiraApiMock.call.mock.calls.length).toBe(2); }); - }); - describe("Packing data from a spreadsheet row ready for Jira API", () => { const packageRowForUpdate = require('../src/jiraUpdateIssue.gs').packageRowForUpdate; @@ -386,7 +374,6 @@ describe("Packing data from a spreadsheet row ready for Jira API", () => { expect(Object.keys(result.fields).length).toBe(1); expect(result.update).not.toBeDefined(); expect(result.fields.timetracking).not.toBeDefined(); - }); test("Null value for a key", () => { @@ -398,12 +385,9 @@ describe("Packing data from a spreadsheet row ready for Jira API", () => { expect(result).not.toBeNull(); expect(result.key).toBeNull(); - var result = packageRowForUpdate({ columnA: 1, columnB: 3 }, [null, "column A value", "should be ignored", "column B value"]); expect(result).not.toBeNull(); expect(result.key).toBeNull(); - - }); test("Put time estimates in format for JIRA", () => { @@ -411,10 +395,10 @@ describe("Packing data from a spreadsheet row ready for Jira API", () => { { "Original Estimate": 1, Key: 0 }, ["PBI-1", "1d",] ); - /*schemaType: "string", - key: "timeoriginalestimate", - name: "Original Estimate", - custom: false*/ + /* + * schemaType: "string", key: "timeoriginalestimate", name: "Original + * Estimate", custom: false + */ expect(result.key).toBe("PBI-1"); expect(result.fields).toBeDefined(); expect(result.fields.timeoriginalestimate).not.toBeDefined(); @@ -422,20 +406,16 @@ describe("Packing data from a spreadsheet row ready for Jira API", () => { expect(result.fields.timetracking.originalEstimate).toBeDefined(); expect(result.fields.timetracking.originalEstimate).toBe("1d"); /* - "timetracking": { - "originalEstimate": "10", - "remainingEstimate": "5" - }, - */ - + * "timetracking": { "originalEstimate": "10", "remainingEstimate": "5" }, + */ var result = packageRowForUpdate( { "Original Estimate": 1, Key: 0 }, ["PBI-1", "",] ); - /*schemaType: "string", - key: "timeoriginalestimate", - name: "Original Estimate", - custom: false*/ + /* + * schemaType: "string", key: "timeoriginalestimate", name: "Original + * Estimate", custom: false + */ expect(result.key).toBe("PBI-1"); expect(result.fields).toBeDefined(); expect(result.fields.timeoriginalestimate).not.toBeDefined(); @@ -443,7 +423,6 @@ describe("Packing data from a spreadsheet row ready for Jira API", () => { expect(result.fields.timetracking.originalEstimate).toBeDefined(); expect(result.fields.timetracking.originalEstimate).toBeNull(); - var result = packageRowForUpdate( { "Remaining Estimate": 1, Key: 0 }, ["PBI-1", "1d",] @@ -469,7 +448,6 @@ describe("Packing data from a spreadsheet row ready for Jira API", () => { expect(result.fields.timetracking.originalEstimate).toBe("2d"); }); - test("packing a row with Components and Fix Versions in the payload", () => { var result = packageRowForUpdate({ "My custom field": 1, Key: 0, "Components": 2 }, ["PBI-1", "column A value", "x,y,z"]); expect(result).not.toBeNull(); @@ -482,7 +460,6 @@ describe("Packing data from a spreadsheet row ready for Jira API", () => { expect(result.update.components[0]).toEqual({ "set": [{ "name": "x" }, { "name": "y" }, { "name": "z" }] }); expect(Object.keys(result.fields).length).toBe(1); - var result = packageRowForUpdate({ "My custom field": 1, Key: 0, "Components": 2 }, ["PBI-1", "column A value", ""]); expect(result).not.toBeNull(); expect(result.key).toBe("PBI-1"); @@ -495,9 +472,7 @@ describe("Packing data from a spreadsheet row ready for Jira API", () => { expect(Object.keys(result.fields).length).toBe(1); }); } -) - - +); test("Posting Individual Issues to Jira - Not Found Error", () => { @@ -536,7 +511,6 @@ test("Posting Individual Issues to Jira - Not Found Error", () => { expect(mockCallback.mock.calls[0][2]).toBe("PBI-1 Not found"); }); - test("Posting Individual Issues to Jira - Error with data passed to field", () => { jiraApiMock.setAllResponsesFail(400, { @@ -600,9 +574,9 @@ describe("Converting data from spreadsheet cells to Jira format - field by field const formatFieldValueForJira = require('../src/jiraUpdateIssue.gs').formatFieldValueForJira; var jiraFieldToUse = jiraFieldList[0]; expect(jiraFieldToUse.schemaType).toBe("string"); // just in case the test data gets re-ordered - expect(formatFieldValueForJira(jiraFieldToUse, "PB-1")).toBe("PB-1"); // just pass it a string - expect(formatFieldValueForJira(jiraFieldToUse, "1223")).toBe("1223"); // just pass it a string - expect(formatFieldValueForJira(jiraFieldToUse, "")).toBe(""); // just pass it a string + expect(formatFieldValueForJira(jiraFieldToUse, "PB-1")).toBe("PB-1"); // just pass it a string + expect(formatFieldValueForJira(jiraFieldToUse, "1223")).toBe("1223"); // just pass it a string + expect(formatFieldValueForJira(jiraFieldToUse, "")).toBe(""); // just pass it a string }) test("Format empty number fields for JIRA", () => { @@ -615,8 +589,6 @@ describe("Converting data from spreadsheet cells to Jira format - field by field expect(formatFieldValueForJira(jiraFieldToUse, "")).toBe(null); // null required to clear a number field }) - - test("Date Time fields for JIRA", () => { const formatFieldValueForJira = require('../src/jiraUpdateIssue.gs').formatFieldValueForJira; var jiraFieldToUse = jiraFieldList[16]; @@ -649,7 +621,6 @@ describe("Converting data from spreadsheet cells to Jira format - field by field expect(formatFieldValueForJira(jiraFieldToUse, ",GNS-Metapod, Test")).toEqual(["GNS-Metapod", "Test"]); expect(formatFieldValueForJira(jiraFieldToUse, ",GNS-Metapod,, Test")).toEqual(["GNS-Metapod", "Test"]); - // bug https://github.com/ljay79/jira-tools/issues/173 var fieldList = [{ key: 'customfield_11121', @@ -663,7 +634,6 @@ describe("Converting data from spreadsheet cells to Jira format - field by field expect(formatFieldValueForJira(fieldList[0], "GNS-Metapod")).toEqual(["GNS-Metapod"]); expect(formatFieldValueForJira(fieldList[0], "GNS-Metapod,Test")).toEqual(["GNS-Metapod", "Test"]); expect(formatFieldValueForJira(fieldList[0], "GNS-Metapod, Test")).toEqual(["GNS-Metapod", "Test"]); - }); test("Sending users to JIRA", () => { @@ -672,10 +642,8 @@ describe("Converting data from spreadsheet cells to Jira format - field by field expect(jiraFieldToUse.schemaType).toBe("user"); // just in case the test data gets re-ordered expect(formatFieldValueForJira(jiraFieldToUse, "")).toBe(null); expect(formatFieldValueForJira(jiraFieldToUse, "plemon")).toEqual({ name: "plemon" }); - }); - test("Sending prioirty values to JIRA", () => { const formatFieldValueForJira = require('../src/jiraUpdateIssue.gs').formatFieldValueForJira; var jiraFieldToUse = jiraFieldList[18]; @@ -685,7 +653,6 @@ describe("Converting data from spreadsheet cells to Jira format - field by field }); }); - test("Including fields and/or items in the update ", () => { const updateIssueinJira = require('../src/jiraUpdateIssue.gs').updateIssueinJira; const mockCallback = jest.fn((key, status, message) => { key }); From 5f0601c6e6a210f8ac5722d9d3b7ed72f518ad8b Mon Sep 17 00:00:00 2001 From: LJay79 Date: Fri, 14 Jun 2019 12:22:33 +0200 Subject: [PATCH 17/19] gulp cpy task missed .json and .html files --- gulpfile.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gulpfile.js b/gulpfile.js index d7bc3ba..c1a1fa0 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -134,7 +134,7 @@ gulp.task('un-google', function (done) { */ gulp.task('copy-changed-pulled-code', function (done) { var stream = gulp - .src(["dist/pull/**/*.gs", "dist/pull/**/.*","!dist/pull/environmentConfiguration.gs"]) + .src(["dist/pull/**/*.html", "dist/pull/**/*.gs", "dist/pull/**/*.json", "dist/pull/**/.*","!dist/pull/environmentConfiguration.gs"]) .pipe(changed('src')) .pipe(gulp.dest('src')); From 1035a23aec37c36626f19a5c5494998642e05b6d Mon Sep 17 00:00:00 2001 From: LJay79 Date: Fri, 14 Jun 2019 12:26:30 +0200 Subject: [PATCH 18/19] apply a few UI/UX tweaks --- src/Code.gs | 14 +++++------ src/controllers/insertIssueTable.gs | 1 + src/controllers/updateJiraIssues.gs | 2 +- src/dialogAbout.html | 8 +++--- src/jiraTicketInfo.gs | 2 +- src/views/dialogs/insertIssueFromFilter.html | 4 +-- src/views/dialogs/updateJiraIssues.html | 26 +++++++++++++++----- src/views/dialogs/whatsNew.html | 17 ++++++++++--- src/views/sidebar/refreshTableSchedule.html | 4 +-- 9 files changed, 52 insertions(+), 26 deletions(-) diff --git a/src/Code.gs b/src/Code.gs index 4909d8e..6e7e493 100644 --- a/src/Code.gs +++ b/src/Code.gs @@ -10,7 +10,7 @@ * @OnlyCurrentDoc Limits the script to only accessing the current spreadsheet. */ -var BUILD = '1.3.6'; +var BUILD = '1.4.0'; /** * Add a nice menu option for the users. @@ -41,19 +41,19 @@ function onInstall(e) { function addMenu() { var menu = SpreadsheetApp.getUi().createAddonMenu() .addItem('Whats New?', 'menuWhatsNew') - .addItem('List issues from filter', 'menuInsertIssueFromFilter') - .addItem('Create time report', 'menuCreateTimeReport') .addSeparator() + .addItem('Create IssueTable from filter', 'menuInsertIssueFromFilter') .addItem('Refresh IssueTable', 'menuRefreshIssueTable') + .addItem('Create time report', 'menuCreateTimeReport') + .addItem('Update Jira Issues', 'menuUpdateJiraIssues') + .addSeparator() .addItem('Update formulas in active sheet', 'recalcCustomFunctions') - .addItem('Update issue key status "KEY-123 [Done]"', 'dialogRefreshTicketsIds') - .addItem('Jira field map', 'menuJiraFieldMap') + .addItem('Update issue key status...', 'dialogRefreshTicketsIds') + .addItem('Show Jira field map', 'menuJiraFieldMap') .addSeparator() .addItem('Settings', 'menuSettings') .addItem('Configure custom fields', 'menuCustomFields') .addItem('About', 'dialogAbout') - .addSeparator() - .addItem('Update Jira Issues (BETA)', 'menuUpdateJiraIssues') .addToUi(); } diff --git a/src/controllers/insertIssueTable.gs b/src/controllers/insertIssueTable.gs index f0ac03c..1b13e1e 100644 --- a/src/controllers/insertIssueTable.gs +++ b/src/controllers/insertIssueTable.gs @@ -6,6 +6,7 @@ * @desc Wrapper: Dialog to choose issues filter */ function menuInsertIssueFromFilter() { + RefreshIssueTable_Controller_.sidebar(); InsertIssueTable_Controller_.dialogOpen(); } diff --git a/src/controllers/updateJiraIssues.gs b/src/controllers/updateJiraIssues.gs index 338efa1..5e4d91e 100644 --- a/src/controllers/updateJiraIssues.gs +++ b/src/controllers/updateJiraIssues.gs @@ -32,7 +32,7 @@ function menuUpdateJiraIssues() { .setHeight(360) .setSandboxMode(HtmlService.SandboxMode.IFRAME); - SpreadsheetApp.getUi().showModalDialog(dialog, 'Update Jira Issues (BETA)'); + SpreadsheetApp.getUi().showModalDialog(dialog, '(BETA) Update Jira Issues'); } /** diff --git a/src/dialogAbout.html b/src/dialogAbout.html index de1d95a..03afc0c 100644 --- a/src/dialogAbout.html +++ b/src/dialogAbout.html @@ -28,13 +28,13 @@
Project Aid for Jira v - by Jens Rosemeier, Paul Lemon + by Jens Rosemeier
Debug @@ -710,7 +710,7 @@ the "copyright" line and a pointer to where the full notice is found. "Project Aid for Jira" provides helpful Jira integration with Google Sheets. - Copyright (C) 2017 Jens Rosemeier + Copyright (C) 2017-2019 Jens Rosemeier This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by diff --git a/src/jiraTicketInfo.gs b/src/jiraTicketInfo.gs index 8f9f6c8..961cc5c 100644 --- a/src/jiraTicketInfo.gs +++ b/src/jiraTicketInfo.gs @@ -12,7 +12,7 @@ function refreshTickets() { // Show the user a friendly message Browser.msgBox("Jira Tickets", - "Updating all Jira tickets in this sheet.\\nDepending on amount of data in this sheet, the process may take a while.", + "Updating all Jira ticket IDs in this sheet (\"KEY-123 [Done]\").\\nDepending on amount of data in this sheet, the process may take a while.", Browser.Buttons.OK); var ok = function(responseData, httpResponse, statusCode){ diff --git a/src/views/dialogs/insertIssueFromFilter.html b/src/views/dialogs/insertIssueFromFilter.html index 109ed33..a19d6a2 100644 --- a/src/views/dialogs/insertIssueFromFilter.html +++ b/src/views/dialogs/insertIssueFromFilter.html @@ -92,8 +92,8 @@ // add Jira Server note to box filterSelect.innerHTML = 'Note: If you are using a JIRA Server installation, this can show your *favorite* filters only.
' + 'For JIRA Cloud users it lists all your personal and your favorite ones. Make sure, you have at least one filter marked as favorite.' - + '
Read more at: Atlassian Support
'; - + '

Still having problems? File a issue report with the author here: JST on Github'; + + '
Read more at: Atlassian Support'; + + '

Still having problems? File a issue report with the author here: JST on Github'; action.disabled = 'disabled'; return; diff --git a/src/views/dialogs/updateJiraIssues.html b/src/views/dialogs/updateJiraIssues.html index bec07cd..0273f9b 100644 --- a/src/views/dialogs/updateJiraIssues.html +++ b/src/views/dialogs/updateJiraIssues.html @@ -31,16 +31,29 @@ -

This is BETA functionality

+

+ This is BETA functionality. + Read more +
+ Supported Jira fields which can be updated is very limited still. (Follow feature progress on GitHub.com) +

+

Configure columns and Jira fields

Columns Jira Field
- +

Select an area of your sheet with a header row and each row below it corresponding to an issue.

+
@@ -65,7 +78,7 @@

Configure columns and Jira fields

- +
@@ -74,7 +87,6 @@

Configure columns and Jira fields